From 981f54a78e268876d9b0281a54d36d136f967471 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Fri, 23 Jan 2026 16:10:51 +1300 Subject: [PATCH 01/38] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20MMU2=20build=20(#282?= =?UTF-8?q?92)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/lcd/menu/menu_mmu2.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Marlin/src/lcd/menu/menu_mmu2.cpp b/Marlin/src/lcd/menu/menu_mmu2.cpp index 7e725bd20c..d2ea07fe8f 100644 --- a/Marlin/src/lcd/menu/menu_mmu2.cpp +++ b/Marlin/src/lcd/menu/menu_mmu2.cpp @@ -43,7 +43,7 @@ inline void action_mmu2_load_to_nozzle(const uint8_t tool) { ui.reset_status(); ui.return_to_status(); ui.status_printf(0, GET_TEXT_F(MSG_MMU2_LOADING_FILAMENT), int(tool + 1)); - TERN(HAS_PRUSA_MMU3, mmu3.load_to_nozzle(tool), mmu2.load_to_nozzle(tool)); + TERN(HAS_PRUSA_MMU3, mmu3, mmu2).load_to_nozzle(tool); ui.reset_status(); } @@ -51,7 +51,7 @@ void _mmu2_load_to_feeder(const uint8_t tool) { ui.reset_status(); ui.return_to_status(); ui.status_printf(0, GET_TEXT_F(MSG_MMU2_LOADING_FILAMENT), int(tool + 1)); - TERN(HAS_PRUSA_MMU3, mmu3.load_to_feeder(tool), mmu2.load_to_feeder(tool)); + TERN(HAS_PRUSA_MMU3, mmu3, mmu2).load_to_feeder(tool); ui.reset_status(); } @@ -82,7 +82,8 @@ void _mmu2_eject_filament(uint8_t index) { ui.reset_status(); ui.return_to_status(); ui.status_printf(0, GET_TEXT_F(MSG_MMU2_EJECTING_FILAMENT), int(index + 1)); - if (mmu3.eject_filament(index, true)) ui.reset_status(); + if (TERN(HAS_PRUSA_MMU3, mmu3, mmu2).eject_filament(index, true)) + ui.reset_status(); } void _mmu2_cut_filament(uint8_t index) { @@ -97,7 +98,7 @@ void action_mmu2_unload_filament() { ui.reset_status(); ui.return_to_status(); LCD_MESSAGE(MSG_MMU2_UNLOADING_FILAMENT); - while (!TERN(HAS_PRUSA_MMU3, mmu3.unload(), mmu2.unload())) { + while (!TERN(HAS_PRUSA_MMU3, mmu3, mmu2).unload()) { safe_delay(50); TERN(HAS_PRUSA_MMU3, MMU3::marlin_idle(true), marlin.idle()); } @@ -342,7 +343,7 @@ void menu_mmu2_choose_filament() { // void menu_mmu2_pause() { - feeder_index = mmu3.get_current_tool(); + feeder_index = TERN(HAS_PRUSA_MMU3, mmu3, mmu2).get_current_tool(); START_MENU(); #if LCD_HEIGHT > 2 STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, SS_DEFAULT|SS_INVERT); From 2e456cea8faf0ab533525c4daa5239b4c6135718 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Fri, 23 Jan 2026 16:11:54 +1300 Subject: [PATCH 02/38] =?UTF-8?q?=F0=9F=93=9D=20Fix=20endif=20comment=20(#?= =?UTF-8?q?28293)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/extui/dgus_e3s1pro/dgus_e3s1pro_extui.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/lcd/extui/dgus_e3s1pro/dgus_e3s1pro_extui.cpp b/Marlin/src/lcd/extui/dgus_e3s1pro/dgus_e3s1pro_extui.cpp index f38931c33f..07b7e9e94c 100644 --- a/Marlin/src/lcd/extui/dgus_e3s1pro/dgus_e3s1pro_extui.cpp +++ b/Marlin/src/lcd/extui/dgus_e3s1pro/dgus_e3s1pro_extui.cpp @@ -203,4 +203,4 @@ namespace ExtUI { void onAxisEnabled(const axis_t) {} } -#endif // DGUS_LCD_UI_RELOADED +#endif // DGUS_LCD_UI_E3S1PRO From 91a91562c2e36eae5f61efe55fafe18797597716 Mon Sep 17 00:00:00 2001 From: Vovodroid Date: Fri, 23 Jan 2026 05:14:42 +0200 Subject: [PATCH 03/38] =?UTF-8?q?=F0=9F=94=A7=20Allow=20FTM=20+=20Nonlinea?= =?UTF-8?q?r=20Extrusion=20(#28250)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Scott Lahteine --- Marlin/src/inc/SanityCheck.h | 8 +++---- Marlin/src/inc/Warnings.cpp | 3 --- Marlin/src/module/ft_motion.cpp | 40 ++++++++++++++++++++++++++------- Marlin/src/module/stepper.h | 10 +++++---- 4 files changed, 41 insertions(+), 20 deletions(-) diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index d6373271e2..761125d790 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -870,8 +870,8 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L #if ENABLED(NONLINEAR_EXTRUSION) #if HAS_MULTI_EXTRUDER #error "NONLINEAR_EXTRUSION doesn't currently support multi-extruder setups." - #elif DISABLED(CPU_32_BIT) - #error "NONLINEAR_EXTRUSION requires a 32-bit CPU." + #elif NONE(CPU_32_BIT, NO_STANDARD_MOTION) + #error "NONLINEAR_EXTRUSION requires a 32-bit CPU or NO_STANDARD_MOTION." #endif #endif @@ -4515,9 +4515,7 @@ static_assert(_PLUS_TEST(3), "DEFAULT_MAX_ACCELERATION values must be positive." #error "EMERGENCY_PARSER is required with FTM_RESONANCE_TEST (to cancel the test)." #endif #if !HAS_STANDARD_MOTION - #if ENABLED(NONLINEAR_EXTRUSION) - #error "NONLINEAR_EXTRUSION is not yet available in FT_MOTION. Disable NO_STANDARD_MOTION if you require it." - #elif ENABLED(SMOOTH_LIN_ADVANCE) + #if ENABLED(SMOOTH_LIN_ADVANCE) #error "SMOOTH_LIN_ADVANCE is not yet available in FT_MOTION. Disable NO_STANDARD_MOTION if you require it." #elif ENABLED(MIXING_EXTRUDER) #error "MIXING_EXTRUDER is not yet available in FT_MOTION. Disable NO_STANDARD_MOTION if you require it." diff --git a/Marlin/src/inc/Warnings.cpp b/Marlin/src/inc/Warnings.cpp index 6a097777b0..67a0aa26c7 100644 --- a/Marlin/src/inc/Warnings.cpp +++ b/Marlin/src/inc/Warnings.cpp @@ -941,9 +941,6 @@ #if ENABLED(I2S_STEPPER_STREAM) #warning "FT_MOTION has not been tested with I2S_STEPPER_STREAM." #endif - #if ENABLED(NONLINEAR_EXTRUSION) - #warning "NONLINEAR_EXTRUSION does not (currently) operate when FT_MOTION is the active motion system." - #endif #if ENABLED(LIN_ADVANCE) #warning "Be aware that FT_MOTION K factor is now set with M900 K (same as LIN_ADVANCE)." #if DISABLED(FTM_SMOOTHING) diff --git a/Marlin/src/module/ft_motion.cpp b/Marlin/src/module/ft_motion.cpp index 93101a5a93..1db5b0ee6b 100644 --- a/Marlin/src/module/ft_motion.cpp +++ b/Marlin/src/module/ft_motion.cpp @@ -478,21 +478,42 @@ xyze_float_t FTMotion::calc_traj_point(const float dist) { LOGICAL_AXIS_MAP_LC(_SET_TRAJ); #if FTM_HAS_LIN_ADVANCE - const float advK = planner.get_advance_k(); - if (advK) { - const float traj_e = traj_coords.e; - if (use_advance_lead) { - // Don't apply LA to retract/unretract blocks - const float e_rate = (traj_e - prev_traj_e) * (FTM_FS); + + // Apply LA/NLE only to printing (not retract/unretract) blocks + + if (use_advance_lead) { + const float advK = planner.get_advance_k(); + if (advK || TERN0(NONLINEAR_EXTRUSION, stepper.ne.settings.enabled)) { + float traj_e = traj_coords.e; + const float traj_e_delta = traj_e - prev_traj_e; // extruder delta in mm, always positive for use_advance_lead (printing moves) + const float e_rate = traj_e_delta * FTM_FS; // extruder velocity in mm/s + traj_coords.e += e_rate * advK; + + #if ENABLED(NONLINEAR_EXTRUSION) + if (stepper.ne.settings.enabled) { + const nonlinear_coeff_t &coeff = stepper.ne.settings.coeff; + const float multiplier = max(coeff.C, coeff.A * sq(e_rate) + coeff.B * e_rate + coeff.C), + nle_term = traj_e_delta * (multiplier - 1); + + traj_coords.e += nle_term; + traj_e += nle_term; + startPos.e += nle_term; + endPos_prevBlock.e += nle_term; + } + #endif + + prev_traj_e = traj_e; } - prev_traj_e = traj_e; } - #endif + + #endif // FTM_HAS_LIN_ADVANCE // Update shaping parameters if needed. switch (cfg.dynFreqMode) { + #if HAS_DYNAMIC_FREQ_MM + case dynFreqMode_Z_BASED: { static float oldz = 0.0f; const float z = traj_coords.z; @@ -509,9 +530,11 @@ xyze_float_t FTMotion::calc_traj_point(const float dist) { shaping.refresh_largest_delay_samples(); } } break; + #endif #if HAS_DYNAMIC_FREQ_G + case dynFreqMode_MASS_BASED: // Update constantly. The optimization done for Z value makes // less sense for E, as E is expected to constantly change. @@ -523,6 +546,7 @@ xyze_float_t FTMotion::calc_traj_point(const float dist) { #endif shaping.refresh_largest_delay_samples(); break; + #endif default: break; diff --git a/Marlin/src/module/stepper.h b/Marlin/src/module/stepper.h index ec567245f0..370c9ffa8e 100644 --- a/Marlin/src/module/stepper.h +++ b/Marlin/src/module/stepper.h @@ -292,12 +292,14 @@ constexpr ena_mask_t enable_overlap[] = { #define NONLINEAR_EXTRUSION_Q24 1 #endif + typedef struct { + float A, B, C; + void reset() { A = B = 0.0f; C = 1.0f; } + } nonlinear_coeff_t; + typedef struct { bool enabled; - struct { - float A, B, C; - void reset() { A = B = 0.0f; C = 1.0f; } - } coeff; + nonlinear_coeff_t coeff; void reset() { enabled = ENABLED(NONLINEAR_EXTRUSION_DEFAULT_ON); coeff.reset(); From 16913e0163f970eabef61a7b9f7304e118a00542 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Fri, 23 Jan 2026 06:12:24 +0000 Subject: [PATCH 04/38] [cron] Bump distribution date (2026-01-23) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index f495a069c8..cc3b92c94b 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2026-01-22" +//#define STRING_DISTRIBUTION_DATE "2026-01-23" /** * The protocol for communication to the host. Protocol indicates communication diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index d0da9fb05d..e36959bec6 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2026-01-22" + #define STRING_DISTRIBUTION_DATE "2026-01-23" #endif /** From b1fe363f2fb5e6933dddc91fe5ca169fd3350472 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Sun, 25 Jan 2026 15:23:11 +1300 Subject: [PATCH 05/38] =?UTF-8?q?=F0=9F=90=9B=20Fix=20G28=20clearance=20ne?= =?UTF-8?q?eded=20check=20(#28298)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to #28275 --- Marlin/src/gcode/calibrate/G28.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index dabb53b47b..fe0a3a792e 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -377,7 +377,7 @@ void GcodeSuite::G28() { float z_homing_height = seenR ? parser.value_linear_units() : Z_CLEARANCE_FOR_HOMING; // Check for any lateral motion that might require clearance - const bool may_skate = seenR && NUM_AXIS_ANY(doX, doY, TERN0(Z_SAFE_HOMING, doZ), doI, doJ, doK, doU, doV, doW); + const bool may_skate = seenR || NUM_AXIS_ANY(doX, doY, TERN0(Z_SAFE_HOMING, doZ), doI, doJ, doK, doU, doV, doW); if (seenR && z_homing_height == 0) { if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("R0 = No Z raise"); From c8207fbc15b94adbedc409b8697327901a1a41aa Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 24 Jan 2026 23:15:21 -0600 Subject: [PATCH 06/38] =?UTF-8?q?=F0=9F=94=A7=20No=20SHAPING=5FMENU=20with?= =?UTF-8?q?out=20standard=20shapers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/Conditionals-4-adv.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Marlin/src/inc/Conditionals-4-adv.h b/Marlin/src/inc/Conditionals-4-adv.h index 5943b513e7..5c5e4bd9c1 100644 --- a/Marlin/src/inc/Conditionals-4-adv.h +++ b/Marlin/src/inc/Conditionals-4-adv.h @@ -376,6 +376,11 @@ #undef INPUT_SHAPING_X #undef INPUT_SHAPING_Y #undef INPUT_SHAPING_Z +#endif + +// Disallowed with no shaping +#if NONE(INPUT_SHAPING_X, INPUT_SHAPING_Y, INPUT_SHAPING_Z) + #undef SHAPING_MENU #undef INPUT_SHAPING_E_SYNC #endif From 05af2a49ed578b38ed825ab47ccd575aa939df3a Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sun, 25 Jan 2026 06:11:36 +0000 Subject: [PATCH 07/38] [cron] Bump distribution date (2026-01-25) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index cc3b92c94b..74197e8ee7 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2026-01-23" +//#define STRING_DISTRIBUTION_DATE "2026-01-25" /** * The protocol for communication to the host. Protocol indicates communication diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index e36959bec6..00439b315e 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2026-01-23" + #define STRING_DISTRIBUTION_DATE "2026-01-25" #endif /** From 384ce42a452ac2ecb3efee1feb0f09ac2290ef1e Mon Sep 17 00:00:00 2001 From: Harald Wagener Date: Mon, 26 Jan 2026 22:48:08 +0100 Subject: [PATCH 08/38] =?UTF-8?q?=F0=9F=90=9B=20Fix=20RP2040=20timer=20tri?= =?UTF-8?q?gger,=20FT=20Motion=20(#28288)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/RP2040/timers.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Marlin/src/HAL/RP2040/timers.h b/Marlin/src/HAL/RP2040/timers.h index 8d9fde57a8..24d0303ed8 100644 --- a/Marlin/src/HAL/RP2040/timers.h +++ b/Marlin/src/HAL/RP2040/timers.h @@ -128,16 +128,16 @@ FORCE_INLINE static void HAL_timer_set_compare(const uint8_t timer_num, hal_time switch (timer_num) { case 0: - alarm_pool_add_alarm_in_us(HAL_timer_pool_0, compare, HAL_timer_alarm_pool_0_callback, 0, false); + alarm_pool_add_alarm_in_us(HAL_timer_pool_0, compare, HAL_timer_alarm_pool_0_callback, 0, true); break; case 1: - alarm_pool_add_alarm_in_us(HAL_timer_pool_1, compare, HAL_timer_alarm_pool_1_callback, 0, false); + alarm_pool_add_alarm_in_us(HAL_timer_pool_1, compare, HAL_timer_alarm_pool_1_callback, 0, true); break; case 2: - alarm_pool_add_alarm_in_us(HAL_timer_pool_2, compare, HAL_timer_alarm_pool_2_callback, 0, false); + alarm_pool_add_alarm_in_us(HAL_timer_pool_2, compare, HAL_timer_alarm_pool_2_callback, 0, true); break; case 3: - alarm_pool_add_alarm_in_us(HAL_timer_pool_3, compare, HAL_timer_alarm_pool_3_callback, 0, false); + alarm_pool_add_alarm_in_us(HAL_timer_pool_3, compare, HAL_timer_alarm_pool_3_callback, 0, true); break; } } From 3ac92f243c811ad09071f41734bdee216bc7e91a Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Tue, 27 Jan 2026 00:37:53 +0000 Subject: [PATCH 09/38] [cron] Bump distribution date (2026-01-27) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 74197e8ee7..31d9b3b513 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2026-01-25" +//#define STRING_DISTRIBUTION_DATE "2026-01-27" /** * The protocol for communication to the host. Protocol indicates communication diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 00439b315e..10d18a34d7 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2026-01-25" + #define STRING_DISTRIBUTION_DATE "2026-01-27" #endif /** From e4eb1b59430f6a089456dfd92088c7c698fa31de Mon Sep 17 00:00:00 2001 From: Chris <52449218+shadow578@users.noreply.github.com> Date: Tue, 27 Jan 2026 03:00:46 +0100 Subject: [PATCH 10/38] =?UTF-8?q?=F0=9F=94=A8=20Update=20HC32=20environmen?= =?UTF-8?q?ts=20(#28286)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/HAL/HC32/MarlinSerial.cpp | 31 ++++++++++++++---------- Marlin/src/HAL/HC32/MarlinSerial.h | 2 ++ Marlin/src/HAL/HC32/MinSerial.cpp | 2 +- Marlin/src/HAL/HC32/app_config.h | 3 +++ Marlin/src/HAL/HC32/inc/SanityCheck.h | 7 ++++-- Marlin/src/pins/hc32f4/pins_AQUILA_101.h | 4 --- Marlin/src/pins/pins.h | 4 +-- ini/hc32.ini | 28 +++++++++++++++++++-- 8 files changed, 57 insertions(+), 24 deletions(-) diff --git a/Marlin/src/HAL/HC32/MarlinSerial.cpp b/Marlin/src/HAL/HC32/MarlinSerial.cpp index 11d4abfab9..df8d39ae35 100644 --- a/Marlin/src/HAL/HC32/MarlinSerial.cpp +++ b/Marlin/src/HAL/HC32/MarlinSerial.cpp @@ -30,17 +30,17 @@ * it would not make sense to parse G-Code from TMC responses */ constexpr bool serial_handles_emergency(int port) { - return false + return (false #ifdef SERIAL_PORT - || (SERIAL_PORT) == port + || (SERIAL_PORT) == port #endif #ifdef SERIAL_PORT_2 - || (SERIAL_PORT_2) == port + || (SERIAL_PORT_2) == port #endif #ifdef LCD_SERIAL_PORT - || (LCD_SERIAL_PORT) == port + || (LCD_SERIAL_PORT) == port #endif - ; + ); } // @@ -48,7 +48,7 @@ constexpr bool serial_handles_emergency(int port) { // // serial port where RX and TX use IRQs -#define DEFINE_IRQ_SERIAL_MARLIN(name, n) \ +#define DEFINE_IRQ_SERIAL_MARLIN(name, n) \ MSerialT name(serial_handles_emergency(n), \ &USART##n##_config, \ BOARD_USART##n##_TX_PIN, \ @@ -57,7 +57,7 @@ constexpr bool serial_handles_emergency(int port) { // serial port where RX uses DMA and TX uses IRQs // all serial ports use DMA1 // since there are 4 USARTs and 4 DMA channels, we can use the USART number as the DMA channel -#define DEFINE_DMA_SERIAL_MARLIN(name, n) \ +#define DEFINE_DMA_SERIAL_MARLIN(name, n) \ MSerialT name(serial_handles_emergency(n), \ &USART##n##_config, \ BOARD_USART##n##_TX_PIN, \ @@ -67,12 +67,17 @@ constexpr bool serial_handles_emergency(int port) { #define DEFINE_SERIAL_MARLIN(name, n) TERN(SERIAL_DMA, DEFINE_DMA_SERIAL_MARLIN(name, n), DEFINE_IRQ_SERIAL_MARLIN(name, n)) -DEFINE_SERIAL_MARLIN(MSerial1, 1); -DEFINE_SERIAL_MARLIN(MSerial2, 2); - -// TODO: remove this warning when SERIAL_DMA has been tested some more -#if ENABLED(SERIAL_DMA) - #warning "SERIAL_DMA may be unstable on HC32F460." +#if PINS_EXIST(BOARD_USART1_RX, BOARD_USART1_TX) + DEFINE_SERIAL_MARLIN(MSerial1, 1); +#endif +#if PINS_EXIST(BOARD_USART2_RX, BOARD_USART2_TX) + DEFINE_SERIAL_MARLIN(MSerial2, 2); +#endif +#if PINS_EXIST(BOARD_USART3_RX, BOARD_USART3_TX) + DEFINE_SERIAL_MARLIN(MSerial3, 3); +#endif +#if PINS_EXIST(BOARD_USART4_RX, BOARD_USART4_TX) + DEFINE_SERIAL_MARLIN(MSerial4, 4); #endif // diff --git a/Marlin/src/HAL/HC32/MarlinSerial.h b/Marlin/src/HAL/HC32/MarlinSerial.h index 1a97805a51..899e1bf2a7 100644 --- a/Marlin/src/HAL/HC32/MarlinSerial.h +++ b/Marlin/src/HAL/HC32/MarlinSerial.h @@ -92,3 +92,5 @@ typedef Serial1Class MSerialT; extern MSerialT MSerial1; extern MSerialT MSerial2; +extern MSerialT MSerial3; +extern MSerialT MSerial4; diff --git a/Marlin/src/HAL/HC32/MinSerial.cpp b/Marlin/src/HAL/HC32/MinSerial.cpp index 93017ee0df..3475aca39d 100644 --- a/Marlin/src/HAL/HC32/MinSerial.cpp +++ b/Marlin/src/HAL/HC32/MinSerial.cpp @@ -33,7 +33,7 @@ // Shared by both panic and PostMortem debugging // static void minserial_begin() { - #if !WITHIN(SERIAL_PORT, 1, 3) + #if !WITHIN(SERIAL_PORT, 1, 4) #warning "MinSerial requires a physical UART port for output." #warning "Disabling MinSerial because the used serial port is not a HW port." #else diff --git a/Marlin/src/HAL/HC32/app_config.h b/Marlin/src/HAL/HC32/app_config.h index b971903bba..2714887028 100644 --- a/Marlin/src/HAL/HC32/app_config.h +++ b/Marlin/src/HAL/HC32/app_config.h @@ -58,6 +58,9 @@ #define USART_RX_DMA_SUPPORT 1 #endif +// SoftwareSerial uses STM32duino API compatibility mode +#define SOFTWARE_SERIAL_STM32_API_COMPATIBILITY 1 + // // Misc. // diff --git a/Marlin/src/HAL/HC32/inc/SanityCheck.h b/Marlin/src/HAL/HC32/inc/SanityCheck.h index c6b3b221df..0698dc5aa4 100644 --- a/Marlin/src/HAL/HC32/inc/SanityCheck.h +++ b/Marlin/src/HAL/HC32/inc/SanityCheck.h @@ -43,8 +43,11 @@ #error "FAST_PWM_FAN is not yet implemented for this platform." #endif -#if !defined(HAVE_SW_SERIAL) && HAS_TMC_SW_SERIAL - #error "Missing SoftwareSerial implementation." +// SoftwareSerial introduced in arduino core version 1.3.1 +#if ARDUINO_CORE_VERSION_INT < GET_VERSION_INT(1, 3, 1) + #if !defined(HAVE_SW_SERIAL) && HAS_TMC_SW_SERIAL + #error "Missing SoftwareSerial implementation." + #endif #endif #if ENABLED(SDCARD_EEPROM_EMULATION) && !HAS_MEDIA diff --git a/Marlin/src/pins/hc32f4/pins_AQUILA_101.h b/Marlin/src/pins/hc32f4/pins_AQUILA_101.h index dd8488de64..29e0656e40 100644 --- a/Marlin/src/pins/hc32f4/pins_AQUILA_101.h +++ b/Marlin/src/pins/hc32f4/pins_AQUILA_101.h @@ -222,10 +222,6 @@ #define BOARD_USART2_TX_PIN PA9 #define BOARD_USART2_RX_PIN PA15 -// Unused / Debug -#define BOARD_USART3_TX_PIN PE5 -#define BOARD_USART3_RX_PIN PE4 - // Onboard LED (HIGH = off, LOW = on) #ifndef LED_BUILTIN #define LED_BUILTIN PA3 diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index 4672c92e01..cac64ad677 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -925,9 +925,9 @@ // #elif MB(AQUILA_V101) - #include "hc32f4/pins_AQUILA_101.h" // HC32F460 env:HC32F460C_aquila_101 + #include "hc32f4/pins_AQUILA_101.h" // HC32F460 env:HC32F460C_aquila_101 env:HC32F460C_openhc32boot #elif MB(CREALITY_ENDER2P_V24S4) - #include "hc32f4/pins_CREALITY_ENDER2P_V24S4.h" // HC32F460 env:HC32F460C_e2p24s4 + #include "hc32f4/pins_CREALITY_ENDER2P_V24S4.h" // HC32F460 env:HC32F460C_e2p24s4 env:HC32F460C_openhc32boot // // GD32 ARM Cortex-M3 diff --git a/ini/hc32.ini b/ini/hc32.ini index 19baeda210..ee06fe9ecd 100644 --- a/ini/hc32.ini +++ b/ini/hc32.ini @@ -29,7 +29,7 @@ [HC32F460_base] platform = https://github.com/shadow578/platform-hc32f46x/archive/1.1.1.zip platform_packages = framework-hc32f46x-ddl@https://github.com/shadow578/framework-hc32f46x-ddl/archive/2.2.3.zip - framework-arduino-hc32f46x@https://github.com/shadow578/framework-arduino-hc32f46x/archive/1.2.0.zip + framework-arduino-hc32f46x@https://github.com/shadow578/framework-arduino-hc32f46x/archive/1.3.1.zip board = generic_hc32f460 build_src_filter = ${common.default_src_filter} + + build_type = release @@ -80,7 +80,7 @@ board_upload.maximum_size = 524288 [env:HC32F460C_aquila_101] extends = HC32F460C_base board_upload.offset_address = 0xC000 # Bootloader start address, as logged by the bootloader on boot -board_build.boot_mode = secondary # Save ~1.4k of flash by compiling as secondary firmware +board_build.boot_mode = secondary # Save ~1.4k of flash by compiling as secondary firmware (no ICG) # # Creality Ender 2 Pro v2.4.S4_170 (HC32f460kcta) (256K Flash, 192K RAM). @@ -88,3 +88,27 @@ board_build.boot_mode = secondary # Save ~1.4k of flash by compiling as seco [env:HC32F460C_e2p24s4] extends = HC32F460C_base board_upload.offset_address = 0x8000 + +# +# OpenHC32Boot (256K Flash). +# This can be used with any HC32F460C printer, provided it has OpenHC32Boot installed. +# see https://github.com/shadow578/OpenHC32Boot for more information +# +[env:HC32F460C_openhc32boot] +extends = HC32F460C_base +board_upload.offset_address = 0x4000 +board_build.boot_mode = secondary +build_flags = + ${HC32F460C_base.build_flags} + -D CORE_DONT_RESTORE_DEFAULT_CLOCKS=1 # OpenHC32Boot doesn't mess with the clock settings, so we can skip clock restore in the core + +# +# OpenHC32Boot (512K Flash) +# +[env:HC32F460E_openhc32boot] +extends = HC32F460E_base +board_upload.offset_address = 0x4000 +board_build.boot_mode = secondary +build_flags = + ${HC32F460E_base.build_flags} + -D CORE_DONT_RESTORE_DEFAULT_CLOCKS=1 From 3f4b22fef5d70ecc896f09175d9e6920ae196fae Mon Sep 17 00:00:00 2001 From: narno2202 <130909513+narno2202@users.noreply.github.com> Date: Tue, 27 Jan 2026 06:54:50 +0100 Subject: [PATCH 11/38] =?UTF-8?q?=F0=9F=A9=B9=20Apply=20'M493=20C'=20to=20?= =?UTF-8?q?specified=20axes=20(#28241)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/gcode/feature/ft_motion/M493.cpp | 83 +++++++++++-------- .../module/ft_motion/trajectory_trapezoidal.h | 2 +- 2 files changed, 51 insertions(+), 34 deletions(-) diff --git a/Marlin/src/gcode/feature/ft_motion/M493.cpp b/Marlin/src/gcode/feature/ft_motion/M493.cpp index 272c3d7ab3..13c924bb72 100644 --- a/Marlin/src/gcode/feature/ft_motion/M493.cpp +++ b/Marlin/src/gcode/feature/ft_motion/M493.cpp @@ -34,6 +34,7 @@ void say_shaper_type(const AxisEnum a, bool &sep, const char axis_name) { SERIAL_CHAR(axis_name, '='); switch (ftMotion.cfg.shaper[a]) { default: break; + case ftMotionShaper_NONE: SERIAL_ECHOPGM("None"); break; TERN_(FTM_SHAPER_ZV, case ftMotionShaper_ZV: SERIAL_ECHOPGM("ZV"); break); TERN_(FTM_SHAPER_ZVD, case ftMotionShaper_ZVD: SERIAL_ECHOPGM("ZVD"); break); TERN_(FTM_SHAPER_ZVDD, case ftMotionShaper_ZVDD: SERIAL_ECHOPGM("ZVDD"); break); @@ -57,7 +58,7 @@ void say_shaping() { bool sep = false; if (is_shaping) { #define STEPPER_E_NAME 'E' - #define _SAY_SHAPER(A) if (AXIS_IS_SHAPING(A)) say_shaper_type(_AXIS(A), sep, STEPPER_##A##_NAME); + #define _SAY_SHAPER(A) say_shaper_type(_AXIS(A), sep, STEPPER_##A##_NAME); SERIAL_ECHOPGM(" ("); SHAPED_CODE(_SAY_SHAPER(A), _SAY_SHAPER(B), _SAY_SHAPER(C), _SAY_SHAPER(E)); SERIAL_CHAR(')'); @@ -86,43 +87,51 @@ void say_shaping() { #endif #if HAS_X_AXIS - SERIAL_CHAR(STEPPER_A_NAME); - SERIAL_ECHO_TERNARY(dynamic, " ", "base dynamic", "static", " shaper frequency: "); - SERIAL_ECHO(p_float_t(c.baseFreq.x, 2), F(" Hz")); - #if HAS_DYNAMIC_FREQ - if (dynamic) SERIAL_ECHO(F(" scaling: "), p_float_t(c.dynFreqK.x, 2), F("Hz/"), z_based ? F("mm") : F("g")); - #endif - SERIAL_EOL(); + if (ftMotion.cfg.shaper[X_AXIS]) { + SERIAL_CHAR(STEPPER_A_NAME); + SERIAL_ECHO_TERNARY(dynamic, " ", "base dynamic", "static", " shaper frequency: "); + SERIAL_ECHO(p_float_t(c.baseFreq.x, 2), F(" Hz")); + #if HAS_DYNAMIC_FREQ + if (dynamic) SERIAL_ECHO(F(" scaling: "), p_float_t(c.dynFreqK.x, 2), F("Hz/"), z_based ? F("mm") : F("g")); + #endif + SERIAL_EOL(); + } #endif #if HAS_Y_AXIS - SERIAL_CHAR(STEPPER_B_NAME); - SERIAL_ECHO_TERNARY(dynamic, " ", "base dynamic", "static", " shaper frequency: "); - SERIAL_ECHO(p_float_t(c.baseFreq.y, 2), F(" Hz")); - #if HAS_DYNAMIC_FREQ - if (dynamic) SERIAL_ECHO(F(" scaling: "), p_float_t(c.dynFreqK.y, 2), F("Hz/"), z_based ? F("mm") : F("g")); - #endif - SERIAL_EOL(); + if (ftMotion.cfg.shaper[Y_AXIS]) { + SERIAL_CHAR(STEPPER_B_NAME); + SERIAL_ECHO_TERNARY(dynamic, " ", "base dynamic", "static", " shaper frequency: "); + SERIAL_ECHO(p_float_t(c.baseFreq.y, 2), F(" Hz")); + #if HAS_DYNAMIC_FREQ + if (dynamic) SERIAL_ECHO(F(" scaling: "), p_float_t(c.dynFreqK.y, 2), F("Hz/"), z_based ? F("mm") : F("g")); + #endif + SERIAL_EOL(); + } #endif #if ENABLED(FTM_SHAPER_Z) - SERIAL_CHAR(STEPPER_C_NAME); - SERIAL_ECHO_TERNARY(dynamic, " ", "base dynamic", "static", " shaper frequency: "); - SERIAL_ECHO(p_float_t(c.baseFreq.z, 2), F(" Hz")); - #if HAS_DYNAMIC_FREQ - if (dynamic) SERIAL_ECHO(F(" scaling: "), p_float_t(c.dynFreqK.z, 2), F("Hz/"), z_based ? F("mm") : F("g")); - #endif - SERIAL_EOL(); + if (ftMotion.cfg.shaper[Z_AXIS]) { + SERIAL_CHAR(STEPPER_C_NAME); + SERIAL_ECHO_TERNARY(dynamic, " ", "base dynamic", "static", " shaper frequency: "); + SERIAL_ECHO(p_float_t(c.baseFreq.z, 2), F(" Hz")); + #if HAS_DYNAMIC_FREQ + if (dynamic) SERIAL_ECHO(F(" scaling: "), p_float_t(c.dynFreqK.z, 2), F("Hz/"), z_based ? F("mm") : F("g")); + # endif + SERIAL_EOL(); + } #endif #if ENABLED(FTM_SHAPER_E) - SERIAL_CHAR('E'); - SERIAL_ECHO_TERNARY(dynamic, " ", "base dynamic", "static", " shaper frequency: "); - SERIAL_ECHO(p_float_t(c.baseFreq.e, 2), F(" Hz")); - #if HAS_DYNAMIC_FREQ - if (dynamic) SERIAL_ECHO(F(" scaling: "), p_float_t(c.dynFreqK.e, 2), F("Hz/"), z_based ? F("mm") : F("g")); - #endif - SERIAL_EOL(); + if (ftMotion.cfg.shaper[E_AXIS]) { + SERIAL_CHAR('E'); + SERIAL_ECHO_TERNARY(dynamic, " ", "base dynamic", "static", " shaper frequency: "); + SERIAL_ECHO(p_float_t(c.baseFreq.e, 2), F(" Hz")); + #if HAS_DYNAMIC_FREQ + if (dynamic) SERIAL_ECHO(F(" scaling: "), p_float_t(c.dynFreqK.e, 2), F("Hz/"), z_based ? F("mm") : F("g")); + #endif + SERIAL_EOL(); + } #endif } } @@ -250,10 +259,6 @@ void GcodeSuite::M493() { if (c.setShaper(axis, newsh)) flag.update = flag.report = true; }; - if (seenC) { - #define _SET_SHAPER(A) set_shaper(_AXIS(A), shaperVal); - SHAPED_MAP(_SET_SHAPER); - } #endif // NUM_AXES_SHAPED > 0 @@ -317,6 +322,9 @@ void GcodeSuite::M493() { if (apply_xy || parser.seen_test('X')) { + // Set shaper if given + if (seenC) set_shaper(X_AXIS, shaperVal); + // Parse X frequency parameter if (seenA) { if (AXIS_IS_SHAPING(X)) { @@ -363,6 +371,9 @@ void GcodeSuite::M493() { if (apply_xy || parser.seen_test('Y')) { + // Set shaper if given + if (seenC) set_shaper(Y_AXIS, shaperVal); + // Parse Y frequency parameter if (seenA) { if (AXIS_IS_SHAPING(Y)) { @@ -408,6 +419,9 @@ void GcodeSuite::M493() { if (parser.seen_test('Z')) { + // Set shaper if given + if (seenC) set_shaper(Z_AXIS, shaperVal); + // Parse Z frequency parameter if (seenA) { if (AXIS_IS_SHAPING(Z)) { @@ -453,6 +467,9 @@ void GcodeSuite::M493() { if (parser.seen_test('E')) { + // Set shaper if given + if (seenC) set_shaper(E_AXIS, shaperVal); + // Parse E frequency parameter if (seenA) { if (AXIS_IS_SHAPING(E)) { diff --git a/Marlin/src/module/ft_motion/trajectory_trapezoidal.h b/Marlin/src/module/ft_motion/trajectory_trapezoidal.h index 6d2d30cfb0..f5b4903e01 100644 --- a/Marlin/src/module/ft_motion/trajectory_trapezoidal.h +++ b/Marlin/src/module/ft_motion/trajectory_trapezoidal.h @@ -34,7 +34,7 @@ public: TrapezoidalTrajectoryGenerator() = default; void plan(const float initial_speed_in, const float final_speed_in, const float acceleration_in, const float nominal_speed_in, const float distance_in) override { - + initial_speed = initial_speed_in; acceleration = acceleration_in; nominal_speed = nominal_speed_in; From 18b5301c0dbcf751d914839b7d0b7dae77588ea2 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Wed, 28 Jan 2026 00:35:56 +0000 Subject: [PATCH 12/38] [cron] Bump distribution date (2026-01-28) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 31d9b3b513..c8852c65c3 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2026-01-27" +//#define STRING_DISTRIBUTION_DATE "2026-01-28" /** * The protocol for communication to the host. Protocol indicates communication diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 10d18a34d7..f3cf3ee883 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2026-01-27" + #define STRING_DISTRIBUTION_DATE "2026-01-28" #endif /** From 8add6b12f573debdb469492fbfd9c15126a8af85 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 1 Feb 2026 21:27:34 -0600 Subject: [PATCH 13/38] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Langu?= =?UTF-8?q?age=20export=20=E2=80=93=20LLM=20translation=20(#28303)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/feature/mmu3/mmu3_error_converter.cpp | 8 +- .../src/feature/mmu3/mmu3_supported_version.h | 2 + Marlin/src/lcd/language/language_an.h | 8 + Marlin/src/lcd/language/language_bg.h | 8 + Marlin/src/lcd/language/language_ca.h | 9 + Marlin/src/lcd/language/language_cz.h | 11 +- Marlin/src/lcd/language/language_da.h | 8 + Marlin/src/lcd/language/language_de.h | 8 + Marlin/src/lcd/language/language_el.h | 10 +- Marlin/src/lcd/language/language_el_CY.h | 8 + Marlin/src/lcd/language/language_el_gr.h | 10 +- Marlin/src/lcd/language/language_en.h | 9 +- Marlin/src/lcd/language/language_es.h | 8 + Marlin/src/lcd/language/language_eu.h | 8 + Marlin/src/lcd/language/language_fi.h | 8 + Marlin/src/lcd/language/language_fr.h | 8 + Marlin/src/lcd/language/language_fr_na.h | 10 +- Marlin/src/lcd/language/language_gl.h | 10 +- Marlin/src/lcd/language/language_hr.h | 8 + Marlin/src/lcd/language/language_hu.h | 18 +- Marlin/src/lcd/language/language_it.h | 2 +- Marlin/src/lcd/language/language_jp_kana.h | 9 +- Marlin/src/lcd/language/language_ko_KR.h | 9 + Marlin/src/lcd/language/language_nl.h | 8 + Marlin/src/lcd/language/language_pl.h | 2 +- Marlin/src/lcd/language/language_pt.h | 9 +- Marlin/src/lcd/language/language_pt_br.h | 12 +- Marlin/src/lcd/language/language_ro.h | 27 +- Marlin/src/lcd/language/language_ru.h | 8 + Marlin/src/lcd/language/language_sk.h | 8 +- Marlin/src/lcd/language/language_sv.h | 35 +- Marlin/src/lcd/language/language_uk.h | 8 + Marlin/src/lcd/language/language_vi.h | 18 +- Marlin/src/lcd/language/language_zh_CN.h | 9 + Marlin/src/lcd/language/language_zh_TW.h | 9 + buildroot/share/fonts/uxggenpages.sh | 2 +- buildroot/share/scripts/languageExport.py | 348 ++++++++++++------ buildroot/share/scripts/languageImport.py | 30 +- buildroot/share/scripts/languageUtil.py | 75 ++-- 39 files changed, 588 insertions(+), 217 deletions(-) diff --git a/Marlin/src/feature/mmu3/mmu3_error_converter.cpp b/Marlin/src/feature/mmu3/mmu3_error_converter.cpp index 7ed53c0229..6452e0f295 100644 --- a/Marlin/src/feature/mmu3/mmu3_error_converter.cpp +++ b/Marlin/src/feature/mmu3/mmu3_error_converter.cpp @@ -198,14 +198,14 @@ namespace MMU3 { uint16_t PrusaErrorCode(const uint8_t i) { return pgm_read_word(errorCodes + i); } - FSTR_P const PrusaErrorTitle(const uint8_t i) { return (FSTR_P const)pgm_read_ptr(errorTitles + i); } - FSTR_P const PrusaErrorDesc(const uint8_t i) { return (FSTR_P const)pgm_read_ptr(errorDescs + i); } + FSTR_P const PrusaErrorTitle(const uint8_t i) { return (FSTR_P const)pgm_read_ptr(&errorTitles[i]); } + FSTR_P const PrusaErrorDesc(const uint8_t i) { return (FSTR_P const)pgm_read_ptr(&errorDescs[i]); } - uint8_t PrusaErrorButtons(const uint8_t i) { return pgm_read_byte(errorButtons + i); } + uint8_t PrusaErrorButtons(const uint8_t i) { return pgm_read_byte(&errorButtons[i]); } FSTR_P const PrusaErrorButtonTitle(const uint8_t bi) { // -1 represents the hidden NoOperation button which is not drawn in any way - return (FSTR_P const)pgm_read_ptr(btnOperation + bi - 1); + return (FSTR_P const)pgm_read_ptr(&btnOperation[bi - 1]); } Buttons ButtonPressed(const ErrorCode ec) { diff --git a/Marlin/src/feature/mmu3/mmu3_supported_version.h b/Marlin/src/feature/mmu3/mmu3_supported_version.h index fe21c79d5a..c03fbee2b0 100644 --- a/Marlin/src/feature/mmu3/mmu3_supported_version.h +++ b/Marlin/src/feature/mmu3/mmu3_supported_version.h @@ -30,3 +30,5 @@ #define mmuVersionMajor 3 #define mmuVersionMinor 0 #define mmuVersionPatch 2 + +#define MMU_VERSION STRINGIFY(mmuVersionMajor) "." STRINGIFY(mmuVersionMinor) "." STRINGIFY(mmuVersionPatch) diff --git a/Marlin/src/lcd/language/language_an.h b/Marlin/src/lcd/language/language_an.h index c5230db098..585db76a72 100644 --- a/Marlin/src/lcd/language/language_an.h +++ b/Marlin/src/lcd/language/language_an.h @@ -26,6 +26,14 @@ * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder */ #define DISPLAY_CHARSET_ISO10646_1 diff --git a/Marlin/src/lcd/language/language_bg.h b/Marlin/src/lcd/language/language_bg.h index 4f278c4bcf..504d6dbaa2 100644 --- a/Marlin/src/lcd/language/language_bg.h +++ b/Marlin/src/lcd/language/language_bg.h @@ -26,6 +26,14 @@ * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder */ #define DISPLAY_CHARSET_ISO10646_5 diff --git a/Marlin/src/lcd/language/language_ca.h b/Marlin/src/lcd/language/language_ca.h index be12c69df4..36c6f5612b 100644 --- a/Marlin/src/lcd/language/language_ca.h +++ b/Marlin/src/lcd/language/language_ca.h @@ -26,7 +26,16 @@ * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder */ + namespace LanguageNarrow_ca { using namespace Language_en; // Inherit undefined strings from English diff --git a/Marlin/src/lcd/language/language_cz.h b/Marlin/src/lcd/language/language_cz.h index 2b5fb524d4..7aefa38ff4 100644 --- a/Marlin/src/lcd/language/language_cz.h +++ b/Marlin/src/lcd/language/language_cz.h @@ -23,11 +23,20 @@ /** * Czech - * UTF-8 for Graphical Display * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder + */ + +/** * Translated by Petr Zahradnik, Computer Laboratory * Blog and video blog Zahradnik se bavi * https://www.zahradniksebavi.cz diff --git a/Marlin/src/lcd/language/language_da.h b/Marlin/src/lcd/language/language_da.h index 0a286d1751..1df97e8df1 100644 --- a/Marlin/src/lcd/language/language_da.h +++ b/Marlin/src/lcd/language/language_da.h @@ -26,6 +26,14 @@ * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder */ #define DISPLAY_CHARSET_ISO10646_1 diff --git a/Marlin/src/lcd/language/language_de.h b/Marlin/src/lcd/language/language_de.h index 3430d946c8..ccf9babe6e 100644 --- a/Marlin/src/lcd/language/language_de.h +++ b/Marlin/src/lcd/language/language_de.h @@ -26,6 +26,14 @@ * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder */ namespace LanguageNarrow_de { diff --git a/Marlin/src/lcd/language/language_el.h b/Marlin/src/lcd/language/language_el.h index ab816adae0..f017b5a8d5 100644 --- a/Marlin/src/lcd/language/language_el.h +++ b/Marlin/src/lcd/language/language_el.h @@ -26,6 +26,14 @@ * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder */ #define DISPLAY_CHARSET_ISO10646_GREEK @@ -187,8 +195,6 @@ namespace LanguageNarrow_el { LSTR MSG_RUN_AUTOFILES = _UxGT("Αυτόματη εκκίνηση"); LSTR MSG_ZPROBE_OUT = _UxGT("Διερεύνηση Z εκτός Επ.Εκτύπωσης"); // SHORTEN - LSTR MSG_YX_UNHOMED = _UxGT("Επαναφορά Χ/Υ πρώτα"); - LSTR MSG_XYZ_UNHOMED = _UxGT("Επαναφορά ΧΥZ πρώτα"); LSTR MSG_ZPROBE_XOFFSET = _UxGT("Μετατόπιση X"); LSTR MSG_ZPROBE_YOFFSET = _UxGT("Μετατόπιση Y"); LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Μετατόπιση Z"); diff --git a/Marlin/src/lcd/language/language_el_CY.h b/Marlin/src/lcd/language/language_el_CY.h index 68e9ee1459..e875297d0d 100644 --- a/Marlin/src/lcd/language/language_el_CY.h +++ b/Marlin/src/lcd/language/language_el_CY.h @@ -26,6 +26,14 @@ * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder */ #include "language_el.h" diff --git a/Marlin/src/lcd/language/language_el_gr.h b/Marlin/src/lcd/language/language_el_gr.h index 3e2cb0ec07..affde7a080 100644 --- a/Marlin/src/lcd/language/language_el_gr.h +++ b/Marlin/src/lcd/language/language_el_gr.h @@ -26,6 +26,14 @@ * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder */ #define DISPLAY_CHARSET_ISO10646_GREEK @@ -177,8 +185,6 @@ namespace LanguageNarrow_el_gr { LSTR MSG_RUN_AUTOFILES = _UxGT("Αυτόματη εκκίνηση"); LSTR MSG_ZPROBE_OUT = _UxGT("Διερεύνηση Z εκτός κλίνης"); - LSTR MSG_YX_UNHOMED = _UxGT("Επαναφορά Χ/Υ πριν από Z"); - LSTR MSG_XYZ_UNHOMED = _UxGT("Επαναφορά ΧΥZ πρώτα"); LSTR MSG_ZPROBE_XOFFSET = _UxGT("Μετατόπιση X"); LSTR MSG_ZPROBE_YOFFSET = _UxGT("Μετατόπιση Y"); LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Μετατόπιση Z"); diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h index ba5228a1f1..1e1650bf92 100644 --- a/Marlin/src/lcd/language/language_en.h +++ b/Marlin/src/lcd/language/language_en.h @@ -53,22 +53,21 @@ #ifndef PREHEAT_1_LABEL #define PREHEAT_1_LABEL "" #endif - #ifndef PREHEAT_2_LABEL #define PREHEAT_2_LABEL "" #endif - #ifndef PREHEAT_3_LABEL #define PREHEAT_3_LABEL "" #endif - #ifndef PREHEAT_4_LABEL #define PREHEAT_4_LABEL "" #endif - #ifndef CUSTOM_MENU_MAIN_TITLE #define CUSTOM_MENU_MAIN_TITLE "" #endif +#ifndef MMU_VERSION + #define MMU_VERSION "" +#endif namespace LanguageNarrow_en { constexpr uint8_t CHARSIZE = 2; @@ -1092,7 +1091,7 @@ namespace LanguageNarrow_en { LSTR MSG_DESC_FILAMENT_CHANGE = _UxGT("M600 Filament Change. Load a new filament or eject the old one."); LSTR MSG_DESC_UNKNOWN_ERROR = _UxGT("Unexpected error occurred."); - LSTR MSG_DESC_FW_UPDATE_NEEDED = _UxGT("MMU FW version is not supported. Update to version " STRINGIFY(mmuVersionMajor) "." STRINGIFY(mmuVersionMinor) "." STRINGIFY(mmuVersionPatch) "."); + LSTR MSG_DESC_FW_UPDATE_NEEDED = _UxGT("MMU FW version is not supported. Update to version " MMU_VERSION "."); LSTR MSG_BTN_RETRY = _UxGT("Retry"); LSTR MSG_BTN_RESET_MMU = _UxGT("ResetMMU"); diff --git a/Marlin/src/lcd/language/language_es.h b/Marlin/src/lcd/language/language_es.h index 2646a85f09..08ee8b2c04 100644 --- a/Marlin/src/lcd/language/language_es.h +++ b/Marlin/src/lcd/language/language_es.h @@ -26,6 +26,14 @@ * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder */ #if HAS_SDCARD && !HAS_USB_FLASH_DRIVE diff --git a/Marlin/src/lcd/language/language_eu.h b/Marlin/src/lcd/language/language_eu.h index 52612a8081..021d18c6f8 100644 --- a/Marlin/src/lcd/language/language_eu.h +++ b/Marlin/src/lcd/language/language_eu.h @@ -26,6 +26,14 @@ * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder */ #define DISPLAY_CHARSET_ISO10646_1 diff --git a/Marlin/src/lcd/language/language_fi.h b/Marlin/src/lcd/language/language_fi.h index d70c67208c..c18c2cecc2 100644 --- a/Marlin/src/lcd/language/language_fi.h +++ b/Marlin/src/lcd/language/language_fi.h @@ -26,6 +26,14 @@ * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder */ #define DISPLAY_CHARSET_ISO10646_1 diff --git a/Marlin/src/lcd/language/language_fr.h b/Marlin/src/lcd/language/language_fr.h index 01ded94aff..f2be96163e 100644 --- a/Marlin/src/lcd/language/language_fr.h +++ b/Marlin/src/lcd/language/language_fr.h @@ -26,6 +26,14 @@ * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder */ #define DISPLAY_CHARSET_ISO10646_1 diff --git a/Marlin/src/lcd/language/language_fr_na.h b/Marlin/src/lcd/language/language_fr_na.h index 9187b45709..7c10443e6e 100644 --- a/Marlin/src/lcd/language/language_fr_na.h +++ b/Marlin/src/lcd/language/language_fr_na.h @@ -22,10 +22,18 @@ #pragma once /** - * French (without accent for DWIN T5UID1) + * French (no accent) * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder */ #define DISPLAY_CHARSET_ISO10646_1 diff --git a/Marlin/src/lcd/language/language_gl.h b/Marlin/src/lcd/language/language_gl.h index 6285626625..ae4693926d 100644 --- a/Marlin/src/lcd/language/language_gl.h +++ b/Marlin/src/lcd/language/language_gl.h @@ -22,10 +22,18 @@ #pragma once /** - * Galician language + * Galician * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder */ #define DISPLAY_CHARSET_ISO10646_1 diff --git a/Marlin/src/lcd/language/language_hr.h b/Marlin/src/lcd/language/language_hr.h index a75dcff846..2c6785cf72 100644 --- a/Marlin/src/lcd/language/language_hr.h +++ b/Marlin/src/lcd/language/language_hr.h @@ -26,6 +26,14 @@ * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder */ #define DISPLAY_CHARSET_ISO10646_1 // use the better font on full graphic displays. diff --git a/Marlin/src/lcd/language/language_hu.h b/Marlin/src/lcd/language/language_hu.h index 7a3e51539c..121605ea1a 100644 --- a/Marlin/src/lcd/language/language_hu.h +++ b/Marlin/src/lcd/language/language_hu.h @@ -24,13 +24,21 @@ /** * Hungarian / Magyar * - * LCD Menu Messages. See also https://marlinfw.org/docs/development/lcd_language.html + * LCD Menu Messages + * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder + */ + +/** * Hungarian translation by AntoszHUN. I am constantly improving and updating the translation. * Translation last updated: 08/30/2021 - 22:20 - * - * LCD Menü Üzenetek. Lásd még https://marlinfw.org/docs/development/lcd_language.html - * A Magyar fordítást készítette: AntoszHUN. A fordítást folyamatosan javítom és frissítem. - * A Fordítás utolsó frissítése: 2021.08.30. - 22:20 */ namespace LanguageNarrow_hu { diff --git a/Marlin/src/lcd/language/language_it.h b/Marlin/src/lcd/language/language_it.h index 3f45c44156..0619bcd675 100644 --- a/Marlin/src/lcd/language/language_it.h +++ b/Marlin/src/lcd/language/language_it.h @@ -999,7 +999,7 @@ namespace LanguageNarrow_it { LSTR MSG_DESC_FILAMENT_CHANGE = _UxGT("Sostituzione del filamento M600. Carica un nuovo filamento o espelli quello vecchio."); LSTR MSG_DESC_UNKNOWN_ERROR = _UxGT("Si è verificato un errore imprevisto."); - LSTR MSG_DESC_FW_UPDATE_NEEDED = _UxGT("LA versione di FW della MMU non è supportato. Aggiornare alla versione " STRINGIFY(mmuVersionMajor) "." STRINGIFY(mmuVersionMinor) "." STRINGIFY(mmuVersionPatch) "."); + LSTR MSG_DESC_FW_UPDATE_NEEDED = _UxGT("LA versione di FW della MMU non è supportato. Aggiornare alla versione " MMU_VERSION "."); LSTR MSG_BTN_RETRY = _UxGT("Riprova"); LSTR MSG_BTN_RESET_MMU = _UxGT("Resetta MMU"); diff --git a/Marlin/src/lcd/language/language_jp_kana.h b/Marlin/src/lcd/language/language_jp_kana.h index 37c9aa043e..4acf1dddba 100644 --- a/Marlin/src/lcd/language/language_jp_kana.h +++ b/Marlin/src/lcd/language/language_jp_kana.h @@ -23,10 +23,17 @@ /** * Japanese (Kana) - * UTF-8 for Graphical Display * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder */ //#define DISPLAY_CHARSET_ISO10646_KANA diff --git a/Marlin/src/lcd/language/language_ko_KR.h b/Marlin/src/lcd/language/language_ko_KR.h index 4ecaab5394..c5c3900c3f 100644 --- a/Marlin/src/lcd/language/language_ko_KR.h +++ b/Marlin/src/lcd/language/language_ko_KR.h @@ -26,7 +26,16 @@ * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder */ + namespace LanguageNarrow_ko_KR { using namespace Language_en; // Inherit undefined strings from English diff --git a/Marlin/src/lcd/language/language_nl.h b/Marlin/src/lcd/language/language_nl.h index bb4c7e00b2..c567627020 100644 --- a/Marlin/src/lcd/language/language_nl.h +++ b/Marlin/src/lcd/language/language_nl.h @@ -26,6 +26,14 @@ * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder */ #define DISPLAY_CHARSET_ISO10646_1 diff --git a/Marlin/src/lcd/language/language_pl.h b/Marlin/src/lcd/language/language_pl.h index df0f995416..ffa8044653 100644 --- a/Marlin/src/lcd/language/language_pl.h +++ b/Marlin/src/lcd/language/language_pl.h @@ -22,7 +22,7 @@ #pragma once /** - * Polish - includes accented characters + * Polish * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html diff --git a/Marlin/src/lcd/language/language_pt.h b/Marlin/src/lcd/language/language_pt.h index 229211b4f2..ce1b37be84 100644 --- a/Marlin/src/lcd/language/language_pt.h +++ b/Marlin/src/lcd/language/language_pt.h @@ -23,10 +23,17 @@ /** * Portuguese - * UTF-8 for Graphical Display * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder */ #define DISPLAY_CHARSET_ISO10646_1 diff --git a/Marlin/src/lcd/language/language_pt_br.h b/Marlin/src/lcd/language/language_pt_br.h index 49c52300f9..4dadeae0ef 100644 --- a/Marlin/src/lcd/language/language_pt_br.h +++ b/Marlin/src/lcd/language/language_pt_br.h @@ -23,11 +23,19 @@ /** * Portuguese (Brazil) - * UTF-8 for Graphical Display * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder */ + namespace LanguageNarrow_pt_br { using namespace Language_en; // Inherit undefined strings from English @@ -441,7 +449,7 @@ namespace LanguageNarrow_pt_br { LSTR MSG_MAZE = _UxGT("Labirinto"); LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Clique p. continuar")); - LSTR MSG_PAUSE_PRINT_INIT = _UxGT(MSG_1_LINE("Estacionando...")); + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Estacionando...")); LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Aguarde...")); LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Insira e Clique")); LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Clique para Aquecer")); diff --git a/Marlin/src/lcd/language/language_ro.h b/Marlin/src/lcd/language/language_ro.h index 3a939c6a3d..38edf1fd54 100644 --- a/Marlin/src/lcd/language/language_ro.h +++ b/Marlin/src/lcd/language/language_ro.h @@ -21,14 +21,25 @@ */ #pragma once - /** - * Romanian - * - * LCD Menu Messages - * See also https://marlinfw.org/docs/development/lcd_language.html - * - * Translation by cristyanul - */ +/** + * Romanian + * + * LCD Menu Messages + * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder + */ + +/** + * Translation by cristyanul + */ + namespace LanguageNarrow_ro { using namespace Language_en; // Inherit undefined strings from English diff --git a/Marlin/src/lcd/language/language_ru.h b/Marlin/src/lcd/language/language_ru.h index c5cba1ad73..f8f826290c 100644 --- a/Marlin/src/lcd/language/language_ru.h +++ b/Marlin/src/lcd/language/language_ru.h @@ -26,6 +26,14 @@ * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder */ #define DISPLAY_CHARSET_ISO10646_5 diff --git a/Marlin/src/lcd/language/language_sk.h b/Marlin/src/lcd/language/language_sk.h index 5498e36aec..6f4706c9a0 100644 --- a/Marlin/src/lcd/language/language_sk.h +++ b/Marlin/src/lcd/language/language_sk.h @@ -23,12 +23,10 @@ /** * Slovak - * UTF-8 for Graphical Display * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html * - * Translated by Michal Holeš, Farma MaM * https://www.facebook.com/farmamam * * Substitutions are applied for the following characters when used in menu items titles: @@ -39,6 +37,12 @@ * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) * @ displays an axis name such as XYZUVW, or E for an extruder */ + +/** + * Translated by Michal Holeš, Farma MaM + * https://www.facebook.com/farmamam + */ + #define DISPLAY_CHARSET_ISO10646_SK namespace LanguageNarrow_sk { diff --git a/Marlin/src/lcd/language/language_sv.h b/Marlin/src/lcd/language/language_sv.h index 9258304966..75df0ce9a8 100644 --- a/Marlin/src/lcd/language/language_sv.h +++ b/Marlin/src/lcd/language/language_sv.h @@ -13,7 +13,7 @@ * 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 för more details. + * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . @@ -26,6 +26,14 @@ * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder */ #define DISPLAY_CHARSET_ISO10646_1 @@ -47,9 +55,9 @@ namespace LanguageNarrow_sv { LSTR MSG_MEDIA_ABORTING = _UxGT("Avbryter..."); LSTR MSG_MEDIA_INSERTED = _UxGT("Minneskort isatt"); LSTR MSG_MEDIA_REMOVED = _UxGT("Minneskort avlägsnat"); - LSTR MSG_MEDIA_WAITING = _UxGT("Väntar på minneskort"); LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Misslyckad läsning av minneskort"); LSTR MSG_MEDIA_READ_ERROR = _UxGT("Läsningsfel minneskort"); + LSTR MSG_USB_FD_WAITING_FOR_MEDIA = _UxGT("Väntar på minneskort"); LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB-minne avlägsnat"); LSTR MSG_USB_FD_USB_FAILED = _UxGT("USB-start misslyckad"); LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Underanrop överskriden"); @@ -58,15 +66,13 @@ namespace LanguageNarrow_sv { LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Mjukvarugränslägen"); LSTR MSG_MAIN_MENU = _UxGT("Huvudmeny"); LSTR MSG_ADVANCED_SETTINGS = _UxGT("Advancerade inställningar"); - LSTR MSG_TOOLBAR_SETUP = _UxGT("Inställningar verktygsfält"); - LSTR MSG_OPTION_DISABLED = _UxGT("Alternativ avaktiverad"); LSTR MSG_CONFIGURATION = _UxGT("Konfiguration"); LSTR MSG_DISABLE_STEPPERS = _UxGT("Inaktivera stegmotorer"); LSTR MSG_DEBUG_MENU = _UxGT("Debugmeny"); LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Förloppindikator test"); LSTR MSG_HOMING = _UxGT("Hemkörning"); LSTR MSG_AUTO_HOME = _UxGT("Auto hem"); - LSTR MSG_AUTO_HOME_A = _UxGT("Hem @"); + LSTR MSG_AUTO_HOME_N = _UxGT("Hem @"); LSTR MSG_AUTO_HOME_X = _UxGT("Hem X"); LSTR MSG_AUTO_HOME_Y = _UxGT("Hem Y"); LSTR MSG_AUTO_HOME_Z = _UxGT("Hem Z"); @@ -74,11 +80,11 @@ namespace LanguageNarrow_sv { LSTR MSG_FILAMENT_SET = _UxGT("Trådinställningar"); LSTR MSG_FILAMENT_MAN = _UxGT("Trådhantering"); LSTR MSG_MANUAL_LEVELING = _UxGT("Manuell höjdjustering"); - LSTR MSG_LEVBED_FL = _UxGT("Övre vänster"); - LSTR MSG_LEVBED_FR = _UxGT("Övre höger"); - LSTR MSG_LEVBED_C = _UxGT("Mittpunkt"); - LSTR MSG_LEVBED_BL = _UxGT("Nedre vänster"); - LSTR MSG_LEVBED_BR = _UxGT("Nedre höger"); + LSTR MSG_TRAM_FL = _UxGT("Övre vänster"); + LSTR MSG_TRAM_FR = _UxGT("Övre höger"); + LSTR MSG_TRAM_C = _UxGT("Mittpunkt"); + LSTR MSG_TRAM_BL = _UxGT("Nedre vänster"); + LSTR MSG_TRAM_BR = _UxGT("Nedre höger"); LSTR MSG_MANUAL_MESH = _UxGT("Manellt meshmät"); LSTR MSG_AUTO_MESH = _UxGT("Automatiskt meshnät"); @@ -130,10 +136,6 @@ namespace LanguageNarrow_sv { LSTR MSG_SPINDLE_TOGGLE = _UxGT("Växla spindel"); LSTR MSG_SPINDLE_FORWARD = _UxGT("Spindel framåt"); LSTR MSG_SPINDLE_REVERSE = _UxGT("Spindel bakåt"); - LSTR MSG_LASER_OFF = _UxGT("Laser från"); - LSTR MSG_LASER_ON = _UxGT("Laser till"); - LSTR MSG_SPINDLE_OFF = _UxGT("Spindel från"); - LSTR MSG_SPINDLE_ON = _UxGT("Spindel till"); LSTR MSG_SWITCH_PS_ON = _UxGT("Spänning till"); LSTR MSG_SWITCH_PS_OFF = _UxGT("Spänning från"); LSTR MSG_EXTRUDE = _UxGT("Extrudera"); @@ -155,7 +157,7 @@ namespace LanguageNarrow_sv { LSTR MSG_MESH_X = _UxGT("Index X"); LSTR MSG_MESH_Y = _UxGT("Index Y"); LSTR MSG_MESH_EDIT_Z = _UxGT("Z-värde"); - LSTR MSG_USER_MENU = _UxGT("Anpassade kommandon"); + LSTR MSG_CUSTOM_COMMANDS = _UxGT("Anpassade kommandon"); LSTR MSG_M48_TEST = _UxGT("M48 probtest"); LSTR MSG_M48_POINT = _UxGT("M48 punkt"); LSTR MSG_M48_OUT_OF_BOUNDS = _UxGT("Mätprob utanför tolerans"); @@ -556,9 +558,6 @@ namespace LanguageNarrow_sv { LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Munstycke: "); LSTR MSG_RUNOUT_SENSOR = _UxGT("Trådkontrollgivare"); LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("Förbrukad trådlängd mm"); - LSTR MSG_RUNOUT_ENABLE = _UxGT("Aktivera trådövervakning"); - LSTR MSG_RUNOUT_ACTIVE = _UxGT("Trådövervakning i drift"); - LSTR MSG_INVERT_EXTRUDER = _UxGT("Invertera extruder"); LSTR MSG_EXTRUDER_MIN_TEMP = _UxGT("Extruder Minimumtemp."); LSTR MSG_FANCHECK = _UxGT("Fläktvarvövervakning"); LSTR MSG_KILL_HOMING_FAILED = _UxGT("Hemkörning misslyckad"); diff --git a/Marlin/src/lcd/language/language_uk.h b/Marlin/src/lcd/language/language_uk.h index a6d87e2ae8..c0a5380692 100644 --- a/Marlin/src/lcd/language/language_uk.h +++ b/Marlin/src/lcd/language/language_uk.h @@ -26,6 +26,14 @@ * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder */ #define DISPLAY_CHARSET_ISO10646_5 diff --git a/Marlin/src/lcd/language/language_vi.h b/Marlin/src/lcd/language/language_vi.h index e411668a91..1351224ba4 100644 --- a/Marlin/src/lcd/language/language_vi.h +++ b/Marlin/src/lcd/language/language_vi.h @@ -26,7 +26,16 @@ * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder */ + namespace LanguageNarrow_vi { using namespace Language_en; // Inherit undefined strings from English @@ -102,12 +111,8 @@ namespace LanguageNarrow_vi { LSTR MSG_IDEX_MENU = _UxGT("chế độ IDEX"); // IDEX Mode LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Đậu tự động"); // Auto-Park LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Sự gấp đôi"); // Duplication - LSTR MSG_IDEX_MODE_SCALED_COPY = _UxGT("Bản sao thu nhỏ"); + LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Bản sao thu nhỏ"); LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Toàn quyền điều khiển"); // Full control - LSTR MSG_IDEX_X_OFFSET = _UxGT("Đầu phun X nhì"); // 2nd nozzle X - LSTR MSG_IDEX_Y_OFFSET = _UxGT("Đầu phun Y nhì"); - LSTR MSG_IDEX_Z_OFFSET = _UxGT("Đầu phun Z nhì"); - LSTR MSG_IDEX_SAVE_OFFSETS = _UxGT("Lưu bù đắp"); // Save offsets LSTR MSG_UBL_MANUAL_MESH = _UxGT("Tự xây dựng lưới"); // Manually Build Mesh LSTR MSG_UBL_BC_INSERT = _UxGT("Đặt chêm và đo"); // Place shim & measure LSTR MSG_UBL_BC_INSERT2 = _UxGT("Đo"); // Measure @@ -156,7 +161,7 @@ namespace LanguageNarrow_vi { LSTR MSG_UBL_SAVE_MESH = _UxGT("Lưu lưới bàn"); // Save Bed Mesh LSTR MSG_MESH_LOADED = _UxGT("%i lưới được nạp"); // Mesh %i loaded LSTR MSG_MESH_SAVED = _UxGT("%i lưới đã lưu"); - LSTR MSG_NO_STORAGE = _UxGT("Không lưu trữ"); // No Storage + LSTR MSG_UBL_NO_STORAGE = _UxGT("Không lưu trữ"); // No Storage LSTR MSG_UBL_SAVE_ERROR = _UxGT("Điều sai: Lưu UBL"); // Err: UBL Save LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Điều Sai: Khôi Phục UBL"); // Err: UBL Restore LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Đầu Dò-Z Đã Ngừng"); // Z-Offset Stopped @@ -391,7 +396,6 @@ namespace LanguageNarrow_vi { LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Xả thêm"); // Purge more LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Tiếp tục"); // Continue LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Đầu Phun: "); // Nozzle - LSTR MSG_RUNOUT_SENSOR_ENABLE = _UxGT("Cảm Biến Hết"); // Runout Sensor LSTR MSG_KILL_HOMING_FAILED = _UxGT("Sự nhà không thành công"); // Homing failed LSTR MSG_LCD_PROBING_FAILED = _UxGT(" không thành công"); // Probing failed diff --git a/Marlin/src/lcd/language/language_zh_CN.h b/Marlin/src/lcd/language/language_zh_CN.h index ff095889af..ffefb7de5e 100644 --- a/Marlin/src/lcd/language/language_zh_CN.h +++ b/Marlin/src/lcd/language/language_zh_CN.h @@ -26,7 +26,16 @@ * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder */ + namespace LanguageNarrow_zh_CN { using namespace Language_en; // Inherit undefined strings from English diff --git a/Marlin/src/lcd/language/language_zh_TW.h b/Marlin/src/lcd/language/language_zh_TW.h index ecacf7e33d..dd35797dd4 100644 --- a/Marlin/src/lcd/language/language_zh_TW.h +++ b/Marlin/src/lcd/language/language_zh_TW.h @@ -26,7 +26,16 @@ * * LCD Menu Messages * See also https://marlinfw.org/docs/development/lcd_language.html + * + * Substitutions are applied for the following characters when used in menu items titles: + * + * $ displays an inserted string + * { displays '0'....'10' for indexes 0 - 10 + * ~ displays '1'....'11' for indexes 0 - 10 + * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) + * @ displays an axis name such as XYZUVW, or E for an extruder */ + namespace LanguageNarrow_zh_TW { using namespace Language_en; // Inherit undefined strings from English diff --git a/buildroot/share/fonts/uxggenpages.sh b/buildroot/share/fonts/uxggenpages.sh index 2d39297b8f..2c23ac8bfb 100755 --- a/buildroot/share/fonts/uxggenpages.sh +++ b/buildroot/share/fonts/uxggenpages.sh @@ -147,7 +147,7 @@ grep -Hrn _UxGT . | grep '"' \ ${EXEC_BDF2U8G} -u ${PAGE} -b ${BEGIN} -e ${END} ${FN_FONT} fontpage_${PAGE}_${BEGIN}_${END} ${DN_DATA}/fontpage_${PAGE}_${BEGIN}_${END}.h > /dev/null 2>&1 ; fi ; \ grep -A 10000000000 u8g_fntpgm_uint8_t ${DN_DATA}/fontpage_${PAGE}_${BEGIN}_${END}.h >> tmpa ; \ - echo " FONTDATA_ITEM(${PAGE}, ${BEGIN}, ${END}, fontpage_${PAGE}_${BEGIN}_${END}), // '${UTF8BEGIN}' -- '${UTF8END}'" >> tmpb ;\ + echo " FONTDATA_ITEM(${PAGE}, ${BEGIN}, ${END}, fontpage_${PAGE}_${BEGIN}_${END}), // ' ${UTF8BEGIN} ' - ' ${UTF8END} '" >> tmpb ;\ done TMPA=$(cat tmpa) diff --git a/buildroot/share/scripts/languageExport.py b/buildroot/share/scripts/languageExport.py index 30a983c076..0b981f0587 100755 --- a/buildroot/share/scripts/languageExport.py +++ b/buildroot/share/scripts/languageExport.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 ''' -languageExport.py [--single] +languageExport.py [--single] [--translate] Export LCD language strings to CSV files for easier translation. Use languageImport.py to import CSV into the language files. @@ -8,148 +8,272 @@ Use languageImport.py to import CSV into the language files. Use --single to export all languages to a single CSV file. ''' -import re +import re, argparse from pathlib import Path -from sys import argv -from languageUtil import namebyid +from sys import argv, exit +from languageUtil import * LANGHOME = "Marlin/src/lcd/language" - -# Write multiple sheets if true, otherwise write one giant sheet -MULTISHEET = '--single' not in argv[1:] OUTDIR = Path('out-csv') -# Check for the path to the language files -if not Path(LANGHOME).is_dir(): - print("Error: Couldn't find the '%s' directory." % LANGHOME) - print("Edit LANGHOME or cd to the root of the repo before running.") - exit(1) +def language_export(args={}): + # A dictionary to contain strings for each language. + # Init with 'en' so English will always be first. + language_strings = { 'en': {} } -# A limit just for testing -LIMIT = 0 + # A dictionary to contain all distinct LCD string names + names = {} -# A dictionary to contain strings for each language. -# Init with 'en' so English will always be first. -language_strings = { 'en': {} } + # Get all "language_*.h" files + langfiles = sorted(list(Path(LANGHOME).glob('language_*.h'))) -# A dictionary to contain all distinct LCD string names -names = {} + # Read each language file + for langfile in langfiles: + # Get the language code from the filename + langcode = langfile.name.replace('language_', '').replace('.h', '') -# Get all "language_*.h" files -langfiles = sorted(list(Path(LANGHOME).glob('language_*.h'))) + # Skip 'test' and any others that we don't want + if langcode in ['test']: continue + if langcode != 'en' and args.languages and langcode not in args.languages: continue -# Read each language file -for langfile in langfiles: - # Get the language code from the filename - langcode = langfile.name.replace('language_', '').replace('.h', '') + # Open the file + f = open(langfile, 'r', encoding='utf-8') + if not f: continue - # Skip 'test' and any others that we don't want - if langcode in ['test']: continue + # Flags to indicate a wide or tall section + wideflag, tallflag = False, False + # A counter for the number of strings in the file + stringcount = 0 + # A dictionary to hold all the strings + strings = { 'narrow': {}, 'wide': {}, 'tall': {} } + # Read each line in the file + for line in f: + # Clean up the line for easier parsing + line = line.split("//")[0].strip() + if line.endswith(';'): line = line[:-1].strip() - # Open the file - f = open(langfile, 'r', encoding='utf-8') - if not f: continue + # Check for wide or tall sections, assume no complicated nesting + if line.startswith("#endif") or line.startswith("#else"): + wideflag, tallflag = False, False + elif re.match(r'#if.*WIDTH\s*>=?\s*2[01].*', line): wideflag = True + elif re.match(r'#if.*LCD_HEIGHT\s*>=?\s*4.*', line): tallflag = True - # Flags to indicate a wide or tall section - wideflag, tallflag = False, False - # A counter for the number of strings in the file - stringcount = 0 - # A dictionary to hold all the strings - strings = { 'narrow': {}, 'wide': {}, 'tall': {} } - # Read each line in the file - for line in f: - # Clean up the line for easier parsing - line = line.split("//")[0].strip() - if line.endswith(';'): line = line[:-1].strip() + # For string-defining lines capture the string data + match = re.match(r'LSTR\s+([A-Z0-9_]+)\s*=\s*(.+)\s*', line) + if match: + # Name and quote-sanitized value + name, value = match.group(1), match.group(2).replace('\\"', '$$$') - # Check for wide or tall sections, assume no complicated nesting - if line.startswith("#endif") or line.startswith("#else"): - wideflag, tallflag = False, False - elif re.match(r'#if.*WIDTH\s*>=?\s*2[01].*', line): wideflag = True - elif re.match(r'#if.*LCD_HEIGHT\s*>=?\s*4.*', line): tallflag = True + # Remove all _UxGT wrappers from the value in a non-greedy way + value = re.sub(r'_UxGT\((".*?")\)', r'\1', value) - # For string-defining lines capture the string data - match = re.match(r'LSTR\s+([A-Z0-9_]+)\s*=\s*(.+)\s*', line) - if match: - # Name and quote-sanitized value - name, value = match.group(1), match.group(2).replace('\\"', '$$$') + # Multi-line strings get one or more bars | for identification + multiline = 0 + multimatch = re.match(r'.*MSG_(\d)_LINE\s*\(\s*(.+?)\s*\).*', value) + if multimatch: + multiline = int(multimatch.group(1)) + value = '|' + re.sub(r'"\s*,\s*"', '|', multimatch.group(2)) - # Remove all _UxGT wrappers from the value in a non-greedy way - value = re.sub(r'_UxGT\((".*?")\)', r'\1', value) + # Wrap inline defines in parentheses + value = re.sub(r' *([A-Z0-9]+_[A-Z0-9_]+) *', r'(\1)', value) + # Remove quotes around strings + value = re.sub(r'"(.*?)"', r'\1', value).replace('$$$', '""') + # Store all unique names as dictionary keys + names[name] = 1 + # Store the string as narrow or wide + strings['tall' if tallflag else 'wide' if wideflag else 'narrow'][name] = value - # Multi-line strings get one or more bars | for identification - multiline = 0 - multimatch = re.match(r'.*MSG_(\d)_LINE\s*\(\s*(.+?)\s*\).*', value) - if multimatch: - multiline = int(multimatch.group(1)) - value = '|' + re.sub(r'"\s*,\s*"', '|', multimatch.group(2)) + # Increment the string counter + stringcount += 1 + # Break for testing + if args.limit and stringcount >= int(args.limit): break - # Wrap inline defines in parentheses - value = re.sub(r' *([A-Z0-9]+_[A-Z0-9_]+) *', r'(\1)', value) - # Remove quotes around strings - value = re.sub(r'"(.*?)"', r'\1', value).replace('$$$', '""') - # Store all unique names as dictionary keys - names[name] = 1 - # Store the string as narrow or wide - strings['tall' if tallflag else 'wide' if wideflag else 'narrow'][name] = value + # Close the file + f.close() + # Store the array in the dict + language_strings[langcode] = strings - # Increment the string counter - stringcount += 1 - # Break for testing - if LIMIT and stringcount >= LIMIT: break + # Get the codes of all imported languages + langcodes = list(language_strings.keys()) - # Close the file - f.close() - # Store the array in the dict - language_strings[langcode] = strings + print("Languages:", ' '.join(langcodes)) -# Get the language codes from the dictionary -langcodes = list(language_strings.keys()) + # Print the array + #print(language_strings) -# Print the array -#print(language_strings) + # Report the total number of unique strings + print("Found %s distinct LCD strings." % len(names)) -# Report the total number of unique strings -print("Found %s distinct LCD strings." % len(names)) + #exit(0) -# Write a single language entry to the CSV file with narrow, wide, and tall strings -def write_csv_lang(f, strings, name): - f.write(',') - if name in strings['narrow']: f.write('"%s"' % strings['narrow'][name]) - f.write(',') - if name in strings['wide']: f.write('"%s"' % strings['wide'][name]) - f.write(',') - if name in strings['tall']: f.write('"%s"' % strings['tall'][name]) + # Add missing translations, if specified + if args.translate: -if MULTISHEET: - # - # Export a separate sheet for each language - # - OUTDIR.mkdir(exist_ok=True) + MIN_TRANSLATE_LEN = 2 + NEVER_TRANSLATE_LANGS = ( 'el_CY', 'fr_na' ) + NEVER_TRANSLATE_NAMES = ( + "MSG_MARLIN", "MSG_CUSTOM_MENU_MAIN_TITLE", + "MSG_PID_P", "MSG_PID_P_E", + "MSG_PID_I", "MSG_PID_I_E", + "MSG_PID_D", "MSG_PID_D_E", + "MSG_PID_C", "MSG_PID_C_E", + "MSG_PID_F", "MSG_PID_F_E", + "MSG_BACKLASH_N", + "MSG_SHORT_DAY", "MSG_SHORT_HOUR", "MSG_SHORT_MINUTE", + "MSG_FTM_ZV", "MSG_FTM_ZVD", "MSG_FTM_ZVDD", "MSG_FTM_ZVDDD", + "MSG_FTM_EI", "MSG_FTM_2HEI", "MSG_FTM_3HEI", "MSG_FTM_MZV" + ) - for lang in langcodes: - with open(OUTDIR / f"language_{lang}.csv", 'w', encoding='utf-8') as f: - lname = lang + ' ' + namebyid(lang) - header = ['name', lname, lname + ' (wide)', lname + ' (tall)'] + import ollama + + DEFAULT_MODEL = ( + "qwen3:32b", # 0 22 GB + "gpt-oss:20b", # 1 13 GB + "llama3.3", # 2 45 GB + "deepseek-r1:14b", # 3 9 GB + "deepseek-r1-qwen-14b", # 4 15 GB + "devstral:24b", # 5 15 GB + "qwen3-coder:30b", # 6 18 GB + "mistral-small-3.2", # 7 14 GB + "openthinker:32b", # 8 19 GB + "deepseek-v2", # 9 9 GB + "deepseek-coder-v2", # 10 9 GB + "llama3.2:3b-instruct-fp16" # 11 6 GB + )[0] + + llm_model = args.model if args.model else DEFAULT_MODEL + + def get_system_prompt(args, sect): + if sect == 'narrow': + length_limit = "no more than 18 characters long! Use common abbreviations whenever necessary" + elif sect == 'tall': + length_limit = "no more than 3 strings of 20 characters. Use common abbreviations if necessary" + else: # wide + length_limit = "around the same length as the given example(s)" + + no_thinking = "" if args.dothink else "Do not think! Just translate.\n" + + system_prompt_text = f"""You are an expert in language translation in the context of 3D printing. +You will be given a list of existing translations and will be asked to provide a new translation in the given language. +When provided, the English (en) translation should be considered the most authoritative source. +Named variable substitutions are written as UPPERCASE_WITH_UNDERSCORES. Never translate or modify these! +The symbols `@`, `~`, `*`, `{{`, and `$` are special characters used for substitution. Never translate or modify these! +Your translations must be {length_limit}. +Assume that variable substitutions such as (MACHINE_NAME) are short strings for the purpose of character counting. +{no_thinking}For each translation requested, respond only with the translated string, no introduction, explanation, or assessment. +This clean output will be perfect for our use case.""" + + return [{ 'role': 'system', 'content': system_prompt_text }] + + # Send a prompt to Ollama and return the reply text + def prompt_with_ollama(SYSTEM_PROMPT, prompt:str): + msg = [{ 'role': 'user', 'content': prompt }] + response = ollama.chat(model=llm_model, messages=SYSTEM_PROMPT + msg, stream=False) + reply = response['message']['content'].strip('\n') + reply = re.sub(r'[\s\S]+\n*', '', reply) + reply = re.sub(r'(^"|"$)', '', reply) + return reply + + # For each named string fill in any missing translations + for sect in ('narrow','wide','tall'): + system_prompt = get_system_prompt(args, sect) + for name in names.keys(): + if name in NEVER_TRANSLATE_NAMES: continue + en_string = language_strings['en'][sect][name] if name in language_strings['en'][sect] else "" + glyphs = len(en_string) + + done = {} # All existing translations for the given name + todo = [] # Missing translation keys to create + for lang in langcodes: + strings = language_strings[lang] + if name in strings[sect]: + done[lang] = strings[sect][name] + elif glyphs >= MIN_TRANSLATE_LEN and lang not in NEVER_TRANSLATE_LANGS: + todo += [lang] + + # For each untranslated language, fill in a translation + for lang in todo: + # Show existing translations to the LLM and ask for one more + prompt = [ f"Please translate the following string into {language_name(lang)} ({lang})." ] + if lang.endswith("_na"): + prompt += [ "(Substitute plain unaccented ASCII characters for accented characters in the output.)" ] + prompt += [ "Here are the existing translations:" ] + for dlang in done.keys(): + prompt += [ f"- {dlang} {language_name(dlang)}: \"{done[dlang]}\"" ] + prompt = '\n'.join(prompt) + #print(f"Prompt: {prompt}") + reply = prompt_with_ollama(system_prompt, prompt) + newstring = reply.replace('–','-').replace('‑','-').replace('/','/').replace('’',"'").replace('…','...').replace('\u202F',' ').replace('\uFEFF', '').replace('!', '! ').replace('。', '. ').replace('ç','ç').replace('ş','ş').replace('6','6').replace('@', '@').replace('~', '~') + newstring = re.sub(r'([!.]) $', '\1', newstring) + if newstring != en_string: + print(f"{name} ({lang}) = \"{newstring}\"") + done[lang] = newstring + if not sect in language_strings[lang]: language_strings[lang][sect] = {} + language_strings[lang][sect][name] = newstring + else: + print(f"{name} ({lang}) = (same as English)") + + # Write a single language entry to the CSV file with narrow, wide, and tall strings + def write_csv_lang(f, strings, name): + f.write(',') + if name in strings['narrow']: f.write('"%s"' % strings['narrow'][name]) + f.write(',') + if name in strings['wide']: f.write('"%s"' % strings['wide'][name]) + f.write(',') + if name in strings['tall']: f.write('"%s"' % strings['tall'][name]) + + if args.single: + # + # Export one large sheet containing all specified languages + # + with open("languages.csv", 'w', encoding='utf-8') as f: + header = ['name'] + for lang in langcodes: + lname = lang + ' ' + language_name(lang) + header += [lname, lname + ' (wide)', lname + ' (tall)'] f.write('"' + '","'.join(header) + '"\n') for name in names.keys(): f.write('"' + name + '"') - write_csv_lang(f, language_strings[lang], name) + for lang in langcodes: write_csv_lang(f, language_strings[lang], name) f.write('\n') + else: + # + # Export a separate sheet for each language + # + OUTDIR.mkdir(exist_ok=True) -else: - # - # Export one large sheet containing all languages - # - with open("languages.csv", 'w', encoding='utf-8') as f: - header = ['name'] for lang in langcodes: - lname = lang + ' ' + namebyid(lang) - header += [lname, lname + ' (wide)', lname + ' (tall)'] - f.write('"' + '","'.join(header) + '"\n') + with open(OUTDIR / f"language_{lang}.csv", 'w', encoding='utf-8') as f: + lname = lang + ' ' + language_name(lang) + header = ['name', lname, lname + ' (wide)', lname + ' (tall)'] + f.write('"' + '","'.join(header) + '"\n') - for name in names.keys(): - f.write('"' + name + '"') - for lang in langcodes: write_csv_lang(f, language_strings[lang], name) - f.write('\n') + for name in names.keys(): + f.write('"' + name + '"') + write_csv_lang(f, language_strings[lang], name) + f.write('\n') + +if __name__ == "__main__": + # Check for the path to the language files + if not Path(LANGHOME).is_dir(): + print(f"Error: Couldn't find the '{LANGHOME}' directory.") + print("Edit LANGHOME or cd to the root of the repo before running.") + exit(1) + + # Parse and validate all arguments + parser = argparse.ArgumentParser(description="Export LCD language strings to CSV with optional translation") + parser.add_argument('-l', '--languages', action="append", default=None, help="Languages to translate (otherwise all)") + parser.add_argument('-s', '--single', action="store_true", help="Output a single spreadsheet (languages.csv)") + parser.add_argument('-v', '--verbose', action="store_true", help="Extra output for debugging") + parser.add_argument('-n', '--limit', default=0, help="Limit the number of exported items") + parser.add_argument('-t', '--translate', action="store_true", help="Use an LLM to translate strings") + parser.add_argument('-d', '--dothink', action="store_true", help="Use thinking if the model supports it") + parser.add_argument('-m', '--model', default=None, help="Override the default LLM model for translation") + args = parser.parse_args() + + if not args.translate: + if args.model: print("--model ignored when not translating") + if args.dothink: print("--dothink ignored when not translating") + + language_export(args) diff --git a/buildroot/share/scripts/languageImport.py b/buildroot/share/scripts/languageImport.py index 11d4c64cf1..0085039662 100755 --- a/buildroot/share/scripts/languageImport.py +++ b/buildroot/share/scripts/languageImport.py @@ -17,7 +17,7 @@ TODO: Use the defines and comments above the namespace from existing language fi """ import sys, re, requests, csv, datetime -#from languageUtil import namebyid +from languageUtil import * from pathlib import Path LANGHOME = "Marlin/src/lcd/language" @@ -85,10 +85,9 @@ for row in reader: # Create a folder for the imported language outfiles OUTDIR.mkdir(exist_ok=True) -FILEHEADER = ''' -/** +FILEHEADER = '''/** * Marlin 3D Printer Firmware - * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm @@ -149,21 +148,31 @@ for i in range(1, numcols): exit(1) # Write the opening header for the new language file - #f.write(FILEHEADER % namebyid(lang)) + f.write(FILEHEADER % language_name(lang)) f.write('/**\n * Imported from %s on %s at %s\n */\n' % (FILEPATH, datetime.date.today(), datetime.datetime.now().strftime("%H:%M:%S"))) + iso = language_iso(lang) + if iso: f.write(f"\n#define DISPLAY_CHARSET_ISO10646_{iso}") + noext = language_noext(lang) + if noext: f.write("\n#define NOT_EXTENDED_ISO10646_1_5X7") + if iso or noext: f.write("\n") + # Start a namespace for the language and style f.write('\nnamespace Language%s_%s {\n' % (style, lang)) # Wide and tall namespaces inherit from the others if style == 'Wide': f.write(' using namespace LanguageNarrow_%s;\n' % lang) - f.write(' #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2\n') + f.write(' #if LCD_WIDTH > 20 || HAS_DWIN_E3V2\n') elif style == 'Tall': f.write(' using namespace LanguageWide_%s;\n' % lang) f.write(' #if LCD_HEIGHT >= 4\n') - elif lang != 'en': - f.write(' using namespace Language_en; // Inherit undefined strings from English\n') + f.write(' // Filament Change screens show up to 3 lines on a 4-line display\n') + elif style == 'Narrow': + if lang != 'en': + f.write(' using namespace Language_en; // Inherit undefined strings from English\n') + charsize = language_charsize(lang) + if charsize: f.write(f"\n constexpr uint8_t CHARSIZE = {charsize};\n") # Formatting for the lines indent = ' ' if style == 'Narrow' else ' ' @@ -186,8 +195,8 @@ for i in range(1, numcols): val = re.sub(r'\(([A-Z0-9]+_[A-Z0-9_]+)\)', r'") \1 _UxGT("', val) # Remove all empty _UxGT("") that result from the above val = re.sub(r'\s*_UxGT\(""\)\s*', '', val) - # No wrapper needed for just spaces - val = re.sub(r'_UxGT\((" +")\)', r'\1', val) + # No wrapper needed for just spaces or punctuation + val = re.sub(r'_UxGT\(("[ .~]+")\)', r'\1', val) # Multi-line strings start with a bar... if bars: # Wrap the string in MSG_#_LINE(...) and split on bars @@ -207,6 +216,7 @@ for i in range(1, numcols): # Write out the string definition f.write(lstr_fmt % (name, val, comm)) + if name == 'LANGUAGE': f.write("\n") if style == 'Wide' or style == 'Tall': f.write(' #endif\n') diff --git a/buildroot/share/scripts/languageUtil.py b/buildroot/share/scripts/languageUtil.py index 996db5dd31..d73ab4bf7b 100755 --- a/buildroot/share/scripts/languageUtil.py +++ b/buildroot/share/scripts/languageUtil.py @@ -5,37 +5,48 @@ # A dictionary to contain language names LANGNAME = { - 'an': "Aragonese", - 'bg': "Bulgarian", - 'ca': "Catalan", - 'cz': "Czech", - 'da': "Danish", - 'de': "German", - 'el': "Greek", 'el_CY': "Greek (Cyprus)", 'el_gr': "Greek (Greece)", - 'en': "English", - 'es': "Spanish", - 'eu': "Basque-Euskera", - 'fi': "Finnish", - 'fr': "French", 'fr_na': "French (no accent)", - 'gl': "Galician", - 'hr': "Croatian (Hrvatski)", - 'hu': "Hungarian / Magyar", - 'it': "Italian", - 'jp_kana': "Japanese (Kana)", - 'ko_KR': "Korean", - 'nl': "Dutch", - 'pl': "Polish", - 'pt': "Portuguese", 'pt_br': "Portuguese (Brazil)", - 'ro': "Romanian", - 'ru': "Russian", - 'sk': "Slovak", - 'sv': "Swedish", - 'tr': "Turkish", - 'uk': "Ukrainian", - 'vi': "Vietnamese", - 'zh_CN': "Simplified Chinese", 'zh_TW': "Traditional Chinese" + 'an': { 'size':1, 'iso': "1", 'name':"Aragonese", 'noext':1 }, + 'bg': { 'size':2, 'iso': "5", 'name':"Bulgarian" }, + 'ca': { 'size':2, 'name':"Catalan" }, + 'cz': { 'size':2, 'iso': "CZ", 'name':"Czech" }, + 'da': { 'size':2, 'iso': "1", 'name':"Danish" }, + 'de': { 'size':2, 'name':"German" }, + 'el': { 'size':2, 'iso': "GREEK", 'name':"Greek" }, + 'el_CY': { 'size':2, 'name':"Greek (Cyprus)" }, + 'el_gr': { 'size':2, 'iso': "GREEK", 'name':"Greek (Greece)" }, + 'en': { 'size':2, 'name':"English" }, + 'es': { 'size':2, 'name':"Spanish" }, + 'eu': { 'size':1, 'iso': "1", 'name':"Basque-Euskera", 'noext':1 }, + 'fi': { 'size':2, 'iso': "1", 'name':"Finnish" }, + 'fr': { 'size':2, 'iso': "1", 'name':"French" }, + 'fr_na': { 'size':1, 'iso': "1", 'name':"French (no accent)", 'noext':1 }, + 'gl': { 'size':1, 'iso': "1", 'name':"Galician" }, + 'hr': { 'size':2, 'iso': "1", 'name':"Croatian (Hrvatski)" }, + 'hu': { 'size':2, 'name':"Hungarian / Magyar" }, + 'it': { 'size':1, 'iso': "1", 'name':"Italian" }, + 'jp_kana': { 'size':3, 'iso': "KANA", 'name':"Japanese (Kana)" }, + 'ko_KR': { 'size':1, 'name':"Korean" }, + 'nl': { 'size':1, 'iso': "1", 'name':"Dutch", 'noext':1 }, + 'pl': { 'size':2, 'iso': "PL", 'name':"Polish" }, + 'pt': { 'size':2, 'iso': "1", 'name':"Portuguese" }, + 'pt_br': { 'size':2, 'name':"Portuguese (Brazil)" }, + 'ro': { 'size':2, 'name':"Romanian" }, + 'ru': { 'size':2, 'iso': "5", 'name':"Russian" }, + 'sk': { 'size':2, 'iso': "SK", 'name':"Slovak" }, + 'sv': { 'size':2, 'iso': "1", 'name':"Swedish" }, + 'tr': { 'size':2, 'iso': "TR", 'name':"Turkish" }, + 'uk': { 'size':2, 'iso': "5", 'name':"Ukrainian" }, + 'vi': { 'size':2, 'name':"Vietnamese" }, + 'zh_CN': { 'size':3, 'name':"Simplified Chinese" }, + 'zh_TW': { 'size':3, 'name':"Traditional Chinese" } } -def namebyid(id): - if id in LANGNAME: return LANGNAME[id] - return '' +def infobyid(id, fld): + if id in LANGNAME and fld in LANGNAME[id]: + return LANGNAME[id][fld] + return None + +def language_name(id): return infobyid(id, 'name') or '' +def language_iso(id): return infobyid(id, 'iso') +def language_charsize(id): return infobyid(id, 'size') +def language_noext(id): return infobyid(id, 'noext') From d92f2e2f200ff3d299af67a315b711a2ee8f0a7b Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 1 Feb 2026 22:04:14 -0600 Subject: [PATCH 14/38] =?UTF-8?q?=F0=9F=8C=90=20Language=20Export,=20then?= =?UTF-8?q?=20Re-import=20(#28316)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/dogm/fontdata/langdata_bg.h | 16 +- Marlin/src/lcd/dogm/fontdata/langdata_cz.h | 18 +- Marlin/src/lcd/dogm/fontdata/langdata_el.h | 22 +- Marlin/src/lcd/dogm/fontdata/langdata_el_CY.h | 22 +- Marlin/src/lcd/dogm/fontdata/langdata_hr.h | 10 +- .../src/lcd/dogm/fontdata/langdata_jp_kana.h | 30 +- Marlin/src/lcd/dogm/fontdata/langdata_ko_KR.h | 218 +- Marlin/src/lcd/dogm/fontdata/langdata_pl.h | 14 +- Marlin/src/lcd/dogm/fontdata/langdata_ro.h | 2 +- Marlin/src/lcd/dogm/fontdata/langdata_ru.h | 8 +- Marlin/src/lcd/dogm/fontdata/langdata_sk.h | 14 +- Marlin/src/lcd/dogm/fontdata/langdata_test.h | 6 +- Marlin/src/lcd/dogm/fontdata/langdata_tr.h | 6 +- Marlin/src/lcd/dogm/fontdata/langdata_uk.h | 16 +- Marlin/src/lcd/dogm/fontdata/langdata_vi.h | 92 +- Marlin/src/lcd/dogm/fontdata/langdata_zh_CN.h | 724 +++--- Marlin/src/lcd/dogm/fontdata/langdata_zh_TW.h | 616 ++--- Marlin/src/lcd/language/language_an.h | 368 ++- Marlin/src/lcd/language/language_bg.h | 249 +- Marlin/src/lcd/language/language_ca.h | 370 ++- Marlin/src/lcd/language/language_cz.h | 1031 +++++---- Marlin/src/lcd/language/language_da.h | 298 ++- Marlin/src/lcd/language/language_de.h | 1464 ++++++------ Marlin/src/lcd/language/language_el.h | 346 ++- Marlin/src/lcd/language/language_el_gr.h | 324 ++- Marlin/src/lcd/language/language_en.h | 1166 +++++----- Marlin/src/lcd/language/language_es.h | 1055 +++++---- Marlin/src/lcd/language/language_eu.h | 543 +++-- Marlin/src/lcd/language/language_fi.h | 182 +- Marlin/src/lcd/language/language_fr.h | 1180 +++++----- Marlin/src/lcd/language/language_fr_na.h | 1182 +++++----- Marlin/src/lcd/language/language_gl.h | 1079 +++++---- Marlin/src/lcd/language/language_hr.h | 252 +-- Marlin/src/lcd/language/language_hu.h | 1255 +++++------ Marlin/src/lcd/language/language_it.h | 2000 ++++++++--------- Marlin/src/lcd/language/language_jp_kana.h | 418 ++-- Marlin/src/lcd/language/language_ko_KR.h | 143 +- Marlin/src/lcd/language/language_nl.h | 360 ++- Marlin/src/lcd/language/language_pl.h | 946 ++++---- Marlin/src/lcd/language/language_pt.h | 272 ++- Marlin/src/lcd/language/language_pt_br.h | 863 ++++--- Marlin/src/lcd/language/language_ro.h | 1105 +++++---- Marlin/src/lcd/language/language_ru.h | 1718 +++++++------- Marlin/src/lcd/language/language_sk.h | 1527 ++++++------- Marlin/src/lcd/language/language_sv.h | 1258 +++++------ Marlin/src/lcd/language/language_tr.h | 1696 +++++++------- Marlin/src/lcd/language/language_uk.h | 1464 ++++++------ Marlin/src/lcd/language/language_vi.h | 783 ++++--- Marlin/src/lcd/language/language_zh_CN.h | 1137 +++++----- Marlin/src/lcd/language/language_zh_TW.h | 877 ++++---- 50 files changed, 14972 insertions(+), 15773 deletions(-) diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_bg.h b/Marlin/src/lcd/dogm/fontdata/langdata_bg.h index 20cd7b9ed7..551ed83b7e 100644 --- a/Marlin/src/lcd/dogm/fontdata/langdata_bg.h +++ b/Marlin/src/lcd/dogm/fontdata/langdata_bg.h @@ -67,12 +67,12 @@ const u8g_fntpgm_uint8_t fontpage_8_206_207[39] U8G_FONT_SECTION("fontpage_8_206 0x01,0x00,0x70,0x90,0x70,0x50,0x90}; static const uxg_fontinfo_t g_fontinfo_bg[] PROGMEM = { - FONTDATA_ITEM(8, 144, 149, fontpage_8_144_149), // 'А' -- 'Е' - FONTDATA_ITEM(8, 151, 152, fontpage_8_151_152), // 'З' -- 'И' - FONTDATA_ITEM(8, 154, 164, fontpage_8_154_164), // 'К' -- 'Ф' - FONTDATA_ITEM(8, 166, 166, fontpage_8_166_166), // 'Ц' -- 'Ц' - FONTDATA_ITEM(8, 175, 195, fontpage_8_175_195), // 'Я' -- 'у' - FONTDATA_ITEM(8, 197, 200, fontpage_8_197_200), // 'х' -- 'ш' - FONTDATA_ITEM(8, 202, 202, fontpage_8_202_202), // 'ъ' -- 'ъ' - FONTDATA_ITEM(8, 206, 207, fontpage_8_206_207), // 'ю' -- 'я' + FONTDATA_ITEM(8, 144, 149, fontpage_8_144_149), // ' А ' - ' Е ' + FONTDATA_ITEM(8, 151, 152, fontpage_8_151_152), // ' З ' - ' И ' + FONTDATA_ITEM(8, 154, 164, fontpage_8_154_164), // ' К ' - ' Ф ' + FONTDATA_ITEM(8, 166, 166, fontpage_8_166_166), // ' Ц ' - ' Ц ' + FONTDATA_ITEM(8, 175, 195, fontpage_8_175_195), // ' Я ' - ' у ' + FONTDATA_ITEM(8, 197, 200, fontpage_8_197_200), // ' х ' - ' ш ' + FONTDATA_ITEM(8, 202, 202, fontpage_8_202_202), // ' ъ ' - ' ъ ' + FONTDATA_ITEM(8, 206, 207, fontpage_8_206_207), // ' ю ' - ' я ' }; diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_cz.h b/Marlin/src/lcd/dogm/fontdata/langdata_cz.h index 39f03f3a97..d5b9349f88 100644 --- a/Marlin/src/lcd/dogm/fontdata/langdata_cz.h +++ b/Marlin/src/lcd/dogm/fontdata/langdata_cz.h @@ -43,13 +43,13 @@ const u8g_fntpgm_uint8_t fontpage_2_253_254[47] U8G_FONT_SECTION("fontpage_2_253 0xF8,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0xF8,0x10,0x20,0x40,0xF8}; static const uxg_fontinfo_t g_fontinfo_cz[] PROGMEM = { - FONTDATA_ITEM(2, 140, 141, fontpage_2_140_141), // 'Č' -- 'č' - FONTDATA_ITEM(2, 143, 143, fontpage_2_143_143), // 'ď' -- 'ď' - FONTDATA_ITEM(2, 154, 155, fontpage_2_154_155), // 'Ě' -- 'ě' - FONTDATA_ITEM(2, 200, 200, fontpage_2_200_200), // 'ň' -- 'ň' - FONTDATA_ITEM(2, 216, 217, fontpage_2_216_217), // 'Ř' -- 'ř' - FONTDATA_ITEM(2, 224, 225, fontpage_2_224_225), // 'Š' -- 'š' - FONTDATA_ITEM(2, 229, 229, fontpage_2_229_229), // 'ť' -- 'ť' - FONTDATA_ITEM(2, 239, 239, fontpage_2_239_239), // 'ů' -- 'ů' - FONTDATA_ITEM(2, 253, 254, fontpage_2_253_254), // 'Ž' -- 'ž' + FONTDATA_ITEM(2, 140, 141, fontpage_2_140_141), // ' Č ' - ' č ' + FONTDATA_ITEM(2, 143, 143, fontpage_2_143_143), // ' ď ' - ' ď ' + FONTDATA_ITEM(2, 154, 155, fontpage_2_154_155), // ' Ě ' - ' ě ' + FONTDATA_ITEM(2, 200, 200, fontpage_2_200_200), // ' ň ' - ' ň ' + FONTDATA_ITEM(2, 216, 217, fontpage_2_216_217), // ' Ř ' - ' ř ' + FONTDATA_ITEM(2, 224, 225, fontpage_2_224_225), // ' Š ' - ' š ' + FONTDATA_ITEM(2, 229, 229, fontpage_2_229_229), // ' ť ' - ' ť ' + FONTDATA_ITEM(2, 239, 239, fontpage_2_239_239), // ' ů ' - ' ů ' + FONTDATA_ITEM(2, 253, 254, fontpage_2_253_254), // ' Ž ' - ' ž ' }; diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_el.h b/Marlin/src/lcd/dogm/fontdata/langdata_el.h index 9faacfbd24..f8c82678f6 100644 --- a/Marlin/src/lcd/dogm/fontdata/langdata_el.h +++ b/Marlin/src/lcd/dogm/fontdata/langdata_el.h @@ -80,15 +80,15 @@ const u8g_fntpgm_uint8_t fontpage_64_166_166[24] U8G_FONT_SECTION("fontpage_64_1 0x00,0x05,0x01,0x01,0x06,0x00,0x00,0xA8}; static const uxg_fontinfo_t g_fontinfo_el[] PROGMEM = { - FONTDATA_ITEM(7, 136, 136, fontpage_7_136_136), // 'Έ' -- 'Έ' - FONTDATA_ITEM(7, 145, 149, fontpage_7_145_149), // 'Α' -- 'Ε' - FONTDATA_ITEM(7, 151, 157, fontpage_7_151_157), // 'Η' -- 'Ν' - FONTDATA_ITEM(7, 159, 161, fontpage_7_159_161), // 'Ο' -- 'Ρ' - FONTDATA_ITEM(7, 163, 167, fontpage_7_163_167), // 'Σ' -- 'Χ' - FONTDATA_ITEM(7, 172, 175, fontpage_7_172_175), // 'ά' -- 'ί' - FONTDATA_ITEM(7, 177, 181, fontpage_7_177_181), // 'α' -- 'ε' - FONTDATA_ITEM(7, 183, 199, fontpage_7_183_199), // 'η' -- 'χ' - FONTDATA_ITEM(7, 201, 201, fontpage_7_201_201), // 'ω' -- 'ω' - FONTDATA_ITEM(7, 204, 206, fontpage_7_204_206), // 'ό' -- 'ώ' - FONTDATA_ITEM(64, 166, 166, fontpage_64_166_166), // '…' -- '…' + FONTDATA_ITEM(7, 136, 136, fontpage_7_136_136), // ' Έ ' - ' Έ ' + FONTDATA_ITEM(7, 145, 149, fontpage_7_145_149), // ' Α ' - ' Ε ' + FONTDATA_ITEM(7, 151, 157, fontpage_7_151_157), // ' Η ' - ' Ν ' + FONTDATA_ITEM(7, 159, 161, fontpage_7_159_161), // ' Ο ' - ' Ρ ' + FONTDATA_ITEM(7, 163, 167, fontpage_7_163_167), // ' Σ ' - ' Χ ' + FONTDATA_ITEM(7, 172, 175, fontpage_7_172_175), // ' ά ' - ' ί ' + FONTDATA_ITEM(7, 177, 181, fontpage_7_177_181), // ' α ' - ' ε ' + FONTDATA_ITEM(7, 183, 199, fontpage_7_183_199), // ' η ' - ' χ ' + FONTDATA_ITEM(7, 201, 201, fontpage_7_201_201), // ' ω ' - ' ω ' + FONTDATA_ITEM(7, 204, 206, fontpage_7_204_206), // ' ό ' - ' ώ ' + FONTDATA_ITEM(64, 166, 166, fontpage_64_166_166), // ' … ' - ' … ' }; diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_el_CY.h b/Marlin/src/lcd/dogm/fontdata/langdata_el_CY.h index 6ad34ebc95..d79477e2bf 100644 --- a/Marlin/src/lcd/dogm/fontdata/langdata_el_CY.h +++ b/Marlin/src/lcd/dogm/fontdata/langdata_el_CY.h @@ -80,15 +80,15 @@ const u8g_fntpgm_uint8_t fontpage_64_166_166[24] U8G_FONT_SECTION("fontpage_64_1 0x00,0x05,0x01,0x01,0x06,0x00,0x00,0xA8}; static const uxg_fontinfo_t g_fontinfo_el_CY[] PROGMEM = { - FONTDATA_ITEM(7, 136, 136, fontpage_7_136_136), // 'Έ' -- 'Έ' - FONTDATA_ITEM(7, 145, 149, fontpage_7_145_149), // 'Α' -- 'Ε' - FONTDATA_ITEM(7, 151, 157, fontpage_7_151_157), // 'Η' -- 'Ν' - FONTDATA_ITEM(7, 159, 161, fontpage_7_159_161), // 'Ο' -- 'Ρ' - FONTDATA_ITEM(7, 163, 167, fontpage_7_163_167), // 'Σ' -- 'Χ' - FONTDATA_ITEM(7, 172, 175, fontpage_7_172_175), // 'ά' -- 'ί' - FONTDATA_ITEM(7, 177, 181, fontpage_7_177_181), // 'α' -- 'ε' - FONTDATA_ITEM(7, 183, 199, fontpage_7_183_199), // 'η' -- 'χ' - FONTDATA_ITEM(7, 201, 201, fontpage_7_201_201), // 'ω' -- 'ω' - FONTDATA_ITEM(7, 204, 206, fontpage_7_204_206), // 'ό' -- 'ώ' - FONTDATA_ITEM(64, 166, 166, fontpage_64_166_166), // '…' -- '…' + FONTDATA_ITEM(7, 136, 136, fontpage_7_136_136), // ' Έ ' - ' Έ ' + FONTDATA_ITEM(7, 145, 149, fontpage_7_145_149), // ' Α ' - ' Ε ' + FONTDATA_ITEM(7, 151, 157, fontpage_7_151_157), // ' Η ' - ' Ν ' + FONTDATA_ITEM(7, 159, 161, fontpage_7_159_161), // ' Ο ' - ' Ρ ' + FONTDATA_ITEM(7, 163, 167, fontpage_7_163_167), // ' Σ ' - ' Χ ' + FONTDATA_ITEM(7, 172, 175, fontpage_7_172_175), // ' ά ' - ' ί ' + FONTDATA_ITEM(7, 177, 181, fontpage_7_177_181), // ' α ' - ' ε ' + FONTDATA_ITEM(7, 183, 199, fontpage_7_183_199), // ' η ' - ' χ ' + FONTDATA_ITEM(7, 201, 201, fontpage_7_201_201), // ' ω ' - ' ω ' + FONTDATA_ITEM(7, 204, 206, fontpage_7_204_206), // ' ό ' - ' ώ ' + FONTDATA_ITEM(64, 166, 166, fontpage_64_166_166), // ' … ' - ' … ' }; diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_hr.h b/Marlin/src/lcd/dogm/fontdata/langdata_hr.h index b5e4d544cc..ee3827e24c 100644 --- a/Marlin/src/lcd/dogm/fontdata/langdata_hr.h +++ b/Marlin/src/lcd/dogm/fontdata/langdata_hr.h @@ -25,9 +25,9 @@ const u8g_fntpgm_uint8_t fontpage_2_254_254[31] U8G_FONT_SECTION("fontpage_2_254 0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0xF8,0x10,0x20,0x40,0xF8}; static const uxg_fontinfo_t g_fontinfo_hr[] PROGMEM = { - FONTDATA_ITEM(2, 135, 135, fontpage_2_135_135), // 'ć' -- 'ć' - FONTDATA_ITEM(2, 140, 141, fontpage_2_140_141), // 'Č' -- 'č' - FONTDATA_ITEM(2, 145, 145, fontpage_2_145_145), // 'đ' -- 'đ' - FONTDATA_ITEM(2, 225, 225, fontpage_2_225_225), // 'š' -- 'š' - FONTDATA_ITEM(2, 254, 254, fontpage_2_254_254), // 'ž' -- 'ž' + FONTDATA_ITEM(2, 135, 135, fontpage_2_135_135), // ' ć ' - ' ć ' + FONTDATA_ITEM(2, 140, 141, fontpage_2_140_141), // ' Č ' - ' č ' + FONTDATA_ITEM(2, 145, 145, fontpage_2_145_145), // ' đ ' - ' đ ' + FONTDATA_ITEM(2, 225, 225, fontpage_2_225_225), // ' š ' - ' š ' + FONTDATA_ITEM(2, 254, 254, fontpage_2_254_254), // ' ž ' - ' ž ' }; diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_jp_kana.h b/Marlin/src/lcd/dogm/fontdata/langdata_jp_kana.h index 4c02fad09e..ea02c8edf9 100644 --- a/Marlin/src/lcd/dogm/fontdata/langdata_jp_kana.h +++ b/Marlin/src/lcd/dogm/fontdata/langdata_jp_kana.h @@ -109,19 +109,19 @@ const u8g_fntpgm_uint8_t fontpage_97_252_252[25] U8G_FONT_SECTION("fontpage_97_2 0x00,0x05,0x02,0x02,0x06,0x00,0x03,0x80,0x78}; static const uxg_fontinfo_t g_fontinfo_jp_kana[] PROGMEM = { - FONTDATA_ITEM(96, 217, 217, fontpage_96_217_217), // 'す' -- 'す' - FONTDATA_ITEM(97, 139, 139, fontpage_97_139_139), // 'る' -- 'る' - FONTDATA_ITEM(97, 146, 146, fontpage_97_146_146), // 'を' -- 'を' - FONTDATA_ITEM(97, 161, 164, fontpage_97_161_164), // 'ァ' -- 'イ' - FONTDATA_ITEM(97, 166, 166, fontpage_97_166_166), // 'ウ' -- 'ウ' - FONTDATA_ITEM(97, 168, 168, fontpage_97_168_168), // 'エ' -- 'エ' - FONTDATA_ITEM(97, 170, 187, fontpage_97_170_187), // 'オ' -- 'セ' - FONTDATA_ITEM(97, 189, 193, fontpage_97_189_193), // 'ソ' -- 'チ' - FONTDATA_ITEM(97, 195, 211, fontpage_97_195_211), // 'ッ' -- 'ビ' - FONTDATA_ITEM(97, 213, 217, fontpage_97_213_217), // 'フ' -- 'ベ' - FONTDATA_ITEM(97, 219, 220, fontpage_97_219_220), // 'ホ' -- 'ボ' - FONTDATA_ITEM(97, 222, 223, fontpage_97_222_223), // 'マ' -- 'ミ' - FONTDATA_ITEM(97, 225, 237, fontpage_97_225_237), // 'メ' -- 'ロ' - FONTDATA_ITEM(97, 242, 243, fontpage_97_242_243), // 'ヲ' -- 'ン' - FONTDATA_ITEM(97, 252, 252, fontpage_97_252_252), // 'ー' -- 'ー' + FONTDATA_ITEM(96, 217, 217, fontpage_96_217_217), // ' す ' - ' す ' + FONTDATA_ITEM(97, 139, 139, fontpage_97_139_139), // ' る ' - ' る ' + FONTDATA_ITEM(97, 146, 146, fontpage_97_146_146), // ' を ' - ' を ' + FONTDATA_ITEM(97, 161, 164, fontpage_97_161_164), // ' ァ ' - ' イ ' + FONTDATA_ITEM(97, 166, 166, fontpage_97_166_166), // ' ウ ' - ' ウ ' + FONTDATA_ITEM(97, 168, 168, fontpage_97_168_168), // ' エ ' - ' エ ' + FONTDATA_ITEM(97, 170, 187, fontpage_97_170_187), // ' オ ' - ' セ ' + FONTDATA_ITEM(97, 189, 193, fontpage_97_189_193), // ' ソ ' - ' チ ' + FONTDATA_ITEM(97, 195, 211, fontpage_97_195_211), // ' ッ ' - ' ビ ' + FONTDATA_ITEM(97, 213, 217, fontpage_97_213_217), // ' フ ' - ' ベ ' + FONTDATA_ITEM(97, 219, 220, fontpage_97_219_220), // ' ホ ' - ' ボ ' + FONTDATA_ITEM(97, 222, 223, fontpage_97_222_223), // ' マ ' - ' ミ ' + FONTDATA_ITEM(97, 225, 237, fontpage_97_225_237), // ' メ ' - ' ロ ' + FONTDATA_ITEM(97, 242, 243, fontpage_97_242_243), // ' ヲ ' - ' ン ' + FONTDATA_ITEM(97, 252, 252, fontpage_97_252_252), // ' ー ' - ' ー ' }; diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_ko_KR.h b/Marlin/src/lcd/dogm/fontdata/langdata_ko_KR.h index 78aa07b567..b8fe356f53 100644 --- a/Marlin/src/lcd/dogm/fontdata/langdata_ko_KR.h +++ b/Marlin/src/lcd/dogm/fontdata/langdata_ko_KR.h @@ -451,113 +451,113 @@ const u8g_fntpgm_uint8_t fontpage_431_136_136[34] U8G_FONT_SECTION("fontpage_431 0x01,0x01}; static const uxg_fontinfo_t g_fontinfo_ko_KR[] PROGMEM = { - FONTDATA_ITEM(344, 146, 146, fontpage_344_146_146), // '값' -- '값' - FONTDATA_ITEM(344, 240, 240, fontpage_344_240_240), // '거' -- '거' - FONTDATA_ITEM(345, 224, 224, fontpage_345_224_224), // '고' -- '고' - FONTDATA_ITEM(347, 248, 248, fontpage_347_248_248), // '그' -- '그' - FONTDATA_ITEM(348, 137, 137, fontpage_348_137_137), // '급' -- '급' - FONTDATA_ITEM(348, 176, 176, fontpage_348_176_176), // '기' -- '기' - FONTDATA_ITEM(348, 197, 197, fontpage_348_197_197), // '깅' -- '깅' - FONTDATA_ITEM(352, 196, 196, fontpage_352_196_196), // '끄' -- '끄' - FONTDATA_ITEM(353, 180, 180, fontpage_353_180_180), // '내' -- '내' - FONTDATA_ITEM(354, 248, 248, fontpage_354_248_248), // '노' -- '노' - FONTDATA_ITEM(356, 132, 132, fontpage_356_132_132), // '누' -- '누' - FONTDATA_ITEM(356, 244, 244, fontpage_356_244_244), // '뉴' -- '뉴' - FONTDATA_ITEM(357, 200, 200, fontpage_357_200_200), // '니' -- '니' - FONTDATA_ITEM(357, 228, 228, fontpage_357_228_228), // '다' -- '다' - FONTDATA_ITEM(357, 249, 249, fontpage_357_249_249), // '당' -- '당' - FONTDATA_ITEM(359, 196, 196, fontpage_359_196_196), // '도' -- '도' - FONTDATA_ITEM(359, 204, 204, fontpage_359_204_204), // '돌' -- '돌' - FONTDATA_ITEM(359, 217, 217, fontpage_359_217_217), // '동' -- '동' - FONTDATA_ITEM(360, 152, 152, fontpage_360_152_152), // '되' -- '되' - FONTDATA_ITEM(360, 156, 156, fontpage_360_156_156), // '된' -- '된' - FONTDATA_ITEM(360, 168, 168, fontpage_360_168_168), // '됨' -- '됨' - FONTDATA_ITEM(361, 164, 164, fontpage_361_164_164), // '뒤' -- '뒤' - FONTDATA_ITEM(361, 220, 220, fontpage_361_220_220), // '드' -- '드' - FONTDATA_ITEM(362, 148, 148, fontpage_362_148_148), // '디' -- '디' - FONTDATA_ITEM(366, 252, 252, fontpage_366_252_252), // '라' -- '라' - FONTDATA_ITEM(367, 236, 236, fontpage_367_236_236), // '러' -- '러' - FONTDATA_ITEM(368, 136, 136, fontpage_368_136_136), // '레' -- '레' - FONTDATA_ITEM(368, 165, 165, fontpage_368_165_165), // '력' -- '력' - FONTDATA_ITEM(368, 220, 220, fontpage_368_220_220), // '로' -- '로' - FONTDATA_ITEM(369, 204, 204, fontpage_369_204_204), // '료' -- '료' - FONTDATA_ITEM(370, 244, 244, fontpage_370_244_244), // '르' -- '르' - FONTDATA_ITEM(371, 172, 172, fontpage_371_172_172), // '리' -- '리' - FONTDATA_ITEM(371, 176, 176, fontpage_371_176_176), // '린' -- '린' - FONTDATA_ITEM(371, 189, 189, fontpage_371_189_189), // '립' -- '립' - FONTDATA_ITEM(371, 193, 193, fontpage_371_193_193), // '링' -- '링' - FONTDATA_ITEM(372, 200, 200, fontpage_372_200_200), // '멈' -- '멈' - FONTDATA_ITEM(372, 212, 212, fontpage_372_212_212), // '메' -- '메' - FONTDATA_ITEM(372, 244, 244, fontpage_372_244_244), // '면' -- '면' - FONTDATA_ITEM(373, 168, 168, fontpage_373_168_168), // '모' -- '모' - FONTDATA_ITEM(373, 187, 187, fontpage_373_187_187), // '못' -- '못' - FONTDATA_ITEM(375, 248, 248, fontpage_375_248_248), // '미' -- '미' - FONTDATA_ITEM(376, 128, 128, fontpage_376_128_128), // '밀' -- '밀' - FONTDATA_ITEM(376, 148, 148, fontpage_376_148_148), // '바' -- '바' - FONTDATA_ITEM(377, 132, 132, fontpage_377_132_132), // '버' -- '버' - FONTDATA_ITEM(377, 160, 160, fontpage_377_160_160), // '베' -- '베' - FONTDATA_ITEM(377, 168, 168, fontpage_377_168_168), // '벨' -- '벨' - FONTDATA_ITEM(377, 248, 248, fontpage_377_248_248), // '본' -- '본' - FONTDATA_ITEM(380, 140, 140, fontpage_380_140_140), // '브' -- '브' - FONTDATA_ITEM(380, 196, 196, fontpage_380_196_196), // '비' -- '비' - FONTDATA_ITEM(385, 172, 172, fontpage_385_172_172), // '사' -- '사' - FONTDATA_ITEM(385, 189, 189, fontpage_385_189_189), // '삽' -- '삽' - FONTDATA_ITEM(385, 200, 200, fontpage_385_200_200), // '새' -- '새' - FONTDATA_ITEM(386, 164, 164, fontpage_386_164_164), // '설' -- '설' - FONTDATA_ITEM(387, 140, 141, fontpage_387_140_141), // '소' -- '속' - FONTDATA_ITEM(389, 164, 164, fontpage_389_164_164), // '스' -- '스' - FONTDATA_ITEM(389, 172, 172, fontpage_389_172_172), // '슬' -- '슬' - FONTDATA_ITEM(389, 220, 221, fontpage_389_220_221), // '시' -- '식' - FONTDATA_ITEM(395, 180, 180, fontpage_395_180_180), // '어' -- '어' - FONTDATA_ITEM(395, 198, 198, fontpage_395_198_198), // '없' -- '없' - FONTDATA_ITEM(395, 209, 209, fontpage_395_209_209), // '엑' -- '엑' - FONTDATA_ITEM(395, 212, 212, fontpage_395_212_212), // '엔' -- '엔' - FONTDATA_ITEM(395, 244, 244, fontpage_395_244_244), // '열' -- '열' - FONTDATA_ITEM(396, 136, 136, fontpage_396_136_136), // '예' -- '예' - FONTDATA_ITEM(396, 164, 164, fontpage_396_164_164), // '오' -- '오' - FONTDATA_ITEM(396, 168, 168, fontpage_396_168_168), // '온' -- '온' - FONTDATA_ITEM(396, 196, 196, fontpage_396_196_196), // '완' -- '완' - FONTDATA_ITEM(397, 208, 208, fontpage_397_208_208), // '원' -- '원' - FONTDATA_ITEM(398, 132, 132, fontpage_398_132_132), // '위' -- '위' - FONTDATA_ITEM(398, 188, 188, fontpage_398_188_188), // '으' -- '으' - FONTDATA_ITEM(398, 204, 204, fontpage_398_204_204), // '음' -- '음' - FONTDATA_ITEM(398, 244, 244, fontpage_398_244_244), // '이' -- '이' - FONTDATA_ITEM(398, 252, 253, fontpage_398_252_253), // '일' -- '읽' - FONTDATA_ITEM(399, 133, 133, fontpage_399_133_133), // '입' -- '입' - FONTDATA_ITEM(399, 144, 145, fontpage_399_144_145), // '자' -- '작' - FONTDATA_ITEM(399, 152, 152, fontpage_399_152_152), // '잘' -- '잘' - FONTDATA_ITEM(399, 165, 165, fontpage_399_165_165), // '장' -- '장' - FONTDATA_ITEM(399, 172, 172, fontpage_399_172_172), // '재' -- '재' - FONTDATA_ITEM(400, 128, 128, fontpage_400_128_128), // '저' -- '저' - FONTDATA_ITEM(400, 132, 132, fontpage_400_132_132), // '전' -- '전' - FONTDATA_ITEM(400, 149, 149, fontpage_400_149_149), // '정' -- '정' - FONTDATA_ITEM(400, 156, 156, fontpage_400_156_156), // '제' -- '제' - FONTDATA_ITEM(400, 240, 240, fontpage_400_240_240), // '조' -- '조' - FONTDATA_ITEM(401, 253, 253, fontpage_401_253_253), // '죽' -- '죽' - FONTDATA_ITEM(402, 128, 128, fontpage_402_128_128), // '준' -- '준' - FONTDATA_ITEM(402, 145, 145, fontpage_402_145_145), // '중' -- '중' - FONTDATA_ITEM(403, 144, 144, fontpage_403_144_144), // '즐' -- '즐' - FONTDATA_ITEM(403, 192, 192, fontpage_403_192_192), // '지' -- '지' - FONTDATA_ITEM(409, 152, 152, fontpage_409_152_152), // '처' -- '처' - FONTDATA_ITEM(410, 136, 136, fontpage_410_136_136), // '초' -- '초' - FONTDATA_ITEM(411, 149, 149, fontpage_411_149_149), // '축' -- '축' - FONTDATA_ITEM(411, 156, 156, fontpage_411_156_156), // '출' -- '출' - FONTDATA_ITEM(411, 164, 164, fontpage_411_164_164), // '춤' -- '춤' - FONTDATA_ITEM(411, 232, 232, fontpage_411_232_232), // '취' -- '취' - FONTDATA_ITEM(412, 216, 216, fontpage_412_216_216), // '치' -- '치' - FONTDATA_ITEM(412, 232, 232, fontpage_412_232_232), // '침' -- '침' - FONTDATA_ITEM(412, 244, 244, fontpage_412_244_244), // '카' -- '카' - FONTDATA_ITEM(414, 156, 156, fontpage_414_156_156), // '켜' -- '켜' - FONTDATA_ITEM(417, 209, 209, fontpage_417_209_209), // '탑' -- '탑' - FONTDATA_ITEM(418, 176, 176, fontpage_418_176_176), // '터' -- '터' - FONTDATA_ITEM(418, 204, 204, fontpage_418_204_204), // '테' -- '테' - FONTDATA_ITEM(419, 160, 160, fontpage_419_160_160), // '토' -- '토' - FONTDATA_ITEM(421, 184, 184, fontpage_421_184_184), // '트' -- '트' - FONTDATA_ITEM(423, 156, 156, fontpage_423_156_156), // '펜' -- '펜' - FONTDATA_ITEM(426, 132, 132, fontpage_426_132_132), // '프' -- '프' - FONTDATA_ITEM(426, 216, 216, fontpage_426_216_216), // '하' -- '하' - FONTDATA_ITEM(426, 233, 233, fontpage_426_233_233), // '합' -- '합' - FONTDATA_ITEM(428, 200, 200, fontpage_428_200_200), // '홈' -- '홈' - FONTDATA_ITEM(428, 212, 212, fontpage_428_212_212), // '화' -- '화' - FONTDATA_ITEM(431, 136, 136, fontpage_431_136_136), // '히' -- '히' + FONTDATA_ITEM(344, 146, 146, fontpage_344_146_146), // ' 값 ' - ' 값 ' + FONTDATA_ITEM(344, 240, 240, fontpage_344_240_240), // ' 거 ' - ' 거 ' + FONTDATA_ITEM(345, 224, 224, fontpage_345_224_224), // ' 고 ' - ' 고 ' + FONTDATA_ITEM(347, 248, 248, fontpage_347_248_248), // ' 그 ' - ' 그 ' + FONTDATA_ITEM(348, 137, 137, fontpage_348_137_137), // ' 급 ' - ' 급 ' + FONTDATA_ITEM(348, 176, 176, fontpage_348_176_176), // ' 기 ' - ' 기 ' + FONTDATA_ITEM(348, 197, 197, fontpage_348_197_197), // ' 깅 ' - ' 깅 ' + FONTDATA_ITEM(352, 196, 196, fontpage_352_196_196), // ' 끄 ' - ' 끄 ' + FONTDATA_ITEM(353, 180, 180, fontpage_353_180_180), // ' 내 ' - ' 내 ' + FONTDATA_ITEM(354, 248, 248, fontpage_354_248_248), // ' 노 ' - ' 노 ' + FONTDATA_ITEM(356, 132, 132, fontpage_356_132_132), // ' 누 ' - ' 누 ' + FONTDATA_ITEM(356, 244, 244, fontpage_356_244_244), // ' 뉴 ' - ' 뉴 ' + FONTDATA_ITEM(357, 200, 200, fontpage_357_200_200), // ' 니 ' - ' 니 ' + FONTDATA_ITEM(357, 228, 228, fontpage_357_228_228), // ' 다 ' - ' 다 ' + FONTDATA_ITEM(357, 249, 249, fontpage_357_249_249), // ' 당 ' - ' 당 ' + FONTDATA_ITEM(359, 196, 196, fontpage_359_196_196), // ' 도 ' - ' 도 ' + FONTDATA_ITEM(359, 204, 204, fontpage_359_204_204), // ' 돌 ' - ' 돌 ' + FONTDATA_ITEM(359, 217, 217, fontpage_359_217_217), // ' 동 ' - ' 동 ' + FONTDATA_ITEM(360, 152, 152, fontpage_360_152_152), // ' 되 ' - ' 되 ' + FONTDATA_ITEM(360, 156, 156, fontpage_360_156_156), // ' 된 ' - ' 된 ' + FONTDATA_ITEM(360, 168, 168, fontpage_360_168_168), // ' 됨 ' - ' 됨 ' + FONTDATA_ITEM(361, 164, 164, fontpage_361_164_164), // ' 뒤 ' - ' 뒤 ' + FONTDATA_ITEM(361, 220, 220, fontpage_361_220_220), // ' 드 ' - ' 드 ' + FONTDATA_ITEM(362, 148, 148, fontpage_362_148_148), // ' 디 ' - ' 디 ' + FONTDATA_ITEM(366, 252, 252, fontpage_366_252_252), // ' 라 ' - ' 라 ' + FONTDATA_ITEM(367, 236, 236, fontpage_367_236_236), // ' 러 ' - ' 러 ' + FONTDATA_ITEM(368, 136, 136, fontpage_368_136_136), // ' 레 ' - ' 레 ' + FONTDATA_ITEM(368, 165, 165, fontpage_368_165_165), // ' 력 ' - ' 력 ' + FONTDATA_ITEM(368, 220, 220, fontpage_368_220_220), // ' 로 ' - ' 로 ' + FONTDATA_ITEM(369, 204, 204, fontpage_369_204_204), // ' 료 ' - ' 료 ' + FONTDATA_ITEM(370, 244, 244, fontpage_370_244_244), // ' 르 ' - ' 르 ' + FONTDATA_ITEM(371, 172, 172, fontpage_371_172_172), // ' 리 ' - ' 리 ' + FONTDATA_ITEM(371, 176, 176, fontpage_371_176_176), // ' 린 ' - ' 린 ' + FONTDATA_ITEM(371, 189, 189, fontpage_371_189_189), // ' 립 ' - ' 립 ' + FONTDATA_ITEM(371, 193, 193, fontpage_371_193_193), // ' 링 ' - ' 링 ' + FONTDATA_ITEM(372, 200, 200, fontpage_372_200_200), // ' 멈 ' - ' 멈 ' + FONTDATA_ITEM(372, 212, 212, fontpage_372_212_212), // ' 메 ' - ' 메 ' + FONTDATA_ITEM(372, 244, 244, fontpage_372_244_244), // ' 면 ' - ' 면 ' + FONTDATA_ITEM(373, 168, 168, fontpage_373_168_168), // ' 모 ' - ' 모 ' + FONTDATA_ITEM(373, 187, 187, fontpage_373_187_187), // ' 못 ' - ' 못 ' + FONTDATA_ITEM(375, 248, 248, fontpage_375_248_248), // ' 미 ' - ' 미 ' + FONTDATA_ITEM(376, 128, 128, fontpage_376_128_128), // ' 밀 ' - ' 밀 ' + FONTDATA_ITEM(376, 148, 148, fontpage_376_148_148), // ' 바 ' - ' 바 ' + FONTDATA_ITEM(377, 132, 132, fontpage_377_132_132), // ' 버 ' - ' 버 ' + FONTDATA_ITEM(377, 160, 160, fontpage_377_160_160), // ' 베 ' - ' 베 ' + FONTDATA_ITEM(377, 168, 168, fontpage_377_168_168), // ' 벨 ' - ' 벨 ' + FONTDATA_ITEM(377, 248, 248, fontpage_377_248_248), // ' 본 ' - ' 본 ' + FONTDATA_ITEM(380, 140, 140, fontpage_380_140_140), // ' 브 ' - ' 브 ' + FONTDATA_ITEM(380, 196, 196, fontpage_380_196_196), // ' 비 ' - ' 비 ' + FONTDATA_ITEM(385, 172, 172, fontpage_385_172_172), // ' 사 ' - ' 사 ' + FONTDATA_ITEM(385, 189, 189, fontpage_385_189_189), // ' 삽 ' - ' 삽 ' + FONTDATA_ITEM(385, 200, 200, fontpage_385_200_200), // ' 새 ' - ' 새 ' + FONTDATA_ITEM(386, 164, 164, fontpage_386_164_164), // ' 설 ' - ' 설 ' + FONTDATA_ITEM(387, 140, 141, fontpage_387_140_141), // ' 소 ' - ' 속 ' + FONTDATA_ITEM(389, 164, 164, fontpage_389_164_164), // ' 스 ' - ' 스 ' + FONTDATA_ITEM(389, 172, 172, fontpage_389_172_172), // ' 슬 ' - ' 슬 ' + FONTDATA_ITEM(389, 220, 221, fontpage_389_220_221), // ' 시 ' - ' 식 ' + FONTDATA_ITEM(395, 180, 180, fontpage_395_180_180), // ' 어 ' - ' 어 ' + FONTDATA_ITEM(395, 198, 198, fontpage_395_198_198), // ' 없 ' - ' 없 ' + FONTDATA_ITEM(395, 209, 209, fontpage_395_209_209), // ' 엑 ' - ' 엑 ' + FONTDATA_ITEM(395, 212, 212, fontpage_395_212_212), // ' 엔 ' - ' 엔 ' + FONTDATA_ITEM(395, 244, 244, fontpage_395_244_244), // ' 열 ' - ' 열 ' + FONTDATA_ITEM(396, 136, 136, fontpage_396_136_136), // ' 예 ' - ' 예 ' + FONTDATA_ITEM(396, 164, 164, fontpage_396_164_164), // ' 오 ' - ' 오 ' + FONTDATA_ITEM(396, 168, 168, fontpage_396_168_168), // ' 온 ' - ' 온 ' + FONTDATA_ITEM(396, 196, 196, fontpage_396_196_196), // ' 완 ' - ' 완 ' + FONTDATA_ITEM(397, 208, 208, fontpage_397_208_208), // ' 원 ' - ' 원 ' + FONTDATA_ITEM(398, 132, 132, fontpage_398_132_132), // ' 위 ' - ' 위 ' + FONTDATA_ITEM(398, 188, 188, fontpage_398_188_188), // ' 으 ' - ' 으 ' + FONTDATA_ITEM(398, 204, 204, fontpage_398_204_204), // ' 음 ' - ' 음 ' + FONTDATA_ITEM(398, 244, 244, fontpage_398_244_244), // ' 이 ' - ' 이 ' + FONTDATA_ITEM(398, 252, 253, fontpage_398_252_253), // ' 일 ' - ' 읽 ' + FONTDATA_ITEM(399, 133, 133, fontpage_399_133_133), // ' 입 ' - ' 입 ' + FONTDATA_ITEM(399, 144, 145, fontpage_399_144_145), // ' 자 ' - ' 작 ' + FONTDATA_ITEM(399, 152, 152, fontpage_399_152_152), // ' 잘 ' - ' 잘 ' + FONTDATA_ITEM(399, 165, 165, fontpage_399_165_165), // ' 장 ' - ' 장 ' + FONTDATA_ITEM(399, 172, 172, fontpage_399_172_172), // ' 재 ' - ' 재 ' + FONTDATA_ITEM(400, 128, 128, fontpage_400_128_128), // ' 저 ' - ' 저 ' + FONTDATA_ITEM(400, 132, 132, fontpage_400_132_132), // ' 전 ' - ' 전 ' + FONTDATA_ITEM(400, 149, 149, fontpage_400_149_149), // ' 정 ' - ' 정 ' + FONTDATA_ITEM(400, 156, 156, fontpage_400_156_156), // ' 제 ' - ' 제 ' + FONTDATA_ITEM(400, 240, 240, fontpage_400_240_240), // ' 조 ' - ' 조 ' + FONTDATA_ITEM(401, 253, 253, fontpage_401_253_253), // ' 죽 ' - ' 죽 ' + FONTDATA_ITEM(402, 128, 128, fontpage_402_128_128), // ' 준 ' - ' 준 ' + FONTDATA_ITEM(402, 145, 145, fontpage_402_145_145), // ' 중 ' - ' 중 ' + FONTDATA_ITEM(403, 144, 144, fontpage_403_144_144), // ' 즐 ' - ' 즐 ' + FONTDATA_ITEM(403, 192, 192, fontpage_403_192_192), // ' 지 ' - ' 지 ' + FONTDATA_ITEM(409, 152, 152, fontpage_409_152_152), // ' 처 ' - ' 처 ' + FONTDATA_ITEM(410, 136, 136, fontpage_410_136_136), // ' 초 ' - ' 초 ' + FONTDATA_ITEM(411, 149, 149, fontpage_411_149_149), // ' 축 ' - ' 축 ' + FONTDATA_ITEM(411, 156, 156, fontpage_411_156_156), // ' 출 ' - ' 출 ' + FONTDATA_ITEM(411, 164, 164, fontpage_411_164_164), // ' 춤 ' - ' 춤 ' + FONTDATA_ITEM(411, 232, 232, fontpage_411_232_232), // ' 취 ' - ' 취 ' + FONTDATA_ITEM(412, 216, 216, fontpage_412_216_216), // ' 치 ' - ' 치 ' + FONTDATA_ITEM(412, 232, 232, fontpage_412_232_232), // ' 침 ' - ' 침 ' + FONTDATA_ITEM(412, 244, 244, fontpage_412_244_244), // ' 카 ' - ' 카 ' + FONTDATA_ITEM(414, 156, 156, fontpage_414_156_156), // ' 켜 ' - ' 켜 ' + FONTDATA_ITEM(417, 209, 209, fontpage_417_209_209), // ' 탑 ' - ' 탑 ' + FONTDATA_ITEM(418, 176, 176, fontpage_418_176_176), // ' 터 ' - ' 터 ' + FONTDATA_ITEM(418, 204, 204, fontpage_418_204_204), // ' 테 ' - ' 테 ' + FONTDATA_ITEM(419, 160, 160, fontpage_419_160_160), // ' 토 ' - ' 토 ' + FONTDATA_ITEM(421, 184, 184, fontpage_421_184_184), // ' 트 ' - ' 트 ' + FONTDATA_ITEM(423, 156, 156, fontpage_423_156_156), // ' 펜 ' - ' 펜 ' + FONTDATA_ITEM(426, 132, 132, fontpage_426_132_132), // ' 프 ' - ' 프 ' + FONTDATA_ITEM(426, 216, 216, fontpage_426_216_216), // ' 하 ' - ' 하 ' + FONTDATA_ITEM(426, 233, 233, fontpage_426_233_233), // ' 합 ' - ' 합 ' + FONTDATA_ITEM(428, 200, 200, fontpage_428_200_200), // ' 홈 ' - ' 홈 ' + FONTDATA_ITEM(428, 212, 212, fontpage_428_212_212), // ' 화 ' - ' 화 ' + FONTDATA_ITEM(431, 136, 136, fontpage_431_136_136), // ' 히 ' - ' 히 ' }; diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_pl.h b/Marlin/src/lcd/dogm/fontdata/langdata_pl.h index e9365a69c2..80ed4678aa 100644 --- a/Marlin/src/lcd/dogm/fontdata/langdata_pl.h +++ b/Marlin/src/lcd/dogm/fontdata/langdata_pl.h @@ -35,11 +35,11 @@ const u8g_fntpgm_uint8_t fontpage_2_252_252[30] U8G_FONT_SECTION("fontpage_2_252 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x00,0xF8,0x10,0x20,0x40,0xF8}; static const uxg_fontinfo_t g_fontinfo_pl[] PROGMEM = { - FONTDATA_ITEM(2, 132, 133, fontpage_2_132_133), // 'Ą' -- 'ą' - FONTDATA_ITEM(2, 135, 135, fontpage_2_135_135), // 'ć' -- 'ć' - FONTDATA_ITEM(2, 153, 153, fontpage_2_153_153), // 'ę' -- 'ę' - FONTDATA_ITEM(2, 193, 196, fontpage_2_193_196), // 'Ł' -- 'ń' - FONTDATA_ITEM(2, 218, 219, fontpage_2_218_219), // 'Ś' -- 'ś' - FONTDATA_ITEM(2, 250, 250, fontpage_2_250_250), // 'ź' -- 'ź' - FONTDATA_ITEM(2, 252, 252, fontpage_2_252_252), // 'ż' -- 'ż' + FONTDATA_ITEM(2, 132, 133, fontpage_2_132_133), // ' Ą ' - ' ą ' + FONTDATA_ITEM(2, 135, 135, fontpage_2_135_135), // ' ć ' - ' ć ' + FONTDATA_ITEM(2, 153, 153, fontpage_2_153_153), // ' ę ' - ' ę ' + FONTDATA_ITEM(2, 193, 196, fontpage_2_193_196), // ' Ł ' - ' ń ' + FONTDATA_ITEM(2, 218, 219, fontpage_2_218_219), // ' Ś ' - ' ś ' + FONTDATA_ITEM(2, 250, 250, fontpage_2_250_250), // ' ź ' - ' ź ' + FONTDATA_ITEM(2, 252, 252, fontpage_2_252_252), // ' ż ' - ' ż ' }; diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_ro.h b/Marlin/src/lcd/dogm/fontdata/langdata_ro.h index bdd4795f8b..b4fd6a1703 100644 --- a/Marlin/src/lcd/dogm/fontdata/langdata_ro.h +++ b/Marlin/src/lcd/dogm/fontdata/langdata_ro.h @@ -12,5 +12,5 @@ const u8g_fntpgm_uint8_t fontpage_2_131_131[31] U8G_FONT_SECTION("fontpage_2_131 0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x88,0x70,0x00,0x70,0x08,0x78,0x88,0x78}; static const uxg_fontinfo_t g_fontinfo_ro[] PROGMEM = { - FONTDATA_ITEM(2, 131, 131, fontpage_2_131_131), // 'ă' -- 'ă' + FONTDATA_ITEM(2, 131, 131, fontpage_2_131_131), // ' ă ' - ' ă ' }; diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_ru.h b/Marlin/src/lcd/dogm/fontdata/langdata_ru.h index 3f857a1b3f..e0ef491f48 100644 --- a/Marlin/src/lcd/dogm/fontdata/langdata_ru.h +++ b/Marlin/src/lcd/dogm/fontdata/langdata_ru.h @@ -67,8 +67,8 @@ const u8g_fntpgm_uint8_t fontpage_8_209_209[30] U8G_FONT_SECTION("fontpage_8_209 0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x50,0x00,0x70,0x88,0xF0,0x80,0x70}; static const uxg_fontinfo_t g_fontinfo_ru[] PROGMEM = { - FONTDATA_ITEM(8, 144, 168, fontpage_8_144_168), // 'А' -- 'Ш' - FONTDATA_ITEM(8, 171, 173, fontpage_8_171_173), // 'Ы' -- 'Э' - FONTDATA_ITEM(8, 175, 207, fontpage_8_175_207), // 'Я' -- 'я' - FONTDATA_ITEM(8, 209, 209, fontpage_8_209_209), // 'ё' -- 'ё' + FONTDATA_ITEM(8, 144, 168, fontpage_8_144_168), // ' А ' - ' Ш ' + FONTDATA_ITEM(8, 171, 173, fontpage_8_171_173), // ' Ы ' - ' Э ' + FONTDATA_ITEM(8, 175, 207, fontpage_8_175_207), // ' Я ' - ' я ' + FONTDATA_ITEM(8, 209, 209, fontpage_8_209_209), // ' ё ' - ' ё ' }; diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_sk.h b/Marlin/src/lcd/dogm/fontdata/langdata_sk.h index 4580ce5b7b..03e3954230 100644 --- a/Marlin/src/lcd/dogm/fontdata/langdata_sk.h +++ b/Marlin/src/lcd/dogm/fontdata/langdata_sk.h @@ -40,11 +40,11 @@ const u8g_fntpgm_uint8_t fontpage_2_253_254[47] U8G_FONT_SECTION("fontpage_2_253 0xF8,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0xF8,0x10,0x20,0x40,0xF8}; static const uxg_fontinfo_t g_fontinfo_sk[] PROGMEM = { - FONTDATA_ITEM(2, 140, 143, fontpage_2_140_143), // 'Č' -- 'ď' - FONTDATA_ITEM(2, 186, 186, fontpage_2_186_186), // 'ĺ' -- 'ĺ' - FONTDATA_ITEM(2, 189, 190, fontpage_2_189_190), // 'Ľ' -- 'ľ' - FONTDATA_ITEM(2, 199, 200, fontpage_2_199_200), // 'Ň' -- 'ň' - FONTDATA_ITEM(2, 224, 225, fontpage_2_224_225), // 'Š' -- 'š' - FONTDATA_ITEM(2, 229, 229, fontpage_2_229_229), // 'ť' -- 'ť' - FONTDATA_ITEM(2, 253, 254, fontpage_2_253_254), // 'Ž' -- 'ž' + FONTDATA_ITEM(2, 140, 143, fontpage_2_140_143), // ' Č ' - ' ď ' + FONTDATA_ITEM(2, 186, 186, fontpage_2_186_186), // ' ĺ ' - ' ĺ ' + FONTDATA_ITEM(2, 189, 190, fontpage_2_189_190), // ' Ľ ' - ' ľ ' + FONTDATA_ITEM(2, 199, 200, fontpage_2_199_200), // ' Ň ' - ' ň ' + FONTDATA_ITEM(2, 224, 225, fontpage_2_224_225), // ' Š ' - ' š ' + FONTDATA_ITEM(2, 229, 229, fontpage_2_229_229), // ' ť ' - ' ť ' + FONTDATA_ITEM(2, 253, 254, fontpage_2_253_254), // ' Ž ' - ' ž ' }; diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_test.h b/Marlin/src/lcd/dogm/fontdata/langdata_test.h index da76a31041..e01ca5e483 100644 --- a/Marlin/src/lcd/dogm/fontdata/langdata_test.h +++ b/Marlin/src/lcd/dogm/fontdata/langdata_test.h @@ -226,7 +226,7 @@ const u8g_fntpgm_uint8_t fontpage_97_193_255[822] U8G_FONT_SECTION("fontpage_97_ 0xF8,0x08,0x08,0x08,0x08,0x08}; static const uxg_fontinfo_t g_fontinfo_test[] PROGMEM = { - FONTDATA_ITEM(8, 128, 255, fontpage_8_128_255), // 'Ѐ' -- 'ѿ' - FONTDATA_ITEM(97, 129, 191, fontpage_97_129_191), // 'め' -- 'タ' - FONTDATA_ITEM(97, 193, 255, fontpage_97_193_255), // 'チ' -- 'ヿ' + FONTDATA_ITEM(8, 128, 255, fontpage_8_128_255), // ' Ѐ ' - ' ѿ ' + FONTDATA_ITEM(97, 129, 191, fontpage_97_129_191), // ' め ' - ' タ ' + FONTDATA_ITEM(97, 193, 255, fontpage_97_193_255), // ' チ ' - ' ヿ ' }; diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_tr.h b/Marlin/src/lcd/dogm/fontdata/langdata_tr.h index 0ac02435a5..dab1ddbb1b 100644 --- a/Marlin/src/lcd/dogm/fontdata/langdata_tr.h +++ b/Marlin/src/lcd/dogm/fontdata/langdata_tr.h @@ -22,7 +22,7 @@ const u8g_fntpgm_uint8_t fontpage_2_222_223[45] U8G_FONT_SECTION("fontpage_2_222 0x05,0x07,0x07,0x06,0x00,0xFE,0x78,0x80,0x70,0x08,0xF0,0x10,0x60}; static const uxg_fontinfo_t g_fontinfo_tr[] PROGMEM = { - FONTDATA_ITEM(2, 158, 159, fontpage_2_158_159), // 'Ğ' -- 'ğ' - FONTDATA_ITEM(2, 176, 177, fontpage_2_176_177), // 'İ' -- 'ı' - FONTDATA_ITEM(2, 222, 223, fontpage_2_222_223), // 'Ş' -- 'ş' + FONTDATA_ITEM(2, 158, 159, fontpage_2_158_159), // ' Ğ ' - ' ğ ' + FONTDATA_ITEM(2, 176, 177, fontpage_2_176_177), // ' İ ' - ' ı ' + FONTDATA_ITEM(2, 222, 223, fontpage_2_222_223), // ' Ş ' - ' ş ' }; diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_uk.h b/Marlin/src/lcd/dogm/fontdata/langdata_uk.h index b25e2f6db4..dd692e664a 100644 --- a/Marlin/src/lcd/dogm/fontdata/langdata_uk.h +++ b/Marlin/src/lcd/dogm/fontdata/langdata_uk.h @@ -75,12 +75,12 @@ const u8g_fntpgm_uint8_t fontpage_8_214_215[41] U8G_FONT_SECTION("fontpage_8_214 0x06,0x01,0x00,0xA0,0x00,0xC0,0x40,0x40,0xE0}; static const uxg_fontinfo_t g_fontinfo_uk[] PROGMEM = { - FONTDATA_ITEM(8, 134, 134, fontpage_8_134_134), // 'І' -- 'І' - FONTDATA_ITEM(8, 144, 169, fontpage_8_144_169), // 'А' -- 'Щ' - FONTDATA_ITEM(8, 172, 172, fontpage_8_172_172), // 'Ь' -- 'Ь' - FONTDATA_ITEM(8, 175, 201, fontpage_8_175_201), // 'Я' -- 'щ' - FONTDATA_ITEM(8, 204, 204, fontpage_8_204_204), // 'ь' -- 'ь' - FONTDATA_ITEM(8, 206, 207, fontpage_8_206_207), // 'ю' -- 'я' - FONTDATA_ITEM(8, 212, 212, fontpage_8_212_212), // 'є' -- 'є' - FONTDATA_ITEM(8, 214, 215, fontpage_8_214_215), // 'і' -- 'ї' + FONTDATA_ITEM(8, 134, 134, fontpage_8_134_134), // ' І ' - ' І ' + FONTDATA_ITEM(8, 144, 169, fontpage_8_144_169), // ' А ' - ' Щ ' + FONTDATA_ITEM(8, 172, 172, fontpage_8_172_172), // ' Ь ' - ' Ь ' + FONTDATA_ITEM(8, 175, 201, fontpage_8_175_201), // ' Я ' - ' щ ' + FONTDATA_ITEM(8, 204, 204, fontpage_8_204_204), // ' ь ' - ' ь ' + FONTDATA_ITEM(8, 206, 207, fontpage_8_206_207), // ' ю ' - ' я ' + FONTDATA_ITEM(8, 212, 212, fontpage_8_212_212), // ' є ' - ' є ' + FONTDATA_ITEM(8, 214, 215, fontpage_8_214_215), // ' і ' - ' ї ' }; diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_vi.h b/Marlin/src/lcd/dogm/fontdata/langdata_vi.h index 87c23f06fe..0b63eb7c38 100644 --- a/Marlin/src/lcd/dogm/fontdata/langdata_vi.h +++ b/Marlin/src/lcd/dogm/fontdata/langdata_vi.h @@ -184,50 +184,50 @@ const u8g_fntpgm_uint8_t fontpage_61_241_241[32] U8G_FONT_SECTION("fontpage_61_2 }; static const uxg_fontinfo_t g_fontinfo_vi[] PROGMEM = { - FONTDATA_ITEM(2, 131, 131, fontpage_2_131_131), // 'ă' -- 'ă' - FONTDATA_ITEM(2, 144, 145, fontpage_2_144_145), // 'Đ' -- 'đ' - FONTDATA_ITEM(2, 169, 169, fontpage_2_169_169), // 'ĩ' -- 'ĩ' - FONTDATA_ITEM(3, 161, 161, fontpage_3_161_161), // 'ơ' -- 'ơ' - FONTDATA_ITEM(3, 175, 176, fontpage_3_175_176), // 'Ư' -- 'ư' - FONTDATA_ITEM(6, 131, 131, fontpage_6_131_131), // '̃' -- '̃' - FONTDATA_ITEM(6, 137, 137, fontpage_6_137_137), // '̉' -- '̉' - FONTDATA_ITEM(6, 163, 163, fontpage_6_163_163), // '̣' -- '̣' - FONTDATA_ITEM(6, 192, 193, fontpage_6_192_193), // '̀' -- '́' - FONTDATA_ITEM(61, 161, 161, fontpage_61_161_161), // 'ạ' -- 'ạ' - FONTDATA_ITEM(61, 163, 163, fontpage_61_163_163), // 'ả' -- 'ả' - FONTDATA_ITEM(61, 165, 165, fontpage_61_165_165), // 'ấ' -- 'ấ' - FONTDATA_ITEM(61, 167, 167, fontpage_61_167_167), // 'ầ' -- 'ầ' - FONTDATA_ITEM(61, 169, 169, fontpage_61_169_169), // 'ẩ' -- 'ẩ' - FONTDATA_ITEM(61, 173, 173, fontpage_61_173_173), // 'ậ' -- 'ậ' - FONTDATA_ITEM(61, 175, 175, fontpage_61_175_175), // 'ắ' -- 'ắ' - FONTDATA_ITEM(61, 177, 177, fontpage_61_177_177), // 'ằ' -- 'ằ' - FONTDATA_ITEM(61, 179, 179, fontpage_61_179_179), // 'ẳ' -- 'ẳ' - FONTDATA_ITEM(61, 181, 181, fontpage_61_181_181), // 'ẵ' -- 'ẵ' - FONTDATA_ITEM(61, 183, 183, fontpage_61_183_183), // 'ặ' -- 'ặ' - FONTDATA_ITEM(61, 187, 187, fontpage_61_187_187), // 'ẻ' -- 'ẻ' - FONTDATA_ITEM(61, 191, 191, fontpage_61_191_191), // 'ế' -- 'ế' - FONTDATA_ITEM(61, 193, 193, fontpage_61_193_193), // 'ề' -- 'ề' - FONTDATA_ITEM(61, 195, 195, fontpage_61_195_195), // 'ể' -- 'ể' - FONTDATA_ITEM(61, 199, 199, fontpage_61_199_199), // 'ệ' -- 'ệ' - FONTDATA_ITEM(61, 201, 201, fontpage_61_201_201), // 'ỉ' -- 'ỉ' - FONTDATA_ITEM(61, 203, 203, fontpage_61_203_203), // 'ị' -- 'ị' - FONTDATA_ITEM(61, 205, 205, fontpage_61_205_205), // 'ọ' -- 'ọ' - FONTDATA_ITEM(61, 207, 207, fontpage_61_207_207), // 'ỏ' -- 'ỏ' - FONTDATA_ITEM(61, 209, 209, fontpage_61_209_209), // 'ố' -- 'ố' - FONTDATA_ITEM(61, 211, 211, fontpage_61_211_211), // 'ồ' -- 'ồ' - FONTDATA_ITEM(61, 213, 213, fontpage_61_213_213), // 'ổ' -- 'ổ' - FONTDATA_ITEM(61, 215, 215, fontpage_61_215_215), // 'ỗ' -- 'ỗ' - FONTDATA_ITEM(61, 217, 217, fontpage_61_217_217), // 'ộ' -- 'ộ' - FONTDATA_ITEM(61, 219, 219, fontpage_61_219_219), // 'ớ' -- 'ớ' - FONTDATA_ITEM(61, 221, 221, fontpage_61_221_221), // 'ờ' -- 'ờ' - FONTDATA_ITEM(61, 223, 223, fontpage_61_223_223), // 'ở' -- 'ở' - FONTDATA_ITEM(61, 225, 225, fontpage_61_225_225), // 'ỡ' -- 'ỡ' - FONTDATA_ITEM(61, 227, 227, fontpage_61_227_227), // 'ợ' -- 'ợ' - FONTDATA_ITEM(61, 229, 229, fontpage_61_229_229), // 'ụ' -- 'ụ' - FONTDATA_ITEM(61, 231, 231, fontpage_61_231_231), // 'ủ' -- 'ủ' - FONTDATA_ITEM(61, 233, 233, fontpage_61_233_233), // 'ứ' -- 'ứ' - FONTDATA_ITEM(61, 235, 235, fontpage_61_235_235), // 'ừ' -- 'ừ' - FONTDATA_ITEM(61, 237, 237, fontpage_61_237_237), // 'ử' -- 'ử' - FONTDATA_ITEM(61, 239, 239, fontpage_61_239_239), // 'ữ' -- 'ữ' - FONTDATA_ITEM(61, 241, 241, fontpage_61_241_241), // 'ự' -- 'ự' + FONTDATA_ITEM(2, 131, 131, fontpage_2_131_131), // ' ă ' - ' ă ' + FONTDATA_ITEM(2, 144, 145, fontpage_2_144_145), // ' Đ ' - ' đ ' + FONTDATA_ITEM(2, 169, 169, fontpage_2_169_169), // ' ĩ ' - ' ĩ ' + FONTDATA_ITEM(3, 161, 161, fontpage_3_161_161), // ' ơ ' - ' ơ ' + FONTDATA_ITEM(3, 175, 176, fontpage_3_175_176), // ' Ư ' - ' ư ' + FONTDATA_ITEM(6, 131, 131, fontpage_6_131_131), // ' ̃ ' - ' ̃ ' + FONTDATA_ITEM(6, 137, 137, fontpage_6_137_137), // ' ̉ ' - ' ̉ ' + FONTDATA_ITEM(6, 163, 163, fontpage_6_163_163), // ' ̣ ' - ' ̣ ' + FONTDATA_ITEM(6, 192, 193, fontpage_6_192_193), // ' ̀ ' - ' ́ ' + FONTDATA_ITEM(61, 161, 161, fontpage_61_161_161), // ' ạ ' - ' ạ ' + FONTDATA_ITEM(61, 163, 163, fontpage_61_163_163), // ' ả ' - ' ả ' + FONTDATA_ITEM(61, 165, 165, fontpage_61_165_165), // ' ấ ' - ' ấ ' + FONTDATA_ITEM(61, 167, 167, fontpage_61_167_167), // ' ầ ' - ' ầ ' + FONTDATA_ITEM(61, 169, 169, fontpage_61_169_169), // ' ẩ ' - ' ẩ ' + FONTDATA_ITEM(61, 173, 173, fontpage_61_173_173), // ' ậ ' - ' ậ ' + FONTDATA_ITEM(61, 175, 175, fontpage_61_175_175), // ' ắ ' - ' ắ ' + FONTDATA_ITEM(61, 177, 177, fontpage_61_177_177), // ' ằ ' - ' ằ ' + FONTDATA_ITEM(61, 179, 179, fontpage_61_179_179), // ' ẳ ' - ' ẳ ' + FONTDATA_ITEM(61, 181, 181, fontpage_61_181_181), // ' ẵ ' - ' ẵ ' + FONTDATA_ITEM(61, 183, 183, fontpage_61_183_183), // ' ặ ' - ' ặ ' + FONTDATA_ITEM(61, 187, 187, fontpage_61_187_187), // ' ẻ ' - ' ẻ ' + FONTDATA_ITEM(61, 191, 191, fontpage_61_191_191), // ' ế ' - ' ế ' + FONTDATA_ITEM(61, 193, 193, fontpage_61_193_193), // ' ề ' - ' ề ' + FONTDATA_ITEM(61, 195, 195, fontpage_61_195_195), // ' ể ' - ' ể ' + FONTDATA_ITEM(61, 199, 199, fontpage_61_199_199), // ' ệ ' - ' ệ ' + FONTDATA_ITEM(61, 201, 201, fontpage_61_201_201), // ' ỉ ' - ' ỉ ' + FONTDATA_ITEM(61, 203, 203, fontpage_61_203_203), // ' ị ' - ' ị ' + FONTDATA_ITEM(61, 205, 205, fontpage_61_205_205), // ' ọ ' - ' ọ ' + FONTDATA_ITEM(61, 207, 207, fontpage_61_207_207), // ' ỏ ' - ' ỏ ' + FONTDATA_ITEM(61, 209, 209, fontpage_61_209_209), // ' ố ' - ' ố ' + FONTDATA_ITEM(61, 211, 211, fontpage_61_211_211), // ' ồ ' - ' ồ ' + FONTDATA_ITEM(61, 213, 213, fontpage_61_213_213), // ' ổ ' - ' ổ ' + FONTDATA_ITEM(61, 215, 215, fontpage_61_215_215), // ' ỗ ' - ' ỗ ' + FONTDATA_ITEM(61, 217, 217, fontpage_61_217_217), // ' ộ ' - ' ộ ' + FONTDATA_ITEM(61, 219, 219, fontpage_61_219_219), // ' ớ ' - ' ớ ' + FONTDATA_ITEM(61, 221, 221, fontpage_61_221_221), // ' ờ ' - ' ờ ' + FONTDATA_ITEM(61, 223, 223, fontpage_61_223_223), // ' ở ' - ' ở ' + FONTDATA_ITEM(61, 225, 225, fontpage_61_225_225), // ' ỡ ' - ' ỡ ' + FONTDATA_ITEM(61, 227, 227, fontpage_61_227_227), // ' ợ ' - ' ợ ' + FONTDATA_ITEM(61, 229, 229, fontpage_61_229_229), // ' ụ ' - ' ụ ' + FONTDATA_ITEM(61, 231, 231, fontpage_61_231_231), // ' ủ ' - ' ủ ' + FONTDATA_ITEM(61, 233, 233, fontpage_61_233_233), // ' ứ ' - ' ứ ' + FONTDATA_ITEM(61, 235, 235, fontpage_61_235_235), // ' ừ ' - ' ừ ' + FONTDATA_ITEM(61, 237, 237, fontpage_61_237_237), // ' ử ' - ' ử ' + FONTDATA_ITEM(61, 239, 239, fontpage_61_239_239), // ' ữ ' - ' ữ ' + FONTDATA_ITEM(61, 241, 241, fontpage_61_241_241), // ' ự ' - ' ự ' }; diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_zh_CN.h b/Marlin/src/lcd/dogm/fontdata/langdata_zh_CN.h index 7bedd31384..fa372665e4 100644 --- a/Marlin/src/lcd/dogm/fontdata/langdata_zh_CN.h +++ b/Marlin/src/lcd/dogm/fontdata/langdata_zh_CN.h @@ -1494,366 +1494,366 @@ const u8g_fntpgm_uint8_t fontpage_510_154_154[30] U8G_FONT_SECTION("fontpage_510 0x00,0x02,0x07,0x07,0x0C,0x06,0x01,0xC0,0xC0,0x00,0x00,0x00,0xC0,0xC0}; static const uxg_fontinfo_t g_fontinfo_zh_CN[] PROGMEM = { - FONTDATA_ITEM(69, 191, 191, fontpage_69_191_191), // '⊿' -- '⊿' - FONTDATA_ITEM(156, 128, 128, fontpage_156_128_128), // '一' -- '一' - FONTDATA_ITEM(156, 137, 139, fontpage_156_137_139), // '三' -- '下' - FONTDATA_ITEM(156, 141, 141, fontpage_156_141_141), // '不' -- '不' - FONTDATA_ITEM(156, 147, 147, fontpage_156_147_147), // '专' -- '专' - FONTDATA_ITEM(156, 157, 157, fontpage_156_157_157), // '丝' -- '丝' - FONTDATA_ITEM(156, 170, 170, fontpage_156_170_170), // '个' -- '个' - FONTDATA_ITEM(156, 173, 173, fontpage_156_173_173), // '中' -- '中' - FONTDATA_ITEM(156, 186, 187, fontpage_156_186_187), // '为' -- '主' - FONTDATA_ITEM(156, 201, 201, fontpage_156_201_201), // '义' -- '义' - FONTDATA_ITEM(156, 203, 203, fontpage_156_203_203), // '之' -- '之' - FONTDATA_ITEM(157, 134, 134, fontpage_157_134_134), // '了' -- '了' - FONTDATA_ITEM(157, 140, 140, fontpage_157_140_140), // '二' -- '二' - FONTDATA_ITEM(157, 142, 142, fontpage_157_142_142), // '于' -- '于' - FONTDATA_ITEM(157, 164, 164, fontpage_157_164_164), // '交' -- '交' - FONTDATA_ITEM(157, 174, 174, fontpage_157_174_174), // '亮' -- '亮' - FONTDATA_ITEM(157, 206, 206, fontpage_157_206_206), // '从' -- '从' - FONTDATA_ITEM(157, 228, 229, fontpage_157_228_229), // '令' -- '以' - FONTDATA_ITEM(157, 246, 246, fontpage_157_246_246), // '件' -- '件' - FONTDATA_ITEM(157, 253, 253, fontpage_157_253_253), // '份' -- '份' - FONTDATA_ITEM(158, 145, 145, fontpage_158_145_145), // '休' -- '休' - FONTDATA_ITEM(158, 160, 160, fontpage_158_160_160), // '传' -- '传' - FONTDATA_ITEM(158, 205, 206, fontpage_158_205_206), // '位' -- '低' - FONTDATA_ITEM(158, 211, 211, fontpage_158_211_211), // '体' -- '体' - FONTDATA_ITEM(158, 217, 217, fontpage_158_217_217), // '余' -- '余' - FONTDATA_ITEM(158, 220, 220, fontpage_158_220_220), // '作' -- '作' - FONTDATA_ITEM(158, 255, 255, fontpage_158_255_255), // '使' -- '使' - FONTDATA_ITEM(159, 155, 155, fontpage_159_155_155), // '供' -- '供' - FONTDATA_ITEM(159, 181, 181, fontpage_159_181_181), // '侵' -- '侵' - FONTDATA_ITEM(159, 221, 221, fontpage_159_221_221), // '保' -- '保' - FONTDATA_ITEM(159, 225, 225, fontpage_159_225_225), // '信' -- '信' - FONTDATA_ITEM(160, 188, 188, fontpage_160_188_188), // '值' -- '值' - FONTDATA_ITEM(160, 190, 190, fontpage_160_190_190), // '倾' -- '倾' - FONTDATA_ITEM(160, 207, 207, fontpage_160_207_207), // '偏' -- '偏' - FONTDATA_ITEM(160, 220, 220, fontpage_160_220_220), // '停' -- '停' - FONTDATA_ITEM(161, 168, 168, fontpage_161_168_168), // '储' -- '储' - FONTDATA_ITEM(161, 207, 207, fontpage_161_207_207), // '像' -- '像' - FONTDATA_ITEM(162, 197, 197, fontpage_162_197_197), // '充' -- '充' - FONTDATA_ITEM(162, 200, 201, fontpage_162_200_201), // '先' -- '光' - FONTDATA_ITEM(162, 229, 229, fontpage_162_229_229), // '入' -- '入' - FONTDATA_ITEM(162, 232, 232, fontpage_162_232_232), // '全' -- '全' - FONTDATA_ITEM(162, 241, 241, fontpage_162_241_241), // '共' -- '共' - FONTDATA_ITEM(162, 243, 243, fontpage_162_243_243), // '关' -- '关' - FONTDATA_ITEM(162, 247, 247, fontpage_162_247_247), // '具' -- '具' - FONTDATA_ITEM(163, 151, 151, fontpage_163_151_151), // '冗' -- '冗' - FONTDATA_ITEM(163, 183, 183, fontpage_163_183_183), // '冷' -- '冷' - FONTDATA_ITEM(163, 198, 198, fontpage_163_198_198), // '准' -- '准' - FONTDATA_ITEM(163, 250, 251, fontpage_163_250_251), // '出' -- '击' - FONTDATA_ITEM(164, 134, 135, fontpage_164_134_135), // '分' -- '切' - FONTDATA_ITEM(164, 155, 155, fontpage_164_155_155), // '创' -- '创' - FONTDATA_ITEM(164, 157, 157, fontpage_164_157_157), // '初' -- '初' - FONTDATA_ITEM(164, 171, 171, fontpage_164_171_171), // '别' -- '别' - FONTDATA_ITEM(164, 176, 176, fontpage_164_176_176), // '到' -- '到' - FONTDATA_ITEM(164, 182, 183, fontpage_164_182_183), // '制' -- '刷' - FONTDATA_ITEM(164, 242, 242, fontpage_164_242_242), // '割' -- '割' - FONTDATA_ITEM(165, 155, 155, fontpage_165_155_155), // '力' -- '力' - FONTDATA_ITEM(165, 159, 160, fontpage_165_159_160), // '功' -- '加' - FONTDATA_ITEM(165, 168, 168, fontpage_165_168_168), // '动' -- '动' - FONTDATA_ITEM(166, 150, 150, fontpage_166_150_150), // '化' -- '化' - FONTDATA_ITEM(166, 199, 199, fontpage_166_199_199), // '升' -- '升' - FONTDATA_ITEM(166, 202, 202, fontpage_166_202_202), // '半' -- '半' - FONTDATA_ITEM(166, 207, 207, fontpage_166_207_207), // '协' -- '协' - FONTDATA_ITEM(166, 213, 213, fontpage_166_213_213), // '单' -- '单' - FONTDATA_ITEM(166, 225, 225, fontpage_166_225_225), // '卡' -- '卡' - FONTDATA_ITEM(166, 240, 241, fontpage_166_240_241), // '印' -- '危' - FONTDATA_ITEM(166, 244, 244, fontpage_166_244_244), // '却' -- '却' - FONTDATA_ITEM(166, 248, 248, fontpage_166_248_248), // '卸' -- '卸' - FONTDATA_ITEM(167, 139, 139, fontpage_167_139_139), // '压' -- '压' - FONTDATA_ITEM(167, 159, 159, fontpage_167_159_159), // '原' -- '原' - FONTDATA_ITEM(167, 204, 205, fontpage_167_204_205), // '双' -- '反' - FONTDATA_ITEM(167, 214, 214, fontpage_167_214_214), // '取' -- '取' - FONTDATA_ITEM(167, 216, 216, fontpage_167_216_216), // '变' -- '变' - FONTDATA_ITEM(167, 240, 240, fontpage_167_240_240), // '台' -- '台' - FONTDATA_ITEM(168, 131, 131, fontpage_168_131_131), // '吃' -- '吃' - FONTDATA_ITEM(168, 136, 136, fontpage_168_136_136), // '合' -- '合' - FONTDATA_ITEM(168, 141, 142, fontpage_168_141_142), // '名' -- '后' - FONTDATA_ITEM(168, 145, 145, fontpage_168_145_145), // '向' -- '向' - FONTDATA_ITEM(168, 166, 166, fontpage_168_166_166), // '否' -- '否' - FONTDATA_ITEM(168, 175, 175, fontpage_168_175_175), // '启' -- '启' - FONTDATA_ITEM(168, 202, 202, fontpage_168_202_202), // '告' -- '告' - FONTDATA_ITEM(168, 232, 232, fontpage_168_232_232), // '周' -- '周' - FONTDATA_ITEM(168, 253, 253, fontpage_168_253_253), // '命' -- '命' - FONTDATA_ITEM(169, 140, 140, fontpage_169_140_140), // '和' -- '和' - FONTDATA_ITEM(169, 205, 205, fontpage_169_205_205), // '响' -- '响' - FONTDATA_ITEM(171, 183, 183, fontpage_171_183_183), // '喷' -- '喷' - FONTDATA_ITEM(172, 180, 180, fontpage_172_180_180), // '嘴' -- '嘴' - FONTDATA_ITEM(172, 232, 232, fontpage_172_232_232), // '器' -- '器' - FONTDATA_ITEM(173, 222, 222, fontpage_173_222_222), // '回' -- '回' - FONTDATA_ITEM(173, 224, 224, fontpage_173_224_224), // '因' -- '因' - FONTDATA_ITEM(173, 250, 250, fontpage_173_250_250), // '固' -- '固' - FONTDATA_ITEM(173, 254, 254, fontpage_173_254_254), // '图' -- '图' - FONTDATA_ITEM(174, 168, 168, fontpage_174_168_168), // '在' -- '在' - FONTDATA_ITEM(174, 207, 207, fontpage_174_207_207), // '坏' -- '坏' - FONTDATA_ITEM(174, 215, 215, fontpage_174_215_215), // '块' -- '块' - FONTDATA_ITEM(175, 139, 139, fontpage_175_139_139), // '型' -- '型' - FONTDATA_ITEM(175, 171, 171, fontpage_175_171_171), // '垫' -- '垫' - FONTDATA_ITEM(176, 235, 235, fontpage_176_235_235), // '填' -- '填' - FONTDATA_ITEM(177, 243, 243, fontpage_177_243_243), // '壳' -- '壳' - FONTDATA_ITEM(178, 135, 135, fontpage_178_135_135), // '备' -- '备' - FONTDATA_ITEM(178, 141, 141, fontpage_178_141_141), // '复' -- '复' - FONTDATA_ITEM(178, 150, 150, fontpage_178_150_150), // '外' -- '外' - FONTDATA_ITEM(178, 154, 154, fontpage_178_154_154), // '多' -- '多' - FONTDATA_ITEM(178, 167, 167, fontpage_178_167_167), // '大' -- '大' - FONTDATA_ITEM(178, 169, 170, fontpage_178_169_170), // '天' -- '太' - FONTDATA_ITEM(178, 177, 177, fontpage_178_177_177), // '失' -- '失' - FONTDATA_ITEM(178, 180, 180, fontpage_178_180_180), // '头' -- '头' - FONTDATA_ITEM(178, 253, 253, fontpage_178_253_253), // '好' -- '好' - FONTDATA_ITEM(179, 203, 203, fontpage_179_203_203), // '始' -- '始' - FONTDATA_ITEM(182, 208, 208, fontpage_182_208_208), // '子' -- '子' - FONTDATA_ITEM(182, 216, 216, fontpage_182_216_216), // '存' -- '存' - FONTDATA_ITEM(183, 137, 137, fontpage_183_137_137), // '安' -- '安' - FONTDATA_ITEM(183, 140, 140, fontpage_183_140_140), // '完' -- '完' - FONTDATA_ITEM(183, 154, 154, fontpage_183_154_154), // '定' -- '定' - FONTDATA_ITEM(183, 162, 162, fontpage_183_162_162), // '客' -- '客' - FONTDATA_ITEM(183, 171, 171, fontpage_183_171_171), // '宫' -- '宫' - FONTDATA_ITEM(183, 248, 249, fontpage_183_248_249), // '寸' -- '对' - FONTDATA_ITEM(184, 134, 134, fontpage_184_134_134), // '将' -- '将' - FONTDATA_ITEM(184, 143, 143, fontpage_184_143_143), // '小' -- '小' - FONTDATA_ITEM(184, 177, 177, fontpage_184_177_177), // '就' -- '就' - FONTDATA_ITEM(184, 186, 186, fontpage_184_186_186), // '尺' -- '尺' - FONTDATA_ITEM(184, 207, 207, fontpage_184_207_207), // '屏' -- '屏' - FONTDATA_ITEM(187, 229, 229, fontpage_187_229_229), // '工' -- '工' - FONTDATA_ITEM(187, 238, 238, fontpage_187_238_238), // '差' -- '差' - FONTDATA_ITEM(187, 242, 242, fontpage_187_242_242), // '已' -- '已' - FONTDATA_ITEM(188, 243, 243, fontpage_188_243_243), // '平' -- '平' - FONTDATA_ITEM(188, 246, 246, fontpage_188_246_246), // '并' -- '并' - FONTDATA_ITEM(189, 138, 138, fontpage_189_138_138), // '床' -- '床' - FONTDATA_ITEM(189, 148, 148, fontpage_189_148_148), // '应' -- '应' - FONTDATA_ITEM(189, 159, 159, fontpage_189_159_159), // '废' -- '废' - FONTDATA_ITEM(189, 166, 166, fontpage_189_166_166), // '度' -- '度' - FONTDATA_ITEM(190, 128, 128, fontpage_190_128_128), // '开' -- '开' - FONTDATA_ITEM(190, 143, 143, fontpage_190_143_143), // '式' -- '式' - FONTDATA_ITEM(190, 149, 149, fontpage_190_149_149), // '引' -- '引' - FONTDATA_ITEM(190, 185, 185, fontpage_190_185_185), // '弹' -- '弹' - FONTDATA_ITEM(190, 210, 210, fontpage_190_210_210), // '归' -- '归' - FONTDATA_ITEM(191, 132, 133, fontpage_191_132_133), // '径' -- '待' - FONTDATA_ITEM(191, 170, 170, fontpage_191_170_170), // '循' -- '循' - FONTDATA_ITEM(191, 174, 174, fontpage_191_174_174), // '微' -- '微' - FONTDATA_ITEM(191, 195, 195, fontpage_191_195_195), // '心' -- '心' - FONTDATA_ITEM(191, 253, 253, fontpage_191_253_253), // '忽' -- '忽' - FONTDATA_ITEM(192, 167, 167, fontpage_192_167_167), // '性' -- '性' - FONTDATA_ITEM(192, 187, 187, fontpage_192_187_187), // '总' -- '总' - FONTDATA_ITEM(192, 226, 226, fontpage_192_226_226), // '恢' -- '恢' - FONTDATA_ITEM(192, 239, 239, fontpage_192_239_239), // '息' -- '息' - FONTDATA_ITEM(194, 159, 159, fontpage_194_159_159), // '感' -- '感' - FONTDATA_ITEM(196, 143, 144, fontpage_196_143_144), // '戏' -- '成' - FONTDATA_ITEM(196, 183, 183, fontpage_196_183_183), // '户' -- '户' - FONTDATA_ITEM(196, 192, 192, fontpage_196_192_192), // '所' -- '所' - FONTDATA_ITEM(196, 199, 199, fontpage_196_199_199), // '扇' -- '扇' - FONTDATA_ITEM(196, 203, 203, fontpage_196_203_203), // '手' -- '手' - FONTDATA_ITEM(196, 211, 211, fontpage_196_211_211), // '打' -- '打' - FONTDATA_ITEM(196, 231, 231, fontpage_196_231_231), // '执' -- '执' - FONTDATA_ITEM(196, 249, 249, fontpage_196_249_249), // '批' -- '批' - FONTDATA_ITEM(197, 150, 150, fontpage_197_150_150), // '抖' -- '抖' - FONTDATA_ITEM(197, 165, 165, fontpage_197_165_165), // '报' -- '报' - FONTDATA_ITEM(197, 172, 172, fontpage_197_172_172), // '抬' -- '抬' - FONTDATA_ITEM(197, 189, 189, fontpage_197_189_189), // '抽' -- '抽' - FONTDATA_ITEM(197, 212, 212, fontpage_197_212_212), // '拔' -- '拔' - FONTDATA_ITEM(197, 233, 233, fontpage_197_233_233), // '择' -- '择' - FONTDATA_ITEM(198, 130, 130, fontpage_198_130_130), // '挂' -- '挂' - FONTDATA_ITEM(198, 137, 137, fontpage_198_137_137), // '按' -- '按' - FONTDATA_ITEM(198, 161, 161, fontpage_198_161_161), // '挡' -- '挡' - FONTDATA_ITEM(198, 164, 164, fontpage_198_164_164), // '挤' -- '挤' - FONTDATA_ITEM(198, 223, 223, fontpage_198_223_223), // '损' -- '损' - FONTDATA_ITEM(198, 226, 226, fontpage_198_226_226), // '换' -- '换' - FONTDATA_ITEM(199, 137, 137, fontpage_199_137_137), // '掉' -- '掉' - FONTDATA_ITEM(199, 162, 162, fontpage_199_162_162), // '探' -- '探' - FONTDATA_ITEM(199, 165, 165, fontpage_199_165_165), // '接' -- '接' - FONTDATA_ITEM(199, 167, 167, fontpage_199_167_167), // '控' -- '控' - FONTDATA_ITEM(199, 208, 208, fontpage_199_208_208), // '提' -- '提' - FONTDATA_ITEM(199, 210, 210, fontpage_199_210_210), // '插' -- '插' - FONTDATA_ITEM(202, 182, 182, fontpage_202_182_182), // '收' -- '收' - FONTDATA_ITEM(202, 190, 190, fontpage_202_190_190), // '放' -- '放' - FONTDATA_ITEM(202, 240, 240, fontpage_202_240_240), // '数' -- '数' - FONTDATA_ITEM(202, 242, 242, fontpage_202_242_242), // '敲' -- '敲' - FONTDATA_ITEM(202, 244, 244, fontpage_202_244_244), // '整' -- '整' - FONTDATA_ITEM(203, 153, 153, fontpage_203_153_153), // '料' -- '料' - FONTDATA_ITEM(203, 156, 156, fontpage_203_156_156), // '斜' -- '斜' - FONTDATA_ITEM(203, 173, 173, fontpage_203_173_173), // '断' -- '断' - FONTDATA_ITEM(203, 176, 176, fontpage_203_176_176), // '新' -- '新' - FONTDATA_ITEM(203, 185, 185, fontpage_203_185_185), // '方' -- '方' - FONTDATA_ITEM(203, 224, 224, fontpage_203_224_224), // '无' -- '无' - FONTDATA_ITEM(203, 246, 246, fontpage_203_246_246), // '时' -- '时' - FONTDATA_ITEM(204, 142, 142, fontpage_204_142_142), // '明' -- '明' - FONTDATA_ITEM(204, 175, 175, fontpage_204_175_175), // '是' -- '是' - FONTDATA_ITEM(205, 130, 130, fontpage_205_130_130), // '暂' -- '暂' - FONTDATA_ITEM(205, 171, 171, fontpage_205_171_171), // '暫' -- '暫' - FONTDATA_ITEM(205, 244, 244, fontpage_205_244_244), // '更' -- '更' - FONTDATA_ITEM(206, 128, 128, fontpage_206_128_128), // '最' -- '最' - FONTDATA_ITEM(206, 137, 137, fontpage_206_137_137), // '有' -- '有' - FONTDATA_ITEM(206, 159, 159, fontpage_206_159_159), // '期' -- '期' - FONTDATA_ITEM(206, 172, 172, fontpage_206_172_172), // '本' -- '本' - FONTDATA_ITEM(206, 186, 186, fontpage_206_186_186), // '机' -- '机' - FONTDATA_ITEM(206, 192, 192, fontpage_206_192_192), // '杀' -- '杀' - FONTDATA_ITEM(206, 223, 223, fontpage_206_223_223), // '束' -- '束' - FONTDATA_ITEM(206, 225, 225, fontpage_206_225_225), // '条' -- '条' - FONTDATA_ITEM(206, 229, 229, fontpage_206_229_229), // '来' -- '来' - FONTDATA_ITEM(206, 255, 255, fontpage_206_255_255), // '板' -- '板' - FONTDATA_ITEM(207, 151, 151, fontpage_207_151_151), // '林' -- '林' - FONTDATA_ITEM(207, 241, 241, fontpage_207_241_241), // '柱' -- '柱' - FONTDATA_ITEM(208, 161, 161, fontpage_208_161_161), // '校' -- '校' - FONTDATA_ITEM(208, 188, 188, fontpage_208_188_188), // '格' -- '格' - FONTDATA_ITEM(209, 175, 175, fontpage_209_175_175), // '梯' -- '梯' - FONTDATA_ITEM(209, 192, 192, fontpage_209_192_192), // '检' -- '检' - FONTDATA_ITEM(211, 253, 253, fontpage_211_253_253), // '槽' -- '槽' - FONTDATA_ITEM(212, 161, 161, fontpage_212_161_161), // '模' -- '模' - FONTDATA_ITEM(212, 217, 217, fontpage_212_217_217), // '橙' -- '橙' - FONTDATA_ITEM(214, 226, 227, fontpage_214_226_227), // '止' -- '正' - FONTDATA_ITEM(214, 229, 229, fontpage_214_229_229), // '步' -- '步' - FONTDATA_ITEM(215, 212, 212, fontpage_215_212_212), // '比' -- '比' - FONTDATA_ITEM(217, 161, 161, fontpage_217_161_161), // '没' -- '没' - FONTDATA_ITEM(217, 226, 226, fontpage_217_226_226), // '波' -- '波' - FONTDATA_ITEM(217, 232, 232, fontpage_217_232_232), // '注' -- '注' - FONTDATA_ITEM(218, 151, 151, fontpage_218_151_151), // '洗' -- '洗' - FONTDATA_ITEM(218, 187, 187, fontpage_218_187_187), // '活' -- '活' - FONTDATA_ITEM(218, 193, 193, fontpage_218_193_193), // '流' -- '流' - FONTDATA_ITEM(218, 203, 203, fontpage_218_203_203), // '测' -- '测' - FONTDATA_ITEM(219, 136, 136, fontpage_219_136_136), // '消' -- '消' - FONTDATA_ITEM(219, 225, 225, fontpage_219_225_225), // '淡' -- '淡' - FONTDATA_ITEM(219, 247, 247, fontpage_219_247_247), // '混' -- '混' - FONTDATA_ITEM(220, 133, 133, fontpage_220_133_133), // '清' -- '清' - FONTDATA_ITEM(220, 169, 169, fontpage_220_169_169), // '温' -- '温' - FONTDATA_ITEM(220, 184, 184, fontpage_220_184_184), // '游' -- '游' - FONTDATA_ITEM(221, 144, 144, fontpage_221_144_144), // '源' -- '源' - FONTDATA_ITEM(221, 162, 162, fontpage_221_162_162), // '溢' -- '溢' - FONTDATA_ITEM(221, 209, 209, fontpage_221_209_209), // '滑' -- '滑' - FONTDATA_ITEM(222, 143, 143, fontpage_222_143_143), // '漏' -- '漏' - FONTDATA_ITEM(223, 192, 192, fontpage_223_192_192), // '激' -- '激' - FONTDATA_ITEM(224, 239, 239, fontpage_224_239_239), // '灯' -- '灯' - FONTDATA_ITEM(224, 245, 245, fontpage_224_245_245), // '灵' -- '灵' - FONTDATA_ITEM(225, 185, 185, fontpage_225_185_185), // '点' -- '点' - FONTDATA_ITEM(225, 237, 237, fontpage_225_237_237), // '热' -- '热' - FONTDATA_ITEM(228, 199, 200, fontpage_228_199_200), // '片' -- '版' - FONTDATA_ITEM(228, 233, 233, fontpage_228_233_233), // '物' -- '物' - FONTDATA_ITEM(228, 249, 249, fontpage_228_249_249), // '特' -- '特' - FONTDATA_ITEM(231, 135, 135, fontpage_231_135_135), // '率' -- '率' - FONTDATA_ITEM(231, 175, 175, fontpage_231_175_175), // '环' -- '环' - FONTDATA_ITEM(234, 168, 168, fontpage_234_168_168), // '用' -- '用' - FONTDATA_ITEM(234, 181, 181, fontpage_234_181_181), // '电' -- '电' - FONTDATA_ITEM(234, 204, 204, fontpage_234_204_204), // '界' -- '界' - FONTDATA_ITEM(234, 229, 229, fontpage_234_229_229), // '略' -- '略' - FONTDATA_ITEM(236, 253, 253, fontpage_236_253_253), // '白' -- '白' - FONTDATA_ITEM(237, 132, 132, fontpage_237_132_132), // '的' -- '的' - FONTDATA_ITEM(237, 209, 209, fontpage_237_209_209), // '监' -- '监' - FONTDATA_ITEM(237, 216, 216, fontpage_237_216_216), // '盘' -- '盘' - FONTDATA_ITEM(237, 244, 244, fontpage_237_244_244), // '直' -- '直' - FONTDATA_ITEM(238, 129, 129, fontpage_238_129_129), // '省' -- '省' - FONTDATA_ITEM(238, 160, 160, fontpage_238_160_160), // '眠' -- '眠' - FONTDATA_ITEM(240, 238, 238, fontpage_240_238_238), // '确' -- '确' - FONTDATA_ITEM(243, 187, 187, fontpage_243_187_187), // '离' -- '离' - FONTDATA_ITEM(243, 251, 251, fontpage_243_251_251), // '移' -- '移' - FONTDATA_ITEM(244, 250, 250, fontpage_244_250_250), // '空' -- '空' - FONTDATA_ITEM(245, 239, 239, fontpage_245_239_239), // '端' -- '端' - FONTDATA_ITEM(246, 172, 172, fontpage_246_172_172), // '第' -- '第' - FONTDATA_ITEM(246, 201, 201, fontpage_246_201_201), // '等' -- '等' - FONTDATA_ITEM(247, 177, 177, fontpage_247_177_177), // '箱' -- '箱' - FONTDATA_ITEM(248, 251, 251, fontpage_248_251_251), // '类' -- '类' - FONTDATA_ITEM(249, 190, 190, fontpage_249_190_190), // '精' -- '精' - FONTDATA_ITEM(250, 162, 162, fontpage_250_162_162), // '索' -- '索' - FONTDATA_ITEM(250, 171, 171, fontpage_250_171_171), // '紫' -- '紫' - FONTDATA_ITEM(253, 162, 162, fontpage_253_162_162), // '红' -- '红' - FONTDATA_ITEM(253, 167, 167, fontpage_253_167_167), // '级' -- '级' - FONTDATA_ITEM(253, 191, 191, fontpage_253_191_191), // '线' -- '线' - FONTDATA_ITEM(253, 198, 198, fontpage_253_198_198), // '细' -- '细' - FONTDATA_ITEM(253, 200, 200, fontpage_253_200_200), // '终' -- '终' - FONTDATA_ITEM(253, 211, 211, fontpage_253_211_211), // '结' -- '结' - FONTDATA_ITEM(253, 217, 217, fontpage_253_217_217), // '给' -- '给' - FONTDATA_ITEM(253, 223, 223, fontpage_253_223_223), // '统' -- '统' - FONTDATA_ITEM(253, 231, 231, fontpage_253_231_231), // '继' -- '继' - FONTDATA_ITEM(253, 234, 234, fontpage_253_234_234), // '绪' -- '绪' - FONTDATA_ITEM(253, 237, 237, fontpage_253_237_237), // '续' -- '续' - FONTDATA_ITEM(253, 255, 255, fontpage_253_255_255), // '绿' -- '绿' - FONTDATA_ITEM(254, 150, 150, fontpage_254_150_150), // '编' -- '编' - FONTDATA_ITEM(254, 186, 186, fontpage_254_186_186), // '缺' -- '缺' - FONTDATA_ITEM(254, 209, 209, fontpage_254_209_209), // '网' -- '网' - FONTDATA_ITEM(254, 238, 238, fontpage_254_238_238), // '置' -- '置' - FONTDATA_ITEM(254, 242, 242, fontpage_254_242_242), // '署' -- '署' - FONTDATA_ITEM(256, 133, 133, fontpage_256_133_133), // '者' -- '者' - FONTDATA_ITEM(256, 234, 234, fontpage_256_234_234), // '聪' -- '聪' - FONTDATA_ITEM(257, 253, 253, fontpage_257_253_253), // '能' -- '能' - FONTDATA_ITEM(259, 234, 234, fontpage_259_234_234), // '自' -- '自' - FONTDATA_ITEM(259, 243, 243, fontpage_259_243_243), // '至' -- '至' - FONTDATA_ITEM(263, 220, 220, fontpage_263_220_220), // '菜' -- '菜' - FONTDATA_ITEM(265, 221, 221, fontpage_265_221_221), // '蓝' -- '蓝' - FONTDATA_ITEM(269, 199, 199, fontpage_269_199_199), // '蛇' -- '蛇' - FONTDATA_ITEM(272, 204, 204, fontpage_272_204_204), // '行' -- '行' - FONTDATA_ITEM(273, 171, 171, fontpage_273_171_171), // '被' -- '被' - FONTDATA_ITEM(273, 197, 197, fontpage_273_197_197), // '装' -- '装' - FONTDATA_ITEM(275, 129, 129, fontpage_275_129_129), // '要' -- '要' - FONTDATA_ITEM(275, 210, 210, fontpage_275_210_210), // '角' -- '角' - FONTDATA_ITEM(279, 161, 161, fontpage_279_161_161), // '计' -- '计' - FONTDATA_ITEM(279, 174, 174, fontpage_279_174_174), // '议' -- '议' - FONTDATA_ITEM(279, 190, 190, fontpage_279_190_190), // '设' -- '设' - FONTDATA_ITEM(279, 213, 213, fontpage_279_213_213), // '试' -- '试' - FONTDATA_ITEM(279, 239, 239, fontpage_279_239_239), // '误' -- '误' - FONTDATA_ITEM(279, 247, 247, fontpage_279_247_247), // '请' -- '请' - FONTDATA_ITEM(279, 251, 251, fontpage_279_251_251), // '读' -- '读' - FONTDATA_ITEM(280, 131, 131, fontpage_280_131_131), // '调' -- '调' - FONTDATA_ITEM(282, 165, 165, fontpage_282_165_165), // '败' -- '败' - FONTDATA_ITEM(282, 170, 170, fontpage_282_170_170), // '贪' -- '贪' - FONTDATA_ITEM(282, 247, 247, fontpage_282_247_247), // '起' -- '起' - FONTDATA_ITEM(283, 133, 133, fontpage_283_133_133), // '超' -- '超' - FONTDATA_ITEM(283, 138, 138, fontpage_283_138_138), // '越' -- '越' - FONTDATA_ITEM(283, 221, 221, fontpage_283_221_221), // '距' -- '距' - FONTDATA_ITEM(286, 236, 236, fontpage_286_236_236), // '转' -- '转' - FONTDATA_ITEM(286, 239, 239, fontpage_286_239_239), // '软' -- '软' - FONTDATA_ITEM(286, 244, 244, fontpage_286_244_244), // '轴' -- '轴' - FONTDATA_ITEM(286, 253, 253, fontpage_286_253_253), // '载' -- '载' - FONTDATA_ITEM(287, 145, 145, fontpage_287_145_145), // '辑' -- '辑' - FONTDATA_ITEM(287, 147, 147, fontpage_287_147_147), // '输' -- '输' - FONTDATA_ITEM(287, 185, 185, fontpage_287_185_185), // '边' -- '边' - FONTDATA_ITEM(287, 193, 193, fontpage_287_193_193), // '迁' -- '迁' - FONTDATA_ITEM(287, 208, 209, fontpage_287_208_209), // '运' -- '近' - FONTDATA_ITEM(287, 212, 212, fontpage_287_212_212), // '返' -- '返' - FONTDATA_ITEM(287, 216, 216, fontpage_287_216_216), // '还' -- '还' - FONTDATA_ITEM(287, 219, 219, fontpage_287_219_219), // '进' -- '进' - FONTDATA_ITEM(287, 222, 222, fontpage_287_222_222), // '连' -- '连' - FONTDATA_ITEM(287, 247, 247, fontpage_287_247_247), // '迷' -- '迷' - FONTDATA_ITEM(288, 128, 128, fontpage_288_128_128), // '退' -- '退' - FONTDATA_ITEM(288, 137, 137, fontpage_288_137_137), // '选' -- '选' - FONTDATA_ITEM(288, 144, 144, fontpage_288_144_144), // '逐' -- '逐' - FONTDATA_ITEM(288, 159, 159, fontpage_288_159_159), // '速' -- '速' - FONTDATA_ITEM(289, 232, 232, fontpage_289_232_232), // '部' -- '部' - FONTDATA_ITEM(290, 205, 205, fontpage_290_205_205), // '配' -- '配' - FONTDATA_ITEM(291, 202, 202, fontpage_291_202_202), // '释' -- '释' - FONTDATA_ITEM(291, 205, 205, fontpage_291_205_205), // '重' -- '重' - FONTDATA_ITEM(291, 207, 207, fontpage_291_207_207), // '量' -- '量' - FONTDATA_ITEM(297, 136, 136, fontpage_297_136_136), // '针' -- '针' - FONTDATA_ITEM(297, 174, 174, fontpage_297_174_174), // '钮' -- '钮' - FONTDATA_ITEM(298, 153, 153, fontpage_298_153_153), // '错' -- '错' - FONTDATA_ITEM(298, 220, 220, fontpage_298_220_220), // '镜' -- '镜' - FONTDATA_ITEM(298, 255, 255, fontpage_298_255_255), // '长' -- '长' - FONTDATA_ITEM(299, 237, 237, fontpage_299_237_237), // '闭' -- '闭' - FONTDATA_ITEM(299, 242, 242, fontpage_299_242_242), // '闲' -- '闲' - FONTDATA_ITEM(299, 244, 244, fontpage_299_244_244), // '间' -- '间' - FONTDATA_ITEM(300, 136, 136, fontpage_300_136_136), // '阈' -- '阈' - FONTDATA_ITEM(300, 205, 205, fontpage_300_205_205), // '降' -- '降' - FONTDATA_ITEM(300, 208, 208, fontpage_300_208_208), // '限' -- '限' - FONTDATA_ITEM(300, 228, 228, fontpage_300_228_228), // '除' -- '除' - FONTDATA_ITEM(300, 233, 233, fontpage_300_233_233), // '险' -- '险' - FONTDATA_ITEM(301, 246, 246, fontpage_301_246_246), // '零' -- '零' - FONTDATA_ITEM(302, 128, 128, fontpage_302_128_128), // '需' -- '需' - FONTDATA_ITEM(302, 210, 210, fontpage_302_210_210), // '青' -- '青' - FONTDATA_ITEM(302, 222, 222, fontpage_302_222_222), // '非' -- '非' - FONTDATA_ITEM(302, 224, 224, fontpage_302_224_224), // '靠' -- '靠' - FONTDATA_ITEM(302, 226, 226, fontpage_302_226_226), // '面' -- '面' - FONTDATA_ITEM(304, 245, 245, fontpage_304_245_245), // '页' -- '页' - FONTDATA_ITEM(304, 249, 249, fontpage_304_249_249), // '项' -- '项' - FONTDATA_ITEM(305, 132, 132, fontpage_305_132_132), // '预' -- '预' - FONTDATA_ITEM(305, 145, 145, fontpage_305_145_145), // '频' -- '频' - FONTDATA_ITEM(305, 157, 157, fontpage_305_157_157), // '额' -- '额' - FONTDATA_ITEM(305, 206, 206, fontpage_305_206_206), // '风' -- '风' - FONTDATA_ITEM(306, 241, 241, fontpage_306_241_241), // '饱' -- '饱' - FONTDATA_ITEM(307, 150, 150, fontpage_307_150_150), // '首' -- '首' - FONTDATA_ITEM(308, 236, 236, fontpage_308_236_236), // '马' -- '马' - FONTDATA_ITEM(308, 241, 241, fontpage_308_241_241), // '驱' -- '驱' - FONTDATA_ITEM(309, 140, 140, fontpage_309_140_140), // '验' -- '验' - FONTDATA_ITEM(309, 216, 216, fontpage_309_216_216), // '高' -- '高' - FONTDATA_ITEM(317, 196, 196, fontpage_317_196_196), // '黄' -- '黄' - FONTDATA_ITEM(317, 222, 222, fontpage_317_222_222), // '點' -- '點' - FONTDATA_ITEM(318, 208, 208, fontpage_318_208_208), // '齐' -- '齐' - FONTDATA_ITEM(510, 154, 154, fontpage_510_154_154), // ':' -- ':' + FONTDATA_ITEM(69, 191, 191, fontpage_69_191_191), // ' ⊿ ' - ' ⊿ ' + FONTDATA_ITEM(156, 128, 128, fontpage_156_128_128), // ' 一 ' - ' 一 ' + FONTDATA_ITEM(156, 137, 139, fontpage_156_137_139), // ' 三 ' - ' 下 ' + FONTDATA_ITEM(156, 141, 141, fontpage_156_141_141), // ' 不 ' - ' 不 ' + FONTDATA_ITEM(156, 147, 147, fontpage_156_147_147), // ' 专 ' - ' 专 ' + FONTDATA_ITEM(156, 157, 157, fontpage_156_157_157), // ' 丝 ' - ' 丝 ' + FONTDATA_ITEM(156, 170, 170, fontpage_156_170_170), // ' 个 ' - ' 个 ' + FONTDATA_ITEM(156, 173, 173, fontpage_156_173_173), // ' 中 ' - ' 中 ' + FONTDATA_ITEM(156, 186, 187, fontpage_156_186_187), // ' 为 ' - ' 主 ' + FONTDATA_ITEM(156, 201, 201, fontpage_156_201_201), // ' 义 ' - ' 义 ' + FONTDATA_ITEM(156, 203, 203, fontpage_156_203_203), // ' 之 ' - ' 之 ' + FONTDATA_ITEM(157, 134, 134, fontpage_157_134_134), // ' 了 ' - ' 了 ' + FONTDATA_ITEM(157, 140, 140, fontpage_157_140_140), // ' 二 ' - ' 二 ' + FONTDATA_ITEM(157, 142, 142, fontpage_157_142_142), // ' 于 ' - ' 于 ' + FONTDATA_ITEM(157, 164, 164, fontpage_157_164_164), // ' 交 ' - ' 交 ' + FONTDATA_ITEM(157, 174, 174, fontpage_157_174_174), // ' 亮 ' - ' 亮 ' + FONTDATA_ITEM(157, 206, 206, fontpage_157_206_206), // ' 从 ' - ' 从 ' + FONTDATA_ITEM(157, 228, 229, fontpage_157_228_229), // ' 令 ' - ' 以 ' + FONTDATA_ITEM(157, 246, 246, fontpage_157_246_246), // ' 件 ' - ' 件 ' + FONTDATA_ITEM(157, 253, 253, fontpage_157_253_253), // ' 份 ' - ' 份 ' + FONTDATA_ITEM(158, 145, 145, fontpage_158_145_145), // ' 休 ' - ' 休 ' + FONTDATA_ITEM(158, 160, 160, fontpage_158_160_160), // ' 传 ' - ' 传 ' + FONTDATA_ITEM(158, 205, 206, fontpage_158_205_206), // ' 位 ' - ' 低 ' + FONTDATA_ITEM(158, 211, 211, fontpage_158_211_211), // ' 体 ' - ' 体 ' + FONTDATA_ITEM(158, 217, 217, fontpage_158_217_217), // ' 余 ' - ' 余 ' + FONTDATA_ITEM(158, 220, 220, fontpage_158_220_220), // ' 作 ' - ' 作 ' + FONTDATA_ITEM(158, 255, 255, fontpage_158_255_255), // ' 使 ' - ' 使 ' + FONTDATA_ITEM(159, 155, 155, fontpage_159_155_155), // ' 供 ' - ' 供 ' + FONTDATA_ITEM(159, 181, 181, fontpage_159_181_181), // ' 侵 ' - ' 侵 ' + FONTDATA_ITEM(159, 221, 221, fontpage_159_221_221), // ' 保 ' - ' 保 ' + FONTDATA_ITEM(159, 225, 225, fontpage_159_225_225), // ' 信 ' - ' 信 ' + FONTDATA_ITEM(160, 188, 188, fontpage_160_188_188), // ' 值 ' - ' 值 ' + FONTDATA_ITEM(160, 190, 190, fontpage_160_190_190), // ' 倾 ' - ' 倾 ' + FONTDATA_ITEM(160, 207, 207, fontpage_160_207_207), // ' 偏 ' - ' 偏 ' + FONTDATA_ITEM(160, 220, 220, fontpage_160_220_220), // ' 停 ' - ' 停 ' + FONTDATA_ITEM(161, 168, 168, fontpage_161_168_168), // ' 储 ' - ' 储 ' + FONTDATA_ITEM(161, 207, 207, fontpage_161_207_207), // ' 像 ' - ' 像 ' + FONTDATA_ITEM(162, 197, 197, fontpage_162_197_197), // ' 充 ' - ' 充 ' + FONTDATA_ITEM(162, 200, 201, fontpage_162_200_201), // ' 先 ' - ' 光 ' + FONTDATA_ITEM(162, 229, 229, fontpage_162_229_229), // ' 入 ' - ' 入 ' + FONTDATA_ITEM(162, 232, 232, fontpage_162_232_232), // ' 全 ' - ' 全 ' + FONTDATA_ITEM(162, 241, 241, fontpage_162_241_241), // ' 共 ' - ' 共 ' + FONTDATA_ITEM(162, 243, 243, fontpage_162_243_243), // ' 关 ' - ' 关 ' + FONTDATA_ITEM(162, 247, 247, fontpage_162_247_247), // ' 具 ' - ' 具 ' + FONTDATA_ITEM(163, 151, 151, fontpage_163_151_151), // ' 冗 ' - ' 冗 ' + FONTDATA_ITEM(163, 183, 183, fontpage_163_183_183), // ' 冷 ' - ' 冷 ' + FONTDATA_ITEM(163, 198, 198, fontpage_163_198_198), // ' 准 ' - ' 准 ' + FONTDATA_ITEM(163, 250, 251, fontpage_163_250_251), // ' 出 ' - ' 击 ' + FONTDATA_ITEM(164, 134, 135, fontpage_164_134_135), // ' 分 ' - ' 切 ' + FONTDATA_ITEM(164, 155, 155, fontpage_164_155_155), // ' 创 ' - ' 创 ' + FONTDATA_ITEM(164, 157, 157, fontpage_164_157_157), // ' 初 ' - ' 初 ' + FONTDATA_ITEM(164, 171, 171, fontpage_164_171_171), // ' 别 ' - ' 别 ' + FONTDATA_ITEM(164, 176, 176, fontpage_164_176_176), // ' 到 ' - ' 到 ' + FONTDATA_ITEM(164, 182, 183, fontpage_164_182_183), // ' 制 ' - ' 刷 ' + FONTDATA_ITEM(164, 242, 242, fontpage_164_242_242), // ' 割 ' - ' 割 ' + FONTDATA_ITEM(165, 155, 155, fontpage_165_155_155), // ' 力 ' - ' 力 ' + FONTDATA_ITEM(165, 159, 160, fontpage_165_159_160), // ' 功 ' - ' 加 ' + FONTDATA_ITEM(165, 168, 168, fontpage_165_168_168), // ' 动 ' - ' 动 ' + FONTDATA_ITEM(166, 150, 150, fontpage_166_150_150), // ' 化 ' - ' 化 ' + FONTDATA_ITEM(166, 199, 199, fontpage_166_199_199), // ' 升 ' - ' 升 ' + FONTDATA_ITEM(166, 202, 202, fontpage_166_202_202), // ' 半 ' - ' 半 ' + FONTDATA_ITEM(166, 207, 207, fontpage_166_207_207), // ' 协 ' - ' 协 ' + FONTDATA_ITEM(166, 213, 213, fontpage_166_213_213), // ' 单 ' - ' 单 ' + FONTDATA_ITEM(166, 225, 225, fontpage_166_225_225), // ' 卡 ' - ' 卡 ' + FONTDATA_ITEM(166, 240, 241, fontpage_166_240_241), // ' 印 ' - ' 危 ' + FONTDATA_ITEM(166, 244, 244, fontpage_166_244_244), // ' 却 ' - ' 却 ' + FONTDATA_ITEM(166, 248, 248, fontpage_166_248_248), // ' 卸 ' - ' 卸 ' + FONTDATA_ITEM(167, 139, 139, fontpage_167_139_139), // ' 压 ' - ' 压 ' + FONTDATA_ITEM(167, 159, 159, fontpage_167_159_159), // ' 原 ' - ' 原 ' + FONTDATA_ITEM(167, 204, 205, fontpage_167_204_205), // ' 双 ' - ' 反 ' + FONTDATA_ITEM(167, 214, 214, fontpage_167_214_214), // ' 取 ' - ' 取 ' + FONTDATA_ITEM(167, 216, 216, fontpage_167_216_216), // ' 变 ' - ' 变 ' + FONTDATA_ITEM(167, 240, 240, fontpage_167_240_240), // ' 台 ' - ' 台 ' + FONTDATA_ITEM(168, 131, 131, fontpage_168_131_131), // ' 吃 ' - ' 吃 ' + FONTDATA_ITEM(168, 136, 136, fontpage_168_136_136), // ' 合 ' - ' 合 ' + FONTDATA_ITEM(168, 141, 142, fontpage_168_141_142), // ' 名 ' - ' 后 ' + FONTDATA_ITEM(168, 145, 145, fontpage_168_145_145), // ' 向 ' - ' 向 ' + FONTDATA_ITEM(168, 166, 166, fontpage_168_166_166), // ' 否 ' - ' 否 ' + FONTDATA_ITEM(168, 175, 175, fontpage_168_175_175), // ' 启 ' - ' 启 ' + FONTDATA_ITEM(168, 202, 202, fontpage_168_202_202), // ' 告 ' - ' 告 ' + FONTDATA_ITEM(168, 232, 232, fontpage_168_232_232), // ' 周 ' - ' 周 ' + FONTDATA_ITEM(168, 253, 253, fontpage_168_253_253), // ' 命 ' - ' 命 ' + FONTDATA_ITEM(169, 140, 140, fontpage_169_140_140), // ' 和 ' - ' 和 ' + FONTDATA_ITEM(169, 205, 205, fontpage_169_205_205), // ' 响 ' - ' 响 ' + FONTDATA_ITEM(171, 183, 183, fontpage_171_183_183), // ' 喷 ' - ' 喷 ' + FONTDATA_ITEM(172, 180, 180, fontpage_172_180_180), // ' 嘴 ' - ' 嘴 ' + FONTDATA_ITEM(172, 232, 232, fontpage_172_232_232), // ' 器 ' - ' 器 ' + FONTDATA_ITEM(173, 222, 222, fontpage_173_222_222), // ' 回 ' - ' 回 ' + FONTDATA_ITEM(173, 224, 224, fontpage_173_224_224), // ' 因 ' - ' 因 ' + FONTDATA_ITEM(173, 250, 250, fontpage_173_250_250), // ' 固 ' - ' 固 ' + FONTDATA_ITEM(173, 254, 254, fontpage_173_254_254), // ' 图 ' - ' 图 ' + FONTDATA_ITEM(174, 168, 168, fontpage_174_168_168), // ' 在 ' - ' 在 ' + FONTDATA_ITEM(174, 207, 207, fontpage_174_207_207), // ' 坏 ' - ' 坏 ' + FONTDATA_ITEM(174, 215, 215, fontpage_174_215_215), // ' 块 ' - ' 块 ' + FONTDATA_ITEM(175, 139, 139, fontpage_175_139_139), // ' 型 ' - ' 型 ' + FONTDATA_ITEM(175, 171, 171, fontpage_175_171_171), // ' 垫 ' - ' 垫 ' + FONTDATA_ITEM(176, 235, 235, fontpage_176_235_235), // ' 填 ' - ' 填 ' + FONTDATA_ITEM(177, 243, 243, fontpage_177_243_243), // ' 壳 ' - ' 壳 ' + FONTDATA_ITEM(178, 135, 135, fontpage_178_135_135), // ' 备 ' - ' 备 ' + FONTDATA_ITEM(178, 141, 141, fontpage_178_141_141), // ' 复 ' - ' 复 ' + FONTDATA_ITEM(178, 150, 150, fontpage_178_150_150), // ' 外 ' - ' 外 ' + FONTDATA_ITEM(178, 154, 154, fontpage_178_154_154), // ' 多 ' - ' 多 ' + FONTDATA_ITEM(178, 167, 167, fontpage_178_167_167), // ' 大 ' - ' 大 ' + FONTDATA_ITEM(178, 169, 170, fontpage_178_169_170), // ' 天 ' - ' 太 ' + FONTDATA_ITEM(178, 177, 177, fontpage_178_177_177), // ' 失 ' - ' 失 ' + FONTDATA_ITEM(178, 180, 180, fontpage_178_180_180), // ' 头 ' - ' 头 ' + FONTDATA_ITEM(178, 253, 253, fontpage_178_253_253), // ' 好 ' - ' 好 ' + FONTDATA_ITEM(179, 203, 203, fontpage_179_203_203), // ' 始 ' - ' 始 ' + FONTDATA_ITEM(182, 208, 208, fontpage_182_208_208), // ' 子 ' - ' 子 ' + FONTDATA_ITEM(182, 216, 216, fontpage_182_216_216), // ' 存 ' - ' 存 ' + FONTDATA_ITEM(183, 137, 137, fontpage_183_137_137), // ' 安 ' - ' 安 ' + FONTDATA_ITEM(183, 140, 140, fontpage_183_140_140), // ' 完 ' - ' 完 ' + FONTDATA_ITEM(183, 154, 154, fontpage_183_154_154), // ' 定 ' - ' 定 ' + FONTDATA_ITEM(183, 162, 162, fontpage_183_162_162), // ' 客 ' - ' 客 ' + FONTDATA_ITEM(183, 171, 171, fontpage_183_171_171), // ' 宫 ' - ' 宫 ' + FONTDATA_ITEM(183, 248, 249, fontpage_183_248_249), // ' 寸 ' - ' 对 ' + FONTDATA_ITEM(184, 134, 134, fontpage_184_134_134), // ' 将 ' - ' 将 ' + FONTDATA_ITEM(184, 143, 143, fontpage_184_143_143), // ' 小 ' - ' 小 ' + FONTDATA_ITEM(184, 177, 177, fontpage_184_177_177), // ' 就 ' - ' 就 ' + FONTDATA_ITEM(184, 186, 186, fontpage_184_186_186), // ' 尺 ' - ' 尺 ' + FONTDATA_ITEM(184, 207, 207, fontpage_184_207_207), // ' 屏 ' - ' 屏 ' + FONTDATA_ITEM(187, 229, 229, fontpage_187_229_229), // ' 工 ' - ' 工 ' + FONTDATA_ITEM(187, 238, 238, fontpage_187_238_238), // ' 差 ' - ' 差 ' + FONTDATA_ITEM(187, 242, 242, fontpage_187_242_242), // ' 已 ' - ' 已 ' + FONTDATA_ITEM(188, 243, 243, fontpage_188_243_243), // ' 平 ' - ' 平 ' + FONTDATA_ITEM(188, 246, 246, fontpage_188_246_246), // ' 并 ' - ' 并 ' + FONTDATA_ITEM(189, 138, 138, fontpage_189_138_138), // ' 床 ' - ' 床 ' + FONTDATA_ITEM(189, 148, 148, fontpage_189_148_148), // ' 应 ' - ' 应 ' + FONTDATA_ITEM(189, 159, 159, fontpage_189_159_159), // ' 废 ' - ' 废 ' + FONTDATA_ITEM(189, 166, 166, fontpage_189_166_166), // ' 度 ' - ' 度 ' + FONTDATA_ITEM(190, 128, 128, fontpage_190_128_128), // ' 开 ' - ' 开 ' + FONTDATA_ITEM(190, 143, 143, fontpage_190_143_143), // ' 式 ' - ' 式 ' + FONTDATA_ITEM(190, 149, 149, fontpage_190_149_149), // ' 引 ' - ' 引 ' + FONTDATA_ITEM(190, 185, 185, fontpage_190_185_185), // ' 弹 ' - ' 弹 ' + FONTDATA_ITEM(190, 210, 210, fontpage_190_210_210), // ' 归 ' - ' 归 ' + FONTDATA_ITEM(191, 132, 133, fontpage_191_132_133), // ' 径 ' - ' 待 ' + FONTDATA_ITEM(191, 170, 170, fontpage_191_170_170), // ' 循 ' - ' 循 ' + FONTDATA_ITEM(191, 174, 174, fontpage_191_174_174), // ' 微 ' - ' 微 ' + FONTDATA_ITEM(191, 195, 195, fontpage_191_195_195), // ' 心 ' - ' 心 ' + FONTDATA_ITEM(191, 253, 253, fontpage_191_253_253), // ' 忽 ' - ' 忽 ' + FONTDATA_ITEM(192, 167, 167, fontpage_192_167_167), // ' 性 ' - ' 性 ' + FONTDATA_ITEM(192, 187, 187, fontpage_192_187_187), // ' 总 ' - ' 总 ' + FONTDATA_ITEM(192, 226, 226, fontpage_192_226_226), // ' 恢 ' - ' 恢 ' + FONTDATA_ITEM(192, 239, 239, fontpage_192_239_239), // ' 息 ' - ' 息 ' + FONTDATA_ITEM(194, 159, 159, fontpage_194_159_159), // ' 感 ' - ' 感 ' + FONTDATA_ITEM(196, 143, 144, fontpage_196_143_144), // ' 戏 ' - ' 成 ' + FONTDATA_ITEM(196, 183, 183, fontpage_196_183_183), // ' 户 ' - ' 户 ' + FONTDATA_ITEM(196, 192, 192, fontpage_196_192_192), // ' 所 ' - ' 所 ' + FONTDATA_ITEM(196, 199, 199, fontpage_196_199_199), // ' 扇 ' - ' 扇 ' + FONTDATA_ITEM(196, 203, 203, fontpage_196_203_203), // ' 手 ' - ' 手 ' + FONTDATA_ITEM(196, 211, 211, fontpage_196_211_211), // ' 打 ' - ' 打 ' + FONTDATA_ITEM(196, 231, 231, fontpage_196_231_231), // ' 执 ' - ' 执 ' + FONTDATA_ITEM(196, 249, 249, fontpage_196_249_249), // ' 批 ' - ' 批 ' + FONTDATA_ITEM(197, 150, 150, fontpage_197_150_150), // ' 抖 ' - ' 抖 ' + FONTDATA_ITEM(197, 165, 165, fontpage_197_165_165), // ' 报 ' - ' 报 ' + FONTDATA_ITEM(197, 172, 172, fontpage_197_172_172), // ' 抬 ' - ' 抬 ' + FONTDATA_ITEM(197, 189, 189, fontpage_197_189_189), // ' 抽 ' - ' 抽 ' + FONTDATA_ITEM(197, 212, 212, fontpage_197_212_212), // ' 拔 ' - ' 拔 ' + FONTDATA_ITEM(197, 233, 233, fontpage_197_233_233), // ' 择 ' - ' 择 ' + FONTDATA_ITEM(198, 130, 130, fontpage_198_130_130), // ' 挂 ' - ' 挂 ' + FONTDATA_ITEM(198, 137, 137, fontpage_198_137_137), // ' 按 ' - ' 按 ' + FONTDATA_ITEM(198, 161, 161, fontpage_198_161_161), // ' 挡 ' - ' 挡 ' + FONTDATA_ITEM(198, 164, 164, fontpage_198_164_164), // ' 挤 ' - ' 挤 ' + FONTDATA_ITEM(198, 223, 223, fontpage_198_223_223), // ' 损 ' - ' 损 ' + FONTDATA_ITEM(198, 226, 226, fontpage_198_226_226), // ' 换 ' - ' 换 ' + FONTDATA_ITEM(199, 137, 137, fontpage_199_137_137), // ' 掉 ' - ' 掉 ' + FONTDATA_ITEM(199, 162, 162, fontpage_199_162_162), // ' 探 ' - ' 探 ' + FONTDATA_ITEM(199, 165, 165, fontpage_199_165_165), // ' 接 ' - ' 接 ' + FONTDATA_ITEM(199, 167, 167, fontpage_199_167_167), // ' 控 ' - ' 控 ' + FONTDATA_ITEM(199, 208, 208, fontpage_199_208_208), // ' 提 ' - ' 提 ' + FONTDATA_ITEM(199, 210, 210, fontpage_199_210_210), // ' 插 ' - ' 插 ' + FONTDATA_ITEM(202, 182, 182, fontpage_202_182_182), // ' 收 ' - ' 收 ' + FONTDATA_ITEM(202, 190, 190, fontpage_202_190_190), // ' 放 ' - ' 放 ' + FONTDATA_ITEM(202, 240, 240, fontpage_202_240_240), // ' 数 ' - ' 数 ' + FONTDATA_ITEM(202, 242, 242, fontpage_202_242_242), // ' 敲 ' - ' 敲 ' + FONTDATA_ITEM(202, 244, 244, fontpage_202_244_244), // ' 整 ' - ' 整 ' + FONTDATA_ITEM(203, 153, 153, fontpage_203_153_153), // ' 料 ' - ' 料 ' + FONTDATA_ITEM(203, 156, 156, fontpage_203_156_156), // ' 斜 ' - ' 斜 ' + FONTDATA_ITEM(203, 173, 173, fontpage_203_173_173), // ' 断 ' - ' 断 ' + FONTDATA_ITEM(203, 176, 176, fontpage_203_176_176), // ' 新 ' - ' 新 ' + FONTDATA_ITEM(203, 185, 185, fontpage_203_185_185), // ' 方 ' - ' 方 ' + FONTDATA_ITEM(203, 224, 224, fontpage_203_224_224), // ' 无 ' - ' 无 ' + FONTDATA_ITEM(203, 246, 246, fontpage_203_246_246), // ' 时 ' - ' 时 ' + FONTDATA_ITEM(204, 142, 142, fontpage_204_142_142), // ' 明 ' - ' 明 ' + FONTDATA_ITEM(204, 175, 175, fontpage_204_175_175), // ' 是 ' - ' 是 ' + FONTDATA_ITEM(205, 130, 130, fontpage_205_130_130), // ' 暂 ' - ' 暂 ' + FONTDATA_ITEM(205, 171, 171, fontpage_205_171_171), // ' 暫 ' - ' 暫 ' + FONTDATA_ITEM(205, 244, 244, fontpage_205_244_244), // ' 更 ' - ' 更 ' + FONTDATA_ITEM(206, 128, 128, fontpage_206_128_128), // ' 最 ' - ' 最 ' + FONTDATA_ITEM(206, 137, 137, fontpage_206_137_137), // ' 有 ' - ' 有 ' + FONTDATA_ITEM(206, 159, 159, fontpage_206_159_159), // ' 期 ' - ' 期 ' + FONTDATA_ITEM(206, 172, 172, fontpage_206_172_172), // ' 本 ' - ' 本 ' + FONTDATA_ITEM(206, 186, 186, fontpage_206_186_186), // ' 机 ' - ' 机 ' + FONTDATA_ITEM(206, 192, 192, fontpage_206_192_192), // ' 杀 ' - ' 杀 ' + FONTDATA_ITEM(206, 223, 223, fontpage_206_223_223), // ' 束 ' - ' 束 ' + FONTDATA_ITEM(206, 225, 225, fontpage_206_225_225), // ' 条 ' - ' 条 ' + FONTDATA_ITEM(206, 229, 229, fontpage_206_229_229), // ' 来 ' - ' 来 ' + FONTDATA_ITEM(206, 255, 255, fontpage_206_255_255), // ' 板 ' - ' 板 ' + FONTDATA_ITEM(207, 151, 151, fontpage_207_151_151), // ' 林 ' - ' 林 ' + FONTDATA_ITEM(207, 241, 241, fontpage_207_241_241), // ' 柱 ' - ' 柱 ' + FONTDATA_ITEM(208, 161, 161, fontpage_208_161_161), // ' 校 ' - ' 校 ' + FONTDATA_ITEM(208, 188, 188, fontpage_208_188_188), // ' 格 ' - ' 格 ' + FONTDATA_ITEM(209, 175, 175, fontpage_209_175_175), // ' 梯 ' - ' 梯 ' + FONTDATA_ITEM(209, 192, 192, fontpage_209_192_192), // ' 检 ' - ' 检 ' + FONTDATA_ITEM(211, 253, 253, fontpage_211_253_253), // ' 槽 ' - ' 槽 ' + FONTDATA_ITEM(212, 161, 161, fontpage_212_161_161), // ' 模 ' - ' 模 ' + FONTDATA_ITEM(212, 217, 217, fontpage_212_217_217), // ' 橙 ' - ' 橙 ' + FONTDATA_ITEM(214, 226, 227, fontpage_214_226_227), // ' 止 ' - ' 正 ' + FONTDATA_ITEM(214, 229, 229, fontpage_214_229_229), // ' 步 ' - ' 步 ' + FONTDATA_ITEM(215, 212, 212, fontpage_215_212_212), // ' 比 ' - ' 比 ' + FONTDATA_ITEM(217, 161, 161, fontpage_217_161_161), // ' 没 ' - ' 没 ' + FONTDATA_ITEM(217, 226, 226, fontpage_217_226_226), // ' 波 ' - ' 波 ' + FONTDATA_ITEM(217, 232, 232, fontpage_217_232_232), // ' 注 ' - ' 注 ' + FONTDATA_ITEM(218, 151, 151, fontpage_218_151_151), // ' 洗 ' - ' 洗 ' + FONTDATA_ITEM(218, 187, 187, fontpage_218_187_187), // ' 活 ' - ' 活 ' + FONTDATA_ITEM(218, 193, 193, fontpage_218_193_193), // ' 流 ' - ' 流 ' + FONTDATA_ITEM(218, 203, 203, fontpage_218_203_203), // ' 测 ' - ' 测 ' + FONTDATA_ITEM(219, 136, 136, fontpage_219_136_136), // ' 消 ' - ' 消 ' + FONTDATA_ITEM(219, 225, 225, fontpage_219_225_225), // ' 淡 ' - ' 淡 ' + FONTDATA_ITEM(219, 247, 247, fontpage_219_247_247), // ' 混 ' - ' 混 ' + FONTDATA_ITEM(220, 133, 133, fontpage_220_133_133), // ' 清 ' - ' 清 ' + FONTDATA_ITEM(220, 169, 169, fontpage_220_169_169), // ' 温 ' - ' 温 ' + FONTDATA_ITEM(220, 184, 184, fontpage_220_184_184), // ' 游 ' - ' 游 ' + FONTDATA_ITEM(221, 144, 144, fontpage_221_144_144), // ' 源 ' - ' 源 ' + FONTDATA_ITEM(221, 162, 162, fontpage_221_162_162), // ' 溢 ' - ' 溢 ' + FONTDATA_ITEM(221, 209, 209, fontpage_221_209_209), // ' 滑 ' - ' 滑 ' + FONTDATA_ITEM(222, 143, 143, fontpage_222_143_143), // ' 漏 ' - ' 漏 ' + FONTDATA_ITEM(223, 192, 192, fontpage_223_192_192), // ' 激 ' - ' 激 ' + FONTDATA_ITEM(224, 239, 239, fontpage_224_239_239), // ' 灯 ' - ' 灯 ' + FONTDATA_ITEM(224, 245, 245, fontpage_224_245_245), // ' 灵 ' - ' 灵 ' + FONTDATA_ITEM(225, 185, 185, fontpage_225_185_185), // ' 点 ' - ' 点 ' + FONTDATA_ITEM(225, 237, 237, fontpage_225_237_237), // ' 热 ' - ' 热 ' + FONTDATA_ITEM(228, 199, 200, fontpage_228_199_200), // ' 片 ' - ' 版 ' + FONTDATA_ITEM(228, 233, 233, fontpage_228_233_233), // ' 物 ' - ' 物 ' + FONTDATA_ITEM(228, 249, 249, fontpage_228_249_249), // ' 特 ' - ' 特 ' + FONTDATA_ITEM(231, 135, 135, fontpage_231_135_135), // ' 率 ' - ' 率 ' + FONTDATA_ITEM(231, 175, 175, fontpage_231_175_175), // ' 环 ' - ' 环 ' + FONTDATA_ITEM(234, 168, 168, fontpage_234_168_168), // ' 用 ' - ' 用 ' + FONTDATA_ITEM(234, 181, 181, fontpage_234_181_181), // ' 电 ' - ' 电 ' + FONTDATA_ITEM(234, 204, 204, fontpage_234_204_204), // ' 界 ' - ' 界 ' + FONTDATA_ITEM(234, 229, 229, fontpage_234_229_229), // ' 略 ' - ' 略 ' + FONTDATA_ITEM(236, 253, 253, fontpage_236_253_253), // ' 白 ' - ' 白 ' + FONTDATA_ITEM(237, 132, 132, fontpage_237_132_132), // ' 的 ' - ' 的 ' + FONTDATA_ITEM(237, 209, 209, fontpage_237_209_209), // ' 监 ' - ' 监 ' + FONTDATA_ITEM(237, 216, 216, fontpage_237_216_216), // ' 盘 ' - ' 盘 ' + FONTDATA_ITEM(237, 244, 244, fontpage_237_244_244), // ' 直 ' - ' 直 ' + FONTDATA_ITEM(238, 129, 129, fontpage_238_129_129), // ' 省 ' - ' 省 ' + FONTDATA_ITEM(238, 160, 160, fontpage_238_160_160), // ' 眠 ' - ' 眠 ' + FONTDATA_ITEM(240, 238, 238, fontpage_240_238_238), // ' 确 ' - ' 确 ' + FONTDATA_ITEM(243, 187, 187, fontpage_243_187_187), // ' 离 ' - ' 离 ' + FONTDATA_ITEM(243, 251, 251, fontpage_243_251_251), // ' 移 ' - ' 移 ' + FONTDATA_ITEM(244, 250, 250, fontpage_244_250_250), // ' 空 ' - ' 空 ' + FONTDATA_ITEM(245, 239, 239, fontpage_245_239_239), // ' 端 ' - ' 端 ' + FONTDATA_ITEM(246, 172, 172, fontpage_246_172_172), // ' 第 ' - ' 第 ' + FONTDATA_ITEM(246, 201, 201, fontpage_246_201_201), // ' 等 ' - ' 等 ' + FONTDATA_ITEM(247, 177, 177, fontpage_247_177_177), // ' 箱 ' - ' 箱 ' + FONTDATA_ITEM(248, 251, 251, fontpage_248_251_251), // ' 类 ' - ' 类 ' + FONTDATA_ITEM(249, 190, 190, fontpage_249_190_190), // ' 精 ' - ' 精 ' + FONTDATA_ITEM(250, 162, 162, fontpage_250_162_162), // ' 索 ' - ' 索 ' + FONTDATA_ITEM(250, 171, 171, fontpage_250_171_171), // ' 紫 ' - ' 紫 ' + FONTDATA_ITEM(253, 162, 162, fontpage_253_162_162), // ' 红 ' - ' 红 ' + FONTDATA_ITEM(253, 167, 167, fontpage_253_167_167), // ' 级 ' - ' 级 ' + FONTDATA_ITEM(253, 191, 191, fontpage_253_191_191), // ' 线 ' - ' 线 ' + FONTDATA_ITEM(253, 198, 198, fontpage_253_198_198), // ' 细 ' - ' 细 ' + FONTDATA_ITEM(253, 200, 200, fontpage_253_200_200), // ' 终 ' - ' 终 ' + FONTDATA_ITEM(253, 211, 211, fontpage_253_211_211), // ' 结 ' - ' 结 ' + FONTDATA_ITEM(253, 217, 217, fontpage_253_217_217), // ' 给 ' - ' 给 ' + FONTDATA_ITEM(253, 223, 223, fontpage_253_223_223), // ' 统 ' - ' 统 ' + FONTDATA_ITEM(253, 231, 231, fontpage_253_231_231), // ' 继 ' - ' 继 ' + FONTDATA_ITEM(253, 234, 234, fontpage_253_234_234), // ' 绪 ' - ' 绪 ' + FONTDATA_ITEM(253, 237, 237, fontpage_253_237_237), // ' 续 ' - ' 续 ' + FONTDATA_ITEM(253, 255, 255, fontpage_253_255_255), // ' 绿 ' - ' 绿 ' + FONTDATA_ITEM(254, 150, 150, fontpage_254_150_150), // ' 编 ' - ' 编 ' + FONTDATA_ITEM(254, 186, 186, fontpage_254_186_186), // ' 缺 ' - ' 缺 ' + FONTDATA_ITEM(254, 209, 209, fontpage_254_209_209), // ' 网 ' - ' 网 ' + FONTDATA_ITEM(254, 238, 238, fontpage_254_238_238), // ' 置 ' - ' 置 ' + FONTDATA_ITEM(254, 242, 242, fontpage_254_242_242), // ' 署 ' - ' 署 ' + FONTDATA_ITEM(256, 133, 133, fontpage_256_133_133), // ' 者 ' - ' 者 ' + FONTDATA_ITEM(256, 234, 234, fontpage_256_234_234), // ' 聪 ' - ' 聪 ' + FONTDATA_ITEM(257, 253, 253, fontpage_257_253_253), // ' 能 ' - ' 能 ' + FONTDATA_ITEM(259, 234, 234, fontpage_259_234_234), // ' 自 ' - ' 自 ' + FONTDATA_ITEM(259, 243, 243, fontpage_259_243_243), // ' 至 ' - ' 至 ' + FONTDATA_ITEM(263, 220, 220, fontpage_263_220_220), // ' 菜 ' - ' 菜 ' + FONTDATA_ITEM(265, 221, 221, fontpage_265_221_221), // ' 蓝 ' - ' 蓝 ' + FONTDATA_ITEM(269, 199, 199, fontpage_269_199_199), // ' 蛇 ' - ' 蛇 ' + FONTDATA_ITEM(272, 204, 204, fontpage_272_204_204), // ' 行 ' - ' 行 ' + FONTDATA_ITEM(273, 171, 171, fontpage_273_171_171), // ' 被 ' - ' 被 ' + FONTDATA_ITEM(273, 197, 197, fontpage_273_197_197), // ' 装 ' - ' 装 ' + FONTDATA_ITEM(275, 129, 129, fontpage_275_129_129), // ' 要 ' - ' 要 ' + FONTDATA_ITEM(275, 210, 210, fontpage_275_210_210), // ' 角 ' - ' 角 ' + FONTDATA_ITEM(279, 161, 161, fontpage_279_161_161), // ' 计 ' - ' 计 ' + FONTDATA_ITEM(279, 174, 174, fontpage_279_174_174), // ' 议 ' - ' 议 ' + FONTDATA_ITEM(279, 190, 190, fontpage_279_190_190), // ' 设 ' - ' 设 ' + FONTDATA_ITEM(279, 213, 213, fontpage_279_213_213), // ' 试 ' - ' 试 ' + FONTDATA_ITEM(279, 239, 239, fontpage_279_239_239), // ' 误 ' - ' 误 ' + FONTDATA_ITEM(279, 247, 247, fontpage_279_247_247), // ' 请 ' - ' 请 ' + FONTDATA_ITEM(279, 251, 251, fontpage_279_251_251), // ' 读 ' - ' 读 ' + FONTDATA_ITEM(280, 131, 131, fontpage_280_131_131), // ' 调 ' - ' 调 ' + FONTDATA_ITEM(282, 165, 165, fontpage_282_165_165), // ' 败 ' - ' 败 ' + FONTDATA_ITEM(282, 170, 170, fontpage_282_170_170), // ' 贪 ' - ' 贪 ' + FONTDATA_ITEM(282, 247, 247, fontpage_282_247_247), // ' 起 ' - ' 起 ' + FONTDATA_ITEM(283, 133, 133, fontpage_283_133_133), // ' 超 ' - ' 超 ' + FONTDATA_ITEM(283, 138, 138, fontpage_283_138_138), // ' 越 ' - ' 越 ' + FONTDATA_ITEM(283, 221, 221, fontpage_283_221_221), // ' 距 ' - ' 距 ' + FONTDATA_ITEM(286, 236, 236, fontpage_286_236_236), // ' 转 ' - ' 转 ' + FONTDATA_ITEM(286, 239, 239, fontpage_286_239_239), // ' 软 ' - ' 软 ' + FONTDATA_ITEM(286, 244, 244, fontpage_286_244_244), // ' 轴 ' - ' 轴 ' + FONTDATA_ITEM(286, 253, 253, fontpage_286_253_253), // ' 载 ' - ' 载 ' + FONTDATA_ITEM(287, 145, 145, fontpage_287_145_145), // ' 辑 ' - ' 辑 ' + FONTDATA_ITEM(287, 147, 147, fontpage_287_147_147), // ' 输 ' - ' 输 ' + FONTDATA_ITEM(287, 185, 185, fontpage_287_185_185), // ' 边 ' - ' 边 ' + FONTDATA_ITEM(287, 193, 193, fontpage_287_193_193), // ' 迁 ' - ' 迁 ' + FONTDATA_ITEM(287, 208, 209, fontpage_287_208_209), // ' 运 ' - ' 近 ' + FONTDATA_ITEM(287, 212, 212, fontpage_287_212_212), // ' 返 ' - ' 返 ' + FONTDATA_ITEM(287, 216, 216, fontpage_287_216_216), // ' 还 ' - ' 还 ' + FONTDATA_ITEM(287, 219, 219, fontpage_287_219_219), // ' 进 ' - ' 进 ' + FONTDATA_ITEM(287, 222, 222, fontpage_287_222_222), // ' 连 ' - ' 连 ' + FONTDATA_ITEM(287, 247, 247, fontpage_287_247_247), // ' 迷 ' - ' 迷 ' + FONTDATA_ITEM(288, 128, 128, fontpage_288_128_128), // ' 退 ' - ' 退 ' + FONTDATA_ITEM(288, 137, 137, fontpage_288_137_137), // ' 选 ' - ' 选 ' + FONTDATA_ITEM(288, 144, 144, fontpage_288_144_144), // ' 逐 ' - ' 逐 ' + FONTDATA_ITEM(288, 159, 159, fontpage_288_159_159), // ' 速 ' - ' 速 ' + FONTDATA_ITEM(289, 232, 232, fontpage_289_232_232), // ' 部 ' - ' 部 ' + FONTDATA_ITEM(290, 205, 205, fontpage_290_205_205), // ' 配 ' - ' 配 ' + FONTDATA_ITEM(291, 202, 202, fontpage_291_202_202), // ' 释 ' - ' 释 ' + FONTDATA_ITEM(291, 205, 205, fontpage_291_205_205), // ' 重 ' - ' 重 ' + FONTDATA_ITEM(291, 207, 207, fontpage_291_207_207), // ' 量 ' - ' 量 ' + FONTDATA_ITEM(297, 136, 136, fontpage_297_136_136), // ' 针 ' - ' 针 ' + FONTDATA_ITEM(297, 174, 174, fontpage_297_174_174), // ' 钮 ' - ' 钮 ' + FONTDATA_ITEM(298, 153, 153, fontpage_298_153_153), // ' 错 ' - ' 错 ' + FONTDATA_ITEM(298, 220, 220, fontpage_298_220_220), // ' 镜 ' - ' 镜 ' + FONTDATA_ITEM(298, 255, 255, fontpage_298_255_255), // ' 长 ' - ' 长 ' + FONTDATA_ITEM(299, 237, 237, fontpage_299_237_237), // ' 闭 ' - ' 闭 ' + FONTDATA_ITEM(299, 242, 242, fontpage_299_242_242), // ' 闲 ' - ' 闲 ' + FONTDATA_ITEM(299, 244, 244, fontpage_299_244_244), // ' 间 ' - ' 间 ' + FONTDATA_ITEM(300, 136, 136, fontpage_300_136_136), // ' 阈 ' - ' 阈 ' + FONTDATA_ITEM(300, 205, 205, fontpage_300_205_205), // ' 降 ' - ' 降 ' + FONTDATA_ITEM(300, 208, 208, fontpage_300_208_208), // ' 限 ' - ' 限 ' + FONTDATA_ITEM(300, 228, 228, fontpage_300_228_228), // ' 除 ' - ' 除 ' + FONTDATA_ITEM(300, 233, 233, fontpage_300_233_233), // ' 险 ' - ' 险 ' + FONTDATA_ITEM(301, 246, 246, fontpage_301_246_246), // ' 零 ' - ' 零 ' + FONTDATA_ITEM(302, 128, 128, fontpage_302_128_128), // ' 需 ' - ' 需 ' + FONTDATA_ITEM(302, 210, 210, fontpage_302_210_210), // ' 青 ' - ' 青 ' + FONTDATA_ITEM(302, 222, 222, fontpage_302_222_222), // ' 非 ' - ' 非 ' + FONTDATA_ITEM(302, 224, 224, fontpage_302_224_224), // ' 靠 ' - ' 靠 ' + FONTDATA_ITEM(302, 226, 226, fontpage_302_226_226), // ' 面 ' - ' 面 ' + FONTDATA_ITEM(304, 245, 245, fontpage_304_245_245), // ' 页 ' - ' 页 ' + FONTDATA_ITEM(304, 249, 249, fontpage_304_249_249), // ' 项 ' - ' 项 ' + FONTDATA_ITEM(305, 132, 132, fontpage_305_132_132), // ' 预 ' - ' 预 ' + FONTDATA_ITEM(305, 145, 145, fontpage_305_145_145), // ' 频 ' - ' 频 ' + FONTDATA_ITEM(305, 157, 157, fontpage_305_157_157), // ' 额 ' - ' 额 ' + FONTDATA_ITEM(305, 206, 206, fontpage_305_206_206), // ' 风 ' - ' 风 ' + FONTDATA_ITEM(306, 241, 241, fontpage_306_241_241), // ' 饱 ' - ' 饱 ' + FONTDATA_ITEM(307, 150, 150, fontpage_307_150_150), // ' 首 ' - ' 首 ' + FONTDATA_ITEM(308, 236, 236, fontpage_308_236_236), // ' 马 ' - ' 马 ' + FONTDATA_ITEM(308, 241, 241, fontpage_308_241_241), // ' 驱 ' - ' 驱 ' + FONTDATA_ITEM(309, 140, 140, fontpage_309_140_140), // ' 验 ' - ' 验 ' + FONTDATA_ITEM(309, 216, 216, fontpage_309_216_216), // ' 高 ' - ' 高 ' + FONTDATA_ITEM(317, 196, 196, fontpage_317_196_196), // ' 黄 ' - ' 黄 ' + FONTDATA_ITEM(317, 222, 222, fontpage_317_222_222), // ' 點 ' - ' 點 ' + FONTDATA_ITEM(318, 208, 208, fontpage_318_208_208), // ' 齐 ' - ' 齐 ' + FONTDATA_ITEM(510, 154, 154, fontpage_510_154_154), // ' : ' - ' : ' }; diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_zh_TW.h b/Marlin/src/lcd/dogm/fontdata/langdata_zh_TW.h index 9c93ec1fe1..4de90e14a4 100644 --- a/Marlin/src/lcd/dogm/fontdata/langdata_zh_TW.h +++ b/Marlin/src/lcd/dogm/fontdata/langdata_zh_TW.h @@ -1256,312 +1256,312 @@ const u8g_fntpgm_uint8_t fontpage_510_154_154[30] U8G_FONT_SECTION("fontpage_510 0x00,0x02,0x07,0x07,0x0C,0x06,0x01,0xC0,0xC0,0x00,0x00,0x00,0xC0,0xC0}; static const uxg_fontinfo_t g_fontinfo_zh_TW[] PROGMEM = { - FONTDATA_ITEM(69, 191, 191, fontpage_69_191_191), // '⊿' -- '⊿' - FONTDATA_ITEM(156, 128, 128, fontpage_156_128_128), // '一' -- '一' - FONTDATA_ITEM(156, 137, 139, fontpage_156_137_139), // '三' -- '下' - FONTDATA_ITEM(156, 141, 141, fontpage_156_141_141), // '不' -- '不' - FONTDATA_ITEM(156, 166, 166, fontpage_156_166_166), // '並' -- '並' - FONTDATA_ITEM(156, 173, 173, fontpage_156_173_173), // '中' -- '中' - FONTDATA_ITEM(156, 187, 187, fontpage_156_187_187), // '主' -- '主' - FONTDATA_ITEM(156, 203, 203, fontpage_156_203_203), // '之' -- '之' - FONTDATA_ITEM(157, 164, 164, fontpage_157_164_164), // '交' -- '交' - FONTDATA_ITEM(157, 174, 174, fontpage_157_174_174), // '亮' -- '亮' - FONTDATA_ITEM(157, 228, 228, fontpage_157_228_228), // '令' -- '令' - FONTDATA_ITEM(157, 246, 246, fontpage_157_246_246), // '件' -- '件' - FONTDATA_ITEM(157, 253, 253, fontpage_157_253_253), // '份' -- '份' - FONTDATA_ITEM(158, 145, 145, fontpage_158_145_145), // '休' -- '休' - FONTDATA_ITEM(158, 205, 206, fontpage_158_205_206), // '位' -- '低' - FONTDATA_ITEM(158, 220, 220, fontpage_158_220_220), // '作' -- '作' - FONTDATA_ITEM(159, 155, 155, fontpage_159_155_155), // '供' -- '供' - FONTDATA_ITEM(159, 221, 221, fontpage_159_221_221), // '保' -- '保' - FONTDATA_ITEM(159, 225, 225, fontpage_159_225_225), // '信' -- '信' - FONTDATA_ITEM(160, 139, 139, fontpage_160_139_139), // '個' -- '個' - FONTDATA_ITEM(160, 188, 188, fontpage_160_188_188), // '值' -- '值' - FONTDATA_ITEM(160, 207, 207, fontpage_160_207_207), // '偏' -- '偏' - FONTDATA_ITEM(160, 220, 220, fontpage_160_220_220), // '停' -- '停' - FONTDATA_ITEM(160, 245, 245, fontpage_160_245_245), // '偵' -- '偵' - FONTDATA_ITEM(161, 153, 153, fontpage_161_153_153), // '備' -- '備' - FONTDATA_ITEM(161, 179, 179, fontpage_161_179_179), // '傳' -- '傳' - FONTDATA_ITEM(161, 190, 190, fontpage_161_190_190), // '傾' -- '傾' - FONTDATA_ITEM(162, 178, 178, fontpage_162_178_178), // '儲' -- '儲' - FONTDATA_ITEM(162, 197, 197, fontpage_162_197_197), // '充' -- '充' - FONTDATA_ITEM(162, 200, 201, fontpage_162_200_201), // '先' -- '光' - FONTDATA_ITEM(162, 229, 229, fontpage_162_229_229), // '入' -- '入' - FONTDATA_ITEM(162, 232, 232, fontpage_162_232_232), // '全' -- '全' - FONTDATA_ITEM(162, 241, 241, fontpage_162_241_241), // '共' -- '共' - FONTDATA_ITEM(162, 247, 247, fontpage_162_247_247), // '具' -- '具' - FONTDATA_ITEM(163, 151, 151, fontpage_163_151_151), // '冗' -- '冗' - FONTDATA_ITEM(163, 183, 183, fontpage_163_183_183), // '冷' -- '冷' - FONTDATA_ITEM(163, 198, 198, fontpage_163_198_198), // '准' -- '准' - FONTDATA_ITEM(163, 250, 250, fontpage_163_250_250), // '出' -- '出' - FONTDATA_ITEM(164, 134, 134, fontpage_164_134_134), // '分' -- '分' - FONTDATA_ITEM(164, 151, 151, fontpage_164_151_151), // '列' -- '列' - FONTDATA_ITEM(164, 157, 157, fontpage_164_157_157), // '初' -- '初' - FONTDATA_ITEM(164, 176, 176, fontpage_164_176_176), // '到' -- '到' - FONTDATA_ITEM(164, 182, 183, fontpage_164_182_183), // '制' -- '刷' - FONTDATA_ITEM(164, 245, 245, fontpage_164_245_245), // '創' -- '創' - FONTDATA_ITEM(165, 155, 155, fontpage_165_155_155), // '力' -- '力' - FONTDATA_ITEM(165, 160, 160, fontpage_165_160_160), // '加' -- '加' - FONTDATA_ITEM(165, 213, 213, fontpage_165_213_213), // '動' -- '動' - FONTDATA_ITEM(166, 150, 150, fontpage_166_150_150), // '化' -- '化' - FONTDATA_ITEM(166, 202, 202, fontpage_166_202_202), // '半' -- '半' - FONTDATA_ITEM(166, 212, 212, fontpage_166_212_212), // '協' -- '協' - FONTDATA_ITEM(166, 225, 225, fontpage_166_225_225), // '卡' -- '卡' - FONTDATA_ITEM(166, 240, 240, fontpage_166_240_240), // '印' -- '印' - FONTDATA_ITEM(166, 248, 248, fontpage_166_248_248), // '卸' -- '卸' - FONTDATA_ITEM(166, 251, 251, fontpage_166_251_251), // '卻' -- '卻' - FONTDATA_ITEM(167, 159, 159, fontpage_167_159_159), // '原' -- '原' - FONTDATA_ITEM(167, 205, 205, fontpage_167_205_205), // '反' -- '反' - FONTDATA_ITEM(167, 214, 214, fontpage_167_214_214), // '取' -- '取' - FONTDATA_ITEM(167, 240, 240, fontpage_167_240_240), // '台' -- '台' - FONTDATA_ITEM(168, 136, 136, fontpage_168_136_136), // '合' -- '合' - FONTDATA_ITEM(168, 166, 166, fontpage_168_166_166), // '否' -- '否' - FONTDATA_ITEM(168, 202, 202, fontpage_168_202_202), // '告' -- '告' - FONTDATA_ITEM(168, 253, 253, fontpage_168_253_253), // '命' -- '命' - FONTDATA_ITEM(169, 140, 140, fontpage_169_140_140), // '和' -- '和' - FONTDATA_ITEM(170, 223, 223, fontpage_170_223_223), // '啟' -- '啟' - FONTDATA_ITEM(171, 174, 174, fontpage_171_174_174), // '單' -- '單' - FONTDATA_ITEM(172, 180, 180, fontpage_172_180_180), // '嘴' -- '嘴' - FONTDATA_ITEM(172, 232, 232, fontpage_172_232_232), // '器' -- '器' - FONTDATA_ITEM(172, 244, 244, fontpage_172_244_244), // '噴' -- '噴' - FONTDATA_ITEM(173, 222, 222, fontpage_173_222_222), // '回' -- '回' - FONTDATA_ITEM(173, 224, 224, fontpage_173_224_224), // '因' -- '因' - FONTDATA_ITEM(173, 250, 250, fontpage_173_250_250), // '固' -- '固' - FONTDATA_ITEM(174, 150, 150, fontpage_174_150_150), // '圖' -- '圖' - FONTDATA_ITEM(174, 168, 168, fontpage_174_168_168), // '在' -- '在' - FONTDATA_ITEM(175, 139, 139, fontpage_175_139_139), // '型' -- '型' - FONTDATA_ITEM(175, 247, 247, fontpage_175_247_247), // '執' -- '執' - FONTDATA_ITEM(176, 202, 202, fontpage_176_202_202), // '塊' -- '塊' - FONTDATA_ITEM(176, 235, 235, fontpage_176_235_235), // '填' -- '填' - FONTDATA_ITEM(177, 138, 138, fontpage_177_138_138), // '墊' -- '墊' - FONTDATA_ITEM(178, 150, 150, fontpage_178_150_150), // '外' -- '外' - FONTDATA_ITEM(178, 154, 154, fontpage_178_154_154), // '多' -- '多' - FONTDATA_ITEM(178, 160, 160, fontpage_178_160_160), // '夠' -- '夠' - FONTDATA_ITEM(178, 167, 167, fontpage_178_167_167), // '大' -- '大' - FONTDATA_ITEM(178, 169, 169, fontpage_178_169_169), // '天' -- '天' - FONTDATA_ITEM(178, 177, 177, fontpage_178_177_177), // '失' -- '失' - FONTDATA_ITEM(179, 203, 203, fontpage_179_203_203), // '始' -- '始' - FONTDATA_ITEM(181, 146, 146, fontpage_181_146_146), // '媒' -- '媒' - FONTDATA_ITEM(182, 208, 208, fontpage_182_208_208), // '子' -- '子' - FONTDATA_ITEM(182, 216, 216, fontpage_182_216_216), // '存' -- '存' - FONTDATA_ITEM(183, 137, 137, fontpage_183_137_137), // '安' -- '安' - FONTDATA_ITEM(183, 140, 140, fontpage_183_140_140), // '完' -- '完' - FONTDATA_ITEM(183, 154, 154, fontpage_183_154_154), // '定' -- '定' - FONTDATA_ITEM(183, 162, 162, fontpage_183_162_162), // '客' -- '客' - FONTDATA_ITEM(183, 185, 185, fontpage_183_185_185), // '容' -- '容' - FONTDATA_ITEM(183, 248, 248, fontpage_183_248_248), // '寸' -- '寸' - FONTDATA_ITEM(184, 141, 141, fontpage_184_141_141), // '對' -- '對' - FONTDATA_ITEM(184, 143, 143, fontpage_184_143_143), // '小' -- '小' - FONTDATA_ITEM(184, 177, 177, fontpage_184_177_177), // '就' -- '就' - FONTDATA_ITEM(184, 186, 186, fontpage_184_186_186), // '尺' -- '尺' - FONTDATA_ITEM(187, 229, 229, fontpage_187_229_229), // '工' -- '工' - FONTDATA_ITEM(187, 238, 238, fontpage_187_238_238), // '差' -- '差' - FONTDATA_ITEM(187, 242, 242, fontpage_187_242_242), // '已' -- '已' - FONTDATA_ITEM(188, 243, 243, fontpage_188_243_243), // '平' -- '平' - FONTDATA_ITEM(189, 138, 138, fontpage_189_138_138), // '床' -- '床' - FONTDATA_ITEM(189, 166, 166, fontpage_189_166_166), // '度' -- '度' - FONTDATA_ITEM(189, 226, 226, fontpage_189_226_226), // '廢' -- '廢' - FONTDATA_ITEM(189, 250, 250, fontpage_189_250_250), // '建' -- '建' - FONTDATA_ITEM(190, 149, 149, fontpage_190_149_149), // '引' -- '引' - FONTDATA_ITEM(191, 133, 133, fontpage_191_133_133), // '待' -- '待' - FONTDATA_ITEM(191, 140, 140, fontpage_191_140_140), // '後' -- '後' - FONTDATA_ITEM(191, 145, 145, fontpage_191_145_145), // '徑' -- '徑' - FONTDATA_ITEM(191, 158, 158, fontpage_191_158_158), // '從' -- '從' - FONTDATA_ITEM(191, 169, 169, fontpage_191_169_169), // '復' -- '復' - FONTDATA_ITEM(191, 174, 174, fontpage_191_174_174), // '微' -- '微' - FONTDATA_ITEM(191, 195, 195, fontpage_191_195_195), // '心' -- '心' - FONTDATA_ITEM(192, 167, 167, fontpage_192_167_167), // '性' -- '性' - FONTDATA_ITEM(192, 226, 226, fontpage_192_226_226), // '恢' -- '恢' - FONTDATA_ITEM(192, 239, 239, fontpage_192_239_239), // '息' -- '息' - FONTDATA_ITEM(195, 182, 182, fontpage_195_182_182), // '憶' -- '憶' - FONTDATA_ITEM(195, 201, 201, fontpage_195_201_201), // '應' -- '應' - FONTDATA_ITEM(196, 144, 144, fontpage_196_144_144), // '成' -- '成' - FONTDATA_ITEM(196, 182, 182, fontpage_196_182_182), // '戶' -- '戶' - FONTDATA_ITEM(196, 192, 192, fontpage_196_192_192), // '所' -- '所' - FONTDATA_ITEM(196, 199, 199, fontpage_196_199_199), // '扇' -- '扇' - FONTDATA_ITEM(196, 203, 203, fontpage_196_203_203), // '手' -- '手' - FONTDATA_ITEM(196, 211, 211, fontpage_196_211_211), // '打' -- '打' - FONTDATA_ITEM(196, 249, 249, fontpage_196_249_249), // '批' -- '批' - FONTDATA_ITEM(197, 150, 150, fontpage_197_150_150), // '抖' -- '抖' - FONTDATA_ITEM(197, 189, 189, fontpage_197_189_189), // '抽' -- '抽' - FONTDATA_ITEM(197, 212, 212, fontpage_197_212_212), // '拔' -- '拔' - FONTDATA_ITEM(198, 130, 130, fontpage_198_130_130), // '挂' -- '挂' - FONTDATA_ITEM(198, 137, 137, fontpage_198_137_137), // '按' -- '按' - FONTDATA_ITEM(199, 137, 137, fontpage_199_137_137), // '掉' -- '掉' - FONTDATA_ITEM(199, 162, 162, fontpage_199_162_162), // '探' -- '探' - FONTDATA_ITEM(199, 165, 165, fontpage_199_165_165), // '接' -- '接' - FONTDATA_ITEM(199, 167, 167, fontpage_199_167_167), // '控' -- '控' - FONTDATA_ITEM(199, 208, 208, fontpage_199_208_208), // '提' -- '提' - FONTDATA_ITEM(199, 210, 210, fontpage_199_210_210), // '插' -- '插' - FONTDATA_ITEM(199, 219, 219, fontpage_199_219_219), // '換' -- '換' - FONTDATA_ITEM(201, 199, 199, fontpage_201_199_199), // '擇' -- '擇' - FONTDATA_ITEM(201, 202, 203, fontpage_201_202_203), // '擊' -- '擋' - FONTDATA_ITEM(201, 224, 224, fontpage_201_224_224), // '擠' -- '擠' - FONTDATA_ITEM(202, 182, 182, fontpage_202_182_182), // '收' -- '收' - FONTDATA_ITEM(202, 190, 190, fontpage_202_190_190), // '放' -- '放' - FONTDATA_ITEM(202, 215, 215, fontpage_202_215_215), // '敗' -- '敗' - FONTDATA_ITEM(202, 244, 244, fontpage_202_244_244), // '整' -- '整' - FONTDATA_ITEM(202, 248, 248, fontpage_202_248_248), // '數' -- '數' - FONTDATA_ITEM(203, 153, 153, fontpage_203_153_153), // '料' -- '料' - FONTDATA_ITEM(203, 156, 156, fontpage_203_156_156), // '斜' -- '斜' - FONTDATA_ITEM(203, 176, 176, fontpage_203_176_176), // '新' -- '新' - FONTDATA_ITEM(203, 183, 183, fontpage_203_183_183), // '斷' -- '斷' - FONTDATA_ITEM(203, 188, 188, fontpage_203_188_188), // '於' -- '於' - FONTDATA_ITEM(204, 135, 135, fontpage_204_135_135), // '昇' -- '昇' - FONTDATA_ITEM(204, 142, 142, fontpage_204_142_142), // '明' -- '明' - FONTDATA_ITEM(204, 175, 175, fontpage_204_175_175), // '是' -- '是' - FONTDATA_ITEM(204, 194, 194, fontpage_204_194_194), // '時' -- '時' - FONTDATA_ITEM(205, 171, 171, fontpage_205_171_171), // '暫' -- '暫' - FONTDATA_ITEM(205, 244, 244, fontpage_205_244_244), // '更' -- '更' - FONTDATA_ITEM(206, 128, 128, fontpage_206_128_128), // '最' -- '最' - FONTDATA_ITEM(206, 137, 137, fontpage_206_137_137), // '有' -- '有' - FONTDATA_ITEM(206, 172, 172, fontpage_206_172_172), // '本' -- '本' - FONTDATA_ITEM(206, 255, 255, fontpage_206_255_255), // '板' -- '板' - FONTDATA_ITEM(207, 241, 241, fontpage_207_241_241), // '柱' -- '柱' - FONTDATA_ITEM(208, 161, 161, fontpage_208_161_161), // '校' -- '校' - FONTDATA_ITEM(208, 188, 188, fontpage_208_188_188), // '格' -- '格' - FONTDATA_ITEM(209, 157, 157, fontpage_209_157_157), // '條' -- '條' - FONTDATA_ITEM(209, 196, 196, fontpage_209_196_196), // '棄' -- '棄' - FONTDATA_ITEM(211, 253, 253, fontpage_211_253_253), // '槽' -- '槽' - FONTDATA_ITEM(212, 217, 217, fontpage_212_217_217), // '橙' -- '橙' - FONTDATA_ITEM(212, 223, 223, fontpage_212_223_223), // '機' -- '機' - FONTDATA_ITEM(213, 162, 162, fontpage_213_162_162), // '檢' -- '檢' - FONTDATA_ITEM(214, 226, 227, fontpage_214_226_227), // '止' -- '正' - FONTDATA_ITEM(214, 229, 229, fontpage_214_229_229), // '步' -- '步' - FONTDATA_ITEM(214, 248, 248, fontpage_214_248_248), // '歸' -- '歸' - FONTDATA_ITEM(215, 188, 188, fontpage_215_188_188), // '殼' -- '殼' - FONTDATA_ITEM(215, 212, 212, fontpage_215_212_212), // '比' -- '比' - FONTDATA_ITEM(217, 146, 146, fontpage_217_146_146), // '沒' -- '沒' - FONTDATA_ITEM(219, 136, 136, fontpage_219_136_136), // '消' -- '消' - FONTDATA_ITEM(219, 225, 225, fontpage_219_225_225), // '淡' -- '淡' - FONTDATA_ITEM(220, 133, 133, fontpage_220_133_133), // '清' -- '清' - FONTDATA_ITEM(220, 172, 172, fontpage_220_172_172), // '測' -- '測' - FONTDATA_ITEM(221, 144, 144, fontpage_221_144_144), // '源' -- '源' - FONTDATA_ITEM(221, 150, 150, fontpage_221_150_150), // '準' -- '準' - FONTDATA_ITEM(221, 171, 171, fontpage_221_171_171), // '溫' -- '溫' - FONTDATA_ITEM(223, 192, 192, fontpage_223_192_192), // '激' -- '激' - FONTDATA_ITEM(226, 161, 161, fontpage_226_161_161), // '無' -- '無' - FONTDATA_ITEM(227, 177, 177, fontpage_227_177_177), // '熱' -- '熱' - FONTDATA_ITEM(227, 200, 200, fontpage_227_200_200), // '燈' -- '燈' - FONTDATA_ITEM(228, 199, 200, fontpage_228_199_200), // '片' -- '版' - FONTDATA_ITEM(228, 233, 233, fontpage_228_233_233), // '物' -- '物' - FONTDATA_ITEM(231, 135, 135, fontpage_231_135_135), // '率' -- '率' - FONTDATA_ITEM(234, 168, 168, fontpage_234_168_168), // '用' -- '用' - FONTDATA_ITEM(234, 204, 204, fontpage_234_204_204), // '界' -- '界' - FONTDATA_ITEM(236, 253, 253, fontpage_236_253_253), // '白' -- '白' - FONTDATA_ITEM(237, 132, 132, fontpage_237_132_132), // '的' -- '的' - FONTDATA_ITEM(237, 227, 227, fontpage_237_227_227), // '監' -- '監' - FONTDATA_ITEM(237, 244, 244, fontpage_237_244_244), // '直' -- '直' - FONTDATA_ITEM(238, 160, 160, fontpage_238_160_160), // '眠' -- '眠' - FONTDATA_ITEM(240, 141, 141, fontpage_240_141_141), // '砍' -- '砍' - FONTDATA_ITEM(241, 159, 159, fontpage_241_159_159), // '碟' -- '碟' - FONTDATA_ITEM(241, 186, 186, fontpage_241_186_186), // '確' -- '確' - FONTDATA_ITEM(243, 251, 251, fontpage_243_251_251), // '移' -- '移' - FONTDATA_ITEM(244, 205, 205, fontpage_244_205_205), // '積' -- '積' - FONTDATA_ITEM(245, 239, 239, fontpage_245_239_239), // '端' -- '端' - FONTDATA_ITEM(246, 201, 201, fontpage_246_201_201), // '等' -- '等' - FONTDATA_ITEM(247, 161, 161, fontpage_247_161_161), // '管' -- '管' - FONTDATA_ITEM(247, 177, 177, fontpage_247_177_177), // '箱' -- '箱' - FONTDATA_ITEM(249, 251, 251, fontpage_249_251_251), // '系' -- '系' - FONTDATA_ITEM(250, 133, 133, fontpage_250_133_133), // '紅' -- '紅' - FONTDATA_ITEM(250, 162, 162, fontpage_250_162_162), // '索' -- '索' - FONTDATA_ITEM(250, 171, 171, fontpage_250_171_171), // '紫' -- '紫' - FONTDATA_ITEM(250, 176, 176, fontpage_250_176_176), // '細' -- '細' - FONTDATA_ITEM(250, 194, 194, fontpage_250_194_194), // '終' -- '終' - FONTDATA_ITEM(250, 241, 242, fontpage_250_241_242), // '統' -- '絲' - FONTDATA_ITEM(251, 160, 160, fontpage_251_160_160), // '綠' -- '綠' - FONTDATA_ITEM(251, 178, 178, fontpage_251_178_178), // '網' -- '網' - FONTDATA_ITEM(251, 210, 210, fontpage_251_210_210), // '緒' -- '緒' - FONTDATA_ITEM(251, 218, 218, fontpage_251_218_218), // '線' -- '線' - FONTDATA_ITEM(251, 232, 232, fontpage_251_232_232), // '編' -- '編' - FONTDATA_ITEM(252, 174, 174, fontpage_252_174_174), // '縮' -- '縮' - FONTDATA_ITEM(252, 189, 189, fontpage_252_189_189), // '總' -- '總' - FONTDATA_ITEM(252, 252, 252, fontpage_252_252_252), // '繼' -- '繼' - FONTDATA_ITEM(253, 140, 140, fontpage_253_140_140), // '續' -- '續' - FONTDATA_ITEM(253, 162, 162, fontpage_253_162_162), // '红' -- '红' - FONTDATA_ITEM(254, 238, 238, fontpage_254_238_238), // '置' -- '置' - FONTDATA_ITEM(254, 242, 242, fontpage_254_242_242), // '署' -- '署' - FONTDATA_ITEM(256, 240, 240, fontpage_256_240_240), // '聰' -- '聰' - FONTDATA_ITEM(259, 234, 234, fontpage_259_234_234), // '自' -- '自' - FONTDATA_ITEM(267, 205, 205, fontpage_267_205_205), // '藍' -- '藍' - FONTDATA_ITEM(272, 204, 204, fontpage_272_204_204), // '行' -- '行' - FONTDATA_ITEM(272, 232, 232, fontpage_272_232_232), // '表' -- '表' - FONTDATA_ITEM(273, 171, 171, fontpage_273_171_171), // '被' -- '被' - FONTDATA_ITEM(273, 197, 197, fontpage_273_197_197), // '装' -- '装' - FONTDATA_ITEM(273, 221, 221, fontpage_273_221_221), // '裝' -- '裝' - FONTDATA_ITEM(274, 135, 135, fontpage_274_135_135), // '複' -- '複' - FONTDATA_ITEM(275, 210, 210, fontpage_275_210_210), // '角' -- '角' - FONTDATA_ITEM(276, 136, 136, fontpage_276_136_136), // '計' -- '計' - FONTDATA_ITEM(276, 138, 138, fontpage_276_138_138), // '訊' -- '訊' - FONTDATA_ITEM(276, 152, 152, fontpage_276_152_152), // '記' -- '記' - FONTDATA_ITEM(276, 173, 173, fontpage_276_173_173), // '設' -- '設' - FONTDATA_ITEM(276, 230, 230, fontpage_276_230_230), // '試' -- '試' - FONTDATA_ITEM(277, 141, 141, fontpage_277_141_141), // '認' -- '認' - FONTDATA_ITEM(277, 164, 164, fontpage_277_164_164), // '誤' -- '誤' - FONTDATA_ITEM(277, 191, 191, fontpage_277_191_191), // '調' -- '調' - FONTDATA_ITEM(277, 203, 203, fontpage_277_203_203), // '請' -- '請' - FONTDATA_ITEM(278, 240, 240, fontpage_278_240_240), // '議' -- '議' - FONTDATA_ITEM(279, 128, 128, fontpage_279_128_128), // '讀' -- '讀' - FONTDATA_ITEM(279, 138, 138, fontpage_279_138_138), // '變' -- '變' - FONTDATA_ITEM(281, 199, 199, fontpage_281_199_199), // '資' -- '資' - FONTDATA_ITEM(283, 221, 221, fontpage_283_221_221), // '距' -- '距' - FONTDATA_ITEM(285, 171, 171, fontpage_285_171_171), // '身' -- '身' - FONTDATA_ITEM(285, 202, 202, fontpage_285_202_202), // '車' -- '車' - FONTDATA_ITEM(285, 223, 223, fontpage_285_223_223), // '軟' -- '軟' - FONTDATA_ITEM(285, 248, 248, fontpage_285_248_248), // '軸' -- '軸' - FONTDATA_ITEM(286, 137, 137, fontpage_286_137_137), // '載' -- '載' - FONTDATA_ITEM(286, 175, 175, fontpage_286_175_175), // '輯' -- '輯' - FONTDATA_ITEM(286, 184, 184, fontpage_286_184_184), // '輸' -- '輸' - FONTDATA_ITEM(286, 201, 201, fontpage_286_201_201), // '轉' -- '轉' - FONTDATA_ITEM(286, 253, 253, fontpage_286_253_253), // '载' -- '载' - FONTDATA_ITEM(287, 209, 209, fontpage_287_209_209), // '近' -- '近' - FONTDATA_ITEM(287, 212, 212, fontpage_287_212_212), // '返' -- '返' - FONTDATA_ITEM(288, 128, 128, fontpage_288_128_128), // '退' -- '退' - FONTDATA_ITEM(288, 144, 144, fontpage_288_144_144), // '逐' -- '逐' - FONTDATA_ITEM(288, 159, 159, fontpage_288_159_159), // '速' -- '速' - FONTDATA_ITEM(288, 163, 163, fontpage_288_163_163), // '連' -- '連' - FONTDATA_ITEM(288, 178, 178, fontpage_288_178_178), // '進' -- '進' - FONTDATA_ITEM(288, 203, 203, fontpage_288_203_203), // '運' -- '運' - FONTDATA_ITEM(288, 212, 212, fontpage_288_212_212), // '達' -- '達' - FONTDATA_ITEM(288, 248, 248, fontpage_288_248_248), // '選' -- '選' - FONTDATA_ITEM(289, 132, 132, fontpage_289_132_132), // '還' -- '還' - FONTDATA_ITEM(289, 138, 138, fontpage_289_138_138), // '邊' -- '邊' - FONTDATA_ITEM(289, 232, 232, fontpage_289_232_232), // '部' -- '部' - FONTDATA_ITEM(291, 203, 203, fontpage_291_203_203), // '釋' -- '釋' - FONTDATA_ITEM(291, 205, 205, fontpage_291_205_205), // '重' -- '重' - FONTDATA_ITEM(291, 207, 207, fontpage_291_207_207), // '量' -- '量' - FONTDATA_ITEM(291, 221, 221, fontpage_291_221_221), // '針' -- '針' - FONTDATA_ITEM(292, 149, 149, fontpage_292_149_149), // '鈕' -- '鈕' - FONTDATA_ITEM(294, 175, 175, fontpage_294_175_175), // '錯' -- '錯' - FONTDATA_ITEM(294, 245, 245, fontpage_294_245_245), // '鍵' -- '鍵' - FONTDATA_ITEM(298, 247, 247, fontpage_298_247_247), // '長' -- '長' - FONTDATA_ITEM(299, 137, 137, fontpage_299_137_137), // '閉' -- '閉' - FONTDATA_ITEM(299, 139, 139, fontpage_299_139_139), // '開' -- '開' - FONTDATA_ITEM(299, 147, 147, fontpage_299_147_147), // '間' -- '間' - FONTDATA_ITEM(299, 220, 220, fontpage_299_220_220), // '關' -- '關' - FONTDATA_ITEM(300, 205, 205, fontpage_300_205_205), // '降' -- '降' - FONTDATA_ITEM(300, 228, 228, fontpage_300_228_228), // '除' -- '除' - FONTDATA_ITEM(301, 142, 142, fontpage_301_142_142), // '階' -- '階' - FONTDATA_ITEM(301, 168, 168, fontpage_301_168_168), // '隨' -- '隨' - FONTDATA_ITEM(301, 217, 217, fontpage_301_217_217), // '雙' -- '雙' - FONTDATA_ITEM(301, 226, 226, fontpage_301_226_226), // '離' -- '離' - FONTDATA_ITEM(301, 251, 251, fontpage_301_251_251), // '電' -- '電' - FONTDATA_ITEM(302, 210, 210, fontpage_302_210_210), // '青' -- '青' - FONTDATA_ITEM(302, 222, 222, fontpage_302_222_222), // '非' -- '非' - FONTDATA_ITEM(302, 226, 226, fontpage_302_226_226), // '面' -- '面' - FONTDATA_ITEM(304, 133, 133, fontpage_304_133_133), // '項' -- '項' - FONTDATA_ITEM(304, 144, 144, fontpage_304_144_144), // '預' -- '預' - FONTDATA_ITEM(304, 205, 205, fontpage_304_205_205), // '額' -- '額' - FONTDATA_ITEM(304, 222, 222, fontpage_304_222_222), // '類' -- '類' - FONTDATA_ITEM(305, 168, 168, fontpage_305_168_168), // '風' -- '風' - FONTDATA_ITEM(305, 253, 253, fontpage_305_253_253), // '飽' -- '飽' - FONTDATA_ITEM(306, 152, 152, fontpage_306_152_152), // '餘' -- '餘' - FONTDATA_ITEM(307, 172, 172, fontpage_307_172_172), // '馬' -- '馬' - FONTDATA_ITEM(308, 197, 197, fontpage_308_197_197), // '驅' -- '驅' - FONTDATA_ITEM(309, 212, 212, fontpage_309_212_212), // '體' -- '體' - FONTDATA_ITEM(309, 216, 216, fontpage_309_216_216), // '高' -- '高' - FONTDATA_ITEM(317, 195, 195, fontpage_317_195_195), // '黃' -- '黃' - FONTDATA_ITEM(317, 222, 222, fontpage_317_222_222), // '點' -- '點' - FONTDATA_ITEM(318, 202, 202, fontpage_318_202_202), // '齊' -- '齊' - FONTDATA_ITEM(510, 154, 154, fontpage_510_154_154), // ':' -- ':' + FONTDATA_ITEM(69, 191, 191, fontpage_69_191_191), // ' ⊿ ' - ' ⊿ ' + FONTDATA_ITEM(156, 128, 128, fontpage_156_128_128), // ' 一 ' - ' 一 ' + FONTDATA_ITEM(156, 137, 139, fontpage_156_137_139), // ' 三 ' - ' 下 ' + FONTDATA_ITEM(156, 141, 141, fontpage_156_141_141), // ' 不 ' - ' 不 ' + FONTDATA_ITEM(156, 166, 166, fontpage_156_166_166), // ' 並 ' - ' 並 ' + FONTDATA_ITEM(156, 173, 173, fontpage_156_173_173), // ' 中 ' - ' 中 ' + FONTDATA_ITEM(156, 187, 187, fontpage_156_187_187), // ' 主 ' - ' 主 ' + FONTDATA_ITEM(156, 203, 203, fontpage_156_203_203), // ' 之 ' - ' 之 ' + FONTDATA_ITEM(157, 164, 164, fontpage_157_164_164), // ' 交 ' - ' 交 ' + FONTDATA_ITEM(157, 174, 174, fontpage_157_174_174), // ' 亮 ' - ' 亮 ' + FONTDATA_ITEM(157, 228, 228, fontpage_157_228_228), // ' 令 ' - ' 令 ' + FONTDATA_ITEM(157, 246, 246, fontpage_157_246_246), // ' 件 ' - ' 件 ' + FONTDATA_ITEM(157, 253, 253, fontpage_157_253_253), // ' 份 ' - ' 份 ' + FONTDATA_ITEM(158, 145, 145, fontpage_158_145_145), // ' 休 ' - ' 休 ' + FONTDATA_ITEM(158, 205, 206, fontpage_158_205_206), // ' 位 ' - ' 低 ' + FONTDATA_ITEM(158, 220, 220, fontpage_158_220_220), // ' 作 ' - ' 作 ' + FONTDATA_ITEM(159, 155, 155, fontpage_159_155_155), // ' 供 ' - ' 供 ' + FONTDATA_ITEM(159, 221, 221, fontpage_159_221_221), // ' 保 ' - ' 保 ' + FONTDATA_ITEM(159, 225, 225, fontpage_159_225_225), // ' 信 ' - ' 信 ' + FONTDATA_ITEM(160, 139, 139, fontpage_160_139_139), // ' 個 ' - ' 個 ' + FONTDATA_ITEM(160, 188, 188, fontpage_160_188_188), // ' 值 ' - ' 值 ' + FONTDATA_ITEM(160, 207, 207, fontpage_160_207_207), // ' 偏 ' - ' 偏 ' + FONTDATA_ITEM(160, 220, 220, fontpage_160_220_220), // ' 停 ' - ' 停 ' + FONTDATA_ITEM(160, 245, 245, fontpage_160_245_245), // ' 偵 ' - ' 偵 ' + FONTDATA_ITEM(161, 153, 153, fontpage_161_153_153), // ' 備 ' - ' 備 ' + FONTDATA_ITEM(161, 179, 179, fontpage_161_179_179), // ' 傳 ' - ' 傳 ' + FONTDATA_ITEM(161, 190, 190, fontpage_161_190_190), // ' 傾 ' - ' 傾 ' + FONTDATA_ITEM(162, 178, 178, fontpage_162_178_178), // ' 儲 ' - ' 儲 ' + FONTDATA_ITEM(162, 197, 197, fontpage_162_197_197), // ' 充 ' - ' 充 ' + FONTDATA_ITEM(162, 200, 201, fontpage_162_200_201), // ' 先 ' - ' 光 ' + FONTDATA_ITEM(162, 229, 229, fontpage_162_229_229), // ' 入 ' - ' 入 ' + FONTDATA_ITEM(162, 232, 232, fontpage_162_232_232), // ' 全 ' - ' 全 ' + FONTDATA_ITEM(162, 241, 241, fontpage_162_241_241), // ' 共 ' - ' 共 ' + FONTDATA_ITEM(162, 247, 247, fontpage_162_247_247), // ' 具 ' - ' 具 ' + FONTDATA_ITEM(163, 151, 151, fontpage_163_151_151), // ' 冗 ' - ' 冗 ' + FONTDATA_ITEM(163, 183, 183, fontpage_163_183_183), // ' 冷 ' - ' 冷 ' + FONTDATA_ITEM(163, 198, 198, fontpage_163_198_198), // ' 准 ' - ' 准 ' + FONTDATA_ITEM(163, 250, 250, fontpage_163_250_250), // ' 出 ' - ' 出 ' + FONTDATA_ITEM(164, 134, 134, fontpage_164_134_134), // ' 分 ' - ' 分 ' + FONTDATA_ITEM(164, 151, 151, fontpage_164_151_151), // ' 列 ' - ' 列 ' + FONTDATA_ITEM(164, 157, 157, fontpage_164_157_157), // ' 初 ' - ' 初 ' + FONTDATA_ITEM(164, 176, 176, fontpage_164_176_176), // ' 到 ' - ' 到 ' + FONTDATA_ITEM(164, 182, 183, fontpage_164_182_183), // ' 制 ' - ' 刷 ' + FONTDATA_ITEM(164, 245, 245, fontpage_164_245_245), // ' 創 ' - ' 創 ' + FONTDATA_ITEM(165, 155, 155, fontpage_165_155_155), // ' 力 ' - ' 力 ' + FONTDATA_ITEM(165, 160, 160, fontpage_165_160_160), // ' 加 ' - ' 加 ' + FONTDATA_ITEM(165, 213, 213, fontpage_165_213_213), // ' 動 ' - ' 動 ' + FONTDATA_ITEM(166, 150, 150, fontpage_166_150_150), // ' 化 ' - ' 化 ' + FONTDATA_ITEM(166, 202, 202, fontpage_166_202_202), // ' 半 ' - ' 半 ' + FONTDATA_ITEM(166, 212, 212, fontpage_166_212_212), // ' 協 ' - ' 協 ' + FONTDATA_ITEM(166, 225, 225, fontpage_166_225_225), // ' 卡 ' - ' 卡 ' + FONTDATA_ITEM(166, 240, 240, fontpage_166_240_240), // ' 印 ' - ' 印 ' + FONTDATA_ITEM(166, 248, 248, fontpage_166_248_248), // ' 卸 ' - ' 卸 ' + FONTDATA_ITEM(166, 251, 251, fontpage_166_251_251), // ' 卻 ' - ' 卻 ' + FONTDATA_ITEM(167, 159, 159, fontpage_167_159_159), // ' 原 ' - ' 原 ' + FONTDATA_ITEM(167, 205, 205, fontpage_167_205_205), // ' 反 ' - ' 反 ' + FONTDATA_ITEM(167, 214, 214, fontpage_167_214_214), // ' 取 ' - ' 取 ' + FONTDATA_ITEM(167, 240, 240, fontpage_167_240_240), // ' 台 ' - ' 台 ' + FONTDATA_ITEM(168, 136, 136, fontpage_168_136_136), // ' 合 ' - ' 合 ' + FONTDATA_ITEM(168, 166, 166, fontpage_168_166_166), // ' 否 ' - ' 否 ' + FONTDATA_ITEM(168, 202, 202, fontpage_168_202_202), // ' 告 ' - ' 告 ' + FONTDATA_ITEM(168, 253, 253, fontpage_168_253_253), // ' 命 ' - ' 命 ' + FONTDATA_ITEM(169, 140, 140, fontpage_169_140_140), // ' 和 ' - ' 和 ' + FONTDATA_ITEM(170, 223, 223, fontpage_170_223_223), // ' 啟 ' - ' 啟 ' + FONTDATA_ITEM(171, 174, 174, fontpage_171_174_174), // ' 單 ' - ' 單 ' + FONTDATA_ITEM(172, 180, 180, fontpage_172_180_180), // ' 嘴 ' - ' 嘴 ' + FONTDATA_ITEM(172, 232, 232, fontpage_172_232_232), // ' 器 ' - ' 器 ' + FONTDATA_ITEM(172, 244, 244, fontpage_172_244_244), // ' 噴 ' - ' 噴 ' + FONTDATA_ITEM(173, 222, 222, fontpage_173_222_222), // ' 回 ' - ' 回 ' + FONTDATA_ITEM(173, 224, 224, fontpage_173_224_224), // ' 因 ' - ' 因 ' + FONTDATA_ITEM(173, 250, 250, fontpage_173_250_250), // ' 固 ' - ' 固 ' + FONTDATA_ITEM(174, 150, 150, fontpage_174_150_150), // ' 圖 ' - ' 圖 ' + FONTDATA_ITEM(174, 168, 168, fontpage_174_168_168), // ' 在 ' - ' 在 ' + FONTDATA_ITEM(175, 139, 139, fontpage_175_139_139), // ' 型 ' - ' 型 ' + FONTDATA_ITEM(175, 247, 247, fontpage_175_247_247), // ' 執 ' - ' 執 ' + FONTDATA_ITEM(176, 202, 202, fontpage_176_202_202), // ' 塊 ' - ' 塊 ' + FONTDATA_ITEM(176, 235, 235, fontpage_176_235_235), // ' 填 ' - ' 填 ' + FONTDATA_ITEM(177, 138, 138, fontpage_177_138_138), // ' 墊 ' - ' 墊 ' + FONTDATA_ITEM(178, 150, 150, fontpage_178_150_150), // ' 外 ' - ' 外 ' + FONTDATA_ITEM(178, 154, 154, fontpage_178_154_154), // ' 多 ' - ' 多 ' + FONTDATA_ITEM(178, 160, 160, fontpage_178_160_160), // ' 夠 ' - ' 夠 ' + FONTDATA_ITEM(178, 167, 167, fontpage_178_167_167), // ' 大 ' - ' 大 ' + FONTDATA_ITEM(178, 169, 169, fontpage_178_169_169), // ' 天 ' - ' 天 ' + FONTDATA_ITEM(178, 177, 177, fontpage_178_177_177), // ' 失 ' - ' 失 ' + FONTDATA_ITEM(179, 203, 203, fontpage_179_203_203), // ' 始 ' - ' 始 ' + FONTDATA_ITEM(181, 146, 146, fontpage_181_146_146), // ' 媒 ' - ' 媒 ' + FONTDATA_ITEM(182, 208, 208, fontpage_182_208_208), // ' 子 ' - ' 子 ' + FONTDATA_ITEM(182, 216, 216, fontpage_182_216_216), // ' 存 ' - ' 存 ' + FONTDATA_ITEM(183, 137, 137, fontpage_183_137_137), // ' 安 ' - ' 安 ' + FONTDATA_ITEM(183, 140, 140, fontpage_183_140_140), // ' 完 ' - ' 完 ' + FONTDATA_ITEM(183, 154, 154, fontpage_183_154_154), // ' 定 ' - ' 定 ' + FONTDATA_ITEM(183, 162, 162, fontpage_183_162_162), // ' 客 ' - ' 客 ' + FONTDATA_ITEM(183, 185, 185, fontpage_183_185_185), // ' 容 ' - ' 容 ' + FONTDATA_ITEM(183, 248, 248, fontpage_183_248_248), // ' 寸 ' - ' 寸 ' + FONTDATA_ITEM(184, 141, 141, fontpage_184_141_141), // ' 對 ' - ' 對 ' + FONTDATA_ITEM(184, 143, 143, fontpage_184_143_143), // ' 小 ' - ' 小 ' + FONTDATA_ITEM(184, 177, 177, fontpage_184_177_177), // ' 就 ' - ' 就 ' + FONTDATA_ITEM(184, 186, 186, fontpage_184_186_186), // ' 尺 ' - ' 尺 ' + FONTDATA_ITEM(187, 229, 229, fontpage_187_229_229), // ' 工 ' - ' 工 ' + FONTDATA_ITEM(187, 238, 238, fontpage_187_238_238), // ' 差 ' - ' 差 ' + FONTDATA_ITEM(187, 242, 242, fontpage_187_242_242), // ' 已 ' - ' 已 ' + FONTDATA_ITEM(188, 243, 243, fontpage_188_243_243), // ' 平 ' - ' 平 ' + FONTDATA_ITEM(189, 138, 138, fontpage_189_138_138), // ' 床 ' - ' 床 ' + FONTDATA_ITEM(189, 166, 166, fontpage_189_166_166), // ' 度 ' - ' 度 ' + FONTDATA_ITEM(189, 226, 226, fontpage_189_226_226), // ' 廢 ' - ' 廢 ' + FONTDATA_ITEM(189, 250, 250, fontpage_189_250_250), // ' 建 ' - ' 建 ' + FONTDATA_ITEM(190, 149, 149, fontpage_190_149_149), // ' 引 ' - ' 引 ' + FONTDATA_ITEM(191, 133, 133, fontpage_191_133_133), // ' 待 ' - ' 待 ' + FONTDATA_ITEM(191, 140, 140, fontpage_191_140_140), // ' 後 ' - ' 後 ' + FONTDATA_ITEM(191, 145, 145, fontpage_191_145_145), // ' 徑 ' - ' 徑 ' + FONTDATA_ITEM(191, 158, 158, fontpage_191_158_158), // ' 從 ' - ' 從 ' + FONTDATA_ITEM(191, 169, 169, fontpage_191_169_169), // ' 復 ' - ' 復 ' + FONTDATA_ITEM(191, 174, 174, fontpage_191_174_174), // ' 微 ' - ' 微 ' + FONTDATA_ITEM(191, 195, 195, fontpage_191_195_195), // ' 心 ' - ' 心 ' + FONTDATA_ITEM(192, 167, 167, fontpage_192_167_167), // ' 性 ' - ' 性 ' + FONTDATA_ITEM(192, 226, 226, fontpage_192_226_226), // ' 恢 ' - ' 恢 ' + FONTDATA_ITEM(192, 239, 239, fontpage_192_239_239), // ' 息 ' - ' 息 ' + FONTDATA_ITEM(195, 182, 182, fontpage_195_182_182), // ' 憶 ' - ' 憶 ' + FONTDATA_ITEM(195, 201, 201, fontpage_195_201_201), // ' 應 ' - ' 應 ' + FONTDATA_ITEM(196, 144, 144, fontpage_196_144_144), // ' 成 ' - ' 成 ' + FONTDATA_ITEM(196, 182, 182, fontpage_196_182_182), // ' 戶 ' - ' 戶 ' + FONTDATA_ITEM(196, 192, 192, fontpage_196_192_192), // ' 所 ' - ' 所 ' + FONTDATA_ITEM(196, 199, 199, fontpage_196_199_199), // ' 扇 ' - ' 扇 ' + FONTDATA_ITEM(196, 203, 203, fontpage_196_203_203), // ' 手 ' - ' 手 ' + FONTDATA_ITEM(196, 211, 211, fontpage_196_211_211), // ' 打 ' - ' 打 ' + FONTDATA_ITEM(196, 249, 249, fontpage_196_249_249), // ' 批 ' - ' 批 ' + FONTDATA_ITEM(197, 150, 150, fontpage_197_150_150), // ' 抖 ' - ' 抖 ' + FONTDATA_ITEM(197, 189, 189, fontpage_197_189_189), // ' 抽 ' - ' 抽 ' + FONTDATA_ITEM(197, 212, 212, fontpage_197_212_212), // ' 拔 ' - ' 拔 ' + FONTDATA_ITEM(198, 130, 130, fontpage_198_130_130), // ' 挂 ' - ' 挂 ' + FONTDATA_ITEM(198, 137, 137, fontpage_198_137_137), // ' 按 ' - ' 按 ' + FONTDATA_ITEM(199, 137, 137, fontpage_199_137_137), // ' 掉 ' - ' 掉 ' + FONTDATA_ITEM(199, 162, 162, fontpage_199_162_162), // ' 探 ' - ' 探 ' + FONTDATA_ITEM(199, 165, 165, fontpage_199_165_165), // ' 接 ' - ' 接 ' + FONTDATA_ITEM(199, 167, 167, fontpage_199_167_167), // ' 控 ' - ' 控 ' + FONTDATA_ITEM(199, 208, 208, fontpage_199_208_208), // ' 提 ' - ' 提 ' + FONTDATA_ITEM(199, 210, 210, fontpage_199_210_210), // ' 插 ' - ' 插 ' + FONTDATA_ITEM(199, 219, 219, fontpage_199_219_219), // ' 換 ' - ' 換 ' + FONTDATA_ITEM(201, 199, 199, fontpage_201_199_199), // ' 擇 ' - ' 擇 ' + FONTDATA_ITEM(201, 202, 203, fontpage_201_202_203), // ' 擊 ' - ' 擋 ' + FONTDATA_ITEM(201, 224, 224, fontpage_201_224_224), // ' 擠 ' - ' 擠 ' + FONTDATA_ITEM(202, 182, 182, fontpage_202_182_182), // ' 收 ' - ' 收 ' + FONTDATA_ITEM(202, 190, 190, fontpage_202_190_190), // ' 放 ' - ' 放 ' + FONTDATA_ITEM(202, 215, 215, fontpage_202_215_215), // ' 敗 ' - ' 敗 ' + FONTDATA_ITEM(202, 244, 244, fontpage_202_244_244), // ' 整 ' - ' 整 ' + FONTDATA_ITEM(202, 248, 248, fontpage_202_248_248), // ' 數 ' - ' 數 ' + FONTDATA_ITEM(203, 153, 153, fontpage_203_153_153), // ' 料 ' - ' 料 ' + FONTDATA_ITEM(203, 156, 156, fontpage_203_156_156), // ' 斜 ' - ' 斜 ' + FONTDATA_ITEM(203, 176, 176, fontpage_203_176_176), // ' 新 ' - ' 新 ' + FONTDATA_ITEM(203, 183, 183, fontpage_203_183_183), // ' 斷 ' - ' 斷 ' + FONTDATA_ITEM(203, 188, 188, fontpage_203_188_188), // ' 於 ' - ' 於 ' + FONTDATA_ITEM(204, 135, 135, fontpage_204_135_135), // ' 昇 ' - ' 昇 ' + FONTDATA_ITEM(204, 142, 142, fontpage_204_142_142), // ' 明 ' - ' 明 ' + FONTDATA_ITEM(204, 175, 175, fontpage_204_175_175), // ' 是 ' - ' 是 ' + FONTDATA_ITEM(204, 194, 194, fontpage_204_194_194), // ' 時 ' - ' 時 ' + FONTDATA_ITEM(205, 171, 171, fontpage_205_171_171), // ' 暫 ' - ' 暫 ' + FONTDATA_ITEM(205, 244, 244, fontpage_205_244_244), // ' 更 ' - ' 更 ' + FONTDATA_ITEM(206, 128, 128, fontpage_206_128_128), // ' 最 ' - ' 最 ' + FONTDATA_ITEM(206, 137, 137, fontpage_206_137_137), // ' 有 ' - ' 有 ' + FONTDATA_ITEM(206, 172, 172, fontpage_206_172_172), // ' 本 ' - ' 本 ' + FONTDATA_ITEM(206, 255, 255, fontpage_206_255_255), // ' 板 ' - ' 板 ' + FONTDATA_ITEM(207, 241, 241, fontpage_207_241_241), // ' 柱 ' - ' 柱 ' + FONTDATA_ITEM(208, 161, 161, fontpage_208_161_161), // ' 校 ' - ' 校 ' + FONTDATA_ITEM(208, 188, 188, fontpage_208_188_188), // ' 格 ' - ' 格 ' + FONTDATA_ITEM(209, 157, 157, fontpage_209_157_157), // ' 條 ' - ' 條 ' + FONTDATA_ITEM(209, 196, 196, fontpage_209_196_196), // ' 棄 ' - ' 棄 ' + FONTDATA_ITEM(211, 253, 253, fontpage_211_253_253), // ' 槽 ' - ' 槽 ' + FONTDATA_ITEM(212, 217, 217, fontpage_212_217_217), // ' 橙 ' - ' 橙 ' + FONTDATA_ITEM(212, 223, 223, fontpage_212_223_223), // ' 機 ' - ' 機 ' + FONTDATA_ITEM(213, 162, 162, fontpage_213_162_162), // ' 檢 ' - ' 檢 ' + FONTDATA_ITEM(214, 226, 227, fontpage_214_226_227), // ' 止 ' - ' 正 ' + FONTDATA_ITEM(214, 229, 229, fontpage_214_229_229), // ' 步 ' - ' 步 ' + FONTDATA_ITEM(214, 248, 248, fontpage_214_248_248), // ' 歸 ' - ' 歸 ' + FONTDATA_ITEM(215, 188, 188, fontpage_215_188_188), // ' 殼 ' - ' 殼 ' + FONTDATA_ITEM(215, 212, 212, fontpage_215_212_212), // ' 比 ' - ' 比 ' + FONTDATA_ITEM(217, 146, 146, fontpage_217_146_146), // ' 沒 ' - ' 沒 ' + FONTDATA_ITEM(219, 136, 136, fontpage_219_136_136), // ' 消 ' - ' 消 ' + FONTDATA_ITEM(219, 225, 225, fontpage_219_225_225), // ' 淡 ' - ' 淡 ' + FONTDATA_ITEM(220, 133, 133, fontpage_220_133_133), // ' 清 ' - ' 清 ' + FONTDATA_ITEM(220, 172, 172, fontpage_220_172_172), // ' 測 ' - ' 測 ' + FONTDATA_ITEM(221, 144, 144, fontpage_221_144_144), // ' 源 ' - ' 源 ' + FONTDATA_ITEM(221, 150, 150, fontpage_221_150_150), // ' 準 ' - ' 準 ' + FONTDATA_ITEM(221, 171, 171, fontpage_221_171_171), // ' 溫 ' - ' 溫 ' + FONTDATA_ITEM(223, 192, 192, fontpage_223_192_192), // ' 激 ' - ' 激 ' + FONTDATA_ITEM(226, 161, 161, fontpage_226_161_161), // ' 無 ' - ' 無 ' + FONTDATA_ITEM(227, 177, 177, fontpage_227_177_177), // ' 熱 ' - ' 熱 ' + FONTDATA_ITEM(227, 200, 200, fontpage_227_200_200), // ' 燈 ' - ' 燈 ' + FONTDATA_ITEM(228, 199, 200, fontpage_228_199_200), // ' 片 ' - ' 版 ' + FONTDATA_ITEM(228, 233, 233, fontpage_228_233_233), // ' 物 ' - ' 物 ' + FONTDATA_ITEM(231, 135, 135, fontpage_231_135_135), // ' 率 ' - ' 率 ' + FONTDATA_ITEM(234, 168, 168, fontpage_234_168_168), // ' 用 ' - ' 用 ' + FONTDATA_ITEM(234, 204, 204, fontpage_234_204_204), // ' 界 ' - ' 界 ' + FONTDATA_ITEM(236, 253, 253, fontpage_236_253_253), // ' 白 ' - ' 白 ' + FONTDATA_ITEM(237, 132, 132, fontpage_237_132_132), // ' 的 ' - ' 的 ' + FONTDATA_ITEM(237, 227, 227, fontpage_237_227_227), // ' 監 ' - ' 監 ' + FONTDATA_ITEM(237, 244, 244, fontpage_237_244_244), // ' 直 ' - ' 直 ' + FONTDATA_ITEM(238, 160, 160, fontpage_238_160_160), // ' 眠 ' - ' 眠 ' + FONTDATA_ITEM(240, 141, 141, fontpage_240_141_141), // ' 砍 ' - ' 砍 ' + FONTDATA_ITEM(241, 159, 159, fontpage_241_159_159), // ' 碟 ' - ' 碟 ' + FONTDATA_ITEM(241, 186, 186, fontpage_241_186_186), // ' 確 ' - ' 確 ' + FONTDATA_ITEM(243, 251, 251, fontpage_243_251_251), // ' 移 ' - ' 移 ' + FONTDATA_ITEM(244, 205, 205, fontpage_244_205_205), // ' 積 ' - ' 積 ' + FONTDATA_ITEM(245, 239, 239, fontpage_245_239_239), // ' 端 ' - ' 端 ' + FONTDATA_ITEM(246, 201, 201, fontpage_246_201_201), // ' 等 ' - ' 等 ' + FONTDATA_ITEM(247, 161, 161, fontpage_247_161_161), // ' 管 ' - ' 管 ' + FONTDATA_ITEM(247, 177, 177, fontpage_247_177_177), // ' 箱 ' - ' 箱 ' + FONTDATA_ITEM(249, 251, 251, fontpage_249_251_251), // ' 系 ' - ' 系 ' + FONTDATA_ITEM(250, 133, 133, fontpage_250_133_133), // ' 紅 ' - ' 紅 ' + FONTDATA_ITEM(250, 162, 162, fontpage_250_162_162), // ' 索 ' - ' 索 ' + FONTDATA_ITEM(250, 171, 171, fontpage_250_171_171), // ' 紫 ' - ' 紫 ' + FONTDATA_ITEM(250, 176, 176, fontpage_250_176_176), // ' 細 ' - ' 細 ' + FONTDATA_ITEM(250, 194, 194, fontpage_250_194_194), // ' 終 ' - ' 終 ' + FONTDATA_ITEM(250, 241, 242, fontpage_250_241_242), // ' 統 ' - ' 絲 ' + FONTDATA_ITEM(251, 160, 160, fontpage_251_160_160), // ' 綠 ' - ' 綠 ' + FONTDATA_ITEM(251, 178, 178, fontpage_251_178_178), // ' 網 ' - ' 網 ' + FONTDATA_ITEM(251, 210, 210, fontpage_251_210_210), // ' 緒 ' - ' 緒 ' + FONTDATA_ITEM(251, 218, 218, fontpage_251_218_218), // ' 線 ' - ' 線 ' + FONTDATA_ITEM(251, 232, 232, fontpage_251_232_232), // ' 編 ' - ' 編 ' + FONTDATA_ITEM(252, 174, 174, fontpage_252_174_174), // ' 縮 ' - ' 縮 ' + FONTDATA_ITEM(252, 189, 189, fontpage_252_189_189), // ' 總 ' - ' 總 ' + FONTDATA_ITEM(252, 252, 252, fontpage_252_252_252), // ' 繼 ' - ' 繼 ' + FONTDATA_ITEM(253, 140, 140, fontpage_253_140_140), // ' 續 ' - ' 續 ' + FONTDATA_ITEM(253, 162, 162, fontpage_253_162_162), // ' 红 ' - ' 红 ' + FONTDATA_ITEM(254, 238, 238, fontpage_254_238_238), // ' 置 ' - ' 置 ' + FONTDATA_ITEM(254, 242, 242, fontpage_254_242_242), // ' 署 ' - ' 署 ' + FONTDATA_ITEM(256, 240, 240, fontpage_256_240_240), // ' 聰 ' - ' 聰 ' + FONTDATA_ITEM(259, 234, 234, fontpage_259_234_234), // ' 自 ' - ' 自 ' + FONTDATA_ITEM(267, 205, 205, fontpage_267_205_205), // ' 藍 ' - ' 藍 ' + FONTDATA_ITEM(272, 204, 204, fontpage_272_204_204), // ' 行 ' - ' 行 ' + FONTDATA_ITEM(272, 232, 232, fontpage_272_232_232), // ' 表 ' - ' 表 ' + FONTDATA_ITEM(273, 171, 171, fontpage_273_171_171), // ' 被 ' - ' 被 ' + FONTDATA_ITEM(273, 197, 197, fontpage_273_197_197), // ' 装 ' - ' 装 ' + FONTDATA_ITEM(273, 221, 221, fontpage_273_221_221), // ' 裝 ' - ' 裝 ' + FONTDATA_ITEM(274, 135, 135, fontpage_274_135_135), // ' 複 ' - ' 複 ' + FONTDATA_ITEM(275, 210, 210, fontpage_275_210_210), // ' 角 ' - ' 角 ' + FONTDATA_ITEM(276, 136, 136, fontpage_276_136_136), // ' 計 ' - ' 計 ' + FONTDATA_ITEM(276, 138, 138, fontpage_276_138_138), // ' 訊 ' - ' 訊 ' + FONTDATA_ITEM(276, 152, 152, fontpage_276_152_152), // ' 記 ' - ' 記 ' + FONTDATA_ITEM(276, 173, 173, fontpage_276_173_173), // ' 設 ' - ' 設 ' + FONTDATA_ITEM(276, 230, 230, fontpage_276_230_230), // ' 試 ' - ' 試 ' + FONTDATA_ITEM(277, 141, 141, fontpage_277_141_141), // ' 認 ' - ' 認 ' + FONTDATA_ITEM(277, 164, 164, fontpage_277_164_164), // ' 誤 ' - ' 誤 ' + FONTDATA_ITEM(277, 191, 191, fontpage_277_191_191), // ' 調 ' - ' 調 ' + FONTDATA_ITEM(277, 203, 203, fontpage_277_203_203), // ' 請 ' - ' 請 ' + FONTDATA_ITEM(278, 240, 240, fontpage_278_240_240), // ' 議 ' - ' 議 ' + FONTDATA_ITEM(279, 128, 128, fontpage_279_128_128), // ' 讀 ' - ' 讀 ' + FONTDATA_ITEM(279, 138, 138, fontpage_279_138_138), // ' 變 ' - ' 變 ' + FONTDATA_ITEM(281, 199, 199, fontpage_281_199_199), // ' 資 ' - ' 資 ' + FONTDATA_ITEM(283, 221, 221, fontpage_283_221_221), // ' 距 ' - ' 距 ' + FONTDATA_ITEM(285, 171, 171, fontpage_285_171_171), // ' 身 ' - ' 身 ' + FONTDATA_ITEM(285, 202, 202, fontpage_285_202_202), // ' 車 ' - ' 車 ' + FONTDATA_ITEM(285, 223, 223, fontpage_285_223_223), // ' 軟 ' - ' 軟 ' + FONTDATA_ITEM(285, 248, 248, fontpage_285_248_248), // ' 軸 ' - ' 軸 ' + FONTDATA_ITEM(286, 137, 137, fontpage_286_137_137), // ' 載 ' - ' 載 ' + FONTDATA_ITEM(286, 175, 175, fontpage_286_175_175), // ' 輯 ' - ' 輯 ' + FONTDATA_ITEM(286, 184, 184, fontpage_286_184_184), // ' 輸 ' - ' 輸 ' + FONTDATA_ITEM(286, 201, 201, fontpage_286_201_201), // ' 轉 ' - ' 轉 ' + FONTDATA_ITEM(286, 253, 253, fontpage_286_253_253), // ' 载 ' - ' 载 ' + FONTDATA_ITEM(287, 209, 209, fontpage_287_209_209), // ' 近 ' - ' 近 ' + FONTDATA_ITEM(287, 212, 212, fontpage_287_212_212), // ' 返 ' - ' 返 ' + FONTDATA_ITEM(288, 128, 128, fontpage_288_128_128), // ' 退 ' - ' 退 ' + FONTDATA_ITEM(288, 144, 144, fontpage_288_144_144), // ' 逐 ' - ' 逐 ' + FONTDATA_ITEM(288, 159, 159, fontpage_288_159_159), // ' 速 ' - ' 速 ' + FONTDATA_ITEM(288, 163, 163, fontpage_288_163_163), // ' 連 ' - ' 連 ' + FONTDATA_ITEM(288, 178, 178, fontpage_288_178_178), // ' 進 ' - ' 進 ' + FONTDATA_ITEM(288, 203, 203, fontpage_288_203_203), // ' 運 ' - ' 運 ' + FONTDATA_ITEM(288, 212, 212, fontpage_288_212_212), // ' 達 ' - ' 達 ' + FONTDATA_ITEM(288, 248, 248, fontpage_288_248_248), // ' 選 ' - ' 選 ' + FONTDATA_ITEM(289, 132, 132, fontpage_289_132_132), // ' 還 ' - ' 還 ' + FONTDATA_ITEM(289, 138, 138, fontpage_289_138_138), // ' 邊 ' - ' 邊 ' + FONTDATA_ITEM(289, 232, 232, fontpage_289_232_232), // ' 部 ' - ' 部 ' + FONTDATA_ITEM(291, 203, 203, fontpage_291_203_203), // ' 釋 ' - ' 釋 ' + FONTDATA_ITEM(291, 205, 205, fontpage_291_205_205), // ' 重 ' - ' 重 ' + FONTDATA_ITEM(291, 207, 207, fontpage_291_207_207), // ' 量 ' - ' 量 ' + FONTDATA_ITEM(291, 221, 221, fontpage_291_221_221), // ' 針 ' - ' 針 ' + FONTDATA_ITEM(292, 149, 149, fontpage_292_149_149), // ' 鈕 ' - ' 鈕 ' + FONTDATA_ITEM(294, 175, 175, fontpage_294_175_175), // ' 錯 ' - ' 錯 ' + FONTDATA_ITEM(294, 245, 245, fontpage_294_245_245), // ' 鍵 ' - ' 鍵 ' + FONTDATA_ITEM(298, 247, 247, fontpage_298_247_247), // ' 長 ' - ' 長 ' + FONTDATA_ITEM(299, 137, 137, fontpage_299_137_137), // ' 閉 ' - ' 閉 ' + FONTDATA_ITEM(299, 139, 139, fontpage_299_139_139), // ' 開 ' - ' 開 ' + FONTDATA_ITEM(299, 147, 147, fontpage_299_147_147), // ' 間 ' - ' 間 ' + FONTDATA_ITEM(299, 220, 220, fontpage_299_220_220), // ' 關 ' - ' 關 ' + FONTDATA_ITEM(300, 205, 205, fontpage_300_205_205), // ' 降 ' - ' 降 ' + FONTDATA_ITEM(300, 228, 228, fontpage_300_228_228), // ' 除 ' - ' 除 ' + FONTDATA_ITEM(301, 142, 142, fontpage_301_142_142), // ' 階 ' - ' 階 ' + FONTDATA_ITEM(301, 168, 168, fontpage_301_168_168), // ' 隨 ' - ' 隨 ' + FONTDATA_ITEM(301, 217, 217, fontpage_301_217_217), // ' 雙 ' - ' 雙 ' + FONTDATA_ITEM(301, 226, 226, fontpage_301_226_226), // ' 離 ' - ' 離 ' + FONTDATA_ITEM(301, 251, 251, fontpage_301_251_251), // ' 電 ' - ' 電 ' + FONTDATA_ITEM(302, 210, 210, fontpage_302_210_210), // ' 青 ' - ' 青 ' + FONTDATA_ITEM(302, 222, 222, fontpage_302_222_222), // ' 非 ' - ' 非 ' + FONTDATA_ITEM(302, 226, 226, fontpage_302_226_226), // ' 面 ' - ' 面 ' + FONTDATA_ITEM(304, 133, 133, fontpage_304_133_133), // ' 項 ' - ' 項 ' + FONTDATA_ITEM(304, 144, 144, fontpage_304_144_144), // ' 預 ' - ' 預 ' + FONTDATA_ITEM(304, 205, 205, fontpage_304_205_205), // ' 額 ' - ' 額 ' + FONTDATA_ITEM(304, 222, 222, fontpage_304_222_222), // ' 類 ' - ' 類 ' + FONTDATA_ITEM(305, 168, 168, fontpage_305_168_168), // ' 風 ' - ' 風 ' + FONTDATA_ITEM(305, 253, 253, fontpage_305_253_253), // ' 飽 ' - ' 飽 ' + FONTDATA_ITEM(306, 152, 152, fontpage_306_152_152), // ' 餘 ' - ' 餘 ' + FONTDATA_ITEM(307, 172, 172, fontpage_307_172_172), // ' 馬 ' - ' 馬 ' + FONTDATA_ITEM(308, 197, 197, fontpage_308_197_197), // ' 驅 ' - ' 驅 ' + FONTDATA_ITEM(309, 212, 212, fontpage_309_212_212), // ' 體 ' - ' 體 ' + FONTDATA_ITEM(309, 216, 216, fontpage_309_216_216), // ' 高 ' - ' 高 ' + FONTDATA_ITEM(317, 195, 195, fontpage_317_195_195), // ' 黃 ' - ' 黃 ' + FONTDATA_ITEM(317, 222, 222, fontpage_317_222_222), // ' 點 ' - ' 點 ' + FONTDATA_ITEM(318, 202, 202, fontpage_318_202_202), // ' 齊 ' - ' 齊 ' + FONTDATA_ITEM(510, 154, 154, fontpage_510_154_154), // ' : ' - ' : ' }; diff --git a/Marlin/src/lcd/language/language_an.h b/Marlin/src/lcd/language/language_an.h index 585db76a72..c580de2b8f 100644 --- a/Marlin/src/lcd/language/language_an.h +++ b/Marlin/src/lcd/language/language_an.h @@ -45,198 +45,186 @@ namespace LanguageNarrow_an { constexpr uint8_t CHARSIZE = 1; LSTR LANGUAGE = _UxGT("Aragonese"); - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" parada."); - LSTR MSG_MEDIA_INSERTED = _UxGT("Tarcheta mesa"); - LSTR MSG_MEDIA_REMOVED = _UxGT("Tarcheta sacada"); - LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Max length 8 characters - LSTR MSG_MAIN_MENU = _UxGT("Menu prencipal"); - LSTR MSG_DISABLE_STEPPERS = _UxGT("Amortar motors"); - LSTR MSG_HOMING = _UxGT("Orichen"); - LSTR MSG_AUTO_HOME = _UxGT("Levar a l'orichen"); - LSTR MSG_AUTO_HOME_X = _UxGT("Orichen X"); - LSTR MSG_AUTO_HOME_Y = _UxGT("Orichen Y"); - LSTR MSG_AUTO_HOME_Z = _UxGT("Orichen Z"); - LSTR MSG_LEVEL_BED_HOMING = _UxGT("Orichen XYZ"); - LSTR MSG_LEVEL_BED_WAITING = _UxGT("Encetar (pretar)"); - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Vinient punto"); - LSTR MSG_LEVEL_BED_DONE = _UxGT("Nivelacion feita!"); - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Achustar desfases"); - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Desfase aplicau"); - - LSTR MSG_PREHEAT_1 = _UxGT("Precalentar ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Precalentar ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Boquilla"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Boquilla ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Tot"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Base"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Conf"); - - LSTR MSG_PREHEAT_M = _UxGT("Precalentar $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Precalentar $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Precal. $ Boquilla"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Precal. $ Boquilla ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Precalentar $ Tot"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Precalentar $ Base"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Precalentar $ Conf"); - - LSTR MSG_COOLDOWN = _UxGT("Enfriar"); - LSTR MSG_SWITCH_PS_ON = _UxGT("Enchegar Fuent"); - LSTR MSG_SWITCH_PS_OFF = _UxGT("Amortar Fuent"); - LSTR MSG_EXTRUDE = _UxGT("Extruir"); - LSTR MSG_RETRACT = _UxGT("Retraer"); - LSTR MSG_MOVE_AXIS = _UxGT("Mover Eixes"); - LSTR MSG_PROBE_AND_LEVEL = _UxGT("Sondar y Nivelar"); - LSTR MSG_BED_LEVELING = _UxGT("Nivelar base"); - LSTR MSG_LEVEL_BED = _UxGT("Nivelar base"); - LSTR MSG_MOVE_X = _UxGT("Mover X"); - LSTR MSG_MOVE_Y = _UxGT("Mover Y"); - LSTR MSG_MOVE_Z = _UxGT("Mover Z"); - LSTR MSG_MOVE_N = _UxGT("Mover @"); - LSTR MSG_MOVE_E = _UxGT("Extrusor"); - LSTR MSG_MOVE_EN = _UxGT("Extrusor *"); - LSTR MSG_MOVE_N_MM = _UxGT("Mover $mm"); - LSTR MSG_MOVE_N_IN = _UxGT("Mover $in"); - LSTR MSG_MOVE_N_DEG = _UxGT("Mover $") LCD_STR_DEGREE; - LSTR MSG_SPEED = _UxGT("Velocidat"); - LSTR MSG_MESH_Z_OFFSET = _UxGT("Base Z"); - LSTR MSG_NOZZLE = _UxGT("Boquilla"); - LSTR MSG_NOZZLE_N = _UxGT("Boquilla ~"); - LSTR MSG_BED = _UxGT("Base"); - LSTR MSG_FAN_SPEED = _UxGT("Ixoriador"); - LSTR MSG_FAN_SPEED_N = _UxGT("Ixoriador ~"); - LSTR MSG_FLOW = _UxGT("Fluxo"); - LSTR MSG_FLOW_N = _UxGT("Fluxo ~"); - LSTR MSG_CONTROL = _UxGT("Control"); - LSTR MSG_AUTOTEMP = _UxGT("Temperatura Auto."); - LSTR MSG_SELECT_E = _UxGT("Trigar *"); - LSTR MSG_ACC = _UxGT("Aceleracion"); - LSTR MSG_VTRAV_MIN = _UxGT("Vel. viache min"); - LSTR MSG_ACCELERATION = _UxGT("Accel"); - LSTR MSG_AMAX_A = _UxGT("Acel. max ") STR_A; - LSTR MSG_AMAX_B = _UxGT("Acel. max ") STR_B; - LSTR MSG_AMAX_C = _UxGT("Acel. max ") STR_C; - LSTR MSG_AMAX_N = _UxGT("Acel. max @"); - LSTR MSG_AMAX_E = _UxGT("Acel. max E"); - LSTR MSG_AMAX_EN = _UxGT("Acel. max *"); - LSTR MSG_A_RETRACT = _UxGT("Acel. retrac."); - LSTR MSG_A_TRAVEL = _UxGT("Acel. Viaje"); - LSTR MSG_STEPS_PER_MM = _UxGT("Trangos/mm"); - LSTR MSG_A_STEPS = STR_A _UxGT(" trangos/mm"); - LSTR MSG_B_STEPS = STR_B _UxGT(" trangos/mm"); - LSTR MSG_C_STEPS = STR_C _UxGT(" trangos/mm"); - LSTR MSG_N_STEPS = _UxGT("@ trangos/mm"); - LSTR MSG_E_STEPS = _UxGT("E trangos/mm"); - LSTR MSG_EN_STEPS = _UxGT("* trangos/mm"); - LSTR MSG_TEMPERATURE = _UxGT("Temperatura"); - LSTR MSG_MOTION = _UxGT("Movimiento"); - LSTR MSG_FILAMENT = _UxGT("Filamento"); - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm") SUPERSCRIPT_THREE; - LSTR MSG_FILAMENT_DIAM = _UxGT("Fil. Dia."); - LSTR MSG_FILAMENT_DIAM_E = _UxGT("Fil. Dia. *"); - LSTR MSG_CONTRAST = _UxGT("Contraste"); - LSTR MSG_STORE_EEPROM = _UxGT("Alzar memoria"); - LSTR MSG_LOAD_EEPROM = _UxGT("Cargar memoria"); - LSTR MSG_RESTORE_DEFAULTS = _UxGT("Restaurar memoria"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Tornar a cargar"); - LSTR MSG_INFO_SCREEN = _UxGT("Informacion"); - LSTR MSG_PREPARE = _UxGT("Preparar"); - LSTR MSG_TUNE = _UxGT("Achustar"); - LSTR MSG_PAUSE_PRINT = _UxGT("Pausar impresion"); - LSTR MSG_RESUME_PRINT = _UxGT("Contin. impresion"); - LSTR MSG_STOP_PRINT = _UxGT("Detener Impresion"); - LSTR MSG_MEDIA_MENU = _UxGT("Menu de SD"); - LSTR MSG_NO_MEDIA = _UxGT("No i hai tarcheta"); - LSTR MSG_DWELL = _UxGT("Reposo..."); - LSTR MSG_USERWAIT = _UxGT("Aguardand ordines"); - LSTR MSG_PRINT_ABORTED = _UxGT("Impres. cancelada"); - LSTR MSG_NO_MOVE = _UxGT("Sin movimiento"); - LSTR MSG_KILLED = _UxGT("Aturada d'emerch."); - LSTR MSG_STOPPED = _UxGT("Aturada."); - LSTR MSG_CONTROL_RETRACT = _UxGT("Retraer mm"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Swap Retraer mm"); - LSTR MSG_CONTROL_RETRACTF = _UxGT("Retraer F"); - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Devantar mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("DesRet mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Swap DesRet mm"); - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("DesRet F"); - LSTR MSG_AUTORETRACT = _UxGT("Retraccion auto."); - LSTR MSG_FILAMENTCHANGE = _UxGT("Cambear filamento"); - LSTR MSG_FILAMENTCHANGE_E = _UxGT("Cambear filamento *"); - - LSTR MSG_ATTACH_MEDIA = _UxGT("Encetan. media"); - LSTR MSG_ATTACH_SD = _UxGT("Encetan. SD"); - LSTR MSG_ATTACH_USB = _UxGT("Encetan. USB"); - LSTR MSG_CHANGE_MEDIA = _UxGT("Cambiar tarcheta"); - LSTR MSG_RUN_AUTOFILES = _UxGT("Inicio automatico"); - - LSTR MSG_ZPROBE_OUT = _UxGT("Sonda Z fuera"); - LSTR MSG_BLTOUCH_RESET = _UxGT("Reset BLTouch"); - LSTR MSG_ZPROBE_XOFFSET = _UxGT("Desfase X"); - LSTR MSG_ZPROBE_YOFFSET = _UxGT("Desfase Y"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Desfase Z"); - LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Desfase @"); - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Probe Z con pas"); - LSTR MSG_BABYSTEP_X = _UxGT("Micropaso X"); - LSTR MSG_BABYSTEP_Y = _UxGT("Micropaso Y"); - LSTR MSG_BABYSTEP_Z = _UxGT("Micropaso Z"); - LSTR MSG_BABYSTEP_N = _UxGT("Micropaso @"); - LSTR MSG_ENDSTOP_ABORT = _UxGT("Cancelado - Endstop"); - LSTR MSG_ERR_HEATING_FAILED = _UxGT("Error en calentar"); - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Error temp adicional"); - LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("Error de temperatura"); - LSTR MSG_ERR_MAXTEMP = _UxGT("Error Temp Max"); - LSTR MSG_ERR_MINTEMP = _UxGT("Error Temp Min"); - LSTR MSG_HALTED = _UxGT("IMPRESORA ATURADA"); - LSTR MSG_PLEASE_RESET = _UxGT("Per favor reinic."); - LSTR MSG_HEATING = _UxGT("Calentando..."); - LSTR MSG_BED_HEATING = _UxGT("Calentando base..."); - LSTR MSG_DELTA_CALIBRATE = _UxGT("Calibracion Delta"); - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Calibrar X"); - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Calibrar Y"); - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Calibrar Z"); - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibrar Centro"); - - LSTR MSG_INFO_MENU = _UxGT("Inf. Impresora"); - LSTR MSG_INFO_PRINTER_MENU = _UxGT("Inf. Impresora"); - LSTR MSG_INFO_STATS_MENU = _UxGT("Estadisticas Imp."); - LSTR MSG_INFO_BOARD_MENU = _UxGT("Inf. Controlador"); - LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Termistors"); - LSTR MSG_INFO_EXTRUDERS = _UxGT("Extrusors"); - LSTR MSG_INFO_BAUDRATE = _UxGT("Baudios"); - LSTR MSG_INFO_PROTOCOL = _UxGT("Protocolo"); - LSTR MSG_CASE_LIGHT = _UxGT("Luz"); - - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Impresions"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completadas"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Mas larga"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extrusion"); - - LSTR MSG_INFO_MIN_TEMP = _UxGT("Temperatura menima"); - LSTR MSG_INFO_MAX_TEMP = _UxGT("Temperatura maxima"); - LSTR MSG_INFO_PSU = _UxGT("Fuente de aliment"); - - LSTR MSG_DRIVE_STRENGTH = _UxGT("Fuerza d'o driver"); - LSTR MSG_DAC_EEPROM_WRITE = _UxGT("Escri. DAC EEPROM"); - LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Resumir imp."); - - // Up to 2 lines allowed - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("Aguardand iniciar", "d'o fil. cambear")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_2_LINE("Meta o filamento", "y prete lo boton")); - - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Aguardando a", "expulsar filament")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Aguardando a", "cargar filamento")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Aguardando impre.", "pa continar")); + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" parada."); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = _UxGT("Tarcheta mesa"); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = _UxGT("Tarcheta sacada"); // (MEDIA_TYPE_EN) Removed + LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Endstops + LSTR MSG_MAIN_MENU = _UxGT("Menu prencipal"); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("Amortar motors"); // Disable Steppers + LSTR MSG_HOMING = _UxGT("Orichen"); // Homing + LSTR MSG_AUTO_HOME = _UxGT("Levar a l'orichen"); // Auto Home + LSTR MSG_AUTO_HOME_X = _UxGT("Orichen X"); // Home X + LSTR MSG_AUTO_HOME_Y = _UxGT("Orichen Y"); // Home Y + LSTR MSG_AUTO_HOME_Z = _UxGT("Orichen Z"); // Home Z + LSTR MSG_LEVEL_BED_HOMING = _UxGT("Orichen XYZ"); // Homing XYZ + LSTR MSG_LEVEL_BED_WAITING = _UxGT("Encetar (pretar)"); // Click to Begin + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Vinient punto"); // Next Point + LSTR MSG_LEVEL_BED_DONE = _UxGT("Nivelacion feita!"); // Leveling Done! + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Achustar desfases"); // Set Home Offsets + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Desfase aplicau"); // Offsets Applied + LSTR MSG_PREHEAT_1 = _UxGT("Precalentar ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = _UxGT("Precalentar ") PREHEAT_1_LABEL " ~"; // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Boquilla"); // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Boquilla ~"); // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_1_ALL = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Tot"); // Preheat (PREHEAT_1_LABEL) All + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Base"); // Preheat (PREHEAT_1_LABEL) Bed + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Precalentar ") PREHEAT_1_LABEL _UxGT(" Conf"); // Preheat (PREHEAT_1_LABEL) Conf + LSTR MSG_PREHEAT_M = _UxGT("Precalentar $"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("Precalentar $ ~"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("Precal. $ Boquilla"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("Precal. $ Boquilla ~"); // Preheat $ End ~ + LSTR MSG_PREHEAT_M_ALL = _UxGT("Precalentar $ Tot"); // Preheat $ All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Precalentar $ Base"); // Preheat $ Bed + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Precalentar $ Conf"); // Preheat $ Conf + LSTR MSG_COOLDOWN = _UxGT("Enfriar"); // Cooldown + LSTR MSG_SWITCH_PS_ON = _UxGT("Enchegar Fuent"); // Switch Power On + LSTR MSG_SWITCH_PS_OFF = _UxGT("Amortar Fuent"); // Switch Power Off + LSTR MSG_EXTRUDE = _UxGT("Extruir"); // Extrude + LSTR MSG_RETRACT = _UxGT("Retraer"); // Retract + LSTR MSG_MOVE_AXIS = _UxGT("Mover Eixes"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("Sondar y Nivelar"); // Probe and Level + LSTR MSG_BED_LEVELING = _UxGT("Nivelar base"); // Bed Leveling + LSTR MSG_LEVEL_BED = _UxGT("Nivelar base"); // Level Bed + LSTR MSG_MOVE_X = _UxGT("Mover X"); // Move X + LSTR MSG_MOVE_Y = _UxGT("Mover Y"); // Move Y + LSTR MSG_MOVE_Z = _UxGT("Mover Z"); // Move Z + LSTR MSG_MOVE_N = _UxGT("Mover @"); // Move @ + LSTR MSG_MOVE_E = _UxGT("Extrusor"); // Move Extruder + LSTR MSG_MOVE_EN = _UxGT("Extrusor *"); // Move * + LSTR MSG_MOVE_N_MM = _UxGT("Mover $mm"); // Move $mm + LSTR MSG_MOVE_N_IN = _UxGT("Mover $in"); // Move $in + LSTR MSG_MOVE_N_DEG = _UxGT("Mover $") LCD_STR_DEGREE; // Move $(LCD_STR_DEGREE) + LSTR MSG_SPEED = _UxGT("Velocidat"); // Speed + LSTR MSG_MESH_Z_OFFSET = _UxGT("Base Z"); // Bed Z + LSTR MSG_NOZZLE = _UxGT("Boquilla"); // Nozzle + LSTR MSG_NOZZLE_N = _UxGT("Boquilla ~"); // Nozzle ~ + LSTR MSG_BED = _UxGT("Base"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("Ixoriador"); // Fan Speed + LSTR MSG_FAN_SPEED_N = _UxGT("Ixoriador ~"); // Fan Speed ~ + LSTR MSG_FLOW = _UxGT("Fluxo"); // Flow + LSTR MSG_FLOW_N = _UxGT("Fluxo ~"); // Flow ~ + LSTR MSG_CONTROL = _UxGT("Control"); // Control + LSTR MSG_AUTOTEMP = _UxGT("Temperatura Auto."); // Autotemp + LSTR MSG_SELECT_E = _UxGT("Trigar *"); // Select * + LSTR MSG_ACC = _UxGT("Aceleracion"); // Accel + LSTR MSG_VTRAV_MIN = _UxGT("Vel. viache min"); // Min Travel Speed + LSTR MSG_ACCELERATION = _UxGT("Accel"); // Acceleration + LSTR MSG_AMAX_A = _UxGT("Acel. max ") STR_A; // Max (STR_A) Accel + LSTR MSG_AMAX_B = _UxGT("Acel. max ") STR_B; // Max (STR_B) Accel + LSTR MSG_AMAX_C = _UxGT("Acel. max ") STR_C; // Max (STR_C) Accel + LSTR MSG_AMAX_N = _UxGT("Acel. max @"); // Max @ Accel + LSTR MSG_AMAX_E = _UxGT("Acel. max E"); // Max E Accel + LSTR MSG_AMAX_EN = _UxGT("Acel. max *"); // Max * Accel + LSTR MSG_A_RETRACT = _UxGT("Acel. retrac."); // Retract Accel + LSTR MSG_A_TRAVEL = _UxGT("Acel. Viaje"); // Travel Accel + LSTR MSG_STEPS_PER_MM = _UxGT("Trangos/mm"); // Steps/mm + LSTR MSG_A_STEPS = STR_A _UxGT(" trangos/mm"); // (STR_A) Steps/mm + LSTR MSG_B_STEPS = STR_B _UxGT(" trangos/mm"); // (STR_B) Steps/mm + LSTR MSG_C_STEPS = STR_C _UxGT(" trangos/mm"); // (STR_C) Steps/mm + LSTR MSG_N_STEPS = _UxGT("@ trangos/mm"); // @ steps/mm + LSTR MSG_E_STEPS = _UxGT("E trangos/mm"); // E steps/mm + LSTR MSG_EN_STEPS = _UxGT("* trangos/mm"); // * Steps/mm + LSTR MSG_TEMPERATURE = _UxGT("Temperatura"); // Temperature + LSTR MSG_MOTION = _UxGT("Movimiento"); // Motion + LSTR MSG_FILAMENT = _UxGT("Filamento"); // Filament + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm") SUPERSCRIPT_THREE; // E in mm(SUPERSCRIPT_THREE) + LSTR MSG_FILAMENT_DIAM = _UxGT("Fil. Dia."); // Fil. Dia. + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Fil. Dia. *"); // Fil. Dia. * + LSTR MSG_CONTRAST = _UxGT("Contraste"); // LCD Contrast + LSTR MSG_STORE_EEPROM = _UxGT("Alzar memoria"); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("Cargar memoria"); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("Restaurar memoria"); // Restore Defaults + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Tornar a cargar"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT("Informacion"); // Info Screen + LSTR MSG_PREPARE = _UxGT("Preparar"); // Prepare + LSTR MSG_TUNE = _UxGT("Achustar"); // Tune + LSTR MSG_PAUSE_PRINT = _UxGT("Pausar impresion"); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("Contin. impresion"); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("Detener Impresion"); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("Menu de SD"); // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = _UxGT("No i hai tarcheta"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_DWELL = _UxGT("Reposo..."); // Sleep... + LSTR MSG_USERWAIT = _UxGT("Aguardand ordines"); // Click to Resume... + LSTR MSG_PRINT_ABORTED = _UxGT("Impres. cancelada"); // Print Aborted + LSTR MSG_NO_MOVE = _UxGT("Sin movimiento"); // No Move. + LSTR MSG_KILLED = _UxGT("Aturada d'emerch."); // KILLED. + LSTR MSG_STOPPED = _UxGT("Aturada."); // STOPPED. + LSTR MSG_CONTROL_RETRACT = _UxGT("Retraer mm"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Swap Retraer mm"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACTF = _UxGT("Retraer F"); // Retract V + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Devantar mm"); // Hop mm + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("DesRet mm"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Swap DesRet mm"); // S Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("DesRet F"); // Unretract V + LSTR MSG_AUTORETRACT = _UxGT("Retraccion auto."); // Auto-Retract + LSTR MSG_FILAMENTCHANGE = _UxGT("Cambear filamento"); // Change Filament + LSTR MSG_FILAMENTCHANGE_E = _UxGT("Cambear filamento *"); // Change * Filament + LSTR MSG_ATTACH_MEDIA = _UxGT("Encetan. media"); // Attach (MEDIA_TYPE_EN) + LSTR MSG_ATTACH_SD = _UxGT("Encetan. SD"); // Attach SD Card + LSTR MSG_ATTACH_USB = _UxGT("Encetan. USB"); // Attach USB Drive + LSTR MSG_CHANGE_MEDIA = _UxGT("Cambiar tarcheta"); // Refresh (MEDIA_TYPE_EN) + LSTR MSG_RUN_AUTOFILES = _UxGT("Inicio automatico"); // Run Autofiles + LSTR MSG_ZPROBE_OUT = _UxGT("Sonda Z fuera"); // Z Probe Past Bed + LSTR MSG_BLTOUCH_RESET = _UxGT("Reset BLTouch"); // Reset + LSTR MSG_ZPROBE_XOFFSET = _UxGT("Desfase X"); // Probe X Offset + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Desfase Y"); // Probe Y Offset + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Desfase Z"); // Probe Z Offset + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Desfase @"); // Probe @ Offset + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Probe Z con pas"); // Babystep Probe Z + LSTR MSG_BABYSTEP_X = _UxGT("Micropaso X"); // Babystep X + LSTR MSG_BABYSTEP_Y = _UxGT("Micropaso Y"); // Babystep Y + LSTR MSG_BABYSTEP_Z = _UxGT("Micropaso Z"); // Babystep Z + LSTR MSG_BABYSTEP_N = _UxGT("Micropaso @"); // Babystep @ + LSTR MSG_ENDSTOP_ABORT = _UxGT("Cancelado - Endstop"); // Endstop Abort + LSTR MSG_ERR_HEATING_FAILED = _UxGT("Error en calentar"); // Heating Failed + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Error temp adicional"); // Err: REDUNDANT TEMP + LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("Error de temperatura"); // THERMAL RUNAWAY + LSTR MSG_ERR_MAXTEMP = _UxGT("Error Temp Max"); // Err: MAXTEMP + LSTR MSG_ERR_MINTEMP = _UxGT("Error Temp Min"); // Err: MINTEMP + LSTR MSG_HALTED = _UxGT("IMPRESORA ATURADA"); // PRINTER HALTED + LSTR MSG_PLEASE_RESET = _UxGT("Per favor reinic."); // Please Reset + LSTR MSG_HEATING = _UxGT("Calentando..."); // Heating... + LSTR MSG_BED_HEATING = _UxGT("Calentando base..."); // Bed Heating... + LSTR MSG_DELTA_CALIBRATE = _UxGT("Calibracion Delta"); // Delta Calibration + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Calibrar X"); // Calibrate X + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Calibrar Y"); // Calibrate Y + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Calibrar Z"); // Calibrate Z + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibrar Centro"); // Calibrate Center + LSTR MSG_INFO_MENU = _UxGT("Inf. Impresora"); // About Printer + LSTR MSG_INFO_PRINTER_MENU = _UxGT("Inf. Impresora"); // Printer Info + LSTR MSG_INFO_STATS_MENU = _UxGT("Estadisticas Imp."); // Stats + LSTR MSG_INFO_BOARD_MENU = _UxGT("Inf. Controlador"); // Board Info + LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Termistors"); // Thermistors + LSTR MSG_INFO_EXTRUDERS = _UxGT("Extrusors"); // Extruders + LSTR MSG_INFO_BAUDRATE = _UxGT("Baudios"); // Baud + LSTR MSG_INFO_PROTOCOL = _UxGT("Protocolo"); // Protocol + LSTR MSG_CASE_LIGHT = _UxGT("Luz"); // Case Light + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Impresions"); // Prints + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completadas"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); // Total + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Mas larga"); // Longest + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extrusion"); // Extruded + LSTR MSG_INFO_MIN_TEMP = _UxGT("Temperatura menima"); // Min Temp + LSTR MSG_INFO_MAX_TEMP = _UxGT("Temperatura maxima"); // Max Temp + LSTR MSG_INFO_PSU = _UxGT("Fuente de aliment"); // PSU + LSTR MSG_DRIVE_STRENGTH = _UxGT("Fuerza d'o driver"); // Drive Strength + LSTR MSG_DAC_EEPROM_WRITE = _UxGT("Escri. DAC EEPROM"); // DAC EEPROM Write + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Resumir imp."); // Continue + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("Aguardand iniciar", "d'o fil. cambear")); // |Please wait... + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_2_LINE("Meta o filamento", "y prete lo boton")); // |Insert and Click + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Aguardando a", "expulsar filament")); // |Ejecting... + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Aguardando a", "cargar filamento")); // |Loading... + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Aguardando impre.", "pa continar")); // |Resuming... } namespace LanguageWide_an { using namespace LanguageNarrow_an; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Conteo de impresion"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completadas"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Tiempo total d'imp."); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Impresion mas larga"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total d'extrusion"); + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Conteo de impresion"); // Print Count + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completadas"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Tiempo total d'imp."); // Print Time + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Impresion mas larga"); // Longest Job Time + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total d'extrusion"); // Extruded Total #endif } @@ -244,8 +232,8 @@ namespace LanguageTall_an { using namespace LanguageWide_an; #if LCD_HEIGHT >= 4 // Filament Change screens show up to 3 lines on a 4-line display - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Aguardand iniciar", "d'o filamento", "cambear")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Meta o filamento", "y prete lo boton", "pa continar...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Aguardand iniciar", "d'o filamento", "cambear")); // |Wait for|filament change|to start + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Meta o filamento", "y prete lo boton", "pa continar...")); // |Insert filament|and press button|to continue #endif } diff --git a/Marlin/src/lcd/language/language_bg.h b/Marlin/src/lcd/language/language_bg.h index 504d6dbaa2..2e88b2526e 100644 --- a/Marlin/src/lcd/language/language_bg.h +++ b/Marlin/src/lcd/language/language_bg.h @@ -44,137 +44,132 @@ namespace LanguageNarrow_bg { constexpr uint8_t CHARSIZE = 2; LSTR LANGUAGE = _UxGT("Bulgarian"); - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" Готов."); - LSTR MSG_MEDIA_INSERTED = _UxGT("Картата е поставена"); - LSTR MSG_MEDIA_REMOVED = _UxGT("Картата е извадена"); - LSTR MSG_MAIN_MENU = _UxGT("Меню"); - LSTR MSG_DISABLE_STEPPERS = _UxGT("Изкл. двигатели"); - LSTR MSG_AUTO_HOME = _UxGT("Паркиране"); - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Задай Начало"); - - LSTR MSG_PREHEAT_1 = _UxGT("Подгряване ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Подгряване ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Подгряване ") PREHEAT_1_LABEL _UxGT(" Дюза"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Подгряване ") PREHEAT_1_LABEL _UxGT(" Дюза ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Подгр. ") PREHEAT_1_LABEL _UxGT(" Всички"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Подгр. ") PREHEAT_1_LABEL _UxGT(" Легло"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Настройки ") PREHEAT_1_LABEL; - - LSTR MSG_PREHEAT_M = _UxGT("Подгряване $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Подгряване $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Подгряване $ Дюза"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Подгряване $ Дюза ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Подгр. $ Всички"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Подгр. $ Легло"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Настройки $"); - - LSTR MSG_COOLDOWN = _UxGT("Охлаждане"); - LSTR MSG_SWITCH_PS_ON = _UxGT("Вкл. захранване"); - LSTR MSG_SWITCH_PS_OFF = _UxGT("Изкл. захранване"); - LSTR MSG_EXTRUDE = _UxGT("Екструзия"); - LSTR MSG_RETRACT = _UxGT("Откат"); - LSTR MSG_MOVE_AXIS = _UxGT("Движение по ос"); - LSTR MSG_PROBE_AND_LEVEL = _UxGT("Нивелиране"); - LSTR MSG_BED_LEVELING = _UxGT("Нивелиране"); - LSTR MSG_LEVEL_BED = _UxGT("Нивелиране"); - LSTR MSG_MOVE_X = _UxGT("Движение по X"); - LSTR MSG_MOVE_Y = _UxGT("Движение по Y"); - LSTR MSG_MOVE_Z = _UxGT("Движение по Z"); - LSTR MSG_MOVE_N = _UxGT("Движение по @"); - LSTR MSG_MOVE_E = _UxGT("Екструдер"); - LSTR MSG_MOVE_EN = _UxGT("Екструдер *"); - LSTR MSG_MOVE_N_MM = _UxGT("Премести с $mm"); - LSTR MSG_MOVE_N_IN = _UxGT("Премести с $in"); - LSTR MSG_MOVE_N_DEG = _UxGT("Премести с $") LCD_STR_DEGREE; - LSTR MSG_SPEED = _UxGT("Скорост"); - LSTR MSG_MESH_Z_OFFSET = _UxGT("Bed Z"); - LSTR MSG_NOZZLE = " " LCD_STR_THERMOMETER _UxGT(" Дюза"); - LSTR MSG_NOZZLE_N = " " LCD_STR_THERMOMETER _UxGT(" Дюза ~"); - LSTR MSG_BED = " " LCD_STR_THERMOMETER _UxGT(" Легло"); - LSTR MSG_FAN_SPEED = _UxGT("Вентилатор"); - LSTR MSG_FAN_SPEED_N = _UxGT("Вентилатор ~"); - LSTR MSG_FLOW = _UxGT("Поток"); - LSTR MSG_FLOW_N = _UxGT("Поток ~"); - LSTR MSG_CONTROL = _UxGT("Управление"); - LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Минимум"); - LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Максимум"); - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Фактор"); - LSTR MSG_AUTOTEMP = _UxGT("Авто-темп."); - LSTR MSG_LCD_ON = _UxGT("Вкл."); - LSTR MSG_LCD_OFF = _UxGT("Изкл."); - LSTR MSG_A_RETRACT = _UxGT("A-откат"); - LSTR MSG_A_TRAVEL = _UxGT("A-travel"); - LSTR MSG_STEPS_PER_MM = _UxGT("Стъпки/mm"); - LSTR MSG_A_STEPS = STR_A _UxGT(" стъпки/mm"); - LSTR MSG_B_STEPS = STR_B _UxGT(" стъпки/mm"); - LSTR MSG_C_STEPS = STR_C _UxGT(" стъпки/mm"); - LSTR MSG_N_STEPS = _UxGT("@ стъпки/mm"); - LSTR MSG_E_STEPS = _UxGT("E стъпки/mm"); - LSTR MSG_EN_STEPS = _UxGT("* стъпки/mm"); - LSTR MSG_TEMPERATURE = _UxGT("Температура"); - LSTR MSG_MOTION = _UxGT("Движение"); - LSTR MSG_FILAMENT = _UxGT("Нишка"); - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm") SUPERSCRIPT_THREE; - LSTR MSG_FILAMENT_DIAM = _UxGT("Диам. нишка"); - LSTR MSG_FILAMENT_DIAM_E = _UxGT("Диам. нишка *"); - LSTR MSG_CONTRAST = _UxGT("LCD контраст"); - LSTR MSG_STORE_EEPROM = _UxGT("Запази в EPROM"); - LSTR MSG_LOAD_EEPROM = _UxGT("Зареди от EPROM"); - LSTR MSG_RESTORE_DEFAULTS = _UxGT("Фабрични настройки"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Обнови"); - LSTR MSG_INFO_SCREEN = _UxGT("Преглед"); - LSTR MSG_PREPARE = _UxGT("Действия"); - LSTR MSG_TUNE = _UxGT("Настройка"); - LSTR MSG_PAUSE_PRINT = _UxGT("Пауза"); - LSTR MSG_RESUME_PRINT = _UxGT("Възобнови печата"); - LSTR MSG_STOP_PRINT = _UxGT("Спри печата"); - LSTR MSG_MEDIA_MENU = _UxGT("Меню карта"); - LSTR MSG_NO_MEDIA = _UxGT("Няма карта"); - LSTR MSG_DWELL = _UxGT("Почивка..."); - LSTR MSG_USERWAIT = _UxGT("Изчакване"); - LSTR MSG_PRINT_ABORTED = _UxGT("Печатът е прекъснат"); - LSTR MSG_NO_MOVE = _UxGT("Няма движение"); - LSTR MSG_KILLED = _UxGT("УБИТО."); - LSTR MSG_STOPPED = _UxGT("СПРЯНО."); - LSTR MSG_CONTROL_RETRACT = _UxGT("Откат mm"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Смяна Откат mm"); - LSTR MSG_CONTROL_RETRACTF = _UxGT("Откат V"); - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Скок mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Възврат mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Смяна Възврат mm"); - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Възврат V"); - LSTR MSG_AUTORETRACT = _UxGT("Автоoткат"); - LSTR MSG_FILAMENTCHANGE = _UxGT("Смяна нишка"); - LSTR MSG_FILAMENTCHANGE_E = _UxGT("Смяна нишка *"); - - LSTR MSG_ATTACH_MEDIA = _UxGT("Иниц. SD-Карта"); - LSTR MSG_ATTACH_SD = _UxGT("Иниц. SD-Карта"); - LSTR MSG_ATTACH_USB = _UxGT("Иниц. USB-Карта"); - LSTR MSG_CHANGE_MEDIA = _UxGT("Смяна SD-Карта"); - LSTR MSG_RUN_AUTOFILES = _UxGT("Автостарт"); - - LSTR MSG_ZPROBE_OUT = _UxGT("Z-сондата е извадена"); - LSTR MSG_ZPROBE_XOFFSET = _UxGT("X Отстояние"); - LSTR MSG_ZPROBE_YOFFSET = _UxGT("Y Отстояние"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Z Отстояние"); - LSTR MSG_ZPROBE_OFFSET_N = _UxGT("@ Отстояние"); - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Промяна на Z"); - LSTR MSG_BABYSTEP_X = _UxGT("Министъпка X"); - LSTR MSG_BABYSTEP_Y = _UxGT("Министъпка Y"); - LSTR MSG_BABYSTEP_Z = _UxGT("Министъпка Z"); - LSTR MSG_BABYSTEP_N = _UxGT("Министъпка @"); - LSTR MSG_ENDSTOP_ABORT = _UxGT("Стоп Кр.Изключватели"); - LSTR MSG_DELTA_CALIBRATE = _UxGT("Делта Калибровка"); - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Калибровка X"); - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Калибровка Y"); - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Калибровка Z"); - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Калибровка Център"); - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Неправилен принтер"); + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" Готов."); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = _UxGT("Картата е поставена"); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = _UxGT("Картата е извадена"); // (MEDIA_TYPE_EN) Removed + LSTR MSG_MAIN_MENU = _UxGT("Меню"); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("Изкл. двигатели"); // Disable Steppers + LSTR MSG_AUTO_HOME = _UxGT("Паркиране"); // Auto Home + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Задай Начало"); // Set Home Offsets + LSTR MSG_PREHEAT_1 = _UxGT("Подгряване ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = _UxGT("Подгряване ") PREHEAT_1_LABEL " ~"; // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = _UxGT("Подгряване ") PREHEAT_1_LABEL _UxGT(" Дюза"); // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = _UxGT("Подгряване ") PREHEAT_1_LABEL _UxGT(" Дюза ~"); // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_1_ALL = _UxGT("Подгр. ") PREHEAT_1_LABEL _UxGT(" Всички"); // Preheat (PREHEAT_1_LABEL) All + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Подгр. ") PREHEAT_1_LABEL _UxGT(" Легло"); // Preheat (PREHEAT_1_LABEL) Bed + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Настройки ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) Conf + LSTR MSG_PREHEAT_M = _UxGT("Подгряване $"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("Подгряване $ ~"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("Подгряване $ Дюза"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("Подгряване $ Дюза ~"); // Preheat $ End ~ + LSTR MSG_PREHEAT_M_ALL = _UxGT("Подгр. $ Всички"); // Preheat $ All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Подгр. $ Легло"); // Preheat $ Bed + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Настройки $"); // Preheat $ Conf + LSTR MSG_COOLDOWN = _UxGT("Охлаждане"); // Cooldown + LSTR MSG_SWITCH_PS_ON = _UxGT("Вкл. захранване"); // Switch Power On + LSTR MSG_SWITCH_PS_OFF = _UxGT("Изкл. захранване"); // Switch Power Off + LSTR MSG_EXTRUDE = _UxGT("Екструзия"); // Extrude + LSTR MSG_RETRACT = _UxGT("Откат"); // Retract + LSTR MSG_MOVE_AXIS = _UxGT("Движение по ос"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("Нивелиране"); // Probe and Level + LSTR MSG_BED_LEVELING = _UxGT("Нивелиране"); // Bed Leveling + LSTR MSG_LEVEL_BED = _UxGT("Нивелиране"); // Level Bed + LSTR MSG_MOVE_X = _UxGT("Движение по X"); // Move X + LSTR MSG_MOVE_Y = _UxGT("Движение по Y"); // Move Y + LSTR MSG_MOVE_Z = _UxGT("Движение по Z"); // Move Z + LSTR MSG_MOVE_N = _UxGT("Движение по @"); // Move @ + LSTR MSG_MOVE_E = _UxGT("Екструдер"); // Move Extruder + LSTR MSG_MOVE_EN = _UxGT("Екструдер *"); // Move * + LSTR MSG_MOVE_N_MM = _UxGT("Премести с $mm"); // Move $mm + LSTR MSG_MOVE_N_IN = _UxGT("Премести с $in"); // Move $in + LSTR MSG_MOVE_N_DEG = _UxGT("Премести с $") LCD_STR_DEGREE; // Move $(LCD_STR_DEGREE) + LSTR MSG_SPEED = _UxGT("Скорост"); // Speed + LSTR MSG_MESH_Z_OFFSET = _UxGT("Bed Z"); // Bed Z + LSTR MSG_NOZZLE = " " LCD_STR_THERMOMETER _UxGT(" Дюза"); // Nozzle + LSTR MSG_NOZZLE_N = " " LCD_STR_THERMOMETER _UxGT(" Дюза ~"); // Nozzle ~ + LSTR MSG_BED = " " LCD_STR_THERMOMETER _UxGT(" Легло"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("Вентилатор"); // Fan Speed + LSTR MSG_FAN_SPEED_N = _UxGT("Вентилатор ~"); // Fan Speed ~ + LSTR MSG_FLOW = _UxGT("Поток"); // Flow + LSTR MSG_FLOW_N = _UxGT("Поток ~"); // Flow ~ + LSTR MSG_CONTROL = _UxGT("Управление"); // Control + LSTR MSG_AUTOTEMP = _UxGT("Авто-темп."); // Autotemp + LSTR MSG_A_RETRACT = _UxGT("A-откат"); // Retract Accel + LSTR MSG_A_TRAVEL = _UxGT("A-travel"); // Travel Accel + LSTR MSG_STEPS_PER_MM = _UxGT("Стъпки/mm"); // Steps/mm + LSTR MSG_A_STEPS = STR_A _UxGT(" стъпки/mm"); // (STR_A) Steps/mm + LSTR MSG_B_STEPS = STR_B _UxGT(" стъпки/mm"); // (STR_B) Steps/mm + LSTR MSG_C_STEPS = STR_C _UxGT(" стъпки/mm"); // (STR_C) Steps/mm + LSTR MSG_N_STEPS = _UxGT("@ стъпки/mm"); // @ steps/mm + LSTR MSG_E_STEPS = _UxGT("E стъпки/mm"); // E steps/mm + LSTR MSG_EN_STEPS = _UxGT("* стъпки/mm"); // * Steps/mm + LSTR MSG_TEMPERATURE = _UxGT("Температура"); // Temperature + LSTR MSG_MOTION = _UxGT("Движение"); // Motion + LSTR MSG_FILAMENT = _UxGT("Нишка"); // Filament + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm") SUPERSCRIPT_THREE; // E in mm(SUPERSCRIPT_THREE) + LSTR MSG_FILAMENT_DIAM = _UxGT("Диам. нишка"); // Fil. Dia. + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Диам. нишка *"); // Fil. Dia. * + LSTR MSG_CONTRAST = _UxGT("LCD контраст"); // LCD Contrast + LSTR MSG_STORE_EEPROM = _UxGT("Запази в EPROM"); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("Зареди от EPROM"); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("Фабрични настройки"); // Restore Defaults + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Обнови"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT("Преглед"); // Info Screen + LSTR MSG_PREPARE = _UxGT("Действия"); // Prepare + LSTR MSG_TUNE = _UxGT("Настройка"); // Tune + LSTR MSG_PAUSE_PRINT = _UxGT("Пауза"); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("Възобнови печата"); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("Спри печата"); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("Меню карта"); // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = _UxGT("Няма карта"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_DWELL = _UxGT("Почивка..."); // Sleep... + LSTR MSG_USERWAIT = _UxGT("Изчакване"); // Click to Resume... + LSTR MSG_PRINT_ABORTED = _UxGT("Печатът е прекъснат"); // Print Aborted + LSTR MSG_NO_MOVE = _UxGT("Няма движение"); // No Move. + LSTR MSG_KILLED = _UxGT("УБИТО."); // KILLED. + LSTR MSG_STOPPED = _UxGT("СПРЯНО."); // STOPPED. + LSTR MSG_CONTROL_RETRACT = _UxGT("Откат mm"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Смяна Откат mm"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACTF = _UxGT("Откат V"); // Retract V + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Скок mm"); // Hop mm + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Възврат mm"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Смяна Възврат mm"); // S Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Възврат V"); // Unretract V + LSTR MSG_AUTORETRACT = _UxGT("Автоoткат"); // Auto-Retract + LSTR MSG_FILAMENTCHANGE = _UxGT("Смяна нишка"); // Change Filament + LSTR MSG_FILAMENTCHANGE_E = _UxGT("Смяна нишка *"); // Change * Filament + LSTR MSG_ATTACH_MEDIA = _UxGT("Иниц. SD-Карта"); // Attach (MEDIA_TYPE_EN) + LSTR MSG_ATTACH_SD = _UxGT("Иниц. SD-Карта"); // Attach SD Card + LSTR MSG_ATTACH_USB = _UxGT("Иниц. USB-Карта"); // Attach USB Drive + LSTR MSG_CHANGE_MEDIA = _UxGT("Смяна SD-Карта"); // Refresh (MEDIA_TYPE_EN) + LSTR MSG_RUN_AUTOFILES = _UxGT("Автостарт"); // Run Autofiles + LSTR MSG_ZPROBE_OUT = _UxGT("Z-сондата е извадена"); // Z Probe Past Bed + LSTR MSG_ZPROBE_XOFFSET = _UxGT("X Отстояние"); // Probe X Offset + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Y Отстояние"); // Probe Y Offset + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Z Отстояние"); // Probe Z Offset + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("@ Отстояние"); // Probe @ Offset + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Промяна на Z"); // Babystep Probe Z + LSTR MSG_BABYSTEP_X = _UxGT("Министъпка X"); // Babystep X + LSTR MSG_BABYSTEP_Y = _UxGT("Министъпка Y"); // Babystep Y + LSTR MSG_BABYSTEP_Z = _UxGT("Министъпка Z"); // Babystep Z + LSTR MSG_BABYSTEP_N = _UxGT("Министъпка @"); // Babystep @ + LSTR MSG_ENDSTOP_ABORT = _UxGT("Стоп Кр.Изключватели"); // Endstop Abort + LSTR MSG_DELTA_CALIBRATE = _UxGT("Делта Калибровка"); // Delta Calibration + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Калибровка X"); // Calibrate X + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Калибровка Y"); // Calibrate Y + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Калибровка Z"); // Calibrate Z + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Калибровка Център"); // Calibrate Center + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Минимум"); // (LCD_STR_THERMOMETER) Min + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Максимум"); // (LCD_STR_THERMOMETER) Max + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Фактор"); // (LCD_STR_THERMOMETER) Fact + LSTR MSG_LCD_ON = _UxGT("Вкл."); // On + LSTR MSG_LCD_OFF = _UxGT("Изкл."); // Off + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Неправилен принтер"); // INCORRECT PRINTER } namespace LanguageWide_bg { using namespace LanguageNarrow_bg; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 #endif } diff --git a/Marlin/src/lcd/language/language_ca.h b/Marlin/src/lcd/language/language_ca.h index 36c6f5612b..38ec054e2e 100644 --- a/Marlin/src/lcd/language/language_ca.h +++ b/Marlin/src/lcd/language/language_ca.h @@ -42,197 +42,179 @@ namespace LanguageNarrow_ca { constexpr uint8_t CHARSIZE = 2; LSTR LANGUAGE = _UxGT("Catalan"); - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" preparada."); - LSTR MSG_MEDIA_INSERTED = _UxGT("Targeta detectada."); - LSTR MSG_MEDIA_REMOVED = _UxGT("Targeta extreta."); - LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstops"); - LSTR MSG_MAIN_MENU = _UxGT("Menú principal"); - LSTR MSG_DISABLE_STEPPERS = _UxGT("Desactiva motors"); - LSTR MSG_DEBUG_MENU = _UxGT("Menu de depuracio"); - LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Test barra progres"); - LSTR MSG_HOMING = _UxGT("Origen"); - LSTR MSG_AUTO_HOME = _UxGT("Ves a l'origen"); - LSTR MSG_AUTO_HOME_X = _UxGT("X a origen"); - LSTR MSG_AUTO_HOME_Y = _UxGT("Y a origen"); - LSTR MSG_AUTO_HOME_Z = _UxGT("Z a origen"); - LSTR MSG_LEVEL_BED_HOMING = _UxGT("Origen XYZ"); - LSTR MSG_LEVEL_BED_WAITING = _UxGT("Premeu per iniciar"); - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Següent punt"); - LSTR MSG_LEVEL_BED_DONE = _UxGT("Anivellament fet!"); - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Ajusta decalatge"); - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Decalatge aplicat"); - - LSTR MSG_PREHEAT_1 = _UxGT("Preescalfa ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Preescalfa ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" End"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" End ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" Tot"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" Llit"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" Conf."); - - LSTR MSG_PREHEAT_M = _UxGT("Preescalfa $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Preescalfa $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Preescalfa $ End"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Preescalfa $ End ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Preescalfa $ Tot"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Preescalfa $ Llit"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Preescalfa $ Conf."); - - LSTR MSG_COOLDOWN = _UxGT("Refreda"); - - LSTR MSG_EXTRUDE = _UxGT("Extrudeix"); - LSTR MSG_RETRACT = _UxGT("Retreu"); - LSTR MSG_MOVE_AXIS = _UxGT("Mou eixos"); - LSTR MSG_PROBE_AND_LEVEL = _UxGT("Sonda i anivella"); - LSTR MSG_BED_LEVELING = _UxGT("Anivella llit"); - LSTR MSG_LEVEL_BED = _UxGT("Anivella llit"); - - LSTR MSG_MOVING = _UxGT("Movent.."); - LSTR MSG_FREE_XY = _UxGT("XY lliures"); - LSTR MSG_MOVE_X = _UxGT("Mou X"); - LSTR MSG_MOVE_Y = _UxGT("Mou Y"); - LSTR MSG_MOVE_Z = _UxGT("Mou Z"); - LSTR MSG_MOVE_N = _UxGT("Mou @"); - LSTR MSG_MOVE_E = _UxGT("Extrusor"); - LSTR MSG_MOVE_EN = _UxGT("Extrusor *"); - LSTR MSG_MOVE_N_MM = _UxGT("Mou $mm"); - LSTR MSG_MOVE_N_IN = _UxGT("Mou $in"); - LSTR MSG_MOVE_N_DEG = _UxGT("Mou $") LCD_STR_DEGREE; - LSTR MSG_SPEED = _UxGT("Velocitat"); - LSTR MSG_MESH_Z_OFFSET = _UxGT("Llit Z"); - LSTR MSG_NOZZLE = _UxGT("Nozzle"); - LSTR MSG_NOZZLE_N = _UxGT("Nozzle ~"); - LSTR MSG_BED = _UxGT("Llit"); - LSTR MSG_FAN_SPEED = _UxGT("Vel. Ventilador"); - LSTR MSG_FAN_SPEED_N = _UxGT("Vel. Ventilador ~"); - LSTR MSG_FLOW = _UxGT("Flux"); - LSTR MSG_FLOW_N = _UxGT("Flux ~"); - LSTR MSG_VTRAV_MIN = _UxGT("VViatge min"); - - LSTR MSG_A_RETRACT = _UxGT("Accel. retracc"); - LSTR MSG_A_TRAVEL = _UxGT("Accel. Viatge"); - LSTR MSG_STEPS_PER_MM = _UxGT("Passos/mm"); - LSTR MSG_A_STEPS = STR_A _UxGT(" passos/mm"); - LSTR MSG_B_STEPS = STR_B _UxGT(" passos/mm"); - LSTR MSG_C_STEPS = STR_C _UxGT(" passos/mm"); - LSTR MSG_E_STEPS = _UxGT("@ passos/mm"); - LSTR MSG_N_STEPS = _UxGT("E passos/mm"); - LSTR MSG_EN_STEPS = _UxGT("* passos/mm"); - LSTR MSG_TEMPERATURE = _UxGT("Temperatura"); - LSTR MSG_MOTION = _UxGT("Moviment"); - LSTR MSG_FILAMENT = _UxGT("Filament"); - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E en mm") SUPERSCRIPT_THREE; - LSTR MSG_FILAMENT_DIAM = _UxGT("Diam. Fil."); - LSTR MSG_FILAMENT_DIAM_E = _UxGT("Diam. Fil. *"); - LSTR MSG_CONTRAST = _UxGT("Contrast de LCD"); - LSTR MSG_STORE_EEPROM = _UxGT("Desa memoria"); - LSTR MSG_LOAD_EEPROM = _UxGT("Carrega memoria"); - LSTR MSG_RESTORE_DEFAULTS = _UxGT("Restaura valors"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Actualitza"); - LSTR MSG_INFO_SCREEN = _UxGT("Pantalla Info."); - LSTR MSG_PREPARE = _UxGT("Prepara"); - LSTR MSG_TUNE = _UxGT("Ajusta"); - LSTR MSG_PAUSE_PRINT = _UxGT("Pausa impressio"); - LSTR MSG_RESUME_PRINT = _UxGT("Repren impressio"); - LSTR MSG_STOP_PRINT = _UxGT("Atura impressio."); - LSTR MSG_MEDIA_MENU = _UxGT("Imprimeix de SD"); - LSTR MSG_NO_MEDIA = _UxGT("No hi ha targeta"); - LSTR MSG_DWELL = _UxGT("En repos..."); - LSTR MSG_USERWAIT = _UxGT("Esperant usuari.."); - LSTR MSG_PRINT_ABORTED = _UxGT("Imp. cancelada"); - LSTR MSG_NO_MOVE = _UxGT("Sense moviment."); - LSTR MSG_KILLED = _UxGT("MATAT."); - LSTR MSG_STOPPED = _UxGT("ATURADA."); - LSTR MSG_CONTROL_RETRACT = _UxGT("Retreu mm"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Swap Retreure mm"); - LSTR MSG_CONTROL_RETRACTF = _UxGT("Retreu V"); - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Aixeca mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("DesRet +mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Swap DesRet +mm"); - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("DesRet V"); - LSTR MSG_AUTORETRACT = _UxGT("Auto retraccio"); - LSTR MSG_FILAMENTCHANGE = _UxGT("Canvia filament"); - LSTR MSG_FILAMENTCHANGE_E = _UxGT("Canvia filament *"); - - LSTR MSG_ATTACH_MEDIA = _UxGT("Inicialitza SD"); - LSTR MSG_ATTACH_SD = _UxGT("Inicialitza SD"); - LSTR MSG_ATTACH_USB = _UxGT("Inicialitza USB"); - LSTR MSG_CHANGE_MEDIA = _UxGT("Canvia SD"); - LSTR MSG_RUN_AUTOFILES = _UxGT("Inici automatic"); - - LSTR MSG_ZPROBE_OUT = _UxGT("Sonda Z fora"); - LSTR MSG_BLTOUCH_RESET = _UxGT("Reinicia BLTouch"); - LSTR MSG_HOME_FIRST = _UxGT("Home %s primer"); - LSTR MSG_ZPROBE_XOFFSET = _UxGT("Decalatge X"); - LSTR MSG_ZPROBE_YOFFSET = _UxGT("Decalatge Y"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Decalatge Z"); - LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Decalatge @"); - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Pas a pas el Z"); - LSTR MSG_BABYSTEP_X = _UxGT("Micropas X"); - LSTR MSG_BABYSTEP_Y = _UxGT("Micropas Y"); - LSTR MSG_BABYSTEP_Z = _UxGT("Micropas Z"); - LSTR MSG_BABYSTEP_N = _UxGT("Micropas @"); - LSTR MSG_ENDSTOP_ABORT = _UxGT("Cancel. Endstop"); - LSTR MSG_ERR_HEATING_FAILED = _UxGT("Error al escalfar"); - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Err: TEMP REDUNDANT"); - LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("THERMAL RUNAWAY"); - LSTR MSG_ERR_MAXTEMP = _UxGT("Err: TEMP MAXIMA"); - LSTR MSG_ERR_MINTEMP = _UxGT("Err: TEMP MINIMA"); - LSTR MSG_HALTED = _UxGT("IMPRESSORA PARADA"); - LSTR MSG_PLEASE_RESET = _UxGT("Reinicieu"); - LSTR MSG_HEATING = _UxGT("Escalfant..."); - LSTR MSG_BED_HEATING = _UxGT("Escalfant llit..."); - LSTR MSG_DELTA_CALIBRATE = _UxGT("Calibratge Delta"); - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Calibra X"); - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Calibra Y"); - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Calibra Z"); - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibra el centre"); - - LSTR MSG_INFO_MENU = _UxGT("Quant a la impr."); - LSTR MSG_INFO_PRINTER_MENU = _UxGT("Info Impressora"); - LSTR MSG_INFO_STATS_MENU = _UxGT("Estadistiques"); - LSTR MSG_INFO_BOARD_MENU = _UxGT("Info placa"); - LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Termistors"); - LSTR MSG_INFO_EXTRUDERS = _UxGT("Extrusors"); - LSTR MSG_INFO_BAUDRATE = _UxGT("Baud"); - LSTR MSG_INFO_PROTOCOL = _UxGT("Protocol"); - LSTR MSG_CASE_LIGHT = _UxGT("Llum"); - - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Impressions"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Acabades"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Mes llarg"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extrudit"); - - LSTR MSG_INFO_MIN_TEMP = _UxGT("Temp. mínima"); - LSTR MSG_INFO_MAX_TEMP = _UxGT("Temp. màxima"); - LSTR MSG_INFO_PSU = _UxGT("Font alimentacio"); - - LSTR MSG_DRIVE_STRENGTH = _UxGT("Força motor"); - - LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Repren impressió"); - - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Impressora incorrecta"); - - // - // Filament Change screens show up to 2 lines on a 3-line display - // - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Espereu...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Expulsant...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Insereix i prem")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Escalfant...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Carregant...")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Reprenent...")); + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" preparada."); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = _UxGT("Targeta detectada."); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = _UxGT("Targeta extreta."); // (MEDIA_TYPE_EN) Removed + LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Endstops + LSTR MSG_MAIN_MENU = _UxGT("Menú principal"); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("Desactiva motors"); // Disable Steppers + LSTR MSG_HOMING = _UxGT("Origen"); // Homing + LSTR MSG_AUTO_HOME = _UxGT("Ves a l'origen"); // Auto Home + LSTR MSG_AUTO_HOME_X = _UxGT("X a origen"); // Home X + LSTR MSG_AUTO_HOME_Y = _UxGT("Y a origen"); // Home Y + LSTR MSG_AUTO_HOME_Z = _UxGT("Z a origen"); // Home Z + LSTR MSG_LEVEL_BED_HOMING = _UxGT("Origen XYZ"); // Homing XYZ + LSTR MSG_LEVEL_BED_WAITING = _UxGT("Premeu per iniciar"); // Click to Begin + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Següent punt"); // Next Point + LSTR MSG_LEVEL_BED_DONE = _UxGT("Anivellament fet!"); // Leveling Done! + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Ajusta decalatge"); // Set Home Offsets + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Decalatge aplicat"); // Offsets Applied + LSTR MSG_PREHEAT_1 = _UxGT("Preescalfa ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = _UxGT("Preescalfa ") PREHEAT_1_LABEL " ~"; // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" End"); // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" End ~"); // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_1_ALL = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" Tot"); // Preheat (PREHEAT_1_LABEL) All + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" Llit"); // Preheat (PREHEAT_1_LABEL) Bed + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Preescalfa ") PREHEAT_1_LABEL _UxGT(" Conf."); // Preheat (PREHEAT_1_LABEL) Conf + LSTR MSG_PREHEAT_M = _UxGT("Preescalfa $"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("Preescalfa $ ~"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("Preescalfa $ End"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("Preescalfa $ End ~"); // Preheat $ End ~ + LSTR MSG_PREHEAT_M_ALL = _UxGT("Preescalfa $ Tot"); // Preheat $ All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Preescalfa $ Llit"); // Preheat $ Bed + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Preescalfa $ Conf."); // Preheat $ Conf + LSTR MSG_COOLDOWN = _UxGT("Refreda"); // Cooldown + LSTR MSG_EXTRUDE = _UxGT("Extrudeix"); // Extrude + LSTR MSG_RETRACT = _UxGT("Retreu"); // Retract + LSTR MSG_MOVE_AXIS = _UxGT("Mou eixos"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("Sonda i anivella"); // Probe and Level + LSTR MSG_BED_LEVELING = _UxGT("Anivella llit"); // Bed Leveling + LSTR MSG_LEVEL_BED = _UxGT("Anivella llit"); // Level Bed + LSTR MSG_MOVE_X = _UxGT("Mou X"); // Move X + LSTR MSG_MOVE_Y = _UxGT("Mou Y"); // Move Y + LSTR MSG_MOVE_Z = _UxGT("Mou Z"); // Move Z + LSTR MSG_MOVE_N = _UxGT("Mou @"); // Move @ + LSTR MSG_MOVE_E = _UxGT("Extrusor"); // Move Extruder + LSTR MSG_MOVE_EN = _UxGT("Extrusor *"); // Move * + LSTR MSG_MOVE_N_MM = _UxGT("Mou $mm"); // Move $mm + LSTR MSG_MOVE_N_IN = _UxGT("Mou $in"); // Move $in + LSTR MSG_MOVE_N_DEG = _UxGT("Mou $") LCD_STR_DEGREE; // Move $(LCD_STR_DEGREE) + LSTR MSG_SPEED = _UxGT("Velocitat"); // Speed + LSTR MSG_MESH_Z_OFFSET = _UxGT("Llit Z"); // Bed Z + LSTR MSG_NOZZLE = _UxGT("Nozzle"); // Nozzle + LSTR MSG_NOZZLE_N = _UxGT("Nozzle ~"); // Nozzle ~ + LSTR MSG_BED = _UxGT("Llit"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("Vel. Ventilador"); // Fan Speed + LSTR MSG_FAN_SPEED_N = _UxGT("Vel. Ventilador ~"); // Fan Speed ~ + LSTR MSG_FLOW = _UxGT("Flux"); // Flow + LSTR MSG_FLOW_N = _UxGT("Flux ~"); // Flow ~ + LSTR MSG_VTRAV_MIN = _UxGT("VViatge min"); // Min Travel Speed + LSTR MSG_A_RETRACT = _UxGT("Accel. retracc"); // Retract Accel + LSTR MSG_A_TRAVEL = _UxGT("Accel. Viatge"); // Travel Accel + LSTR MSG_STEPS_PER_MM = _UxGT("Passos/mm"); // Steps/mm + LSTR MSG_A_STEPS = STR_A _UxGT(" passos/mm"); // (STR_A) Steps/mm + LSTR MSG_B_STEPS = STR_B _UxGT(" passos/mm"); // (STR_B) Steps/mm + LSTR MSG_C_STEPS = STR_C _UxGT(" passos/mm"); // (STR_C) Steps/mm + LSTR MSG_N_STEPS = _UxGT("E passos/mm"); // @ steps/mm + LSTR MSG_E_STEPS = _UxGT("@ passos/mm"); // E steps/mm + LSTR MSG_EN_STEPS = _UxGT("* passos/mm"); // * Steps/mm + LSTR MSG_TEMPERATURE = _UxGT("Temperatura"); // Temperature + LSTR MSG_MOTION = _UxGT("Moviment"); // Motion + LSTR MSG_FILAMENT = _UxGT("Filament"); // Filament + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E en mm") SUPERSCRIPT_THREE; // E in mm(SUPERSCRIPT_THREE) + LSTR MSG_FILAMENT_DIAM = _UxGT("Diam. Fil."); // Fil. Dia. + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Diam. Fil. *"); // Fil. Dia. * + LSTR MSG_CONTRAST = _UxGT("Contrast de LCD"); // LCD Contrast + LSTR MSG_STORE_EEPROM = _UxGT("Desa memoria"); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("Carrega memoria"); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("Restaura valors"); // Restore Defaults + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Actualitza"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT("Pantalla Info."); // Info Screen + LSTR MSG_PREPARE = _UxGT("Prepara"); // Prepare + LSTR MSG_TUNE = _UxGT("Ajusta"); // Tune + LSTR MSG_PAUSE_PRINT = _UxGT("Pausa impressio"); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("Repren impressio"); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("Atura impressio."); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("Imprimeix de SD"); // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = _UxGT("No hi ha targeta"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_DWELL = _UxGT("En repos..."); // Sleep... + LSTR MSG_USERWAIT = _UxGT("Esperant usuari.."); // Click to Resume... + LSTR MSG_PRINT_ABORTED = _UxGT("Imp. cancelada"); // Print Aborted + LSTR MSG_NO_MOVE = _UxGT("Sense moviment."); // No Move. + LSTR MSG_KILLED = _UxGT("MATAT."); // KILLED. + LSTR MSG_STOPPED = _UxGT("ATURADA."); // STOPPED. + LSTR MSG_CONTROL_RETRACT = _UxGT("Retreu mm"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Swap Retreure mm"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACTF = _UxGT("Retreu V"); // Retract V + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Aixeca mm"); // Hop mm + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("DesRet +mm"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Swap DesRet +mm"); // S Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("DesRet V"); // Unretract V + LSTR MSG_AUTORETRACT = _UxGT("Auto retraccio"); // Auto-Retract + LSTR MSG_FILAMENTCHANGE = _UxGT("Canvia filament"); // Change Filament + LSTR MSG_FILAMENTCHANGE_E = _UxGT("Canvia filament *"); // Change * Filament + LSTR MSG_ATTACH_MEDIA = _UxGT("Inicialitza SD"); // Attach (MEDIA_TYPE_EN) + LSTR MSG_ATTACH_SD = _UxGT("Inicialitza SD"); // Attach SD Card + LSTR MSG_ATTACH_USB = _UxGT("Inicialitza USB"); // Attach USB Drive + LSTR MSG_CHANGE_MEDIA = _UxGT("Canvia SD"); // Refresh (MEDIA_TYPE_EN) + LSTR MSG_RUN_AUTOFILES = _UxGT("Inici automatic"); // Run Autofiles + LSTR MSG_ZPROBE_OUT = _UxGT("Sonda Z fora"); // Z Probe Past Bed + LSTR MSG_BLTOUCH_RESET = _UxGT("Reinicia BLTouch"); // Reset + LSTR MSG_ZPROBE_XOFFSET = _UxGT("Decalatge X"); // Probe X Offset + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Decalatge Y"); // Probe Y Offset + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Decalatge Z"); // Probe Z Offset + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Decalatge @"); // Probe @ Offset + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Pas a pas el Z"); // Babystep Probe Z + LSTR MSG_BABYSTEP_X = _UxGT("Micropas X"); // Babystep X + LSTR MSG_BABYSTEP_Y = _UxGT("Micropas Y"); // Babystep Y + LSTR MSG_BABYSTEP_Z = _UxGT("Micropas Z"); // Babystep Z + LSTR MSG_BABYSTEP_N = _UxGT("Micropas @"); // Babystep @ + LSTR MSG_ENDSTOP_ABORT = _UxGT("Cancel. Endstop"); // Endstop Abort + LSTR MSG_ERR_HEATING_FAILED = _UxGT("Error al escalfar"); // Heating Failed + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Err: TEMP REDUNDANT"); // Err: REDUNDANT TEMP + LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("THERMAL RUNAWAY"); // THERMAL RUNAWAY + LSTR MSG_ERR_MAXTEMP = _UxGT("Err: TEMP MAXIMA"); // Err: MAXTEMP + LSTR MSG_ERR_MINTEMP = _UxGT("Err: TEMP MINIMA"); // Err: MINTEMP + LSTR MSG_HALTED = _UxGT("IMPRESSORA PARADA"); // PRINTER HALTED + LSTR MSG_PLEASE_RESET = _UxGT("Reinicieu"); // Please Reset + LSTR MSG_HEATING = _UxGT("Escalfant..."); // Heating... + LSTR MSG_BED_HEATING = _UxGT("Escalfant llit..."); // Bed Heating... + LSTR MSG_DELTA_CALIBRATE = _UxGT("Calibratge Delta"); // Delta Calibration + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Calibra X"); // Calibrate X + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Calibra Y"); // Calibrate Y + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Calibra Z"); // Calibrate Z + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibra el centre"); // Calibrate Center + LSTR MSG_INFO_MENU = _UxGT("Quant a la impr."); // About Printer + LSTR MSG_INFO_PRINTER_MENU = _UxGT("Info Impressora"); // Printer Info + LSTR MSG_INFO_STATS_MENU = _UxGT("Estadistiques"); // Stats + LSTR MSG_INFO_BOARD_MENU = _UxGT("Info placa"); // Board Info + LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Termistors"); // Thermistors + LSTR MSG_INFO_EXTRUDERS = _UxGT("Extrusors"); // Extruders + LSTR MSG_INFO_BAUDRATE = _UxGT("Baud"); // Baud + LSTR MSG_INFO_PROTOCOL = _UxGT("Protocol"); // Protocol + LSTR MSG_CASE_LIGHT = _UxGT("Llum"); // Case Light + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Impressions"); // Prints + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Acabades"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); // Total + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Mes llarg"); // Longest + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extrudit"); // Extruded + LSTR MSG_INFO_MIN_TEMP = _UxGT("Temp. mínima"); // Min Temp + LSTR MSG_INFO_MAX_TEMP = _UxGT("Temp. màxima"); // Max Temp + LSTR MSG_INFO_PSU = _UxGT("Font alimentacio"); // PSU + LSTR MSG_DRIVE_STRENGTH = _UxGT("Força motor"); // Drive Strength + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Repren impressió"); // Continue + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Espereu...")); // |Please wait... + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Insereix i prem")); // |Insert and Click + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Expulsant...")); // |Ejecting... + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Carregant...")); // |Loading... + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Reprenent...")); // |Resuming... + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Impressora incorrecta"); // INCORRECT PRINTER + LSTR MSG_DEBUG_MENU = _UxGT("Menu de depuracio"); // Debug Menu + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Test barra progres"); // Progress Bar Test + LSTR MSG_MOVING = _UxGT("Movent.."); // Moving... + LSTR MSG_FREE_XY = _UxGT("XY lliures"); // Free XY + LSTR MSG_HOME_FIRST = _UxGT("Home %s primer"); // Home %s First + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Escalfant...")); // |Heating... } namespace LanguageWide_ca { using namespace LanguageNarrow_ca; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Total impressions"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Acabades"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Temps imprimint"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Treball mes llarg"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total extrudit"); + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Total impressions"); // Print Count + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Acabades"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Temps imprimint"); // Print Time + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Treball mes llarg"); // Longest Job Time + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total extrudit"); // Extruded Total #endif } @@ -240,13 +222,13 @@ namespace LanguageTall_ca { using namespace LanguageWide_ca; #if LCD_HEIGHT >= 4 // Filament Change screens show up to 3 lines on a 4-line display - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Esperant per", "iniciar el canvi", "de filament")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Esperant per", "treure filament")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Poseu filament", "i premeu el boto", "per continuar...")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Premeu boto per", "escalfar nozzle.")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Escalfant nozzle", "Espereu...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Esperant carrega", "de filament")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Esperant per", "reprendre")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Esperant per", "iniciar el canvi", "de filament")); // |Wait for|filament change|to start + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Poseu filament", "i premeu el boto", "per continuar...")); // |Insert filament|and press button|to continue + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Esperant per", "treure filament")); // |Wait for|filament unload + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Esperant carrega", "de filament")); // |Wait for|filament load + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Esperant per", "reprendre")); // |Wait for print|to resume... + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Escalfant nozzle", "Espereu...")); // |Nozzle heating|Please wait... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Premeu boto per", "escalfar nozzle.")); // |Press button|to heat nozzle #endif } diff --git a/Marlin/src/lcd/language/language_cz.h b/Marlin/src/lcd/language/language_cz.h index 7aefa38ff4..affedf5ed0 100644 --- a/Marlin/src/lcd/language/language_cz.h +++ b/Marlin/src/lcd/language/language_cz.h @@ -50,525 +50,504 @@ namespace LanguageNarrow_cz { constexpr uint8_t CHARSIZE = 2; LSTR LANGUAGE = _UxGT("Czech"); - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" připraven."); - LSTR MSG_YES = _UxGT("ANO"); - LSTR MSG_NO = _UxGT("NE"); - LSTR MSG_BACK = _UxGT("Zpět"); - - LSTR MSG_MEDIA_ABORTING = _UxGT("Rušení..."); - LSTR MSG_MEDIA_INSERTED = _UxGT("Médium vloženo"); - LSTR MSG_MEDIA_REMOVED = _UxGT("Médium vyjmuto"); - LSTR MSG_MEDIA_READ_ERROR = _UxGT("Chyba čtení média"); - LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB odstraněno"); - LSTR MSG_USB_FD_USB_FAILED = _UxGT("Chyba USB"); - - LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstopy"); // max 8 znaku - LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Soft Endstopy"); - LSTR MSG_MAIN_MENU = _UxGT("Hlavní nabídka"); - LSTR MSG_ADVANCED_SETTINGS = _UxGT("Další nastavení"); - LSTR MSG_CONFIGURATION = _UxGT("Konfigurace"); - LSTR MSG_DISABLE_STEPPERS = _UxGT("Uvolnit motory"); - LSTR MSG_DEBUG_MENU = _UxGT("Nabídka ladění"); - LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Test uk. průběhu"); - LSTR MSG_AUTO_HOME = _UxGT("Domovská pozice"); - LSTR MSG_AUTO_HOME_X = _UxGT("Domů osa X"); - LSTR MSG_AUTO_HOME_Y = _UxGT("Domů osa Y"); - LSTR MSG_AUTO_HOME_Z = _UxGT("Domů osa Z"); - LSTR MSG_AUTO_Z_ALIGN = _UxGT("Auto srovnání Z"); - LSTR MSG_LEVEL_BED_HOMING = _UxGT("Měření podložky"); - LSTR MSG_LEVEL_BED_WAITING = _UxGT("Kliknutím spusťte"); - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Další bod"); - LSTR MSG_LEVEL_BED_DONE = _UxGT("Měření hotovo!"); - LSTR MSG_Z_FADE_HEIGHT = _UxGT("Výška srovnávání"); - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Nastavit ofsety"); - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Ofsety nastaveny"); - - LSTR MSG_PREHEAT_1 = _UxGT("Zahřát ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Zahřát ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" end"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" end ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" vše"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" podlož"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" nast"); - - LSTR MSG_PREHEAT_M = _UxGT("Zahřát $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Zahřát $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Zahřát $ end"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Zahřát $ end ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Zahřát $ vše"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Zahřát $ podlož"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Zahřát $ nast"); - - LSTR MSG_PREHEAT_CUSTOM = _UxGT("Zahřát vlastní"); - LSTR MSG_COOLDOWN = _UxGT("Zchladit"); - LSTR MSG_LASER_MENU = _UxGT("Ovládání laseru"); - LSTR MSG_LASER_POWER = _UxGT("Výkon laseru"); - LSTR MSG_SPINDLE_MENU = _UxGT("Vřeteno ovládání"); - LSTR MSG_SPINDLE_POWER = _UxGT("Vřeteno výkon"); - LSTR MSG_SPINDLE_REVERSE = _UxGT("Vřeteno opačně"); - LSTR MSG_SWITCH_PS_ON = _UxGT("Zapnout napájení"); - LSTR MSG_SWITCH_PS_OFF = _UxGT("Vypnout napájení"); - LSTR MSG_EXTRUDE = _UxGT("Vytlačit (extr.)"); - LSTR MSG_RETRACT = _UxGT("Zatlačit (retr.)"); - LSTR MSG_MOVE_AXIS = _UxGT("Posunout osy"); - LSTR MSG_PROBE_AND_LEVEL = _UxGT("Měření a vyrovnání"); - LSTR MSG_BED_LEVELING = _UxGT("Vyrovnat podložku"); - LSTR MSG_LEVEL_BED = _UxGT("Vyrovnat podložku"); - LSTR MSG_BED_TRAMMING = _UxGT("Vyrovnat rohy"); - LSTR MSG_NEXT_CORNER = _UxGT("Další roh"); - LSTR MSG_MESH_EDITOR = _UxGT("Editor sítě"); - LSTR MSG_EDIT_MESH = _UxGT("Upravit síť bodů"); - LSTR MSG_EDITING_STOPPED = _UxGT("Konec úprav sítě"); - LSTR MSG_PROBING_POINT = _UxGT("Měření bodu"); - LSTR MSG_MESH_X = _UxGT("Index X"); - LSTR MSG_MESH_Y = _UxGT("Index Y"); - LSTR MSG_MESH_EDIT_Z = _UxGT("Hodnota Z"); - - LSTR MSG_CUSTOM_COMMANDS = _UxGT("Vlastní příkazy"); - LSTR MSG_M48_TEST = _UxGT("M48 test sondy"); - LSTR MSG_M48_POINT = _UxGT("M48 bod"); - LSTR MSG_M48_DEVIATION = _UxGT("Odchylka"); - LSTR MSG_IDEX_MENU = _UxGT("Režim IDEX"); - LSTR MSG_OFFSETS_MENU = _UxGT("Ofsety nástrojů"); - LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-Park"); - LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplikace"); - LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Zrcadlení"); - LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Plná kontrola"); - LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2. tryska Z"); - LSTR MSG_HOTEND_OFFSET_N = _UxGT("2. tryska @"); - - LSTR MSG_UBL_DOING_G29 = _UxGT("Provádím G29"); - LSTR MSG_UBL_TOOLS = _UxGT("UBL nástroje"); - LSTR MSG_LCD_TILTING_MESH = _UxGT("Vyrovnání bodu"); - LSTR MSG_UBL_MANUAL_MESH = _UxGT("Manuální síť bodů"); - LSTR MSG_UBL_BC_INSERT = _UxGT("Vložte kartu, změřte"); - LSTR MSG_UBL_BC_INSERT2 = _UxGT("Změřte"); - LSTR MSG_UBL_BC_REMOVE = _UxGT("Odstraňte a změřte"); - LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Přesun na další"); - LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Teplota podložky"); - LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Teplota podložky"); - LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Teplota hotendu"); - LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Teplota hotendu"); - LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Upravit vlastní síť"); - LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Doladit síť bodů"); - LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Konec úprav sítě"); - LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Vlastní síť"); - LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Vytvořit síť"); - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Síť bodů $"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Kontrola sítě $"); - LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Studená síť bodů"); - LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Upravit výšku sítě"); - LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Výška"); - LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Zkontrolovat síť"); - LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Kontrola vlast. sítě"); - LSTR MSG_G26_HEATING_BED = _UxGT("G26 zahřívání podl."); - LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 zařívání trysky"); - LSTR MSG_G26_MANUAL_PRIME = _UxGT("Ruční zavedení..."); - LSTR MSG_G26_FIXED_LENGTH = _UxGT("Pevné zavední"); - LSTR MSG_G26_PRIME_DONE = _UxGT("Done Priming"); - LSTR MSG_G26_CANCELED = _UxGT("G26 Canceled"); - LSTR MSG_G26_LEAVING = _UxGT("Leaving G26"); - LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Pokračovat v síťi"); - LSTR MSG_UBL_MESH_LEVELING = _UxGT("Síťové rovnání"); - LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-bodové rovnání"); - LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Mřížkové rovnání"); - LSTR MSG_UBL_MESH_LEVEL = _UxGT("Srovnat podložku"); - LSTR MSG_UBL_SIDE_POINTS = _UxGT("Postranní body"); - LSTR MSG_UBL_MAP_TYPE = _UxGT("Typ sítě bodu"); - LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Exportovat síť"); - LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Exportovat do PC"); - LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Exportovat do CSV"); - LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Záloha do PC"); - LSTR MSG_UBL_INFO_UBL = _UxGT("Info o UBL do PC"); - LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Hustota mřížky"); - LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Ruční hustota"); - LSTR MSG_UBL_SMART_FILLIN = _UxGT("Chytrá hustota"); - LSTR MSG_UBL_FILLIN_MESH = _UxGT("Zaplnit mřížku"); - LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Zrušit všechno"); - LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Zrušit poslední"); - LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Upravit všechny"); - LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Upravit poslední"); - LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Uložiště sítí"); - LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Paměťový slot"); - LSTR MSG_UBL_LOAD_MESH = _UxGT("Načíst síť bodů"); - LSTR MSG_UBL_SAVE_MESH = _UxGT("Uložit síť bodů"); - LSTR MSG_MESH_LOADED = _UxGT("Síť %i načtena"); - LSTR MSG_MESH_SAVED = _UxGT("Síť %i uložena"); - LSTR MSG_UBL_NO_STORAGE = _UxGT("Nedostatek místa"); - LSTR MSG_UBL_SAVE_ERROR = _UxGT("Ch.: Uložit UBL"); - LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Ch.: Obnovit UBL"); - LSTR MSG_UBL_Z_OFFSET = _UxGT("Z-ofset: "); - LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Konec Z-ofsetu"); - LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("UBL Postupně"); - LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1. Studená síť bodů"); - LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2. Chytrá hustota"); - LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3. Zkontrolovat síť"); - LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4. Upravit všechny"); - LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5. Zkontrolovat síť"); - LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6. Upravit všechny"); - LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7. Uložit síť bodů"); - - LSTR MSG_LED_CONTROL = _UxGT("Nastavení LED"); - LSTR MSG_LIGHTS = _UxGT("Světla"); - LSTR MSG_LIGHT_N = _UxGT("Světla #{"); - LSTR MSG_LED_PRESETS = _UxGT("Světla Předvolby"); - LSTR MSG_SET_LEDS_RED = _UxGT("Červená"); - LSTR MSG_SET_LEDS_ORANGE = _UxGT("Oranžová"); - LSTR MSG_SET_LEDS_YELLOW = _UxGT("Žlutá"); - LSTR MSG_SET_LEDS_GREEN = _UxGT("Zelená"); - LSTR MSG_SET_LEDS_BLUE = _UxGT("Modrá"); - LSTR MSG_SET_LEDS_INDIGO = _UxGT("Indigo"); - LSTR MSG_SET_LEDS_VIOLET = _UxGT("Fialová"); - LSTR MSG_SET_LEDS_WHITE = _UxGT("Bílá"); - LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Výchozí"); - LSTR MSG_CUSTOM_LEDS = _UxGT("Vlastní světla"); - LSTR MSG_INTENSITY_R = _UxGT("Červená intenzita"); - LSTR MSG_INTENSITY_G = _UxGT("Zelená intezita"); - LSTR MSG_INTENSITY_B = _UxGT("Modrá intenzita"); - LSTR MSG_INTENSITY_W = _UxGT("Bílá intenzita"); - LSTR MSG_LED_BRIGHTNESS = _UxGT("Jas"); - - LSTR MSG_MOVING = _UxGT("Posouvání..."); - LSTR MSG_FREE_XY = _UxGT("Uvolnit XY"); - LSTR MSG_MOVE_X = _UxGT("Posunout X"); - LSTR MSG_MOVE_Y = _UxGT("Posunout Y"); - LSTR MSG_MOVE_Z = _UxGT("Posunout Z"); - LSTR MSG_MOVE_N = _UxGT("Posunout @"); - LSTR MSG_MOVE_E = _UxGT("Extrudér"); - LSTR MSG_MOVE_EN = _UxGT("Extrudér *"); - LSTR MSG_HOTEND_TOO_COLD = _UxGT("Hotend je studený"); - LSTR MSG_MOVE_N_MM = _UxGT("Posunout o $mm"); - LSTR MSG_MOVE_N_IN = _UxGT("Posunout o $in"); - LSTR MSG_MOVE_N_DEG = _UxGT("Posunout o $") LCD_STR_DEGREE; - LSTR MSG_SPEED = _UxGT("Rychlost"); - LSTR MSG_MESH_Z_OFFSET = _UxGT("Výška podl."); - LSTR MSG_NOZZLE = _UxGT("Tryska"); - LSTR MSG_NOZZLE_N = _UxGT("Tryska ~"); - LSTR MSG_BED = _UxGT("Podložka"); - LSTR MSG_CHAMBER = _UxGT("Komora"); - LSTR MSG_FAN_SPEED = _UxGT("Rychlost vent."); - LSTR MSG_FAN_SPEED_N = _UxGT("Rychlost vent. ~"); - LSTR MSG_STORED_FAN_N = _UxGT("Ulož. vent. ~"); - LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Rychlost ex. vent."); - LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Rychlost ex. vent. ~"); - LSTR MSG_FLOW = _UxGT("Průtok"); - LSTR MSG_FLOW_N = _UxGT("Průtok ~"); - LSTR MSG_CONTROL = _UxGT("Ovládaní"); - LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" min"); - LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" max"); - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" fakt"); - LSTR MSG_AUTOTEMP = _UxGT("Autoteplota"); - LSTR MSG_LCD_ON = _UxGT("Zap"); - LSTR MSG_LCD_OFF = _UxGT("Vyp"); - LSTR MSG_PID_AUTOTUNE = _UxGT("PID automatika"); - LSTR MSG_PID_AUTOTUNE_E = _UxGT("PID automatika *"); - LSTR MSG_SELECT_E = _UxGT("Vybrat *"); - LSTR MSG_ACC = _UxGT("Zrychl"); - LSTR MSG_JERK = _UxGT("Jerk"); - LSTR MSG_VA_JERK = _UxGT("Max ") STR_A _UxGT(" Jerk"); - LSTR MSG_VB_JERK = _UxGT("Max ") STR_B _UxGT(" Jerk"); - LSTR MSG_VC_JERK = _UxGT("Max ") STR_C _UxGT(" Jerk"); - LSTR MSG_VN_JERK = _UxGT("Max @ Jerk"); - LSTR MSG_VE_JERK = _UxGT("Max E Jerk"); - LSTR MSG_JUNCTION_DEVIATION = _UxGT("Odchylka spoje"); - LSTR MSG_MAX_SPEED = _UxGT("Max Rychlost"); - LSTR MSG_VMAX_A = _UxGT("Max ") STR_A _UxGT(" Rychlost"); - LSTR MSG_VMAX_B = _UxGT("Max ") STR_B _UxGT(" Rychlost"); - LSTR MSG_VMAX_C = _UxGT("Max ") STR_C _UxGT(" Rychlost"); - LSTR MSG_VMAX_N = _UxGT("Max @ Rychlost"); - LSTR MSG_VMAX_E = _UxGT("Max E Rychlost"); - LSTR MSG_VMAX_EN = _UxGT("Max * Rychlost"); - LSTR MSG_VMIN = _UxGT("Vmin"); - LSTR MSG_VTRAV_MIN = _UxGT("VTrav Min"); - LSTR MSG_ACCELERATION = _UxGT("Akcelerace"); - LSTR MSG_AMAX_A = _UxGT("Max ") STR_A _UxGT(" Akcel"); - LSTR MSG_AMAX_B = _UxGT("Max ") STR_B _UxGT(" Akcel"); - LSTR MSG_AMAX_C = _UxGT("Max ") STR_C _UxGT(" Akcel"); - LSTR MSG_AMAX_N = _UxGT("Max @ Akcel"); - LSTR MSG_AMAX_E = _UxGT("Max E Akcel"); - LSTR MSG_AMAX_EN = _UxGT("Max * Akcel"); - LSTR MSG_A_RETRACT = _UxGT("A-retrakt"); - LSTR MSG_A_TRAVEL = _UxGT("A-přejezd"); - LSTR MSG_STEPS_PER_MM = _UxGT("Kroků/mm"); - LSTR MSG_A_STEPS = STR_A _UxGT(" kroků/mm"); - LSTR MSG_B_STEPS = STR_B _UxGT(" kroků/mm"); - LSTR MSG_C_STEPS = STR_C _UxGT(" kroků/mm"); - LSTR MSG_N_STEPS = _UxGT("@ kroků/mm"); - LSTR MSG_E_STEPS = _UxGT("E kroků/mm"); - LSTR MSG_EN_STEPS = _UxGT("* kroků/mm"); - LSTR MSG_TEMPERATURE = _UxGT("Teplota"); - LSTR MSG_MOTION = _UxGT("Pohyb"); - LSTR MSG_FILAMENT = _UxGT("Filament"); - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E na mm") SUPERSCRIPT_THREE; - LSTR MSG_FILAMENT_DIAM = _UxGT("Fil. Prum."); - LSTR MSG_FILAMENT_DIAM_E = _UxGT("Fil. Prum. *"); - LSTR MSG_FILAMENT_UNLOAD = _UxGT("Vysunout mm"); - LSTR MSG_FILAMENT_LOAD = _UxGT("Zavést mm"); - LSTR MSG_ADVANCE_K = _UxGT("K pro posun"); - LSTR MSG_ADVANCE_K_E = _UxGT("K pro posun *"); - LSTR MSG_CONTRAST = _UxGT("Kontrast LCD"); - LSTR MSG_STORE_EEPROM = _UxGT("Uložit nastavení"); - LSTR MSG_LOAD_EEPROM = _UxGT("Načíst nastavení"); - LSTR MSG_RESTORE_DEFAULTS = _UxGT("Obnovit výchozí"); - LSTR MSG_INIT_EEPROM = _UxGT("Inic. EEPROM"); - LSTR MSG_MEDIA_UPDATE = _UxGT("Aktualizace z SD"); - LSTR MSG_RESET_PRINTER = _UxGT("Reset tiskárny"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Obnovit"); - LSTR MSG_INFO_SCREEN = _UxGT("Info obrazovka"); - LSTR MSG_PREPARE = _UxGT("Připrava tisku"); - LSTR MSG_TUNE = _UxGT("Doladění tisku"); - LSTR MSG_START_PRINT = _UxGT("Spustit tisk"); - LSTR MSG_BUTTON_NEXT = _UxGT("Další"); - LSTR MSG_BUTTON_INIT = _UxGT("Inicializace"); - LSTR MSG_BUTTON_STOP = _UxGT("Stop"); - LSTR MSG_BUTTON_PRINT = _UxGT("Tisk"); - LSTR MSG_BUTTON_RESET = _UxGT("Reset"); - LSTR MSG_BUTTON_CANCEL = _UxGT("Zrušit"); - LSTR MSG_BUTTON_DONE = _UxGT("Hotovo"); - LSTR MSG_BUTTON_BACK = _UxGT("Zpět"); - LSTR MSG_BUTTON_PROCEED = _UxGT("Pokračovat"); - LSTR MSG_PAUSE_PRINT = _UxGT("Pozastavit tisk"); - LSTR MSG_RESUME_PRINT = _UxGT("Obnovit tisk"); - LSTR MSG_STOP_PRINT = _UxGT("Zastavit tisk"); - LSTR MSG_PRINTING_OBJECT = _UxGT("Tisk objektu"); - LSTR MSG_CANCEL_OBJECT = _UxGT("Zrušit objekt"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Zrušit objekt {"); - LSTR MSG_OUTAGE_RECOVERY = _UxGT("Obnova výpadku"); - LSTR MSG_MEDIA_MENU = _UxGT("Tisknout z SD"); - LSTR MSG_NO_MEDIA = _UxGT("Žádná SD karta"); - LSTR MSG_DWELL = _UxGT("Uspáno..."); - LSTR MSG_USERWAIT = _UxGT("Čekání na uživ..."); - LSTR MSG_PRINT_PAUSED = _UxGT("Tisk pozastaven"); - LSTR MSG_PRINTING = _UxGT("Tisknu..."); - LSTR MSG_PRINT_ABORTED = _UxGT("Tisk zrušen"); - LSTR MSG_NO_MOVE = _UxGT("Žádný pohyb."); - LSTR MSG_KILLED = _UxGT("PŘERUSENO. "); - LSTR MSG_STOPPED = _UxGT("ZASTAVENO. "); - LSTR MSG_CONTROL_RETRACT = _UxGT("Retrakt mm"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Výměna Re.mm"); - LSTR MSG_CONTROL_RETRACTF = _UxGT("Retraktovat V"); - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Zvednuti Z mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Unretr. mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("S Unretr. mm"); - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Unretract V"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V"); - LSTR MSG_AUTORETRACT = _UxGT("Auto-Retract"); - LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Délka retrakce"); - LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Délka zavedení"); - LSTR MSG_TOOL_CHANGE = _UxGT("Výměna nástroje"); - LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Zdvih Z"); - LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Rychlost primár."); - LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Rychlost retrak."); - LSTR MSG_NOZZLE_STANDBY = _UxGT("Tryska standby"); - LSTR MSG_FILAMENTCHANGE = _UxGT("Vyměnit filament"); - LSTR MSG_FILAMENTCHANGE_E = _UxGT("Vyměnit filament *"); - LSTR MSG_FILAMENTLOAD = _UxGT("Zavést filament"); - LSTR MSG_FILAMENTLOAD_E = _UxGT("Zavést filament *"); - LSTR MSG_FILAMENTUNLOAD = _UxGT("Vysunout filament"); - LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Vysunout filament *"); - LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Vysunout vše"); - - LSTR MSG_ATTACH_MEDIA = _UxGT("Načíst médium"); - LSTR MSG_ATTACH_SD = _UxGT("Načíst SD"); - LSTR MSG_ATTACH_USB = _UxGT("Načíst USB"); - LSTR MSG_CHANGE_MEDIA = _UxGT("Vyměnit médium"); - LSTR MSG_RELEASE_MEDIA = _UxGT("Vysunout médium"); - LSTR MSG_RUN_AUTOFILES = _UxGT("Autostart"); - - LSTR MSG_ZPROBE_OUT = _UxGT("Sonda Z mimo podl"); - LSTR MSG_SKEW_FACTOR = _UxGT("Faktor zkosení"); - LSTR MSG_BLTOUCH = _UxGT("BLTouch"); - LSTR MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch self-test"); - LSTR MSG_BLTOUCH_RESET = _UxGT("BLTouch reset"); - LSTR MSG_BLTOUCH_STOW = _UxGT("BLTouch zasunout"); - LSTR MSG_BLTOUCH_DEPLOY = _UxGT("BLTouch vysunout"); - LSTR MSG_BLTOUCH_SW_MODE = _UxGT("SW výsun BLTouch"); - LSTR MSG_BLTOUCH_5V_MODE = _UxGT("BLTouch 5V režim"); - LSTR MSG_BLTOUCH_OD_MODE = _UxGT("BLTouch OD režim"); - LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("Uložit režim"); - LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Nastavit 5V"); - LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Nastacit OD"); - LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Vypsat nastavení"); - LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("VAROVANÍ: Špatné nastavení může způsobit škody! Pokračovat?"); - LSTR MSG_TOUCHMI_PROBE = _UxGT("TouchMI"); - LSTR MSG_TOUCHMI_INIT = _UxGT("Inic. TouchMI"); - LSTR MSG_TOUCHMI_ZTEST = _UxGT("Test Z Ofsetu"); - LSTR MSG_TOUCHMI_SAVE = _UxGT("Uložiy"); - LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("vysunout TouchMI"); - LSTR MSG_MANUAL_DEPLOY = _UxGT("Vysunout Z-sondu"); - LSTR MSG_MANUAL_STOW = _UxGT("Zasunout Z-sondu"); - LSTR MSG_HOME_FIRST = _UxGT("Domů %s první"); - LSTR MSG_ZPROBE_XOFFSET = _UxGT("X ofset"); - LSTR MSG_ZPROBE_YOFFSET = _UxGT("Y ofset"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Z ofset"); - LSTR MSG_ZPROBE_OFFSET_N = _UxGT("@ ofset"); - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Krok a Z offset"); - LSTR MSG_BABYSTEP_X = _UxGT("Babystep X"); - LSTR MSG_BABYSTEP_Y = _UxGT("Babystep Y"); - LSTR MSG_BABYSTEP_Z = _UxGT("Babystep Z"); - LSTR MSG_BABYSTEP_N = _UxGT("Babystep @"); - LSTR MSG_BABYSTEP_TOTAL = _UxGT("Celkem"); - LSTR MSG_ENDSTOP_ABORT = _UxGT("Endstop abort"); - LSTR MSG_ERR_HEATING_FAILED = _UxGT("Chyba zahřívání"); - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("REDUND. TEPLOTA"); - LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("TEPLOTNÍ ÚNIK"); - LSTR MSG_ERR_MAXTEMP = _UxGT("VYSOKÁ TEPLOTA"); - LSTR MSG_ERR_MINTEMP = _UxGT("NÍZKA TEPLOTA"); - LSTR MSG_HALTED = _UxGT("TISK. ZASTAVENA"); - LSTR MSG_PLEASE_RESET = _UxGT("Proveďte reset"); - LSTR MSG_HEATING = _UxGT("Zahřívání..."); - LSTR MSG_COOLING = _UxGT("Chlazení..."); - LSTR MSG_BED_HEATING = _UxGT("Zahřívání podl."); - LSTR MSG_BED_COOLING = _UxGT("Chlazení podl."); - LSTR MSG_CHAMBER_HEATING = _UxGT("Zahřívání komory..."); - LSTR MSG_CHAMBER_COOLING = _UxGT("Chlazení komory..."); - LSTR MSG_DELTA_CALIBRATE = _UxGT("Delta Kalibrace"); - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Kalibrovat X"); - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Kalibrovat Y"); - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Kalibrovat Z"); - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Kalibrovat Střed"); - LSTR MSG_DELTA_SETTINGS = _UxGT("Delta nastavení"); - LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Autokalibrace"); - LSTR MSG_DELTA_DIAG_ROD = _UxGT("Diag rameno"); - LSTR MSG_DELTA_HEIGHT = _UxGT("Výška"); - LSTR MSG_DELTA_RADIUS = _UxGT("Poloměr"); - LSTR MSG_INFO_MENU = _UxGT("O tiskárně"); - LSTR MSG_INFO_PRINTER_MENU = _UxGT("Info o tiskárně"); - LSTR MSG_3POINT_LEVELING = _UxGT("3-bodové rovnání"); - LSTR MSG_LINEAR_LEVELING = _UxGT("Lineárni rovnání"); - LSTR MSG_BILINEAR_LEVELING = _UxGT("Bilineární rovnání"); - LSTR MSG_UBL_LEVELING = _UxGT("Unified Bed Leveling"); - LSTR MSG_MESH_LEVELING = _UxGT("Mřížkové rovnání"); - LSTR MSG_INFO_STATS_MENU = _UxGT("Statistika"); - LSTR MSG_INFO_BOARD_MENU = _UxGT("Info o desce"); - LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Termistory"); - LSTR MSG_INFO_EXTRUDERS = _UxGT("Extrudéry"); - LSTR MSG_INFO_BAUDRATE = _UxGT("Rychlost"); - LSTR MSG_INFO_PROTOCOL = _UxGT("Protokol"); - LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Sledování úniku: VYP"); - LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Sledování úniku: ZAP"); - - LSTR MSG_CASE_LIGHT = _UxGT("Osvětlení"); - LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Jas světla"); - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("NESPRÁVNÁ TISKÁRNA"); - - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Tisky"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Hotovo"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Čas"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Nejdelší"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Vytlačeno"); - - LSTR MSG_INFO_MIN_TEMP = _UxGT("Teplota min"); - LSTR MSG_INFO_MAX_TEMP = _UxGT("Teplota max"); - LSTR MSG_INFO_PSU = _UxGT("Nap. zdroj"); - LSTR MSG_DRIVE_STRENGTH = _UxGT("Buzení motorů"); - LSTR MSG_DAC_PERCENT_N = _UxGT("@ Motor %"); - LSTR MSG_DAC_EEPROM_WRITE = _UxGT("DAC uložit EEPROM"); - LSTR MSG_ERROR_TMC = _UxGT("TMC CHYBA SPOJENÍ"); - LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("VÝMĚNA FILAMENTU"); - LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("TISK POZASTAVEN"); - LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("ZAVEDENÍ FILAMENTU"); - LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("VYSUNUTÍ FILAMENTU"); - LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("MOŽNOSTI OBNOVENÍ:"); - LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Vytlačit víc"); - LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Obnovit tisk"); - LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Tryska: "); - LSTR MSG_RUNOUT_SENSOR = _UxGT("Senzor filamentu"); - LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("Délka mm senz.fil."); - LSTR MSG_KILL_HOMING_FAILED = _UxGT("Parkování selhalo"); - LSTR MSG_LCD_PROBING_FAILED = _UxGT("Kalibrace selhala"); - - LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("VYBERTE FILAMENT"); - LSTR MSG_MMU2_MENU = _UxGT("MMU"); - LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("Aktual. MMU firmware!"); - LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU potř. pozornost."); - LSTR MSG_MMU2_RESUME = _UxGT("Obnovit tisk"); - LSTR MSG_MMU2_RESUMING = _UxGT("Obnovování..."); - LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("Zavést filament"); - LSTR MSG_MMU2_LOAD_ALL = _UxGT("Zavést všechny"); - LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Zavést do trysky"); - LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("Vysunout filament"); - LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("Vysun. filament ~"); - LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Vytáhnout filament"); - LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Zavádění fil. %i..."); - LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Vytahování fil. ..."); - LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Vysouvání fil...."); - LSTR MSG_MMU2_ALL = _UxGT("Všechny"); - LSTR MSG_MMU2_FILAMENT_N = _UxGT("Filament ~"); - LSTR MSG_MMU2_RESET = _UxGT("Resetovat MMU"); - LSTR MSG_MMU2_RESETTING = _UxGT("Resetování MMU..."); - LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Vytáhněte, klikněte"); - - LSTR MSG_MIX = _UxGT("Mix"); - LSTR MSG_MIX_COMPONENT_N = _UxGT("Komponenta {"); - LSTR MSG_MIXER = _UxGT("Mixér"); - LSTR MSG_GRADIENT = _UxGT("Přechod"); - LSTR MSG_FULL_GRADIENT = _UxGT("Celý přechod"); - LSTR MSG_TOGGLE_MIX = _UxGT("Přepnout mix"); - LSTR MSG_CYCLE_MIX = _UxGT("Střídat mix"); - LSTR MSG_GRADIENT_MIX = _UxGT("Přechod mix"); - LSTR MSG_REVERSE_GRADIENT = _UxGT("Opačný přechod"); - LSTR MSG_ACTIVE_VTOOL = _UxGT("Aktivní V-nástr."); - LSTR MSG_START_VTOOL = _UxGT("Spustit V-nástr."); - LSTR MSG_END_VTOOL = _UxGT("Ukončit V-nástr."); - LSTR MSG_GRADIENT_ALIAS = _UxGT("Alias V-nástr."); - LSTR MSG_RESET_VTOOLS = _UxGT("Reset. V-nástr."); - LSTR MSG_COMMIT_VTOOL = _UxGT("Uložit V-nás. mix"); - LSTR MSG_VTOOLS_RESET = _UxGT("V-nástr. reset."); - LSTR MSG_START_Z = _UxGT("Počáteční Z:"); - LSTR MSG_END_Z = _UxGT(" Koncové Z:"); - - LSTR MSG_GAMES = _UxGT("Hry"); - LSTR MSG_BRICKOUT = _UxGT("Brickout"); - LSTR MSG_INVADERS = _UxGT("Invaders"); - LSTR MSG_SNAKE = _UxGT("Sn4k3"); - LSTR MSG_MAZE = _UxGT("Bludiště"); - - // Up to 2 lines allowed - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Stikněte tlač.", "pro obnovení")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parkování...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Čekejte...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Vložte, klikněte")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Klikněte pro", "nahřátí")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Nahřívání...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Vysouvání...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Zavádění...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Vytlačování...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Klikněte pro", "ukončení")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Pokračování...")); - - LSTR MSG_TMC_DRIVERS = _UxGT("TMC budiče"); - LSTR MSG_TMC_CURRENT = _UxGT("Proud budičů"); - LSTR MSG_TMC_HYBRID_THRS = _UxGT("Hybridní práh"); - LSTR MSG_TMC_HOMING_THRS = _UxGT("Domů bez senzorů"); - LSTR MSG_TMC_STEPPING_MODE = _UxGT("Režim kroků"); - LSTR MSG_TMC_STEALTHCHOP = _UxGT("StealthChop"); - - LSTR MSG_SERVICE_RESET = _UxGT("Reset"); - LSTR MSG_SERVICE_IN = _UxGT(" za:"); - LSTR MSG_BACKLASH = _UxGT("Vůle"); - LSTR MSG_BACKLASH_CORRECTION = _UxGT("Korekce"); - LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Vyhlazení"); + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" připraven."); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = _UxGT("Médium vloženo"); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = _UxGT("Médium vyjmuto"); // (MEDIA_TYPE_EN) Removed + LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstopy"); // Endstops + LSTR MSG_MAIN_MENU = _UxGT("Hlavní nabídka"); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("Uvolnit motory"); // Disable Steppers + LSTR MSG_AUTO_HOME = _UxGT("Domovská pozice"); // Auto Home + LSTR MSG_AUTO_HOME_X = _UxGT("Domů osa X"); // Home X + LSTR MSG_AUTO_HOME_Y = _UxGT("Domů osa Y"); // Home Y + LSTR MSG_AUTO_HOME_Z = _UxGT("Domů osa Z"); // Home Z + LSTR MSG_LEVEL_BED_HOMING = _UxGT("Měření podložky"); // Homing XYZ + LSTR MSG_LEVEL_BED_WAITING = _UxGT("Kliknutím spusťte"); // Click to Begin + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Další bod"); // Next Point + LSTR MSG_LEVEL_BED_DONE = _UxGT("Měření hotovo!"); // Leveling Done! + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Nastavit ofsety"); // Set Home Offsets + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Ofsety nastaveny"); // Offsets Applied + LSTR MSG_PREHEAT_1 = _UxGT("Zahřát ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = _UxGT("Zahřát ") PREHEAT_1_LABEL " ~"; // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" end"); // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" end ~"); // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_1_ALL = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" vše"); // Preheat (PREHEAT_1_LABEL) All + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" podlož"); // Preheat (PREHEAT_1_LABEL) Bed + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Zahřát ") PREHEAT_1_LABEL _UxGT(" nast"); // Preheat (PREHEAT_1_LABEL) Conf + LSTR MSG_PREHEAT_M = _UxGT("Zahřát $"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("Zahřát $ ~"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("Zahřát $ end"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("Zahřát $ end ~"); // Preheat $ End ~ + LSTR MSG_PREHEAT_M_ALL = _UxGT("Zahřát $ vše"); // Preheat $ All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Zahřát $ podlož"); // Preheat $ Bed + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Zahřát $ nast"); // Preheat $ Conf + LSTR MSG_COOLDOWN = _UxGT("Zchladit"); // Cooldown + LSTR MSG_SWITCH_PS_ON = _UxGT("Zapnout napájení"); // Switch Power On + LSTR MSG_SWITCH_PS_OFF = _UxGT("Vypnout napájení"); // Switch Power Off + LSTR MSG_EXTRUDE = _UxGT("Vytlačit (extr.)"); // Extrude + LSTR MSG_RETRACT = _UxGT("Zatlačit (retr.)"); // Retract + LSTR MSG_MOVE_AXIS = _UxGT("Posunout osy"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("Měření a vyrovnání"); // Probe and Level + LSTR MSG_BED_LEVELING = _UxGT("Vyrovnat podložku"); // Bed Leveling + LSTR MSG_LEVEL_BED = _UxGT("Vyrovnat podložku"); // Level Bed + LSTR MSG_MOVE_X = _UxGT("Posunout X"); // Move X + LSTR MSG_MOVE_Y = _UxGT("Posunout Y"); // Move Y + LSTR MSG_MOVE_Z = _UxGT("Posunout Z"); // Move Z + LSTR MSG_MOVE_N = _UxGT("Posunout @"); // Move @ + LSTR MSG_MOVE_E = _UxGT("Extrudér"); // Move Extruder + LSTR MSG_MOVE_EN = _UxGT("Extrudér *"); // Move * + LSTR MSG_MOVE_N_MM = _UxGT("Posunout o $mm"); // Move $mm + LSTR MSG_MOVE_N_IN = _UxGT("Posunout o $in"); // Move $in + LSTR MSG_MOVE_N_DEG = _UxGT("Posunout o $") LCD_STR_DEGREE; // Move $(LCD_STR_DEGREE) + LSTR MSG_SPEED = _UxGT("Rychlost"); // Speed + LSTR MSG_MESH_Z_OFFSET = _UxGT("Výška podl."); // Bed Z + LSTR MSG_NOZZLE = _UxGT("Tryska"); // Nozzle + LSTR MSG_NOZZLE_N = _UxGT("Tryska ~"); // Nozzle ~ + LSTR MSG_BED = _UxGT("Podložka"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("Rychlost vent."); // Fan Speed + LSTR MSG_FAN_SPEED_N = _UxGT("Rychlost vent. ~"); // Fan Speed ~ + LSTR MSG_FLOW = _UxGT("Průtok"); // Flow + LSTR MSG_FLOW_N = _UxGT("Průtok ~"); // Flow ~ + LSTR MSG_CONTROL = _UxGT("Ovládaní"); // Control + LSTR MSG_AUTOTEMP = _UxGT("Autoteplota"); // Autotemp + LSTR MSG_SELECT_E = _UxGT("Vybrat *"); // Select * + LSTR MSG_ACC = _UxGT("Zrychl"); // Accel + LSTR MSG_VTRAV_MIN = _UxGT("VTrav Min"); // Min Travel Speed + LSTR MSG_ACCELERATION = _UxGT("Akcelerace"); // Acceleration + LSTR MSG_AMAX_A = _UxGT("Max ") STR_A _UxGT(" Akcel"); // Max (STR_A) Accel + LSTR MSG_AMAX_B = _UxGT("Max ") STR_B _UxGT(" Akcel"); // Max (STR_B) Accel + LSTR MSG_AMAX_C = _UxGT("Max ") STR_C _UxGT(" Akcel"); // Max (STR_C) Accel + LSTR MSG_AMAX_N = _UxGT("Max @ Akcel"); // Max @ Accel + LSTR MSG_AMAX_E = _UxGT("Max E Akcel"); // Max E Accel + LSTR MSG_AMAX_EN = _UxGT("Max * Akcel"); // Max * Accel + LSTR MSG_A_RETRACT = _UxGT("A-retrakt"); // Retract Accel + LSTR MSG_A_TRAVEL = _UxGT("A-přejezd"); // Travel Accel + LSTR MSG_STEPS_PER_MM = _UxGT("Kroků/mm"); // Steps/mm + LSTR MSG_A_STEPS = STR_A _UxGT(" kroků/mm"); // (STR_A) Steps/mm + LSTR MSG_B_STEPS = STR_B _UxGT(" kroků/mm"); // (STR_B) Steps/mm + LSTR MSG_C_STEPS = STR_C _UxGT(" kroků/mm"); // (STR_C) Steps/mm + LSTR MSG_N_STEPS = _UxGT("@ kroků/mm"); // @ steps/mm + LSTR MSG_E_STEPS = _UxGT("E kroků/mm"); // E steps/mm + LSTR MSG_EN_STEPS = _UxGT("* kroků/mm"); // * Steps/mm + LSTR MSG_TEMPERATURE = _UxGT("Teplota"); // Temperature + LSTR MSG_MOTION = _UxGT("Pohyb"); // Motion + LSTR MSG_FILAMENT = _UxGT("Filament"); // Filament + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E na mm") SUPERSCRIPT_THREE; // E in mm(SUPERSCRIPT_THREE) + LSTR MSG_FILAMENT_DIAM = _UxGT("Fil. Prum."); // Fil. Dia. + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Fil. Prum. *"); // Fil. Dia. * + LSTR MSG_CONTRAST = _UxGT("Kontrast LCD"); // LCD Contrast + LSTR MSG_STORE_EEPROM = _UxGT("Uložit nastavení"); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("Načíst nastavení"); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("Obnovit výchozí"); // Restore Defaults + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Obnovit"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT("Info obrazovka"); // Info Screen + LSTR MSG_PREPARE = _UxGT("Připrava tisku"); // Prepare + LSTR MSG_TUNE = _UxGT("Doladění tisku"); // Tune + LSTR MSG_PAUSE_PRINT = _UxGT("Pozastavit tisk"); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("Obnovit tisk"); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("Zastavit tisk"); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("Tisknout z SD"); // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = _UxGT("Žádná SD karta"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_DWELL = _UxGT("Uspáno..."); // Sleep... + LSTR MSG_USERWAIT = _UxGT("Čekání na uživ..."); // Click to Resume... + LSTR MSG_PRINT_ABORTED = _UxGT("Tisk zrušen"); // Print Aborted + LSTR MSG_NO_MOVE = _UxGT("Žádný pohyb."); // No Move. + LSTR MSG_KILLED = _UxGT("PŘERUSENO. "); // KILLED. + LSTR MSG_STOPPED = _UxGT("ZASTAVENO. "); // STOPPED. + LSTR MSG_CONTROL_RETRACT = _UxGT("Retrakt mm"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Výměna Re.mm"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACTF = _UxGT("Retraktovat V"); // Retract V + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Zvednuti Z mm"); // Hop mm + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Unretr. mm"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("S Unretr. mm"); // S Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Unretract V"); // Unretract V + LSTR MSG_AUTORETRACT = _UxGT("Auto-Retract"); // Auto-Retract + LSTR MSG_FILAMENTCHANGE = _UxGT("Vyměnit filament"); // Change Filament + LSTR MSG_FILAMENTCHANGE_E = _UxGT("Vyměnit filament *"); // Change * Filament + LSTR MSG_ATTACH_MEDIA = _UxGT("Načíst médium"); // Attach (MEDIA_TYPE_EN) + LSTR MSG_ATTACH_SD = _UxGT("Načíst SD"); // Attach SD Card + LSTR MSG_ATTACH_USB = _UxGT("Načíst USB"); // Attach USB Drive + LSTR MSG_CHANGE_MEDIA = _UxGT("Vyměnit médium"); // Refresh (MEDIA_TYPE_EN) + LSTR MSG_RUN_AUTOFILES = _UxGT("Autostart"); // Run Autofiles + LSTR MSG_ZPROBE_OUT = _UxGT("Sonda Z mimo podl"); // Z Probe Past Bed + LSTR MSG_BLTOUCH_RESET = _UxGT("BLTouch reset"); // Reset + LSTR MSG_ZPROBE_XOFFSET = _UxGT("X ofset"); // Probe X Offset + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Y ofset"); // Probe Y Offset + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Z ofset"); // Probe Z Offset + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("@ ofset"); // Probe @ Offset + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Krok a Z offset"); // Babystep Probe Z + LSTR MSG_BABYSTEP_X = _UxGT("Babystep X"); // Babystep X + LSTR MSG_BABYSTEP_Y = _UxGT("Babystep Y"); // Babystep Y + LSTR MSG_BABYSTEP_Z = _UxGT("Babystep Z"); // Babystep Z + LSTR MSG_BABYSTEP_N = _UxGT("Babystep @"); // Babystep @ + LSTR MSG_ENDSTOP_ABORT = _UxGT("Endstop abort"); // Endstop Abort + LSTR MSG_ERR_HEATING_FAILED = _UxGT("Chyba zahřívání"); // Heating Failed + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("REDUND. TEPLOTA"); // Err: REDUNDANT TEMP + LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("TEPLOTNÍ ÚNIK"); // THERMAL RUNAWAY + LSTR MSG_ERR_MAXTEMP = _UxGT("VYSOKÁ TEPLOTA"); // Err: MAXTEMP + LSTR MSG_ERR_MINTEMP = _UxGT("NÍZKA TEPLOTA"); // Err: MINTEMP + LSTR MSG_HALTED = _UxGT("TISK. ZASTAVENA"); // PRINTER HALTED + LSTR MSG_PLEASE_RESET = _UxGT("Proveďte reset"); // Please Reset + LSTR MSG_HEATING = _UxGT("Zahřívání..."); // Heating... + LSTR MSG_BED_HEATING = _UxGT("Zahřívání podl."); // Bed Heating... + LSTR MSG_DELTA_CALIBRATE = _UxGT("Delta Kalibrace"); // Delta Calibration + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Kalibrovat X"); // Calibrate X + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Kalibrovat Y"); // Calibrate Y + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Kalibrovat Z"); // Calibrate Z + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Kalibrovat Střed"); // Calibrate Center + LSTR MSG_INFO_MENU = _UxGT("O tiskárně"); // About Printer + LSTR MSG_INFO_PRINTER_MENU = _UxGT("Info o tiskárně"); // Printer Info + LSTR MSG_INFO_STATS_MENU = _UxGT("Statistika"); // Stats + LSTR MSG_INFO_BOARD_MENU = _UxGT("Info o desce"); // Board Info + LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Termistory"); // Thermistors + LSTR MSG_INFO_EXTRUDERS = _UxGT("Extrudéry"); // Extruders + LSTR MSG_INFO_BAUDRATE = _UxGT("Rychlost"); // Baud + LSTR MSG_INFO_PROTOCOL = _UxGT("Protokol"); // Protocol + LSTR MSG_CASE_LIGHT = _UxGT("Osvětlení"); // Case Light + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Tisky"); // Prints + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Hotovo"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Čas"); // Total + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Nejdelší"); // Longest + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Vytlačeno"); // Extruded + LSTR MSG_INFO_MIN_TEMP = _UxGT("Teplota min"); // Min Temp + LSTR MSG_INFO_MAX_TEMP = _UxGT("Teplota max"); // Max Temp + LSTR MSG_INFO_PSU = _UxGT("Nap. zdroj"); // PSU + LSTR MSG_DRIVE_STRENGTH = _UxGT("Buzení motorů"); // Drive Strength + LSTR MSG_DAC_EEPROM_WRITE = _UxGT("DAC uložit EEPROM"); // DAC EEPROM Write + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Obnovit tisk"); // Continue + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Čekejte...")); // |Please wait... + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Vložte, klikněte")); // |Insert and Click + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Vysouvání...")); // |Ejecting... + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Zavádění...")); // |Loading... + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Pokračování...")); // |Resuming... + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" min"); // (LCD_STR_THERMOMETER) Min + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" max"); // (LCD_STR_THERMOMETER) Max + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" fakt"); // (LCD_STR_THERMOMETER) Fact + LSTR MSG_LCD_ON = _UxGT("Zap"); // On + LSTR MSG_LCD_OFF = _UxGT("Vyp"); // Off + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("NESPRÁVNÁ TISKÁRNA"); // INCORRECT PRINTER + LSTR MSG_DEBUG_MENU = _UxGT("Nabídka ladění"); // Debug Menu + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Test uk. průběhu"); // Progress Bar Test + LSTR MSG_MOVING = _UxGT("Posouvání..."); // Moving... + LSTR MSG_FREE_XY = _UxGT("Uvolnit XY"); // Free XY + LSTR MSG_HOME_FIRST = _UxGT("Domů %s první"); // Home %s First + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Nahřívání...")); // |Heating... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Klikněte pro", "nahřátí")); // |Click to heat + LSTR MSG_YES = _UxGT("ANO"); // YES + LSTR MSG_NO = _UxGT("NE"); // NO + LSTR MSG_BACK = _UxGT("Zpět"); // Back + LSTR MSG_MEDIA_ABORTING = _UxGT("Rušení..."); // Aborting... + LSTR MSG_MEDIA_READ_ERROR = _UxGT("Chyba čtení média"); // (MEDIA_TYPE_EN) read error + LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB odstraněno"); // USB device removed + LSTR MSG_USB_FD_USB_FAILED = _UxGT("Chyba USB"); // USB start failed + LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Soft Endstopy"); // Soft Endstops + LSTR MSG_ADVANCED_SETTINGS = _UxGT("Další nastavení"); // Advanced Settings + LSTR MSG_CONFIGURATION = _UxGT("Konfigurace"); // Configuration + LSTR MSG_AUTO_Z_ALIGN = _UxGT("Auto srovnání Z"); // Auto Z-Align + LSTR MSG_Z_FADE_HEIGHT = _UxGT("Výška srovnávání"); // Fade Height + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Zahřát vlastní"); // Preheat Custom + LSTR MSG_LASER_MENU = _UxGT("Ovládání laseru"); // Laser Control + LSTR MSG_LASER_POWER = _UxGT("Výkon laseru"); // Laser Power + LSTR MSG_SPINDLE_MENU = _UxGT("Vřeteno ovládání"); // Spindle Control + LSTR MSG_SPINDLE_POWER = _UxGT("Vřeteno výkon"); // Spindle Pwr + LSTR MSG_SPINDLE_REVERSE = _UxGT("Vřeteno opačně"); // Spindle Reverse + LSTR MSG_BED_TRAMMING = _UxGT("Vyrovnat rohy"); // Bed Tramming + LSTR MSG_NEXT_CORNER = _UxGT("Další roh"); // Next Corner + LSTR MSG_MESH_EDITOR = _UxGT("Editor sítě"); // Mesh Editor + LSTR MSG_EDIT_MESH = _UxGT("Upravit síť bodů"); // Edit Mesh + LSTR MSG_EDITING_STOPPED = _UxGT("Konec úprav sítě"); // Mesh Editing Stopped + LSTR MSG_PROBING_POINT = _UxGT("Měření bodu"); // Probing Point + LSTR MSG_MESH_X = _UxGT("Index X"); // Index X + LSTR MSG_MESH_Y = _UxGT("Index Y"); // Index Y + LSTR MSG_MESH_EDIT_Z = _UxGT("Hodnota Z"); // Z Value + LSTR MSG_CUSTOM_COMMANDS = _UxGT("Vlastní příkazy"); // Custom Commands + LSTR MSG_M48_TEST = _UxGT("M48 test sondy"); // M48 Probe Test + LSTR MSG_M48_POINT = _UxGT("M48 bod"); // M48 Point + LSTR MSG_M48_DEVIATION = _UxGT("Odchylka"); // Deviation + LSTR MSG_IDEX_MENU = _UxGT("Režim IDEX"); // IDEX Mode + LSTR MSG_OFFSETS_MENU = _UxGT("Ofsety nástrojů"); // Tool Offsets + LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-Park"); // Auto-Park + LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplikace"); // Duplication + LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Zrcadlení"); // Mirrored Copy + LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Plná kontrola"); // Full Control + LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2. tryska Z"); // 2nd Nozzle Z + LSTR MSG_HOTEND_OFFSET_N = _UxGT("2. tryska @"); // 2nd Nozzle @ + LSTR MSG_UBL_DOING_G29 = _UxGT("Provádím G29"); // Doing G29 + LSTR MSG_UBL_TOOLS = _UxGT("UBL nástroje"); // UBL Tools + LSTR MSG_LCD_TILTING_MESH = _UxGT("Vyrovnání bodu"); // Tilting Point + LSTR MSG_UBL_MANUAL_MESH = _UxGT("Manuální síť bodů"); // Manually Build Mesh + LSTR MSG_UBL_BC_INSERT = _UxGT("Vložte kartu, změřte"); // Place Shim & Measure + LSTR MSG_UBL_BC_INSERT2 = _UxGT("Změřte"); // Measure + LSTR MSG_UBL_BC_REMOVE = _UxGT("Odstraňte a změřte"); // Remove & Measure Bed + LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Přesun na další"); // Moving to next + LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Teplota podložky"); // Bed Temp + LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Teplota podložky"); // Bed Temp + LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Teplota hotendu"); // Hotend Temp + LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Teplota hotendu"); // Hotend Temp + LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Upravit vlastní síť"); // Edit Custom Mesh + LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Doladit síť bodů"); // Fine Tuning Mesh + LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Konec úprav sítě"); // Done Editing Mesh + LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Vlastní síť"); // Build Custom Mesh + LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Vytvořit síť"); // Build Mesh + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Síť bodů $"); // Build Mesh ($) + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Kontrola sítě $"); // Validate Mesh ($) + LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Studená síť bodů"); // Build Cold Mesh + LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Upravit výšku sítě"); // Adjust Mesh Height + LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Výška"); // Height Amount + LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Zkontrolovat síť"); // Validate Mesh + LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Kontrola vlast. sítě"); // Validate Custom Mesh + LSTR MSG_G26_HEATING_BED = _UxGT("G26 zahřívání podl."); // G26 Heating Bed + LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 zařívání trysky"); // G26 Heating Nozzle + LSTR MSG_G26_MANUAL_PRIME = _UxGT("Ruční zavedení..."); // Manual priming... + LSTR MSG_G26_FIXED_LENGTH = _UxGT("Pevné zavední"); // Fixed Length Prime + LSTR MSG_G26_PRIME_DONE = _UxGT("Done Priming"); // Done Priming + LSTR MSG_G26_CANCELED = _UxGT("G26 Canceled"); // G26 Canceled + LSTR MSG_G26_LEAVING = _UxGT("Leaving G26"); // Leaving G26 + LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Pokračovat v síťi"); // Continue Bed Mesh + LSTR MSG_UBL_MESH_LEVELING = _UxGT("Síťové rovnání"); // Mesh Leveling + LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-bodové rovnání"); // 3-Point Leveling + LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Mřížkové rovnání"); // Grid Mesh Leveling + LSTR MSG_UBL_MESH_LEVEL = _UxGT("Srovnat podložku"); // Level Mesh + LSTR MSG_UBL_SIDE_POINTS = _UxGT("Postranní body"); // Side Points + LSTR MSG_UBL_MAP_TYPE = _UxGT("Typ sítě bodu"); // Map Type + LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Exportovat síť"); // Output Mesh Map + LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Exportovat do PC"); // Output for Host + LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Exportovat do CSV"); // Output for CSV + LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Záloha do PC"); // Off Printer Backup + LSTR MSG_UBL_INFO_UBL = _UxGT("Info o UBL do PC"); // Output UBL Info + LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Hustota mřížky"); // Fill-in Amount + LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Ruční hustota"); // Manual Fill-in + LSTR MSG_UBL_SMART_FILLIN = _UxGT("Chytrá hustota"); // Smart Fill-in + LSTR MSG_UBL_FILLIN_MESH = _UxGT("Zaplnit mřížku"); // Fill-in Mesh + LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Zrušit všechno"); // Invalidate All + LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Zrušit poslední"); // Invalidate Closest + LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Upravit všechny"); // Fine Tune All + LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Upravit poslední"); // Fine Tune Closest + LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Uložiště sítí"); // Mesh Storage + LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Paměťový slot"); // Memory Slot + LSTR MSG_UBL_LOAD_MESH = _UxGT("Načíst síť bodů"); // Load Bed Mesh + LSTR MSG_UBL_SAVE_MESH = _UxGT("Uložit síť bodů"); // Save Bed Mesh + LSTR MSG_MESH_LOADED = _UxGT("Síť %i načtena"); // Mesh %i Loaded + LSTR MSG_MESH_SAVED = _UxGT("Síť %i uložena"); // Mesh %i Saved + LSTR MSG_UBL_NO_STORAGE = _UxGT("Nedostatek místa"); // No Storage + LSTR MSG_UBL_SAVE_ERROR = _UxGT("Ch.: Uložit UBL"); // UBL Save Error + LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Ch.: Obnovit UBL"); // UBL Restore Error + LSTR MSG_UBL_Z_OFFSET = _UxGT("Z-ofset: "); // Z-Offset: + LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Konec Z-ofsetu"); // Z-Offset Stopped + LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("UBL Postupně"); // Step-By-Step UBL + LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1. Studená síť bodů"); // 1. Build Cold Mesh + LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2. Chytrá hustota"); // 2. Smart Fill-in + LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3. Zkontrolovat síť"); // 3. Validate Mesh + LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4. Upravit všechny"); // 4. Fine Tune All + LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5. Zkontrolovat síť"); // 5. Validate Mesh + LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6. Upravit všechny"); // 6. Fine Tune All + LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7. Uložit síť bodů"); // 7. Save Bed Mesh + LSTR MSG_LED_CONTROL = _UxGT("Nastavení LED"); // LED Control + LSTR MSG_LIGHTS = _UxGT("Světla"); // Lights + LSTR MSG_LIGHT_N = _UxGT("Světla #{"); // Light #{ + LSTR MSG_LED_PRESETS = _UxGT("Světla Předvolby"); // Light Presets + LSTR MSG_SET_LEDS_RED = _UxGT("Červená"); // Red + LSTR MSG_SET_LEDS_ORANGE = _UxGT("Oranžová"); // Orange + LSTR MSG_SET_LEDS_YELLOW = _UxGT("Žlutá"); // Yellow + LSTR MSG_SET_LEDS_GREEN = _UxGT("Zelená"); // Green + LSTR MSG_SET_LEDS_BLUE = _UxGT("Modrá"); // Blue + LSTR MSG_SET_LEDS_INDIGO = _UxGT("Indigo"); // Indigo + LSTR MSG_SET_LEDS_VIOLET = _UxGT("Fialová"); // Violet + LSTR MSG_SET_LEDS_WHITE = _UxGT("Bílá"); // White + LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Výchozí"); // Default + LSTR MSG_CUSTOM_LEDS = _UxGT("Vlastní světla"); // Custom Lights + LSTR MSG_INTENSITY_R = _UxGT("Červená intenzita"); // Red Intensity + LSTR MSG_INTENSITY_G = _UxGT("Zelená intezita"); // Green Intensity + LSTR MSG_INTENSITY_B = _UxGT("Modrá intenzita"); // Blue Intensity + LSTR MSG_INTENSITY_W = _UxGT("Bílá intenzita"); // White Intensity + LSTR MSG_LED_BRIGHTNESS = _UxGT("Jas"); // Brightness + LSTR MSG_HOTEND_TOO_COLD = _UxGT("Hotend je studený"); // Hotend too cold + LSTR MSG_CHAMBER = _UxGT("Komora"); // Enclosure + LSTR MSG_STORED_FAN_N = _UxGT("Ulož. vent. ~"); // Stored Fan ~ + LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Rychlost ex. vent."); // Extra Fan Speed + LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Rychlost ex. vent. ~"); // Extra Fan Speed ~ + LSTR MSG_PID_AUTOTUNE = _UxGT("PID automatika"); // PID Autotune + LSTR MSG_PID_AUTOTUNE_E = _UxGT("PID automatika *"); // Autotune * PID + LSTR MSG_JERK = _UxGT("Jerk"); // Jerk + LSTR MSG_VA_JERK = _UxGT("Max ") STR_A _UxGT(" Jerk"); // Max (STR_A) Jerk + LSTR MSG_VB_JERK = _UxGT("Max ") STR_B _UxGT(" Jerk"); // Max (STR_B) Jerk + LSTR MSG_VC_JERK = _UxGT("Max ") STR_C _UxGT(" Jerk"); // Max (STR_C) Jerk + LSTR MSG_VN_JERK = _UxGT("Max @ Jerk"); // Max @ Jerk + LSTR MSG_VE_JERK = _UxGT("Max E Jerk"); // Max E Jerk + LSTR MSG_JUNCTION_DEVIATION = _UxGT("Odchylka spoje"); // Junction Dev + LSTR MSG_MAX_SPEED = _UxGT("Max Rychlost"); // Max Speed (mm/s) + LSTR MSG_VMAX_A = _UxGT("Max ") STR_A _UxGT(" Rychlost"); // Max (STR_A) Speed + LSTR MSG_VMAX_B = _UxGT("Max ") STR_B _UxGT(" Rychlost"); // Max (STR_B) Speed + LSTR MSG_VMAX_C = _UxGT("Max ") STR_C _UxGT(" Rychlost"); // Max (STR_C) Speed + LSTR MSG_VMAX_N = _UxGT("Max @ Rychlost"); // Max @ Speed + LSTR MSG_VMAX_E = _UxGT("Max E Rychlost"); // Max E Speed + LSTR MSG_VMAX_EN = _UxGT("Max * Rychlost"); // Max * Speed + LSTR MSG_VMIN = _UxGT("Vmin"); // Min Velocity + LSTR MSG_FILAMENT_UNLOAD = _UxGT("Vysunout mm"); // Unload mm + LSTR MSG_FILAMENT_LOAD = _UxGT("Zavést mm"); // Load mm + LSTR MSG_ADVANCE_K = _UxGT("K pro posun"); // Advance K + LSTR MSG_ADVANCE_K_E = _UxGT("K pro posun *"); // Advance K * + LSTR MSG_INIT_EEPROM = _UxGT("Inic. EEPROM"); // Initialize EEPROM + LSTR MSG_MEDIA_UPDATE = _UxGT("Aktualizace z SD"); // (MEDIA_TYPE_EN) Update + LSTR MSG_RESET_PRINTER = _UxGT("Reset tiskárny"); // Reset Printer + LSTR MSG_START_PRINT = _UxGT("Spustit tisk"); // Start Print + LSTR MSG_BUTTON_NEXT = _UxGT("Další"); // Next + LSTR MSG_BUTTON_INIT = _UxGT("Inicializace"); // Init + LSTR MSG_BUTTON_STOP = _UxGT("Stop"); // Stop + LSTR MSG_BUTTON_PRINT = _UxGT("Tisk"); // Print + LSTR MSG_BUTTON_RESET = _UxGT("Reset"); // Reset + LSTR MSG_BUTTON_CANCEL = _UxGT("Zrušit"); // Cancel + LSTR MSG_BUTTON_DONE = _UxGT("Hotovo"); // Done + LSTR MSG_BUTTON_BACK = _UxGT("Zpět"); // Back + LSTR MSG_BUTTON_PROCEED = _UxGT("Pokračovat"); // Proceed + LSTR MSG_PRINTING_OBJECT = _UxGT("Tisk objektu"); // Print Obj + LSTR MSG_CANCEL_OBJECT = _UxGT("Zrušit objekt"); // Cancel Obj + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Zrušit objekt {"); // Cancel Obj { + LSTR MSG_OUTAGE_RECOVERY = _UxGT("Obnova výpadku"); // Power Outage + LSTR MSG_PRINT_PAUSED = _UxGT("Tisk pozastaven"); // Print Paused + LSTR MSG_PRINTING = _UxGT("Tisknu..."); // Printing... + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V"); // S UnRet V + LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Délka retrakce"); // Swap Length + LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Délka zavedení"); // Purge Length + LSTR MSG_TOOL_CHANGE = _UxGT("Výměna nástroje"); // Tool Change + LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Zdvih Z"); // Z Raise + LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Rychlost primár."); // Prime Speed + LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Rychlost retrak."); // Retract Speed + LSTR MSG_NOZZLE_STANDBY = _UxGT("Tryska standby"); // Nozzle Standby + LSTR MSG_FILAMENTLOAD = _UxGT("Zavést filament"); // Load Filament + LSTR MSG_FILAMENTLOAD_E = _UxGT("Zavést filament *"); // Load * Filament + LSTR MSG_FILAMENTUNLOAD = _UxGT("Vysunout filament"); // Unload Filament + LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Vysunout filament *"); // Unload * Filament + LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Vysunout vše"); // Unload All + LSTR MSG_RELEASE_MEDIA = _UxGT("Vysunout médium"); // Release (MEDIA_TYPE_EN) + LSTR MSG_SKEW_FACTOR = _UxGT("Faktor zkosení"); // Skew Factor + LSTR MSG_BLTOUCH = _UxGT("BLTouch"); // BLTouch + LSTR MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch self-test"); // Self-Test + LSTR MSG_BLTOUCH_STOW = _UxGT("BLTouch zasunout"); // Stow + LSTR MSG_BLTOUCH_DEPLOY = _UxGT("BLTouch vysunout"); // Deploy + LSTR MSG_BLTOUCH_SW_MODE = _UxGT("SW výsun BLTouch"); // SW-Mode + LSTR MSG_BLTOUCH_5V_MODE = _UxGT("BLTouch 5V režim"); // 5V-Mode + LSTR MSG_BLTOUCH_OD_MODE = _UxGT("BLTouch OD režim"); // OD-Mode + LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("Uložit režim"); // Mode-Store + LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Nastavit 5V"); // Set BLTouch to 5V + LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Nastacit OD"); // Set BLTouch to OD + LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Vypsat nastavení"); // Report Drain + LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("VAROVANÍ: Špatné nastavení může způsobit škody! Pokračovat?"); // DANGER: Bad settings can cause damage! Proceed anyway? + LSTR MSG_TOUCHMI_PROBE = _UxGT("TouchMI"); // TouchMI + LSTR MSG_TOUCHMI_INIT = _UxGT("Inic. TouchMI"); // Init TouchMI + LSTR MSG_TOUCHMI_ZTEST = _UxGT("Test Z Ofsetu"); // Z Offset Test + LSTR MSG_TOUCHMI_SAVE = _UxGT("Uložiy"); // Save + LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("vysunout TouchMI"); // Deploy TouchMI + LSTR MSG_MANUAL_DEPLOY = _UxGT("Vysunout Z-sondu"); // Deploy Z-Probe + LSTR MSG_MANUAL_STOW = _UxGT("Zasunout Z-sondu"); // Stow Z-Probe + LSTR MSG_BABYSTEP_TOTAL = _UxGT("Celkem"); // Total + LSTR MSG_COOLING = _UxGT("Chlazení..."); // Cooling... + LSTR MSG_BED_COOLING = _UxGT("Chlazení podl."); // Bed Cooling... + LSTR MSG_CHAMBER_HEATING = _UxGT("Zahřívání komory..."); // Chamber Heating... + LSTR MSG_CHAMBER_COOLING = _UxGT("Chlazení komory..."); // Chamber Cooling... + LSTR MSG_DELTA_SETTINGS = _UxGT("Delta nastavení"); // Delta Settings + LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Autokalibrace"); // Auto Calibration + LSTR MSG_DELTA_DIAG_ROD = _UxGT("Diag rameno"); // Diag Rod + LSTR MSG_DELTA_HEIGHT = _UxGT("Výška"); // Height + LSTR MSG_DELTA_RADIUS = _UxGT("Poloměr"); // Radius + LSTR MSG_3POINT_LEVELING = _UxGT("3-bodové rovnání"); // 3-Point Leveling + LSTR MSG_LINEAR_LEVELING = _UxGT("Lineárni rovnání"); // Linear Leveling + LSTR MSG_BILINEAR_LEVELING = _UxGT("Bilineární rovnání"); // Bilinear Leveling + LSTR MSG_UBL_LEVELING = _UxGT("Unified Bed Leveling"); // Unified Bed Leveling + LSTR MSG_MESH_LEVELING = _UxGT("Mřížkové rovnání"); // Mesh Leveling + LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Sledování úniku: VYP"); // Runaway Watch: OFF + LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Sledování úniku: ZAP"); // Runaway Watch: ON + LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Jas světla"); // Light Brightness + LSTR MSG_DAC_PERCENT_N = _UxGT("@ Motor %"); // @ Driver % + LSTR MSG_ERROR_TMC = _UxGT("TMC CHYBA SPOJENÍ"); // TMC CONNECTION ERROR + LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("VÝMĚNA FILAMENTU"); // FILAMENT CHANGE + LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("TISK POZASTAVEN"); // PRINT PAUSED + LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("ZAVEDENÍ FILAMENTU"); // LOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("VYSUNUTÍ FILAMENTU"); // UNLOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("MOŽNOSTI OBNOVENÍ:"); // RESUME OPTIONS: + LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Vytlačit víc"); // Purge more + LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Tryska: "); // Nozzle: + LSTR MSG_RUNOUT_SENSOR = _UxGT("Senzor filamentu"); // Runout Sensor + LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("Délka mm senz.fil."); // Runout Dist mm + LSTR MSG_KILL_HOMING_FAILED = _UxGT("Parkování selhalo"); // Homing Failed + LSTR MSG_LCD_PROBING_FAILED = _UxGT("Kalibrace selhala"); // Probing Failed + LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("VYBERTE FILAMENT"); // CHOOSE FILAMENT + LSTR MSG_MMU2_MENU = _UxGT("MMU"); // MMU + LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("Aktual. MMU firmware!"); // Update MMU Firmware! + LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU potř. pozornost."); // MMU Needs Attention. + LSTR MSG_MMU2_RESUME = _UxGT("Obnovit tisk"); // Resume + LSTR MSG_MMU2_RESUMING = _UxGT("Obnovování..."); // MMU Resuming... + LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("Zavést filament"); // Load + LSTR MSG_MMU2_LOAD_ALL = _UxGT("Zavést všechny"); // Load All + LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Zavést do trysky"); // Load to Nozzle + LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("Vysunout filament"); // Eject + LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("Vysun. filament ~"); // Eject ~ + LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Vytáhnout filament"); // Unload + LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Zavádění fil. %i..."); // Filament %i Load... + LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Vytahování fil. ..."); // Filament %i Eject... + LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Vysouvání fil...."); // Filament %i Unload... + LSTR MSG_MMU2_ALL = _UxGT("Všechny"); // All + LSTR MSG_MMU2_FILAMENT_N = _UxGT("Filament ~"); // Filament ~ + LSTR MSG_MMU2_RESET = _UxGT("Resetovat MMU"); // Reset MMU + LSTR MSG_MMU2_RESETTING = _UxGT("Resetování MMU..."); // Resetting... + LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Vytáhněte, klikněte"); // Eject Recover + LSTR MSG_MIX = _UxGT("Mix"); // Mix + LSTR MSG_MIX_COMPONENT_N = _UxGT("Komponenta {"); // Component { + LSTR MSG_MIXER = _UxGT("Mixér"); // Mixer + LSTR MSG_GRADIENT = _UxGT("Přechod"); // Gradient + LSTR MSG_FULL_GRADIENT = _UxGT("Celý přechod"); // Full Gradient + LSTR MSG_TOGGLE_MIX = _UxGT("Přepnout mix"); // Toggle Mix + LSTR MSG_CYCLE_MIX = _UxGT("Střídat mix"); // Cycle Mix + LSTR MSG_GRADIENT_MIX = _UxGT("Přechod mix"); // Gradient Mix + LSTR MSG_REVERSE_GRADIENT = _UxGT("Opačný přechod"); // Reverse Gradient + LSTR MSG_ACTIVE_VTOOL = _UxGT("Aktivní V-nástr."); // Active V-tool + LSTR MSG_START_VTOOL = _UxGT("Spustit V-nástr."); // Start V-tool + LSTR MSG_END_VTOOL = _UxGT("Ukončit V-nástr."); // End V-tool + LSTR MSG_GRADIENT_ALIAS = _UxGT("Alias V-nástr."); // Alias V-tool + LSTR MSG_RESET_VTOOLS = _UxGT("Reset. V-nástr."); // Reset V-tools + LSTR MSG_COMMIT_VTOOL = _UxGT("Uložit V-nás. mix"); // Commit V-tool Mix + LSTR MSG_VTOOLS_RESET = _UxGT("V-nástr. reset."); // V-tools Were Reset + LSTR MSG_START_Z = _UxGT("Počáteční Z:"); // Start Z: + LSTR MSG_END_Z = _UxGT(" Koncové Z:"); // End Z: + LSTR MSG_GAMES = _UxGT("Hry"); // Games + LSTR MSG_BRICKOUT = _UxGT("Brickout"); // Brickout + LSTR MSG_INVADERS = _UxGT("Invaders"); // Invaders + LSTR MSG_SNAKE = _UxGT("Sn4k3"); // Sn4k3 + LSTR MSG_MAZE = _UxGT("Bludiště"); // Maze + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Stikněte tlač.", "pro obnovení")); // |Click to continue + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parkování...")); // |Parking... + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Vytlačování...")); // |Purging... + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Klikněte pro", "ukončení")); // |Click to finish + LSTR MSG_TMC_DRIVERS = _UxGT("TMC budiče"); // TMC Drivers + LSTR MSG_TMC_CURRENT = _UxGT("Proud budičů"); // Driver Current + LSTR MSG_TMC_HYBRID_THRS = _UxGT("Hybridní práh"); // Hybrid Threshold + LSTR MSG_TMC_HOMING_THRS = _UxGT("Domů bez senzorů"); // Sensorless Homing + LSTR MSG_TMC_STEPPING_MODE = _UxGT("Režim kroků"); // Stepping Mode + LSTR MSG_TMC_STEALTHCHOP = _UxGT("StealthChop"); // StealthChop + LSTR MSG_SERVICE_RESET = _UxGT("Reset"); // Reset + LSTR MSG_SERVICE_IN = _UxGT(" za:"); // in: + LSTR MSG_BACKLASH = _UxGT("Vůle"); // Backlash + LSTR MSG_BACKLASH_CORRECTION = _UxGT("Korekce"); // Correction + LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Vyhlazení"); // Smoothing } namespace LanguageWide_cz { using namespace LanguageNarrow_cz; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Test ukaz. průběhu"); - LSTR MSG_BED_HEATING = _UxGT("Zahřívání podložky"); - LSTR MSG_BED_COOLING = _UxGT("Chlazení podložky"); - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Počet tisků"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Dokončeno"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Celkový čas"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Nejdelší tisk"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Celkem vytlačeno"); - LSTR MSG_ACTIVE_VTOOL = _UxGT("Aktivní V-nástroj"); - LSTR MSG_START_VTOOL = _UxGT("Spustit V-nástroj"); - LSTR MSG_END_VTOOL = _UxGT("Ukončit V-nástroj"); - LSTR MSG_GRADIENT_ALIAS = _UxGT("Alias V-nástroje"); - LSTR MSG_RESET_VTOOLS = _UxGT("Resetovat V-nástroj"); - LSTR MSG_COMMIT_VTOOL = _UxGT("Uložit V-nástroj mix"); - LSTR MSG_VTOOLS_RESET = _UxGT("V-nástroj resetovat"); + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 + LSTR MSG_BED_HEATING = _UxGT("Zahřívání podložky"); // Bed Heating... + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Počet tisků"); // Print Count + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Dokončeno"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Celkový čas"); // Print Time + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Nejdelší tisk"); // Longest Job Time + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Celkem vytlačeno"); // Extruded Total + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Test ukaz. průběhu"); // Progress Bar Test + LSTR MSG_BED_COOLING = _UxGT("Chlazení podložky"); // Bed Cooling... + LSTR MSG_ACTIVE_VTOOL = _UxGT("Aktivní V-nástroj"); // Active V-tool + LSTR MSG_START_VTOOL = _UxGT("Spustit V-nástroj"); // Start V-tool + LSTR MSG_END_VTOOL = _UxGT("Ukončit V-nástroj"); // End V-tool + LSTR MSG_GRADIENT_ALIAS = _UxGT("Alias V-nástroje"); // Alias V-tool + LSTR MSG_RESET_VTOOLS = _UxGT("Resetovat V-nástroj"); // Reset V-tools + LSTR MSG_COMMIT_VTOOL = _UxGT("Uložit V-nástroj mix"); // Commit V-tool Mix + LSTR MSG_VTOOLS_RESET = _UxGT("V-nástroj resetovat"); // V-tools Were Reset #endif } @@ -576,17 +555,17 @@ namespace LanguageTall_cz { using namespace LanguageWide_cz; #if LCD_HEIGHT >= 4 // Filament Change screens show up to 3 lines on a 4-line display - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Stikněte tlačítko", "pro obnovení tisku")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parkování...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Čekejte prosím", "na zahájení", "výměny filamentu")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Vložte filament", "a stiskněte", "tlačítko...")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Klikněte pro", "nahřátí trysky")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Čekejte prosím", "na nahřátí tr.")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Čekejte prosím", "na vysunuti", "filamentu")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Čekejte prosím", "na zavedení", "filamentu")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Vyčkejte na", "vytlačení")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Klikněte pro", "ukončení", "vytlačování")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Čekejte prosím", "na pokračování", "tisku")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Čekejte prosím", "na zahájení", "výměny filamentu")); // |Wait for|filament change|to start + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Vložte filament", "a stiskněte", "tlačítko...")); // |Insert filament|and press button|to continue + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Čekejte prosím", "na vysunuti", "filamentu")); // |Wait for|filament unload + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Čekejte prosím", "na zavedení", "filamentu")); // |Wait for|filament load + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Čekejte prosím", "na pokračování", "tisku")); // |Wait for print|to resume... + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Čekejte prosím", "na nahřátí tr.")); // |Nozzle heating|Please wait... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Klikněte pro", "nahřátí trysky")); // |Press button|to heat nozzle + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Stikněte tlačítko", "pro obnovení tisku")); // |Press Button|to resume print + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parkování...")); // |Parking... + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Vyčkejte na", "vytlačení")); // |Wait for|filament purge + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Klikněte pro", "ukončení", "vytlačování")); // |Click to finish|filament purge #endif } diff --git a/Marlin/src/lcd/language/language_da.h b/Marlin/src/lcd/language/language_da.h index 1df97e8df1..ebbcad4e23 100644 --- a/Marlin/src/lcd/language/language_da.h +++ b/Marlin/src/lcd/language/language_da.h @@ -44,161 +44,147 @@ namespace LanguageNarrow_da { constexpr uint8_t CHARSIZE = 2; LSTR LANGUAGE = _UxGT("Danish"); - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" er klar"); - LSTR MSG_MEDIA_INSERTED = _UxGT("Kort isat"); - LSTR MSG_MEDIA_REMOVED = _UxGT("Kort fjernet"); - LSTR MSG_MAIN_MENU = _UxGT("Menu"); - LSTR MSG_DISABLE_STEPPERS = _UxGT("Slå alle steppere fra"); - LSTR MSG_AUTO_HOME = _UxGT("Auto Home"); // G28 - LSTR MSG_LEVEL_BED_WAITING = _UxGT("Klik når du er klar"); - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Næste punkt"); - LSTR MSG_LEVEL_BED_DONE = _UxGT("Bed level er færdig!"); - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Sæt forsk. af home"); - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Forsk. er nu aktiv"); - - LSTR MSG_PREHEAT_1 = _UxGT("Forvarm ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Forvarm ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" end"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" end ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" Alle"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" Bed"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" conf"); - - LSTR MSG_PREHEAT_M = _UxGT("Forvarm $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Forvarm $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Forvarm $ end"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Forvarm $ end ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Forvarm $ Alle"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Forvarm $ Bed"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Forvarm $ conf"); - - LSTR MSG_COOLDOWN = _UxGT("Afkøl"); - LSTR MSG_SWITCH_PS_ON = _UxGT("Slå strøm til"); - LSTR MSG_SWITCH_PS_OFF = _UxGT("Slå strøm fra"); - LSTR MSG_EXTRUDE = _UxGT("Extruder"); - LSTR MSG_MOVE_AXIS = _UxGT("Flyt akser"); - LSTR MSG_PROBE_AND_LEVEL = _UxGT("Probe og nivellér"); - LSTR MSG_BED_LEVELING = _UxGT("Juster bed"); - LSTR MSG_LEVEL_BED = _UxGT("Juster bed"); - LSTR MSG_MOVE_X = _UxGT("Flyt X"); - LSTR MSG_MOVE_Y = _UxGT("Flyt Y"); - LSTR MSG_MOVE_Z = _UxGT("Flyt Z"); - LSTR MSG_MOVE_N = _UxGT("Flyt @"); - LSTR MSG_MOVE_E = _UxGT("Flyt E"); - LSTR MSG_MOVE_EN = _UxGT("Flyt *"); - LSTR MSG_MOVE_N_MM = _UxGT("Flyt $mm"); - LSTR MSG_MOVE_N_IN = _UxGT("Flyt $in"); - LSTR MSG_MOVE_N_DEG = _UxGT("Flyt $") LCD_STR_DEGREE; - LSTR MSG_SPEED = _UxGT("Hastighed"); - LSTR MSG_MESH_Z_OFFSET = _UxGT("Plade Z"); - LSTR MSG_NOZZLE = _UxGT("Dyse"); - LSTR MSG_NOZZLE_N = _UxGT("Dyse ~"); - - LSTR MSG_BED = _UxGT("Plade"); - LSTR MSG_FAN_SPEED = _UxGT("Blæser hastighed"); - LSTR MSG_FAN_SPEED_N = _UxGT("Blæser hastighed ~"); - LSTR MSG_CONTROL = _UxGT("Kontrol"); - LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); - LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fact"); - LSTR MSG_AUTOTEMP = _UxGT("Autotemp"); - LSTR MSG_LCD_ON = _UxGT("Til"); - LSTR MSG_LCD_OFF = _UxGT("Fra"); - LSTR MSG_SELECT_E = _UxGT("Vælg *"); - LSTR MSG_A_RETRACT = _UxGT("A-retract"); - LSTR MSG_A_TRAVEL = _UxGT("A-rejse"); - LSTR MSG_TEMPERATURE = _UxGT("Temperatur"); - LSTR MSG_MOTION = _UxGT("Bevægelse"); - LSTR MSG_FILAMENT = _UxGT("Filament"); - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E i mm") SUPERSCRIPT_THREE; - LSTR MSG_FILAMENT_DIAM = _UxGT("Fil. Dia."); - LSTR MSG_FILAMENT_DIAM_E = _UxGT("Fil. Dia. *"); - LSTR MSG_CONTRAST = _UxGT("LCD kontrast"); - LSTR MSG_STORE_EEPROM = _UxGT("Gem i EEPROM"); - LSTR MSG_LOAD_EEPROM = _UxGT("Hent fra EEPROM"); - LSTR MSG_RESTORE_DEFAULTS = _UxGT("Gendan Defaults"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Genopfrisk"); - LSTR MSG_INFO_SCREEN = _UxGT("Info skærm"); - LSTR MSG_PREPARE = _UxGT("Forbered"); - LSTR MSG_PAUSE_PRINT = _UxGT("Pause printet"); - LSTR MSG_RESUME_PRINT = _UxGT("Forsæt printet"); - LSTR MSG_STOP_PRINT = _UxGT("Stop printet"); - LSTR MSG_MEDIA_MENU = _UxGT("Print fra SD"); - LSTR MSG_NO_MEDIA = _UxGT("Intet SD kort"); - LSTR MSG_DWELL = _UxGT("Dvale..."); - LSTR MSG_USERWAIT = _UxGT("Venter på bruger..."); - LSTR MSG_PRINT_ABORTED = _UxGT("Print annulleret"); - LSTR MSG_NO_MOVE = _UxGT("Ingen bevægelse."); - LSTR MSG_KILLED = _UxGT("DRÆBT. "); - LSTR MSG_STOPPED = _UxGT("STOPPET. "); - LSTR MSG_CONTROL_RETRACT = _UxGT("Tilbagetræk mm"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Skift Re.mm"); - LSTR MSG_CONTROL_RETRACTF = _UxGT("Tilbagetræk V"); - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Hop mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Unretr. mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Skift Unretr. mm"); - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Unretract V"); - LSTR MSG_AUTORETRACT = _UxGT("Auto-Retract"); - LSTR MSG_FILAMENTCHANGE = _UxGT("Skift filament"); - LSTR MSG_FILAMENTCHANGE_E = _UxGT("Skift filament *"); - - LSTR MSG_CHANGE_MEDIA = _UxGT("Skift SD kort"); - - LSTR MSG_ZPROBE_OUT = _UxGT("Probe udenfor plade"); - LSTR MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch Selv-Test"); - LSTR MSG_HOME_FIRST = _UxGT("Home %s først"); - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Justér Z trin"); - LSTR MSG_ERR_HEATING_FAILED = _UxGT("Opvarmning fejlet"); - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Fejl: reserve temp"); - LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("Temp løber løbsk"); - LSTR MSG_ERR_MAXTEMP = _UxGT("Fejl: Maks temp"); - LSTR MSG_ERR_MINTEMP = _UxGT("Fejl: Min temp"); - LSTR MSG_HALTED = _UxGT("PRINTER STOPPET"); - LSTR MSG_PLEASE_RESET = _UxGT("Reset Venligst"); - LSTR MSG_HEATING = _UxGT("Opvarmer..."); - LSTR MSG_BED_HEATING = _UxGT("Opvarmer plade..."); - LSTR MSG_DELTA_CALIBRATE = _UxGT("Delta Kalibrering"); - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Kalibrer X"); - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Kalibrer Y"); - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Kalibrer Z"); - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Kalibrerings Center"); - - LSTR MSG_INFO_MENU = _UxGT("Om Printer"); - LSTR MSG_INFO_BOARD_MENU = _UxGT("Kort Info"); - LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Thermistors"); - - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Prints"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Færdige"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Længste"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extruderet"); - - LSTR MSG_INFO_PSU = _UxGT("Strømfors."); - - LSTR MSG_DRIVE_STRENGTH = _UxGT("Driv Styrke"); - LSTR MSG_DAC_PERCENT_N = _UxGT("@ Driv %"); - - LSTR MSG_DAC_EEPROM_WRITE = _UxGT("DAC EEPROM Skriv"); - - LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Forsæt print"); - - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Forkert printer"); - - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Vent venligst...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Udskyder...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Indsæt og klik")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Indtager...")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Fortsætter...")); + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" er klar"); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = _UxGT("Kort isat"); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = _UxGT("Kort fjernet"); // (MEDIA_TYPE_EN) Removed + LSTR MSG_MAIN_MENU = _UxGT("Menu"); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("Slå alle steppere fra"); // Disable Steppers + LSTR MSG_AUTO_HOME = _UxGT("Auto Home"); // Auto Home + LSTR MSG_LEVEL_BED_WAITING = _UxGT("Klik når du er klar"); // Click to Begin + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Næste punkt"); // Next Point + LSTR MSG_LEVEL_BED_DONE = _UxGT("Bed level er færdig!"); // Leveling Done! + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Sæt forsk. af home"); // Set Home Offsets + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Forsk. er nu aktiv"); // Offsets Applied + LSTR MSG_PREHEAT_1 = _UxGT("Forvarm ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = _UxGT("Forvarm ") PREHEAT_1_LABEL " ~"; // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" end"); // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" end ~"); // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_1_ALL = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" Alle"); // Preheat (PREHEAT_1_LABEL) All + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" Bed"); // Preheat (PREHEAT_1_LABEL) Bed + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Forvarm ") PREHEAT_1_LABEL _UxGT(" conf"); // Preheat (PREHEAT_1_LABEL) Conf + LSTR MSG_PREHEAT_M = _UxGT("Forvarm $"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("Forvarm $ ~"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("Forvarm $ end"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("Forvarm $ end ~"); // Preheat $ End ~ + LSTR MSG_PREHEAT_M_ALL = _UxGT("Forvarm $ Alle"); // Preheat $ All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Forvarm $ Bed"); // Preheat $ Bed + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Forvarm $ conf"); // Preheat $ Conf + LSTR MSG_COOLDOWN = _UxGT("Afkøl"); // Cooldown + LSTR MSG_SWITCH_PS_ON = _UxGT("Slå strøm til"); // Switch Power On + LSTR MSG_SWITCH_PS_OFF = _UxGT("Slå strøm fra"); // Switch Power Off + LSTR MSG_EXTRUDE = _UxGT("Extruder"); // Extrude + LSTR MSG_MOVE_AXIS = _UxGT("Flyt akser"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("Probe og nivellér"); // Probe and Level + LSTR MSG_BED_LEVELING = _UxGT("Juster bed"); // Bed Leveling + LSTR MSG_LEVEL_BED = _UxGT("Juster bed"); // Level Bed + LSTR MSG_MOVE_X = _UxGT("Flyt X"); // Move X + LSTR MSG_MOVE_Y = _UxGT("Flyt Y"); // Move Y + LSTR MSG_MOVE_Z = _UxGT("Flyt Z"); // Move Z + LSTR MSG_MOVE_N = _UxGT("Flyt @"); // Move @ + LSTR MSG_MOVE_E = _UxGT("Flyt E"); // Move Extruder + LSTR MSG_MOVE_EN = _UxGT("Flyt *"); // Move * + LSTR MSG_MOVE_N_MM = _UxGT("Flyt $mm"); // Move $mm + LSTR MSG_MOVE_N_IN = _UxGT("Flyt $in"); // Move $in + LSTR MSG_MOVE_N_DEG = _UxGT("Flyt $") LCD_STR_DEGREE; // Move $(LCD_STR_DEGREE) + LSTR MSG_SPEED = _UxGT("Hastighed"); // Speed + LSTR MSG_MESH_Z_OFFSET = _UxGT("Plade Z"); // Bed Z + LSTR MSG_NOZZLE = _UxGT("Dyse"); // Nozzle + LSTR MSG_NOZZLE_N = _UxGT("Dyse ~"); // Nozzle ~ + LSTR MSG_BED = _UxGT("Plade"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("Blæser hastighed"); // Fan Speed + LSTR MSG_FAN_SPEED_N = _UxGT("Blæser hastighed ~"); // Fan Speed ~ + LSTR MSG_CONTROL = _UxGT("Kontrol"); // Control + LSTR MSG_AUTOTEMP = _UxGT("Autotemp"); // Autotemp + LSTR MSG_SELECT_E = _UxGT("Vælg *"); // Select * + LSTR MSG_A_RETRACT = _UxGT("A-retract"); // Retract Accel + LSTR MSG_A_TRAVEL = _UxGT("A-rejse"); // Travel Accel + LSTR MSG_TEMPERATURE = _UxGT("Temperatur"); // Temperature + LSTR MSG_MOTION = _UxGT("Bevægelse"); // Motion + LSTR MSG_FILAMENT = _UxGT("Filament"); // Filament + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E i mm") SUPERSCRIPT_THREE; // E in mm(SUPERSCRIPT_THREE) + LSTR MSG_FILAMENT_DIAM = _UxGT("Fil. Dia."); // Fil. Dia. + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Fil. Dia. *"); // Fil. Dia. * + LSTR MSG_CONTRAST = _UxGT("LCD kontrast"); // LCD Contrast + LSTR MSG_STORE_EEPROM = _UxGT("Gem i EEPROM"); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("Hent fra EEPROM"); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("Gendan Defaults"); // Restore Defaults + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Genopfrisk"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT("Info skærm"); // Info Screen + LSTR MSG_PREPARE = _UxGT("Forbered"); // Prepare + LSTR MSG_PAUSE_PRINT = _UxGT("Pause printet"); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("Forsæt printet"); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("Stop printet"); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("Print fra SD"); // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = _UxGT("Intet SD kort"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_DWELL = _UxGT("Dvale..."); // Sleep... + LSTR MSG_USERWAIT = _UxGT("Venter på bruger..."); // Click to Resume... + LSTR MSG_PRINT_ABORTED = _UxGT("Print annulleret"); // Print Aborted + LSTR MSG_NO_MOVE = _UxGT("Ingen bevægelse."); // No Move. + LSTR MSG_KILLED = _UxGT("DRÆBT. "); // KILLED. + LSTR MSG_STOPPED = _UxGT("STOPPET. "); // STOPPED. + LSTR MSG_CONTROL_RETRACT = _UxGT("Tilbagetræk mm"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Skift Re.mm"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACTF = _UxGT("Tilbagetræk V"); // Retract V + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Hop mm"); // Hop mm + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Unretr. mm"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Skift Unretr. mm"); // S Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Unretract V"); // Unretract V + LSTR MSG_AUTORETRACT = _UxGT("Auto-Retract"); // Auto-Retract + LSTR MSG_FILAMENTCHANGE = _UxGT("Skift filament"); // Change Filament + LSTR MSG_FILAMENTCHANGE_E = _UxGT("Skift filament *"); // Change * Filament + LSTR MSG_CHANGE_MEDIA = _UxGT("Skift SD kort"); // Refresh (MEDIA_TYPE_EN) + LSTR MSG_ZPROBE_OUT = _UxGT("Probe udenfor plade"); // Z Probe Past Bed + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Justér Z trin"); // Babystep Probe Z + LSTR MSG_ERR_HEATING_FAILED = _UxGT("Opvarmning fejlet"); // Heating Failed + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Fejl: reserve temp"); // Err: REDUNDANT TEMP + LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("Temp løber løbsk"); // THERMAL RUNAWAY + LSTR MSG_ERR_MAXTEMP = _UxGT("Fejl: Maks temp"); // Err: MAXTEMP + LSTR MSG_ERR_MINTEMP = _UxGT("Fejl: Min temp"); // Err: MINTEMP + LSTR MSG_HALTED = _UxGT("PRINTER STOPPET"); // PRINTER HALTED + LSTR MSG_PLEASE_RESET = _UxGT("Reset Venligst"); // Please Reset + LSTR MSG_HEATING = _UxGT("Opvarmer..."); // Heating... + LSTR MSG_BED_HEATING = _UxGT("Opvarmer plade..."); // Bed Heating... + LSTR MSG_DELTA_CALIBRATE = _UxGT("Delta Kalibrering"); // Delta Calibration + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Kalibrer X"); // Calibrate X + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Kalibrer Y"); // Calibrate Y + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Kalibrer Z"); // Calibrate Z + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Kalibrerings Center"); // Calibrate Center + LSTR MSG_INFO_MENU = _UxGT("Om Printer"); // About Printer + LSTR MSG_INFO_BOARD_MENU = _UxGT("Kort Info"); // Board Info + LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Thermistors"); // Thermistors + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Prints"); // Prints + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Færdige"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); // Total + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Længste"); // Longest + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extruderet"); // Extruded + LSTR MSG_INFO_PSU = _UxGT("Strømfors."); // PSU + LSTR MSG_DRIVE_STRENGTH = _UxGT("Driv Styrke"); // Drive Strength + LSTR MSG_DAC_EEPROM_WRITE = _UxGT("DAC EEPROM Skriv"); // DAC EEPROM Write + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Forsæt print"); // Continue + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Vent venligst...")); // |Please wait... + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Indsæt og klik")); // |Insert and Click + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Udskyder...")); // |Ejecting... + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Indtager...")); // |Loading... + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Fortsætter...")); // |Resuming... + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); // (LCD_STR_THERMOMETER) Min + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); // (LCD_STR_THERMOMETER) Max + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fact"); // (LCD_STR_THERMOMETER) Fact + LSTR MSG_LCD_ON = _UxGT("Til"); // On + LSTR MSG_LCD_OFF = _UxGT("Fra"); // Off + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Forkert printer"); // INCORRECT PRINTER + LSTR MSG_HOME_FIRST = _UxGT("Home %s først"); // Home %s First + LSTR MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch Selv-Test"); // Self-Test + LSTR MSG_DAC_PERCENT_N = _UxGT("@ Driv %"); // @ Driver % } namespace LanguageWide_da { using namespace LanguageNarrow_da; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Ant. Prints"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Færdige"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Total print tid"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Længste print"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total Extruderet"); + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Ant. Prints"); // Print Count + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Færdige"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Total print tid"); // Print Time + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Længste print"); // Longest Job Time + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total Extruderet"); // Extruded Total #endif } @@ -206,11 +192,11 @@ namespace LanguageTall_da { using namespace LanguageWide_da; #if LCD_HEIGHT >= 4 // Filament Change screens show up to 3 lines on a 4-line display - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Vent på start", "af filament", "skift")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Vent på", "filament udskyd.")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Indsæt filament", "og tryk på knap", "for at fortsætte...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Vent på", "filament indtag")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Vent på at print", "fortsætter")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Vent på start", "af filament", "skift")); // |Wait for|filament change|to start + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Indsæt filament", "og tryk på knap", "for at fortsætte...")); // |Insert filament|and press button|to continue + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Vent på", "filament udskyd.")); // |Wait for|filament unload + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Vent på", "filament indtag")); // |Wait for|filament load + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Vent på at print", "fortsætter")); // |Wait for print|to resume... #endif } diff --git a/Marlin/src/lcd/language/language_de.h b/Marlin/src/lcd/language/language_de.h index ccf9babe6e..3e3b9c5fbf 100644 --- a/Marlin/src/lcd/language/language_de.h +++ b/Marlin/src/lcd/language/language_de.h @@ -42,749 +42,713 @@ namespace LanguageNarrow_de { constexpr uint8_t CHARSIZE = 2; LSTR LANGUAGE = _UxGT("Deutsch"); - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" bereit"); - LSTR MSG_YES = _UxGT("JA"); - LSTR MSG_NO = _UxGT("NEIN"); - LSTR MSG_HIGH = _UxGT("HOCH"); - LSTR MSG_LOW = _UxGT("RUNTER"); - LSTR MSG_BACK = _UxGT("Zurück"); - LSTR MSG_ERROR = _UxGT("Fehler"); - - LSTR MSG_MEDIA_ABORTING = _UxGT("Abbruch..."); - LSTR MSG_MEDIA_INSERTED = _UxGT("Medium erkannt"); - LSTR MSG_MEDIA_REMOVED = _UxGT("Medium entfernt"); - LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Medium Init fehlgesch."); - LSTR MSG_MEDIA_READ_ERROR = _UxGT("Medium Lesefehler"); - LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB Gerät entfernt"); - LSTR MSG_USB_FD_USB_FAILED = _UxGT("USB Start fehlge."); - LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Subcall überschritten"); - - LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstopp"); // Max length 8 characters - LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Software-Endstopp"); - LSTR MSG_MAIN_MENU = _UxGT("Hauptmenü"); - LSTR MSG_ADVANCED_SETTINGS = _UxGT("Erw. Einstellungen"); - LSTR MSG_CONFIGURATION = _UxGT("Konfiguration"); - LSTR MSG_DISABLE_STEPPERS = _UxGT("Motoren deaktivieren"); // M84 :: Max length 19 characters - LSTR MSG_DEBUG_MENU = _UxGT("Debug-Menü"); - LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Statusbalken-Test"); - LSTR MSG_HOMING = _UxGT("Homing"); - LSTR MSG_AUTO_HOME = _UxGT("Auto Home"); - LSTR MSG_AUTO_HOME_N = _UxGT("Home @"); - LSTR MSG_AUTO_HOME_X = _UxGT("Home X"); - LSTR MSG_AUTO_HOME_Y = _UxGT("Home Y"); - LSTR MSG_AUTO_HOME_Z = _UxGT("Home Z"); - LSTR MSG_FILAMENT_SET = _UxGT("Fila. Einstellungen"); - LSTR MSG_FILAMENT_MAN = _UxGT("Filament Management"); - LSTR MSG_MANUAL_LEVELING = _UxGT("Manuell Nivellierung"); - LSTR MSG_TRAM_FL = _UxGT("Vorne Links"); - LSTR MSG_TRAM_FR = _UxGT("Vorne Rechts"); - LSTR MSG_TRAM_C = _UxGT("Mitte"); - LSTR MSG_TRAM_BL = _UxGT("Hinten Links"); - LSTR MSG_TRAM_BR = _UxGT("Hinten Rechts"); - LSTR MSG_MANUAL_MESH = _UxGT("manuelles Netz"); - LSTR MSG_AUTO_MESH = _UxGT("Netz auto. erstellen"); - LSTR MSG_AUTO_Z_ALIGN = _UxGT("Z-Achsen ausgleichen"); - LSTR MSG_ITERATION = _UxGT("G34 Iteration: %i"); - LSTR MSG_DECREASING_ACCURACY = _UxGT("Genauigkeit sinkt!"); - LSTR MSG_ACCURACY_ACHIEVED = _UxGT("Genauigkeit erreicht"); - LSTR MSG_LEVEL_BED_HOMING = _UxGT("XYZ homen"); - LSTR MSG_LEVEL_BED_WAITING = _UxGT("Klick zum Starten"); - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Nächste Koordinate"); - LSTR MSG_LEVEL_BED_DONE = _UxGT("Nivellieren fertig!"); - LSTR MSG_Z_FADE_HEIGHT = _UxGT("Ausblendhöhe"); - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Setze Homeversatz"); - LSTR MSG_HOME_OFFSET_X = _UxGT("Homeversatz X"); // DWIN - LSTR MSG_HOME_OFFSET_Y = _UxGT("Homeversatz Y"); // DWIN - LSTR MSG_HOME_OFFSET_Z = _UxGT("Homeversatz Z"); // DWIN - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Homeversatz aktiv"); - LSTR MSG_TRAMMING_WIZARD = _UxGT("Tramming Assistent"); - LSTR MSG_SELECT_ORIGIN = _UxGT("Wählen Sie Ursprung"); - LSTR MSG_LAST_VALUE_SP = _UxGT("Letzter Wert "); - - LSTR MSG_PREHEAT_1 = PREHEAT_1_LABEL _UxGT(" Vorwärmen"); - LSTR MSG_PREHEAT_1_H = PREHEAT_1_LABEL _UxGT(" Vorwärmen ~"); - LSTR MSG_PREHEAT_1_END = PREHEAT_1_LABEL _UxGT(" Extr. Vorwärmen"); - LSTR MSG_PREHEAT_1_END_E = PREHEAT_1_LABEL _UxGT(" Extr. Vorwärm. ~"); - LSTR MSG_PREHEAT_1_ALL = PREHEAT_1_LABEL _UxGT(" Alles Vorwärmen"); - LSTR MSG_PREHEAT_1_BEDONLY = PREHEAT_1_LABEL _UxGT(" Bett Vorwärmen"); - LSTR MSG_PREHEAT_1_SETTINGS = PREHEAT_1_LABEL _UxGT(" Einstellungen"); - - LSTR MSG_PREHEAT_M = _UxGT("$ Vorwärmen"); - LSTR MSG_PREHEAT_M_H = _UxGT("$ Vorwärmen") " ~"; - LSTR MSG_PREHEAT_M_END = _UxGT("$ Extr. Vorwärmen"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("$ Extr. Vorwärm. ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("$ Alles Vorwärmen"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("$ Bett Vorwärmen"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("$ Einstellungen"); - - LSTR MSG_PREHEAT_CUSTOM = _UxGT("benutzerdef. Heizen"); - LSTR MSG_COOLDOWN = _UxGT("Abkühlen"); - - LSTR MSG_CUTTER_FREQUENCY = _UxGT("Frequenz"); - LSTR MSG_LASER_MENU = _UxGT("Laser"); - LSTR MSG_SPINDLE_MENU = _UxGT("Spindel-Steuerung"); - LSTR MSG_LASER_POWER = _UxGT("Laserleistung"); - LSTR MSG_SPINDLE_POWER = _UxGT("Spindelleistung"); - LSTR MSG_LASER_TOGGLE = _UxGT("Laser umschalten"); - LSTR MSG_LASER_EVAC_TOGGLE = _UxGT("Gebläse umschalten"); - LSTR MSG_LASER_ASSIST_TOGGLE = _UxGT("Luftunterstützung"); - LSTR MSG_LASER_PULSE_MS = _UxGT("Test Impuls ms"); - LSTR MSG_LASER_FIRE_PULSE = _UxGT("Fire Impuls"); - LSTR MSG_FLOWMETER_FAULT = _UxGT("Feh. Kühlmittelfluss"); - LSTR MSG_SPINDLE_TOGGLE = _UxGT("Spindel umschalten"); - LSTR MSG_SPINDLE_EVAC_TOGGLE = _UxGT("Vakuum umschalten"); - LSTR MSG_SPINDLE_FORWARD = _UxGT("Spindel vorwärts"); - LSTR MSG_SPINDLE_REVERSE = _UxGT("Spindelrichtung"); - LSTR MSG_SWITCH_PS_ON = _UxGT("Netzteil ein"); - LSTR MSG_SWITCH_PS_OFF = _UxGT("Netzteil aus"); - LSTR MSG_EXTRUDE = _UxGT("Extrudieren"); - LSTR MSG_RETRACT = _UxGT("Einzug"); - LSTR MSG_MOVE_AXIS = _UxGT("Achsen bewegen"); - LSTR MSG_PROBE_AND_LEVEL = _UxGT("Sonden nivellieren"); - LSTR MSG_BED_LEVELING = _UxGT("Bett-Nivellierung"); - LSTR MSG_LEVEL_BED = _UxGT("Bett nivellieren"); - LSTR MSG_BED_TRAMMING = _UxGT("Bett ausrichten"); - LSTR MSG_BED_TRAMMING_MANUAL = _UxGT("Manuelles ausrichten"); - LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Das Bett anpassen, bis zum auslösen."); - LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Ecken in der Toleranz. Bett ausger."); - LSTR MSG_BED_TRAMMING_GOOD_POINTS = _UxGT("Gute Punkte: "); - LSTR MSG_BED_TRAMMING_LAST_Z = _UxGT("Letztes Z: "); - LSTR MSG_NEXT_CORNER = _UxGT("Nächste Ecke"); - LSTR MSG_MESH_EDITOR = _UxGT("Netz Editor"); - LSTR MSG_MESH_VIEWER = _UxGT("Netzbetrachter"); - LSTR MSG_EDIT_MESH = _UxGT("Netz bearbeiten"); - LSTR MSG_MESH_VIEW = _UxGT("Netz ansehen"); - LSTR MSG_EDITING_STOPPED = _UxGT("Netzbearb. angeh."); - LSTR MSG_NO_VALID_MESH = _UxGT("Kein gültiges Netz"); - LSTR MSG_ACTIVATE_MESH = _UxGT("Nivellierung aktiv."); - LSTR MSG_PROBING_POINT = _UxGT("Messpunkt"); - LSTR MSG_MESH_X = _UxGT("Index X"); - LSTR MSG_MESH_Y = _UxGT("Index Y"); - LSTR MSG_MESH_INSET = _UxGT("Mesh-Einsatz"); - LSTR MSG_MESH_MIN_X = _UxGT("Mesh X Minimum"); - LSTR MSG_MESH_MAX_X = _UxGT("Mesh X Maximum"); - LSTR MSG_MESH_MIN_Y = _UxGT("Mesh Y Minimum"); - LSTR MSG_MESH_MAX_Y = _UxGT("Mesh Y Maximum"); - LSTR MSG_MESH_AMAX = _UxGT("Bereich maximieren"); - LSTR MSG_MESH_CENTER = _UxGT("Center Area"); - LSTR MSG_MESH_EDIT_Z = _UxGT("Z-Wert"); - LSTR MSG_MESH_CANCEL = _UxGT("Mesh abgebrochen"); - LSTR MSG_CUSTOM_COMMANDS = _UxGT("Benutzer-Menü"); - LSTR MSG_M48_TEST = _UxGT("M48 Sondentest"); - LSTR MSG_M48_POINT = _UxGT("M48 Punkt"); - LSTR MSG_M48_OUT_OF_BOUNDS = _UxGT("Zu weit draußen"); - LSTR MSG_M48_DEVIATION = _UxGT("Abweichung"); - LSTR MSG_IDEX_MENU = _UxGT("IDEX-Modus"); - LSTR MSG_OFFSETS_MENU = _UxGT("Werkzeugversätze"); - LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Autom. parken"); - LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplizieren"); - LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Spiegelkopie"); - LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("vollstä. Kontrolle"); - LSTR MSG_IDEX_DUPE_GAP = _UxGT("X-Lücke duplizieren"); - LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2. Düse Z"); - LSTR MSG_HOTEND_OFFSET_N = _UxGT("2. Düse @"); - LSTR MSG_UBL_DOING_G29 = _UxGT("G29 ausführen"); - LSTR MSG_UBL_TOOLS = _UxGT("UBL-Werkzeuge"); - LSTR MSG_LCD_TILTING_MESH = _UxGT("Berührungspunkt"); - LSTR MSG_UBL_TILT_MESH = _UxGT("Tilt Mesh"); - LSTR MSG_UBL_TILTING_GRID = _UxGT("Tilting Grid Size"); - LSTR MSG_UBL_MESH_TILTED = _UxGT("Mesh Tilted"); - LSTR MSG_UBL_MANUAL_MESH = _UxGT("Netz manuell erst."); - LSTR MSG_UBL_MESH_WIZARD = _UxGT("UBL Netz Assistent"); - LSTR MSG_UBL_BC_INSERT = _UxGT("Unterlegen & messen"); - LSTR MSG_UBL_BC_INSERT2 = _UxGT("Messen"); - LSTR MSG_UBL_BC_REMOVE = _UxGT("Entfernen & messen"); - LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Nächster Punkt..."); - LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Betttemperatur"); - LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Betttemperatur"); - LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Hotend-Temp."); - LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Hotend-Temp."); - LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Eigenes Netz bearb."); - LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Feineinstellung..."); - LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Bearbeitung beendet"); - LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Eigenes Netz erst."); - LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Netz erstellen"); - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("$ Netz erstellen"); - LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Netz erstellen kalt"); - LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Netzhöhe einst."); - LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Höhe"); - LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Netz validieren"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("$ Netz validieren"); - LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Eig. Netz validieren"); - LSTR MSG_G26_HEATING_BED = _UxGT("G26 heizt Bett"); - LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 Düse aufheizen"); - LSTR MSG_G26_MANUAL_PRIME = _UxGT("Manuell Prime..."); - LSTR MSG_G26_FIXED_LENGTH = _UxGT("Feste Länge Prime"); - LSTR MSG_G26_PRIME_DONE = _UxGT("Priming fertig"); - LSTR MSG_G26_CANCELED = _UxGT("G26 abgebrochen"); - LSTR MSG_G26_LEAVING = _UxGT("G26 verlassen"); - LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Netzerst. forts."); - LSTR MSG_UBL_MESH_LEVELING = _UxGT("Netz-Nivellierung"); - LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-Punkt-Nivell."); - LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Gitternetz-Nivell."); - LSTR MSG_UBL_MESH_LEVEL = _UxGT("Netz nivellieren"); - LSTR MSG_UBL_SIDE_POINTS = _UxGT("Eckpunkte"); - LSTR MSG_UBL_MAP_TYPE = _UxGT("Kartentyp"); - LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Karte ausgeben"); - LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Ausgabe für Host"); - LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Ausgabe für CSV"); - LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Externe Sicherung"); - LSTR MSG_UBL_INFO_UBL = _UxGT("UBL-Info ausgeben"); - LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Menge an Füllung"); - LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Manuelles Füllen"); - LSTR MSG_UBL_SMART_FILLIN = _UxGT("Cleveres Füllen"); - LSTR MSG_UBL_FILLIN_MESH = _UxGT("Netz Füllen"); - LSTR MSG_UBL_MESH_FILLED = _UxGT("Fehlende Punkte erg."); - LSTR MSG_UBL_MESH_INVALID = _UxGT("Ungültiges Netz"); - LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Alles annullieren"); - LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Nächstlieg. ann."); - LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Feineinst. Alles"); - LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Feineinst. Nächstl."); - LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Netz-Speicherplatz"); - LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Speicherort"); - LSTR MSG_UBL_LOAD_MESH = _UxGT("Bettnetz laden"); - LSTR MSG_UBL_SAVE_MESH = _UxGT("Bettnetz speichern"); - LSTR MSG_UBL_INVALID_SLOT = _UxGT("Wähle einen Mesh-Slot"); - LSTR MSG_MESH_LOADED = _UxGT("Netz %i geladen"); - LSTR MSG_MESH_SAVED = _UxGT("Netz %i gespeichert"); - LSTR MSG_UBL_NO_STORAGE = _UxGT("Kein Speicher"); - LSTR MSG_UBL_SAVE_ERROR = _UxGT("Err:UBL speichern"); - LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Err:UBL wiederherst."); - LSTR MSG_UBL_Z_OFFSET = _UxGT("Z-Versatz: "); - LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Z-Versatz angehalten"); - LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("Schrittweises UBL"); - LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Netz kalt erstellen"); - LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2.Intelligent Füllen"); - LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Netz validieren"); - LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Alles Feineinst."); - LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Netz validieren"); - LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Alles Feineinst."); - LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Bettnetz speichern"); - - LSTR MSG_LED_CONTROL = _UxGT("Licht-Steuerung"); - LSTR MSG_LIGHTS = _UxGT("Licht"); - LSTR MSG_LIGHT_N = _UxGT("Lichter #{"); - LSTR MSG_LED_PRESETS = _UxGT("Licht-Einstellung"); - LSTR MSG_SET_LEDS_RED = _UxGT("Rot"); - LSTR MSG_SET_LEDS_ORANGE = _UxGT("Orange"); - LSTR MSG_SET_LEDS_YELLOW = _UxGT("Gelb"); - LSTR MSG_SET_LEDS_GREEN = _UxGT("Grün"); - LSTR MSG_SET_LEDS_BLUE = _UxGT("Blau"); - LSTR MSG_SET_LEDS_INDIGO = _UxGT("Indigo"); - LSTR MSG_SET_LEDS_VIOLET = _UxGT("Violett"); - LSTR MSG_SET_LEDS_WHITE = _UxGT("Weiß"); - LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Standard"); - LSTR MSG_LED_CHANNEL_N = _UxGT("Kanal {"); - LSTR MSG_NEO2_PRESETS = _UxGT("Licht #2 Voreinst."); - LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Helligkeit"); - LSTR MSG_CUSTOM_LEDS = _UxGT("Benutzerdefiniert"); - LSTR MSG_INTENSITY_R = _UxGT("Intensität Rot"); - LSTR MSG_INTENSITY_G = _UxGT("Intensität Grün"); - LSTR MSG_INTENSITY_B = _UxGT("Intensität Blau"); - LSTR MSG_INTENSITY_W = _UxGT("Intensität Weiß"); - LSTR MSG_LED_BRIGHTNESS = _UxGT("Helligkeit"); - - LSTR MSG_MOVING = _UxGT("In Bewegung..."); - LSTR MSG_FREE_XY = _UxGT("Abstand XY"); - LSTR MSG_MOVE_X = _UxGT("Bewege X"); - LSTR MSG_MOVE_Y = _UxGT("Bewege Y"); - LSTR MSG_MOVE_Z = _UxGT("Bewege Z"); - LSTR MSG_MOVE_N = _UxGT("Bewege @"); - LSTR MSG_MOVE_E = _UxGT("Bewege Extruder"); - LSTR MSG_MOVE_EN = _UxGT("Bewege Extruder *"); - LSTR MSG_HOTEND_TOO_COLD = _UxGT("Hotend zu kalt"); - LSTR MSG_MOVE_N_MM = _UxGT("Bewege $mm"); - LSTR MSG_MOVE_N_IN = _UxGT("Bewege $in"); - LSTR MSG_MOVE_N_DEG = _UxGT("Bewege $") LCD_STR_DEGREE; - LSTR MSG_SPEED = _UxGT("Geschw."); - LSTR MSG_MESH_Z_OFFSET = _UxGT("Bett Z"); - LSTR MSG_NOZZLE = _UxGT("Düse"); - LSTR MSG_NOZZLE_N = _UxGT("Düse ~"); - LSTR MSG_NOZZLE_PARKED = _UxGT("Düse geparkt"); - LSTR MSG_NOZZLE_STANDBY = _UxGT("Düse bereit"); - LSTR MSG_BED = _UxGT("Bett"); - LSTR MSG_CHAMBER = _UxGT("Gehäuse"); - LSTR MSG_COOLER = _UxGT("Laser-Kühlmittel"); - LSTR MSG_COOLER_TOGGLE = _UxGT("Kühler umschalten"); - LSTR MSG_FLOWMETER_SAFETY = _UxGT("Durchflusssicherheit"); - LSTR MSG_LASER = _UxGT("Laser"); - LSTR MSG_FAN_SPEED = _UxGT("Lüfter"); - LSTR MSG_FAN_SPEED_N = _UxGT("Lüfter ~"); - LSTR MSG_STORED_FAN_N = _UxGT("Gespeich. Lüfter ~"); - LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Geschw. Extralüfter"); - LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Geschw. Extralüfter ~"); - LSTR MSG_CONTROLLER_FAN = _UxGT("Lüfter Kontroller"); - LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("Lüfter Leerlauf"); - LSTR MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("Motorlast Modus"); - LSTR MSG_CONTROLLER_FAN_SPEED = _UxGT("Lüfter Motorlast"); - LSTR MSG_CONTROLLER_FAN_DURATION = _UxGT("Ausschalt Delay"); - LSTR MSG_FLOW = _UxGT("Flussrate"); - LSTR MSG_FLOW_N = _UxGT("Flussrate ~"); - LSTR MSG_CONTROL = _UxGT("Einstellungen"); - LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" min"); - LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" max"); - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Faktor"); - LSTR MSG_AUTOTEMP = _UxGT("Auto Temperatur"); - LSTR MSG_LCD_ON = _UxGT("an"); - LSTR MSG_LCD_OFF = _UxGT("aus"); - LSTR MSG_PID_AUTOTUNE = _UxGT("PID Autotune"); - LSTR MSG_PID_AUTOTUNE_E = _UxGT("PID Autotune *"); - LSTR MSG_PID_CYCLE = _UxGT("PID Zyklus"); - LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("PID Tuning fertig"); - LSTR MSG_PID_AUTOTUNE_FAILED = _UxGT("PID Autotune fehlge.!"); - LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Autotune fehlge.! Ungültiger Extruder"); - LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Autotune fehlge.! Temperatur zu hoch."); - LSTR MSG_PID_TIMEOUT = _UxGT("Autotune fehlge.! Timeout."); - LSTR MSG_MPC_MEASURING_AMBIENT = _UxGT("teste Wärmeverlust"); - LSTR MSG_MPC_AUTOTUNE = _UxGT("Autotune MPC"); - LSTR MSG_MPC_EDIT = _UxGT("MPC * bearbeiten"); - LSTR MSG_MPC_POWER_E = _UxGT("* Leistung"); - LSTR MSG_MPC_BLOCK_HEAT_CAPACITY_E = _UxGT("Block C *"); - LSTR MSG_SENSOR_RESPONSIVENESS_E = _UxGT("Sensor res *"); - LSTR MSG_MPC_AMBIENT_XFER_COEFF_E = _UxGT("Ambient h *"); - LSTR MSG_MPC_AMBIENT_XFER_COEFF_FAN_E = _UxGT("Amb. h fan *"); - LSTR MSG_SELECT_E = _UxGT("Auswählen *"); - LSTR MSG_ACC = _UxGT("Beschleunigung"); - LSTR MSG_JERK = _UxGT("Jerk"); - LSTR MSG_VA_JERK = _UxGT("Max ") STR_A _UxGT(" Jerk"); - LSTR MSG_VB_JERK = _UxGT("Max ") STR_B _UxGT(" Jerk"); - LSTR MSG_VC_JERK = _UxGT("Max ") STR_C _UxGT(" Jerk"); - LSTR MSG_VN_JERK = _UxGT("Max @ Jerk"); - LSTR MSG_VE_JERK = _UxGT("Max ") STR_E _UxGT(" Jerk"); - LSTR MSG_JUNCTION_DEVIATION = _UxGT("Junction Dev"); - LSTR MSG_MAX_SPEED = _UxGT("Max Geschw. (mm/s)"); - LSTR MSG_VMAX_A = _UxGT("V max ") STR_A; - LSTR MSG_VMAX_B = _UxGT("V max ") STR_B; - LSTR MSG_VMAX_C = _UxGT("V max ") STR_C; - LSTR MSG_VMAX_N = _UxGT("V max @"); - LSTR MSG_VMAX_E = _UxGT("V max ") STR_E; - LSTR MSG_VMAX_EN = _UxGT("V max *"); - LSTR MSG_VMIN = _UxGT("V min "); - LSTR MSG_VTRAV_MIN = _UxGT("V min Leerfahrt"); - LSTR MSG_ACCELERATION = _UxGT("Beschleunigung"); - LSTR MSG_AMAX_A = _UxGT("A max ") STR_A; - LSTR MSG_AMAX_B = _UxGT("A max ") STR_B; - LSTR MSG_AMAX_C = _UxGT("A max ") STR_C; - LSTR MSG_AMAX_N = _UxGT("A max @"); - LSTR MSG_AMAX_E = _UxGT("A max ") STR_E; - LSTR MSG_AMAX_EN = _UxGT("A max *"); - LSTR MSG_A_RETRACT = _UxGT("A Einzug"); - LSTR MSG_A_TRAVEL = _UxGT("A Leerfahrt"); - LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("max. Frequenz"); - LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("min. Vorschub"); - LSTR MSG_STEPS_PER_MM = _UxGT("Steps/mm"); - LSTR MSG_A_STEPS = STR_A _UxGT(" Steps/mm"); - LSTR MSG_B_STEPS = STR_B _UxGT(" Steps/mm"); - LSTR MSG_C_STEPS = STR_C _UxGT(" Steps/mm"); - LSTR MSG_N_STEPS = _UxGT("@ Steps/mm"); - LSTR MSG_E_STEPS = _UxGT("E Steps/mm"); - LSTR MSG_EN_STEPS = _UxGT("* Steps/mm"); - LSTR MSG_TEMPERATURE = _UxGT("Temperatur"); - LSTR MSG_MOTION = _UxGT("Bewegung"); - LSTR MSG_FILAMENT = _UxGT("Filament"); - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm") SUPERSCRIPT_THREE; - LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("E Limit in mm") SUPERSCRIPT_THREE; - LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("E Limit *"); - LSTR MSG_FILAMENT_DIAM = _UxGT("Filamentdurchmesser"); - LSTR MSG_FILAMENT_DIAM_E = _UxGT("Filamentdurchmesser *"); - LSTR MSG_FILAMENT_UNLOAD = _UxGT("Entladen mm"); - LSTR MSG_FILAMENT_LOAD = _UxGT("Laden mm"); - LSTR MSG_ADVANCE_K = _UxGT("Vorschubfaktor"); - LSTR MSG_ADVANCE_K_E = _UxGT("Vorschubfaktor *"); - LSTR MSG_CONTRAST = _UxGT("LCD-Kontrast"); - LSTR MSG_BRIGHTNESS = _UxGT("LCD-Helligkeit"); - LSTR MSG_SCREEN_TIMEOUT = _UxGT("LCD Timeout (m)"); - LSTR MSG_BRIGHTNESS_OFF = _UxGT("LCD ausschalten"); - LSTR MSG_STORE_EEPROM = _UxGT("Konfig. speichern"); - LSTR MSG_LOAD_EEPROM = _UxGT("Konfig. laden"); - LSTR MSG_RESTORE_DEFAULTS = _UxGT("Standardwerte laden"); - LSTR MSG_INIT_EEPROM = _UxGT("Werkseinstellungen"); - LSTR MSG_ERR_EEPROM_CRC = _UxGT("EEPROM CRC Fehler"); - LSTR MSG_ERR_EEPROM_SIZE = _UxGT("EEPROM Größe Fehler"); - LSTR MSG_ERR_EEPROM_VERSION = _UxGT("EEPROM Version Fehler"); - LSTR MSG_SETTINGS_STORED = _UxGT("Einstell. gespei."); - LSTR MSG_MEDIA_UPDATE = _UxGT("FW Update vom Medium"); - LSTR MSG_RESET_PRINTER = _UxGT("Drucker neustarten"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Aktualisieren"); - LSTR MSG_INFO_SCREEN = _UxGT("Info"); - LSTR MSG_INFO_MACHINENAME = _UxGT("Machine Name"); - LSTR MSG_INFO_SIZE = _UxGT("Größe"); - LSTR MSG_INFO_FWVERSION = _UxGT("Firmware Version"); - LSTR MSG_INFO_BUILD = _UxGT("Build Datum"); - LSTR MSG_PREPARE = _UxGT("Vorbereitung"); - LSTR MSG_TUNE = _UxGT("Justierung"); - LSTR MSG_POWER_MONITOR = _UxGT("Power Monitor"); - LSTR MSG_CURRENT = _UxGT("Strom"); - LSTR MSG_VOLTAGE = _UxGT("Spannung"); - LSTR MSG_POWER = _UxGT("Power"); - LSTR MSG_START_PRINT = _UxGT("Starte Druck"); - LSTR MSG_BUTTON_NEXT = _UxGT("Weiter"); - LSTR MSG_BUTTON_INIT = _UxGT("Bestätigen"); - LSTR MSG_BUTTON_STOP = _UxGT("Stop"); - LSTR MSG_BUTTON_PRINT = _UxGT("Drucken"); - LSTR MSG_BUTTON_RESET = _UxGT("Reseten"); - LSTR MSG_BUTTON_IGNORE = _UxGT("Ignorieren"); - LSTR MSG_BUTTON_CANCEL = _UxGT("Abbrechen"); - LSTR MSG_BUTTON_CONFIRM = _UxGT("Bestätigen"); - LSTR MSG_BUTTON_CONTINUE = _UxGT("Fortsetzen"); - LSTR MSG_BUTTON_DONE = _UxGT("Fertig"); - LSTR MSG_BUTTON_BACK = _UxGT("Zurück"); - LSTR MSG_BUTTON_PROCEED = _UxGT("Weiter"); - LSTR MSG_BUTTON_SKIP = _UxGT("Überspringen"); - LSTR MSG_BUTTON_INFO = _UxGT("Info"); - LSTR MSG_BUTTON_LEVEL = _UxGT("Level"); - LSTR MSG_BUTTON_PAUSE = _UxGT("Pause"); - LSTR MSG_BUTTON_RESUME = _UxGT("Fortsetzen"); - LSTR MSG_BUTTON_ADVANCED = _UxGT("Erweitert"); - LSTR MSG_BUTTON_SAVE = _UxGT("Speichern"); - LSTR MSG_BUTTON_PURGE = _UxGT("Reinigen"); - LSTR MSG_PAUSING = _UxGT("Pause..."); - LSTR MSG_PAUSE_PRINT = _UxGT("SD-Druck pausieren"); - LSTR MSG_ADVANCED_PAUSE = _UxGT("Erweiterte Pause"); - LSTR MSG_RESUME_PRINT = _UxGT("SD-Druck fortsetzen"); - LSTR MSG_HOST_START_PRINT = _UxGT("Host-Druck starten"); - LSTR MSG_STOP_PRINT = _UxGT("SD-Druck abbrechen"); - LSTR MSG_END_LOOPS = _UxGT("Wiederholung beenden"); - LSTR MSG_PRINTING_OBJECT = _UxGT("Objekt drucken"); - LSTR MSG_CANCEL_OBJECT = _UxGT("Objekt abbrechen"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Objekt abbrechen {"); - LSTR MSG_OUTAGE_RECOVERY = _UxGT("Wiederh. n. Stroma."); - LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Druckauftrag fortset."); - LSTR MSG_MEDIA_MENU = _UxGT("Druck vom Medium"); - LSTR MSG_NO_MEDIA = _UxGT("Kein Medium"); - LSTR MSG_DWELL = _UxGT("Warten..."); - LSTR MSG_USERWAIT = _UxGT("Klick zum Fortsetzen"); - LSTR MSG_PRINT_PAUSED = _UxGT("Druck pausiert..."); - LSTR MSG_PRINTING = _UxGT("Druckt..."); - LSTR MSG_STOPPING = _UxGT("Stoppen..."); - LSTR MSG_REMAINING_TIME = _UxGT("Verbleiben"); - LSTR MSG_PRINT_ABORTED = _UxGT("Druck abgebrochen"); - LSTR MSG_PRINT_DONE = _UxGT("Druck fertig"); - LSTR MSG_PRINTER_KILLED = _UxGT("Drucker killed!"); - LSTR MSG_TURN_OFF = _UxGT("Drucker ausschalten"); - LSTR MSG_NO_MOVE = _UxGT("Motoren angeschaltet"); - LSTR MSG_KILLED = _UxGT("ABGEBROCHEN"); - LSTR MSG_STOPPED = _UxGT("ANGEHALTEN"); - LSTR MSG_FWRETRACT = _UxGT("Firmware Retract"); - LSTR MSG_CONTROL_RETRACT = _UxGT("Einzug mm"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Wechs. Einzug mm"); - LSTR MSG_CONTROL_RETRACTF = _UxGT("V Einzug"); - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Z-Sprung mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Unretr. mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Wechs. Unretr. mm"); - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Unretract V"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V"); - LSTR MSG_AUTORETRACT = _UxGT("Autom. Einzug"); - LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Einzugslänge"); - LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Extra Einzug"); - LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Entladelänge"); - LSTR MSG_TOOL_CHANGE = _UxGT("Werkzeugwechsel"); - LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Z anheben"); - LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Prime-Geschwin."); - LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Einzug-Geschwin."); - LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Kopf parken"); - LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Rückzugsgeschwindigkeit"); - LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Lüfter Geschwindigkeit"); - LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Lüfter Zeit"); - LSTR MSG_TOOL_MIGRATION_ON = _UxGT("Auto AN"); - LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("Auto AUS"); - LSTR MSG_TOOL_MIGRATION = _UxGT("Werkzeugmigration"); - LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("Auto-Migration"); - LSTR MSG_TOOL_MIGRATION_END = _UxGT("Letzter Extruder"); - LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("Migrieren zu *"); - LSTR MSG_FILAMENTCHANGE = _UxGT("Filament wechseln"); - LSTR MSG_FILAMENTCHANGE_E = _UxGT("Filament wechseln *"); - LSTR MSG_FILAMENTLOAD = _UxGT("Filament laden"); - LSTR MSG_FILAMENTLOAD_E = _UxGT("Filament laden *"); - LSTR MSG_FILAMENTUNLOAD = _UxGT("Filament entladen"); - LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Filament entladen *"); - LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Alles entladen"); - - LSTR MSG_ATTACH_MEDIA = _UxGT("SD initial."); - LSTR MSG_ATTACH_SD = _UxGT("SD initial."); - LSTR MSG_ATTACH_USB = _UxGT("USB initial."); - LSTR MSG_CHANGE_MEDIA = _UxGT("Medium getauscht"); // SD-card changed by user. For machines with no autocarddetect. Both send "M21" - LSTR MSG_RELEASE_MEDIA = _UxGT("Medium freigeben"); // if Marlin gets confused - M22 - LSTR MSG_RUN_AUTOFILES = _UxGT("Autostart"); - - LSTR MSG_ZPROBE_OUT = _UxGT("Z-Sonde außerhalb"); - LSTR MSG_SKEW_FACTOR = _UxGT("Korrekturfaktor"); - LSTR MSG_BLTOUCH = _UxGT("BLTouch"); - LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Selbsttest"); - LSTR MSG_BLTOUCH_RESET = _UxGT("Zurücksetzen"); - LSTR MSG_BLTOUCH_STOW = _UxGT("Einfahren"); - LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Ausfahren"); - LSTR MSG_BLTOUCH_SW_MODE = _UxGT("SW-Modus"); - LSTR MSG_BLTOUCH_SPEED_MODE = _UxGT("High Speed"); - LSTR MSG_BLTOUCH_5V_MODE = _UxGT("5V-Modus"); - LSTR MSG_BLTOUCH_OD_MODE = _UxGT("OD-Modus"); - LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("Mode-Store"); - LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Setze auf 5V"); - LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Setze auf OD"); - LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Modus: "); - LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("ACHTUNG: Falsche Einstellung - kann zu Beschädigung führen! Fortfahren?"); - LSTR MSG_TOUCHMI_PROBE = _UxGT("TouchMI"); - LSTR MSG_TOUCHMI_INIT = _UxGT("TouchMI initial."); - LSTR MSG_TOUCHMI_ZTEST = _UxGT("Test Z-Versatz"); - LSTR MSG_TOUCHMI_SAVE = _UxGT("Speichern"); - LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("TouchMI ausfahren"); - LSTR MSG_MANUAL_DEPLOY = _UxGT("Z-Sonde ausfahren"); - LSTR MSG_MANUAL_STOW = _UxGT("Z-Sonde einfahren"); - LSTR MSG_HOME_FIRST = _UxGT("Vorher %s homen"); - LSTR MSG_ZPROBE_SETTINGS = _UxGT("Sondeneinstellungen"); - LSTR MSG_ZPROBE_OFFSETS = _UxGT("Sondenversatz"); - LSTR MSG_ZPROBE_XOFFSET = _UxGT("Sondenversatz X"); - LSTR MSG_ZPROBE_YOFFSET = _UxGT("Sondenversatz Y"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Sondenversatz Z"); - LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Sondenversatz @"); - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Z Offset mit Pas"); - LSTR MSG_ZPROBE_MARGIN = _UxGT("Sondenrand"); - LSTR MSG_Z_FEED_RATE = _UxGT("Z-Vorschub"); - LSTR MSG_ENABLE_HS_MODE = _UxGT("HS-Modus aktivieren"); - LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Bewege Düse zum Bett"); - LSTR MSG_BABYSTEP_X = _UxGT("Babystep X"); - LSTR MSG_BABYSTEP_Y = _UxGT("Babystep Y"); - LSTR MSG_BABYSTEP_Z = _UxGT("Babystep Z"); - LSTR MSG_BABYSTEP_N = _UxGT("Babystep @"); - LSTR MSG_BABYSTEP_TOTAL = _UxGT("Total"); - LSTR MSG_ENDSTOP_ABORT = _UxGT("Abbr. mit Endstopp"); - LSTR MSG_ERR_HEATING_FAILED = _UxGT("HEIZEN ERFOLGLOS"); - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("REDUND. TEMP-ABWEI."); - LSTR MSG_ERR_THERMAL_RUNAWAY = " " LCD_STR_THERMOMETER _UxGT(" NICHT ERREICHT"); - LSTR MSG_ERR_TEMP_MALFUNCTION = _UxGT("TEMP-FEHLER"); - LSTR MSG_ERR_COOLING_FAILED = _UxGT("Kühlung fehlgeschla."); - LSTR MSG_ERR_MAXTEMP = " " LCD_STR_THERMOMETER _UxGT(" ÜBERSCHRITTEN"); - LSTR MSG_ERR_MINTEMP = " " LCD_STR_THERMOMETER _UxGT(" UNTERSCHRITTEN"); - LSTR MSG_HALTED = _UxGT("DRUCKER GESTOPPT"); - LSTR MSG_PLEASE_WAIT = _UxGT("Bitte warten..."); - LSTR MSG_PLEASE_RESET = _UxGT("Bitte neustarten"); - LSTR MSG_PREHEATING = _UxGT("vorheizen..."); - LSTR MSG_HEATING = _UxGT("heizt..."); - LSTR MSG_COOLING = _UxGT("kühlt..."); - LSTR MSG_BED_HEATING = _UxGT("Bett heizt..."); - LSTR MSG_BED_COOLING = _UxGT("Bett kühlt..."); - LSTR MSG_PROBE_HEATING = _UxGT("Sonde heizt..."); - LSTR MSG_PROBE_COOLING = _UxGT("Sonde kühlt..."); - LSTR MSG_CHAMBER_HEATING = _UxGT("Gehäuse heizt..."); - LSTR MSG_CHAMBER_COOLING = _UxGT("Gehäuse kühlt..."); - LSTR MSG_LASER_COOLING = _UxGT("Laser kühlt..."); - LSTR MSG_DELTA_CALIBRATE = _UxGT("Delta kalibrieren"); - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Kalibriere X"); - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Kalibriere Y"); - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Kalibriere Z"); - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Kalibriere Mitte"); - LSTR MSG_DELTA_SETTINGS = _UxGT("Delta Einst. anzeig."); - LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Autom. Kalibrierung"); - LSTR MSG_DELTA_DIAG_ROD = _UxGT("Diag Rod"); - LSTR MSG_DELTA_HEIGHT = _UxGT("Höhe"); - LSTR MSG_DELTA_RADIUS = _UxGT("Radius"); - LSTR MSG_INFO_MENU = _UxGT("Über den Drucker"); - LSTR MSG_INFO_PRINTER_MENU = _UxGT("Drucker-Info"); - LSTR MSG_3POINT_LEVELING = _UxGT("3-Punkt-Nivellierung"); - LSTR MSG_LINEAR_LEVELING = _UxGT("Lineare Nivellierung"); - LSTR MSG_BILINEAR_LEVELING = _UxGT("Bilineare Nivell."); - LSTR MSG_UBL_LEVELING = _UxGT("Einheit. Bettnivell."); - LSTR MSG_MESH_LEVELING = _UxGT("Netz-Nivellierung"); - LSTR MSG_MESH_DONE = _UxGT("Nivellierung fertig"); - LSTR MSG_INFO_STATS_MENU = _UxGT("Drucker-Statistik"); - LSTR MSG_INFO_BOARD_MENU = _UxGT("Board-Info"); - LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Thermistoren"); - LSTR MSG_INFO_EXTRUDERS = _UxGT("Extruder"); - LSTR MSG_INFO_BAUDRATE = _UxGT("Baudrate"); - LSTR MSG_INFO_PROTOCOL = _UxGT("Protokoll"); - LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Runaway Watch: AUS"); - LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Runaway Watch: AN"); - LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Hotend Idle Timeout"); - LSTR MSG_FAN_SPEED_FAULT = _UxGT("Fehler Lüftergeschw."); - - LSTR MSG_CASE_LIGHT = _UxGT("Beleuchtung"); - LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Helligkeit"); - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Falscher Drucker"); - - LSTR MSG_COLORS_GET = _UxGT("Farbe"); // ProUI - LSTR MSG_COLORS_SELECT = _UxGT("Farben auswählen"); // ProUI - LSTR MSG_COLORS_APPLIED = _UxGT("Farben verwenden"); // ProUI - LSTR MSG_COLORS_RED = _UxGT("Rot"); // ProUI / JyersUI - LSTR MSG_COLORS_GREEN = _UxGT("Grün"); // ProUI / JyersUI - LSTR MSG_COLORS_BLUE = _UxGT("Blau"); // ProUI / JyersUI - LSTR MSG_COLORS_WHITE = _UxGT("Weiß"); // ProUI - LSTR MSG_UI_LANGUAGE = _UxGT("UI Sprache"); // ProUI - LSTR MSG_SOUND_ENABLE = _UxGT("Ton aktivieren"); // ProUI - LSTR MSG_LOCKSCREEN = _UxGT("Bildschirm sperren"); // ProUI - LSTR MSG_LOCKSCREEN_LOCKED = _UxGT("Drucker ist gesperrt,"); // ProUI - LSTR MSG_LOCKSCREEN_UNLOCK = _UxGT("Scrollen zum Entsper."); // ProUI - LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Auf Neustart warten"); // ProUI - LSTR MSG_PLEASE_PREHEAT = _UxGT("Bitte vorheizen"); // ProUI - - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Drucke"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Komplette"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Gesamte"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Längste"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extrud."); - LSTR MSG_INFO_MIN_TEMP = _UxGT("Min Temp"); - LSTR MSG_INFO_MAX_TEMP = _UxGT("Max Temp"); - LSTR MSG_INFO_PSU = _UxGT("Netzteil"); - - LSTR MSG_DRIVE_STRENGTH = _UxGT("Motorleistung"); - LSTR MSG_DAC_PERCENT_N = _UxGT("@ Treiber %"); - LSTR MSG_ERROR_TMC = _UxGT("TMC Verbindungsfehler"); - LSTR MSG_DAC_EEPROM_WRITE = _UxGT("Werte speichern"); - LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("FILAMENT WECHSEL"); - LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("DRUCK PAUSIERT"); - LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("FILAMENT LADEN"); - LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("FILAMENT ENTLADEN"); - LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("FORTS. OPTIONEN:"); - LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Mehr entladen"); - LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Druck weiter"); - LSTR MSG_FILAMENT_CHANGE_PURGE_CONTINUE = _UxGT("Löschen o. fortfah.?"); // ProUI - LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Düse: "); - LSTR MSG_RUNOUT_SENSOR = _UxGT("Runout-Sensor"); - LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("Runout-Weg mm"); - LSTR MSG_EXTRUDER_MIN_TEMP = _UxGT("Extruder Min Temp."); // ProUI - LSTR MSG_FANCHECK = _UxGT("Lüftergeschw. prüfen"); - LSTR MSG_KILL_HOMING_FAILED = _UxGT("Homing gescheitert"); - LSTR MSG_LCD_PROBING_FAILED = _UxGT("Probing gescheitert"); - - LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("FILAMENT WÄHLEN"); - LSTR MSG_MMU2_MENU = _UxGT("MMU"); - LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("Update MMU Firmware!"); - LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU handeln erfor."); - LSTR MSG_MMU2_RESUME = _UxGT("Druck fortsetzen"); - LSTR MSG_MMU2_RESUMING = _UxGT("Fortfahren..."); - LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("Filament laden"); - LSTR MSG_MMU2_LOAD_ALL = _UxGT("Lade alle"); - LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Düse laden"); - LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("Filament auswerfen"); - LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("Filament ~ auswerfen"); - LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Filament entladen "); - LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Lade Fila. %i..."); - LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Fila. auswerfen..."); - LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Fila. entladen..."); - LSTR MSG_MMU2_ALL = _UxGT("Alle"); - LSTR MSG_MMU2_FILAMENT_N = _UxGT("Filament ~"); - LSTR MSG_MMU2_RESET = _UxGT("setze MMU zurück"); - LSTR MSG_MMU2_RESETTING = _UxGT("MMU zurücksetzen..."); - LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Entfernen, klicken"); - - LSTR MSG_MIX = _UxGT("Mix"); - LSTR MSG_MIX_COMPONENT_N = _UxGT("Komponente {"); - LSTR MSG_MIXER = _UxGT("Mixer"); - LSTR MSG_GRADIENT = _UxGT("Gradient"); // equal Farbverlauf - LSTR MSG_FULL_GRADIENT = _UxGT("Volle Gradient"); - LSTR MSG_TOGGLE_MIX = _UxGT("Mix umschalten"); - LSTR MSG_CYCLE_MIX = _UxGT("Zyklus Mix"); - LSTR MSG_GRADIENT_MIX = _UxGT("Gradient Mix"); - LSTR MSG_REVERSE_GRADIENT = _UxGT("Umgekehrte Gradient"); - LSTR MSG_ACTIVE_VTOOL = _UxGT("Aktives V-Tool"); - LSTR MSG_START_VTOOL = _UxGT("V-Tool Start"); - LSTR MSG_END_VTOOL = _UxGT("V-Tool Ende"); - LSTR MSG_GRADIENT_ALIAS = _UxGT("V-Tool Alias"); - LSTR MSG_RESET_VTOOLS = _UxGT("V-Tools Reseten"); - LSTR MSG_COMMIT_VTOOL = _UxGT("V-Tool Mix sichern"); - LSTR MSG_VTOOLS_RESET = _UxGT("V-Tools ist resetet"); - LSTR MSG_START_Z = _UxGT("Z Start:"); - LSTR MSG_END_Z = _UxGT("Z Ende:"); - - LSTR MSG_GAMES = _UxGT("Spiele"); - LSTR MSG_BRICKOUT = _UxGT("Brickout"); - LSTR MSG_INVADERS = _UxGT("Invaders"); - LSTR MSG_SNAKE = _UxGT("Sn4k3"); - LSTR MSG_MAZE = _UxGT("Maze"); - - LSTR MSG_BAD_PAGE = _UxGT("ungült. Seitenzahl"); - LSTR MSG_BAD_PAGE_SPEED = _UxGT("ungült. Seitengeschw."); - - LSTR MSG_EDIT_PASSWORD = _UxGT("Passwort bearbeiten"); - LSTR MSG_LOGIN_REQUIRED = _UxGT("Login erforderlich"); - LSTR MSG_PASSWORD_SETTINGS = _UxGT("Passwort Einstellungen"); - LSTR MSG_ENTER_DIGIT = _UxGT("PIN eingeben"); - LSTR MSG_CHANGE_PASSWORD = _UxGT("Passwort ändern"); - LSTR MSG_REMOVE_PASSWORD = _UxGT("Passwort löschen"); - LSTR MSG_PASSWORD_SET = _UxGT("Passwort ist "); - LSTR MSG_START_OVER = _UxGT("von vorn beginnen"); - LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Bald speichern!"); - LSTR MSG_PASSWORD_REMOVED = _UxGT("Passwort gelöscht"); - - // - // Die Filament-Change-Bildschirme können bis zu 2 Zeilen auf einem 3-Zeilen-Display. - // - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Klick zum Fortsetzen")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Pausiert...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Bitte warten...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Laden und Klick")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Klick zum Heizen")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Heizen...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Entnehmen...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Laden...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Spülen...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Klick zum beenden", "der Düsenspülung")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Fortsetzen...")); - - LSTR MSG_TMC_DRIVERS = _UxGT("TMC Treiber"); // Max length 18 characters - LSTR MSG_TMC_CURRENT = _UxGT("Treiber Strom"); - LSTR MSG_TMC_HYBRID_THRS = _UxGT("Hybrid threshold"); - LSTR MSG_TMC_HOMING_THRS = _UxGT("Sensorloses Homing"); - LSTR MSG_TMC_STEPPING_MODE = _UxGT("Schrittmodus"); - LSTR MSG_TMC_STEALTHCHOP = _UxGT("StealthChop"); - - LSTR MSG_SERVICE_RESET = _UxGT("Reset"); - LSTR MSG_SERVICE_IN = _UxGT(" im:"); - LSTR MSG_BACKLASH = _UxGT("Spiel"); - LSTR MSG_BACKLASH_CORRECTION = _UxGT("Korrektur"); - LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Glätten"); - - LSTR MSG_LEVEL_X_AXIS = _UxGT("X Achse leveln"); - LSTR MSG_AUTO_CALIBRATE = _UxGT("Auto. Kalibiren"); - LSTR MSG_FTDI_HEATER_TIMEOUT = _UxGT("Idle Timeout, Temperatur gefallen. Drücke Okay, um erneut aufzuheizen und fortzufahren."); - LSTR MSG_HEATER_TIMEOUT = _UxGT("Heizungs Timeout"); - LSTR MSG_REHEAT = _UxGT("Erneut aufheizen"); - LSTR MSG_REHEATING = _UxGT("Erneut aufhei. ..."); - LSTR MSG_REHEATDONE = _UxGT("Aufwärmen fertig"); - - LSTR MSG_PROBE_WIZARD = _UxGT("Sonden-Assistent"); - LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Sonden-Bezug"); - LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Bewege zur Position"); - - LSTR MSG_XATC = _UxGT("X-Verdreh-Assistent"); - LSTR MSG_XATC_DONE = _UxGT("X-Verdreh-Assi fertig!"); - LSTR MSG_XATC_UPDATE_Z_OFFSET = _UxGT("Z-Versatz Sonde akt. auf "); - - LSTR MSG_SOUND = _UxGT("Ton"); - - LSTR MSG_TOP_LEFT = _UxGT("Oben Links"); - LSTR MSG_BOTTOM_LEFT = _UxGT("Unten Links"); - LSTR MSG_TOP_RIGHT = _UxGT("Oben Rechts"); - LSTR MSG_BOTTOM_RIGHT = _UxGT("Unten Rechts"); - LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Kalibrierung beendet"); - LSTR MSG_CALIBRATION_FAILED = _UxGT("Kalibrierung geschei."); - - LSTR MSG_DRIVER_BACKWARD = _UxGT(" Driver zurück"); - - LSTR MSG_SD_CARD = _UxGT("SD Karte"); - LSTR MSG_USB_DISK = _UxGT("USB Disk"); - - LSTR MSG_HOST_SHUTDOWN = _UxGT("Host abschalten"); - - // DGUS-Specific message strings, not used elsewhere - LSTR DGUS_MSG_TEMP_TOO_HIGH = _UxGT("Temperatur zu hoch."); - - LSTR MSG_SHORT_DAY = _UxGT("t"); // One character only - LSTR MSG_SHORT_HOUR = _UxGT("h"); // One character only - LSTR MSG_SHORT_MINUTE = _UxGT("m"); // One character only + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" bereit"); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = _UxGT("Medium erkannt"); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = _UxGT("Medium entfernt"); // (MEDIA_TYPE_EN) Removed + LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstopp"); // Endstops + LSTR MSG_MAIN_MENU = _UxGT("Hauptmenü"); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("Motoren deaktivieren"); // Disable Steppers + LSTR MSG_HOMING = _UxGT("Homing"); // Homing + LSTR MSG_AUTO_HOME = _UxGT("Auto Home"); // Auto Home + LSTR MSG_AUTO_HOME_X = _UxGT("Home X"); // Home X + LSTR MSG_AUTO_HOME_Y = _UxGT("Home Y"); // Home Y + LSTR MSG_AUTO_HOME_Z = _UxGT("Home Z"); // Home Z + LSTR MSG_LEVEL_BED_HOMING = _UxGT("XYZ homen"); // Homing XYZ + LSTR MSG_LEVEL_BED_WAITING = _UxGT("Klick zum Starten"); // Click to Begin + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Nächste Koordinate"); // Next Point + LSTR MSG_LEVEL_BED_DONE = _UxGT("Nivellieren fertig!"); // Leveling Done! + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Setze Homeversatz"); // Set Home Offsets + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Homeversatz aktiv"); // Offsets Applied + LSTR MSG_PREHEAT_1 = PREHEAT_1_LABEL _UxGT(" Vorwärmen"); // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = PREHEAT_1_LABEL _UxGT(" Vorwärmen ~"); // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = PREHEAT_1_LABEL _UxGT(" Extr. Vorwärmen"); // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = PREHEAT_1_LABEL _UxGT(" Extr. Vorwärm. ~"); // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_1_ALL = PREHEAT_1_LABEL _UxGT(" Alles Vorwärmen"); // Preheat (PREHEAT_1_LABEL) All + LSTR MSG_PREHEAT_1_BEDONLY = PREHEAT_1_LABEL _UxGT(" Bett Vorwärmen"); // Preheat (PREHEAT_1_LABEL) Bed + LSTR MSG_PREHEAT_1_SETTINGS = PREHEAT_1_LABEL _UxGT(" Einstellungen"); // Preheat (PREHEAT_1_LABEL) Conf + LSTR MSG_PREHEAT_M = _UxGT("$ Vorwärmen"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("$ Vorwärmen ~"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("$ Extr. Vorwärmen"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("$ Extr. Vorwärm. ~"); // Preheat $ End ~ + LSTR MSG_PREHEAT_M_ALL = _UxGT("$ Alles Vorwärmen"); // Preheat $ All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("$ Bett Vorwärmen"); // Preheat $ Bed + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("$ Einstellungen"); // Preheat $ Conf + LSTR MSG_COOLDOWN = _UxGT("Abkühlen"); // Cooldown + LSTR MSG_SWITCH_PS_ON = _UxGT("Netzteil ein"); // Switch Power On + LSTR MSG_SWITCH_PS_OFF = _UxGT("Netzteil aus"); // Switch Power Off + LSTR MSG_EXTRUDE = _UxGT("Extrudieren"); // Extrude + LSTR MSG_RETRACT = _UxGT("Einzug"); // Retract + LSTR MSG_MOVE_AXIS = _UxGT("Achsen bewegen"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("Sonden nivellieren"); // Probe and Level + LSTR MSG_BED_LEVELING = _UxGT("Bett-Nivellierung"); // Bed Leveling + LSTR MSG_LEVEL_BED = _UxGT("Bett nivellieren"); // Level Bed + LSTR MSG_MOVE_X = _UxGT("Bewege X"); // Move X + LSTR MSG_MOVE_Y = _UxGT("Bewege Y"); // Move Y + LSTR MSG_MOVE_Z = _UxGT("Bewege Z"); // Move Z + LSTR MSG_MOVE_N = _UxGT("Bewege @"); // Move @ + LSTR MSG_MOVE_E = _UxGT("Bewege Extruder"); // Move Extruder + LSTR MSG_MOVE_EN = _UxGT("Bewege Extruder *"); // Move * + LSTR MSG_MOVE_N_MM = _UxGT("Bewege $mm"); // Move $mm + LSTR MSG_MOVE_N_IN = _UxGT("Bewege $in"); // Move $in + LSTR MSG_MOVE_N_DEG = _UxGT("Bewege $") LCD_STR_DEGREE; // Move $(LCD_STR_DEGREE) + LSTR MSG_SPEED = _UxGT("Geschw."); // Speed + LSTR MSG_MESH_Z_OFFSET = _UxGT("Bett Z"); // Bed Z + LSTR MSG_NOZZLE = _UxGT("Düse"); // Nozzle + LSTR MSG_NOZZLE_N = _UxGT("Düse ~"); // Nozzle ~ + LSTR MSG_BED = _UxGT("Bett"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("Lüfter"); // Fan Speed + LSTR MSG_FAN_SPEED_N = _UxGT("Lüfter ~"); // Fan Speed ~ + LSTR MSG_FLOW = _UxGT("Flussrate"); // Flow + LSTR MSG_FLOW_N = _UxGT("Flussrate ~"); // Flow ~ + LSTR MSG_CONTROL = _UxGT("Einstellungen"); // Control + LSTR MSG_AUTOTEMP = _UxGT("Auto Temperatur"); // Autotemp + LSTR MSG_SELECT_E = _UxGT("Auswählen *"); // Select * + LSTR MSG_ACC = _UxGT("Beschleunigung"); // Accel + LSTR MSG_VTRAV_MIN = _UxGT("V min Leerfahrt"); // Min Travel Speed + LSTR MSG_ACCELERATION = _UxGT("Beschleunigung"); // Acceleration + LSTR MSG_AMAX_A = _UxGT("A max ") STR_A; // Max (STR_A) Accel + LSTR MSG_AMAX_B = _UxGT("A max ") STR_B; // Max (STR_B) Accel + LSTR MSG_AMAX_C = _UxGT("A max ") STR_C; // Max (STR_C) Accel + LSTR MSG_AMAX_N = _UxGT("A max @"); // Max @ Accel + LSTR MSG_AMAX_E = _UxGT("A max ") STR_E; // Max E Accel + LSTR MSG_AMAX_EN = _UxGT("A max *"); // Max * Accel + LSTR MSG_A_RETRACT = _UxGT("A Einzug"); // Retract Accel + LSTR MSG_A_TRAVEL = _UxGT("A Leerfahrt"); // Travel Accel + LSTR MSG_STEPS_PER_MM = _UxGT("Steps/mm"); // Steps/mm + LSTR MSG_A_STEPS = STR_A _UxGT(" Steps/mm"); // (STR_A) Steps/mm + LSTR MSG_B_STEPS = STR_B _UxGT(" Steps/mm"); // (STR_B) Steps/mm + LSTR MSG_C_STEPS = STR_C _UxGT(" Steps/mm"); // (STR_C) Steps/mm + LSTR MSG_N_STEPS = _UxGT("@ Steps/mm"); // @ steps/mm + LSTR MSG_E_STEPS = _UxGT("E Steps/mm"); // E steps/mm + LSTR MSG_EN_STEPS = _UxGT("* Steps/mm"); // * Steps/mm + LSTR MSG_TEMPERATURE = _UxGT("Temperatur"); // Temperature + LSTR MSG_MOTION = _UxGT("Bewegung"); // Motion + LSTR MSG_FILAMENT = _UxGT("Filament"); // Filament + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm") SUPERSCRIPT_THREE; // E in mm(SUPERSCRIPT_THREE) + LSTR MSG_FILAMENT_DIAM = _UxGT("Filamentdurchmesser"); // Fil. Dia. + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Filamentdurchmesser *"); // Fil. Dia. * + LSTR MSG_CONTRAST = _UxGT("LCD-Kontrast"); // LCD Contrast + LSTR MSG_STORE_EEPROM = _UxGT("Konfig. speichern"); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("Konfig. laden"); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("Standardwerte laden"); // Restore Defaults + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Aktualisieren"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT("Info"); // Info Screen + LSTR MSG_PREPARE = _UxGT("Vorbereitung"); // Prepare + LSTR MSG_TUNE = _UxGT("Justierung"); // Tune + LSTR MSG_PAUSE_PRINT = _UxGT("SD-Druck pausieren"); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("SD-Druck fortsetzen"); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("SD-Druck abbrechen"); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("Druck vom Medium"); // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = _UxGT("Kein Medium"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_DWELL = _UxGT("Warten..."); // Sleep... + LSTR MSG_USERWAIT = _UxGT("Klick zum Fortsetzen"); // Click to Resume... + LSTR MSG_PRINT_ABORTED = _UxGT("Druck abgebrochen"); // Print Aborted + LSTR MSG_NO_MOVE = _UxGT("Motoren angeschaltet"); // No Move. + LSTR MSG_KILLED = _UxGT("ABGEBROCHEN"); // KILLED. + LSTR MSG_STOPPED = _UxGT("ANGEHALTEN"); // STOPPED. + LSTR MSG_CONTROL_RETRACT = _UxGT("Einzug mm"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Wechs. Einzug mm"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACTF = _UxGT("V Einzug"); // Retract V + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Z-Sprung mm"); // Hop mm + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Unretr. mm"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Wechs. Unretr. mm"); // S Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Unretract V"); // Unretract V + LSTR MSG_AUTORETRACT = _UxGT("Autom. Einzug"); // Auto-Retract + LSTR MSG_FILAMENTCHANGE = _UxGT("Filament wechseln"); // Change Filament + LSTR MSG_FILAMENTCHANGE_E = _UxGT("Filament wechseln *"); // Change * Filament + LSTR MSG_ATTACH_MEDIA = _UxGT("SD initial."); // Attach (MEDIA_TYPE_EN) + LSTR MSG_ATTACH_SD = _UxGT("SD initial."); // Attach SD Card + LSTR MSG_ATTACH_USB = _UxGT("USB initial."); // Attach USB Drive + LSTR MSG_CHANGE_MEDIA = _UxGT("Medium getauscht"); // Refresh (MEDIA_TYPE_EN) + LSTR MSG_RUN_AUTOFILES = _UxGT("Autostart"); // Run Autofiles + LSTR MSG_ZPROBE_OUT = _UxGT("Z-Sonde außerhalb"); // Z Probe Past Bed + LSTR MSG_BLTOUCH_RESET = _UxGT("Zurücksetzen"); // Reset + LSTR MSG_ZPROBE_XOFFSET = _UxGT("Sondenversatz X"); // Probe X Offset + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Sondenversatz Y"); // Probe Y Offset + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Sondenversatz Z"); // Probe Z Offset + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Sondenversatz @"); // Probe @ Offset + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Z Offset mit Pas"); // Babystep Probe Z + LSTR MSG_BABYSTEP_X = _UxGT("Babystep X"); // Babystep X + LSTR MSG_BABYSTEP_Y = _UxGT("Babystep Y"); // Babystep Y + LSTR MSG_BABYSTEP_Z = _UxGT("Babystep Z"); // Babystep Z + LSTR MSG_BABYSTEP_N = _UxGT("Babystep @"); // Babystep @ + LSTR MSG_ENDSTOP_ABORT = _UxGT("Abbr. mit Endstopp"); // Endstop Abort + LSTR MSG_ERR_HEATING_FAILED = _UxGT("HEIZEN ERFOLGLOS"); // Heating Failed + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("REDUND. TEMP-ABWEI."); // Err: REDUNDANT TEMP + LSTR MSG_ERR_THERMAL_RUNAWAY = " " LCD_STR_THERMOMETER _UxGT(" NICHT ERREICHT"); // THERMAL RUNAWAY + LSTR MSG_ERR_MAXTEMP = " " LCD_STR_THERMOMETER _UxGT(" ÜBERSCHRITTEN"); // Err: MAXTEMP + LSTR MSG_ERR_MINTEMP = " " LCD_STR_THERMOMETER _UxGT(" UNTERSCHRITTEN"); // Err: MINTEMP + LSTR MSG_HALTED = _UxGT("DRUCKER GESTOPPT"); // PRINTER HALTED + LSTR MSG_PLEASE_RESET = _UxGT("Bitte neustarten"); // Please Reset + LSTR MSG_HEATING = _UxGT("heizt..."); // Heating... + LSTR MSG_BED_HEATING = _UxGT("Bett heizt..."); // Bed Heating... + LSTR MSG_DELTA_CALIBRATE = _UxGT("Delta kalibrieren"); // Delta Calibration + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Kalibriere X"); // Calibrate X + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Kalibriere Y"); // Calibrate Y + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Kalibriere Z"); // Calibrate Z + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Kalibriere Mitte"); // Calibrate Center + LSTR MSG_INFO_MENU = _UxGT("Über den Drucker"); // About Printer + LSTR MSG_INFO_PRINTER_MENU = _UxGT("Drucker-Info"); // Printer Info + LSTR MSG_INFO_STATS_MENU = _UxGT("Drucker-Statistik"); // Stats + LSTR MSG_INFO_BOARD_MENU = _UxGT("Board-Info"); // Board Info + LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Thermistoren"); // Thermistors + LSTR MSG_INFO_EXTRUDERS = _UxGT("Extruder"); // Extruders + LSTR MSG_INFO_BAUDRATE = _UxGT("Baudrate"); // Baud + LSTR MSG_INFO_PROTOCOL = _UxGT("Protokoll"); // Protocol + LSTR MSG_CASE_LIGHT = _UxGT("Beleuchtung"); // Case Light + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Drucke"); // Prints + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Komplette"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Gesamte"); // Total + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Längste"); // Longest + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extrud."); // Extruded + LSTR MSG_INFO_MIN_TEMP = _UxGT("Min Temp"); // Min Temp + LSTR MSG_INFO_MAX_TEMP = _UxGT("Max Temp"); // Max Temp + LSTR MSG_INFO_PSU = _UxGT("Netzteil"); // PSU + LSTR MSG_DRIVE_STRENGTH = _UxGT("Motorleistung"); // Drive Strength + LSTR MSG_DAC_EEPROM_WRITE = _UxGT("Werte speichern"); // DAC EEPROM Write + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Druck weiter"); // Continue + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Bitte warten...")); // |Please wait... + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Laden und Klick")); // |Insert and Click + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Entnehmen...")); // |Ejecting... + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Laden...")); // |Loading... + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Fortsetzen...")); // |Resuming... + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" min"); // (LCD_STR_THERMOMETER) Min + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" max"); // (LCD_STR_THERMOMETER) Max + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Faktor"); // (LCD_STR_THERMOMETER) Fact + LSTR MSG_LCD_ON = _UxGT("an"); // On + LSTR MSG_LCD_OFF = _UxGT("aus"); // Off + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Falscher Drucker"); // INCORRECT PRINTER + LSTR MSG_DEBUG_MENU = _UxGT("Debug-Menü"); // Debug Menu + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Statusbalken-Test"); // Progress Bar Test + LSTR MSG_MOVING = _UxGT("In Bewegung..."); // Moving... + LSTR MSG_FREE_XY = _UxGT("Abstand XY"); // Free XY + LSTR MSG_HOME_FIRST = _UxGT("Vorher %s homen"); // Home %s First + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Heizen...")); // |Heating... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Klick zum Heizen")); // |Click to heat + LSTR MSG_YES = _UxGT("JA"); // YES + LSTR MSG_NO = _UxGT("NEIN"); // NO + LSTR MSG_BACK = _UxGT("Zurück"); // Back + LSTR MSG_MEDIA_ABORTING = _UxGT("Abbruch..."); // Aborting... + LSTR MSG_MEDIA_READ_ERROR = _UxGT("Medium Lesefehler"); // (MEDIA_TYPE_EN) read error + LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB Gerät entfernt"); // USB device removed + LSTR MSG_USB_FD_USB_FAILED = _UxGT("USB Start fehlge."); // USB start failed + LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Software-Endstopp"); // Soft Endstops + LSTR MSG_ADVANCED_SETTINGS = _UxGT("Erw. Einstellungen"); // Advanced Settings + LSTR MSG_CONFIGURATION = _UxGT("Konfiguration"); // Configuration + LSTR MSG_AUTO_Z_ALIGN = _UxGT("Z-Achsen ausgleichen"); // Auto Z-Align + LSTR MSG_Z_FADE_HEIGHT = _UxGT("Ausblendhöhe"); // Fade Height + LSTR MSG_PREHEAT_CUSTOM = _UxGT("benutzerdef. Heizen"); // Preheat Custom + LSTR MSG_LASER_MENU = _UxGT("Laser"); // Laser Control + LSTR MSG_LASER_POWER = _UxGT("Laserleistung"); // Laser Power + LSTR MSG_SPINDLE_MENU = _UxGT("Spindel-Steuerung"); // Spindle Control + LSTR MSG_SPINDLE_POWER = _UxGT("Spindelleistung"); // Spindle Pwr + LSTR MSG_SPINDLE_REVERSE = _UxGT("Spindelrichtung"); // Spindle Reverse + LSTR MSG_BED_TRAMMING = _UxGT("Bett ausrichten"); // Bed Tramming + LSTR MSG_NEXT_CORNER = _UxGT("Nächste Ecke"); // Next Corner + LSTR MSG_MESH_EDITOR = _UxGT("Netz Editor"); // Mesh Editor + LSTR MSG_EDIT_MESH = _UxGT("Netz bearbeiten"); // Edit Mesh + LSTR MSG_EDITING_STOPPED = _UxGT("Netzbearb. angeh."); // Mesh Editing Stopped + LSTR MSG_PROBING_POINT = _UxGT("Messpunkt"); // Probing Point + LSTR MSG_MESH_X = _UxGT("Index X"); // Index X + LSTR MSG_MESH_Y = _UxGT("Index Y"); // Index Y + LSTR MSG_MESH_EDIT_Z = _UxGT("Z-Wert"); // Z Value + LSTR MSG_CUSTOM_COMMANDS = _UxGT("Benutzer-Menü"); // Custom Commands + LSTR MSG_M48_TEST = _UxGT("M48 Sondentest"); // M48 Probe Test + LSTR MSG_M48_POINT = _UxGT("M48 Punkt"); // M48 Point + LSTR MSG_M48_DEVIATION = _UxGT("Abweichung"); // Deviation + LSTR MSG_IDEX_MENU = _UxGT("IDEX-Modus"); // IDEX Mode + LSTR MSG_OFFSETS_MENU = _UxGT("Werkzeugversätze"); // Tool Offsets + LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Autom. parken"); // Auto-Park + LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplizieren"); // Duplication + LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Spiegelkopie"); // Mirrored Copy + LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("vollstä. Kontrolle"); // Full Control + LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2. Düse Z"); // 2nd Nozzle Z + LSTR MSG_HOTEND_OFFSET_N = _UxGT("2. Düse @"); // 2nd Nozzle @ + LSTR MSG_UBL_DOING_G29 = _UxGT("G29 ausführen"); // Doing G29 + LSTR MSG_UBL_TOOLS = _UxGT("UBL-Werkzeuge"); // UBL Tools + LSTR MSG_LCD_TILTING_MESH = _UxGT("Berührungspunkt"); // Tilting Point + LSTR MSG_UBL_MANUAL_MESH = _UxGT("Netz manuell erst."); // Manually Build Mesh + LSTR MSG_UBL_BC_INSERT = _UxGT("Unterlegen & messen"); // Place Shim & Measure + LSTR MSG_UBL_BC_INSERT2 = _UxGT("Messen"); // Measure + LSTR MSG_UBL_BC_REMOVE = _UxGT("Entfernen & messen"); // Remove & Measure Bed + LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Nächster Punkt..."); // Moving to next + LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Betttemperatur"); // Bed Temp + LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Betttemperatur"); // Bed Temp + LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Hotend-Temp."); // Hotend Temp + LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Hotend-Temp."); // Hotend Temp + LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Eigenes Netz bearb."); // Edit Custom Mesh + LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Feineinstellung..."); // Fine Tuning Mesh + LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Bearbeitung beendet"); // Done Editing Mesh + LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Eigenes Netz erst."); // Build Custom Mesh + LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Netz erstellen"); // Build Mesh + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("$ Netz erstellen"); // Build Mesh ($) + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("$ Netz validieren"); // Validate Mesh ($) + LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Netz erstellen kalt"); // Build Cold Mesh + LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Netzhöhe einst."); // Adjust Mesh Height + LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Höhe"); // Height Amount + LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Netz validieren"); // Validate Mesh + LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Eig. Netz validieren"); // Validate Custom Mesh + LSTR MSG_G26_HEATING_BED = _UxGT("G26 heizt Bett"); // G26 Heating Bed + LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 Düse aufheizen"); // G26 Heating Nozzle + LSTR MSG_G26_MANUAL_PRIME = _UxGT("Manuell Prime..."); // Manual priming... + LSTR MSG_G26_FIXED_LENGTH = _UxGT("Feste Länge Prime"); // Fixed Length Prime + LSTR MSG_G26_PRIME_DONE = _UxGT("Priming fertig"); // Done Priming + LSTR MSG_G26_CANCELED = _UxGT("G26 abgebrochen"); // G26 Canceled + LSTR MSG_G26_LEAVING = _UxGT("G26 verlassen"); // Leaving G26 + LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Netzerst. forts."); // Continue Bed Mesh + LSTR MSG_UBL_MESH_LEVELING = _UxGT("Netz-Nivellierung"); // Mesh Leveling + LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-Punkt-Nivell."); // 3-Point Leveling + LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Gitternetz-Nivell."); // Grid Mesh Leveling + LSTR MSG_UBL_MESH_LEVEL = _UxGT("Netz nivellieren"); // Level Mesh + LSTR MSG_UBL_SIDE_POINTS = _UxGT("Eckpunkte"); // Side Points + LSTR MSG_UBL_MAP_TYPE = _UxGT("Kartentyp"); // Map Type + LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Karte ausgeben"); // Output Mesh Map + LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Ausgabe für Host"); // Output for Host + LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Ausgabe für CSV"); // Output for CSV + LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Externe Sicherung"); // Off Printer Backup + LSTR MSG_UBL_INFO_UBL = _UxGT("UBL-Info ausgeben"); // Output UBL Info + LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Menge an Füllung"); // Fill-in Amount + LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Manuelles Füllen"); // Manual Fill-in + LSTR MSG_UBL_SMART_FILLIN = _UxGT("Cleveres Füllen"); // Smart Fill-in + LSTR MSG_UBL_FILLIN_MESH = _UxGT("Netz Füllen"); // Fill-in Mesh + LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Alles annullieren"); // Invalidate All + LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Nächstlieg. ann."); // Invalidate Closest + LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Feineinst. Alles"); // Fine Tune All + LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Feineinst. Nächstl."); // Fine Tune Closest + LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Netz-Speicherplatz"); // Mesh Storage + LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Speicherort"); // Memory Slot + LSTR MSG_UBL_LOAD_MESH = _UxGT("Bettnetz laden"); // Load Bed Mesh + LSTR MSG_UBL_SAVE_MESH = _UxGT("Bettnetz speichern"); // Save Bed Mesh + LSTR MSG_MESH_LOADED = _UxGT("Netz %i geladen"); // Mesh %i Loaded + LSTR MSG_MESH_SAVED = _UxGT("Netz %i gespeichert"); // Mesh %i Saved + LSTR MSG_UBL_NO_STORAGE = _UxGT("Kein Speicher"); // No Storage + LSTR MSG_UBL_SAVE_ERROR = _UxGT("Err:UBL speichern"); // UBL Save Error + LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Err:UBL wiederherst."); // UBL Restore Error + LSTR MSG_UBL_Z_OFFSET = _UxGT("Z-Versatz: "); // Z-Offset: + LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Z-Versatz angehalten"); // Z-Offset Stopped + LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("Schrittweises UBL"); // Step-By-Step UBL + LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Netz kalt erstellen"); // 1. Build Cold Mesh + LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2.Intelligent Füllen"); // 2. Smart Fill-in + LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Netz validieren"); // 3. Validate Mesh + LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Alles Feineinst."); // 4. Fine Tune All + LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Netz validieren"); // 5. Validate Mesh + LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Alles Feineinst."); // 6. Fine Tune All + LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Bettnetz speichern"); // 7. Save Bed Mesh + LSTR MSG_LED_CONTROL = _UxGT("Licht-Steuerung"); // LED Control + LSTR MSG_LIGHTS = _UxGT("Licht"); // Lights + LSTR MSG_LIGHT_N = _UxGT("Lichter #{"); // Light #{ + LSTR MSG_LED_PRESETS = _UxGT("Licht-Einstellung"); // Light Presets + LSTR MSG_SET_LEDS_RED = _UxGT("Rot"); // Red + LSTR MSG_SET_LEDS_ORANGE = _UxGT("Orange"); // Orange + LSTR MSG_SET_LEDS_YELLOW = _UxGT("Gelb"); // Yellow + LSTR MSG_SET_LEDS_GREEN = _UxGT("Grün"); // Green + LSTR MSG_SET_LEDS_BLUE = _UxGT("Blau"); // Blue + LSTR MSG_SET_LEDS_INDIGO = _UxGT("Indigo"); // Indigo + LSTR MSG_SET_LEDS_VIOLET = _UxGT("Violett"); // Violet + LSTR MSG_SET_LEDS_WHITE = _UxGT("Weiß"); // White + LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Standard"); // Default + LSTR MSG_CUSTOM_LEDS = _UxGT("Benutzerdefiniert"); // Custom Lights + LSTR MSG_INTENSITY_R = _UxGT("Intensität Rot"); // Red Intensity + LSTR MSG_INTENSITY_G = _UxGT("Intensität Grün"); // Green Intensity + LSTR MSG_INTENSITY_B = _UxGT("Intensität Blau"); // Blue Intensity + LSTR MSG_INTENSITY_W = _UxGT("Intensität Weiß"); // White Intensity + LSTR MSG_LED_BRIGHTNESS = _UxGT("Helligkeit"); // Brightness + LSTR MSG_HOTEND_TOO_COLD = _UxGT("Hotend zu kalt"); // Hotend too cold + LSTR MSG_CHAMBER = _UxGT("Gehäuse"); // Enclosure + LSTR MSG_STORED_FAN_N = _UxGT("Gespeich. Lüfter ~"); // Stored Fan ~ + LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Geschw. Extralüfter"); // Extra Fan Speed + LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Geschw. Extralüfter ~"); // Extra Fan Speed ~ + LSTR MSG_PID_AUTOTUNE = _UxGT("PID Autotune"); // PID Autotune + LSTR MSG_PID_AUTOTUNE_E = _UxGT("PID Autotune *"); // Autotune * PID + LSTR MSG_JERK = _UxGT("Jerk"); // Jerk + LSTR MSG_VA_JERK = _UxGT("Max ") STR_A _UxGT(" Jerk"); // Max (STR_A) Jerk + LSTR MSG_VB_JERK = _UxGT("Max ") STR_B _UxGT(" Jerk"); // Max (STR_B) Jerk + LSTR MSG_VC_JERK = _UxGT("Max ") STR_C _UxGT(" Jerk"); // Max (STR_C) Jerk + LSTR MSG_VN_JERK = _UxGT("Max @ Jerk"); // Max @ Jerk + LSTR MSG_VE_JERK = _UxGT("Max ") STR_E _UxGT(" Jerk"); // Max E Jerk + LSTR MSG_JUNCTION_DEVIATION = _UxGT("Junction Dev"); // Junction Dev + LSTR MSG_MAX_SPEED = _UxGT("Max Geschw. (mm/s)"); // Max Speed (mm/s) + LSTR MSG_VMAX_A = _UxGT("V max ") STR_A; // Max (STR_A) Speed + LSTR MSG_VMAX_B = _UxGT("V max ") STR_B; // Max (STR_B) Speed + LSTR MSG_VMAX_C = _UxGT("V max ") STR_C; // Max (STR_C) Speed + LSTR MSG_VMAX_N = _UxGT("V max @"); // Max @ Speed + LSTR MSG_VMAX_E = _UxGT("V max ") STR_E; // Max E Speed + LSTR MSG_VMAX_EN = _UxGT("V max *"); // Max * Speed + LSTR MSG_VMIN = _UxGT("V min "); // Min Velocity + LSTR MSG_FILAMENT_UNLOAD = _UxGT("Entladen mm"); // Unload mm + LSTR MSG_FILAMENT_LOAD = _UxGT("Laden mm"); // Load mm + LSTR MSG_ADVANCE_K = _UxGT("Vorschubfaktor"); // Advance K + LSTR MSG_ADVANCE_K_E = _UxGT("Vorschubfaktor *"); // Advance K * + LSTR MSG_INIT_EEPROM = _UxGT("Werkseinstellungen"); // Initialize EEPROM + LSTR MSG_MEDIA_UPDATE = _UxGT("FW Update vom Medium"); // (MEDIA_TYPE_EN) Update + LSTR MSG_RESET_PRINTER = _UxGT("Drucker neustarten"); // Reset Printer + LSTR MSG_START_PRINT = _UxGT("Starte Druck"); // Start Print + LSTR MSG_BUTTON_NEXT = _UxGT("Weiter"); // Next + LSTR MSG_BUTTON_INIT = _UxGT("Bestätigen"); // Init + LSTR MSG_BUTTON_STOP = _UxGT("Stop"); // Stop + LSTR MSG_BUTTON_PRINT = _UxGT("Drucken"); // Print + LSTR MSG_BUTTON_RESET = _UxGT("Reseten"); // Reset + LSTR MSG_BUTTON_CANCEL = _UxGT("Abbrechen"); // Cancel + LSTR MSG_BUTTON_DONE = _UxGT("Fertig"); // Done + LSTR MSG_BUTTON_BACK = _UxGT("Zurück"); // Back + LSTR MSG_BUTTON_PROCEED = _UxGT("Weiter"); // Proceed + LSTR MSG_PRINTING_OBJECT = _UxGT("Objekt drucken"); // Print Obj + LSTR MSG_CANCEL_OBJECT = _UxGT("Objekt abbrechen"); // Cancel Obj + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Objekt abbrechen {"); // Cancel Obj { + LSTR MSG_OUTAGE_RECOVERY = _UxGT("Wiederh. n. Stroma."); // Power Outage + LSTR MSG_PRINT_PAUSED = _UxGT("Druck pausiert..."); // Print Paused + LSTR MSG_PRINTING = _UxGT("Druckt..."); // Printing... + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V"); // S UnRet V + LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Einzugslänge"); // Swap Length + LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Entladelänge"); // Purge Length + LSTR MSG_TOOL_CHANGE = _UxGT("Werkzeugwechsel"); // Tool Change + LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Z anheben"); // Z Raise + LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Prime-Geschwin."); // Prime Speed + LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Einzug-Geschwin."); // Retract Speed + LSTR MSG_NOZZLE_STANDBY = _UxGT("Düse bereit"); // Nozzle Standby + LSTR MSG_FILAMENTLOAD = _UxGT("Filament laden"); // Load Filament + LSTR MSG_FILAMENTLOAD_E = _UxGT("Filament laden *"); // Load * Filament + LSTR MSG_FILAMENTUNLOAD = _UxGT("Filament entladen"); // Unload Filament + LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Filament entladen *"); // Unload * Filament + LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Alles entladen"); // Unload All + LSTR MSG_RELEASE_MEDIA = _UxGT("Medium freigeben"); // Release (MEDIA_TYPE_EN) + LSTR MSG_SKEW_FACTOR = _UxGT("Korrekturfaktor"); // Skew Factor + LSTR MSG_BLTOUCH = _UxGT("BLTouch"); // BLTouch + LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Selbsttest"); // Self-Test + LSTR MSG_BLTOUCH_STOW = _UxGT("Einfahren"); // Stow + LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Ausfahren"); // Deploy + LSTR MSG_BLTOUCH_SW_MODE = _UxGT("SW-Modus"); // SW-Mode + LSTR MSG_BLTOUCH_5V_MODE = _UxGT("5V-Modus"); // 5V-Mode + LSTR MSG_BLTOUCH_OD_MODE = _UxGT("OD-Modus"); // OD-Mode + LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("Mode-Store"); // Mode-Store + LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Setze auf 5V"); // Set BLTouch to 5V + LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Setze auf OD"); // Set BLTouch to OD + LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Modus: "); // Report Drain + LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("ACHTUNG: Falsche Einstellung - kann zu Beschädigung führen! Fortfahren?"); // DANGER: Bad settings can cause damage! Proceed anyway? + LSTR MSG_TOUCHMI_PROBE = _UxGT("TouchMI"); // TouchMI + LSTR MSG_TOUCHMI_INIT = _UxGT("TouchMI initial."); // Init TouchMI + LSTR MSG_TOUCHMI_ZTEST = _UxGT("Test Z-Versatz"); // Z Offset Test + LSTR MSG_TOUCHMI_SAVE = _UxGT("Speichern"); // Save + LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("TouchMI ausfahren"); // Deploy TouchMI + LSTR MSG_MANUAL_DEPLOY = _UxGT("Z-Sonde ausfahren"); // Deploy Z-Probe + LSTR MSG_MANUAL_STOW = _UxGT("Z-Sonde einfahren"); // Stow Z-Probe + LSTR MSG_BABYSTEP_TOTAL = _UxGT("Total"); // Total + LSTR MSG_COOLING = _UxGT("kühlt..."); // Cooling... + LSTR MSG_BED_COOLING = _UxGT("Bett kühlt..."); // Bed Cooling... + LSTR MSG_CHAMBER_HEATING = _UxGT("Gehäuse heizt..."); // Chamber Heating... + LSTR MSG_CHAMBER_COOLING = _UxGT("Gehäuse kühlt..."); // Chamber Cooling... + LSTR MSG_DELTA_SETTINGS = _UxGT("Delta Einst. anzeig."); // Delta Settings + LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Autom. Kalibrierung"); // Auto Calibration + LSTR MSG_DELTA_DIAG_ROD = _UxGT("Diag Rod"); // Diag Rod + LSTR MSG_DELTA_HEIGHT = _UxGT("Höhe"); // Height + LSTR MSG_DELTA_RADIUS = _UxGT("Radius"); // Radius + LSTR MSG_3POINT_LEVELING = _UxGT("3-Punkt-Nivellierung"); // 3-Point Leveling + LSTR MSG_LINEAR_LEVELING = _UxGT("Lineare Nivellierung"); // Linear Leveling + LSTR MSG_BILINEAR_LEVELING = _UxGT("Bilineare Nivell."); // Bilinear Leveling + LSTR MSG_UBL_LEVELING = _UxGT("Einheit. Bettnivell."); // Unified Bed Leveling + LSTR MSG_MESH_LEVELING = _UxGT("Netz-Nivellierung"); // Mesh Leveling + LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Runaway Watch: AUS"); // Runaway Watch: OFF + LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Runaway Watch: AN"); // Runaway Watch: ON + LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Helligkeit"); // Light Brightness + LSTR MSG_DAC_PERCENT_N = _UxGT("@ Treiber %"); // @ Driver % + LSTR MSG_ERROR_TMC = _UxGT("TMC Verbindungsfehler"); // TMC CONNECTION ERROR + LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("FILAMENT WECHSEL"); // FILAMENT CHANGE + LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("DRUCK PAUSIERT"); // PRINT PAUSED + LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("FILAMENT LADEN"); // LOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("FILAMENT ENTLADEN"); // UNLOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("FORTS. OPTIONEN:"); // RESUME OPTIONS: + LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Mehr entladen"); // Purge more + LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Düse: "); // Nozzle: + LSTR MSG_RUNOUT_SENSOR = _UxGT("Runout-Sensor"); // Runout Sensor + LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("Runout-Weg mm"); // Runout Dist mm + LSTR MSG_KILL_HOMING_FAILED = _UxGT("Homing gescheitert"); // Homing Failed + LSTR MSG_LCD_PROBING_FAILED = _UxGT("Probing gescheitert"); // Probing Failed + LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("FILAMENT WÄHLEN"); // CHOOSE FILAMENT + LSTR MSG_MMU2_MENU = _UxGT("MMU"); // MMU + LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("Update MMU Firmware!"); // Update MMU Firmware! + LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU handeln erfor."); // MMU Needs Attention. + LSTR MSG_MMU2_RESUME = _UxGT("Druck fortsetzen"); // Resume + LSTR MSG_MMU2_RESUMING = _UxGT("Fortfahren..."); // MMU Resuming... + LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("Filament laden"); // Load + LSTR MSG_MMU2_LOAD_ALL = _UxGT("Lade alle"); // Load All + LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Düse laden"); // Load to Nozzle + LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("Filament auswerfen"); // Eject + LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("Filament ~ auswerfen"); // Eject ~ + LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Filament entladen "); // Unload + LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Lade Fila. %i..."); // Filament %i Load... + LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Fila. auswerfen..."); // Filament %i Eject... + LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Fila. entladen..."); // Filament %i Unload... + LSTR MSG_MMU2_ALL = _UxGT("Alle"); // All + LSTR MSG_MMU2_FILAMENT_N = _UxGT("Filament ~"); // Filament ~ + LSTR MSG_MMU2_RESET = _UxGT("setze MMU zurück"); // Reset MMU + LSTR MSG_MMU2_RESETTING = _UxGT("MMU zurücksetzen..."); // Resetting... + LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Entfernen, klicken"); // Eject Recover + LSTR MSG_MIX = _UxGT("Mix"); // Mix + LSTR MSG_MIX_COMPONENT_N = _UxGT("Komponente {"); // Component { + LSTR MSG_MIXER = _UxGT("Mixer"); // Mixer + LSTR MSG_GRADIENT = _UxGT("Gradient"); // Gradient + LSTR MSG_FULL_GRADIENT = _UxGT("Volle Gradient"); // Full Gradient + LSTR MSG_TOGGLE_MIX = _UxGT("Mix umschalten"); // Toggle Mix + LSTR MSG_CYCLE_MIX = _UxGT("Zyklus Mix"); // Cycle Mix + LSTR MSG_GRADIENT_MIX = _UxGT("Gradient Mix"); // Gradient Mix + LSTR MSG_REVERSE_GRADIENT = _UxGT("Umgekehrte Gradient"); // Reverse Gradient + LSTR MSG_ACTIVE_VTOOL = _UxGT("Aktives V-Tool"); // Active V-tool + LSTR MSG_START_VTOOL = _UxGT("V-Tool Start"); // Start V-tool + LSTR MSG_END_VTOOL = _UxGT("V-Tool Ende"); // End V-tool + LSTR MSG_GRADIENT_ALIAS = _UxGT("V-Tool Alias"); // Alias V-tool + LSTR MSG_RESET_VTOOLS = _UxGT("V-Tools Reseten"); // Reset V-tools + LSTR MSG_COMMIT_VTOOL = _UxGT("V-Tool Mix sichern"); // Commit V-tool Mix + LSTR MSG_VTOOLS_RESET = _UxGT("V-Tools ist resetet"); // V-tools Were Reset + LSTR MSG_START_Z = _UxGT("Z Start:"); // Start Z: + LSTR MSG_END_Z = _UxGT("Z Ende:"); // End Z: + LSTR MSG_GAMES = _UxGT("Spiele"); // Games + LSTR MSG_BRICKOUT = _UxGT("Brickout"); // Brickout + LSTR MSG_INVADERS = _UxGT("Invaders"); // Invaders + LSTR MSG_SNAKE = _UxGT("Sn4k3"); // Sn4k3 + LSTR MSG_MAZE = _UxGT("Maze"); // Maze + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Klick zum Fortsetzen")); // |Click to continue + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Pausiert...")); // |Parking... + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Spülen...")); // |Purging... + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Klick zum beenden", "der Düsenspülung")); // |Click to finish + LSTR MSG_TMC_DRIVERS = _UxGT("TMC Treiber"); // TMC Drivers + LSTR MSG_TMC_CURRENT = _UxGT("Treiber Strom"); // Driver Current + LSTR MSG_TMC_HYBRID_THRS = _UxGT("Hybrid threshold"); // Hybrid Threshold + LSTR MSG_TMC_HOMING_THRS = _UxGT("Sensorloses Homing"); // Sensorless Homing + LSTR MSG_TMC_STEPPING_MODE = _UxGT("Schrittmodus"); // Stepping Mode + LSTR MSG_TMC_STEALTHCHOP = _UxGT("StealthChop"); // StealthChop + LSTR MSG_SERVICE_RESET = _UxGT("Reset"); // Reset + LSTR MSG_SERVICE_IN = _UxGT(" im:"); // in: + LSTR MSG_BACKLASH = _UxGT("Spiel"); // Backlash + LSTR MSG_BACKLASH_CORRECTION = _UxGT("Korrektur"); // Correction + LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Glätten"); // Smoothing + LSTR MSG_HIGH = _UxGT("HOCH"); // HIGH + LSTR MSG_LOW = _UxGT("RUNTER"); // LOW + LSTR MSG_ERROR = _UxGT("Fehler"); // Error + LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Medium Init fehlgesch."); // (MEDIA_TYPE_EN) Init Fail + LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Subcall überschritten"); // Subcall Overflow + LSTR MSG_AUTO_HOME_N = _UxGT("Home @"); // Home @ + LSTR MSG_FILAMENT_SET = _UxGT("Fila. Einstellungen"); // Filament Settings + LSTR MSG_FILAMENT_MAN = _UxGT("Filament Management"); // Filament Management + LSTR MSG_MANUAL_LEVELING = _UxGT("Manuell Nivellierung"); // Manual Leveling + LSTR MSG_TRAM_FL = _UxGT("Vorne Links"); // Front Left + LSTR MSG_TRAM_FR = _UxGT("Vorne Rechts"); // Front Right + LSTR MSG_TRAM_C = _UxGT("Mitte"); // Center + LSTR MSG_TRAM_BL = _UxGT("Hinten Links"); // Back Left + LSTR MSG_TRAM_BR = _UxGT("Hinten Rechts"); // Back Right + LSTR MSG_MANUAL_MESH = _UxGT("manuelles Netz"); // Manual Mesh + LSTR MSG_AUTO_MESH = _UxGT("Netz auto. erstellen"); // Auto Build Mesh + LSTR MSG_ITERATION = _UxGT("G34 Iteration: %i"); // G34 Iteration: %i + LSTR MSG_DECREASING_ACCURACY = _UxGT("Genauigkeit sinkt!"); // Accuracy Decreasing! + LSTR MSG_ACCURACY_ACHIEVED = _UxGT("Genauigkeit erreicht"); // Accuracy Achieved + LSTR MSG_HOME_OFFSET_X = _UxGT("Homeversatz X"); // Home Offset X + LSTR MSG_HOME_OFFSET_Y = _UxGT("Homeversatz Y"); // Home Offset Y + LSTR MSG_HOME_OFFSET_Z = _UxGT("Homeversatz Z"); // Home Offset Z + LSTR MSG_TRAMMING_WIZARD = _UxGT("Tramming Assistent"); // Tramming Wizard + LSTR MSG_SELECT_ORIGIN = _UxGT("Wählen Sie Ursprung"); // Select Origin + LSTR MSG_LAST_VALUE_SP = _UxGT("Letzter Wert "); // Last value + LSTR MSG_CUTTER_FREQUENCY = _UxGT("Frequenz"); // Frequency + LSTR MSG_LASER_TOGGLE = _UxGT("Laser umschalten"); // Toggle Laser + LSTR MSG_LASER_EVAC_TOGGLE = _UxGT("Gebläse umschalten"); // Toggle Blower + LSTR MSG_LASER_ASSIST_TOGGLE = _UxGT("Luftunterstützung"); // Air Assist + LSTR MSG_LASER_PULSE_MS = _UxGT("Test Impuls ms"); // Test Pulse ms + LSTR MSG_LASER_FIRE_PULSE = _UxGT("Fire Impuls"); // Fire Pulse + LSTR MSG_FLOWMETER_FAULT = _UxGT("Feh. Kühlmittelfluss"); // Coolant Flow Fault + LSTR MSG_SPINDLE_TOGGLE = _UxGT("Spindel umschalten"); // Toggle Spindle + LSTR MSG_SPINDLE_EVAC_TOGGLE = _UxGT("Vakuum umschalten"); // Toggle Vacuum + LSTR MSG_SPINDLE_FORWARD = _UxGT("Spindel vorwärts"); // Spindle Forward + LSTR MSG_BED_TRAMMING_MANUAL = _UxGT("Manuelles ausrichten"); // Manual Tramming + LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Das Bett anpassen, bis zum auslösen."); // Adjust bed until the probe triggers. + LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Ecken in der Toleranz. Bett ausger."); // Corners within tolerance. Bed trammed. + LSTR MSG_BED_TRAMMING_GOOD_POINTS = _UxGT("Gute Punkte: "); // Good Points: + LSTR MSG_BED_TRAMMING_LAST_Z = _UxGT("Letztes Z: "); // Last Z: + LSTR MSG_MESH_VIEWER = _UxGT("Netzbetrachter"); // Mesh Viewer + LSTR MSG_MESH_VIEW = _UxGT("Netz ansehen"); // View Mesh + LSTR MSG_NO_VALID_MESH = _UxGT("Kein gültiges Netz"); // No valid mesh + LSTR MSG_ACTIVATE_MESH = _UxGT("Nivellierung aktiv."); // Activate Leveling + LSTR MSG_MESH_INSET = _UxGT("Mesh-Einsatz"); // Mesh Inset + LSTR MSG_MESH_MIN_X = _UxGT("Mesh X Minimum"); // Mesh X Minimum + LSTR MSG_MESH_MAX_X = _UxGT("Mesh X Maximum"); // Mesh X Maximum + LSTR MSG_MESH_MIN_Y = _UxGT("Mesh Y Minimum"); // Mesh Y Minimum + LSTR MSG_MESH_MAX_Y = _UxGT("Mesh Y Maximum"); // Mesh Y Maximum + LSTR MSG_MESH_AMAX = _UxGT("Bereich maximieren"); // Maximize Area + LSTR MSG_MESH_CENTER = _UxGT("Center Area"); // Center Area + LSTR MSG_MESH_CANCEL = _UxGT("Mesh abgebrochen"); // Mesh cancelled + LSTR MSG_M48_OUT_OF_BOUNDS = _UxGT("Zu weit draußen"); // Probe out of bounds + LSTR MSG_IDEX_DUPE_GAP = _UxGT("X-Lücke duplizieren"); // Duplicate X-Gap + LSTR MSG_UBL_TILT_MESH = _UxGT("Tilt Mesh"); // Tilt Mesh + LSTR MSG_UBL_TILTING_GRID = _UxGT("Tilting Grid Size"); // Tilting Grid Size + LSTR MSG_UBL_MESH_TILTED = _UxGT("Mesh Tilted"); // Mesh Tilted + LSTR MSG_UBL_MESH_WIZARD = _UxGT("UBL Netz Assistent"); // UBL Mesh Wizard + LSTR MSG_UBL_MESH_FILLED = _UxGT("Fehlende Punkte erg."); // Missing Points Filled + LSTR MSG_UBL_MESH_INVALID = _UxGT("Ungültiges Netz"); // Invalid Mesh + LSTR MSG_UBL_INVALID_SLOT = _UxGT("Wähle einen Mesh-Slot"); // First Select a Mesh Slot + LSTR MSG_LED_CHANNEL_N = _UxGT("Kanal {"); // Channel { + LSTR MSG_NEO2_PRESETS = _UxGT("Licht #2 Voreinst."); // Light #2 Presets + LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Helligkeit"); // Brightness + LSTR MSG_NOZZLE_PARKED = _UxGT("Düse geparkt"); // Nozzle Parked + LSTR MSG_COOLER = _UxGT("Laser-Kühlmittel"); // Laser Coolant + LSTR MSG_COOLER_TOGGLE = _UxGT("Kühler umschalten"); // Toggle Cooler + LSTR MSG_FLOWMETER_SAFETY = _UxGT("Durchflusssicherheit"); // Flow Safety + LSTR MSG_LASER = _UxGT("Laser"); // Laser + LSTR MSG_CONTROLLER_FAN = _UxGT("Lüfter Kontroller"); // Controller Fan + LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("Lüfter Leerlauf"); // Idle Speed + LSTR MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("Motorlast Modus"); // Auto Mode + LSTR MSG_CONTROLLER_FAN_SPEED = _UxGT("Lüfter Motorlast"); // Active Speed + LSTR MSG_CONTROLLER_FAN_DURATION = _UxGT("Ausschalt Delay"); // Idle Period + LSTR MSG_PID_CYCLE = _UxGT("PID Zyklus"); // PID Cycles + LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("PID Tuning fertig"); // PID tuning done + LSTR MSG_PID_AUTOTUNE_FAILED = _UxGT("PID Autotune fehlge.!"); // Autotune failed! + LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Autotune fehlge.! Ungültiger Extruder"); // Autotune failed! Bad extruder. + LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Autotune fehlge.! Temperatur zu hoch."); // Autotune failed! Temperature too high. + LSTR MSG_PID_TIMEOUT = _UxGT("Autotune fehlge.! Timeout."); // Autotune failed! Timeout. + LSTR MSG_MPC_MEASURING_AMBIENT = _UxGT("teste Wärmeverlust"); // Testing heat loss + LSTR MSG_MPC_AUTOTUNE = _UxGT("Autotune MPC"); // MPC Autotune + LSTR MSG_MPC_EDIT = _UxGT("MPC * bearbeiten"); // Edit * MPC + LSTR MSG_MPC_POWER_E = _UxGT("* Leistung"); // Power * + LSTR MSG_MPC_BLOCK_HEAT_CAPACITY_E = _UxGT("Block C *"); // Heat Cap. * + LSTR MSG_SENSOR_RESPONSIVENESS_E = _UxGT("Sensor res *"); // Sensor Resp. * + LSTR MSG_MPC_AMBIENT_XFER_COEFF_E = _UxGT("Ambient h *"); // Ambient Co. * + LSTR MSG_MPC_AMBIENT_XFER_COEFF_FAN_E = _UxGT("Amb. h fan *"); // Fan coeff. * + LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("max. Frequenz"); // XY Freq Limit + LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("min. Vorschub"); // Min FR Factor + LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("E Limit in mm") SUPERSCRIPT_THREE; // E Limit in mm(SUPERSCRIPT_THREE) + LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("E Limit *"); // E Limit * + LSTR MSG_BRIGHTNESS = _UxGT("LCD-Helligkeit"); // LCD Brightness + LSTR MSG_SCREEN_TIMEOUT = _UxGT("LCD Timeout (m)"); // LCD Timeout (m) + LSTR MSG_BRIGHTNESS_OFF = _UxGT("LCD ausschalten"); // Backlight Off + LSTR MSG_ERR_EEPROM_CRC = _UxGT("EEPROM CRC Fehler"); // Err: EEPROM CRC + LSTR MSG_ERR_EEPROM_SIZE = _UxGT("EEPROM Größe Fehler"); // Err: EEPROM Size + LSTR MSG_ERR_EEPROM_VERSION = _UxGT("EEPROM Version Fehler"); // Err: EEPROM Version + LSTR MSG_SETTINGS_STORED = _UxGT("Einstell. gespei."); // Settings Stored + LSTR MSG_INFO_MACHINENAME = _UxGT("Machine Name"); // Machine Name + LSTR MSG_INFO_SIZE = _UxGT("Größe"); // Size + LSTR MSG_INFO_FWVERSION = _UxGT("Firmware Version"); // Firmware Version + LSTR MSG_INFO_BUILD = _UxGT("Build Datum"); // Build Info + LSTR MSG_POWER_MONITOR = _UxGT("Power Monitor"); // Power monitor + LSTR MSG_CURRENT = _UxGT("Strom"); // Current + LSTR MSG_VOLTAGE = _UxGT("Spannung"); // Voltage + LSTR MSG_POWER = _UxGT("Power"); // Power + LSTR MSG_BUTTON_IGNORE = _UxGT("Ignorieren"); // Ignore + LSTR MSG_BUTTON_CONFIRM = _UxGT("Bestätigen"); // Confirm + LSTR MSG_BUTTON_CONTINUE = _UxGT("Fortsetzen"); // Continue + LSTR MSG_BUTTON_SKIP = _UxGT("Überspringen"); // Skip + LSTR MSG_BUTTON_INFO = _UxGT("Info"); // Info + LSTR MSG_BUTTON_LEVEL = _UxGT("Level"); // Level + LSTR MSG_BUTTON_PAUSE = _UxGT("Pause"); // Pause + LSTR MSG_BUTTON_RESUME = _UxGT("Fortsetzen"); // Resume + LSTR MSG_BUTTON_ADVANCED = _UxGT("Erweitert"); // Advanced + LSTR MSG_BUTTON_SAVE = _UxGT("Speichern"); // Save + LSTR MSG_BUTTON_PURGE = _UxGT("Reinigen"); // Purge + LSTR MSG_PAUSING = _UxGT("Pause..."); // Pausing... + LSTR MSG_ADVANCED_PAUSE = _UxGT("Erweiterte Pause"); // Advanced Pause + LSTR MSG_HOST_START_PRINT = _UxGT("Host-Druck starten"); // Host Start + LSTR MSG_END_LOOPS = _UxGT("Wiederholung beenden"); // End Loops + LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Druckauftrag fortset."); // Continue Job + LSTR MSG_STOPPING = _UxGT("Stoppen..."); // Stopping... + LSTR MSG_REMAINING_TIME = _UxGT("Verbleiben"); // Remaining + LSTR MSG_PRINT_DONE = _UxGT("Druck fertig"); // Print Done + LSTR MSG_PRINTER_KILLED = _UxGT("Drucker killed!"); // Printer killed! + LSTR MSG_TURN_OFF = _UxGT("Drucker ausschalten"); // Turn off now + LSTR MSG_FWRETRACT = _UxGT("Firmware Retract"); // Firmware Retract + LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Extra Einzug"); // Swap Extra + LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Kopf parken"); // Park Head + LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Rückzugsgeschwindigkeit"); // Recover Speed + LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Lüfter Geschwindigkeit"); // Fan Speed + LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Lüfter Zeit"); // Fan Time + LSTR MSG_TOOL_MIGRATION_ON = _UxGT("Auto AN"); // Auto ON + LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("Auto AUS"); // Auto OFF + LSTR MSG_TOOL_MIGRATION = _UxGT("Werkzeugmigration"); // Tool Migration + LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("Auto-Migration"); // Auto-migration + LSTR MSG_TOOL_MIGRATION_END = _UxGT("Letzter Extruder"); // Last Extruder + LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("Migrieren zu *"); // Migrate to * + LSTR MSG_BLTOUCH_SPEED_MODE = _UxGT("High Speed"); // High Speed + LSTR MSG_ZPROBE_SETTINGS = _UxGT("Sondeneinstellungen"); // Probe Settings + LSTR MSG_ZPROBE_OFFSETS = _UxGT("Sondenversatz"); // Probe Offsets + LSTR MSG_ZPROBE_MARGIN = _UxGT("Sondenrand"); // Probe Margin + LSTR MSG_Z_FEED_RATE = _UxGT("Z-Vorschub"); // Z Feedrate + LSTR MSG_ENABLE_HS_MODE = _UxGT("HS-Modus aktivieren"); // Enable HS mode + LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Bewege Düse zum Bett"); // Move Nozzle to Bed + LSTR MSG_ERR_TEMP_MALFUNCTION = _UxGT("TEMP-FEHLER"); // TEMP MALFUNCTION + LSTR MSG_ERR_COOLING_FAILED = _UxGT("Kühlung fehlgeschla."); // Cooling Failed + LSTR MSG_PLEASE_WAIT = _UxGT("Bitte warten..."); // Please wait... + LSTR MSG_PREHEATING = _UxGT("vorheizen..."); // Preheating... + LSTR MSG_PROBE_HEATING = _UxGT("Sonde heizt..."); // Probe Heating... + LSTR MSG_PROBE_COOLING = _UxGT("Sonde kühlt..."); // Probe Cooling... + LSTR MSG_LASER_COOLING = _UxGT("Laser kühlt..."); // Laser Cooling... + LSTR MSG_MESH_DONE = _UxGT("Nivellierung fertig"); // Mesh probing done + LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Hotend Idle Timeout"); // Hotend Idle Timeout + LSTR MSG_FAN_SPEED_FAULT = _UxGT("Fehler Lüftergeschw."); // Fan speed fault + LSTR MSG_COLORS_GET = _UxGT("Farbe"); // Get Color + LSTR MSG_COLORS_SELECT = _UxGT("Farben auswählen"); // Select Colors + LSTR MSG_COLORS_APPLIED = _UxGT("Farben verwenden"); // Colors applied + LSTR MSG_COLORS_RED = _UxGT("Rot"); // Red + LSTR MSG_COLORS_GREEN = _UxGT("Grün"); // Green + LSTR MSG_COLORS_BLUE = _UxGT("Blau"); // Blue + LSTR MSG_COLORS_WHITE = _UxGT("Weiß"); // White + LSTR MSG_UI_LANGUAGE = _UxGT("UI Sprache"); // UI Language + LSTR MSG_SOUND_ENABLE = _UxGT("Ton aktivieren"); // Enable sound + LSTR MSG_LOCKSCREEN = _UxGT("Bildschirm sperren"); // Lock Screen + LSTR MSG_LOCKSCREEN_LOCKED = _UxGT("Drucker ist gesperrt,"); // Printer is Locked, + LSTR MSG_LOCKSCREEN_UNLOCK = _UxGT("Scrollen zum Entsper."); // Scroll to unlock. + LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Auf Neustart warten"); // Please wait for reboot. + LSTR MSG_PLEASE_PREHEAT = _UxGT("Bitte vorheizen"); // Please Preheat + LSTR MSG_FILAMENT_CHANGE_PURGE_CONTINUE = _UxGT("Löschen o. fortfah.?"); // Purge or Continue? + LSTR MSG_EXTRUDER_MIN_TEMP = _UxGT("Extruder Min Temp."); // Extruder Min Temp. + LSTR MSG_FANCHECK = _UxGT("Lüftergeschw. prüfen"); // Fan Tacho Check + LSTR MSG_BAD_PAGE = _UxGT("ungült. Seitenzahl"); // Bad page index + LSTR MSG_BAD_PAGE_SPEED = _UxGT("ungült. Seitengeschw."); // Bad page speed + LSTR MSG_EDIT_PASSWORD = _UxGT("Passwort bearbeiten"); // Edit Password + LSTR MSG_LOGIN_REQUIRED = _UxGT("Login erforderlich"); // Login Required + LSTR MSG_PASSWORD_SETTINGS = _UxGT("Passwort Einstellungen"); // Password Settings + LSTR MSG_ENTER_DIGIT = _UxGT("PIN eingeben"); // Enter Digit + LSTR MSG_CHANGE_PASSWORD = _UxGT("Passwort ändern"); // Set/Edit Password + LSTR MSG_REMOVE_PASSWORD = _UxGT("Passwort löschen"); // Remove Password + LSTR MSG_PASSWORD_SET = _UxGT("Passwort ist "); // Password is + LSTR MSG_START_OVER = _UxGT("von vorn beginnen"); // Start Over + LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Bald speichern!"); // Remember to Save! + LSTR MSG_PASSWORD_REMOVED = _UxGT("Passwort gelöscht"); // Password Removed + LSTR MSG_LEVEL_X_AXIS = _UxGT("X Achse leveln"); // Level X Axis + LSTR MSG_AUTO_CALIBRATE = _UxGT("Auto. Kalibiren"); // Auto Calibrate + LSTR MSG_FTDI_HEATER_TIMEOUT = _UxGT("Idle Timeout, Temperatur gefallen. Drücke Okay, um erneut aufzuheizen und fortzufahren."); // Idle timeout, temperature decreased. Press Okay to reheat and again to resume. + LSTR MSG_HEATER_TIMEOUT = _UxGT("Heizungs Timeout"); // Heater Timeout + LSTR MSG_REHEAT = _UxGT("Erneut aufheizen"); // Reheat + LSTR MSG_REHEATING = _UxGT("Erneut aufhei. ..."); // Reheating... + LSTR MSG_REHEATDONE = _UxGT("Aufwärmen fertig"); // Reheat Done + LSTR MSG_PROBE_WIZARD = _UxGT("Sonden-Assistent"); // Z Probe Wizard + LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Sonden-Bezug"); // Probing Z Reference + LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Bewege zur Position"); // Moving to Probing Pos + LSTR MSG_XATC = _UxGT("X-Verdreh-Assistent"); // X-Twist Wizard + LSTR MSG_XATC_DONE = _UxGT("X-Verdreh-Assi fertig!"); // X-Twist Wizard Done! + LSTR MSG_XATC_UPDATE_Z_OFFSET = _UxGT("Z-Versatz Sonde akt. auf "); // Update Z-Offset to + LSTR MSG_SOUND = _UxGT("Ton"); // Sound + LSTR MSG_TOP_LEFT = _UxGT("Oben Links"); // Touch Top Left + LSTR MSG_BOTTOM_LEFT = _UxGT("Unten Links"); // Touch Bottom Left + LSTR MSG_TOP_RIGHT = _UxGT("Oben Rechts"); // Touch Top Right + LSTR MSG_BOTTOM_RIGHT = _UxGT("Unten Rechts"); // Touch Bottom Right + LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Kalibrierung beendet"); // Calibration Completed + LSTR MSG_CALIBRATION_FAILED = _UxGT("Kalibrierung geschei."); // Calibration Failed + LSTR MSG_DRIVER_BACKWARD = _UxGT(" Driver zurück"); // driver backward + LSTR MSG_SD_CARD = _UxGT("SD Karte"); // SD Card + LSTR MSG_USB_DISK = _UxGT("USB Disk"); // USB Disk + LSTR MSG_HOST_SHUTDOWN = _UxGT("Host abschalten"); // Host Shutdown + LSTR DGUS_MSG_TEMP_TOO_HIGH = _UxGT("Temperatur zu hoch."); // Temperature too high. + LSTR MSG_SHORT_DAY = _UxGT("t"); // d + LSTR MSG_SHORT_HOUR = _UxGT("h"); // h + LSTR MSG_SHORT_MINUTE = _UxGT("m"); // m } namespace LanguageWide_de { using namespace LanguageNarrow_de; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Kein Medium eingelegt."); // ProUI - LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Bitte auf Neustart warten."); // ProUI - LSTR MSG_PLEASE_PREHEAT = _UxGT("Bitte das Hotend vorheizen."); // ProUI - LSTR MSG_INFO_PRINT_COUNT_RESET = _UxGT("Druckzähler zurücksetzen"); // ProUI - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Gesamte Drucke"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Komplette Drucke"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Gesamte Druckzeit"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Längste Druckzeit"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Gesamt Extrudiert"); + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Gesamte Drucke"); // Print Count + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Komplette Drucke"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Gesamte Druckzeit"); // Print Time + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Längste Druckzeit"); // Longest Job Time + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Gesamt Extrudiert"); // Extruded Total + LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Bitte auf Neustart warten."); // Please wait for reboot. + LSTR MSG_PLEASE_PREHEAT = _UxGT("Bitte das Hotend vorheizen."); // Please preheat the hot end. + LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Kein Medium eingelegt."); // No media inserted. + LSTR MSG_INFO_PRINT_COUNT_RESET = _UxGT("Druckzähler zurücksetzen"); // Reset Print Count #endif } @@ -792,17 +756,17 @@ namespace LanguageTall_de { using namespace LanguageWide_de; #if LCD_HEIGHT >= 4 // Filament Change screens show up to 3 lines on a 4-line display - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Knopf drücken um", "Druck fortzusetzen")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_2_LINE("Druck ist", "pausiert...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Warte auf den", "Start des", "Filamentwechsels...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Filament einlegen", "und Knopf drücken", "um fortzusetzen")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Knopf drücken um", "Düse aufzuheizen")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Düse heizt auf", "bitte warten...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Warte auf", "Entnahme", "des Filaments...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Warte auf", "Laden des", "Filaments...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_3_LINE("Warte auf", "Spülung", "der Düse...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Klicke um", "die Düsenspülung", "zu beenden")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Warte auf", "Fortsetzen des", "Drucks...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Warte auf den", "Start des", "Filamentwechsels...")); // |Wait for|filament change|to start + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Filament einlegen", "und Knopf drücken", "um fortzusetzen")); // |Insert filament|and press button|to continue + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Warte auf", "Entnahme", "des Filaments...")); // |Wait for|filament unload + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Warte auf", "Laden des", "Filaments...")); // |Wait for|filament load + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Warte auf", "Fortsetzen des", "Drucks...")); // |Wait for print|to resume... + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Düse heizt auf", "bitte warten...")); // |Nozzle heating|Please wait... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Knopf drücken um", "Düse aufzuheizen")); // |Press button|to heat nozzle + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Knopf drücken um", "Druck fortzusetzen")); // |Press Button|to resume print + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_2_LINE("Druck ist", "pausiert...")); // |Parking... + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_3_LINE("Warte auf", "Spülung", "der Düse...")); // |Wait for|filament purge + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Klicke um", "die Düsenspülung", "zu beenden")); // |Click to finish|filament purge #endif } diff --git a/Marlin/src/lcd/language/language_el.h b/Marlin/src/lcd/language/language_el.h index f017b5a8d5..27a824a0a0 100644 --- a/Marlin/src/lcd/language/language_el.h +++ b/Marlin/src/lcd/language/language_el.h @@ -44,187 +44,179 @@ namespace LanguageNarrow_el { constexpr uint8_t CHARSIZE = 2; LSTR LANGUAGE = _UxGT("Greek (Greece)"); - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" έτοιμος."); - LSTR MSG_YES = _UxGT("ΝΑΙ"); - LSTR MSG_NO = _UxGT("ΟΧΙ"); - LSTR MSG_BACK = _UxGT("Πίσω"); - LSTR MSG_ADVANCED_SETTINGS = _UxGT("Προχωρημένες ρυθμίσεις"); - LSTR MSG_CONFIGURATION = _UxGT("Διαμόρφωση"); - - LSTR MSG_MEDIA_INSERTED = _UxGT("Κάρτα εισήχθη"); - LSTR MSG_MEDIA_REMOVED = _UxGT("Κάρτα αφαιρέθη"); - LSTR MSG_MEDIA_ABORTING = _UxGT("Ματαίωση..."); - LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Αποτυχία αρχικοποίησης SD"); - LSTR MSG_MEDIA_READ_ERROR = MEDIA_TYPE_EN _UxGT(" σφάλμα ανάγνωσης"); - LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB αφαιρέθη"); - LSTR MSG_USB_FD_USB_FAILED = _UxGT("Αποτυχία εκκίνησης USB"); - - LSTR MSG_MAIN_MENU = _UxGT("Αρχική Οθόνη"); - LSTR MSG_DISABLE_STEPPERS = _UxGT("Απενεργοποίηση μοτέρ"); - LSTR MSG_AUTO_HOME = _UxGT("Αυτόμ. επαναφορά XYZ"); - LSTR MSG_AUTO_HOME_X = _UxGT("Επαναφορά X"); - LSTR MSG_AUTO_HOME_Y = _UxGT("Επαναφορά Y"); - LSTR MSG_AUTO_HOME_Z = _UxGT("Επαναφορά Z"); - LSTR MSG_LEVEL_BED_HOMING = _UxGT("Αυτόμ. επαναφορά XYZ"); - LSTR MSG_LEVEL_BED_WAITING = _UxGT("Πιέστε για έναρξη"); - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Επόμενο σημείο"); - LSTR MSG_LEVEL_BED_DONE = _UxGT("Τέλος επιπεδοποίησης!"); - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Ορισμός μετατοπίσεων"); - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Εφαρμογή μετατοπίσεων"); - - LSTR MSG_PREHEAT_1 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" όλα"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" bed"); // SHORTEN - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" επιβεβαίωση"); // SHORTEN - - LSTR MSG_PREHEAT_M = _UxGT("Προθέρμανση $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Προθέρμανση $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Προθέρμανση $ End"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Προθέρμανση $ End ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Προθέρμανση $ όλα"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Προθέρμανση $ bed"); // SHORTEN - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Προθέρμανση $ επιβεβαίωση"); // SHORTEN - - LSTR MSG_COOLDOWN = _UxGT("Αποθέρμανση"); - LSTR MSG_SWITCH_PS_ON = _UxGT("Ενεργοποίηση"); - LSTR MSG_SWITCH_PS_OFF = _UxGT("Απενεργοποίηση"); - LSTR MSG_EXTRUDE = _UxGT("Εξώθηση"); - LSTR MSG_RETRACT = _UxGT("Ανάσυρση"); - LSTR MSG_MOVE_AXIS = _UxGT("Μετακίνηση άξονα"); - LSTR MSG_PROBE_AND_LEVEL = _UxGT("Ανιχνευτής/ισοπέδωση"); - LSTR MSG_BED_LEVELING = _UxGT("Επιπεδοποίηση κλίνης"); - LSTR MSG_LEVEL_BED = _UxGT("Επιπεδοποίηση κλίνης"); - LSTR MSG_MOVE_X = _UxGT("Μετακίνηση X"); - LSTR MSG_MOVE_Y = _UxGT("Μετακίνηση Y"); - LSTR MSG_MOVE_Z = _UxGT("Μετακίνηση Z"); - LSTR MSG_MOVE_N = _UxGT("Μετακίνηση @"); - LSTR MSG_MOVE_E = _UxGT("Εξωθητής"); - LSTR MSG_MOVE_EN = _UxGT("Εξωθητής *"); - LSTR MSG_MOVE_N_MM = _UxGT("Μετακίνηση $μμ"); - LSTR MSG_MOVE_N_IN = _UxGT("Μετακίνηση $in"); - LSTR MSG_MOVE_N_DEG = _UxGT("Μετακίνηση $") LCD_STR_DEGREE; - LSTR MSG_SPEED = _UxGT("Ταχύτητα"); - LSTR MSG_MESH_Z_OFFSET = _UxGT("Επ. Εκτύπωσης Z"); - LSTR MSG_NOZZLE = _UxGT("Ακροφύσιο"); - LSTR MSG_NOZZLE_N = _UxGT("Ακροφύσιο ~"); - LSTR MSG_BED = _UxGT("Επ. Εκτύπωσης"); - LSTR MSG_FAN_SPEED = _UxGT("Ταχύτητα ανεμιστήρα"); - LSTR MSG_FAN_SPEED_N = _UxGT("Ταχύτητα ανεμιστήρα ~"); - LSTR MSG_FLOW = _UxGT("Ροή"); - LSTR MSG_FLOW_N = _UxGT("Ροή ~"); - LSTR MSG_CONTROL = _UxGT("Έλεγχος"); - LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); - LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fact"); - LSTR MSG_AUTOTEMP = _UxGT("Αυτορρύθμιση θερ/σίας"); - LSTR MSG_LCD_ON = _UxGT("Ενεργοποιημένο"); - LSTR MSG_LCD_OFF = _UxGT("Απενεργοποιημένο"); - LSTR MSG_ACC = _UxGT("Επιτάχυνση"); - LSTR MSG_VA_JERK = _UxGT("Vαντίδραση ") STR_A; - LSTR MSG_VB_JERK = _UxGT("Vαντίδραση ") STR_B; - LSTR MSG_VC_JERK = _UxGT("Vαντίδραση ") STR_C; - LSTR MSG_VN_JERK = _UxGT("Vαντίδραση @"); - LSTR MSG_VE_JERK = _UxGT("Vαντίδραση E"); - LSTR MSG_VMAX_A = _UxGT("V Μέγιστο") STR_A; - LSTR MSG_VMAX_B = _UxGT("V Μέγιστο") STR_B; - LSTR MSG_VMAX_C = _UxGT("V Μέγιστο") STR_C; - LSTR MSG_VMAX_N = _UxGT("V Μέγιστο@"); - LSTR MSG_VMAX_E = _UxGT("V ΜέγιστοE"); - LSTR MSG_VMAX_EN = _UxGT("V Μέγιστο *"); - LSTR MSG_VMIN = _UxGT("V Ελάχιστο"); - LSTR MSG_VTRAV_MIN = _UxGT("Vελάχ. μετατόπιση"); - LSTR MSG_ACCELERATION = _UxGT("Accel"); - LSTR MSG_AMAX_A = _UxGT("Aμεγ ") STR_A; - LSTR MSG_AMAX_B = _UxGT("Aμεγ ") STR_B; - LSTR MSG_AMAX_C = _UxGT("Aμεγ ") STR_C; - LSTR MSG_AMAX_N = _UxGT("Aμεγ @"); - LSTR MSG_AMAX_E = _UxGT("Aμεγ E"); - LSTR MSG_AMAX_EN = _UxGT("Aμεγ *"); - LSTR MSG_A_RETRACT = _UxGT("Α-ανάσυρση"); - LSTR MSG_A_TRAVEL = _UxGT("Α-μετατόπιση"); - LSTR MSG_STEPS_PER_MM = _UxGT("Bήματα ανά μμ"); - LSTR MSG_A_STEPS = _UxGT("Bήματα ") STR_A _UxGT(" ανά μμ"); - LSTR MSG_B_STEPS = _UxGT("Bήματα ") STR_B _UxGT(" ανά μμ"); - LSTR MSG_C_STEPS = _UxGT("Bήματα ") STR_C _UxGT(" ανά μμ"); - LSTR MSG_N_STEPS = _UxGT("Bήματα @ ανά μμ"); - LSTR MSG_E_STEPS = _UxGT("Bήματα Ε ανά μμ"); - LSTR MSG_EN_STEPS = _UxGT("Bήματα * ανά μμ"); - LSTR MSG_TEMPERATURE = _UxGT("Θερμοκρασία"); - LSTR MSG_MOTION = _UxGT("Κίνηση"); - LSTR MSG_FILAMENT = _UxGT("Νήμα"); - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("Ε σε mm") SUPERSCRIPT_THREE; - LSTR MSG_FILAMENT_DIAM = _UxGT("Διάμετρος νήματος"); - LSTR MSG_FILAMENT_DIAM_E = _UxGT("Διάμετρος νήματος *"); - LSTR MSG_CONTRAST = _UxGT("Αντίθεση LCD"); - LSTR MSG_STORE_EEPROM = _UxGT("Αποθήκευση σε EEPROM"); - LSTR MSG_LOAD_EEPROM = _UxGT("Φόρτωση από EEPROM"); - LSTR MSG_RESTORE_DEFAULTS = _UxGT("Επαναφορά προεπιλογών"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Ανανέωση"); - LSTR MSG_INFO_SCREEN = _UxGT("Οθόνη πληροφόρησης"); - LSTR MSG_PREPARE = _UxGT("Προετοιμασία"); - LSTR MSG_TUNE = _UxGT("Συντονισμός"); - LSTR MSG_PAUSE_PRINT = _UxGT("Παύση εκτύπωσης"); - LSTR MSG_RESUME_PRINT = _UxGT("Συνέχιση εκτύπωσης"); - LSTR MSG_STOP_PRINT = _UxGT("Διακοπή εκτύπωσης"); - LSTR MSG_MEDIA_MENU = _UxGT("Εκτύπωση από SD"); - LSTR MSG_NO_MEDIA = _UxGT("Δεν βρέθηκε SD"); - LSTR MSG_DWELL = _UxGT("Αναστολή λειτουργίας"); - LSTR MSG_USERWAIT = _UxGT("Αναμονή για χρήστη"); - LSTR MSG_PRINT_ABORTED = _UxGT("Εκτύπωση διεκόπη"); - LSTR MSG_NO_MOVE = _UxGT("Καμία κίνηση."); - LSTR MSG_KILLED = _UxGT("ΤΕΡΜΑΤΙΣΜΟΣ. "); - LSTR MSG_STOPPED = _UxGT("ΔΙΑΚΟΠΗ. "); - LSTR MSG_CONTROL_RETRACT = _UxGT("Ανάσυρση μμ"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Εναλλαγή ανάσυρσης mm"); // SHORTEN - LSTR MSG_CONTROL_RETRACTF = _UxGT("Ανάσυρση V"); - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Μεταπήδηση mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Unretr. mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("S Unretr. mm"); - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Unretract V"); - LSTR MSG_AUTORETRACT = _UxGT("Αυτόματη ανάσυρση"); - LSTR MSG_FILAMENTCHANGE = _UxGT("Αλλαγή νήματος"); - LSTR MSG_FILAMENTCHANGE_E = _UxGT("Αλλαγή νήματος *"); - - LSTR MSG_ATTACH_MEDIA = _UxGT("Προετοιμασία SD"); - LSTR MSG_ATTACH_SD = _UxGT("Προετοιμασία SD"); - LSTR MSG_ATTACH_USB = _UxGT("Προετοιμασία USB"); - LSTR MSG_CHANGE_MEDIA = _UxGT("Αλλαγή κάρτας SD"); - LSTR MSG_RUN_AUTOFILES = _UxGT("Αυτόματη εκκίνηση"); - - LSTR MSG_ZPROBE_OUT = _UxGT("Διερεύνηση Z εκτός Επ.Εκτύπωσης"); // SHORTEN - LSTR MSG_ZPROBE_XOFFSET = _UxGT("Μετατόπιση X"); - LSTR MSG_ZPROBE_YOFFSET = _UxGT("Μετατόπιση Y"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Μετατόπιση Z"); - LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Μετατόπιση @"); - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Βήμα Z ρύθμιση"); - LSTR MSG_BABYSTEP_X = _UxGT("Μικρό βήμα Χ"); - LSTR MSG_BABYSTEP_Y = _UxGT("Μικρό βήμα Υ"); - LSTR MSG_BABYSTEP_Z = _UxGT("Μικρό βήμα Z"); - LSTR MSG_ENDSTOP_ABORT = _UxGT("Ακύρωση endstop"); - LSTR MSG_ERR_HEATING_FAILED = _UxGT("Αποτυχία θέρμανσης"); - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("ΠΛΕΟΝΑZΟΥΣΑ ΘΕΡΜΟΤΗΤΑ"); - LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("ΘΕΡΜΙΚΗ ΔΙΑΦΥΓΗ"); - LSTR MSG_ERR_TEMP_MALFUNCTION = _UxGT("ΘΕΡΜΙΚΗ ΔΥΣΛΕΙΤΟΥΡΓΙΑ"); - LSTR MSG_ERR_MAXTEMP = _UxGT("ΠΕΡΙΤΤΗ ΘΕΡΜΟΚΡΑΣΙΑ"); - LSTR MSG_ERR_MINTEMP = _UxGT("ΑΝΕΠΑΡΚΗΣ ΘΕΡΜΟΚΡΑΣΙΑ"); - LSTR MSG_HALTED = _UxGT("Εκτυπωτής διεκόπη"); - LSTR MSG_HEATING = _UxGT("Θερμαίνεται…"); - LSTR MSG_BED_HEATING = _UxGT("Θέρμανση κλίνης"); - LSTR MSG_DELTA_CALIBRATE = _UxGT("Βαθμονόμηση Delta"); - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Βαθμονόμηση X"); - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Βαθμονόμηση Y"); - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Βαθμονόμηση Z"); - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Βαθμονόμηση κέντρου"); - - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Εσφαλμένος εκτυπωτής"); + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" έτοιμος."); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = _UxGT("Κάρτα εισήχθη"); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = _UxGT("Κάρτα αφαιρέθη"); // (MEDIA_TYPE_EN) Removed + LSTR MSG_MAIN_MENU = _UxGT("Αρχική Οθόνη"); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("Απενεργοποίηση μοτέρ"); // Disable Steppers + LSTR MSG_AUTO_HOME = _UxGT("Αυτόμ. επαναφορά XYZ"); // Auto Home + LSTR MSG_AUTO_HOME_X = _UxGT("Επαναφορά X"); // Home X + LSTR MSG_AUTO_HOME_Y = _UxGT("Επαναφορά Y"); // Home Y + LSTR MSG_AUTO_HOME_Z = _UxGT("Επαναφορά Z"); // Home Z + LSTR MSG_LEVEL_BED_HOMING = _UxGT("Αυτόμ. επαναφορά XYZ"); // Homing XYZ + LSTR MSG_LEVEL_BED_WAITING = _UxGT("Πιέστε για έναρξη"); // Click to Begin + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Επόμενο σημείο"); // Next Point + LSTR MSG_LEVEL_BED_DONE = _UxGT("Τέλος επιπεδοποίησης!"); // Leveling Done! + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Ορισμός μετατοπίσεων"); // Set Home Offsets + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Εφαρμογή μετατοπίσεων"); // Offsets Applied + LSTR MSG_PREHEAT_1 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " ~"; // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End"); // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ~"); // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_1_ALL = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" όλα"); // Preheat (PREHEAT_1_LABEL) All + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" bed"); // Preheat (PREHEAT_1_LABEL) Bed + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" επιβεβαίωση"); // Preheat (PREHEAT_1_LABEL) Conf + LSTR MSG_PREHEAT_M = _UxGT("Προθέρμανση $"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("Προθέρμανση $ ~"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("Προθέρμανση $ End"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("Προθέρμανση $ End ~"); // Preheat $ End ~ + LSTR MSG_PREHEAT_M_ALL = _UxGT("Προθέρμανση $ όλα"); // Preheat $ All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Προθέρμανση $ bed"); // Preheat $ Bed + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Προθέρμανση $ επιβεβαίωση"); // Preheat $ Conf + LSTR MSG_COOLDOWN = _UxGT("Αποθέρμανση"); // Cooldown + LSTR MSG_SWITCH_PS_ON = _UxGT("Ενεργοποίηση"); // Switch Power On + LSTR MSG_SWITCH_PS_OFF = _UxGT("Απενεργοποίηση"); // Switch Power Off + LSTR MSG_EXTRUDE = _UxGT("Εξώθηση"); // Extrude + LSTR MSG_RETRACT = _UxGT("Ανάσυρση"); // Retract + LSTR MSG_MOVE_AXIS = _UxGT("Μετακίνηση άξονα"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("Ανιχνευτής/ισοπέδωση"); // Probe and Level + LSTR MSG_BED_LEVELING = _UxGT("Επιπεδοποίηση κλίνης"); // Bed Leveling + LSTR MSG_LEVEL_BED = _UxGT("Επιπεδοποίηση κλίνης"); // Level Bed + LSTR MSG_MOVE_X = _UxGT("Μετακίνηση X"); // Move X + LSTR MSG_MOVE_Y = _UxGT("Μετακίνηση Y"); // Move Y + LSTR MSG_MOVE_Z = _UxGT("Μετακίνηση Z"); // Move Z + LSTR MSG_MOVE_N = _UxGT("Μετακίνηση @"); // Move @ + LSTR MSG_MOVE_E = _UxGT("Εξωθητής"); // Move Extruder + LSTR MSG_MOVE_EN = _UxGT("Εξωθητής *"); // Move * + LSTR MSG_MOVE_N_MM = _UxGT("Μετακίνηση $μμ"); // Move $mm + LSTR MSG_MOVE_N_IN = _UxGT("Μετακίνηση $in"); // Move $in + LSTR MSG_MOVE_N_DEG = _UxGT("Μετακίνηση $") LCD_STR_DEGREE; // Move $(LCD_STR_DEGREE) + LSTR MSG_SPEED = _UxGT("Ταχύτητα"); // Speed + LSTR MSG_MESH_Z_OFFSET = _UxGT("Επ. Εκτύπωσης Z"); // Bed Z + LSTR MSG_NOZZLE = _UxGT("Ακροφύσιο"); // Nozzle + LSTR MSG_NOZZLE_N = _UxGT("Ακροφύσιο ~"); // Nozzle ~ + LSTR MSG_BED = _UxGT("Επ. Εκτύπωσης"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("Ταχύτητα ανεμιστήρα"); // Fan Speed + LSTR MSG_FAN_SPEED_N = _UxGT("Ταχύτητα ανεμιστήρα ~"); // Fan Speed ~ + LSTR MSG_FLOW = _UxGT("Ροή"); // Flow + LSTR MSG_FLOW_N = _UxGT("Ροή ~"); // Flow ~ + LSTR MSG_CONTROL = _UxGT("Έλεγχος"); // Control + LSTR MSG_AUTOTEMP = _UxGT("Αυτορρύθμιση θερ/σίας"); // Autotemp + LSTR MSG_ACC = _UxGT("Επιτάχυνση"); // Accel + LSTR MSG_VTRAV_MIN = _UxGT("Vελάχ. μετατόπιση"); // Min Travel Speed + LSTR MSG_ACCELERATION = _UxGT("Accel"); // Acceleration + LSTR MSG_AMAX_A = _UxGT("Aμεγ ") STR_A; // Max (STR_A) Accel + LSTR MSG_AMAX_B = _UxGT("Aμεγ ") STR_B; // Max (STR_B) Accel + LSTR MSG_AMAX_C = _UxGT("Aμεγ ") STR_C; // Max (STR_C) Accel + LSTR MSG_AMAX_N = _UxGT("Aμεγ @"); // Max @ Accel + LSTR MSG_AMAX_E = _UxGT("Aμεγ E"); // Max E Accel + LSTR MSG_AMAX_EN = _UxGT("Aμεγ *"); // Max * Accel + LSTR MSG_A_RETRACT = _UxGT("Α-ανάσυρση"); // Retract Accel + LSTR MSG_A_TRAVEL = _UxGT("Α-μετατόπιση"); // Travel Accel + LSTR MSG_STEPS_PER_MM = _UxGT("Bήματα ανά μμ"); // Steps/mm + LSTR MSG_A_STEPS = _UxGT("Bήματα ") STR_A _UxGT(" ανά μμ"); // (STR_A) Steps/mm + LSTR MSG_B_STEPS = _UxGT("Bήματα ") STR_B _UxGT(" ανά μμ"); // (STR_B) Steps/mm + LSTR MSG_C_STEPS = _UxGT("Bήματα ") STR_C _UxGT(" ανά μμ"); // (STR_C) Steps/mm + LSTR MSG_N_STEPS = _UxGT("Bήματα @ ανά μμ"); // @ steps/mm + LSTR MSG_E_STEPS = _UxGT("Bήματα Ε ανά μμ"); // E steps/mm + LSTR MSG_EN_STEPS = _UxGT("Bήματα * ανά μμ"); // * Steps/mm + LSTR MSG_TEMPERATURE = _UxGT("Θερμοκρασία"); // Temperature + LSTR MSG_MOTION = _UxGT("Κίνηση"); // Motion + LSTR MSG_FILAMENT = _UxGT("Νήμα"); // Filament + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("Ε σε mm") SUPERSCRIPT_THREE; // E in mm(SUPERSCRIPT_THREE) + LSTR MSG_FILAMENT_DIAM = _UxGT("Διάμετρος νήματος"); // Fil. Dia. + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Διάμετρος νήματος *"); // Fil. Dia. * + LSTR MSG_CONTRAST = _UxGT("Αντίθεση LCD"); // LCD Contrast + LSTR MSG_STORE_EEPROM = _UxGT("Αποθήκευση σε EEPROM"); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("Φόρτωση από EEPROM"); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("Επαναφορά προεπιλογών"); // Restore Defaults + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Ανανέωση"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT("Οθόνη πληροφόρησης"); // Info Screen + LSTR MSG_PREPARE = _UxGT("Προετοιμασία"); // Prepare + LSTR MSG_TUNE = _UxGT("Συντονισμός"); // Tune + LSTR MSG_PAUSE_PRINT = _UxGT("Παύση εκτύπωσης"); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("Συνέχιση εκτύπωσης"); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("Διακοπή εκτύπωσης"); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("Εκτύπωση από SD"); // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = _UxGT("Δεν βρέθηκε SD"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_DWELL = _UxGT("Αναστολή λειτουργίας"); // Sleep... + LSTR MSG_USERWAIT = _UxGT("Αναμονή για χρήστη"); // Click to Resume... + LSTR MSG_PRINT_ABORTED = _UxGT("Εκτύπωση διεκόπη"); // Print Aborted + LSTR MSG_NO_MOVE = _UxGT("Καμία κίνηση."); // No Move. + LSTR MSG_KILLED = _UxGT("ΤΕΡΜΑΤΙΣΜΟΣ. "); // KILLED. + LSTR MSG_STOPPED = _UxGT("ΔΙΑΚΟΠΗ. "); // STOPPED. + LSTR MSG_CONTROL_RETRACT = _UxGT("Ανάσυρση μμ"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Εναλλαγή ανάσυρσης mm"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACTF = _UxGT("Ανάσυρση V"); // Retract V + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Μεταπήδηση mm"); // Hop mm + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Unretr. mm"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("S Unretr. mm"); // S Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Unretract V"); // Unretract V + LSTR MSG_AUTORETRACT = _UxGT("Αυτόματη ανάσυρση"); // Auto-Retract + LSTR MSG_FILAMENTCHANGE = _UxGT("Αλλαγή νήματος"); // Change Filament + LSTR MSG_FILAMENTCHANGE_E = _UxGT("Αλλαγή νήματος *"); // Change * Filament + LSTR MSG_ATTACH_MEDIA = _UxGT("Προετοιμασία SD"); // Attach (MEDIA_TYPE_EN) + LSTR MSG_ATTACH_SD = _UxGT("Προετοιμασία SD"); // Attach SD Card + LSTR MSG_ATTACH_USB = _UxGT("Προετοιμασία USB"); // Attach USB Drive + LSTR MSG_CHANGE_MEDIA = _UxGT("Αλλαγή κάρτας SD"); // Refresh (MEDIA_TYPE_EN) + LSTR MSG_RUN_AUTOFILES = _UxGT("Αυτόματη εκκίνηση"); // Run Autofiles + LSTR MSG_ZPROBE_OUT = _UxGT("Διερεύνηση Z εκτός Επ.Εκτύπωσης"); // Z Probe Past Bed + LSTR MSG_ZPROBE_XOFFSET = _UxGT("Μετατόπιση X"); // Probe X Offset + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Μετατόπιση Y"); // Probe Y Offset + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Μετατόπιση Z"); // Probe Z Offset + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Μετατόπιση @"); // Probe @ Offset + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Βήμα Z ρύθμιση"); // Babystep Probe Z + LSTR MSG_BABYSTEP_X = _UxGT("Μικρό βήμα Χ"); // Babystep X + LSTR MSG_BABYSTEP_Y = _UxGT("Μικρό βήμα Υ"); // Babystep Y + LSTR MSG_BABYSTEP_Z = _UxGT("Μικρό βήμα Z"); // Babystep Z + LSTR MSG_ENDSTOP_ABORT = _UxGT("Ακύρωση endstop"); // Endstop Abort + LSTR MSG_ERR_HEATING_FAILED = _UxGT("Αποτυχία θέρμανσης"); // Heating Failed + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("ΠΛΕΟΝΑZΟΥΣΑ ΘΕΡΜΟΤΗΤΑ"); // Err: REDUNDANT TEMP + LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("ΘΕΡΜΙΚΗ ΔΙΑΦΥΓΗ"); // THERMAL RUNAWAY + LSTR MSG_ERR_MAXTEMP = _UxGT("ΠΕΡΙΤΤΗ ΘΕΡΜΟΚΡΑΣΙΑ"); // Err: MAXTEMP + LSTR MSG_ERR_MINTEMP = _UxGT("ΑΝΕΠΑΡΚΗΣ ΘΕΡΜΟΚΡΑΣΙΑ"); // Err: MINTEMP + LSTR MSG_HALTED = _UxGT("Εκτυπωτής διεκόπη"); // PRINTER HALTED + LSTR MSG_HEATING = _UxGT("Θερμαίνεται…"); // Heating... + LSTR MSG_BED_HEATING = _UxGT("Θέρμανση κλίνης"); // Bed Heating... + LSTR MSG_DELTA_CALIBRATE = _UxGT("Βαθμονόμηση Delta"); // Delta Calibration + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Βαθμονόμηση X"); // Calibrate X + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Βαθμονόμηση Y"); // Calibrate Y + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Βαθμονόμηση Z"); // Calibrate Z + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Βαθμονόμηση κέντρου"); // Calibrate Center + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); // (LCD_STR_THERMOMETER) Min + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); // (LCD_STR_THERMOMETER) Max + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fact"); // (LCD_STR_THERMOMETER) Fact + LSTR MSG_LCD_ON = _UxGT("Ενεργοποιημένο"); // On + LSTR MSG_LCD_OFF = _UxGT("Απενεργοποιημένο"); // Off + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Εσφαλμένος εκτυπωτής"); // INCORRECT PRINTER + LSTR MSG_YES = _UxGT("ΝΑΙ"); // YES + LSTR MSG_NO = _UxGT("ΟΧΙ"); // NO + LSTR MSG_BACK = _UxGT("Πίσω"); // Back + LSTR MSG_MEDIA_ABORTING = _UxGT("Ματαίωση..."); // Aborting... + LSTR MSG_MEDIA_READ_ERROR = MEDIA_TYPE_EN _UxGT(" σφάλμα ανάγνωσης"); // (MEDIA_TYPE_EN) read error + LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB αφαιρέθη"); // USB device removed + LSTR MSG_USB_FD_USB_FAILED = _UxGT("Αποτυχία εκκίνησης USB"); // USB start failed + LSTR MSG_ADVANCED_SETTINGS = _UxGT("Προχωρημένες ρυθμίσεις"); // Advanced Settings + LSTR MSG_CONFIGURATION = _UxGT("Διαμόρφωση"); // Configuration + LSTR MSG_VA_JERK = _UxGT("Vαντίδραση ") STR_A; // Max (STR_A) Jerk + LSTR MSG_VB_JERK = _UxGT("Vαντίδραση ") STR_B; // Max (STR_B) Jerk + LSTR MSG_VC_JERK = _UxGT("Vαντίδραση ") STR_C; // Max (STR_C) Jerk + LSTR MSG_VN_JERK = _UxGT("Vαντίδραση @"); // Max @ Jerk + LSTR MSG_VE_JERK = _UxGT("Vαντίδραση E"); // Max E Jerk + LSTR MSG_VMAX_A = _UxGT("V Μέγιστο") STR_A; // Max (STR_A) Speed + LSTR MSG_VMAX_B = _UxGT("V Μέγιστο") STR_B; // Max (STR_B) Speed + LSTR MSG_VMAX_C = _UxGT("V Μέγιστο") STR_C; // Max (STR_C) Speed + LSTR MSG_VMAX_N = _UxGT("V Μέγιστο@"); // Max @ Speed + LSTR MSG_VMAX_E = _UxGT("V ΜέγιστοE"); // Max E Speed + LSTR MSG_VMAX_EN = _UxGT("V Μέγιστο *"); // Max * Speed + LSTR MSG_VMIN = _UxGT("V Ελάχιστο"); // Min Velocity + LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Αποτυχία αρχικοποίησης SD"); // (MEDIA_TYPE_EN) Init Fail + LSTR MSG_ERR_TEMP_MALFUNCTION = _UxGT("ΘΕΡΜΙΚΗ ΔΥΣΛΕΙΤΟΥΡΓΙΑ"); // TEMP MALFUNCTION } namespace LanguageWide_el { using namespace LanguageNarrow_el; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 #endif } diff --git a/Marlin/src/lcd/language/language_el_gr.h b/Marlin/src/lcd/language/language_el_gr.h index affde7a080..218e77ae6b 100644 --- a/Marlin/src/lcd/language/language_el_gr.h +++ b/Marlin/src/lcd/language/language_el_gr.h @@ -44,175 +44,169 @@ namespace LanguageNarrow_el_gr { constexpr uint8_t CHARSIZE = 2; LSTR LANGUAGE = _UxGT("Greek (Greece)"); - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" έτοιμο."); - LSTR MSG_MEDIA_INSERTED = _UxGT("Εισαγωγή κάρτας"); - LSTR MSG_MEDIA_REMOVED = _UxGT("Αφαίρεση κάρτας"); - LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Max length 8 characters - LSTR MSG_MAIN_MENU = _UxGT("Βασική Οθόνη"); - LSTR MSG_DISABLE_STEPPERS = _UxGT("Απενεργοποίηση βηματιστή"); - LSTR MSG_AUTO_HOME = _UxGT("Αυτομ. επαναφορά στο αρχικό σημείο"); - LSTR MSG_AUTO_HOME_X = _UxGT("Αρχικό σημείο X"); - LSTR MSG_AUTO_HOME_Y = _UxGT("Αρχικό σημείο Y"); - LSTR MSG_AUTO_HOME_Z = _UxGT("Αρχικό σημείο Z"); - LSTR MSG_LEVEL_BED_HOMING = _UxGT("Επαναφορά στο αρχικό σημείο ΧΥZ"); - LSTR MSG_LEVEL_BED_WAITING = _UxGT("Κάντε κλικ για να ξεκινήσετε"); - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Επόμενο σημείο"); - LSTR MSG_LEVEL_BED_DONE = _UxGT("Ολοκλήρωση επιπεδοποίησης!"); - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Ορισμός βασικών μετατοπίσεων"); - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Εφαρμόστηκαν οι μετατοπίσεις"); - - LSTR MSG_PREHEAT_1 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" όλα"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" κλίνη"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" επιβεβαίωση"); - - LSTR MSG_PREHEAT_M = _UxGT("Προθέρμανση $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Προθέρμανση $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Προθέρμανση $ End"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Προθέρμανση $ End ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Προθέρμανση $ όλα"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Προθέρμανση $ κλίνη"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Προθέρμανση $ επιβεβαίωση"); - - LSTR MSG_COOLDOWN = _UxGT("Μειωση θερμοκρασιας"); - LSTR MSG_SWITCH_PS_ON = _UxGT("Ενεργοποίηση"); - LSTR MSG_SWITCH_PS_OFF = _UxGT("Απενεργοποίηση"); - LSTR MSG_EXTRUDE = _UxGT("Εξώθηση"); - LSTR MSG_RETRACT = _UxGT("Ανάσυρση"); - LSTR MSG_MOVE_AXIS = _UxGT("Μετακίνηση άξονα"); - LSTR MSG_PROBE_AND_LEVEL = _UxGT("Ανιχνευτής/ισοπέδωση"); - LSTR MSG_BED_LEVELING = _UxGT("Επιπεδοποίηση κλίνης"); - LSTR MSG_LEVEL_BED = _UxGT("Επιπεδοποίηση κλίνης"); - LSTR MSG_MOVE_X = _UxGT("Μετακίνηση X"); - LSTR MSG_MOVE_Y = _UxGT("Μετακίνηση Y"); - LSTR MSG_MOVE_Z = _UxGT("Μετακίνηση Z"); - LSTR MSG_MOVE_N = _UxGT("Μετακίνηση @"); - LSTR MSG_MOVE_E = _UxGT("Εξωθητήρας"); - LSTR MSG_MOVE_EN = _UxGT("Εξωθητήρας *"); - LSTR MSG_MOVE_N_MM = _UxGT("Μετακίνηση $μμ"); - LSTR MSG_MOVE_N_IN = _UxGT("Μετακίνηση $in"); - LSTR MSG_MOVE_N_DEG = _UxGT("Μετακίνηση $") LCD_STR_DEGREE; - LSTR MSG_SPEED = _UxGT("Ταχύτητα"); - LSTR MSG_MESH_Z_OFFSET = _UxGT("Κλίνη Z"); - LSTR MSG_NOZZLE = _UxGT("Ακροφύσιο"); - LSTR MSG_NOZZLE_N = _UxGT("Ακροφύσιο ~"); - LSTR MSG_BED = _UxGT("Κλίνη"); - LSTR MSG_FAN_SPEED = _UxGT("Ταχύτητα ανεμιστήρα"); - LSTR MSG_FAN_SPEED_N = _UxGT("Ταχύτητα ανεμιστήρα ~"); - LSTR MSG_FLOW = _UxGT("Ροή"); - LSTR MSG_FLOW_N = _UxGT("Ροή ~"); - LSTR MSG_CONTROL = _UxGT("Έλεγχος"); - LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); - LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fact"); - LSTR MSG_AUTOTEMP = _UxGT("Αυτομ. ρύθμιση θερμοκρασίας"); - LSTR MSG_LCD_ON = _UxGT("Ενεργοποιημένο"); - LSTR MSG_LCD_OFF = _UxGT("Απενεργοποιημένο"); - LSTR MSG_ACC = _UxGT("Επιτάχυνση"); - LSTR MSG_JERK = _UxGT("Vαντίδραση"); - LSTR MSG_VA_JERK = _UxGT("Vαντίδραση ") STR_A; - LSTR MSG_VB_JERK = _UxGT("Vαντίδραση ") STR_B; - LSTR MSG_VC_JERK = _UxGT("Vαντίδραση ") STR_C; - LSTR MSG_VN_JERK = _UxGT("Vαντίδραση @"); - LSTR MSG_VE_JERK = _UxGT("Vαντίδραση E"); - LSTR MSG_VMAX_A = _UxGT("Vμεγ ") STR_A; - LSTR MSG_VMAX_B = _UxGT("Vμεγ ") STR_B; - LSTR MSG_VMAX_C = _UxGT("Vμεγ ") STR_C; - LSTR MSG_VMAX_N = _UxGT("Vμεγ @"); - LSTR MSG_VMAX_E = _UxGT("Vμεγ E"); - LSTR MSG_VMAX_EN = _UxGT("Vμεγ *"); - LSTR MSG_VMIN = _UxGT("Vελαχ"); - LSTR MSG_VTRAV_MIN = _UxGT("Vελάχ. μετατόπιση"); - LSTR MSG_ACCELERATION = _UxGT("Accel"); - LSTR MSG_AMAX_A = _UxGT("Aμεγ ") STR_A; - LSTR MSG_AMAX_B = _UxGT("Aμεγ ") STR_B; - LSTR MSG_AMAX_C = _UxGT("Aμεγ ") STR_C; - LSTR MSG_AMAX_N = _UxGT("Aμεγ @"); - LSTR MSG_AMAX_E = _UxGT("Aμεγ E"); - LSTR MSG_AMAX_EN = _UxGT("Aμεγ *"); - LSTR MSG_A_RETRACT = _UxGT("Α-ανάσυρση"); - LSTR MSG_A_TRAVEL = _UxGT("Α-μετατόπιση"); - LSTR MSG_STEPS_PER_MM = _UxGT("Bήματα ανά μμ"); - LSTR MSG_A_STEPS = _UxGT("Bήματα ") STR_A _UxGT(" ανά μμ"); - LSTR MSG_B_STEPS = _UxGT("Bήματα ") STR_B _UxGT(" ανά μμ"); - LSTR MSG_C_STEPS = _UxGT("Bήματα ") STR_C _UxGT(" ανά μμ"); - LSTR MSG_N_STEPS = _UxGT("Bήματα @ ανά μμ"); - LSTR MSG_E_STEPS = _UxGT("Bήματα Ε ανά μμ"); - LSTR MSG_EN_STEPS = _UxGT("Bήματα * ανά μμ"); - LSTR MSG_TEMPERATURE = _UxGT("Θερμοκρασία"); - LSTR MSG_MOTION = _UxGT("Κίνηση"); - LSTR MSG_FILAMENT = _UxGT("Νήμα"); - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("Ε σε μμ") SUPERSCRIPT_THREE; - LSTR MSG_FILAMENT_DIAM = _UxGT("Διάμετρος νήματος"); - LSTR MSG_FILAMENT_DIAM_E = _UxGT("Διάμετρος νήματος *"); - LSTR MSG_CONTRAST = _UxGT("Κοντράστ LCD"); - LSTR MSG_STORE_EEPROM = _UxGT("Αποθήκευση"); - LSTR MSG_LOAD_EEPROM = _UxGT("Φόρτωση"); - LSTR MSG_RESTORE_DEFAULTS = _UxGT("Επαναφορά ασφαλούς αντιγράφου"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Ανανέωση"); - LSTR MSG_INFO_SCREEN = _UxGT("Οθόνη πληροφόρησης"); - LSTR MSG_PREPARE = _UxGT("Προετοιμασία"); - LSTR MSG_TUNE = _UxGT("Συντονισμός"); - LSTR MSG_PAUSE_PRINT = _UxGT("Παύση εκτύπωσης"); - LSTR MSG_RESUME_PRINT = _UxGT("Συνέχιση εκτύπωσης"); - LSTR MSG_STOP_PRINT = _UxGT("Διακοπή εκτύπωσης"); - LSTR MSG_MEDIA_MENU = _UxGT("Εκτύπωση από SD"); - LSTR MSG_NO_MEDIA = _UxGT("Δεν βρέθηκε SD"); - LSTR MSG_DWELL = _UxGT("Αναστολή λειτουργίας…"); - LSTR MSG_USERWAIT = _UxGT("Αναμονή για χρήστη…"); - LSTR MSG_PRINT_ABORTED = _UxGT("Διακόπτεται η εκτύπωση"); - LSTR MSG_NO_MOVE = _UxGT("Καμία κίνηση."); - LSTR MSG_KILLED = _UxGT("ΤΕΡΜΑΤΙΣΜΟΣ. "); - LSTR MSG_STOPPED = _UxGT("ΔΙΑΚΟΠΗ. "); - LSTR MSG_CONTROL_RETRACT = _UxGT("Ανάσυρση μμ"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Εναλλαγή ανάσυρσης μμ"); - LSTR MSG_CONTROL_RETRACTF = _UxGT("Ανάσυρση V"); - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Μεταπήδηση μμ"); - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Unretr. mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("S Unretr. mm"); - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Unretract V"); - LSTR MSG_AUTORETRACT = _UxGT("Αυτόματη ανάσυρση"); - LSTR MSG_FILAMENTCHANGE = _UxGT("Αλλαγή νήματος"); - LSTR MSG_FILAMENTCHANGE_E = _UxGT("Αλλαγή νήματος *"); - - LSTR MSG_ATTACH_MEDIA = _UxGT("Προετοιμασία SD"); - LSTR MSG_ATTACH_SD = _UxGT("Προετοιμασία SD"); - LSTR MSG_ATTACH_USB = _UxGT("Προετοιμασία USB"); - LSTR MSG_CHANGE_MEDIA = _UxGT("Αλλαγή κάρτας SD"); - LSTR MSG_RUN_AUTOFILES = _UxGT("Αυτόματη εκκίνηση"); - - LSTR MSG_ZPROBE_OUT = _UxGT("Διερεύνηση Z εκτός κλίνης"); - LSTR MSG_ZPROBE_XOFFSET = _UxGT("Μετατόπιση X"); - LSTR MSG_ZPROBE_YOFFSET = _UxGT("Μετατόπιση Y"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Μετατόπιση Z"); - LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Μετατόπιση @"); - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Βήμα Z ρύθμιση"); - LSTR MSG_BABYSTEP_X = _UxGT("Μικρό βήμα Χ"); - LSTR MSG_BABYSTEP_Y = _UxGT("Μικρό βήμα Υ"); - LSTR MSG_BABYSTEP_Z = _UxGT("Μικρό βήμα Z"); - LSTR MSG_ENDSTOP_ABORT = _UxGT("Ματαίωση endstop "); - LSTR MSG_ERR_HEATING_FAILED = _UxGT("Ανεπιτυχής θέρμανση"); - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Λάθος: ΠΛΕΟΝΑZΟΥΣΑ ΘΕΡΜΟΤΗΤΑ"); - LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("ΔΙΑΦΥΓΗ ΘΕΡΜΟΤΗΤΑΣ"); - LSTR MSG_ERR_MAXTEMP = _UxGT("Λάθος: ΜΕΓΙΣΤΗ ΘΕΡΜΟΤΗΤΑ"); - LSTR MSG_ERR_MINTEMP = _UxGT("Λάθος: ΕΛΑΧΙΣΤΗ ΘΕΡΜΟΤΗΤΑ"); - LSTR MSG_HEATING = _UxGT("Θερμαίνεται…"); - LSTR MSG_BED_HEATING = _UxGT("Θέρμανση κλίνης…"); - LSTR MSG_DELTA_CALIBRATE = _UxGT("Βαθμονόμηση Delta"); - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Βαθμονόμηση X"); - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Βαθμονόμηση Y"); - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Βαθμονόμηση Z"); - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Βαθμονόμηση κέντρου"); - - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Εσφαλμένος εκτυπωτής"); + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" έτοιμο."); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = _UxGT("Εισαγωγή κάρτας"); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = _UxGT("Αφαίρεση κάρτας"); // (MEDIA_TYPE_EN) Removed + LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Endstops + LSTR MSG_MAIN_MENU = _UxGT("Βασική Οθόνη"); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("Απενεργοποίηση βηματιστή"); // Disable Steppers + LSTR MSG_AUTO_HOME = _UxGT("Αυτομ. επαναφορά στο αρχικό σημείο"); // Auto Home + LSTR MSG_AUTO_HOME_X = _UxGT("Αρχικό σημείο X"); // Home X + LSTR MSG_AUTO_HOME_Y = _UxGT("Αρχικό σημείο Y"); // Home Y + LSTR MSG_AUTO_HOME_Z = _UxGT("Αρχικό σημείο Z"); // Home Z + LSTR MSG_LEVEL_BED_HOMING = _UxGT("Επαναφορά στο αρχικό σημείο ΧΥZ"); // Homing XYZ + LSTR MSG_LEVEL_BED_WAITING = _UxGT("Κάντε κλικ για να ξεκινήσετε"); // Click to Begin + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Επόμενο σημείο"); // Next Point + LSTR MSG_LEVEL_BED_DONE = _UxGT("Ολοκλήρωση επιπεδοποίησης!"); // Leveling Done! + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Ορισμός βασικών μετατοπίσεων"); // Set Home Offsets + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Εφαρμόστηκαν οι μετατοπίσεις"); // Offsets Applied + LSTR MSG_PREHEAT_1 = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL " ~"; // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End"); // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" End ~"); // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_1_ALL = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" όλα"); // Preheat (PREHEAT_1_LABEL) All + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" κλίνη"); // Preheat (PREHEAT_1_LABEL) Bed + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Προθέρμανση ") PREHEAT_1_LABEL _UxGT(" επιβεβαίωση"); // Preheat (PREHEAT_1_LABEL) Conf + LSTR MSG_PREHEAT_M = _UxGT("Προθέρμανση $"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("Προθέρμανση $ ~"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("Προθέρμανση $ End"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("Προθέρμανση $ End ~"); // Preheat $ End ~ + LSTR MSG_PREHEAT_M_ALL = _UxGT("Προθέρμανση $ όλα"); // Preheat $ All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Προθέρμανση $ κλίνη"); // Preheat $ Bed + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Προθέρμανση $ επιβεβαίωση"); // Preheat $ Conf + LSTR MSG_COOLDOWN = _UxGT("Μειωση θερμοκρασιας"); // Cooldown + LSTR MSG_SWITCH_PS_ON = _UxGT("Ενεργοποίηση"); // Switch Power On + LSTR MSG_SWITCH_PS_OFF = _UxGT("Απενεργοποίηση"); // Switch Power Off + LSTR MSG_EXTRUDE = _UxGT("Εξώθηση"); // Extrude + LSTR MSG_RETRACT = _UxGT("Ανάσυρση"); // Retract + LSTR MSG_MOVE_AXIS = _UxGT("Μετακίνηση άξονα"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("Ανιχνευτής/ισοπέδωση"); // Probe and Level + LSTR MSG_BED_LEVELING = _UxGT("Επιπεδοποίηση κλίνης"); // Bed Leveling + LSTR MSG_LEVEL_BED = _UxGT("Επιπεδοποίηση κλίνης"); // Level Bed + LSTR MSG_MOVE_X = _UxGT("Μετακίνηση X"); // Move X + LSTR MSG_MOVE_Y = _UxGT("Μετακίνηση Y"); // Move Y + LSTR MSG_MOVE_Z = _UxGT("Μετακίνηση Z"); // Move Z + LSTR MSG_MOVE_N = _UxGT("Μετακίνηση @"); // Move @ + LSTR MSG_MOVE_E = _UxGT("Εξωθητήρας"); // Move Extruder + LSTR MSG_MOVE_EN = _UxGT("Εξωθητήρας *"); // Move * + LSTR MSG_MOVE_N_MM = _UxGT("Μετακίνηση $μμ"); // Move $mm + LSTR MSG_MOVE_N_IN = _UxGT("Μετακίνηση $in"); // Move $in + LSTR MSG_MOVE_N_DEG = _UxGT("Μετακίνηση $") LCD_STR_DEGREE; // Move $(LCD_STR_DEGREE) + LSTR MSG_SPEED = _UxGT("Ταχύτητα"); // Speed + LSTR MSG_MESH_Z_OFFSET = _UxGT("Κλίνη Z"); // Bed Z + LSTR MSG_NOZZLE = _UxGT("Ακροφύσιο"); // Nozzle + LSTR MSG_NOZZLE_N = _UxGT("Ακροφύσιο ~"); // Nozzle ~ + LSTR MSG_BED = _UxGT("Κλίνη"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("Ταχύτητα ανεμιστήρα"); // Fan Speed + LSTR MSG_FAN_SPEED_N = _UxGT("Ταχύτητα ανεμιστήρα ~"); // Fan Speed ~ + LSTR MSG_FLOW = _UxGT("Ροή"); // Flow + LSTR MSG_FLOW_N = _UxGT("Ροή ~"); // Flow ~ + LSTR MSG_CONTROL = _UxGT("Έλεγχος"); // Control + LSTR MSG_AUTOTEMP = _UxGT("Αυτομ. ρύθμιση θερμοκρασίας"); // Autotemp + LSTR MSG_ACC = _UxGT("Επιτάχυνση"); // Accel + LSTR MSG_VTRAV_MIN = _UxGT("Vελάχ. μετατόπιση"); // Min Travel Speed + LSTR MSG_ACCELERATION = _UxGT("Accel"); // Acceleration + LSTR MSG_AMAX_A = _UxGT("Aμεγ ") STR_A; // Max (STR_A) Accel + LSTR MSG_AMAX_B = _UxGT("Aμεγ ") STR_B; // Max (STR_B) Accel + LSTR MSG_AMAX_C = _UxGT("Aμεγ ") STR_C; // Max (STR_C) Accel + LSTR MSG_AMAX_N = _UxGT("Aμεγ @"); // Max @ Accel + LSTR MSG_AMAX_E = _UxGT("Aμεγ E"); // Max E Accel + LSTR MSG_AMAX_EN = _UxGT("Aμεγ *"); // Max * Accel + LSTR MSG_A_RETRACT = _UxGT("Α-ανάσυρση"); // Retract Accel + LSTR MSG_A_TRAVEL = _UxGT("Α-μετατόπιση"); // Travel Accel + LSTR MSG_STEPS_PER_MM = _UxGT("Bήματα ανά μμ"); // Steps/mm + LSTR MSG_A_STEPS = _UxGT("Bήματα ") STR_A _UxGT(" ανά μμ"); // (STR_A) Steps/mm + LSTR MSG_B_STEPS = _UxGT("Bήματα ") STR_B _UxGT(" ανά μμ"); // (STR_B) Steps/mm + LSTR MSG_C_STEPS = _UxGT("Bήματα ") STR_C _UxGT(" ανά μμ"); // (STR_C) Steps/mm + LSTR MSG_N_STEPS = _UxGT("Bήματα @ ανά μμ"); // @ steps/mm + LSTR MSG_E_STEPS = _UxGT("Bήματα Ε ανά μμ"); // E steps/mm + LSTR MSG_EN_STEPS = _UxGT("Bήματα * ανά μμ"); // * Steps/mm + LSTR MSG_TEMPERATURE = _UxGT("Θερμοκρασία"); // Temperature + LSTR MSG_MOTION = _UxGT("Κίνηση"); // Motion + LSTR MSG_FILAMENT = _UxGT("Νήμα"); // Filament + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("Ε σε μμ") SUPERSCRIPT_THREE; // E in mm(SUPERSCRIPT_THREE) + LSTR MSG_FILAMENT_DIAM = _UxGT("Διάμετρος νήματος"); // Fil. Dia. + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Διάμετρος νήματος *"); // Fil. Dia. * + LSTR MSG_CONTRAST = _UxGT("Κοντράστ LCD"); // LCD Contrast + LSTR MSG_STORE_EEPROM = _UxGT("Αποθήκευση"); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("Φόρτωση"); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("Επαναφορά ασφαλούς αντιγράφου"); // Restore Defaults + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Ανανέωση"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT("Οθόνη πληροφόρησης"); // Info Screen + LSTR MSG_PREPARE = _UxGT("Προετοιμασία"); // Prepare + LSTR MSG_TUNE = _UxGT("Συντονισμός"); // Tune + LSTR MSG_PAUSE_PRINT = _UxGT("Παύση εκτύπωσης"); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("Συνέχιση εκτύπωσης"); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("Διακοπή εκτύπωσης"); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("Εκτύπωση από SD"); // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = _UxGT("Δεν βρέθηκε SD"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_DWELL = _UxGT("Αναστολή λειτουργίας…"); // Sleep... + LSTR MSG_USERWAIT = _UxGT("Αναμονή για χρήστη…"); // Click to Resume... + LSTR MSG_PRINT_ABORTED = _UxGT("Διακόπτεται η εκτύπωση"); // Print Aborted + LSTR MSG_NO_MOVE = _UxGT("Καμία κίνηση."); // No Move. + LSTR MSG_KILLED = _UxGT("ΤΕΡΜΑΤΙΣΜΟΣ. "); // KILLED. + LSTR MSG_STOPPED = _UxGT("ΔΙΑΚΟΠΗ. "); // STOPPED. + LSTR MSG_CONTROL_RETRACT = _UxGT("Ανάσυρση μμ"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Εναλλαγή ανάσυρσης μμ"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACTF = _UxGT("Ανάσυρση V"); // Retract V + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Μεταπήδηση μμ"); // Hop mm + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Unretr. mm"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("S Unretr. mm"); // S Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Unretract V"); // Unretract V + LSTR MSG_AUTORETRACT = _UxGT("Αυτόματη ανάσυρση"); // Auto-Retract + LSTR MSG_FILAMENTCHANGE = _UxGT("Αλλαγή νήματος"); // Change Filament + LSTR MSG_FILAMENTCHANGE_E = _UxGT("Αλλαγή νήματος *"); // Change * Filament + LSTR MSG_ATTACH_MEDIA = _UxGT("Προετοιμασία SD"); // Attach (MEDIA_TYPE_EN) + LSTR MSG_ATTACH_SD = _UxGT("Προετοιμασία SD"); // Attach SD Card + LSTR MSG_ATTACH_USB = _UxGT("Προετοιμασία USB"); // Attach USB Drive + LSTR MSG_CHANGE_MEDIA = _UxGT("Αλλαγή κάρτας SD"); // Refresh (MEDIA_TYPE_EN) + LSTR MSG_RUN_AUTOFILES = _UxGT("Αυτόματη εκκίνηση"); // Run Autofiles + LSTR MSG_ZPROBE_OUT = _UxGT("Διερεύνηση Z εκτός κλίνης"); // Z Probe Past Bed + LSTR MSG_ZPROBE_XOFFSET = _UxGT("Μετατόπιση X"); // Probe X Offset + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Μετατόπιση Y"); // Probe Y Offset + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Μετατόπιση Z"); // Probe Z Offset + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Μετατόπιση @"); // Probe @ Offset + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Βήμα Z ρύθμιση"); // Babystep Probe Z + LSTR MSG_BABYSTEP_X = _UxGT("Μικρό βήμα Χ"); // Babystep X + LSTR MSG_BABYSTEP_Y = _UxGT("Μικρό βήμα Υ"); // Babystep Y + LSTR MSG_BABYSTEP_Z = _UxGT("Μικρό βήμα Z"); // Babystep Z + LSTR MSG_ENDSTOP_ABORT = _UxGT("Ματαίωση endstop "); // Endstop Abort + LSTR MSG_ERR_HEATING_FAILED = _UxGT("Ανεπιτυχής θέρμανση"); // Heating Failed + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Λάθος: ΠΛΕΟΝΑZΟΥΣΑ ΘΕΡΜΟΤΗΤΑ"); // Err: REDUNDANT TEMP + LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("ΔΙΑΦΥΓΗ ΘΕΡΜΟΤΗΤΑΣ"); // THERMAL RUNAWAY + LSTR MSG_ERR_MAXTEMP = _UxGT("Λάθος: ΜΕΓΙΣΤΗ ΘΕΡΜΟΤΗΤΑ"); // Err: MAXTEMP + LSTR MSG_ERR_MINTEMP = _UxGT("Λάθος: ΕΛΑΧΙΣΤΗ ΘΕΡΜΟΤΗΤΑ"); // Err: MINTEMP + LSTR MSG_HEATING = _UxGT("Θερμαίνεται…"); // Heating... + LSTR MSG_BED_HEATING = _UxGT("Θέρμανση κλίνης…"); // Bed Heating... + LSTR MSG_DELTA_CALIBRATE = _UxGT("Βαθμονόμηση Delta"); // Delta Calibration + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Βαθμονόμηση X"); // Calibrate X + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Βαθμονόμηση Y"); // Calibrate Y + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Βαθμονόμηση Z"); // Calibrate Z + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Βαθμονόμηση κέντρου"); // Calibrate Center + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); // (LCD_STR_THERMOMETER) Min + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); // (LCD_STR_THERMOMETER) Max + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fact"); // (LCD_STR_THERMOMETER) Fact + LSTR MSG_LCD_ON = _UxGT("Ενεργοποιημένο"); // On + LSTR MSG_LCD_OFF = _UxGT("Απενεργοποιημένο"); // Off + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Εσφαλμένος εκτυπωτής"); // INCORRECT PRINTER + LSTR MSG_JERK = _UxGT("Vαντίδραση"); // Jerk + LSTR MSG_VA_JERK = _UxGT("Vαντίδραση ") STR_A; // Max (STR_A) Jerk + LSTR MSG_VB_JERK = _UxGT("Vαντίδραση ") STR_B; // Max (STR_B) Jerk + LSTR MSG_VC_JERK = _UxGT("Vαντίδραση ") STR_C; // Max (STR_C) Jerk + LSTR MSG_VN_JERK = _UxGT("Vαντίδραση @"); // Max @ Jerk + LSTR MSG_VE_JERK = _UxGT("Vαντίδραση E"); // Max E Jerk + LSTR MSG_VMAX_A = _UxGT("Vμεγ ") STR_A; // Max (STR_A) Speed + LSTR MSG_VMAX_B = _UxGT("Vμεγ ") STR_B; // Max (STR_B) Speed + LSTR MSG_VMAX_C = _UxGT("Vμεγ ") STR_C; // Max (STR_C) Speed + LSTR MSG_VMAX_N = _UxGT("Vμεγ @"); // Max @ Speed + LSTR MSG_VMAX_E = _UxGT("Vμεγ E"); // Max E Speed + LSTR MSG_VMAX_EN = _UxGT("Vμεγ *"); // Max * Speed + LSTR MSG_VMIN = _UxGT("Vελαχ"); // Min Velocity } namespace LanguageWide_el_gr { using namespace LanguageNarrow_el_gr; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 #endif } diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h index 1e1650bf92..0472c9e4ec 100644 --- a/Marlin/src/lcd/language/language_en.h +++ b/Marlin/src/lcd/language/language_en.h @@ -70,193 +70,236 @@ #endif namespace LanguageNarrow_en { + constexpr uint8_t CHARSIZE = 2; LSTR LANGUAGE = _UxGT("English"); - // These strings should be translated LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" Ready."); - LSTR MSG_YES = _UxGT("YES"); - LSTR MSG_NO = _UxGT("NO"); - LSTR MSG_HIGH = _UxGT("HIGH"); - LSTR MSG_LOW = _UxGT("LOW"); - LSTR MSG_BACK = _UxGT("Back"); - LSTR MSG_ERROR = _UxGT("Error"); - - LSTR MSG_MEDIA_ABORTING = _UxGT("Aborting..."); LSTR MSG_MEDIA_INSERTED = MEDIA_TYPE_EN _UxGT(" Inserted"); - LSTR MSG_MEDIA_INSERTED_SD = _UxGT("SD Card Inserted"); - LSTR MSG_MEDIA_INSERTED_USB = _UxGT("USB Drive Inserted"); LSTR MSG_MEDIA_REMOVED = MEDIA_TYPE_EN _UxGT(" Removed"); - LSTR MSG_MEDIA_REMOVED_SD = _UxGT("SD Card Removed"); - LSTR MSG_MEDIA_REMOVED_USB = _UxGT("USB Drive Removed"); - LSTR MSG_MEDIA_INIT_FAIL = MEDIA_TYPE_EN _UxGT(" Init Fail"); - LSTR MSG_MEDIA_INIT_FAIL_SD = _UxGT("SD Card Init Fail"); - LSTR MSG_MEDIA_INIT_FAIL_USB = _UxGT("USB Drive Init Fail"); - LSTR MSG_MEDIA_READ_ERROR = MEDIA_TYPE_EN _UxGT(" read error"); - LSTR MSG_MEDIA_SORT = _UxGT("Sort ") MEDIA_TYPE_EN; - LSTR MSG_MEDIA_UPDATE = MEDIA_TYPE_EN _UxGT(" Update"); - LSTR MSG_USB_FD_WAITING_FOR_MEDIA = _UxGT("Wait for USB Drive"); - LSTR MSG_USB_FD_MEDIA_REMOVED = _UxGT("USB Drive Removed"); - LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB device removed"); - LSTR MSG_USB_FD_USB_FAILED = _UxGT("USB start failed"); - - LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Subcall Overflow"); - LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Max length 8 characters - LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Soft Endstops"); + LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstops"); LSTR MSG_MAIN_MENU = _UxGT("Main Menu"); - LSTR MSG_ADVANCED_SETTINGS = _UxGT("Advanced Settings"); - LSTR MSG_CONFIGURATION = _UxGT("Configuration"); LSTR MSG_DISABLE_STEPPERS = _UxGT("Disable Steppers"); - LSTR MSG_DEBUG_MENU = _UxGT("Debug Menu"); - LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Progress Bar Test"); - LSTR MSG_ENDSTOP_TEST = _UxGT("Endstop Test"); - LSTR MSG_Z_PROBE = _UxGT("Z Probe"); LSTR MSG_HOMING = _UxGT("Homing"); - LSTR MSG_HOMING_FEEDRATE = _UxGT("Homing Feedrate"); - LSTR MSG_HOMING_FEEDRATE_N = _UxGT("@ Homing FR"); LSTR MSG_AUTO_HOME = _UxGT("Auto Home"); - LSTR MSG_HOME_ALL = _UxGT("Home All"); - LSTR MSG_AUTO_HOME_N = _UxGT("Home @"); LSTR MSG_AUTO_HOME_X = _UxGT("Home X"); LSTR MSG_AUTO_HOME_Y = _UxGT("Home Y"); LSTR MSG_AUTO_HOME_Z = _UxGT("Home Z"); - LSTR MSG_Z_AFTER_HOME = _UxGT("Z After Homing"); - LSTR MSG_FILAMENT_SET = _UxGT("Filament Settings"); - LSTR MSG_FILAMENT_MAN = _UxGT("Filament Management"); - LSTR MSG_MANUAL_LEVELING = _UxGT("Manual Leveling"); - LSTR MSG_TRAM_FL = _UxGT("Front Left"); - LSTR MSG_TRAM_FR = _UxGT("Front Right"); - LSTR MSG_TRAM_C = _UxGT("Center"); - LSTR MSG_TRAM_BL = _UxGT("Back Left"); - LSTR MSG_TRAM_BR = _UxGT("Back Right"); - LSTR MSG_MANUAL_MESH = _UxGT("Manual Mesh"); - LSTR MSG_AUTO_MESH = _UxGT("Auto Build Mesh"); - LSTR MSG_AUTO_Z_ALIGN = _UxGT("Auto Z-Align"); - LSTR MSG_ITERATION = _UxGT("G34 Iteration: %i"); - LSTR MSG_DECREASING_ACCURACY = _UxGT("Accuracy Decreasing!"); - LSTR MSG_ACCURACY_ACHIEVED = _UxGT("Accuracy Achieved"); LSTR MSG_LEVEL_BED_HOMING = _UxGT("Homing XYZ"); LSTR MSG_LEVEL_BED_WAITING = _UxGT("Click to Begin"); LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Next Point"); LSTR MSG_LEVEL_BED_DONE = _UxGT("Leveling Done!"); - LSTR MSG_ZERO_MESH_POINT = _UxGT("Zero Current Point"); - LSTR MSG_Z_FADE_HEIGHT = _UxGT("Fade Height"); LSTR MSG_SET_HOME_OFFSETS = _UxGT("Set Home Offsets"); - LSTR MSG_HOME_OFFSET_X = _UxGT("Home Offset X"); // DWIN - LSTR MSG_HOME_OFFSET_Y = _UxGT("Home Offset Y"); // DWIN - LSTR MSG_HOME_OFFSET_Z = _UxGT("Home Offset Z"); // DWIN LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Offsets Applied"); - LSTR MSG_ERR_M428_TOO_FAR = _UxGT("MIN/MAX Too Far"); - LSTR MSG_TRAMMING_WIZARD = _UxGT("Tramming Wizard"); - LSTR MSG_SELECT_ORIGIN = _UxGT("Select Origin"); - LSTR MSG_LAST_VALUE_SP = _UxGT("Last value "); - LSTR MSG_PREHEAT_1 = _UxGT("Preheat ") PREHEAT_1_LABEL; LSTR MSG_PREHEAT_1_H = _UxGT("Preheat ") PREHEAT_1_LABEL " ~"; LSTR MSG_PREHEAT_1_END = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End"); LSTR MSG_PREHEAT_1_END_E = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" End ~"); LSTR MSG_PREHEAT_1_ALL = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" All"); LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" Bed"); - LSTR MSG_PREHEAT_1_CHAMBER = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" Chmb"); LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" Conf"); - - LSTR MSG_PREHEAT_2 = _UxGT("Preheat ") PREHEAT_2_LABEL; - LSTR MSG_PREHEAT_3 = _UxGT("Preheat ") PREHEAT_3_LABEL; - LSTR MSG_PREHEAT_4 = PREHEAT_4_LABEL; - LSTR MSG_PREHEAT_M = _UxGT("Preheat $"); LSTR MSG_PREHEAT_M_H = _UxGT("Preheat $ ~"); LSTR MSG_PREHEAT_M_END = _UxGT("Preheat $ End"); LSTR MSG_PREHEAT_M_END_E = _UxGT("Preheat $ End ~"); LSTR MSG_PREHEAT_M_ALL = _UxGT("Preheat $ All"); LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Preheat $ Bed"); - LSTR MSG_PREHEAT_M_CHAMBER = _UxGT("Preheat $ Chmb"); LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Preheat $ Conf"); - - LSTR MSG_PREHEAT_HOTEND = _UxGT("Preheat Hotend"); - LSTR MSG_PREHEAT_CUSTOM = _UxGT("Preheat Custom"); - LSTR MSG_PREHEAT = _UxGT("Preheat"); LSTR MSG_COOLDOWN = _UxGT("Cooldown"); - - LSTR MSG_CUTTER_FREQUENCY = _UxGT("Frequency"); - LSTR MSG_LASER_MENU = _UxGT("Laser Control"); - LSTR MSG_SPINDLE_MENU = _UxGT("Spindle Control"); - LSTR MSG_LASER_POWER = _UxGT("Laser Power"); - LSTR MSG_SPINDLE_POWER = _UxGT("Spindle Pwr"); - LSTR MSG_LASER_TOGGLE = _UxGT("Toggle Laser"); - LSTR MSG_LASER_EVAC_TOGGLE = _UxGT("Toggle Blower"); - LSTR MSG_LASER_ASSIST_TOGGLE = _UxGT("Air Assist"); - LSTR MSG_LASER_PULSE_MS = _UxGT("Test Pulse ms"); - LSTR MSG_LASER_FIRE_PULSE = _UxGT("Fire Pulse"); - LSTR MSG_FLOWMETER_FAULT = _UxGT("Coolant Flow Fault"); - LSTR MSG_SPINDLE_TOGGLE = _UxGT("Toggle Spindle"); - LSTR MSG_SPINDLE_EVAC_TOGGLE = _UxGT("Toggle Vacuum"); - LSTR MSG_SPINDLE_FORWARD = _UxGT("Spindle Forward"); - LSTR MSG_SPINDLE_REVERSE = _UxGT("Spindle Reverse"); LSTR MSG_SWITCH_PS_ON = _UxGT("Switch Power On"); LSTR MSG_SWITCH_PS_OFF = _UxGT("Switch Power Off"); - LSTR MSG_POWER_EDM_FAULT = _UxGT("Power EDM Fault"); LSTR MSG_EXTRUDE = _UxGT("Extrude"); LSTR MSG_RETRACT = _UxGT("Retract"); LSTR MSG_MOVE_AXIS = _UxGT("Move Axis"); LSTR MSG_PROBE_AND_LEVEL = _UxGT("Probe and Level"); LSTR MSG_BED_LEVELING = _UxGT("Bed Leveling"); LSTR MSG_LEVEL_BED = _UxGT("Level Bed"); + LSTR MSG_MOVE_X = _UxGT("Move X"); + LSTR MSG_MOVE_Y = _UxGT("Move Y"); + LSTR MSG_MOVE_Z = _UxGT("Move Z"); + LSTR MSG_MOVE_N = _UxGT("Move @"); + LSTR MSG_MOVE_E = _UxGT("Move Extruder"); + LSTR MSG_MOVE_EN = _UxGT("Move *"); + LSTR MSG_MOVE_N_MM = _UxGT("Move $mm"); + LSTR MSG_MOVE_N_IN = _UxGT("Move $in"); + LSTR MSG_MOVE_N_DEG = _UxGT("Move $") LCD_STR_DEGREE; + LSTR MSG_SPEED = _UxGT("Speed"); + LSTR MSG_MESH_Z_OFFSET = _UxGT("Bed Z"); + LSTR MSG_NOZZLE = _UxGT("Nozzle"); + LSTR MSG_NOZZLE_N = _UxGT("Nozzle ~"); + LSTR MSG_BED = _UxGT("Bed"); + LSTR MSG_FAN_SPEED = _UxGT("Fan Speed"); + LSTR MSG_FAN_SPEED_N = _UxGT("Fan Speed ~"); + LSTR MSG_FLOW = _UxGT("Flow"); + LSTR MSG_FLOW_N = _UxGT("Flow ~"); + LSTR MSG_CONTROL = _UxGT("Control"); + LSTR MSG_AUTOTEMP = _UxGT("Autotemp"); + LSTR MSG_SELECT_E = _UxGT("Select *"); + LSTR MSG_ACC = _UxGT("Accel"); + LSTR MSG_VTRAV_MIN = _UxGT("Min Travel Speed"); + LSTR MSG_ACCELERATION = _UxGT("Acceleration"); + LSTR MSG_AMAX_A = _UxGT("Max ") STR_A _UxGT(" Accel"); + LSTR MSG_AMAX_B = _UxGT("Max ") STR_B _UxGT(" Accel"); + LSTR MSG_AMAX_C = _UxGT("Max ") STR_C _UxGT(" Accel"); + LSTR MSG_AMAX_N = _UxGT("Max @ Accel"); + LSTR MSG_AMAX_E = _UxGT("Max E Accel"); + LSTR MSG_AMAX_EN = _UxGT("Max * Accel"); + LSTR MSG_A_RETRACT = _UxGT("Retract Accel"); + LSTR MSG_A_TRAVEL = _UxGT("Travel Accel"); + LSTR MSG_STEPS_PER_MM = _UxGT("Steps/mm"); + LSTR MSG_A_STEPS = STR_A _UxGT(" Steps/mm"); + LSTR MSG_B_STEPS = STR_B _UxGT(" Steps/mm"); + LSTR MSG_C_STEPS = STR_C _UxGT(" Steps/mm"); + LSTR MSG_N_STEPS = _UxGT("@ steps/mm"); + LSTR MSG_E_STEPS = _UxGT("E steps/mm"); + LSTR MSG_EN_STEPS = _UxGT("* Steps/mm"); + LSTR MSG_TEMPERATURE = _UxGT("Temperature"); + LSTR MSG_MOTION = _UxGT("Motion"); + LSTR MSG_FILAMENT = _UxGT("Filament"); + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm") SUPERSCRIPT_THREE; + LSTR MSG_FILAMENT_DIAM = _UxGT("Fil. Dia."); + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Fil. Dia. *"); + LSTR MSG_CONTRAST = _UxGT("LCD Contrast"); + LSTR MSG_STORE_EEPROM = _UxGT("Store Settings"); + LSTR MSG_LOAD_EEPROM = _UxGT("Load Settings"); + LSTR MSG_RESTORE_DEFAULTS = _UxGT("Restore Defaults"); + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Refresh"); + LSTR MSG_INFO_SCREEN = _UxGT("Info Screen"); + LSTR MSG_PREPARE = _UxGT("Prepare"); + LSTR MSG_TUNE = _UxGT("Tune"); + LSTR MSG_PAUSE_PRINT = _UxGT("Pause Print"); + LSTR MSG_RESUME_PRINT = _UxGT("Resume Print"); + LSTR MSG_STOP_PRINT = _UxGT("Stop Print"); + LSTR MSG_MEDIA_MENU = MEDIA_TYPE_EN _UxGT(" Print"); + LSTR MSG_NO_MEDIA = _UxGT("No ") MEDIA_TYPE_EN _UxGT(" Detected"); + LSTR MSG_DWELL = _UxGT("Sleep..."); + LSTR MSG_USERWAIT = _UxGT("Click to Resume..."); + LSTR MSG_PRINT_ABORTED = _UxGT("Print Aborted"); + LSTR MSG_NO_MOVE = _UxGT("No Move."); + LSTR MSG_KILLED = _UxGT("KILLED. "); + LSTR MSG_STOPPED = _UxGT("STOPPED. "); + LSTR MSG_CONTROL_RETRACT = _UxGT("Retract mm"); + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Swap Re.mm"); + LSTR MSG_CONTROL_RETRACTF = _UxGT("Retract V"); + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Hop mm"); + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Unretr. mm"); + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("S Unretr. mm"); + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Unretract V"); + LSTR MSG_AUTORETRACT = _UxGT("Auto-Retract"); + LSTR MSG_FILAMENTCHANGE = _UxGT("Change Filament"); + LSTR MSG_FILAMENTCHANGE_E = _UxGT("Change * Filament"); + LSTR MSG_ATTACH_MEDIA = _UxGT("Attach ") MEDIA_TYPE_EN; + LSTR MSG_ATTACH_SD = _UxGT("Attach SD Card"); + LSTR MSG_ATTACH_USB = _UxGT("Attach USB Drive"); + LSTR MSG_CHANGE_MEDIA = _UxGT("Refresh ") MEDIA_TYPE_EN; + LSTR MSG_RUN_AUTOFILES = _UxGT("Run Autofiles"); + LSTR MSG_ZPROBE_OUT = _UxGT("Z Probe Past Bed"); + LSTR MSG_BLTOUCH_RESET = _UxGT("Reset"); + LSTR MSG_ZPROBE_XOFFSET = _UxGT("Probe X Offset"); + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Probe Y Offset"); + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Probe Z Offset"); + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Probe @ Offset"); + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Babystep Probe Z"); + LSTR MSG_BABYSTEP_X = _UxGT("Babystep X"); + LSTR MSG_BABYSTEP_Y = _UxGT("Babystep Y"); + LSTR MSG_BABYSTEP_Z = _UxGT("Babystep Z"); + LSTR MSG_BABYSTEP_N = _UxGT("Babystep @"); + LSTR MSG_ENDSTOP_ABORT = _UxGT("Endstop Abort"); + LSTR MSG_ERR_HEATING_FAILED = _UxGT("Heating Failed"); + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Err: REDUNDANT TEMP"); + LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("THERMAL RUNAWAY"); + LSTR MSG_ERR_MAXTEMP = _UxGT("Err: MAXTEMP"); + LSTR MSG_ERR_MINTEMP = _UxGT("Err: MINTEMP"); + LSTR MSG_HALTED = _UxGT("PRINTER HALTED"); + LSTR MSG_PLEASE_RESET = _UxGT("Please Reset"); + LSTR MSG_HEATING = _UxGT("Heating..."); + LSTR MSG_BED_HEATING = _UxGT("Bed Heating..."); + LSTR MSG_DELTA_CALIBRATE = _UxGT("Delta Calibration"); + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Calibrate X"); + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Calibrate Y"); + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Calibrate Z"); + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibrate Center"); + LSTR MSG_INFO_MENU = _UxGT("About Printer"); + LSTR MSG_INFO_PRINTER_MENU = _UxGT("Printer Info"); + LSTR MSG_INFO_STATS_MENU = _UxGT("Stats"); + LSTR MSG_INFO_BOARD_MENU = _UxGT("Board Info"); + LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Thermistors"); + LSTR MSG_INFO_EXTRUDERS = _UxGT("Extruders"); + LSTR MSG_INFO_BAUDRATE = _UxGT("Baud"); + LSTR MSG_INFO_PROTOCOL = _UxGT("Protocol"); + LSTR MSG_CASE_LIGHT = _UxGT("Case Light"); + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Prints"); + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completed"); + LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Longest"); + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extruded"); + LSTR MSG_INFO_MIN_TEMP = _UxGT("Min Temp"); + LSTR MSG_INFO_MAX_TEMP = _UxGT("Max Temp"); + LSTR MSG_INFO_PSU = _UxGT("PSU"); + LSTR MSG_DRIVE_STRENGTH = _UxGT("Drive Strength"); + LSTR MSG_DAC_EEPROM_WRITE = _UxGT("DAC EEPROM Write"); + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Continue"); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Please wait...")); + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Insert and Click")); + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Ejecting...")); + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Loading...")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Resuming...")); + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fact"); + LSTR MSG_LCD_ON = _UxGT("On"); + LSTR MSG_LCD_OFF = _UxGT("Off"); + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("INCORRECT PRINTER"); + LSTR MSG_DEBUG_MENU = _UxGT("Debug Menu"); + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Progress Bar Test"); + LSTR MSG_MOVING = _UxGT("Moving..."); + LSTR MSG_FREE_XY = _UxGT("Free XY"); + LSTR MSG_HOME_FIRST = _UxGT("Home %s First"); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Heating...")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Click to heat")); + LSTR MSG_YES = _UxGT("YES"); + LSTR MSG_NO = _UxGT("NO"); + LSTR MSG_BACK = _UxGT("Back"); + LSTR MSG_MEDIA_ABORTING = _UxGT("Aborting..."); + LSTR MSG_MEDIA_READ_ERROR = MEDIA_TYPE_EN _UxGT(" read error"); + LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB device removed"); + LSTR MSG_USB_FD_USB_FAILED = _UxGT("USB start failed"); + LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Soft Endstops"); + LSTR MSG_ADVANCED_SETTINGS = _UxGT("Advanced Settings"); + LSTR MSG_CONFIGURATION = _UxGT("Configuration"); + LSTR MSG_AUTO_Z_ALIGN = _UxGT("Auto Z-Align"); + LSTR MSG_Z_FADE_HEIGHT = _UxGT("Fade Height"); + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Preheat Custom"); + LSTR MSG_LASER_MENU = _UxGT("Laser Control"); + LSTR MSG_LASER_POWER = _UxGT("Laser Power"); + LSTR MSG_SPINDLE_MENU = _UxGT("Spindle Control"); + LSTR MSG_SPINDLE_POWER = _UxGT("Spindle Pwr"); + LSTR MSG_SPINDLE_REVERSE = _UxGT("Spindle Reverse"); LSTR MSG_BED_TRAMMING = _UxGT("Bed Tramming"); - LSTR MSG_BED_TRAMMING_MANUAL = _UxGT("Manual Tramming"); - LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Adjust bed until the probe triggers."); - LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Corners within tolerance. Bed trammed."); - LSTR MSG_BED_TRAMMING_GOOD_POINTS = _UxGT("Good Points: "); - LSTR MSG_BED_TRAMMING_LAST_Z = _UxGT("Last Z: "); LSTR MSG_NEXT_CORNER = _UxGT("Next Corner"); LSTR MSG_MESH_EDITOR = _UxGT("Mesh Editor"); - LSTR MSG_MESH_VIEWER = _UxGT("Mesh Viewer"); LSTR MSG_EDIT_MESH = _UxGT("Edit Mesh"); - LSTR MSG_MESH_VIEW = _UxGT("View Mesh"); - LSTR MSG_MESH_VIEW_GRID = _UxGT("View Mesh (grid)"); LSTR MSG_EDITING_STOPPED = _UxGT("Mesh Editing Stopped"); - LSTR MSG_NO_VALID_MESH = _UxGT("No valid mesh"); - LSTR MSG_ACTIVATE_MESH = _UxGT("Activate Leveling"); LSTR MSG_PROBING_POINT = _UxGT("Probing Point"); LSTR MSG_MESH_X = _UxGT("Index X"); LSTR MSG_MESH_Y = _UxGT("Index Y"); - LSTR MSG_MESH_INSET = _UxGT("Mesh Inset"); - LSTR MSG_MESH_MIN_X = _UxGT("Mesh X Minimum"); - LSTR MSG_MESH_MAX_X = _UxGT("Mesh X Maximum"); - LSTR MSG_MESH_MIN_Y = _UxGT("Mesh Y Minimum"); - LSTR MSG_MESH_MAX_Y = _UxGT("Mesh Y Maximum"); - LSTR MSG_MESH_AMAX = _UxGT("Maximize Area"); - LSTR MSG_MESH_CENTER = _UxGT("Center Area"); LSTR MSG_MESH_EDIT_Z = _UxGT("Z Value"); - LSTR MSG_MESH_CANCEL = _UxGT("Mesh cancelled"); - LSTR MSG_MESH_RESET = _UxGT("Mesh reset"); LSTR MSG_CUSTOM_COMMANDS = _UxGT("Custom Commands"); - LSTR MSG_CUSTOM_MENU_MAIN_TITLE = _UxGT(CUSTOM_MENU_MAIN_TITLE); - LSTR MSG_TOOL_HEAD_TH = _UxGT(CUSTOM_MENU_MAIN_TITLE" (TH)"); - LSTR MSG_PRESENT_BED = _UxGT("Present Bed"); LSTR MSG_M48_TEST = _UxGT("M48 Probe Test"); LSTR MSG_M48_POINT = _UxGT("M48 Point"); - LSTR MSG_M48_OUT_OF_BOUNDS = _UxGT("Probe out of bounds"); - LSTR MSG_M48_DEV = _UxGT("Dev"); LSTR MSG_M48_DEVIATION = _UxGT("Deviation"); - LSTR MSG_M48_MAX_DELTA = _UxGT("Max delta"); LSTR MSG_IDEX_MENU = _UxGT("IDEX Mode"); LSTR MSG_OFFSETS_MENU = _UxGT("Tool Offsets"); LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-Park"); LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplication"); LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Mirrored Copy"); LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Full Control"); - LSTR MSG_IDEX_DUPE_GAP = _UxGT("Duplicate X-Gap"); LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2nd Nozzle Z"); LSTR MSG_HOTEND_OFFSET_N = _UxGT("2nd Nozzle @"); LSTR MSG_UBL_DOING_G29 = _UxGT("Doing G29"); LSTR MSG_UBL_TOOLS = _UxGT("UBL Tools"); LSTR MSG_LCD_TILTING_MESH = _UxGT("Tilting Point"); - LSTR MSG_UBL_TILT_MESH = _UxGT("Tilt Mesh"); - LSTR MSG_UBL_TILTING_GRID = _UxGT("Tilting Grid Size"); - LSTR MSG_UBL_MESH_TILTED = _UxGT("Mesh Tilted"); LSTR MSG_UBL_MANUAL_MESH = _UxGT("Manually Build Mesh"); - LSTR MSG_UBL_MESH_WIZARD = _UxGT("UBL Mesh Wizard"); LSTR MSG_UBL_BC_INSERT = _UxGT("Place Shim & Measure"); LSTR MSG_UBL_BC_INSERT2 = _UxGT("Measure"); LSTR MSG_UBL_BC_REMOVE = _UxGT("Remove & Measure Bed"); @@ -271,11 +314,11 @@ namespace LanguageNarrow_en { LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Build Custom Mesh"); LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Build Mesh"); LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Build Mesh ($)"); + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Validate Mesh ($)"); LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Build Cold Mesh"); LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Adjust Mesh Height"); LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Height Amount"); LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Validate Mesh"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Validate Mesh ($)"); LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Validate Custom Mesh"); LSTR MSG_G26_HEATING_BED = _UxGT("G26 Heating Bed"); LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 Heating Nozzle"); @@ -300,8 +343,6 @@ namespace LanguageNarrow_en { LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Manual Fill-in"); LSTR MSG_UBL_SMART_FILLIN = _UxGT("Smart Fill-in"); LSTR MSG_UBL_FILLIN_MESH = _UxGT("Fill-in Mesh"); - LSTR MSG_UBL_MESH_FILLED = _UxGT("Missing Points Filled"); - LSTR MSG_UBL_MESH_INVALID = _UxGT("Invalid Mesh"); LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Invalidate All"); LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Invalidate Closest"); LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Fine Tune All"); @@ -310,10 +351,8 @@ namespace LanguageNarrow_en { LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Memory Slot"); LSTR MSG_UBL_LOAD_MESH = _UxGT("Load Bed Mesh"); LSTR MSG_UBL_SAVE_MESH = _UxGT("Save Bed Mesh"); - LSTR MSG_UBL_INVALID_SLOT = _UxGT("First Select a Mesh Slot"); LSTR MSG_MESH_LOADED = _UxGT("Mesh %i Loaded"); LSTR MSG_MESH_SAVED = _UxGT("Mesh %i Saved"); - LSTR MSG_MESH_ACTIVE = _UxGT("Mesh %i active"); LSTR MSG_UBL_NO_STORAGE = _UxGT("No Storage"); LSTR MSG_UBL_SAVE_ERROR = _UxGT("UBL Save Error"); LSTR MSG_UBL_RESTORE_ERROR = _UxGT("UBL Restore Error"); @@ -327,7 +366,6 @@ namespace LanguageNarrow_en { LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5. Validate Mesh"); LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6. Fine Tune All"); LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7. Save Bed Mesh"); - LSTR MSG_LED_CONTROL = _UxGT("LED Control"); LSTR MSG_LIGHTS = _UxGT("Lights"); LSTR MSG_LIGHT_N = _UxGT("Light #{"); @@ -341,102 +379,19 @@ namespace LanguageNarrow_en { LSTR MSG_SET_LEDS_VIOLET = _UxGT("Violet"); LSTR MSG_SET_LEDS_WHITE = _UxGT("White"); LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Default"); - LSTR MSG_LED_CHANNEL_N = _UxGT("Channel {"); - LSTR MSG_NEO2_PRESETS = _UxGT("Light #2 Presets"); - LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Brightness"); LSTR MSG_CUSTOM_LEDS = _UxGT("Custom Lights"); LSTR MSG_INTENSITY_R = _UxGT("Red Intensity"); LSTR MSG_INTENSITY_G = _UxGT("Green Intensity"); LSTR MSG_INTENSITY_B = _UxGT("Blue Intensity"); LSTR MSG_INTENSITY_W = _UxGT("White Intensity"); LSTR MSG_LED_BRIGHTNESS = _UxGT("Brightness"); - LSTR MSG_LIGHT_ENCODER = _UxGT("Encoder Light"); - LSTR MSG_LIGHT_ENCODER_PRESETS = _UxGT("Encoder Light Presets"); - - LSTR MSG_MOVING = _UxGT("Moving..."); - LSTR MSG_FREE_XY = _UxGT("Free XY"); - LSTR MSG_MOVE_X = _UxGT("Move X"); // Used by draw_edit_screen - LSTR MSG_MOVE_Y = _UxGT("Move Y"); - LSTR MSG_MOVE_Z = _UxGT("Move Z"); - LSTR MSG_MOVE_N = _UxGT("Move @"); - LSTR MSG_MOVE_E = _UxGT("Move Extruder"); - LSTR MSG_MOVE_EN = _UxGT("Move *"); LSTR MSG_HOTEND_TOO_COLD = _UxGT("Hotend too cold"); - LSTR MSG_MOVE_N_MM = _UxGT("Move $mm"); - LSTR MSG_MOVE_N_IN = _UxGT("Move $in"); - LSTR MSG_MOVE_N_DEG = _UxGT("Move $") LCD_STR_DEGREE; - LSTR MSG_LIVE_MOVE = _UxGT("Live Movement"); - LSTR MSG_SPEED = _UxGT("Speed"); - LSTR MSG_MESH_Z_OFFSET = _UxGT("Bed Z"); - LSTR MSG_NOZZLE = _UxGT("Nozzle"); - LSTR MSG_NOZZLE_N = _UxGT("Nozzle ~"); - LSTR MSG_NOZZLE_PARKED = _UxGT("Nozzle Parked"); - LSTR MSG_NOZZLE_STANDBY = _UxGT("Nozzle Standby"); - LSTR MSG_BED = _UxGT("Bed"); LSTR MSG_CHAMBER = _UxGT("Enclosure"); - LSTR MSG_COOLER = _UxGT("Laser Coolant"); - LSTR MSG_COOLER_TOGGLE = _UxGT("Toggle Cooler"); - LSTR MSG_FLOWMETER_SAFETY = _UxGT("Flow Safety"); - LSTR MSG_CUTTER = _UxGT("Cutter"); - LSTR MSG_LASER = _UxGT("Laser"); - LSTR MSG_FAN_SPEED = _UxGT("Fan Speed"); - LSTR MSG_FAN_SPEED_N = _UxGT("Fan Speed ~"); LSTR MSG_STORED_FAN_N = _UxGT("Stored Fan ~"); LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Extra Fan Speed"); LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Extra Fan Speed ~"); - LSTR MSG_CONTROLLER_FAN = _UxGT("Controller Fan"); - LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("Idle Speed"); - LSTR MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("Auto Mode"); - LSTR MSG_CONTROLLER_FAN_SPEED = _UxGT("Active Speed"); - LSTR MSG_CONTROLLER_FAN_DURATION = _UxGT("Idle Period"); - LSTR MSG_FLOW_PERCENTAGE = _UxGT("Set Flowrate Percentage"); - LSTR MSG_FLOW = _UxGT("Flow"); - LSTR MSG_FLOW_N = _UxGT("Flow ~"); - LSTR MSG_CONTROL = _UxGT("Control"); - LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); - LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fact"); - LSTR MSG_AUTOTEMP = _UxGT("Autotemp"); - LSTR MSG_TIMEOUT = _UxGT("Timeout"); - LSTR MSG_LCD_ON = _UxGT("On"); - LSTR MSG_LCD_OFF = _UxGT("Off"); - LSTR MSG_PID_AUTOTUNE = _UxGT("PID Autotune"); LSTR MSG_PID_AUTOTUNE_E = _UxGT("Autotune * PID"); - LSTR MSG_PID_CYCLE = _UxGT("PID Cycles"); - LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("PID tuning done"); - LSTR MSG_PID_AUTOTUNE_FAILED = _UxGT("Autotune failed!"); - - LSTR MSG_PID_FOR_NOZZLE = _UxGT("for Nozzle is running."); - LSTR MSG_PID_FOR_BED = _UxGT("for BED is running."); - LSTR MSG_PID_FOR_CHAMBER = _UxGT("for CHAMBER is running."); - - LSTR MSG_TEMP_NOZZLE = _UxGT("Nozzle Temperature"); - LSTR MSG_TEMP_BED = _UxGT("Bed Temperature"); - LSTR MSG_TEMP_CHAMBER = _UxGT("Chamber Temperature"); - - LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Autotune failed! Bad extruder."); - LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Autotune failed! Temperature too high."); - LSTR MSG_PID_TIMEOUT = _UxGT("Autotune failed! Timeout."); - - LSTR MSG_MPC_MEASURING_AMBIENT = _UxGT("Testing heat loss"); - LSTR MSG_MPC_HEATING_PAST_200 = _UxGT("Heating to >200C"); - LSTR MSG_MPC_COOLING_TO_AMBIENT = _UxGT("Cooling to ambient"); - LSTR MSG_MPC_AUTOTUNE = _UxGT("MPC Autotune"); - LSTR MSG_MPC_EDIT = _UxGT("Edit * MPC"); - LSTR MSG_MPC_POWER = _UxGT("Heater Power"); - LSTR MSG_MPC_POWER_E = _UxGT("Power *"); - LSTR MSG_MPC_BLOCK_HEAT_CAPACITY = _UxGT("Heat Capacity"); - LSTR MSG_MPC_BLOCK_HEAT_CAPACITY_E = _UxGT("Heat Cap. *"); - LSTR MSG_SENSOR_RESPONSIVENESS = _UxGT("Sensor Resp."); - LSTR MSG_SENSOR_RESPONSIVENESS_E = _UxGT("Sensor Resp. *"); - LSTR MSG_MPC_AMBIENT_XFER_COEFF = _UxGT("Ambient Coeff."); - LSTR MSG_MPC_AMBIENT_XFER_COEFF_E = _UxGT("Ambient Co. *"); - LSTR MSG_MPC_AMBIENT_XFER_COEFF_FAN = _UxGT("Fan coeff."); - LSTR MSG_MPC_AMBIENT_XFER_COEFF_FAN_E = _UxGT("Fan coeff. *"); - - LSTR MSG_SELECT_E = _UxGT("Select *"); - LSTR MSG_ACC = _UxGT("Accel"); LSTR MSG_JERK = _UxGT("Jerk"); LSTR MSG_VA_JERK = _UxGT("Max ") STR_A _UxGT(" Jerk"); LSTR MSG_VB_JERK = _UxGT("Max ") STR_B _UxGT(" Jerk"); @@ -444,7 +399,6 @@ namespace LanguageNarrow_en { LSTR MSG_VN_JERK = _UxGT("Max @ Jerk"); LSTR MSG_VE_JERK = _UxGT("Max E Jerk"); LSTR MSG_JUNCTION_DEVIATION = _UxGT("Junction Dev"); - LSTR MSG_STEP_SMOOTHING = _UxGT("Step Smoothing"); LSTR MSG_MAX_SPEED = _UxGT("Max Speed (mm/s)"); LSTR MSG_VMAX_A = _UxGT("Max ") STR_A _UxGT(" Speed"); LSTR MSG_VMAX_B = _UxGT("Max ") STR_B _UxGT(" Speed"); @@ -453,207 +407,49 @@ namespace LanguageNarrow_en { LSTR MSG_VMAX_E = _UxGT("Max E Speed"); LSTR MSG_VMAX_EN = _UxGT("Max * Speed"); LSTR MSG_VMIN = _UxGT("Min Velocity"); - LSTR MSG_VTRAV_MIN = _UxGT("Min Travel Speed"); - LSTR MSG_ACCELERATION = _UxGT("Acceleration"); - LSTR MSG_AMAX_A = _UxGT("Max ") STR_A _UxGT(" Accel"); - LSTR MSG_AMAX_B = _UxGT("Max ") STR_B _UxGT(" Accel"); - LSTR MSG_AMAX_C = _UxGT("Max ") STR_C _UxGT(" Accel"); - LSTR MSG_AMAX_N = _UxGT("Max @ Accel"); - LSTR MSG_AMAX_E = _UxGT("Max E Accel"); - LSTR MSG_AMAX_EN = _UxGT("Max * Accel"); - LSTR MSG_A_RETRACT = _UxGT("Retract Accel"); - LSTR MSG_A_TRAVEL = _UxGT("Travel Accel"); - LSTR MSG_A_SPINDLE = _UxGT("Spindle Accel"); - LSTR MSG_INPUT_SHAPING = _UxGT("Input Shaping"); - LSTR MSG_SHAPING_ENABLE_N = _UxGT("Enable @ shaping"); - LSTR MSG_SHAPING_DISABLE_N = _UxGT("Disable @ shaping"); - LSTR MSG_SHAPING_FREQ_N = _UxGT("@ frequency"); - LSTR MSG_SHAPING_ZETA_N = _UxGT("@ damping"); - LSTR MSG_SHAPING_A_FREQ = STR_A _UxGT(" frequency"); // ProUI - LSTR MSG_SHAPING_B_FREQ = STR_B _UxGT(" frequency"); // ProUI - LSTR MSG_SHAPING_C_FREQ = STR_C _UxGT(" frequency"); // ProUI - LSTR MSG_SHAPING_A_ZETA = STR_A _UxGT(" damping"); // ProUI - LSTR MSG_SHAPING_B_ZETA = STR_B _UxGT(" damping"); // ProUI - LSTR MSG_SHAPING_C_ZETA = STR_C _UxGT(" damping"); // ProUI - LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("XY Freq Limit"); - LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("Min FR Factor"); - LSTR MSG_STEPS_PER_MM = _UxGT("Steps/mm"); - LSTR MSG_A_STEPS = STR_A _UxGT(" Steps/mm"); - LSTR MSG_B_STEPS = STR_B _UxGT(" Steps/mm"); - LSTR MSG_C_STEPS = STR_C _UxGT(" Steps/mm"); - LSTR MSG_N_STEPS = _UxGT("@ steps/mm"); - LSTR MSG_E_STEPS = _UxGT("E steps/mm"); - LSTR MSG_EN_STEPS = _UxGT("* Steps/mm"); - LSTR MSG_TEMPERATURE = _UxGT("Temperature"); - LSTR MSG_MOTION = _UxGT("Motion"); - LSTR MSG_FTM_TRAPEZOIDAL = _UxGT("Trapezoidal"); - LSTR MSG_FTM_POLY5 = _UxGT("5th Order"); - LSTR MSG_FTM_POLY6 = _UxGT("6th Order"); - LSTR MSG_FTM_TRAJECTORY = _UxGT("Trajectory: $"); - LSTR MSG_FILAMENT = _UxGT("Filament"); - LSTR MSG_FILAMENT_EN = _UxGT("Filament *"); - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm") SUPERSCRIPT_THREE; - LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("E Limit in mm") SUPERSCRIPT_THREE; - LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("E Limit *"); - LSTR MSG_FILAMENT_DIAM = _UxGT("Fil. Dia."); - LSTR MSG_FILAMENT_DIAM_E = _UxGT("Fil. Dia. *"); LSTR MSG_FILAMENT_UNLOAD = _UxGT("Unload mm"); LSTR MSG_FILAMENT_LOAD = _UxGT("Load mm"); - LSTR MSG_SEGMENTS_PER_SECOND = _UxGT("Segments/Sec"); - LSTR MSG_DRAW_MIN_X = _UxGT("Draw Min X"); - LSTR MSG_DRAW_MAX_X = _UxGT("Draw Max X"); - LSTR MSG_DRAW_MIN_Y = _UxGT("Draw Min Y"); - LSTR MSG_DRAW_MAX_Y = _UxGT("Draw Max Y"); - LSTR MSG_MAX_BELT_LEN = _UxGT("Max Belt Len"); - LSTR MSG_LINEAR_ADVANCE = _UxGT("Linear Advance"); LSTR MSG_ADVANCE_K = _UxGT("Advance K"); - LSTR MSG_ADVANCE_TAU = _UxGT("Advance Tau"); LSTR MSG_ADVANCE_K_E = _UxGT("Advance K *"); - LSTR MSG_ADVANCE_TAU_E = _UxGT("Advance Tau *"); - LSTR MSG_NLE_ON = _UxGT("NLE enabled"); - LSTR MSG_CONTRAST = _UxGT("LCD Contrast"); - LSTR MSG_BRIGHTNESS = _UxGT("LCD Brightness"); - LSTR MSG_SCREEN_TIMEOUT = _UxGT("LCD Timeout (m)"); - LSTR MSG_HOTEND_TEMP_GRAPH = _UxGT("Hotend Temp Graph"); - LSTR MSG_BED_TEMP_GRAPH = _UxGT("Bed Temp Graph"); - LSTR MSG_BRIGHTNESS_OFF = _UxGT("Backlight Off"); - LSTR MSG_STORE_EEPROM = _UxGT("Store Settings"); - LSTR MSG_LOAD_EEPROM = _UxGT("Load Settings"); - LSTR MSG_RESTORE_DEFAULTS = _UxGT("Restore Defaults"); LSTR MSG_INIT_EEPROM = _UxGT("Initialize EEPROM"); - LSTR MSG_EEPROM_INITIALIZED = _UxGT("EEPROM Initialized"); - LSTR MSG_ERR_EEPROM_CRC = _UxGT("Err: EEPROM CRC"); - LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Err: EEPROM Size"); - LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Err: EEPROM Version"); - LSTR MSG_ERR_EEPROM_CORRUPT = _UxGT("Err: EEPROM Corrupt"); - LSTR MSG_SETTINGS_STORED = _UxGT("Settings Stored"); - LSTR MSG_HAS_PREVIEW = _UxGT("Has preview"); + LSTR MSG_MEDIA_UPDATE = MEDIA_TYPE_EN _UxGT(" Update"); LSTR MSG_RESET_PRINTER = _UxGT("Reset Printer"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Refresh"); - LSTR MSG_INFO_SCREEN = _UxGT("Info Screen"); - LSTR MSG_INFO_MACHINENAME = _UxGT("Machine Name"); - LSTR MSG_INFO_SIZE = _UxGT("Size"); - LSTR MSG_INFO_FWVERSION = _UxGT("Firmware Version"); - LSTR MSG_INFO_BUILD = _UxGT("Build Info"); - LSTR MSG_PREPARE = _UxGT("Prepare"); - LSTR MSG_TUNE = _UxGT("Tune"); - LSTR MSG_POWER_MONITOR = _UxGT("Power monitor"); - LSTR MSG_CURRENT = _UxGT("Current"); - LSTR MSG_VOLTAGE = _UxGT("Voltage"); - LSTR MSG_POWER = _UxGT("Power"); LSTR MSG_START_PRINT = _UxGT("Start Print"); LSTR MSG_BUTTON_NEXT = _UxGT("Next"); LSTR MSG_BUTTON_INIT = _UxGT("Init"); LSTR MSG_BUTTON_STOP = _UxGT("Stop"); LSTR MSG_BUTTON_PRINT = _UxGT("Print"); LSTR MSG_BUTTON_RESET = _UxGT("Reset"); - LSTR MSG_BUTTON_IGNORE = _UxGT("Ignore"); LSTR MSG_BUTTON_CANCEL = _UxGT("Cancel"); - LSTR MSG_BUTTON_CONFIRM = _UxGT("Confirm"); - LSTR MSG_BUTTON_CONTINUE = _UxGT("Continue"); LSTR MSG_BUTTON_DONE = _UxGT("Done"); LSTR MSG_BUTTON_BACK = _UxGT("Back"); LSTR MSG_BUTTON_PROCEED = _UxGT("Proceed"); - LSTR MSG_BUTTON_SKIP = _UxGT("Skip"); - LSTR MSG_BUTTON_INFO = _UxGT("Info"); - LSTR MSG_BUTTON_LEVEL = _UxGT("Level"); - LSTR MSG_BUTTON_PAUSE = _UxGT("Pause"); - LSTR MSG_BUTTON_RESUME = _UxGT("Resume"); - LSTR MSG_BUTTON_ADVANCED = _UxGT("Advanced"); - LSTR MSG_BUTTON_SAVE = _UxGT("Save"); - LSTR MSG_BUTTON_PURGE = _UxGT("Purge"); - LSTR MSG_PAUSING = _UxGT("Pausing..."); - LSTR MSG_PAUSE_PRINT = _UxGT("Pause Print"); - LSTR MSG_ADVANCED_PAUSE = _UxGT("Advanced Pause"); - LSTR MSG_RESUME_PRINT = _UxGT("Resume Print"); - LSTR MSG_STOP_PRINT = _UxGT("Stop Print"); - LSTR MSG_CANCEL_PRINT = _UxGT("Cancel Print"); - LSTR MSG_OUTAGE_RECOVERY = _UxGT("Power Outage"); - LSTR MSG_RESUME_BED_TEMP = _UxGT("Resume Bed Temp"); - LSTR MSG_HOST_START_PRINT = _UxGT("Host Start"); LSTR MSG_PRINTING_OBJECT = _UxGT("Print Obj"); LSTR MSG_CANCEL_OBJECT = _UxGT("Cancel Obj"); LSTR MSG_CANCEL_OBJECT_N = _UxGT("Cancel Obj {"); - LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Continue Job"); - LSTR MSG_TURN_OFF = _UxGT("Turn off now"); - LSTR MSG_END_LOOPS = _UxGT("End Loops"); - LSTR MSG_DWELL = _UxGT("Sleep..."); - LSTR MSG_USERWAIT = _UxGT("Click to Resume..."); + LSTR MSG_OUTAGE_RECOVERY = _UxGT("Power Outage"); LSTR MSG_PRINT_PAUSED = _UxGT("Print Paused"); LSTR MSG_PRINTING = _UxGT("Printing..."); - LSTR MSG_STOPPING = _UxGT("Stopping..."); - LSTR MSG_REMAINING_TIME = _UxGT("Remaining"); - LSTR MSG_PRINT_ABORTED = _UxGT("Print Aborted"); - LSTR MSG_PRINT_DONE = _UxGT("Print Done"); - LSTR MSG_PRINTER_KILLED = _UxGT("Printer killed!"); - LSTR MSG_NO_MOVE = _UxGT("No Move."); - LSTR MSG_KILLED = _UxGT("KILLED. "); - LSTR MSG_STOPPED = _UxGT("STOPPED. "); - LSTR MSG_FWRETRACT = _UxGT("Firmware Retract"); - LSTR MSG_CONTROL_RETRACT = _UxGT("Retract mm"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Swap Re.mm"); - LSTR MSG_CONTROL_RETRACTF = _UxGT("Retract V"); - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Hop mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Unretr. mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("S Unretr. mm"); - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Unretract V"); LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V"); - LSTR MSG_AUTORETRACT = _UxGT("Auto-Retract"); LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Swap Length"); - LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Swap Extra"); LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Purge Length"); LSTR MSG_TOOL_CHANGE = _UxGT("Tool Change"); - LSTR MSG_TOOL_HEAD_SWAP = _UxGT("Park For Tool Head Swap"); - LSTR MSG_FILAMENT_SWAP = _UxGT("Park For Filament Change"); LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Z Raise"); LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Prime Speed"); - LSTR MSG_SINGLENOZZLE_WIPE_RETRACT = _UxGT("Wipe Retract"); LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Retract Speed"); - LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Park Head"); - LSTR MSG_PARK_FAILED = _UxGT("Head cannot be parked"); - LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Recover Speed"); - LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Fan Speed"); - LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Fan Time"); - LSTR MSG_TOOL_MIGRATION_ON = _UxGT("Auto ON"); - LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("Auto OFF"); - LSTR MSG_TOOL_MIGRATION = _UxGT("Tool Migration"); - LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("Auto-migration"); - LSTR MSG_TOOL_MIGRATION_END = _UxGT("Last Extruder"); - LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("Migrate to *"); - LSTR MSG_FILAMENTCHANGE = _UxGT("Change Filament"); - LSTR MSG_FILAMENTCHANGE_E = _UxGT("Change * Filament"); + LSTR MSG_NOZZLE_STANDBY = _UxGT("Nozzle Standby"); LSTR MSG_FILAMENTLOAD = _UxGT("Load Filament"); LSTR MSG_FILAMENTLOAD_E = _UxGT("Load * Filament"); LSTR MSG_FILAMENTUNLOAD = _UxGT("Unload Filament"); LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Unload * Filament"); LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Unload All"); - - LSTR MSG_ATTACH_MEDIA = _UxGT("Attach ") MEDIA_TYPE_EN; - LSTR MSG_ATTACH_SD = _UxGT("Attach SD Card"); - LSTR MSG_ATTACH_USB = _UxGT("Attach USB Drive"); LSTR MSG_RELEASE_MEDIA = _UxGT("Release ") MEDIA_TYPE_EN; - LSTR MSG_RELEASE_SD = _UxGT("Release SD Card"); - LSTR MSG_RELEASE_USB = _UxGT("Release USB Drive"); - LSTR MSG_CHANGE_MEDIA = _UxGT("Refresh ") MEDIA_TYPE_EN; - LSTR MSG_CHANGE_SD = _UxGT("Select SD Card"); - LSTR MSG_CHANGE_USB = _UxGT("Select USB Drive"); - LSTR MSG_RUN_AUTOFILES = _UxGT("Run Autofiles"); - LSTR MSG_RUN_AUTOFILES_SD = _UxGT("Run SD Autofiles"); - LSTR MSG_RUN_AUTOFILES_USB = _UxGT("Run USB Autofiles"); - LSTR MSG_MEDIA_MENU = MEDIA_TYPE_EN _UxGT(" Print"); - LSTR MSG_MEDIA_MENU_SD = _UxGT("Select from SD"); - LSTR MSG_MEDIA_MENU_USB = _UxGT("Select from USB"); - LSTR MSG_NO_MEDIA = _UxGT("No ") MEDIA_TYPE_EN _UxGT(" Detected"); - - LSTR MSG_ZPROBE_OUT = _UxGT("Z Probe Past Bed"); LSTR MSG_SKEW_FACTOR = _UxGT("Skew Factor"); LSTR MSG_BLTOUCH = _UxGT("BLTouch"); LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Self-Test"); - LSTR MSG_BLTOUCH_RESET = _UxGT("Reset"); LSTR MSG_BLTOUCH_STOW = _UxGT("Stow"); LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Deploy"); LSTR MSG_BLTOUCH_SW_MODE = _UxGT("SW-Mode"); - LSTR MSG_BLTOUCH_SPEED_MODE = _UxGT("High Speed"); LSTR MSG_BLTOUCH_5V_MODE = _UxGT("5V-Mode"); LSTR MSG_BLTOUCH_OD_MODE = _UxGT("OD-Mode"); LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("Mode-Store"); @@ -667,142 +463,38 @@ namespace LanguageNarrow_en { LSTR MSG_TOUCHMI_SAVE = _UxGT("Save"); LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("Deploy TouchMI"); LSTR MSG_MANUAL_DEPLOY = _UxGT("Deploy Z-Probe"); - LSTR MSG_MANUAL_PENUP = _UxGT("Pen up"); - LSTR MSG_MANUAL_PENDOWN = _UxGT("Pen down"); LSTR MSG_MANUAL_STOW = _UxGT("Stow Z-Probe"); - LSTR MSG_HOME_FIRST = _UxGT("Home %s First"); - LSTR MSG_ZPROBE_SETTINGS = _UxGT("Probe Settings"); - LSTR MSG_ZPROBE_OFFSETS = _UxGT("Probe Offsets"); - LSTR MSG_ZPROBE_XOFFSET = _UxGT("Probe X Offset"); - LSTR MSG_ZPROBE_YOFFSET = _UxGT("Probe Y Offset"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Probe Z Offset"); - LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Probe @ Offset"); - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Babystep Probe Z"); - LSTR MSG_ZPROBE_MARGIN = _UxGT("Probe Margin"); - LSTR MSG_ZOFFSET = _UxGT("Z Offset"); - LSTR MSG_Z_FEED_RATE = _UxGT("Z Feedrate"); - LSTR MSG_ENABLE_HS_MODE = _UxGT("Enable HS mode"); - LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Move Nozzle to Bed"); - LSTR MSG_BABYSTEP_X = _UxGT("Babystep X"); - LSTR MSG_BABYSTEP_Y = _UxGT("Babystep Y"); - LSTR MSG_BABYSTEP_Z = _UxGT("Babystep Z"); - LSTR MSG_BABYSTEP_N = _UxGT("Babystep @"); LSTR MSG_BABYSTEP_TOTAL = _UxGT("Total"); - LSTR MSG_ENDSTOP_ABORT = _UxGT("Endstop Abort"); - - LSTR MSG_ERR_HEATING_FAILED = _UxGT("Heating Failed"); - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Err: REDUNDANT TEMP"); - LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("THERMAL RUNAWAY"); - LSTR MSG_ERR_TEMP_MALFUNCTION = _UxGT("TEMP MALFUNCTION"); - LSTR MSG_ERR_COOLING_FAILED = _UxGT("Cooling Failed"); - LSTR MSG_ERR_MAXTEMP = _UxGT("Err: MAXTEMP"); - LSTR MSG_ERR_MINTEMP = _UxGT("Err: MINTEMP"); - LSTR MSG_HALTED = _UxGT("PRINTER HALTED"); - LSTR MSG_PLEASE_WAIT = _UxGT("Please wait..."); - LSTR MSG_PLEASE_RESET = _UxGT("Please Reset"); - LSTR MSG_PREHEATING = _UxGT("Preheating..."); - LSTR MSG_HEATING = _UxGT("Heating..."); LSTR MSG_COOLING = _UxGT("Cooling..."); - LSTR MSG_BED_HEATING = _UxGT("Bed Heating..."); LSTR MSG_BED_COOLING = _UxGT("Bed Cooling..."); - LSTR MSG_BED_ANNEALING = _UxGT("Annealing..."); - LSTR MSG_PROBE_HEATING = _UxGT("Probe Heating..."); - LSTR MSG_PROBE_COOLING = _UxGT("Probe Cooling..."); LSTR MSG_CHAMBER_HEATING = _UxGT("Chamber Heating..."); LSTR MSG_CHAMBER_COOLING = _UxGT("Chamber Cooling..."); - LSTR MSG_LASER_COOLING = _UxGT("Laser Cooling..."); - - LSTR MSG_DELTA_CALIBRATE = _UxGT("Delta Calibration"); - LSTR MSG_DELTA_CALIBRATION_IN_PROGRESS = _UxGT("Delta Calibration in progress"); - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Calibrate X"); - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Calibrate Y"); - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Calibrate Z"); - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibrate Center"); LSTR MSG_DELTA_SETTINGS = _UxGT("Delta Settings"); LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Auto Calibration"); LSTR MSG_DELTA_DIAG_ROD = _UxGT("Diag Rod"); LSTR MSG_DELTA_HEIGHT = _UxGT("Height"); LSTR MSG_DELTA_RADIUS = _UxGT("Radius"); - - LSTR MSG_INFO_MENU = _UxGT("About Printer"); - LSTR MSG_INFO_PRINTER_MENU = _UxGT("Printer Info"); - LSTR MSG_INFO_PRINTER_STATS_MENU = _UxGT("Printer Stats"); - LSTR MSG_INFO_STATS_MENU = _UxGT("Stats"); - LSTR MSG_RESET_STATS = _UxGT("Reset Print Stats?"); - LSTR MSG_INFO_BOARD_MENU = _UxGT("Board Info"); - LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Thermistors"); - LSTR MSG_INFO_EXTRUDERS = _UxGT("Extruders"); - LSTR MSG_INFO_BAUDRATE = _UxGT("Baud"); - LSTR MSG_INFO_PROTOCOL = _UxGT("Protocol"); - LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Runaway Watch: OFF"); - LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Runaway Watch: ON"); - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Prints"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Longest"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extruded"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completed"); - LSTR MSG_INFO_MIN_TEMP = _UxGT("Min Temp"); - LSTR MSG_INFO_MAX_TEMP = _UxGT("Max Temp"); - LSTR MSG_INFO_PSU = _UxGT("PSU"); - LSTR MSG_3POINT_LEVELING = _UxGT("3-Point Leveling"); LSTR MSG_LINEAR_LEVELING = _UxGT("Linear Leveling"); LSTR MSG_BILINEAR_LEVELING = _UxGT("Bilinear Leveling"); LSTR MSG_UBL_LEVELING = _UxGT("Unified Bed Leveling"); LSTR MSG_MESH_LEVELING = _UxGT("Mesh Leveling"); - LSTR MSG_MESH_DONE = _UxGT("Mesh probing done"); - - LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Hotend Idle Timeout"); - LSTR MSG_BED_IDLE_TIMEOUT = _UxGT("Bed Idle Timeout"); - LSTR MSG_HOTEND_IDLE_DISABLE = _UxGT("Disable Timeout"); - LSTR MSG_HOTEND_IDLE_NOZZLE_TARGET = _UxGT("Nozzle Idle Temp"); - LSTR MSG_HOTEND_IDLE_BED_TARGET = _UxGT("Bed Idle Temp"); - LSTR MSG_FAN_SPEED_FAULT = _UxGT("Fan speed fault"); - - LSTR MSG_CASE_LIGHT = _UxGT("Case Light"); + LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Runaway Watch: OFF"); + LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Runaway Watch: ON"); LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Light Brightness"); - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("INCORRECT PRINTER"); - - LSTR MSG_DRIVE_STRENGTH = _UxGT("Drive Strength"); LSTR MSG_DAC_PERCENT_N = _UxGT("@ Driver %"); LSTR MSG_ERROR_TMC = _UxGT("TMC CONNECTION ERROR"); - LSTR MSG_DAC_EEPROM_WRITE = _UxGT("DAC EEPROM Write"); LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("FILAMENT CHANGE"); LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("PRINT PAUSED"); LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("LOAD FILAMENT"); LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("UNLOAD FILAMENT"); LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("RESUME OPTIONS:"); LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Purge more"); - LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Continue"); - LSTR MSG_FILAMENT_CHANGE_PURGE_CONTINUE = _UxGT("Purge or Continue?"); // ProUI LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Nozzle: "); LSTR MSG_RUNOUT_SENSOR = _UxGT("Runout Sensor"); - LSTR MSG_SENSOR = _UxGT("Sensor"); LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("Runout Dist mm"); - LSTR MSG_MOTION_DISTANCE_MM = _UxGT("Motion Dist mm"); - LSTR MSG_EXTRUDER_MIN_TEMP = _UxGT("Extruder Min Temp."); // ProUI - LSTR MSG_FANCHECK = _UxGT("Fan Tacho Check"); LSTR MSG_KILL_HOMING_FAILED = _UxGT("Homing Failed"); LSTR MSG_LCD_PROBING_FAILED = _UxGT("Probing Failed"); - - // Ender-3 V2 DWIN - ProUI / JyersUI - LSTR MSG_COLORS_GET = _UxGT("Get Color"); // ProUI - LSTR MSG_COLORS_SELECT = _UxGT("Select Colors"); // ProUI - LSTR MSG_COLORS_APPLIED = _UxGT("Colors applied"); // ProUI - LSTR MSG_COLORS_RED = _UxGT("Red"); // ProUI / JyersUI - LSTR MSG_COLORS_GREEN = _UxGT("Green"); // ProUI / JyersUI - LSTR MSG_COLORS_BLUE = _UxGT("Blue"); // ProUI / JyersUI - LSTR MSG_COLORS_WHITE = _UxGT("White"); // ProUI - LSTR MSG_UI_LANGUAGE = _UxGT("UI Language"); // ProUI - LSTR MSG_SOUND_ENABLE = _UxGT("Enable sound"); // ProUI - LSTR MSG_LOCKSCREEN = _UxGT("Lock Screen"); // ProUI - LSTR MSG_LOCKSCREEN_LOCKED = _UxGT("Printer is Locked,"); // ProUI - LSTR MSG_LOCKSCREEN_UNLOCK = _UxGT("Scroll to unlock."); // ProUI - LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Please wait for reboot."); // ProUI - LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("No Media"); // ProUI - LSTR MSG_PLEASE_PREHEAT = _UxGT("Please Preheat"); // ProUI - - // Prusa MMU 2 LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("CHOOSE FILAMENT"); LSTR MSG_MMU2_MENU = _UxGT("MMU"); LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("Update MMU Firmware!"); @@ -812,12 +504,10 @@ namespace LanguageNarrow_en { LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("Load"); LSTR MSG_MMU2_LOAD_ALL = _UxGT("Load All"); LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Load to Nozzle"); - LSTR MSG_MMU2_CUT_FILAMENT = _UxGT("Cut"); LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("Eject"); LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("Eject ~"); LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Unload"); LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Filament %i Load..."); - LSTR MSG_MMU2_CUTTING_FILAMENT = _UxGT("Filament %i Cut..."); LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Filament %i Eject..."); LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Filament %i Unload..."); LSTR MSG_MMU2_ALL = _UxGT("All"); @@ -825,33 +515,6 @@ namespace LanguageNarrow_en { LSTR MSG_MMU2_RESET = _UxGT("Reset MMU"); LSTR MSG_MMU2_RESETTING = _UxGT("Resetting..."); LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Eject Recover"); - LSTR MSG_MMU2_REMOVE_AND_CLICK = _UxGT("Remove and click..."); - - LSTR MSG_MMU_SENSITIVITY = _UxGT("Sensitivity"); - LSTR MSG_MMU_CUTTER = _UxGT("Cutter"); - LSTR MSG_MMU_CUTTER_MODE = _UxGT("Cutter Mode"); - LSTR MSG_MMU_CUTTER_MODE_DISABLE = _UxGT("Disable"); - LSTR MSG_MMU_CUTTER_MODE_ENABLE = _UxGT("Enable"); - LSTR MSG_MMU_CUTTER_MODE_ALWAYS = _UxGT("Always"); - LSTR MSG_MMU_SPOOL_JOIN = _UxGT("Spool Join"); - - LSTR MSG_MMU_STATISTICS = _UxGT("Statistics"); - LSTR MSG_MMU_RESET_FAIL_STATS = _UxGT("Reset Fail Stats"); - LSTR MSG_MMU_RESET_STATS = _UxGT("Reset All Stats"); - LSTR MSG_MMU_CURRENT_PRINT = _UxGT("Curr. print"); - LSTR MSG_MMU_CURRENT_PRINT_FAILURES = _UxGT("Curr. print failures"); - LSTR MSG_MMU_LAST_PRINT = _UxGT("Last print"); - LSTR MSG_MMU_LAST_PRINT_FAILURES = _UxGT("Last print failures"); - LSTR MSG_MMU_TOTAL = _UxGT("Total"); - LSTR MSG_MMU_TOTAL_FAILURES = _UxGT("Total failures"); - LSTR MSG_MMU_DEV_INCREMENT_FAILS = _UxGT("Increment fails"); - LSTR MSG_MMU_DEV_INCREMENT_LOAD_FAILS = _UxGT("Increment load fails"); - LSTR MSG_MMU_FAILS = _UxGT("MMU fails"); - LSTR MSG_MMU_LOAD_FAILS = _UxGT("MMU load fails"); - LSTR MSG_MMU_POWER_FAILS = _UxGT("MMU power fails"); - LSTR MSG_MMU_MATERIAL_CHANGES = _UxGT("Material changes"); - - // Mixing Extruder (e.g., Geeetech A10M / A20M) LSTR MSG_MIX = _UxGT("Mix"); LSTR MSG_MIX_COMPONENT_N = _UxGT("Component {"); LSTR MSG_MIXER = _UxGT("Mixer"); @@ -870,19 +533,202 @@ namespace LanguageNarrow_en { LSTR MSG_VTOOLS_RESET = _UxGT("V-tools Were Reset"); LSTR MSG_START_Z = _UxGT("Start Z:"); LSTR MSG_END_Z = _UxGT(" End Z:"); - - // Games Menu LSTR MSG_GAMES = _UxGT("Games"); LSTR MSG_BRICKOUT = _UxGT("Brickout"); LSTR MSG_INVADERS = _UxGT("Invaders"); LSTR MSG_SNAKE = _UxGT("Sn4k3"); LSTR MSG_MAZE = _UxGT("Maze"); - - // Direct Stepping + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Click to continue")); + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parking...")); + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Purging...")); + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Click to finish")); + LSTR MSG_TMC_DRIVERS = _UxGT("TMC Drivers"); + LSTR MSG_TMC_CURRENT = _UxGT("Driver Current"); + LSTR MSG_TMC_HYBRID_THRS = _UxGT("Hybrid Threshold"); + LSTR MSG_TMC_HOMING_THRS = _UxGT("Sensorless Homing"); + LSTR MSG_TMC_STEPPING_MODE = _UxGT("Stepping Mode"); + LSTR MSG_TMC_STEALTHCHOP = _UxGT("StealthChop"); + LSTR MSG_SERVICE_RESET = _UxGT("Reset"); + LSTR MSG_SERVICE_IN = _UxGT(" in:"); + LSTR MSG_BACKLASH = _UxGT("Backlash"); + LSTR MSG_BACKLASH_CORRECTION = _UxGT("Correction"); + LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Smoothing"); + LSTR MSG_HIGH = _UxGT("HIGH"); + LSTR MSG_LOW = _UxGT("LOW"); + LSTR MSG_ERROR = _UxGT("Error"); + LSTR MSG_MEDIA_INIT_FAIL = MEDIA_TYPE_EN _UxGT(" Init Fail"); + LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Subcall Overflow"); + LSTR MSG_AUTO_HOME_N = _UxGT("Home @"); + LSTR MSG_FILAMENT_SET = _UxGT("Filament Settings"); + LSTR MSG_FILAMENT_MAN = _UxGT("Filament Management"); + LSTR MSG_MANUAL_LEVELING = _UxGT("Manual Leveling"); + LSTR MSG_TRAM_FL = _UxGT("Front Left"); + LSTR MSG_TRAM_FR = _UxGT("Front Right"); + LSTR MSG_TRAM_C = _UxGT("Center"); + LSTR MSG_TRAM_BL = _UxGT("Back Left"); + LSTR MSG_TRAM_BR = _UxGT("Back Right"); + LSTR MSG_MANUAL_MESH = _UxGT("Manual Mesh"); + LSTR MSG_AUTO_MESH = _UxGT("Auto Build Mesh"); + LSTR MSG_ITERATION = _UxGT("G34 Iteration: %i"); + LSTR MSG_DECREASING_ACCURACY = _UxGT("Accuracy Decreasing!"); + LSTR MSG_ACCURACY_ACHIEVED = _UxGT("Accuracy Achieved"); + LSTR MSG_HOME_OFFSET_X = _UxGT("Home Offset X"); + LSTR MSG_HOME_OFFSET_Y = _UxGT("Home Offset Y"); + LSTR MSG_HOME_OFFSET_Z = _UxGT("Home Offset Z"); + LSTR MSG_TRAMMING_WIZARD = _UxGT("Tramming Wizard"); + LSTR MSG_SELECT_ORIGIN = _UxGT("Select Origin"); + LSTR MSG_LAST_VALUE_SP = _UxGT("Last value "); + LSTR MSG_CUTTER_FREQUENCY = _UxGT("Frequency"); + LSTR MSG_LASER_TOGGLE = _UxGT("Toggle Laser"); + LSTR MSG_LASER_EVAC_TOGGLE = _UxGT("Toggle Blower"); + LSTR MSG_LASER_ASSIST_TOGGLE = _UxGT("Air Assist"); + LSTR MSG_LASER_PULSE_MS = _UxGT("Test Pulse ms"); + LSTR MSG_LASER_FIRE_PULSE = _UxGT("Fire Pulse"); + LSTR MSG_FLOWMETER_FAULT = _UxGT("Coolant Flow Fault"); + LSTR MSG_SPINDLE_TOGGLE = _UxGT("Toggle Spindle"); + LSTR MSG_SPINDLE_EVAC_TOGGLE = _UxGT("Toggle Vacuum"); + LSTR MSG_SPINDLE_FORWARD = _UxGT("Spindle Forward"); + LSTR MSG_BED_TRAMMING_MANUAL = _UxGT("Manual Tramming"); + LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Adjust bed until the probe triggers."); + LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Corners within tolerance. Bed trammed."); + LSTR MSG_BED_TRAMMING_GOOD_POINTS = _UxGT("Good Points: "); + LSTR MSG_BED_TRAMMING_LAST_Z = _UxGT("Last Z: "); + LSTR MSG_MESH_VIEWER = _UxGT("Mesh Viewer"); + LSTR MSG_MESH_VIEW = _UxGT("View Mesh"); + LSTR MSG_NO_VALID_MESH = _UxGT("No valid mesh"); + LSTR MSG_ACTIVATE_MESH = _UxGT("Activate Leveling"); + LSTR MSG_MESH_INSET = _UxGT("Mesh Inset"); + LSTR MSG_MESH_MIN_X = _UxGT("Mesh X Minimum"); + LSTR MSG_MESH_MAX_X = _UxGT("Mesh X Maximum"); + LSTR MSG_MESH_MIN_Y = _UxGT("Mesh Y Minimum"); + LSTR MSG_MESH_MAX_Y = _UxGT("Mesh Y Maximum"); + LSTR MSG_MESH_AMAX = _UxGT("Maximize Area"); + LSTR MSG_MESH_CENTER = _UxGT("Center Area"); + LSTR MSG_MESH_CANCEL = _UxGT("Mesh cancelled"); + LSTR MSG_M48_OUT_OF_BOUNDS = _UxGT("Probe out of bounds"); + LSTR MSG_IDEX_DUPE_GAP = _UxGT("Duplicate X-Gap"); + LSTR MSG_UBL_TILT_MESH = _UxGT("Tilt Mesh"); + LSTR MSG_UBL_TILTING_GRID = _UxGT("Tilting Grid Size"); + LSTR MSG_UBL_MESH_TILTED = _UxGT("Mesh Tilted"); + LSTR MSG_UBL_MESH_WIZARD = _UxGT("UBL Mesh Wizard"); + LSTR MSG_UBL_MESH_FILLED = _UxGT("Missing Points Filled"); + LSTR MSG_UBL_MESH_INVALID = _UxGT("Invalid Mesh"); + LSTR MSG_UBL_INVALID_SLOT = _UxGT("First Select a Mesh Slot"); + LSTR MSG_LED_CHANNEL_N = _UxGT("Channel {"); + LSTR MSG_NEO2_PRESETS = _UxGT("Light #2 Presets"); + LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Brightness"); + LSTR MSG_NOZZLE_PARKED = _UxGT("Nozzle Parked"); + LSTR MSG_COOLER = _UxGT("Laser Coolant"); + LSTR MSG_COOLER_TOGGLE = _UxGT("Toggle Cooler"); + LSTR MSG_FLOWMETER_SAFETY = _UxGT("Flow Safety"); + LSTR MSG_LASER = _UxGT("Laser"); + LSTR MSG_CONTROLLER_FAN = _UxGT("Controller Fan"); + LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("Idle Speed"); + LSTR MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("Auto Mode"); + LSTR MSG_CONTROLLER_FAN_SPEED = _UxGT("Active Speed"); + LSTR MSG_CONTROLLER_FAN_DURATION = _UxGT("Idle Period"); + LSTR MSG_PID_CYCLE = _UxGT("PID Cycles"); + LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("PID tuning done"); + LSTR MSG_PID_AUTOTUNE_FAILED = _UxGT("Autotune failed!"); + LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Autotune failed! Bad extruder."); + LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Autotune failed! Temperature too high."); + LSTR MSG_PID_TIMEOUT = _UxGT("Autotune failed! Timeout."); + LSTR MSG_MPC_MEASURING_AMBIENT = _UxGT("Testing heat loss"); + LSTR MSG_MPC_AUTOTUNE = _UxGT("MPC Autotune"); + LSTR MSG_MPC_EDIT = _UxGT("Edit * MPC"); + LSTR MSG_MPC_POWER_E = _UxGT("Power *"); + LSTR MSG_MPC_BLOCK_HEAT_CAPACITY_E = _UxGT("Heat Cap. *"); + LSTR MSG_SENSOR_RESPONSIVENESS_E = _UxGT("Sensor Resp. *"); + LSTR MSG_MPC_AMBIENT_XFER_COEFF_E = _UxGT("Ambient Co. *"); + LSTR MSG_MPC_AMBIENT_XFER_COEFF_FAN_E = _UxGT("Fan coeff. *"); + LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("XY Freq Limit"); + LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("Min FR Factor"); + LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("E Limit in mm") SUPERSCRIPT_THREE; + LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("E Limit *"); + LSTR MSG_BRIGHTNESS = _UxGT("LCD Brightness"); + LSTR MSG_SCREEN_TIMEOUT = _UxGT("LCD Timeout (m)"); + LSTR MSG_BRIGHTNESS_OFF = _UxGT("Backlight Off"); + LSTR MSG_ERR_EEPROM_CRC = _UxGT("Err: EEPROM CRC"); + LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Err: EEPROM Size"); + LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Err: EEPROM Version"); + LSTR MSG_SETTINGS_STORED = _UxGT("Settings Stored"); + LSTR MSG_INFO_MACHINENAME = _UxGT("Machine Name"); + LSTR MSG_INFO_SIZE = _UxGT("Size"); + LSTR MSG_INFO_FWVERSION = _UxGT("Firmware Version"); + LSTR MSG_INFO_BUILD = _UxGT("Build Info"); + LSTR MSG_POWER_MONITOR = _UxGT("Power monitor"); + LSTR MSG_CURRENT = _UxGT("Current"); + LSTR MSG_VOLTAGE = _UxGT("Voltage"); + LSTR MSG_POWER = _UxGT("Power"); + LSTR MSG_BUTTON_IGNORE = _UxGT("Ignore"); + LSTR MSG_BUTTON_CONFIRM = _UxGT("Confirm"); + LSTR MSG_BUTTON_CONTINUE = _UxGT("Continue"); + LSTR MSG_BUTTON_SKIP = _UxGT("Skip"); + LSTR MSG_BUTTON_INFO = _UxGT("Info"); + LSTR MSG_BUTTON_LEVEL = _UxGT("Level"); + LSTR MSG_BUTTON_PAUSE = _UxGT("Pause"); + LSTR MSG_BUTTON_RESUME = _UxGT("Resume"); + LSTR MSG_BUTTON_ADVANCED = _UxGT("Advanced"); + LSTR MSG_BUTTON_SAVE = _UxGT("Save"); + LSTR MSG_BUTTON_PURGE = _UxGT("Purge"); + LSTR MSG_PAUSING = _UxGT("Pausing..."); + LSTR MSG_ADVANCED_PAUSE = _UxGT("Advanced Pause"); + LSTR MSG_HOST_START_PRINT = _UxGT("Host Start"); + LSTR MSG_END_LOOPS = _UxGT("End Loops"); + LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Continue Job"); + LSTR MSG_STOPPING = _UxGT("Stopping..."); + LSTR MSG_REMAINING_TIME = _UxGT("Remaining"); + LSTR MSG_PRINT_DONE = _UxGT("Print Done"); + LSTR MSG_PRINTER_KILLED = _UxGT("Printer killed!"); + LSTR MSG_TURN_OFF = _UxGT("Turn off now"); + LSTR MSG_FWRETRACT = _UxGT("Firmware Retract"); + LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Swap Extra"); + LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Park Head"); + LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Recover Speed"); + LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Fan Speed"); + LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Fan Time"); + LSTR MSG_TOOL_MIGRATION_ON = _UxGT("Auto ON"); + LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("Auto OFF"); + LSTR MSG_TOOL_MIGRATION = _UxGT("Tool Migration"); + LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("Auto-migration"); + LSTR MSG_TOOL_MIGRATION_END = _UxGT("Last Extruder"); + LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("Migrate to *"); + LSTR MSG_BLTOUCH_SPEED_MODE = _UxGT("High Speed"); + LSTR MSG_ZPROBE_SETTINGS = _UxGT("Probe Settings"); + LSTR MSG_ZPROBE_OFFSETS = _UxGT("Probe Offsets"); + LSTR MSG_ZPROBE_MARGIN = _UxGT("Probe Margin"); + LSTR MSG_Z_FEED_RATE = _UxGT("Z Feedrate"); + LSTR MSG_ENABLE_HS_MODE = _UxGT("Enable HS mode"); + LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Move Nozzle to Bed"); + LSTR MSG_ERR_TEMP_MALFUNCTION = _UxGT("TEMP MALFUNCTION"); + LSTR MSG_ERR_COOLING_FAILED = _UxGT("Cooling Failed"); + LSTR MSG_PLEASE_WAIT = _UxGT("Please wait..."); + LSTR MSG_PREHEATING = _UxGT("Preheating..."); + LSTR MSG_PROBE_HEATING = _UxGT("Probe Heating..."); + LSTR MSG_PROBE_COOLING = _UxGT("Probe Cooling..."); + LSTR MSG_LASER_COOLING = _UxGT("Laser Cooling..."); + LSTR MSG_MESH_DONE = _UxGT("Mesh probing done"); + LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Hotend Idle Timeout"); + LSTR MSG_FAN_SPEED_FAULT = _UxGT("Fan speed fault"); + LSTR MSG_COLORS_GET = _UxGT("Get Color"); + LSTR MSG_COLORS_SELECT = _UxGT("Select Colors"); + LSTR MSG_COLORS_APPLIED = _UxGT("Colors applied"); + LSTR MSG_COLORS_RED = _UxGT("Red"); + LSTR MSG_COLORS_GREEN = _UxGT("Green"); + LSTR MSG_COLORS_BLUE = _UxGT("Blue"); + LSTR MSG_COLORS_WHITE = _UxGT("White"); + LSTR MSG_UI_LANGUAGE = _UxGT("UI Language"); + LSTR MSG_SOUND_ENABLE = _UxGT("Enable sound"); + LSTR MSG_LOCKSCREEN = _UxGT("Lock Screen"); + LSTR MSG_LOCKSCREEN_LOCKED = _UxGT("Printer is Locked,"); + LSTR MSG_LOCKSCREEN_UNLOCK = _UxGT("Scroll to unlock."); + LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Please wait for reboot."); + LSTR MSG_PLEASE_PREHEAT = _UxGT("Please Preheat"); + LSTR MSG_FILAMENT_CHANGE_PURGE_CONTINUE = _UxGT("Purge or Continue?"); + LSTR MSG_EXTRUDER_MIN_TEMP = _UxGT("Extruder Min Temp."); + LSTR MSG_FANCHECK = _UxGT("Fan Tacho Check"); LSTR MSG_BAD_PAGE = _UxGT("Bad page index"); LSTR MSG_BAD_PAGE_SPEED = _UxGT("Bad page speed"); - - // Password Lock LSTR MSG_EDIT_PASSWORD = _UxGT("Edit Password"); LSTR MSG_LOGIN_REQUIRED = _UxGT("Login Required"); LSTR MSG_PASSWORD_SETTINGS = _UxGT("Password Settings"); @@ -893,38 +739,177 @@ namespace LanguageNarrow_en { LSTR MSG_START_OVER = _UxGT("Start Over"); LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Remember to Save!"); LSTR MSG_PASSWORD_REMOVED = _UxGT("Password Removed"); - - // Filament Change screens show up to 2 lines on a 3-line display - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Click to continue")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parking...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Please wait...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Insert and Click")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Click to heat")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Heating...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Ejecting...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Loading...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Purging...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Click to finish")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Resuming...")); - - LSTR MSG_TMC_DRIVERS = _UxGT("TMC Drivers"); - LSTR MSG_TMC_CURRENT = _UxGT("Driver Current"); + LSTR MSG_LEVEL_X_AXIS = _UxGT("Level X Axis"); + LSTR MSG_AUTO_CALIBRATE = _UxGT("Auto Calibrate"); + LSTR MSG_FTDI_HEATER_TIMEOUT = _UxGT("Idle timeout, temperature decreased. Press Okay to reheat and again to resume."); + LSTR MSG_HEATER_TIMEOUT = _UxGT("Heater Timeout"); + LSTR MSG_REHEAT = _UxGT("Reheat"); + LSTR MSG_REHEATING = _UxGT("Reheating..."); + LSTR MSG_REHEATDONE = _UxGT("Reheat Done"); + LSTR MSG_PROBE_WIZARD = _UxGT("Z Probe Wizard"); + LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Probing Z Reference"); + LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Moving to Probing Pos"); + LSTR MSG_XATC = _UxGT("X-Twist Wizard"); + LSTR MSG_XATC_DONE = _UxGT("X-Twist Wizard Done!"); + LSTR MSG_XATC_UPDATE_Z_OFFSET = _UxGT("Update Z-Offset to "); + LSTR MSG_SOUND = _UxGT("Sound"); + LSTR MSG_TOP_LEFT = _UxGT("Touch Top Left"); + LSTR MSG_BOTTOM_LEFT = _UxGT("Touch Bottom Left"); + LSTR MSG_TOP_RIGHT = _UxGT("Touch Top Right"); + LSTR MSG_BOTTOM_RIGHT = _UxGT("Touch Bottom Right"); + LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Calibration Completed"); + LSTR MSG_CALIBRATION_FAILED = _UxGT("Calibration Failed"); + LSTR MSG_DRIVER_BACKWARD = _UxGT(" driver backward"); + LSTR MSG_SD_CARD = _UxGT("SD Card"); + LSTR MSG_USB_DISK = _UxGT("USB Disk"); + LSTR MSG_HOST_SHUTDOWN = _UxGT("Host Shutdown"); + LSTR DGUS_MSG_TEMP_TOO_HIGH = _UxGT("Temperature too high."); + LSTR MSG_SHORT_DAY = _UxGT("d"); + LSTR MSG_SHORT_HOUR = _UxGT("h"); + LSTR MSG_SHORT_MINUTE = _UxGT("m"); + LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("No Media"); + LSTR MSG_MEDIA_INSERTED_SD = _UxGT("SD Card Inserted"); + LSTR MSG_MEDIA_INSERTED_USB = _UxGT("USB Drive Inserted"); + LSTR MSG_MEDIA_REMOVED_SD = _UxGT("SD Card Removed"); + LSTR MSG_MEDIA_REMOVED_USB = _UxGT("USB Drive Removed"); + LSTR MSG_MEDIA_INIT_FAIL_SD = _UxGT("SD Card Init Fail"); + LSTR MSG_MEDIA_INIT_FAIL_USB = _UxGT("USB Drive Init Fail"); + LSTR MSG_MEDIA_SORT = _UxGT("Sort ") MEDIA_TYPE_EN; + LSTR MSG_USB_FD_WAITING_FOR_MEDIA = _UxGT("Wait for USB Drive"); + LSTR MSG_USB_FD_MEDIA_REMOVED = _UxGT("USB Drive Removed"); + LSTR MSG_ENDSTOP_TEST = _UxGT("Endstop Test"); + LSTR MSG_Z_PROBE = _UxGT("Z Probe"); + LSTR MSG_HOMING_FEEDRATE = _UxGT("Homing Feedrate"); + LSTR MSG_HOMING_FEEDRATE_N = _UxGT("@ Homing FR"); + LSTR MSG_HOME_ALL = _UxGT("Home All"); + LSTR MSG_Z_AFTER_HOME = _UxGT("Z After Homing"); + LSTR MSG_ZERO_MESH_POINT = _UxGT("Zero Current Point"); + LSTR MSG_ERR_M428_TOO_FAR = _UxGT("MIN/MAX Too Far"); + LSTR MSG_PREHEAT_1_CHAMBER = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" Chmb"); + LSTR MSG_PREHEAT_2 = _UxGT("Preheat ") PREHEAT_2_LABEL; + LSTR MSG_PREHEAT_3 = _UxGT("Preheat ") PREHEAT_3_LABEL; + LSTR MSG_PREHEAT_4 = PREHEAT_4_LABEL; + LSTR MSG_PREHEAT_M_CHAMBER = _UxGT("Preheat $ Chmb"); + LSTR MSG_PREHEAT_HOTEND = _UxGT("Preheat Hotend"); + LSTR MSG_PREHEAT = _UxGT("Preheat"); + LSTR MSG_POWER_EDM_FAULT = _UxGT("Power EDM Fault"); + LSTR MSG_MESH_VIEW_GRID = _UxGT("View Mesh (grid)"); + LSTR MSG_MESH_RESET = _UxGT("Mesh reset"); + LSTR MSG_CUSTOM_MENU_MAIN_TITLE = _UxGT("_UxGT(") CUSTOM_MENU_MAIN_TITLE _UxGT(")"); + LSTR MSG_TOOL_HEAD_TH = _UxGT("_UxGT(") CUSTOM_MENU_MAIN_TITLE _UxGT(" (TH))"); + LSTR MSG_PRESENT_BED = _UxGT("Present Bed"); + LSTR MSG_M48_DEV = _UxGT("Dev"); + LSTR MSG_M48_MAX_DELTA = _UxGT("Max delta"); + LSTR MSG_MESH_ACTIVE = _UxGT("Mesh %i active"); + LSTR MSG_LIGHT_ENCODER = _UxGT("Encoder Light"); + LSTR MSG_LIGHT_ENCODER_PRESETS = _UxGT("Encoder Light Presets"); + LSTR MSG_LIVE_MOVE = _UxGT("Live Movement"); + LSTR MSG_CUTTER = _UxGT("Cutter"); + LSTR MSG_FLOW_PERCENTAGE = _UxGT("Set Flowrate Percentage"); + LSTR MSG_TIMEOUT = _UxGT("Timeout"); + LSTR MSG_PID_FOR_NOZZLE = _UxGT("for Nozzle is running."); + LSTR MSG_PID_FOR_BED = _UxGT("for BED is running."); + LSTR MSG_PID_FOR_CHAMBER = _UxGT("for CHAMBER is running."); + LSTR MSG_TEMP_NOZZLE = _UxGT("Nozzle Temperature"); + LSTR MSG_TEMP_BED = _UxGT("Bed Temperature"); + LSTR MSG_TEMP_CHAMBER = _UxGT("Chamber Temperature"); + LSTR MSG_MPC_HEATING_PAST_200 = _UxGT("Heating to >200C"); + LSTR MSG_MPC_COOLING_TO_AMBIENT = _UxGT("Cooling to ambient"); + LSTR MSG_MPC_POWER = _UxGT("Heater Power"); + LSTR MSG_MPC_BLOCK_HEAT_CAPACITY = _UxGT("Heat Capacity"); + LSTR MSG_SENSOR_RESPONSIVENESS = _UxGT("Sensor Resp."); + LSTR MSG_MPC_AMBIENT_XFER_COEFF = _UxGT("Ambient Coeff."); + LSTR MSG_MPC_AMBIENT_XFER_COEFF_FAN = _UxGT("Fan coeff."); + LSTR MSG_STEP_SMOOTHING = _UxGT("Step Smoothing"); + LSTR MSG_A_SPINDLE = _UxGT("Spindle Accel"); + LSTR MSG_INPUT_SHAPING = _UxGT("Input Shaping"); + LSTR MSG_SHAPING_ENABLE_N = _UxGT("Enable @ shaping"); + LSTR MSG_SHAPING_DISABLE_N = _UxGT("Disable @ shaping"); + LSTR MSG_SHAPING_FREQ_N = _UxGT("@ frequency"); + LSTR MSG_SHAPING_ZETA_N = _UxGT("@ damping"); + LSTR MSG_SHAPING_A_FREQ = STR_A _UxGT(" frequency"); + LSTR MSG_SHAPING_B_FREQ = STR_B _UxGT(" frequency"); + LSTR MSG_SHAPING_C_FREQ = STR_C _UxGT(" frequency"); + LSTR MSG_SHAPING_A_ZETA = STR_A _UxGT(" damping"); + LSTR MSG_SHAPING_B_ZETA = STR_B _UxGT(" damping"); + LSTR MSG_SHAPING_C_ZETA = STR_C _UxGT(" damping"); + LSTR MSG_FTM_TRAPEZOIDAL = _UxGT("Trapezoidal"); + LSTR MSG_FTM_POLY5 = _UxGT("5th Order"); + LSTR MSG_FTM_POLY6 = _UxGT("6th Order"); + LSTR MSG_FTM_TRAJECTORY = _UxGT("Trajectory: $"); + LSTR MSG_FILAMENT_EN = _UxGT("Filament *"); + LSTR MSG_SEGMENTS_PER_SECOND = _UxGT("Segments/Sec"); + LSTR MSG_DRAW_MIN_X = _UxGT("Draw Min X"); + LSTR MSG_DRAW_MAX_X = _UxGT("Draw Max X"); + LSTR MSG_DRAW_MIN_Y = _UxGT("Draw Min Y"); + LSTR MSG_DRAW_MAX_Y = _UxGT("Draw Max Y"); + LSTR MSG_MAX_BELT_LEN = _UxGT("Max Belt Len"); + LSTR MSG_LINEAR_ADVANCE = _UxGT("Linear Advance"); + LSTR MSG_ADVANCE_TAU = _UxGT("Advance Tau"); + LSTR MSG_ADVANCE_TAU_E = _UxGT("Advance Tau *"); + LSTR MSG_NLE_ON = _UxGT("NLE enabled"); + LSTR MSG_HOTEND_TEMP_GRAPH = _UxGT("Hotend Temp Graph"); + LSTR MSG_BED_TEMP_GRAPH = _UxGT("Bed Temp Graph"); + LSTR MSG_EEPROM_INITIALIZED = _UxGT("EEPROM Initialized"); + LSTR MSG_ERR_EEPROM_CORRUPT = _UxGT("Err: EEPROM Corrupt"); + LSTR MSG_HAS_PREVIEW = _UxGT("Has preview"); + LSTR MSG_CANCEL_PRINT = _UxGT("Cancel Print"); + LSTR MSG_RESUME_BED_TEMP = _UxGT("Resume Bed Temp"); + LSTR MSG_TOOL_HEAD_SWAP = _UxGT("Park For Tool Head Swap"); + LSTR MSG_FILAMENT_SWAP = _UxGT("Park For Filament Change"); + LSTR MSG_SINGLENOZZLE_WIPE_RETRACT = _UxGT("Wipe Retract"); + LSTR MSG_PARK_FAILED = _UxGT("Head cannot be parked"); + LSTR MSG_RELEASE_SD = _UxGT("Release SD Card"); + LSTR MSG_RELEASE_USB = _UxGT("Release USB Drive"); + LSTR MSG_CHANGE_SD = _UxGT("Select SD Card"); + LSTR MSG_CHANGE_USB = _UxGT("Select USB Drive"); + LSTR MSG_RUN_AUTOFILES_SD = _UxGT("Run SD Autofiles"); + LSTR MSG_RUN_AUTOFILES_USB = _UxGT("Run USB Autofiles"); + LSTR MSG_MEDIA_MENU_SD = _UxGT("Select from SD"); + LSTR MSG_MEDIA_MENU_USB = _UxGT("Select from USB"); + LSTR MSG_MANUAL_PENUP = _UxGT("Pen up"); + LSTR MSG_MANUAL_PENDOWN = _UxGT("Pen down"); + LSTR MSG_ZOFFSET = _UxGT("Z Offset"); + LSTR MSG_BED_ANNEALING = _UxGT("Annealing..."); + LSTR MSG_DELTA_CALIBRATION_IN_PROGRESS = _UxGT("Delta Calibration in progress"); + LSTR MSG_INFO_PRINTER_STATS_MENU = _UxGT("Printer Stats"); + LSTR MSG_RESET_STATS = _UxGT("Reset Print Stats?"); + LSTR MSG_BED_IDLE_TIMEOUT = _UxGT("Bed Idle Timeout"); + LSTR MSG_HOTEND_IDLE_DISABLE = _UxGT("Disable Timeout"); + LSTR MSG_HOTEND_IDLE_NOZZLE_TARGET = _UxGT("Nozzle Idle Temp"); + LSTR MSG_HOTEND_IDLE_BED_TARGET = _UxGT("Bed Idle Temp"); + LSTR MSG_SENSOR = _UxGT("Sensor"); + LSTR MSG_MOTION_DISTANCE_MM = _UxGT("Motion Dist mm"); + LSTR MSG_MMU2_CUT_FILAMENT = _UxGT("Cut"); + LSTR MSG_MMU2_CUTTING_FILAMENT = _UxGT("Filament %i Cut..."); + LSTR MSG_MMU2_REMOVE_AND_CLICK = _UxGT("Remove and click..."); + LSTR MSG_MMU_SENSITIVITY = _UxGT("Sensitivity"); + LSTR MSG_MMU_CUTTER = _UxGT("Cutter"); + LSTR MSG_MMU_CUTTER_MODE = _UxGT("Cutter Mode"); + LSTR MSG_MMU_CUTTER_MODE_DISABLE = _UxGT("Disable"); + LSTR MSG_MMU_CUTTER_MODE_ENABLE = _UxGT("Enable"); + LSTR MSG_MMU_CUTTER_MODE_ALWAYS = _UxGT("Always"); + LSTR MSG_MMU_SPOOL_JOIN = _UxGT("Spool Join"); + LSTR MSG_MMU_STATISTICS = _UxGT("Statistics"); + LSTR MSG_MMU_RESET_FAIL_STATS = _UxGT("Reset Fail Stats"); + LSTR MSG_MMU_RESET_STATS = _UxGT("Reset All Stats"); + LSTR MSG_MMU_CURRENT_PRINT = _UxGT("Curr. print"); + LSTR MSG_MMU_CURRENT_PRINT_FAILURES = _UxGT("Curr. print failures"); + LSTR MSG_MMU_LAST_PRINT = _UxGT("Last print"); + LSTR MSG_MMU_LAST_PRINT_FAILURES = _UxGT("Last print failures"); + LSTR MSG_MMU_TOTAL = _UxGT("Total"); + LSTR MSG_MMU_TOTAL_FAILURES = _UxGT("Total failures"); + LSTR MSG_MMU_DEV_INCREMENT_FAILS = _UxGT("Increment fails"); + LSTR MSG_MMU_DEV_INCREMENT_LOAD_FAILS = _UxGT("Increment load fails"); + LSTR MSG_MMU_FAILS = _UxGT("MMU fails"); + LSTR MSG_MMU_LOAD_FAILS = _UxGT("MMU load fails"); + LSTR MSG_MMU_POWER_FAILS = _UxGT("MMU power fails"); + LSTR MSG_MMU_MATERIAL_CHANGES = _UxGT("Material changes"); LSTR MSG_TMC_ACURRENT = STR_A _UxGT("Driver Current"); LSTR MSG_TMC_BCURRENT = STR_B _UxGT("Driver Current"); LSTR MSG_TMC_CCURRENT = STR_C _UxGT("Driver Current"); LSTR MSG_TMC_ECURRENT = _UxGT("E Driver Current"); - LSTR MSG_TMC_HYBRID_THRS = _UxGT("Hybrid Threshold"); - LSTR MSG_TMC_HOMING_THRS = _UxGT("Sensorless Homing"); - LSTR MSG_TMC_STEPPING_MODE = _UxGT("Stepping Mode"); - LSTR MSG_TMC_STEALTHCHOP = _UxGT("StealthChop"); LSTR MSG_TMC_HOMING_CURRENT = _UxGT("Homing Current"); - - LSTR MSG_SERVICE_RESET = _UxGT("Reset"); - LSTR MSG_SERVICE_IN = _UxGT(" in:"); - LSTR MSG_BACKLASH = _UxGT("Backlash"); - LSTR MSG_BACKLASH_CORRECTION = _UxGT("Correction"); - LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Smoothing"); - LSTR MSG_FIXED_TIME_MOTION = _UxGT("Fixed-Time Motion"); LSTR MSG_FTM_CMPN_MODE = _UxGT("@ Comp. Mode: $"); LSTR MSG_FTM_ZV = _UxGT("ZV"); @@ -935,8 +920,6 @@ namespace LanguageNarrow_en { LSTR MSG_FTM_2HEI = _UxGT("2HEI"); LSTR MSG_FTM_3HEI = _UxGT("3HEI"); LSTR MSG_FTM_MZV = _UxGT("MZV"); - //LSTR MSG_FTM_ULENDO_FBS = _UxGT("Ulendo FBS"); - //LSTR MSG_FTM_DISCTF = _UxGT("DISCTF"); LSTR MSG_FTM_AXIS_SYNC = _UxGT("Axis Sync"); LSTR MSG_FTM_DYN_MODE = _UxGT("DF Mode: $"); LSTR MSG_FTM_Z_BASED = _UxGT("Z-based"); @@ -948,7 +931,6 @@ namespace LanguageNarrow_en { LSTR MSG_FTM_SMOOTH_TIME_N = _UxGT("@ Smoothing Time"); LSTR MSG_FTM_POLY6_OVERSHOOT = _UxGT("@ Poly6 Overshoot"); LSTR MSG_FTM_CONFIGURE_AXIS_N = _UxGT("Configure @ Axis"); - LSTR MSG_FTM_RESONANCE_TEST = _UxGT("Resonance Test"); LSTR MSG_FTM_RT_RUNNING = _UxGT("Res. Test Running..."); LSTR MSG_FTM_RT_START_N = _UxGT("Start @ Axis Test"); @@ -956,45 +938,7 @@ namespace LanguageNarrow_en { LSTR MSG_FTM_RETRIEVE_FREQ = _UxGT("Calc. Res. Freq."); LSTR MSG_FTM_RESONANCE_FREQ = _UxGT("Resonance Freq."); LSTR MSG_FTM_TIMELINE_FREQ = _UxGT("Timeline (s)"); - - LSTR MSG_LEVEL_X_AXIS = _UxGT("Level X Axis"); - LSTR MSG_AUTO_CALIBRATE = _UxGT("Auto Calibrate"); - LSTR MSG_FTDI_HEATER_TIMEOUT = _UxGT("Idle timeout, temperature decreased. Press Okay to reheat and again to resume."); - LSTR MSG_HEATER_TIMEOUT = _UxGT("Heater Timeout"); - LSTR MSG_REHEAT = _UxGT("Reheat"); - LSTR MSG_REHEATING = _UxGT("Reheating..."); - LSTR MSG_REHEATDONE = _UxGT("Reheat Done"); - - LSTR MSG_PROBE_WIZARD = _UxGT("Z Probe Wizard"); - LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Probing Z Reference"); - LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Moving to Probing Pos"); - - LSTR MSG_XATC = _UxGT("X-Twist Wizard"); - LSTR MSG_XATC_DONE = _UxGT("X-Twist Wizard Done!"); - LSTR MSG_XATC_UPDATE_Z_OFFSET = _UxGT("Update Z-Offset to "); - - LSTR MSG_SOUND = _UxGT("Sound"); - - LSTR MSG_TOP_LEFT = _UxGT("Touch Top Left"); - LSTR MSG_BOTTOM_LEFT = _UxGT("Touch Bottom Left"); - LSTR MSG_TOP_RIGHT = _UxGT("Touch Top Right"); - LSTR MSG_BOTTOM_RIGHT = _UxGT("Touch Bottom Right"); LSTR MSG_TOUCH_CALIBRATION = _UxGT("Touch Calibration"); - LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Calibration Completed"); - LSTR MSG_CALIBRATION_FAILED = _UxGT("Calibration Failed"); - - LSTR MSG_DRIVER_BACKWARD = _UxGT(" driver backward"); - - LSTR MSG_SD_CARD = _UxGT("SD Card"); - LSTR MSG_USB_DISK = _UxGT("USB Disk"); - - LSTR MSG_HOST_SHUTDOWN = _UxGT("Host Shutdown"); - - LSTR MSG_SHORT_DAY = _UxGT("d"); // One character only - LSTR MSG_SHORT_HOUR = _UxGT("h"); // One character only - LSTR MSG_SHORT_MINUTE = _UxGT("m"); // One character only - - // These strings can be the same in all languages LSTR MSG_MARLIN = _UxGT("Marlin"); LSTR MSG_PID_P = _UxGT("PID-P"); LSTR MSG_PID_P_E = _UxGT("PID-P *"); @@ -1007,19 +951,15 @@ namespace LanguageNarrow_en { LSTR MSG_PID_F = _UxGT("PID-F"); LSTR MSG_PID_F_E = _UxGT("PID-F *"); LSTR MSG_BACKLASH_N = _UxGT("@"); - - // DGUS-Specific message strings, not used elsewhere LSTR DGUS_MSG_NOT_WHILE_PRINTING = _UxGT("Not allowed during print"); LSTR DGUS_MSG_NOT_WHILE_IDLE = _UxGT("Not allowed while idle"); LSTR DGUS_MSG_NO_FILE_SELECTED = _UxGT("No file selected"); LSTR DGUS_MSG_TEMP_TOO_LOW = _UxGT("Temperature too low"); - LSTR DGUS_MSG_TEMP_TOO_HIGH = _UxGT("Temperature too high."); LSTR DGUS_MSG_EXECUTING_COMMAND = _UxGT("Executing command..."); LSTR DGUS_MSG_BED_PID_DISABLED = _UxGT("Bed PID disabled"); LSTR DGUS_MSG_PID_DISABLED = _UxGT("PID disabled"); LSTR DGUS_MSG_PID_AUTOTUNING = _UxGT("PID autotuning..."); LSTR DGUS_MSG_INVALID_RECOVERY_DATA = _UxGT("Invalid recovery data"); - LSTR DGUS_MSG_HOMING_REQUIRED = _UxGT("Homing required"); LSTR DGUS_MSG_BUSY = _UxGT("Busy"); LSTR DGUS_MSG_HOMING = _UxGT("Homing..."); @@ -1031,11 +971,6 @@ namespace LanguageNarrow_en { LSTR DGUS_MSG_WRITE_EEPROM_FAILED = _UxGT("EEPROM write failed"); LSTR DGUS_MSG_READ_EEPROM_FAILED = _UxGT("EEPROM read failed"); LSTR DGUS_MSG_FILAMENT_RUNOUT = _UxGT("Filament runout E%d"); - - // - // MMU3 Translatable Strings - // - LSTR MSG_TITLE_FINDA_DIDNT_TRIGGER = _UxGT("FINDA DIDNT TRIGGER"); LSTR MSG_TITLE_FINDA_FILAMENT_STUCK = _UxGT("FINDA FILAM. STUCK"); LSTR MSG_TITLE_FSENSOR_DIDNT_TRIGGER = _UxGT("FSENSOR DIDNT TRIGG."); @@ -1067,7 +1002,6 @@ namespace LanguageNarrow_en { LSTR MSG_TITLE_FILAMENT_EJECTED = _UxGT("FILAMENT EJECTED"); LSTR MSG_TITLE_FILAMENT_CHANGE = _UxGT("FILAMENT CHANGE"); LSTR MSG_TITLE_UNKNOWN_ERROR = _UxGT("UNKNOWN ERROR"); - LSTR MSG_DESC_FINDA_DIDNT_TRIGGER = _UxGT("FINDA didn't trigger while loading the filament. Ensure the filament can move and FINDA works."); LSTR MSG_DESC_FINDA_FILAMENT_STUCK = _UxGT("FINDA didn't switch off while unloading filament. Try unloading manually. Ensure filament can move and FINDA works."); LSTR MSG_DESC_FSENSOR_DIDNT_TRIGGER = _UxGT("Filament sensor didn't trigger while loading the filament. Ensure the sensor is calibrated and the filament reached it."); @@ -1090,9 +1024,7 @@ namespace LanguageNarrow_en { LSTR MSG_DESC_FILAMENT_EJECTED = _UxGT("Remove the ejected filament from the front of the MMU."); LSTR MSG_DESC_FILAMENT_CHANGE = _UxGT("M600 Filament Change. Load a new filament or eject the old one."); LSTR MSG_DESC_UNKNOWN_ERROR = _UxGT("Unexpected error occurred."); - - LSTR MSG_DESC_FW_UPDATE_NEEDED = _UxGT("MMU FW version is not supported. Update to version " MMU_VERSION "."); - + LSTR MSG_DESC_FW_UPDATE_NEEDED = _UxGT("MMU FW version is not supported. Update to version ") MMU_VERSION "."; LSTR MSG_BTN_RETRY = _UxGT("Retry"); LSTR MSG_BTN_RESET_MMU = _UxGT("ResetMMU"); LSTR MSG_BTN_UNLOAD = _UxGT("Unload"); @@ -1101,8 +1033,6 @@ namespace LanguageNarrow_en { LSTR MSG_BTN_STOP = _UxGT("Stop"); LSTR MSG_BTN_DISABLE_MMU = _UxGT("Disable"); LSTR MSG_BTN_MORE = _UxGT("More Info"); - - // Prusa MMU LSTR MSG_DONE = _UxGT("Done"); LSTR MSG_FINISHING_MOVEMENTS = _UxGT("Finishing movements"); LSTR MSG_LOADING_FILAMENT = _UxGT("Loading filament"); @@ -1140,40 +1070,40 @@ namespace LanguageNarrow_en { namespace LanguageWide_en { using namespace LanguageNarrow_en; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 LSTR MSG_PREHEAT_1_END = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" Hotend"); LSTR MSG_PREHEAT_1_END_E = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" Hotend ~"); - LSTR MSG_PREHEAT_1_CHAMBER = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" Chamber"); LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" Settings"); LSTR MSG_PREHEAT_M_END = _UxGT("Preheat $ Hotend"); LSTR MSG_PREHEAT_M_END_E = _UxGT("Preheat $ Hotend ~"); - LSTR MSG_PREHEAT_M_CHAMBER = _UxGT("Preheat $ Chamber"); LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Preheat $ Settings"); - LSTR MSG_HOST_START_PRINT = _UxGT("Start Host Print"); - LSTR MSG_PRINTING_OBJECT = _UxGT("Printing Object"); - LSTR MSG_CANCEL_OBJECT = _UxGT("Cancel Object"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Cancel Object {"); - LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Continue Print Job"); LSTR MSG_MEDIA_MENU = _UxGT("Select from ") MEDIA_TYPE_EN; - LSTR MSG_MEDIA_MENU_SD = _UxGT("Select from SD Card"); - LSTR MSG_MEDIA_MENU_USB = _UxGT("Select from USB Drive"); LSTR MSG_NO_MEDIA = _UxGT("No ") MEDIA_TYPE_EN _UxGT(" Found"); - LSTR MSG_TURN_OFF = _UxGT("Turn off the printer"); - LSTR MSG_END_LOOPS = _UxGT("End Repeat Loops"); - LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("No media inserted."); // ProUI - LSTR MSG_PLEASE_PREHEAT = _UxGT("Please preheat the hot end."); // ProUI - LSTR MSG_INFO_PRINT_COUNT_RESET = _UxGT("Reset Print Count"); // ProUI LSTR MSG_INFO_PRINT_COUNT = _UxGT("Print Count"); LSTR MSG_INFO_PRINT_TIME = _UxGT("Print Time"); LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Longest Job Time"); LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extruded Total"); + LSTR MSG_PRINTING_OBJECT = _UxGT("Printing Object"); + LSTR MSG_CANCEL_OBJECT = _UxGT("Cancel Object"); + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Cancel Object {"); + LSTR MSG_HOST_START_PRINT = _UxGT("Start Host Print"); + LSTR MSG_END_LOOPS = _UxGT("End Repeat Loops"); + LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Continue Print Job"); + LSTR MSG_TURN_OFF = _UxGT("Turn off the printer"); + LSTR MSG_PLEASE_PREHEAT = _UxGT("Please preheat the hot end."); + LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("No media inserted."); + LSTR MSG_INFO_PRINT_COUNT_RESET = _UxGT("Reset Print Count"); LSTR MSG_HOMING_FEEDRATE_N = _UxGT("@ Homing Feedrate"); + LSTR MSG_PREHEAT_1_CHAMBER = _UxGT("Preheat ") PREHEAT_1_LABEL _UxGT(" Chamber"); + LSTR MSG_PREHEAT_M_CHAMBER = _UxGT("Preheat $ Chamber"); + LSTR MSG_EEPROM_INITIALIZED = _UxGT("Default Settings Restored"); + LSTR MSG_MEDIA_MENU_SD = _UxGT("Select from SD Card"); + LSTR MSG_MEDIA_MENU_USB = _UxGT("Select from USB Drive"); + LSTR MSG_FTM_RT_RUNNING = _UxGT("Resonance Test Running..."); + LSTR MSG_FTM_RESONANCE_FREQ = _UxGT("Resonance frequency"); LSTR MSG_HOMING_FEEDRATE_X = _UxGT("X Homing Feedrate"); LSTR MSG_HOMING_FEEDRATE_Y = _UxGT("Y Homing Feedrate"); LSTR MSG_HOMING_FEEDRATE_Z = _UxGT("Z Homing Feedrate"); - LSTR MSG_EEPROM_INITIALIZED = _UxGT("Default Settings Restored"); - LSTR MSG_FTM_RT_RUNNING = _UxGT("Resonance Test Running..."); - LSTR MSG_FTM_RESONANCE_FREQ = _UxGT("Resonance frequency"); #endif } @@ -1181,17 +1111,17 @@ namespace LanguageTall_en { using namespace LanguageWide_en; #if LCD_HEIGHT >= 4 // Filament Change screens show up to 3 lines on a 4-line display - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Press Button", "to resume print")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parking...")); LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Wait for", "filament change", "to start")); LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Insert filament", "and press button", "to continue")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Press button", "to heat nozzle")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Nozzle heating", "Please wait...")); LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Wait for", "filament unload")); LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Wait for", "filament load")); + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Wait for print", "to resume...")); + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Nozzle heating", "Please wait...")); + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Press button", "to heat nozzle")); + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Press Button", "to resume print")); + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parking...")); LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Wait for", "filament purge")); LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Click to finish", "filament purge")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Wait for print", "to resume...")); #endif } diff --git a/Marlin/src/lcd/language/language_es.h b/Marlin/src/lcd/language/language_es.h index 08ee8b2c04..fc2469f9ce 100644 --- a/Marlin/src/lcd/language/language_es.h +++ b/Marlin/src/lcd/language/language_es.h @@ -50,536 +50,517 @@ namespace LanguageNarrow_es { constexpr uint8_t CHARSIZE = 2; LSTR LANGUAGE = _UxGT("Spanish"); - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" Lista"); - LSTR MSG_YES = _UxGT("SI"); - LSTR MSG_NO = _UxGT("NO"); - LSTR MSG_BACK = _UxGT("Atrás"); - - LSTR MSG_MEDIA_ABORTING = _UxGT("Cancelando..."); - LSTR MSG_MEDIA_INSERTED = MEDIA_TYPE_ES _UxGT(" insertado"); - LSTR MSG_MEDIA_REMOVED = MEDIA_TYPE_ES _UxGT(" retirado"); - LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Fallo al iniciar ") MEDIA_TYPE_ES; - LSTR MSG_MEDIA_READ_ERROR = _UxGT("Error lectura ") MEDIA_TYPE_ES; - LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("Disp. USB retirado"); - LSTR MSG_USB_FD_USB_FAILED = _UxGT("Inicio USB fallido"); - LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Desbordamiento de subllamada"); - - LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Max length 8 characters - LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Soft Endstops"); - LSTR MSG_MAIN_MENU = _UxGT("Menú principal"); - LSTR MSG_ADVANCED_SETTINGS = _UxGT("Ajustes avanzados"); - LSTR MSG_CONFIGURATION = _UxGT("Configuración"); - LSTR MSG_DISABLE_STEPPERS = _UxGT("Apagar motores"); - LSTR MSG_DEBUG_MENU = _UxGT("Menú depuración"); - LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Prob. barra progreso"); - LSTR MSG_HOMING = _UxGT("Origen"); - LSTR MSG_AUTO_HOME = _UxGT("Llevar al origen"); - LSTR MSG_AUTO_HOME_X = _UxGT("Origen X"); - LSTR MSG_AUTO_HOME_Y = _UxGT("Origen Y"); - LSTR MSG_AUTO_HOME_Z = _UxGT("Origen Z"); - LSTR MSG_AUTO_Z_ALIGN = _UxGT("Auto alineado Z"); - LSTR MSG_ITERATION = _UxGT("G34 Iteración: %i"); - LSTR MSG_DECREASING_ACCURACY = _UxGT("¡Precisión disminuyendo!"); - LSTR MSG_ACCURACY_ACHIEVED = _UxGT("Precisión conseguida"); - LSTR MSG_LEVEL_BED_HOMING = _UxGT("Origen XYZ"); - LSTR MSG_LEVEL_BED_WAITING = _UxGT("Pulsar para comenzar"); - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Siguiente punto"); - LSTR MSG_LEVEL_BED_DONE = _UxGT("¡Nivelación lista!"); - LSTR MSG_Z_FADE_HEIGHT = _UxGT("Compen. Altura"); - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Ajustar desfases"); - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Desfase aplicada"); - - LSTR MSG_PREHEAT_1 = _UxGT("Precal. ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Precal. ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Fusor"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Fusor ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Todo"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Cama"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Ajuste"); - - LSTR MSG_PREHEAT_M = _UxGT("Precal. $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Precal. $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Precal. $ Fusor"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Precal. $ Fusor ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Precal. $ Todo"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Precal. $ Cama"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Precal. $ Ajuste"); - - LSTR MSG_PREHEAT_CUSTOM = _UxGT("Precal. manual"); - LSTR MSG_COOLDOWN = _UxGT("Enfriar"); - LSTR MSG_CUTTER_FREQUENCY = _UxGT("Frecuencia"); - LSTR MSG_LASER_MENU = _UxGT("Control Láser"); - LSTR MSG_LASER_POWER = _UxGT("Potencia Láser"); - LSTR MSG_SPINDLE_MENU = _UxGT("Control Mandrino"); - LSTR MSG_SPINDLE_POWER = _UxGT("Potencia Mandrino"); - LSTR MSG_SPINDLE_REVERSE = _UxGT("Invertir giro"); - LSTR MSG_SWITCH_PS_ON = _UxGT("Encender Fuente"); - LSTR MSG_SWITCH_PS_OFF = _UxGT("Apagar Fuente"); - LSTR MSG_EXTRUDE = _UxGT("Extruir"); - LSTR MSG_RETRACT = _UxGT("Retraer"); - LSTR MSG_MOVE_AXIS = _UxGT("Mover ejes"); - LSTR MSG_PROBE_AND_LEVEL = _UxGT("Sondear y Nivelar"); - LSTR MSG_BED_LEVELING = _UxGT("Nivelando Cama"); - LSTR MSG_LEVEL_BED = _UxGT("Nivelar Cama"); - LSTR MSG_BED_TRAMMING = _UxGT("Recorrido Cama"); - LSTR MSG_NEXT_CORNER = _UxGT("Siguente Esquina"); - LSTR MSG_MESH_EDITOR = _UxGT("Editor Mallado"); - LSTR MSG_EDIT_MESH = _UxGT("Editar Mallado"); - LSTR MSG_EDITING_STOPPED = _UxGT("Ed. Mallado parada"); - LSTR MSG_PROBING_POINT = _UxGT("Sondear Punto"); - LSTR MSG_MESH_X = _UxGT("Índice X"); - LSTR MSG_MESH_Y = _UxGT("Índice Y"); - LSTR MSG_MESH_EDIT_Z = _UxGT("Valor Z"); - LSTR MSG_CUSTOM_COMMANDS = _UxGT("Com. Personalizados"); - LSTR MSG_M48_TEST = _UxGT("M48 Probar Sonda"); - LSTR MSG_M48_POINT = _UxGT("M48 Punto"); - LSTR MSG_M48_DEVIATION = _UxGT("Desviación"); - LSTR MSG_IDEX_MENU = _UxGT("Modo IDEX"); - LSTR MSG_OFFSETS_MENU = _UxGT("Desfase Herramienta"); - LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-Aparcado"); - LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplicar"); - LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Copia Reflejada"); - LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Control Total"); - LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2ª Fusor Z"); - LSTR MSG_HOTEND_OFFSET_N = _UxGT("2ª Fusor @"); - LSTR MSG_UBL_DOING_G29 = _UxGT("Hacer G29"); - LSTR MSG_UBL_TOOLS = _UxGT("Herramientas UBL"); - LSTR MSG_LCD_TILTING_MESH = _UxGT("Punto de inclinación"); - LSTR MSG_UBL_MANUAL_MESH = _UxGT("Crear Mallado man."); - LSTR MSG_UBL_BC_INSERT = _UxGT("Colocar cuña y Medir"); - LSTR MSG_UBL_BC_INSERT2 = _UxGT("Medir"); - LSTR MSG_UBL_BC_REMOVE = _UxGT("Retirar y Medir Cama"); - LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Mover al Siguente"); - LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Temp. Cama"); - LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Temp. Cama perso."); - LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Temp. Fusor"); - LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Temp. Fusor perso."); - LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Edit. Mallado perso."); - LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Ajuste fino Mallado"); - LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Term. edici. Mallado"); - LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Crear Mallado Pers."); - LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Crear Mallado"); - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Crear Mallado ($)"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Valid. Mall. ($)"); - LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Crear Mallado Frío"); - LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Ajustar alt. Mallado"); - LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Cantidad de altura"); - LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Valid. Mallado"); - LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Valid. Mall. perso."); - LSTR MSG_G26_HEATING_BED = _UxGT("G26 Calentando Cama"); - LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 Calent. Boquilla"); - LSTR MSG_G26_MANUAL_PRIME = _UxGT("Imprimado manual..."); - LSTR MSG_G26_FIXED_LENGTH = _UxGT("Impri. longit. fija"); - LSTR MSG_G26_PRIME_DONE = _UxGT("Imprimación Lista"); - LSTR MSG_G26_CANCELED = _UxGT("G26 Cancelado"); - LSTR MSG_G26_LEAVING = _UxGT("Dejando G26"); - LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Contin. Mallado cama"); - LSTR MSG_UBL_MESH_LEVELING = _UxGT("Nivelando Mallado"); - LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("Nivelando 3Puntos"); - LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Niv. Mall. cuadri"); - LSTR MSG_UBL_MESH_LEVEL = _UxGT("Nivel de Mallado"); - LSTR MSG_UBL_SIDE_POINTS = _UxGT("Puntos Laterales"); - LSTR MSG_UBL_MAP_TYPE = _UxGT("Tipo de mapa "); - LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Salida Mapa mallado"); - LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Salida para el host"); - LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Salida para CSV"); - LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Cópia de seg. ext"); - LSTR MSG_UBL_INFO_UBL = _UxGT("Salida Info. UBL"); - LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Cantidad de relleno"); - LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Relleno manual"); - LSTR MSG_UBL_SMART_FILLIN = _UxGT("Relleno inteligente"); - LSTR MSG_UBL_FILLIN_MESH = _UxGT("Mallado de relleno"); - LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Invalidar todo"); - LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Invalidar proximos"); - LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Ajustar Fino Todo"); - LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Ajustar Fino proxi."); - LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Almacen de Mallado"); - LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Huecos memoria"); - LSTR MSG_UBL_LOAD_MESH = _UxGT("Cargar Mall. cama"); - LSTR MSG_UBL_SAVE_MESH = _UxGT("Guardar Mall. cama"); - LSTR MSG_MESH_LOADED = _UxGT("Malla %i Cargada"); - LSTR MSG_MESH_SAVED = _UxGT("Malla %i Guardada"); - LSTR MSG_UBL_NO_STORAGE = _UxGT("Sin guardar"); - LSTR MSG_UBL_SAVE_ERROR = _UxGT("Error Guardar UBL"); - LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Error Restaurar UBL"); - LSTR MSG_UBL_Z_OFFSET = _UxGT("Desfase de Z: "); - LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Desfase de Z Parado"); - LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("UBL Paso a Paso"); - LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Crear Mall. Frío"); - LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2.Relleno intelig."); - LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Valid. Mallado"); - LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Ajustar Fino Todo"); - LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Valid. Mallado"); - LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Ajustar Fino Todo"); - LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Guardar Mall. cama"); - - LSTR MSG_LED_CONTROL = _UxGT("Control LED"); - LSTR MSG_LIGHTS = _UxGT("Luces"); - LSTR MSG_LIGHT_N = _UxGT("Luce #{"); - LSTR MSG_LED_PRESETS = _UxGT("Color predefinido"); - LSTR MSG_SET_LEDS_RED = _UxGT("Rojo"); - LSTR MSG_SET_LEDS_ORANGE = _UxGT("Naranja"); - LSTR MSG_SET_LEDS_YELLOW = _UxGT("Amarillo"); - LSTR MSG_SET_LEDS_GREEN = _UxGT("Verde"); - LSTR MSG_SET_LEDS_BLUE = _UxGT("Azul"); - LSTR MSG_SET_LEDS_INDIGO = _UxGT("Índigo"); - LSTR MSG_SET_LEDS_VIOLET = _UxGT("Violeta"); - LSTR MSG_SET_LEDS_WHITE = _UxGT("Blanco"); - LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Por defecto"); - LSTR MSG_CUSTOM_LEDS = _UxGT("Color personalizado"); - LSTR MSG_INTENSITY_R = _UxGT("Intensidad Rojo"); - LSTR MSG_INTENSITY_G = _UxGT("Intensidad Verde"); - LSTR MSG_INTENSITY_B = _UxGT("Intensidad Azul"); - LSTR MSG_INTENSITY_W = _UxGT("Intensidad Blanco"); - LSTR MSG_LED_BRIGHTNESS = _UxGT("Brillo"); - - LSTR MSG_MOVING = _UxGT("Moviendo..."); - LSTR MSG_FREE_XY = _UxGT("Libre XY"); - LSTR MSG_MOVE_X = _UxGT("Mover X"); - LSTR MSG_MOVE_Y = _UxGT("Mover Y"); - LSTR MSG_MOVE_Z = _UxGT("Mover Z"); - LSTR MSG_MOVE_N = _UxGT("Mover @"); - LSTR MSG_MOVE_E = _UxGT("Extrusor"); - LSTR MSG_MOVE_EN = _UxGT("Extrusor *"); - LSTR MSG_HOTEND_TOO_COLD = _UxGT("Hotend muy frio"); - LSTR MSG_MOVE_N_MM = _UxGT("Mover $mm"); - LSTR MSG_MOVE_N_IN = _UxGT("Mover $in"); - LSTR MSG_MOVE_N_DEG = _UxGT("Mover $") LCD_STR_DEGREE; - LSTR MSG_SPEED = _UxGT("Velocidad"); - LSTR MSG_MESH_Z_OFFSET = _UxGT("Cama Z"); - LSTR MSG_NOZZLE = _UxGT("Boquilla"); - LSTR MSG_NOZZLE_N = _UxGT("Boquilla ~"); - LSTR MSG_NOZZLE_PARKED = _UxGT("Boquilla Aparcada"); - LSTR MSG_NOZZLE_STANDBY = _UxGT("Boquilla en Espera"); - LSTR MSG_BED = _UxGT("Cama"); - LSTR MSG_CHAMBER = _UxGT("Recinto"); - LSTR MSG_FAN_SPEED = _UxGT("Ventilador"); - LSTR MSG_FAN_SPEED_N = _UxGT("Ventilador ~"); - LSTR MSG_STORED_FAN_N = _UxGT("Vent. almacenado ~"); - LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Vel. Ext. ventil."); - LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Vel. Ext. ventil. ~"); - LSTR MSG_CONTROLLER_FAN = _UxGT("Controlador Vent."); - LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("Velocidad en reposo"); - LSTR MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("Modo Auto"); - LSTR MSG_CONTROLLER_FAN_SPEED = _UxGT("Velocidad Activa"); - LSTR MSG_CONTROLLER_FAN_DURATION = _UxGT("Periodo de reposo"); - LSTR MSG_FLOW = _UxGT("Flujo"); - LSTR MSG_FLOW_N = _UxGT("Flujo ~"); - LSTR MSG_CONTROL = _UxGT("Control"); - LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); - LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Factor"); - LSTR MSG_AUTOTEMP = _UxGT("Temp. Autom."); - LSTR MSG_LCD_ON = _UxGT("Enc"); - LSTR MSG_LCD_OFF = _UxGT("Apg"); - LSTR MSG_PID_AUTOTUNE = _UxGT("PID Auto-ajuste"); - LSTR MSG_PID_AUTOTUNE_E = _UxGT("PID Auto-ajuste *"); - LSTR MSG_SELECT_E = _UxGT("Seleccionar *"); - LSTR MSG_ACC = _UxGT("Aceleración"); - LSTR MSG_JERK = _UxGT("Jerk"); - LSTR MSG_VA_JERK = _UxGT("Max ") STR_A _UxGT(" Jerk"); - LSTR MSG_VB_JERK = _UxGT("Max ") STR_B _UxGT(" Jerk"); - LSTR MSG_VC_JERK = _UxGT("Max ") STR_C _UxGT(" Jerk"); - LSTR MSG_VN_JERK = _UxGT("Max @ Jerk"); - LSTR MSG_VE_JERK = _UxGT("Max E Jerk"); - LSTR MSG_JUNCTION_DEVIATION = _UxGT("Desvi. Unión"); - LSTR MSG_MAX_SPEED = _UxGT("Max Velocidad"); - LSTR MSG_VMAX_A = _UxGT("Max ") STR_A _UxGT(" Speed"); - LSTR MSG_VMAX_B = _UxGT("Max ") STR_B _UxGT(" Speed"); - LSTR MSG_VMAX_C = _UxGT("Max ") STR_C _UxGT(" Speed"); - LSTR MSG_VMAX_N = _UxGT("Max @ Speed"); - LSTR MSG_VMAX_E = _UxGT("Max E Speed"); - LSTR MSG_VMAX_EN = _UxGT("Max * Speed"); - LSTR MSG_VMIN = _UxGT("Vmin"); - LSTR MSG_VTRAV_MIN = _UxGT("Vel. viaje min"); - LSTR MSG_ACCELERATION = _UxGT("Acceleración"); - LSTR MSG_AMAX_A = _UxGT("Acel. max") STR_A; - LSTR MSG_AMAX_B = _UxGT("Acel. max") STR_B; - LSTR MSG_AMAX_C = _UxGT("Acel. max") STR_C; - LSTR MSG_AMAX_N = _UxGT("Acel. max@"); - LSTR MSG_AMAX_E = _UxGT("Acel. maxE"); - LSTR MSG_AMAX_EN = _UxGT("Acel. max *"); - LSTR MSG_A_RETRACT = _UxGT("Acel. retrac."); - LSTR MSG_A_TRAVEL = _UxGT("Acel. Viaje"); - LSTR MSG_STEPS_PER_MM = _UxGT("Pasos/mm"); - LSTR MSG_A_STEPS = STR_A _UxGT(" pasos/mm"); - LSTR MSG_B_STEPS = STR_B _UxGT(" pasos/mm"); - LSTR MSG_C_STEPS = STR_C _UxGT(" pasos/mm"); - LSTR MSG_N_STEPS = _UxGT("@ pasos/mm"); - LSTR MSG_E_STEPS = _UxGT("E pasos/mm"); - LSTR MSG_EN_STEPS = _UxGT("* pasos/mm"); - LSTR MSG_TEMPERATURE = _UxGT("Temperatura"); - LSTR MSG_MOTION = _UxGT("Movimiento"); - LSTR MSG_FILAMENT = _UxGT("Filamento"); - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E en mm") SUPERSCRIPT_THREE; - LSTR MSG_FILAMENT_DIAM = _UxGT("Diámetro Fil."); - LSTR MSG_FILAMENT_DIAM_E = _UxGT("Diámetro Fil. *"); - LSTR MSG_FILAMENT_UNLOAD = _UxGT("Descarga mm"); - LSTR MSG_FILAMENT_LOAD = _UxGT("Carga mm"); - LSTR MSG_ADVANCE_K = _UxGT("Avance K"); - LSTR MSG_ADVANCE_K_E = _UxGT("Avance K *"); - LSTR MSG_CONTRAST = _UxGT("Contraste LCD"); - LSTR MSG_STORE_EEPROM = _UxGT("Guardar EEPROM"); - LSTR MSG_LOAD_EEPROM = _UxGT("Cargar EEPROM"); - LSTR MSG_RESTORE_DEFAULTS = _UxGT("Rest. fábrica"); - LSTR MSG_INIT_EEPROM = _UxGT("Inicializar EEPROM"); - LSTR MSG_ERR_EEPROM_CRC = _UxGT("Err: EEPROM CRC"); - LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Err: EEPROM Tamaño"); - LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Err: Versión EEPROM"); - LSTR MSG_MEDIA_UPDATE = _UxGT("Actualizar ") MEDIA_TYPE_ES; - LSTR MSG_RESET_PRINTER = _UxGT("Resetear Impresora"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Recargar"); - LSTR MSG_INFO_SCREEN = _UxGT("Pantalla de Inf."); - LSTR MSG_PREPARE = _UxGT("Preparar"); - LSTR MSG_TUNE = _UxGT("Ajustar"); - LSTR MSG_START_PRINT = _UxGT("Iniciar impresión"); - LSTR MSG_BUTTON_NEXT = _UxGT("Siguinte"); - LSTR MSG_BUTTON_INIT = _UxGT("Iniciar"); - LSTR MSG_BUTTON_STOP = _UxGT("Parar"); - LSTR MSG_BUTTON_PRINT = _UxGT("Imprimir"); - LSTR MSG_BUTTON_RESET = _UxGT("Reiniciar"); - LSTR MSG_BUTTON_CANCEL = _UxGT("Cancelar"); - LSTR MSG_BUTTON_DONE = _UxGT("Listo"); - LSTR MSG_BUTTON_BACK = _UxGT("Retroceder"); - LSTR MSG_BUTTON_PROCEED = _UxGT("Proceder"); - LSTR MSG_PAUSE_PRINT = _UxGT("Pausar impresión"); - LSTR MSG_RESUME_PRINT = _UxGT("Reanudar impresión"); - LSTR MSG_STOP_PRINT = _UxGT("Detener impresión"); - LSTR MSG_PRINTING_OBJECT = _UxGT("Imprimiendo Objeto"); - LSTR MSG_CANCEL_OBJECT = _UxGT("Cancelar Objeto"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Cancelar Objeto {"); - LSTR MSG_OUTAGE_RECOVERY = _UxGT("Rec. Fallo electrico"); - LSTR MSG_MEDIA_MENU = _UxGT("Imprim. desde ") MEDIA_TYPE_ES; - LSTR MSG_NO_MEDIA = MEDIA_TYPE_ES _UxGT(" no presente"); - LSTR MSG_DWELL = _UxGT("Reposo..."); - LSTR MSG_USERWAIT = _UxGT("Pulsar para Reanudar"); - LSTR MSG_PRINT_PAUSED = _UxGT("Impresión Pausada"); - LSTR MSG_PRINTING = _UxGT("Imprimiendo..."); - LSTR MSG_PRINT_ABORTED = _UxGT("Impresión cancelada"); - LSTR MSG_PRINT_DONE = _UxGT("Impresión Completada"); - LSTR MSG_NO_MOVE = _UxGT("Sin movimiento"); - LSTR MSG_KILLED = _UxGT("MUERTA"); - LSTR MSG_STOPPED = _UxGT("DETENIDA"); - LSTR MSG_CONTROL_RETRACT = _UxGT("Retraer mm"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Interc. Retraer mm"); - LSTR MSG_CONTROL_RETRACTF = _UxGT("Retraer V"); - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Levantar mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("DesRet mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Interc. DesRet mm"); - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("DesRet V"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V"); - LSTR MSG_AUTORETRACT = _UxGT("Retracción Auto."); - LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Inter. longitud"); - LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Purgar longitud"); - LSTR MSG_TOOL_CHANGE = _UxGT("Cambiar Herramienta"); - LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Aumentar Z"); - LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Vel. de Cebado"); - LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Vel. de retracción"); - LSTR MSG_FILAMENTCHANGE = _UxGT("Cambiar filamento"); - LSTR MSG_FILAMENTCHANGE_E = _UxGT("Cambiar filamento *"); - LSTR MSG_FILAMENTLOAD = _UxGT("Cargar filamento"); - LSTR MSG_FILAMENTLOAD_E = _UxGT("Cargar filamento *"); - LSTR MSG_FILAMENTUNLOAD = _UxGT("Descargar filamento"); - LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Descargar fil. *"); - LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Descargar todo"); - - LSTR MSG_ATTACH_MEDIA = _UxGT("Iniciar ") MEDIA_TYPE_ES; - LSTR MSG_ATTACH_SD = _UxGT("Iniciar SD"); - LSTR MSG_ATTACH_USB = _UxGT("Iniciar USB"); - LSTR MSG_CHANGE_MEDIA = _UxGT("Cambiar ") MEDIA_TYPE_ES; - LSTR MSG_RELEASE_MEDIA = _UxGT("Lanzar ") MEDIA_TYPE_ES; - LSTR MSG_RUN_AUTOFILES = _UxGT("Inicio automático"); - - LSTR MSG_ZPROBE_OUT = _UxGT("Sonda Z fuera cama"); - LSTR MSG_SKEW_FACTOR = _UxGT("Factor de desviación"); - LSTR MSG_BLTOUCH = _UxGT("BLTouch"); - LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Auto-Prueba"); - LSTR MSG_BLTOUCH_RESET = _UxGT("Reiniciar"); - LSTR MSG_BLTOUCH_STOW = _UxGT("Subir pistón"); - LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Bajar pistón"); - LSTR MSG_BLTOUCH_SW_MODE = _UxGT("Modo Software"); - LSTR MSG_BLTOUCH_5V_MODE = _UxGT("Modo 5V"); - LSTR MSG_BLTOUCH_OD_MODE = _UxGT("Modo OD"); - LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("Modo almacenar"); - LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Poner BLTouch a 5V"); - LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Poner BLTouch a OD"); - LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Informe de drenaje"); - LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("PELIGRO: ¡Una mala configuración puede producir daños! ¿Proceder igualmente?"); - LSTR MSG_TOUCHMI_PROBE = _UxGT("TouchMI"); - LSTR MSG_TOUCHMI_INIT = _UxGT("Iniciar TouchMI"); - LSTR MSG_TOUCHMI_ZTEST = _UxGT("Test de desfase Z"); - LSTR MSG_TOUCHMI_SAVE = _UxGT("Guardar"); - LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("Subir TouchMI"); - LSTR MSG_MANUAL_DEPLOY = _UxGT("Subir Sonda Z"); - LSTR MSG_MANUAL_STOW = _UxGT("Bajar Sonda Z"); - LSTR MSG_HOME_FIRST = _UxGT("Origen %s Prim."); - LSTR MSG_ZPROBE_OFFSETS = _UxGT("Desf. Sonda"); - LSTR MSG_ZPROBE_XOFFSET = _UxGT("Desf. Sonda X"); - LSTR MSG_ZPROBE_YOFFSET = _UxGT("Desf. Sonda Y"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Desf. Sonda Z"); - LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Desf. Sonda @"); - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Ajuste Z al paso"); - LSTR MSG_BABYSTEP_X = _UxGT("Micropaso X"); - LSTR MSG_BABYSTEP_Y = _UxGT("Micropaso Y"); - LSTR MSG_BABYSTEP_Z = _UxGT("Micropaso Z"); - LSTR MSG_BABYSTEP_N = _UxGT("Micropaso @"); - LSTR MSG_BABYSTEP_TOTAL = _UxGT("Total"); - LSTR MSG_ENDSTOP_ABORT = _UxGT("Cancelado - Endstop"); - LSTR MSG_ERR_HEATING_FAILED = _UxGT("Calent. fallido"); - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Err: TEMP. REDUN."); - LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("FUGA TÉRMICA"); - LSTR MSG_ERR_MAXTEMP = _UxGT("Err:TEMP. MÁX"); - LSTR MSG_ERR_MINTEMP = _UxGT("Err:TEMP. MIN"); - LSTR MSG_HALTED = _UxGT("IMPRESORA DETENIDA"); - LSTR MSG_PLEASE_RESET = _UxGT("Por favor, reinicie"); - LSTR MSG_HEATING = _UxGT("Calentando..."); - LSTR MSG_COOLING = _UxGT("Enfriando..."); - LSTR MSG_BED_HEATING = _UxGT("Calentando Cama..."); - LSTR MSG_BED_COOLING = _UxGT("Enfriando Cama..."); - LSTR MSG_CHAMBER_HEATING = _UxGT("Calentando Cámara..."); - LSTR MSG_CHAMBER_COOLING = _UxGT("Enfriando Cámara..."); - LSTR MSG_DELTA_CALIBRATE = _UxGT("Calibración Delta"); - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Calibrar X"); - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Calibrar Y"); - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Calibrar Z"); - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibrar Centro"); - LSTR MSG_DELTA_SETTINGS = _UxGT("Configuración Delta"); - LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Auto Calibración"); - LSTR MSG_DELTA_DIAG_ROD = _UxGT("Barra Diagonal"); - LSTR MSG_DELTA_HEIGHT = _UxGT("Altura"); - LSTR MSG_DELTA_RADIUS = _UxGT("Radio"); - LSTR MSG_INFO_MENU = _UxGT("Info. Impresora"); - LSTR MSG_INFO_PRINTER_MENU = _UxGT("Info. Impresora"); - LSTR MSG_3POINT_LEVELING = _UxGT("Nivelando 3puntos"); - LSTR MSG_LINEAR_LEVELING = _UxGT("Nivelando Lineal"); - LSTR MSG_BILINEAR_LEVELING = _UxGT("Nivelando Bilineal"); - LSTR MSG_UBL_LEVELING = _UxGT("Nivelando UBL"); - LSTR MSG_MESH_LEVELING = _UxGT("Nivelando en Mallado"); - LSTR MSG_INFO_STATS_MENU = _UxGT("Estadísticas Imp."); - LSTR MSG_INFO_BOARD_MENU = _UxGT("Info. Controlador"); - LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Termistores"); - LSTR MSG_INFO_EXTRUDERS = _UxGT("Extrusores"); - LSTR MSG_INFO_BAUDRATE = _UxGT("Baudios"); - LSTR MSG_INFO_PROTOCOL = _UxGT("Protocolo"); - LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Vig. Fuga Térm.: OFF"); - LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Vig. Fuga Térm.: ON"); - - LSTR MSG_CASE_LIGHT = _UxGT("Luz cabina"); - LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Brillo cabina"); - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Impresora incorrecta"); - - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Impresiones"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completadas"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Más larga"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extruido"); - - LSTR MSG_INFO_MIN_TEMP = _UxGT("Temp. Mínima"); - LSTR MSG_INFO_MAX_TEMP = _UxGT("Temp. Máxima"); - LSTR MSG_INFO_PSU = _UxGT("F. Aliment."); - LSTR MSG_DRIVE_STRENGTH = _UxGT("Fuerza de empuje"); - LSTR MSG_DAC_PERCENT_N = _UxGT("@ Driver %"); - LSTR MSG_ERROR_TMC = _UxGT("ERROR CONEX. TMC"); - LSTR MSG_DAC_EEPROM_WRITE = _UxGT("Escribe DAC EEPROM"); - LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("CAMBIAR FILAMENTO"); - LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("IMPRESIÓN PAUSADA"); - LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("CARGAR FILAMENTO"); - LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("DESCARGAR FILAMENTO"); - LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("OPC. REINICIO:"); - LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Purgar más"); - LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Continuar imp."); - LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Boquilla: "); - LSTR MSG_RUNOUT_SENSOR = _UxGT("Sens. filamento"); - LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("Dist. filamento mm"); - LSTR MSG_KILL_HOMING_FAILED = _UxGT("Ir a origen Fallado"); - LSTR MSG_LCD_PROBING_FAILED = _UxGT("Sondeo Fallado"); - - LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("ELIJE FILAMENTO"); - LSTR MSG_MMU2_MENU = _UxGT("MMU"); - LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("¡Actu. MMU Firmware!"); - LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU Necesita Cuidado"); - LSTR MSG_MMU2_RESUME = _UxGT("Continuar imp."); - LSTR MSG_MMU2_RESUMING = _UxGT("Resumiendo..."); - LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("Cargar Filamento"); - LSTR MSG_MMU2_LOAD_ALL = _UxGT("Cargar Todo"); - LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Cargar hasta boqui."); - LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("Expulsar Filamento"); - LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("Expulsar Filamento ~"); - LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Descargar Filamento"); - LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Cargando Fil. %i..."); - LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Expulsando Fil. ..."); - LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Descargando Fil...."); - LSTR MSG_MMU2_ALL = _UxGT("Todo"); - LSTR MSG_MMU2_FILAMENT_N = _UxGT("Filamento ~"); - LSTR MSG_MMU2_RESET = _UxGT("Reiniciar MMU"); - LSTR MSG_MMU2_RESETTING = _UxGT("Reiniciando MMU..."); - LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Retirar, y pulsar"); - - LSTR MSG_MIX = _UxGT("Mezcla"); - LSTR MSG_MIX_COMPONENT_N = _UxGT("Componente {"); - LSTR MSG_MIXER = _UxGT("Miezclador"); - LSTR MSG_GRADIENT = _UxGT("Degradado"); - LSTR MSG_FULL_GRADIENT = _UxGT("Degradado Total"); - LSTR MSG_TOGGLE_MIX = _UxGT("Mezcla Conmutada"); - LSTR MSG_CYCLE_MIX = _UxGT("Mezcla Cíclica"); - LSTR MSG_GRADIENT_MIX = _UxGT("Mezcla de Degradado"); - LSTR MSG_REVERSE_GRADIENT = _UxGT("Degradado inverso"); - LSTR MSG_ACTIVE_VTOOL = _UxGT("Activar Herr.V"); - LSTR MSG_START_VTOOL = _UxGT("Inicio Herr.V"); - LSTR MSG_END_VTOOL = _UxGT(" Fin Herr.V"); - LSTR MSG_GRADIENT_ALIAS = _UxGT("Alias Herr.V"); - LSTR MSG_RESET_VTOOLS = _UxGT("Reiniciar Herr.V"); - LSTR MSG_COMMIT_VTOOL = _UxGT("Cometer mezc. Herr.V"); - LSTR MSG_VTOOLS_RESET = _UxGT("Herr.V reiniciados"); - LSTR MSG_START_Z = _UxGT("Inicio Z:"); - LSTR MSG_END_Z = _UxGT(" Fin Z:"); - - LSTR MSG_GAMES = _UxGT("Juegos"); - LSTR MSG_BRICKOUT = _UxGT("Brickout"); - LSTR MSG_INVADERS = _UxGT("Invaders"); - LSTR MSG_SNAKE = _UxGT("Sn4k3"); - LSTR MSG_MAZE = _UxGT("Maze"); - - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Pulse para continuar")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Aparcando...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Por Favor espere...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Inserte y Pulse")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Pulse para Calentar")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Calentando...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Liberando...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Cargando...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Purgando...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Pulse para finalizar")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Reanudando...")); - - LSTR MSG_TMC_DRIVERS = _UxGT("Controladores TMC"); - LSTR MSG_TMC_CURRENT = _UxGT("Amperaje Controlador"); - LSTR MSG_TMC_HYBRID_THRS = _UxGT("Límite Hibrido"); - LSTR MSG_TMC_HOMING_THRS = _UxGT("Origen sin sensores"); - LSTR MSG_TMC_STEPPING_MODE = _UxGT("Modo de pasos"); - LSTR MSG_TMC_STEALTHCHOP = _UxGT("StealthChop"); - - LSTR MSG_SERVICE_RESET = _UxGT("Reiniciar"); - LSTR MSG_SERVICE_IN = _UxGT(" dentro:"); - LSTR MSG_BACKLASH = _UxGT("Backlash"); - LSTR MSG_BACKLASH_CORRECTION = _UxGT("Corrección"); - LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Suavizado"); - - LSTR MSG_LEVEL_X_AXIS = _UxGT("Nivel Eje X"); - LSTR MSG_AUTO_CALIBRATE = _UxGT("Auto Calibrar"); - LSTR MSG_HEATER_TIMEOUT = _UxGT("T. de esp. Calent."); - LSTR MSG_REHEAT = _UxGT("Recalentar"); - LSTR MSG_REHEATING = _UxGT("Recalentando..."); + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" Lista"); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = MEDIA_TYPE_ES _UxGT(" insertado"); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = MEDIA_TYPE_ES _UxGT(" retirado"); // (MEDIA_TYPE_EN) Removed + LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Endstops + LSTR MSG_MAIN_MENU = _UxGT("Menú principal"); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("Apagar motores"); // Disable Steppers + LSTR MSG_HOMING = _UxGT("Origen"); // Homing + LSTR MSG_AUTO_HOME = _UxGT("Llevar al origen"); // Auto Home + LSTR MSG_AUTO_HOME_X = _UxGT("Origen X"); // Home X + LSTR MSG_AUTO_HOME_Y = _UxGT("Origen Y"); // Home Y + LSTR MSG_AUTO_HOME_Z = _UxGT("Origen Z"); // Home Z + LSTR MSG_LEVEL_BED_HOMING = _UxGT("Origen XYZ"); // Homing XYZ + LSTR MSG_LEVEL_BED_WAITING = _UxGT("Pulsar para comenzar"); // Click to Begin + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Siguiente punto"); // Next Point + LSTR MSG_LEVEL_BED_DONE = _UxGT("¡Nivelación lista!"); // Leveling Done! + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Ajustar desfases"); // Set Home Offsets + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Desfase aplicada"); // Offsets Applied + LSTR MSG_PREHEAT_1 = _UxGT("Precal. ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = _UxGT("Precal. ") PREHEAT_1_LABEL " ~"; // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Fusor"); // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Fusor ~"); // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_1_ALL = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Todo"); // Preheat (PREHEAT_1_LABEL) All + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Cama"); // Preheat (PREHEAT_1_LABEL) Bed + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Ajuste"); // Preheat (PREHEAT_1_LABEL) Conf + LSTR MSG_PREHEAT_M = _UxGT("Precal. $"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("Precal. $ ~"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("Precal. $ Fusor"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("Precal. $ Fusor ~"); // Preheat $ End ~ + LSTR MSG_PREHEAT_M_ALL = _UxGT("Precal. $ Todo"); // Preheat $ All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Precal. $ Cama"); // Preheat $ Bed + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Precal. $ Ajuste"); // Preheat $ Conf + LSTR MSG_COOLDOWN = _UxGT("Enfriar"); // Cooldown + LSTR MSG_SWITCH_PS_ON = _UxGT("Encender Fuente"); // Switch Power On + LSTR MSG_SWITCH_PS_OFF = _UxGT("Apagar Fuente"); // Switch Power Off + LSTR MSG_EXTRUDE = _UxGT("Extruir"); // Extrude + LSTR MSG_RETRACT = _UxGT("Retraer"); // Retract + LSTR MSG_MOVE_AXIS = _UxGT("Mover ejes"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("Sondear y Nivelar"); // Probe and Level + LSTR MSG_BED_LEVELING = _UxGT("Nivelando Cama"); // Bed Leveling + LSTR MSG_LEVEL_BED = _UxGT("Nivelar Cama"); // Level Bed + LSTR MSG_MOVE_X = _UxGT("Mover X"); // Move X + LSTR MSG_MOVE_Y = _UxGT("Mover Y"); // Move Y + LSTR MSG_MOVE_Z = _UxGT("Mover Z"); // Move Z + LSTR MSG_MOVE_N = _UxGT("Mover @"); // Move @ + LSTR MSG_MOVE_E = _UxGT("Extrusor"); // Move Extruder + LSTR MSG_MOVE_EN = _UxGT("Extrusor *"); // Move * + LSTR MSG_MOVE_N_MM = _UxGT("Mover $mm"); // Move $mm + LSTR MSG_MOVE_N_IN = _UxGT("Mover $in"); // Move $in + LSTR MSG_MOVE_N_DEG = _UxGT("Mover $") LCD_STR_DEGREE; // Move $(LCD_STR_DEGREE) + LSTR MSG_SPEED = _UxGT("Velocidad"); // Speed + LSTR MSG_MESH_Z_OFFSET = _UxGT("Cama Z"); // Bed Z + LSTR MSG_NOZZLE = _UxGT("Boquilla"); // Nozzle + LSTR MSG_NOZZLE_N = _UxGT("Boquilla ~"); // Nozzle ~ + LSTR MSG_BED = _UxGT("Cama"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("Ventilador"); // Fan Speed + LSTR MSG_FAN_SPEED_N = _UxGT("Ventilador ~"); // Fan Speed ~ + LSTR MSG_FLOW = _UxGT("Flujo"); // Flow + LSTR MSG_FLOW_N = _UxGT("Flujo ~"); // Flow ~ + LSTR MSG_CONTROL = _UxGT("Control"); // Control + LSTR MSG_AUTOTEMP = _UxGT("Temp. Autom."); // Autotemp + LSTR MSG_SELECT_E = _UxGT("Seleccionar *"); // Select * + LSTR MSG_ACC = _UxGT("Aceleración"); // Accel + LSTR MSG_VTRAV_MIN = _UxGT("Vel. viaje min"); // Min Travel Speed + LSTR MSG_ACCELERATION = _UxGT("Acceleración"); // Acceleration + LSTR MSG_AMAX_A = _UxGT("Acel. max") STR_A; // Max (STR_A) Accel + LSTR MSG_AMAX_B = _UxGT("Acel. max") STR_B; // Max (STR_B) Accel + LSTR MSG_AMAX_C = _UxGT("Acel. max") STR_C; // Max (STR_C) Accel + LSTR MSG_AMAX_N = _UxGT("Acel. max@"); // Max @ Accel + LSTR MSG_AMAX_E = _UxGT("Acel. maxE"); // Max E Accel + LSTR MSG_AMAX_EN = _UxGT("Acel. max *"); // Max * Accel + LSTR MSG_A_RETRACT = _UxGT("Acel. retrac."); // Retract Accel + LSTR MSG_A_TRAVEL = _UxGT("Acel. Viaje"); // Travel Accel + LSTR MSG_STEPS_PER_MM = _UxGT("Pasos/mm"); // Steps/mm + LSTR MSG_A_STEPS = STR_A _UxGT(" pasos/mm"); // (STR_A) Steps/mm + LSTR MSG_B_STEPS = STR_B _UxGT(" pasos/mm"); // (STR_B) Steps/mm + LSTR MSG_C_STEPS = STR_C _UxGT(" pasos/mm"); // (STR_C) Steps/mm + LSTR MSG_N_STEPS = _UxGT("@ pasos/mm"); // @ steps/mm + LSTR MSG_E_STEPS = _UxGT("E pasos/mm"); // E steps/mm + LSTR MSG_EN_STEPS = _UxGT("* pasos/mm"); // * Steps/mm + LSTR MSG_TEMPERATURE = _UxGT("Temperatura"); // Temperature + LSTR MSG_MOTION = _UxGT("Movimiento"); // Motion + LSTR MSG_FILAMENT = _UxGT("Filamento"); // Filament + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E en mm") SUPERSCRIPT_THREE; // E in mm(SUPERSCRIPT_THREE) + LSTR MSG_FILAMENT_DIAM = _UxGT("Diámetro Fil."); // Fil. Dia. + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Diámetro Fil. *"); // Fil. Dia. * + LSTR MSG_CONTRAST = _UxGT("Contraste LCD"); // LCD Contrast + LSTR MSG_STORE_EEPROM = _UxGT("Guardar EEPROM"); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("Cargar EEPROM"); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("Rest. fábrica"); // Restore Defaults + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Recargar"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT("Pantalla de Inf."); // Info Screen + LSTR MSG_PREPARE = _UxGT("Preparar"); // Prepare + LSTR MSG_TUNE = _UxGT("Ajustar"); // Tune + LSTR MSG_PAUSE_PRINT = _UxGT("Pausar impresión"); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("Reanudar impresión"); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("Detener impresión"); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("Imprim. desde ") MEDIA_TYPE_ES; // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = MEDIA_TYPE_ES _UxGT(" no presente"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_DWELL = _UxGT("Reposo..."); // Sleep... + LSTR MSG_USERWAIT = _UxGT("Pulsar para Reanudar"); // Click to Resume... + LSTR MSG_PRINT_ABORTED = _UxGT("Impresión cancelada"); // Print Aborted + LSTR MSG_NO_MOVE = _UxGT("Sin movimiento"); // No Move. + LSTR MSG_KILLED = _UxGT("MUERTA"); // KILLED. + LSTR MSG_STOPPED = _UxGT("DETENIDA"); // STOPPED. + LSTR MSG_CONTROL_RETRACT = _UxGT("Retraer mm"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Interc. Retraer mm"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACTF = _UxGT("Retraer V"); // Retract V + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Levantar mm"); // Hop mm + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("DesRet mm"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Interc. DesRet mm"); // S Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("DesRet V"); // Unretract V + LSTR MSG_AUTORETRACT = _UxGT("Retracción Auto."); // Auto-Retract + LSTR MSG_FILAMENTCHANGE = _UxGT("Cambiar filamento"); // Change Filament + LSTR MSG_FILAMENTCHANGE_E = _UxGT("Cambiar filamento *"); // Change * Filament + LSTR MSG_ATTACH_MEDIA = _UxGT("Iniciar ") MEDIA_TYPE_ES; // Attach (MEDIA_TYPE_EN) + LSTR MSG_ATTACH_SD = _UxGT("Iniciar SD"); // Attach SD Card + LSTR MSG_ATTACH_USB = _UxGT("Iniciar USB"); // Attach USB Drive + LSTR MSG_CHANGE_MEDIA = _UxGT("Cambiar ") MEDIA_TYPE_ES; // Refresh (MEDIA_TYPE_EN) + LSTR MSG_RUN_AUTOFILES = _UxGT("Inicio automático"); // Run Autofiles + LSTR MSG_ZPROBE_OUT = _UxGT("Sonda Z fuera cama"); // Z Probe Past Bed + LSTR MSG_BLTOUCH_RESET = _UxGT("Reiniciar"); // Reset + LSTR MSG_ZPROBE_XOFFSET = _UxGT("Desf. Sonda X"); // Probe X Offset + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Desf. Sonda Y"); // Probe Y Offset + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Desf. Sonda Z"); // Probe Z Offset + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Desf. Sonda @"); // Probe @ Offset + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Ajuste Z al paso"); // Babystep Probe Z + LSTR MSG_BABYSTEP_X = _UxGT("Micropaso X"); // Babystep X + LSTR MSG_BABYSTEP_Y = _UxGT("Micropaso Y"); // Babystep Y + LSTR MSG_BABYSTEP_Z = _UxGT("Micropaso Z"); // Babystep Z + LSTR MSG_BABYSTEP_N = _UxGT("Micropaso @"); // Babystep @ + LSTR MSG_ENDSTOP_ABORT = _UxGT("Cancelado - Endstop"); // Endstop Abort + LSTR MSG_ERR_HEATING_FAILED = _UxGT("Calent. fallido"); // Heating Failed + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Err: TEMP. REDUN."); // Err: REDUNDANT TEMP + LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("FUGA TÉRMICA"); // THERMAL RUNAWAY + LSTR MSG_ERR_MAXTEMP = _UxGT("Err:TEMP. MÁX"); // Err: MAXTEMP + LSTR MSG_ERR_MINTEMP = _UxGT("Err:TEMP. MIN"); // Err: MINTEMP + LSTR MSG_HALTED = _UxGT("IMPRESORA DETENIDA"); // PRINTER HALTED + LSTR MSG_PLEASE_RESET = _UxGT("Por favor, reinicie"); // Please Reset + LSTR MSG_HEATING = _UxGT("Calentando..."); // Heating... + LSTR MSG_BED_HEATING = _UxGT("Calentando Cama..."); // Bed Heating... + LSTR MSG_DELTA_CALIBRATE = _UxGT("Calibración Delta"); // Delta Calibration + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Calibrar X"); // Calibrate X + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Calibrar Y"); // Calibrate Y + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Calibrar Z"); // Calibrate Z + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibrar Centro"); // Calibrate Center + LSTR MSG_INFO_MENU = _UxGT("Info. Impresora"); // About Printer + LSTR MSG_INFO_PRINTER_MENU = _UxGT("Info. Impresora"); // Printer Info + LSTR MSG_INFO_STATS_MENU = _UxGT("Estadísticas Imp."); // Stats + LSTR MSG_INFO_BOARD_MENU = _UxGT("Info. Controlador"); // Board Info + LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Termistores"); // Thermistors + LSTR MSG_INFO_EXTRUDERS = _UxGT("Extrusores"); // Extruders + LSTR MSG_INFO_BAUDRATE = _UxGT("Baudios"); // Baud + LSTR MSG_INFO_PROTOCOL = _UxGT("Protocolo"); // Protocol + LSTR MSG_CASE_LIGHT = _UxGT("Luz cabina"); // Case Light + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Impresiones"); // Prints + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completadas"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); // Total + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Más larga"); // Longest + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extruido"); // Extruded + LSTR MSG_INFO_MIN_TEMP = _UxGT("Temp. Mínima"); // Min Temp + LSTR MSG_INFO_MAX_TEMP = _UxGT("Temp. Máxima"); // Max Temp + LSTR MSG_INFO_PSU = _UxGT("F. Aliment."); // PSU + LSTR MSG_DRIVE_STRENGTH = _UxGT("Fuerza de empuje"); // Drive Strength + LSTR MSG_DAC_EEPROM_WRITE = _UxGT("Escribe DAC EEPROM"); // DAC EEPROM Write + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Continuar imp."); // Continue + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Por Favor espere...")); // |Please wait... + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Inserte y Pulse")); // |Insert and Click + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Liberando...")); // |Ejecting... + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Cargando...")); // |Loading... + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Reanudando...")); // |Resuming... + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); // (LCD_STR_THERMOMETER) Min + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); // (LCD_STR_THERMOMETER) Max + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Factor"); // (LCD_STR_THERMOMETER) Fact + LSTR MSG_LCD_ON = _UxGT("Enc"); // On + LSTR MSG_LCD_OFF = _UxGT("Apg"); // Off + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Impresora incorrecta"); // INCORRECT PRINTER + LSTR MSG_DEBUG_MENU = _UxGT("Menú depuración"); // Debug Menu + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Prob. barra progreso"); // Progress Bar Test + LSTR MSG_MOVING = _UxGT("Moviendo..."); // Moving... + LSTR MSG_FREE_XY = _UxGT("Libre XY"); // Free XY + LSTR MSG_HOME_FIRST = _UxGT("Origen %s Prim."); // Home %s First + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Calentando...")); // |Heating... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Pulse para Calentar")); // |Click to heat + LSTR MSG_YES = _UxGT("SI"); // YES + LSTR MSG_NO = _UxGT("NO"); // NO + LSTR MSG_BACK = _UxGT("Atrás"); // Back + LSTR MSG_MEDIA_ABORTING = _UxGT("Cancelando..."); // Aborting... + LSTR MSG_MEDIA_READ_ERROR = _UxGT("Error lectura ") MEDIA_TYPE_ES; // (MEDIA_TYPE_EN) read error + LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("Disp. USB retirado"); // USB device removed + LSTR MSG_USB_FD_USB_FAILED = _UxGT("Inicio USB fallido"); // USB start failed + LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Soft Endstops"); // Soft Endstops + LSTR MSG_ADVANCED_SETTINGS = _UxGT("Ajustes avanzados"); // Advanced Settings + LSTR MSG_CONFIGURATION = _UxGT("Configuración"); // Configuration + LSTR MSG_AUTO_Z_ALIGN = _UxGT("Auto alineado Z"); // Auto Z-Align + LSTR MSG_Z_FADE_HEIGHT = _UxGT("Compen. Altura"); // Fade Height + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Precal. manual"); // Preheat Custom + LSTR MSG_LASER_MENU = _UxGT("Control Láser"); // Laser Control + LSTR MSG_LASER_POWER = _UxGT("Potencia Láser"); // Laser Power + LSTR MSG_SPINDLE_MENU = _UxGT("Control Mandrino"); // Spindle Control + LSTR MSG_SPINDLE_POWER = _UxGT("Potencia Mandrino"); // Spindle Pwr + LSTR MSG_SPINDLE_REVERSE = _UxGT("Invertir giro"); // Spindle Reverse + LSTR MSG_BED_TRAMMING = _UxGT("Recorrido Cama"); // Bed Tramming + LSTR MSG_NEXT_CORNER = _UxGT("Siguente Esquina"); // Next Corner + LSTR MSG_MESH_EDITOR = _UxGT("Editor Mallado"); // Mesh Editor + LSTR MSG_EDIT_MESH = _UxGT("Editar Mallado"); // Edit Mesh + LSTR MSG_EDITING_STOPPED = _UxGT("Ed. Mallado parada"); // Mesh Editing Stopped + LSTR MSG_PROBING_POINT = _UxGT("Sondear Punto"); // Probing Point + LSTR MSG_MESH_X = _UxGT("Índice X"); // Index X + LSTR MSG_MESH_Y = _UxGT("Índice Y"); // Index Y + LSTR MSG_MESH_EDIT_Z = _UxGT("Valor Z"); // Z Value + LSTR MSG_CUSTOM_COMMANDS = _UxGT("Com. Personalizados"); // Custom Commands + LSTR MSG_M48_TEST = _UxGT("M48 Probar Sonda"); // M48 Probe Test + LSTR MSG_M48_POINT = _UxGT("M48 Punto"); // M48 Point + LSTR MSG_M48_DEVIATION = _UxGT("Desviación"); // Deviation + LSTR MSG_IDEX_MENU = _UxGT("Modo IDEX"); // IDEX Mode + LSTR MSG_OFFSETS_MENU = _UxGT("Desfase Herramienta"); // Tool Offsets + LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-Aparcado"); // Auto-Park + LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplicar"); // Duplication + LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Copia Reflejada"); // Mirrored Copy + LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Control Total"); // Full Control + LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2ª Fusor Z"); // 2nd Nozzle Z + LSTR MSG_HOTEND_OFFSET_N = _UxGT("2ª Fusor @"); // 2nd Nozzle @ + LSTR MSG_UBL_DOING_G29 = _UxGT("Hacer G29"); // Doing G29 + LSTR MSG_UBL_TOOLS = _UxGT("Herramientas UBL"); // UBL Tools + LSTR MSG_LCD_TILTING_MESH = _UxGT("Punto de inclinación"); // Tilting Point + LSTR MSG_UBL_MANUAL_MESH = _UxGT("Crear Mallado man."); // Manually Build Mesh + LSTR MSG_UBL_BC_INSERT = _UxGT("Colocar cuña y Medir"); // Place Shim & Measure + LSTR MSG_UBL_BC_INSERT2 = _UxGT("Medir"); // Measure + LSTR MSG_UBL_BC_REMOVE = _UxGT("Retirar y Medir Cama"); // Remove & Measure Bed + LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Mover al Siguente"); // Moving to next + LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Temp. Cama"); // Bed Temp + LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Temp. Cama perso."); // Bed Temp + LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Temp. Fusor"); // Hotend Temp + LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Temp. Fusor perso."); // Hotend Temp + LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Edit. Mallado perso."); // Edit Custom Mesh + LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Ajuste fino Mallado"); // Fine Tuning Mesh + LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Term. edici. Mallado"); // Done Editing Mesh + LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Crear Mallado Pers."); // Build Custom Mesh + LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Crear Mallado"); // Build Mesh + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Crear Mallado ($)"); // Build Mesh ($) + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Valid. Mall. ($)"); // Validate Mesh ($) + LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Crear Mallado Frío"); // Build Cold Mesh + LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Ajustar alt. Mallado"); // Adjust Mesh Height + LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Cantidad de altura"); // Height Amount + LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Valid. Mallado"); // Validate Mesh + LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Valid. Mall. perso."); // Validate Custom Mesh + LSTR MSG_G26_HEATING_BED = _UxGT("G26 Calentando Cama"); // G26 Heating Bed + LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 Calent. Boquilla"); // G26 Heating Nozzle + LSTR MSG_G26_MANUAL_PRIME = _UxGT("Imprimado manual..."); // Manual priming... + LSTR MSG_G26_FIXED_LENGTH = _UxGT("Impri. longit. fija"); // Fixed Length Prime + LSTR MSG_G26_PRIME_DONE = _UxGT("Imprimación Lista"); // Done Priming + LSTR MSG_G26_CANCELED = _UxGT("G26 Cancelado"); // G26 Canceled + LSTR MSG_G26_LEAVING = _UxGT("Dejando G26"); // Leaving G26 + LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Contin. Mallado cama"); // Continue Bed Mesh + LSTR MSG_UBL_MESH_LEVELING = _UxGT("Nivelando Mallado"); // Mesh Leveling + LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("Nivelando 3Puntos"); // 3-Point Leveling + LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Niv. Mall. cuadri"); // Grid Mesh Leveling + LSTR MSG_UBL_MESH_LEVEL = _UxGT("Nivel de Mallado"); // Level Mesh + LSTR MSG_UBL_SIDE_POINTS = _UxGT("Puntos Laterales"); // Side Points + LSTR MSG_UBL_MAP_TYPE = _UxGT("Tipo de mapa "); // Map Type + LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Salida Mapa mallado"); // Output Mesh Map + LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Salida para el host"); // Output for Host + LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Salida para CSV"); // Output for CSV + LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Cópia de seg. ext"); // Off Printer Backup + LSTR MSG_UBL_INFO_UBL = _UxGT("Salida Info. UBL"); // Output UBL Info + LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Cantidad de relleno"); // Fill-in Amount + LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Relleno manual"); // Manual Fill-in + LSTR MSG_UBL_SMART_FILLIN = _UxGT("Relleno inteligente"); // Smart Fill-in + LSTR MSG_UBL_FILLIN_MESH = _UxGT("Mallado de relleno"); // Fill-in Mesh + LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Invalidar todo"); // Invalidate All + LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Invalidar proximos"); // Invalidate Closest + LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Ajustar Fino Todo"); // Fine Tune All + LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Ajustar Fino proxi."); // Fine Tune Closest + LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Almacen de Mallado"); // Mesh Storage + LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Huecos memoria"); // Memory Slot + LSTR MSG_UBL_LOAD_MESH = _UxGT("Cargar Mall. cama"); // Load Bed Mesh + LSTR MSG_UBL_SAVE_MESH = _UxGT("Guardar Mall. cama"); // Save Bed Mesh + LSTR MSG_MESH_LOADED = _UxGT("Malla %i Cargada"); // Mesh %i Loaded + LSTR MSG_MESH_SAVED = _UxGT("Malla %i Guardada"); // Mesh %i Saved + LSTR MSG_UBL_NO_STORAGE = _UxGT("Sin guardar"); // No Storage + LSTR MSG_UBL_SAVE_ERROR = _UxGT("Error Guardar UBL"); // UBL Save Error + LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Error Restaurar UBL"); // UBL Restore Error + LSTR MSG_UBL_Z_OFFSET = _UxGT("Desfase de Z: "); // Z-Offset: + LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Desfase de Z Parado"); // Z-Offset Stopped + LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("UBL Paso a Paso"); // Step-By-Step UBL + LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Crear Mall. Frío"); // 1. Build Cold Mesh + LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2.Relleno intelig."); // 2. Smart Fill-in + LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Valid. Mallado"); // 3. Validate Mesh + LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Ajustar Fino Todo"); // 4. Fine Tune All + LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Valid. Mallado"); // 5. Validate Mesh + LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Ajustar Fino Todo"); // 6. Fine Tune All + LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Guardar Mall. cama"); // 7. Save Bed Mesh + LSTR MSG_LED_CONTROL = _UxGT("Control LED"); // LED Control + LSTR MSG_LIGHTS = _UxGT("Luces"); // Lights + LSTR MSG_LIGHT_N = _UxGT("Luce #{"); // Light #{ + LSTR MSG_LED_PRESETS = _UxGT("Color predefinido"); // Light Presets + LSTR MSG_SET_LEDS_RED = _UxGT("Rojo"); // Red + LSTR MSG_SET_LEDS_ORANGE = _UxGT("Naranja"); // Orange + LSTR MSG_SET_LEDS_YELLOW = _UxGT("Amarillo"); // Yellow + LSTR MSG_SET_LEDS_GREEN = _UxGT("Verde"); // Green + LSTR MSG_SET_LEDS_BLUE = _UxGT("Azul"); // Blue + LSTR MSG_SET_LEDS_INDIGO = _UxGT("Índigo"); // Indigo + LSTR MSG_SET_LEDS_VIOLET = _UxGT("Violeta"); // Violet + LSTR MSG_SET_LEDS_WHITE = _UxGT("Blanco"); // White + LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Por defecto"); // Default + LSTR MSG_CUSTOM_LEDS = _UxGT("Color personalizado"); // Custom Lights + LSTR MSG_INTENSITY_R = _UxGT("Intensidad Rojo"); // Red Intensity + LSTR MSG_INTENSITY_G = _UxGT("Intensidad Verde"); // Green Intensity + LSTR MSG_INTENSITY_B = _UxGT("Intensidad Azul"); // Blue Intensity + LSTR MSG_INTENSITY_W = _UxGT("Intensidad Blanco"); // White Intensity + LSTR MSG_LED_BRIGHTNESS = _UxGT("Brillo"); // Brightness + LSTR MSG_HOTEND_TOO_COLD = _UxGT("Hotend muy frio"); // Hotend too cold + LSTR MSG_CHAMBER = _UxGT("Recinto"); // Enclosure + LSTR MSG_STORED_FAN_N = _UxGT("Vent. almacenado ~"); // Stored Fan ~ + LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Vel. Ext. ventil."); // Extra Fan Speed + LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Vel. Ext. ventil. ~"); // Extra Fan Speed ~ + LSTR MSG_PID_AUTOTUNE = _UxGT("PID Auto-ajuste"); // PID Autotune + LSTR MSG_PID_AUTOTUNE_E = _UxGT("PID Auto-ajuste *"); // Autotune * PID + LSTR MSG_JERK = _UxGT("Jerk"); // Jerk + LSTR MSG_VA_JERK = _UxGT("Max ") STR_A _UxGT(" Jerk"); // Max (STR_A) Jerk + LSTR MSG_VB_JERK = _UxGT("Max ") STR_B _UxGT(" Jerk"); // Max (STR_B) Jerk + LSTR MSG_VC_JERK = _UxGT("Max ") STR_C _UxGT(" Jerk"); // Max (STR_C) Jerk + LSTR MSG_VN_JERK = _UxGT("Max @ Jerk"); // Max @ Jerk + LSTR MSG_VE_JERK = _UxGT("Max E Jerk"); // Max E Jerk + LSTR MSG_JUNCTION_DEVIATION = _UxGT("Desvi. Unión"); // Junction Dev + LSTR MSG_MAX_SPEED = _UxGT("Max Velocidad"); // Max Speed (mm/s) + LSTR MSG_VMAX_A = _UxGT("Max ") STR_A _UxGT(" Speed"); // Max (STR_A) Speed + LSTR MSG_VMAX_B = _UxGT("Max ") STR_B _UxGT(" Speed"); // Max (STR_B) Speed + LSTR MSG_VMAX_C = _UxGT("Max ") STR_C _UxGT(" Speed"); // Max (STR_C) Speed + LSTR MSG_VMAX_N = _UxGT("Max @ Speed"); // Max @ Speed + LSTR MSG_VMAX_E = _UxGT("Max E Speed"); // Max E Speed + LSTR MSG_VMAX_EN = _UxGT("Max * Speed"); // Max * Speed + LSTR MSG_VMIN = _UxGT("Vmin"); // Min Velocity + LSTR MSG_FILAMENT_UNLOAD = _UxGT("Descarga mm"); // Unload mm + LSTR MSG_FILAMENT_LOAD = _UxGT("Carga mm"); // Load mm + LSTR MSG_ADVANCE_K = _UxGT("Avance K"); // Advance K + LSTR MSG_ADVANCE_K_E = _UxGT("Avance K *"); // Advance K * + LSTR MSG_INIT_EEPROM = _UxGT("Inicializar EEPROM"); // Initialize EEPROM + LSTR MSG_MEDIA_UPDATE = _UxGT("Actualizar ") MEDIA_TYPE_ES; // (MEDIA_TYPE_EN) Update + LSTR MSG_RESET_PRINTER = _UxGT("Resetear Impresora"); // Reset Printer + LSTR MSG_START_PRINT = _UxGT("Iniciar impresión"); // Start Print + LSTR MSG_BUTTON_NEXT = _UxGT("Siguinte"); // Next + LSTR MSG_BUTTON_INIT = _UxGT("Iniciar"); // Init + LSTR MSG_BUTTON_STOP = _UxGT("Parar"); // Stop + LSTR MSG_BUTTON_PRINT = _UxGT("Imprimir"); // Print + LSTR MSG_BUTTON_RESET = _UxGT("Reiniciar"); // Reset + LSTR MSG_BUTTON_CANCEL = _UxGT("Cancelar"); // Cancel + LSTR MSG_BUTTON_DONE = _UxGT("Listo"); // Done + LSTR MSG_BUTTON_BACK = _UxGT("Retroceder"); // Back + LSTR MSG_BUTTON_PROCEED = _UxGT("Proceder"); // Proceed + LSTR MSG_PRINTING_OBJECT = _UxGT("Imprimiendo Objeto"); // Print Obj + LSTR MSG_CANCEL_OBJECT = _UxGT("Cancelar Objeto"); // Cancel Obj + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Cancelar Objeto {"); // Cancel Obj { + LSTR MSG_OUTAGE_RECOVERY = _UxGT("Rec. Fallo electrico"); // Power Outage + LSTR MSG_PRINT_PAUSED = _UxGT("Impresión Pausada"); // Print Paused + LSTR MSG_PRINTING = _UxGT("Imprimiendo..."); // Printing... + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V"); // S UnRet V + LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Inter. longitud"); // Swap Length + LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Purgar longitud"); // Purge Length + LSTR MSG_TOOL_CHANGE = _UxGT("Cambiar Herramienta"); // Tool Change + LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Aumentar Z"); // Z Raise + LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Vel. de Cebado"); // Prime Speed + LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Vel. de retracción"); // Retract Speed + LSTR MSG_NOZZLE_STANDBY = _UxGT("Boquilla en Espera"); // Nozzle Standby + LSTR MSG_FILAMENTLOAD = _UxGT("Cargar filamento"); // Load Filament + LSTR MSG_FILAMENTLOAD_E = _UxGT("Cargar filamento *"); // Load * Filament + LSTR MSG_FILAMENTUNLOAD = _UxGT("Descargar filamento"); // Unload Filament + LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Descargar fil. *"); // Unload * Filament + LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Descargar todo"); // Unload All + LSTR MSG_RELEASE_MEDIA = _UxGT("Lanzar ") MEDIA_TYPE_ES; // Release (MEDIA_TYPE_EN) + LSTR MSG_SKEW_FACTOR = _UxGT("Factor de desviación"); // Skew Factor + LSTR MSG_BLTOUCH = _UxGT("BLTouch"); // BLTouch + LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Auto-Prueba"); // Self-Test + LSTR MSG_BLTOUCH_STOW = _UxGT("Subir pistón"); // Stow + LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Bajar pistón"); // Deploy + LSTR MSG_BLTOUCH_SW_MODE = _UxGT("Modo Software"); // SW-Mode + LSTR MSG_BLTOUCH_5V_MODE = _UxGT("Modo 5V"); // 5V-Mode + LSTR MSG_BLTOUCH_OD_MODE = _UxGT("Modo OD"); // OD-Mode + LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("Modo almacenar"); // Mode-Store + LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Poner BLTouch a 5V"); // Set BLTouch to 5V + LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Poner BLTouch a OD"); // Set BLTouch to OD + LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Informe de drenaje"); // Report Drain + LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("PELIGRO: ¡Una mala configuración puede producir daños! ¿Proceder igualmente?"); // DANGER: Bad settings can cause damage! Proceed anyway? + LSTR MSG_TOUCHMI_PROBE = _UxGT("TouchMI"); // TouchMI + LSTR MSG_TOUCHMI_INIT = _UxGT("Iniciar TouchMI"); // Init TouchMI + LSTR MSG_TOUCHMI_ZTEST = _UxGT("Test de desfase Z"); // Z Offset Test + LSTR MSG_TOUCHMI_SAVE = _UxGT("Guardar"); // Save + LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("Subir TouchMI"); // Deploy TouchMI + LSTR MSG_MANUAL_DEPLOY = _UxGT("Subir Sonda Z"); // Deploy Z-Probe + LSTR MSG_MANUAL_STOW = _UxGT("Bajar Sonda Z"); // Stow Z-Probe + LSTR MSG_BABYSTEP_TOTAL = _UxGT("Total"); // Total + LSTR MSG_COOLING = _UxGT("Enfriando..."); // Cooling... + LSTR MSG_BED_COOLING = _UxGT("Enfriando Cama..."); // Bed Cooling... + LSTR MSG_CHAMBER_HEATING = _UxGT("Calentando Cámara..."); // Chamber Heating... + LSTR MSG_CHAMBER_COOLING = _UxGT("Enfriando Cámara..."); // Chamber Cooling... + LSTR MSG_DELTA_SETTINGS = _UxGT("Configuración Delta"); // Delta Settings + LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Auto Calibración"); // Auto Calibration + LSTR MSG_DELTA_DIAG_ROD = _UxGT("Barra Diagonal"); // Diag Rod + LSTR MSG_DELTA_HEIGHT = _UxGT("Altura"); // Height + LSTR MSG_DELTA_RADIUS = _UxGT("Radio"); // Radius + LSTR MSG_3POINT_LEVELING = _UxGT("Nivelando 3puntos"); // 3-Point Leveling + LSTR MSG_LINEAR_LEVELING = _UxGT("Nivelando Lineal"); // Linear Leveling + LSTR MSG_BILINEAR_LEVELING = _UxGT("Nivelando Bilineal"); // Bilinear Leveling + LSTR MSG_UBL_LEVELING = _UxGT("Nivelando UBL"); // Unified Bed Leveling + LSTR MSG_MESH_LEVELING = _UxGT("Nivelando en Mallado"); // Mesh Leveling + LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Vig. Fuga Térm.: OFF"); // Runaway Watch: OFF + LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Vig. Fuga Térm.: ON"); // Runaway Watch: ON + LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Brillo cabina"); // Light Brightness + LSTR MSG_DAC_PERCENT_N = _UxGT("@ Driver %"); // @ Driver % + LSTR MSG_ERROR_TMC = _UxGT("ERROR CONEX. TMC"); // TMC CONNECTION ERROR + LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("CAMBIAR FILAMENTO"); // FILAMENT CHANGE + LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("IMPRESIÓN PAUSADA"); // PRINT PAUSED + LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("CARGAR FILAMENTO"); // LOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("DESCARGAR FILAMENTO"); // UNLOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("OPC. REINICIO:"); // RESUME OPTIONS: + LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Purgar más"); // Purge more + LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Boquilla: "); // Nozzle: + LSTR MSG_RUNOUT_SENSOR = _UxGT("Sens. filamento"); // Runout Sensor + LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("Dist. filamento mm"); // Runout Dist mm + LSTR MSG_KILL_HOMING_FAILED = _UxGT("Ir a origen Fallado"); // Homing Failed + LSTR MSG_LCD_PROBING_FAILED = _UxGT("Sondeo Fallado"); // Probing Failed + LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("ELIJE FILAMENTO"); // CHOOSE FILAMENT + LSTR MSG_MMU2_MENU = _UxGT("MMU"); // MMU + LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("¡Actu. MMU Firmware!"); // Update MMU Firmware! + LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU Necesita Cuidado"); // MMU Needs Attention. + LSTR MSG_MMU2_RESUME = _UxGT("Continuar imp."); // Resume + LSTR MSG_MMU2_RESUMING = _UxGT("Resumiendo..."); // MMU Resuming... + LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("Cargar Filamento"); // Load + LSTR MSG_MMU2_LOAD_ALL = _UxGT("Cargar Todo"); // Load All + LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Cargar hasta boqui."); // Load to Nozzle + LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("Expulsar Filamento"); // Eject + LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("Expulsar Filamento ~"); // Eject ~ + LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Descargar Filamento"); // Unload + LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Cargando Fil. %i..."); // Filament %i Load... + LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Expulsando Fil. ..."); // Filament %i Eject... + LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Descargando Fil...."); // Filament %i Unload... + LSTR MSG_MMU2_ALL = _UxGT("Todo"); // All + LSTR MSG_MMU2_FILAMENT_N = _UxGT("Filamento ~"); // Filament ~ + LSTR MSG_MMU2_RESET = _UxGT("Reiniciar MMU"); // Reset MMU + LSTR MSG_MMU2_RESETTING = _UxGT("Reiniciando MMU..."); // Resetting... + LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Retirar, y pulsar"); // Eject Recover + LSTR MSG_MIX = _UxGT("Mezcla"); // Mix + LSTR MSG_MIX_COMPONENT_N = _UxGT("Componente {"); // Component { + LSTR MSG_MIXER = _UxGT("Miezclador"); // Mixer + LSTR MSG_GRADIENT = _UxGT("Degradado"); // Gradient + LSTR MSG_FULL_GRADIENT = _UxGT("Degradado Total"); // Full Gradient + LSTR MSG_TOGGLE_MIX = _UxGT("Mezcla Conmutada"); // Toggle Mix + LSTR MSG_CYCLE_MIX = _UxGT("Mezcla Cíclica"); // Cycle Mix + LSTR MSG_GRADIENT_MIX = _UxGT("Mezcla de Degradado"); // Gradient Mix + LSTR MSG_REVERSE_GRADIENT = _UxGT("Degradado inverso"); // Reverse Gradient + LSTR MSG_ACTIVE_VTOOL = _UxGT("Activar Herr.V"); // Active V-tool + LSTR MSG_START_VTOOL = _UxGT("Inicio Herr.V"); // Start V-tool + LSTR MSG_END_VTOOL = _UxGT(" Fin Herr.V"); // End V-tool + LSTR MSG_GRADIENT_ALIAS = _UxGT("Alias Herr.V"); // Alias V-tool + LSTR MSG_RESET_VTOOLS = _UxGT("Reiniciar Herr.V"); // Reset V-tools + LSTR MSG_COMMIT_VTOOL = _UxGT("Cometer mezc. Herr.V"); // Commit V-tool Mix + LSTR MSG_VTOOLS_RESET = _UxGT("Herr.V reiniciados"); // V-tools Were Reset + LSTR MSG_START_Z = _UxGT("Inicio Z:"); // Start Z: + LSTR MSG_END_Z = _UxGT(" Fin Z:"); // End Z: + LSTR MSG_GAMES = _UxGT("Juegos"); // Games + LSTR MSG_BRICKOUT = _UxGT("Brickout"); // Brickout + LSTR MSG_INVADERS = _UxGT("Invaders"); // Invaders + LSTR MSG_SNAKE = _UxGT("Sn4k3"); // Sn4k3 + LSTR MSG_MAZE = _UxGT("Maze"); // Maze + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Pulse para continuar")); // |Click to continue + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Aparcando...")); // |Parking... + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Purgando...")); // |Purging... + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Pulse para finalizar")); // |Click to finish + LSTR MSG_TMC_DRIVERS = _UxGT("Controladores TMC"); // TMC Drivers + LSTR MSG_TMC_CURRENT = _UxGT("Amperaje Controlador"); // Driver Current + LSTR MSG_TMC_HYBRID_THRS = _UxGT("Límite Hibrido"); // Hybrid Threshold + LSTR MSG_TMC_HOMING_THRS = _UxGT("Origen sin sensores"); // Sensorless Homing + LSTR MSG_TMC_STEPPING_MODE = _UxGT("Modo de pasos"); // Stepping Mode + LSTR MSG_TMC_STEALTHCHOP = _UxGT("StealthChop"); // StealthChop + LSTR MSG_SERVICE_RESET = _UxGT("Reiniciar"); // Reset + LSTR MSG_SERVICE_IN = _UxGT(" dentro:"); // in: + LSTR MSG_BACKLASH = _UxGT("Backlash"); // Backlash + LSTR MSG_BACKLASH_CORRECTION = _UxGT("Corrección"); // Correction + LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Suavizado"); // Smoothing + LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Fallo al iniciar ") MEDIA_TYPE_ES; // (MEDIA_TYPE_EN) Init Fail + LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Desbordamiento de subllamada"); // Subcall Overflow + LSTR MSG_ITERATION = _UxGT("G34 Iteración: %i"); // G34 Iteration: %i + LSTR MSG_DECREASING_ACCURACY = _UxGT("¡Precisión disminuyendo!"); // Accuracy Decreasing! + LSTR MSG_ACCURACY_ACHIEVED = _UxGT("Precisión conseguida"); // Accuracy Achieved + LSTR MSG_CUTTER_FREQUENCY = _UxGT("Frecuencia"); // Frequency + LSTR MSG_NOZZLE_PARKED = _UxGT("Boquilla Aparcada"); // Nozzle Parked + LSTR MSG_CONTROLLER_FAN = _UxGT("Controlador Vent."); // Controller Fan + LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("Velocidad en reposo"); // Idle Speed + LSTR MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("Modo Auto"); // Auto Mode + LSTR MSG_CONTROLLER_FAN_SPEED = _UxGT("Velocidad Activa"); // Active Speed + LSTR MSG_CONTROLLER_FAN_DURATION = _UxGT("Periodo de reposo"); // Idle Period + LSTR MSG_ERR_EEPROM_CRC = _UxGT("Err: EEPROM CRC"); // Err: EEPROM CRC + LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Err: EEPROM Tamaño"); // Err: EEPROM Size + LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Err: Versión EEPROM"); // Err: EEPROM Version + LSTR MSG_PRINT_DONE = _UxGT("Impresión Completada"); // Print Done + LSTR MSG_ZPROBE_OFFSETS = _UxGT("Desf. Sonda"); // Probe Offsets + LSTR MSG_LEVEL_X_AXIS = _UxGT("Nivel Eje X"); // Level X Axis + LSTR MSG_AUTO_CALIBRATE = _UxGT("Auto Calibrar"); // Auto Calibrate + LSTR MSG_HEATER_TIMEOUT = _UxGT("T. de esp. Calent."); // Heater Timeout + LSTR MSG_REHEAT = _UxGT("Recalentar"); // Reheat + LSTR MSG_REHEATING = _UxGT("Recalentando..."); // Reheating... } namespace LanguageWide_es { using namespace LanguageNarrow_es; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Cont. de impresión"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completadas"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Tiempo total de imp."); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Impresión más larga"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total Extruido"); + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Cont. de impresión"); // Print Count + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completadas"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Tiempo total de imp."); // Print Time + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Impresión más larga"); // Longest Job Time + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total Extruido"); // Extruded Total #endif } @@ -587,17 +568,17 @@ namespace LanguageTall_es { using namespace LanguageWide_es; #if LCD_HEIGHT >= 4 // Filament Change screens show up to 3 lines on a 4-line display - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Pulsar el botón para", "reanudar impresión")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Aparcando...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Esperando para", "iniciar el cambio", "de filamento")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Inserte el filamento", "y pulse el botón", "para continuar...")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Pulse el botón para", "calentar la boquilla")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Calentando boquilla", "Espere por favor...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Espere para", "liberar el filamento")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Espere para", "cargar el filamento")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Espere para", "purgar el filamento")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Pulse para finalizar", "la purga de filamen.")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Esperando impresora", "para reanudar...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Esperando para", "iniciar el cambio", "de filamento")); // |Wait for|filament change|to start + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Inserte el filamento", "y pulse el botón", "para continuar...")); // |Insert filament|and press button|to continue + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Espere para", "liberar el filamento")); // |Wait for|filament unload + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Espere para", "cargar el filamento")); // |Wait for|filament load + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Esperando impresora", "para reanudar...")); // |Wait for print|to resume... + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Calentando boquilla", "Espere por favor...")); // |Nozzle heating|Please wait... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Pulse el botón para", "calentar la boquilla")); // |Press button|to heat nozzle + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Pulsar el botón para", "reanudar impresión")); // |Press Button|to resume print + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Aparcando...")); // |Parking... + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Espere para", "purgar el filamento")); // |Wait for|filament purge + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Pulse para finalizar", "la purga de filamen.")); // |Click to finish|filament purge #endif } diff --git a/Marlin/src/lcd/language/language_eu.h b/Marlin/src/lcd/language/language_eu.h index 021d18c6f8..c67f075ca0 100644 --- a/Marlin/src/lcd/language/language_eu.h +++ b/Marlin/src/lcd/language/language_eu.h @@ -45,289 +45,274 @@ namespace LanguageNarrow_eu { constexpr uint8_t CHARSIZE = 1; LSTR LANGUAGE = _UxGT("Basque-Euskera"); - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" prest."); - LSTR MSG_BACK = _UxGT("Atzera"); - LSTR MSG_MEDIA_INSERTED = _UxGT("Txartela sartuta"); - LSTR MSG_MEDIA_REMOVED = _UxGT("Txartela kenduta"); - LSTR MSG_MAIN_MENU = _UxGT("Menu nagusia"); - LSTR MSG_DISABLE_STEPPERS = _UxGT("Itzali motoreak"); - LSTR MSG_DEBUG_MENU = _UxGT("Arazketa Menua"); - LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Prog. Barra Proba"); - LSTR MSG_AUTO_HOME = _UxGT("Hasierara joan"); - LSTR MSG_AUTO_HOME_X = _UxGT("X jatorrira"); - LSTR MSG_AUTO_HOME_Y = _UxGT("Y jatorrira"); - LSTR MSG_AUTO_HOME_Z = _UxGT("Z jatorrira"); - LSTR MSG_LEVEL_BED_HOMING = _UxGT("XYZ hasieraratzen"); - LSTR MSG_LEVEL_BED_WAITING = _UxGT("Klik egin hasteko"); - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Hurrengo Puntua"); - LSTR MSG_LEVEL_BED_DONE = _UxGT("Berdintzea eginda"); - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Etxe. offset eza."); - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Offsetak ezarrita"); - - LSTR MSG_PREHEAT_1 = _UxGT("Berotu ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Berotu ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Amaia"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Amaia ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Guztia"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Ohea"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Ezarp."); - - LSTR MSG_PREHEAT_M = _UxGT("Berotu $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Berotu $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Berotu $ Amaia"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Berotu $ Amaia ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Berotu $ Guztia"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Berotu $ Ohea"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Berotu $ Ezarp."); - - LSTR MSG_COOLDOWN = _UxGT("Hoztu"); - LSTR MSG_SWITCH_PS_ON = _UxGT("Energia piztu"); - LSTR MSG_SWITCH_PS_OFF = _UxGT("Energia itzali"); - LSTR MSG_EXTRUDE = _UxGT("Estruitu"); - LSTR MSG_RETRACT = _UxGT("Atzera eragin"); - LSTR MSG_MOVE_AXIS = _UxGT("Ardatzak mugitu"); - LSTR MSG_PROBE_AND_LEVEL = _UxGT("Proba eta Berdindu"); - LSTR MSG_BED_LEVELING = _UxGT("Ohe berdinketa"); - LSTR MSG_LEVEL_BED = _UxGT("Ohea berdindu"); - LSTR MSG_BED_TRAMMING = _UxGT("Ertzak berdindu"); - LSTR MSG_NEXT_CORNER = _UxGT("Hurrengo ertza"); - LSTR MSG_EDIT_MESH = _UxGT("Sarea editatu"); - - LSTR MSG_UBL_DOING_G29 = _UxGT("G29 exekutatzen"); - LSTR MSG_UBL_TOOLS = _UxGT("UBL Tresnak"); - LSTR MSG_UBL_MANUAL_MESH = _UxGT("Sarea eskuz sortu"); - LSTR MSG_UBL_BC_INSERT2 = _UxGT("Neurtu"); - LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Ohearen tenperatura"); - LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Bed Temp"); - LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Mutur beroaren tenp."); - LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Hotend Temp"); - LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Sarea editatzea eginda"); - LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Sarea sortu"); - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("$ sarea sortu"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("$ sarea balioetsi"); - LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Sare hotza sortu"); - LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Sarearen altuera doitu"); - LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Sarea balioetsi"); - LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Ohe sarea balioetsi"); - LSTR MSG_UBL_MESH_LEVELING = _UxGT("Sare berdinketa"); - LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3 puntuko berdinketa"); - LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Lauki-sare berdinketa"); - LSTR MSG_UBL_MESH_LEVEL = _UxGT("Sarea berdindu"); - LSTR MSG_UBL_MAP_TYPE = _UxGT("Mapa mota"); - LSTR MSG_LED_CONTROL = _UxGT("LED ezarpenak"); - LSTR MSG_LIGHTS = _UxGT("Argiak"); - LSTR MSG_LIGHT_N = _UxGT("Argi #{"); - LSTR MSG_LED_PRESETS = _UxGT("Argi aurrehautaketak"); - LSTR MSG_SET_LEDS_RED = _UxGT("Gorria"); - LSTR MSG_SET_LEDS_ORANGE = _UxGT("Laranja"); - LSTR MSG_SET_LEDS_YELLOW = _UxGT("Horia"); - LSTR MSG_SET_LEDS_GREEN = _UxGT("Berdea"); - LSTR MSG_SET_LEDS_BLUE = _UxGT("Urdina"); - LSTR MSG_SET_LEDS_INDIGO = _UxGT("Indigo"); - LSTR MSG_SET_LEDS_VIOLET = _UxGT("Bioleta"); - LSTR MSG_SET_LEDS_WHITE = _UxGT("Zuria"); - LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Lehenetsia"); - LSTR MSG_CUSTOM_LEDS = _UxGT("Argi pertsonalizatuak"); - LSTR MSG_INTENSITY_R = _UxGT("Intentsitate gorria"); - LSTR MSG_INTENSITY_G = _UxGT("Intentsitate berdea"); - LSTR MSG_INTENSITY_B = _UxGT("Intentsitate urdina"); - LSTR MSG_INTENSITY_W = _UxGT("Intentsitate zuria"); - LSTR MSG_LED_BRIGHTNESS = _UxGT("Distira"); - - LSTR MSG_MOVING = _UxGT("Mugitzen..."); - LSTR MSG_FREE_XY = _UxGT("Askatu XY"); - LSTR MSG_MOVE_X = _UxGT("Mugitu X"); - LSTR MSG_MOVE_Y = _UxGT("Mugitu Y"); - LSTR MSG_MOVE_Z = _UxGT("Mugitu Z"); - LSTR MSG_MOVE_N = _UxGT("Mugitu @"); - LSTR MSG_MOVE_E = _UxGT("Estrusorea"); - LSTR MSG_MOVE_EN = _UxGT("Estrusorea *"); - LSTR MSG_MOVE_N_MM = _UxGT("Mugitu $mm"); - LSTR MSG_MOVE_N_IN = _UxGT("Mugitu $in"); - LSTR MSG_MOVE_N_DEG = _UxGT("Mugitu $") LCD_STR_DEGREE; - LSTR MSG_SPEED = _UxGT("Abiadura"); - LSTR MSG_MESH_Z_OFFSET = _UxGT("Z Ohea"); - LSTR MSG_NOZZLE = _UxGT("Pita"); - LSTR MSG_NOZZLE_N = _UxGT("Pita ~"); - LSTR MSG_BED = _UxGT("Ohea"); - LSTR MSG_FAN_SPEED = _UxGT("Haizagailu abiadura"); - LSTR MSG_FAN_SPEED_N = _UxGT("Haizagailu abiadura ~"); - LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Haiz.gehig. abiadura"); - LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Haiz.gehig. abiadura ~"); - LSTR MSG_FLOW = _UxGT("Fluxua"); - LSTR MSG_FLOW_N = _UxGT("Fluxua ~"); - LSTR MSG_CONTROL = _UxGT("Kontrola"); - LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); - LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fakt"); - LSTR MSG_AUTOTEMP = _UxGT("Auto tenperatura"); - LSTR MSG_SELECT_E = _UxGT("Aukeratu *"); - LSTR MSG_ACC = _UxGT("Azelerazioa"); - LSTR MSG_JERK = _UxGT("Astindua"); - LSTR MSG_VA_JERK = _UxGT("V") STR_A _UxGT("-astindua"); - LSTR MSG_VB_JERK = _UxGT("V") STR_B _UxGT("-astindua"); - LSTR MSG_VC_JERK = _UxGT("V") STR_C _UxGT("-astindua"); - LSTR MSG_VN_JERK = _UxGT("V@-astindua"); - LSTR MSG_VE_JERK = _UxGT("Ve-astindua"); - LSTR MSG_VTRAV_MIN = _UxGT("VBidaia min"); - LSTR MSG_A_RETRACT = _UxGT("A-retrakt"); - LSTR MSG_A_TRAVEL = _UxGT("A-bidaia"); - LSTR MSG_STEPS_PER_MM = _UxGT("Pausoak/mm"); - LSTR MSG_A_STEPS = STR_A _UxGT(" pausoak/mm"); - LSTR MSG_B_STEPS = STR_B _UxGT(" pausoak/mm"); - LSTR MSG_C_STEPS = STR_C _UxGT(" pausoak/mm"); - LSTR MSG_N_STEPS = _UxGT("@ pausoak/mm"); - LSTR MSG_E_STEPS = _UxGT("E pausoak/mm"); - LSTR MSG_EN_STEPS = _UxGT("* pausoak/mm"); - LSTR MSG_TEMPERATURE = _UxGT("Tenperatura"); - LSTR MSG_MOTION = _UxGT("Mugimendua"); - LSTR MSG_FILAMENT = _UxGT("Harizpia"); - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E mm3-tan"); - LSTR MSG_FILAMENT_DIAM = _UxGT("Hariz. Dia."); - LSTR MSG_FILAMENT_DIAM_E = _UxGT("Hariz. Dia. *"); - LSTR MSG_FILAMENT_UNLOAD = _UxGT("Deskargatu mm"); - LSTR MSG_FILAMENT_LOAD = _UxGT("Kargatu mm"); - LSTR MSG_ADVANCE_K = _UxGT("K Aurrerapena"); - LSTR MSG_ADVANCE_K_E = _UxGT("K Aurrerapena *"); - LSTR MSG_CONTRAST = _UxGT("LCD kontrastea"); - LSTR MSG_STORE_EEPROM = _UxGT("Gorde memoria"); - LSTR MSG_LOAD_EEPROM = _UxGT("Kargatu memoria"); - LSTR MSG_RESTORE_DEFAULTS = _UxGT("Larri. berriz."); - LSTR MSG_INIT_EEPROM = _UxGT("EEPROM-a hasieratu"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Berriz kargatu"); - LSTR MSG_INFO_SCREEN = _UxGT("Pantaila info"); - LSTR MSG_PREPARE = _UxGT("Prestatu"); - LSTR MSG_TUNE = _UxGT("Doitu"); - LSTR MSG_PAUSE_PRINT = _UxGT("Pausatu inprimak."); - LSTR MSG_RESUME_PRINT = _UxGT("Jarraitu inprima."); - LSTR MSG_STOP_PRINT = _UxGT("Gelditu inprima."); - LSTR MSG_MEDIA_MENU = _UxGT("SD-tik inprimatu"); - LSTR MSG_NO_MEDIA = _UxGT("Ez dago SD-rik"); - LSTR MSG_DWELL = _UxGT("Lo egin..."); - LSTR MSG_USERWAIT = _UxGT("Aginduak zain..."); - LSTR MSG_PRINT_PAUSED = _UxGT("Inprim. geldi."); - LSTR MSG_PRINT_ABORTED = _UxGT("Inprim. deusezta."); - LSTR MSG_NO_MOVE = _UxGT("Mugimendu gabe."); - LSTR MSG_KILLED = _UxGT("AKABATUTA. "); - LSTR MSG_STOPPED = _UxGT("GELDITUTA. "); - LSTR MSG_CONTROL_RETRACT = _UxGT("Atzera egin mm"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Swap Atzera mm"); - LSTR MSG_CONTROL_RETRACTF = _UxGT("Atzera egin V"); - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Igo mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Atzera egin mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Swap Atzera mm"); - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Atzera egin V"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V"); - LSTR MSG_AUTORETRACT = _UxGT("Atzera egin"); - LSTR MSG_FILAMENTCHANGE = _UxGT("Aldatu harizpia"); - LSTR MSG_FILAMENTCHANGE_E = _UxGT("Aldatu harizpia *"); - LSTR MSG_FILAMENTLOAD = _UxGT("Harizpia kargatu"); - LSTR MSG_FILAMENTLOAD_E = _UxGT("Harizpia kargatu *"); - LSTR MSG_FILAMENTUNLOAD = _UxGT("Harizpia deskargatu"); - LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Harizpia deskargatu *"); - LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Erabat deskargatu"); - - LSTR MSG_ATTACH_MEDIA = _UxGT("Hasieratu SD-a"); - LSTR MSG_ATTACH_SD = _UxGT("Hasieratu SD-a"); - LSTR MSG_ATTACH_USB = _UxGT("Hasieratu USB-a"); - LSTR MSG_CHANGE_MEDIA = _UxGT("Aldatu txartela"); - LSTR MSG_RUN_AUTOFILES = _UxGT("Auto hasiera"); - - LSTR MSG_ZPROBE_OUT = _UxGT("Z zunda kanpora"); - LSTR MSG_SKEW_FACTOR = _UxGT("Okertze faktorea"); - LSTR MSG_BLTOUCH = _UxGT("BLTouch"); - LSTR MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch AutoProba"); - LSTR MSG_BLTOUCH_RESET = _UxGT("BLTouch berrabia."); - LSTR MSG_BLTOUCH_DEPLOY = _UxGT("BLTouch jaitsi/luzatu"); - LSTR MSG_BLTOUCH_STOW = _UxGT("BLTouch igo/jaso"); - LSTR MSG_HOME_FIRST = _UxGT("Etxera %s lehenengo"); - LSTR MSG_ZPROBE_XOFFSET = _UxGT("X Konpentsatu"); - LSTR MSG_ZPROBE_YOFFSET = _UxGT("Y Konpentsatu"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Z Konpentsatu"); - LSTR MSG_ZPROBE_OFFSET_N = _UxGT("@ Konpentsatu"); - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Z pausoz egokitu"); - LSTR MSG_BABYSTEP_X = _UxGT("Mikro-urratsa X"); - LSTR MSG_BABYSTEP_Y = _UxGT("Mikro-urratsa Y"); - LSTR MSG_BABYSTEP_Z = _UxGT("Mikro-urratsa Z"); - LSTR MSG_BABYSTEP_N = _UxGT("Mikro-urratsa @"); - LSTR MSG_ENDSTOP_ABORT = _UxGT("Endstop deusezta."); - LSTR MSG_ERR_HEATING_FAILED = _UxGT("Err: Beroketa"); - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Err: Tenperatura"); - LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("TENP. KONTROL EZA"); - LSTR MSG_ERR_MAXTEMP = _UxGT("Err: Tenp Maximoa"); - LSTR MSG_ERR_MINTEMP = _UxGT("Err: Tenp Minimoa"); - LSTR MSG_HALTED = _UxGT("INPRIMA. GELDIRIK"); - LSTR MSG_PLEASE_RESET = _UxGT("Berrabia. Mesedez"); - LSTR MSG_HEATING = _UxGT("Berotzen..."); - LSTR MSG_BED_HEATING = _UxGT("Ohea Berotzen..."); - LSTR MSG_DELTA_CALIBRATE = _UxGT("Delta Kalibraketa"); - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Kalibratu X"); - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Kalibratu Y"); - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Kalibratu Z"); - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Kalibratu Zentrua"); - LSTR MSG_DELTA_SETTINGS = _UxGT("Delta ezarpenak"); - LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Auto Kalibraketa"); - LSTR MSG_DELTA_DIAG_ROD = _UxGT("Barra diagonala"); - LSTR MSG_DELTA_HEIGHT = _UxGT("Altuera"); - LSTR MSG_DELTA_RADIUS = _UxGT("Erradioa"); - LSTR MSG_INFO_MENU = _UxGT("Inprimagailu Inf."); - LSTR MSG_INFO_PRINTER_MENU = _UxGT("Inprimagailu Inf."); - LSTR MSG_3POINT_LEVELING = _UxGT("3 puntuko berdinketa"); - LSTR MSG_LINEAR_LEVELING = _UxGT("Berdinketa lineala"); - LSTR MSG_BILINEAR_LEVELING = _UxGT("Berdinketa bilinearra"); - LSTR MSG_UBL_LEVELING = _UxGT("Unified Bed Leveling"); - LSTR MSG_MESH_LEVELING = _UxGT("Sare berdinketa"); - LSTR MSG_INFO_STATS_MENU = _UxGT("Inprima. estatis."); - LSTR MSG_INFO_BOARD_MENU = _UxGT("Txartelaren Info."); - LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Termistoreak"); - LSTR MSG_INFO_EXTRUDERS = _UxGT("Estrusoreak"); - LSTR MSG_INFO_BAUDRATE = _UxGT("Baudioak"); - LSTR MSG_INFO_PROTOCOL = _UxGT("Protokoloa"); - LSTR MSG_CASE_LIGHT = _UxGT("Kabina Argia"); - LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Argiaren Distira"); - - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Inprimatze"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Burututa"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Guztira"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Luzeena"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Estrusio"); - - LSTR MSG_INFO_MIN_TEMP = _UxGT("Tenp. Minimoa"); - LSTR MSG_INFO_MAX_TEMP = _UxGT("Tenp. Maximoa"); - LSTR MSG_INFO_PSU = _UxGT("Elikadura-iturria"); - LSTR MSG_DRIVE_STRENGTH = _UxGT("Driver-aren potentzia"); - LSTR MSG_DAC_PERCENT_N = _UxGT("@ Driver %"); - LSTR MSG_DAC_EEPROM_WRITE = _UxGT("Idatzi DAC EEPROM"); - LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("HARIZPIA ALDATU"); - LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("HARIZPIA KARGATU"); - LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("HARIZPIA DESKARGATU"); - LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("ALDAKETA AUKERAK:"); - LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Inprima. jarraitu"); - LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Pita: "); - LSTR MSG_KILL_HOMING_FAILED = _UxGT("Hasi. huts egin du"); - LSTR MSG_LCD_PROBING_FAILED = _UxGT("Neurketak huts egin du"); - - LSTR MSG_KILL_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 - // - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Mesedez, itxaron...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Deskargatzen...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Sartu eta click egin")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Berotzen...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Kargatzen...")); + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" prest."); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = _UxGT("Txartela sartuta"); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = _UxGT("Txartela kenduta"); // (MEDIA_TYPE_EN) Removed + LSTR MSG_MAIN_MENU = _UxGT("Menu nagusia"); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("Itzali motoreak"); // Disable Steppers + LSTR MSG_AUTO_HOME = _UxGT("Hasierara joan"); // Auto Home + LSTR MSG_AUTO_HOME_X = _UxGT("X jatorrira"); // Home X + LSTR MSG_AUTO_HOME_Y = _UxGT("Y jatorrira"); // Home Y + LSTR MSG_AUTO_HOME_Z = _UxGT("Z jatorrira"); // Home Z + LSTR MSG_LEVEL_BED_HOMING = _UxGT("XYZ hasieraratzen"); // Homing XYZ + LSTR MSG_LEVEL_BED_WAITING = _UxGT("Klik egin hasteko"); // Click to Begin + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Hurrengo Puntua"); // Next Point + LSTR MSG_LEVEL_BED_DONE = _UxGT("Berdintzea eginda"); // Leveling Done! + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Etxe. offset eza."); // Set Home Offsets + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Offsetak ezarrita"); // Offsets Applied + LSTR MSG_PREHEAT_1 = _UxGT("Berotu ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = _UxGT("Berotu ") PREHEAT_1_LABEL " ~"; // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Amaia"); // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Amaia ~"); // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_1_ALL = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Guztia"); // Preheat (PREHEAT_1_LABEL) All + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Ohea"); // Preheat (PREHEAT_1_LABEL) Bed + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Berotu ") PREHEAT_1_LABEL _UxGT(" Ezarp."); // Preheat (PREHEAT_1_LABEL) Conf + LSTR MSG_PREHEAT_M = _UxGT("Berotu $"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("Berotu $ ~"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("Berotu $ Amaia"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("Berotu $ Amaia ~"); // Preheat $ End ~ + LSTR MSG_PREHEAT_M_ALL = _UxGT("Berotu $ Guztia"); // Preheat $ All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Berotu $ Ohea"); // Preheat $ Bed + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Berotu $ Ezarp."); // Preheat $ Conf + LSTR MSG_COOLDOWN = _UxGT("Hoztu"); // Cooldown + LSTR MSG_SWITCH_PS_ON = _UxGT("Energia piztu"); // Switch Power On + LSTR MSG_SWITCH_PS_OFF = _UxGT("Energia itzali"); // Switch Power Off + LSTR MSG_EXTRUDE = _UxGT("Estruitu"); // Extrude + LSTR MSG_RETRACT = _UxGT("Atzera eragin"); // Retract + LSTR MSG_MOVE_AXIS = _UxGT("Ardatzak mugitu"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("Proba eta Berdindu"); // Probe and Level + LSTR MSG_BED_LEVELING = _UxGT("Ohe berdinketa"); // Bed Leveling + LSTR MSG_LEVEL_BED = _UxGT("Ohea berdindu"); // Level Bed + LSTR MSG_MOVE_X = _UxGT("Mugitu X"); // Move X + LSTR MSG_MOVE_Y = _UxGT("Mugitu Y"); // Move Y + LSTR MSG_MOVE_Z = _UxGT("Mugitu Z"); // Move Z + LSTR MSG_MOVE_N = _UxGT("Mugitu @"); // Move @ + LSTR MSG_MOVE_E = _UxGT("Estrusorea"); // Move Extruder + LSTR MSG_MOVE_EN = _UxGT("Estrusorea *"); // Move * + LSTR MSG_MOVE_N_MM = _UxGT("Mugitu $mm"); // Move $mm + LSTR MSG_MOVE_N_IN = _UxGT("Mugitu $in"); // Move $in + LSTR MSG_MOVE_N_DEG = _UxGT("Mugitu $") LCD_STR_DEGREE; // Move $(LCD_STR_DEGREE) + LSTR MSG_SPEED = _UxGT("Abiadura"); // Speed + LSTR MSG_MESH_Z_OFFSET = _UxGT("Z Ohea"); // Bed Z + LSTR MSG_NOZZLE = _UxGT("Pita"); // Nozzle + LSTR MSG_NOZZLE_N = _UxGT("Pita ~"); // Nozzle ~ + LSTR MSG_BED = _UxGT("Ohea"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("Haizagailu abiadura"); // Fan Speed + LSTR MSG_FAN_SPEED_N = _UxGT("Haizagailu abiadura ~"); // Fan Speed ~ + LSTR MSG_FLOW = _UxGT("Fluxua"); // Flow + LSTR MSG_FLOW_N = _UxGT("Fluxua ~"); // Flow ~ + LSTR MSG_CONTROL = _UxGT("Kontrola"); // Control + LSTR MSG_AUTOTEMP = _UxGT("Auto tenperatura"); // Autotemp + LSTR MSG_SELECT_E = _UxGT("Aukeratu *"); // Select * + LSTR MSG_ACC = _UxGT("Azelerazioa"); // Accel + LSTR MSG_VTRAV_MIN = _UxGT("VBidaia min"); // Min Travel Speed + LSTR MSG_A_RETRACT = _UxGT("A-retrakt"); // Retract Accel + LSTR MSG_A_TRAVEL = _UxGT("A-bidaia"); // Travel Accel + LSTR MSG_STEPS_PER_MM = _UxGT("Pausoak/mm"); // Steps/mm + LSTR MSG_A_STEPS = STR_A _UxGT(" pausoak/mm"); // (STR_A) Steps/mm + LSTR MSG_B_STEPS = STR_B _UxGT(" pausoak/mm"); // (STR_B) Steps/mm + LSTR MSG_C_STEPS = STR_C _UxGT(" pausoak/mm"); // (STR_C) Steps/mm + LSTR MSG_N_STEPS = _UxGT("@ pausoak/mm"); // @ steps/mm + LSTR MSG_E_STEPS = _UxGT("E pausoak/mm"); // E steps/mm + LSTR MSG_EN_STEPS = _UxGT("* pausoak/mm"); // * Steps/mm + LSTR MSG_TEMPERATURE = _UxGT("Tenperatura"); // Temperature + LSTR MSG_MOTION = _UxGT("Mugimendua"); // Motion + LSTR MSG_FILAMENT = _UxGT("Harizpia"); // Filament + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E mm3-tan"); // E in mm(SUPERSCRIPT_THREE) + LSTR MSG_FILAMENT_DIAM = _UxGT("Hariz. Dia."); // Fil. Dia. + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Hariz. Dia. *"); // Fil. Dia. * + LSTR MSG_CONTRAST = _UxGT("LCD kontrastea"); // LCD Contrast + LSTR MSG_STORE_EEPROM = _UxGT("Gorde memoria"); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("Kargatu memoria"); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("Larri. berriz."); // Restore Defaults + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Berriz kargatu"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT("Pantaila info"); // Info Screen + LSTR MSG_PREPARE = _UxGT("Prestatu"); // Prepare + LSTR MSG_TUNE = _UxGT("Doitu"); // Tune + LSTR MSG_PAUSE_PRINT = _UxGT("Pausatu inprimak."); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("Jarraitu inprima."); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("Gelditu inprima."); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("SD-tik inprimatu"); // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = _UxGT("Ez dago SD-rik"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_DWELL = _UxGT("Lo egin..."); // Sleep... + LSTR MSG_USERWAIT = _UxGT("Aginduak zain..."); // Click to Resume... + LSTR MSG_PRINT_ABORTED = _UxGT("Inprim. deusezta."); // Print Aborted + LSTR MSG_NO_MOVE = _UxGT("Mugimendu gabe."); // No Move. + LSTR MSG_KILLED = _UxGT("AKABATUTA. "); // KILLED. + LSTR MSG_STOPPED = _UxGT("GELDITUTA. "); // STOPPED. + LSTR MSG_CONTROL_RETRACT = _UxGT("Atzera egin mm"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Swap Atzera mm"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACTF = _UxGT("Atzera egin V"); // Retract V + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Igo mm"); // Hop mm + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Atzera egin mm"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Swap Atzera mm"); // S Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Atzera egin V"); // Unretract V + LSTR MSG_AUTORETRACT = _UxGT("Atzera egin"); // Auto-Retract + LSTR MSG_FILAMENTCHANGE = _UxGT("Aldatu harizpia"); // Change Filament + LSTR MSG_FILAMENTCHANGE_E = _UxGT("Aldatu harizpia *"); // Change * Filament + LSTR MSG_ATTACH_MEDIA = _UxGT("Hasieratu SD-a"); // Attach (MEDIA_TYPE_EN) + LSTR MSG_ATTACH_SD = _UxGT("Hasieratu SD-a"); // Attach SD Card + LSTR MSG_ATTACH_USB = _UxGT("Hasieratu USB-a"); // Attach USB Drive + LSTR MSG_CHANGE_MEDIA = _UxGT("Aldatu txartela"); // Refresh (MEDIA_TYPE_EN) + LSTR MSG_RUN_AUTOFILES = _UxGT("Auto hasiera"); // Run Autofiles + LSTR MSG_ZPROBE_OUT = _UxGT("Z zunda kanpora"); // Z Probe Past Bed + LSTR MSG_BLTOUCH_RESET = _UxGT("BLTouch berrabia."); // Reset + LSTR MSG_ZPROBE_XOFFSET = _UxGT("X Konpentsatu"); // Probe X Offset + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Y Konpentsatu"); // Probe Y Offset + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Z Konpentsatu"); // Probe Z Offset + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("@ Konpentsatu"); // Probe @ Offset + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Z pausoz egokitu"); // Babystep Probe Z + LSTR MSG_BABYSTEP_X = _UxGT("Mikro-urratsa X"); // Babystep X + LSTR MSG_BABYSTEP_Y = _UxGT("Mikro-urratsa Y"); // Babystep Y + LSTR MSG_BABYSTEP_Z = _UxGT("Mikro-urratsa Z"); // Babystep Z + LSTR MSG_BABYSTEP_N = _UxGT("Mikro-urratsa @"); // Babystep @ + LSTR MSG_ENDSTOP_ABORT = _UxGT("Endstop deusezta."); // Endstop Abort + LSTR MSG_ERR_HEATING_FAILED = _UxGT("Err: Beroketa"); // Heating Failed + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Err: Tenperatura"); // Err: REDUNDANT TEMP + LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("TENP. KONTROL EZA"); // THERMAL RUNAWAY + LSTR MSG_ERR_MAXTEMP = _UxGT("Err: Tenp Maximoa"); // Err: MAXTEMP + LSTR MSG_ERR_MINTEMP = _UxGT("Err: Tenp Minimoa"); // Err: MINTEMP + LSTR MSG_HALTED = _UxGT("INPRIMA. GELDIRIK"); // PRINTER HALTED + LSTR MSG_PLEASE_RESET = _UxGT("Berrabia. Mesedez"); // Please Reset + LSTR MSG_HEATING = _UxGT("Berotzen..."); // Heating... + LSTR MSG_BED_HEATING = _UxGT("Ohea Berotzen..."); // Bed Heating... + LSTR MSG_DELTA_CALIBRATE = _UxGT("Delta Kalibraketa"); // Delta Calibration + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Kalibratu X"); // Calibrate X + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Kalibratu Y"); // Calibrate Y + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Kalibratu Z"); // Calibrate Z + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Kalibratu Zentrua"); // Calibrate Center + LSTR MSG_INFO_MENU = _UxGT("Inprimagailu Inf."); // About Printer + LSTR MSG_INFO_PRINTER_MENU = _UxGT("Inprimagailu Inf."); // Printer Info + LSTR MSG_INFO_STATS_MENU = _UxGT("Inprima. estatis."); // Stats + LSTR MSG_INFO_BOARD_MENU = _UxGT("Txartelaren Info."); // Board Info + LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Termistoreak"); // Thermistors + LSTR MSG_INFO_EXTRUDERS = _UxGT("Estrusoreak"); // Extruders + LSTR MSG_INFO_BAUDRATE = _UxGT("Baudioak"); // Baud + LSTR MSG_INFO_PROTOCOL = _UxGT("Protokoloa"); // Protocol + LSTR MSG_CASE_LIGHT = _UxGT("Kabina Argia"); // Case Light + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Inprimatze"); // Prints + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Burututa"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Guztira"); // Total + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Luzeena"); // Longest + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Estrusio"); // Extruded + LSTR MSG_INFO_MIN_TEMP = _UxGT("Tenp. Minimoa"); // Min Temp + LSTR MSG_INFO_MAX_TEMP = _UxGT("Tenp. Maximoa"); // Max Temp + LSTR MSG_INFO_PSU = _UxGT("Elikadura-iturria"); // PSU + LSTR MSG_DRIVE_STRENGTH = _UxGT("Driver-aren potentzia"); // Drive Strength + LSTR MSG_DAC_EEPROM_WRITE = _UxGT("Idatzi DAC EEPROM"); // DAC EEPROM Write + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Inprima. jarraitu"); // Continue + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Mesedez, itxaron...")); // |Please wait... + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Sartu eta click egin")); // |Insert and Click + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Deskargatzen...")); // |Ejecting... + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Kargatzen...")); // |Loading... + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); // (LCD_STR_THERMOMETER) Min + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); // (LCD_STR_THERMOMETER) Max + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fakt"); // (LCD_STR_THERMOMETER) Fact + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Inprimagailu okerra"); // INCORRECT PRINTER + LSTR MSG_DEBUG_MENU = _UxGT("Arazketa Menua"); // Debug Menu + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Prog. Barra Proba"); // Progress Bar Test + LSTR MSG_MOVING = _UxGT("Mugitzen..."); // Moving... + LSTR MSG_FREE_XY = _UxGT("Askatu XY"); // Free XY + LSTR MSG_HOME_FIRST = _UxGT("Etxera %s lehenengo"); // Home %s First + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Berotzen...")); // |Heating... + LSTR MSG_BACK = _UxGT("Atzera"); // Back + LSTR MSG_BED_TRAMMING = _UxGT("Ertzak berdindu"); // Bed Tramming + LSTR MSG_NEXT_CORNER = _UxGT("Hurrengo ertza"); // Next Corner + LSTR MSG_EDIT_MESH = _UxGT("Sarea editatu"); // Edit Mesh + LSTR MSG_UBL_DOING_G29 = _UxGT("G29 exekutatzen"); // Doing G29 + LSTR MSG_UBL_TOOLS = _UxGT("UBL Tresnak"); // UBL Tools + LSTR MSG_UBL_MANUAL_MESH = _UxGT("Sarea eskuz sortu"); // Manually Build Mesh + LSTR MSG_UBL_BC_INSERT2 = _UxGT("Neurtu"); // Measure + LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Ohearen tenperatura"); // Bed Temp + LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Bed Temp"); // Bed Temp + LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Mutur beroaren tenp."); // Hotend Temp + LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Hotend Temp"); // Hotend Temp + LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Sarea editatzea eginda"); // Done Editing Mesh + LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Sarea sortu"); // Build Mesh + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("$ sarea sortu"); // Build Mesh ($) + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("$ sarea balioetsi"); // Validate Mesh ($) + LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Sare hotza sortu"); // Build Cold Mesh + LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Sarearen altuera doitu"); // Adjust Mesh Height + LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Sarea balioetsi"); // Validate Mesh + LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Ohe sarea balioetsi"); // Continue Bed Mesh + LSTR MSG_UBL_MESH_LEVELING = _UxGT("Sare berdinketa"); // Mesh Leveling + LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3 puntuko berdinketa"); // 3-Point Leveling + LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Lauki-sare berdinketa"); // Grid Mesh Leveling + LSTR MSG_UBL_MESH_LEVEL = _UxGT("Sarea berdindu"); // Level Mesh + LSTR MSG_UBL_MAP_TYPE = _UxGT("Mapa mota"); // Map Type + LSTR MSG_LED_CONTROL = _UxGT("LED ezarpenak"); // LED Control + LSTR MSG_LIGHTS = _UxGT("Argiak"); // Lights + LSTR MSG_LIGHT_N = _UxGT("Argi #{"); // Light #{ + LSTR MSG_LED_PRESETS = _UxGT("Argi aurrehautaketak"); // Light Presets + LSTR MSG_SET_LEDS_RED = _UxGT("Gorria"); // Red + LSTR MSG_SET_LEDS_ORANGE = _UxGT("Laranja"); // Orange + LSTR MSG_SET_LEDS_YELLOW = _UxGT("Horia"); // Yellow + LSTR MSG_SET_LEDS_GREEN = _UxGT("Berdea"); // Green + LSTR MSG_SET_LEDS_BLUE = _UxGT("Urdina"); // Blue + LSTR MSG_SET_LEDS_INDIGO = _UxGT("Indigo"); // Indigo + LSTR MSG_SET_LEDS_VIOLET = _UxGT("Bioleta"); // Violet + LSTR MSG_SET_LEDS_WHITE = _UxGT("Zuria"); // White + LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Lehenetsia"); // Default + LSTR MSG_CUSTOM_LEDS = _UxGT("Argi pertsonalizatuak"); // Custom Lights + LSTR MSG_INTENSITY_R = _UxGT("Intentsitate gorria"); // Red Intensity + LSTR MSG_INTENSITY_G = _UxGT("Intentsitate berdea"); // Green Intensity + LSTR MSG_INTENSITY_B = _UxGT("Intentsitate urdina"); // Blue Intensity + LSTR MSG_INTENSITY_W = _UxGT("Intentsitate zuria"); // White Intensity + LSTR MSG_LED_BRIGHTNESS = _UxGT("Distira"); // Brightness + LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Haiz.gehig. abiadura"); // Extra Fan Speed + LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Haiz.gehig. abiadura ~"); // Extra Fan Speed ~ + LSTR MSG_JERK = _UxGT("Astindua"); // Jerk + LSTR MSG_VA_JERK = _UxGT("V") STR_A _UxGT("-astindua"); // Max (STR_A) Jerk + LSTR MSG_VB_JERK = _UxGT("V") STR_B _UxGT("-astindua"); // Max (STR_B) Jerk + LSTR MSG_VC_JERK = _UxGT("V") STR_C _UxGT("-astindua"); // Max (STR_C) Jerk + LSTR MSG_VN_JERK = _UxGT("V@-astindua"); // Max @ Jerk + LSTR MSG_VE_JERK = _UxGT("Ve-astindua"); // Max E Jerk + LSTR MSG_FILAMENT_UNLOAD = _UxGT("Deskargatu mm"); // Unload mm + LSTR MSG_FILAMENT_LOAD = _UxGT("Kargatu mm"); // Load mm + LSTR MSG_ADVANCE_K = _UxGT("K Aurrerapena"); // Advance K + LSTR MSG_ADVANCE_K_E = _UxGT("K Aurrerapena *"); // Advance K * + LSTR MSG_INIT_EEPROM = _UxGT("EEPROM-a hasieratu"); // Initialize EEPROM + LSTR MSG_PRINT_PAUSED = _UxGT("Inprim. geldi."); // Print Paused + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V"); // S UnRet V + LSTR MSG_FILAMENTLOAD = _UxGT("Harizpia kargatu"); // Load Filament + LSTR MSG_FILAMENTLOAD_E = _UxGT("Harizpia kargatu *"); // Load * Filament + LSTR MSG_FILAMENTUNLOAD = _UxGT("Harizpia deskargatu"); // Unload Filament + LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Harizpia deskargatu *"); // Unload * Filament + LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Erabat deskargatu"); // Unload All + LSTR MSG_SKEW_FACTOR = _UxGT("Okertze faktorea"); // Skew Factor + LSTR MSG_BLTOUCH = _UxGT("BLTouch"); // BLTouch + LSTR MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch AutoProba"); // Self-Test + LSTR MSG_BLTOUCH_STOW = _UxGT("BLTouch igo/jaso"); // Stow + LSTR MSG_BLTOUCH_DEPLOY = _UxGT("BLTouch jaitsi/luzatu"); // Deploy + LSTR MSG_DELTA_SETTINGS = _UxGT("Delta ezarpenak"); // Delta Settings + LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Auto Kalibraketa"); // Auto Calibration + LSTR MSG_DELTA_DIAG_ROD = _UxGT("Barra diagonala"); // Diag Rod + LSTR MSG_DELTA_HEIGHT = _UxGT("Altuera"); // Height + LSTR MSG_DELTA_RADIUS = _UxGT("Erradioa"); // Radius + LSTR MSG_3POINT_LEVELING = _UxGT("3 puntuko berdinketa"); // 3-Point Leveling + LSTR MSG_LINEAR_LEVELING = _UxGT("Berdinketa lineala"); // Linear Leveling + LSTR MSG_BILINEAR_LEVELING = _UxGT("Berdinketa bilinearra"); // Bilinear Leveling + LSTR MSG_UBL_LEVELING = _UxGT("Unified Bed Leveling"); // Unified Bed Leveling + LSTR MSG_MESH_LEVELING = _UxGT("Sare berdinketa"); // Mesh Leveling + LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Argiaren Distira"); // Light Brightness + LSTR MSG_DAC_PERCENT_N = _UxGT("@ Driver %"); // @ Driver % + LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("HARIZPIA ALDATU"); // PRINT PAUSED + LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("HARIZPIA KARGATU"); // LOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("HARIZPIA DESKARGATU"); // UNLOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("ALDAKETA AUKERAK:"); // RESUME OPTIONS: + LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Pita: "); // Nozzle: + LSTR MSG_KILL_HOMING_FAILED = _UxGT("Hasi. huts egin du"); // Homing Failed + LSTR MSG_LCD_PROBING_FAILED = _UxGT("Neurketak huts egin du"); // Probing Failed } namespace LanguageWide_eu { using namespace LanguageNarrow_eu; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Inprim. Zenbaketa"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Burututa"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Inprim. denbora"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Imprimatze luzeena"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Estruituta guztira"); + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Inprim. Zenbaketa"); // Print Count + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Burututa"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Inprim. denbora"); // Print Time + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Imprimatze luzeena"); // Longest Job Time + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Estruituta guztira"); // Extruded Total #endif } diff --git a/Marlin/src/lcd/language/language_fi.h b/Marlin/src/lcd/language/language_fi.h index c18c2cecc2..f8d208f34b 100644 --- a/Marlin/src/lcd/language/language_fi.h +++ b/Marlin/src/lcd/language/language_fi.h @@ -44,103 +44,99 @@ namespace LanguageNarrow_fi { constexpr uint8_t CHARSIZE = 2; LSTR LANGUAGE = _UxGT("Finnish"); - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" valmis."); - LSTR MSG_MEDIA_INSERTED = _UxGT("Kortti asetettu"); - LSTR MSG_MEDIA_REMOVED = _UxGT("Kortti poistettu"); - LSTR MSG_MAIN_MENU = _UxGT("Palaa"); - LSTR MSG_RUN_AUTOFILES = _UxGT("Automaatti"); - LSTR MSG_DISABLE_STEPPERS = _UxGT("Vapauta moottorit"); - LSTR MSG_AUTO_HOME = _UxGT("Aja referenssiin"); - - LSTR MSG_PREHEAT_1 = _UxGT("Esilämmitä ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Esilämmitä ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT("Suutin"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT("Suutin ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT(" Kaikki"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT(" Alusta"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Esilämm. ") PREHEAT_1_LABEL _UxGT(" konf"); - - LSTR MSG_PREHEAT_M = _UxGT("Esilämmitä $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Esilämmitä $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Esilä. $Suutin"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Esilä. $Suutin ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Esilä. $ Kaikki"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Esilä. $ Alusta"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Esilämm. $ konf"); - - LSTR MSG_COOLDOWN = _UxGT("Jäähdytä"); - LSTR MSG_SWITCH_PS_ON = _UxGT("Virta päälle"); - LSTR MSG_SWITCH_PS_OFF = _UxGT("Virta pois"); - LSTR MSG_EXTRUDE = _UxGT("Pursota"); - LSTR MSG_RETRACT = _UxGT("Vedä takaisin"); - LSTR MSG_MOVE_AXIS = _UxGT("Liikuta akseleita"); - LSTR MSG_PROBE_AND_LEVEL = _UxGT("Tutki ja tasoita"); - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Säädä Z askeltamalla"); - LSTR MSG_MOVE_X = _UxGT("Liikuta X"); - LSTR MSG_MOVE_Y = _UxGT("Liikuta Y"); - LSTR MSG_MOVE_Z = _UxGT("Liikuta Z"); - LSTR MSG_MOVE_N = _UxGT("Liikuta @"); - LSTR MSG_MOVE_E = _UxGT("Extruder"); - LSTR MSG_MOVE_EN = _UxGT("Extruder *"); - LSTR MSG_MOVE_N_MM = _UxGT("Liikuta $mm"); - LSTR MSG_MOVE_N_IN = _UxGT("Liikuta $in"); - LSTR MSG_MOVE_N_DEG = _UxGT("Liikuta $") LCD_STR_DEGREE; - LSTR MSG_SPEED = _UxGT("Nopeus"); - LSTR MSG_NOZZLE = _UxGT("Suutin"); - LSTR MSG_NOZZLE_N = _UxGT("Suutin ~"); - LSTR MSG_BED = _UxGT("Alusta"); - LSTR MSG_FAN_SPEED = _UxGT("Tuul. nopeus"); - LSTR MSG_FAN_SPEED_N = _UxGT("Tuul. nopeus ~"); - LSTR MSG_FLOW = _UxGT("Virtaus"); - LSTR MSG_FLOW_N = _UxGT("Virtaus ~"); - LSTR MSG_CONTROL = _UxGT("Kontrolli"); - LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); - LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Kerr"); - LSTR MSG_AUTOTEMP = _UxGT("Autotemp"); - LSTR MSG_ACC = _UxGT("Kiihtyv"); - LSTR MSG_VTRAV_MIN = _UxGT("VLiike min"); - LSTR MSG_A_RETRACT = _UxGT("A-peruuta"); - LSTR MSG_TEMPERATURE = _UxGT("Lämpötila"); - LSTR MSG_MOTION = _UxGT("Liike"); - LSTR MSG_FILAMENT = _UxGT("Filament"); - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm") SUPERSCRIPT_THREE; - LSTR MSG_CONTRAST = _UxGT("LCD kontrasti"); - LSTR MSG_STORE_EEPROM = _UxGT("Tallenna muistiin"); - LSTR MSG_LOAD_EEPROM = _UxGT("Lataa muistista"); - LSTR MSG_RESTORE_DEFAULTS = _UxGT("Palauta oletus"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Päivitä"); - LSTR MSG_INFO_SCREEN = _UxGT("Seuraa"); - LSTR MSG_PREPARE = _UxGT("Valmistele"); - LSTR MSG_TUNE = _UxGT("Säädä"); - LSTR MSG_PAUSE_PRINT = _UxGT("Keskeytä tulostus"); - LSTR MSG_RESUME_PRINT = _UxGT("Jatka tulostusta"); - LSTR MSG_STOP_PRINT = _UxGT("Pysäytä tulostus"); - LSTR MSG_MEDIA_MENU = _UxGT("Korttivalikko"); - LSTR MSG_NO_MEDIA = _UxGT("Ei korttia"); - LSTR MSG_DWELL = _UxGT("Nukkumassa..."); - LSTR MSG_USERWAIT = _UxGT("Odotet. valintaa"); - LSTR MSG_NO_MOVE = _UxGT("Ei liiketta."); - LSTR MSG_CONTROL_RETRACT = _UxGT("Vedä mm"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Va. Vedä mm"); - LSTR MSG_CONTROL_RETRACTF = _UxGT("Vedä V"); - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Z mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Unretr. mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Va. Unretr. mm"); - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Unretract V"); - LSTR MSG_AUTORETRACT = _UxGT("AutoVeto."); - LSTR MSG_DELTA_CALIBRATE = _UxGT("Delta Kalibrointi"); - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Kalibroi X"); - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Kalibroi Y"); - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Kalibroi Z"); - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Kalibroi Center"); - - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Väärä tulostin"); + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" valmis."); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = _UxGT("Kortti asetettu"); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = _UxGT("Kortti poistettu"); // (MEDIA_TYPE_EN) Removed + LSTR MSG_MAIN_MENU = _UxGT("Palaa"); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("Vapauta moottorit"); // Disable Steppers + LSTR MSG_AUTO_HOME = _UxGT("Aja referenssiin"); // Auto Home + LSTR MSG_PREHEAT_1 = _UxGT("Esilämmitä ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = _UxGT("Esilämmitä ") PREHEAT_1_LABEL " ~"; // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT("Suutin"); // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT("Suutin ~"); // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_1_ALL = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT(" Kaikki"); // Preheat (PREHEAT_1_LABEL) All + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Esilä. ") PREHEAT_1_LABEL _UxGT(" Alusta"); // Preheat (PREHEAT_1_LABEL) Bed + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Esilämm. ") PREHEAT_1_LABEL _UxGT(" konf"); // Preheat (PREHEAT_1_LABEL) Conf + LSTR MSG_PREHEAT_M = _UxGT("Esilämmitä $"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("Esilämmitä $ ~"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("Esilä. $Suutin"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("Esilä. $Suutin ~"); // Preheat $ End ~ + LSTR MSG_PREHEAT_M_ALL = _UxGT("Esilä. $ Kaikki"); // Preheat $ All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Esilä. $ Alusta"); // Preheat $ Bed + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Esilämm. $ konf"); // Preheat $ Conf + LSTR MSG_COOLDOWN = _UxGT("Jäähdytä"); // Cooldown + LSTR MSG_SWITCH_PS_ON = _UxGT("Virta päälle"); // Switch Power On + LSTR MSG_SWITCH_PS_OFF = _UxGT("Virta pois"); // Switch Power Off + LSTR MSG_EXTRUDE = _UxGT("Pursota"); // Extrude + LSTR MSG_RETRACT = _UxGT("Vedä takaisin"); // Retract + LSTR MSG_MOVE_AXIS = _UxGT("Liikuta akseleita"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("Tutki ja tasoita"); // Probe and Level + LSTR MSG_MOVE_X = _UxGT("Liikuta X"); // Move X + LSTR MSG_MOVE_Y = _UxGT("Liikuta Y"); // Move Y + LSTR MSG_MOVE_Z = _UxGT("Liikuta Z"); // Move Z + LSTR MSG_MOVE_N = _UxGT("Liikuta @"); // Move @ + LSTR MSG_MOVE_E = _UxGT("Extruder"); // Move Extruder + LSTR MSG_MOVE_EN = _UxGT("Extruder *"); // Move * + LSTR MSG_MOVE_N_MM = _UxGT("Liikuta $mm"); // Move $mm + LSTR MSG_MOVE_N_IN = _UxGT("Liikuta $in"); // Move $in + LSTR MSG_MOVE_N_DEG = _UxGT("Liikuta $") LCD_STR_DEGREE; // Move $(LCD_STR_DEGREE) + LSTR MSG_SPEED = _UxGT("Nopeus"); // Speed + LSTR MSG_NOZZLE = _UxGT("Suutin"); // Nozzle + LSTR MSG_NOZZLE_N = _UxGT("Suutin ~"); // Nozzle ~ + LSTR MSG_BED = _UxGT("Alusta"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("Tuul. nopeus"); // Fan Speed + LSTR MSG_FAN_SPEED_N = _UxGT("Tuul. nopeus ~"); // Fan Speed ~ + LSTR MSG_FLOW = _UxGT("Virtaus"); // Flow + LSTR MSG_FLOW_N = _UxGT("Virtaus ~"); // Flow ~ + LSTR MSG_CONTROL = _UxGT("Kontrolli"); // Control + LSTR MSG_AUTOTEMP = _UxGT("Autotemp"); // Autotemp + LSTR MSG_ACC = _UxGT("Kiihtyv"); // Accel + LSTR MSG_VTRAV_MIN = _UxGT("VLiike min"); // Min Travel Speed + LSTR MSG_A_RETRACT = _UxGT("A-peruuta"); // Retract Accel + LSTR MSG_TEMPERATURE = _UxGT("Lämpötila"); // Temperature + LSTR MSG_MOTION = _UxGT("Liike"); // Motion + LSTR MSG_FILAMENT = _UxGT("Filament"); // Filament + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm") SUPERSCRIPT_THREE; // E in mm(SUPERSCRIPT_THREE) + LSTR MSG_CONTRAST = _UxGT("LCD kontrasti"); // LCD Contrast + LSTR MSG_STORE_EEPROM = _UxGT("Tallenna muistiin"); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("Lataa muistista"); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("Palauta oletus"); // Restore Defaults + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Päivitä"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT("Seuraa"); // Info Screen + LSTR MSG_PREPARE = _UxGT("Valmistele"); // Prepare + LSTR MSG_TUNE = _UxGT("Säädä"); // Tune + LSTR MSG_PAUSE_PRINT = _UxGT("Keskeytä tulostus"); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("Jatka tulostusta"); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("Pysäytä tulostus"); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("Korttivalikko"); // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = _UxGT("Ei korttia"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_DWELL = _UxGT("Nukkumassa..."); // Sleep... + LSTR MSG_USERWAIT = _UxGT("Odotet. valintaa"); // Click to Resume... + LSTR MSG_NO_MOVE = _UxGT("Ei liiketta."); // No Move. + LSTR MSG_CONTROL_RETRACT = _UxGT("Vedä mm"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Va. Vedä mm"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACTF = _UxGT("Vedä V"); // Retract V + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Z mm"); // Hop mm + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Unretr. mm"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Va. Unretr. mm"); // S Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Unretract V"); // Unretract V + LSTR MSG_AUTORETRACT = _UxGT("AutoVeto."); // Auto-Retract + LSTR MSG_RUN_AUTOFILES = _UxGT("Automaatti"); // Run Autofiles + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Säädä Z askeltamalla"); // Babystep Probe Z + LSTR MSG_DELTA_CALIBRATE = _UxGT("Delta Kalibrointi"); // Delta Calibration + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Kalibroi X"); // Calibrate X + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Kalibroi Y"); // Calibrate Y + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Kalibroi Z"); // Calibrate Z + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Kalibroi Center"); // Calibrate Center + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); // (LCD_STR_THERMOMETER) Min + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); // (LCD_STR_THERMOMETER) Max + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Kerr"); // (LCD_STR_THERMOMETER) Fact + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Väärä tulostin"); // INCORRECT PRINTER } namespace LanguageWide_fi { using namespace LanguageNarrow_fi; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 #endif } diff --git a/Marlin/src/lcd/language/language_fr.h b/Marlin/src/lcd/language/language_fr.h index f2be96163e..8cc8a378bb 100644 --- a/Marlin/src/lcd/language/language_fr.h +++ b/Marlin/src/lcd/language/language_fr.h @@ -44,607 +44,571 @@ namespace LanguageNarrow_fr { constexpr uint8_t CHARSIZE = 2; LSTR LANGUAGE = _UxGT("Français"); - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" prête."); - LSTR MSG_YES = _UxGT("Oui"); - LSTR MSG_NO = _UxGT("Non"); - LSTR MSG_BACK = _UxGT("Retour"); - - LSTR MSG_MEDIA_ABORTING = _UxGT("Annulation..."); - LSTR MSG_MEDIA_INSERTED = _UxGT("Média inséré"); - LSTR MSG_MEDIA_REMOVED = _UxGT("Média retiré"); - LSTR MSG_MEDIA_READ_ERROR = _UxGT("Err lecture média"); - LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB débranché"); - LSTR MSG_USB_FD_USB_FAILED = _UxGT("Erreur média USB"); - - LSTR MSG_LCD_ENDSTOPS = _UxGT("Butées"); - LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Butées SW"); - LSTR MSG_MAIN_MENU = _UxGT("Menu principal"); - LSTR MSG_ADVANCED_SETTINGS = _UxGT("Config. avancée"); - LSTR MSG_CONFIGURATION = _UxGT("Configuration"); - LSTR MSG_DISABLE_STEPPERS = _UxGT("Arrêter moteurs"); - LSTR MSG_DEBUG_MENU = _UxGT("Menu debug"); - LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Test barre progress."); - LSTR MSG_HOMING = _UxGT("Origine"); - LSTR MSG_AUTO_HOME = _UxGT("Origine auto"); - LSTR MSG_AUTO_HOME_N = _UxGT("Origine @ auto"); - LSTR MSG_AUTO_HOME_X = _UxGT("Origine X auto"); - LSTR MSG_AUTO_HOME_Y = _UxGT("Origine Y auto"); - LSTR MSG_AUTO_HOME_Z = _UxGT("Origine Z auto"); - LSTR MSG_AUTO_Z_ALIGN = _UxGT("Align. Z auto"); - LSTR MSG_LEVEL_BED_HOMING = _UxGT("Origine XYZ..."); - LSTR MSG_LEVEL_BED_WAITING = _UxGT("Clic pour commencer"); - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Point suivant"); - LSTR MSG_LEVEL_BED_DONE = _UxGT("Mise à niveau OK!"); - LSTR MSG_Z_FADE_HEIGHT = _UxGT("Hauteur lissée"); - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Régl. décal origine"); - LSTR MSG_HOME_OFFSET_X = _UxGT("Décal. origine X"); // DWIN - LSTR MSG_HOME_OFFSET_Y = _UxGT("Décal. origine Y"); // DWIN - LSTR MSG_HOME_OFFSET_Z = _UxGT("Décal. origine Z"); // DWIN - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Décalages appliqués"); - LSTR MSG_TRAMMING_WIZARD = _UxGT("Assistant Molettes"); - LSTR MSG_SELECT_ORIGIN = _UxGT("Molette du lit"); // Not a selection of the origin - LSTR MSG_LAST_VALUE_SP = _UxGT("Ecart origine "); - - LSTR MSG_PREHEAT_1 = _UxGT("Préchauffage ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Préchauffage ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" buse"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" buse ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" Tout"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" lit"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Régler préch. ") PREHEAT_1_LABEL; - - LSTR MSG_PREHEAT_M = _UxGT("Préchauffage $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Préchauffage $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Préch. $ buse"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Préch. $ buse ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Préch. $ Tout"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Préch. $ lit"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Régler préch. $"); - - LSTR MSG_PREHEAT_CUSTOM = _UxGT("Préchauf. perso"); - LSTR MSG_COOLDOWN = _UxGT("Refroidir"); - LSTR MSG_LASER_MENU = _UxGT("Contrôle Laser"); - LSTR MSG_LASER_POWER = _UxGT("Puissance"); - LSTR MSG_SPINDLE_REVERSE = _UxGT("Inverser broches"); - LSTR MSG_SWITCH_PS_ON = _UxGT("Allumer alim."); - LSTR MSG_SWITCH_PS_OFF = _UxGT("Eteindre alim."); - LSTR MSG_EXTRUDE = _UxGT("Extrusion"); - LSTR MSG_RETRACT = _UxGT("Rétractation"); - LSTR MSG_MOVE_AXIS = _UxGT("Déplacer un axe"); - LSTR MSG_PROBE_AND_LEVEL = _UxGT("Mesure et Niv."); - LSTR MSG_BED_LEVELING = _UxGT("Régler Niv. lit"); - LSTR MSG_LEVEL_BED = _UxGT("Niveau du lit"); - LSTR MSG_BED_TRAMMING = _UxGT("Niveau des coins"); - LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Relever le coin jusqu'à la sonde"); - LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Coins dans la tolérance. Niveau lit."); - LSTR MSG_NEXT_CORNER = _UxGT("Coin suivant"); - LSTR MSG_MESH_EDITOR = _UxGT("Modif. maille"); // 13 car. max - LSTR MSG_EDIT_MESH = _UxGT("Modifier grille"); - LSTR MSG_EDITING_STOPPED = _UxGT("Modification arrêtée"); - LSTR MSG_PROBING_POINT = _UxGT("Mesure point"); - LSTR MSG_MESH_X = _UxGT("Index X"); - LSTR MSG_MESH_Y = _UxGT("Index Y"); - LSTR MSG_MESH_EDIT_Z = _UxGT("Valeur Z"); - LSTR MSG_CUSTOM_COMMANDS = _UxGT("Commandes perso"); - - LSTR MSG_LCD_TILTING_MESH = _UxGT("Mesure point"); - LSTR MSG_M48_TEST = _UxGT("Ecart sonde Z M48"); - LSTR MSG_M48_DEVIATION = _UxGT("Ecart"); - LSTR MSG_M48_POINT = _UxGT("Point M48"); - LSTR MSG_IDEX_MENU = _UxGT("Mode IDEX"); - LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-Park"); - LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplication"); - LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Copie miroir"); - LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Contrôle complet"); - LSTR MSG_OFFSETS_MENU = _UxGT("Offsets Outil"); - LSTR MSG_HOTEND_OFFSET_Z = _UxGT("Buse 2 Z"); - LSTR MSG_HOTEND_OFFSET_N = _UxGT("Buse 2 @"); - LSTR MSG_G26_HEATING_BED = _UxGT("G26: Chauffage du lit"); - LSTR MSG_G26_HEATING_NOZZLE = _UxGT("Buse en chauffe..."); - LSTR MSG_G26_MANUAL_PRIME = _UxGT("Amorce manuelle..."); - LSTR MSG_G26_FIXED_LENGTH = _UxGT("Amorce longueur fixe"); - LSTR MSG_G26_PRIME_DONE = _UxGT("Amorce terminée"); - LSTR MSG_G26_CANCELED = _UxGT("G26 annulé"); - LSTR MSG_G26_LEAVING = _UxGT("Sortie G26"); - LSTR MSG_UBL_DOING_G29 = _UxGT("G29 en cours"); - LSTR MSG_UBL_TOOLS = _UxGT("Outils UBL"); - LSTR MSG_UBL_MANUAL_MESH = _UxGT("Maillage manuel"); - LSTR MSG_UBL_BC_INSERT = _UxGT("Poser câle & mesurer"); - LSTR MSG_UBL_BC_INSERT2 = _UxGT("Mesure"); - LSTR MSG_UBL_BC_REMOVE = _UxGT("ôter et mesurer lit"); - LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Aller au suivant"); - LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Température lit"); - LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Température lit"); - LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Température buse"); - LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Température buse"); - LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Modif. grille perso"); - LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Réglage fin"); - LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Terminer"); - LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Créer la grille"); - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Créer grille $"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Impr. grille $"); - LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Créer grille ..."); - LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Mesure à froid"); - LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Ajuster haut. couche"); - LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Hauteur (x0.1mm)"); - LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Vérifier grille"); - LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Impr. grille ..."); - LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Continuer grille"); - LSTR MSG_UBL_MESH_LEVELING = _UxGT("Niveau par mailles"); - LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("Niveau à 3 points"); - LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Niveau par grille"); - LSTR MSG_UBL_MESH_LEVEL = _UxGT("Effectuer mesures"); - LSTR MSG_UBL_SIDE_POINTS = _UxGT("Points latéraux"); - LSTR MSG_UBL_MAP_TYPE = _UxGT("Type de carte"); - LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Exporter grille"); - LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Export pour hôte"); - LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Export en CSV"); - LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Export sauvegarde"); - LSTR MSG_UBL_INFO_UBL = _UxGT("Infos debug UBL"); - LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Nombre de points"); - LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Remplissage manuel"); - LSTR MSG_UBL_SMART_FILLIN = _UxGT("Remplissage auto"); - LSTR MSG_UBL_FILLIN_MESH = _UxGT("Remplissage grille"); - LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Tout effacer"); - LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Effacer le + près"); - LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Réglage fin (tous)"); - LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Réglage fin + près"); - LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Stockage grille"); - LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Slot mémoire"); - LSTR MSG_UBL_LOAD_MESH = _UxGT("Charger la grille"); - LSTR MSG_UBL_SAVE_MESH = _UxGT("Stocker la grille"); - LSTR MSG_MESH_LOADED = _UxGT("Grille %i chargée"); - LSTR MSG_MESH_SAVED = _UxGT("Grille %i enreg."); - LSTR MSG_UBL_NO_STORAGE = _UxGT("Pas de mémoire"); - LSTR MSG_UBL_SAVE_ERROR = _UxGT("Err: Enreg. UBL"); - LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Err: Ouvrir UBL"); - LSTR MSG_UBL_Z_OFFSET = _UxGT("Z-Offset: "); - LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Décal. Z arrêté"); - LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("Assistant UBL"); - LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Mesure à froid"); - LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2.Compléter auto."); - LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Vérifier grille"); - LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Réglage fin"); - LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Vérifier grille"); - LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Réglage fin"); - LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Stocker grille"); - - LSTR MSG_LED_CONTROL = _UxGT("Contrôle LED"); - LSTR MSG_LIGHTS = _UxGT("Lumière"); - LSTR MSG_LIGHT_N = _UxGT("Lumière #{"); - LSTR MSG_LED_PRESETS = _UxGT("Préregl. LED"); - LSTR MSG_SET_LEDS_RED = _UxGT("Rouge"); - LSTR MSG_SET_LEDS_ORANGE = _UxGT("Orange"); - LSTR MSG_SET_LEDS_YELLOW = _UxGT("Jaune"); - LSTR MSG_SET_LEDS_GREEN = _UxGT("Vert"); - LSTR MSG_SET_LEDS_BLUE = _UxGT("Bleu"); - LSTR MSG_SET_LEDS_INDIGO = _UxGT("Indigo"); - LSTR MSG_SET_LEDS_VIOLET = _UxGT("Violet"); - LSTR MSG_SET_LEDS_WHITE = _UxGT("Blanc"); - LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Defaut"); - LSTR MSG_CUSTOM_LEDS = _UxGT("LEDs perso."); - LSTR MSG_INTENSITY_R = _UxGT("Intensité rouge"); - LSTR MSG_INTENSITY_G = _UxGT("Intensité vert"); - LSTR MSG_INTENSITY_B = _UxGT("Intensité bleu"); - LSTR MSG_INTENSITY_W = _UxGT("Intensité blanc"); - LSTR MSG_LED_BRIGHTNESS = _UxGT("Luminosité"); - - LSTR MSG_MOVING = _UxGT("Déplacement..."); - LSTR MSG_FREE_XY = _UxGT("Débloquer XY"); - LSTR MSG_MOVE_X = _UxGT("Déplacer X"); - LSTR MSG_MOVE_Y = _UxGT("Déplacer Y"); - LSTR MSG_MOVE_Z = _UxGT("Déplacer Z"); - LSTR MSG_MOVE_N = _UxGT("Déplacer @"); - LSTR MSG_MOVE_E = _UxGT("Extruder"); - LSTR MSG_MOVE_EN = _UxGT("Extruder *"); - LSTR MSG_HOTEND_TOO_COLD = _UxGT("Buse trop froide"); - LSTR MSG_MOVE_N_MM = _UxGT("Déplacer $mm"); - LSTR MSG_MOVE_N_IN = _UxGT("Déplacer $in"); - LSTR MSG_MOVE_N_DEG = _UxGT("Déplacer $") LCD_STR_DEGREE; - LSTR MSG_SPEED = _UxGT("Vitesse"); - LSTR MSG_MESH_Z_OFFSET = _UxGT("Lit Z"); - LSTR MSG_NOZZLE = _UxGT("Buse"); - LSTR MSG_NOZZLE_N = _UxGT("Buse ~"); - LSTR MSG_BED = _UxGT("Lit"); - LSTR MSG_CHAMBER = _UxGT("Caisson"); - LSTR MSG_FAN_SPEED = _UxGT("Vit. ventil. "); // 15 car. max - LSTR MSG_FAN_SPEED_N = _UxGT("Vit. ventil. ~"); - LSTR MSG_STORED_FAN_N = _UxGT("Vit. enreg. ~"); - LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Extra ventil. "); - LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Extra ventil. ~"); - - LSTR MSG_FLOW = _UxGT("Flux"); - LSTR MSG_FLOW_N = _UxGT("Flux ~"); - LSTR MSG_CONTROL = _UxGT("Contrôler"); - LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); - LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Facteur"); - LSTR MSG_AUTOTEMP = _UxGT("Temp. Auto."); - LSTR MSG_LCD_ON = _UxGT("Marche"); - LSTR MSG_LCD_OFF = _UxGT("Arrêt"); - - LSTR MSG_PID_AUTOTUNE = _UxGT("PID Autotune"); - LSTR MSG_PID_AUTOTUNE_E = _UxGT("PID Autotune *"); - LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("Tuning PID terminé"); - LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Echec Autotune! E incorrect"); - LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Echec Autotune! Temp. trop haute"); - LSTR MSG_PID_TIMEOUT = _UxGT("Echec Autotune! Opér. expirée"); - - LSTR MSG_SELECT_E = _UxGT("Sélectionner *"); - LSTR MSG_ACC = _UxGT("Accélération"); - LSTR MSG_JERK = _UxGT("Jerk"); - LSTR MSG_VA_JERK = _UxGT("V") STR_A _UxGT(" jerk"); - LSTR MSG_VB_JERK = _UxGT("V") STR_B _UxGT(" jerk"); - LSTR MSG_VC_JERK = _UxGT("V") STR_C _UxGT(" jerk"); - LSTR MSG_VN_JERK = _UxGT("V@ jerk"); - LSTR MSG_VE_JERK = _UxGT("Ve jerk"); - LSTR MSG_MAX_SPEED = _UxGT("Max Vélocité"); - LSTR MSG_VMAX_A = _UxGT("Vit. Max ") STR_A; - LSTR MSG_VMAX_B = _UxGT("Vit. Max ") STR_B; - LSTR MSG_VMAX_C = _UxGT("Vit. Max ") STR_C; - LSTR MSG_VMAX_N = _UxGT("Vit. Max @"); - LSTR MSG_VMAX_E = _UxGT("Vit. Max E"); - LSTR MSG_VMAX_EN = _UxGT("Vit. Max *"); - LSTR MSG_JUNCTION_DEVIATION = _UxGT("Déviat. jonct."); - LSTR MSG_VMIN = _UxGT("Vit. Min"); - LSTR MSG_VTRAV_MIN = _UxGT("Vmin course"); - LSTR MSG_ACCELERATION = _UxGT("Accélération"); - LSTR MSG_AMAX_A = _UxGT("Max Accél. ") STR_A; - LSTR MSG_AMAX_B = _UxGT("Max Accél. ") STR_B; - LSTR MSG_AMAX_C = _UxGT("Max Accél. ") STR_C; - LSTR MSG_AMAX_N = _UxGT("Max Accél. @"); - LSTR MSG_AMAX_E = _UxGT("Max Accél. E"); - LSTR MSG_AMAX_EN = _UxGT("Max Accél. *"); - LSTR MSG_A_RETRACT = _UxGT("Acc.rétraction"); - LSTR MSG_A_TRAVEL = _UxGT("Acc.course"); - LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("Fréquence max"); - LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("Vitesse min"); - LSTR MSG_STEPS_PER_MM = _UxGT("Pas/mm"); - LSTR MSG_A_STEPS = STR_A _UxGT(" pas/mm"); - LSTR MSG_B_STEPS = STR_B _UxGT(" pas/mm"); - LSTR MSG_C_STEPS = STR_C _UxGT(" pas/mm"); - LSTR MSG_N_STEPS = _UxGT("@ pas/mm"); - LSTR MSG_E_STEPS = _UxGT("E pas/mm"); - LSTR MSG_EN_STEPS = _UxGT("* pas/mm"); - LSTR MSG_TEMPERATURE = _UxGT("Température"); - LSTR MSG_MOTION = _UxGT("Mouvement"); - LSTR MSG_FILAMENT = _UxGT("Filament"); - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E en mm") SUPERSCRIPT_THREE; - LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("Limite en mm") SUPERSCRIPT_THREE; - LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("Limite *"); - LSTR MSG_FILAMENT_DIAM = _UxGT("Diamètre fil."); - LSTR MSG_FILAMENT_DIAM_E = _UxGT("Diamètre fil. *"); - LSTR MSG_FILAMENT_UNLOAD = _UxGT("Retrait mm"); - LSTR MSG_FILAMENT_LOAD = _UxGT("Charger mm"); - LSTR MSG_ADVANCE_K = _UxGT("Avance K"); - LSTR MSG_ADVANCE_K_E = _UxGT("Avance K *"); - LSTR MSG_BRIGHTNESS = _UxGT("Luminosité LCD"); - LSTR MSG_CONTRAST = _UxGT("Contraste LCD"); - LSTR MSG_SCREEN_TIMEOUT = _UxGT("Veille LCD (m)"); - LSTR MSG_BRIGHTNESS_OFF = _UxGT("Éteindre l'écran LCD"); - LSTR MSG_STORE_EEPROM = _UxGT("Enregistrer config."); - LSTR MSG_LOAD_EEPROM = _UxGT("Charger config."); - LSTR MSG_RESTORE_DEFAULTS = _UxGT("Restaurer défauts"); - LSTR MSG_INIT_EEPROM = _UxGT("Initialiser EEPROM"); - LSTR MSG_SETTINGS_STORED = _UxGT("Config. enregistrée"); - LSTR MSG_MEDIA_UPDATE = _UxGT("MaJ Firmware SD"); - LSTR MSG_RESET_PRINTER = _UxGT("RaZ imprimante"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Actualiser"); - LSTR MSG_INFO_SCREEN = _UxGT("Surveiller"); - LSTR MSG_PREPARE = _UxGT("Préparer"); - LSTR MSG_TUNE = _UxGT("Régler"); - LSTR MSG_START_PRINT = _UxGT("Démarrer impression"); - LSTR MSG_BUTTON_NEXT = _UxGT("Suivant"); - LSTR MSG_BUTTON_INIT = _UxGT("Init."); - LSTR MSG_BUTTON_STOP = _UxGT("Stop"); - LSTR MSG_BUTTON_PRINT = _UxGT("Imprimer"); - LSTR MSG_BUTTON_RESET = _UxGT("Reset"); - LSTR MSG_BUTTON_IGNORE = _UxGT("Ignorer"); - LSTR MSG_BUTTON_CANCEL = _UxGT("Annuler"); - LSTR MSG_BUTTON_DONE = _UxGT("Terminé"); - LSTR MSG_BUTTON_BACK = _UxGT("Retour"); - LSTR MSG_BUTTON_PROCEED = _UxGT("Procéder"); - LSTR MSG_BUTTON_SKIP = _UxGT("Passer"); - LSTR MSG_PAUSING = _UxGT("Mise en pause..."); - LSTR MSG_PAUSE_PRINT = _UxGT("Pause impression"); - LSTR MSG_RESUME_PRINT = _UxGT("Reprendre impr."); - LSTR MSG_STOP_PRINT = _UxGT("Arrêter impr."); - LSTR MSG_PRINTING_OBJECT = _UxGT("Impression objet"); - LSTR MSG_CANCEL_OBJECT = _UxGT("Annuler objet"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Annuler objet {"); - LSTR MSG_OUTAGE_RECOVERY = _UxGT("Récup. coup."); - LSTR MSG_MEDIA_MENU = _UxGT("Impression SD"); - LSTR MSG_NO_MEDIA = _UxGT("Pas de média"); - LSTR MSG_DWELL = _UxGT("Repos..."); - LSTR MSG_USERWAIT = _UxGT("Attente utilis."); - LSTR MSG_PRINT_PAUSED = _UxGT("Impr. en pause"); - LSTR MSG_PRINTING = _UxGT("Impression"); - LSTR MSG_PRINT_ABORTED = _UxGT("Impr. annulée"); - LSTR MSG_NO_MOVE = _UxGT("Moteurs bloqués"); - LSTR MSG_KILLED = _UxGT("KILLED"); - LSTR MSG_STOPPED = _UxGT("STOPPÉ"); - LSTR MSG_CONTROL_RETRACT = _UxGT("Rétractation mm"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Ech. rétr. mm"); - LSTR MSG_CONTROL_RETRACTF = _UxGT("Vit. rétract") LCD_STR_DEGREE; - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Saut Z mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Rét.reprise mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Ech.reprise mm"); - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("V.rét. reprise"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("V.éch. reprise"); - LSTR MSG_AUTORETRACT = _UxGT("Rétraction auto"); - LSTR MSG_TOOL_CHANGE = _UxGT("Changement outil"); - LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Augmenter Z"); - LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Vitesse primaire"); - LSTR MSG_SINGLENOZZLE_WIPE_RETRACT = _UxGT("Purge Retract"); - LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Vitesse rétract") LCD_STR_DEGREE; - LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Garer Extrudeur"); - LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Vitesse reprise"); - LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Vit. ventil."); - LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Temps ventil."); - LSTR MSG_TOOL_MIGRATION_ON = _UxGT("Auto ON"); - LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("Auto OFF"); - LSTR MSG_TOOL_MIGRATION = _UxGT("Migration d'outil"); - LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("Migration auto"); - LSTR MSG_TOOL_MIGRATION_END = _UxGT("Extrudeur Final"); - LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("Migrer vers *"); - LSTR MSG_NOZZLE_STANDBY = _UxGT("Attente buse"); - LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Longueur retrait"); - LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Longueur Extra"); - LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Longueur de purge"); - LSTR MSG_FILAMENTCHANGE = _UxGT("Changer filament"); - LSTR MSG_FILAMENTCHANGE_E = _UxGT("Changer filament *"); - LSTR MSG_FILAMENTLOAD = _UxGT("Charger filament"); - LSTR MSG_FILAMENTLOAD_E = _UxGT("Charger filament *"); - LSTR MSG_FILAMENTUNLOAD = _UxGT("Retrait filament"); - LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Retrait filament *"); - LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Retirer tout"); - - LSTR MSG_ATTACH_MEDIA = _UxGT("Charger le SD"); - LSTR MSG_ATTACH_SD = _UxGT("Charger le SD"); - LSTR MSG_ATTACH_USB = _UxGT("Charger le USB"); - LSTR MSG_CHANGE_MEDIA = _UxGT("Actualiser média"); - LSTR MSG_RELEASE_MEDIA = _UxGT("Retirer le média"); - LSTR MSG_RUN_AUTOFILES = _UxGT("Exéc. auto.gcode"); - - LSTR MSG_ZPROBE_OUT = _UxGT("Sonde Z hors lit"); - LSTR MSG_SKEW_FACTOR = _UxGT("Facteur écart"); - LSTR MSG_BLTOUCH = _UxGT("BLTouch"); - LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Self-Test"); - LSTR MSG_BLTOUCH_RESET = _UxGT("Reset"); - LSTR MSG_BLTOUCH_STOW = _UxGT("Ranger"); - LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Déployer"); - LSTR MSG_BLTOUCH_SW_MODE = _UxGT("Mode SW"); - LSTR MSG_BLTOUCH_5V_MODE = _UxGT("Mode 5V"); - LSTR MSG_BLTOUCH_OD_MODE = _UxGT("Mode OD"); - LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("Appliquer Mode"); - LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Mise en 5V"); - LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Mise en OD"); - LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Afficher Mode"); - LSTR MSG_TOUCHMI_PROBE = _UxGT("TouchMI"); - LSTR MSG_TOUCHMI_INIT = _UxGT("Init. TouchMI"); - LSTR MSG_TOUCHMI_ZTEST = _UxGT("Test décalage Z"); - LSTR MSG_TOUCHMI_SAVE = _UxGT("Sauvegarde"); - LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("Déployer TouchMI"); - LSTR MSG_MANUAL_DEPLOY = _UxGT("Déployer Sonde Z"); - LSTR MSG_MANUAL_STOW = _UxGT("Ranger Sonde Z"); - LSTR MSG_HOME_FIRST = _UxGT("Origine %s Premier"); - LSTR MSG_ZPROBE_OFFSETS = _UxGT("Position sonde Z"); - LSTR MSG_ZPROBE_XOFFSET = _UxGT("Décalage X"); - LSTR MSG_ZPROBE_YOFFSET = _UxGT("Décalage Y"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Décalage Z"); - LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Décalage @"); - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Babystep sonde Z"); - LSTR MSG_BABYSTEP_X = _UxGT("Babystep X"); - LSTR MSG_BABYSTEP_Y = _UxGT("Babystep Y"); - LSTR MSG_BABYSTEP_Z = _UxGT("Babystep Z"); - LSTR MSG_BABYSTEP_N = _UxGT("Babystep @"); - LSTR MSG_BABYSTEP_TOTAL = _UxGT("Total"); - LSTR MSG_ENDSTOP_ABORT = _UxGT("Butée abandon"); - LSTR MSG_ERR_HEATING_FAILED = _UxGT("Err de chauffe"); - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Err TEMP. REDONDANTE"); - LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("Err THERMIQUE"); - LSTR MSG_ERR_MAXTEMP = _UxGT("Err TEMP. MAX"); - LSTR MSG_ERR_MINTEMP = _UxGT("Err TEMP. MIN"); - - LSTR MSG_HALTED = _UxGT("IMPR. STOPPÉE"); - LSTR MSG_PLEASE_RESET = _UxGT("Redémarrer SVP"); - - LSTR MSG_HEATING = _UxGT("en chauffe..."); - LSTR MSG_COOLING = _UxGT("Refroidissement"); - LSTR MSG_BED_HEATING = _UxGT("Lit en chauffe..."); - LSTR MSG_BED_COOLING = _UxGT("Refroid. du lit..."); - LSTR MSG_PROBE_HEATING = _UxGT("Probe en chauffe..."); - LSTR MSG_PROBE_COOLING = _UxGT("Refroid. Probe..."); - LSTR MSG_CHAMBER_HEATING = _UxGT("Chauffe caisson..."); - LSTR MSG_CHAMBER_COOLING = _UxGT("Refroid. caisson..."); - LSTR MSG_DELTA_CALIBRATE = _UxGT("Calibration Delta"); - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Calibrer X"); - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Calibrer Y"); - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Calibrer Z"); - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibrer centre"); - LSTR MSG_DELTA_SETTINGS = _UxGT("Réglages Delta"); - LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Calibration Auto"); - LSTR MSG_DELTA_DIAG_ROD = _UxGT("Diagonale"); - LSTR MSG_DELTA_HEIGHT = _UxGT("Hauteur"); - LSTR MSG_DELTA_RADIUS = _UxGT("Rayon"); - - LSTR MSG_INFO_MENU = _UxGT("Infos imprimante"); - LSTR MSG_INFO_PRINTER_MENU = _UxGT("Infos imprimante"); - LSTR MSG_3POINT_LEVELING = _UxGT("Niveau à 3 points"); - LSTR MSG_LINEAR_LEVELING = _UxGT("Niveau linéaire"); - LSTR MSG_BILINEAR_LEVELING = _UxGT("Niveau bilinéaire"); - LSTR MSG_UBL_LEVELING = _UxGT("Niveau lit unifié"); - LSTR MSG_MESH_LEVELING = _UxGT("Niveau par grille"); - LSTR MSG_MESH_DONE = _UxGT("Niveau terminé"); - LSTR MSG_INFO_STATS_MENU = _UxGT("Stats. imprimante"); - LSTR MSG_INFO_BOARD_MENU = _UxGT("Infos carte"); - LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Thermistances"); - LSTR MSG_INFO_EXTRUDERS = _UxGT("Extrudeurs"); - LSTR MSG_INFO_BAUDRATE = _UxGT("Bauds"); - LSTR MSG_INFO_PROTOCOL = _UxGT("Protocole"); - LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Protection inactive"); - LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Protection active"); - LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Hotend Idle Timeout"); - - LSTR MSG_CASE_LIGHT = _UxGT("Lumière caisson"); - LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Luminosité"); - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Imprimante incorrecte"); - - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Impressions"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Terminées"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("+ long"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Filament"); - - LSTR MSG_INFO_MIN_TEMP = _UxGT("Temp Min"); - LSTR MSG_INFO_MAX_TEMP = _UxGT("Temp Max"); - LSTR MSG_INFO_PSU = _UxGT("Alim."); - LSTR MSG_DRIVE_STRENGTH = _UxGT("Puiss. moteur "); - LSTR MSG_DAC_PERCENT_N = _UxGT("Driver @ %"); - LSTR MSG_DAC_EEPROM_WRITE = _UxGT("DAC EEPROM sauv."); - LSTR MSG_ERROR_TMC = _UxGT("ERREUR CONNEXION TMC"); - - LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("CHANGER FILAMENT"); - LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("IMPR. PAUSE"); - LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("CHARGER FIL"); - LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("DECHARGER FIL"); - LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("OPTIONS REPRISE:"); - LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Purger encore"); - LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Reprendre impr."); - LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Buse: "); - LSTR MSG_RUNOUT_SENSOR = _UxGT("Capteur fil."); - LSTR MSG_KILL_HOMING_FAILED = _UxGT("Echec origine"); - LSTR MSG_LCD_PROBING_FAILED = _UxGT("Echec sonde"); - - LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("MAJ firmware MMU!!"); - LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("CHOISIR FILAMENT"); - LSTR MSG_MMU2_MENU = _UxGT("MMU"); - LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU ne répond plus"); - LSTR MSG_MMU2_RESUME = _UxGT("Continuer Imp. MMU"); - LSTR MSG_MMU2_RESUMING = _UxGT("Reprise MMU..."); - LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("Charge dans MMU"); - LSTR MSG_MMU2_LOAD_ALL = _UxGT("Charger tous dans MMU"); - LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Charger dans buse"); - LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("Ejecter fil. du MMU"); - LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("Ejecter fil. ~"); - LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Retrait filament"); - LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Chargem. fil. %i..."); - LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Ejection fil..."); - LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Retrait fil...."); - LSTR MSG_MMU2_ALL = _UxGT("Tous"); - LSTR MSG_MMU2_FILAMENT_N = _UxGT("Filament ~"); - LSTR MSG_MMU2_RESET = _UxGT("Réinit. MMU"); - LSTR MSG_MMU2_RESETTING = _UxGT("Réinit. MMU..."); - LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Retrait, click"); - - LSTR MSG_MIX_COMPONENT_N = _UxGT("Composante {"); - LSTR MSG_MIXER = _UxGT("Mixeur"); - LSTR MSG_GRADIENT = _UxGT("Dégradé"); - LSTR MSG_FULL_GRADIENT = _UxGT("Dégradé complet"); - LSTR MSG_TOGGLE_MIX = _UxGT("Toggle mix"); - LSTR MSG_CYCLE_MIX = _UxGT("Cycle mix"); - LSTR MSG_GRADIENT_MIX = _UxGT("Mix dégradé"); - LSTR MSG_REVERSE_GRADIENT = _UxGT("Inverser dégradé"); - LSTR MSG_ACTIVE_VTOOL = _UxGT("Active V-tool"); - LSTR MSG_START_VTOOL = _UxGT("Début V-tool"); - LSTR MSG_END_VTOOL = _UxGT(" Fin V-tool"); - LSTR MSG_GRADIENT_ALIAS = _UxGT("Alias V-tool"); - LSTR MSG_RESET_VTOOLS = _UxGT("Réinit. V-tools"); - LSTR MSG_COMMIT_VTOOL = _UxGT("Valider Mix V-tool"); - LSTR MSG_VTOOLS_RESET = _UxGT("V-tools réinit. ok"); - LSTR MSG_START_Z = _UxGT("Début Z:"); - LSTR MSG_END_Z = _UxGT(" Fin Z:"); - LSTR MSG_GAMES = _UxGT("Jeux"); - LSTR MSG_BRICKOUT = _UxGT("Casse-briques"); - LSTR MSG_INVADERS = _UxGT("Invaders"); - LSTR MSG_SNAKE = _UxGT("Sn4k3"); - LSTR MSG_MAZE = _UxGT("Labyrinthe"); - - LSTR MSG_BAD_PAGE = _UxGT("Erreur index page"); - LSTR MSG_BAD_PAGE_SPEED = _UxGT("Erreur vitesse page"); - - // Up to 2 lines allowed - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Clic pour continuer")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Patience...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Insérer fil.")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Chauffer ?")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Chauffage...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Retrait fil...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Chargement...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Purge...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Terminer ?")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Reprise...")); - - LSTR MSG_TMC_CURRENT = _UxGT("Courant driver"); - LSTR MSG_TMC_HYBRID_THRS = _UxGT("Seuil hybride"); - LSTR MSG_TMC_HOMING_THRS = _UxGT("Home sans capteur"); - LSTR MSG_TMC_STEPPING_MODE = _UxGT("Mode pas à pas"); - LSTR MSG_TMC_STEALTHCHOP = _UxGT("StealthChop"); - - LSTR MSG_SERVICE_RESET = _UxGT("Réinit."); - LSTR MSG_SERVICE_IN = _UxGT(" dans:"); - LSTR MSG_BACKLASH_CORRECTION = _UxGT("Correction"); - LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Lissage"); - - LSTR MSG_LEVEL_X_AXIS = _UxGT("Niveau axe X"); - LSTR MSG_AUTO_CALIBRATE = _UxGT("Etalon. auto."); - LSTR MSG_FTDI_HEATER_TIMEOUT = _UxGT("En protection, temp. réduite. Ok pour rechauffer et continuer."); - LSTR MSG_HEATER_TIMEOUT = _UxGT("En protection"); - LSTR MSG_REHEAT = _UxGT("Chauffer"); - LSTR MSG_REHEATING = _UxGT("Réchauffe..."); - - LSTR MSG_PROBE_WIZARD = _UxGT("Assistant Sonde Z"); - LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Mesure référence"); - LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Dépl. vers pos"); - - LSTR MSG_SOUND = _UxGT("Sons"); - - LSTR MSG_TOP_LEFT = _UxGT("Coin haut gauche"); - LSTR MSG_BOTTOM_LEFT = _UxGT("Coin bas gauche"); - LSTR MSG_TOP_RIGHT = _UxGT("Coin haut droit"); - LSTR MSG_BOTTOM_RIGHT = _UxGT("Coin bas droit"); - LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Calibration terminée"); - LSTR MSG_CALIBRATION_FAILED = _UxGT("Échec de l'étalonnage"); - - LSTR MSG_SD_CARD = _UxGT("Carte SD"); - LSTR MSG_USB_DISK = _UxGT("Clé USB"); - - // DGUS-Specific message strings, not used elsewhere - LSTR DGUS_MSG_NOT_WHILE_PRINTING = _UxGT("Impossible pendant une impression"); - LSTR DGUS_MSG_NOT_WHILE_IDLE = _UxGT("Impossible tant que l'imprimante est en attente"); - LSTR DGUS_MSG_NO_FILE_SELECTED = _UxGT("Aucun fichier selectionne"); - LSTR DGUS_MSG_TEMP_TOO_LOW = _UxGT("Temperature trop basse"); - LSTR DGUS_MSG_EXECUTING_COMMAND = _UxGT("Execution de la commande..."); - LSTR DGUS_MSG_BED_PID_DISABLED = _UxGT("Bed PID desactive"); - LSTR DGUS_MSG_PID_DISABLED = _UxGT("PID desactive"); - LSTR DGUS_MSG_PID_AUTOTUNING = _UxGT("Autocalibrage du PID..."); - LSTR DGUS_MSG_INVALID_RECOVERY_DATA = _UxGT("Donnees de recuperation non valides"); - - LSTR DGUS_MSG_HOMING_REQUIRED = _UxGT("Retour a l'origine necessaire..."); - LSTR DGUS_MSG_BUSY = _UxGT("Occupe"); - LSTR DGUS_MSG_HOMING = _UxGT("Retour a l'origine..."); - LSTR DGUS_MSG_FW_OUTDATED = _UxGT("Mise a jour DWIN GUI/OS necessaire"); - LSTR DGUS_MSG_ABL_REQUIRED = _UxGT("Nivellement du bed necessaire"); - LSTR DGUS_MSG_PROBING_FAILED = _UxGT("Echec du nivellement..."); - LSTR DGUS_MSG_PROBING_SUCCESS = _UxGT("Nivellement realise avec succes"); - LSTR DGUS_MSG_RESET_EEPROM = _UxGT("Reinitialisation de l'EEPROM"); - LSTR DGUS_MSG_WRITE_EEPROM_FAILED = _UxGT("Echec ecriture de l'EEPROM"); - LSTR DGUS_MSG_READ_EEPROM_FAILED = _UxGT("Echec lecture de l'EEPROM"); - LSTR DGUS_MSG_FILAMENT_RUNOUT = _UxGT("Sortie de filament E%d"); - - LSTR MSG_SHORT_DAY = _UxGT("j"); // One character only - LSTR MSG_SHORT_HOUR = _UxGT("h"); // One character only - LSTR MSG_SHORT_MINUTE = _UxGT("m"); // One character only + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" prête."); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = _UxGT("Média inséré"); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = _UxGT("Média retiré"); // (MEDIA_TYPE_EN) Removed + LSTR MSG_LCD_ENDSTOPS = _UxGT("Butées"); // Endstops + LSTR MSG_MAIN_MENU = _UxGT("Menu principal"); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("Arrêter moteurs"); // Disable Steppers + LSTR MSG_HOMING = _UxGT("Origine"); // Homing + LSTR MSG_AUTO_HOME = _UxGT("Origine auto"); // Auto Home + LSTR MSG_AUTO_HOME_X = _UxGT("Origine X auto"); // Home X + LSTR MSG_AUTO_HOME_Y = _UxGT("Origine Y auto"); // Home Y + LSTR MSG_AUTO_HOME_Z = _UxGT("Origine Z auto"); // Home Z + LSTR MSG_LEVEL_BED_HOMING = _UxGT("Origine XYZ..."); // Homing XYZ + LSTR MSG_LEVEL_BED_WAITING = _UxGT("Clic pour commencer"); // Click to Begin + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Point suivant"); // Next Point + LSTR MSG_LEVEL_BED_DONE = _UxGT("Mise à niveau OK!"); // Leveling Done! + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Régl. décal origine"); // Set Home Offsets + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Décalages appliqués"); // Offsets Applied + LSTR MSG_PREHEAT_1 = _UxGT("Préchauffage ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = _UxGT("Préchauffage ") PREHEAT_1_LABEL " ~"; // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" buse"); // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" buse ~"); // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_1_ALL = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" Tout"); // Preheat (PREHEAT_1_LABEL) All + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Préch. ") PREHEAT_1_LABEL _UxGT(" lit"); // Preheat (PREHEAT_1_LABEL) Bed + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Régler préch. ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) Conf + LSTR MSG_PREHEAT_M = _UxGT("Préchauffage $"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("Préchauffage $ ~"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("Préch. $ buse"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("Préch. $ buse ~"); // Preheat $ End ~ + LSTR MSG_PREHEAT_M_ALL = _UxGT("Préch. $ Tout"); // Preheat $ All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Préch. $ lit"); // Preheat $ Bed + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Régler préch. $"); // Preheat $ Conf + LSTR MSG_COOLDOWN = _UxGT("Refroidir"); // Cooldown + LSTR MSG_SWITCH_PS_ON = _UxGT("Allumer alim."); // Switch Power On + LSTR MSG_SWITCH_PS_OFF = _UxGT("Eteindre alim."); // Switch Power Off + LSTR MSG_EXTRUDE = _UxGT("Extrusion"); // Extrude + LSTR MSG_RETRACT = _UxGT("Rétractation"); // Retract + LSTR MSG_MOVE_AXIS = _UxGT("Déplacer un axe"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("Mesure et Niv."); // Probe and Level + LSTR MSG_BED_LEVELING = _UxGT("Régler Niv. lit"); // Bed Leveling + LSTR MSG_LEVEL_BED = _UxGT("Niveau du lit"); // Level Bed + LSTR MSG_MOVE_X = _UxGT("Déplacer X"); // Move X + LSTR MSG_MOVE_Y = _UxGT("Déplacer Y"); // Move Y + LSTR MSG_MOVE_Z = _UxGT("Déplacer Z"); // Move Z + LSTR MSG_MOVE_N = _UxGT("Déplacer @"); // Move @ + LSTR MSG_MOVE_E = _UxGT("Extruder"); // Move Extruder + LSTR MSG_MOVE_EN = _UxGT("Extruder *"); // Move * + LSTR MSG_MOVE_N_MM = _UxGT("Déplacer $mm"); // Move $mm + LSTR MSG_MOVE_N_IN = _UxGT("Déplacer $in"); // Move $in + LSTR MSG_MOVE_N_DEG = _UxGT("Déplacer $") LCD_STR_DEGREE; // Move $(LCD_STR_DEGREE) + LSTR MSG_SPEED = _UxGT("Vitesse"); // Speed + LSTR MSG_MESH_Z_OFFSET = _UxGT("Lit Z"); // Bed Z + LSTR MSG_NOZZLE = _UxGT("Buse"); // Nozzle + LSTR MSG_NOZZLE_N = _UxGT("Buse ~"); // Nozzle ~ + LSTR MSG_BED = _UxGT("Lit"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("Vit. ventil. "); // Fan Speed + LSTR MSG_FAN_SPEED_N = _UxGT("Vit. ventil. ~"); // Fan Speed ~ + LSTR MSG_FLOW = _UxGT("Flux"); // Flow + LSTR MSG_FLOW_N = _UxGT("Flux ~"); // Flow ~ + LSTR MSG_CONTROL = _UxGT("Contrôler"); // Control + LSTR MSG_AUTOTEMP = _UxGT("Temp. Auto."); // Autotemp + LSTR MSG_SELECT_E = _UxGT("Sélectionner *"); // Select * + LSTR MSG_ACC = _UxGT("Accélération"); // Accel + LSTR MSG_VTRAV_MIN = _UxGT("Vmin course"); // Min Travel Speed + LSTR MSG_ACCELERATION = _UxGT("Accélération"); // Acceleration + LSTR MSG_AMAX_A = _UxGT("Max Accél. ") STR_A; // Max (STR_A) Accel + LSTR MSG_AMAX_B = _UxGT("Max Accél. ") STR_B; // Max (STR_B) Accel + LSTR MSG_AMAX_C = _UxGT("Max Accél. ") STR_C; // Max (STR_C) Accel + LSTR MSG_AMAX_N = _UxGT("Max Accél. @"); // Max @ Accel + LSTR MSG_AMAX_E = _UxGT("Max Accél. E"); // Max E Accel + LSTR MSG_AMAX_EN = _UxGT("Max Accél. *"); // Max * Accel + LSTR MSG_A_RETRACT = _UxGT("Acc.rétraction"); // Retract Accel + LSTR MSG_A_TRAVEL = _UxGT("Acc.course"); // Travel Accel + LSTR MSG_STEPS_PER_MM = _UxGT("Pas/mm"); // Steps/mm + LSTR MSG_A_STEPS = STR_A _UxGT(" pas/mm"); // (STR_A) Steps/mm + LSTR MSG_B_STEPS = STR_B _UxGT(" pas/mm"); // (STR_B) Steps/mm + LSTR MSG_C_STEPS = STR_C _UxGT(" pas/mm"); // (STR_C) Steps/mm + LSTR MSG_N_STEPS = _UxGT("@ pas/mm"); // @ steps/mm + LSTR MSG_E_STEPS = _UxGT("E pas/mm"); // E steps/mm + LSTR MSG_EN_STEPS = _UxGT("* pas/mm"); // * Steps/mm + LSTR MSG_TEMPERATURE = _UxGT("Température"); // Temperature + LSTR MSG_MOTION = _UxGT("Mouvement"); // Motion + LSTR MSG_FILAMENT = _UxGT("Filament"); // Filament + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E en mm") SUPERSCRIPT_THREE; // E in mm(SUPERSCRIPT_THREE) + LSTR MSG_FILAMENT_DIAM = _UxGT("Diamètre fil."); // Fil. Dia. + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Diamètre fil. *"); // Fil. Dia. * + LSTR MSG_CONTRAST = _UxGT("Contraste LCD"); // LCD Contrast + LSTR MSG_STORE_EEPROM = _UxGT("Enregistrer config."); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("Charger config."); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("Restaurer défauts"); // Restore Defaults + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Actualiser"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT("Surveiller"); // Info Screen + LSTR MSG_PREPARE = _UxGT("Préparer"); // Prepare + LSTR MSG_TUNE = _UxGT("Régler"); // Tune + LSTR MSG_PAUSE_PRINT = _UxGT("Pause impression"); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("Reprendre impr."); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("Arrêter impr."); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("Impression SD"); // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = _UxGT("Pas de média"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_DWELL = _UxGT("Repos..."); // Sleep... + LSTR MSG_USERWAIT = _UxGT("Attente utilis."); // Click to Resume... + LSTR MSG_PRINT_ABORTED = _UxGT("Impr. annulée"); // Print Aborted + LSTR MSG_NO_MOVE = _UxGT("Moteurs bloqués"); // No Move. + LSTR MSG_KILLED = _UxGT("KILLED"); // KILLED. + LSTR MSG_STOPPED = _UxGT("STOPPÉ"); // STOPPED. + LSTR MSG_CONTROL_RETRACT = _UxGT("Rétractation mm"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Ech. rétr. mm"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACTF = _UxGT("Vit. rétract") LCD_STR_DEGREE; // Retract V + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Saut Z mm"); // Hop mm + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Rét.reprise mm"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Ech.reprise mm"); // S Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("V.rét. reprise"); // Unretract V + LSTR MSG_AUTORETRACT = _UxGT("Rétraction auto"); // Auto-Retract + LSTR MSG_FILAMENTCHANGE = _UxGT("Changer filament"); // Change Filament + LSTR MSG_FILAMENTCHANGE_E = _UxGT("Changer filament *"); // Change * Filament + LSTR MSG_ATTACH_MEDIA = _UxGT("Charger le SD"); // Attach (MEDIA_TYPE_EN) + LSTR MSG_ATTACH_SD = _UxGT("Charger le SD"); // Attach SD Card + LSTR MSG_ATTACH_USB = _UxGT("Charger le USB"); // Attach USB Drive + LSTR MSG_CHANGE_MEDIA = _UxGT("Actualiser média"); // Refresh (MEDIA_TYPE_EN) + LSTR MSG_RUN_AUTOFILES = _UxGT("Exéc. auto.gcode"); // Run Autofiles + LSTR MSG_ZPROBE_OUT = _UxGT("Sonde Z hors lit"); // Z Probe Past Bed + LSTR MSG_BLTOUCH_RESET = _UxGT("Reset"); // Reset + LSTR MSG_ZPROBE_XOFFSET = _UxGT("Décalage X"); // Probe X Offset + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Décalage Y"); // Probe Y Offset + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Décalage Z"); // Probe Z Offset + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Décalage @"); // Probe @ Offset + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Babystep sonde Z"); // Babystep Probe Z + LSTR MSG_BABYSTEP_X = _UxGT("Babystep X"); // Babystep X + LSTR MSG_BABYSTEP_Y = _UxGT("Babystep Y"); // Babystep Y + LSTR MSG_BABYSTEP_Z = _UxGT("Babystep Z"); // Babystep Z + LSTR MSG_BABYSTEP_N = _UxGT("Babystep @"); // Babystep @ + LSTR MSG_ENDSTOP_ABORT = _UxGT("Butée abandon"); // Endstop Abort + LSTR MSG_ERR_HEATING_FAILED = _UxGT("Err de chauffe"); // Heating Failed + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Err TEMP. REDONDANTE"); // Err: REDUNDANT TEMP + LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("Err THERMIQUE"); // THERMAL RUNAWAY + LSTR MSG_ERR_MAXTEMP = _UxGT("Err TEMP. MAX"); // Err: MAXTEMP + LSTR MSG_ERR_MINTEMP = _UxGT("Err TEMP. MIN"); // Err: MINTEMP + LSTR MSG_HALTED = _UxGT("IMPR. STOPPÉE"); // PRINTER HALTED + LSTR MSG_PLEASE_RESET = _UxGT("Redémarrer SVP"); // Please Reset + LSTR MSG_HEATING = _UxGT("en chauffe..."); // Heating... + LSTR MSG_BED_HEATING = _UxGT("Lit en chauffe..."); // Bed Heating... + LSTR MSG_DELTA_CALIBRATE = _UxGT("Calibration Delta"); // Delta Calibration + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Calibrer X"); // Calibrate X + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Calibrer Y"); // Calibrate Y + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Calibrer Z"); // Calibrate Z + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibrer centre"); // Calibrate Center + LSTR MSG_INFO_MENU = _UxGT("Infos imprimante"); // About Printer + LSTR MSG_INFO_PRINTER_MENU = _UxGT("Infos imprimante"); // Printer Info + LSTR MSG_INFO_STATS_MENU = _UxGT("Stats. imprimante"); // Stats + LSTR MSG_INFO_BOARD_MENU = _UxGT("Infos carte"); // Board Info + LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Thermistances"); // Thermistors + LSTR MSG_INFO_EXTRUDERS = _UxGT("Extrudeurs"); // Extruders + LSTR MSG_INFO_BAUDRATE = _UxGT("Bauds"); // Baud + LSTR MSG_INFO_PROTOCOL = _UxGT("Protocole"); // Protocol + LSTR MSG_CASE_LIGHT = _UxGT("Lumière caisson"); // Case Light + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Impressions"); // Prints + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Terminées"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); // Total + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("+ long"); // Longest + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Filament"); // Extruded + LSTR MSG_INFO_MIN_TEMP = _UxGT("Temp Min"); // Min Temp + LSTR MSG_INFO_MAX_TEMP = _UxGT("Temp Max"); // Max Temp + LSTR MSG_INFO_PSU = _UxGT("Alim."); // PSU + LSTR MSG_DRIVE_STRENGTH = _UxGT("Puiss. moteur "); // Drive Strength + LSTR MSG_DAC_EEPROM_WRITE = _UxGT("DAC EEPROM sauv."); // DAC EEPROM Write + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Reprendre impr."); // Continue + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Patience...")); // |Please wait... + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Insérer fil.")); // |Insert and Click + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Retrait fil...")); // |Ejecting... + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Chargement...")); // |Loading... + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Reprise...")); // |Resuming... + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); // (LCD_STR_THERMOMETER) Min + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); // (LCD_STR_THERMOMETER) Max + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Facteur"); // (LCD_STR_THERMOMETER) Fact + LSTR MSG_LCD_ON = _UxGT("Marche"); // On + LSTR MSG_LCD_OFF = _UxGT("Arrêt"); // Off + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Imprimante incorrecte"); // INCORRECT PRINTER + LSTR MSG_DEBUG_MENU = _UxGT("Menu debug"); // Debug Menu + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Test barre progress."); // Progress Bar Test + LSTR MSG_MOVING = _UxGT("Déplacement..."); // Moving... + LSTR MSG_FREE_XY = _UxGT("Débloquer XY"); // Free XY + LSTR MSG_HOME_FIRST = _UxGT("Origine %s Premier"); // Home %s First + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Chauffage...")); // |Heating... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Chauffer ?")); // |Click to heat + LSTR MSG_YES = _UxGT("Oui"); // YES + LSTR MSG_NO = _UxGT("Non"); // NO + LSTR MSG_BACK = _UxGT("Retour"); // Back + LSTR MSG_MEDIA_ABORTING = _UxGT("Annulation..."); // Aborting... + LSTR MSG_MEDIA_READ_ERROR = _UxGT("Err lecture média"); // (MEDIA_TYPE_EN) read error + LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB débranché"); // USB device removed + LSTR MSG_USB_FD_USB_FAILED = _UxGT("Erreur média USB"); // USB start failed + LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Butées SW"); // Soft Endstops + LSTR MSG_ADVANCED_SETTINGS = _UxGT("Config. avancée"); // Advanced Settings + LSTR MSG_CONFIGURATION = _UxGT("Configuration"); // Configuration + LSTR MSG_AUTO_Z_ALIGN = _UxGT("Align. Z auto"); // Auto Z-Align + LSTR MSG_Z_FADE_HEIGHT = _UxGT("Hauteur lissée"); // Fade Height + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Préchauf. perso"); // Preheat Custom + LSTR MSG_LASER_MENU = _UxGT("Contrôle Laser"); // Laser Control + LSTR MSG_LASER_POWER = _UxGT("Puissance"); // Laser Power + LSTR MSG_SPINDLE_REVERSE = _UxGT("Inverser broches"); // Spindle Reverse + LSTR MSG_BED_TRAMMING = _UxGT("Niveau des coins"); // Bed Tramming + LSTR MSG_NEXT_CORNER = _UxGT("Coin suivant"); // Next Corner + LSTR MSG_MESH_EDITOR = _UxGT("Modif. maille"); // Mesh Editor + LSTR MSG_EDIT_MESH = _UxGT("Modifier grille"); // Edit Mesh + LSTR MSG_EDITING_STOPPED = _UxGT("Modification arrêtée"); // Mesh Editing Stopped + LSTR MSG_PROBING_POINT = _UxGT("Mesure point"); // Probing Point + LSTR MSG_MESH_X = _UxGT("Index X"); // Index X + LSTR MSG_MESH_Y = _UxGT("Index Y"); // Index Y + LSTR MSG_MESH_EDIT_Z = _UxGT("Valeur Z"); // Z Value + LSTR MSG_CUSTOM_COMMANDS = _UxGT("Commandes perso"); // Custom Commands + LSTR MSG_M48_TEST = _UxGT("Ecart sonde Z M48"); // M48 Probe Test + LSTR MSG_M48_POINT = _UxGT("Point M48"); // M48 Point + LSTR MSG_M48_DEVIATION = _UxGT("Ecart"); // Deviation + LSTR MSG_IDEX_MENU = _UxGT("Mode IDEX"); // IDEX Mode + LSTR MSG_OFFSETS_MENU = _UxGT("Offsets Outil"); // Tool Offsets + LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-Park"); // Auto-Park + LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplication"); // Duplication + LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Copie miroir"); // Mirrored Copy + LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Contrôle complet"); // Full Control + LSTR MSG_HOTEND_OFFSET_Z = _UxGT("Buse 2 Z"); // 2nd Nozzle Z + LSTR MSG_HOTEND_OFFSET_N = _UxGT("Buse 2 @"); // 2nd Nozzle @ + LSTR MSG_UBL_DOING_G29 = _UxGT("G29 en cours"); // Doing G29 + LSTR MSG_UBL_TOOLS = _UxGT("Outils UBL"); // UBL Tools + LSTR MSG_LCD_TILTING_MESH = _UxGT("Mesure point"); // Tilting Point + LSTR MSG_UBL_MANUAL_MESH = _UxGT("Maillage manuel"); // Manually Build Mesh + LSTR MSG_UBL_BC_INSERT = _UxGT("Poser câle & mesurer"); // Place Shim & Measure + LSTR MSG_UBL_BC_INSERT2 = _UxGT("Mesure"); // Measure + LSTR MSG_UBL_BC_REMOVE = _UxGT("ôter et mesurer lit"); // Remove & Measure Bed + LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Aller au suivant"); // Moving to next + LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Température lit"); // Bed Temp + LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Température lit"); // Bed Temp + LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Température buse"); // Hotend Temp + LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Température buse"); // Hotend Temp + LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Modif. grille perso"); // Edit Custom Mesh + LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Réglage fin"); // Fine Tuning Mesh + LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Terminer"); // Done Editing Mesh + LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Créer grille ..."); // Build Custom Mesh + LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Créer la grille"); // Build Mesh + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Créer grille $"); // Build Mesh ($) + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Impr. grille $"); // Validate Mesh ($) + LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Mesure à froid"); // Build Cold Mesh + LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Ajuster haut. couche"); // Adjust Mesh Height + LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Hauteur (x0.1mm)"); // Height Amount + LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Vérifier grille"); // Validate Mesh + LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Impr. grille ..."); // Validate Custom Mesh + LSTR MSG_G26_HEATING_BED = _UxGT("G26: Chauffage du lit"); // G26 Heating Bed + LSTR MSG_G26_HEATING_NOZZLE = _UxGT("Buse en chauffe..."); // G26 Heating Nozzle + LSTR MSG_G26_MANUAL_PRIME = _UxGT("Amorce manuelle..."); // Manual priming... + LSTR MSG_G26_FIXED_LENGTH = _UxGT("Amorce longueur fixe"); // Fixed Length Prime + LSTR MSG_G26_PRIME_DONE = _UxGT("Amorce terminée"); // Done Priming + LSTR MSG_G26_CANCELED = _UxGT("G26 annulé"); // G26 Canceled + LSTR MSG_G26_LEAVING = _UxGT("Sortie G26"); // Leaving G26 + LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Continuer grille"); // Continue Bed Mesh + LSTR MSG_UBL_MESH_LEVELING = _UxGT("Niveau par mailles"); // Mesh Leveling + LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("Niveau à 3 points"); // 3-Point Leveling + LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Niveau par grille"); // Grid Mesh Leveling + LSTR MSG_UBL_MESH_LEVEL = _UxGT("Effectuer mesures"); // Level Mesh + LSTR MSG_UBL_SIDE_POINTS = _UxGT("Points latéraux"); // Side Points + LSTR MSG_UBL_MAP_TYPE = _UxGT("Type de carte"); // Map Type + LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Exporter grille"); // Output Mesh Map + LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Export pour hôte"); // Output for Host + LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Export en CSV"); // Output for CSV + LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Export sauvegarde"); // Off Printer Backup + LSTR MSG_UBL_INFO_UBL = _UxGT("Infos debug UBL"); // Output UBL Info + LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Nombre de points"); // Fill-in Amount + LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Remplissage manuel"); // Manual Fill-in + LSTR MSG_UBL_SMART_FILLIN = _UxGT("Remplissage auto"); // Smart Fill-in + LSTR MSG_UBL_FILLIN_MESH = _UxGT("Remplissage grille"); // Fill-in Mesh + LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Tout effacer"); // Invalidate All + LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Effacer le + près"); // Invalidate Closest + LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Réglage fin (tous)"); // Fine Tune All + LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Réglage fin + près"); // Fine Tune Closest + LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Stockage grille"); // Mesh Storage + LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Slot mémoire"); // Memory Slot + LSTR MSG_UBL_LOAD_MESH = _UxGT("Charger la grille"); // Load Bed Mesh + LSTR MSG_UBL_SAVE_MESH = _UxGT("Stocker la grille"); // Save Bed Mesh + LSTR MSG_MESH_LOADED = _UxGT("Grille %i chargée"); // Mesh %i Loaded + LSTR MSG_MESH_SAVED = _UxGT("Grille %i enreg."); // Mesh %i Saved + LSTR MSG_UBL_NO_STORAGE = _UxGT("Pas de mémoire"); // No Storage + LSTR MSG_UBL_SAVE_ERROR = _UxGT("Err: Enreg. UBL"); // UBL Save Error + LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Err: Ouvrir UBL"); // UBL Restore Error + LSTR MSG_UBL_Z_OFFSET = _UxGT("Z-Offset: "); // Z-Offset: + LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Décal. Z arrêté"); // Z-Offset Stopped + LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("Assistant UBL"); // Step-By-Step UBL + LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Mesure à froid"); // 1. Build Cold Mesh + LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2.Compléter auto."); // 2. Smart Fill-in + LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Vérifier grille"); // 3. Validate Mesh + LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Réglage fin"); // 4. Fine Tune All + LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Vérifier grille"); // 5. Validate Mesh + LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Réglage fin"); // 6. Fine Tune All + LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Stocker grille"); // 7. Save Bed Mesh + LSTR MSG_LED_CONTROL = _UxGT("Contrôle LED"); // LED Control + LSTR MSG_LIGHTS = _UxGT("Lumière"); // Lights + LSTR MSG_LIGHT_N = _UxGT("Lumière #{"); // Light #{ + LSTR MSG_LED_PRESETS = _UxGT("Préregl. LED"); // Light Presets + LSTR MSG_SET_LEDS_RED = _UxGT("Rouge"); // Red + LSTR MSG_SET_LEDS_ORANGE = _UxGT("Orange"); // Orange + LSTR MSG_SET_LEDS_YELLOW = _UxGT("Jaune"); // Yellow + LSTR MSG_SET_LEDS_GREEN = _UxGT("Vert"); // Green + LSTR MSG_SET_LEDS_BLUE = _UxGT("Bleu"); // Blue + LSTR MSG_SET_LEDS_INDIGO = _UxGT("Indigo"); // Indigo + LSTR MSG_SET_LEDS_VIOLET = _UxGT("Violet"); // Violet + LSTR MSG_SET_LEDS_WHITE = _UxGT("Blanc"); // White + LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Defaut"); // Default + LSTR MSG_CUSTOM_LEDS = _UxGT("LEDs perso."); // Custom Lights + LSTR MSG_INTENSITY_R = _UxGT("Intensité rouge"); // Red Intensity + LSTR MSG_INTENSITY_G = _UxGT("Intensité vert"); // Green Intensity + LSTR MSG_INTENSITY_B = _UxGT("Intensité bleu"); // Blue Intensity + LSTR MSG_INTENSITY_W = _UxGT("Intensité blanc"); // White Intensity + LSTR MSG_LED_BRIGHTNESS = _UxGT("Luminosité"); // Brightness + LSTR MSG_HOTEND_TOO_COLD = _UxGT("Buse trop froide"); // Hotend too cold + LSTR MSG_CHAMBER = _UxGT("Caisson"); // Enclosure + LSTR MSG_STORED_FAN_N = _UxGT("Vit. enreg. ~"); // Stored Fan ~ + LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Extra ventil. "); // Extra Fan Speed + LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Extra ventil. ~"); // Extra Fan Speed ~ + LSTR MSG_PID_AUTOTUNE = _UxGT("PID Autotune"); // PID Autotune + LSTR MSG_PID_AUTOTUNE_E = _UxGT("PID Autotune *"); // Autotune * PID + LSTR MSG_JERK = _UxGT("Jerk"); // Jerk + LSTR MSG_VA_JERK = _UxGT("V") STR_A _UxGT(" jerk"); // Max (STR_A) Jerk + LSTR MSG_VB_JERK = _UxGT("V") STR_B _UxGT(" jerk"); // Max (STR_B) Jerk + LSTR MSG_VC_JERK = _UxGT("V") STR_C _UxGT(" jerk"); // Max (STR_C) Jerk + LSTR MSG_VN_JERK = _UxGT("V@ jerk"); // Max @ Jerk + LSTR MSG_VE_JERK = _UxGT("Ve jerk"); // Max E Jerk + LSTR MSG_JUNCTION_DEVIATION = _UxGT("Déviat. jonct."); // Junction Dev + LSTR MSG_MAX_SPEED = _UxGT("Max Vélocité"); // Max Speed (mm/s) + LSTR MSG_VMAX_A = _UxGT("Vit. Max ") STR_A; // Max (STR_A) Speed + LSTR MSG_VMAX_B = _UxGT("Vit. Max ") STR_B; // Max (STR_B) Speed + LSTR MSG_VMAX_C = _UxGT("Vit. Max ") STR_C; // Max (STR_C) Speed + LSTR MSG_VMAX_N = _UxGT("Vit. Max @"); // Max @ Speed + LSTR MSG_VMAX_E = _UxGT("Vit. Max E"); // Max E Speed + LSTR MSG_VMAX_EN = _UxGT("Vit. Max *"); // Max * Speed + LSTR MSG_VMIN = _UxGT("Vit. Min"); // Min Velocity + LSTR MSG_FILAMENT_UNLOAD = _UxGT("Retrait mm"); // Unload mm + LSTR MSG_FILAMENT_LOAD = _UxGT("Charger mm"); // Load mm + LSTR MSG_ADVANCE_K = _UxGT("Avance K"); // Advance K + LSTR MSG_ADVANCE_K_E = _UxGT("Avance K *"); // Advance K * + LSTR MSG_INIT_EEPROM = _UxGT("Initialiser EEPROM"); // Initialize EEPROM + LSTR MSG_MEDIA_UPDATE = _UxGT("MaJ Firmware SD"); // (MEDIA_TYPE_EN) Update + LSTR MSG_RESET_PRINTER = _UxGT("RaZ imprimante"); // Reset Printer + LSTR MSG_START_PRINT = _UxGT("Démarrer impression"); // Start Print + LSTR MSG_BUTTON_NEXT = _UxGT("Suivant"); // Next + LSTR MSG_BUTTON_INIT = _UxGT("Init."); // Init + LSTR MSG_BUTTON_STOP = _UxGT("Stop"); // Stop + LSTR MSG_BUTTON_PRINT = _UxGT("Imprimer"); // Print + LSTR MSG_BUTTON_RESET = _UxGT("Reset"); // Reset + LSTR MSG_BUTTON_CANCEL = _UxGT("Annuler"); // Cancel + LSTR MSG_BUTTON_DONE = _UxGT("Terminé"); // Done + LSTR MSG_BUTTON_BACK = _UxGT("Retour"); // Back + LSTR MSG_BUTTON_PROCEED = _UxGT("Procéder"); // Proceed + LSTR MSG_PRINTING_OBJECT = _UxGT("Impression objet"); // Print Obj + LSTR MSG_CANCEL_OBJECT = _UxGT("Annuler objet"); // Cancel Obj + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Annuler objet {"); // Cancel Obj { + LSTR MSG_OUTAGE_RECOVERY = _UxGT("Récup. coup."); // Power Outage + LSTR MSG_PRINT_PAUSED = _UxGT("Impr. en pause"); // Print Paused + LSTR MSG_PRINTING = _UxGT("Impression"); // Printing... + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("V.éch. reprise"); // S UnRet V + LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Longueur retrait"); // Swap Length + LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Longueur de purge"); // Purge Length + LSTR MSG_TOOL_CHANGE = _UxGT("Changement outil"); // Tool Change + LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Augmenter Z"); // Z Raise + LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Vitesse primaire"); // Prime Speed + LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Vitesse rétract") LCD_STR_DEGREE; // Retract Speed + LSTR MSG_NOZZLE_STANDBY = _UxGT("Attente buse"); // Nozzle Standby + LSTR MSG_FILAMENTLOAD = _UxGT("Charger filament"); // Load Filament + LSTR MSG_FILAMENTLOAD_E = _UxGT("Charger filament *"); // Load * Filament + LSTR MSG_FILAMENTUNLOAD = _UxGT("Retrait filament"); // Unload Filament + LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Retrait filament *"); // Unload * Filament + LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Retirer tout"); // Unload All + LSTR MSG_RELEASE_MEDIA = _UxGT("Retirer le média"); // Release (MEDIA_TYPE_EN) + LSTR MSG_SKEW_FACTOR = _UxGT("Facteur écart"); // Skew Factor + LSTR MSG_BLTOUCH = _UxGT("BLTouch"); // BLTouch + LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Self-Test"); // Self-Test + LSTR MSG_BLTOUCH_STOW = _UxGT("Ranger"); // Stow + LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Déployer"); // Deploy + LSTR MSG_BLTOUCH_SW_MODE = _UxGT("Mode SW"); // SW-Mode + LSTR MSG_BLTOUCH_5V_MODE = _UxGT("Mode 5V"); // 5V-Mode + LSTR MSG_BLTOUCH_OD_MODE = _UxGT("Mode OD"); // OD-Mode + LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("Appliquer Mode"); // Mode-Store + LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Mise en 5V"); // Set BLTouch to 5V + LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Mise en OD"); // Set BLTouch to OD + LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Afficher Mode"); // Report Drain + LSTR MSG_TOUCHMI_PROBE = _UxGT("TouchMI"); // TouchMI + LSTR MSG_TOUCHMI_INIT = _UxGT("Init. TouchMI"); // Init TouchMI + LSTR MSG_TOUCHMI_ZTEST = _UxGT("Test décalage Z"); // Z Offset Test + LSTR MSG_TOUCHMI_SAVE = _UxGT("Sauvegarde"); // Save + LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("Déployer TouchMI"); // Deploy TouchMI + LSTR MSG_MANUAL_DEPLOY = _UxGT("Déployer Sonde Z"); // Deploy Z-Probe + LSTR MSG_MANUAL_STOW = _UxGT("Ranger Sonde Z"); // Stow Z-Probe + LSTR MSG_BABYSTEP_TOTAL = _UxGT("Total"); // Total + LSTR MSG_COOLING = _UxGT("Refroidissement"); // Cooling... + LSTR MSG_BED_COOLING = _UxGT("Refroid. du lit..."); // Bed Cooling... + LSTR MSG_CHAMBER_HEATING = _UxGT("Chauffe caisson..."); // Chamber Heating... + LSTR MSG_CHAMBER_COOLING = _UxGT("Refroid. caisson..."); // Chamber Cooling... + LSTR MSG_DELTA_SETTINGS = _UxGT("Réglages Delta"); // Delta Settings + LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Calibration Auto"); // Auto Calibration + LSTR MSG_DELTA_DIAG_ROD = _UxGT("Diagonale"); // Diag Rod + LSTR MSG_DELTA_HEIGHT = _UxGT("Hauteur"); // Height + LSTR MSG_DELTA_RADIUS = _UxGT("Rayon"); // Radius + LSTR MSG_3POINT_LEVELING = _UxGT("Niveau à 3 points"); // 3-Point Leveling + LSTR MSG_LINEAR_LEVELING = _UxGT("Niveau linéaire"); // Linear Leveling + LSTR MSG_BILINEAR_LEVELING = _UxGT("Niveau bilinéaire"); // Bilinear Leveling + LSTR MSG_UBL_LEVELING = _UxGT("Niveau lit unifié"); // Unified Bed Leveling + LSTR MSG_MESH_LEVELING = _UxGT("Niveau par grille"); // Mesh Leveling + LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Protection inactive"); // Runaway Watch: OFF + LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Protection active"); // Runaway Watch: ON + LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Luminosité"); // Light Brightness + LSTR MSG_DAC_PERCENT_N = _UxGT("Driver @ %"); // @ Driver % + LSTR MSG_ERROR_TMC = _UxGT("ERREUR CONNEXION TMC"); // TMC CONNECTION ERROR + LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("CHANGER FILAMENT"); // FILAMENT CHANGE + LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("IMPR. PAUSE"); // PRINT PAUSED + LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("CHARGER FIL"); // LOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("DECHARGER FIL"); // UNLOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("OPTIONS REPRISE:"); // RESUME OPTIONS: + LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Purger encore"); // Purge more + LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Buse: "); // Nozzle: + LSTR MSG_RUNOUT_SENSOR = _UxGT("Capteur fil."); // Runout Sensor + LSTR MSG_KILL_HOMING_FAILED = _UxGT("Echec origine"); // Homing Failed + LSTR MSG_LCD_PROBING_FAILED = _UxGT("Echec sonde"); // Probing Failed + LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("CHOISIR FILAMENT"); // CHOOSE FILAMENT + LSTR MSG_MMU2_MENU = _UxGT("MMU"); // MMU + LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("MAJ firmware MMU!!"); // Update MMU Firmware! + LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU ne répond plus"); // MMU Needs Attention. + LSTR MSG_MMU2_RESUME = _UxGT("Continuer Imp. MMU"); // Resume + LSTR MSG_MMU2_RESUMING = _UxGT("Reprise MMU..."); // MMU Resuming... + LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("Charge dans MMU"); // Load + LSTR MSG_MMU2_LOAD_ALL = _UxGT("Charger tous dans MMU"); // Load All + LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Charger dans buse"); // Load to Nozzle + LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("Ejecter fil. du MMU"); // Eject + LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("Ejecter fil. ~"); // Eject ~ + LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Retrait filament"); // Unload + LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Chargem. fil. %i..."); // Filament %i Load... + LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Ejection fil..."); // Filament %i Eject... + LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Retrait fil...."); // Filament %i Unload... + LSTR MSG_MMU2_ALL = _UxGT("Tous"); // All + LSTR MSG_MMU2_FILAMENT_N = _UxGT("Filament ~"); // Filament ~ + LSTR MSG_MMU2_RESET = _UxGT("Réinit. MMU"); // Reset MMU + LSTR MSG_MMU2_RESETTING = _UxGT("Réinit. MMU..."); // Resetting... + LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Retrait, click"); // Eject Recover + LSTR MSG_MIX_COMPONENT_N = _UxGT("Composante {"); // Component { + LSTR MSG_MIXER = _UxGT("Mixeur"); // Mixer + LSTR MSG_GRADIENT = _UxGT("Dégradé"); // Gradient + LSTR MSG_FULL_GRADIENT = _UxGT("Dégradé complet"); // Full Gradient + LSTR MSG_TOGGLE_MIX = _UxGT("Toggle mix"); // Toggle Mix + LSTR MSG_CYCLE_MIX = _UxGT("Cycle mix"); // Cycle Mix + LSTR MSG_GRADIENT_MIX = _UxGT("Mix dégradé"); // Gradient Mix + LSTR MSG_REVERSE_GRADIENT = _UxGT("Inverser dégradé"); // Reverse Gradient + LSTR MSG_ACTIVE_VTOOL = _UxGT("Active V-tool"); // Active V-tool + LSTR MSG_START_VTOOL = _UxGT("Début V-tool"); // Start V-tool + LSTR MSG_END_VTOOL = _UxGT(" Fin V-tool"); // End V-tool + LSTR MSG_GRADIENT_ALIAS = _UxGT("Alias V-tool"); // Alias V-tool + LSTR MSG_RESET_VTOOLS = _UxGT("Réinit. V-tools"); // Reset V-tools + LSTR MSG_COMMIT_VTOOL = _UxGT("Valider Mix V-tool"); // Commit V-tool Mix + LSTR MSG_VTOOLS_RESET = _UxGT("V-tools réinit. ok"); // V-tools Were Reset + LSTR MSG_START_Z = _UxGT("Début Z:"); // Start Z: + LSTR MSG_END_Z = _UxGT(" Fin Z:"); // End Z: + LSTR MSG_GAMES = _UxGT("Jeux"); // Games + LSTR MSG_BRICKOUT = _UxGT("Casse-briques"); // Brickout + LSTR MSG_INVADERS = _UxGT("Invaders"); // Invaders + LSTR MSG_SNAKE = _UxGT("Sn4k3"); // Sn4k3 + LSTR MSG_MAZE = _UxGT("Labyrinthe"); // Maze + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Clic pour continuer")); // |Click to continue + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Purge...")); // |Purging... + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Terminer ?")); // |Click to finish + LSTR MSG_TMC_CURRENT = _UxGT("Courant driver"); // Driver Current + LSTR MSG_TMC_HYBRID_THRS = _UxGT("Seuil hybride"); // Hybrid Threshold + LSTR MSG_TMC_HOMING_THRS = _UxGT("Home sans capteur"); // Sensorless Homing + LSTR MSG_TMC_STEPPING_MODE = _UxGT("Mode pas à pas"); // Stepping Mode + LSTR MSG_TMC_STEALTHCHOP = _UxGT("StealthChop"); // StealthChop + LSTR MSG_SERVICE_RESET = _UxGT("Réinit."); // Reset + LSTR MSG_SERVICE_IN = _UxGT(" dans:"); // in: + LSTR MSG_BACKLASH_CORRECTION = _UxGT("Correction"); // Correction + LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Lissage"); // Smoothing + LSTR MSG_AUTO_HOME_N = _UxGT("Origine @ auto"); // Home @ + LSTR MSG_HOME_OFFSET_X = _UxGT("Décal. origine X"); // Home Offset X + LSTR MSG_HOME_OFFSET_Y = _UxGT("Décal. origine Y"); // Home Offset Y + LSTR MSG_HOME_OFFSET_Z = _UxGT("Décal. origine Z"); // Home Offset Z + LSTR MSG_TRAMMING_WIZARD = _UxGT("Assistant Molettes"); // Tramming Wizard + LSTR MSG_SELECT_ORIGIN = _UxGT("Molette du lit"); // Select Origin + LSTR MSG_LAST_VALUE_SP = _UxGT("Ecart origine "); // Last value + LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Relever le coin jusqu'à la sonde"); // Adjust bed until the probe triggers. + LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Coins dans la tolérance. Niveau lit."); // Corners within tolerance. Bed trammed. + LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("Tuning PID terminé"); // PID tuning done + LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Echec Autotune! E incorrect"); // Autotune failed! Bad extruder. + LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Echec Autotune! Temp. trop haute"); // Autotune failed! Temperature too high. + LSTR MSG_PID_TIMEOUT = _UxGT("Echec Autotune! Opér. expirée"); // Autotune failed! Timeout. + LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("Fréquence max"); // XY Freq Limit + LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("Vitesse min"); // Min FR Factor + LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("Limite en mm") SUPERSCRIPT_THREE; // E Limit in mm(SUPERSCRIPT_THREE) + LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("Limite *"); // E Limit * + LSTR MSG_BRIGHTNESS = _UxGT("Luminosité LCD"); // LCD Brightness + LSTR MSG_SCREEN_TIMEOUT = _UxGT("Veille LCD (m)"); // LCD Timeout (m) + LSTR MSG_BRIGHTNESS_OFF = _UxGT("Éteindre l'écran LCD"); // Backlight Off + LSTR MSG_SETTINGS_STORED = _UxGT("Config. enregistrée"); // Settings Stored + LSTR MSG_BUTTON_IGNORE = _UxGT("Ignorer"); // Ignore + LSTR MSG_BUTTON_SKIP = _UxGT("Passer"); // Skip + LSTR MSG_PAUSING = _UxGT("Mise en pause..."); // Pausing... + LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Longueur Extra"); // Swap Extra + LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Garer Extrudeur"); // Park Head + LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Vitesse reprise"); // Recover Speed + LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Vit. ventil."); // Fan Speed + LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Temps ventil."); // Fan Time + LSTR MSG_TOOL_MIGRATION_ON = _UxGT("Auto ON"); // Auto ON + LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("Auto OFF"); // Auto OFF + LSTR MSG_TOOL_MIGRATION = _UxGT("Migration d'outil"); // Tool Migration + LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("Migration auto"); // Auto-migration + LSTR MSG_TOOL_MIGRATION_END = _UxGT("Extrudeur Final"); // Last Extruder + LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("Migrer vers *"); // Migrate to * + LSTR MSG_ZPROBE_OFFSETS = _UxGT("Position sonde Z"); // Probe Offsets + LSTR MSG_PROBE_HEATING = _UxGT("Probe en chauffe..."); // Probe Heating... + LSTR MSG_PROBE_COOLING = _UxGT("Refroid. Probe..."); // Probe Cooling... + LSTR MSG_MESH_DONE = _UxGT("Niveau terminé"); // Mesh probing done + LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Hotend Idle Timeout"); // Hotend Idle Timeout + LSTR MSG_BAD_PAGE = _UxGT("Erreur index page"); // Bad page index + LSTR MSG_BAD_PAGE_SPEED = _UxGT("Erreur vitesse page"); // Bad page speed + LSTR MSG_LEVEL_X_AXIS = _UxGT("Niveau axe X"); // Level X Axis + LSTR MSG_AUTO_CALIBRATE = _UxGT("Etalon. auto."); // Auto Calibrate + LSTR MSG_FTDI_HEATER_TIMEOUT = _UxGT("En protection, temp. réduite. Ok pour rechauffer et continuer."); // Idle timeout, temperature decreased. Press Okay to reheat and again to resume. + LSTR MSG_HEATER_TIMEOUT = _UxGT("En protection"); // Heater Timeout + LSTR MSG_REHEAT = _UxGT("Chauffer"); // Reheat + LSTR MSG_REHEATING = _UxGT("Réchauffe..."); // Reheating... + LSTR MSG_PROBE_WIZARD = _UxGT("Assistant Sonde Z"); // Z Probe Wizard + LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Mesure référence"); // Probing Z Reference + LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Dépl. vers pos"); // Moving to Probing Pos + LSTR MSG_SOUND = _UxGT("Sons"); // Sound + LSTR MSG_TOP_LEFT = _UxGT("Coin haut gauche"); // Touch Top Left + LSTR MSG_BOTTOM_LEFT = _UxGT("Coin bas gauche"); // Touch Bottom Left + LSTR MSG_TOP_RIGHT = _UxGT("Coin haut droit"); // Touch Top Right + LSTR MSG_BOTTOM_RIGHT = _UxGT("Coin bas droit"); // Touch Bottom Right + LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Calibration terminée"); // Calibration Completed + LSTR MSG_CALIBRATION_FAILED = _UxGT("Échec de l'étalonnage"); // Calibration Failed + LSTR MSG_SD_CARD = _UxGT("Carte SD"); // SD Card + LSTR MSG_USB_DISK = _UxGT("Clé USB"); // USB Disk + LSTR MSG_SHORT_DAY = _UxGT("j"); // d + LSTR MSG_SHORT_HOUR = _UxGT("h"); // h + LSTR MSG_SHORT_MINUTE = _UxGT("m"); // m + LSTR MSG_SINGLENOZZLE_WIPE_RETRACT = _UxGT("Purge Retract"); // Wipe Retract + LSTR DGUS_MSG_NOT_WHILE_PRINTING = _UxGT("Impossible pendant une impression"); // Not allowed during print + LSTR DGUS_MSG_NOT_WHILE_IDLE = _UxGT("Impossible tant que l'imprimante est en attente"); // Not allowed while idle + LSTR DGUS_MSG_NO_FILE_SELECTED = _UxGT("Aucun fichier selectionne"); // No file selected + LSTR DGUS_MSG_TEMP_TOO_LOW = _UxGT("Temperature trop basse"); // Temperature too low + LSTR DGUS_MSG_EXECUTING_COMMAND = _UxGT("Execution de la commande..."); // Executing command... + LSTR DGUS_MSG_BED_PID_DISABLED = _UxGT("Bed PID desactive"); // Bed PID disabled + LSTR DGUS_MSG_PID_DISABLED = _UxGT("PID desactive"); // PID disabled + LSTR DGUS_MSG_PID_AUTOTUNING = _UxGT("Autocalibrage du PID..."); // PID autotuning... + LSTR DGUS_MSG_INVALID_RECOVERY_DATA = _UxGT("Donnees de recuperation non valides"); // Invalid recovery data + LSTR DGUS_MSG_HOMING_REQUIRED = _UxGT("Retour a l'origine necessaire..."); // Homing required + LSTR DGUS_MSG_BUSY = _UxGT("Occupe"); // Busy + LSTR DGUS_MSG_HOMING = _UxGT("Retour a l'origine..."); // Homing... + LSTR DGUS_MSG_FW_OUTDATED = _UxGT("Mise a jour DWIN GUI/OS necessaire"); // DWIN GUI/OS update required + LSTR DGUS_MSG_ABL_REQUIRED = _UxGT("Nivellement du bed necessaire"); // Auto bed leveling required + LSTR DGUS_MSG_PROBING_FAILED = _UxGT("Echec du nivellement..."); // Probing failed + LSTR DGUS_MSG_PROBING_SUCCESS = _UxGT("Nivellement realise avec succes"); // Probing successful + LSTR DGUS_MSG_RESET_EEPROM = _UxGT("Reinitialisation de l'EEPROM"); // EEPROM reset + LSTR DGUS_MSG_WRITE_EEPROM_FAILED = _UxGT("Echec ecriture de l'EEPROM"); // EEPROM write failed + LSTR DGUS_MSG_READ_EEPROM_FAILED = _UxGT("Echec lecture de l'EEPROM"); // EEPROM read failed + LSTR DGUS_MSG_FILAMENT_RUNOUT = _UxGT("Sortie de filament E%d"); // Filament runout E%d } namespace LanguageWide_fr { using namespace LanguageNarrow_fr; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Nbre impressions"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Terminées"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Tps impr. total"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Impr. la + longue"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total filament"); + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Nbre impressions"); // Print Count + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Terminées"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Tps impr. total"); // Print Time + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Impr. la + longue"); // Longest Job Time + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total filament"); // Extruded Total #endif } @@ -652,17 +616,17 @@ namespace LanguageTall_fr { using namespace LanguageWide_fr; #if LCD_HEIGHT >= 4 // Filament Change screens show up to 3 lines on a 4-line display - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Presser bouton", "pour reprendre")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parking...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("Attente filament", "pour démarrer")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Insérer filament", "et app. bouton", "pour continuer...")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Presser le bouton", "pour chauffer...")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Buse en chauffe", "Patienter SVP...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Attente", "retrait du filament")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Attente", "chargement filament")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Attente", "Purge filament")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Presser pour finir", "la purge du filament")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Attente reprise", "impression")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("Attente filament", "pour démarrer")); // |Wait for|filament change|to start + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Insérer filament", "et app. bouton", "pour continuer...")); // |Insert filament|and press button|to continue + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Attente", "retrait du filament")); // |Wait for|filament unload + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Attente", "chargement filament")); // |Wait for|filament load + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Attente reprise", "impression")); // |Wait for print|to resume... + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Buse en chauffe", "Patienter SVP...")); // |Nozzle heating|Please wait... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Presser le bouton", "pour chauffer...")); // |Press button|to heat nozzle + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Presser bouton", "pour reprendre")); // |Press Button|to resume print + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parking...")); // |Parking... + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Attente", "Purge filament")); // |Wait for|filament purge + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Presser pour finir", "la purge du filament")); // |Click to finish|filament purge #endif } diff --git a/Marlin/src/lcd/language/language_fr_na.h b/Marlin/src/lcd/language/language_fr_na.h index 7c10443e6e..2b3ab45543 100644 --- a/Marlin/src/lcd/language/language_fr_na.h +++ b/Marlin/src/lcd/language/language_fr_na.h @@ -1,6 +1,6 @@ /** * Marlin 3D Printer Firmware - * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm @@ -44,607 +44,571 @@ namespace LanguageNarrow_fr_na { LSTR LANGUAGE = _UxGT("Francais"); - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" prete."); - LSTR MSG_YES = _UxGT("Oui"); - LSTR MSG_NO = _UxGT("Non"); - LSTR MSG_BACK = _UxGT("Retour"); - - LSTR MSG_MEDIA_ABORTING = _UxGT("Annulation..."); - LSTR MSG_MEDIA_INSERTED = _UxGT("Media insere"); - LSTR MSG_MEDIA_REMOVED = _UxGT("Media retire"); - LSTR MSG_MEDIA_READ_ERROR = _UxGT("Err lecture media"); - LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB debranche"); - LSTR MSG_USB_FD_USB_FAILED = _UxGT("Erreur media USB"); - - LSTR MSG_LCD_ENDSTOPS = _UxGT("Butees"); - LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Butees SW"); - LSTR MSG_MAIN_MENU = _UxGT("Menu principal"); - LSTR MSG_ADVANCED_SETTINGS = _UxGT("Config. avancee"); - LSTR MSG_CONFIGURATION = _UxGT("Configuration"); - LSTR MSG_DISABLE_STEPPERS = _UxGT("Arreter moteurs"); - LSTR MSG_DEBUG_MENU = _UxGT("Menu debug"); - LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Test barre progress."); - LSTR MSG_HOMING = _UxGT("Origine"); - LSTR MSG_AUTO_HOME = _UxGT("Origine auto"); - LSTR MSG_AUTO_HOME_N = _UxGT("Origine @ auto"); - LSTR MSG_AUTO_HOME_X = _UxGT("Origine X auto"); - LSTR MSG_AUTO_HOME_Y = _UxGT("Origine Y auto"); - LSTR MSG_AUTO_HOME_Z = _UxGT("Origine Z auto"); - LSTR MSG_AUTO_Z_ALIGN = _UxGT("Align. Z auto"); - LSTR MSG_LEVEL_BED_HOMING = _UxGT("Origine XYZ..."); - LSTR MSG_LEVEL_BED_WAITING = _UxGT("Clic pour commencer"); - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Point suivant"); - LSTR MSG_LEVEL_BED_DONE = _UxGT("Mise a niveau OK!"); - LSTR MSG_Z_FADE_HEIGHT = _UxGT("Hauteur lissee"); - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Regl. decal origine"); - LSTR MSG_HOME_OFFSET_X = _UxGT("Decal. origine X"); // DWIN - LSTR MSG_HOME_OFFSET_Y = _UxGT("Decal. origine Y"); // DWIN - LSTR MSG_HOME_OFFSET_Z = _UxGT("Decal. origine Z"); // DWIN - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Decalages appliques"); - LSTR MSG_TRAMMING_WIZARD = _UxGT("Assistant Molettes"); - LSTR MSG_SELECT_ORIGIN = _UxGT("Molette du lit"); // Not a selection of the origin - LSTR MSG_LAST_VALUE_SP = _UxGT("Ecart origine "); - - LSTR MSG_PREHEAT_1 = _UxGT("Prechauffage ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Prechauffage ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Prech. ") PREHEAT_1_LABEL _UxGT(" buse"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Prech. ") PREHEAT_1_LABEL _UxGT(" buse ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Prech. ") PREHEAT_1_LABEL _UxGT(" Tout"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Prech. ") PREHEAT_1_LABEL _UxGT(" lit"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Regler prech. ") PREHEAT_1_LABEL; - - LSTR MSG_PREHEAT_M = _UxGT("Prechauffage $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Prechauffage $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Prech. $ buse"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Prech. $ buse ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Prech. $ Tout"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Prech. $ lit"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Regler prech. $"); - - LSTR MSG_PREHEAT_CUSTOM = _UxGT("Prechauf. perso"); - LSTR MSG_COOLDOWN = _UxGT("Refroidir"); - LSTR MSG_LASER_MENU = _UxGT("Controle Laser"); - LSTR MSG_LASER_POWER = _UxGT("Puissance"); - LSTR MSG_SPINDLE_REVERSE = _UxGT("Inverser broches"); - LSTR MSG_SWITCH_PS_ON = _UxGT("Allumer alim."); - LSTR MSG_SWITCH_PS_OFF = _UxGT("Eteindre alim."); - LSTR MSG_EXTRUDE = _UxGT("Extrusion"); - LSTR MSG_RETRACT = _UxGT("Retractation"); - LSTR MSG_MOVE_AXIS = _UxGT("Deplacer un axe"); - LSTR MSG_PROBE_AND_LEVEL = _UxGT("Calibrage auto"); - LSTR MSG_BED_LEVELING = _UxGT("Regler Niv. lit"); - LSTR MSG_LEVEL_BED = _UxGT("Niveau du lit"); - LSTR MSG_BED_TRAMMING = _UxGT("Niveau des coins"); - LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Relever le coin jusqu'a la sonde"); - LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Coins dans la tolerance. Niveau lit."); - LSTR MSG_NEXT_CORNER = _UxGT("Coin suivant"); - LSTR MSG_MESH_EDITOR = _UxGT("Modif. maille"); // 13 car. max - LSTR MSG_EDIT_MESH = _UxGT("Modifier grille"); - LSTR MSG_EDITING_STOPPED = _UxGT("Modification arretee"); - LSTR MSG_PROBING_POINT = _UxGT("Mesure point"); - LSTR MSG_MESH_X = _UxGT("Index X"); - LSTR MSG_MESH_Y = _UxGT("Index Y"); - LSTR MSG_MESH_EDIT_Z = _UxGT("Valeur Z"); - LSTR MSG_CUSTOM_COMMANDS = _UxGT("Commandes perso"); - - LSTR MSG_LCD_TILTING_MESH = _UxGT("Mesure point"); - LSTR MSG_M48_TEST = _UxGT("Ecart sonde Z M48"); - LSTR MSG_M48_DEVIATION = _UxGT("Ecart"); - LSTR MSG_M48_POINT = _UxGT("Point M48"); - LSTR MSG_IDEX_MENU = _UxGT("Mode IDEX"); - LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-Park"); - LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplication"); - LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Copie miroir"); - LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Controle complet"); - LSTR MSG_OFFSETS_MENU = _UxGT("Offsets Outil"); - LSTR MSG_HOTEND_OFFSET_Z = _UxGT("Buse 2 Z"); - LSTR MSG_HOTEND_OFFSET_N = _UxGT("Buse 2 @"); - LSTR MSG_G26_HEATING_BED = _UxGT("G26: Chauffage du lit"); - LSTR MSG_G26_HEATING_NOZZLE = _UxGT("Buse en chauffe..."); - LSTR MSG_G26_MANUAL_PRIME = _UxGT("Amorce manuelle..."); - LSTR MSG_G26_FIXED_LENGTH = _UxGT("Amorce longueur fixe"); - LSTR MSG_G26_PRIME_DONE = _UxGT("Amorce terminee"); - LSTR MSG_G26_CANCELED = _UxGT("G26 annule"); - LSTR MSG_G26_LEAVING = _UxGT("Sortie G26"); - LSTR MSG_UBL_DOING_G29 = _UxGT("G29 en cours"); - LSTR MSG_UBL_TOOLS = _UxGT("Outils UBL"); - LSTR MSG_UBL_MANUAL_MESH = _UxGT("Maillage manuel"); - LSTR MSG_UBL_BC_INSERT = _UxGT("Poser cale & mesurer"); - LSTR MSG_UBL_BC_INSERT2 = _UxGT("Mesure"); - LSTR MSG_UBL_BC_REMOVE = _UxGT("oter et mesurer lit"); - LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Aller au suivant"); - LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Temperature lit"); - LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Temperature lit"); - LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Temperature buse"); - LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Temperature buse"); - LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Modif. grille perso"); - LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Reglage fin"); - LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Terminer"); - LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Creer la grille"); - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Creer grille $"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Impr. grille $"); - LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Creer grille ..."); - LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Mesure a froid"); - LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Ajuster haut. couche"); - LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Hauteur (x0.1mm)"); - LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Verifier grille"); - LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Impr. grille ..."); - LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Continuer grille"); - LSTR MSG_UBL_MESH_LEVELING = _UxGT("Niveau par mailles"); - LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("Niveau a 3 points"); - LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Niveau par grille"); - LSTR MSG_UBL_MESH_LEVEL = _UxGT("Effectuer mesures"); - LSTR MSG_UBL_SIDE_POINTS = _UxGT("Points lateraux"); - LSTR MSG_UBL_MAP_TYPE = _UxGT("Type de carte"); - LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Exporter grille"); - LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Export pour hote"); - LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Export en CSV"); - LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Export sauvegarde"); - LSTR MSG_UBL_INFO_UBL = _UxGT("Infos debug UBL"); - LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Nombre de points"); - LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Remplissage manuel"); - LSTR MSG_UBL_SMART_FILLIN = _UxGT("Remplissage auto"); - LSTR MSG_UBL_FILLIN_MESH = _UxGT("Remplissage grille"); - LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Tout effacer"); - LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Effacer le + pres"); - LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Reglage fin (tous)"); - LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Reglage fin + pres"); - LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Stockage grille"); - LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Slot memoire"); - LSTR MSG_UBL_LOAD_MESH = _UxGT("Charger la grille"); - LSTR MSG_UBL_SAVE_MESH = _UxGT("Stocker la grille"); - LSTR MSG_MESH_LOADED = _UxGT("Grille %i chargee"); - LSTR MSG_MESH_SAVED = _UxGT("Grille %i enreg."); - LSTR MSG_UBL_NO_STORAGE = _UxGT("Pas de memoire"); - LSTR MSG_UBL_SAVE_ERROR = _UxGT("Err: Enreg. UBL"); - LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Err: Ouvrir UBL"); - LSTR MSG_UBL_Z_OFFSET = _UxGT("Z-Offset: "); - LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Decal. Z arrete"); - LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("Assistant UBL"); - LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Mesure a froid"); - LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2.Completer auto."); - LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Verifier grille"); - LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Reglage fin"); - LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Verifier grille"); - LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Reglage fin"); - LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Stocker grille"); - - LSTR MSG_LED_CONTROL = _UxGT("Controle LED"); - LSTR MSG_LIGHTS = _UxGT("Lumiere"); - LSTR MSG_LIGHT_N = _UxGT("Lumiere #{"); - LSTR MSG_LED_PRESETS = _UxGT("Preregl. LED"); - LSTR MSG_SET_LEDS_RED = _UxGT("Rouge"); - LSTR MSG_SET_LEDS_ORANGE = _UxGT("Orange"); - LSTR MSG_SET_LEDS_YELLOW = _UxGT("Jaune"); - LSTR MSG_SET_LEDS_GREEN = _UxGT("Vert"); - LSTR MSG_SET_LEDS_BLUE = _UxGT("Bleu"); - LSTR MSG_SET_LEDS_INDIGO = _UxGT("Indigo"); - LSTR MSG_SET_LEDS_VIOLET = _UxGT("Violet"); - LSTR MSG_SET_LEDS_WHITE = _UxGT("Blanc"); - LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Defaut"); - LSTR MSG_CUSTOM_LEDS = _UxGT("LEDs perso."); - LSTR MSG_INTENSITY_R = _UxGT("Intensite rouge"); - LSTR MSG_INTENSITY_G = _UxGT("Intensite vert"); - LSTR MSG_INTENSITY_B = _UxGT("Intensite bleu"); - LSTR MSG_INTENSITY_W = _UxGT("Intensite blanc"); - LSTR MSG_LED_BRIGHTNESS = _UxGT("Luminosite"); - - LSTR MSG_MOVING = _UxGT("Deplacement..."); - LSTR MSG_FREE_XY = _UxGT("Debloquer XY"); - LSTR MSG_MOVE_X = _UxGT("Deplacer X"); - LSTR MSG_MOVE_Y = _UxGT("Deplacer Y"); - LSTR MSG_MOVE_Z = _UxGT("Deplacer Z"); - LSTR MSG_MOVE_N = _UxGT("Deplacer @"); - LSTR MSG_MOVE_E = _UxGT("Extruder"); - LSTR MSG_MOVE_EN = _UxGT("Extruder *"); - LSTR MSG_HOTEND_TOO_COLD = _UxGT("Buse trop froide"); - LSTR MSG_MOVE_N_MM = _UxGT("Deplacer $mm"); - LSTR MSG_MOVE_N_IN = _UxGT("Deplacer $in"); - LSTR MSG_MOVE_N_DEG = _UxGT("Deplacer $") LCD_STR_DEGREE; - LSTR MSG_SPEED = _UxGT("Vitesse"); - LSTR MSG_MESH_Z_OFFSET = _UxGT("Lit Z"); - LSTR MSG_NOZZLE = _UxGT("Buse"); - LSTR MSG_NOZZLE_N = _UxGT("Buse ~"); - LSTR MSG_BED = _UxGT("Lit"); - LSTR MSG_CHAMBER = _UxGT("Caisson"); - LSTR MSG_FAN_SPEED = _UxGT("Vit. ventil. "); // 15 car. max - LSTR MSG_FAN_SPEED_N = _UxGT("Vit. ventil. ~"); - LSTR MSG_STORED_FAN_N = _UxGT("Vit. enreg. ~"); - LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Extra ventil. "); - LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Extra ventil. ~"); - - LSTR MSG_FLOW = _UxGT("Flux"); - LSTR MSG_FLOW_N = _UxGT("Flux ~"); - LSTR MSG_CONTROL = _UxGT("Controler"); - LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); - LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Facteur"); - LSTR MSG_AUTOTEMP = _UxGT("Temp. Auto."); - LSTR MSG_LCD_ON = _UxGT("Marche"); - LSTR MSG_LCD_OFF = _UxGT("Arret"); - - LSTR MSG_PID_AUTOTUNE = _UxGT("PID Autotune"); - LSTR MSG_PID_AUTOTUNE_E = _UxGT("PID Autotune *"); - LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("Tuning PID termine"); - LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Echec Autotune! E incorrect"); - LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Echec Autotune! Temp. trop haute"); - LSTR MSG_PID_TIMEOUT = _UxGT("Echec Autotune! Oper. expiree"); - - LSTR MSG_SELECT_E = _UxGT("Selectionner *"); - LSTR MSG_ACC = _UxGT("Acceleration"); - LSTR MSG_JERK = _UxGT("Jerk"); - LSTR MSG_VA_JERK = _UxGT("V") STR_A _UxGT(" jerk"); - LSTR MSG_VB_JERK = _UxGT("V") STR_B _UxGT(" jerk"); - LSTR MSG_VC_JERK = _UxGT("V") STR_C _UxGT(" jerk"); - LSTR MSG_VN_JERK = _UxGT("V@ jerk"); - LSTR MSG_VE_JERK = _UxGT("Ve jerk"); - LSTR MSG_MAX_SPEED = _UxGT("Max Velocite"); - LSTR MSG_VMAX_A = _UxGT("Vit. Max ") STR_A; - LSTR MSG_VMAX_B = _UxGT("Vit. Max ") STR_B; - LSTR MSG_VMAX_C = _UxGT("Vit. Max ") STR_C; - LSTR MSG_VMAX_N = _UxGT("Vit. Max @"); - LSTR MSG_VMAX_E = _UxGT("Vit. Max E"); - LSTR MSG_VMAX_EN = _UxGT("Vit. Max *"); - LSTR MSG_JUNCTION_DEVIATION = _UxGT("Deviat. jonct."); - LSTR MSG_VMIN = _UxGT("Vit. Min"); - LSTR MSG_VTRAV_MIN = _UxGT("Vmin course"); - LSTR MSG_ACCELERATION = _UxGT("Acceleration"); - LSTR MSG_AMAX_A = _UxGT("Max Accel. ") STR_A; - LSTR MSG_AMAX_B = _UxGT("Max Accel. ") STR_B; - LSTR MSG_AMAX_C = _UxGT("Max Accel. ") STR_C; - LSTR MSG_AMAX_N = _UxGT("Max Accel. @"); - LSTR MSG_AMAX_E = _UxGT("Max Accel. E"); - LSTR MSG_AMAX_EN = _UxGT("Max Accel. *"); - LSTR MSG_A_RETRACT = _UxGT("Acc.retraction"); - LSTR MSG_A_TRAVEL = _UxGT("Acc.course"); - LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("Frequence max"); - LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("Vitesse min"); - LSTR MSG_STEPS_PER_MM = _UxGT("Pas/mm"); - LSTR MSG_A_STEPS = STR_A _UxGT(" pas/mm"); - LSTR MSG_B_STEPS = STR_B _UxGT(" pas/mm"); - LSTR MSG_C_STEPS = STR_C _UxGT(" pas/mm"); - LSTR MSG_N_STEPS = _UxGT("@ pas/mm"); - LSTR MSG_E_STEPS = _UxGT("E pas/mm"); - LSTR MSG_EN_STEPS = _UxGT("* pas/mm"); - LSTR MSG_TEMPERATURE = _UxGT("Temperature"); - LSTR MSG_MOTION = _UxGT("Mouvement"); - LSTR MSG_FILAMENT = _UxGT("Filament"); - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E en mm") SUPERSCRIPT_THREE; - LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("Limite en mm") SUPERSCRIPT_THREE; - LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("Limite *"); - LSTR MSG_FILAMENT_DIAM = _UxGT("Diametre fil."); - LSTR MSG_FILAMENT_DIAM_E = _UxGT("Diametre fil. *"); - LSTR MSG_FILAMENT_UNLOAD = _UxGT("Retrait mm"); - LSTR MSG_FILAMENT_LOAD = _UxGT("Charger mm"); - LSTR MSG_ADVANCE_K = _UxGT("Avance K"); - LSTR MSG_ADVANCE_K_E = _UxGT("Avance K *"); - LSTR MSG_BRIGHTNESS = _UxGT("Luminosite LCD"); - LSTR MSG_CONTRAST = _UxGT("Contraste LCD"); - LSTR MSG_SCREEN_TIMEOUT = _UxGT("Veille LCD (m)"); - LSTR MSG_BRIGHTNESS_OFF = _UxGT("Eteindre l'ecran LCD"); - LSTR MSG_STORE_EEPROM = _UxGT("Enregistrer config."); - LSTR MSG_LOAD_EEPROM = _UxGT("Charger config."); - LSTR MSG_RESTORE_DEFAULTS = _UxGT("Restaurer defauts"); - LSTR MSG_INIT_EEPROM = _UxGT("Initialiser EEPROM"); - LSTR MSG_SETTINGS_STORED = _UxGT("Config. enregistree"); - LSTR MSG_MEDIA_UPDATE = _UxGT("MaJ Firmware SD"); - LSTR MSG_RESET_PRINTER = _UxGT("RaZ imprimante"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Actualiser"); - LSTR MSG_INFO_SCREEN = _UxGT("Surveiller"); - LSTR MSG_PREPARE = _UxGT("Preparer"); - LSTR MSG_TUNE = _UxGT("Regler"); - LSTR MSG_START_PRINT = _UxGT("Demarrer impression"); - LSTR MSG_BUTTON_NEXT = _UxGT("Suivant"); - LSTR MSG_BUTTON_INIT = _UxGT("Init."); - LSTR MSG_BUTTON_STOP = _UxGT("Stop"); - LSTR MSG_BUTTON_PRINT = _UxGT("Imprimer"); - LSTR MSG_BUTTON_RESET = _UxGT("Reset"); - LSTR MSG_BUTTON_IGNORE = _UxGT("Ignorer"); - LSTR MSG_BUTTON_CANCEL = _UxGT("Annuler"); - LSTR MSG_BUTTON_DONE = _UxGT("Termine"); - LSTR MSG_BUTTON_BACK = _UxGT("Retour"); - LSTR MSG_BUTTON_PROCEED = _UxGT("Proceder"); - LSTR MSG_BUTTON_SKIP = _UxGT("Passer"); - LSTR MSG_PAUSING = _UxGT("Mise en pause..."); - LSTR MSG_PAUSE_PRINT = _UxGT("Pause impression"); - LSTR MSG_RESUME_PRINT = _UxGT("Reprendre impr."); - LSTR MSG_STOP_PRINT = _UxGT("Arreter impr."); - LSTR MSG_PRINTING_OBJECT = _UxGT("Impression objet"); - LSTR MSG_CANCEL_OBJECT = _UxGT("Annuler objet"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Annuler objet {"); - LSTR MSG_OUTAGE_RECOVERY = _UxGT("Recup. coup."); - LSTR MSG_MEDIA_MENU = _UxGT("Impression SD"); - LSTR MSG_NO_MEDIA = _UxGT("Pas de media"); - LSTR MSG_DWELL = _UxGT("Repos..."); - LSTR MSG_USERWAIT = _UxGT("Attente utilis."); - LSTR MSG_PRINT_PAUSED = _UxGT("Impr. en pause"); - LSTR MSG_PRINTING = _UxGT("Impression"); - LSTR MSG_PRINT_ABORTED = _UxGT("Impr. annulee"); - LSTR MSG_NO_MOVE = _UxGT("Moteurs bloques"); - LSTR MSG_KILLED = _UxGT("KILLED"); - LSTR MSG_STOPPED = _UxGT("STOPPE"); - LSTR MSG_CONTROL_RETRACT = _UxGT("Retractation mm"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Ech. retr. mm"); - LSTR MSG_CONTROL_RETRACTF = _UxGT("Vit. retract") LCD_STR_DEGREE; - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Saut Z mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Ret.reprise mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Ech.reprise mm"); - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("V.ret. reprise"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("V.ech. reprise"); - LSTR MSG_AUTORETRACT = _UxGT("Retraction auto"); - LSTR MSG_TOOL_CHANGE = _UxGT("Changement outil"); - LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Augmenter Z"); - LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Vitesse primaire"); - LSTR MSG_SINGLENOZZLE_WIPE_RETRACT = _UxGT("Purge Retract"); - LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Vitesse retract") LCD_STR_DEGREE; - LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Garer Extrudeur"); - LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Vitesse reprise"); - LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Vit. ventil."); - LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Temps ventil."); - LSTR MSG_TOOL_MIGRATION_ON = _UxGT("Auto ON"); - LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("Auto OFF"); - LSTR MSG_TOOL_MIGRATION = _UxGT("Migration d'outil"); - LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("Migration auto"); - LSTR MSG_TOOL_MIGRATION_END = _UxGT("Extrudeur Final"); - LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("Migrer vers *"); - LSTR MSG_NOZZLE_STANDBY = _UxGT("Attente buse"); - LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Longueur retrait"); - LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Longueur Extra"); - LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Longueur de purge"); - LSTR MSG_FILAMENTCHANGE = _UxGT("Changer filament"); - LSTR MSG_FILAMENTCHANGE_E = _UxGT("Changer filament *"); - LSTR MSG_FILAMENTLOAD = _UxGT("Charger filament"); - LSTR MSG_FILAMENTLOAD_E = _UxGT("Charger filament *"); - LSTR MSG_FILAMENTUNLOAD = _UxGT("Retrait filament"); - LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Retrait filament *"); - LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Retirer tout"); - - LSTR MSG_ATTACH_MEDIA = _UxGT("Charger le SD"); - LSTR MSG_ATTACH_SD = _UxGT("Charger le SD"); - LSTR MSG_ATTACH_USB = _UxGT("Charger le USB"); - LSTR MSG_CHANGE_MEDIA = _UxGT("Actualiser media"); - LSTR MSG_RELEASE_MEDIA = _UxGT("Retirer le media"); - LSTR MSG_RUN_AUTOFILES = _UxGT("Exec. auto.gcode"); - - LSTR MSG_ZPROBE_OUT = _UxGT("Sonde Z hors lit"); - LSTR MSG_SKEW_FACTOR = _UxGT("Facteur ecart"); - LSTR MSG_BLTOUCH = _UxGT("BLTouch"); - LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Self-Test"); - LSTR MSG_BLTOUCH_RESET = _UxGT("Reset"); - LSTR MSG_BLTOUCH_STOW = _UxGT("Ranger"); - LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Deployer"); - LSTR MSG_BLTOUCH_SW_MODE = _UxGT("Mode SW"); - LSTR MSG_BLTOUCH_5V_MODE = _UxGT("Mode 5V"); - LSTR MSG_BLTOUCH_OD_MODE = _UxGT("Mode OD"); - LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("Appliquer Mode"); - LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Mise en 5V"); - LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Mise en OD"); - LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Afficher Mode"); - LSTR MSG_TOUCHMI_PROBE = _UxGT("TouchMI"); - LSTR MSG_TOUCHMI_INIT = _UxGT("Init. TouchMI"); - LSTR MSG_TOUCHMI_ZTEST = _UxGT("Test decalage Z"); - LSTR MSG_TOUCHMI_SAVE = _UxGT("Sauvegarde"); - LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("Deployer TouchMI"); - LSTR MSG_MANUAL_DEPLOY = _UxGT("Deployer Sonde Z"); - LSTR MSG_MANUAL_STOW = _UxGT("Ranger Sonde Z"); - LSTR MSG_HOME_FIRST = _UxGT("Origine %s Premier"); - LSTR MSG_ZPROBE_OFFSETS = _UxGT("Position sonde Z"); - LSTR MSG_ZPROBE_XOFFSET = _UxGT("Decalage X"); - LSTR MSG_ZPROBE_YOFFSET = _UxGT("Decalage Y"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Decalage Z"); - LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Decalage @"); - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Babystep sonde Z"); - LSTR MSG_BABYSTEP_X = _UxGT("Babystep X"); - LSTR MSG_BABYSTEP_Y = _UxGT("Babystep Y"); - LSTR MSG_BABYSTEP_Z = _UxGT("Babystep Z"); - LSTR MSG_BABYSTEP_N = _UxGT("Babystep @"); - LSTR MSG_BABYSTEP_TOTAL = _UxGT("Total"); - LSTR MSG_ENDSTOP_ABORT = _UxGT("Butee abandon"); - LSTR MSG_ERR_HEATING_FAILED = _UxGT("Err de chauffe"); - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Err TEMP. REDONDANTE"); - LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("Err THERMIQUE"); - LSTR MSG_ERR_MAXTEMP = _UxGT("Err TEMP. MAX"); - LSTR MSG_ERR_MINTEMP = _UxGT("Err TEMP. MIN"); - - LSTR MSG_HALTED = _UxGT("IMPR. STOPPEE"); - LSTR MSG_PLEASE_RESET = _UxGT("Redemarrer SVP"); - LSTR MSG_SHORT_DAY = _UxGT("j"); // One character only - LSTR MSG_SHORT_HOUR = _UxGT("h"); // One character only - LSTR MSG_SHORT_MINUTE = _UxGT("m"); // One character only - - LSTR MSG_HEATING = _UxGT("en chauffe..."); - LSTR MSG_COOLING = _UxGT("Refroidissement"); - LSTR MSG_BED_HEATING = _UxGT("Lit en chauffe..."); - LSTR MSG_BED_COOLING = _UxGT("Refroid. du lit..."); - LSTR MSG_PROBE_HEATING = _UxGT("Probe en chauffe..."); - LSTR MSG_PROBE_COOLING = _UxGT("Refroid. Probe..."); - LSTR MSG_CHAMBER_HEATING = _UxGT("Chauffe caisson..."); - LSTR MSG_CHAMBER_COOLING = _UxGT("Refroid. caisson..."); - LSTR MSG_DELTA_CALIBRATE = _UxGT("Calibration Delta"); - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Calibrer X"); - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Calibrer Y"); - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Calibrer Z"); - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibrer centre"); - LSTR MSG_DELTA_SETTINGS = _UxGT("Reglages Delta"); - LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Calibration Auto"); - LSTR MSG_DELTA_DIAG_ROD = _UxGT("Diagonale"); - LSTR MSG_DELTA_HEIGHT = _UxGT("Hauteur"); - LSTR MSG_DELTA_RADIUS = _UxGT("Rayon"); - - LSTR MSG_INFO_MENU = _UxGT("Infos imprimante"); - LSTR MSG_INFO_PRINTER_MENU = _UxGT("Infos imprimante"); - LSTR MSG_3POINT_LEVELING = _UxGT("Niveau a 3 points"); - LSTR MSG_LINEAR_LEVELING = _UxGT("Niveau lineaire"); - LSTR MSG_BILINEAR_LEVELING = _UxGT("Niveau bilineaire"); - LSTR MSG_UBL_LEVELING = _UxGT("Niveau lit unifie"); - LSTR MSG_MESH_LEVELING = _UxGT("Niveau par grille"); - LSTR MSG_MESH_DONE = _UxGT("Niveau termine"); - LSTR MSG_INFO_STATS_MENU = _UxGT("Stats. imprimante"); - LSTR MSG_INFO_BOARD_MENU = _UxGT("Infos carte"); - LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Thermistances"); - LSTR MSG_INFO_EXTRUDERS = _UxGT("Extrudeurs"); - LSTR MSG_INFO_BAUDRATE = _UxGT("Bauds"); - LSTR MSG_INFO_PROTOCOL = _UxGT("Protocole"); - LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Protection inactive"); - LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Protection active"); - LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Hotend Idle Timeout"); - - LSTR MSG_CASE_LIGHT = _UxGT("Lumiere caisson"); - LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Luminosite"); - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Imprimante incorrecte"); - - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Impressions"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Terminees"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("+ long"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Filament"); - - LSTR MSG_INFO_MIN_TEMP = _UxGT("Temp Min"); - LSTR MSG_INFO_MAX_TEMP = _UxGT("Temp Max"); - LSTR MSG_INFO_PSU = _UxGT("Alim."); - LSTR MSG_DRIVE_STRENGTH = _UxGT("Puiss. moteur "); - LSTR MSG_DAC_PERCENT_N = _UxGT("Driver @ %"); - LSTR MSG_DAC_EEPROM_WRITE = _UxGT("DAC EEPROM sauv."); - LSTR MSG_ERROR_TMC = _UxGT("ERREUR CONNEXION TMC"); - - LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("CHANGER FILAMENT"); - LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("IMPR. PAUSE"); - LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("CHARGER FIL"); - LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("DECHARGER FIL"); - LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("OPTIONS REPRISE:"); - LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Purger encore"); - LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Reprendre impr."); - LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Buse: "); - LSTR MSG_RUNOUT_SENSOR = _UxGT("Capteur fil."); - LSTR MSG_KILL_HOMING_FAILED = _UxGT("Echec origine"); - LSTR MSG_LCD_PROBING_FAILED = _UxGT("Echec sonde"); - - LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("MAJ firmware MMU!!"); - LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("CHOISIR FILAMENT"); - LSTR MSG_MMU2_MENU = _UxGT("MMU"); - LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU ne repond plus"); - LSTR MSG_MMU2_RESUME = _UxGT("Continuer Imp. MMU"); - LSTR MSG_MMU2_RESUMING = _UxGT("Reprise MMU..."); - LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("Charge dans MMU"); - LSTR MSG_MMU2_LOAD_ALL = _UxGT("Charger tous dans MMU"); - LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Charger dans buse"); - LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("Ejecter fil. du MMU"); - LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("Ejecter fil. ~"); - LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Retrait filament"); - LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Chargem. fil. %i..."); - LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Ejection fil..."); - LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Retrait fil...."); - LSTR MSG_MMU2_ALL = _UxGT("Tous"); - LSTR MSG_MMU2_FILAMENT_N = _UxGT("Filament ~"); - LSTR MSG_MMU2_RESET = _UxGT("Reinit. MMU"); - LSTR MSG_MMU2_RESETTING = _UxGT("Reinit. MMU..."); - LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Retrait, click"); - - LSTR MSG_MIX_COMPONENT_N = _UxGT("Composante {"); - LSTR MSG_MIXER = _UxGT("Mixeur"); - LSTR MSG_GRADIENT = _UxGT("Degrade"); - LSTR MSG_FULL_GRADIENT = _UxGT("Degrade complet"); - LSTR MSG_TOGGLE_MIX = _UxGT("Toggle mix"); - LSTR MSG_CYCLE_MIX = _UxGT("Cycle mix"); - LSTR MSG_GRADIENT_MIX = _UxGT("Mix degrade"); - LSTR MSG_REVERSE_GRADIENT = _UxGT("Inverser degrade"); - LSTR MSG_ACTIVE_VTOOL = _UxGT("Active V-tool"); - LSTR MSG_START_VTOOL = _UxGT("Debut V-tool"); - LSTR MSG_END_VTOOL = _UxGT(" Fin V-tool"); - LSTR MSG_GRADIENT_ALIAS = _UxGT("Alias V-tool"); - LSTR MSG_RESET_VTOOLS = _UxGT("Reinit. V-tools"); - LSTR MSG_COMMIT_VTOOL = _UxGT("Valider Mix V-tool"); - LSTR MSG_VTOOLS_RESET = _UxGT("V-tools reinit. ok"); - LSTR MSG_START_Z = _UxGT("Debut Z:"); - LSTR MSG_END_Z = _UxGT(" Fin Z:"); - LSTR MSG_GAMES = _UxGT("Jeux"); - LSTR MSG_BRICKOUT = _UxGT("Casse-briques"); - LSTR MSG_INVADERS = _UxGT("Invaders"); - LSTR MSG_SNAKE = _UxGT("Sn4k3"); - LSTR MSG_MAZE = _UxGT("Labyrinthe"); - - LSTR MSG_BAD_PAGE = _UxGT("Erreur index page"); - LSTR MSG_BAD_PAGE_SPEED = _UxGT("Erreur vitesse page"); - - // Up to 2 lines allowed - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Clic pour continuer")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Patience...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Inserer fil.")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Chauffer ?")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Chauffage...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Retrait fil...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Chargement...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Purge...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Terminer ?")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Reprise...")); - - LSTR MSG_TMC_CURRENT = _UxGT("Courant driver"); - LSTR MSG_TMC_HYBRID_THRS = _UxGT("Seuil hybride"); - LSTR MSG_TMC_HOMING_THRS = _UxGT("Home sans capteur"); - LSTR MSG_TMC_STEPPING_MODE = _UxGT("Mode pas a pas"); - LSTR MSG_TMC_STEALTHCHOP = _UxGT("StealthChop"); - - LSTR MSG_SERVICE_RESET = _UxGT("Reinit."); - LSTR MSG_SERVICE_IN = _UxGT(" dans:"); - LSTR MSG_BACKLASH_CORRECTION = _UxGT("Correction"); - LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Lissage"); - - LSTR MSG_LEVEL_X_AXIS = _UxGT("Niveau axe X"); - LSTR MSG_AUTO_CALIBRATE = _UxGT("Etalon. auto."); - LSTR MSG_FTDI_HEATER_TIMEOUT = _UxGT("En protection, temp. reduite. Ok pour rechauffer et continuer."); - LSTR MSG_HEATER_TIMEOUT = _UxGT("En protection"); - LSTR MSG_REHEAT = _UxGT("Chauffer"); - LSTR MSG_REHEATING = _UxGT("Rechauffe..."); - - LSTR MSG_PROBE_WIZARD = _UxGT("Assistant Sonde Z"); - LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Mesure reference"); - LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Depl. vers pos"); - - LSTR MSG_SOUND = _UxGT("Sons"); - - LSTR MSG_TOP_LEFT = _UxGT("Coin haut gauche"); - LSTR MSG_BOTTOM_LEFT = _UxGT("Coin bas gauche"); - LSTR MSG_TOP_RIGHT = _UxGT("Coin haut droit"); - LSTR MSG_BOTTOM_RIGHT = _UxGT("Coin bas droit"); - LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Calibration terminee"); - LSTR MSG_CALIBRATION_FAILED = _UxGT("Echec de l'etalonnage"); - - LSTR MSG_SD_CARD = _UxGT("Carte SD"); - LSTR MSG_USB_DISK = _UxGT("Cle USB"); - - // DGUS-Specific message strings, not used elsewhere - LSTR DGUS_MSG_NOT_WHILE_PRINTING = _UxGT("Impossible pendant une impression"); - LSTR DGUS_MSG_NOT_WHILE_IDLE = _UxGT("Impossible tant que l'imprimante est en attente"); - LSTR DGUS_MSG_NO_FILE_SELECTED = _UxGT("Aucun fichier selectionne"); - LSTR DGUS_MSG_TEMP_TOO_LOW = _UxGT("Temperature trop basse"); - LSTR DGUS_MSG_EXECUTING_COMMAND = _UxGT("Execution de la commande..."); - LSTR DGUS_MSG_BED_PID_DISABLED = _UxGT("Bed PID desactive"); - LSTR DGUS_MSG_PID_DISABLED = _UxGT("PID desactive"); - LSTR DGUS_MSG_PID_AUTOTUNING = _UxGT("Autocalibrage du PID..."); - LSTR DGUS_MSG_INVALID_RECOVERY_DATA = _UxGT("Donnees de recuperation non valides"); - - LSTR DGUS_MSG_HOMING_REQUIRED = _UxGT("Retour a l'origine necessaire..."); - LSTR DGUS_MSG_BUSY = _UxGT("Occupe"); - LSTR DGUS_MSG_HOMING = _UxGT("Retour a l'origine..."); - LSTR DGUS_MSG_FW_OUTDATED = _UxGT("Mise a jour DWIN GUI/OS necessaire"); - LSTR DGUS_MSG_ABL_REQUIRED = _UxGT("Nivellement du bed necessaire"); - LSTR DGUS_MSG_PROBING_FAILED = _UxGT("Echec du nivellement..."); - LSTR DGUS_MSG_PROBING_SUCCESS = _UxGT("Nivellement realise avec succes"); - LSTR DGUS_MSG_RESET_EEPROM = _UxGT("Reinitialisation de l'EEPROM"); - LSTR DGUS_MSG_WRITE_EEPROM_FAILED = _UxGT("Echec ecriture de l'EEPROM"); - LSTR DGUS_MSG_READ_EEPROM_FAILED = _UxGT("Echec lecture de l'EEPROM"); - LSTR DGUS_MSG_FILAMENT_RUNOUT = _UxGT("Sortie de filament E%d"); - + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" prete."); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = _UxGT("Media insere"); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = _UxGT("Media retire"); // (MEDIA_TYPE_EN) Removed + LSTR MSG_LCD_ENDSTOPS = _UxGT("Butees"); // Endstops + LSTR MSG_MAIN_MENU = _UxGT("Menu principal"); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("Arreter moteurs"); // Disable Steppers + LSTR MSG_HOMING = _UxGT("Origine"); // Homing + LSTR MSG_AUTO_HOME = _UxGT("Origine auto"); // Auto Home + LSTR MSG_AUTO_HOME_X = _UxGT("Origine X auto"); // Home X + LSTR MSG_AUTO_HOME_Y = _UxGT("Origine Y auto"); // Home Y + LSTR MSG_AUTO_HOME_Z = _UxGT("Origine Z auto"); // Home Z + LSTR MSG_LEVEL_BED_HOMING = _UxGT("Origine XYZ..."); // Homing XYZ + LSTR MSG_LEVEL_BED_WAITING = _UxGT("Clic pour commencer"); // Click to Begin + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Point suivant"); // Next Point + LSTR MSG_LEVEL_BED_DONE = _UxGT("Mise a niveau OK!"); // Leveling Done! + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Regl. decal origine"); // Set Home Offsets + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Decalages appliques"); // Offsets Applied + LSTR MSG_PREHEAT_1 = _UxGT("Prechauffage ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = _UxGT("Prechauffage ") PREHEAT_1_LABEL " ~"; // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = _UxGT("Prech. ") PREHEAT_1_LABEL _UxGT(" buse"); // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = _UxGT("Prech. ") PREHEAT_1_LABEL _UxGT(" buse ~"); // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_1_ALL = _UxGT("Prech. ") PREHEAT_1_LABEL _UxGT(" Tout"); // Preheat (PREHEAT_1_LABEL) All + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Prech. ") PREHEAT_1_LABEL _UxGT(" lit"); // Preheat (PREHEAT_1_LABEL) Bed + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Regler prech. ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) Conf + LSTR MSG_PREHEAT_M = _UxGT("Prechauffage $"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("Prechauffage $ ~"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("Prech. $ buse"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("Prech. $ buse ~"); // Preheat $ End ~ + LSTR MSG_PREHEAT_M_ALL = _UxGT("Prech. $ Tout"); // Preheat $ All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Prech. $ lit"); // Preheat $ Bed + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Regler prech. $"); // Preheat $ Conf + LSTR MSG_COOLDOWN = _UxGT("Refroidir"); // Cooldown + LSTR MSG_SWITCH_PS_ON = _UxGT("Allumer alim."); // Switch Power On + LSTR MSG_SWITCH_PS_OFF = _UxGT("Eteindre alim."); // Switch Power Off + LSTR MSG_EXTRUDE = _UxGT("Extrusion"); // Extrude + LSTR MSG_RETRACT = _UxGT("Retractation"); // Retract + LSTR MSG_MOVE_AXIS = _UxGT("Deplacer un axe"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("Calibrage auto"); // Probe and Level + LSTR MSG_BED_LEVELING = _UxGT("Regler Niv. lit"); // Bed Leveling + LSTR MSG_LEVEL_BED = _UxGT("Niveau du lit"); // Level Bed + LSTR MSG_MOVE_X = _UxGT("Deplacer X"); // Move X + LSTR MSG_MOVE_Y = _UxGT("Deplacer Y"); // Move Y + LSTR MSG_MOVE_Z = _UxGT("Deplacer Z"); // Move Z + LSTR MSG_MOVE_N = _UxGT("Deplacer @"); // Move @ + LSTR MSG_MOVE_E = _UxGT("Extruder"); // Move Extruder + LSTR MSG_MOVE_EN = _UxGT("Extruder *"); // Move * + LSTR MSG_MOVE_N_MM = _UxGT("Deplacer $mm"); // Move $mm + LSTR MSG_MOVE_N_IN = _UxGT("Deplacer $in"); // Move $in + LSTR MSG_MOVE_N_DEG = _UxGT("Deplacer $") LCD_STR_DEGREE; // Move $(LCD_STR_DEGREE) + LSTR MSG_SPEED = _UxGT("Vitesse"); // Speed + LSTR MSG_MESH_Z_OFFSET = _UxGT("Lit Z"); // Bed Z + LSTR MSG_NOZZLE = _UxGT("Buse"); // Nozzle + LSTR MSG_NOZZLE_N = _UxGT("Buse ~"); // Nozzle ~ + LSTR MSG_BED = _UxGT("Lit"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("Vit. ventil. "); // Fan Speed + LSTR MSG_FAN_SPEED_N = _UxGT("Vit. ventil. ~"); // Fan Speed ~ + LSTR MSG_FLOW = _UxGT("Flux"); // Flow + LSTR MSG_FLOW_N = _UxGT("Flux ~"); // Flow ~ + LSTR MSG_CONTROL = _UxGT("Controler"); // Control + LSTR MSG_AUTOTEMP = _UxGT("Temp. Auto."); // Autotemp + LSTR MSG_SELECT_E = _UxGT("Selectionner *"); // Select * + LSTR MSG_ACC = _UxGT("Acceleration"); // Accel + LSTR MSG_VTRAV_MIN = _UxGT("Vmin course"); // Min Travel Speed + LSTR MSG_ACCELERATION = _UxGT("Acceleration"); // Acceleration + LSTR MSG_AMAX_A = _UxGT("Max Accel. ") STR_A; // Max (STR_A) Accel + LSTR MSG_AMAX_B = _UxGT("Max Accel. ") STR_B; // Max (STR_B) Accel + LSTR MSG_AMAX_C = _UxGT("Max Accel. ") STR_C; // Max (STR_C) Accel + LSTR MSG_AMAX_N = _UxGT("Max Accel. @"); // Max @ Accel + LSTR MSG_AMAX_E = _UxGT("Max Accel. E"); // Max E Accel + LSTR MSG_AMAX_EN = _UxGT("Max Accel. *"); // Max * Accel + LSTR MSG_A_RETRACT = _UxGT("Acc.retraction"); // Retract Accel + LSTR MSG_A_TRAVEL = _UxGT("Acc.course"); // Travel Accel + LSTR MSG_STEPS_PER_MM = _UxGT("Pas/mm"); // Steps/mm + LSTR MSG_A_STEPS = STR_A _UxGT(" pas/mm"); // (STR_A) Steps/mm + LSTR MSG_B_STEPS = STR_B _UxGT(" pas/mm"); // (STR_B) Steps/mm + LSTR MSG_C_STEPS = STR_C _UxGT(" pas/mm"); // (STR_C) Steps/mm + LSTR MSG_N_STEPS = _UxGT("@ pas/mm"); // @ steps/mm + LSTR MSG_E_STEPS = _UxGT("E pas/mm"); // E steps/mm + LSTR MSG_EN_STEPS = _UxGT("* pas/mm"); // * Steps/mm + LSTR MSG_TEMPERATURE = _UxGT("Temperature"); // Temperature + LSTR MSG_MOTION = _UxGT("Mouvement"); // Motion + LSTR MSG_FILAMENT = _UxGT("Filament"); // Filament + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E en mm") SUPERSCRIPT_THREE; // E in mm(SUPERSCRIPT_THREE) + LSTR MSG_FILAMENT_DIAM = _UxGT("Diametre fil."); // Fil. Dia. + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Diametre fil. *"); // Fil. Dia. * + LSTR MSG_CONTRAST = _UxGT("Contraste LCD"); // LCD Contrast + LSTR MSG_STORE_EEPROM = _UxGT("Enregistrer config."); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("Charger config."); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("Restaurer defauts"); // Restore Defaults + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Actualiser"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT("Surveiller"); // Info Screen + LSTR MSG_PREPARE = _UxGT("Preparer"); // Prepare + LSTR MSG_TUNE = _UxGT("Regler"); // Tune + LSTR MSG_PAUSE_PRINT = _UxGT("Pause impression"); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("Reprendre impr."); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("Arreter impr."); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("Impression SD"); // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = _UxGT("Pas de media"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_DWELL = _UxGT("Repos..."); // Sleep... + LSTR MSG_USERWAIT = _UxGT("Attente utilis."); // Click to Resume... + LSTR MSG_PRINT_ABORTED = _UxGT("Impr. annulee"); // Print Aborted + LSTR MSG_NO_MOVE = _UxGT("Moteurs bloques"); // No Move. + LSTR MSG_KILLED = _UxGT("KILLED"); // KILLED. + LSTR MSG_STOPPED = _UxGT("STOPPE"); // STOPPED. + LSTR MSG_CONTROL_RETRACT = _UxGT("Retractation mm"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Ech. retr. mm"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACTF = _UxGT("Vit. retract") LCD_STR_DEGREE; // Retract V + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Saut Z mm"); // Hop mm + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Ret.reprise mm"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Ech.reprise mm"); // S Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("V.ret. reprise"); // Unretract V + LSTR MSG_AUTORETRACT = _UxGT("Retraction auto"); // Auto-Retract + LSTR MSG_FILAMENTCHANGE = _UxGT("Changer filament"); // Change Filament + LSTR MSG_FILAMENTCHANGE_E = _UxGT("Changer filament *"); // Change * Filament + LSTR MSG_ATTACH_MEDIA = _UxGT("Charger le SD"); // Attach (MEDIA_TYPE_EN) + LSTR MSG_ATTACH_SD = _UxGT("Charger le SD"); // Attach SD Card + LSTR MSG_ATTACH_USB = _UxGT("Charger le USB"); // Attach USB Drive + LSTR MSG_CHANGE_MEDIA = _UxGT("Actualiser media"); // Refresh (MEDIA_TYPE_EN) + LSTR MSG_RUN_AUTOFILES = _UxGT("Exec. auto.gcode"); // Run Autofiles + LSTR MSG_ZPROBE_OUT = _UxGT("Sonde Z hors lit"); // Z Probe Past Bed + LSTR MSG_BLTOUCH_RESET = _UxGT("Reset"); // Reset + LSTR MSG_ZPROBE_XOFFSET = _UxGT("Decalage X"); // Probe X Offset + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Decalage Y"); // Probe Y Offset + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Decalage Z"); // Probe Z Offset + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Decalage @"); // Probe @ Offset + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Babystep sonde Z"); // Babystep Probe Z + LSTR MSG_BABYSTEP_X = _UxGT("Babystep X"); // Babystep X + LSTR MSG_BABYSTEP_Y = _UxGT("Babystep Y"); // Babystep Y + LSTR MSG_BABYSTEP_Z = _UxGT("Babystep Z"); // Babystep Z + LSTR MSG_BABYSTEP_N = _UxGT("Babystep @"); // Babystep @ + LSTR MSG_ENDSTOP_ABORT = _UxGT("Butee abandon"); // Endstop Abort + LSTR MSG_ERR_HEATING_FAILED = _UxGT("Err de chauffe"); // Heating Failed + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Err TEMP. REDONDANTE"); // Err: REDUNDANT TEMP + LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("Err THERMIQUE"); // THERMAL RUNAWAY + LSTR MSG_ERR_MAXTEMP = _UxGT("Err TEMP. MAX"); // Err: MAXTEMP + LSTR MSG_ERR_MINTEMP = _UxGT("Err TEMP. MIN"); // Err: MINTEMP + LSTR MSG_HALTED = _UxGT("IMPR. STOPPEE"); // PRINTER HALTED + LSTR MSG_PLEASE_RESET = _UxGT("Redemarrer SVP"); // Please Reset + LSTR MSG_HEATING = _UxGT("en chauffe..."); // Heating... + LSTR MSG_BED_HEATING = _UxGT("Lit en chauffe..."); // Bed Heating... + LSTR MSG_DELTA_CALIBRATE = _UxGT("Calibration Delta"); // Delta Calibration + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Calibrer X"); // Calibrate X + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Calibrer Y"); // Calibrate Y + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Calibrer Z"); // Calibrate Z + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibrer centre"); // Calibrate Center + LSTR MSG_INFO_MENU = _UxGT("Infos imprimante"); // About Printer + LSTR MSG_INFO_PRINTER_MENU = _UxGT("Infos imprimante"); // Printer Info + LSTR MSG_INFO_STATS_MENU = _UxGT("Stats. imprimante"); // Stats + LSTR MSG_INFO_BOARD_MENU = _UxGT("Infos carte"); // Board Info + LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Thermistances"); // Thermistors + LSTR MSG_INFO_EXTRUDERS = _UxGT("Extrudeurs"); // Extruders + LSTR MSG_INFO_BAUDRATE = _UxGT("Bauds"); // Baud + LSTR MSG_INFO_PROTOCOL = _UxGT("Protocole"); // Protocol + LSTR MSG_CASE_LIGHT = _UxGT("Lumiere caisson"); // Case Light + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Impressions"); // Prints + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Terminees"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); // Total + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("+ long"); // Longest + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Filament"); // Extruded + LSTR MSG_INFO_MIN_TEMP = _UxGT("Temp Min"); // Min Temp + LSTR MSG_INFO_MAX_TEMP = _UxGT("Temp Max"); // Max Temp + LSTR MSG_INFO_PSU = _UxGT("Alim."); // PSU + LSTR MSG_DRIVE_STRENGTH = _UxGT("Puiss. moteur "); // Drive Strength + LSTR MSG_DAC_EEPROM_WRITE = _UxGT("DAC EEPROM sauv."); // DAC EEPROM Write + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Reprendre impr."); // Continue + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Patience...")); // |Please wait... + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Inserer fil.")); // |Insert and Click + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Retrait fil...")); // |Ejecting... + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Chargement...")); // |Loading... + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Reprise...")); // |Resuming... + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); // (LCD_STR_THERMOMETER) Min + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); // (LCD_STR_THERMOMETER) Max + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Facteur"); // (LCD_STR_THERMOMETER) Fact + LSTR MSG_LCD_ON = _UxGT("Marche"); // On + LSTR MSG_LCD_OFF = _UxGT("Arret"); // Off + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Imprimante incorrecte"); // INCORRECT PRINTER + LSTR MSG_DEBUG_MENU = _UxGT("Menu debug"); // Debug Menu + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Test barre progress."); // Progress Bar Test + LSTR MSG_MOVING = _UxGT("Deplacement..."); // Moving... + LSTR MSG_FREE_XY = _UxGT("Debloquer XY"); // Free XY + LSTR MSG_HOME_FIRST = _UxGT("Origine %s Premier"); // Home %s First + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Chauffage...")); // |Heating... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Chauffer ?")); // |Click to heat + LSTR MSG_YES = _UxGT("Oui"); // YES + LSTR MSG_NO = _UxGT("Non"); // NO + LSTR MSG_BACK = _UxGT("Retour"); // Back + LSTR MSG_MEDIA_ABORTING = _UxGT("Annulation..."); // Aborting... + LSTR MSG_MEDIA_READ_ERROR = _UxGT("Err lecture media"); // (MEDIA_TYPE_EN) read error + LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB debranche"); // USB device removed + LSTR MSG_USB_FD_USB_FAILED = _UxGT("Erreur media USB"); // USB start failed + LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Butees SW"); // Soft Endstops + LSTR MSG_ADVANCED_SETTINGS = _UxGT("Config. avancee"); // Advanced Settings + LSTR MSG_CONFIGURATION = _UxGT("Configuration"); // Configuration + LSTR MSG_AUTO_Z_ALIGN = _UxGT("Align. Z auto"); // Auto Z-Align + LSTR MSG_Z_FADE_HEIGHT = _UxGT("Hauteur lissee"); // Fade Height + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Prechauf. perso"); // Preheat Custom + LSTR MSG_LASER_MENU = _UxGT("Controle Laser"); // Laser Control + LSTR MSG_LASER_POWER = _UxGT("Puissance"); // Laser Power + LSTR MSG_SPINDLE_REVERSE = _UxGT("Inverser broches"); // Spindle Reverse + LSTR MSG_BED_TRAMMING = _UxGT("Niveau des coins"); // Bed Tramming + LSTR MSG_NEXT_CORNER = _UxGT("Coin suivant"); // Next Corner + LSTR MSG_MESH_EDITOR = _UxGT("Modif. maille"); // Mesh Editor + LSTR MSG_EDIT_MESH = _UxGT("Modifier grille"); // Edit Mesh + LSTR MSG_EDITING_STOPPED = _UxGT("Modification arretee"); // Mesh Editing Stopped + LSTR MSG_PROBING_POINT = _UxGT("Mesure point"); // Probing Point + LSTR MSG_MESH_X = _UxGT("Index X"); // Index X + LSTR MSG_MESH_Y = _UxGT("Index Y"); // Index Y + LSTR MSG_MESH_EDIT_Z = _UxGT("Valeur Z"); // Z Value + LSTR MSG_CUSTOM_COMMANDS = _UxGT("Commandes perso"); // Custom Commands + LSTR MSG_M48_TEST = _UxGT("Ecart sonde Z M48"); // M48 Probe Test + LSTR MSG_M48_POINT = _UxGT("Point M48"); // M48 Point + LSTR MSG_M48_DEVIATION = _UxGT("Ecart"); // Deviation + LSTR MSG_IDEX_MENU = _UxGT("Mode IDEX"); // IDEX Mode + LSTR MSG_OFFSETS_MENU = _UxGT("Offsets Outil"); // Tool Offsets + LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-Park"); // Auto-Park + LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplication"); // Duplication + LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Copie miroir"); // Mirrored Copy + LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Controle complet"); // Full Control + LSTR MSG_HOTEND_OFFSET_Z = _UxGT("Buse 2 Z"); // 2nd Nozzle Z + LSTR MSG_HOTEND_OFFSET_N = _UxGT("Buse 2 @"); // 2nd Nozzle @ + LSTR MSG_UBL_DOING_G29 = _UxGT("G29 en cours"); // Doing G29 + LSTR MSG_UBL_TOOLS = _UxGT("Outils UBL"); // UBL Tools + LSTR MSG_LCD_TILTING_MESH = _UxGT("Mesure point"); // Tilting Point + LSTR MSG_UBL_MANUAL_MESH = _UxGT("Maillage manuel"); // Manually Build Mesh + LSTR MSG_UBL_BC_INSERT = _UxGT("Poser cale & mesurer"); // Place Shim & Measure + LSTR MSG_UBL_BC_INSERT2 = _UxGT("Mesure"); // Measure + LSTR MSG_UBL_BC_REMOVE = _UxGT("oter et mesurer lit"); // Remove & Measure Bed + LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Aller au suivant"); // Moving to next + LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Temperature lit"); // Bed Temp + LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Temperature lit"); // Bed Temp + LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Temperature buse"); // Hotend Temp + LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Temperature buse"); // Hotend Temp + LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Modif. grille perso"); // Edit Custom Mesh + LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Reglage fin"); // Fine Tuning Mesh + LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Terminer"); // Done Editing Mesh + LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Creer grille ..."); // Build Custom Mesh + LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Creer la grille"); // Build Mesh + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Creer grille $"); // Build Mesh ($) + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Impr. grille $"); // Validate Mesh ($) + LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Mesure a froid"); // Build Cold Mesh + LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Ajuster haut. couche"); // Adjust Mesh Height + LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Hauteur (x0.1mm)"); // Height Amount + LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Verifier grille"); // Validate Mesh + LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Impr. grille ..."); // Validate Custom Mesh + LSTR MSG_G26_HEATING_BED = _UxGT("G26: Chauffage du lit"); // G26 Heating Bed + LSTR MSG_G26_HEATING_NOZZLE = _UxGT("Buse en chauffe..."); // G26 Heating Nozzle + LSTR MSG_G26_MANUAL_PRIME = _UxGT("Amorce manuelle..."); // Manual priming... + LSTR MSG_G26_FIXED_LENGTH = _UxGT("Amorce longueur fixe"); // Fixed Length Prime + LSTR MSG_G26_PRIME_DONE = _UxGT("Amorce terminee"); // Done Priming + LSTR MSG_G26_CANCELED = _UxGT("G26 annule"); // G26 Canceled + LSTR MSG_G26_LEAVING = _UxGT("Sortie G26"); // Leaving G26 + LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Continuer grille"); // Continue Bed Mesh + LSTR MSG_UBL_MESH_LEVELING = _UxGT("Niveau par mailles"); // Mesh Leveling + LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("Niveau a 3 points"); // 3-Point Leveling + LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Niveau par grille"); // Grid Mesh Leveling + LSTR MSG_UBL_MESH_LEVEL = _UxGT("Effectuer mesures"); // Level Mesh + LSTR MSG_UBL_SIDE_POINTS = _UxGT("Points lateraux"); // Side Points + LSTR MSG_UBL_MAP_TYPE = _UxGT("Type de carte"); // Map Type + LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Exporter grille"); // Output Mesh Map + LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Export pour hote"); // Output for Host + LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Export en CSV"); // Output for CSV + LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Export sauvegarde"); // Off Printer Backup + LSTR MSG_UBL_INFO_UBL = _UxGT("Infos debug UBL"); // Output UBL Info + LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Nombre de points"); // Fill-in Amount + LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Remplissage manuel"); // Manual Fill-in + LSTR MSG_UBL_SMART_FILLIN = _UxGT("Remplissage auto"); // Smart Fill-in + LSTR MSG_UBL_FILLIN_MESH = _UxGT("Remplissage grille"); // Fill-in Mesh + LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Tout effacer"); // Invalidate All + LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Effacer le + pres"); // Invalidate Closest + LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Reglage fin (tous)"); // Fine Tune All + LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Reglage fin + pres"); // Fine Tune Closest + LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Stockage grille"); // Mesh Storage + LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Slot memoire"); // Memory Slot + LSTR MSG_UBL_LOAD_MESH = _UxGT("Charger la grille"); // Load Bed Mesh + LSTR MSG_UBL_SAVE_MESH = _UxGT("Stocker la grille"); // Save Bed Mesh + LSTR MSG_MESH_LOADED = _UxGT("Grille %i chargee"); // Mesh %i Loaded + LSTR MSG_MESH_SAVED = _UxGT("Grille %i enreg."); // Mesh %i Saved + LSTR MSG_UBL_NO_STORAGE = _UxGT("Pas de memoire"); // No Storage + LSTR MSG_UBL_SAVE_ERROR = _UxGT("Err: Enreg. UBL"); // UBL Save Error + LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Err: Ouvrir UBL"); // UBL Restore Error + LSTR MSG_UBL_Z_OFFSET = _UxGT("Z-Offset: "); // Z-Offset: + LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Decal. Z arrete"); // Z-Offset Stopped + LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("Assistant UBL"); // Step-By-Step UBL + LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Mesure a froid"); // 1. Build Cold Mesh + LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2.Completer auto."); // 2. Smart Fill-in + LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Verifier grille"); // 3. Validate Mesh + LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Reglage fin"); // 4. Fine Tune All + LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Verifier grille"); // 5. Validate Mesh + LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Reglage fin"); // 6. Fine Tune All + LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Stocker grille"); // 7. Save Bed Mesh + LSTR MSG_LED_CONTROL = _UxGT("Controle LED"); // LED Control + LSTR MSG_LIGHTS = _UxGT("Lumiere"); // Lights + LSTR MSG_LIGHT_N = _UxGT("Lumiere #{"); // Light #{ + LSTR MSG_LED_PRESETS = _UxGT("Preregl. LED"); // Light Presets + LSTR MSG_SET_LEDS_RED = _UxGT("Rouge"); // Red + LSTR MSG_SET_LEDS_ORANGE = _UxGT("Orange"); // Orange + LSTR MSG_SET_LEDS_YELLOW = _UxGT("Jaune"); // Yellow + LSTR MSG_SET_LEDS_GREEN = _UxGT("Vert"); // Green + LSTR MSG_SET_LEDS_BLUE = _UxGT("Bleu"); // Blue + LSTR MSG_SET_LEDS_INDIGO = _UxGT("Indigo"); // Indigo + LSTR MSG_SET_LEDS_VIOLET = _UxGT("Violet"); // Violet + LSTR MSG_SET_LEDS_WHITE = _UxGT("Blanc"); // White + LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Defaut"); // Default + LSTR MSG_CUSTOM_LEDS = _UxGT("LEDs perso."); // Custom Lights + LSTR MSG_INTENSITY_R = _UxGT("Intensite rouge"); // Red Intensity + LSTR MSG_INTENSITY_G = _UxGT("Intensite vert"); // Green Intensity + LSTR MSG_INTENSITY_B = _UxGT("Intensite bleu"); // Blue Intensity + LSTR MSG_INTENSITY_W = _UxGT("Intensite blanc"); // White Intensity + LSTR MSG_LED_BRIGHTNESS = _UxGT("Luminosite"); // Brightness + LSTR MSG_HOTEND_TOO_COLD = _UxGT("Buse trop froide"); // Hotend too cold + LSTR MSG_CHAMBER = _UxGT("Caisson"); // Enclosure + LSTR MSG_STORED_FAN_N = _UxGT("Vit. enreg. ~"); // Stored Fan ~ + LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Extra ventil. "); // Extra Fan Speed + LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Extra ventil. ~"); // Extra Fan Speed ~ + LSTR MSG_PID_AUTOTUNE = _UxGT("PID Autotune"); // PID Autotune + LSTR MSG_PID_AUTOTUNE_E = _UxGT("PID Autotune *"); // Autotune * PID + LSTR MSG_JERK = _UxGT("Jerk"); // Jerk + LSTR MSG_VA_JERK = _UxGT("V") STR_A _UxGT(" jerk"); // Max (STR_A) Jerk + LSTR MSG_VB_JERK = _UxGT("V") STR_B _UxGT(" jerk"); // Max (STR_B) Jerk + LSTR MSG_VC_JERK = _UxGT("V") STR_C _UxGT(" jerk"); // Max (STR_C) Jerk + LSTR MSG_VN_JERK = _UxGT("V@ jerk"); // Max @ Jerk + LSTR MSG_VE_JERK = _UxGT("Ve jerk"); // Max E Jerk + LSTR MSG_JUNCTION_DEVIATION = _UxGT("Deviat. jonct."); // Junction Dev + LSTR MSG_MAX_SPEED = _UxGT("Max Velocite"); // Max Speed (mm/s) + LSTR MSG_VMAX_A = _UxGT("Vit. Max ") STR_A; // Max (STR_A) Speed + LSTR MSG_VMAX_B = _UxGT("Vit. Max ") STR_B; // Max (STR_B) Speed + LSTR MSG_VMAX_C = _UxGT("Vit. Max ") STR_C; // Max (STR_C) Speed + LSTR MSG_VMAX_N = _UxGT("Vit. Max @"); // Max @ Speed + LSTR MSG_VMAX_E = _UxGT("Vit. Max E"); // Max E Speed + LSTR MSG_VMAX_EN = _UxGT("Vit. Max *"); // Max * Speed + LSTR MSG_VMIN = _UxGT("Vit. Min"); // Min Velocity + LSTR MSG_FILAMENT_UNLOAD = _UxGT("Retrait mm"); // Unload mm + LSTR MSG_FILAMENT_LOAD = _UxGT("Charger mm"); // Load mm + LSTR MSG_ADVANCE_K = _UxGT("Avance K"); // Advance K + LSTR MSG_ADVANCE_K_E = _UxGT("Avance K *"); // Advance K * + LSTR MSG_INIT_EEPROM = _UxGT("Initialiser EEPROM"); // Initialize EEPROM + LSTR MSG_MEDIA_UPDATE = _UxGT("MaJ Firmware SD"); // (MEDIA_TYPE_EN) Update + LSTR MSG_RESET_PRINTER = _UxGT("RaZ imprimante"); // Reset Printer + LSTR MSG_START_PRINT = _UxGT("Demarrer impression"); // Start Print + LSTR MSG_BUTTON_NEXT = _UxGT("Suivant"); // Next + LSTR MSG_BUTTON_INIT = _UxGT("Init."); // Init + LSTR MSG_BUTTON_STOP = _UxGT("Stop"); // Stop + LSTR MSG_BUTTON_PRINT = _UxGT("Imprimer"); // Print + LSTR MSG_BUTTON_RESET = _UxGT("Reset"); // Reset + LSTR MSG_BUTTON_CANCEL = _UxGT("Annuler"); // Cancel + LSTR MSG_BUTTON_DONE = _UxGT("Termine"); // Done + LSTR MSG_BUTTON_BACK = _UxGT("Retour"); // Back + LSTR MSG_BUTTON_PROCEED = _UxGT("Proceder"); // Proceed + LSTR MSG_PRINTING_OBJECT = _UxGT("Impression objet"); // Print Obj + LSTR MSG_CANCEL_OBJECT = _UxGT("Annuler objet"); // Cancel Obj + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Annuler objet {"); // Cancel Obj { + LSTR MSG_OUTAGE_RECOVERY = _UxGT("Recup. coup."); // Power Outage + LSTR MSG_PRINT_PAUSED = _UxGT("Impr. en pause"); // Print Paused + LSTR MSG_PRINTING = _UxGT("Impression"); // Printing... + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("V.ech. reprise"); // S UnRet V + LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Longueur retrait"); // Swap Length + LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Longueur de purge"); // Purge Length + LSTR MSG_TOOL_CHANGE = _UxGT("Changement outil"); // Tool Change + LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Augmenter Z"); // Z Raise + LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Vitesse primaire"); // Prime Speed + LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Vitesse retract") LCD_STR_DEGREE; // Retract Speed + LSTR MSG_NOZZLE_STANDBY = _UxGT("Attente buse"); // Nozzle Standby + LSTR MSG_FILAMENTLOAD = _UxGT("Charger filament"); // Load Filament + LSTR MSG_FILAMENTLOAD_E = _UxGT("Charger filament *"); // Load * Filament + LSTR MSG_FILAMENTUNLOAD = _UxGT("Retrait filament"); // Unload Filament + LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Retrait filament *"); // Unload * Filament + LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Retirer tout"); // Unload All + LSTR MSG_RELEASE_MEDIA = _UxGT("Retirer le media"); // Release (MEDIA_TYPE_EN) + LSTR MSG_SKEW_FACTOR = _UxGT("Facteur ecart"); // Skew Factor + LSTR MSG_BLTOUCH = _UxGT("BLTouch"); // BLTouch + LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Self-Test"); // Self-Test + LSTR MSG_BLTOUCH_STOW = _UxGT("Ranger"); // Stow + LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Deployer"); // Deploy + LSTR MSG_BLTOUCH_SW_MODE = _UxGT("Mode SW"); // SW-Mode + LSTR MSG_BLTOUCH_5V_MODE = _UxGT("Mode 5V"); // 5V-Mode + LSTR MSG_BLTOUCH_OD_MODE = _UxGT("Mode OD"); // OD-Mode + LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("Appliquer Mode"); // Mode-Store + LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Mise en 5V"); // Set BLTouch to 5V + LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Mise en OD"); // Set BLTouch to OD + LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Afficher Mode"); // Report Drain + LSTR MSG_TOUCHMI_PROBE = _UxGT("TouchMI"); // TouchMI + LSTR MSG_TOUCHMI_INIT = _UxGT("Init. TouchMI"); // Init TouchMI + LSTR MSG_TOUCHMI_ZTEST = _UxGT("Test decalage Z"); // Z Offset Test + LSTR MSG_TOUCHMI_SAVE = _UxGT("Sauvegarde"); // Save + LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("Deployer TouchMI"); // Deploy TouchMI + LSTR MSG_MANUAL_DEPLOY = _UxGT("Deployer Sonde Z"); // Deploy Z-Probe + LSTR MSG_MANUAL_STOW = _UxGT("Ranger Sonde Z"); // Stow Z-Probe + LSTR MSG_BABYSTEP_TOTAL = _UxGT("Total"); // Total + LSTR MSG_COOLING = _UxGT("Refroidissement"); // Cooling... + LSTR MSG_BED_COOLING = _UxGT("Refroid. du lit..."); // Bed Cooling... + LSTR MSG_CHAMBER_HEATING = _UxGT("Chauffe caisson..."); // Chamber Heating... + LSTR MSG_CHAMBER_COOLING = _UxGT("Refroid. caisson..."); // Chamber Cooling... + LSTR MSG_DELTA_SETTINGS = _UxGT("Reglages Delta"); // Delta Settings + LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Calibration Auto"); // Auto Calibration + LSTR MSG_DELTA_DIAG_ROD = _UxGT("Diagonale"); // Diag Rod + LSTR MSG_DELTA_HEIGHT = _UxGT("Hauteur"); // Height + LSTR MSG_DELTA_RADIUS = _UxGT("Rayon"); // Radius + LSTR MSG_3POINT_LEVELING = _UxGT("Niveau a 3 points"); // 3-Point Leveling + LSTR MSG_LINEAR_LEVELING = _UxGT("Niveau lineaire"); // Linear Leveling + LSTR MSG_BILINEAR_LEVELING = _UxGT("Niveau bilineaire"); // Bilinear Leveling + LSTR MSG_UBL_LEVELING = _UxGT("Niveau lit unifie"); // Unified Bed Leveling + LSTR MSG_MESH_LEVELING = _UxGT("Niveau par grille"); // Mesh Leveling + LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Protection inactive"); // Runaway Watch: OFF + LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Protection active"); // Runaway Watch: ON + LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Luminosite"); // Light Brightness + LSTR MSG_DAC_PERCENT_N = _UxGT("Driver @ %"); // @ Driver % + LSTR MSG_ERROR_TMC = _UxGT("ERREUR CONNEXION TMC"); // TMC CONNECTION ERROR + LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("CHANGER FILAMENT"); // FILAMENT CHANGE + LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("IMPR. PAUSE"); // PRINT PAUSED + LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("CHARGER FIL"); // LOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("DECHARGER FIL"); // UNLOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("OPTIONS REPRISE:"); // RESUME OPTIONS: + LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Purger encore"); // Purge more + LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Buse: "); // Nozzle: + LSTR MSG_RUNOUT_SENSOR = _UxGT("Capteur fil."); // Runout Sensor + LSTR MSG_KILL_HOMING_FAILED = _UxGT("Echec origine"); // Homing Failed + LSTR MSG_LCD_PROBING_FAILED = _UxGT("Echec sonde"); // Probing Failed + LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("CHOISIR FILAMENT"); // CHOOSE FILAMENT + LSTR MSG_MMU2_MENU = _UxGT("MMU"); // MMU + LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("MAJ firmware MMU!!"); // Update MMU Firmware! + LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU ne repond plus"); // MMU Needs Attention. + LSTR MSG_MMU2_RESUME = _UxGT("Continuer Imp. MMU"); // Resume + LSTR MSG_MMU2_RESUMING = _UxGT("Reprise MMU..."); // MMU Resuming... + LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("Charge dans MMU"); // Load + LSTR MSG_MMU2_LOAD_ALL = _UxGT("Charger tous dans MMU"); // Load All + LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Charger dans buse"); // Load to Nozzle + LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("Ejecter fil. du MMU"); // Eject + LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("Ejecter fil. ~"); // Eject ~ + LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Retrait filament"); // Unload + LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Chargem. fil. %i..."); // Filament %i Load... + LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Ejection fil..."); // Filament %i Eject... + LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Retrait fil...."); // Filament %i Unload... + LSTR MSG_MMU2_ALL = _UxGT("Tous"); // All + LSTR MSG_MMU2_FILAMENT_N = _UxGT("Filament ~"); // Filament ~ + LSTR MSG_MMU2_RESET = _UxGT("Reinit. MMU"); // Reset MMU + LSTR MSG_MMU2_RESETTING = _UxGT("Reinit. MMU..."); // Resetting... + LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Retrait, click"); // Eject Recover + LSTR MSG_MIX_COMPONENT_N = _UxGT("Composante {"); // Component { + LSTR MSG_MIXER = _UxGT("Mixeur"); // Mixer + LSTR MSG_GRADIENT = _UxGT("Degrade"); // Gradient + LSTR MSG_FULL_GRADIENT = _UxGT("Degrade complet"); // Full Gradient + LSTR MSG_TOGGLE_MIX = _UxGT("Toggle mix"); // Toggle Mix + LSTR MSG_CYCLE_MIX = _UxGT("Cycle mix"); // Cycle Mix + LSTR MSG_GRADIENT_MIX = _UxGT("Mix degrade"); // Gradient Mix + LSTR MSG_REVERSE_GRADIENT = _UxGT("Inverser degrade"); // Reverse Gradient + LSTR MSG_ACTIVE_VTOOL = _UxGT("Active V-tool"); // Active V-tool + LSTR MSG_START_VTOOL = _UxGT("Debut V-tool"); // Start V-tool + LSTR MSG_END_VTOOL = _UxGT(" Fin V-tool"); // End V-tool + LSTR MSG_GRADIENT_ALIAS = _UxGT("Alias V-tool"); // Alias V-tool + LSTR MSG_RESET_VTOOLS = _UxGT("Reinit. V-tools"); // Reset V-tools + LSTR MSG_COMMIT_VTOOL = _UxGT("Valider Mix V-tool"); // Commit V-tool Mix + LSTR MSG_VTOOLS_RESET = _UxGT("V-tools reinit. ok"); // V-tools Were Reset + LSTR MSG_START_Z = _UxGT("Debut Z:"); // Start Z: + LSTR MSG_END_Z = _UxGT(" Fin Z:"); // End Z: + LSTR MSG_GAMES = _UxGT("Jeux"); // Games + LSTR MSG_BRICKOUT = _UxGT("Casse-briques"); // Brickout + LSTR MSG_INVADERS = _UxGT("Invaders"); // Invaders + LSTR MSG_SNAKE = _UxGT("Sn4k3"); // Sn4k3 + LSTR MSG_MAZE = _UxGT("Labyrinthe"); // Maze + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Clic pour continuer")); // |Click to continue + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Purge...")); // |Purging... + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Terminer ?")); // |Click to finish + LSTR MSG_TMC_CURRENT = _UxGT("Courant driver"); // Driver Current + LSTR MSG_TMC_HYBRID_THRS = _UxGT("Seuil hybride"); // Hybrid Threshold + LSTR MSG_TMC_HOMING_THRS = _UxGT("Home sans capteur"); // Sensorless Homing + LSTR MSG_TMC_STEPPING_MODE = _UxGT("Mode pas a pas"); // Stepping Mode + LSTR MSG_TMC_STEALTHCHOP = _UxGT("StealthChop"); // StealthChop + LSTR MSG_SERVICE_RESET = _UxGT("Reinit."); // Reset + LSTR MSG_SERVICE_IN = _UxGT(" dans:"); // in: + LSTR MSG_BACKLASH_CORRECTION = _UxGT("Correction"); // Correction + LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Lissage"); // Smoothing + LSTR MSG_AUTO_HOME_N = _UxGT("Origine @ auto"); // Home @ + LSTR MSG_HOME_OFFSET_X = _UxGT("Decal. origine X"); // Home Offset X + LSTR MSG_HOME_OFFSET_Y = _UxGT("Decal. origine Y"); // Home Offset Y + LSTR MSG_HOME_OFFSET_Z = _UxGT("Decal. origine Z"); // Home Offset Z + LSTR MSG_TRAMMING_WIZARD = _UxGT("Assistant Molettes"); // Tramming Wizard + LSTR MSG_SELECT_ORIGIN = _UxGT("Molette du lit"); // Select Origin + LSTR MSG_LAST_VALUE_SP = _UxGT("Ecart origine "); // Last value + LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Relever le coin jusqu'a la sonde"); // Adjust bed until the probe triggers. + LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Coins dans la tolerance. Niveau lit."); // Corners within tolerance. Bed trammed. + LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("Tuning PID termine"); // PID tuning done + LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Echec Autotune! E incorrect"); // Autotune failed! Bad extruder. + LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Echec Autotune! Temp. trop haute"); // Autotune failed! Temperature too high. + LSTR MSG_PID_TIMEOUT = _UxGT("Echec Autotune! Oper. expiree"); // Autotune failed! Timeout. + LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("Frequence max"); // XY Freq Limit + LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("Vitesse min"); // Min FR Factor + LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("Limite en mm") SUPERSCRIPT_THREE; // E Limit in mm(SUPERSCRIPT_THREE) + LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("Limite *"); // E Limit * + LSTR MSG_BRIGHTNESS = _UxGT("Luminosite LCD"); // LCD Brightness + LSTR MSG_SCREEN_TIMEOUT = _UxGT("Veille LCD (m)"); // LCD Timeout (m) + LSTR MSG_BRIGHTNESS_OFF = _UxGT("Eteindre l'ecran LCD"); // Backlight Off + LSTR MSG_SETTINGS_STORED = _UxGT("Config. enregistree"); // Settings Stored + LSTR MSG_BUTTON_IGNORE = _UxGT("Ignorer"); // Ignore + LSTR MSG_BUTTON_SKIP = _UxGT("Passer"); // Skip + LSTR MSG_PAUSING = _UxGT("Mise en pause..."); // Pausing... + LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Longueur Extra"); // Swap Extra + LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Garer Extrudeur"); // Park Head + LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Vitesse reprise"); // Recover Speed + LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Vit. ventil."); // Fan Speed + LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Temps ventil."); // Fan Time + LSTR MSG_TOOL_MIGRATION_ON = _UxGT("Auto ON"); // Auto ON + LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("Auto OFF"); // Auto OFF + LSTR MSG_TOOL_MIGRATION = _UxGT("Migration d'outil"); // Tool Migration + LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("Migration auto"); // Auto-migration + LSTR MSG_TOOL_MIGRATION_END = _UxGT("Extrudeur Final"); // Last Extruder + LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("Migrer vers *"); // Migrate to * + LSTR MSG_ZPROBE_OFFSETS = _UxGT("Position sonde Z"); // Probe Offsets + LSTR MSG_PROBE_HEATING = _UxGT("Probe en chauffe..."); // Probe Heating... + LSTR MSG_PROBE_COOLING = _UxGT("Refroid. Probe..."); // Probe Cooling... + LSTR MSG_MESH_DONE = _UxGT("Niveau termine"); // Mesh probing done + LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Hotend Idle Timeout"); // Hotend Idle Timeout + LSTR MSG_BAD_PAGE = _UxGT("Erreur index page"); // Bad page index + LSTR MSG_BAD_PAGE_SPEED = _UxGT("Erreur vitesse page"); // Bad page speed + LSTR MSG_LEVEL_X_AXIS = _UxGT("Niveau axe X"); // Level X Axis + LSTR MSG_AUTO_CALIBRATE = _UxGT("Etalon. auto."); // Auto Calibrate + LSTR MSG_FTDI_HEATER_TIMEOUT = _UxGT("En protection, temp. reduite. Ok pour rechauffer et continuer."); // Idle timeout, temperature decreased. Press Okay to reheat and again to resume. + LSTR MSG_HEATER_TIMEOUT = _UxGT("En protection"); // Heater Timeout + LSTR MSG_REHEAT = _UxGT("Chauffer"); // Reheat + LSTR MSG_REHEATING = _UxGT("Rechauffe..."); // Reheating... + LSTR MSG_PROBE_WIZARD = _UxGT("Assistant Sonde Z"); // Z Probe Wizard + LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Mesure reference"); // Probing Z Reference + LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Depl. vers pos"); // Moving to Probing Pos + LSTR MSG_SOUND = _UxGT("Sons"); // Sound + LSTR MSG_TOP_LEFT = _UxGT("Coin haut gauche"); // Touch Top Left + LSTR MSG_BOTTOM_LEFT = _UxGT("Coin bas gauche"); // Touch Bottom Left + LSTR MSG_TOP_RIGHT = _UxGT("Coin haut droit"); // Touch Top Right + LSTR MSG_BOTTOM_RIGHT = _UxGT("Coin bas droit"); // Touch Bottom Right + LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Calibration terminee"); // Calibration Completed + LSTR MSG_CALIBRATION_FAILED = _UxGT("Echec de l'etalonnage"); // Calibration Failed + LSTR MSG_SD_CARD = _UxGT("Carte SD"); // SD Card + LSTR MSG_USB_DISK = _UxGT("Cle USB"); // USB Disk + LSTR MSG_SHORT_DAY = _UxGT("j"); // d + LSTR MSG_SHORT_HOUR = _UxGT("h"); // h + LSTR MSG_SHORT_MINUTE = _UxGT("m"); // m + LSTR MSG_SINGLENOZZLE_WIPE_RETRACT = _UxGT("Purge Retract"); // Wipe Retract + LSTR DGUS_MSG_NOT_WHILE_PRINTING = _UxGT("Impossible pendant une impression"); // Not allowed during print + LSTR DGUS_MSG_NOT_WHILE_IDLE = _UxGT("Impossible tant que l'imprimante est en attente"); // Not allowed while idle + LSTR DGUS_MSG_NO_FILE_SELECTED = _UxGT("Aucun fichier selectionne"); // No file selected + LSTR DGUS_MSG_TEMP_TOO_LOW = _UxGT("Temperature trop basse"); // Temperature too low + LSTR DGUS_MSG_EXECUTING_COMMAND = _UxGT("Execution de la commande..."); // Executing command... + LSTR DGUS_MSG_BED_PID_DISABLED = _UxGT("Bed PID desactive"); // Bed PID disabled + LSTR DGUS_MSG_PID_DISABLED = _UxGT("PID desactive"); // PID disabled + LSTR DGUS_MSG_PID_AUTOTUNING = _UxGT("Autocalibrage du PID..."); // PID autotuning... + LSTR DGUS_MSG_INVALID_RECOVERY_DATA = _UxGT("Donnees de recuperation non valides"); // Invalid recovery data + LSTR DGUS_MSG_HOMING_REQUIRED = _UxGT("Retour a l'origine necessaire..."); // Homing required + LSTR DGUS_MSG_BUSY = _UxGT("Occupe"); // Busy + LSTR DGUS_MSG_HOMING = _UxGT("Retour a l'origine..."); // Homing... + LSTR DGUS_MSG_FW_OUTDATED = _UxGT("Mise a jour DWIN GUI/OS necessaire"); // DWIN GUI/OS update required + LSTR DGUS_MSG_ABL_REQUIRED = _UxGT("Nivellement du bed necessaire"); // Auto bed leveling required + LSTR DGUS_MSG_PROBING_FAILED = _UxGT("Echec du nivellement..."); // Probing failed + LSTR DGUS_MSG_PROBING_SUCCESS = _UxGT("Nivellement realise avec succes"); // Probing successful + LSTR DGUS_MSG_RESET_EEPROM = _UxGT("Reinitialisation de l'EEPROM"); // EEPROM reset + LSTR DGUS_MSG_WRITE_EEPROM_FAILED = _UxGT("Echec ecriture de l'EEPROM"); // EEPROM write failed + LSTR DGUS_MSG_READ_EEPROM_FAILED = _UxGT("Echec lecture de l'EEPROM"); // EEPROM read failed + LSTR DGUS_MSG_FILAMENT_RUNOUT = _UxGT("Sortie de filament E%d"); // Filament runout E%d } namespace LanguageWide_fr_na { using namespace LanguageNarrow_fr_na; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Nbre impressions"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Terminees"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Tps impr. total"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Impr. la + longue"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total filament"); + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Nbre impressions"); // Print Count + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Terminees"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Tps impr. total"); // Print Time + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Impr. la + longue"); // Longest Job Time + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total filament"); // Extruded Total #endif } @@ -652,17 +616,17 @@ namespace LanguageTall_fr_na { using namespace LanguageWide_fr_na; #if LCD_HEIGHT >= 4 // Filament Change screens show up to 3 lines on a 4-line display - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Presser bouton", "pour reprendre")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parking...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("Attente filament", "pour demarrer")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Inserer filament", "et app. bouton", "pour continuer...")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Presser le bouton", "pour chauffer...")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Buse en chauffe", "Patienter SVP...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Attente", "retrait du filament")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Attente", "chargement filament")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Attente", "Purge filament")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Presser pour finir", "la purge du filament")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Attente reprise", "impression")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("Attente filament", "pour demarrer")); // |Wait for|filament change|to start + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Inserer filament", "et app. bouton", "pour continuer...")); // |Insert filament|and press button|to continue + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Attente", "retrait du filament")); // |Wait for|filament unload + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Attente", "chargement filament")); // |Wait for|filament load + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Attente reprise", "impression")); // |Wait for print|to resume... + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Buse en chauffe", "Patienter SVP...")); // |Nozzle heating|Please wait... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Presser le bouton", "pour chauffer...")); // |Press button|to heat nozzle + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Presser bouton", "pour reprendre")); // |Press Button|to resume print + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parking...")); // |Parking... + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Attente", "Purge filament")); // |Wait for|filament purge + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Presser pour finir", "la purge du filament")); // |Click to finish|filament purge #endif } diff --git a/Marlin/src/lcd/language/language_gl.h b/Marlin/src/lcd/language/language_gl.h index ae4693926d..5ed060fe2b 100644 --- a/Marlin/src/lcd/language/language_gl.h +++ b/Marlin/src/lcd/language/language_gl.h @@ -52,549 +52,530 @@ namespace LanguageNarrow_gl { constexpr uint8_t CHARSIZE = 1; LSTR LANGUAGE = _UxGT("Galician"); - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" lista."); - LSTR MSG_YES = _UxGT("SI"); - LSTR MSG_NO = _UxGT("NON"); - LSTR MSG_BACK = _UxGT("Atrás"); - - LSTR MSG_MEDIA_ABORTING = _UxGT("Cancelando..."); - LSTR MSG_MEDIA_INSERTED = _UxGT("Tarxeta inserida"); - LSTR MSG_MEDIA_REMOVED = _UxGT("Tarxeta retirada"); - LSTR MSG_MEDIA_READ_ERROR = _UxGT("Erro lectura ") MEDIA_TYPE_GL; - LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("Disp. USB retirado"); - LSTR MSG_USB_FD_USB_FAILED = _UxGT("Inicio USB fallido"); - LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Desbord. Subch."); - - LSTR MSG_LCD_ENDSTOPS = _UxGT("FinCarro"); - LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("FinCarro SW"); - LSTR MSG_MAIN_MENU = _UxGT("Menú principal"); - LSTR MSG_ADVANCED_SETTINGS = _UxGT("Axustes avanzados"); - LSTR MSG_CONFIGURATION = _UxGT("Configuración"); - LSTR MSG_DISABLE_STEPPERS = _UxGT("Apagar motores"); - LSTR MSG_DEBUG_MENU = _UxGT("Menú depuración"); - LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Test barra progreso"); - LSTR MSG_AUTO_HOME = _UxGT("Ir a orixe"); - LSTR MSG_AUTO_HOME_X = _UxGT("Ir orixe X"); - LSTR MSG_AUTO_HOME_Y = _UxGT("Ir orixe Y"); - LSTR MSG_AUTO_HOME_Z = _UxGT("Ir orixe Z"); - LSTR MSG_AUTO_Z_ALIGN = _UxGT("Autoaliñar Z"); - LSTR MSG_LEVEL_BED_HOMING = _UxGT("Ir orixes XYZ"); - LSTR MSG_LEVEL_BED_WAITING = _UxGT("Prema pulsador"); - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Seguinte punto"); - LSTR MSG_LEVEL_BED_DONE = _UxGT("Fin Nivelación!"); - LSTR MSG_Z_FADE_HEIGHT = _UxGT("Compensación Altura"); - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Axustar Desfases"); - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Desfases aplicados"); - - LSTR MSG_PREHEAT_1 = _UxGT("Prequentar ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Prequentar ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Bico"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Bico ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Todo"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Cama"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" conf"); - - LSTR MSG_PREHEAT_M = _UxGT("Prequentar $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Prequentar $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Preque. $ Bico"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Preque. $ Bico ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Preque. $ Todo"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Preque. $ Cama"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Preque. $ conf"); - - LSTR MSG_PREHEAT_CUSTOM = _UxGT("Preque. Personali."); - LSTR MSG_COOLDOWN = _UxGT("Arrefriar"); - LSTR MSG_CUTTER_FREQUENCY = _UxGT("Frecuencia"); - LSTR MSG_LASER_MENU = _UxGT("Control Láser"); - LSTR MSG_LASER_POWER = _UxGT("Potencia Láser"); - LSTR MSG_SPINDLE_MENU = _UxGT("Control Fuso"); - LSTR MSG_SPINDLE_POWER = _UxGT("Potencia Fuso"); - LSTR MSG_SPINDLE_REVERSE = _UxGT("Inverter xiro"); - LSTR MSG_SWITCH_PS_ON = _UxGT("Acender"); - LSTR MSG_SWITCH_PS_OFF = _UxGT("Apagar"); - LSTR MSG_EXTRUDE = _UxGT("Extruír"); - LSTR MSG_RETRACT = _UxGT("Retraer"); - LSTR MSG_MOVE_AXIS = _UxGT("Mover eixe"); - LSTR MSG_PROBE_AND_LEVEL = _UxGT("Probar e Nivelar"); - LSTR MSG_BED_LEVELING = _UxGT("Nivelando Cama"); - LSTR MSG_LEVEL_BED = _UxGT("Nivelar Cama"); - LSTR MSG_BED_TRAMMING = _UxGT("Nivelar Cantos"); - LSTR MSG_NEXT_CORNER = _UxGT("Seguinte Canto"); - LSTR MSG_MESH_EDITOR = _UxGT("Editor Mallado"); - LSTR MSG_EDIT_MESH = _UxGT("Editar Mallado"); - LSTR MSG_EDITING_STOPPED = _UxGT("Ed. Mallado Detida"); - LSTR MSG_PROBING_POINT = _UxGT("Punto de Proba"); - LSTR MSG_MESH_X = _UxGT("Índice X"); - LSTR MSG_MESH_Y = _UxGT("Índice Y"); - LSTR MSG_MESH_EDIT_Z = _UxGT("Valor Z"); - LSTR MSG_CUSTOM_COMMANDS = _UxGT("Comandos Personaliz."); - LSTR MSG_M48_TEST = _UxGT("M48 Probar Sonda"); - LSTR MSG_M48_POINT = _UxGT("M48 Punto"); - LSTR MSG_M48_DEVIATION = _UxGT("Desviación"); - LSTR MSG_IDEX_MENU = _UxGT("Modo IDEX"); - LSTR MSG_OFFSETS_MENU = _UxGT("Ferramentas Compens"); - LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-Estacionar"); - LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplicación"); - LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Copia Espello"); - LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Control Total"); - LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2º Bico Z"); - LSTR MSG_HOTEND_OFFSET_N = _UxGT("2º Bico @"); - LSTR MSG_UBL_DOING_G29 = _UxGT("Executando G29"); - LSTR MSG_UBL_TOOLS = _UxGT("Ferramentas UBL"); - LSTR MSG_LCD_TILTING_MESH = _UxGT("Punto de inclinación"); - LSTR MSG_UBL_MANUAL_MESH = _UxGT("Facer Malla Manual"); - LSTR MSG_UBL_BC_INSERT = _UxGT("Colocar Calzo e Medir"); - LSTR MSG_UBL_BC_INSERT2 = _UxGT("Medir"); - LSTR MSG_UBL_BC_REMOVE = _UxGT("Quitar e Medir Cama"); - LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Mover ao Seguinte"); - LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Temp Cama"); - LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Temp Cama"); - LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Temp Bico"); - LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Temp Bico"); - LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Edit. Malla Person."); - LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Axuste Fino da Malla"); - LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Fin Edición da Malla"); - LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Crear Malla Person."); - LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Crear Malla"); - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Crear Malla ($)"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Validar Malla ($)"); - LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Crear Malla Fría"); - LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Axustar Altura Malla"); - LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Altura"); - LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Validar Malla"); - LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Validar Malla perso."); - LSTR MSG_G26_HEATING_BED = _UxGT("G26 Quentando Cama"); - LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 Quentando Bico"); - LSTR MSG_G26_MANUAL_PRIME = _UxGT("Traballo manual..."); - LSTR MSG_G26_FIXED_LENGTH = _UxGT("Traballo Lonxit Fixa"); - LSTR MSG_G26_PRIME_DONE = _UxGT("Fin Traballo"); - LSTR MSG_G26_CANCELED = _UxGT("G26 Cancelado"); - LSTR MSG_G26_LEAVING = _UxGT("Saíndo de G26"); - LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Continuar Malla"); - LSTR MSG_UBL_MESH_LEVELING = _UxGT("Nivelación Malla"); - LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("Nivelación 3Puntos"); - LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Nivelación Grid"); - LSTR MSG_UBL_MESH_LEVEL = _UxGT("Nivelar Malla"); - LSTR MSG_UBL_SIDE_POINTS = _UxGT("Puntos Laterais"); - LSTR MSG_UBL_MAP_TYPE = _UxGT("Tipo de Mapa "); - LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Gardar Mapa"); - LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Enviar ao Host"); - LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Gardar en CSV"); - LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Backup Externo"); - LSTR MSG_UBL_INFO_UBL = _UxGT("Info do UBL"); - LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Cantidade de Recheo"); - LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Recheo Manual"); - LSTR MSG_UBL_SMART_FILLIN = _UxGT("Recheo Intelixente"); - LSTR MSG_UBL_FILLIN_MESH = _UxGT("Recheo da Malla"); - LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Invalidar todo"); - LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Invalidar cercanos"); - LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Axustar Fino Todo"); - LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Axustar Fino Cerc"); - LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Almacenamento Malla"); - LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Rañura Memoria"); - LSTR MSG_UBL_LOAD_MESH = _UxGT("Cargar Malla Cama"); - LSTR MSG_UBL_SAVE_MESH = _UxGT("Gardar Malla Cama"); - LSTR MSG_MESH_LOADED = _UxGT("Malla %i Cargada"); - LSTR MSG_MESH_SAVED = _UxGT("Malla %i Gardada"); - LSTR MSG_UBL_NO_STORAGE = _UxGT("Sen Gardar"); - LSTR MSG_UBL_SAVE_ERROR = _UxGT("Erro: Gardadado UBL"); - LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Erro: Recuperación UBL"); - LSTR MSG_UBL_Z_OFFSET = _UxGT("Desfase de Z: "); - LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Desfase de Z Detido"); - LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("UBL Paso a Paso"); - LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1. Crear Malla Fría"); - LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2. Recheo Intelixente"); - LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3. Validar Malla"); - LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4. Axustar Fino Todo"); - LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5. Validar Malla"); - LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6. Axustar Fino Todo"); - LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7. Gardar Malla Cama"); - - LSTR MSG_LED_CONTROL = _UxGT("Control LED"); - LSTR MSG_LIGHTS = _UxGT("Luces"); - LSTR MSG_LIGHT_N = _UxGT("Luce #{"); - LSTR MSG_LED_PRESETS = _UxGT("Axustes Luz"); - LSTR MSG_SET_LEDS_RED = _UxGT("Vermello"); - LSTR MSG_SET_LEDS_ORANGE = _UxGT("Laranxa"); - LSTR MSG_SET_LEDS_YELLOW = _UxGT("Amarelo"); - LSTR MSG_SET_LEDS_GREEN = _UxGT("Verde"); - LSTR MSG_SET_LEDS_BLUE = _UxGT("Azul"); - LSTR MSG_SET_LEDS_INDIGO = _UxGT("Índigo"); - LSTR MSG_SET_LEDS_VIOLET = _UxGT("Violeta"); - LSTR MSG_SET_LEDS_WHITE = _UxGT("Branco"); - LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Por defecto"); - LSTR MSG_CUSTOM_LEDS = _UxGT("Luces personalizadas"); - LSTR MSG_INTENSITY_R = _UxGT("Intensidade Vermello"); - LSTR MSG_INTENSITY_G = _UxGT("Intensidade Verde"); - LSTR MSG_INTENSITY_B = _UxGT("Intensidade Azul"); - LSTR MSG_INTENSITY_W = _UxGT("Intensidade Branco"); - LSTR MSG_LED_BRIGHTNESS = _UxGT("Brillo"); - - LSTR MSG_MOVING = _UxGT("Movendo..."); - LSTR MSG_FREE_XY = _UxGT("Libre XY"); - LSTR MSG_MOVE_X = _UxGT("Mover X"); - LSTR MSG_MOVE_Y = _UxGT("Mover Y"); - LSTR MSG_MOVE_Z = _UxGT("Mover Z"); - LSTR MSG_MOVE_N = _UxGT("Mover @"); - LSTR MSG_MOVE_E = _UxGT("Extrusor"); - LSTR MSG_MOVE_EN = _UxGT("Extrusor *"); - LSTR MSG_HOTEND_TOO_COLD = _UxGT("Bico moi frío"); - LSTR MSG_MOVE_N_MM = _UxGT("Mover $mm"); - LSTR MSG_MOVE_N_IN = _UxGT("Mover $in"); - LSTR MSG_MOVE_N_DEG = _UxGT("Mover $") LCD_STR_DEGREE; - LSTR MSG_SPEED = _UxGT("Velocidade"); - LSTR MSG_MESH_Z_OFFSET = _UxGT("Cama Z"); - LSTR MSG_NOZZLE = _UxGT("Bico"); - LSTR MSG_NOZZLE_N = _UxGT("Bico ~"); - LSTR MSG_NOZZLE_PARKED = _UxGT("Bico Estacionado"); - LSTR MSG_NOZZLE_STANDBY = _UxGT("Bico Standby"); - LSTR MSG_BED = _UxGT("Cama"); - LSTR MSG_CHAMBER = _UxGT("Cámara"); - LSTR MSG_FAN_SPEED = _UxGT("Vel. Ventilador"); - LSTR MSG_FAN_SPEED_N = _UxGT("Vel. Ventilador ~"); - LSTR MSG_STORED_FAN_N = _UxGT("Ventilador Mem. ~"); - LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Vel. Vent. Extra"); - LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Vel. Vent. Extra ~"); - LSTR MSG_CONTROLLER_FAN = _UxGT("Controlador Vent."); - LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("Velocidade Repouso"); - LSTR MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("Modo Auto"); - LSTR MSG_CONTROLLER_FAN_SPEED = _UxGT("Velocidade Activa"); - LSTR MSG_CONTROLLER_FAN_DURATION = _UxGT("Tempo Repouso"); - LSTR MSG_FLOW = _UxGT("Fluxo"); - LSTR MSG_FLOW_N = _UxGT("Fluxo ~"); - LSTR MSG_CONTROL = _UxGT("Control"); - LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); - LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fact"); - LSTR MSG_AUTOTEMP = _UxGT("Temperatura Auto."); - LSTR MSG_LCD_ON = _UxGT("Acender"); - LSTR MSG_LCD_OFF = _UxGT("Apagar"); - LSTR MSG_PID_AUTOTUNE = _UxGT("Auto-Sint. PID"); - LSTR MSG_PID_AUTOTUNE_E = _UxGT("Auto-Sint. PID *"); - LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("Fin Auto-Sint PID"); - LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Auto-Sint. fallida! Extrusor danado."); - LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Auto-Sint. fallida! Temperatura moi alta."); - LSTR MSG_PID_TIMEOUT = _UxGT("Auto-Sint. fallida! Tempo excedido."); - LSTR MSG_SELECT_E = _UxGT("Escolla *"); - LSTR MSG_ACC = _UxGT("Acel"); - LSTR MSG_JERK = _UxGT("Jerk"); - LSTR MSG_VA_JERK = _UxGT("Max ") STR_A _UxGT(" Jerk"); - LSTR MSG_VB_JERK = _UxGT("Max ") STR_B _UxGT(" Jerk"); - LSTR MSG_VC_JERK = _UxGT("Max ") STR_C _UxGT(" Jerk"); - LSTR MSG_VN_JERK = _UxGT("Max @ Jerk"); - LSTR MSG_VE_JERK = _UxGT("Max E Jerk"); - LSTR MSG_JUNCTION_DEVIATION = _UxGT("Desvío Unión"); - LSTR MSG_MAX_SPEED = _UxGT("Max Velocidade"); - LSTR MSG_VMAX_A = _UxGT("Max ") STR_A _UxGT(" Speed"); - LSTR MSG_VMAX_B = _UxGT("Max ") STR_B _UxGT(" Speed"); - LSTR MSG_VMAX_C = _UxGT("Max ") STR_C _UxGT(" Speed"); - LSTR MSG_VMAX_N = _UxGT("Max @ Speed"); - LSTR MSG_VMAX_E = _UxGT("Max E Speed"); - LSTR MSG_VMAX_EN = _UxGT("Max * Speed"); - LSTR MSG_VMIN = _UxGT("Vmin"); - LSTR MSG_VTRAV_MIN = _UxGT("V-viaxe min"); - LSTR MSG_ACCELERATION = _UxGT("Aceleración"); - LSTR MSG_AMAX_A = _UxGT("Max ") STR_A _UxGT(" Accel"); - LSTR MSG_AMAX_B = _UxGT("Max ") STR_B _UxGT(" Accel"); - LSTR MSG_AMAX_C = _UxGT("Max ") STR_C _UxGT(" Accel"); - LSTR MSG_AMAX_E = _UxGT("Max E Accel"); - LSTR MSG_AMAX_EN = _UxGT("Max * Accel"); - LSTR MSG_A_RETRACT = _UxGT("A-retrac."); - LSTR MSG_A_TRAVEL = _UxGT("A-viaxe"); - LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("Frecuencia max"); - LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("Avance min"); - LSTR MSG_STEPS_PER_MM = _UxGT("Pasos/mm"); - LSTR MSG_A_STEPS = STR_A _UxGT(" pasos/mm"); - LSTR MSG_B_STEPS = STR_B _UxGT(" pasos/mm"); - LSTR MSG_C_STEPS = STR_C _UxGT(" pasos/mm"); - LSTR MSG_N_STEPS = _UxGT("@ pasos/mm"); - LSTR MSG_E_STEPS = _UxGT("E pasos/mm"); - LSTR MSG_EN_STEPS = _UxGT("* pasos/mm"); - LSTR MSG_TEMPERATURE = _UxGT("Temperatura"); - LSTR MSG_MOTION = _UxGT("Movemento"); - LSTR MSG_FILAMENT = _UxGT("Filamento"); - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E en mm") SUPERSCRIPT_THREE; - LSTR MSG_FILAMENT_DIAM = _UxGT("Diam. fil."); - LSTR MSG_FILAMENT_DIAM_E = _UxGT("Diam. fil. *"); - LSTR MSG_FILAMENT_UNLOAD = _UxGT("Descarga mm"); - LSTR MSG_FILAMENT_LOAD = _UxGT("Carga mm"); - LSTR MSG_ADVANCE_K = _UxGT("Avance K"); - LSTR MSG_ADVANCE_K_E = _UxGT("Avance K *"); - LSTR MSG_CONTRAST = _UxGT("Constraste LCD"); - LSTR MSG_STORE_EEPROM = _UxGT("Gardar Configuración"); - LSTR MSG_LOAD_EEPROM = _UxGT("Cargar Configuración"); - LSTR MSG_RESTORE_DEFAULTS = _UxGT("Rest. Defecto"); - LSTR MSG_INIT_EEPROM = _UxGT("Inicializar EEPROM"); - LSTR MSG_ERR_EEPROM_CRC = _UxGT("Erro: CRC EEPROM"); - LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Erro: Tamaño EEPROM"); - LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Erro: Versión EEPROM"); - LSTR MSG_SETTINGS_STORED = _UxGT("Config Gardada"); - LSTR MSG_MEDIA_UPDATE = _UxGT("Actualizar ") MEDIA_TYPE_GL; - LSTR MSG_RESET_PRINTER = _UxGT("Reiniciar Impresora"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Recargar"); - LSTR MSG_INFO_SCREEN = _UxGT("Información"); - LSTR MSG_PREPARE = _UxGT("Preparar"); - LSTR MSG_TUNE = _UxGT("Axustar"); - LSTR MSG_START_PRINT = _UxGT("Comezar impresión"); - LSTR MSG_BUTTON_NEXT = _UxGT("Seguinte"); - LSTR MSG_BUTTON_INIT = _UxGT("Comezar"); - LSTR MSG_BUTTON_STOP = _UxGT("Deter"); - LSTR MSG_BUTTON_PRINT = _UxGT("Imprimir"); - LSTR MSG_BUTTON_RESET = _UxGT("Reiniciar"); - LSTR MSG_BUTTON_CANCEL = _UxGT("Cancelar"); - LSTR MSG_BUTTON_DONE = _UxGT("Listo"); - LSTR MSG_BUTTON_BACK = _UxGT("Atrás"); - LSTR MSG_BUTTON_PROCEED = _UxGT("Proceder"); - LSTR MSG_PAUSING = _UxGT("Pausando..."); - LSTR MSG_PAUSE_PRINT = _UxGT("Pausar impresión"); - LSTR MSG_RESUME_PRINT = _UxGT("Retomar impresión"); - LSTR MSG_STOP_PRINT = _UxGT("Deter impresión"); - LSTR MSG_PRINTING_OBJECT = _UxGT("Imprimindo Obxecto"); - LSTR MSG_CANCEL_OBJECT = _UxGT("Cancelar Obxecto"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Cancelar Obxecto {"); - LSTR MSG_OUTAGE_RECOVERY = _UxGT("Recuperar Impresión"); - LSTR MSG_MEDIA_MENU = _UxGT("Tarxeta SD"); - LSTR MSG_NO_MEDIA = _UxGT("Sen tarxeta SD"); - LSTR MSG_DWELL = _UxGT("En repouso..."); - LSTR MSG_USERWAIT = _UxGT("Prema para Retomar.."); - LSTR MSG_PRINT_PAUSED = _UxGT("Impresión Pausada"); - LSTR MSG_PRINTING = _UxGT("Imprimindo..."); - LSTR MSG_PRINT_ABORTED = _UxGT("Impresión Cancelada"); - LSTR MSG_PRINT_DONE = _UxGT("Fin Impresión"); - LSTR MSG_NO_MOVE = _UxGT("Sen movemento."); - LSTR MSG_KILLED = _UxGT("MORTO."); - LSTR MSG_STOPPED = _UxGT("DETIDO."); - LSTR MSG_CONTROL_RETRACT = _UxGT("Retraer mm"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Cambio retra. mm"); - LSTR MSG_CONTROL_RETRACTF = _UxGT("Retraer V"); - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Alzar Z mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Recup. retra. mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Cambio recup. mm"); - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Recuperacion V"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V"); - LSTR MSG_AUTORETRACT = _UxGT("Auto-Retracción"); - LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Lonxitude Retracción"); - LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Cambio Extra"); - LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Lonxitude de Purga"); - LSTR MSG_TOOL_CHANGE = _UxGT("Cambiar Ferramenta"); - LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Levantar Z"); - LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Velocidade prim."); - LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Vel. de Retracción"); - LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Extrusor Est."); - LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Vel. Recuperación"); - LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Vel. Ventilador"); - LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Tempo Ventilador"); - LSTR MSG_TOOL_MIGRATION_ON = _UxGT("Auto ON"); - LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("Auto OFF"); - LSTR MSG_TOOL_MIGRATION = _UxGT("Cambio Ferramenta"); - LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("Cambio Automático"); - LSTR MSG_TOOL_MIGRATION_END = _UxGT("Último Extrusor"); - LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("Cambio a *"); - LSTR MSG_FILAMENTCHANGE = _UxGT("Cambiar Filamento"); - LSTR MSG_FILAMENTCHANGE_E = _UxGT("Cambiar Filamento *"); - LSTR MSG_FILAMENTLOAD = _UxGT("Cargar Filamento"); - LSTR MSG_FILAMENTLOAD_E = _UxGT("Cargar Filamento *"); - LSTR MSG_FILAMENTUNLOAD = _UxGT("Descargar Filamento"); - LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Descargar Filamento *"); - LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Descargar Todo"); - - LSTR MSG_ATTACH_MEDIA = _UxGT("Iniciar ") MEDIA_TYPE_GL; - LSTR MSG_ATTACH_SD = _UxGT("Iniciar SD"); - LSTR MSG_ATTACH_USB = _UxGT("Iniciar USB"); - LSTR MSG_CHANGE_MEDIA = _UxGT("Cambiar ") MEDIA_TYPE_GL; - LSTR MSG_RELEASE_MEDIA = _UxGT("Lanzar ") MEDIA_TYPE_GL; - LSTR MSG_RUN_AUTOFILES = _UxGT("Autoarranque"); - - LSTR MSG_ZPROBE_OUT = _UxGT("Sonda-Z fóra Cama"); - LSTR MSG_SKEW_FACTOR = _UxGT("Factor de Desviación"); - LSTR MSG_BLTOUCH = _UxGT("BLTouch"); - LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Auto-Test"); - LSTR MSG_BLTOUCH_RESET = _UxGT("Reiniciar"); - LSTR MSG_BLTOUCH_STOW = _UxGT("Recoller"); - LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Estender"); - LSTR MSG_BLTOUCH_SW_MODE = _UxGT("Modo Software"); - LSTR MSG_BLTOUCH_5V_MODE = _UxGT("Modo 5V"); - LSTR MSG_BLTOUCH_OD_MODE = _UxGT("Modo OD"); - LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("Modo Almacenar"); - LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Axustar BLTouch a 5V"); - LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Axustar BLTouch a OD"); - LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Modo de Informe"); - LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("PERIGO: Unha mala configuración pode producir daños! Proceder igualmente?"); - LSTR MSG_TOUCHMI_PROBE = _UxGT("TouchMI"); - LSTR MSG_TOUCHMI_INIT = _UxGT("Iniciar TouchMI"); - LSTR MSG_TOUCHMI_ZTEST = _UxGT("Test de Desfase Z"); - LSTR MSG_TOUCHMI_SAVE = _UxGT("Gardar"); - LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("Estender TouchMI"); - LSTR MSG_MANUAL_DEPLOY = _UxGT("Estender Sonda Z"); - LSTR MSG_MANUAL_STOW = _UxGT("Recoller Sonda Z"); - LSTR MSG_HOME_FIRST = _UxGT("Orixe %s Primeiro"); - LSTR MSG_ZPROBE_OFFSETS = _UxGT("Desfases Sonda"); - LSTR MSG_ZPROBE_XOFFSET = _UxGT("Desfase Sonda X"); - LSTR MSG_ZPROBE_YOFFSET = _UxGT("Desfase Sonda Y"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Desfase Sonda Z"); - LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Desfase Sonda @"); - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Micropaso Sonda-Z"); - LSTR MSG_BABYSTEP_X = _UxGT("Micropaso X"); - LSTR MSG_BABYSTEP_Y = _UxGT("Micropaso Y"); - LSTR MSG_BABYSTEP_Z = _UxGT("Micropaso Z"); - LSTR MSG_BABYSTEP_N = _UxGT("Micropaso @"); - LSTR MSG_BABYSTEP_TOTAL = _UxGT("Total"); - LSTR MSG_ENDSTOP_ABORT = _UxGT("Erro FinCarro"); - LSTR MSG_ERR_HEATING_FAILED = _UxGT("Fallo Quentando"); - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Erro:Temp Redundante"); - LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("FUGA TÉRMICA"); - LSTR MSG_ERR_MAXTEMP = _UxGT("Erro:TEMP MÁX"); - LSTR MSG_ERR_MINTEMP = _UxGT("Erro:TEMP MÍN"); - LSTR MSG_HALTED = _UxGT("IMPRESORA DETIDA"); - LSTR MSG_PLEASE_RESET = _UxGT("Debe reiniciar!"); - LSTR MSG_HEATING = _UxGT("Quentando..."); - LSTR MSG_COOLING = _UxGT("Arrefriando..."); - LSTR MSG_BED_HEATING = _UxGT("Quentando cama..."); - LSTR MSG_BED_COOLING = _UxGT("Enfriando Cama..."); - LSTR MSG_CHAMBER_HEATING = _UxGT("Quentando Cámara..."); - LSTR MSG_CHAMBER_COOLING = _UxGT("Arrefriando Cámara..."); - LSTR MSG_DELTA_CALIBRATE = _UxGT("Calibracion Delta"); - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Calibrar X"); - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Calibrar Y"); - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Calibrar Z"); - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibrar Centro"); - LSTR MSG_DELTA_SETTINGS = _UxGT("Configuración Delta"); - LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Auto Calibración"); - LSTR MSG_DELTA_DIAG_ROD = _UxGT("Barra Diagonal"); - LSTR MSG_DELTA_HEIGHT = _UxGT("Altura"); - LSTR MSG_DELTA_RADIUS = _UxGT("Radio"); - LSTR MSG_INFO_MENU = _UxGT("Acerca de..."); - LSTR MSG_INFO_PRINTER_MENU = _UxGT("Información"); - LSTR MSG_3POINT_LEVELING = _UxGT("Nivelación 3puntos"); - LSTR MSG_LINEAR_LEVELING = _UxGT("Nivelación Lineal"); - LSTR MSG_BILINEAR_LEVELING = _UxGT("Nivelación Bilineal"); - LSTR MSG_UBL_LEVELING = _UxGT("Nivelación UBL"); - LSTR MSG_MESH_LEVELING = _UxGT("Nivelación en Malla"); - LSTR MSG_INFO_STATS_MENU = _UxGT("Estatísticas"); - LSTR MSG_INFO_BOARD_MENU = _UxGT("Placa nai"); - LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Termistores"); - LSTR MSG_INFO_EXTRUDERS = _UxGT("Extrusores"); - LSTR MSG_INFO_BAUDRATE = _UxGT("Baudios"); - LSTR MSG_INFO_PROTOCOL = _UxGT("Protocolo"); - LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Reloxo Traballo: OFF"); - LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Reloxo Traballo: ON"); - - LSTR MSG_CASE_LIGHT = _UxGT("Luz da Caixa"); - LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Brillo Luces"); - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("IMPRESORA INCORRECTA"); - - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Impresións"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completadas"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Máis Longa"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extruido"); - - LSTR MSG_INFO_MIN_TEMP = _UxGT("Temp Mín"); - LSTR MSG_INFO_MAX_TEMP = _UxGT("Temp Máx"); - LSTR MSG_INFO_PSU = _UxGT("Fonte Alimentación"); - LSTR MSG_DRIVE_STRENGTH = _UxGT("Forza do Motor"); - LSTR MSG_DAC_PERCENT_N = _UxGT("@ Driver %"); - LSTR MSG_ERROR_TMC = _UxGT("ERRO CONEX. TMC"); - LSTR MSG_DAC_EEPROM_WRITE = _UxGT("Escribe DAC EEPROM"); - LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("CAMBIAR FILAMENTO"); - LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("IMPRESIÓN PAUSADA"); - LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("CARGAR FILAMENTO"); - LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("DESCARGAR FILAMENTO"); - LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("OPCIÓN DE RETOMAR:"); - LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Purgar máis"); - LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Retomar traballo"); - LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Bico: "); - LSTR MSG_RUNOUT_SENSOR = _UxGT("Sensor Filamento"); - LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("Dist mm Sensor Fil"); - LSTR MSG_KILL_HOMING_FAILED = _UxGT("Fallo ao ir á Orixe"); - LSTR MSG_LCD_PROBING_FAILED = _UxGT("Fallo ao Sondar"); - - LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("ESCOLLE FILAMENTO"); - LSTR MSG_MMU2_MENU = _UxGT("MMU"); - LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("Actualizar FW MMU!"); - LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU Precisa Atención."); - LSTR MSG_MMU2_RESUME = _UxGT("Retomar impr."); - LSTR MSG_MMU2_RESUMING = _UxGT("Retomando..."); - LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("Cargar Filamento"); - LSTR MSG_MMU2_LOAD_ALL = _UxGT("Cargar Todo"); - LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Cargar até bico"); - LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("Expulsar Filamento"); - LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("Expulsar Filamento ~"); - LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Descargar Filamento"); - LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Cargando Fil. %i..."); - LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Expulsando Fil. ..."); - LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Descargando Fil..."); - LSTR MSG_MMU2_ALL = _UxGT("Todo"); - LSTR MSG_MMU2_FILAMENT_N = _UxGT("Filamento ~"); - LSTR MSG_MMU2_RESET = _UxGT("Reiniciar MMU"); - LSTR MSG_MMU2_RESETTING = _UxGT("Reiniciando MMU..."); - LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Expulsar, premer"); - - LSTR MSG_MIX = _UxGT("Mestura"); - LSTR MSG_MIX_COMPONENT_N = _UxGT("Compoñente {"); - LSTR MSG_MIXER = _UxGT("Mesturadora"); - LSTR MSG_GRADIENT = _UxGT("Degradado"); - LSTR MSG_FULL_GRADIENT = _UxGT("Degradado Total"); - LSTR MSG_TOGGLE_MIX = _UxGT("Mestura Conmutada"); - LSTR MSG_CYCLE_MIX = _UxGT("Mestura Cíclica"); - LSTR MSG_GRADIENT_MIX = _UxGT("Mestura de Degradado"); - LSTR MSG_REVERSE_GRADIENT = _UxGT("Degradado Inverso"); - LSTR MSG_ACTIVE_VTOOL = _UxGT("Activar Ferr-V"); - LSTR MSG_START_VTOOL = _UxGT("Inicio Ferr-V"); - LSTR MSG_END_VTOOL = _UxGT(" Fin Ferr-V"); - LSTR MSG_GRADIENT_ALIAS = _UxGT("Alias Ferr-V"); - LSTR MSG_RESET_VTOOLS = _UxGT("Reiniciar Ferr-V"); - LSTR MSG_COMMIT_VTOOL = _UxGT("Commit mest. Ferr-V"); - LSTR MSG_VTOOLS_RESET = _UxGT("Ferr-V reiniciadas"); - LSTR MSG_START_Z = _UxGT("Inicio Z:"); - LSTR MSG_END_Z = _UxGT(" Fin Z:"); - - LSTR MSG_GAMES = _UxGT("Xogos"); - LSTR MSG_BRICKOUT = _UxGT("Brickout"); - LSTR MSG_INVADERS = _UxGT("Invaders"); - LSTR MSG_SNAKE = _UxGT("Sn4k3"); - LSTR MSG_MAZE = _UxGT("Labirinto"); - - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Premer para continuar")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Estacionando...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Agarde...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Introduza e click")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Prema para quentar")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Quentando...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Descargando...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Cargando...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Purgando...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Prema para finalizar")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Retomando...")); - - LSTR MSG_TMC_DRIVERS = _UxGT("Controladores TMC"); - LSTR MSG_TMC_CURRENT = _UxGT("Controlador Actual"); - LSTR MSG_TMC_HYBRID_THRS = _UxGT("Limiar Hibrido"); - LSTR MSG_TMC_HOMING_THRS = _UxGT("Orixe sen Sensores"); - LSTR MSG_TMC_STEPPING_MODE = _UxGT("Modo de pasos"); - LSTR MSG_TMC_STEALTHCHOP = _UxGT("StealthChop"); - - LSTR MSG_SERVICE_RESET = _UxGT("Reiniciar"); - LSTR MSG_SERVICE_IN = _UxGT(" dentro:"); - LSTR MSG_BACKLASH = _UxGT("Reacción"); - LSTR MSG_BACKLASH_CORRECTION = _UxGT("Corrección"); - LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Suavizado"); - - LSTR MSG_LEVEL_X_AXIS = _UxGT("Nivel Eixe X"); - LSTR MSG_AUTO_CALIBRATE = _UxGT("Auto Calibrar"); - LSTR MSG_HEATER_TIMEOUT = _UxGT("Tempo exc. Quent."); - LSTR MSG_REHEAT = _UxGT("Requentar"); - LSTR MSG_REHEATING = _UxGT("Requentando..."); + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" lista."); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = _UxGT("Tarxeta inserida"); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = _UxGT("Tarxeta retirada"); // (MEDIA_TYPE_EN) Removed + LSTR MSG_LCD_ENDSTOPS = _UxGT("FinCarro"); // Endstops + LSTR MSG_MAIN_MENU = _UxGT("Menú principal"); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("Apagar motores"); // Disable Steppers + LSTR MSG_AUTO_HOME = _UxGT("Ir a orixe"); // Auto Home + LSTR MSG_AUTO_HOME_X = _UxGT("Ir orixe X"); // Home X + LSTR MSG_AUTO_HOME_Y = _UxGT("Ir orixe Y"); // Home Y + LSTR MSG_AUTO_HOME_Z = _UxGT("Ir orixe Z"); // Home Z + LSTR MSG_LEVEL_BED_HOMING = _UxGT("Ir orixes XYZ"); // Homing XYZ + LSTR MSG_LEVEL_BED_WAITING = _UxGT("Prema pulsador"); // Click to Begin + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Seguinte punto"); // Next Point + LSTR MSG_LEVEL_BED_DONE = _UxGT("Fin Nivelación!"); // Leveling Done! + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Axustar Desfases"); // Set Home Offsets + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Desfases aplicados"); // Offsets Applied + LSTR MSG_PREHEAT_1 = _UxGT("Prequentar ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = _UxGT("Prequentar ") PREHEAT_1_LABEL " ~"; // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Bico"); // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Bico ~"); // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_1_ALL = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Todo"); // Preheat (PREHEAT_1_LABEL) All + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" Cama"); // Preheat (PREHEAT_1_LABEL) Bed + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Preque. ") PREHEAT_1_LABEL _UxGT(" conf"); // Preheat (PREHEAT_1_LABEL) Conf + LSTR MSG_PREHEAT_M = _UxGT("Prequentar $"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("Prequentar $ ~"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("Preque. $ Bico"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("Preque. $ Bico ~"); // Preheat $ End ~ + LSTR MSG_PREHEAT_M_ALL = _UxGT("Preque. $ Todo"); // Preheat $ All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Preque. $ Cama"); // Preheat $ Bed + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Preque. $ conf"); // Preheat $ Conf + LSTR MSG_COOLDOWN = _UxGT("Arrefriar"); // Cooldown + LSTR MSG_SWITCH_PS_ON = _UxGT("Acender"); // Switch Power On + LSTR MSG_SWITCH_PS_OFF = _UxGT("Apagar"); // Switch Power Off + LSTR MSG_EXTRUDE = _UxGT("Extruír"); // Extrude + LSTR MSG_RETRACT = _UxGT("Retraer"); // Retract + LSTR MSG_MOVE_AXIS = _UxGT("Mover eixe"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("Probar e Nivelar"); // Probe and Level + LSTR MSG_BED_LEVELING = _UxGT("Nivelando Cama"); // Bed Leveling + LSTR MSG_LEVEL_BED = _UxGT("Nivelar Cama"); // Level Bed + LSTR MSG_MOVE_X = _UxGT("Mover X"); // Move X + LSTR MSG_MOVE_Y = _UxGT("Mover Y"); // Move Y + LSTR MSG_MOVE_Z = _UxGT("Mover Z"); // Move Z + LSTR MSG_MOVE_N = _UxGT("Mover @"); // Move @ + LSTR MSG_MOVE_E = _UxGT("Extrusor"); // Move Extruder + LSTR MSG_MOVE_EN = _UxGT("Extrusor *"); // Move * + LSTR MSG_MOVE_N_MM = _UxGT("Mover $mm"); // Move $mm + LSTR MSG_MOVE_N_IN = _UxGT("Mover $in"); // Move $in + LSTR MSG_MOVE_N_DEG = _UxGT("Mover $") LCD_STR_DEGREE; // Move $(LCD_STR_DEGREE) + LSTR MSG_SPEED = _UxGT("Velocidade"); // Speed + LSTR MSG_MESH_Z_OFFSET = _UxGT("Cama Z"); // Bed Z + LSTR MSG_NOZZLE = _UxGT("Bico"); // Nozzle + LSTR MSG_NOZZLE_N = _UxGT("Bico ~"); // Nozzle ~ + LSTR MSG_BED = _UxGT("Cama"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("Vel. Ventilador"); // Fan Speed + LSTR MSG_FAN_SPEED_N = _UxGT("Vel. Ventilador ~"); // Fan Speed ~ + LSTR MSG_FLOW = _UxGT("Fluxo"); // Flow + LSTR MSG_FLOW_N = _UxGT("Fluxo ~"); // Flow ~ + LSTR MSG_CONTROL = _UxGT("Control"); // Control + LSTR MSG_AUTOTEMP = _UxGT("Temperatura Auto."); // Autotemp + LSTR MSG_SELECT_E = _UxGT("Escolla *"); // Select * + LSTR MSG_ACC = _UxGT("Acel"); // Accel + LSTR MSG_VTRAV_MIN = _UxGT("V-viaxe min"); // Min Travel Speed + LSTR MSG_ACCELERATION = _UxGT("Aceleración"); // Acceleration + LSTR MSG_AMAX_A = _UxGT("Max ") STR_A _UxGT(" Accel"); // Max (STR_A) Accel + LSTR MSG_AMAX_B = _UxGT("Max ") STR_B _UxGT(" Accel"); // Max (STR_B) Accel + LSTR MSG_AMAX_C = _UxGT("Max ") STR_C _UxGT(" Accel"); // Max (STR_C) Accel + LSTR MSG_AMAX_E = _UxGT("Max E Accel"); // Max E Accel + LSTR MSG_AMAX_EN = _UxGT("Max * Accel"); // Max * Accel + LSTR MSG_A_RETRACT = _UxGT("A-retrac."); // Retract Accel + LSTR MSG_A_TRAVEL = _UxGT("A-viaxe"); // Travel Accel + LSTR MSG_STEPS_PER_MM = _UxGT("Pasos/mm"); // Steps/mm + LSTR MSG_A_STEPS = STR_A _UxGT(" pasos/mm"); // (STR_A) Steps/mm + LSTR MSG_B_STEPS = STR_B _UxGT(" pasos/mm"); // (STR_B) Steps/mm + LSTR MSG_C_STEPS = STR_C _UxGT(" pasos/mm"); // (STR_C) Steps/mm + LSTR MSG_N_STEPS = _UxGT("@ pasos/mm"); // @ steps/mm + LSTR MSG_E_STEPS = _UxGT("E pasos/mm"); // E steps/mm + LSTR MSG_EN_STEPS = _UxGT("* pasos/mm"); // * Steps/mm + LSTR MSG_TEMPERATURE = _UxGT("Temperatura"); // Temperature + LSTR MSG_MOTION = _UxGT("Movemento"); // Motion + LSTR MSG_FILAMENT = _UxGT("Filamento"); // Filament + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E en mm") SUPERSCRIPT_THREE; // E in mm(SUPERSCRIPT_THREE) + LSTR MSG_FILAMENT_DIAM = _UxGT("Diam. fil."); // Fil. Dia. + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Diam. fil. *"); // Fil. Dia. * + LSTR MSG_CONTRAST = _UxGT("Constraste LCD"); // LCD Contrast + LSTR MSG_STORE_EEPROM = _UxGT("Gardar Configuración"); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("Cargar Configuración"); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("Rest. Defecto"); // Restore Defaults + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Recargar"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT("Información"); // Info Screen + LSTR MSG_PREPARE = _UxGT("Preparar"); // Prepare + LSTR MSG_TUNE = _UxGT("Axustar"); // Tune + LSTR MSG_PAUSE_PRINT = _UxGT("Pausar impresión"); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("Retomar impresión"); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("Deter impresión"); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("Tarxeta SD"); // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = _UxGT("Sen tarxeta SD"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_DWELL = _UxGT("En repouso..."); // Sleep... + LSTR MSG_USERWAIT = _UxGT("Prema para Retomar.."); // Click to Resume... + LSTR MSG_PRINT_ABORTED = _UxGT("Impresión Cancelada"); // Print Aborted + LSTR MSG_NO_MOVE = _UxGT("Sen movemento."); // No Move. + LSTR MSG_KILLED = _UxGT("MORTO."); // KILLED. + LSTR MSG_STOPPED = _UxGT("DETIDO."); // STOPPED. + LSTR MSG_CONTROL_RETRACT = _UxGT("Retraer mm"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Cambio retra. mm"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACTF = _UxGT("Retraer V"); // Retract V + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Alzar Z mm"); // Hop mm + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Recup. retra. mm"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Cambio recup. mm"); // S Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Recuperacion V"); // Unretract V + LSTR MSG_AUTORETRACT = _UxGT("Auto-Retracción"); // Auto-Retract + LSTR MSG_FILAMENTCHANGE = _UxGT("Cambiar Filamento"); // Change Filament + LSTR MSG_FILAMENTCHANGE_E = _UxGT("Cambiar Filamento *"); // Change * Filament + LSTR MSG_ATTACH_MEDIA = _UxGT("Iniciar ") MEDIA_TYPE_GL; // Attach (MEDIA_TYPE_EN) + LSTR MSG_ATTACH_SD = _UxGT("Iniciar SD"); // Attach SD Card + LSTR MSG_ATTACH_USB = _UxGT("Iniciar USB"); // Attach USB Drive + LSTR MSG_CHANGE_MEDIA = _UxGT("Cambiar ") MEDIA_TYPE_GL; // Refresh (MEDIA_TYPE_EN) + LSTR MSG_RUN_AUTOFILES = _UxGT("Autoarranque"); // Run Autofiles + LSTR MSG_ZPROBE_OUT = _UxGT("Sonda-Z fóra Cama"); // Z Probe Past Bed + LSTR MSG_BLTOUCH_RESET = _UxGT("Reiniciar"); // Reset + LSTR MSG_ZPROBE_XOFFSET = _UxGT("Desfase Sonda X"); // Probe X Offset + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Desfase Sonda Y"); // Probe Y Offset + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Desfase Sonda Z"); // Probe Z Offset + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Desfase Sonda @"); // Probe @ Offset + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Micropaso Sonda-Z"); // Babystep Probe Z + LSTR MSG_BABYSTEP_X = _UxGT("Micropaso X"); // Babystep X + LSTR MSG_BABYSTEP_Y = _UxGT("Micropaso Y"); // Babystep Y + LSTR MSG_BABYSTEP_Z = _UxGT("Micropaso Z"); // Babystep Z + LSTR MSG_BABYSTEP_N = _UxGT("Micropaso @"); // Babystep @ + LSTR MSG_ENDSTOP_ABORT = _UxGT("Erro FinCarro"); // Endstop Abort + LSTR MSG_ERR_HEATING_FAILED = _UxGT("Fallo Quentando"); // Heating Failed + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Erro:Temp Redundante"); // Err: REDUNDANT TEMP + LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("FUGA TÉRMICA"); // THERMAL RUNAWAY + LSTR MSG_ERR_MAXTEMP = _UxGT("Erro:TEMP MÁX"); // Err: MAXTEMP + LSTR MSG_ERR_MINTEMP = _UxGT("Erro:TEMP MÍN"); // Err: MINTEMP + LSTR MSG_HALTED = _UxGT("IMPRESORA DETIDA"); // PRINTER HALTED + LSTR MSG_PLEASE_RESET = _UxGT("Debe reiniciar!"); // Please Reset + LSTR MSG_HEATING = _UxGT("Quentando..."); // Heating... + LSTR MSG_BED_HEATING = _UxGT("Quentando cama..."); // Bed Heating... + LSTR MSG_DELTA_CALIBRATE = _UxGT("Calibracion Delta"); // Delta Calibration + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Calibrar X"); // Calibrate X + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Calibrar Y"); // Calibrate Y + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Calibrar Z"); // Calibrate Z + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibrar Centro"); // Calibrate Center + LSTR MSG_INFO_MENU = _UxGT("Acerca de..."); // About Printer + LSTR MSG_INFO_PRINTER_MENU = _UxGT("Información"); // Printer Info + LSTR MSG_INFO_STATS_MENU = _UxGT("Estatísticas"); // Stats + LSTR MSG_INFO_BOARD_MENU = _UxGT("Placa nai"); // Board Info + LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Termistores"); // Thermistors + LSTR MSG_INFO_EXTRUDERS = _UxGT("Extrusores"); // Extruders + LSTR MSG_INFO_BAUDRATE = _UxGT("Baudios"); // Baud + LSTR MSG_INFO_PROTOCOL = _UxGT("Protocolo"); // Protocol + LSTR MSG_CASE_LIGHT = _UxGT("Luz da Caixa"); // Case Light + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Impresións"); // Prints + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completadas"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); // Total + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Máis Longa"); // Longest + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extruido"); // Extruded + LSTR MSG_INFO_MIN_TEMP = _UxGT("Temp Mín"); // Min Temp + LSTR MSG_INFO_MAX_TEMP = _UxGT("Temp Máx"); // Max Temp + LSTR MSG_INFO_PSU = _UxGT("Fonte Alimentación"); // PSU + LSTR MSG_DRIVE_STRENGTH = _UxGT("Forza do Motor"); // Drive Strength + LSTR MSG_DAC_EEPROM_WRITE = _UxGT("Escribe DAC EEPROM"); // DAC EEPROM Write + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Retomar traballo"); // Continue + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Agarde...")); // |Please wait... + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Introduza e click")); // |Insert and Click + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Descargando...")); // |Ejecting... + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Cargando...")); // |Loading... + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Retomando...")); // |Resuming... + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); // (LCD_STR_THERMOMETER) Min + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); // (LCD_STR_THERMOMETER) Max + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fact"); // (LCD_STR_THERMOMETER) Fact + LSTR MSG_LCD_ON = _UxGT("Acender"); // On + LSTR MSG_LCD_OFF = _UxGT("Apagar"); // Off + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("IMPRESORA INCORRECTA"); // INCORRECT PRINTER + LSTR MSG_DEBUG_MENU = _UxGT("Menú depuración"); // Debug Menu + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Test barra progreso"); // Progress Bar Test + LSTR MSG_MOVING = _UxGT("Movendo..."); // Moving... + LSTR MSG_FREE_XY = _UxGT("Libre XY"); // Free XY + LSTR MSG_HOME_FIRST = _UxGT("Orixe %s Primeiro"); // Home %s First + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Quentando...")); // |Heating... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Prema para quentar")); // |Click to heat + LSTR MSG_YES = _UxGT("SI"); // YES + LSTR MSG_NO = _UxGT("NON"); // NO + LSTR MSG_BACK = _UxGT("Atrás"); // Back + LSTR MSG_MEDIA_ABORTING = _UxGT("Cancelando..."); // Aborting... + LSTR MSG_MEDIA_READ_ERROR = _UxGT("Erro lectura ") MEDIA_TYPE_GL; // (MEDIA_TYPE_EN) read error + LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("Disp. USB retirado"); // USB device removed + LSTR MSG_USB_FD_USB_FAILED = _UxGT("Inicio USB fallido"); // USB start failed + LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("FinCarro SW"); // Soft Endstops + LSTR MSG_ADVANCED_SETTINGS = _UxGT("Axustes avanzados"); // Advanced Settings + LSTR MSG_CONFIGURATION = _UxGT("Configuración"); // Configuration + LSTR MSG_AUTO_Z_ALIGN = _UxGT("Autoaliñar Z"); // Auto Z-Align + LSTR MSG_Z_FADE_HEIGHT = _UxGT("Compensación Altura"); // Fade Height + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Preque. Personali."); // Preheat Custom + LSTR MSG_LASER_MENU = _UxGT("Control Láser"); // Laser Control + LSTR MSG_LASER_POWER = _UxGT("Potencia Láser"); // Laser Power + LSTR MSG_SPINDLE_MENU = _UxGT("Control Fuso"); // Spindle Control + LSTR MSG_SPINDLE_POWER = _UxGT("Potencia Fuso"); // Spindle Pwr + LSTR MSG_SPINDLE_REVERSE = _UxGT("Inverter xiro"); // Spindle Reverse + LSTR MSG_BED_TRAMMING = _UxGT("Nivelar Cantos"); // Bed Tramming + LSTR MSG_NEXT_CORNER = _UxGT("Seguinte Canto"); // Next Corner + LSTR MSG_MESH_EDITOR = _UxGT("Editor Mallado"); // Mesh Editor + LSTR MSG_EDIT_MESH = _UxGT("Editar Mallado"); // Edit Mesh + LSTR MSG_EDITING_STOPPED = _UxGT("Ed. Mallado Detida"); // Mesh Editing Stopped + LSTR MSG_PROBING_POINT = _UxGT("Punto de Proba"); // Probing Point + LSTR MSG_MESH_X = _UxGT("Índice X"); // Index X + LSTR MSG_MESH_Y = _UxGT("Índice Y"); // Index Y + LSTR MSG_MESH_EDIT_Z = _UxGT("Valor Z"); // Z Value + LSTR MSG_CUSTOM_COMMANDS = _UxGT("Comandos Personaliz."); // Custom Commands + LSTR MSG_M48_TEST = _UxGT("M48 Probar Sonda"); // M48 Probe Test + LSTR MSG_M48_POINT = _UxGT("M48 Punto"); // M48 Point + LSTR MSG_M48_DEVIATION = _UxGT("Desviación"); // Deviation + LSTR MSG_IDEX_MENU = _UxGT("Modo IDEX"); // IDEX Mode + LSTR MSG_OFFSETS_MENU = _UxGT("Ferramentas Compens"); // Tool Offsets + LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-Estacionar"); // Auto-Park + LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplicación"); // Duplication + LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Copia Espello"); // Mirrored Copy + LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Control Total"); // Full Control + LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2º Bico Z"); // 2nd Nozzle Z + LSTR MSG_HOTEND_OFFSET_N = _UxGT("2º Bico @"); // 2nd Nozzle @ + LSTR MSG_UBL_DOING_G29 = _UxGT("Executando G29"); // Doing G29 + LSTR MSG_UBL_TOOLS = _UxGT("Ferramentas UBL"); // UBL Tools + LSTR MSG_LCD_TILTING_MESH = _UxGT("Punto de inclinación"); // Tilting Point + LSTR MSG_UBL_MANUAL_MESH = _UxGT("Facer Malla Manual"); // Manually Build Mesh + LSTR MSG_UBL_BC_INSERT = _UxGT("Colocar Calzo e Medir"); // Place Shim & Measure + LSTR MSG_UBL_BC_INSERT2 = _UxGT("Medir"); // Measure + LSTR MSG_UBL_BC_REMOVE = _UxGT("Quitar e Medir Cama"); // Remove & Measure Bed + LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Mover ao Seguinte"); // Moving to next + LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Temp Cama"); // Bed Temp + LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Temp Cama"); // Bed Temp + LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Temp Bico"); // Hotend Temp + LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Temp Bico"); // Hotend Temp + LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Edit. Malla Person."); // Edit Custom Mesh + LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Axuste Fino da Malla"); // Fine Tuning Mesh + LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Fin Edición da Malla"); // Done Editing Mesh + LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Crear Malla Person."); // Build Custom Mesh + LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Crear Malla"); // Build Mesh + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Crear Malla ($)"); // Build Mesh ($) + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Validar Malla ($)"); // Validate Mesh ($) + LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Crear Malla Fría"); // Build Cold Mesh + LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Axustar Altura Malla"); // Adjust Mesh Height + LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Altura"); // Height Amount + LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Validar Malla"); // Validate Mesh + LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Validar Malla perso."); // Validate Custom Mesh + LSTR MSG_G26_HEATING_BED = _UxGT("G26 Quentando Cama"); // G26 Heating Bed + LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 Quentando Bico"); // G26 Heating Nozzle + LSTR MSG_G26_MANUAL_PRIME = _UxGT("Traballo manual..."); // Manual priming... + LSTR MSG_G26_FIXED_LENGTH = _UxGT("Traballo Lonxit Fixa"); // Fixed Length Prime + LSTR MSG_G26_PRIME_DONE = _UxGT("Fin Traballo"); // Done Priming + LSTR MSG_G26_CANCELED = _UxGT("G26 Cancelado"); // G26 Canceled + LSTR MSG_G26_LEAVING = _UxGT("Saíndo de G26"); // Leaving G26 + LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Continuar Malla"); // Continue Bed Mesh + LSTR MSG_UBL_MESH_LEVELING = _UxGT("Nivelación Malla"); // Mesh Leveling + LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("Nivelación 3Puntos"); // 3-Point Leveling + LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Nivelación Grid"); // Grid Mesh Leveling + LSTR MSG_UBL_MESH_LEVEL = _UxGT("Nivelar Malla"); // Level Mesh + LSTR MSG_UBL_SIDE_POINTS = _UxGT("Puntos Laterais"); // Side Points + LSTR MSG_UBL_MAP_TYPE = _UxGT("Tipo de Mapa "); // Map Type + LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Gardar Mapa"); // Output Mesh Map + LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Enviar ao Host"); // Output for Host + LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Gardar en CSV"); // Output for CSV + LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Backup Externo"); // Off Printer Backup + LSTR MSG_UBL_INFO_UBL = _UxGT("Info do UBL"); // Output UBL Info + LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Cantidade de Recheo"); // Fill-in Amount + LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Recheo Manual"); // Manual Fill-in + LSTR MSG_UBL_SMART_FILLIN = _UxGT("Recheo Intelixente"); // Smart Fill-in + LSTR MSG_UBL_FILLIN_MESH = _UxGT("Recheo da Malla"); // Fill-in Mesh + LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Invalidar todo"); // Invalidate All + LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Invalidar cercanos"); // Invalidate Closest + LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Axustar Fino Todo"); // Fine Tune All + LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Axustar Fino Cerc"); // Fine Tune Closest + LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Almacenamento Malla"); // Mesh Storage + LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Rañura Memoria"); // Memory Slot + LSTR MSG_UBL_LOAD_MESH = _UxGT("Cargar Malla Cama"); // Load Bed Mesh + LSTR MSG_UBL_SAVE_MESH = _UxGT("Gardar Malla Cama"); // Save Bed Mesh + LSTR MSG_MESH_LOADED = _UxGT("Malla %i Cargada"); // Mesh %i Loaded + LSTR MSG_MESH_SAVED = _UxGT("Malla %i Gardada"); // Mesh %i Saved + LSTR MSG_UBL_NO_STORAGE = _UxGT("Sen Gardar"); // No Storage + LSTR MSG_UBL_SAVE_ERROR = _UxGT("Erro: Gardadado UBL"); // UBL Save Error + LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Erro: Recuperación UBL"); // UBL Restore Error + LSTR MSG_UBL_Z_OFFSET = _UxGT("Desfase de Z: "); // Z-Offset: + LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Desfase de Z Detido"); // Z-Offset Stopped + LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("UBL Paso a Paso"); // Step-By-Step UBL + LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1. Crear Malla Fría"); // 1. Build Cold Mesh + LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2. Recheo Intelixente"); // 2. Smart Fill-in + LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3. Validar Malla"); // 3. Validate Mesh + LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4. Axustar Fino Todo"); // 4. Fine Tune All + LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5. Validar Malla"); // 5. Validate Mesh + LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6. Axustar Fino Todo"); // 6. Fine Tune All + LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7. Gardar Malla Cama"); // 7. Save Bed Mesh + LSTR MSG_LED_CONTROL = _UxGT("Control LED"); // LED Control + LSTR MSG_LIGHTS = _UxGT("Luces"); // Lights + LSTR MSG_LIGHT_N = _UxGT("Luce #{"); // Light #{ + LSTR MSG_LED_PRESETS = _UxGT("Axustes Luz"); // Light Presets + LSTR MSG_SET_LEDS_RED = _UxGT("Vermello"); // Red + LSTR MSG_SET_LEDS_ORANGE = _UxGT("Laranxa"); // Orange + LSTR MSG_SET_LEDS_YELLOW = _UxGT("Amarelo"); // Yellow + LSTR MSG_SET_LEDS_GREEN = _UxGT("Verde"); // Green + LSTR MSG_SET_LEDS_BLUE = _UxGT("Azul"); // Blue + LSTR MSG_SET_LEDS_INDIGO = _UxGT("Índigo"); // Indigo + LSTR MSG_SET_LEDS_VIOLET = _UxGT("Violeta"); // Violet + LSTR MSG_SET_LEDS_WHITE = _UxGT("Branco"); // White + LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Por defecto"); // Default + LSTR MSG_CUSTOM_LEDS = _UxGT("Luces personalizadas"); // Custom Lights + LSTR MSG_INTENSITY_R = _UxGT("Intensidade Vermello"); // Red Intensity + LSTR MSG_INTENSITY_G = _UxGT("Intensidade Verde"); // Green Intensity + LSTR MSG_INTENSITY_B = _UxGT("Intensidade Azul"); // Blue Intensity + LSTR MSG_INTENSITY_W = _UxGT("Intensidade Branco"); // White Intensity + LSTR MSG_LED_BRIGHTNESS = _UxGT("Brillo"); // Brightness + LSTR MSG_HOTEND_TOO_COLD = _UxGT("Bico moi frío"); // Hotend too cold + LSTR MSG_CHAMBER = _UxGT("Cámara"); // Enclosure + LSTR MSG_STORED_FAN_N = _UxGT("Ventilador Mem. ~"); // Stored Fan ~ + LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Vel. Vent. Extra"); // Extra Fan Speed + LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Vel. Vent. Extra ~"); // Extra Fan Speed ~ + LSTR MSG_PID_AUTOTUNE = _UxGT("Auto-Sint. PID"); // PID Autotune + LSTR MSG_PID_AUTOTUNE_E = _UxGT("Auto-Sint. PID *"); // Autotune * PID + LSTR MSG_JERK = _UxGT("Jerk"); // Jerk + LSTR MSG_VA_JERK = _UxGT("Max ") STR_A _UxGT(" Jerk"); // Max (STR_A) Jerk + LSTR MSG_VB_JERK = _UxGT("Max ") STR_B _UxGT(" Jerk"); // Max (STR_B) Jerk + LSTR MSG_VC_JERK = _UxGT("Max ") STR_C _UxGT(" Jerk"); // Max (STR_C) Jerk + LSTR MSG_VN_JERK = _UxGT("Max @ Jerk"); // Max @ Jerk + LSTR MSG_VE_JERK = _UxGT("Max E Jerk"); // Max E Jerk + LSTR MSG_JUNCTION_DEVIATION = _UxGT("Desvío Unión"); // Junction Dev + LSTR MSG_MAX_SPEED = _UxGT("Max Velocidade"); // Max Speed (mm/s) + LSTR MSG_VMAX_A = _UxGT("Max ") STR_A _UxGT(" Speed"); // Max (STR_A) Speed + LSTR MSG_VMAX_B = _UxGT("Max ") STR_B _UxGT(" Speed"); // Max (STR_B) Speed + LSTR MSG_VMAX_C = _UxGT("Max ") STR_C _UxGT(" Speed"); // Max (STR_C) Speed + LSTR MSG_VMAX_N = _UxGT("Max @ Speed"); // Max @ Speed + LSTR MSG_VMAX_E = _UxGT("Max E Speed"); // Max E Speed + LSTR MSG_VMAX_EN = _UxGT("Max * Speed"); // Max * Speed + LSTR MSG_VMIN = _UxGT("Vmin"); // Min Velocity + LSTR MSG_FILAMENT_UNLOAD = _UxGT("Descarga mm"); // Unload mm + LSTR MSG_FILAMENT_LOAD = _UxGT("Carga mm"); // Load mm + LSTR MSG_ADVANCE_K = _UxGT("Avance K"); // Advance K + LSTR MSG_ADVANCE_K_E = _UxGT("Avance K *"); // Advance K * + LSTR MSG_INIT_EEPROM = _UxGT("Inicializar EEPROM"); // Initialize EEPROM + LSTR MSG_MEDIA_UPDATE = _UxGT("Actualizar ") MEDIA_TYPE_GL; // (MEDIA_TYPE_EN) Update + LSTR MSG_RESET_PRINTER = _UxGT("Reiniciar Impresora"); // Reset Printer + LSTR MSG_START_PRINT = _UxGT("Comezar impresión"); // Start Print + LSTR MSG_BUTTON_NEXT = _UxGT("Seguinte"); // Next + LSTR MSG_BUTTON_INIT = _UxGT("Comezar"); // Init + LSTR MSG_BUTTON_STOP = _UxGT("Deter"); // Stop + LSTR MSG_BUTTON_PRINT = _UxGT("Imprimir"); // Print + LSTR MSG_BUTTON_RESET = _UxGT("Reiniciar"); // Reset + LSTR MSG_BUTTON_CANCEL = _UxGT("Cancelar"); // Cancel + LSTR MSG_BUTTON_DONE = _UxGT("Listo"); // Done + LSTR MSG_BUTTON_BACK = _UxGT("Atrás"); // Back + LSTR MSG_BUTTON_PROCEED = _UxGT("Proceder"); // Proceed + LSTR MSG_PRINTING_OBJECT = _UxGT("Imprimindo Obxecto"); // Print Obj + LSTR MSG_CANCEL_OBJECT = _UxGT("Cancelar Obxecto"); // Cancel Obj + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Cancelar Obxecto {"); // Cancel Obj { + LSTR MSG_OUTAGE_RECOVERY = _UxGT("Recuperar Impresión"); // Power Outage + LSTR MSG_PRINT_PAUSED = _UxGT("Impresión Pausada"); // Print Paused + LSTR MSG_PRINTING = _UxGT("Imprimindo..."); // Printing... + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V"); // S UnRet V + LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Lonxitude Retracción"); // Swap Length + LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Lonxitude de Purga"); // Purge Length + LSTR MSG_TOOL_CHANGE = _UxGT("Cambiar Ferramenta"); // Tool Change + LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Levantar Z"); // Z Raise + LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Velocidade prim."); // Prime Speed + LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Vel. de Retracción"); // Retract Speed + LSTR MSG_NOZZLE_STANDBY = _UxGT("Bico Standby"); // Nozzle Standby + LSTR MSG_FILAMENTLOAD = _UxGT("Cargar Filamento"); // Load Filament + LSTR MSG_FILAMENTLOAD_E = _UxGT("Cargar Filamento *"); // Load * Filament + LSTR MSG_FILAMENTUNLOAD = _UxGT("Descargar Filamento"); // Unload Filament + LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Descargar Filamento *"); // Unload * Filament + LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Descargar Todo"); // Unload All + LSTR MSG_RELEASE_MEDIA = _UxGT("Lanzar ") MEDIA_TYPE_GL; // Release (MEDIA_TYPE_EN) + LSTR MSG_SKEW_FACTOR = _UxGT("Factor de Desviación"); // Skew Factor + LSTR MSG_BLTOUCH = _UxGT("BLTouch"); // BLTouch + LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Auto-Test"); // Self-Test + LSTR MSG_BLTOUCH_STOW = _UxGT("Recoller"); // Stow + LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Estender"); // Deploy + LSTR MSG_BLTOUCH_SW_MODE = _UxGT("Modo Software"); // SW-Mode + LSTR MSG_BLTOUCH_5V_MODE = _UxGT("Modo 5V"); // 5V-Mode + LSTR MSG_BLTOUCH_OD_MODE = _UxGT("Modo OD"); // OD-Mode + LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("Modo Almacenar"); // Mode-Store + LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Axustar BLTouch a 5V"); // Set BLTouch to 5V + LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Axustar BLTouch a OD"); // Set BLTouch to OD + LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Modo de Informe"); // Report Drain + LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("PERIGO: Unha mala configuración pode producir daños! Proceder igualmente?"); // DANGER: Bad settings can cause damage! Proceed anyway? + LSTR MSG_TOUCHMI_PROBE = _UxGT("TouchMI"); // TouchMI + LSTR MSG_TOUCHMI_INIT = _UxGT("Iniciar TouchMI"); // Init TouchMI + LSTR MSG_TOUCHMI_ZTEST = _UxGT("Test de Desfase Z"); // Z Offset Test + LSTR MSG_TOUCHMI_SAVE = _UxGT("Gardar"); // Save + LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("Estender TouchMI"); // Deploy TouchMI + LSTR MSG_MANUAL_DEPLOY = _UxGT("Estender Sonda Z"); // Deploy Z-Probe + LSTR MSG_MANUAL_STOW = _UxGT("Recoller Sonda Z"); // Stow Z-Probe + LSTR MSG_BABYSTEP_TOTAL = _UxGT("Total"); // Total + LSTR MSG_COOLING = _UxGT("Arrefriando..."); // Cooling... + LSTR MSG_BED_COOLING = _UxGT("Enfriando Cama..."); // Bed Cooling... + LSTR MSG_CHAMBER_HEATING = _UxGT("Quentando Cámara..."); // Chamber Heating... + LSTR MSG_CHAMBER_COOLING = _UxGT("Arrefriando Cámara..."); // Chamber Cooling... + LSTR MSG_DELTA_SETTINGS = _UxGT("Configuración Delta"); // Delta Settings + LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Auto Calibración"); // Auto Calibration + LSTR MSG_DELTA_DIAG_ROD = _UxGT("Barra Diagonal"); // Diag Rod + LSTR MSG_DELTA_HEIGHT = _UxGT("Altura"); // Height + LSTR MSG_DELTA_RADIUS = _UxGT("Radio"); // Radius + LSTR MSG_3POINT_LEVELING = _UxGT("Nivelación 3puntos"); // 3-Point Leveling + LSTR MSG_LINEAR_LEVELING = _UxGT("Nivelación Lineal"); // Linear Leveling + LSTR MSG_BILINEAR_LEVELING = _UxGT("Nivelación Bilineal"); // Bilinear Leveling + LSTR MSG_UBL_LEVELING = _UxGT("Nivelación UBL"); // Unified Bed Leveling + LSTR MSG_MESH_LEVELING = _UxGT("Nivelación en Malla"); // Mesh Leveling + LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Reloxo Traballo: OFF"); // Runaway Watch: OFF + LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Reloxo Traballo: ON"); // Runaway Watch: ON + LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Brillo Luces"); // Light Brightness + LSTR MSG_DAC_PERCENT_N = _UxGT("@ Driver %"); // @ Driver % + LSTR MSG_ERROR_TMC = _UxGT("ERRO CONEX. TMC"); // TMC CONNECTION ERROR + LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("CAMBIAR FILAMENTO"); // FILAMENT CHANGE + LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("IMPRESIÓN PAUSADA"); // PRINT PAUSED + LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("CARGAR FILAMENTO"); // LOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("DESCARGAR FILAMENTO"); // UNLOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("OPCIÓN DE RETOMAR:"); // RESUME OPTIONS: + LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Purgar máis"); // Purge more + LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Bico: "); // Nozzle: + LSTR MSG_RUNOUT_SENSOR = _UxGT("Sensor Filamento"); // Runout Sensor + LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("Dist mm Sensor Fil"); // Runout Dist mm + LSTR MSG_KILL_HOMING_FAILED = _UxGT("Fallo ao ir á Orixe"); // Homing Failed + LSTR MSG_LCD_PROBING_FAILED = _UxGT("Fallo ao Sondar"); // Probing Failed + LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("ESCOLLE FILAMENTO"); // CHOOSE FILAMENT + LSTR MSG_MMU2_MENU = _UxGT("MMU"); // MMU + LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("Actualizar FW MMU!"); // Update MMU Firmware! + LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU Precisa Atención."); // MMU Needs Attention. + LSTR MSG_MMU2_RESUME = _UxGT("Retomar impr."); // Resume + LSTR MSG_MMU2_RESUMING = _UxGT("Retomando..."); // MMU Resuming... + LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("Cargar Filamento"); // Load + LSTR MSG_MMU2_LOAD_ALL = _UxGT("Cargar Todo"); // Load All + LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Cargar até bico"); // Load to Nozzle + LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("Expulsar Filamento"); // Eject + LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("Expulsar Filamento ~"); // Eject ~ + LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Descargar Filamento"); // Unload + LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Cargando Fil. %i..."); // Filament %i Load... + LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Expulsando Fil. ..."); // Filament %i Eject... + LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Descargando Fil..."); // Filament %i Unload... + LSTR MSG_MMU2_ALL = _UxGT("Todo"); // All + LSTR MSG_MMU2_FILAMENT_N = _UxGT("Filamento ~"); // Filament ~ + LSTR MSG_MMU2_RESET = _UxGT("Reiniciar MMU"); // Reset MMU + LSTR MSG_MMU2_RESETTING = _UxGT("Reiniciando MMU..."); // Resetting... + LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Expulsar, premer"); // Eject Recover + LSTR MSG_MIX = _UxGT("Mestura"); // Mix + LSTR MSG_MIX_COMPONENT_N = _UxGT("Compoñente {"); // Component { + LSTR MSG_MIXER = _UxGT("Mesturadora"); // Mixer + LSTR MSG_GRADIENT = _UxGT("Degradado"); // Gradient + LSTR MSG_FULL_GRADIENT = _UxGT("Degradado Total"); // Full Gradient + LSTR MSG_TOGGLE_MIX = _UxGT("Mestura Conmutada"); // Toggle Mix + LSTR MSG_CYCLE_MIX = _UxGT("Mestura Cíclica"); // Cycle Mix + LSTR MSG_GRADIENT_MIX = _UxGT("Mestura de Degradado"); // Gradient Mix + LSTR MSG_REVERSE_GRADIENT = _UxGT("Degradado Inverso"); // Reverse Gradient + LSTR MSG_ACTIVE_VTOOL = _UxGT("Activar Ferr-V"); // Active V-tool + LSTR MSG_START_VTOOL = _UxGT("Inicio Ferr-V"); // Start V-tool + LSTR MSG_END_VTOOL = _UxGT(" Fin Ferr-V"); // End V-tool + LSTR MSG_GRADIENT_ALIAS = _UxGT("Alias Ferr-V"); // Alias V-tool + LSTR MSG_RESET_VTOOLS = _UxGT("Reiniciar Ferr-V"); // Reset V-tools + LSTR MSG_COMMIT_VTOOL = _UxGT("Commit mest. Ferr-V"); // Commit V-tool Mix + LSTR MSG_VTOOLS_RESET = _UxGT("Ferr-V reiniciadas"); // V-tools Were Reset + LSTR MSG_START_Z = _UxGT("Inicio Z:"); // Start Z: + LSTR MSG_END_Z = _UxGT(" Fin Z:"); // End Z: + LSTR MSG_GAMES = _UxGT("Xogos"); // Games + LSTR MSG_BRICKOUT = _UxGT("Brickout"); // Brickout + LSTR MSG_INVADERS = _UxGT("Invaders"); // Invaders + LSTR MSG_SNAKE = _UxGT("Sn4k3"); // Sn4k3 + LSTR MSG_MAZE = _UxGT("Labirinto"); // Maze + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Premer para continuar")); // |Click to continue + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Estacionando...")); // |Parking... + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Purgando...")); // |Purging... + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Prema para finalizar")); // |Click to finish + LSTR MSG_TMC_DRIVERS = _UxGT("Controladores TMC"); // TMC Drivers + LSTR MSG_TMC_CURRENT = _UxGT("Controlador Actual"); // Driver Current + LSTR MSG_TMC_HYBRID_THRS = _UxGT("Limiar Hibrido"); // Hybrid Threshold + LSTR MSG_TMC_HOMING_THRS = _UxGT("Orixe sen Sensores"); // Sensorless Homing + LSTR MSG_TMC_STEPPING_MODE = _UxGT("Modo de pasos"); // Stepping Mode + LSTR MSG_TMC_STEALTHCHOP = _UxGT("StealthChop"); // StealthChop + LSTR MSG_SERVICE_RESET = _UxGT("Reiniciar"); // Reset + LSTR MSG_SERVICE_IN = _UxGT(" dentro:"); // in: + LSTR MSG_BACKLASH = _UxGT("Reacción"); // Backlash + LSTR MSG_BACKLASH_CORRECTION = _UxGT("Corrección"); // Correction + LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Suavizado"); // Smoothing + LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Desbord. Subch."); // Subcall Overflow + LSTR MSG_CUTTER_FREQUENCY = _UxGT("Frecuencia"); // Frequency + LSTR MSG_NOZZLE_PARKED = _UxGT("Bico Estacionado"); // Nozzle Parked + LSTR MSG_CONTROLLER_FAN = _UxGT("Controlador Vent."); // Controller Fan + LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("Velocidade Repouso"); // Idle Speed + LSTR MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("Modo Auto"); // Auto Mode + LSTR MSG_CONTROLLER_FAN_SPEED = _UxGT("Velocidade Activa"); // Active Speed + LSTR MSG_CONTROLLER_FAN_DURATION = _UxGT("Tempo Repouso"); // Idle Period + LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("Fin Auto-Sint PID"); // PID tuning done + LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Auto-Sint. fallida! Extrusor danado."); // Autotune failed! Bad extruder. + LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Auto-Sint. fallida! Temperatura moi alta."); // Autotune failed! Temperature too high. + LSTR MSG_PID_TIMEOUT = _UxGT("Auto-Sint. fallida! Tempo excedido."); // Autotune failed! Timeout. + LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("Frecuencia max"); // XY Freq Limit + LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("Avance min"); // Min FR Factor + LSTR MSG_ERR_EEPROM_CRC = _UxGT("Erro: CRC EEPROM"); // Err: EEPROM CRC + LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Erro: Tamaño EEPROM"); // Err: EEPROM Size + LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Erro: Versión EEPROM"); // Err: EEPROM Version + LSTR MSG_SETTINGS_STORED = _UxGT("Config Gardada"); // Settings Stored + LSTR MSG_PAUSING = _UxGT("Pausando..."); // Pausing... + LSTR MSG_PRINT_DONE = _UxGT("Fin Impresión"); // Print Done + LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Cambio Extra"); // Swap Extra + LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Extrusor Est."); // Park Head + LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Vel. Recuperación"); // Recover Speed + LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Vel. Ventilador"); // Fan Speed + LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Tempo Ventilador"); // Fan Time + LSTR MSG_TOOL_MIGRATION_ON = _UxGT("Auto ON"); // Auto ON + LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("Auto OFF"); // Auto OFF + LSTR MSG_TOOL_MIGRATION = _UxGT("Cambio Ferramenta"); // Tool Migration + LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("Cambio Automático"); // Auto-migration + LSTR MSG_TOOL_MIGRATION_END = _UxGT("Último Extrusor"); // Last Extruder + LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("Cambio a *"); // Migrate to * + LSTR MSG_ZPROBE_OFFSETS = _UxGT("Desfases Sonda"); // Probe Offsets + LSTR MSG_LEVEL_X_AXIS = _UxGT("Nivel Eixe X"); // Level X Axis + LSTR MSG_AUTO_CALIBRATE = _UxGT("Auto Calibrar"); // Auto Calibrate + LSTR MSG_HEATER_TIMEOUT = _UxGT("Tempo exc. Quent."); // Heater Timeout + LSTR MSG_REHEAT = _UxGT("Requentar"); // Reheat + LSTR MSG_REHEATING = _UxGT("Requentando..."); // Reheating... } namespace LanguageWide_gl { using namespace LanguageNarrow_gl; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Total Impresións"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completadas"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Tempo Total Imp."); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Impresión máis longa"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total Extruído"); + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Total Impresións"); // Print Count + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completadas"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Tempo Total Imp."); // Print Time + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Impresión máis longa"); // Longest Job Time + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total Extruído"); // Extruded Total #endif } @@ -602,16 +583,16 @@ namespace LanguageTall_gl { using namespace LanguageWide_gl; #if LCD_HEIGHT >= 4 // Filament Change screens show up to 3 lines on a 4-line display - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Preme o botón para", "continuar impresión")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Agarde para", "comezar cambio", "de filamento")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Introduza o", "filamento e", "faga click")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Prema o botón para", "quentar o bico")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Quentando bico", "Agarde, por favor...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Agarde pola", "descarga do", "filamento")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Agarde pola", "carga do", "filamento")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Agarde para", "purgar o filamento")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Prema para finalizar", "a purga do filamen.")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Agarde a que", "se retome", "a impresión")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Agarde para", "comezar cambio", "de filamento")); // |Wait for|filament change|to start + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Introduza o", "filamento e", "faga click")); // |Insert filament|and press button|to continue + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Agarde pola", "descarga do", "filamento")); // |Wait for|filament unload + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Agarde pola", "carga do", "filamento")); // |Wait for|filament load + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Agarde a que", "se retome", "a impresión")); // |Wait for print|to resume... + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Quentando bico", "Agarde, por favor...")); // |Nozzle heating|Please wait... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Prema o botón para", "quentar o bico")); // |Press button|to heat nozzle + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Preme o botón para", "continuar impresión")); // |Press Button|to resume print + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Agarde para", "purgar o filamento")); // |Wait for|filament purge + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Prema para finalizar", "a purga do filamen.")); // |Click to finish|filament purge #endif } diff --git a/Marlin/src/lcd/language/language_hr.h b/Marlin/src/lcd/language/language_hr.h index 2c6785cf72..1ef4bd7beb 100644 --- a/Marlin/src/lcd/language/language_hr.h +++ b/Marlin/src/lcd/language/language_hr.h @@ -36,7 +36,7 @@ * @ displays an axis name such as XYZUVW, or E for an extruder */ -#define DISPLAY_CHARSET_ISO10646_1 // use the better font on full graphic displays. +#define DISPLAY_CHARSET_ISO10646_1 namespace LanguageNarrow_hr { using namespace Language_en; // Inherit undefined strings from English @@ -44,139 +44,127 @@ namespace LanguageNarrow_hr { constexpr uint8_t CHARSIZE = 2; LSTR LANGUAGE = _UxGT("Croatian"); - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" spreman."); - LSTR MSG_MEDIA_INSERTED = _UxGT("SD kartica umetnuta"); - LSTR MSG_MEDIA_REMOVED = _UxGT("SD kartica uklonjena"); - LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Max length 8 characters - LSTR MSG_MAIN_MENU = _UxGT("Main"); - LSTR MSG_DISABLE_STEPPERS = _UxGT("Ugasi steppere"); - LSTR MSG_AUTO_HOME = _UxGT("Automatski homing"); - LSTR MSG_AUTO_HOME_X = _UxGT("Home-aj X"); - LSTR MSG_AUTO_HOME_Y = _UxGT("Home-aj Y"); - LSTR MSG_AUTO_HOME_Z = _UxGT("Home-aj Z"); - LSTR MSG_LEVEL_BED_HOMING = _UxGT("Home-aj XYZ"); - LSTR MSG_LEVEL_BED_WAITING = _UxGT("Klikni za početak"); - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Sljedeća točka"); - LSTR MSG_LEVEL_BED_DONE = _UxGT("Niveliranje gotovo!"); - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Postavi home offsete"); - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Offsets postavljeni"); - - LSTR MSG_PREHEAT_1 = _UxGT("Predgrij ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Predgrij ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Dizna"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Dizna ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Sve"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Bed"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" conf"); - - LSTR MSG_PREHEAT_M = _UxGT("Predgrij $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Predgrij $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Predgrij $ Dizna"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Predgrij $ Dizna ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Predgrij $ Sve"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Predgrij $ Bed"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Predgrij $ conf"); - - LSTR MSG_COOLDOWN = _UxGT("Hlađenje"); - LSTR MSG_SWITCH_PS_ON = _UxGT("Uključi napajanje"); - LSTR MSG_SWITCH_PS_OFF = _UxGT("Isključi napajanje"); - LSTR MSG_MOVE_AXIS = _UxGT("Miči os"); - LSTR MSG_PROBE_AND_LEVEL = _UxGT("Probe i Nivelacija"); - LSTR MSG_BED_LEVELING = _UxGT("Niveliraj bed"); - LSTR MSG_LEVEL_BED = _UxGT("Niveliraj bed"); - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Korak Z offset"); - LSTR MSG_MOVE_X = _UxGT("Miči X"); - LSTR MSG_MOVE_Y = _UxGT("Miči Y"); - LSTR MSG_MOVE_Z = _UxGT("Miči Z"); - LSTR MSG_MOVE_N = _UxGT("Miči @"); - LSTR MSG_MOVE_E = _UxGT("Miči E"); - LSTR MSG_MOVE_EN = _UxGT("Miči *"); - LSTR MSG_MOVE_N_MM = _UxGT("Miči $mm"); - LSTR MSG_MOVE_N_IN = _UxGT("Miči $in"); - LSTR MSG_MOVE_N_DEG = _UxGT("Miči $") LCD_STR_DEGREE; - LSTR MSG_SPEED = _UxGT("Brzina"); - LSTR MSG_MESH_Z_OFFSET = _UxGT("Bed Z"); - LSTR MSG_NOZZLE = _UxGT("Dizna"); - LSTR MSG_NOZZLE_N = _UxGT("Dizna ~"); - LSTR MSG_BED = _UxGT("Bed"); - LSTR MSG_FAN_SPEED = _UxGT("Brzina ventilatora"); - LSTR MSG_FAN_SPEED_N = _UxGT("Brzina ventilatora ~"); - LSTR MSG_SELECT_E = _UxGT("Odaberi *"); - LSTR MSG_TEMPERATURE = _UxGT("Temperature"); - LSTR MSG_MOTION = _UxGT("Gibanje"); - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm") SUPERSCRIPT_THREE; - LSTR MSG_FILAMENT_DIAM = _UxGT("Fil. Dia."); - LSTR MSG_FILAMENT_DIAM_E = _UxGT("Fil. Dia. *"); - LSTR MSG_CONTRAST = _UxGT("Kontrast LCD-a"); - LSTR MSG_STORE_EEPROM = _UxGT("Pohrani u memoriju"); - LSTR MSG_LOAD_EEPROM = _UxGT("Učitaj memoriju"); - LSTR MSG_RESTORE_DEFAULTS = _UxGT("Učitaj Defaults"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Osvježi"); - LSTR MSG_INFO_SCREEN = _UxGT("Info screen"); - LSTR MSG_PREPARE = _UxGT("Pripremi"); - LSTR MSG_PAUSE_PRINT = _UxGT("Pauziraj print"); - LSTR MSG_RESUME_PRINT = _UxGT("Nastavi print"); - LSTR MSG_STOP_PRINT = _UxGT("Zaustavi print"); - LSTR MSG_MEDIA_MENU = _UxGT("Printaj s SD kartice"); - LSTR MSG_NO_MEDIA = _UxGT("Nema SD kartice"); - LSTR MSG_USERWAIT = _UxGT("Čekaj korisnika..."); - LSTR MSG_PRINT_ABORTED = _UxGT("Print otkazan"); - LSTR MSG_STOPPED = _UxGT("ZAUSTAVLJEN. "); - LSTR MSG_FILAMENTCHANGE = _UxGT("Promijeni filament"); - LSTR MSG_FILAMENTCHANGE_E = _UxGT("Promijeni filament *"); - - LSTR MSG_ATTACH_MEDIA = _UxGT("Init. SD karticu"); - LSTR MSG_ATTACH_SD = _UxGT("Init. SD karticu"); - LSTR MSG_ATTACH_USB = _UxGT("Init. USB pogon"); - LSTR MSG_CHANGE_MEDIA = _UxGT("Promijeni SD karticu"); - LSTR MSG_RUN_AUTOFILES = _UxGT("Auto pokretanje"); - - LSTR MSG_ERR_HEATING_FAILED = _UxGT("Grijanje neuspješno"); - LSTR MSG_HEATING = _UxGT("Grijanje..."); - LSTR MSG_BED_HEATING = _UxGT("Grijanje Bed-a..."); - LSTR MSG_DELTA_CALIBRATE = _UxGT("Delta Kalibracija"); - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Kalibriraj X"); - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Kalibriraj Y"); - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Kalibriraj Z"); - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Kalibriraj Središte"); - LSTR MSG_INFO_MENU = _UxGT("O printeru"); - LSTR MSG_INFO_PRINTER_MENU = _UxGT("Podaci o printeru"); - LSTR MSG_INFO_STATS_MENU = _UxGT("Statistika printera"); - LSTR MSG_INFO_BOARD_MENU = _UxGT("Podaci o elektronici"); - LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Termistori"); - LSTR MSG_INFO_EXTRUDERS = _UxGT("Extruderi"); - LSTR MSG_INFO_BAUDRATE = _UxGT("Baud"); - LSTR MSG_INFO_PROTOCOL = _UxGT("Protokol"); - LSTR MSG_CASE_LIGHT = _UxGT("Osvjetljenje"); - - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Neispravan pisač"); - - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Printovi"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Završeni"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Ukupno"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Najduži"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extrudirano"); - - LSTR MSG_INFO_PSU = _UxGT("Napajanje"); - - LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Nastavi print"); - - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Čekaj", "filament unload")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Pričekaj", "filament load")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Nastavljam...")); - - // Up to 2 lines allowed - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT("Pričekaj..."); + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" spreman."); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = _UxGT("SD kartica umetnuta"); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = _UxGT("SD kartica uklonjena"); // (MEDIA_TYPE_EN) Removed + LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Endstops + LSTR MSG_MAIN_MENU = _UxGT("Main"); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("Ugasi steppere"); // Disable Steppers + LSTR MSG_AUTO_HOME = _UxGT("Automatski homing"); // Auto Home + LSTR MSG_AUTO_HOME_X = _UxGT("Home-aj X"); // Home X + LSTR MSG_AUTO_HOME_Y = _UxGT("Home-aj Y"); // Home Y + LSTR MSG_AUTO_HOME_Z = _UxGT("Home-aj Z"); // Home Z + LSTR MSG_LEVEL_BED_HOMING = _UxGT("Home-aj XYZ"); // Homing XYZ + LSTR MSG_LEVEL_BED_WAITING = _UxGT("Klikni za početak"); // Click to Begin + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Sljedeća točka"); // Next Point + LSTR MSG_LEVEL_BED_DONE = _UxGT("Niveliranje gotovo!"); // Leveling Done! + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Postavi home offsete"); // Set Home Offsets + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Offsets postavljeni"); // Offsets Applied + LSTR MSG_PREHEAT_1 = _UxGT("Predgrij ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = _UxGT("Predgrij ") PREHEAT_1_LABEL " ~"; // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Dizna"); // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Dizna ~"); // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_1_ALL = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Sve"); // Preheat (PREHEAT_1_LABEL) All + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" Bed"); // Preheat (PREHEAT_1_LABEL) Bed + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Predgrij ") PREHEAT_1_LABEL _UxGT(" conf"); // Preheat (PREHEAT_1_LABEL) Conf + LSTR MSG_PREHEAT_M = _UxGT("Predgrij $"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("Predgrij $ ~"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("Predgrij $ Dizna"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("Predgrij $ Dizna ~"); // Preheat $ End ~ + LSTR MSG_PREHEAT_M_ALL = _UxGT("Predgrij $ Sve"); // Preheat $ All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Predgrij $ Bed"); // Preheat $ Bed + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Predgrij $ conf"); // Preheat $ Conf + LSTR MSG_COOLDOWN = _UxGT("Hlađenje"); // Cooldown + LSTR MSG_SWITCH_PS_ON = _UxGT("Uključi napajanje"); // Switch Power On + LSTR MSG_SWITCH_PS_OFF = _UxGT("Isključi napajanje"); // Switch Power Off + LSTR MSG_MOVE_AXIS = _UxGT("Miči os"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("Probe i Nivelacija"); // Probe and Level + LSTR MSG_BED_LEVELING = _UxGT("Niveliraj bed"); // Bed Leveling + LSTR MSG_LEVEL_BED = _UxGT("Niveliraj bed"); // Level Bed + LSTR MSG_MOVE_X = _UxGT("Miči X"); // Move X + LSTR MSG_MOVE_Y = _UxGT("Miči Y"); // Move Y + LSTR MSG_MOVE_Z = _UxGT("Miči Z"); // Move Z + LSTR MSG_MOVE_N = _UxGT("Miči @"); // Move @ + LSTR MSG_MOVE_E = _UxGT("Miči E"); // Move Extruder + LSTR MSG_MOVE_EN = _UxGT("Miči *"); // Move * + LSTR MSG_MOVE_N_MM = _UxGT("Miči $mm"); // Move $mm + LSTR MSG_MOVE_N_IN = _UxGT("Miči $in"); // Move $in + LSTR MSG_MOVE_N_DEG = _UxGT("Miči $") LCD_STR_DEGREE; // Move $(LCD_STR_DEGREE) + LSTR MSG_SPEED = _UxGT("Brzina"); // Speed + LSTR MSG_MESH_Z_OFFSET = _UxGT("Bed Z"); // Bed Z + LSTR MSG_NOZZLE = _UxGT("Dizna"); // Nozzle + LSTR MSG_NOZZLE_N = _UxGT("Dizna ~"); // Nozzle ~ + LSTR MSG_BED = _UxGT("Bed"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("Brzina ventilatora"); // Fan Speed + LSTR MSG_FAN_SPEED_N = _UxGT("Brzina ventilatora ~"); // Fan Speed ~ + LSTR MSG_SELECT_E = _UxGT("Odaberi *"); // Select * + LSTR MSG_TEMPERATURE = _UxGT("Temperature"); // Temperature + LSTR MSG_MOTION = _UxGT("Gibanje"); // Motion + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm") SUPERSCRIPT_THREE; // E in mm(SUPERSCRIPT_THREE) + LSTR MSG_FILAMENT_DIAM = _UxGT("Fil. Dia."); // Fil. Dia. + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Fil. Dia. *"); // Fil. Dia. * + LSTR MSG_CONTRAST = _UxGT("Kontrast LCD-a"); // LCD Contrast + LSTR MSG_STORE_EEPROM = _UxGT("Pohrani u memoriju"); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("Učitaj memoriju"); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("Učitaj Defaults"); // Restore Defaults + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Osvježi"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT("Info screen"); // Info Screen + LSTR MSG_PREPARE = _UxGT("Pripremi"); // Prepare + LSTR MSG_PAUSE_PRINT = _UxGT("Pauziraj print"); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("Nastavi print"); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("Zaustavi print"); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("Printaj s SD kartice"); // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = _UxGT("Nema SD kartice"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_USERWAIT = _UxGT("Čekaj korisnika..."); // Click to Resume... + LSTR MSG_PRINT_ABORTED = _UxGT("Print otkazan"); // Print Aborted + LSTR MSG_STOPPED = _UxGT("ZAUSTAVLJEN. "); // STOPPED. + LSTR MSG_FILAMENTCHANGE = _UxGT("Promijeni filament"); // Change Filament + LSTR MSG_FILAMENTCHANGE_E = _UxGT("Promijeni filament *"); // Change * Filament + LSTR MSG_ATTACH_MEDIA = _UxGT("Init. SD karticu"); // Attach (MEDIA_TYPE_EN) + LSTR MSG_ATTACH_SD = _UxGT("Init. SD karticu"); // Attach SD Card + LSTR MSG_ATTACH_USB = _UxGT("Init. USB pogon"); // Attach USB Drive + LSTR MSG_CHANGE_MEDIA = _UxGT("Promijeni SD karticu"); // Refresh (MEDIA_TYPE_EN) + LSTR MSG_RUN_AUTOFILES = _UxGT("Auto pokretanje"); // Run Autofiles + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Korak Z offset"); // Babystep Probe Z + LSTR MSG_ERR_HEATING_FAILED = _UxGT("Grijanje neuspješno"); // Heating Failed + LSTR MSG_HEATING = _UxGT("Grijanje..."); // Heating... + LSTR MSG_BED_HEATING = _UxGT("Grijanje Bed-a..."); // Bed Heating... + LSTR MSG_DELTA_CALIBRATE = _UxGT("Delta Kalibracija"); // Delta Calibration + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Kalibriraj X"); // Calibrate X + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Kalibriraj Y"); // Calibrate Y + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Kalibriraj Z"); // Calibrate Z + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Kalibriraj Središte"); // Calibrate Center + LSTR MSG_INFO_MENU = _UxGT("O printeru"); // About Printer + LSTR MSG_INFO_PRINTER_MENU = _UxGT("Podaci o printeru"); // Printer Info + LSTR MSG_INFO_STATS_MENU = _UxGT("Statistika printera"); // Stats + LSTR MSG_INFO_BOARD_MENU = _UxGT("Podaci o elektronici"); // Board Info + LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Termistori"); // Thermistors + LSTR MSG_INFO_EXTRUDERS = _UxGT("Extruderi"); // Extruders + LSTR MSG_INFO_BAUDRATE = _UxGT("Baud"); // Baud + LSTR MSG_INFO_PROTOCOL = _UxGT("Protokol"); // Protocol + LSTR MSG_CASE_LIGHT = _UxGT("Osvjetljenje"); // Case Light + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Printovi"); // Prints + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Završeni"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Ukupno"); // Total + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Najduži"); // Longest + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extrudirano"); // Extruded + LSTR MSG_INFO_PSU = _UxGT("Napajanje"); // PSU + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Nastavi print"); // Continue + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT("Pričekaj..."); // |Please wait... + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Čekaj", "filament unload")); // |Ejecting... + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Pričekaj", "filament load")); // |Loading... + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Nastavljam...")); // |Resuming... + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Neispravan pisač"); // INCORRECT PRINTER } namespace LanguageWide_hr { using namespace LanguageNarrow_hr; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Broj printova"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Završeni"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Ukupno printanja"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Najduži print"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extrudirano ukupno"); + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Broj printova"); // Print Count + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Završeni"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Ukupno printanja"); // Print Time + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Najduži print"); // Longest Job Time + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extrudirano ukupno"); // Extruded Total #endif } @@ -184,8 +172,8 @@ namespace LanguageTall_hr { using namespace LanguageWide_hr; #if LCD_HEIGHT >= 4 // Filament Change screens show up to 3 lines on a 4-line display - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Čekaj početak", "filamenta", "promijeni")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Umetni filament", "i pritisni tipku", "za nastavak...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Čekaj početak", "filamenta", "promijeni")); // |Wait for|filament change|to start + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Umetni filament", "i pritisni tipku", "za nastavak...")); // |Insert filament|and press button|to continue #endif } diff --git a/Marlin/src/lcd/language/language_hu.h b/Marlin/src/lcd/language/language_hu.h index 121605ea1a..70d54d95f6 100644 --- a/Marlin/src/lcd/language/language_hu.h +++ b/Marlin/src/lcd/language/language_hu.h @@ -47,643 +47,612 @@ namespace LanguageNarrow_hu { constexpr uint8_t CHARSIZE = 2; LSTR LANGUAGE = _UxGT("Magyar"); - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" Kész."); - LSTR MSG_YES = _UxGT("IGEN"); - LSTR MSG_NO = _UxGT("NEM"); - LSTR MSG_BACK = _UxGT("Vissza"); - - LSTR MSG_MEDIA_ABORTING = _UxGT("Megszakítás..."); - LSTR MSG_MEDIA_INSERTED = _UxGT("Tároló behelyezve"); - LSTR MSG_MEDIA_REMOVED = _UxGT("Tároló eltávolítva"); - LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Tároló-kártya hiba"); - LSTR MSG_MEDIA_READ_ERROR = _UxGT("Tároló olvasási hiba"); - LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB eltávolítva"); - LSTR MSG_USB_FD_USB_FAILED = _UxGT("USB eszköz hiba"); - LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Túlfolyás"); - - LSTR MSG_LCD_ENDSTOPS = _UxGT("Végállás"); // Maximum 8 karakter - LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Szoft. végállás"); - LSTR MSG_MAIN_MENU = _UxGT(""); - LSTR MSG_ADVANCED_SETTINGS = _UxGT("További beállítások"); - LSTR MSG_CONFIGURATION = _UxGT("Konfiguráció"); - LSTR MSG_DISABLE_STEPPERS = _UxGT("Motorok kikapcsolása"); - LSTR MSG_DEBUG_MENU = _UxGT("Hiba Menü"); - LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Haladás sáv teszt"); - LSTR MSG_AUTO_HOME = _UxGT("X-Y-Z auto kezdöpont"); - LSTR MSG_AUTO_HOME_N = _UxGT("Kezdö @"); - LSTR MSG_AUTO_HOME_X = _UxGT("X kezdöpont"); - LSTR MSG_AUTO_HOME_Y = _UxGT("Y kezdöpont"); - LSTR MSG_AUTO_HOME_Z = _UxGT("Z kezdöpont"); - LSTR MSG_AUTO_Z_ALIGN = _UxGT("Auto Z-igazítás"); - LSTR MSG_ITERATION = _UxGT("G34 Ismétlés: %i"); - LSTR MSG_DECREASING_ACCURACY = _UxGT("Pontosság csökken!"); - LSTR MSG_ACCURACY_ACHIEVED = _UxGT("Pontosság elérve"); - LSTR MSG_LEVEL_BED_HOMING = _UxGT("X-Y-Z kezdöpont"); - LSTR MSG_LEVEL_BED_WAITING = _UxGT("Kattints a kezdéshez."); - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Következö pont"); - LSTR MSG_LEVEL_BED_DONE = _UxGT("Szintezés kész!"); - LSTR MSG_Z_FADE_HEIGHT = _UxGT("Szint csökkentés"); - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Kezdöpont eltolás"); - LSTR MSG_HOME_OFFSET_X = _UxGT("X Kezdö eltol."); // DWIN - LSTR MSG_HOME_OFFSET_Y = _UxGT("Y Kezdö eltol."); // DWIN - LSTR MSG_HOME_OFFSET_Z = _UxGT("Z Kezdö eltol."); // DWIN - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Eltolás beállítva."); - LSTR MSG_TRAMMING_WIZARD = _UxGT("Elektromos varázsló"); - LSTR MSG_SELECT_ORIGIN = _UxGT("Eredeti választása"); - LSTR MSG_LAST_VALUE_SP = _UxGT("Utolsó érték "); - - LSTR MSG_PREHEAT_1 = _UxGT("Fütés ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Fütés ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Fej"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Fej ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Mind"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Ágy"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Beáll"); - - LSTR MSG_PREHEAT_M = _UxGT("Fütés $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Fütés $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Fütés $ Fej"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Fütés $ Fej ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Fütés $ Mind"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Fütés $ Ágy"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Fütés $ Beáll"); - - LSTR MSG_PREHEAT_CUSTOM = _UxGT("Egyedi elömelegítés"); - LSTR MSG_COOLDOWN = _UxGT("Visszahütés"); - - LSTR MSG_CUTTER_FREQUENCY = _UxGT("Frekvencia"); - LSTR MSG_LASER_MENU = _UxGT("Lézer vezérlés"); - LSTR MSG_SPINDLE_MENU = _UxGT("Orsó vezérlés"); - LSTR MSG_LASER_POWER = _UxGT("Lézer telj."); - LSTR MSG_SPINDLE_POWER = _UxGT("Orsó telj."); - LSTR MSG_LASER_TOGGLE = _UxGT("Lézer váltás"); - LSTR MSG_LASER_EVAC_TOGGLE = _UxGT("Hütés váltás"); - LSTR MSG_LASER_ASSIST_TOGGLE = _UxGT("Levegö segéd"); - LSTR MSG_LASER_PULSE_MS = _UxGT("Impulzus teszt ms"); - LSTR MSG_LASER_FIRE_PULSE = _UxGT("Tüz impulzus"); - LSTR MSG_FLOWMETER_FAULT = _UxGT("Áramlási hiba"); - LSTR MSG_SPINDLE_TOGGLE = _UxGT("Orsóváltás"); - LSTR MSG_SPINDLE_EVAC_TOGGLE = _UxGT("Vákuum váltás"); - LSTR MSG_SPINDLE_FORWARD = _UxGT("Orsó elöre"); - LSTR MSG_SPINDLE_REVERSE = _UxGT("Orsó hátra"); - LSTR MSG_SWITCH_PS_ON = _UxGT("Bekapcsolás"); - LSTR MSG_SWITCH_PS_OFF = _UxGT("Kikapcsolás"); - LSTR MSG_EXTRUDE = _UxGT("Adagol"); - LSTR MSG_RETRACT = _UxGT("Visszahúz"); - LSTR MSG_MOVE_AXIS = _UxGT("Tengelyek mozgatása"); - LSTR MSG_PROBE_AND_LEVEL = _UxGT("Érintés/szintezés"); - LSTR MSG_BED_LEVELING = _UxGT("Ágy szintezés"); - LSTR MSG_LEVEL_BED = _UxGT("Ágy szintezése"); - LSTR MSG_BED_TRAMMING = _UxGT("Sarok szint"); - LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Ágy emelése a szonda váltásig"); - LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Minden sarok tolerancián belül. Szint jó."); - LSTR MSG_BED_TRAMMING_GOOD_POINTS = _UxGT("Jó pontok: "); - LSTR MSG_BED_TRAMMING_LAST_Z = _UxGT("Utolsó Z: "); - LSTR MSG_NEXT_CORNER = _UxGT("Következö sarok"); - LSTR MSG_MESH_EDITOR = _UxGT("Háló szerkesztö"); - LSTR MSG_EDIT_MESH = _UxGT("Háló szerkesztése"); - LSTR MSG_EDITING_STOPPED = _UxGT("Háló szerk. állj"); - LSTR MSG_PROBING_POINT = _UxGT("Próbapont"); - LSTR MSG_MESH_X = _UxGT("Index X"); - LSTR MSG_MESH_Y = _UxGT("Index Y"); - LSTR MSG_MESH_EDIT_Z = _UxGT("Z érték"); - LSTR MSG_CUSTOM_COMMANDS = _UxGT("Egyéni parancs"); - LSTR MSG_M48_TEST = _UxGT("M48 Szonda teszt"); - LSTR MSG_M48_POINT = _UxGT("M48 Pont"); - LSTR MSG_M48_OUT_OF_BOUNDS = _UxGT("Szonda határon kívül"); - LSTR MSG_M48_DEVIATION = _UxGT("Eltérés"); - LSTR MSG_IDEX_MENU = _UxGT("IDEX mód"); - LSTR MSG_OFFSETS_MENU = _UxGT("Eszköz eltolás"); - LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Automata parkolás"); - LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplikálás"); - LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Tükrözött másolás"); - LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Teljes felügyelet"); - LSTR MSG_IDEX_DUPE_GAP = _UxGT("X-hézag másolása"); - LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2. fej Z"); - LSTR MSG_HOTEND_OFFSET_N = _UxGT("2. fej @"); - LSTR MSG_UBL_DOING_G29 = _UxGT("Szintezz! G29"); - LSTR MSG_UBL_TOOLS = _UxGT("UBL eszköz"); - LSTR MSG_LCD_TILTING_MESH = _UxGT("Döntési pont"); - LSTR MSG_UBL_MANUAL_MESH = _UxGT("Kézi háló építés"); - LSTR MSG_UBL_MESH_WIZARD = _UxGT("UBL Háló varázsló"); - LSTR MSG_UBL_BC_INSERT = _UxGT("Tégy alátétet és mérj"); - LSTR MSG_UBL_BC_INSERT2 = _UxGT("Mérés"); - LSTR MSG_UBL_BC_REMOVE = _UxGT("Üres ágyat mérj"); - LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Továbblépés"); - LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Ágy höfok"); - LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Egyéni ágy höfok"); - LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Fejhöfok"); - LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Egyéni fejhöfok"); - LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Egyéni háló szerkesztés"); - LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Finomított háló"); - LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Háló kész"); - LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Egyéni háló építés"); - LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Háló építés"); - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Háló építés ($)"); - LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Hideg háló építés"); - LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Háló magasság állítás"); - LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Magasság összege"); - LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Háló elfogadás"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Háló elfogadás ($)"); - LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Valódi háló elfogadása"); - LSTR MSG_G26_HEATING_BED = _UxGT("G26 Ágy fütés"); - LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 Fej fütés"); - LSTR MSG_G26_MANUAL_PRIME = _UxGT("Kézi alapozás..."); - LSTR MSG_G26_FIXED_LENGTH = _UxGT("Fix hosszúságú alap"); - LSTR MSG_G26_PRIME_DONE = _UxGT("Alapozás kész"); - LSTR MSG_G26_CANCELED = _UxGT("G26 Törölve"); - LSTR MSG_G26_LEAVING = _UxGT("Kilépö G26"); - LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Ágy háló folyt."); - LSTR MSG_UBL_MESH_LEVELING = _UxGT("Háló szintezés"); - LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-Pontos szintezés"); - LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Rács szintezés"); - LSTR MSG_UBL_MESH_LEVEL = _UxGT("Háló szint"); - LSTR MSG_UBL_SIDE_POINTS = _UxGT("Oldal pontok"); - LSTR MSG_UBL_MAP_TYPE = _UxGT("Térkép típus"); - LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Háló térkép kimenet"); - LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Host kimenet"); - LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("CSV kimenet"); - LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Nyomtató bizt.mentés"); - LSTR MSG_UBL_INFO_UBL = _UxGT("UBL infó kimenet"); - LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Kitöltési költség"); - LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Kézi kitöltés"); - LSTR MSG_UBL_SMART_FILLIN = _UxGT("Okos kitöltés"); - LSTR MSG_UBL_FILLIN_MESH = _UxGT("Háló kitöltés"); - LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Minden érvénytelen"); - LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Közelebbi érvénytelen"); - LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Mindet finomhangolja"); - LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Közelebbi finomhangolása"); - LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Háló tárolás"); - LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Memória foglalat"); - LSTR MSG_UBL_LOAD_MESH = _UxGT("Ágy háló betöltés"); - LSTR MSG_UBL_SAVE_MESH = _UxGT("Ágy háló mentés"); - LSTR MSG_MESH_LOADED = _UxGT("M117 Háló %i betöltve"); - LSTR MSG_MESH_SAVED = _UxGT("M117 Háló %i mentve"); - LSTR MSG_UBL_NO_STORAGE = _UxGT("Nincs tároló"); - LSTR MSG_UBL_SAVE_ERROR = _UxGT("Hiba: UBL mentés"); - LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Hiba: UBL visszaáll."); - LSTR MSG_UBL_Z_OFFSET = _UxGT("Z-eltolás: "); - LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Z-eltolás leállítva"); - LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("Lépésröl lépésre UBL"); - LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1. Hideg háló készítés"); - LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2. Inteligens kitöltés"); - LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3. Háló érvényesítés"); - LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4. Minden finomítása"); - LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5. Háló érvényesítés"); - LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6. Minden finomítása"); - LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7. Ágy háló mentése"); - - LSTR MSG_LED_CONTROL = _UxGT("LED vezérlés"); - LSTR MSG_LIGHTS = _UxGT("Világítás"); - LSTR MSG_LIGHT_N = _UxGT("Világítás #{"); - LSTR MSG_LED_PRESETS = _UxGT("Beállított színek"); - LSTR MSG_SET_LEDS_RED = _UxGT("Piros"); - LSTR MSG_SET_LEDS_ORANGE = _UxGT("Narancs"); - LSTR MSG_SET_LEDS_YELLOW = _UxGT("Sárga"); - LSTR MSG_SET_LEDS_GREEN = _UxGT("Zöld"); - LSTR MSG_SET_LEDS_BLUE = _UxGT("Kék"); - LSTR MSG_SET_LEDS_INDIGO = _UxGT("Indigó"); - LSTR MSG_SET_LEDS_VIOLET = _UxGT("Viola"); - LSTR MSG_SET_LEDS_WHITE = _UxGT("Fehér"); - LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Alapérték"); - LSTR MSG_LED_CHANNEL_N = _UxGT("Csatorna {"); - LSTR MSG_NEO2_PRESETS = _UxGT("Fény #2 megadott"); - LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Fényerö"); - LSTR MSG_CUSTOM_LEDS = _UxGT("Egyéni szín"); - LSTR MSG_INTENSITY_R = _UxGT("Piros intenzitás"); - LSTR MSG_INTENSITY_G = _UxGT("Zöld intenzitás"); - LSTR MSG_INTENSITY_B = _UxGT("Kék intenzitás"); - LSTR MSG_INTENSITY_W = _UxGT("Fehér intenzitás"); - LSTR MSG_LED_BRIGHTNESS = _UxGT("Fényerö"); - - LSTR MSG_MOVING = _UxGT("Mozgás..."); - LSTR MSG_FREE_XY = _UxGT("XY szabad"); - LSTR MSG_MOVE_X = _UxGT("X mozgás"); - LSTR MSG_MOVE_Y = _UxGT("Y mozgás"); - LSTR MSG_MOVE_Z = _UxGT("Z mozgás"); - LSTR MSG_MOVE_N = _UxGT("@ mozgás"); - LSTR MSG_MOVE_E = _UxGT("Adagoló"); - LSTR MSG_MOVE_EN = _UxGT("Adagoló *"); - LSTR MSG_HOTEND_TOO_COLD = _UxGT("A fej túl hideg"); - LSTR MSG_MOVE_N_MM = _UxGT("Mozgás $mm"); - LSTR MSG_MOVE_N_IN = _UxGT("Mozgás $in"); - LSTR MSG_MOVE_N_DEG = _UxGT("Mozgás $") LCD_STR_DEGREE; - LSTR MSG_SPEED = _UxGT("Sebesség"); - LSTR MSG_MESH_Z_OFFSET = _UxGT("Z ágy"); - LSTR MSG_NOZZLE = _UxGT("Fej"); - LSTR MSG_NOZZLE_N = _UxGT("Fej ~"); - LSTR MSG_NOZZLE_PARKED = _UxGT("Fej parkolva"); - LSTR MSG_NOZZLE_STANDBY = _UxGT("Fej készenlétbe"); - LSTR MSG_BED = _UxGT("Ágy"); - LSTR MSG_CHAMBER = _UxGT("Burkolat"); - LSTR MSG_COOLER = _UxGT("Lézer hütövíz"); - LSTR MSG_COOLER_TOGGLE = _UxGT("Hütö kapcsoló"); - LSTR MSG_FLOWMETER_SAFETY = _UxGT("Áramlásbiztonság"); - LSTR MSG_LASER = _UxGT("Lézer"); - LSTR MSG_FAN_SPEED = _UxGT("Hütés sebesség"); - LSTR MSG_FAN_SPEED_N = _UxGT("Hütés sebesség {"); - LSTR MSG_STORED_FAN_N = _UxGT("Tárolt hütés {"); - LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Extra hütés sebesség"); - LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Extra hütés sebesség {"); - LSTR MSG_CONTROLLER_FAN = _UxGT("Hütésvezérlés"); - LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("Alapjárat"); - LSTR MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("Automatikus mód"); - LSTR MSG_CONTROLLER_FAN_SPEED = _UxGT("Aktív sebesség"); - LSTR MSG_CONTROLLER_FAN_DURATION = _UxGT("Készenlét"); - LSTR MSG_FLOW = _UxGT("Folyás"); - LSTR MSG_FLOW_N = _UxGT("Folyás ~"); - LSTR MSG_CONTROL = _UxGT("Konfiguráció"); - LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Minimum"); - LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Maximum"); - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Tényezö"); - LSTR MSG_AUTOTEMP = _UxGT("Automata höfok"); - LSTR MSG_LCD_ON = _UxGT("Be"); - LSTR MSG_LCD_OFF = _UxGT("Ki"); - LSTR MSG_PID_AUTOTUNE = _UxGT("PID hangolás"); - LSTR MSG_PID_AUTOTUNE_E = _UxGT("PID hangolás *"); - LSTR MSG_PID_CYCLE = _UxGT("PID ciklus"); - LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("PID hangolás kész"); - LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Hangolási hiba! Rossz adagoló."); - LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Hangolási hiba! Magas hömérséklet."); - LSTR MSG_PID_TIMEOUT = _UxGT("Hangolási hiba! Idötúllépés."); - LSTR MSG_SELECT_E = _UxGT("Kiválaszt *"); - LSTR MSG_ACC = _UxGT("Gyorsítás"); - LSTR MSG_JERK = _UxGT("Rántás"); - LSTR MSG_VA_JERK = _UxGT("Seb.") STR_A _UxGT("-Rántás"); - LSTR MSG_VB_JERK = _UxGT("Seb.") STR_B _UxGT("-Rántás"); - LSTR MSG_VC_JERK = _UxGT("Seb.") STR_C _UxGT("-Rántás"); - LSTR MSG_VN_JERK = _UxGT("Seb.@-Rántás"); - LSTR MSG_VE_JERK = _UxGT("E ránt. seb."); - LSTR MSG_JUNCTION_DEVIATION = _UxGT("Csomopont eltérés"); - LSTR MSG_MAX_SPEED = _UxGT("Max Sebesség (mm/s)"); - LSTR MSG_VMAX_A = _UxGT("Max Seb. ") STR_A; - LSTR MSG_VMAX_B = _UxGT("Max Seb. ") STR_B; - LSTR MSG_VMAX_C = _UxGT("Max Seb. ") STR_C; - LSTR MSG_VMAX_N = _UxGT("Max Seb. @"); - LSTR MSG_VMAX_E = _UxGT("Max Seb. E"); - LSTR MSG_VMAX_EN = _UxGT("Max sebesség *"); - LSTR MSG_VMIN = _UxGT("Min sebesség"); - LSTR MSG_VTRAV_MIN = _UxGT("Min utazó.seb."); - LSTR MSG_ACCELERATION = _UxGT("Gyorsulás"); - LSTR MSG_AMAX_A = _UxGT("Max gyors. ") STR_A; - LSTR MSG_AMAX_B = _UxGT("Max gyors. ") STR_B; - LSTR MSG_AMAX_C = _UxGT("Max gyors. ") STR_C; - LSTR MSG_AMAX_N = _UxGT("Max gyors. @"); - LSTR MSG_AMAX_E = _UxGT("Max gyors. E"); - LSTR MSG_AMAX_EN = _UxGT("Max gyorsulás *"); - LSTR MSG_A_RETRACT = _UxGT("Visszahúzás"); - LSTR MSG_A_TRAVEL = _UxGT("Utazás"); - LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("Max frekvencia"); - LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("Min elötolás"); - LSTR MSG_STEPS_PER_MM = _UxGT("Lépés/mm"); - LSTR MSG_A_STEPS = STR_A _UxGT(" Lépés/mm"); - LSTR MSG_B_STEPS = STR_B _UxGT(" Lépés/mm"); - LSTR MSG_C_STEPS = STR_C _UxGT(" Lépés/mm"); - LSTR MSG_N_STEPS = _UxGT("@ lépés/mm"); - LSTR MSG_E_STEPS = _UxGT("E lépés/mm"); - LSTR MSG_EN_STEPS = _UxGT("*Lépés/mm"); - LSTR MSG_TEMPERATURE = _UxGT("Höfok"); - LSTR MSG_MOTION = _UxGT("Mozgatások"); - LSTR MSG_FILAMENT = _UxGT("Nyomtatószál"); - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E mm³-ben"); - LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("E Limit mm³-ben"); - LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("E Limit *"); - LSTR MSG_FILAMENT_DIAM = _UxGT("Szál. átm."); - LSTR MSG_FILAMENT_DIAM_E = _UxGT("Szál. átm. *"); - LSTR MSG_FILAMENT_UNLOAD = _UxGT("Kiadás mm"); - LSTR MSG_FILAMENT_LOAD = _UxGT("Betöltés mm"); - LSTR MSG_ADVANCE_K = _UxGT("Haladó K"); - LSTR MSG_ADVANCE_K_E = _UxGT("Haladó K *"); - LSTR MSG_CONTRAST = _UxGT("LCD kontraszt"); - LSTR MSG_STORE_EEPROM = _UxGT("Mentés EEPROM"); - LSTR MSG_LOAD_EEPROM = _UxGT("Betöltés EEPROM"); - LSTR MSG_RESTORE_DEFAULTS = _UxGT("Alapértelmezett"); - LSTR MSG_INIT_EEPROM = _UxGT("EEPROM inicializálás"); - LSTR MSG_ERR_EEPROM_CRC = _UxGT("Hiba: EEPROM CRC"); - LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Hiba: EEPROM mérete"); - LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Hiba: EEPROM verzió"); - LSTR MSG_SETTINGS_STORED = _UxGT("Beállítások mentve"); - LSTR MSG_MEDIA_UPDATE = _UxGT("Tároló frissítés"); - LSTR MSG_RESET_PRINTER = _UxGT("Nyomtató újraindítása"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Frissítés"); - LSTR MSG_INFO_SCREEN = _UxGT(""); - LSTR MSG_PREPARE = _UxGT("Vezérlés"); - LSTR MSG_TUNE = _UxGT("Hangolás"); - LSTR MSG_POWER_MONITOR = _UxGT("Teljesítménymonitor"); - LSTR MSG_CURRENT = _UxGT("Jelenlegi"); - LSTR MSG_VOLTAGE = _UxGT("Feszültség"); - LSTR MSG_POWER = _UxGT("Energia"); - LSTR MSG_START_PRINT = _UxGT("Nyomtatás indítása"); - LSTR MSG_BUTTON_NEXT = _UxGT("Tovább"); - LSTR MSG_BUTTON_INIT = _UxGT("Kezdet"); - LSTR MSG_BUTTON_STOP = _UxGT("Állj"); - LSTR MSG_BUTTON_PRINT = _UxGT("Nyomtatás"); - LSTR MSG_BUTTON_RESET = _UxGT("Újraindítás"); - LSTR MSG_BUTTON_IGNORE = _UxGT("Mellöz"); - LSTR MSG_BUTTON_CANCEL = _UxGT("Mégse"); - LSTR MSG_BUTTON_DONE = _UxGT("Kész"); - LSTR MSG_BUTTON_BACK = _UxGT("Vissza"); - LSTR MSG_BUTTON_PROCEED = _UxGT("Folytatás"); - LSTR MSG_BUTTON_SKIP = _UxGT("Kihagy"); - LSTR MSG_PAUSING = _UxGT("Szüneteltetve..."); - LSTR MSG_PAUSE_PRINT = _UxGT("Nyomtatás szünetelés"); - LSTR MSG_RESUME_PRINT = _UxGT("Nyomtatás folytatása"); - LSTR MSG_HOST_START_PRINT = _UxGT("Hoszt indítás"); - LSTR MSG_STOP_PRINT = _UxGT("Nyomtatás leállítása"); - LSTR MSG_END_LOOPS = _UxGT("Hurok ismétlés vége"); - LSTR MSG_PRINTING_OBJECT = _UxGT("Objektum nyomtatása"); - LSTR MSG_CANCEL_OBJECT = _UxGT("Objektum törlése"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Objektum törlése {"); - LSTR MSG_OUTAGE_RECOVERY = _UxGT("Kiesés helyreáll."); - LSTR MSG_MEDIA_MENU = _UxGT("Nyomtatás tárolóról"); - LSTR MSG_NO_MEDIA = _UxGT("Nincs tároló"); - LSTR MSG_DWELL = _UxGT("Alvás..."); - LSTR MSG_USERWAIT = _UxGT("Katt a folytatáshoz..."); - LSTR MSG_PRINT_PAUSED = _UxGT("Nyomtatás szünetelve"); - LSTR MSG_PRINTING = _UxGT("Nyomtatás..."); - LSTR MSG_PRINT_ABORTED = _UxGT("Nyomtatás leállítva"); - LSTR MSG_PRINT_DONE = _UxGT("Nyomtatás kész"); - LSTR MSG_NO_MOVE = _UxGT("Nincs mozgás."); - LSTR MSG_KILLED = _UxGT("HALOTT! "); - LSTR MSG_STOPPED = _UxGT("MEGÁLLT! "); - LSTR MSG_CONTROL_RETRACT = _UxGT("Visszahúzás mm"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Visszahúzás cs. mm"); - LSTR MSG_CONTROL_RETRACTF = _UxGT("Viszahúzás"); - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Ugrás mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Visszah.helyre mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Csere.visszah.helyre mm"); - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Visszahúzás V"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S Vissza.h V"); - LSTR MSG_AUTORETRACT = _UxGT("Auto visszah."); - LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Visszahúzás távolság"); - LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Extra csere"); - LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Tisztítási távolság"); - LSTR MSG_TOOL_CHANGE = _UxGT("Szerszámcsere"); - LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Z emelés"); - LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Fösebesség"); - LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Visszah. sebesség"); - LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Fej parkolás"); - LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Visszav.visszah. sebesség"); - LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("FAN sebesség"); - LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("FAN idö"); - LSTR MSG_TOOL_MIGRATION_ON = _UxGT("Auto BE"); - LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("Auto KI"); - LSTR MSG_TOOL_MIGRATION = _UxGT("Szerszámcsere"); - LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("Automata csere"); - LSTR MSG_TOOL_MIGRATION_END = _UxGT("Utolsó adagoló"); - LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("Csere *"); - LSTR MSG_FILAMENTCHANGE = _UxGT("Szálcsere"); - LSTR MSG_FILAMENTCHANGE_E = _UxGT("Szálcsere *"); - LSTR MSG_FILAMENTLOAD = _UxGT("Szál betöltés"); - LSTR MSG_FILAMENTLOAD_E = _UxGT("Szál betöltés *"); - LSTR MSG_FILAMENTUNLOAD = _UxGT("Szál eltávolítás"); - LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Szál eltávolítás *"); - LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Mindet eltávolít"); - - LSTR MSG_ATTACH_MEDIA = _UxGT("Tároló SD"); - LSTR MSG_ATTACH_SD = _UxGT("Tároló SD"); - LSTR MSG_ATTACH_USB = _UxGT("Tároló USB"); - LSTR MSG_CHANGE_MEDIA = _UxGT("Tároló csere"); - LSTR MSG_RELEASE_MEDIA = _UxGT("Tároló Kiadása"); - LSTR MSG_RUN_AUTOFILES = _UxGT("Fájl auto. futtatás"); - - LSTR MSG_ZPROBE_OUT = _UxGT("Z szonda tálcán kivül"); - LSTR MSG_SKEW_FACTOR = _UxGT("Ferdeség faktor"); - LSTR MSG_BLTOUCH = _UxGT("BLTouch"); - LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Önteszt"); - LSTR MSG_BLTOUCH_RESET = _UxGT("Visszaállítás"); - LSTR MSG_BLTOUCH_STOW = _UxGT("Elhelyez"); - LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Telepít"); - LSTR MSG_BLTOUCH_SW_MODE = _UxGT("SW-Mód"); - LSTR MSG_BLTOUCH_5V_MODE = _UxGT("5V-Mód"); - LSTR MSG_BLTOUCH_OD_MODE = _UxGT("OD-Mód"); - LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("Módok"); - LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("BLTouch 5V mód"); - LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("BLTouch OD mód"); - LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Jelentés"); - LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("VESZÉLY: A rossz beállítások kárt okozhatnak! Biztos továbblép?"); - LSTR MSG_TOUCHMI_PROBE = _UxGT("TouchMI"); - LSTR MSG_TOUCHMI_INIT = _UxGT("Kezd TouchMI"); - LSTR MSG_TOUCHMI_ZTEST = _UxGT("Z eltolás teszt"); - LSTR MSG_TOUCHMI_SAVE = _UxGT("Mentés"); - LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("TouchMI használ"); - LSTR MSG_MANUAL_DEPLOY = _UxGT("Z-Szonda telepítés"); - LSTR MSG_MANUAL_STOW = _UxGT("Z-Szonda elhelyezés"); - LSTR MSG_HOME_FIRST = _UxGT("Elöször %s kell"); - LSTR MSG_ZPROBE_OFFSETS = _UxGT("Szonda eltolások"); - LSTR MSG_ZPROBE_XOFFSET = _UxGT("X szonda eltolás"); - LSTR MSG_ZPROBE_YOFFSET = _UxGT("Y szonda eltolás"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Z szonda eltolás"); - LSTR MSG_ZPROBE_OFFSET_N = _UxGT("@ szonda eltolás"); - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Z lépés állítás"); - LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Fej az ágyhoz"); - LSTR MSG_BABYSTEP_X = _UxGT("Mikrolépés X"); - LSTR MSG_BABYSTEP_Y = _UxGT("Mikrolépés Y"); - LSTR MSG_BABYSTEP_Z = _UxGT("Mikrolépés Z"); - LSTR MSG_BABYSTEP_N = _UxGT("Mikrolépés @"); - LSTR MSG_BABYSTEP_TOTAL = _UxGT("Teljes"); - LSTR MSG_ENDSTOP_ABORT = _UxGT("Végállás megszakítva!"); - LSTR MSG_ERR_HEATING_FAILED = _UxGT("Fütés hiba!"); - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Hiba: SZÜKSÉGTELEN HÖFOK"); - LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("FÜTÉS KIMARADÁS"); - LSTR MSG_ERR_COOLING_FAILED = _UxGT("Hütés sikertelen"); - LSTR MSG_ERR_MAXTEMP = _UxGT("Hiba: MAX höfok"); - LSTR MSG_ERR_MINTEMP = _UxGT("Hiba: MIN höfok"); - LSTR MSG_HALTED = _UxGT("A NYOMTATÓ LEÁLLT"); - LSTR MSG_PLEASE_RESET = _UxGT("Indítsd újra!"); - LSTR MSG_HEATING = _UxGT("Fütés..."); - LSTR MSG_COOLING = _UxGT("Hütés..."); - LSTR MSG_BED_HEATING = _UxGT("Ágy fütés..."); - LSTR MSG_BED_COOLING = _UxGT("Ágy hütés..."); - LSTR MSG_PROBE_HEATING = _UxGT("Szonda fütése..."); - LSTR MSG_PROBE_COOLING = _UxGT("Szonda hütése..."); - LSTR MSG_CHAMBER_HEATING = _UxGT("Kamra fütés..."); - LSTR MSG_CHAMBER_COOLING = _UxGT("Kamra hütés..."); - LSTR MSG_LASER_COOLING = _UxGT("Lézer hütés..."); - LSTR MSG_DELTA_CALIBRATE = _UxGT("Delta kalibráció"); - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("X kalibrálás"); - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Y kalibrálás"); - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Z kalibrálás"); - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Központ kalibrálás"); - LSTR MSG_DELTA_SETTINGS = _UxGT("Delta beállítások"); - LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Auto kalibráció"); - LSTR MSG_DELTA_DIAG_ROD = _UxGT("Diag rúd"); - LSTR MSG_DELTA_HEIGHT = _UxGT("Magasság"); - LSTR MSG_DELTA_RADIUS = _UxGT("Sugár"); - LSTR MSG_INFO_MENU = _UxGT("A Nyomtatóról"); - LSTR MSG_INFO_PRINTER_MENU = _UxGT("Nyomtató infó"); - LSTR MSG_3POINT_LEVELING = _UxGT("3-Pontos szintezés"); - LSTR MSG_LINEAR_LEVELING = _UxGT("Lineáris szintezés"); - LSTR MSG_BILINEAR_LEVELING = _UxGT("Bilineáris szintezés"); - LSTR MSG_UBL_LEVELING = _UxGT("Egységes ágy szintezés"); - LSTR MSG_MESH_LEVELING = _UxGT("Háló szintezés"); - LSTR MSG_MESH_DONE = _UxGT("Háló szintezés kész"); - LSTR MSG_INFO_STATS_MENU = _UxGT("Statisztikák"); - LSTR MSG_INFO_BOARD_MENU = _UxGT("Alaplap infó"); - LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Termisztorok"); - LSTR MSG_INFO_EXTRUDERS = _UxGT("Adagolók"); - LSTR MSG_INFO_BAUDRATE = _UxGT("Átviteli sebesség"); - LSTR MSG_INFO_PROTOCOL = _UxGT("Protokol"); - LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Futáselemzés: KI"); - LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Futáselemzés: BE"); - LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Fej üresjárati idök."); - - LSTR MSG_CASE_LIGHT = _UxGT("Munkalámpa"); - LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Fényerösség"); - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("HELYTELEN NYOMTATÓ"); - - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Nyomtatások"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Befejezett"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Összes"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Leghosszabb"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Kiadott"); - - LSTR MSG_INFO_MIN_TEMP = _UxGT("Min höfok"); - LSTR MSG_INFO_MAX_TEMP = _UxGT("Max höfok"); - LSTR MSG_INFO_PSU = _UxGT("PSU"); - LSTR MSG_DRIVE_STRENGTH = _UxGT("Meghajtási erö"); - LSTR MSG_DAC_PERCENT_N = _UxGT("@ meghajtó %"); - LSTR MSG_ERROR_TMC = _UxGT("TMC CSATLAKOZÁSI HIBA"); - LSTR MSG_DAC_EEPROM_WRITE = _UxGT("DAC EEPROM írása"); - LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("NYOMTATÓSZÁL CSERE"); - LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("NYOMTATÁS SZÜNETEL"); - LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("SZÁL BETÖLTÉS"); - LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("SZÁL ELTÁVOLÍTÁS"); - LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("FOLYTATÁSI OPCIÓ:"); - LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Tisztítsd meg"); - LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Folytatás"); - LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Fej: "); - LSTR MSG_RUNOUT_SENSOR = _UxGT("Túlfutás szenzor"); - LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("Túlfutás táv. mm"); - LSTR MSG_KILL_HOMING_FAILED = _UxGT("Tájolási hiba"); - LSTR MSG_LCD_PROBING_FAILED = _UxGT("Szondázás hiba"); - - LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("SZÁLVÁLASZTÁS"); - LSTR MSG_MMU2_MENU = _UxGT("MMU"); - LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("MMU szoftver feltöltése!"); - LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU figyelmeztetés."); - LSTR MSG_MMU2_RESUME = _UxGT("Nyomtatás folytatása"); - LSTR MSG_MMU2_RESUMING = _UxGT("Folytatás..."); - LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("Szál betöltése"); - LSTR MSG_MMU2_LOAD_ALL = _UxGT("Összes betöltése"); - LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Fej betöltése"); - LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("Szál kidobás"); - LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("Szál kidobás ~"); - LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Kiadja a szálat"); - LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Szál betölt. %i..."); - LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Szál kidobás. ..."); - LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Szál kiadása...."); - LSTR MSG_MMU2_ALL = _UxGT("Mind"); - LSTR MSG_MMU2_FILAMENT_N = _UxGT("Nyomtatószál ~"); - LSTR MSG_MMU2_RESET = _UxGT("MMU újraindítás"); - LSTR MSG_MMU2_RESETTING = _UxGT("MMU újraindul..."); - LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Kidob, kattint"); - - LSTR MSG_MIX = _UxGT("Kever"); - LSTR MSG_MIX_COMPONENT_N = _UxGT("Összetevö {"); - LSTR MSG_MIXER = _UxGT("Keverö"); - LSTR MSG_GRADIENT = _UxGT("Színátm."); - LSTR MSG_FULL_GRADIENT = _UxGT("Teljes színátm."); - LSTR MSG_TOGGLE_MIX = _UxGT("Váltás keverésre"); - LSTR MSG_CYCLE_MIX = _UxGT("Ciklikus keverés"); - LSTR MSG_GRADIENT_MIX = _UxGT("Színátm. keverés"); - LSTR MSG_REVERSE_GRADIENT = _UxGT("Fordított színátm."); - LSTR MSG_ACTIVE_VTOOL = _UxGT("Aktív V-szerszám"); - LSTR MSG_START_VTOOL = _UxGT("Kezdés V-szerszám"); - LSTR MSG_END_VTOOL = _UxGT(" Vége V-szerszám"); - LSTR MSG_GRADIENT_ALIAS = _UxGT("Ál V-szerszám"); - LSTR MSG_RESET_VTOOLS = _UxGT("Újra V-szerszám"); - LSTR MSG_COMMIT_VTOOL = _UxGT("Gyors V-szerszám Kev."); - LSTR MSG_VTOOLS_RESET = _UxGT("V-szersz. visszaáll."); - LSTR MSG_START_Z = _UxGT("Kezdés Z:"); - LSTR MSG_END_Z = _UxGT(" Vége Z:"); - - LSTR MSG_GAMES = _UxGT("Játékok"); - LSTR MSG_BRICKOUT = _UxGT("Brickout"); - LSTR MSG_INVADERS = _UxGT("Invaders"); - LSTR MSG_SNAKE = _UxGT("Sn4k3"); - LSTR MSG_MAZE = _UxGT("Maze"); - - LSTR MSG_BAD_PAGE = _UxGT("Rossz oldalindex"); - LSTR MSG_BAD_PAGE_SPEED = _UxGT("Rossz oldalsebesség"); - - LSTR MSG_EDIT_PASSWORD = _UxGT("Jelszó szerkesztése"); - LSTR MSG_LOGIN_REQUIRED = _UxGT("Belépés szükséges"); - LSTR MSG_PASSWORD_SETTINGS = _UxGT("Jelszóbeállítások"); - LSTR MSG_ENTER_DIGIT = _UxGT("Írja be a számokat"); - LSTR MSG_CHANGE_PASSWORD = _UxGT("Jelszó Beáll/Szerk"); - LSTR MSG_REMOVE_PASSWORD = _UxGT("Jelszó törlése"); - LSTR MSG_PASSWORD_SET = _UxGT("A jelszó "); - LSTR MSG_START_OVER = _UxGT("Újrakezdés"); - LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Mentsd el!"); - LSTR MSG_PASSWORD_REMOVED = _UxGT("Jelszó törölve"); - - // - // Filament Change screens show up to 2 lines on a 3-line display - // - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Katt a folytatáshoz")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parkolás...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Kérlek várj...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Behelyez majd katt")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Katt a fütéshez")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Fütés...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Kiadás...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Betöltés...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Tisztítás...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Katt ha kész")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Folytatás...")); - - LSTR MSG_TMC_DRIVERS = _UxGT("TMC meghajtók"); - LSTR MSG_TMC_CURRENT = _UxGT("Meghajtó áram"); - LSTR MSG_TMC_HYBRID_THRS = _UxGT("Hibrid küszöbérték"); - LSTR MSG_TMC_HOMING_THRS = _UxGT("Motoros kezdöpont"); - LSTR MSG_TMC_STEPPING_MODE = _UxGT("Léptetö mód"); - LSTR MSG_TMC_STEALTHCHOP = _UxGT("StealthChop"); - - LSTR MSG_SERVICE_RESET = _UxGT("Újraindítás"); - LSTR MSG_SERVICE_IN = _UxGT(" be:"); - LSTR MSG_BACKLASH = _UxGT("Holtjáték"); - LSTR MSG_BACKLASH_CORRECTION = _UxGT("Korrekció"); - LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Simítás"); - - LSTR MSG_LEVEL_X_AXIS = _UxGT("X tengely szint"); - LSTR MSG_AUTO_CALIBRATE = _UxGT("Önkalibrálás"); - LSTR MSG_FTDI_HEATER_TIMEOUT = _UxGT("Tétlenségi idökorlát, a hömérséklet csökkent. Nyomd meg az OK gombot az ismételt felfütéshez, és újra a folytatáshoz."); - LSTR MSG_HEATER_TIMEOUT = _UxGT("Fütés idökorlátja"); - LSTR MSG_REHEAT = _UxGT("Újrafüt"); - LSTR MSG_REHEATING = _UxGT("Újrafütés..."); - - LSTR MSG_PROBE_WIZARD = _UxGT("Z szonda varázsló"); - LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Z referencia mérés"); - LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Menj a próba pontra"); - - LSTR MSG_SOUND = _UxGT("Hang"); - - LSTR MSG_TOP_LEFT = _UxGT("Bal felsö"); - LSTR MSG_BOTTOM_LEFT = _UxGT("Bal alsó"); - LSTR MSG_TOP_RIGHT = _UxGT("Jobb felsö"); - LSTR MSG_BOTTOM_RIGHT = _UxGT("Jobb alsó"); - LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Kalibrálás befejezve"); - LSTR MSG_CALIBRATION_FAILED = _UxGT("Kalibrálási hiba"); - - LSTR MSG_DRIVER_BACKWARD = _UxGT(" meghajtók hátra"); - - LSTR MSG_SD_CARD = _UxGT("SD Kártya"); - LSTR MSG_USB_DISK = _UxGT("USB Lemez"); - - LSTR MSG_SHORT_DAY = _UxGT("n"); // Csak egy karakter - LSTR MSG_SHORT_HOUR = _UxGT("ó"); // Csak egy karakter - LSTR MSG_SHORT_MINUTE = _UxGT("p"); // Csak egy karakter + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" Kész."); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = _UxGT("Tároló behelyezve"); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = _UxGT("Tároló eltávolítva"); // (MEDIA_TYPE_EN) Removed + LSTR MSG_LCD_ENDSTOPS = _UxGT("Végállás"); // Endstops + LSTR MSG_MAIN_MENU = _UxGT(""); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("Motorok kikapcsolása"); // Disable Steppers + LSTR MSG_AUTO_HOME = _UxGT("X-Y-Z auto kezdöpont"); // Auto Home + LSTR MSG_AUTO_HOME_X = _UxGT("X kezdöpont"); // Home X + LSTR MSG_AUTO_HOME_Y = _UxGT("Y kezdöpont"); // Home Y + LSTR MSG_AUTO_HOME_Z = _UxGT("Z kezdöpont"); // Home Z + LSTR MSG_LEVEL_BED_HOMING = _UxGT("X-Y-Z kezdöpont"); // Homing XYZ + LSTR MSG_LEVEL_BED_WAITING = _UxGT("Kattints a kezdéshez."); // Click to Begin + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Következö pont"); // Next Point + LSTR MSG_LEVEL_BED_DONE = _UxGT("Szintezés kész!"); // Leveling Done! + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Kezdöpont eltolás"); // Set Home Offsets + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Eltolás beállítva."); // Offsets Applied + LSTR MSG_PREHEAT_1 = _UxGT("Fütés ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = _UxGT("Fütés ") PREHEAT_1_LABEL " ~"; // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Fej"); // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Fej ~"); // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_1_ALL = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Mind"); // Preheat (PREHEAT_1_LABEL) All + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Ágy"); // Preheat (PREHEAT_1_LABEL) Bed + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Fütés ") PREHEAT_1_LABEL _UxGT(" Beáll"); // Preheat (PREHEAT_1_LABEL) Conf + LSTR MSG_PREHEAT_M = _UxGT("Fütés $"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("Fütés $ ~"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("Fütés $ Fej"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("Fütés $ Fej ~"); // Preheat $ End ~ + LSTR MSG_PREHEAT_M_ALL = _UxGT("Fütés $ Mind"); // Preheat $ All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Fütés $ Ágy"); // Preheat $ Bed + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Fütés $ Beáll"); // Preheat $ Conf + LSTR MSG_COOLDOWN = _UxGT("Visszahütés"); // Cooldown + LSTR MSG_SWITCH_PS_ON = _UxGT("Bekapcsolás"); // Switch Power On + LSTR MSG_SWITCH_PS_OFF = _UxGT("Kikapcsolás"); // Switch Power Off + LSTR MSG_EXTRUDE = _UxGT("Adagol"); // Extrude + LSTR MSG_RETRACT = _UxGT("Visszahúz"); // Retract + LSTR MSG_MOVE_AXIS = _UxGT("Tengelyek mozgatása"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("Érintés/szintezés"); // Probe and Level + LSTR MSG_BED_LEVELING = _UxGT("Ágy szintezés"); // Bed Leveling + LSTR MSG_LEVEL_BED = _UxGT("Ágy szintezése"); // Level Bed + LSTR MSG_MOVE_X = _UxGT("X mozgás"); // Move X + LSTR MSG_MOVE_Y = _UxGT("Y mozgás"); // Move Y + LSTR MSG_MOVE_Z = _UxGT("Z mozgás"); // Move Z + LSTR MSG_MOVE_N = _UxGT("@ mozgás"); // Move @ + LSTR MSG_MOVE_E = _UxGT("Adagoló"); // Move Extruder + LSTR MSG_MOVE_EN = _UxGT("Adagoló *"); // Move * + LSTR MSG_MOVE_N_MM = _UxGT("Mozgás $mm"); // Move $mm + LSTR MSG_MOVE_N_IN = _UxGT("Mozgás $in"); // Move $in + LSTR MSG_MOVE_N_DEG = _UxGT("Mozgás $") LCD_STR_DEGREE; // Move $(LCD_STR_DEGREE) + LSTR MSG_SPEED = _UxGT("Sebesség"); // Speed + LSTR MSG_MESH_Z_OFFSET = _UxGT("Z ágy"); // Bed Z + LSTR MSG_NOZZLE = _UxGT("Fej"); // Nozzle + LSTR MSG_NOZZLE_N = _UxGT("Fej ~"); // Nozzle ~ + LSTR MSG_BED = _UxGT("Ágy"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("Hütés sebesség"); // Fan Speed + LSTR MSG_FAN_SPEED_N = _UxGT("Hütés sebesség {"); // Fan Speed ~ + LSTR MSG_FLOW = _UxGT("Folyás"); // Flow + LSTR MSG_FLOW_N = _UxGT("Folyás ~"); // Flow ~ + LSTR MSG_CONTROL = _UxGT("Konfiguráció"); // Control + LSTR MSG_AUTOTEMP = _UxGT("Automata höfok"); // Autotemp + LSTR MSG_SELECT_E = _UxGT("Kiválaszt *"); // Select * + LSTR MSG_ACC = _UxGT("Gyorsítás"); // Accel + LSTR MSG_VTRAV_MIN = _UxGT("Min utazó.seb."); // Min Travel Speed + LSTR MSG_ACCELERATION = _UxGT("Gyorsulás"); // Acceleration + LSTR MSG_AMAX_A = _UxGT("Max gyors. ") STR_A; // Max (STR_A) Accel + LSTR MSG_AMAX_B = _UxGT("Max gyors. ") STR_B; // Max (STR_B) Accel + LSTR MSG_AMAX_C = _UxGT("Max gyors. ") STR_C; // Max (STR_C) Accel + LSTR MSG_AMAX_N = _UxGT("Max gyors. @"); // Max @ Accel + LSTR MSG_AMAX_E = _UxGT("Max gyors. E"); // Max E Accel + LSTR MSG_AMAX_EN = _UxGT("Max gyorsulás *"); // Max * Accel + LSTR MSG_A_RETRACT = _UxGT("Visszahúzás"); // Retract Accel + LSTR MSG_A_TRAVEL = _UxGT("Utazás"); // Travel Accel + LSTR MSG_STEPS_PER_MM = _UxGT("Lépés/mm"); // Steps/mm + LSTR MSG_A_STEPS = STR_A _UxGT(" Lépés/mm"); // (STR_A) Steps/mm + LSTR MSG_B_STEPS = STR_B _UxGT(" Lépés/mm"); // (STR_B) Steps/mm + LSTR MSG_C_STEPS = STR_C _UxGT(" Lépés/mm"); // (STR_C) Steps/mm + LSTR MSG_N_STEPS = _UxGT("@ lépés/mm"); // @ steps/mm + LSTR MSG_E_STEPS = _UxGT("E lépés/mm"); // E steps/mm + LSTR MSG_EN_STEPS = _UxGT("*Lépés/mm"); // * Steps/mm + LSTR MSG_TEMPERATURE = _UxGT("Höfok"); // Temperature + LSTR MSG_MOTION = _UxGT("Mozgatások"); // Motion + LSTR MSG_FILAMENT = _UxGT("Nyomtatószál"); // Filament + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E mm³-ben"); // E in mm(SUPERSCRIPT_THREE) + LSTR MSG_FILAMENT_DIAM = _UxGT("Szál. átm."); // Fil. Dia. + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Szál. átm. *"); // Fil. Dia. * + LSTR MSG_CONTRAST = _UxGT("LCD kontraszt"); // LCD Contrast + LSTR MSG_STORE_EEPROM = _UxGT("Mentés EEPROM"); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("Betöltés EEPROM"); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("Alapértelmezett"); // Restore Defaults + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Frissítés"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT(""); // Info Screen + LSTR MSG_PREPARE = _UxGT("Vezérlés"); // Prepare + LSTR MSG_TUNE = _UxGT("Hangolás"); // Tune + LSTR MSG_PAUSE_PRINT = _UxGT("Nyomtatás szünetelés"); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("Nyomtatás folytatása"); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("Nyomtatás leállítása"); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("Nyomtatás tárolóról"); // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = _UxGT("Nincs tároló"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_DWELL = _UxGT("Alvás..."); // Sleep... + LSTR MSG_USERWAIT = _UxGT("Katt a folytatáshoz..."); // Click to Resume... + LSTR MSG_PRINT_ABORTED = _UxGT("Nyomtatás leállítva"); // Print Aborted + LSTR MSG_NO_MOVE = _UxGT("Nincs mozgás."); // No Move. + LSTR MSG_KILLED = _UxGT("HALOTT! "); // KILLED. + LSTR MSG_STOPPED = _UxGT("MEGÁLLT! "); // STOPPED. + LSTR MSG_CONTROL_RETRACT = _UxGT("Visszahúzás mm"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Visszahúzás cs. mm"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACTF = _UxGT("Viszahúzás"); // Retract V + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Ugrás mm"); // Hop mm + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Visszah.helyre mm"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Csere.visszah.helyre mm"); // S Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Visszahúzás V"); // Unretract V + LSTR MSG_AUTORETRACT = _UxGT("Auto visszah."); // Auto-Retract + LSTR MSG_FILAMENTCHANGE = _UxGT("Szálcsere"); // Change Filament + LSTR MSG_FILAMENTCHANGE_E = _UxGT("Szálcsere *"); // Change * Filament + LSTR MSG_ATTACH_MEDIA = _UxGT("Tároló SD"); // Attach (MEDIA_TYPE_EN) + LSTR MSG_ATTACH_SD = _UxGT("Tároló SD"); // Attach SD Card + LSTR MSG_ATTACH_USB = _UxGT("Tároló USB"); // Attach USB Drive + LSTR MSG_CHANGE_MEDIA = _UxGT("Tároló csere"); // Refresh (MEDIA_TYPE_EN) + LSTR MSG_RUN_AUTOFILES = _UxGT("Fájl auto. futtatás"); // Run Autofiles + LSTR MSG_ZPROBE_OUT = _UxGT("Z szonda tálcán kivül"); // Z Probe Past Bed + LSTR MSG_BLTOUCH_RESET = _UxGT("Visszaállítás"); // Reset + LSTR MSG_ZPROBE_XOFFSET = _UxGT("X szonda eltolás"); // Probe X Offset + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Y szonda eltolás"); // Probe Y Offset + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Z szonda eltolás"); // Probe Z Offset + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("@ szonda eltolás"); // Probe @ Offset + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Z lépés állítás"); // Babystep Probe Z + LSTR MSG_BABYSTEP_X = _UxGT("Mikrolépés X"); // Babystep X + LSTR MSG_BABYSTEP_Y = _UxGT("Mikrolépés Y"); // Babystep Y + LSTR MSG_BABYSTEP_Z = _UxGT("Mikrolépés Z"); // Babystep Z + LSTR MSG_BABYSTEP_N = _UxGT("Mikrolépés @"); // Babystep @ + LSTR MSG_ENDSTOP_ABORT = _UxGT("Végállás megszakítva!"); // Endstop Abort + LSTR MSG_ERR_HEATING_FAILED = _UxGT("Fütés hiba!"); // Heating Failed + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Hiba: SZÜKSÉGTELEN HÖFOK"); // Err: REDUNDANT TEMP + LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("FÜTÉS KIMARADÁS"); // THERMAL RUNAWAY + LSTR MSG_ERR_MAXTEMP = _UxGT("Hiba: MAX höfok"); // Err: MAXTEMP + LSTR MSG_ERR_MINTEMP = _UxGT("Hiba: MIN höfok"); // Err: MINTEMP + LSTR MSG_HALTED = _UxGT("A NYOMTATÓ LEÁLLT"); // PRINTER HALTED + LSTR MSG_PLEASE_RESET = _UxGT("Indítsd újra!"); // Please Reset + LSTR MSG_HEATING = _UxGT("Fütés..."); // Heating... + LSTR MSG_BED_HEATING = _UxGT("Ágy fütés..."); // Bed Heating... + LSTR MSG_DELTA_CALIBRATE = _UxGT("Delta kalibráció"); // Delta Calibration + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("X kalibrálás"); // Calibrate X + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Y kalibrálás"); // Calibrate Y + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Z kalibrálás"); // Calibrate Z + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Központ kalibrálás"); // Calibrate Center + LSTR MSG_INFO_MENU = _UxGT("A Nyomtatóról"); // About Printer + LSTR MSG_INFO_PRINTER_MENU = _UxGT("Nyomtató infó"); // Printer Info + LSTR MSG_INFO_STATS_MENU = _UxGT("Statisztikák"); // Stats + LSTR MSG_INFO_BOARD_MENU = _UxGT("Alaplap infó"); // Board Info + LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Termisztorok"); // Thermistors + LSTR MSG_INFO_EXTRUDERS = _UxGT("Adagolók"); // Extruders + LSTR MSG_INFO_BAUDRATE = _UxGT("Átviteli sebesség"); // Baud + LSTR MSG_INFO_PROTOCOL = _UxGT("Protokol"); // Protocol + LSTR MSG_CASE_LIGHT = _UxGT("Munkalámpa"); // Case Light + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Nyomtatások"); // Prints + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Befejezett"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Összes"); // Total + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Leghosszabb"); // Longest + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Kiadott"); // Extruded + LSTR MSG_INFO_MIN_TEMP = _UxGT("Min höfok"); // Min Temp + LSTR MSG_INFO_MAX_TEMP = _UxGT("Max höfok"); // Max Temp + LSTR MSG_INFO_PSU = _UxGT("PSU"); // PSU + LSTR MSG_DRIVE_STRENGTH = _UxGT("Meghajtási erö"); // Drive Strength + LSTR MSG_DAC_EEPROM_WRITE = _UxGT("DAC EEPROM írása"); // DAC EEPROM Write + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Folytatás"); // Continue + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Kérlek várj...")); // |Please wait... + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Behelyez majd katt")); // |Insert and Click + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Kiadás...")); // |Ejecting... + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Betöltés...")); // |Loading... + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Folytatás...")); // |Resuming... + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Minimum"); // (LCD_STR_THERMOMETER) Min + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Maximum"); // (LCD_STR_THERMOMETER) Max + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Tényezö"); // (LCD_STR_THERMOMETER) Fact + LSTR MSG_LCD_ON = _UxGT("Be"); // On + LSTR MSG_LCD_OFF = _UxGT("Ki"); // Off + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("HELYTELEN NYOMTATÓ"); // INCORRECT PRINTER + LSTR MSG_DEBUG_MENU = _UxGT("Hiba Menü"); // Debug Menu + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Haladás sáv teszt"); // Progress Bar Test + LSTR MSG_MOVING = _UxGT("Mozgás..."); // Moving... + LSTR MSG_FREE_XY = _UxGT("XY szabad"); // Free XY + LSTR MSG_HOME_FIRST = _UxGT("Elöször %s kell"); // Home %s First + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Fütés...")); // |Heating... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Katt a fütéshez")); // |Click to heat + LSTR MSG_YES = _UxGT("IGEN"); // YES + LSTR MSG_NO = _UxGT("NEM"); // NO + LSTR MSG_BACK = _UxGT("Vissza"); // Back + LSTR MSG_MEDIA_ABORTING = _UxGT("Megszakítás..."); // Aborting... + LSTR MSG_MEDIA_READ_ERROR = _UxGT("Tároló olvasási hiba"); // (MEDIA_TYPE_EN) read error + LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB eltávolítva"); // USB device removed + LSTR MSG_USB_FD_USB_FAILED = _UxGT("USB eszköz hiba"); // USB start failed + LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Szoft. végállás"); // Soft Endstops + LSTR MSG_ADVANCED_SETTINGS = _UxGT("További beállítások"); // Advanced Settings + LSTR MSG_CONFIGURATION = _UxGT("Konfiguráció"); // Configuration + LSTR MSG_AUTO_Z_ALIGN = _UxGT("Auto Z-igazítás"); // Auto Z-Align + LSTR MSG_Z_FADE_HEIGHT = _UxGT("Szint csökkentés"); // Fade Height + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Egyedi elömelegítés"); // Preheat Custom + LSTR MSG_LASER_MENU = _UxGT("Lézer vezérlés"); // Laser Control + LSTR MSG_LASER_POWER = _UxGT("Lézer telj."); // Laser Power + LSTR MSG_SPINDLE_MENU = _UxGT("Orsó vezérlés"); // Spindle Control + LSTR MSG_SPINDLE_POWER = _UxGT("Orsó telj."); // Spindle Pwr + LSTR MSG_SPINDLE_REVERSE = _UxGT("Orsó hátra"); // Spindle Reverse + LSTR MSG_BED_TRAMMING = _UxGT("Sarok szint"); // Bed Tramming + LSTR MSG_NEXT_CORNER = _UxGT("Következö sarok"); // Next Corner + LSTR MSG_MESH_EDITOR = _UxGT("Háló szerkesztö"); // Mesh Editor + LSTR MSG_EDIT_MESH = _UxGT("Háló szerkesztése"); // Edit Mesh + LSTR MSG_EDITING_STOPPED = _UxGT("Háló szerk. állj"); // Mesh Editing Stopped + LSTR MSG_PROBING_POINT = _UxGT("Próbapont"); // Probing Point + LSTR MSG_MESH_X = _UxGT("Index X"); // Index X + LSTR MSG_MESH_Y = _UxGT("Index Y"); // Index Y + LSTR MSG_MESH_EDIT_Z = _UxGT("Z érték"); // Z Value + LSTR MSG_CUSTOM_COMMANDS = _UxGT("Egyéni parancs"); // Custom Commands + LSTR MSG_M48_TEST = _UxGT("M48 Szonda teszt"); // M48 Probe Test + LSTR MSG_M48_POINT = _UxGT("M48 Pont"); // M48 Point + LSTR MSG_M48_DEVIATION = _UxGT("Eltérés"); // Deviation + LSTR MSG_IDEX_MENU = _UxGT("IDEX mód"); // IDEX Mode + LSTR MSG_OFFSETS_MENU = _UxGT("Eszköz eltolás"); // Tool Offsets + LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Automata parkolás"); // Auto-Park + LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplikálás"); // Duplication + LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Tükrözött másolás"); // Mirrored Copy + LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Teljes felügyelet"); // Full Control + LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2. fej Z"); // 2nd Nozzle Z + LSTR MSG_HOTEND_OFFSET_N = _UxGT("2. fej @"); // 2nd Nozzle @ + LSTR MSG_UBL_DOING_G29 = _UxGT("Szintezz! G29"); // Doing G29 + LSTR MSG_UBL_TOOLS = _UxGT("UBL eszköz"); // UBL Tools + LSTR MSG_LCD_TILTING_MESH = _UxGT("Döntési pont"); // Tilting Point + LSTR MSG_UBL_MANUAL_MESH = _UxGT("Kézi háló építés"); // Manually Build Mesh + LSTR MSG_UBL_BC_INSERT = _UxGT("Tégy alátétet és mérj"); // Place Shim & Measure + LSTR MSG_UBL_BC_INSERT2 = _UxGT("Mérés"); // Measure + LSTR MSG_UBL_BC_REMOVE = _UxGT("Üres ágyat mérj"); // Remove & Measure Bed + LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Továbblépés"); // Moving to next + LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Ágy höfok"); // Bed Temp + LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Egyéni ágy höfok"); // Bed Temp + LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Fejhöfok"); // Hotend Temp + LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Egyéni fejhöfok"); // Hotend Temp + LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Egyéni háló szerkesztés"); // Edit Custom Mesh + LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Finomított háló"); // Fine Tuning Mesh + LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Háló kész"); // Done Editing Mesh + LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Egyéni háló építés"); // Build Custom Mesh + LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Háló építés"); // Build Mesh + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Háló építés ($)"); // Build Mesh ($) + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Háló elfogadás ($)"); // Validate Mesh ($) + LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Hideg háló építés"); // Build Cold Mesh + LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Háló magasság állítás"); // Adjust Mesh Height + LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Magasság összege"); // Height Amount + LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Háló elfogadás"); // Validate Mesh + LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Valódi háló elfogadása"); // Validate Custom Mesh + LSTR MSG_G26_HEATING_BED = _UxGT("G26 Ágy fütés"); // G26 Heating Bed + LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 Fej fütés"); // G26 Heating Nozzle + LSTR MSG_G26_MANUAL_PRIME = _UxGT("Kézi alapozás..."); // Manual priming... + LSTR MSG_G26_FIXED_LENGTH = _UxGT("Fix hosszúságú alap"); // Fixed Length Prime + LSTR MSG_G26_PRIME_DONE = _UxGT("Alapozás kész"); // Done Priming + LSTR MSG_G26_CANCELED = _UxGT("G26 Törölve"); // G26 Canceled + LSTR MSG_G26_LEAVING = _UxGT("Kilépö G26"); // Leaving G26 + LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Ágy háló folyt."); // Continue Bed Mesh + LSTR MSG_UBL_MESH_LEVELING = _UxGT("Háló szintezés"); // Mesh Leveling + LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-Pontos szintezés"); // 3-Point Leveling + LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Rács szintezés"); // Grid Mesh Leveling + LSTR MSG_UBL_MESH_LEVEL = _UxGT("Háló szint"); // Level Mesh + LSTR MSG_UBL_SIDE_POINTS = _UxGT("Oldal pontok"); // Side Points + LSTR MSG_UBL_MAP_TYPE = _UxGT("Térkép típus"); // Map Type + LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Háló térkép kimenet"); // Output Mesh Map + LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Host kimenet"); // Output for Host + LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("CSV kimenet"); // Output for CSV + LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Nyomtató bizt.mentés"); // Off Printer Backup + LSTR MSG_UBL_INFO_UBL = _UxGT("UBL infó kimenet"); // Output UBL Info + LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Kitöltési költség"); // Fill-in Amount + LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Kézi kitöltés"); // Manual Fill-in + LSTR MSG_UBL_SMART_FILLIN = _UxGT("Okos kitöltés"); // Smart Fill-in + LSTR MSG_UBL_FILLIN_MESH = _UxGT("Háló kitöltés"); // Fill-in Mesh + LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Minden érvénytelen"); // Invalidate All + LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Közelebbi érvénytelen"); // Invalidate Closest + LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Mindet finomhangolja"); // Fine Tune All + LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Közelebbi finomhangolása"); // Fine Tune Closest + LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Háló tárolás"); // Mesh Storage + LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Memória foglalat"); // Memory Slot + LSTR MSG_UBL_LOAD_MESH = _UxGT("Ágy háló betöltés"); // Load Bed Mesh + LSTR MSG_UBL_SAVE_MESH = _UxGT("Ágy háló mentés"); // Save Bed Mesh + LSTR MSG_MESH_LOADED = _UxGT("M117 Háló %i betöltve"); // Mesh %i Loaded + LSTR MSG_MESH_SAVED = _UxGT("M117 Háló %i mentve"); // Mesh %i Saved + LSTR MSG_UBL_NO_STORAGE = _UxGT("Nincs tároló"); // No Storage + LSTR MSG_UBL_SAVE_ERROR = _UxGT("Hiba: UBL mentés"); // UBL Save Error + LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Hiba: UBL visszaáll."); // UBL Restore Error + LSTR MSG_UBL_Z_OFFSET = _UxGT("Z-eltolás: "); // Z-Offset: + LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Z-eltolás leállítva"); // Z-Offset Stopped + LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("Lépésröl lépésre UBL"); // Step-By-Step UBL + LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1. Hideg háló készítés"); // 1. Build Cold Mesh + LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2. Inteligens kitöltés"); // 2. Smart Fill-in + LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3. Háló érvényesítés"); // 3. Validate Mesh + LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4. Minden finomítása"); // 4. Fine Tune All + LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5. Háló érvényesítés"); // 5. Validate Mesh + LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6. Minden finomítása"); // 6. Fine Tune All + LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7. Ágy háló mentése"); // 7. Save Bed Mesh + LSTR MSG_LED_CONTROL = _UxGT("LED vezérlés"); // LED Control + LSTR MSG_LIGHTS = _UxGT("Világítás"); // Lights + LSTR MSG_LIGHT_N = _UxGT("Világítás #{"); // Light #{ + LSTR MSG_LED_PRESETS = _UxGT("Beállított színek"); // Light Presets + LSTR MSG_SET_LEDS_RED = _UxGT("Piros"); // Red + LSTR MSG_SET_LEDS_ORANGE = _UxGT("Narancs"); // Orange + LSTR MSG_SET_LEDS_YELLOW = _UxGT("Sárga"); // Yellow + LSTR MSG_SET_LEDS_GREEN = _UxGT("Zöld"); // Green + LSTR MSG_SET_LEDS_BLUE = _UxGT("Kék"); // Blue + LSTR MSG_SET_LEDS_INDIGO = _UxGT("Indigó"); // Indigo + LSTR MSG_SET_LEDS_VIOLET = _UxGT("Viola"); // Violet + LSTR MSG_SET_LEDS_WHITE = _UxGT("Fehér"); // White + LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Alapérték"); // Default + LSTR MSG_CUSTOM_LEDS = _UxGT("Egyéni szín"); // Custom Lights + LSTR MSG_INTENSITY_R = _UxGT("Piros intenzitás"); // Red Intensity + LSTR MSG_INTENSITY_G = _UxGT("Zöld intenzitás"); // Green Intensity + LSTR MSG_INTENSITY_B = _UxGT("Kék intenzitás"); // Blue Intensity + LSTR MSG_INTENSITY_W = _UxGT("Fehér intenzitás"); // White Intensity + LSTR MSG_LED_BRIGHTNESS = _UxGT("Fényerö"); // Brightness + LSTR MSG_HOTEND_TOO_COLD = _UxGT("A fej túl hideg"); // Hotend too cold + LSTR MSG_CHAMBER = _UxGT("Burkolat"); // Enclosure + LSTR MSG_STORED_FAN_N = _UxGT("Tárolt hütés {"); // Stored Fan ~ + LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Extra hütés sebesség"); // Extra Fan Speed + LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Extra hütés sebesség {"); // Extra Fan Speed ~ + LSTR MSG_PID_AUTOTUNE = _UxGT("PID hangolás"); // PID Autotune + LSTR MSG_PID_AUTOTUNE_E = _UxGT("PID hangolás *"); // Autotune * PID + LSTR MSG_JERK = _UxGT("Rántás"); // Jerk + LSTR MSG_VA_JERK = _UxGT("Seb.") STR_A _UxGT("-Rántás"); // Max (STR_A) Jerk + LSTR MSG_VB_JERK = _UxGT("Seb.") STR_B _UxGT("-Rántás"); // Max (STR_B) Jerk + LSTR MSG_VC_JERK = _UxGT("Seb.") STR_C _UxGT("-Rántás"); // Max (STR_C) Jerk + LSTR MSG_VN_JERK = _UxGT("Seb.@-Rántás"); // Max @ Jerk + LSTR MSG_VE_JERK = _UxGT("E ránt. seb."); // Max E Jerk + LSTR MSG_JUNCTION_DEVIATION = _UxGT("Csomopont eltérés"); // Junction Dev + LSTR MSG_MAX_SPEED = _UxGT("Max Sebesség (mm/s)"); // Max Speed (mm/s) + LSTR MSG_VMAX_A = _UxGT("Max Seb. ") STR_A; // Max (STR_A) Speed + LSTR MSG_VMAX_B = _UxGT("Max Seb. ") STR_B; // Max (STR_B) Speed + LSTR MSG_VMAX_C = _UxGT("Max Seb. ") STR_C; // Max (STR_C) Speed + LSTR MSG_VMAX_N = _UxGT("Max Seb. @"); // Max @ Speed + LSTR MSG_VMAX_E = _UxGT("Max Seb. E"); // Max E Speed + LSTR MSG_VMAX_EN = _UxGT("Max sebesség *"); // Max * Speed + LSTR MSG_VMIN = _UxGT("Min sebesség"); // Min Velocity + LSTR MSG_FILAMENT_UNLOAD = _UxGT("Kiadás mm"); // Unload mm + LSTR MSG_FILAMENT_LOAD = _UxGT("Betöltés mm"); // Load mm + LSTR MSG_ADVANCE_K = _UxGT("Haladó K"); // Advance K + LSTR MSG_ADVANCE_K_E = _UxGT("Haladó K *"); // Advance K * + LSTR MSG_INIT_EEPROM = _UxGT("EEPROM inicializálás"); // Initialize EEPROM + LSTR MSG_MEDIA_UPDATE = _UxGT("Tároló frissítés"); // (MEDIA_TYPE_EN) Update + LSTR MSG_RESET_PRINTER = _UxGT("Nyomtató újraindítása"); // Reset Printer + LSTR MSG_START_PRINT = _UxGT("Nyomtatás indítása"); // Start Print + LSTR MSG_BUTTON_NEXT = _UxGT("Tovább"); // Next + LSTR MSG_BUTTON_INIT = _UxGT("Kezdet"); // Init + LSTR MSG_BUTTON_STOP = _UxGT("Állj"); // Stop + LSTR MSG_BUTTON_PRINT = _UxGT("Nyomtatás"); // Print + LSTR MSG_BUTTON_RESET = _UxGT("Újraindítás"); // Reset + LSTR MSG_BUTTON_CANCEL = _UxGT("Mégse"); // Cancel + LSTR MSG_BUTTON_DONE = _UxGT("Kész"); // Done + LSTR MSG_BUTTON_BACK = _UxGT("Vissza"); // Back + LSTR MSG_BUTTON_PROCEED = _UxGT("Folytatás"); // Proceed + LSTR MSG_PRINTING_OBJECT = _UxGT("Objektum nyomtatása"); // Print Obj + LSTR MSG_CANCEL_OBJECT = _UxGT("Objektum törlése"); // Cancel Obj + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Objektum törlése {"); // Cancel Obj { + LSTR MSG_OUTAGE_RECOVERY = _UxGT("Kiesés helyreáll."); // Power Outage + LSTR MSG_PRINT_PAUSED = _UxGT("Nyomtatás szünetelve"); // Print Paused + LSTR MSG_PRINTING = _UxGT("Nyomtatás..."); // Printing... + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S Vissza.h V"); // S UnRet V + LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Visszahúzás távolság"); // Swap Length + LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Tisztítási távolság"); // Purge Length + LSTR MSG_TOOL_CHANGE = _UxGT("Szerszámcsere"); // Tool Change + LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Z emelés"); // Z Raise + LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Fösebesség"); // Prime Speed + LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Visszah. sebesség"); // Retract Speed + LSTR MSG_NOZZLE_STANDBY = _UxGT("Fej készenlétbe"); // Nozzle Standby + LSTR MSG_FILAMENTLOAD = _UxGT("Szál betöltés"); // Load Filament + LSTR MSG_FILAMENTLOAD_E = _UxGT("Szál betöltés *"); // Load * Filament + LSTR MSG_FILAMENTUNLOAD = _UxGT("Szál eltávolítás"); // Unload Filament + LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Szál eltávolítás *"); // Unload * Filament + LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Mindet eltávolít"); // Unload All + LSTR MSG_RELEASE_MEDIA = _UxGT("Tároló Kiadása"); // Release (MEDIA_TYPE_EN) + LSTR MSG_SKEW_FACTOR = _UxGT("Ferdeség faktor"); // Skew Factor + LSTR MSG_BLTOUCH = _UxGT("BLTouch"); // BLTouch + LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Önteszt"); // Self-Test + LSTR MSG_BLTOUCH_STOW = _UxGT("Elhelyez"); // Stow + LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Telepít"); // Deploy + LSTR MSG_BLTOUCH_SW_MODE = _UxGT("SW-Mód"); // SW-Mode + LSTR MSG_BLTOUCH_5V_MODE = _UxGT("5V-Mód"); // 5V-Mode + LSTR MSG_BLTOUCH_OD_MODE = _UxGT("OD-Mód"); // OD-Mode + LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("Módok"); // Mode-Store + LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("BLTouch 5V mód"); // Set BLTouch to 5V + LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("BLTouch OD mód"); // Set BLTouch to OD + LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Jelentés"); // Report Drain + LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("VESZÉLY: A rossz beállítások kárt okozhatnak! Biztos továbblép?"); // DANGER: Bad settings can cause damage! Proceed anyway? + LSTR MSG_TOUCHMI_PROBE = _UxGT("TouchMI"); // TouchMI + LSTR MSG_TOUCHMI_INIT = _UxGT("Kezd TouchMI"); // Init TouchMI + LSTR MSG_TOUCHMI_ZTEST = _UxGT("Z eltolás teszt"); // Z Offset Test + LSTR MSG_TOUCHMI_SAVE = _UxGT("Mentés"); // Save + LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("TouchMI használ"); // Deploy TouchMI + LSTR MSG_MANUAL_DEPLOY = _UxGT("Z-Szonda telepítés"); // Deploy Z-Probe + LSTR MSG_MANUAL_STOW = _UxGT("Z-Szonda elhelyezés"); // Stow Z-Probe + LSTR MSG_BABYSTEP_TOTAL = _UxGT("Teljes"); // Total + LSTR MSG_COOLING = _UxGT("Hütés..."); // Cooling... + LSTR MSG_BED_COOLING = _UxGT("Ágy hütés..."); // Bed Cooling... + LSTR MSG_CHAMBER_HEATING = _UxGT("Kamra fütés..."); // Chamber Heating... + LSTR MSG_CHAMBER_COOLING = _UxGT("Kamra hütés..."); // Chamber Cooling... + LSTR MSG_DELTA_SETTINGS = _UxGT("Delta beállítások"); // Delta Settings + LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Auto kalibráció"); // Auto Calibration + LSTR MSG_DELTA_DIAG_ROD = _UxGT("Diag rúd"); // Diag Rod + LSTR MSG_DELTA_HEIGHT = _UxGT("Magasság"); // Height + LSTR MSG_DELTA_RADIUS = _UxGT("Sugár"); // Radius + LSTR MSG_3POINT_LEVELING = _UxGT("3-Pontos szintezés"); // 3-Point Leveling + LSTR MSG_LINEAR_LEVELING = _UxGT("Lineáris szintezés"); // Linear Leveling + LSTR MSG_BILINEAR_LEVELING = _UxGT("Bilineáris szintezés"); // Bilinear Leveling + LSTR MSG_UBL_LEVELING = _UxGT("Egységes ágy szintezés"); // Unified Bed Leveling + LSTR MSG_MESH_LEVELING = _UxGT("Háló szintezés"); // Mesh Leveling + LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Futáselemzés: KI"); // Runaway Watch: OFF + LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Futáselemzés: BE"); // Runaway Watch: ON + LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Fényerösség"); // Light Brightness + LSTR MSG_DAC_PERCENT_N = _UxGT("@ meghajtó %"); // @ Driver % + LSTR MSG_ERROR_TMC = _UxGT("TMC CSATLAKOZÁSI HIBA"); // TMC CONNECTION ERROR + LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("NYOMTATÓSZÁL CSERE"); // FILAMENT CHANGE + LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("NYOMTATÁS SZÜNETEL"); // PRINT PAUSED + LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("SZÁL BETÖLTÉS"); // LOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("SZÁL ELTÁVOLÍTÁS"); // UNLOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("FOLYTATÁSI OPCIÓ:"); // RESUME OPTIONS: + LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Tisztítsd meg"); // Purge more + LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Fej: "); // Nozzle: + LSTR MSG_RUNOUT_SENSOR = _UxGT("Túlfutás szenzor"); // Runout Sensor + LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("Túlfutás táv. mm"); // Runout Dist mm + LSTR MSG_KILL_HOMING_FAILED = _UxGT("Tájolási hiba"); // Homing Failed + LSTR MSG_LCD_PROBING_FAILED = _UxGT("Szondázás hiba"); // Probing Failed + LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("SZÁLVÁLASZTÁS"); // CHOOSE FILAMENT + LSTR MSG_MMU2_MENU = _UxGT("MMU"); // MMU + LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("MMU szoftver feltöltése!"); // Update MMU Firmware! + LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU figyelmeztetés."); // MMU Needs Attention. + LSTR MSG_MMU2_RESUME = _UxGT("Nyomtatás folytatása"); // Resume + LSTR MSG_MMU2_RESUMING = _UxGT("Folytatás..."); // MMU Resuming... + LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("Szál betöltése"); // Load + LSTR MSG_MMU2_LOAD_ALL = _UxGT("Összes betöltése"); // Load All + LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Fej betöltése"); // Load to Nozzle + LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("Szál kidobás"); // Eject + LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("Szál kidobás ~"); // Eject ~ + LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Kiadja a szálat"); // Unload + LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Szál betölt. %i..."); // Filament %i Load... + LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Szál kidobás. ..."); // Filament %i Eject... + LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Szál kiadása...."); // Filament %i Unload... + LSTR MSG_MMU2_ALL = _UxGT("Mind"); // All + LSTR MSG_MMU2_FILAMENT_N = _UxGT("Nyomtatószál ~"); // Filament ~ + LSTR MSG_MMU2_RESET = _UxGT("MMU újraindítás"); // Reset MMU + LSTR MSG_MMU2_RESETTING = _UxGT("MMU újraindul..."); // Resetting... + LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Kidob, kattint"); // Eject Recover + LSTR MSG_MIX = _UxGT("Kever"); // Mix + LSTR MSG_MIX_COMPONENT_N = _UxGT("Összetevö {"); // Component { + LSTR MSG_MIXER = _UxGT("Keverö"); // Mixer + LSTR MSG_GRADIENT = _UxGT("Színátm."); // Gradient + LSTR MSG_FULL_GRADIENT = _UxGT("Teljes színátm."); // Full Gradient + LSTR MSG_TOGGLE_MIX = _UxGT("Váltás keverésre"); // Toggle Mix + LSTR MSG_CYCLE_MIX = _UxGT("Ciklikus keverés"); // Cycle Mix + LSTR MSG_GRADIENT_MIX = _UxGT("Színátm. keverés"); // Gradient Mix + LSTR MSG_REVERSE_GRADIENT = _UxGT("Fordított színátm."); // Reverse Gradient + LSTR MSG_ACTIVE_VTOOL = _UxGT("Aktív V-szerszám"); // Active V-tool + LSTR MSG_START_VTOOL = _UxGT("Kezdés V-szerszám"); // Start V-tool + LSTR MSG_END_VTOOL = _UxGT(" Vége V-szerszám"); // End V-tool + LSTR MSG_GRADIENT_ALIAS = _UxGT("Ál V-szerszám"); // Alias V-tool + LSTR MSG_RESET_VTOOLS = _UxGT("Újra V-szerszám"); // Reset V-tools + LSTR MSG_COMMIT_VTOOL = _UxGT("Gyors V-szerszám Kev."); // Commit V-tool Mix + LSTR MSG_VTOOLS_RESET = _UxGT("V-szersz. visszaáll."); // V-tools Were Reset + LSTR MSG_START_Z = _UxGT("Kezdés Z:"); // Start Z: + LSTR MSG_END_Z = _UxGT(" Vége Z:"); // End Z: + LSTR MSG_GAMES = _UxGT("Játékok"); // Games + LSTR MSG_BRICKOUT = _UxGT("Brickout"); // Brickout + LSTR MSG_INVADERS = _UxGT("Invaders"); // Invaders + LSTR MSG_SNAKE = _UxGT("Sn4k3"); // Sn4k3 + LSTR MSG_MAZE = _UxGT("Maze"); // Maze + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Katt a folytatáshoz")); // |Click to continue + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parkolás...")); // |Parking... + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Tisztítás...")); // |Purging... + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Katt ha kész")); // |Click to finish + LSTR MSG_TMC_DRIVERS = _UxGT("TMC meghajtók"); // TMC Drivers + LSTR MSG_TMC_CURRENT = _UxGT("Meghajtó áram"); // Driver Current + LSTR MSG_TMC_HYBRID_THRS = _UxGT("Hibrid küszöbérték"); // Hybrid Threshold + LSTR MSG_TMC_HOMING_THRS = _UxGT("Motoros kezdöpont"); // Sensorless Homing + LSTR MSG_TMC_STEPPING_MODE = _UxGT("Léptetö mód"); // Stepping Mode + LSTR MSG_TMC_STEALTHCHOP = _UxGT("StealthChop"); // StealthChop + LSTR MSG_SERVICE_RESET = _UxGT("Újraindítás"); // Reset + LSTR MSG_SERVICE_IN = _UxGT(" be:"); // in: + LSTR MSG_BACKLASH = _UxGT("Holtjáték"); // Backlash + LSTR MSG_BACKLASH_CORRECTION = _UxGT("Korrekció"); // Correction + LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Simítás"); // Smoothing + LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Tároló-kártya hiba"); // (MEDIA_TYPE_EN) Init Fail + LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Túlfolyás"); // Subcall Overflow + LSTR MSG_AUTO_HOME_N = _UxGT("Kezdö @"); // Home @ + LSTR MSG_ITERATION = _UxGT("G34 Ismétlés: %i"); // G34 Iteration: %i + LSTR MSG_DECREASING_ACCURACY = _UxGT("Pontosság csökken!"); // Accuracy Decreasing! + LSTR MSG_ACCURACY_ACHIEVED = _UxGT("Pontosság elérve"); // Accuracy Achieved + LSTR MSG_HOME_OFFSET_X = _UxGT("X Kezdö eltol."); // Home Offset X + LSTR MSG_HOME_OFFSET_Y = _UxGT("Y Kezdö eltol."); // Home Offset Y + LSTR MSG_HOME_OFFSET_Z = _UxGT("Z Kezdö eltol."); // Home Offset Z + LSTR MSG_TRAMMING_WIZARD = _UxGT("Elektromos varázsló"); // Tramming Wizard + LSTR MSG_SELECT_ORIGIN = _UxGT("Eredeti választása"); // Select Origin + LSTR MSG_LAST_VALUE_SP = _UxGT("Utolsó érték "); // Last value + LSTR MSG_CUTTER_FREQUENCY = _UxGT("Frekvencia"); // Frequency + LSTR MSG_LASER_TOGGLE = _UxGT("Lézer váltás"); // Toggle Laser + LSTR MSG_LASER_EVAC_TOGGLE = _UxGT("Hütés váltás"); // Toggle Blower + LSTR MSG_LASER_ASSIST_TOGGLE = _UxGT("Levegö segéd"); // Air Assist + LSTR MSG_LASER_PULSE_MS = _UxGT("Impulzus teszt ms"); // Test Pulse ms + LSTR MSG_LASER_FIRE_PULSE = _UxGT("Tüz impulzus"); // Fire Pulse + LSTR MSG_FLOWMETER_FAULT = _UxGT("Áramlási hiba"); // Coolant Flow Fault + LSTR MSG_SPINDLE_TOGGLE = _UxGT("Orsóváltás"); // Toggle Spindle + LSTR MSG_SPINDLE_EVAC_TOGGLE = _UxGT("Vákuum váltás"); // Toggle Vacuum + LSTR MSG_SPINDLE_FORWARD = _UxGT("Orsó elöre"); // Spindle Forward + LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Ágy emelése a szonda váltásig"); // Adjust bed until the probe triggers. + LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Minden sarok tolerancián belül. Szint jó."); // Corners within tolerance. Bed trammed. + LSTR MSG_BED_TRAMMING_GOOD_POINTS = _UxGT("Jó pontok: "); // Good Points: + LSTR MSG_BED_TRAMMING_LAST_Z = _UxGT("Utolsó Z: "); // Last Z: + LSTR MSG_M48_OUT_OF_BOUNDS = _UxGT("Szonda határon kívül"); // Probe out of bounds + LSTR MSG_IDEX_DUPE_GAP = _UxGT("X-hézag másolása"); // Duplicate X-Gap + LSTR MSG_UBL_MESH_WIZARD = _UxGT("UBL Háló varázsló"); // UBL Mesh Wizard + LSTR MSG_LED_CHANNEL_N = _UxGT("Csatorna {"); // Channel { + LSTR MSG_NEO2_PRESETS = _UxGT("Fény #2 megadott"); // Light #2 Presets + LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Fényerö"); // Brightness + LSTR MSG_NOZZLE_PARKED = _UxGT("Fej parkolva"); // Nozzle Parked + LSTR MSG_COOLER = _UxGT("Lézer hütövíz"); // Laser Coolant + LSTR MSG_COOLER_TOGGLE = _UxGT("Hütö kapcsoló"); // Toggle Cooler + LSTR MSG_FLOWMETER_SAFETY = _UxGT("Áramlásbiztonság"); // Flow Safety + LSTR MSG_LASER = _UxGT("Lézer"); // Laser + LSTR MSG_CONTROLLER_FAN = _UxGT("Hütésvezérlés"); // Controller Fan + LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("Alapjárat"); // Idle Speed + LSTR MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("Automatikus mód"); // Auto Mode + LSTR MSG_CONTROLLER_FAN_SPEED = _UxGT("Aktív sebesség"); // Active Speed + LSTR MSG_CONTROLLER_FAN_DURATION = _UxGT("Készenlét"); // Idle Period + LSTR MSG_PID_CYCLE = _UxGT("PID ciklus"); // PID Cycles + LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("PID hangolás kész"); // PID tuning done + LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Hangolási hiba! Rossz adagoló."); // Autotune failed! Bad extruder. + LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Hangolási hiba! Magas hömérséklet."); // Autotune failed! Temperature too high. + LSTR MSG_PID_TIMEOUT = _UxGT("Hangolási hiba! Idötúllépés."); // Autotune failed! Timeout. + LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("Max frekvencia"); // XY Freq Limit + LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("Min elötolás"); // Min FR Factor + LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("E Limit mm³-ben"); // E Limit in mm(SUPERSCRIPT_THREE) + LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("E Limit *"); // E Limit * + LSTR MSG_ERR_EEPROM_CRC = _UxGT("Hiba: EEPROM CRC"); // Err: EEPROM CRC + LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Hiba: EEPROM mérete"); // Err: EEPROM Size + LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Hiba: EEPROM verzió"); // Err: EEPROM Version + LSTR MSG_SETTINGS_STORED = _UxGT("Beállítások mentve"); // Settings Stored + LSTR MSG_POWER_MONITOR = _UxGT("Teljesítménymonitor"); // Power monitor + LSTR MSG_CURRENT = _UxGT("Jelenlegi"); // Current + LSTR MSG_VOLTAGE = _UxGT("Feszültség"); // Voltage + LSTR MSG_POWER = _UxGT("Energia"); // Power + LSTR MSG_BUTTON_IGNORE = _UxGT("Mellöz"); // Ignore + LSTR MSG_BUTTON_SKIP = _UxGT("Kihagy"); // Skip + LSTR MSG_PAUSING = _UxGT("Szüneteltetve..."); // Pausing... + LSTR MSG_HOST_START_PRINT = _UxGT("Hoszt indítás"); // Host Start + LSTR MSG_END_LOOPS = _UxGT("Hurok ismétlés vége"); // End Loops + LSTR MSG_PRINT_DONE = _UxGT("Nyomtatás kész"); // Print Done + LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Extra csere"); // Swap Extra + LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Fej parkolás"); // Park Head + LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Visszav.visszah. sebesség"); // Recover Speed + LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("FAN sebesség"); // Fan Speed + LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("FAN idö"); // Fan Time + LSTR MSG_TOOL_MIGRATION_ON = _UxGT("Auto BE"); // Auto ON + LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("Auto KI"); // Auto OFF + LSTR MSG_TOOL_MIGRATION = _UxGT("Szerszámcsere"); // Tool Migration + LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("Automata csere"); // Auto-migration + LSTR MSG_TOOL_MIGRATION_END = _UxGT("Utolsó adagoló"); // Last Extruder + LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("Csere *"); // Migrate to * + LSTR MSG_ZPROBE_OFFSETS = _UxGT("Szonda eltolások"); // Probe Offsets + LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Fej az ágyhoz"); // Move Nozzle to Bed + LSTR MSG_ERR_COOLING_FAILED = _UxGT("Hütés sikertelen"); // Cooling Failed + LSTR MSG_PROBE_HEATING = _UxGT("Szonda fütése..."); // Probe Heating... + LSTR MSG_PROBE_COOLING = _UxGT("Szonda hütése..."); // Probe Cooling... + LSTR MSG_LASER_COOLING = _UxGT("Lézer hütés..."); // Laser Cooling... + LSTR MSG_MESH_DONE = _UxGT("Háló szintezés kész"); // Mesh probing done + LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Fej üresjárati idök."); // Hotend Idle Timeout + LSTR MSG_BAD_PAGE = _UxGT("Rossz oldalindex"); // Bad page index + LSTR MSG_BAD_PAGE_SPEED = _UxGT("Rossz oldalsebesség"); // Bad page speed + LSTR MSG_EDIT_PASSWORD = _UxGT("Jelszó szerkesztése"); // Edit Password + LSTR MSG_LOGIN_REQUIRED = _UxGT("Belépés szükséges"); // Login Required + LSTR MSG_PASSWORD_SETTINGS = _UxGT("Jelszóbeállítások"); // Password Settings + LSTR MSG_ENTER_DIGIT = _UxGT("Írja be a számokat"); // Enter Digit + LSTR MSG_CHANGE_PASSWORD = _UxGT("Jelszó Beáll/Szerk"); // Set/Edit Password + LSTR MSG_REMOVE_PASSWORD = _UxGT("Jelszó törlése"); // Remove Password + LSTR MSG_PASSWORD_SET = _UxGT("A jelszó "); // Password is + LSTR MSG_START_OVER = _UxGT("Újrakezdés"); // Start Over + LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Mentsd el!"); // Remember to Save! + LSTR MSG_PASSWORD_REMOVED = _UxGT("Jelszó törölve"); // Password Removed + LSTR MSG_LEVEL_X_AXIS = _UxGT("X tengely szint"); // Level X Axis + LSTR MSG_AUTO_CALIBRATE = _UxGT("Önkalibrálás"); // Auto Calibrate + LSTR MSG_FTDI_HEATER_TIMEOUT = _UxGT("Tétlenségi idökorlát, a hömérséklet csökkent. Nyomd meg az OK gombot az ismételt felfütéshez, és újra a folytatáshoz."); // Idle timeout, temperature decreased. Press Okay to reheat and again to resume. + LSTR MSG_HEATER_TIMEOUT = _UxGT("Fütés idökorlátja"); // Heater Timeout + LSTR MSG_REHEAT = _UxGT("Újrafüt"); // Reheat + LSTR MSG_REHEATING = _UxGT("Újrafütés..."); // Reheating... + LSTR MSG_PROBE_WIZARD = _UxGT("Z szonda varázsló"); // Z Probe Wizard + LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Z referencia mérés"); // Probing Z Reference + LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Menj a próba pontra"); // Moving to Probing Pos + LSTR MSG_SOUND = _UxGT("Hang"); // Sound + LSTR MSG_TOP_LEFT = _UxGT("Bal felsö"); // Touch Top Left + LSTR MSG_BOTTOM_LEFT = _UxGT("Bal alsó"); // Touch Bottom Left + LSTR MSG_TOP_RIGHT = _UxGT("Jobb felsö"); // Touch Top Right + LSTR MSG_BOTTOM_RIGHT = _UxGT("Jobb alsó"); // Touch Bottom Right + LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Kalibrálás befejezve"); // Calibration Completed + LSTR MSG_CALIBRATION_FAILED = _UxGT("Kalibrálási hiba"); // Calibration Failed + LSTR MSG_DRIVER_BACKWARD = _UxGT(" meghajtók hátra"); // driver backward + LSTR MSG_SD_CARD = _UxGT("SD Kártya"); // SD Card + LSTR MSG_USB_DISK = _UxGT("USB Lemez"); // USB Disk + LSTR MSG_SHORT_DAY = _UxGT("n"); // d + LSTR MSG_SHORT_HOUR = _UxGT("ó"); // h + LSTR MSG_SHORT_MINUTE = _UxGT("p"); // m } namespace LanguageWide_hu { using namespace LanguageNarrow_hu; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Nyomtatás számláló"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Befejezett"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Összes nyomtatási idö"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Leghosszabb munkaidö"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Összes anyag"); + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Nyomtatás számláló"); // Print Count + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Befejezett"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Összes nyomtatási idö"); // Print Time + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Leghosszabb munkaidö"); // Longest Job Time + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Összes anyag"); // Extruded Total #endif } @@ -691,16 +660,16 @@ namespace LanguageTall_hu { using namespace LanguageWide_hu; #if LCD_HEIGHT >= 4 // Filament Change screens show up to 3 lines on a 4-line display - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Nyomj gombot", "nyomtatás folytatáshoz")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Várj míg", "szálcsere", "indítás")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Szál behelyezés", "majd nyomj gombot", "a folytatáshoz")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Nyomj gombot", "a fej fütéséhez")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Fej fütése", "Kérlek várj...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Várj a", "szál kiadására")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Várj a", "szál betöltésére")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Várj a", "szál tisztításra")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Kattints a készre", "szál tiszta")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Várj a nyomtatóra", "majd folytat...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Várj míg", "szálcsere", "indítás")); // |Wait for|filament change|to start + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Szál behelyezés", "majd nyomj gombot", "a folytatáshoz")); // |Insert filament|and press button|to continue + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Várj a", "szál kiadására")); // |Wait for|filament unload + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Várj a", "szál betöltésére")); // |Wait for|filament load + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Várj a nyomtatóra", "majd folytat...")); // |Wait for print|to resume... + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Fej fütése", "Kérlek várj...")); // |Nozzle heating|Please wait... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Nyomj gombot", "a fej fütéséhez")); // |Press button|to heat nozzle + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Nyomj gombot", "nyomtatás folytatáshoz")); // |Press Button|to resume print + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Várj a", "szál tisztításra")); // |Wait for|filament purge + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Kattints a készre", "szál tiszta")); // |Click to finish|filament purge #endif } diff --git a/Marlin/src/lcd/language/language_it.h b/Marlin/src/lcd/language/language_it.h index 0619bcd675..10b52f7f49 100644 --- a/Marlin/src/lcd/language/language_it.h +++ b/Marlin/src/lcd/language/language_it.h @@ -52,1028 +52,970 @@ namespace LanguageNarrow_it { constexpr uint8_t CHARSIZE = 1; LSTR LANGUAGE = _UxGT("Italiano"); - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" pronta."); - LSTR MSG_YES = _UxGT("Si"); - LSTR MSG_NO = _UxGT("No"); - LSTR MSG_HIGH = _UxGT("ALTO"); - LSTR MSG_LOW = _UxGT("BASSO"); - LSTR MSG_BACK = _UxGT("Indietro"); - LSTR MSG_ERROR = _UxGT("Errore"); - - LSTR MSG_MEDIA_ABORTING = _UxGT("Annullando..."); - LSTR MSG_MEDIA_INSERTED = MEDIA_TYPE_IT _UxGT(" inserita"); - LSTR MSG_MEDIA_INSERTED_SD = _UxGT("Scheda SD inserita"); - LSTR MSG_MEDIA_INSERTED_USB = _UxGT("Unità USB inserita"); - LSTR MSG_MEDIA_REMOVED = MEDIA_TYPE_IT _UxGT(" rimossa"); - LSTR MSG_MEDIA_REMOVED_SD = _UxGT("Scheda SD rimossa"); - LSTR MSG_MEDIA_REMOVED_USB = _UxGT("Unità USB rimossa"); - LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Iniz.") MEDIA_TYPE_IT _UxGT(" fallita"); - LSTR MSG_MEDIA_INIT_FAIL_SD = _UxGT("Iniz. SD fallita"); - LSTR MSG_MEDIA_INIT_FAIL_USB = _UxGT("Iniz. USB fallita"); - LSTR MSG_MEDIA_READ_ERROR = _UxGT("Err.leggendo ") MEDIA_TYPE_IT; - LSTR MSG_MEDIA_SORT = _UxGT("Ordina ") MEDIA_TYPE_IT; - LSTR MSG_MEDIA_UPDATE = _UxGT("Aggiorna ") MEDIA_TYPE_IT; - LSTR MSG_USB_FD_WAITING_FOR_MEDIA = _UxGT("In attesa unità USB"); - LSTR MSG_USB_FD_MEDIA_REMOVED = _UxGT("Unità USB rimossa"); - LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("Unità USB rimossa"); - LSTR MSG_USB_FD_USB_FAILED = _UxGT("Iniz. USB fallita"); - - LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Overflow sottochiamate"); - LSTR MSG_LCD_ENDSTOPS = _UxGT("Finecor."); // Max 8 characters - LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Finecorsa soft"); - LSTR MSG_MAIN_MENU = _UxGT("Menu principale"); - LSTR MSG_ADVANCED_SETTINGS = _UxGT("Impostaz. avanzate"); - LSTR MSG_CONFIGURATION = _UxGT("Configurazione"); - LSTR MSG_DISABLE_STEPPERS = _UxGT("Disabilita motori"); - LSTR MSG_DEBUG_MENU = _UxGT("Menu di debug"); - LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Test barra avanzam."); - LSTR MSG_ENDSTOP_TEST = _UxGT("Test finecorsa"); - LSTR MSG_Z_PROBE = _UxGT("Sonda Z"); - LSTR MSG_HOMING = _UxGT("Azzeramento"); - LSTR MSG_HOMING_FEEDRATE = _UxGT("Velocità azzeramento"); - LSTR MSG_HOMING_FEEDRATE_N = _UxGT("Vel.azzeram. @"); - LSTR MSG_AUTO_HOME = _UxGT("Auto home"); - LSTR MSG_HOME_ALL = _UxGT("Azzera tutti"); - LSTR MSG_AUTO_HOME_N = _UxGT("Azzera @"); - LSTR MSG_AUTO_HOME_X = _UxGT("Azzera X"); - LSTR MSG_AUTO_HOME_Y = _UxGT("Azzera Y"); - LSTR MSG_AUTO_HOME_Z = _UxGT("Azzera Z"); - LSTR MSG_Z_AFTER_HOME = _UxGT("Z dopo azzeramento"); - LSTR MSG_FILAMENT_SET = _UxGT("Impostaz.filamento"); - LSTR MSG_FILAMENT_MAN = _UxGT("Gestione filamento"); - LSTR MSG_MANUAL_LEVELING = _UxGT("Livel.manuale"); - LSTR MSG_TRAM_FL = _UxGT("Davanti sinistra"); - LSTR MSG_TRAM_FR = _UxGT("Davanti destra"); - LSTR MSG_TRAM_C = _UxGT("Centro"); - LSTR MSG_TRAM_BL = _UxGT("Dietro sinistra"); - LSTR MSG_TRAM_BR = _UxGT("Dietro destra"); - LSTR MSG_MANUAL_MESH = _UxGT("Mesh manuale"); - LSTR MSG_AUTO_MESH = _UxGT("Generaz.autom.mesh"); - LSTR MSG_AUTO_Z_ALIGN = _UxGT("Allineam.automat. Z"); - LSTR MSG_ITERATION = _UxGT("Iterazione G34: %i"); - LSTR MSG_DECREASING_ACCURACY = _UxGT("Precisione in calo!"); - LSTR MSG_ACCURACY_ACHIEVED = _UxGT("Precisione raggiunta"); - LSTR MSG_LEVEL_BED_HOMING = _UxGT("Home assi XYZ"); - LSTR MSG_LEVEL_BED_WAITING = _UxGT("Premi per iniziare"); - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Punto successivo"); - LSTR MSG_LEVEL_BED_DONE = _UxGT("Livel. terminato!"); - LSTR MSG_Z_FADE_HEIGHT = _UxGT("Dissolvi altezza"); - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Imp. offset home"); - LSTR MSG_HOME_OFFSET_X = _UxGT("Offset home X"); // DWIN - LSTR MSG_HOME_OFFSET_Y = _UxGT("Offset home Y"); // DWIN - LSTR MSG_HOME_OFFSET_Z = _UxGT("Offset home Z"); // DWIN - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Offset applicato"); - LSTR MSG_ERR_M428_TOO_FAR = _UxGT("Err: Troppo lontano!"); - LSTR MSG_TRAMMING_WIZARD = _UxGT("Wizard Tramming"); - LSTR MSG_SELECT_ORIGIN = _UxGT("Selez. origine"); - LSTR MSG_LAST_VALUE_SP = _UxGT("Ultimo valore "); - - LSTR MSG_PREHEAT_1 = _UxGT("Preriscalda ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Preriscalda ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" ugello"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" ugello ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" tutto"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" piatto"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" conf"); - - LSTR MSG_PREHEAT_2 = _UxGT("Preriscalda ") PREHEAT_2_LABEL; - LSTR MSG_PREHEAT_3 = _UxGT("Preriscalda ") PREHEAT_3_LABEL; - LSTR MSG_PREHEAT_4 = PREHEAT_4_LABEL; - - LSTR MSG_PREHEAT_M = _UxGT("Preriscalda $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Preriscalda $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Preris.ugello $"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Preris.ugello ~ $"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Preris.tutto $"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Preris.piatto $"); - LSTR MSG_PREHEAT_M_CHAMBER = _UxGT("Preris.camera $"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Preris.conf $"); - - LSTR MSG_PREHEAT_HOTEND = _UxGT("Prerisc.ugello"); - LSTR MSG_PREHEAT_CUSTOM = _UxGT("Prerisc.personal."); - LSTR MSG_PREHEAT = _UxGT("Preriscalda"); - LSTR MSG_COOLDOWN = _UxGT("Raffredda"); - - LSTR MSG_CUTTER_FREQUENCY = _UxGT("Frequenza"); - LSTR MSG_LASER_MENU = _UxGT("Controllo laser"); - LSTR MSG_SPINDLE_MENU = _UxGT("Controllo mandrino"); - LSTR MSG_LASER_POWER = _UxGT("Potenza laser"); - LSTR MSG_SPINDLE_POWER = _UxGT("Potenza mandrino"); - LSTR MSG_LASER_TOGGLE = _UxGT("Alterna laser"); - LSTR MSG_LASER_EVAC_TOGGLE = _UxGT("Alterna soffiatore"); - LSTR MSG_LASER_ASSIST_TOGGLE = _UxGT("Alterna aria supp."); - LSTR MSG_LASER_PULSE_MS = _UxGT("ms impulso di test"); - LSTR MSG_LASER_FIRE_PULSE = _UxGT("Spara impulso"); - LSTR MSG_FLOWMETER_FAULT = _UxGT("Err.flusso refrig."); - LSTR MSG_SPINDLE_TOGGLE = _UxGT("Alterna mandrino"); - LSTR MSG_SPINDLE_EVAC_TOGGLE = _UxGT("Alterna vuoto"); - LSTR MSG_SPINDLE_FORWARD = _UxGT("Mandrino in avanti"); - LSTR MSG_SPINDLE_REVERSE = _UxGT("Inverti mandrino"); - LSTR MSG_SWITCH_PS_ON = _UxGT("Accendi aliment."); - LSTR MSG_SWITCH_PS_OFF = _UxGT("Spegni aliment."); - LSTR MSG_POWER_EDM_FAULT = _UxGT("Anomalia alim.EDM"); - LSTR MSG_EXTRUDE = _UxGT("Estrudi"); - LSTR MSG_RETRACT = _UxGT("Ritrai"); - LSTR MSG_MOVE_AXIS = _UxGT("Muovi asse"); - LSTR MSG_PROBE_AND_LEVEL = _UxGT("Sonda e livella"); - LSTR MSG_BED_LEVELING = _UxGT("Livellamento piatto"); - LSTR MSG_LEVEL_BED = _UxGT("Livella piatto"); - LSTR MSG_BED_TRAMMING = _UxGT("Tarat.fine piatto"); - LSTR MSG_BED_TRAMMING_MANUAL = _UxGT("Tarat.fine manuale"); - LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Regola la vite finché la sonda non rileva il piatto."); - LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Tolleranza raggiunta su tutti gli angoli. Piatto livellato!"); - LSTR MSG_BED_TRAMMING_GOOD_POINTS = _UxGT("Punti buoni: "); - LSTR MSG_BED_TRAMMING_LAST_Z = _UxGT("Ultimo Z: "); - LSTR MSG_NEXT_CORNER = _UxGT("Prossimo punto"); - LSTR MSG_MESH_EDITOR = _UxGT("Editor mesh"); - LSTR MSG_MESH_VIEWER = _UxGT("Visualiz. mesh"); - LSTR MSG_EDIT_MESH = _UxGT("Modifica mesh"); - LSTR MSG_MESH_VIEW = _UxGT("Visualizza mesh"); - LSTR MSG_MESH_VIEW_GRID = _UxGT("Vis.mesh (griglia)"); - LSTR MSG_EDITING_STOPPED = _UxGT("Modif. mesh fermata"); - LSTR MSG_NO_VALID_MESH = _UxGT("Mesh non valida"); - LSTR MSG_ACTIVATE_MESH = _UxGT("Attiva livellamento"); - LSTR MSG_PROBING_POINT = _UxGT("Punto sondato"); - LSTR MSG_MESH_X = _UxGT("Indice X"); - LSTR MSG_MESH_Y = _UxGT("Indice Y"); - LSTR MSG_MESH_INSET = _UxGT("Mesh inset"); - LSTR MSG_MESH_MIN_X = _UxGT("Mesh X minimo"); - LSTR MSG_MESH_MAX_X = _UxGT("Mesh X massimo"); - LSTR MSG_MESH_MIN_Y = _UxGT("Mesh Y minimo"); - LSTR MSG_MESH_MAX_Y = _UxGT("Mesh Y massimo"); - LSTR MSG_MESH_AMAX = _UxGT("Massimizza area"); - LSTR MSG_MESH_CENTER = _UxGT("Area centrale"); - LSTR MSG_MESH_EDIT_Z = _UxGT("Valore di Z"); - LSTR MSG_MESH_CANCEL = _UxGT("Mesh cancellata"); - LSTR MSG_MESH_RESET = _UxGT("Resetta mesh"); - LSTR MSG_CUSTOM_COMMANDS = _UxGT("Comandi personaliz."); - LSTR MSG_CUSTOM_MENU_MAIN_TITLE = _UxGT(CUSTOM_MENU_MAIN_TITLE); - LSTR MSG_TOOL_HEAD_TH = _UxGT(CUSTOM_MENU_MAIN_TITLE" (TH)"); - LSTR MSG_PRESENT_BED = _UxGT("Piatto presente"); - LSTR MSG_M48_TEST = _UxGT("Test sonda M48"); - LSTR MSG_M48_POINT = _UxGT("Punto M48"); - LSTR MSG_M48_OUT_OF_BOUNDS = _UxGT("Sonda oltre i limiti"); - LSTR MSG_M48_DEV = _UxGT("Dev"); - LSTR MSG_M48_DEVIATION = _UxGT("Deviazione"); - LSTR MSG_M48_MAX_DELTA = _UxGT("Delta max"); - LSTR MSG_IDEX_MENU = _UxGT("Modo IDEX"); - LSTR MSG_OFFSETS_MENU = _UxGT("Strumenti offsets"); - LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-Park"); - LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplicazione"); - LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Copia speculare"); - LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Pieno controllo"); - LSTR MSG_IDEX_DUPE_GAP = _UxGT("X-Gap-X duplicato"); - LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2° ugello Z"); - LSTR MSG_HOTEND_OFFSET_N = _UxGT("2° ugello @"); - LSTR MSG_UBL_DOING_G29 = _UxGT("G29 in corso"); - LSTR MSG_UBL_TOOLS = _UxGT("Strumenti UBL"); - LSTR MSG_LCD_TILTING_MESH = _UxGT("Punto inclinaz."); - LSTR MSG_UBL_TILT_MESH = _UxGT("Inclina mesh"); - LSTR MSG_UBL_TILTING_GRID = _UxGT("Dim.griglia inclin."); - LSTR MSG_UBL_MESH_TILTED = _UxGT("Mesh inclinata"); - LSTR MSG_UBL_MANUAL_MESH = _UxGT("Mesh manuale"); - LSTR MSG_UBL_MESH_WIZARD = _UxGT("Creaz.guid.mesh UBL"); - LSTR MSG_UBL_BC_INSERT = _UxGT("Metti spes. e misura"); - LSTR MSG_UBL_BC_INSERT2 = _UxGT("Misura"); - LSTR MSG_UBL_BC_REMOVE = _UxGT("Rimuovi e mis.piatto"); - LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Spostamento succes."); - LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Temp. piatto"); - LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Temp. piatto"); - LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Temp. ugello"); - LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Temp. ugello"); - LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Modif.mesh personal."); - LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Ritocca mesh"); - LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Modif.mesh fatta"); - LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Crea mesh personal."); - LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Crea mesh"); - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Crea mesh ($)"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Valida mesh ($)"); - LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Crea mesh a freddo"); - LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Aggiusta alt. mesh"); - LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Altezza"); - LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Valida mesh"); - LSTR MSG_G26_HEATING_BED = _UxGT("G26 riscald.piatto"); - LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 riscald.ugello"); - LSTR MSG_G26_MANUAL_PRIME = _UxGT("Priming manuale..."); - LSTR MSG_G26_FIXED_LENGTH = _UxGT("Prime a lung.fissa"); - LSTR MSG_G26_PRIME_DONE = _UxGT("Priming terminato"); - LSTR MSG_G26_CANCELED = _UxGT("G26 annullato"); - LSTR MSG_G26_LEAVING = _UxGT("Uscita da G26"); - LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Valida mesh pers."); - LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Continua mesh"); - LSTR MSG_UBL_MESH_LEVELING = _UxGT("Livell. mesh"); - LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("Livell. 3 Punti"); - LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Livell. griglia mesh"); - LSTR MSG_UBL_MESH_LEVEL = _UxGT("Livella mesh"); - LSTR MSG_UBL_SIDE_POINTS = _UxGT("Punti laterali"); - LSTR MSG_UBL_MAP_TYPE = _UxGT("Tipo di mappa"); - LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Esporta mappa"); - LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Esporta per host"); - LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Esporta in CSV"); - LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Backup esterno"); - LSTR MSG_UBL_INFO_UBL = _UxGT("Esporta info UBL"); - LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Riempimento"); - LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Riempimento manuale"); - LSTR MSG_UBL_SMART_FILLIN = _UxGT("Riempimento smart"); - LSTR MSG_UBL_FILLIN_MESH = _UxGT("Riempimento mesh"); - LSTR MSG_UBL_MESH_FILLED = _UxGT("Pts mancanti riempiti"); - LSTR MSG_UBL_MESH_INVALID = _UxGT("Mesh non valida"); - LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Invalida tutto"); - LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Invalid.punto vicino"); - LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Ritocca tutto"); - LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Ritocca punto vicino"); - LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Mesh salvate"); - LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Slot di memoria"); - LSTR MSG_UBL_LOAD_MESH = _UxGT("Carica mesh piatto"); - LSTR MSG_UBL_SAVE_MESH = _UxGT("Salva mesh piatto"); - LSTR MSG_UBL_INVALID_SLOT = _UxGT("Prima selez. uno slot mesh"); - LSTR MSG_MESH_LOADED = _UxGT("Mesh %i caricata"); - LSTR MSG_MESH_SAVED = _UxGT("Mesh %i salvata"); - LSTR MSG_MESH_ACTIVE = _UxGT("Mesh %i attiva"); - LSTR MSG_UBL_NO_STORAGE = _UxGT("Nessuna memoria"); - LSTR MSG_UBL_SAVE_ERROR = _UxGT("Err: Salvataggio UBL"); - LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Err: Ripristino UBL"); - LSTR MSG_UBL_Z_OFFSET = _UxGT("Z-Offset: "); - LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Z-Offset fermato"); - LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("UBL passo passo"); - LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Crea mesh a freddo"); - LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2.Riempimento smart"); - LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Valida mesh"); - LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Ritocca all"); - LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Valida mesh"); - LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Ritocca all"); - LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Salva mesh piatto"); - - LSTR MSG_LED_CONTROL = _UxGT("Controllo LED"); - LSTR MSG_LIGHTS = _UxGT("Luci"); - LSTR MSG_LIGHT_N = _UxGT("Luce #{"); - LSTR MSG_LED_PRESETS = _UxGT("Presets luce"); - LSTR MSG_SET_LEDS_RED = _UxGT("Rosso"); - LSTR MSG_SET_LEDS_ORANGE = _UxGT("Arancione"); - LSTR MSG_SET_LEDS_YELLOW = _UxGT("Giallo"); - LSTR MSG_SET_LEDS_GREEN = _UxGT("Verde"); - LSTR MSG_SET_LEDS_BLUE = _UxGT("Blu"); - LSTR MSG_SET_LEDS_INDIGO = _UxGT("Indaco"); - LSTR MSG_SET_LEDS_VIOLET = _UxGT("Viola"); - LSTR MSG_SET_LEDS_WHITE = _UxGT("Bianco"); - LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Predefinito"); - LSTR MSG_LED_CHANNEL_N = _UxGT("Canale {"); - LSTR MSG_NEO2_PRESETS = _UxGT("Presets luce #2"); - LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Luminosità"); - LSTR MSG_CUSTOM_LEDS = _UxGT("Luci personalizzate"); - LSTR MSG_INTENSITY_R = _UxGT("Intensità rosso"); - LSTR MSG_INTENSITY_G = _UxGT("Intensità verde"); - LSTR MSG_INTENSITY_B = _UxGT("Intensità blu"); - LSTR MSG_INTENSITY_W = _UxGT("Intensità bianco"); - LSTR MSG_LED_BRIGHTNESS = _UxGT("Luminosità"); - LSTR MSG_LIGHT_ENCODER = _UxGT("Luci encoder"); - LSTR MSG_LIGHT_ENCODER_PRESETS = _UxGT("Preset luci encoder"); - - LSTR MSG_MOVING = _UxGT("In movimento..."); - LSTR MSG_FREE_XY = _UxGT("XY liberi"); - LSTR MSG_MOVE_X = _UxGT("Muovi X"); - LSTR MSG_MOVE_Y = _UxGT("Muovi Y"); - LSTR MSG_MOVE_Z = _UxGT("Muovi Z"); - LSTR MSG_MOVE_N = _UxGT("Muovi @"); - LSTR MSG_MOVE_E = _UxGT("Estrusore"); - LSTR MSG_MOVE_EN = _UxGT("Estrusore *"); - LSTR MSG_HOTEND_TOO_COLD = _UxGT("Ugello freddo"); - LSTR MSG_MOVE_N_MM = _UxGT("Muovi di $mm"); - LSTR MSG_MOVE_N_IN = _UxGT("Muovi di $in"); - LSTR MSG_MOVE_N_DEG = _UxGT("Muovi di $") LCD_STR_DEGREE; - LSTR MSG_LIVE_MOVE = _UxGT("Movimento live"); - LSTR MSG_SPEED = _UxGT("Velocità"); - LSTR MSG_MESH_Z_OFFSET = _UxGT("Piatto Z"); - LSTR MSG_NOZZLE = _UxGT("Ugello"); - LSTR MSG_NOZZLE_N = _UxGT("Ugello ~"); - LSTR MSG_NOZZLE_PARKED = _UxGT("Ugello parcheggiato"); - LSTR MSG_NOZZLE_STANDBY = _UxGT("Ugello in pausa"); - LSTR MSG_BED = _UxGT("Piatto"); - LSTR MSG_CHAMBER = _UxGT("Camera"); - LSTR MSG_COOLER = _UxGT("Raffreddam. laser"); - LSTR MSG_COOLER_TOGGLE = _UxGT("Alterna raffreddam."); - LSTR MSG_FLOWMETER_SAFETY = _UxGT("Sicurezza flusso"); - LSTR MSG_CUTTER = _UxGT("Taglio"); - LSTR MSG_LASER = _UxGT("Laser"); - LSTR MSG_FAN_SPEED = _UxGT("Vel. ventola"); // Max 15 characters - LSTR MSG_FAN_SPEED_N = _UxGT("Vel. ventola ~"); // Max 15 characters - LSTR MSG_STORED_FAN_N = _UxGT("Ventola mem. ~"); // Max 15 characters - LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Extra vel.vent."); // Max 15 characters - LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Extra v.vent. ~"); // Max 15 characters - LSTR MSG_CONTROLLER_FAN = _UxGT("Controller vent."); - LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("Vel. inattivo"); - LSTR MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("Modo autom."); - LSTR MSG_CONTROLLER_FAN_SPEED = _UxGT("Vel. attivo"); - LSTR MSG_CONTROLLER_FAN_DURATION = _UxGT("Tempo inattivo"); - LSTR MSG_FLOW_PERCENTAGE = _UxGT("Imposta perc.flusso"); - LSTR MSG_FLOW = _UxGT("Flusso"); - LSTR MSG_FLOW_N = _UxGT("Flusso ~"); - LSTR MSG_CONTROL = _UxGT("Controllo"); - LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); - LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fact"); - LSTR MSG_AUTOTEMP = _UxGT("Autotemp"); - LSTR MSG_TIMEOUT = _UxGT("Tempo scaduto"); - LSTR MSG_LCD_ON = _UxGT("On"); - LSTR MSG_LCD_OFF = _UxGT("Off"); - - LSTR MSG_PID_AUTOTUNE = _UxGT("Calibrazione PID"); - LSTR MSG_PID_AUTOTUNE_E = _UxGT("Calib.PID *"); - LSTR MSG_PID_CYCLE = _UxGT("Ciclo PID"); - LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("Calibr.PID eseguita"); - LSTR MSG_PID_AUTOTUNE_FAILED = _UxGT("Calibr.PID fallito!"); - - LSTR MSG_PID_FOR_NOZZLE = _UxGT("per ugello in esecuzione."); - LSTR MSG_PID_FOR_BED = _UxGT("per piatto BED in esecuzione."); - LSTR MSG_PID_FOR_CHAMBER = _UxGT("per camera in esecuzione."); - - LSTR MSG_TEMP_NOZZLE = _UxGT("Temperatura ugello"); - LSTR MSG_TEMP_BED = _UxGT("Temperatura piatto"); - LSTR MSG_TEMP_CHAMBER = _UxGT("Temperature camera"); - - LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Calibrazione fallita! Estrusore errato."); - LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Calibrazione fallita! Temperatura troppo alta."); - LSTR MSG_PID_TIMEOUT = _UxGT("Calibrazione fallita! Tempo scaduto."); - - LSTR MSG_MPC_MEASURING_AMBIENT = _UxGT("Verif.perdita calore"); - LSTR MSG_MPC_HEATING_PAST_200 = _UxGT("Riscalda a >200C"); - LSTR MSG_MPC_COOLING_TO_AMBIENT = _UxGT("Raffredda a amb."); - LSTR MSG_MPC_AUTOTUNE = _UxGT("Calibra MPC"); - LSTR MSG_MPC_EDIT = _UxGT("Modif.MPC *"); - LSTR MSG_MPC_POWER = _UxGT("Potenza riscald."); - LSTR MSG_MPC_POWER_E = _UxGT("Potenza *"); - LSTR MSG_MPC_BLOCK_HEAT_CAPACITY = _UxGT("Capacità riscald."); - LSTR MSG_MPC_BLOCK_HEAT_CAPACITY_E = _UxGT("Capac.riscald. *"); - LSTR MSG_SENSOR_RESPONSIVENESS = _UxGT("Reattiv.sens."); - LSTR MSG_SENSOR_RESPONSIVENESS_E = _UxGT("Reattiv.sens. *"); - LSTR MSG_MPC_AMBIENT_XFER_COEFF = _UxGT("Coeff.ambiente"); - LSTR MSG_MPC_AMBIENT_XFER_COEFF_E = _UxGT("Coeff.amb. *"); - LSTR MSG_MPC_AMBIENT_XFER_COEFF_FAN = _UxGT("Coeff.ventola"); - LSTR MSG_MPC_AMBIENT_XFER_COEFF_FAN_E = _UxGT("Coeff.ventola *"); - LSTR MSG_SELECT_E = _UxGT("Seleziona *"); - LSTR MSG_ACC = _UxGT("Accel"); - LSTR MSG_JERK = _UxGT("Jerk"); - LSTR MSG_VA_JERK = _UxGT("Max jerk ") STR_A; - LSTR MSG_VB_JERK = _UxGT("Max jerk ") STR_B; - LSTR MSG_VC_JERK = _UxGT("Max jerk ") STR_C; - LSTR MSG_VN_JERK = _UxGT("Max jerk @"); - LSTR MSG_VE_JERK = _UxGT("Max jerk E"); - LSTR MSG_JUNCTION_DEVIATION = _UxGT("Deviaz. giunzioni"); - LSTR MSG_STEP_SMOOTHING = _UxGT("Leviga passo"); - LSTR MSG_MAX_SPEED = _UxGT("Vel.massima (mm/s)"); - LSTR MSG_VMAX_A = _UxGT("Vel.massima ") STR_A; - LSTR MSG_VMAX_B = _UxGT("Vel.massima ") STR_B; - LSTR MSG_VMAX_C = _UxGT("Vel.massima ") STR_C; - LSTR MSG_VMAX_N = _UxGT("Vel.massima @"); - LSTR MSG_VMAX_E = _UxGT("Vel.massima E"); - LSTR MSG_VMAX_EN = _UxGT("Vel.massima *"); - LSTR MSG_VMIN = _UxGT("Vel.minima"); - LSTR MSG_VTRAV_MIN = _UxGT("Vel.min spostam."); - LSTR MSG_ACCELERATION = _UxGT("Accelerazione"); - LSTR MSG_AMAX_A = _UxGT("Acc.massima ") STR_A; - LSTR MSG_AMAX_B = _UxGT("Acc.massima ") STR_B; - LSTR MSG_AMAX_C = _UxGT("Acc.massima ") STR_C; - LSTR MSG_AMAX_N = _UxGT("Acc.massima @"); - LSTR MSG_AMAX_E = _UxGT("Acc.massima E"); - LSTR MSG_AMAX_EN = _UxGT("Acc.massima *"); - LSTR MSG_A_RETRACT = _UxGT("A-Ritrazione"); - LSTR MSG_A_TRAVEL = _UxGT("A-Spostamento"); - LSTR MSG_A_SPINDLE = _UxGT("Acc.mandrino"); - LSTR MSG_INPUT_SHAPING = _UxGT("Input shaping"); - LSTR MSG_SHAPING_ENABLE_N = _UxGT("Abilita shaping @"); - LSTR MSG_SHAPING_DISABLE_N = _UxGT("Disabil. shaping @"); - LSTR MSG_SHAPING_FREQ_N = _UxGT("Frequenza @"); - LSTR MSG_SHAPING_ZETA_N = _UxGT("Smorzamento @"); - LSTR MSG_SHAPING_A_FREQ = _UxGT("Frequenza ") STR_A; // ProUI - LSTR MSG_SHAPING_B_FREQ = _UxGT("Frequenza ") STR_B; // ProUI - LSTR MSG_SHAPING_C_FREQ = _UxGT("Frequenza ") STR_C; // ProUI - LSTR MSG_SHAPING_A_ZETA = _UxGT("Smorzamento ") STR_A; // ProUI - LSTR MSG_SHAPING_B_ZETA = _UxGT("Smorzamento ") STR_B; // ProUI - LSTR MSG_SHAPING_C_ZETA = _UxGT("Smorzamento ") STR_C; // ProUI - LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("Frequenza max"); - LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("Feed min"); - LSTR MSG_STEPS_PER_MM = _UxGT("Passi/mm"); - LSTR MSG_A_STEPS = STR_A _UxGT(" passi/mm"); - LSTR MSG_B_STEPS = STR_B _UxGT(" passi/mm"); - LSTR MSG_C_STEPS = STR_C _UxGT(" passi/mm"); - LSTR MSG_N_STEPS = _UxGT("@ passi/mm"); - LSTR MSG_E_STEPS = _UxGT("E passi/mm"); - LSTR MSG_EN_STEPS = _UxGT("* passi/mm"); - LSTR MSG_TEMPERATURE = _UxGT("Temperatura"); - LSTR MSG_FTM_TRAPEZOIDAL = _UxGT("Trapezoidale"); - LSTR MSG_FTM_POLY5 = _UxGT("5° ordine"); - LSTR MSG_FTM_POLY6 = _UxGT("6° ordine"); - LSTR MSG_FTM_TRAJECTORY = _UxGT("Traiettoria: $"); - LSTR MSG_MOTION = _UxGT("Movimento"); - LSTR MSG_FILAMENT = _UxGT("Filamento"); - LSTR MSG_FILAMENT_EN = _UxGT("Filamento *"); - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm") SUPERSCRIPT_THREE; - LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("Limite E in mm") SUPERSCRIPT_THREE; - LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("Limite E *"); - LSTR MSG_FILAMENT_DIAM = _UxGT("Diam. filo"); - LSTR MSG_FILAMENT_DIAM_E = _UxGT("Diam. filo *"); - LSTR MSG_FILAMENT_UNLOAD = _UxGT("Rimuovi mm"); - LSTR MSG_FILAMENT_LOAD = _UxGT("Carica mm"); - LSTR MSG_SEGMENTS_PER_SECOND = _UxGT("Segmenti/Sec"); - LSTR MSG_DRAW_MIN_X = _UxGT("Min X area disegno"); - LSTR MSG_DRAW_MAX_X = _UxGT("Max X area disegno"); - LSTR MSG_DRAW_MIN_Y = _UxGT("Min Y area disegno"); - LSTR MSG_DRAW_MAX_Y = _UxGT("Max Y area disegno"); - LSTR MSG_MAX_BELT_LEN = _UxGT("Lungh.max cinghia"); - LSTR MSG_LINEAR_ADVANCE = _UxGT("Avanzam.lineare"); - LSTR MSG_ADVANCE_K = _UxGT("K advance"); - LSTR MSG_ADVANCE_TAU = _UxGT("Tau advance"); - LSTR MSG_ADVANCE_K_E = _UxGT("K advance *"); - LSTR MSG_ADVANCE_TAU_E = _UxGT("Tau advance *"); - LSTR MSG_NLE_ON = _UxGT("NLE abilitato"); - LSTR MSG_CONTRAST = _UxGT("Contrasto LCD"); - LSTR MSG_BRIGHTNESS = _UxGT("Luminosità LCD"); - LSTR MSG_SCREEN_TIMEOUT = _UxGT("Timeout LCD (m)"); - LSTR MSG_HOTEND_TEMP_GRAPH = _UxGT("Grafico temp.ugello"); - LSTR MSG_BED_TEMP_GRAPH = _UxGT("Grafico temp.piatto"); - LSTR MSG_BRIGHTNESS_OFF = _UxGT("Spegni retroillum."); - LSTR MSG_STORE_EEPROM = _UxGT("Salva impostazioni"); - LSTR MSG_LOAD_EEPROM = _UxGT("Carica impostazioni"); - LSTR MSG_RESTORE_DEFAULTS = _UxGT("Ripristina imp."); - LSTR MSG_INIT_EEPROM = _UxGT("Inizializza EEPROM"); - LSTR MSG_EEPROM_INITIALIZED = _UxGT("EEPROM inizializzata"); - LSTR MSG_ERR_EEPROM_CRC = _UxGT("Err: CRC EEPROM"); - LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Err: Dimens.EEPROM"); - LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Err: Versione EEPROM"); - LSTR MSG_ERR_EEPROM_CORRUPT = _UxGT("Err: EEPROM corrotta"); - LSTR MSG_SETTINGS_STORED = _UxGT("Impostazioni mem."); - LSTR MSG_HAS_PREVIEW = _UxGT("Ha anteprima"); - LSTR MSG_RESET_PRINTER = _UxGT("Resetta stampante"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Aggiorna"); - LSTR MSG_INFO_SCREEN = _UxGT("Schermata info"); - LSTR MSG_INFO_MACHINENAME = _UxGT("Nome macchina"); - LSTR MSG_INFO_SIZE = _UxGT("Dimens."); - LSTR MSG_INFO_FWVERSION = _UxGT("Versione firmware"); - LSTR MSG_INFO_BUILD = _UxGT("Dataora compilaz."); - LSTR MSG_PREPARE = _UxGT("Prepara"); - LSTR MSG_TUNE = _UxGT("Regola"); - LSTR MSG_POWER_MONITOR = _UxGT("Controllo aliment."); - LSTR MSG_CURRENT = _UxGT("Corrente"); - LSTR MSG_VOLTAGE = _UxGT("Tensione"); - LSTR MSG_POWER = _UxGT("Potenza"); - LSTR MSG_START_PRINT = _UxGT("Avvia stampa"); - LSTR MSG_BUTTON_NEXT = _UxGT("Prossimo"); - LSTR MSG_BUTTON_INIT = _UxGT("Inizializza"); - LSTR MSG_BUTTON_STOP = _UxGT("Stop"); - LSTR MSG_BUTTON_PRINT = _UxGT("Stampa"); - LSTR MSG_BUTTON_RESET = _UxGT("Resetta"); - LSTR MSG_BUTTON_IGNORE = _UxGT("Ignora"); - LSTR MSG_BUTTON_CANCEL = _UxGT("Annulla"); - LSTR MSG_BUTTON_CONFIRM = _UxGT("Conferma"); - LSTR MSG_BUTTON_CONTINUE = _UxGT("Continua"); - LSTR MSG_BUTTON_DONE = _UxGT("Fatto"); - LSTR MSG_BUTTON_BACK = _UxGT("Indietro"); - LSTR MSG_BUTTON_PROCEED = _UxGT("Procedi"); - LSTR MSG_BUTTON_SKIP = _UxGT("Salta"); - LSTR MSG_BUTTON_INFO = _UxGT("Info"); - LSTR MSG_BUTTON_LEVEL = _UxGT("Livello"); - LSTR MSG_BUTTON_PAUSE = _UxGT("Pausa"); - LSTR MSG_BUTTON_RESUME = _UxGT("Riprendi"); - LSTR MSG_BUTTON_ADVANCED = _UxGT("Avanzato"); - LSTR MSG_BUTTON_SAVE = _UxGT("Memorizza"); - LSTR MSG_BUTTON_PURGE = _UxGT("Spurga"); - LSTR MSG_PAUSING = _UxGT("Messa in pausa..."); - LSTR MSG_PAUSE_PRINT = _UxGT("Pausa stampa"); - LSTR MSG_ADVANCED_PAUSE = _UxGT("Pausa avanzata"); - LSTR MSG_RESUME_PRINT = _UxGT("Riprendi stampa"); - LSTR MSG_STOP_PRINT = _UxGT("Arresta stampa"); - LSTR MSG_CANCEL_PRINT = _UxGT("Annulla stampa"); - LSTR MSG_OUTAGE_RECOVERY = _UxGT("Ripresa da interruz."); - LSTR MSG_RESUME_BED_TEMP = _UxGT("Riprendi temp.piatto"); - LSTR MSG_HOST_START_PRINT = _UxGT("Host avvio"); - LSTR MSG_PRINTING_OBJECT = _UxGT("Stampa oggetto"); - LSTR MSG_CANCEL_OBJECT = _UxGT("Cancella oggetto"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Canc. oggetto {"); - LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Cont.proc.stampa"); - LSTR MSG_TURN_OFF = _UxGT("Spegni stampante"); - LSTR MSG_END_LOOPS = _UxGT("Fine cicli di rip."); - LSTR MSG_DWELL = _UxGT("Sospensione..."); - LSTR MSG_USERWAIT = _UxGT("Premi tasto.."); - LSTR MSG_PRINT_PAUSED = _UxGT("Stampa sospesa"); - LSTR MSG_PRINTING = _UxGT("Stampa..."); - LSTR MSG_STOPPING = _UxGT("Fermata..."); - LSTR MSG_REMAINING_TIME = _UxGT("Rimanente"); - LSTR MSG_PRINT_ABORTED = _UxGT("Stampa annullata"); - LSTR MSG_PRINT_DONE = _UxGT("Stampa eseguita"); - LSTR MSG_PRINTER_KILLED = _UxGT("Stampante uccisa!"); - LSTR MSG_NO_MOVE = _UxGT("Nessun movimento"); - LSTR MSG_KILLED = _UxGT("UCCISO. "); - LSTR MSG_STOPPED = _UxGT("ARRESTATO. "); - LSTR MSG_FWRETRACT = _UxGT("Ritraz.da firmware"); - LSTR MSG_CONTROL_RETRACT = _UxGT("Ritrai mm"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Scamb. ritrai mm"); - LSTR MSG_CONTROL_RETRACTF = _UxGT("Ritrai V"); - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Salta mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Avanza mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Scamb. Avanza mm"); - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Avanza V"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("Scamb. avanza V"); - LSTR MSG_AUTORETRACT = _UxGT("AutoRitrai"); - LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Lunghezza scambio"); - LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Extra scambio"); - LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Lunghezza spurgo"); - LSTR MSG_TOOL_CHANGE = _UxGT("Cambio utensile"); - LSTR MSG_TOOL_HEAD_SWAP = _UxGT("Parcheggia per scambio testa"); - LSTR MSG_FILAMENT_SWAP = _UxGT("Parcheggia per cambio filemento"); - LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Risalita Z"); - LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Velocità innesco"); - LSTR MSG_SINGLENOZZLE_WIPE_RETRACT = _UxGT("Ritrazione pulizia"); - LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Velocità ritrazione"); - LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Parcheggia testa"); - LSTR MSG_PARK_FAILED = _UxGT("Parcheggio fallito"); - LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Veloc. di recupero"); - LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Velocità ventola"); - LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Tempo ventola"); - LSTR MSG_TOOL_MIGRATION_ON = _UxGT("Auto ON"); - LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("Auto OFF"); - LSTR MSG_TOOL_MIGRATION = _UxGT("Migrazione utensile"); - LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("Auto-migrazione"); - LSTR MSG_TOOL_MIGRATION_END = _UxGT("Ultimo estrusore"); - LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("Migra a *"); - LSTR MSG_FILAMENTCHANGE = _UxGT("Cambia filamento"); - LSTR MSG_FILAMENTCHANGE_E = _UxGT("Cambia filam. *"); - LSTR MSG_FILAMENTLOAD = _UxGT("Carica filamento"); - LSTR MSG_FILAMENTLOAD_E = _UxGT("Carica filamento *"); - LSTR MSG_FILAMENTUNLOAD = _UxGT("Rimuovi filamento"); - LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Rimuovi filam. *"); - LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Rimuovi tutto"); - - LSTR MSG_ATTACH_MEDIA = _UxGT("Collega ") MEDIA_TYPE_IT; - LSTR MSG_ATTACH_SD = _UxGT("Collega scheda SD"); - LSTR MSG_ATTACH_USB = _UxGT("Collega unità USB"); - LSTR MSG_RELEASE_MEDIA = _UxGT("Rilascia ") MEDIA_TYPE_IT; - LSTR MSG_RELEASE_SD = _UxGT("Rilascia scheda SD"); - LSTR MSG_RELEASE_USB = _UxGT("Rilascia unità USB"); - LSTR MSG_CHANGE_MEDIA = _UxGT("Selez.") MEDIA_TYPE_IT; - LSTR MSG_CHANGE_SD = _UxGT("Selez. scheda SD"); - LSTR MSG_CHANGE_USB = _UxGT("Selez. unità USB"); - LSTR MSG_RUN_AUTOFILES = _UxGT("Esegui Autofiles"); - LSTR MSG_RUN_AUTOFILES_SD = _UxGT("Esegui Autofiles SD"); - LSTR MSG_RUN_AUTOFILES_USB = _UxGT("Esegui Autofiles USB"); - LSTR MSG_MEDIA_MENU = _UxGT("Stampa da ") MEDIA_TYPE_IT; - LSTR MSG_MEDIA_MENU_SD = _UxGT("Selez. da SD"); - LSTR MSG_MEDIA_MENU_USB = _UxGT("Selez. da USB"); - LSTR MSG_NO_MEDIA = MEDIA_TYPE_IT _UxGT(" non rilevato"); - - LSTR MSG_ZPROBE_OUT = _UxGT("Z probe fuori piatto"); - LSTR MSG_SKEW_FACTOR = _UxGT("Fattore distorsione"); - LSTR MSG_BLTOUCH = _UxGT("BLTouch"); - LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Autotest BLTouch"); - LSTR MSG_BLTOUCH_RESET = _UxGT("Resetta BLTouch"); - LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Estendi BLTouch"); - LSTR MSG_BLTOUCH_SW_MODE = _UxGT("BLTouch modo SW"); - LSTR MSG_BLTOUCH_SPEED_MODE = _UxGT("Alta Velocità"); - LSTR MSG_BLTOUCH_5V_MODE = _UxGT("BLTouch modo 5V"); - LSTR MSG_BLTOUCH_OD_MODE = _UxGT("BLTouch modo OD"); - LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("BLTouch modo mem."); - LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Metti BLTouch a 5V"); - LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Metti BLTouch a OD"); - LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Segnala modo"); - LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("PERICOLO: impostazioni errate possono cause danni! Procedo comunque?"); - LSTR MSG_TOUCHMI_PROBE = _UxGT("TouchMI"); - LSTR MSG_TOUCHMI_INIT = _UxGT("Inizializ.TouchMI"); - LSTR MSG_TOUCHMI_ZTEST = _UxGT("Test Z offset"); - LSTR MSG_TOUCHMI_SAVE = _UxGT("Memorizzare"); - LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("Estendi TouchMI"); - LSTR MSG_MANUAL_DEPLOY = _UxGT("Estendi sonda-Z"); - LSTR MSG_MANUAL_PENUP = _UxGT("Penna su"); - LSTR MSG_MANUAL_PENDOWN = _UxGT("Penna giù"); - LSTR MSG_BLTOUCH_STOW = _UxGT("Ritrai BLTouch"); - LSTR MSG_MANUAL_STOW = _UxGT("Ritrai sonda-Z"); - LSTR MSG_HOME_FIRST = _UxGT("Home %s prima"); - LSTR MSG_ZPROBE_SETTINGS = _UxGT("Impostazioni sonda"); - LSTR MSG_ZPROBE_OFFSETS = _UxGT("Offsets sonda"); - LSTR MSG_ZPROBE_XOFFSET = _UxGT("Offset X sonda"); - LSTR MSG_ZPROBE_YOFFSET = _UxGT("Offset Y sonda"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Offset Z sonda"); - LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Offset @ sonda"); - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Babystep sonda Z"); - LSTR MSG_ZPROBE_MARGIN = _UxGT("Margine sonda"); - LSTR MSG_ZOFFSET = _UxGT("Offset Z"); - LSTR MSG_Z_FEED_RATE = _UxGT("Velocità Z"); - LSTR MSG_ENABLE_HS_MODE = _UxGT("Abilita modo HS"); - LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Muovi ugel.su piatto"); - LSTR MSG_BABYSTEP_X = _UxGT("Babystep X"); - LSTR MSG_BABYSTEP_Y = _UxGT("Babystep Y"); - LSTR MSG_BABYSTEP_Z = _UxGT("Babystep Z"); - LSTR MSG_BABYSTEP_N = _UxGT("Babystep @"); - LSTR MSG_BABYSTEP_TOTAL = _UxGT("Totali"); - LSTR MSG_ENDSTOP_ABORT = _UxGT("Interrompi se FC"); - LSTR MSG_ERR_HEATING_FAILED = _UxGT("Risc.fallito"); // Max 12 characters - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Err: TEMP RIDONDANTE"); - LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("TEMP FUORI CONTROLLO"); - LSTR MSG_ERR_TEMP_MALFUNCTION = _UxGT("MALFUNZIONAMENTO TEMP"); - LSTR MSG_ERR_COOLING_FAILED = _UxGT("Raffreddam. fallito"); - LSTR MSG_ERR_MAXTEMP = _UxGT("Err: TEMP MASSIMA"); - LSTR MSG_ERR_MINTEMP = _UxGT("Err: TEMP MINIMA"); - LSTR MSG_HALTED = _UxGT("STAMPANTE FERMATA"); - LSTR MSG_PLEASE_WAIT = _UxGT("Attendere prego..."); - LSTR MSG_PLEASE_RESET = _UxGT("Riavviare prego"); - LSTR MSG_PREHEATING = _UxGT("Preriscaldamento..."); - LSTR MSG_HEATING = _UxGT("Riscaldamento..."); - LSTR MSG_COOLING = _UxGT("Raffreddamento..."); - LSTR MSG_BED_HEATING = _UxGT("Risc. piatto..."); - LSTR MSG_BED_COOLING = _UxGT("Raffr. piatto..."); - LSTR MSG_BED_ANNEALING = _UxGT("Ricottura..."); - LSTR MSG_PROBE_HEATING = _UxGT("Risc. sonda..."); - LSTR MSG_PROBE_COOLING = _UxGT("Raffr. sonda..."); - LSTR MSG_CHAMBER_HEATING = _UxGT("Risc. camera..."); - LSTR MSG_CHAMBER_COOLING = _UxGT("Raffr. camera..."); - LSTR MSG_LASER_COOLING = _UxGT("Raffr. laser..."); - LSTR MSG_DELTA_CALIBRATE = _UxGT("Calibraz. Delta"); - LSTR MSG_DELTA_CALIBRATION_IN_PROGRESS = _UxGT("Calibrazione delta in corso"); - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Calibra X"); - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Calibra Y"); - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Calibra Z"); - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibra centro"); - LSTR MSG_DELTA_SETTINGS = _UxGT("Impostaz. delta"); - LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Auto calibrazione"); - LSTR MSG_DELTA_DIAG_ROD = _UxGT("Barra diagonale"); - LSTR MSG_DELTA_HEIGHT = _UxGT("Altezza"); - LSTR MSG_DELTA_RADIUS = _UxGT("Raggio"); - LSTR MSG_INFO_MENU = _UxGT("Info su stampante"); - LSTR MSG_INFO_PRINTER_MENU = _UxGT("Info. stampante"); - LSTR MSG_3POINT_LEVELING = _UxGT("Livel. a 3 punti"); - LSTR MSG_LINEAR_LEVELING = _UxGT("Livel. lineare"); - LSTR MSG_BILINEAR_LEVELING = _UxGT("Livel. bilineare"); - LSTR MSG_UBL_LEVELING = _UxGT("Livel.piatto unific."); - LSTR MSG_MESH_LEVELING = _UxGT("Livel. mesh"); - LSTR MSG_MESH_DONE = _UxGT("Sond.mesh eseguito"); - LSTR MSG_INFO_PRINTER_STATS_MENU = _UxGT("Statistiche stampante"); - LSTR MSG_INFO_STATS_MENU = _UxGT("Statistiche"); - LSTR MSG_RESET_STATS = _UxGT("Reset stat.stampa?"); - LSTR MSG_INFO_BOARD_MENU = _UxGT("Info. scheda"); - LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Termistori"); - LSTR MSG_INFO_EXTRUDERS = _UxGT("Estrusori"); - LSTR MSG_INFO_BAUDRATE = _UxGT("Baud"); - LSTR MSG_INFO_PROTOCOL = _UxGT("Protocollo"); - LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Controllo fuga: OFF"); - LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Controllo fuga: ON"); - LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Timeout inatt.ugello"); - LSTR MSG_BED_IDLE_TIMEOUT = _UxGT("Timeout inatt.piatto"); - LSTR MSG_HOTEND_IDLE_DISABLE = _UxGT("Disabilita timeout"); - LSTR MSG_HOTEND_IDLE_NOZZLE_TARGET = _UxGT("Temp.inatt.ugello"); - LSTR MSG_HOTEND_IDLE_BED_TARGET = _UxGT("Temp.inatt.piatto"); - LSTR MSG_FAN_SPEED_FAULT = _UxGT("Err.vel.della ventola"); - - LSTR MSG_CASE_LIGHT = _UxGT("Luci case"); - LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Luminosità Luci"); - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("STAMPANTE ERRATA"); - - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Stampe"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Durata"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Più lungo"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Estruso"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completate"); - LSTR MSG_INFO_MIN_TEMP = _UxGT("Temp min"); - LSTR MSG_INFO_MAX_TEMP = _UxGT("Temp max"); - LSTR MSG_INFO_PSU = _UxGT("Alimentatore"); - - LSTR MSG_DRIVE_STRENGTH = _UxGT("Potenza drive"); - LSTR MSG_DAC_PERCENT_N = _UxGT("Driver @ %"); - LSTR MSG_ERROR_TMC = _UxGT("ERR.CONNESSIONE TMC"); - LSTR MSG_DAC_EEPROM_WRITE = _UxGT("Scrivi DAC EEPROM"); - LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("CAMBIO FILAMENTO"); - LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("STAMPA IN PAUSA"); - LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("CARICA FILAMENTO"); - LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("RIMUOVI FILAMENTO"); - LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("OPZIONI RIPRESA:"); - LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Spurga di più"); - LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Riprendi stampa"); - LSTR MSG_FILAMENT_CHANGE_PURGE_CONTINUE = _UxGT("Spurga o continua?"); // ProUI - LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Ugello: "); - LSTR MSG_RUNOUT_SENSOR = _UxGT("Sens.filo termin."); // Max 17 characters - LSTR MSG_SENSOR = _UxGT("Sensore"); - LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("Dist mm filo term."); - LSTR MSG_MOTION_DISTANCE_MM = _UxGT("Dist mm movimento"); - LSTR MSG_EXTRUDER_MIN_TEMP = _UxGT("Temp.min estrusore"); // ProUI - LSTR MSG_FANCHECK = _UxGT("Verif.tacho vent."); // Max 17 characters - LSTR MSG_KILL_HOMING_FAILED = _UxGT("Home fallito"); - LSTR MSG_LCD_PROBING_FAILED = _UxGT("Sondaggio fallito"); - - // Ender-3 V2 DWIN - ProUI / JyersUI - LSTR MSG_COLORS_GET = _UxGT("Ottieni colori"); // ProUI - LSTR MSG_COLORS_SELECT = _UxGT("Selez.colori"); // ProUI - LSTR MSG_COLORS_APPLIED = _UxGT("Colori applicati"); // ProUI - LSTR MSG_COLORS_RED = _UxGT("Rosso"); // ProUI / JyersUI - LSTR MSG_COLORS_GREEN = _UxGT("Verde"); // ProUI / JyersUI - LSTR MSG_COLORS_BLUE = _UxGT("Blu"); // ProUI / JyersUI - LSTR MSG_COLORS_WHITE = _UxGT("Bianco"); // ProUI - LSTR MSG_UI_LANGUAGE = _UxGT("Lingua UI"); // ProUI - LSTR MSG_SOUND_ENABLE = _UxGT("Abilita suono"); // ProUI - LSTR MSG_LOCKSCREEN = _UxGT("Blocca schermo"); // ProUI - LSTR MSG_LOCKSCREEN_LOCKED = _UxGT("Stamp. bloccata,"); // ProUI - LSTR MSG_LOCKSCREEN_UNLOCK = _UxGT("Scroll x sbloccare."); // ProUI - LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Attendere fino al riavvio."); // ProUI - LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("No supporto"); // ProUI - LSTR MSG_PLEASE_PREHEAT = _UxGT("Prerisc. ugello."); // ProUI - - // Prusa MMU 2 - LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("SCELTA FILAMENTO"); - LSTR MSG_MMU2_MENU = _UxGT("MMU"); - LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("Agg.firmware MMU!"); - LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU chiede attenz."); - LSTR MSG_MMU2_RESUME = _UxGT("Riprendi"); - LSTR MSG_MMU2_RESUMING = _UxGT("Ripresa..."); - LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("Carica"); - LSTR MSG_MMU2_LOAD_ALL = _UxGT("Carica tutto"); - LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Carica fino ugello"); - LSTR MSG_MMU2_CUT_FILAMENT = _UxGT("Taglia"); - LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("Espelli"); - LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("Espelli ~"); - LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Scarica"); - LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Caric.fil. %i..."); - LSTR MSG_MMU2_CUTTING_FILAMENT = _UxGT("Taglia fil. %i..."); - LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Esplus.filam. ..."); - LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Scaric.filam. ..."); - LSTR MSG_MMU2_ALL = _UxGT("Tutto"); - LSTR MSG_MMU2_FILAMENT_N = _UxGT("Filamento ~"); - LSTR MSG_MMU2_RESET = _UxGT("Azzera MMU"); - LSTR MSG_MMU2_RESETTING = _UxGT("Azzeramento MMU..."); - LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Espelli, click"); - LSTR MSG_MMU2_REMOVE_AND_CLICK = _UxGT("Rimuovi e click..."); - - LSTR MSG_MMU_SENSITIVITY = _UxGT("Sensibilità"); - LSTR MSG_MMU_CUTTER = _UxGT("Taglierina"); - LSTR MSG_MMU_CUTTER_MODE = _UxGT("Modalità taglierina"); - LSTR MSG_MMU_CUTTER_MODE_DISABLE = _UxGT("Disabilita"); - LSTR MSG_MMU_CUTTER_MODE_ENABLE = _UxGT("Abilita"); - LSTR MSG_MMU_CUTTER_MODE_ALWAYS = _UxGT("Sempre"); - LSTR MSG_MMU_SPOOL_JOIN = _UxGT("Spool Join"); - - LSTR MSG_MMU_STATISTICS = _UxGT("Statistiche"); - LSTR MSG_MMU_RESET_FAIL_STATS = _UxGT("Azzera stat.fallimenti"); - LSTR MSG_MMU_RESET_STATS = _UxGT("Azzera tutte stat,"); - LSTR MSG_MMU_CURRENT_PRINT = _UxGT("Stampa attuale"); - LSTR MSG_MMU_CURRENT_PRINT_FAILURES = _UxGT("Fallimenti stampa attuale"); - LSTR MSG_MMU_LAST_PRINT = _UxGT("Ultima stampa"); - LSTR MSG_MMU_LAST_PRINT_FAILURES = _UxGT("Fallimenti ultima stampa"); - LSTR MSG_MMU_TOTAL = _UxGT("Totali"); - LSTR MSG_MMU_TOTAL_FAILURES = _UxGT("Fallimenti totali"); - LSTR MSG_MMU_DEV_INCREMENT_FAILS = _UxGT("Incrementa fallimenti"); - LSTR MSG_MMU_DEV_INCREMENT_LOAD_FAILS = _UxGT("Incrementa fallimenti caric."); - LSTR MSG_MMU_FAILS = _UxGT("MMU fallimenti"); - LSTR MSG_MMU_LOAD_FAILS = _UxGT("MMU caric. falliti"); - LSTR MSG_MMU_POWER_FAILS = _UxGT("MMU fallimenti potenza"); - LSTR MSG_MMU_MATERIAL_CHANGES = _UxGT("Cambi materiale"); - - // Mixing Extruder (e.g., Geeetech A10M / A20M) - LSTR MSG_MIX = _UxGT("Miscela"); - LSTR MSG_MIX_COMPONENT_N = _UxGT("Componente {"); - LSTR MSG_MIXER = _UxGT("Miscelatore"); - LSTR MSG_GRADIENT = _UxGT("Gradiente"); - LSTR MSG_FULL_GRADIENT = _UxGT("Gradiente pieno"); - LSTR MSG_TOGGLE_MIX = _UxGT("Alterna miscela"); - LSTR MSG_CYCLE_MIX = _UxGT("Ciclo miscela"); - LSTR MSG_GRADIENT_MIX = _UxGT("Miscela gradiente"); - LSTR MSG_REVERSE_GRADIENT = _UxGT("Inverti gradiente"); - LSTR MSG_ACTIVE_VTOOL = _UxGT("V-tool attivo"); - LSTR MSG_START_VTOOL = _UxGT("V-tool iniziale"); - LSTR MSG_END_VTOOL = _UxGT("V-tool finale"); - LSTR MSG_GRADIENT_ALIAS = _UxGT("V-tool alias"); - LSTR MSG_RESET_VTOOLS = _UxGT("Ripristina V-tools"); - LSTR MSG_COMMIT_VTOOL = _UxGT("Commit mix V-tool"); - LSTR MSG_VTOOLS_RESET = _UxGT("V-tools ripristin."); - LSTR MSG_START_Z = _UxGT("Z inizio:"); - LSTR MSG_END_Z = _UxGT("Z fine:"); - - LSTR MSG_GAMES = _UxGT("Giochi"); - LSTR MSG_BRICKOUT = _UxGT("Brickout"); - LSTR MSG_INVADERS = _UxGT("Invaders"); - LSTR MSG_SNAKE = _UxGT("Sn4k3"); - LSTR MSG_MAZE = _UxGT("Maze"); - - LSTR MSG_BAD_PAGE = _UxGT("Indice pag. errato"); - LSTR MSG_BAD_PAGE_SPEED = _UxGT("Vel. pag. errata"); - - LSTR MSG_EDIT_PASSWORD = _UxGT("Modif.password"); - LSTR MSG_LOGIN_REQUIRED = _UxGT("Login richiesto"); - LSTR MSG_PASSWORD_SETTINGS = _UxGT("Impostaz.password"); - LSTR MSG_ENTER_DIGIT = _UxGT("Inserisci cifra"); - LSTR MSG_CHANGE_PASSWORD = _UxGT("Imp./Modif.password"); - LSTR MSG_REMOVE_PASSWORD = _UxGT("Elimina password"); - LSTR MSG_PASSWORD_SET = _UxGT("La password è "); - LSTR MSG_START_OVER = _UxGT("Ricominciare"); - LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Ricordati di mem.!"); - LSTR MSG_PASSWORD_REMOVED = _UxGT("Password eliminata"); - - // - // Filament Change screens show up to 2 lines on a 3-line display - // - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Premi x continuare")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Attendere...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Inserisci e premi")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Riscalda ugello")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Riscaldamento...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Espulsione...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Caricamento...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Spurgo filamento")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Premi x terminare")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Ripresa...")); - - LSTR MSG_TMC_DRIVERS = _UxGT("Driver TMC"); - LSTR MSG_TMC_CURRENT = _UxGT("Corrente driver"); - LSTR MSG_TMC_ACURRENT = _UxGT("Corrente driver ") STR_A; - LSTR MSG_TMC_BCURRENT = _UxGT("Corrente driver ") STR_B; - LSTR MSG_TMC_CCURRENT = _UxGT("Corrente driver ") STR_C; - LSTR MSG_TMC_ECURRENT = _UxGT("Corrente driver E"); - LSTR MSG_TMC_HYBRID_THRS = _UxGT("Soglia modo ibrido"); - LSTR MSG_TMC_HOMING_THRS = _UxGT("Sensorless homing"); - LSTR MSG_TMC_STEPPING_MODE = _UxGT("Modo Stepping"); - LSTR MSG_TMC_STEALTHCHOP = _UxGT("StealthChop"); - LSTR MSG_TMC_HOMING_CURRENT = _UxGT("Corrente homing"); - - LSTR MSG_SERVICE_RESET = _UxGT("Resetta"); - LSTR MSG_SERVICE_IN = _UxGT(" tra:"); - LSTR MSG_BACKLASH = _UxGT("Gioco"); - LSTR MSG_BACKLASH_CORRECTION = _UxGT("Correzione"); - LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Appianamento"); - - LSTR MSG_FIXED_TIME_MOTION = _UxGT("Movim.Tempo-Fisso"); - LSTR MSG_FTM_CMPN_MODE = _UxGT("@ Modo Comp: $"); - LSTR MSG_FTM_AXIS_SYNC = _UxGT("Sinc. Asse"); - LSTR MSG_FTM_DYN_MODE = _UxGT("Modo DF: $"); - LSTR MSG_FTM_Z_BASED = _UxGT("Base-Z"); - LSTR MSG_FTM_MASS_BASED = _UxGT("Base-Massa"); - LSTR MSG_FTM_BASE_FREQ_N = _UxGT("@ Freq. base"); - LSTR MSG_FTM_DFREQ_K_N = _UxGT("@ Freq. dinam."); - LSTR MSG_FTM_ZETA_N = _UxGT("Smorzamento @"); - LSTR MSG_FTM_VTOL_N = _UxGT("Livello vib. @"); - LSTR MSG_FTM_SMOOTH_TIME_N = _UxGT("@ Tempo smorzamento"); - LSTR MSG_FTM_POLY6_OVERSHOOT = _UxGT("@ Overshoot Poly6"); - - LSTR MSG_FTM_RESONANCE_TEST = _UxGT("Test risonanza"); - LSTR MSG_FTM_RT_RUNNING = _UxGT("Test ris.in corso..."); - LSTR MSG_FTM_RT_START_N = _UxGT("Avvia Test Asse @"); - LSTR MSG_FTM_RT_STOP = _UxGT("Annulla Test"); - LSTR MSG_FTM_RETRIEVE_FREQ = _UxGT("Calc. Res. Freq."); - LSTR MSG_FTM_RESONANCE_FREQ = _UxGT("Freq.Risonanza"); - LSTR MSG_FTM_TIMELINE_FREQ = _UxGT("Cronologia (s)"); - - LSTR MSG_LEVEL_X_AXIS = _UxGT("Livello asse X"); - LSTR MSG_AUTO_CALIBRATE = _UxGT("Auto Calibra"); - LSTR MSG_FTDI_HEATER_TIMEOUT = _UxGT("Timeout inattività, temperatura diminuita. Premere OK per riscaldare e riprendere di nuovo."); - LSTR MSG_HEATER_TIMEOUT = _UxGT("Timeout riscaldatore"); - LSTR MSG_REHEAT = _UxGT("Riscalda"); - LSTR MSG_REHEATING = _UxGT("Riscaldando..."); - LSTR MSG_REHEATDONE = _UxGT("Riscaldato"); - - LSTR MSG_PROBE_WIZARD = _UxGT("Wizard Z offset"); - LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Altezza di riferimento sonda"); - LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Spostati in posizione di rilevazione"); - - LSTR MSG_XATC = _UxGT("Proc.guid.X-Twist"); - LSTR MSG_XATC_DONE = _UxGT("Proc.guid.X-Twist eseg.!"); - LSTR MSG_XATC_UPDATE_Z_OFFSET = _UxGT("Agg.Offset-Z sonda a "); - - LSTR MSG_SOUND = _UxGT("Suoni"); - - LSTR MSG_TOP_LEFT = _UxGT("Alto sinistra"); - LSTR MSG_BOTTOM_LEFT = _UxGT("Basso sinistra"); - LSTR MSG_TOP_RIGHT = _UxGT("Alto destra"); - LSTR MSG_BOTTOM_RIGHT = _UxGT("Basso destra"); - LSTR MSG_TOUCH_CALIBRATION = _UxGT("Calibrazione touch"); - LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Calibrazione completata"); - LSTR MSG_CALIBRATION_FAILED = _UxGT("Calibrazione fallita"); - - LSTR MSG_DRIVER_BACKWARD = _UxGT(" driver invertito"); - - LSTR MSG_SD_CARD = _UxGT("Scheda SD"); - LSTR MSG_USB_DISK = _UxGT("Disco USB"); - - LSTR MSG_HOST_SHUTDOWN = _UxGT("Arresta host"); - - // DGUS-Specific message strings, not used elsewhere - LSTR DGUS_MSG_NOT_WHILE_PRINTING = _UxGT("Non ammesso durante la stampa"); - LSTR DGUS_MSG_NOT_WHILE_IDLE = _UxGT("Non ammesso mentre è in riposo"); - LSTR DGUS_MSG_NO_FILE_SELECTED = _UxGT("Nessun file selezionato"); - LSTR DGUS_MSG_TEMP_TOO_LOW = _UxGT("Temperatura troppo bassa"); - LSTR DGUS_MSG_TEMP_TOO_HIGH = _UxGT("Temp.troppo alta."); - LSTR DGUS_MSG_EXECUTING_COMMAND = _UxGT("Esecuzione del comando..."); - LSTR DGUS_MSG_BED_PID_DISABLED = _UxGT("PID piatto disabilitato"); - LSTR DGUS_MSG_PID_DISABLED = _UxGT("PID disabilitato"); - LSTR DGUS_MSG_PID_AUTOTUNING = _UxGT("Calibrazione PID..."); - LSTR DGUS_MSG_INVALID_RECOVERY_DATA = _UxGT("Dati di recupero non validi"); - - LSTR DGUS_MSG_HOMING_REQUIRED = _UxGT("Azzeramento richiesto"); - LSTR DGUS_MSG_BUSY = _UxGT("Occupato"); - LSTR DGUS_MSG_HOMING = _UxGT("Azzeramento..."); - LSTR DGUS_MSG_FW_OUTDATED = _UxGT("Richiesto aggiornamento DWIN GUI/OS"); - LSTR DGUS_MSG_ABL_REQUIRED = _UxGT("Richiesto autolivellamento piatto"); - LSTR DGUS_MSG_PROBING_FAILED = _UxGT("Sondaggio fallito"); - LSTR DGUS_MSG_PROBING_SUCCESS = _UxGT("Sondaggio effettuato"); - LSTR DGUS_MSG_RESET_EEPROM = _UxGT("Reset EEPROM"); - LSTR DGUS_MSG_WRITE_EEPROM_FAILED = _UxGT("Scrittura EEPROM fallita"); - LSTR DGUS_MSG_READ_EEPROM_FAILED = _UxGT("Lettura EEPROM fallita"); - LSTR DGUS_MSG_FILAMENT_RUNOUT = _UxGT("Filament runout E%d"); - - // - // MMU3 Translatable Strings - // - - LSTR MSG_DESC_FINDA_DIDNT_TRIGGER = _UxGT("FINDA non si è attivato durante il caricamento del filamento. Assicurarsi che il filamento possa muoversi e che FINDA funzioni."); - LSTR MSG_DESC_FINDA_FILAMENT_STUCK = _UxGT("FINDA non si è disattivato durante lo scaricamento del filamento. Provare a scaricarlo manualmente. Assicurarsi che il filamento si muova e che FINDA funzioni."); - LSTR MSG_DESC_FSENSOR_DIDNT_TRIGGER = _UxGT("Il sensore del filamento non si è attivato durante il caricamento del filamento. Assicurarsi che il sensore sia calibrato e che il filamento lo abbia raggiunto."); - LSTR MSG_DESC_FSENSOR_FILAMENT_STUCK = _UxGT("Il sensore del filamento non si è disattivato durante lo scaricamento del filamento. Assicurarsi che il filamento possa muoversi e che il sensore funzioni."); - LSTR MSG_DESC_PULLEY_CANNOT_MOVE = _UxGT("Il motore della puleggia è bloccato. Assicurarsi che la puleggia possa muoversi e controllare il cablaggio."); - LSTR MSG_DESC_FSENSOR_TOO_EARLY = _UxGT("Il sensore del filamento si è attivato troppo presto durante il caricamento nell'estrusore. Verificare che non vi sia nulla incastrato nel tubo in PTFE. Verificare che il sensore legga correttamente."); - LSTR MSG_DESC_INSPECT_FINDA = _UxGT("Il selettore non si muove perché FINDA ha rilevato un filamento. Assicurarsi che non vi sia alcun filamento nel selettore e che FINDA funzioni correttamente."); - LSTR MSG_DESC_LOAD_TO_EXTRUDER_FAILED = _UxGT("Caricamento nell'estrusore non riuscito. Ispezionare la forma della punta del filamento. Se necessario, perfezionare la calibrazione del sensore."); - LSTR MSG_DESC_SELECTOR_CANNOT_HOME = _UxGT("Il selettore non riesce a tornare correttamente in posizione iniziale. Verificare che non vi siano ostacoli al suo movimento."); - LSTR MSG_DESC_CANNOT_MOVE = _UxGT("Impossibile spostare il selettore o il tendicinghia."); - LSTR MSG_DESC_IDLER_CANNOT_HOME = _UxGT("Il tendicinghi non riesce a tornare correttamente in posizione iniziale. Controllare che non ci siano ostacoli al suo movimento."); - LSTR MSG_DESC_TMC = _UxGT("Maggiori dettagli online."); - LSTR MSG_DESC_MMU_NOT_RESPONDING = _UxGT("La MMU non risponde. Controllare il cablaggio e i connettori."); - LSTR MSG_DESC_COMMUNICATION_ERROR = _UxGT("La MMU non risponde correttamente. Controllare il cablaggio e i connettori."); - LSTR MSG_DESC_FILAMENT_ALREADY_LOADED = _UxGT("Impossibile eseguire l'azione, il filamento è già caricato. Scaricarlo prima."); - LSTR MSG_DESC_INVALID_TOOL = _UxGT("L'utensile per il filamento richiesto non è disponibile su questo hardware. Controllare il codice G per verificare per l'indice non compreso nell'intervallo (T0-T4)."); - LSTR MSG_DESC_QUEUE_FULL = _UxGT("Errore interno del firmware MMU, resetrtare la MMU."); - LSTR MSG_DESC_FW_RUNTIME_ERROR = _UxGT("Errore di runtime interno. Provare a reimpostare la MMU o ad aggiornare il firmware."); - LSTR MSG_DESC_UNLOAD_MANUALLY = _UxGT("Filamento rilevato in modo imprevisto. Assicurarsi che non vi sia alcun filamento caricato. Controllare il sensore ed il cablaggio."); - LSTR MSG_DESC_FILAMENT_EJECTED = _UxGT("Rimuovere il filamento espulso dalla parte anteriore della MMU."); - LSTR MSG_DESC_FILAMENT_CHANGE = _UxGT("Sostituzione del filamento M600. Carica un nuovo filamento o espelli quello vecchio."); - LSTR MSG_DESC_UNKNOWN_ERROR = _UxGT("Si è verificato un errore imprevisto."); - - LSTR MSG_DESC_FW_UPDATE_NEEDED = _UxGT("LA versione di FW della MMU non è supportato. Aggiornare alla versione " MMU_VERSION "."); - - LSTR MSG_BTN_RETRY = _UxGT("Riprova"); - LSTR MSG_BTN_RESET_MMU = _UxGT("Resetta MMU"); - LSTR MSG_BTN_UNLOAD = _UxGT("Scarica"); - LSTR MSG_BTN_LOAD = _UxGT("Carica"); - LSTR MSG_BTN_EJECT = _UxGT("Espelli"); - LSTR MSG_BTN_STOP = _UxGT("Stop"); - LSTR MSG_BTN_DISABLE_MMU = _UxGT("Disabilita"); - LSTR MSG_BTN_MORE = _UxGT("Più info"); - - // Prusa MMU - LSTR MSG_DONE = _UxGT("Eseguito"); - LSTR MSG_FINISHING_MOVEMENTS = _UxGT("Termina movimenti"); - LSTR MSG_LOADING_FILAMENT = _UxGT("Carica. filamento"); - LSTR MSG_UNLOADING_FILAMENT = _UxGT("Scarico filamento"); - LSTR MSG_TESTING_FILAMENT = _UxGT("Testando filamento"); - LSTR MSG_EJECT_FROM_MMU = _UxGT("Espelli da MMU"); - LSTR MSG_CUT_FILAMENT = _UxGT("Taglia filamento"); - LSTR MSG_OFF = _UxGT("Off"); - LSTR MSG_ON = _UxGT("On"); - LSTR MSG_PROGRESS_OK = _UxGT("OK"); - LSTR MSG_PROGRESS_ENGAGE_IDLER = _UxGT("Innesto idler"); - LSTR MSG_PROGRESS_DISENGAGE_IDLER = _UxGT("Disinnesto idler"); - LSTR MSG_PROGRESS_UNLOAD_FINDA = _UxGT("Scarico a FINDA"); - LSTR MSG_PROGRESS_UNLOAD_PULLEY = _UxGT("Scarico a puleggia"); - LSTR MSG_PROGRESS_FEED_FINDA = _UxGT("Alim. a FINDA"); - LSTR MSG_PROGRESS_FEED_EXTRUDER = _UxGT("Alim. all'estrusore"); - LSTR MSG_PROGRESS_FEED_NOZZLE = _UxGT("Alim. all'ugello"); - LSTR MSG_PROGRESS_AVOID_GRIND = _UxGT("Evita grind"); - LSTR MSG_PROGRESS_WAIT_USER = _UxGT("ERR attesa utente"); - LSTR MSG_PROGRESS_ERR_INTERNAL = _UxGT("ERR interno"); - LSTR MSG_PROGRESS_ERR_HELP_FIL = _UxGT("ERR aiuto filamento"); - LSTR MSG_PROGRESS_ERR_TMC = _UxGT("ERR anomalia TMC"); - LSTR MSG_PROGRESS_SELECT_SLOT = _UxGT("Selez.slot filam."); - LSTR MSG_PROGRESS_PREPARE_BLADE = _UxGT("Preparaz.lama"); - LSTR MSG_PROGRESS_PUSH_FILAMENT = _UxGT("Spinta fialmento"); - LSTR MSG_PROGRESS_PERFORM_CUT = _UxGT("Esecuzione taglio"); - LSTR MSG_PROGRESSPSTRETURN_SELECTOR = _UxGT("Ritorno selettore"); - LSTR MSG_PROGRESS_PARK_SELECTOR = _UxGT("Parcheggio selettore"); - LSTR MSG_PROGRESS_EJECT_FILAMENT = _UxGT("Esplusione filamento"); - LSTR MSG_PROGRESSPSTRETRACT_FINDA = _UxGT("Ritrai a FINDA"); - LSTR MSG_PROGRESS_HOMING = _UxGT("Homing"); - LSTR MSG_PROGRESS_MOVING_SELECTOR = _UxGT("Movim. selettore"); - LSTR MSG_PROGRESS_FEED_FSENSOR = _UxGT("Alim. a FSensor"); + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" pronta."); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = MEDIA_TYPE_IT _UxGT(" inserita"); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = MEDIA_TYPE_IT _UxGT(" rimossa"); // (MEDIA_TYPE_EN) Removed + LSTR MSG_LCD_ENDSTOPS = _UxGT("Finecor."); // Endstops + LSTR MSG_MAIN_MENU = _UxGT("Menu principale"); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("Disabilita motori"); // Disable Steppers + LSTR MSG_HOMING = _UxGT("Azzeramento"); // Homing + LSTR MSG_AUTO_HOME = _UxGT("Auto home"); // Auto Home + LSTR MSG_AUTO_HOME_X = _UxGT("Azzera X"); // Home X + LSTR MSG_AUTO_HOME_Y = _UxGT("Azzera Y"); // Home Y + LSTR MSG_AUTO_HOME_Z = _UxGT("Azzera Z"); // Home Z + LSTR MSG_LEVEL_BED_HOMING = _UxGT("Home assi XYZ"); // Homing XYZ + LSTR MSG_LEVEL_BED_WAITING = _UxGT("Premi per iniziare"); // Click to Begin + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Punto successivo"); // Next Point + LSTR MSG_LEVEL_BED_DONE = _UxGT("Livel. terminato!"); // Leveling Done! + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Imp. offset home"); // Set Home Offsets + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Offset applicato"); // Offsets Applied + LSTR MSG_PREHEAT_1 = _UxGT("Preriscalda ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = _UxGT("Preriscalda ") PREHEAT_1_LABEL " ~"; // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" ugello"); // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" ugello ~"); // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_1_ALL = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" tutto"); // Preheat (PREHEAT_1_LABEL) All + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" piatto"); // Preheat (PREHEAT_1_LABEL) Bed + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Preris.") PREHEAT_1_LABEL _UxGT(" conf"); // Preheat (PREHEAT_1_LABEL) Conf + LSTR MSG_PREHEAT_M = _UxGT("Preriscalda $"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("Preriscalda $ ~"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("Preris.ugello $"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("Preris.ugello ~ $"); // Preheat $ End ~ + LSTR MSG_PREHEAT_M_ALL = _UxGT("Preris.tutto $"); // Preheat $ All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Preris.piatto $"); // Preheat $ Bed + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Preris.conf $"); // Preheat $ Conf + LSTR MSG_COOLDOWN = _UxGT("Raffredda"); // Cooldown + LSTR MSG_SWITCH_PS_ON = _UxGT("Accendi aliment."); // Switch Power On + LSTR MSG_SWITCH_PS_OFF = _UxGT("Spegni aliment."); // Switch Power Off + LSTR MSG_EXTRUDE = _UxGT("Estrudi"); // Extrude + LSTR MSG_RETRACT = _UxGT("Ritrai"); // Retract + LSTR MSG_MOVE_AXIS = _UxGT("Muovi asse"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("Sonda e livella"); // Probe and Level + LSTR MSG_BED_LEVELING = _UxGT("Livellamento piatto"); // Bed Leveling + LSTR MSG_LEVEL_BED = _UxGT("Livella piatto"); // Level Bed + LSTR MSG_MOVE_X = _UxGT("Muovi X"); // Move X + LSTR MSG_MOVE_Y = _UxGT("Muovi Y"); // Move Y + LSTR MSG_MOVE_Z = _UxGT("Muovi Z"); // Move Z + LSTR MSG_MOVE_N = _UxGT("Muovi @"); // Move @ + LSTR MSG_MOVE_E = _UxGT("Estrusore"); // Move Extruder + LSTR MSG_MOVE_EN = _UxGT("Estrusore *"); // Move * + LSTR MSG_MOVE_N_MM = _UxGT("Muovi di $mm"); // Move $mm + LSTR MSG_MOVE_N_IN = _UxGT("Muovi di $in"); // Move $in + LSTR MSG_MOVE_N_DEG = _UxGT("Muovi di $") LCD_STR_DEGREE; // Move $(LCD_STR_DEGREE) + LSTR MSG_SPEED = _UxGT("Velocità"); // Speed + LSTR MSG_MESH_Z_OFFSET = _UxGT("Piatto Z"); // Bed Z + LSTR MSG_NOZZLE = _UxGT("Ugello"); // Nozzle + LSTR MSG_NOZZLE_N = _UxGT("Ugello ~"); // Nozzle ~ + LSTR MSG_BED = _UxGT("Piatto"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("Vel. ventola"); // Fan Speed + LSTR MSG_FAN_SPEED_N = _UxGT("Vel. ventola ~"); // Fan Speed ~ + LSTR MSG_FLOW = _UxGT("Flusso"); // Flow + LSTR MSG_FLOW_N = _UxGT("Flusso ~"); // Flow ~ + LSTR MSG_CONTROL = _UxGT("Controllo"); // Control + LSTR MSG_AUTOTEMP = _UxGT("Autotemp"); // Autotemp + LSTR MSG_SELECT_E = _UxGT("Seleziona *"); // Select * + LSTR MSG_ACC = _UxGT("Accel"); // Accel + LSTR MSG_VTRAV_MIN = _UxGT("Vel.min spostam."); // Min Travel Speed + LSTR MSG_ACCELERATION = _UxGT("Accelerazione"); // Acceleration + LSTR MSG_AMAX_A = _UxGT("Acc.massima ") STR_A; // Max (STR_A) Accel + LSTR MSG_AMAX_B = _UxGT("Acc.massima ") STR_B; // Max (STR_B) Accel + LSTR MSG_AMAX_C = _UxGT("Acc.massima ") STR_C; // Max (STR_C) Accel + LSTR MSG_AMAX_N = _UxGT("Acc.massima @"); // Max @ Accel + LSTR MSG_AMAX_E = _UxGT("Acc.massima E"); // Max E Accel + LSTR MSG_AMAX_EN = _UxGT("Acc.massima *"); // Max * Accel + LSTR MSG_A_RETRACT = _UxGT("A-Ritrazione"); // Retract Accel + LSTR MSG_A_TRAVEL = _UxGT("A-Spostamento"); // Travel Accel + LSTR MSG_STEPS_PER_MM = _UxGT("Passi/mm"); // Steps/mm + LSTR MSG_A_STEPS = STR_A _UxGT(" passi/mm"); // (STR_A) Steps/mm + LSTR MSG_B_STEPS = STR_B _UxGT(" passi/mm"); // (STR_B) Steps/mm + LSTR MSG_C_STEPS = STR_C _UxGT(" passi/mm"); // (STR_C) Steps/mm + LSTR MSG_N_STEPS = _UxGT("@ passi/mm"); // @ steps/mm + LSTR MSG_E_STEPS = _UxGT("E passi/mm"); // E steps/mm + LSTR MSG_EN_STEPS = _UxGT("* passi/mm"); // * Steps/mm + LSTR MSG_TEMPERATURE = _UxGT("Temperatura"); // Temperature + LSTR MSG_MOTION = _UxGT("Movimento"); // Motion + LSTR MSG_FILAMENT = _UxGT("Filamento"); // Filament + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm") SUPERSCRIPT_THREE; // E in mm(SUPERSCRIPT_THREE) + LSTR MSG_FILAMENT_DIAM = _UxGT("Diam. filo"); // Fil. Dia. + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Diam. filo *"); // Fil. Dia. * + LSTR MSG_CONTRAST = _UxGT("Contrasto LCD"); // LCD Contrast + LSTR MSG_STORE_EEPROM = _UxGT("Salva impostazioni"); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("Carica impostazioni"); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("Ripristina imp."); // Restore Defaults + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Aggiorna"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT("Schermata info"); // Info Screen + LSTR MSG_PREPARE = _UxGT("Prepara"); // Prepare + LSTR MSG_TUNE = _UxGT("Regola"); // Tune + LSTR MSG_PAUSE_PRINT = _UxGT("Pausa stampa"); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("Riprendi stampa"); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("Arresta stampa"); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("Stampa da ") MEDIA_TYPE_IT; // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = MEDIA_TYPE_IT _UxGT(" non rilevato"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_DWELL = _UxGT("Sospensione..."); // Sleep... + LSTR MSG_USERWAIT = _UxGT("Premi tasto.."); // Click to Resume... + LSTR MSG_PRINT_ABORTED = _UxGT("Stampa annullata"); // Print Aborted + LSTR MSG_NO_MOVE = _UxGT("Nessun movimento"); // No Move. + LSTR MSG_KILLED = _UxGT("UCCISO. "); // KILLED. + LSTR MSG_STOPPED = _UxGT("ARRESTATO. "); // STOPPED. + LSTR MSG_CONTROL_RETRACT = _UxGT("Ritrai mm"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Scamb. ritrai mm"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACTF = _UxGT("Ritrai V"); // Retract V + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Salta mm"); // Hop mm + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Avanza mm"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Scamb. Avanza mm"); // S Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Avanza V"); // Unretract V + LSTR MSG_AUTORETRACT = _UxGT("AutoRitrai"); // Auto-Retract + LSTR MSG_FILAMENTCHANGE = _UxGT("Cambia filamento"); // Change Filament + LSTR MSG_FILAMENTCHANGE_E = _UxGT("Cambia filam. *"); // Change * Filament + LSTR MSG_ATTACH_MEDIA = _UxGT("Collega ") MEDIA_TYPE_IT; // Attach (MEDIA_TYPE_EN) + LSTR MSG_ATTACH_SD = _UxGT("Collega scheda SD"); // Attach SD Card + LSTR MSG_ATTACH_USB = _UxGT("Collega unità USB"); // Attach USB Drive + LSTR MSG_CHANGE_MEDIA = _UxGT("Selez.") MEDIA_TYPE_IT; // Refresh (MEDIA_TYPE_EN) + LSTR MSG_RUN_AUTOFILES = _UxGT("Esegui Autofiles"); // Run Autofiles + LSTR MSG_ZPROBE_OUT = _UxGT("Z probe fuori piatto"); // Z Probe Past Bed + LSTR MSG_BLTOUCH_RESET = _UxGT("Resetta BLTouch"); // Reset + LSTR MSG_ZPROBE_XOFFSET = _UxGT("Offset X sonda"); // Probe X Offset + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Offset Y sonda"); // Probe Y Offset + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Offset Z sonda"); // Probe Z Offset + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Offset @ sonda"); // Probe @ Offset + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Babystep sonda Z"); // Babystep Probe Z + LSTR MSG_BABYSTEP_X = _UxGT("Babystep X"); // Babystep X + LSTR MSG_BABYSTEP_Y = _UxGT("Babystep Y"); // Babystep Y + LSTR MSG_BABYSTEP_Z = _UxGT("Babystep Z"); // Babystep Z + LSTR MSG_BABYSTEP_N = _UxGT("Babystep @"); // Babystep @ + LSTR MSG_ENDSTOP_ABORT = _UxGT("Interrompi se FC"); // Endstop Abort + LSTR MSG_ERR_HEATING_FAILED = _UxGT("Risc.fallito"); // Heating Failed + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Err: TEMP RIDONDANTE"); // Err: REDUNDANT TEMP + LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("TEMP FUORI CONTROLLO"); // THERMAL RUNAWAY + LSTR MSG_ERR_MAXTEMP = _UxGT("Err: TEMP MASSIMA"); // Err: MAXTEMP + LSTR MSG_ERR_MINTEMP = _UxGT("Err: TEMP MINIMA"); // Err: MINTEMP + LSTR MSG_HALTED = _UxGT("STAMPANTE FERMATA"); // PRINTER HALTED + LSTR MSG_PLEASE_RESET = _UxGT("Riavviare prego"); // Please Reset + LSTR MSG_HEATING = _UxGT("Riscaldamento..."); // Heating... + LSTR MSG_BED_HEATING = _UxGT("Risc. piatto..."); // Bed Heating... + LSTR MSG_DELTA_CALIBRATE = _UxGT("Calibraz. Delta"); // Delta Calibration + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Calibra X"); // Calibrate X + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Calibra Y"); // Calibrate Y + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Calibra Z"); // Calibrate Z + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibra centro"); // Calibrate Center + LSTR MSG_INFO_MENU = _UxGT("Info su stampante"); // About Printer + LSTR MSG_INFO_PRINTER_MENU = _UxGT("Info. stampante"); // Printer Info + LSTR MSG_INFO_STATS_MENU = _UxGT("Statistiche"); // Stats + LSTR MSG_INFO_BOARD_MENU = _UxGT("Info. scheda"); // Board Info + LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Termistori"); // Thermistors + LSTR MSG_INFO_EXTRUDERS = _UxGT("Estrusori"); // Extruders + LSTR MSG_INFO_BAUDRATE = _UxGT("Baud"); // Baud + LSTR MSG_INFO_PROTOCOL = _UxGT("Protocollo"); // Protocol + LSTR MSG_CASE_LIGHT = _UxGT("Luci case"); // Case Light + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Stampe"); // Prints + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completate"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Durata"); // Total + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Più lungo"); // Longest + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Estruso"); // Extruded + LSTR MSG_INFO_MIN_TEMP = _UxGT("Temp min"); // Min Temp + LSTR MSG_INFO_MAX_TEMP = _UxGT("Temp max"); // Max Temp + LSTR MSG_INFO_PSU = _UxGT("Alimentatore"); // PSU + LSTR MSG_DRIVE_STRENGTH = _UxGT("Potenza drive"); // Drive Strength + LSTR MSG_DAC_EEPROM_WRITE = _UxGT("Scrivi DAC EEPROM"); // DAC EEPROM Write + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Riprendi stampa"); // Continue + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Attendere...")); // |Please wait... + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Inserisci e premi")); // |Insert and Click + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Espulsione...")); // |Ejecting... + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Caricamento...")); // |Loading... + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Ripresa...")); // |Resuming... + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); // (LCD_STR_THERMOMETER) Min + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); // (LCD_STR_THERMOMETER) Max + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fact"); // (LCD_STR_THERMOMETER) Fact + LSTR MSG_LCD_ON = _UxGT("On"); // On + LSTR MSG_LCD_OFF = _UxGT("Off"); // Off + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("STAMPANTE ERRATA"); // INCORRECT PRINTER + LSTR MSG_DEBUG_MENU = _UxGT("Menu di debug"); // Debug Menu + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Test barra avanzam."); // Progress Bar Test + LSTR MSG_MOVING = _UxGT("In movimento..."); // Moving... + LSTR MSG_FREE_XY = _UxGT("XY liberi"); // Free XY + LSTR MSG_HOME_FIRST = _UxGT("Home %s prima"); // Home %s First + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Riscaldamento...")); // |Heating... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Riscalda ugello")); // |Click to heat + LSTR MSG_YES = _UxGT("Si"); // YES + LSTR MSG_NO = _UxGT("No"); // NO + LSTR MSG_BACK = _UxGT("Indietro"); // Back + LSTR MSG_MEDIA_ABORTING = _UxGT("Annullando..."); // Aborting... + LSTR MSG_MEDIA_READ_ERROR = _UxGT("Err.leggendo ") MEDIA_TYPE_IT; // (MEDIA_TYPE_EN) read error + LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("Unità USB rimossa"); // USB device removed + LSTR MSG_USB_FD_USB_FAILED = _UxGT("Iniz. USB fallita"); // USB start failed + LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Finecorsa soft"); // Soft Endstops + LSTR MSG_ADVANCED_SETTINGS = _UxGT("Impostaz. avanzate"); // Advanced Settings + LSTR MSG_CONFIGURATION = _UxGT("Configurazione"); // Configuration + LSTR MSG_AUTO_Z_ALIGN = _UxGT("Allineam.automat. Z"); // Auto Z-Align + LSTR MSG_Z_FADE_HEIGHT = _UxGT("Dissolvi altezza"); // Fade Height + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Prerisc.personal."); // Preheat Custom + LSTR MSG_LASER_MENU = _UxGT("Controllo laser"); // Laser Control + LSTR MSG_LASER_POWER = _UxGT("Potenza laser"); // Laser Power + LSTR MSG_SPINDLE_MENU = _UxGT("Controllo mandrino"); // Spindle Control + LSTR MSG_SPINDLE_POWER = _UxGT("Potenza mandrino"); // Spindle Pwr + LSTR MSG_SPINDLE_REVERSE = _UxGT("Inverti mandrino"); // Spindle Reverse + LSTR MSG_BED_TRAMMING = _UxGT("Tarat.fine piatto"); // Bed Tramming + LSTR MSG_NEXT_CORNER = _UxGT("Prossimo punto"); // Next Corner + LSTR MSG_MESH_EDITOR = _UxGT("Editor mesh"); // Mesh Editor + LSTR MSG_EDIT_MESH = _UxGT("Modifica mesh"); // Edit Mesh + LSTR MSG_EDITING_STOPPED = _UxGT("Modif. mesh fermata"); // Mesh Editing Stopped + LSTR MSG_PROBING_POINT = _UxGT("Punto sondato"); // Probing Point + LSTR MSG_MESH_X = _UxGT("Indice X"); // Index X + LSTR MSG_MESH_Y = _UxGT("Indice Y"); // Index Y + LSTR MSG_MESH_EDIT_Z = _UxGT("Valore di Z"); // Z Value + LSTR MSG_CUSTOM_COMMANDS = _UxGT("Comandi personaliz."); // Custom Commands + LSTR MSG_M48_TEST = _UxGT("Test sonda M48"); // M48 Probe Test + LSTR MSG_M48_POINT = _UxGT("Punto M48"); // M48 Point + LSTR MSG_M48_DEVIATION = _UxGT("Deviazione"); // Deviation + LSTR MSG_IDEX_MENU = _UxGT("Modo IDEX"); // IDEX Mode + LSTR MSG_OFFSETS_MENU = _UxGT("Strumenti offsets"); // Tool Offsets + LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-Park"); // Auto-Park + LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplicazione"); // Duplication + LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Copia speculare"); // Mirrored Copy + LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Pieno controllo"); // Full Control + LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2° ugello Z"); // 2nd Nozzle Z + LSTR MSG_HOTEND_OFFSET_N = _UxGT("2° ugello @"); // 2nd Nozzle @ + LSTR MSG_UBL_DOING_G29 = _UxGT("G29 in corso"); // Doing G29 + LSTR MSG_UBL_TOOLS = _UxGT("Strumenti UBL"); // UBL Tools + LSTR MSG_LCD_TILTING_MESH = _UxGT("Punto inclinaz."); // Tilting Point + LSTR MSG_UBL_MANUAL_MESH = _UxGT("Mesh manuale"); // Manually Build Mesh + LSTR MSG_UBL_BC_INSERT = _UxGT("Metti spes. e misura"); // Place Shim & Measure + LSTR MSG_UBL_BC_INSERT2 = _UxGT("Misura"); // Measure + LSTR MSG_UBL_BC_REMOVE = _UxGT("Rimuovi e mis.piatto"); // Remove & Measure Bed + LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Spostamento succes."); // Moving to next + LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Temp. piatto"); // Bed Temp + LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Temp. piatto"); // Bed Temp + LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Temp. ugello"); // Hotend Temp + LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Temp. ugello"); // Hotend Temp + LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Modif.mesh personal."); // Edit Custom Mesh + LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Ritocca mesh"); // Fine Tuning Mesh + LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Modif.mesh fatta"); // Done Editing Mesh + LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Crea mesh personal."); // Build Custom Mesh + LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Crea mesh"); // Build Mesh + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Crea mesh ($)"); // Build Mesh ($) + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Valida mesh ($)"); // Validate Mesh ($) + LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Crea mesh a freddo"); // Build Cold Mesh + LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Aggiusta alt. mesh"); // Adjust Mesh Height + LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Altezza"); // Height Amount + LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Valida mesh"); // Validate Mesh + LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Valida mesh pers."); // Validate Custom Mesh + LSTR MSG_G26_HEATING_BED = _UxGT("G26 riscald.piatto"); // G26 Heating Bed + LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 riscald.ugello"); // G26 Heating Nozzle + LSTR MSG_G26_MANUAL_PRIME = _UxGT("Priming manuale..."); // Manual priming... + LSTR MSG_G26_FIXED_LENGTH = _UxGT("Prime a lung.fissa"); // Fixed Length Prime + LSTR MSG_G26_PRIME_DONE = _UxGT("Priming terminato"); // Done Priming + LSTR MSG_G26_CANCELED = _UxGT("G26 annullato"); // G26 Canceled + LSTR MSG_G26_LEAVING = _UxGT("Uscita da G26"); // Leaving G26 + LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Continua mesh"); // Continue Bed Mesh + LSTR MSG_UBL_MESH_LEVELING = _UxGT("Livell. mesh"); // Mesh Leveling + LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("Livell. 3 Punti"); // 3-Point Leveling + LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Livell. griglia mesh"); // Grid Mesh Leveling + LSTR MSG_UBL_MESH_LEVEL = _UxGT("Livella mesh"); // Level Mesh + LSTR MSG_UBL_SIDE_POINTS = _UxGT("Punti laterali"); // Side Points + LSTR MSG_UBL_MAP_TYPE = _UxGT("Tipo di mappa"); // Map Type + LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Esporta mappa"); // Output Mesh Map + LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Esporta per host"); // Output for Host + LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Esporta in CSV"); // Output for CSV + LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Backup esterno"); // Off Printer Backup + LSTR MSG_UBL_INFO_UBL = _UxGT("Esporta info UBL"); // Output UBL Info + LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Riempimento"); // Fill-in Amount + LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Riempimento manuale"); // Manual Fill-in + LSTR MSG_UBL_SMART_FILLIN = _UxGT("Riempimento smart"); // Smart Fill-in + LSTR MSG_UBL_FILLIN_MESH = _UxGT("Riempimento mesh"); // Fill-in Mesh + LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Invalida tutto"); // Invalidate All + LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Invalid.punto vicino"); // Invalidate Closest + LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Ritocca tutto"); // Fine Tune All + LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Ritocca punto vicino"); // Fine Tune Closest + LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Mesh salvate"); // Mesh Storage + LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Slot di memoria"); // Memory Slot + LSTR MSG_UBL_LOAD_MESH = _UxGT("Carica mesh piatto"); // Load Bed Mesh + LSTR MSG_UBL_SAVE_MESH = _UxGT("Salva mesh piatto"); // Save Bed Mesh + LSTR MSG_MESH_LOADED = _UxGT("Mesh %i caricata"); // Mesh %i Loaded + LSTR MSG_MESH_SAVED = _UxGT("Mesh %i salvata"); // Mesh %i Saved + LSTR MSG_UBL_NO_STORAGE = _UxGT("Nessuna memoria"); // No Storage + LSTR MSG_UBL_SAVE_ERROR = _UxGT("Err: Salvataggio UBL"); // UBL Save Error + LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Err: Ripristino UBL"); // UBL Restore Error + LSTR MSG_UBL_Z_OFFSET = _UxGT("Z-Offset: "); // Z-Offset: + LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Z-Offset fermato"); // Z-Offset Stopped + LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("UBL passo passo"); // Step-By-Step UBL + LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Crea mesh a freddo"); // 1. Build Cold Mesh + LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2.Riempimento smart"); // 2. Smart Fill-in + LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Valida mesh"); // 3. Validate Mesh + LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Ritocca all"); // 4. Fine Tune All + LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Valida mesh"); // 5. Validate Mesh + LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Ritocca all"); // 6. Fine Tune All + LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Salva mesh piatto"); // 7. Save Bed Mesh + LSTR MSG_LED_CONTROL = _UxGT("Controllo LED"); // LED Control + LSTR MSG_LIGHTS = _UxGT("Luci"); // Lights + LSTR MSG_LIGHT_N = _UxGT("Luce #{"); // Light #{ + LSTR MSG_LED_PRESETS = _UxGT("Presets luce"); // Light Presets + LSTR MSG_SET_LEDS_RED = _UxGT("Rosso"); // Red + LSTR MSG_SET_LEDS_ORANGE = _UxGT("Arancione"); // Orange + LSTR MSG_SET_LEDS_YELLOW = _UxGT("Giallo"); // Yellow + LSTR MSG_SET_LEDS_GREEN = _UxGT("Verde"); // Green + LSTR MSG_SET_LEDS_BLUE = _UxGT("Blu"); // Blue + LSTR MSG_SET_LEDS_INDIGO = _UxGT("Indaco"); // Indigo + LSTR MSG_SET_LEDS_VIOLET = _UxGT("Viola"); // Violet + LSTR MSG_SET_LEDS_WHITE = _UxGT("Bianco"); // White + LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Predefinito"); // Default + LSTR MSG_CUSTOM_LEDS = _UxGT("Luci personalizzate"); // Custom Lights + LSTR MSG_INTENSITY_R = _UxGT("Intensità rosso"); // Red Intensity + LSTR MSG_INTENSITY_G = _UxGT("Intensità verde"); // Green Intensity + LSTR MSG_INTENSITY_B = _UxGT("Intensità blu"); // Blue Intensity + LSTR MSG_INTENSITY_W = _UxGT("Intensità bianco"); // White Intensity + LSTR MSG_LED_BRIGHTNESS = _UxGT("Luminosità"); // Brightness + LSTR MSG_HOTEND_TOO_COLD = _UxGT("Ugello freddo"); // Hotend too cold + LSTR MSG_CHAMBER = _UxGT("Camera"); // Enclosure + LSTR MSG_STORED_FAN_N = _UxGT("Ventola mem. ~"); // Stored Fan ~ + LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Extra vel.vent."); // Extra Fan Speed + LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Extra v.vent. ~"); // Extra Fan Speed ~ + LSTR MSG_PID_AUTOTUNE = _UxGT("Calibrazione PID"); // PID Autotune + LSTR MSG_PID_AUTOTUNE_E = _UxGT("Calib.PID *"); // Autotune * PID + LSTR MSG_JERK = _UxGT("Jerk"); // Jerk + LSTR MSG_VA_JERK = _UxGT("Max jerk ") STR_A; // Max (STR_A) Jerk + LSTR MSG_VB_JERK = _UxGT("Max jerk ") STR_B; // Max (STR_B) Jerk + LSTR MSG_VC_JERK = _UxGT("Max jerk ") STR_C; // Max (STR_C) Jerk + LSTR MSG_VN_JERK = _UxGT("Max jerk @"); // Max @ Jerk + LSTR MSG_VE_JERK = _UxGT("Max jerk E"); // Max E Jerk + LSTR MSG_JUNCTION_DEVIATION = _UxGT("Deviaz. giunzioni"); // Junction Dev + LSTR MSG_MAX_SPEED = _UxGT("Vel.massima (mm/s)"); // Max Speed (mm/s) + LSTR MSG_VMAX_A = _UxGT("Vel.massima ") STR_A; // Max (STR_A) Speed + LSTR MSG_VMAX_B = _UxGT("Vel.massima ") STR_B; // Max (STR_B) Speed + LSTR MSG_VMAX_C = _UxGT("Vel.massima ") STR_C; // Max (STR_C) Speed + LSTR MSG_VMAX_N = _UxGT("Vel.massima @"); // Max @ Speed + LSTR MSG_VMAX_E = _UxGT("Vel.massima E"); // Max E Speed + LSTR MSG_VMAX_EN = _UxGT("Vel.massima *"); // Max * Speed + LSTR MSG_VMIN = _UxGT("Vel.minima"); // Min Velocity + LSTR MSG_FILAMENT_UNLOAD = _UxGT("Rimuovi mm"); // Unload mm + LSTR MSG_FILAMENT_LOAD = _UxGT("Carica mm"); // Load mm + LSTR MSG_ADVANCE_K = _UxGT("K advance"); // Advance K + LSTR MSG_ADVANCE_K_E = _UxGT("K advance *"); // Advance K * + LSTR MSG_INIT_EEPROM = _UxGT("Inizializza EEPROM"); // Initialize EEPROM + LSTR MSG_MEDIA_UPDATE = _UxGT("Aggiorna ") MEDIA_TYPE_IT; // (MEDIA_TYPE_EN) Update + LSTR MSG_RESET_PRINTER = _UxGT("Resetta stampante"); // Reset Printer + LSTR MSG_START_PRINT = _UxGT("Avvia stampa"); // Start Print + LSTR MSG_BUTTON_NEXT = _UxGT("Prossimo"); // Next + LSTR MSG_BUTTON_INIT = _UxGT("Inizializza"); // Init + LSTR MSG_BUTTON_STOP = _UxGT("Stop"); // Stop + LSTR MSG_BUTTON_PRINT = _UxGT("Stampa"); // Print + LSTR MSG_BUTTON_RESET = _UxGT("Resetta"); // Reset + LSTR MSG_BUTTON_CANCEL = _UxGT("Annulla"); // Cancel + LSTR MSG_BUTTON_DONE = _UxGT("Fatto"); // Done + LSTR MSG_BUTTON_BACK = _UxGT("Indietro"); // Back + LSTR MSG_BUTTON_PROCEED = _UxGT("Procedi"); // Proceed + LSTR MSG_PRINTING_OBJECT = _UxGT("Stampa oggetto"); // Print Obj + LSTR MSG_CANCEL_OBJECT = _UxGT("Cancella oggetto"); // Cancel Obj + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Canc. oggetto {"); // Cancel Obj { + LSTR MSG_OUTAGE_RECOVERY = _UxGT("Ripresa da interruz."); // Power Outage + LSTR MSG_PRINT_PAUSED = _UxGT("Stampa sospesa"); // Print Paused + LSTR MSG_PRINTING = _UxGT("Stampa..."); // Printing... + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("Scamb. avanza V"); // S UnRet V + LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Lunghezza scambio"); // Swap Length + LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Lunghezza spurgo"); // Purge Length + LSTR MSG_TOOL_CHANGE = _UxGT("Cambio utensile"); // Tool Change + LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Risalita Z"); // Z Raise + LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Velocità innesco"); // Prime Speed + LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Velocità ritrazione"); // Retract Speed + LSTR MSG_NOZZLE_STANDBY = _UxGT("Ugello in pausa"); // Nozzle Standby + LSTR MSG_FILAMENTLOAD = _UxGT("Carica filamento"); // Load Filament + LSTR MSG_FILAMENTLOAD_E = _UxGT("Carica filamento *"); // Load * Filament + LSTR MSG_FILAMENTUNLOAD = _UxGT("Rimuovi filamento"); // Unload Filament + LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Rimuovi filam. *"); // Unload * Filament + LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Rimuovi tutto"); // Unload All + LSTR MSG_RELEASE_MEDIA = _UxGT("Rilascia ") MEDIA_TYPE_IT; // Release (MEDIA_TYPE_EN) + LSTR MSG_SKEW_FACTOR = _UxGT("Fattore distorsione"); // Skew Factor + LSTR MSG_BLTOUCH = _UxGT("BLTouch"); // BLTouch + LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Autotest BLTouch"); // Self-Test + LSTR MSG_BLTOUCH_STOW = _UxGT("Ritrai BLTouch"); // Stow + LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Estendi BLTouch"); // Deploy + LSTR MSG_BLTOUCH_SW_MODE = _UxGT("BLTouch modo SW"); // SW-Mode + LSTR MSG_BLTOUCH_5V_MODE = _UxGT("BLTouch modo 5V"); // 5V-Mode + LSTR MSG_BLTOUCH_OD_MODE = _UxGT("BLTouch modo OD"); // OD-Mode + LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("BLTouch modo mem."); // Mode-Store + LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Metti BLTouch a 5V"); // Set BLTouch to 5V + LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Metti BLTouch a OD"); // Set BLTouch to OD + LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Segnala modo"); // Report Drain + LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("PERICOLO: impostazioni errate possono cause danni! Procedo comunque?"); // DANGER: Bad settings can cause damage! Proceed anyway? + LSTR MSG_TOUCHMI_PROBE = _UxGT("TouchMI"); // TouchMI + LSTR MSG_TOUCHMI_INIT = _UxGT("Inizializ.TouchMI"); // Init TouchMI + LSTR MSG_TOUCHMI_ZTEST = _UxGT("Test Z offset"); // Z Offset Test + LSTR MSG_TOUCHMI_SAVE = _UxGT("Memorizzare"); // Save + LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("Estendi TouchMI"); // Deploy TouchMI + LSTR MSG_MANUAL_DEPLOY = _UxGT("Estendi sonda-Z"); // Deploy Z-Probe + LSTR MSG_MANUAL_STOW = _UxGT("Ritrai sonda-Z"); // Stow Z-Probe + LSTR MSG_BABYSTEP_TOTAL = _UxGT("Totali"); // Total + LSTR MSG_COOLING = _UxGT("Raffreddamento..."); // Cooling... + LSTR MSG_BED_COOLING = _UxGT("Raffr. piatto..."); // Bed Cooling... + LSTR MSG_CHAMBER_HEATING = _UxGT("Risc. camera..."); // Chamber Heating... + LSTR MSG_CHAMBER_COOLING = _UxGT("Raffr. camera..."); // Chamber Cooling... + LSTR MSG_DELTA_SETTINGS = _UxGT("Impostaz. delta"); // Delta Settings + LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Auto calibrazione"); // Auto Calibration + LSTR MSG_DELTA_DIAG_ROD = _UxGT("Barra diagonale"); // Diag Rod + LSTR MSG_DELTA_HEIGHT = _UxGT("Altezza"); // Height + LSTR MSG_DELTA_RADIUS = _UxGT("Raggio"); // Radius + LSTR MSG_3POINT_LEVELING = _UxGT("Livel. a 3 punti"); // 3-Point Leveling + LSTR MSG_LINEAR_LEVELING = _UxGT("Livel. lineare"); // Linear Leveling + LSTR MSG_BILINEAR_LEVELING = _UxGT("Livel. bilineare"); // Bilinear Leveling + LSTR MSG_UBL_LEVELING = _UxGT("Livel.piatto unific."); // Unified Bed Leveling + LSTR MSG_MESH_LEVELING = _UxGT("Livel. mesh"); // Mesh Leveling + LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Controllo fuga: OFF"); // Runaway Watch: OFF + LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Controllo fuga: ON"); // Runaway Watch: ON + LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Luminosità Luci"); // Light Brightness + LSTR MSG_DAC_PERCENT_N = _UxGT("Driver @ %"); // @ Driver % + LSTR MSG_ERROR_TMC = _UxGT("ERR.CONNESSIONE TMC"); // TMC CONNECTION ERROR + LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("CAMBIO FILAMENTO"); // FILAMENT CHANGE + LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("STAMPA IN PAUSA"); // PRINT PAUSED + LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("CARICA FILAMENTO"); // LOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("RIMUOVI FILAMENTO"); // UNLOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("OPZIONI RIPRESA:"); // RESUME OPTIONS: + LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Spurga di più"); // Purge more + LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Ugello: "); // Nozzle: + LSTR MSG_RUNOUT_SENSOR = _UxGT("Sens.filo termin."); // Runout Sensor + LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("Dist mm filo term."); // Runout Dist mm + LSTR MSG_KILL_HOMING_FAILED = _UxGT("Home fallito"); // Homing Failed + LSTR MSG_LCD_PROBING_FAILED = _UxGT("Sondaggio fallito"); // Probing Failed + LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("SCELTA FILAMENTO"); // CHOOSE FILAMENT + LSTR MSG_MMU2_MENU = _UxGT("MMU"); // MMU + LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("Agg.firmware MMU!"); // Update MMU Firmware! + LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU chiede attenz."); // MMU Needs Attention. + LSTR MSG_MMU2_RESUME = _UxGT("Riprendi"); // Resume + LSTR MSG_MMU2_RESUMING = _UxGT("Ripresa..."); // MMU Resuming... + LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("Carica"); // Load + LSTR MSG_MMU2_LOAD_ALL = _UxGT("Carica tutto"); // Load All + LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Carica fino ugello"); // Load to Nozzle + LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("Espelli"); // Eject + LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("Espelli ~"); // Eject ~ + LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Scarica"); // Unload + LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Caric.fil. %i..."); // Filament %i Load... + LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Esplus.filam. ..."); // Filament %i Eject... + LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Scaric.filam. ..."); // Filament %i Unload... + LSTR MSG_MMU2_ALL = _UxGT("Tutto"); // All + LSTR MSG_MMU2_FILAMENT_N = _UxGT("Filamento ~"); // Filament ~ + LSTR MSG_MMU2_RESET = _UxGT("Azzera MMU"); // Reset MMU + LSTR MSG_MMU2_RESETTING = _UxGT("Azzeramento MMU..."); // Resetting... + LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Espelli, click"); // Eject Recover + LSTR MSG_MIX = _UxGT("Miscela"); // Mix + LSTR MSG_MIX_COMPONENT_N = _UxGT("Componente {"); // Component { + LSTR MSG_MIXER = _UxGT("Miscelatore"); // Mixer + LSTR MSG_GRADIENT = _UxGT("Gradiente"); // Gradient + LSTR MSG_FULL_GRADIENT = _UxGT("Gradiente pieno"); // Full Gradient + LSTR MSG_TOGGLE_MIX = _UxGT("Alterna miscela"); // Toggle Mix + LSTR MSG_CYCLE_MIX = _UxGT("Ciclo miscela"); // Cycle Mix + LSTR MSG_GRADIENT_MIX = _UxGT("Miscela gradiente"); // Gradient Mix + LSTR MSG_REVERSE_GRADIENT = _UxGT("Inverti gradiente"); // Reverse Gradient + LSTR MSG_ACTIVE_VTOOL = _UxGT("V-tool attivo"); // Active V-tool + LSTR MSG_START_VTOOL = _UxGT("V-tool iniziale"); // Start V-tool + LSTR MSG_END_VTOOL = _UxGT("V-tool finale"); // End V-tool + LSTR MSG_GRADIENT_ALIAS = _UxGT("V-tool alias"); // Alias V-tool + LSTR MSG_RESET_VTOOLS = _UxGT("Ripristina V-tools"); // Reset V-tools + LSTR MSG_COMMIT_VTOOL = _UxGT("Commit mix V-tool"); // Commit V-tool Mix + LSTR MSG_VTOOLS_RESET = _UxGT("V-tools ripristin."); // V-tools Were Reset + LSTR MSG_START_Z = _UxGT("Z inizio:"); // Start Z: + LSTR MSG_END_Z = _UxGT("Z fine:"); // End Z: + LSTR MSG_GAMES = _UxGT("Giochi"); // Games + LSTR MSG_BRICKOUT = _UxGT("Brickout"); // Brickout + LSTR MSG_INVADERS = _UxGT("Invaders"); // Invaders + LSTR MSG_SNAKE = _UxGT("Sn4k3"); // Sn4k3 + LSTR MSG_MAZE = _UxGT("Maze"); // Maze + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Premi x continuare")); // |Click to continue + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Spurgo filamento")); // |Purging... + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Premi x terminare")); // |Click to finish + LSTR MSG_TMC_DRIVERS = _UxGT("Driver TMC"); // TMC Drivers + LSTR MSG_TMC_CURRENT = _UxGT("Corrente driver"); // Driver Current + LSTR MSG_TMC_HYBRID_THRS = _UxGT("Soglia modo ibrido"); // Hybrid Threshold + LSTR MSG_TMC_HOMING_THRS = _UxGT("Sensorless homing"); // Sensorless Homing + LSTR MSG_TMC_STEPPING_MODE = _UxGT("Modo Stepping"); // Stepping Mode + LSTR MSG_TMC_STEALTHCHOP = _UxGT("StealthChop"); // StealthChop + LSTR MSG_SERVICE_RESET = _UxGT("Resetta"); // Reset + LSTR MSG_SERVICE_IN = _UxGT(" tra:"); // in: + LSTR MSG_BACKLASH = _UxGT("Gioco"); // Backlash + LSTR MSG_BACKLASH_CORRECTION = _UxGT("Correzione"); // Correction + LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Appianamento"); // Smoothing + LSTR MSG_HIGH = _UxGT("ALTO"); // HIGH + LSTR MSG_LOW = _UxGT("BASSO"); // LOW + LSTR MSG_ERROR = _UxGT("Errore"); // Error + LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Iniz.") MEDIA_TYPE_IT _UxGT(" fallita"); // (MEDIA_TYPE_EN) Init Fail + LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Overflow sottochiamate"); // Subcall Overflow + LSTR MSG_AUTO_HOME_N = _UxGT("Azzera @"); // Home @ + LSTR MSG_FILAMENT_SET = _UxGT("Impostaz.filamento"); // Filament Settings + LSTR MSG_FILAMENT_MAN = _UxGT("Gestione filamento"); // Filament Management + LSTR MSG_MANUAL_LEVELING = _UxGT("Livel.manuale"); // Manual Leveling + LSTR MSG_TRAM_FL = _UxGT("Davanti sinistra"); // Front Left + LSTR MSG_TRAM_FR = _UxGT("Davanti destra"); // Front Right + LSTR MSG_TRAM_C = _UxGT("Centro"); // Center + LSTR MSG_TRAM_BL = _UxGT("Dietro sinistra"); // Back Left + LSTR MSG_TRAM_BR = _UxGT("Dietro destra"); // Back Right + LSTR MSG_MANUAL_MESH = _UxGT("Mesh manuale"); // Manual Mesh + LSTR MSG_AUTO_MESH = _UxGT("Generaz.autom.mesh"); // Auto Build Mesh + LSTR MSG_ITERATION = _UxGT("Iterazione G34: %i"); // G34 Iteration: %i + LSTR MSG_DECREASING_ACCURACY = _UxGT("Precisione in calo!"); // Accuracy Decreasing! + LSTR MSG_ACCURACY_ACHIEVED = _UxGT("Precisione raggiunta"); // Accuracy Achieved + LSTR MSG_HOME_OFFSET_X = _UxGT("Offset home X"); // Home Offset X + LSTR MSG_HOME_OFFSET_Y = _UxGT("Offset home Y"); // Home Offset Y + LSTR MSG_HOME_OFFSET_Z = _UxGT("Offset home Z"); // Home Offset Z + LSTR MSG_TRAMMING_WIZARD = _UxGT("Wizard Tramming"); // Tramming Wizard + LSTR MSG_SELECT_ORIGIN = _UxGT("Selez. origine"); // Select Origin + LSTR MSG_LAST_VALUE_SP = _UxGT("Ultimo valore "); // Last value + LSTR MSG_CUTTER_FREQUENCY = _UxGT("Frequenza"); // Frequency + LSTR MSG_LASER_TOGGLE = _UxGT("Alterna laser"); // Toggle Laser + LSTR MSG_LASER_EVAC_TOGGLE = _UxGT("Alterna soffiatore"); // Toggle Blower + LSTR MSG_LASER_ASSIST_TOGGLE = _UxGT("Alterna aria supp."); // Air Assist + LSTR MSG_LASER_PULSE_MS = _UxGT("ms impulso di test"); // Test Pulse ms + LSTR MSG_LASER_FIRE_PULSE = _UxGT("Spara impulso"); // Fire Pulse + LSTR MSG_FLOWMETER_FAULT = _UxGT("Err.flusso refrig."); // Coolant Flow Fault + LSTR MSG_SPINDLE_TOGGLE = _UxGT("Alterna mandrino"); // Toggle Spindle + LSTR MSG_SPINDLE_EVAC_TOGGLE = _UxGT("Alterna vuoto"); // Toggle Vacuum + LSTR MSG_SPINDLE_FORWARD = _UxGT("Mandrino in avanti"); // Spindle Forward + LSTR MSG_BED_TRAMMING_MANUAL = _UxGT("Tarat.fine manuale"); // Manual Tramming + LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Regola la vite finché la sonda non rileva il piatto."); // Adjust bed until the probe triggers. + LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Tolleranza raggiunta su tutti gli angoli. Piatto livellato!"); // Corners within tolerance. Bed trammed. + LSTR MSG_BED_TRAMMING_GOOD_POINTS = _UxGT("Punti buoni: "); // Good Points: + LSTR MSG_BED_TRAMMING_LAST_Z = _UxGT("Ultimo Z: "); // Last Z: + LSTR MSG_MESH_VIEWER = _UxGT("Visualiz. mesh"); // Mesh Viewer + LSTR MSG_MESH_VIEW = _UxGT("Visualizza mesh"); // View Mesh + LSTR MSG_NO_VALID_MESH = _UxGT("Mesh non valida"); // No valid mesh + LSTR MSG_ACTIVATE_MESH = _UxGT("Attiva livellamento"); // Activate Leveling + LSTR MSG_MESH_INSET = _UxGT("Mesh inset"); // Mesh Inset + LSTR MSG_MESH_MIN_X = _UxGT("Mesh X minimo"); // Mesh X Minimum + LSTR MSG_MESH_MAX_X = _UxGT("Mesh X massimo"); // Mesh X Maximum + LSTR MSG_MESH_MIN_Y = _UxGT("Mesh Y minimo"); // Mesh Y Minimum + LSTR MSG_MESH_MAX_Y = _UxGT("Mesh Y massimo"); // Mesh Y Maximum + LSTR MSG_MESH_AMAX = _UxGT("Massimizza area"); // Maximize Area + LSTR MSG_MESH_CENTER = _UxGT("Area centrale"); // Center Area + LSTR MSG_MESH_CANCEL = _UxGT("Mesh cancellata"); // Mesh cancelled + LSTR MSG_M48_OUT_OF_BOUNDS = _UxGT("Sonda oltre i limiti"); // Probe out of bounds + LSTR MSG_IDEX_DUPE_GAP = _UxGT("X-Gap-X duplicato"); // Duplicate X-Gap + LSTR MSG_UBL_TILT_MESH = _UxGT("Inclina mesh"); // Tilt Mesh + LSTR MSG_UBL_TILTING_GRID = _UxGT("Dim.griglia inclin."); // Tilting Grid Size + LSTR MSG_UBL_MESH_TILTED = _UxGT("Mesh inclinata"); // Mesh Tilted + LSTR MSG_UBL_MESH_WIZARD = _UxGT("Creaz.guid.mesh UBL"); // UBL Mesh Wizard + LSTR MSG_UBL_MESH_FILLED = _UxGT("Pts mancanti riempiti"); // Missing Points Filled + LSTR MSG_UBL_MESH_INVALID = _UxGT("Mesh non valida"); // Invalid Mesh + LSTR MSG_UBL_INVALID_SLOT = _UxGT("Prima selez. uno slot mesh"); // First Select a Mesh Slot + LSTR MSG_LED_CHANNEL_N = _UxGT("Canale {"); // Channel { + LSTR MSG_NEO2_PRESETS = _UxGT("Presets luce #2"); // Light #2 Presets + LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Luminosità"); // Brightness + LSTR MSG_NOZZLE_PARKED = _UxGT("Ugello parcheggiato"); // Nozzle Parked + LSTR MSG_COOLER = _UxGT("Raffreddam. laser"); // Laser Coolant + LSTR MSG_COOLER_TOGGLE = _UxGT("Alterna raffreddam."); // Toggle Cooler + LSTR MSG_FLOWMETER_SAFETY = _UxGT("Sicurezza flusso"); // Flow Safety + LSTR MSG_LASER = _UxGT("Laser"); // Laser + LSTR MSG_CONTROLLER_FAN = _UxGT("Controller vent."); // Controller Fan + LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("Vel. inattivo"); // Idle Speed + LSTR MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("Modo autom."); // Auto Mode + LSTR MSG_CONTROLLER_FAN_SPEED = _UxGT("Vel. attivo"); // Active Speed + LSTR MSG_CONTROLLER_FAN_DURATION = _UxGT("Tempo inattivo"); // Idle Period + LSTR MSG_PID_CYCLE = _UxGT("Ciclo PID"); // PID Cycles + LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("Calibr.PID eseguita"); // PID tuning done + LSTR MSG_PID_AUTOTUNE_FAILED = _UxGT("Calibr.PID fallito!"); // Autotune failed! + LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Calibrazione fallita! Estrusore errato."); // Autotune failed! Bad extruder. + LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Calibrazione fallita! Temperatura troppo alta."); // Autotune failed! Temperature too high. + LSTR MSG_PID_TIMEOUT = _UxGT("Calibrazione fallita! Tempo scaduto."); // Autotune failed! Timeout. + LSTR MSG_MPC_MEASURING_AMBIENT = _UxGT("Verif.perdita calore"); // Testing heat loss + LSTR MSG_MPC_AUTOTUNE = _UxGT("Calibra MPC"); // MPC Autotune + LSTR MSG_MPC_EDIT = _UxGT("Modif.MPC *"); // Edit * MPC + LSTR MSG_MPC_POWER_E = _UxGT("Potenza *"); // Power * + LSTR MSG_MPC_BLOCK_HEAT_CAPACITY_E = _UxGT("Capac.riscald. *"); // Heat Cap. * + LSTR MSG_SENSOR_RESPONSIVENESS_E = _UxGT("Reattiv.sens. *"); // Sensor Resp. * + LSTR MSG_MPC_AMBIENT_XFER_COEFF_E = _UxGT("Coeff.amb. *"); // Ambient Co. * + LSTR MSG_MPC_AMBIENT_XFER_COEFF_FAN_E = _UxGT("Coeff.ventola *"); // Fan coeff. * + LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("Frequenza max"); // XY Freq Limit + LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("Feed min"); // Min FR Factor + LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("Limite E in mm") SUPERSCRIPT_THREE; // E Limit in mm(SUPERSCRIPT_THREE) + LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("Limite E *"); // E Limit * + LSTR MSG_BRIGHTNESS = _UxGT("Luminosità LCD"); // LCD Brightness + LSTR MSG_SCREEN_TIMEOUT = _UxGT("Timeout LCD (m)"); // LCD Timeout (m) + LSTR MSG_BRIGHTNESS_OFF = _UxGT("Spegni retroillum."); // Backlight Off + LSTR MSG_ERR_EEPROM_CRC = _UxGT("Err: CRC EEPROM"); // Err: EEPROM CRC + LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Err: Dimens.EEPROM"); // Err: EEPROM Size + LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Err: Versione EEPROM"); // Err: EEPROM Version + LSTR MSG_SETTINGS_STORED = _UxGT("Impostazioni mem."); // Settings Stored + LSTR MSG_INFO_MACHINENAME = _UxGT("Nome macchina"); // Machine Name + LSTR MSG_INFO_SIZE = _UxGT("Dimens."); // Size + LSTR MSG_INFO_FWVERSION = _UxGT("Versione firmware"); // Firmware Version + LSTR MSG_INFO_BUILD = _UxGT("Dataora compilaz."); // Build Info + LSTR MSG_POWER_MONITOR = _UxGT("Controllo aliment."); // Power monitor + LSTR MSG_CURRENT = _UxGT("Corrente"); // Current + LSTR MSG_VOLTAGE = _UxGT("Tensione"); // Voltage + LSTR MSG_POWER = _UxGT("Potenza"); // Power + LSTR MSG_BUTTON_IGNORE = _UxGT("Ignora"); // Ignore + LSTR MSG_BUTTON_CONFIRM = _UxGT("Conferma"); // Confirm + LSTR MSG_BUTTON_CONTINUE = _UxGT("Continua"); // Continue + LSTR MSG_BUTTON_SKIP = _UxGT("Salta"); // Skip + LSTR MSG_BUTTON_INFO = _UxGT("Info"); // Info + LSTR MSG_BUTTON_LEVEL = _UxGT("Livello"); // Level + LSTR MSG_BUTTON_PAUSE = _UxGT("Pausa"); // Pause + LSTR MSG_BUTTON_RESUME = _UxGT("Riprendi"); // Resume + LSTR MSG_BUTTON_ADVANCED = _UxGT("Avanzato"); // Advanced + LSTR MSG_BUTTON_SAVE = _UxGT("Memorizza"); // Save + LSTR MSG_BUTTON_PURGE = _UxGT("Spurga"); // Purge + LSTR MSG_PAUSING = _UxGT("Messa in pausa..."); // Pausing... + LSTR MSG_ADVANCED_PAUSE = _UxGT("Pausa avanzata"); // Advanced Pause + LSTR MSG_HOST_START_PRINT = _UxGT("Host avvio"); // Host Start + LSTR MSG_END_LOOPS = _UxGT("Fine cicli di rip."); // End Loops + LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Cont.proc.stampa"); // Continue Job + LSTR MSG_STOPPING = _UxGT("Fermata..."); // Stopping... + LSTR MSG_REMAINING_TIME = _UxGT("Rimanente"); // Remaining + LSTR MSG_PRINT_DONE = _UxGT("Stampa eseguita"); // Print Done + LSTR MSG_PRINTER_KILLED = _UxGT("Stampante uccisa!"); // Printer killed! + LSTR MSG_TURN_OFF = _UxGT("Spegni stampante"); // Turn off now + LSTR MSG_FWRETRACT = _UxGT("Ritraz.da firmware"); // Firmware Retract + LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Extra scambio"); // Swap Extra + LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Parcheggia testa"); // Park Head + LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Veloc. di recupero"); // Recover Speed + LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Velocità ventola"); // Fan Speed + LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Tempo ventola"); // Fan Time + LSTR MSG_TOOL_MIGRATION_ON = _UxGT("Auto ON"); // Auto ON + LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("Auto OFF"); // Auto OFF + LSTR MSG_TOOL_MIGRATION = _UxGT("Migrazione utensile"); // Tool Migration + LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("Auto-migrazione"); // Auto-migration + LSTR MSG_TOOL_MIGRATION_END = _UxGT("Ultimo estrusore"); // Last Extruder + LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("Migra a *"); // Migrate to * + LSTR MSG_BLTOUCH_SPEED_MODE = _UxGT("Alta Velocità"); // High Speed + LSTR MSG_ZPROBE_SETTINGS = _UxGT("Impostazioni sonda"); // Probe Settings + LSTR MSG_ZPROBE_OFFSETS = _UxGT("Offsets sonda"); // Probe Offsets + LSTR MSG_ZPROBE_MARGIN = _UxGT("Margine sonda"); // Probe Margin + LSTR MSG_Z_FEED_RATE = _UxGT("Velocità Z"); // Z Feedrate + LSTR MSG_ENABLE_HS_MODE = _UxGT("Abilita modo HS"); // Enable HS mode + LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Muovi ugel.su piatto"); // Move Nozzle to Bed + LSTR MSG_ERR_TEMP_MALFUNCTION = _UxGT("MALFUNZIONAMENTO TEMP"); // TEMP MALFUNCTION + LSTR MSG_ERR_COOLING_FAILED = _UxGT("Raffreddam. fallito"); // Cooling Failed + LSTR MSG_PLEASE_WAIT = _UxGT("Attendere prego..."); // Please wait... + LSTR MSG_PREHEATING = _UxGT("Preriscaldamento..."); // Preheating... + LSTR MSG_PROBE_HEATING = _UxGT("Risc. sonda..."); // Probe Heating... + LSTR MSG_PROBE_COOLING = _UxGT("Raffr. sonda..."); // Probe Cooling... + LSTR MSG_LASER_COOLING = _UxGT("Raffr. laser..."); // Laser Cooling... + LSTR MSG_MESH_DONE = _UxGT("Sond.mesh eseguito"); // Mesh probing done + LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Timeout inatt.ugello"); // Hotend Idle Timeout + LSTR MSG_FAN_SPEED_FAULT = _UxGT("Err.vel.della ventola"); // Fan speed fault + LSTR MSG_COLORS_GET = _UxGT("Ottieni colori"); // Get Color + LSTR MSG_COLORS_SELECT = _UxGT("Selez.colori"); // Select Colors + LSTR MSG_COLORS_APPLIED = _UxGT("Colori applicati"); // Colors applied + LSTR MSG_COLORS_RED = _UxGT("Rosso"); // Red + LSTR MSG_COLORS_GREEN = _UxGT("Verde"); // Green + LSTR MSG_COLORS_BLUE = _UxGT("Blu"); // Blue + LSTR MSG_COLORS_WHITE = _UxGT("Bianco"); // White + LSTR MSG_UI_LANGUAGE = _UxGT("Lingua UI"); // UI Language + LSTR MSG_SOUND_ENABLE = _UxGT("Abilita suono"); // Enable sound + LSTR MSG_LOCKSCREEN = _UxGT("Blocca schermo"); // Lock Screen + LSTR MSG_LOCKSCREEN_LOCKED = _UxGT("Stamp. bloccata,"); // Printer is Locked, + LSTR MSG_LOCKSCREEN_UNLOCK = _UxGT("Scroll x sbloccare."); // Scroll to unlock. + LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Attendere fino al riavvio."); // Please wait for reboot. + LSTR MSG_PLEASE_PREHEAT = _UxGT("Prerisc. ugello."); // Please Preheat + LSTR MSG_FILAMENT_CHANGE_PURGE_CONTINUE = _UxGT("Spurga o continua?"); // Purge or Continue? + LSTR MSG_EXTRUDER_MIN_TEMP = _UxGT("Temp.min estrusore"); // Extruder Min Temp. + LSTR MSG_FANCHECK = _UxGT("Verif.tacho vent."); // Fan Tacho Check + LSTR MSG_BAD_PAGE = _UxGT("Indice pag. errato"); // Bad page index + LSTR MSG_BAD_PAGE_SPEED = _UxGT("Vel. pag. errata"); // Bad page speed + LSTR MSG_EDIT_PASSWORD = _UxGT("Modif.password"); // Edit Password + LSTR MSG_LOGIN_REQUIRED = _UxGT("Login richiesto"); // Login Required + LSTR MSG_PASSWORD_SETTINGS = _UxGT("Impostaz.password"); // Password Settings + LSTR MSG_ENTER_DIGIT = _UxGT("Inserisci cifra"); // Enter Digit + LSTR MSG_CHANGE_PASSWORD = _UxGT("Imp./Modif.password"); // Set/Edit Password + LSTR MSG_REMOVE_PASSWORD = _UxGT("Elimina password"); // Remove Password + LSTR MSG_PASSWORD_SET = _UxGT("La password è "); // Password is + LSTR MSG_START_OVER = _UxGT("Ricominciare"); // Start Over + LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Ricordati di mem.!"); // Remember to Save! + LSTR MSG_PASSWORD_REMOVED = _UxGT("Password eliminata"); // Password Removed + LSTR MSG_LEVEL_X_AXIS = _UxGT("Livello asse X"); // Level X Axis + LSTR MSG_AUTO_CALIBRATE = _UxGT("Auto Calibra"); // Auto Calibrate + LSTR MSG_FTDI_HEATER_TIMEOUT = _UxGT("Timeout inattività, temperatura diminuita. Premere OK per riscaldare e riprendere di nuovo."); // Idle timeout, temperature decreased. Press Okay to reheat and again to resume. + LSTR MSG_HEATER_TIMEOUT = _UxGT("Timeout riscaldatore"); // Heater Timeout + LSTR MSG_REHEAT = _UxGT("Riscalda"); // Reheat + LSTR MSG_REHEATING = _UxGT("Riscaldando..."); // Reheating... + LSTR MSG_REHEATDONE = _UxGT("Riscaldato"); // Reheat Done + LSTR MSG_PROBE_WIZARD = _UxGT("Wizard Z offset"); // Z Probe Wizard + LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Altezza di riferimento sonda"); // Probing Z Reference + LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Spostati in posizione di rilevazione"); // Moving to Probing Pos + LSTR MSG_XATC = _UxGT("Proc.guid.X-Twist"); // X-Twist Wizard + LSTR MSG_XATC_DONE = _UxGT("Proc.guid.X-Twist eseg.!"); // X-Twist Wizard Done! + LSTR MSG_XATC_UPDATE_Z_OFFSET = _UxGT("Agg.Offset-Z sonda a "); // Update Z-Offset to + LSTR MSG_SOUND = _UxGT("Suoni"); // Sound + LSTR MSG_TOP_LEFT = _UxGT("Alto sinistra"); // Touch Top Left + LSTR MSG_BOTTOM_LEFT = _UxGT("Basso sinistra"); // Touch Bottom Left + LSTR MSG_TOP_RIGHT = _UxGT("Alto destra"); // Touch Top Right + LSTR MSG_BOTTOM_RIGHT = _UxGT("Basso destra"); // Touch Bottom Right + LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Calibrazione completata"); // Calibration Completed + LSTR MSG_CALIBRATION_FAILED = _UxGT("Calibrazione fallita"); // Calibration Failed + LSTR MSG_DRIVER_BACKWARD = _UxGT(" driver invertito"); // driver backward + LSTR MSG_SD_CARD = _UxGT("Scheda SD"); // SD Card + LSTR MSG_USB_DISK = _UxGT("Disco USB"); // USB Disk + LSTR MSG_HOST_SHUTDOWN = _UxGT("Arresta host"); // Host Shutdown + LSTR DGUS_MSG_TEMP_TOO_HIGH = _UxGT("Temp.troppo alta."); // Temperature too high. + LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("No supporto"); // No Media + LSTR MSG_MEDIA_INSERTED_SD = _UxGT("Scheda SD inserita"); // SD Card Inserted + LSTR MSG_MEDIA_INSERTED_USB = _UxGT("Unità USB inserita"); // USB Drive Inserted + LSTR MSG_MEDIA_REMOVED_SD = _UxGT("Scheda SD rimossa"); // SD Card Removed + LSTR MSG_MEDIA_REMOVED_USB = _UxGT("Unità USB rimossa"); // USB Drive Removed + LSTR MSG_MEDIA_INIT_FAIL_SD = _UxGT("Iniz. SD fallita"); // SD Card Init Fail + LSTR MSG_MEDIA_INIT_FAIL_USB = _UxGT("Iniz. USB fallita"); // USB Drive Init Fail + LSTR MSG_MEDIA_SORT = _UxGT("Ordina ") MEDIA_TYPE_IT; // Sort (MEDIA_TYPE_EN) + LSTR MSG_USB_FD_WAITING_FOR_MEDIA = _UxGT("In attesa unità USB"); // Wait for USB Drive + LSTR MSG_USB_FD_MEDIA_REMOVED = _UxGT("Unità USB rimossa"); // USB Drive Removed + LSTR MSG_ENDSTOP_TEST = _UxGT("Test finecorsa"); // Endstop Test + LSTR MSG_Z_PROBE = _UxGT("Sonda Z"); // Z Probe + LSTR MSG_HOMING_FEEDRATE = _UxGT("Velocità azzeramento"); // Homing Feedrate + LSTR MSG_HOMING_FEEDRATE_N = _UxGT("Vel.azzeram. @"); // @ Homing FR + LSTR MSG_HOME_ALL = _UxGT("Azzera tutti"); // Home All + LSTR MSG_Z_AFTER_HOME = _UxGT("Z dopo azzeramento"); // Z After Homing + LSTR MSG_ERR_M428_TOO_FAR = _UxGT("Err: Troppo lontano!"); // MIN/MAX Too Far + LSTR MSG_PREHEAT_2 = _UxGT("Preriscalda ") PREHEAT_2_LABEL; // Preheat (PREHEAT_2_LABEL) + LSTR MSG_PREHEAT_3 = _UxGT("Preriscalda ") PREHEAT_3_LABEL; // Preheat (PREHEAT_3_LABEL) + LSTR MSG_PREHEAT_4 = PREHEAT_4_LABEL; // (PREHEAT_4_LABEL) + LSTR MSG_PREHEAT_M_CHAMBER = _UxGT("Preris.camera $"); // Preheat $ Chmb + LSTR MSG_PREHEAT_HOTEND = _UxGT("Prerisc.ugello"); // Preheat Hotend + LSTR MSG_PREHEAT = _UxGT("Preriscalda"); // Preheat + LSTR MSG_POWER_EDM_FAULT = _UxGT("Anomalia alim.EDM"); // Power EDM Fault + LSTR MSG_MESH_VIEW_GRID = _UxGT("Vis.mesh (griglia)"); // View Mesh (grid) + LSTR MSG_MESH_RESET = _UxGT("Resetta mesh"); // Mesh reset + LSTR MSG_CUSTOM_MENU_MAIN_TITLE = _UxGT("_UxGT(") CUSTOM_MENU_MAIN_TITLE _UxGT(")"); // _UxGT((CUSTOM_MENU_MAIN_TITLE)) + LSTR MSG_TOOL_HEAD_TH = _UxGT("_UxGT(") CUSTOM_MENU_MAIN_TITLE _UxGT(" (TH))"); // _UxGT((CUSTOM_MENU_MAIN_TITLE) (TH)) + LSTR MSG_PRESENT_BED = _UxGT("Piatto presente"); // Present Bed + LSTR MSG_M48_DEV = _UxGT("Dev"); // Dev + LSTR MSG_M48_MAX_DELTA = _UxGT("Delta max"); // Max delta + LSTR MSG_MESH_ACTIVE = _UxGT("Mesh %i attiva"); // Mesh %i active + LSTR MSG_LIGHT_ENCODER = _UxGT("Luci encoder"); // Encoder Light + LSTR MSG_LIGHT_ENCODER_PRESETS = _UxGT("Preset luci encoder"); // Encoder Light Presets + LSTR MSG_LIVE_MOVE = _UxGT("Movimento live"); // Live Movement + LSTR MSG_CUTTER = _UxGT("Taglio"); // Cutter + LSTR MSG_FLOW_PERCENTAGE = _UxGT("Imposta perc.flusso"); // Set Flowrate Percentage + LSTR MSG_TIMEOUT = _UxGT("Tempo scaduto"); // Timeout + LSTR MSG_PID_FOR_NOZZLE = _UxGT("per ugello in esecuzione."); // for Nozzle is running. + LSTR MSG_PID_FOR_BED = _UxGT("per piatto BED in esecuzione."); // for BED is running. + LSTR MSG_PID_FOR_CHAMBER = _UxGT("per camera in esecuzione."); // for CHAMBER is running. + LSTR MSG_TEMP_NOZZLE = _UxGT("Temperatura ugello"); // Nozzle Temperature + LSTR MSG_TEMP_BED = _UxGT("Temperatura piatto"); // Bed Temperature + LSTR MSG_TEMP_CHAMBER = _UxGT("Temperature camera"); // Chamber Temperature + LSTR MSG_MPC_HEATING_PAST_200 = _UxGT("Riscalda a >200C"); // Heating to >200C + LSTR MSG_MPC_COOLING_TO_AMBIENT = _UxGT("Raffredda a amb."); // Cooling to ambient + LSTR MSG_MPC_POWER = _UxGT("Potenza riscald."); // Heater Power + LSTR MSG_MPC_BLOCK_HEAT_CAPACITY = _UxGT("Capacità riscald."); // Heat Capacity + LSTR MSG_SENSOR_RESPONSIVENESS = _UxGT("Reattiv.sens."); // Sensor Resp. + LSTR MSG_MPC_AMBIENT_XFER_COEFF = _UxGT("Coeff.ambiente"); // Ambient Coeff. + LSTR MSG_MPC_AMBIENT_XFER_COEFF_FAN = _UxGT("Coeff.ventola"); // Fan coeff. + LSTR MSG_STEP_SMOOTHING = _UxGT("Leviga passo"); // Step Smoothing + LSTR MSG_A_SPINDLE = _UxGT("Acc.mandrino"); // Spindle Accel + LSTR MSG_INPUT_SHAPING = _UxGT("Input shaping"); // Input Shaping + LSTR MSG_SHAPING_ENABLE_N = _UxGT("Abilita shaping @"); // Enable @ shaping + LSTR MSG_SHAPING_DISABLE_N = _UxGT("Disabil. shaping @"); // Disable @ shaping + LSTR MSG_SHAPING_FREQ_N = _UxGT("Frequenza @"); // @ frequency + LSTR MSG_SHAPING_ZETA_N = _UxGT("Smorzamento @"); // @ damping + LSTR MSG_SHAPING_A_FREQ = _UxGT("Frequenza ") STR_A; // (STR_A) frequency + LSTR MSG_SHAPING_B_FREQ = _UxGT("Frequenza ") STR_B; // (STR_B) frequency + LSTR MSG_SHAPING_C_FREQ = _UxGT("Frequenza ") STR_C; // (STR_C) frequency + LSTR MSG_SHAPING_A_ZETA = _UxGT("Smorzamento ") STR_A; // (STR_A) damping + LSTR MSG_SHAPING_B_ZETA = _UxGT("Smorzamento ") STR_B; // (STR_B) damping + LSTR MSG_SHAPING_C_ZETA = _UxGT("Smorzamento ") STR_C; // (STR_C) damping + LSTR MSG_FTM_TRAPEZOIDAL = _UxGT("Trapezoidale"); // Trapezoidal + LSTR MSG_FTM_POLY5 = _UxGT("5° ordine"); // 5th Order + LSTR MSG_FTM_POLY6 = _UxGT("6° ordine"); // 6th Order + LSTR MSG_FTM_TRAJECTORY = _UxGT("Traiettoria: $"); // Trajectory: $ + LSTR MSG_FILAMENT_EN = _UxGT("Filamento *"); // Filament * + LSTR MSG_SEGMENTS_PER_SECOND = _UxGT("Segmenti/Sec"); // Segments/Sec + LSTR MSG_DRAW_MIN_X = _UxGT("Min X area disegno"); // Draw Min X + LSTR MSG_DRAW_MAX_X = _UxGT("Max X area disegno"); // Draw Max X + LSTR MSG_DRAW_MIN_Y = _UxGT("Min Y area disegno"); // Draw Min Y + LSTR MSG_DRAW_MAX_Y = _UxGT("Max Y area disegno"); // Draw Max Y + LSTR MSG_MAX_BELT_LEN = _UxGT("Lungh.max cinghia"); // Max Belt Len + LSTR MSG_LINEAR_ADVANCE = _UxGT("Avanzam.lineare"); // Linear Advance + LSTR MSG_ADVANCE_TAU = _UxGT("Tau advance"); // Advance Tau + LSTR MSG_ADVANCE_TAU_E = _UxGT("Tau advance *"); // Advance Tau * + LSTR MSG_NLE_ON = _UxGT("NLE abilitato"); // NLE enabled + LSTR MSG_HOTEND_TEMP_GRAPH = _UxGT("Grafico temp.ugello"); // Hotend Temp Graph + LSTR MSG_BED_TEMP_GRAPH = _UxGT("Grafico temp.piatto"); // Bed Temp Graph + LSTR MSG_EEPROM_INITIALIZED = _UxGT("EEPROM inizializzata"); // EEPROM Initialized + LSTR MSG_ERR_EEPROM_CORRUPT = _UxGT("Err: EEPROM corrotta"); // Err: EEPROM Corrupt + LSTR MSG_HAS_PREVIEW = _UxGT("Ha anteprima"); // Has preview + LSTR MSG_CANCEL_PRINT = _UxGT("Annulla stampa"); // Cancel Print + LSTR MSG_RESUME_BED_TEMP = _UxGT("Riprendi temp.piatto"); // Resume Bed Temp + LSTR MSG_TOOL_HEAD_SWAP = _UxGT("Parcheggia per scambio testa"); // Park For Tool Head Swap + LSTR MSG_FILAMENT_SWAP = _UxGT("Parcheggia per cambio filemento"); // Park For Filament Change + LSTR MSG_SINGLENOZZLE_WIPE_RETRACT = _UxGT("Ritrazione pulizia"); // Wipe Retract + LSTR MSG_PARK_FAILED = _UxGT("Parcheggio fallito"); // Head cannot be parked + LSTR MSG_RELEASE_SD = _UxGT("Rilascia scheda SD"); // Release SD Card + LSTR MSG_RELEASE_USB = _UxGT("Rilascia unità USB"); // Release USB Drive + LSTR MSG_CHANGE_SD = _UxGT("Selez. scheda SD"); // Select SD Card + LSTR MSG_CHANGE_USB = _UxGT("Selez. unità USB"); // Select USB Drive + LSTR MSG_RUN_AUTOFILES_SD = _UxGT("Esegui Autofiles SD"); // Run SD Autofiles + LSTR MSG_RUN_AUTOFILES_USB = _UxGT("Esegui Autofiles USB"); // Run USB Autofiles + LSTR MSG_MEDIA_MENU_SD = _UxGT("Selez. da SD"); // Select from SD + LSTR MSG_MEDIA_MENU_USB = _UxGT("Selez. da USB"); // Select from USB + LSTR MSG_MANUAL_PENUP = _UxGT("Penna su"); // Pen up + LSTR MSG_MANUAL_PENDOWN = _UxGT("Penna giù"); // Pen down + LSTR MSG_ZOFFSET = _UxGT("Offset Z"); // Z Offset + LSTR MSG_BED_ANNEALING = _UxGT("Ricottura..."); // Annealing... + LSTR MSG_DELTA_CALIBRATION_IN_PROGRESS = _UxGT("Calibrazione delta in corso"); // Delta Calibration in progress + LSTR MSG_INFO_PRINTER_STATS_MENU = _UxGT("Statistiche stampante"); // Printer Stats + LSTR MSG_RESET_STATS = _UxGT("Reset stat.stampa?"); // Reset Print Stats? + LSTR MSG_BED_IDLE_TIMEOUT = _UxGT("Timeout inatt.piatto"); // Bed Idle Timeout + LSTR MSG_HOTEND_IDLE_DISABLE = _UxGT("Disabilita timeout"); // Disable Timeout + LSTR MSG_HOTEND_IDLE_NOZZLE_TARGET = _UxGT("Temp.inatt.ugello"); // Nozzle Idle Temp + LSTR MSG_HOTEND_IDLE_BED_TARGET = _UxGT("Temp.inatt.piatto"); // Bed Idle Temp + LSTR MSG_SENSOR = _UxGT("Sensore"); // Sensor + LSTR MSG_MOTION_DISTANCE_MM = _UxGT("Dist mm movimento"); // Motion Dist mm + LSTR MSG_MMU2_CUT_FILAMENT = _UxGT("Taglia"); // Cut + LSTR MSG_MMU2_CUTTING_FILAMENT = _UxGT("Taglia fil. %i..."); // Filament %i Cut... + LSTR MSG_MMU2_REMOVE_AND_CLICK = _UxGT("Rimuovi e click..."); // Remove and click... + LSTR MSG_MMU_SENSITIVITY = _UxGT("Sensibilità"); // Sensitivity + LSTR MSG_MMU_CUTTER = _UxGT("Taglierina"); // Cutter + LSTR MSG_MMU_CUTTER_MODE = _UxGT("Modalità taglierina"); // Cutter Mode + LSTR MSG_MMU_CUTTER_MODE_DISABLE = _UxGT("Disabilita"); // Disable + LSTR MSG_MMU_CUTTER_MODE_ENABLE = _UxGT("Abilita"); // Enable + LSTR MSG_MMU_CUTTER_MODE_ALWAYS = _UxGT("Sempre"); // Always + LSTR MSG_MMU_SPOOL_JOIN = _UxGT("Spool Join"); // Spool Join + LSTR MSG_MMU_STATISTICS = _UxGT("Statistiche"); // Statistics + LSTR MSG_MMU_RESET_FAIL_STATS = _UxGT("Azzera stat.fallimenti"); // Reset Fail Stats + LSTR MSG_MMU_RESET_STATS = _UxGT("Azzera tutte stat,"); // Reset All Stats + LSTR MSG_MMU_CURRENT_PRINT = _UxGT("Stampa attuale"); // Curr. print + LSTR MSG_MMU_CURRENT_PRINT_FAILURES = _UxGT("Fallimenti stampa attuale"); // Curr. print failures + LSTR MSG_MMU_LAST_PRINT = _UxGT("Ultima stampa"); // Last print + LSTR MSG_MMU_LAST_PRINT_FAILURES = _UxGT("Fallimenti ultima stampa"); // Last print failures + LSTR MSG_MMU_TOTAL = _UxGT("Totali"); // Total + LSTR MSG_MMU_TOTAL_FAILURES = _UxGT("Fallimenti totali"); // Total failures + LSTR MSG_MMU_DEV_INCREMENT_FAILS = _UxGT("Incrementa fallimenti"); // Increment fails + LSTR MSG_MMU_DEV_INCREMENT_LOAD_FAILS = _UxGT("Incrementa fallimenti caric."); // Increment load fails + LSTR MSG_MMU_FAILS = _UxGT("MMU fallimenti"); // MMU fails + LSTR MSG_MMU_LOAD_FAILS = _UxGT("MMU caric. falliti"); // MMU load fails + LSTR MSG_MMU_POWER_FAILS = _UxGT("MMU fallimenti potenza"); // MMU power fails + LSTR MSG_MMU_MATERIAL_CHANGES = _UxGT("Cambi materiale"); // Material changes + LSTR MSG_TMC_ACURRENT = _UxGT("Corrente driver ") STR_A; // (STR_A)Driver Current + LSTR MSG_TMC_BCURRENT = _UxGT("Corrente driver ") STR_B; // (STR_B)Driver Current + LSTR MSG_TMC_CCURRENT = _UxGT("Corrente driver ") STR_C; // (STR_C)Driver Current + LSTR MSG_TMC_ECURRENT = _UxGT("Corrente driver E"); // E Driver Current + LSTR MSG_TMC_HOMING_CURRENT = _UxGT("Corrente homing"); // Homing Current + LSTR MSG_FIXED_TIME_MOTION = _UxGT("Movim.Tempo-Fisso"); // Fixed-Time Motion + LSTR MSG_FTM_CMPN_MODE = _UxGT("@ Modo Comp: $"); // @ Comp. Mode: $ + LSTR MSG_FTM_AXIS_SYNC = _UxGT("Sinc. Asse"); // Axis Sync + LSTR MSG_FTM_DYN_MODE = _UxGT("Modo DF: $"); // DF Mode: $ + LSTR MSG_FTM_Z_BASED = _UxGT("Base-Z"); // Z-based + LSTR MSG_FTM_MASS_BASED = _UxGT("Base-Massa"); // Mass-based + LSTR MSG_FTM_BASE_FREQ_N = _UxGT("@ Freq. base"); // @ Base Freq. + LSTR MSG_FTM_DFREQ_K_N = _UxGT("@ Freq. dinam."); // @ Dyn. Freq. + LSTR MSG_FTM_ZETA_N = _UxGT("Smorzamento @"); // @ Damping + LSTR MSG_FTM_VTOL_N = _UxGT("Livello vib. @"); // @ Vib. Level + LSTR MSG_FTM_SMOOTH_TIME_N = _UxGT("@ Tempo smorzamento"); // @ Smoothing Time + LSTR MSG_FTM_POLY6_OVERSHOOT = _UxGT("@ Overshoot Poly6"); // @ Poly6 Overshoot + LSTR MSG_FTM_RESONANCE_TEST = _UxGT("Test risonanza"); // Resonance Test + LSTR MSG_FTM_RT_RUNNING = _UxGT("Test ris.in corso..."); // Res. Test Running... + LSTR MSG_FTM_RT_START_N = _UxGT("Avvia Test Asse @"); // Start @ Axis Test + LSTR MSG_FTM_RT_STOP = _UxGT("Annulla Test"); // Abort Test + LSTR MSG_FTM_RETRIEVE_FREQ = _UxGT("Calc. Res. Freq."); // Calc. Res. Freq. + LSTR MSG_FTM_RESONANCE_FREQ = _UxGT("Freq.Risonanza"); // Resonance Freq. + LSTR MSG_FTM_TIMELINE_FREQ = _UxGT("Cronologia (s)"); // Timeline (s) + LSTR MSG_TOUCH_CALIBRATION = _UxGT("Calibrazione touch"); // Touch Calibration + LSTR DGUS_MSG_NOT_WHILE_PRINTING = _UxGT("Non ammesso durante la stampa"); // Not allowed during print + LSTR DGUS_MSG_NOT_WHILE_IDLE = _UxGT("Non ammesso mentre è in riposo"); // Not allowed while idle + LSTR DGUS_MSG_NO_FILE_SELECTED = _UxGT("Nessun file selezionato"); // No file selected + LSTR DGUS_MSG_TEMP_TOO_LOW = _UxGT("Temperatura troppo bassa"); // Temperature too low + LSTR DGUS_MSG_EXECUTING_COMMAND = _UxGT("Esecuzione del comando..."); // Executing command... + LSTR DGUS_MSG_BED_PID_DISABLED = _UxGT("PID piatto disabilitato"); // Bed PID disabled + LSTR DGUS_MSG_PID_DISABLED = _UxGT("PID disabilitato"); // PID disabled + LSTR DGUS_MSG_PID_AUTOTUNING = _UxGT("Calibrazione PID..."); // PID autotuning... + LSTR DGUS_MSG_INVALID_RECOVERY_DATA = _UxGT("Dati di recupero non validi"); // Invalid recovery data + LSTR DGUS_MSG_HOMING_REQUIRED = _UxGT("Azzeramento richiesto"); // Homing required + LSTR DGUS_MSG_BUSY = _UxGT("Occupato"); // Busy + LSTR DGUS_MSG_HOMING = _UxGT("Azzeramento..."); // Homing... + LSTR DGUS_MSG_FW_OUTDATED = _UxGT("Richiesto aggiornamento DWIN GUI/OS"); // DWIN GUI/OS update required + LSTR DGUS_MSG_ABL_REQUIRED = _UxGT("Richiesto autolivellamento piatto"); // Auto bed leveling required + LSTR DGUS_MSG_PROBING_FAILED = _UxGT("Sondaggio fallito"); // Probing failed + LSTR DGUS_MSG_PROBING_SUCCESS = _UxGT("Sondaggio effettuato"); // Probing successful + LSTR DGUS_MSG_RESET_EEPROM = _UxGT("Reset EEPROM"); // EEPROM reset + LSTR DGUS_MSG_WRITE_EEPROM_FAILED = _UxGT("Scrittura EEPROM fallita"); // EEPROM write failed + LSTR DGUS_MSG_READ_EEPROM_FAILED = _UxGT("Lettura EEPROM fallita"); // EEPROM read failed + LSTR DGUS_MSG_FILAMENT_RUNOUT = _UxGT("Filament runout E%d"); // Filament runout E%d + LSTR MSG_DESC_FINDA_DIDNT_TRIGGER = _UxGT("FINDA non si è attivato durante il caricamento del filamento. Assicurarsi che il filamento possa muoversi e che FINDA funzioni."); // FINDA didn't trigger while loading the filament. Ensure the filament can move and FINDA works. + LSTR MSG_DESC_FINDA_FILAMENT_STUCK = _UxGT("FINDA non si è disattivato durante lo scaricamento del filamento. Provare a scaricarlo manualmente. Assicurarsi che il filamento si muova e che FINDA funzioni."); // FINDA didn't switch off while unloading filament. Try unloading manually. Ensure filament can move and FINDA works. + LSTR MSG_DESC_FSENSOR_DIDNT_TRIGGER = _UxGT("Il sensore del filamento non si è attivato durante il caricamento del filamento. Assicurarsi che il sensore sia calibrato e che il filamento lo abbia raggiunto."); // Filament sensor didn't trigger while loading the filament. Ensure the sensor is calibrated and the filament reached it. + LSTR MSG_DESC_FSENSOR_FILAMENT_STUCK = _UxGT("Il sensore del filamento non si è disattivato durante lo scaricamento del filamento. Assicurarsi che il filamento possa muoversi e che il sensore funzioni."); // Filament sensor didn't switch off while unloading filament. Ensure filament can move and the sensor works. + LSTR MSG_DESC_PULLEY_CANNOT_MOVE = _UxGT("Il motore della puleggia è bloccato. Assicurarsi che la puleggia possa muoversi e controllare il cablaggio."); // Pulley motor stalled. Ensure the pulley can move and check the wiring. + LSTR MSG_DESC_FSENSOR_TOO_EARLY = _UxGT("Il sensore del filamento si è attivato troppo presto durante il caricamento nell'estrusore. Verificare che non vi sia nulla incastrato nel tubo in PTFE. Verificare che il sensore legga correttamente."); // Filament sensor triggered too early while loading to extruder. Check there isn't anything stuck in PTFE tube. Check that sensor reads properly. + LSTR MSG_DESC_INSPECT_FINDA = _UxGT("Il selettore non si muove perché FINDA ha rilevato un filamento. Assicurarsi che non vi sia alcun filamento nel selettore e che FINDA funzioni correttamente."); // Selector can't move due to FINDA detecting a filament. Make sure no filament is in Selector and FINDA works properly. + LSTR MSG_DESC_LOAD_TO_EXTRUDER_FAILED = _UxGT("Caricamento nell'estrusore non riuscito. Ispezionare la forma della punta del filamento. Se necessario, perfezionare la calibrazione del sensore."); // Loading to extruder failed. Inspect the filament tip shape. Refine the sensor calibration, if needed. + LSTR MSG_DESC_SELECTOR_CANNOT_HOME = _UxGT("Il selettore non riesce a tornare correttamente in posizione iniziale. Verificare che non vi siano ostacoli al suo movimento."); // The Selector cannot home properly. Check for anything blocking its movement. + LSTR MSG_DESC_CANNOT_MOVE = _UxGT("Impossibile spostare il selettore o il tendicinghia."); // Can't move Selector or Idler. + LSTR MSG_DESC_IDLER_CANNOT_HOME = _UxGT("Il tendicinghi non riesce a tornare correttamente in posizione iniziale. Controllare che non ci siano ostacoli al suo movimento."); // The Idler cannot home properly. Check for anything blocking its movement. + LSTR MSG_DESC_TMC = _UxGT("Maggiori dettagli online."); // More details online. + LSTR MSG_DESC_MMU_NOT_RESPONDING = _UxGT("La MMU non risponde. Controllare il cablaggio e i connettori."); // MMU not responding. Check the wiring and connectors. + LSTR MSG_DESC_COMMUNICATION_ERROR = _UxGT("La MMU non risponde correttamente. Controllare il cablaggio e i connettori."); // MMU not responding correctly. Check the wiring and connectors. + LSTR MSG_DESC_FILAMENT_ALREADY_LOADED = _UxGT("Impossibile eseguire l'azione, il filamento è già caricato. Scaricarlo prima."); // Cannot perform the action, filament is already loaded. Unload it first. + LSTR MSG_DESC_INVALID_TOOL = _UxGT("L'utensile per il filamento richiesto non è disponibile su questo hardware. Controllare il codice G per verificare per l'indice non compreso nell'intervallo (T0-T4)."); // Requested filament tool is not available on this hardware. Check the G-code for tool index out of range (T0-T4). + LSTR MSG_DESC_QUEUE_FULL = _UxGT("Errore interno del firmware MMU, resetrtare la MMU."); // MMU Firmware internal error, please reset the MMU. + LSTR MSG_DESC_FW_RUNTIME_ERROR = _UxGT("Errore di runtime interno. Provare a reimpostare la MMU o ad aggiornare il firmware."); // Internal runtime error. Try resetting the MMU or updating the firmware. + LSTR MSG_DESC_UNLOAD_MANUALLY = _UxGT("Filamento rilevato in modo imprevisto. Assicurarsi che non vi sia alcun filamento caricato. Controllare il sensore ed il cablaggio."); // Filament detected unexpectedly. Ensure no filament is loaded. Check the sensors and wiring. + LSTR MSG_DESC_FILAMENT_EJECTED = _UxGT("Rimuovere il filamento espulso dalla parte anteriore della MMU."); // Remove the ejected filament from the front of the MMU. + LSTR MSG_DESC_FILAMENT_CHANGE = _UxGT("Sostituzione del filamento M600. Carica un nuovo filamento o espelli quello vecchio."); // M600 Filament Change. Load a new filament or eject the old one. + LSTR MSG_DESC_UNKNOWN_ERROR = _UxGT("Si è verificato un errore imprevisto."); // Unexpected error occurred. + LSTR MSG_DESC_FW_UPDATE_NEEDED = _UxGT("LA versione di FW della MMU non è supportato. Aggiornare alla versione ") MMU_VERSION "."; // MMU FW version is not supported. Update to version (MMU_VERSION). + LSTR MSG_BTN_RETRY = _UxGT("Riprova"); // Retry + LSTR MSG_BTN_RESET_MMU = _UxGT("Resetta MMU"); // ResetMMU + LSTR MSG_BTN_UNLOAD = _UxGT("Scarica"); // Unload + LSTR MSG_BTN_LOAD = _UxGT("Carica"); // Load + LSTR MSG_BTN_EJECT = _UxGT("Espelli"); // Eject + LSTR MSG_BTN_STOP = _UxGT("Stop"); // Stop + LSTR MSG_BTN_DISABLE_MMU = _UxGT("Disabilita"); // Disable + LSTR MSG_BTN_MORE = _UxGT("Più info"); // More Info + LSTR MSG_DONE = _UxGT("Eseguito"); // Done + LSTR MSG_FINISHING_MOVEMENTS = _UxGT("Termina movimenti"); // Finishing movements + LSTR MSG_LOADING_FILAMENT = _UxGT("Carica. filamento"); // Loading filament + LSTR MSG_UNLOADING_FILAMENT = _UxGT("Scarico filamento"); // Unloading filament + LSTR MSG_TESTING_FILAMENT = _UxGT("Testando filamento"); // Testing filament + LSTR MSG_EJECT_FROM_MMU = _UxGT("Espelli da MMU"); // Eject from MMU + LSTR MSG_CUT_FILAMENT = _UxGT("Taglia filamento"); // Cut filament + LSTR MSG_OFF = _UxGT("Off"); // Off + LSTR MSG_ON = _UxGT("On"); // On + LSTR MSG_PROGRESS_OK = _UxGT("OK"); // OK + LSTR MSG_PROGRESS_ENGAGE_IDLER = _UxGT("Innesto idler"); // Engaging idler + LSTR MSG_PROGRESS_DISENGAGE_IDLER = _UxGT("Disinnesto idler"); // Disengaging idler + LSTR MSG_PROGRESS_UNLOAD_FINDA = _UxGT("Scarico a FINDA"); // Unloading to FINDA + LSTR MSG_PROGRESS_UNLOAD_PULLEY = _UxGT("Scarico a puleggia"); // Unloading to pulley + LSTR MSG_PROGRESS_FEED_FINDA = _UxGT("Alim. a FINDA"); // Feeding to FINDA + LSTR MSG_PROGRESS_FEED_EXTRUDER = _UxGT("Alim. all'estrusore"); // Feeding to extruder + LSTR MSG_PROGRESS_FEED_NOZZLE = _UxGT("Alim. all'ugello"); // Feeding to nozzle + LSTR MSG_PROGRESS_AVOID_GRIND = _UxGT("Evita grind"); // Avoiding grind + LSTR MSG_PROGRESS_WAIT_USER = _UxGT("ERR attesa utente"); // ERR Wait for User + LSTR MSG_PROGRESS_ERR_INTERNAL = _UxGT("ERR interno"); // ERR Internal + LSTR MSG_PROGRESS_ERR_HELP_FIL = _UxGT("ERR aiuto filamento"); // ERR Help filament + LSTR MSG_PROGRESS_ERR_TMC = _UxGT("ERR anomalia TMC"); // ERR TMC failed + LSTR MSG_PROGRESS_SELECT_SLOT = _UxGT("Selez.slot filam."); // Selecting fil. slot + LSTR MSG_PROGRESS_PREPARE_BLADE = _UxGT("Preparaz.lama"); // Preparing blade + LSTR MSG_PROGRESS_PUSH_FILAMENT = _UxGT("Spinta fialmento"); // Pushing filament + LSTR MSG_PROGRESS_PERFORM_CUT = _UxGT("Esecuzione taglio"); // Performing cut + LSTR MSG_PROGRESSPSTRETURN_SELECTOR = _UxGT("Ritorno selettore"); // Returning selector + LSTR MSG_PROGRESS_PARK_SELECTOR = _UxGT("Parcheggio selettore"); // Parking selector + LSTR MSG_PROGRESS_EJECT_FILAMENT = _UxGT("Esplusione filamento"); // Ejecting filament + LSTR MSG_PROGRESSPSTRETRACT_FINDA = _UxGT("Ritrai a FINDA"); // Retract from FINDA + LSTR MSG_PROGRESS_HOMING = _UxGT("Homing"); // Homing + LSTR MSG_PROGRESS_MOVING_SELECTOR = _UxGT("Movim. selettore"); // Moving selector + LSTR MSG_PROGRESS_FEED_FSENSOR = _UxGT("Alim. a FSensor"); // Feeding to FSensor } namespace LanguageWide_it { using namespace LanguageNarrow_it; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_HOST_START_PRINT = _UxGT("Avvio stampa host"); - LSTR MSG_PRINTING_OBJECT = _UxGT("Stampa oggetto"); - LSTR MSG_CANCEL_OBJECT = _UxGT("Cancella oggetto"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Cancella oggetto {"); - LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Continua il job di stampa"); - LSTR MSG_MEDIA_MENU = _UxGT("Seleziona da ") MEDIA_TYPE_IT; - LSTR MSG_MEDIA_MENU_SD = _UxGT("Seleziona da scheda SD"); - LSTR MSG_MEDIA_MENU_USB = _UxGT("Seleziona da unità USB"); - LSTR MSG_NO_MEDIA = MEDIA_TYPE_EN _UxGT(" non trovato"); - LSTR MSG_TURN_OFF = _UxGT("Spegni la stampante"); - LSTR MSG_END_LOOPS = _UxGT("Termina i cicli di ripetizione"); - LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Nessun supporto inserito."); // ProUI - LSTR MSG_PLEASE_PREHEAT = _UxGT("Si prega di preriscaldare l'ugello."); // ProUI - LSTR MSG_INFO_PRINT_COUNT_RESET = _UxGT("Azzera i contatori di stampa"); // ProUI - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Contatori di stampa"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Tempo totale"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Lavoro più lungo"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Totale estruso"); - LSTR MSG_HOMING_FEEDRATE_N = _UxGT("Velocità @ di homing"); - LSTR MSG_HOMING_FEEDRATE_X = _UxGT("Velocità X di homing"); - LSTR MSG_HOMING_FEEDRATE_Y = _UxGT("Velocità Y di homing"); - LSTR MSG_HOMING_FEEDRATE_Z = _UxGT("Velocità Z di homing"); - LSTR MSG_EEPROM_INITIALIZED = _UxGT("Ripristinate impostazioni predefinite"); - LSTR MSG_PREHEAT_M_CHAMBER = _UxGT("Preriscalda camera per $"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Configurazioni preriscaldo $"); + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Configurazioni preriscaldo $"); // Preheat $ Settings + LSTR MSG_MEDIA_MENU = _UxGT("Seleziona da ") MEDIA_TYPE_IT; // Select from (MEDIA_TYPE_EN) + LSTR MSG_NO_MEDIA = MEDIA_TYPE_EN _UxGT(" non trovato"); // No (MEDIA_TYPE_EN) Found + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Contatori di stampa"); // Print Count + LSTR MSG_INFO_PRINT_TIME = _UxGT("Tempo totale"); // Print Time + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Lavoro più lungo"); // Longest Job Time + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Totale estruso"); // Extruded Total + LSTR MSG_PRINTING_OBJECT = _UxGT("Stampa oggetto"); // Printing Object + LSTR MSG_CANCEL_OBJECT = _UxGT("Cancella oggetto"); // Cancel Object + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Cancella oggetto {"); // Cancel Object { + LSTR MSG_HOST_START_PRINT = _UxGT("Avvio stampa host"); // Start Host Print + LSTR MSG_END_LOOPS = _UxGT("Termina i cicli di ripetizione"); // End Repeat Loops + LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Continua il job di stampa"); // Continue Print Job + LSTR MSG_TURN_OFF = _UxGT("Spegni la stampante"); // Turn off the printer + LSTR MSG_PLEASE_PREHEAT = _UxGT("Si prega di preriscaldare l'ugello."); // Please preheat the hot end. + LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Nessun supporto inserito."); // No media inserted. + LSTR MSG_INFO_PRINT_COUNT_RESET = _UxGT("Azzera i contatori di stampa"); // Reset Print Count + LSTR MSG_HOMING_FEEDRATE_N = _UxGT("Velocità @ di homing"); // @ Homing Feedrate + LSTR MSG_PREHEAT_M_CHAMBER = _UxGT("Preriscalda camera per $"); // Preheat $ Chamber + LSTR MSG_EEPROM_INITIALIZED = _UxGT("Ripristinate impostazioni predefinite"); // Default Settings Restored + LSTR MSG_MEDIA_MENU_SD = _UxGT("Seleziona da scheda SD"); // Select from SD Card + LSTR MSG_MEDIA_MENU_USB = _UxGT("Seleziona da unità USB"); // Select from USB Drive + LSTR MSG_HOMING_FEEDRATE_X = _UxGT("Velocità X di homing"); // X Homing Feedrate + LSTR MSG_HOMING_FEEDRATE_Y = _UxGT("Velocità Y di homing"); // Y Homing Feedrate + LSTR MSG_HOMING_FEEDRATE_Z = _UxGT("Velocità Z di homing"); // Z Homing Feedrate #endif } @@ -1081,17 +1023,17 @@ namespace LanguageTall_it { using namespace LanguageWide_it; #if LCD_HEIGHT >= 4 // Filament Change screens show up to 3 lines on a 4-line display - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_3_LINE("Premi per", "riprendere", "la stampa")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Sto parcheggiando...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Attendere avvio", "del cambio", "di filamento")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Inserisci il", "filamento e premi", "per continuare")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Premi per", "riscaldare ugello")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Riscaldam. ugello", "Attendere prego...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Attendere", "l'espulsione", "del filamento")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Attendere", "il caricamento", "del filamento")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_3_LINE("Attendere", "lo spurgo", "del filamento")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Premi x terminare", "lo spurgo", "del filamento")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Attendere", "la ripresa", "della stampa...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Attendere avvio", "del cambio", "di filamento")); // |Wait for|filament change|to start + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Inserisci il", "filamento e premi", "per continuare")); // |Insert filament|and press button|to continue + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Attendere", "l'espulsione", "del filamento")); // |Wait for|filament unload + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Attendere", "il caricamento", "del filamento")); // |Wait for|filament load + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Attendere", "la ripresa", "della stampa...")); // |Wait for print|to resume... + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Riscaldam. ugello", "Attendere prego...")); // |Nozzle heating|Please wait... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Premi per", "riscaldare ugello")); // |Press button|to heat nozzle + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_3_LINE("Premi per", "riprendere", "la stampa")); // |Press Button|to resume print + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Sto parcheggiando...")); // |Parking... + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_3_LINE("Attendere", "lo spurgo", "del filamento")); // |Wait for|filament purge + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Premi x terminare", "lo spurgo", "del filamento")); // |Click to finish|filament purge #endif } diff --git a/Marlin/src/lcd/language/language_jp_kana.h b/Marlin/src/lcd/language/language_jp_kana.h index 4acf1dddba..fd09f4b606 100644 --- a/Marlin/src/lcd/language/language_jp_kana.h +++ b/Marlin/src/lcd/language/language_jp_kana.h @@ -44,226 +44,212 @@ namespace LanguageNarrow_jp_kana { constexpr uint8_t CHARSIZE = 3; LSTR 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. - - // 片仮名表示定義 - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" ジュンビカンリョウ"); - LSTR MSG_MEDIA_INSERTED = _UxGT("メディアガソウニュウサレマシタ"); // "Card inserted" - LSTR MSG_MEDIA_REMOVED = _UxGT("メディアガアリマセン"); // "Card removed" - LSTR MSG_RELEASE_MEDIA = _UxGT("メディアノトリダシ"); - LSTR MSG_LCD_ENDSTOPS = _UxGT("エンドストップ"); // "Endstops" // Max length 8 characters - LSTR MSG_MAIN_MENU = _UxGT("メイン"); // "Main" - LSTR MSG_DISABLE_STEPPERS = _UxGT("モーターデンゲン オフ"); // "Disable steppers" - LSTR MSG_DEBUG_MENU = _UxGT("デバッグメニュー"); // "Debug Menu" - LSTR MSG_PROGRESS_BAR_TEST = _UxGT("プログレスバー テスト"); // "Progress Bar Test" - LSTR MSG_AUTO_HOME = _UxGT("ゲンテンフッキ"); // "Auto home" - LSTR MSG_AUTO_HOME_X = _UxGT("Xジク ゲンテンフッキ"); // "Home X" - LSTR MSG_AUTO_HOME_Y = _UxGT("Yジク ゲンテンフッキ"); // "Home Y" - LSTR MSG_AUTO_HOME_Z = _UxGT("Zジク ゲンテンフッキ"); // "Home Z" - LSTR MSG_LEVEL_BED_HOMING = _UxGT("ゲンテンフッキチュウ"); // "Homing XYZ" - LSTR MSG_LEVEL_BED_WAITING = _UxGT("レベリングカイシ"); // "Click to Begin" - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("ツギノソクテイテンヘ"); // "Next Point" - LSTR MSG_LEVEL_BED_DONE = _UxGT("レベリングカンリョウ"); // "Leveling Done!" - LSTR MSG_SET_HOME_OFFSETS = _UxGT("キジュンオフセットセッテイ"); // "Set home offsets" - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("オフセットガテキヨウサレマシタ"); // "Offsets applied" - - LSTR MSG_PREHEAT_1 = PREHEAT_1_LABEL _UxGT(" ヨネツ"); // "Preheat " PREHEAT_1_LABEL - LSTR MSG_PREHEAT_1_H = PREHEAT_1_LABEL _UxGT(" ヨネツ ~"); // "Preheat " PREHEAT_1_LABEL - LSTR MSG_PREHEAT_1_END = PREHEAT_1_LABEL _UxGT(" ヨネツノズル"); // " Nozzle" - LSTR MSG_PREHEAT_1_END_E = PREHEAT_1_LABEL _UxGT(" ヨネツノズル ~"); // " Nozzle" - LSTR MSG_PREHEAT_1_ALL = PREHEAT_1_LABEL _UxGT(" スベテヨネツ"); // " All" - LSTR MSG_PREHEAT_1_BEDONLY = PREHEAT_1_LABEL _UxGT(" ベッドヨネツ"); // " Bed" - LSTR MSG_PREHEAT_1_SETTINGS = PREHEAT_1_LABEL _UxGT(" ヨネツセッテイ"); // " conf" - - LSTR MSG_PREHEAT_M = _UxGT("$ ヨネツ"); // "Preheat " PREHEAT_1_LABEL - LSTR MSG_PREHEAT_M_H = _UxGT("$ ヨネツ ~"); // "Preheat " PREHEAT_1_LABEL - LSTR MSG_PREHEAT_M_END = _UxGT("$ ヨネツノズル"); // " Nozzle" - LSTR MSG_PREHEAT_M_END_E = _UxGT("$ ヨネツノズル ~"); // " Nozzle" - LSTR MSG_PREHEAT_M_ALL = _UxGT("$ スベテヨネツ"); // " All" - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("$ ベッドヨネツ"); // " Bed" - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("$ ヨネツセッテイ"); // " conf" - - LSTR MSG_COOLDOWN = _UxGT("カネツテイシ"); // "Cooldown" - LSTR MSG_SWITCH_PS_ON = _UxGT("デンゲン オン"); // "Switch power on" - LSTR MSG_SWITCH_PS_OFF = _UxGT("デンゲン オフ"); // "Switch power off" - LSTR MSG_EXTRUDE = _UxGT("オシダシ"); // "Extrude" - LSTR MSG_RETRACT = _UxGT("ヒキコミセッテイ"); // "Retract" - LSTR MSG_MOVE_AXIS = _UxGT("ジクイドウ"); // "Move axis" - LSTR MSG_PROBE_AND_LEVEL = _UxGT("プローブ アンド レベリング"); // "Probe and Level" - LSTR MSG_BED_LEVELING = _UxGT("ベッドレベリング"); // "Bed leveling" - LSTR MSG_LEVEL_BED = _UxGT("ベッドレベリング"); // "Level bed" - - LSTR MSG_MOVING = _UxGT("イドウチュウ"); // "Moving..." - LSTR MSG_FREE_XY = _UxGT("XYジク カイホウ"); // "Free XY" - LSTR MSG_MOVE_X = _UxGT("Xジク イドウ"); // "Move X" - LSTR MSG_MOVE_Y = _UxGT("Yジク イドウ"); // "Move Y" - LSTR MSG_MOVE_Z = _UxGT("Zジク イドウ"); // "Move Z" - LSTR MSG_MOVE_N = _UxGT("@ジク イドウ"); // "Move @" - LSTR MSG_MOVE_E = _UxGT("エクストルーダー"); // "Extruder" - LSTR MSG_MOVE_EN = _UxGT("* エクストルーダー"); // "En" - LSTR MSG_MOVE_N_MM = _UxGT("$mm イドウ"); // "Move $mm" - LSTR MSG_MOVE_N_IN = _UxGT("$in イドウ"); // "Move $in" - LSTR MSG_MOVE_N_DEG = _UxGT("$" LCD_STR_DEGREE " イドウ"); // "Move $°" - LSTR MSG_SPEED = _UxGT("ソクド"); // "Speed" - LSTR MSG_MESH_Z_OFFSET = _UxGT("Zオフセット"); // "Bed Z" - LSTR MSG_NOZZLE = _UxGT("ノズル"); // "Nozzle" - LSTR MSG_BED = _UxGT("ベッド"); // "Bed" - LSTR MSG_FAN_SPEED = _UxGT("ファンソクド"); // "Fan speed" - LSTR MSG_FLOW = _UxGT("トシュツリョウ"); // "Flow" - LSTR MSG_CONTROL = _UxGT("セイギョ"); // "Control" - LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" サイテイ"); // " Min" - LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" サイコウ"); // " Max" - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" ファクター"); // " Fact" - LSTR MSG_AUTOTEMP = _UxGT("ジドウオンドセイギョ"); // "Autotemp" - LSTR MSG_LCD_ON = _UxGT("オン"); // "On" - LSTR MSG_LCD_OFF = _UxGT("オフ"); // "Off" - LSTR MSG_SELECT_E = _UxGT("センタク *"); - LSTR MSG_ACC = _UxGT("カソクド mm/s") SUPERSCRIPT_TWO; // "Accel" - LSTR MSG_JERK = _UxGT("ヤクドウ mm/s"); // "Jerk" - LSTR MSG_VA_JERK = _UxGT("ジク ヤクドウ mm/s") STR_A; // "Va-jerk" - LSTR MSG_VB_JERK = _UxGT("ジク ヤクドウ mm/s") STR_B; // "Vb-jerk" - LSTR MSG_VC_JERK = _UxGT("ジク ヤクドウ mm/s") STR_C; // "Vc-jerk" - LSTR MSG_VN_JERK = _UxGT("ジク ヤクドウ mm/s@"); // "V@-jerk" - LSTR MSG_A_STEPS = STR_A _UxGT("ステップ/mm"); - LSTR MSG_B_STEPS = STR_B _UxGT("ステップ/mm"); - LSTR MSG_C_STEPS = STR_C _UxGT("ステップ/mm"); - LSTR MSG_N_STEPS = _UxGT("@ステップ/mm"); - LSTR MSG_VE_JERK = _UxGT("エクストルーダー ヤクド"); // "Ve-jerk" - LSTR MSG_VMAX_A = _UxGT("サイダイオクリソクド ") STR_A; // "Vmax A" - LSTR MSG_VMAX_B = _UxGT("サイダイオクリソクド ") STR_B; // "Vmax B" - LSTR MSG_VMAX_C = _UxGT("サイダイオクリソクド ") STR_C; // "Vmax C" - LSTR MSG_VMAX_E = _UxGT("サイダイオクリソクド E"); // "Vmax E" - LSTR MSG_VMAX_EN = _UxGT("サイダイオクリソクド *"); // "Vmax E1" - LSTR MSG_VMIN = _UxGT("サイショウオクリソクド"); // "Vmin" - LSTR MSG_VTRAV_MIN = _UxGT("サイショウイドウソクド"); // "VTrav min" - LSTR MSG_ACCELERATION = _UxGT("カソクド mm/s") SUPERSCRIPT_TWO; // "Accel" - LSTR MSG_A_RETRACT = _UxGT("ヒキコミカソクド"); // "A-retract" - LSTR MSG_A_TRAVEL = _UxGT("イドウカソクド"); // "A-travel" - LSTR MSG_TEMPERATURE = _UxGT("オンド"); // "Temperature" - LSTR MSG_MOTION = _UxGT("ウゴキセッテイ"); // "Motion" - LSTR MSG_FILAMENT = _UxGT("フィラメント"); // "Filament" - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm") SUPERSCRIPT_THREE; - LSTR MSG_FILAMENT_DIAM = _UxGT("フィラメントチョッケイ"); // "Fil. Dia." - LSTR MSG_FILAMENT_DIAM_E = _UxGT("フィラメントチョッケイ *"); - LSTR MSG_CONTRAST = _UxGT("LCDコントラスト"); // "LCD contrast" - LSTR MSG_STORE_EEPROM = _UxGT("EEPROMヘホゾン"); // "Store memory" - LSTR MSG_LOAD_EEPROM = _UxGT("EEPROMカラヨミコミ"); // "Load memory" - LSTR MSG_RESTORE_DEFAULTS = _UxGT("セッテイリセット"); // "Restore Defaults" - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("リフレッシュ"); // "Refresh" - LSTR MSG_INFO_SCREEN = _UxGT("ジョウホウガメン"); // "Info screen" - LSTR MSG_PREPARE = _UxGT("ジュンビセッテイ"); // "Prepare" - LSTR MSG_TUNE = _UxGT("チョウセイ"); // "Tune" - LSTR MSG_PAUSE_PRINT = _UxGT("イチジテイシ"); // "Pause print" - LSTR MSG_RESUME_PRINT = _UxGT("プリントサイカイ"); // "Resume print" - LSTR MSG_STOP_PRINT = _UxGT("プリントテイシ"); // "Stop print" - LSTR MSG_MEDIA_MENU = _UxGT("メディアカラプリント"); // "Print from SD" - LSTR MSG_NO_MEDIA = _UxGT("メディアガアリマセン"); // "Card removed" - LSTR MSG_DWELL = _UxGT("キュウシ"); // "Sleep..." - LSTR MSG_USERWAIT = _UxGT("ツヅケルニハクリックシテクダサイ"); // "Wait for user..." - LSTR MSG_PRINT_ABORTED = _UxGT("プリントガチュウシサレマシタ"); // "Print aborted" - LSTR MSG_NO_MOVE = _UxGT("ウゴキマセン"); // "No move." - LSTR MSG_KILLED = _UxGT("ヒジョウテイシ"); // "KILLED. " - LSTR MSG_STOPPED = _UxGT("テイシシマシタ"); // "STOPPED. " - LSTR MSG_CONTROL_RETRACT = _UxGT("ヒキコミリョウ mm"); // "Retract mm" - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("ヒキコミリョウS mm"); // "Swap Re.mm" - LSTR MSG_CONTROL_RETRACTF = _UxGT("ヒキコミソクド mm/s"); // "Retract V" - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("ノズルタイヒ mm"); // "Hop mm" - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("ホショウリョウ mm"); // "Unretr. mm" - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("ホショウリョウS mm"); // "S Unretr. mm" - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("ホショウソクド mm/s"); // "Unretract V" - LSTR MSG_AUTORETRACT = _UxGT("ジドウヒキコミ"); // "Auto-Retract" - LSTR MSG_FILAMENTCHANGE = _UxGT("フィラメントコウカン"); // "Change filament" - - LSTR MSG_ATTACH_MEDIA = _UxGT("SDカードをマウントする"); // "Attach SD Card" - LSTR MSG_ATTACH_SD = _UxGT("SDカードをマウントする"); // "Attach SD Card" - LSTR MSG_ATTACH_USB = _UxGT("USBメモリをマウントする"); // "Attach USB Drive" - LSTR MSG_CHANGE_MEDIA = _UxGT("メディアコウカン"); // "Change SD card" - LSTR MSG_RUN_AUTOFILES = _UxGT("ジドウカイシ"); // "Autostart" - - LSTR MSG_ZPROBE_OUT = _UxGT("Zプローブ ベッドガイ"); // "Z probe out. bed" - LSTR MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch ジコシンダン"); // "BLTouch Self-Test" - LSTR MSG_BLTOUCH_RESET = _UxGT("BLTouch リセット"); // "Reset BLTouch" - LSTR MSG_HOME_FIRST = _UxGT("サキニ %s ヲフッキサセテクダサイ"); // "Home ... first" - LSTR MSG_ZPROBE_XOFFSET = _UxGT("Xオフセット"); // "X Offset" - LSTR MSG_ZPROBE_YOFFSET = _UxGT("Yオフセット"); // "Y Offset" - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Zオフセット"); // "Z Offset" - LSTR MSG_ZPROBE_OFFSET_N = _UxGT("@オフセット"); // "@ Offset" - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("プローブZオフセット"); // "Babystep Probe Z" - LSTR MSG_BABYSTEP_X = _UxGT("Xジク ビドウ"); // "Babystep X" - LSTR MSG_BABYSTEP_Y = _UxGT("Yジク ビドウ"); // "Babystep Y" - LSTR MSG_BABYSTEP_Z = _UxGT("Zジク ビドウ"); // "Babystep Z" - LSTR MSG_ENDSTOP_ABORT = _UxGT("イドウゲンカイケンチキノウ"); // "Endstop abort" - LSTR MSG_ERR_HEATING_FAILED = _UxGT("カネツシッパイ"); // "Heating failed" - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("エラー:ジョウチョウサーミスターキノウ"); // "Err: REDUNDANT TEMP" - LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("ネツボウソウ"); // "THERMAL RUNAWAY" - LSTR MSG_ERR_MAXTEMP = _UxGT("エラー:サイコウオンチョウカ"); // "Err: MAXTEMP" - LSTR MSG_ERR_MINTEMP = _UxGT("エラー:サイテイオンミマン"); // "Err: MINTEMP" - LSTR MSG_HALTED = _UxGT("プリンターハテイシシマシタ"); // "PRINTER HALTED" - LSTR MSG_PLEASE_RESET = _UxGT("リセットシテクダサイ"); // "Please reset" - LSTR MSG_HEATING = _UxGT("カネツチュウ"); // "Heating..." - LSTR MSG_BED_HEATING = _UxGT("ベッド カネツチュウ"); // "Bed Heating..." - LSTR MSG_DELTA_CALIBRATE = _UxGT("デルタ コウセイ"); // "Delta Calibration" - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Xジク コウセイ"); // "Calibrate X" - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Yジク コウセイ"); // "Calibrate Y" - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Zジク コウセイ"); // "Calibrate Z" - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("チュウシン コウセイ"); // "Calibrate Center" - LSTR MSG_INFO_MENU = _UxGT("コノプリンターニツイテ"); // "About Printer" - LSTR MSG_INFO_PRINTER_MENU = _UxGT("プリンタージョウホウ"); // "Printer Info" - LSTR MSG_INFO_STATS_MENU = _UxGT("プリントジョウキョウ"); // "Printer Stats" - LSTR MSG_INFO_BOARD_MENU = _UxGT("セイギョケイジョウホウ"); // "Board Info" - LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("サーミスター"); // "Thermistors" - LSTR MSG_INFO_EXTRUDERS = _UxGT("エクストルーダースウ"); // "Extruders" - LSTR MSG_INFO_BAUDRATE = _UxGT("ボーレート"); // "Baud" - LSTR MSG_INFO_PROTOCOL = _UxGT("プロトコル"); // "Protocol" - LSTR MSG_CASE_LIGHT = _UxGT("キョウタイナイショウメイ"); // "Case light" - LSTR MSG_INFO_PRINT_COUNT = _UxGT("プリントスウ "); // "Print Count" - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("カンリョウスウ"); // "Completed" - LSTR MSG_INFO_PRINT_TIME = _UxGT("プリントジカンルイケイ"); // "Total print time" - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("サイチョウプリントジカン"); // "Longest job time" - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("フィラメントシヨウリョウルイケイ"); // "Extruded total" - LSTR MSG_INFO_MIN_TEMP = _UxGT("セッテイサイテイオン"); // "Min Temp" - LSTR MSG_INFO_MAX_TEMP = _UxGT("セッテイサイコウオン"); // "Max Temp" - LSTR MSG_INFO_PSU = _UxGT("デンゲンシュベツ"); // "Power Supply" - LSTR MSG_DRIVE_STRENGTH = _UxGT("モータークドウリョク"); // "Drive Strength" - LSTR MSG_DAC_PERCENT_N = _UxGT("@ DACシュツリョク %"); // "@ Driver %" - LSTR MSG_DAC_EEPROM_WRITE = _UxGT("EEPROMヘホゾン"); // "Store memory" - LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("イチジテイシ"); - LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("プリントサイカイ"); // "Resume print" - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("コウカンヲカイシシマス", "シバラクオマチクダサイ")); // "Wait for start of the filament" - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("フィラメントヌキダシチュウ", "シバラクオマチクダサイ")); // "Wait for filament unload" - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_2_LINE("フィラメントヲソウニュウシ,", "クリックスルトゾッコウシマス")); // "Insert filament and press button" - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("フィラメントソウテンチュウ", "シバラクオマチクダサイ")); // "Wait for filament load" - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("プリントヲサイカイシマス", "シバラクオマチクダサイ")); // "Wait for print to resume" - - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("マチガッタプリンター"); // "Wrong printer" - - LSTR MSG_CONFIGURATION = _UxGT("セッテイカンリ"); - LSTR MSG_ADVANCED_SETTINGS = _UxGT("ショウサイセッテイ"); - LSTR MSG_OUTAGE_RECOVERY = _UxGT("コショカイフク"); - LSTR MSG_INIT_EEPROM = _UxGT("EEPROMショキカ"); - - LSTR MSG_BUTTON_NEXT = _UxGT("ツギヘ"); - LSTR MSG_BUTTON_INIT = _UxGT("ショキカ"); - LSTR MSG_BUTTON_STOP = _UxGT("ストップ"); - LSTR MSG_BUTTON_PRINT = _UxGT("プリント"); - LSTR MSG_BUTTON_RESET = _UxGT("リセット"); - LSTR MSG_BUTTON_CANCEL = _UxGT("キャンセル"); - LSTR MSG_BUTTON_DONE = _UxGT("カンリョウ"); - - LSTR MSG_YES = _UxGT("ハイ"); - LSTR MSG_NO = _UxGT("イイエ"); - LSTR MSG_BACK = _UxGT("モドリ"); - LSTR MSG_MAX_SPEED = _UxGT("ソクド"); - LSTR MSG_STEPS_PER_MM = _UxGT("ステップ/mm"); - LSTR MSG_CUSTOM_COMMANDS = _UxGT("ユーザーコマンド"); - LSTR MSG_PRINT_PAUSED = _UxGT("プリントガイチジテイシサレマシタ"); - LSTR MSG_PRINTING = _UxGT("プリントチュウ..."); + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" ジュンビカンリョウ"); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = _UxGT("メディアガソウニュウサレマシタ"); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = _UxGT("メディアガアリマセン"); // (MEDIA_TYPE_EN) Removed + LSTR MSG_LCD_ENDSTOPS = _UxGT("エンドストップ"); // Endstops + LSTR MSG_MAIN_MENU = _UxGT("メイン"); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("モーターデンゲン オフ"); // Disable Steppers + LSTR MSG_AUTO_HOME = _UxGT("ゲンテンフッキ"); // Auto Home + LSTR MSG_AUTO_HOME_X = _UxGT("Xジク ゲンテンフッキ"); // Home X + LSTR MSG_AUTO_HOME_Y = _UxGT("Yジク ゲンテンフッキ"); // Home Y + LSTR MSG_AUTO_HOME_Z = _UxGT("Zジク ゲンテンフッキ"); // Home Z + LSTR MSG_LEVEL_BED_HOMING = _UxGT("ゲンテンフッキチュウ"); // Homing XYZ + LSTR MSG_LEVEL_BED_WAITING = _UxGT("レベリングカイシ"); // Click to Begin + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("ツギノソクテイテンヘ"); // Next Point + LSTR MSG_LEVEL_BED_DONE = _UxGT("レベリングカンリョウ"); // Leveling Done! + LSTR MSG_SET_HOME_OFFSETS = _UxGT("キジュンオフセットセッテイ"); // Set Home Offsets + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("オフセットガテキヨウサレマシタ"); // Offsets Applied + LSTR MSG_PREHEAT_1 = PREHEAT_1_LABEL _UxGT(" ヨネツ"); // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = PREHEAT_1_LABEL _UxGT(" ヨネツ ~"); // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = PREHEAT_1_LABEL _UxGT(" ヨネツノズル"); // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = PREHEAT_1_LABEL _UxGT(" ヨネツノズル ~"); // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_1_ALL = PREHEAT_1_LABEL _UxGT(" スベテヨネツ"); // Preheat (PREHEAT_1_LABEL) All + LSTR MSG_PREHEAT_1_BEDONLY = PREHEAT_1_LABEL _UxGT(" ベッドヨネツ"); // Preheat (PREHEAT_1_LABEL) Bed + LSTR MSG_PREHEAT_1_SETTINGS = PREHEAT_1_LABEL _UxGT(" ヨネツセッテイ"); // Preheat (PREHEAT_1_LABEL) Conf + LSTR MSG_PREHEAT_M = _UxGT("$ ヨネツ"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("$ ヨネツ ~"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("$ ヨネツノズル"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("$ ヨネツノズル ~"); // Preheat $ End ~ + LSTR MSG_PREHEAT_M_ALL = _UxGT("$ スベテヨネツ"); // Preheat $ All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("$ ベッドヨネツ"); // Preheat $ Bed + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("$ ヨネツセッテイ"); // Preheat $ Conf + LSTR MSG_COOLDOWN = _UxGT("カネツテイシ"); // Cooldown + LSTR MSG_SWITCH_PS_ON = _UxGT("デンゲン オン"); // Switch Power On + LSTR MSG_SWITCH_PS_OFF = _UxGT("デンゲン オフ"); // Switch Power Off + LSTR MSG_EXTRUDE = _UxGT("オシダシ"); // Extrude + LSTR MSG_RETRACT = _UxGT("ヒキコミセッテイ"); // Retract + LSTR MSG_MOVE_AXIS = _UxGT("ジクイドウ"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("プローブ アンド レベリング"); // Probe and Level + LSTR MSG_BED_LEVELING = _UxGT("ベッドレベリング"); // Bed Leveling + LSTR MSG_LEVEL_BED = _UxGT("ベッドレベリング"); // Level Bed + LSTR MSG_MOVE_X = _UxGT("Xジク イドウ"); // Move X + LSTR MSG_MOVE_Y = _UxGT("Yジク イドウ"); // Move Y + LSTR MSG_MOVE_Z = _UxGT("Zジク イドウ"); // Move Z + LSTR MSG_MOVE_N = _UxGT("@ジク イドウ"); // Move @ + LSTR MSG_MOVE_E = _UxGT("エクストルーダー"); // Move Extruder + LSTR MSG_MOVE_EN = _UxGT("* エクストルーダー"); // Move * + LSTR MSG_MOVE_N_MM = _UxGT("$mm イドウ"); // Move $mm + LSTR MSG_MOVE_N_IN = _UxGT("$in イドウ"); // Move $in + LSTR MSG_MOVE_N_DEG = _UxGT("$") LCD_STR_DEGREE _UxGT(" イドウ"); // Move $(LCD_STR_DEGREE) + LSTR MSG_SPEED = _UxGT("ソクド"); // Speed + LSTR MSG_MESH_Z_OFFSET = _UxGT("Zオフセット"); // Bed Z + LSTR MSG_NOZZLE = _UxGT("ノズル"); // Nozzle + LSTR MSG_BED = _UxGT("ベッド"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("ファンソクド"); // Fan Speed + LSTR MSG_FLOW = _UxGT("トシュツリョウ"); // Flow + LSTR MSG_CONTROL = _UxGT("セイギョ"); // Control + LSTR MSG_AUTOTEMP = _UxGT("ジドウオンドセイギョ"); // Autotemp + LSTR MSG_SELECT_E = _UxGT("センタク *"); // Select * + LSTR MSG_ACC = _UxGT("カソクド mm/s") SUPERSCRIPT_TWO; // Accel + LSTR MSG_VTRAV_MIN = _UxGT("サイショウイドウソクド"); // Min Travel Speed + LSTR MSG_ACCELERATION = _UxGT("カソクド mm/s") SUPERSCRIPT_TWO; // Acceleration + LSTR MSG_A_RETRACT = _UxGT("ヒキコミカソクド"); // Retract Accel + LSTR MSG_A_TRAVEL = _UxGT("イドウカソクド"); // Travel Accel + LSTR MSG_STEPS_PER_MM = _UxGT("ステップ/mm"); // Steps/mm + LSTR MSG_A_STEPS = STR_A _UxGT("ステップ/mm"); // (STR_A) Steps/mm + LSTR MSG_B_STEPS = STR_B _UxGT("ステップ/mm"); // (STR_B) Steps/mm + LSTR MSG_C_STEPS = STR_C _UxGT("ステップ/mm"); // (STR_C) Steps/mm + LSTR MSG_N_STEPS = _UxGT("@ステップ/mm"); // @ steps/mm + LSTR MSG_TEMPERATURE = _UxGT("オンド"); // Temperature + LSTR MSG_MOTION = _UxGT("ウゴキセッテイ"); // Motion + LSTR MSG_FILAMENT = _UxGT("フィラメント"); // Filament + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm") SUPERSCRIPT_THREE; // E in mm(SUPERSCRIPT_THREE) + LSTR MSG_FILAMENT_DIAM = _UxGT("フィラメントチョッケイ"); // Fil. Dia. + LSTR MSG_FILAMENT_DIAM_E = _UxGT("フィラメントチョッケイ *"); // Fil. Dia. * + LSTR MSG_CONTRAST = _UxGT("LCDコントラスト"); // LCD Contrast + LSTR MSG_STORE_EEPROM = _UxGT("EEPROMヘホゾン"); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("EEPROMカラヨミコミ"); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("セッテイリセット"); // Restore Defaults + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("リフレッシュ"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT("ジョウホウガメン"); // Info Screen + LSTR MSG_PREPARE = _UxGT("ジュンビセッテイ"); // Prepare + LSTR MSG_TUNE = _UxGT("チョウセイ"); // Tune + LSTR MSG_PAUSE_PRINT = _UxGT("イチジテイシ"); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("プリントサイカイ"); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("プリントテイシ"); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("メディアカラプリント"); // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = _UxGT("メディアガアリマセン"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_DWELL = _UxGT("キュウシ"); // Sleep... + LSTR MSG_USERWAIT = _UxGT("ツヅケルニハクリックシテクダサイ"); // Click to Resume... + LSTR MSG_PRINT_ABORTED = _UxGT("プリントガチュウシサレマシタ"); // Print Aborted + LSTR MSG_NO_MOVE = _UxGT("ウゴキマセン"); // No Move. + LSTR MSG_KILLED = _UxGT("ヒジョウテイシ"); // KILLED. + LSTR MSG_STOPPED = _UxGT("テイシシマシタ"); // STOPPED. + LSTR MSG_CONTROL_RETRACT = _UxGT("ヒキコミリョウ mm"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("ヒキコミリョウS mm"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACTF = _UxGT("ヒキコミソクド mm/s"); // Retract V + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("ノズルタイヒ mm"); // Hop mm + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("ホショウリョウ mm"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("ホショウリョウS mm"); // S Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("ホショウソクド mm/s"); // Unretract V + LSTR MSG_AUTORETRACT = _UxGT("ジドウヒキコミ"); // Auto-Retract + LSTR MSG_FILAMENTCHANGE = _UxGT("フィラメントコウカン"); // Change Filament + LSTR MSG_ATTACH_MEDIA = _UxGT("SDカードをマウントする"); // Attach (MEDIA_TYPE_EN) + LSTR MSG_ATTACH_SD = _UxGT("SDカードをマウントする"); // Attach SD Card + LSTR MSG_ATTACH_USB = _UxGT("USBメモリをマウントする"); // Attach USB Drive + LSTR MSG_CHANGE_MEDIA = _UxGT("メディアコウカン"); // Refresh (MEDIA_TYPE_EN) + LSTR MSG_RUN_AUTOFILES = _UxGT("ジドウカイシ"); // Run Autofiles + LSTR MSG_ZPROBE_OUT = _UxGT("Zプローブ ベッドガイ"); // Z Probe Past Bed + LSTR MSG_BLTOUCH_RESET = _UxGT("BLTouch リセット"); // Reset + LSTR MSG_ZPROBE_XOFFSET = _UxGT("Xオフセット"); // Probe X Offset + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Yオフセット"); // Probe Y Offset + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Zオフセット"); // Probe Z Offset + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("@オフセット"); // Probe @ Offset + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("プローブZオフセット"); // Babystep Probe Z + LSTR MSG_BABYSTEP_X = _UxGT("Xジク ビドウ"); // Babystep X + LSTR MSG_BABYSTEP_Y = _UxGT("Yジク ビドウ"); // Babystep Y + LSTR MSG_BABYSTEP_Z = _UxGT("Zジク ビドウ"); // Babystep Z + LSTR MSG_ENDSTOP_ABORT = _UxGT("イドウゲンカイケンチキノウ"); // Endstop Abort + LSTR MSG_ERR_HEATING_FAILED = _UxGT("カネツシッパイ"); // Heating Failed + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("エラー:ジョウチョウサーミスターキノウ"); // Err: REDUNDANT TEMP + LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("ネツボウソウ"); // THERMAL RUNAWAY + LSTR MSG_ERR_MAXTEMP = _UxGT("エラー:サイコウオンチョウカ"); // Err: MAXTEMP + LSTR MSG_ERR_MINTEMP = _UxGT("エラー:サイテイオンミマン"); // Err: MINTEMP + LSTR MSG_HALTED = _UxGT("プリンターハテイシシマシタ"); // PRINTER HALTED + LSTR MSG_PLEASE_RESET = _UxGT("リセットシテクダサイ"); // Please Reset + LSTR MSG_HEATING = _UxGT("カネツチュウ"); // Heating... + LSTR MSG_BED_HEATING = _UxGT("ベッド カネツチュウ"); // Bed Heating... + LSTR MSG_DELTA_CALIBRATE = _UxGT("デルタ コウセイ"); // Delta Calibration + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Xジク コウセイ"); // Calibrate X + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Yジク コウセイ"); // Calibrate Y + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Zジク コウセイ"); // Calibrate Z + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("チュウシン コウセイ"); // Calibrate Center + LSTR MSG_INFO_MENU = _UxGT("コノプリンターニツイテ"); // About Printer + LSTR MSG_INFO_PRINTER_MENU = _UxGT("プリンタージョウホウ"); // Printer Info + LSTR MSG_INFO_STATS_MENU = _UxGT("プリントジョウキョウ"); // Stats + LSTR MSG_INFO_BOARD_MENU = _UxGT("セイギョケイジョウホウ"); // Board Info + LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("サーミスター"); // Thermistors + LSTR MSG_INFO_EXTRUDERS = _UxGT("エクストルーダースウ"); // Extruders + LSTR MSG_INFO_BAUDRATE = _UxGT("ボーレート"); // Baud + LSTR MSG_INFO_PROTOCOL = _UxGT("プロトコル"); // Protocol + LSTR MSG_CASE_LIGHT = _UxGT("キョウタイナイショウメイ"); // Case Light + LSTR MSG_INFO_PRINT_COUNT = _UxGT("プリントスウ "); // Prints + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("カンリョウスウ"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("プリントジカンルイケイ"); // Total + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("サイチョウプリントジカン"); // Longest + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("フィラメントシヨウリョウルイケイ"); // Extruded + LSTR MSG_INFO_MIN_TEMP = _UxGT("セッテイサイテイオン"); // Min Temp + LSTR MSG_INFO_MAX_TEMP = _UxGT("セッテイサイコウオン"); // Max Temp + LSTR MSG_INFO_PSU = _UxGT("デンゲンシュベツ"); // PSU + LSTR MSG_DRIVE_STRENGTH = _UxGT("モータークドウリョク"); // Drive Strength + LSTR MSG_DAC_EEPROM_WRITE = _UxGT("EEPROMヘホゾン"); // DAC EEPROM Write + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("プリントサイカイ"); // Continue + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("コウカンヲカイシシマス", "シバラクオマチクダサイ")); // |Please wait... + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_2_LINE("フィラメントヲソウニュウシ,", "クリックスルトゾッコウシマス")); // |Insert and Click + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("フィラメントヌキダシチュウ", "シバラクオマチクダサイ")); // |Ejecting... + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("フィラメントソウテンチュウ", "シバラクオマチクダサイ")); // |Loading... + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("プリントヲサイカイシマス", "シバラクオマチクダサイ")); // |Resuming... + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" サイテイ"); // (LCD_STR_THERMOMETER) Min + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" サイコウ"); // (LCD_STR_THERMOMETER) Max + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" ファクター"); // (LCD_STR_THERMOMETER) Fact + LSTR MSG_LCD_ON = _UxGT("オン"); // On + LSTR MSG_LCD_OFF = _UxGT("オフ"); // Off + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("マチガッタプリンター"); // INCORRECT PRINTER + LSTR MSG_DEBUG_MENU = _UxGT("デバッグメニュー"); // Debug Menu + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("プログレスバー テスト"); // Progress Bar Test + LSTR MSG_MOVING = _UxGT("イドウチュウ"); // Moving... + LSTR MSG_FREE_XY = _UxGT("XYジク カイホウ"); // Free XY + LSTR MSG_HOME_FIRST = _UxGT("サキニ %s ヲフッキサセテクダサイ"); // Home %s First + LSTR MSG_YES = _UxGT("ハイ"); // YES + LSTR MSG_NO = _UxGT("イイエ"); // NO + LSTR MSG_BACK = _UxGT("モドリ"); // Back + LSTR MSG_ADVANCED_SETTINGS = _UxGT("ショウサイセッテイ"); // Advanced Settings + LSTR MSG_CONFIGURATION = _UxGT("セッテイカンリ"); // Configuration + LSTR MSG_CUSTOM_COMMANDS = _UxGT("ユーザーコマンド"); // Custom Commands + LSTR MSG_JERK = _UxGT("ヤクドウ mm/s"); // Jerk + LSTR MSG_VA_JERK = _UxGT("ジク ヤクドウ mm/s") STR_A; // Max (STR_A) Jerk + LSTR MSG_VB_JERK = _UxGT("ジク ヤクドウ mm/s") STR_B; // Max (STR_B) Jerk + LSTR MSG_VC_JERK = _UxGT("ジク ヤクドウ mm/s") STR_C; // Max (STR_C) Jerk + LSTR MSG_VN_JERK = _UxGT("ジク ヤクドウ mm/s@"); // Max @ Jerk + LSTR MSG_VE_JERK = _UxGT("エクストルーダー ヤクド"); // Max E Jerk + LSTR MSG_MAX_SPEED = _UxGT("ソクド"); // Max Speed (mm/s) + LSTR MSG_VMAX_A = _UxGT("サイダイオクリソクド ") STR_A; // Max (STR_A) Speed + LSTR MSG_VMAX_B = _UxGT("サイダイオクリソクド ") STR_B; // Max (STR_B) Speed + LSTR MSG_VMAX_C = _UxGT("サイダイオクリソクド ") STR_C; // Max (STR_C) Speed + LSTR MSG_VMAX_E = _UxGT("サイダイオクリソクド E"); // Max E Speed + LSTR MSG_VMAX_EN = _UxGT("サイダイオクリソクド *"); // Max * Speed + LSTR MSG_VMIN = _UxGT("サイショウオクリソクド"); // Min Velocity + LSTR MSG_INIT_EEPROM = _UxGT("EEPROMショキカ"); // Initialize EEPROM + LSTR MSG_BUTTON_NEXT = _UxGT("ツギヘ"); // Next + LSTR MSG_BUTTON_INIT = _UxGT("ショキカ"); // Init + LSTR MSG_BUTTON_STOP = _UxGT("ストップ"); // Stop + LSTR MSG_BUTTON_PRINT = _UxGT("プリント"); // Print + LSTR MSG_BUTTON_RESET = _UxGT("リセット"); // Reset + LSTR MSG_BUTTON_CANCEL = _UxGT("キャンセル"); // Cancel + LSTR MSG_BUTTON_DONE = _UxGT("カンリョウ"); // Done + LSTR MSG_OUTAGE_RECOVERY = _UxGT("コショカイフク"); // Power Outage + LSTR MSG_PRINT_PAUSED = _UxGT("プリントガイチジテイシサレマシタ"); // Print Paused + LSTR MSG_PRINTING = _UxGT("プリントチュウ..."); // Printing... + LSTR MSG_RELEASE_MEDIA = _UxGT("メディアノトリダシ"); // Release (MEDIA_TYPE_EN) + LSTR MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch ジコシンダン"); // Self-Test + LSTR MSG_DAC_PERCENT_N = _UxGT("@ DACシュツリョク %"); // @ Driver % + LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("イチジテイシ"); // PRINT PAUSED } namespace LanguageWide_jp_kana { using namespace LanguageNarrow_jp_kana; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 #endif } diff --git a/Marlin/src/lcd/language/language_ko_KR.h b/Marlin/src/lcd/language/language_ko_KR.h index c5c3900c3f..524fcfe857 100644 --- a/Marlin/src/lcd/language/language_ko_KR.h +++ b/Marlin/src/lcd/language/language_ko_KR.h @@ -42,83 +42,80 @@ namespace LanguageNarrow_ko_KR { constexpr uint8_t CHARSIZE = 1; LSTR LANGUAGE = _UxGT("Korean"); - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" 준비."); - LSTR MSG_BACK = _UxGT("뒤로"); - LSTR MSG_MEDIA_INSERTED = _UxGT("카드 삽입됨"); - LSTR MSG_MEDIA_REMOVED = _UxGT("카드 제거됨"); - LSTR MSG_LCD_ENDSTOPS = _UxGT("엔드스탑"); - LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("소프트 엔드스탑"); - LSTR MSG_MAIN_MENU = _UxGT("뒤로"); - LSTR MSG_ADVANCED_SETTINGS = _UxGT("고급 설정"); - LSTR MSG_CONFIGURATION = _UxGT("설정"); - LSTR MSG_RUN_AUTOFILES = _UxGT("자동 시작"); - LSTR MSG_DISABLE_STEPPERS = _UxGT("모터 정지"); - LSTR MSG_DEBUG_MENU = _UxGT("디버깅 메뉴"); - LSTR MSG_PROGRESS_BAR_TEST = _UxGT("프로그레스바 테스트"); - LSTR MSG_AUTO_HOME = _UxGT("오토홈"); - LSTR MSG_AUTO_HOME_X = _UxGT("X 홈으로"); - LSTR MSG_AUTO_HOME_Y = _UxGT("Y 홈으로"); - LSTR MSG_AUTO_HOME_Z = _UxGT("Z 홈으로"); - LSTR MSG_LEVEL_BED_HOMING = _UxGT("XYZ 홈으로"); - LSTR MSG_LEVEL_BED_WAITING = _UxGT("누르면 시작합니다"); - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("다음 Point"); - LSTR MSG_LEVEL_BED_DONE = _UxGT("레벨링 완료!"); - - LSTR MSG_PREHEAT_1 = _UxGT("예열하기 - ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("예열하기 - ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("예열하기 - ") PREHEAT_1_LABEL _UxGT(" 노즐"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("예열하기 - ") PREHEAT_1_LABEL _UxGT(" 노즐 ~"); - - LSTR MSG_PREHEAT_M = _UxGT("예열하기 - $"); - LSTR MSG_PREHEAT_M_H = _UxGT("예열하기 - $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("예열하기 - $ 노즐"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("예열하기 - $ 노즐 ~"); - - LSTR MSG_PREHEAT_CUSTOM = _UxGT("Custom 예열"); - LSTR MSG_COOLDOWN = _UxGT("식히기"); - LSTR MSG_SWITCH_PS_ON = _UxGT("스위치 전원 켜기"); - LSTR MSG_SWITCH_PS_OFF = _UxGT("스위치 전원 끄기"); - LSTR MSG_EXTRUDE = _UxGT("밀어내기"); - LSTR MSG_RETRACT = _UxGT("당기기"); - LSTR MSG_MOVE_AXIS = _UxGT("축 이동"); - LSTR MSG_PROBE_AND_LEVEL = _UxGT("프로브 & 레벨링"); - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Z 값 조정"); - LSTR MSG_BED_LEVELING = _UxGT("베드 레벨링"); - LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("미러 사본"); - LSTR MSG_UBL_DOING_G29 = _UxGT("오토레벨링 하기"); - LSTR MSG_NOZZLE = _UxGT("노즐"); - LSTR MSG_NOZZLE_N = _UxGT("노즐 ~"); - LSTR MSG_BED = _UxGT("베드"); - LSTR MSG_FAN_SPEED = _UxGT("펜 속도"); - LSTR MSG_FAN_SPEED_N = _UxGT("펜 속도 ~"); - LSTR MSG_EXTRA_FAN_SPEED = _UxGT("엑스트라 펜 속도"); - LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("엑스트라 펜 속도 ~"); - LSTR MSG_TEMPERATURE = _UxGT("온도"); - LSTR MSG_MOTION = _UxGT("동작"); - LSTR MSG_STORE_EEPROM = _UxGT("설정 저장하기"); - LSTR MSG_LOAD_EEPROM = _UxGT("설정 읽어오기"); - LSTR MSG_RESTORE_DEFAULTS = _UxGT("설정 되돌리기"); - LSTR MSG_INIT_EEPROM = _UxGT("EEPROM 초기화"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("새로고침"); - LSTR MSG_INFO_SCREEN = _UxGT("처음으로"); - LSTR MSG_PREPARE = _UxGT("준비하기"); - LSTR MSG_PAUSE_PRINT = _UxGT("일시정지"); - LSTR MSG_RESUME_PRINT = _UxGT("재시작"); - LSTR MSG_STOP_PRINT = _UxGT("출력중지"); - LSTR MSG_MEDIA_MENU = _UxGT("SD 카드출력"); - LSTR MSG_NO_MEDIA = _UxGT("SD 카드없음"); - LSTR MSG_DWELL = _UxGT("슬립모드..."); - LSTR MSG_PRINT_PAUSED = _UxGT("일시 정지됨"); - LSTR MSG_PRINTING = _UxGT("출력중..."); - LSTR MSG_PRINT_ABORTED = _UxGT("취소됨"); - LSTR MSG_KILLED = _UxGT("죽음. "); - LSTR MSG_STOPPED = _UxGT("멈춤. "); - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("잘못된 프린터"); + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" 준비."); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = _UxGT("카드 삽입됨"); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = _UxGT("카드 제거됨"); // (MEDIA_TYPE_EN) Removed + LSTR MSG_LCD_ENDSTOPS = _UxGT("엔드스탑"); // Endstops + LSTR MSG_MAIN_MENU = _UxGT("뒤로"); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("모터 정지"); // Disable Steppers + LSTR MSG_AUTO_HOME = _UxGT("오토홈"); // Auto Home + LSTR MSG_AUTO_HOME_X = _UxGT("X 홈으로"); // Home X + LSTR MSG_AUTO_HOME_Y = _UxGT("Y 홈으로"); // Home Y + LSTR MSG_AUTO_HOME_Z = _UxGT("Z 홈으로"); // Home Z + LSTR MSG_LEVEL_BED_HOMING = _UxGT("XYZ 홈으로"); // Homing XYZ + LSTR MSG_LEVEL_BED_WAITING = _UxGT("누르면 시작합니다"); // Click to Begin + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("다음 Point"); // Next Point + LSTR MSG_LEVEL_BED_DONE = _UxGT("레벨링 완료!"); // Leveling Done! + LSTR MSG_PREHEAT_1 = _UxGT("예열하기 - ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = _UxGT("예열하기 - ") PREHEAT_1_LABEL " ~"; // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = _UxGT("예열하기 - ") PREHEAT_1_LABEL _UxGT(" 노즐"); // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = _UxGT("예열하기 - ") PREHEAT_1_LABEL _UxGT(" 노즐 ~"); // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_M = _UxGT("예열하기 - $"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("예열하기 - $ ~"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("예열하기 - $ 노즐"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("예열하기 - $ 노즐 ~"); // Preheat $ End ~ + LSTR MSG_COOLDOWN = _UxGT("식히기"); // Cooldown + LSTR MSG_SWITCH_PS_ON = _UxGT("스위치 전원 켜기"); // Switch Power On + LSTR MSG_SWITCH_PS_OFF = _UxGT("스위치 전원 끄기"); // Switch Power Off + LSTR MSG_EXTRUDE = _UxGT("밀어내기"); // Extrude + LSTR MSG_RETRACT = _UxGT("당기기"); // Retract + LSTR MSG_MOVE_AXIS = _UxGT("축 이동"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("프로브 & 레벨링"); // Probe and Level + LSTR MSG_BED_LEVELING = _UxGT("베드 레벨링"); // Bed Leveling + LSTR MSG_NOZZLE = _UxGT("노즐"); // Nozzle + LSTR MSG_NOZZLE_N = _UxGT("노즐 ~"); // Nozzle ~ + LSTR MSG_BED = _UxGT("베드"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("펜 속도"); // Fan Speed + LSTR MSG_FAN_SPEED_N = _UxGT("펜 속도 ~"); // Fan Speed ~ + LSTR MSG_TEMPERATURE = _UxGT("온도"); // Temperature + LSTR MSG_MOTION = _UxGT("동작"); // Motion + LSTR MSG_STORE_EEPROM = _UxGT("설정 저장하기"); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("설정 읽어오기"); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("설정 되돌리기"); // Restore Defaults + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("새로고침"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT("처음으로"); // Info Screen + LSTR MSG_PREPARE = _UxGT("준비하기"); // Prepare + LSTR MSG_PAUSE_PRINT = _UxGT("일시정지"); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("재시작"); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("출력중지"); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("SD 카드출력"); // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = _UxGT("SD 카드없음"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_DWELL = _UxGT("슬립모드..."); // Sleep... + LSTR MSG_PRINT_ABORTED = _UxGT("취소됨"); // Print Aborted + LSTR MSG_KILLED = _UxGT("죽음. "); // KILLED. + LSTR MSG_STOPPED = _UxGT("멈춤. "); // STOPPED. + LSTR MSG_RUN_AUTOFILES = _UxGT("자동 시작"); // Run Autofiles + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Z 값 조정"); // Babystep Probe Z + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("잘못된 프린터"); // INCORRECT PRINTER + LSTR MSG_DEBUG_MENU = _UxGT("디버깅 메뉴"); // Debug Menu + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("프로그레스바 테스트"); // Progress Bar Test + LSTR MSG_BACK = _UxGT("뒤로"); // Back + LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("소프트 엔드스탑"); // Soft Endstops + LSTR MSG_ADVANCED_SETTINGS = _UxGT("고급 설정"); // Advanced Settings + LSTR MSG_CONFIGURATION = _UxGT("설정"); // Configuration + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Custom 예열"); // Preheat Custom + LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("미러 사본"); // Mirrored Copy + LSTR MSG_UBL_DOING_G29 = _UxGT("오토레벨링 하기"); // Doing G29 + LSTR MSG_EXTRA_FAN_SPEED = _UxGT("엑스트라 펜 속도"); // Extra Fan Speed + LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("엑스트라 펜 속도 ~"); // Extra Fan Speed ~ + LSTR MSG_INIT_EEPROM = _UxGT("EEPROM 초기화"); // Initialize EEPROM + LSTR MSG_PRINT_PAUSED = _UxGT("일시 정지됨"); // Print Paused + LSTR MSG_PRINTING = _UxGT("출력중..."); // Printing... } namespace LanguageWide_ko_KR { using namespace LanguageNarrow_ko_KR; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 #endif } diff --git a/Marlin/src/lcd/language/language_nl.h b/Marlin/src/lcd/language/language_nl.h index c567627020..cabedf853b 100644 --- a/Marlin/src/lcd/language/language_nl.h +++ b/Marlin/src/lcd/language/language_nl.h @@ -45,191 +45,175 @@ namespace LanguageNarrow_nl { constexpr uint8_t CHARSIZE = 1; LSTR LANGUAGE = _UxGT("Dutch"); - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" gereed."); - LSTR MSG_BACK = _UxGT("Terug"); - LSTR MSG_MEDIA_INSERTED = _UxGT("Kaart ingestoken"); - LSTR MSG_MEDIA_REMOVED = _UxGT("Kaart verwijderd"); - LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Max length 8 characters - LSTR MSG_MAIN_MENU = _UxGT("Hoofdmenu"); - LSTR MSG_DISABLE_STEPPERS = _UxGT("Motoren uit"); - LSTR MSG_DEBUG_MENU = _UxGT("Debug Menu"); // accepted English terms - LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Vooruitgang Test"); - - LSTR MSG_LEVEL_BED_WAITING = _UxGT("Klik voor begin"); - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Volgende Plaats"); - LSTR MSG_LEVEL_BED_DONE = _UxGT("Bed level kompl."); - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Zet home offsets"); - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("H offset toegep."); - - LSTR MSG_PREHEAT_1 = PREHEAT_1_LABEL _UxGT(" voorverwarmen"); - LSTR MSG_PREHEAT_1_H = PREHEAT_1_LABEL _UxGT(" voorverw. ~"); - LSTR MSG_PREHEAT_1_END = PREHEAT_1_LABEL _UxGT(" voorverw. Einde"); - LSTR MSG_PREHEAT_1_END_E = PREHEAT_1_LABEL _UxGT(" voorverw. Einde ~"); - LSTR MSG_PREHEAT_1_ALL = PREHEAT_1_LABEL _UxGT(" voorverw. aan"); - LSTR MSG_PREHEAT_1_BEDONLY = PREHEAT_1_LABEL _UxGT(" voorverw. Bed"); - LSTR MSG_PREHEAT_1_SETTINGS = PREHEAT_1_LABEL _UxGT(" verw. conf"); - - LSTR MSG_PREHEAT_M = _UxGT("$ voorverwarmen"); - LSTR MSG_PREHEAT_M_H = _UxGT("$ voorverw. ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("$ voorverw. Einde"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("$ voorverw. Einde ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("$ voorverw. aan"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("$ voorverw. Bed"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("$ verw. conf"); - - LSTR MSG_COOLDOWN = _UxGT("Afkoelen"); - LSTR MSG_SWITCH_PS_ON = _UxGT("Stroom aan"); - LSTR MSG_SWITCH_PS_OFF = _UxGT("Stroom uit"); - LSTR MSG_EXTRUDE = _UxGT("Extrude"); - LSTR MSG_RETRACT = _UxGT("Retract"); - LSTR MSG_MOVE_AXIS = _UxGT("As verplaatsen"); - LSTR MSG_PROBE_AND_LEVEL = _UxGT("Z probe & Level"); - LSTR MSG_BED_LEVELING = _UxGT("Bed Leveling"); - LSTR MSG_LEVEL_BED = _UxGT("Level bed"); - - LSTR MSG_MOVING = _UxGT("Verplaatsen..."); - LSTR MSG_FREE_XY = _UxGT("Vrij XY"); - LSTR MSG_MOVE_X = _UxGT("Verplaats X"); - LSTR MSG_MOVE_Y = _UxGT("Verplaats Y"); - LSTR MSG_MOVE_Z = _UxGT("Verplaats Z"); - LSTR MSG_MOVE_N = _UxGT("Verplaats @"); - LSTR MSG_MOVE_E = _UxGT("Extruder"); - LSTR MSG_MOVE_EN = _UxGT("Extruder *"); - LSTR MSG_MOVE_N_MM = _UxGT("Verplaats $mm"); - LSTR MSG_MOVE_N_IN = _UxGT("Verplaats $in"); - LSTR MSG_MOVE_N_DEG = _UxGT("Verplaats $") LCD_STR_DEGREE; - LSTR MSG_SPEED = _UxGT("Snelheid"); - LSTR MSG_MESH_Z_OFFSET = _UxGT("Bed Z"); - LSTR MSG_NOZZLE = _UxGT("Nozzle"); - LSTR MSG_NOZZLE_N = _UxGT("Nozzle ~"); - LSTR MSG_BED = _UxGT("Bed"); - LSTR MSG_FAN_SPEED = _UxGT("Fan snelheid"); - LSTR MSG_FAN_SPEED_N = _UxGT("Fan snelheid ~"); - LSTR MSG_FLOW = _UxGT("Flow"); - LSTR MSG_FLOW_N = _UxGT("Flow ~"); - LSTR MSG_CONTROL = _UxGT("Control"); - LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); - LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fact"); - LSTR MSG_AUTOTEMP = _UxGT("Autotemp"); - LSTR MSG_LCD_ON = _UxGT("Aan"); - LSTR MSG_LCD_OFF = _UxGT("Uit"); - LSTR MSG_SELECT_E = _UxGT("Selecteer *"); - LSTR MSG_ACC = _UxGT("Versn"); - LSTR MSG_TEMPERATURE = _UxGT("Temperatuur"); - LSTR MSG_MOTION = _UxGT("Beweging"); - LSTR MSG_FILAMENT = _UxGT("Filament"); - LSTR MSG_ADVANCE_K = _UxGT("Advance K"); // accepted english dutch - LSTR MSG_ADVANCE_K_E = _UxGT("Advance K *"); // accepted english dutch - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm") SUPERSCRIPT_THREE; - LSTR MSG_FILAMENT_DIAM = _UxGT("Fil. Dia."); - LSTR MSG_FILAMENT_DIAM_E = _UxGT("Fil. Dia. *"); - LSTR MSG_CONTRAST = _UxGT("LCD contrast"); - LSTR MSG_STORE_EEPROM = _UxGT("Geheugen opslaan"); - LSTR MSG_LOAD_EEPROM = _UxGT("Geheugen laden"); - LSTR MSG_RESTORE_DEFAULTS = _UxGT("Noodstop reset"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Ververs"); - LSTR MSG_INFO_SCREEN = _UxGT("Info scherm"); - LSTR MSG_PREPARE = _UxGT("Voorbereiden"); - LSTR MSG_TUNE = _UxGT("Afstellen"); - LSTR MSG_PAUSE_PRINT = _UxGT("Print pauzeren"); - LSTR MSG_RESUME_PRINT = _UxGT("Print hervatten"); - LSTR MSG_STOP_PRINT = _UxGT("Print stoppen"); - LSTR MSG_MEDIA_MENU = _UxGT("Print van SD"); - LSTR MSG_NO_MEDIA = _UxGT("Geen SD kaart"); - LSTR MSG_DWELL = _UxGT("Slapen..."); - LSTR MSG_USERWAIT = _UxGT("Wachten..."); - LSTR MSG_PRINT_ABORTED = _UxGT("Print afgebroken"); - LSTR MSG_NO_MOVE = _UxGT("Geen beweging."); - LSTR MSG_KILLED = _UxGT("Afgebroken. "); - LSTR MSG_STOPPED = _UxGT("Gestopt. "); - LSTR MSG_CONTROL_RETRACT = _UxGT("Retract mm"); // accepted English term in Dutch - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Ruil Retract mm"); - LSTR MSG_CONTROL_RETRACTF = _UxGT("Retract F"); - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Hop mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Unretr. mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Ruil Unretr. mm"); - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Unretr. FR"); - LSTR MSG_AUTORETRACT = _UxGT("Auto-Retract"); - LSTR MSG_FILAMENTCHANGE = _UxGT("Verv. Filament"); - LSTR MSG_FILAMENTCHANGE_E = _UxGT("Verv. Filament *"); - - LSTR MSG_ATTACH_MEDIA = _UxGT("Init. SD kaart"); - LSTR MSG_ATTACH_SD = _UxGT("Init. SD kaart"); - LSTR MSG_ATTACH_USB = _UxGT("Init. USB stick"); - LSTR MSG_CHANGE_MEDIA = _UxGT("Verv. SD Kaart"); - LSTR MSG_RUN_AUTOFILES = _UxGT("Autostart"); - - LSTR MSG_ZPROBE_OUT = _UxGT("Z probe uit. bed"); - LSTR MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch Zelf-Test"); - LSTR MSG_BLTOUCH_RESET = _UxGT("Reset BLTouch"); - LSTR MSG_HOME_FIRST = _UxGT("Home %s Eerst"); - LSTR MSG_ZPROBE_XOFFSET = _UxGT("X Offset"); // accepted English term in Dutch - LSTR MSG_ZPROBE_YOFFSET = _UxGT("Y Offset"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Z Offset"); - LSTR MSG_ZPROBE_OFFSET_N = _UxGT("@ Offset"); - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Babystep Probe Z"); - LSTR MSG_BABYSTEP_X = _UxGT("Babystap X"); - LSTR MSG_BABYSTEP_Y = _UxGT("Babystap Y"); - LSTR MSG_BABYSTEP_Z = _UxGT("Babystap Z"); - LSTR MSG_BABYSTEP_N = _UxGT("Babystap @"); - LSTR MSG_ENDSTOP_ABORT = _UxGT("Endstop afbr."); - LSTR MSG_ERR_HEATING_FAILED = _UxGT("Voorverw. fout"); - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Redun. temp fout"); - LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("Therm. wegloop"); - LSTR MSG_ERR_MAXTEMP = _UxGT("Err: Max. temp"); - LSTR MSG_ERR_MINTEMP = _UxGT("Err: Min. temp"); - LSTR MSG_HALTED = _UxGT("PRINTER GESTOPT"); - LSTR MSG_PLEASE_RESET = _UxGT("Reset A.U.B."); - LSTR MSG_HEATING = _UxGT("Voorwarmen..."); - LSTR MSG_BED_HEATING = _UxGT("Bed voorverw..."); - LSTR MSG_DELTA_CALIBRATE = _UxGT("Delta Calibratie"); - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Kalibreer X"); - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Kalibreer Y"); - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Kalibreer Z"); - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Kalibreer Midden"); - LSTR MSG_DELTA_SETTINGS = _UxGT("Delta conf"); - LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Auto Calibratie"); - - LSTR MSG_CASE_LIGHT = _UxGT("Case licht"); - - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Onjuiste printer"); - - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Aantal"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Voltooid"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Printtijd "); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Langste"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extrud."); - - LSTR MSG_INFO_MIN_TEMP = _UxGT("Min Temp"); - LSTR MSG_INFO_MAX_TEMP = _UxGT("Max Temp"); - LSTR MSG_INFO_PSU = _UxGT("PSU"); // accepted English term in Dutch - - LSTR MSG_DRIVE_STRENGTH = _UxGT("Motorstroom"); - - LSTR MSG_DAC_EEPROM_WRITE = _UxGT("DAC Opslaan"); - LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Hervat print"); - LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Nozzle: "); // accepted English term - // - // Filament Change screens show up to 2 lines on a 3-line display - // - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("Wacht voor", "start...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Wacht voor", "uitladen...")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Klik knop om...", "verw. nozzle.")); //nozzle accepted English term - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Verwarmen...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_2_LINE("Laad filament", "en druk knop")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Wacht voor", "inladen...")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Wacht voor", "printing...")); + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" gereed."); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = _UxGT("Kaart ingestoken"); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = _UxGT("Kaart verwijderd"); // (MEDIA_TYPE_EN) Removed + LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Endstops + LSTR MSG_MAIN_MENU = _UxGT("Hoofdmenu"); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("Motoren uit"); // Disable Steppers + LSTR MSG_LEVEL_BED_WAITING = _UxGT("Klik voor begin"); // Click to Begin + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Volgende Plaats"); // Next Point + LSTR MSG_LEVEL_BED_DONE = _UxGT("Bed level kompl."); // Leveling Done! + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Zet home offsets"); // Set Home Offsets + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("H offset toegep."); // Offsets Applied + LSTR MSG_PREHEAT_1 = PREHEAT_1_LABEL _UxGT(" voorverwarmen"); // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = PREHEAT_1_LABEL _UxGT(" voorverw. ~"); // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = PREHEAT_1_LABEL _UxGT(" voorverw. Einde"); // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = PREHEAT_1_LABEL _UxGT(" voorverw. Einde ~"); // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_1_ALL = PREHEAT_1_LABEL _UxGT(" voorverw. aan"); // Preheat (PREHEAT_1_LABEL) All + LSTR MSG_PREHEAT_1_BEDONLY = PREHEAT_1_LABEL _UxGT(" voorverw. Bed"); // Preheat (PREHEAT_1_LABEL) Bed + LSTR MSG_PREHEAT_1_SETTINGS = PREHEAT_1_LABEL _UxGT(" verw. conf"); // Preheat (PREHEAT_1_LABEL) Conf + LSTR MSG_PREHEAT_M = _UxGT("$ voorverwarmen"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("$ voorverw. ~"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("$ voorverw. Einde"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("$ voorverw. Einde ~"); // Preheat $ End ~ + LSTR MSG_PREHEAT_M_ALL = _UxGT("$ voorverw. aan"); // Preheat $ All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("$ voorverw. Bed"); // Preheat $ Bed + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("$ verw. conf"); // Preheat $ Conf + LSTR MSG_COOLDOWN = _UxGT("Afkoelen"); // Cooldown + LSTR MSG_SWITCH_PS_ON = _UxGT("Stroom aan"); // Switch Power On + LSTR MSG_SWITCH_PS_OFF = _UxGT("Stroom uit"); // Switch Power Off + LSTR MSG_EXTRUDE = _UxGT("Extrude"); // Extrude + LSTR MSG_RETRACT = _UxGT("Retract"); // Retract + LSTR MSG_MOVE_AXIS = _UxGT("As verplaatsen"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("Z probe & Level"); // Probe and Level + LSTR MSG_BED_LEVELING = _UxGT("Bed Leveling"); // Bed Leveling + LSTR MSG_LEVEL_BED = _UxGT("Level bed"); // Level Bed + LSTR MSG_MOVE_X = _UxGT("Verplaats X"); // Move X + LSTR MSG_MOVE_Y = _UxGT("Verplaats Y"); // Move Y + LSTR MSG_MOVE_Z = _UxGT("Verplaats Z"); // Move Z + LSTR MSG_MOVE_N = _UxGT("Verplaats @"); // Move @ + LSTR MSG_MOVE_E = _UxGT("Extruder"); // Move Extruder + LSTR MSG_MOVE_EN = _UxGT("Extruder *"); // Move * + LSTR MSG_MOVE_N_MM = _UxGT("Verplaats $mm"); // Move $mm + LSTR MSG_MOVE_N_IN = _UxGT("Verplaats $in"); // Move $in + LSTR MSG_MOVE_N_DEG = _UxGT("Verplaats $") LCD_STR_DEGREE; // Move $(LCD_STR_DEGREE) + LSTR MSG_SPEED = _UxGT("Snelheid"); // Speed + LSTR MSG_MESH_Z_OFFSET = _UxGT("Bed Z"); // Bed Z + LSTR MSG_NOZZLE = _UxGT("Nozzle"); // Nozzle + LSTR MSG_NOZZLE_N = _UxGT("Nozzle ~"); // Nozzle ~ + LSTR MSG_BED = _UxGT("Bed"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("Fan snelheid"); // Fan Speed + LSTR MSG_FAN_SPEED_N = _UxGT("Fan snelheid ~"); // Fan Speed ~ + LSTR MSG_FLOW = _UxGT("Flow"); // Flow + LSTR MSG_FLOW_N = _UxGT("Flow ~"); // Flow ~ + LSTR MSG_CONTROL = _UxGT("Control"); // Control + LSTR MSG_AUTOTEMP = _UxGT("Autotemp"); // Autotemp + LSTR MSG_SELECT_E = _UxGT("Selecteer *"); // Select * + LSTR MSG_ACC = _UxGT("Versn"); // Accel + LSTR MSG_TEMPERATURE = _UxGT("Temperatuur"); // Temperature + LSTR MSG_MOTION = _UxGT("Beweging"); // Motion + LSTR MSG_FILAMENT = _UxGT("Filament"); // Filament + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm") SUPERSCRIPT_THREE; // E in mm(SUPERSCRIPT_THREE) + LSTR MSG_FILAMENT_DIAM = _UxGT("Fil. Dia."); // Fil. Dia. + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Fil. Dia. *"); // Fil. Dia. * + LSTR MSG_CONTRAST = _UxGT("LCD contrast"); // LCD Contrast + LSTR MSG_STORE_EEPROM = _UxGT("Geheugen opslaan"); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("Geheugen laden"); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("Noodstop reset"); // Restore Defaults + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Ververs"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT("Info scherm"); // Info Screen + LSTR MSG_PREPARE = _UxGT("Voorbereiden"); // Prepare + LSTR MSG_TUNE = _UxGT("Afstellen"); // Tune + LSTR MSG_PAUSE_PRINT = _UxGT("Print pauzeren"); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("Print hervatten"); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("Print stoppen"); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("Print van SD"); // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = _UxGT("Geen SD kaart"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_DWELL = _UxGT("Slapen..."); // Sleep... + LSTR MSG_USERWAIT = _UxGT("Wachten..."); // Click to Resume... + LSTR MSG_PRINT_ABORTED = _UxGT("Print afgebroken"); // Print Aborted + LSTR MSG_NO_MOVE = _UxGT("Geen beweging."); // No Move. + LSTR MSG_KILLED = _UxGT("Afgebroken. "); // KILLED. + LSTR MSG_STOPPED = _UxGT("Gestopt. "); // STOPPED. + LSTR MSG_CONTROL_RETRACT = _UxGT("Retract mm"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Ruil Retract mm"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACTF = _UxGT("Retract F"); // Retract V + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Hop mm"); // Hop mm + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Unretr. mm"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Ruil Unretr. mm"); // S Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Unretr. FR"); // Unretract V + LSTR MSG_AUTORETRACT = _UxGT("Auto-Retract"); // Auto-Retract + LSTR MSG_FILAMENTCHANGE = _UxGT("Verv. Filament"); // Change Filament + LSTR MSG_FILAMENTCHANGE_E = _UxGT("Verv. Filament *"); // Change * Filament + LSTR MSG_ATTACH_MEDIA = _UxGT("Init. SD kaart"); // Attach (MEDIA_TYPE_EN) + LSTR MSG_ATTACH_SD = _UxGT("Init. SD kaart"); // Attach SD Card + LSTR MSG_ATTACH_USB = _UxGT("Init. USB stick"); // Attach USB Drive + LSTR MSG_CHANGE_MEDIA = _UxGT("Verv. SD Kaart"); // Refresh (MEDIA_TYPE_EN) + LSTR MSG_RUN_AUTOFILES = _UxGT("Autostart"); // Run Autofiles + LSTR MSG_ZPROBE_OUT = _UxGT("Z probe uit. bed"); // Z Probe Past Bed + LSTR MSG_BLTOUCH_RESET = _UxGT("Reset BLTouch"); // Reset + LSTR MSG_ZPROBE_XOFFSET = _UxGT("X Offset"); // Probe X Offset + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Y Offset"); // Probe Y Offset + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Z Offset"); // Probe Z Offset + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("@ Offset"); // Probe @ Offset + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Babystep Probe Z"); // Babystep Probe Z + LSTR MSG_BABYSTEP_X = _UxGT("Babystap X"); // Babystep X + LSTR MSG_BABYSTEP_Y = _UxGT("Babystap Y"); // Babystep Y + LSTR MSG_BABYSTEP_Z = _UxGT("Babystap Z"); // Babystep Z + LSTR MSG_BABYSTEP_N = _UxGT("Babystap @"); // Babystep @ + LSTR MSG_ENDSTOP_ABORT = _UxGT("Endstop afbr."); // Endstop Abort + LSTR MSG_ERR_HEATING_FAILED = _UxGT("Voorverw. fout"); // Heating Failed + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Redun. temp fout"); // Err: REDUNDANT TEMP + LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("Therm. wegloop"); // THERMAL RUNAWAY + LSTR MSG_ERR_MAXTEMP = _UxGT("Err: Max. temp"); // Err: MAXTEMP + LSTR MSG_ERR_MINTEMP = _UxGT("Err: Min. temp"); // Err: MINTEMP + LSTR MSG_HALTED = _UxGT("PRINTER GESTOPT"); // PRINTER HALTED + LSTR MSG_PLEASE_RESET = _UxGT("Reset A.U.B."); // Please Reset + LSTR MSG_HEATING = _UxGT("Voorwarmen..."); // Heating... + LSTR MSG_BED_HEATING = _UxGT("Bed voorverw..."); // Bed Heating... + LSTR MSG_DELTA_CALIBRATE = _UxGT("Delta Calibratie"); // Delta Calibration + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Kalibreer X"); // Calibrate X + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Kalibreer Y"); // Calibrate Y + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Kalibreer Z"); // Calibrate Z + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Kalibreer Midden"); // Calibrate Center + LSTR MSG_CASE_LIGHT = _UxGT("Case licht"); // Case Light + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Aantal"); // Prints + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Voltooid"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Printtijd "); // Total + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Langste"); // Longest + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extrud."); // Extruded + LSTR MSG_INFO_MIN_TEMP = _UxGT("Min Temp"); // Min Temp + LSTR MSG_INFO_MAX_TEMP = _UxGT("Max Temp"); // Max Temp + LSTR MSG_INFO_PSU = _UxGT("PSU"); // PSU + LSTR MSG_DRIVE_STRENGTH = _UxGT("Motorstroom"); // Drive Strength + LSTR MSG_DAC_EEPROM_WRITE = _UxGT("DAC Opslaan"); // DAC EEPROM Write + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Hervat print"); // Continue + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("Wacht voor", "start...")); // |Please wait... + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_2_LINE("Laad filament", "en druk knop")); // |Insert and Click + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Wacht voor", "uitladen...")); // |Ejecting... + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Wacht voor", "inladen...")); // |Loading... + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Wacht voor", "printing...")); // |Resuming... + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); // (LCD_STR_THERMOMETER) Min + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); // (LCD_STR_THERMOMETER) Max + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fact"); // (LCD_STR_THERMOMETER) Fact + LSTR MSG_LCD_ON = _UxGT("Aan"); // On + LSTR MSG_LCD_OFF = _UxGT("Uit"); // Off + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Onjuiste printer"); // INCORRECT PRINTER + LSTR MSG_DEBUG_MENU = _UxGT("Debug Menu"); // Debug Menu + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Vooruitgang Test"); // Progress Bar Test + LSTR MSG_MOVING = _UxGT("Verplaatsen..."); // Moving... + LSTR MSG_FREE_XY = _UxGT("Vrij XY"); // Free XY + LSTR MSG_HOME_FIRST = _UxGT("Home %s Eerst"); // Home %s First + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Verwarmen...")); // |Heating... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Klik knop om...", "verw. nozzle.")); // |Click to heat + LSTR MSG_BACK = _UxGT("Terug"); // Back + LSTR MSG_ADVANCE_K = _UxGT("Advance K"); // Advance K + LSTR MSG_ADVANCE_K_E = _UxGT("Advance K *"); // Advance K * + LSTR MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch Zelf-Test"); // Self-Test + LSTR MSG_DELTA_SETTINGS = _UxGT("Delta conf"); // Delta Settings + LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Auto Calibratie"); // Auto Calibration + LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Nozzle: "); // Nozzle: } namespace LanguageWide_nl { using namespace LanguageNarrow_nl; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Printed Aantal"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Totaal Voltooid"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Totale Printtijd"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Langste Printtijd"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Totaal Extrudeert"); + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Printed Aantal"); // Print Count + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Totaal Voltooid"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Totale Printtijd"); // Print Time + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Langste Printtijd"); // Longest Job Time + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Totaal Extrudeert"); // Extruded Total #endif } @@ -237,13 +221,13 @@ namespace LanguageTall_nl { using namespace LanguageWide_nl; #if LCD_HEIGHT >= 4 // Filament Change screens show up to 3 lines on a 4-line display - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Wacht voor start", "filament te", "verwisselen")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Wacht voor", "filament uit", "te laden")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Klik knop om...", "verw. nozzle.")); //nozzle accepted English term - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Nozzle verw.", "Wacht a.u.b.")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Laad filament", "en druk knop", "om verder...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Wacht voor", "filament te", "laden")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Wacht voor print", "om verder", "te gaan")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Wacht voor start", "filament te", "verwisselen")); // |Wait for|filament change|to start + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Laad filament", "en druk knop", "om verder...")); // |Insert filament|and press button|to continue + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Wacht voor", "filament uit", "te laden")); // |Wait for|filament unload + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Wacht voor", "filament te", "laden")); // |Wait for|filament load + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Wacht voor print", "om verder", "te gaan")); // |Wait for print|to resume... + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Nozzle verw.", "Wacht a.u.b.")); // |Nozzle heating|Please wait... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Klik knop om...", "verw. nozzle.")); // |Press button|to heat nozzle #endif } diff --git a/Marlin/src/lcd/language/language_pl.h b/Marlin/src/lcd/language/language_pl.h index ffa8044653..d24847bc95 100644 --- a/Marlin/src/lcd/language/language_pl.h +++ b/Marlin/src/lcd/language/language_pl.h @@ -44,487 +44,459 @@ namespace LanguageNarrow_pl { constexpr uint8_t CHARSIZE = 2; LSTR LANGUAGE = _UxGT("Polski"); - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" gotowy."); - LSTR MSG_YES = _UxGT("TAK"); - LSTR MSG_NO = _UxGT("NIE"); - LSTR MSG_BACK = _UxGT("Wstecz"); - - LSTR MSG_MEDIA_ABORTING = _UxGT("Przerywanie..."); - LSTR MSG_MEDIA_INSERTED = _UxGT("Karta włożona"); - LSTR MSG_MEDIA_REMOVED = _UxGT("Karta usunięta"); - LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Błąd inicializacji karty"); - LSTR MSG_MEDIA_READ_ERROR = _UxGT("Bład odczytu karty"); - LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("Urządzenie USB usunięte"); - LSTR MSG_USB_FD_USB_FAILED = _UxGT("Błąd uruchomienia USB"); - - LSTR MSG_LCD_ENDSTOPS = _UxGT("Krańców."); // Max length 8 characters - LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Progr. Krańcówki"); - LSTR MSG_MAIN_MENU = _UxGT("Menu główne"); - LSTR MSG_ADVANCED_SETTINGS = _UxGT("Ustawienie zaawansowane"); - LSTR MSG_CONFIGURATION = _UxGT("Konfiguracja"); - LSTR MSG_DISABLE_STEPPERS = _UxGT("Wyłącz silniki"); - LSTR MSG_DEBUG_MENU = _UxGT("Menu Debugowania"); - LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Testowy pasek postępu"); - LSTR MSG_AUTO_HOME = _UxGT("Pozycja zerowa"); - LSTR MSG_AUTO_HOME_X = _UxGT("Zeruj X"); - LSTR MSG_AUTO_HOME_Y = _UxGT("Zeruj Y"); - LSTR MSG_AUTO_HOME_Z = _UxGT("Zeruj Z"); - LSTR MSG_AUTO_Z_ALIGN = _UxGT("Autowyrównanie Z"); - LSTR MSG_DECREASING_ACCURACY = _UxGT("Spadek dokładności!"); - LSTR MSG_ACCURACY_ACHIEVED = _UxGT("Osiągnięto dokładność"); - LSTR MSG_LEVEL_BED_HOMING = _UxGT("Pozycja zerowa"); - LSTR MSG_LEVEL_BED_WAITING = _UxGT("Kliknij by rozp."); - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Następny punkt"); - LSTR MSG_LEVEL_BED_DONE = _UxGT("Wypoziomowano!"); - LSTR MSG_Z_FADE_HEIGHT = _UxGT("Wys. zanikania"); - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Ust. poz. zer."); - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Poz. zerowa ust."); - LSTR MSG_SELECT_ORIGIN = _UxGT("Wybierz punkt zero"); - LSTR MSG_LAST_VALUE_SP = _UxGT("Poprzednia wartość "); - - LSTR MSG_PREHEAT_1 = _UxGT("Rozgrzej ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Rozgrzej ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" Dysza"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" Dysza ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" wsz."); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" stół"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" ustaw."); - - LSTR MSG_PREHEAT_M = _UxGT("Rozgrzej $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Rozgrzej $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Rozgrzej $ Dysza"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Rozgrzej $ Dysza ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Rozgrzej $ wsz."); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Rozgrzej $ stół"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Rozgrzej $ ustaw."); - - LSTR MSG_PREHEAT_CUSTOM = _UxGT("Rozgrzej własne ust."); - LSTR MSG_COOLDOWN = _UxGT("Chłodzenie"); - - LSTR MSG_CUTTER_FREQUENCY = _UxGT("Częstotliwość"); - LSTR MSG_LASER_MENU = _UxGT("Sterowanie Lasera"); - LSTR MSG_SPINDLE_MENU = _UxGT("Sterowanie wrzeciona"); - LSTR MSG_LASER_POWER = _UxGT("Zasilanie Lasera"); - LSTR MSG_SPINDLE_POWER = _UxGT("Zasilanie wrzeciona"); - LSTR MSG_SPINDLE_REVERSE = _UxGT("Rewers wrzeciona"); - LSTR MSG_SWITCH_PS_ON = _UxGT("Włącz zasilacz"); - LSTR MSG_SWITCH_PS_OFF = _UxGT("Wyłącz zasilacz"); - LSTR MSG_EXTRUDE = _UxGT("Ekstruzja"); - LSTR MSG_RETRACT = _UxGT("Wycofanie"); - LSTR MSG_MOVE_AXIS = _UxGT("Ruch osi"); - LSTR MSG_PROBE_AND_LEVEL = _UxGT("Sonda/poziomowanie"); - LSTR MSG_BED_LEVELING = _UxGT("Poziomowanie stołu"); - LSTR MSG_LEVEL_BED = _UxGT("Wypoziomuj stół"); - LSTR MSG_BED_TRAMMING = _UxGT("Narożniki poziomowania"); - LSTR MSG_NEXT_CORNER = _UxGT("Nastepny narożnik"); - LSTR MSG_MESH_EDITOR = _UxGT("Edytor siatki"); - LSTR MSG_EDIT_MESH = _UxGT("Edycja siatki"); - LSTR MSG_EDITING_STOPPED = _UxGT("Edycja siatki zatrzymana"); - LSTR MSG_PROBING_POINT = _UxGT("Punkt pomiarowy"); - LSTR MSG_MESH_X = _UxGT("Indeks X"); - LSTR MSG_MESH_Y = _UxGT("Indeks Y"); - LSTR MSG_MESH_EDIT_Z = _UxGT("Wartość Z"); - LSTR MSG_CUSTOM_COMMANDS = _UxGT("Własne Polecenia"); - LSTR MSG_M48_TEST = _UxGT("M48 Test sondy"); - LSTR MSG_M48_POINT = _UxGT("M48 Punky"); - LSTR MSG_M48_DEVIATION = _UxGT("Odchylenie"); - LSTR MSG_IDEX_MENU = _UxGT("Tryb IDEX"); - LSTR MSG_OFFSETS_MENU = _UxGT("Przesunięcie narzędzia"); - LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-Parkowanie"); - LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplikowanie"); - LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Kopia lustrzana"); - LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Pełne sterowanie"); - LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2ga dysza Z"); - LSTR MSG_HOTEND_OFFSET_N = _UxGT("2ga dysza @"); - LSTR MSG_UBL_DOING_G29 = _UxGT("Wykonywanie G29"); - LSTR MSG_UBL_TOOLS = _UxGT("Narzędzia UBL"); - LSTR MSG_LCD_TILTING_MESH = _UxGT("Punkt pochylenia"); - LSTR MSG_UBL_MANUAL_MESH = _UxGT("Ręczne Budowanie Siatki"); - LSTR MSG_UBL_BC_INSERT = _UxGT("Umieść podkładkę i zmierz"); - LSTR MSG_UBL_BC_INSERT2 = _UxGT("Zmierz"); - LSTR MSG_UBL_BC_REMOVE = _UxGT("Usuń & Zmierz Stół"); - LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Przesuwanie do następnego"); - LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Temperatura stołu"); - LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Temperatura stołu"); - LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Temperatura dyszy"); - LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Temperatura dyszy"); - LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Edycja własnej siatki"); - LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Dostrajanie siatki"); - LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Koniec edycji siati"); - LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Buduj własna siatkę"); - LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Buduj siatkę"); - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Buduj siatkę ($)"); - LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Buduj siatkę na zimno"); - LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Dostrojenie wysokości siatki"); - LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Wartość wysokości"); - LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Sprawdzenie siatki"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Sprawdzenie siatki ($)"); - LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Sprawdzenie własnej siatki"); - LSTR MSG_G26_HEATING_BED = _UxGT("G26 Nagrzewanie stołu"); - LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 Nagrzewanie dyszy"); - LSTR MSG_G26_MANUAL_PRIME = _UxGT("Napełnianie ręczne..."); - LSTR MSG_G26_FIXED_LENGTH = _UxGT("Napełnij kreśloną długością"); - LSTR MSG_G26_PRIME_DONE = _UxGT("Napełnianie zakończone"); - LSTR MSG_G26_CANCELED = _UxGT("G26 Przewane"); - LSTR MSG_G26_LEAVING = _UxGT("Opuszczanie G26"); - LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Kontynuuj tworzenie siatki"); - LSTR MSG_UBL_MESH_LEVELING = _UxGT("Poziomowanie siatką"); - LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("Poziomowaie 3-punktowe"); - LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Poziomowaie według siatki"); - LSTR MSG_UBL_MESH_LEVEL = _UxGT("Poziomuj siatkę"); - LSTR MSG_UBL_SIDE_POINTS = _UxGT("Punkty boczne"); - LSTR MSG_UBL_MAP_TYPE = _UxGT("Rodzaj mapy"); - LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Wyslij mapę siatki"); - LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Wyslij do Hosta"); - LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Wyslij do CSV"); - LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Kopia poza drukarką"); - LSTR MSG_UBL_INFO_UBL = _UxGT("Wyslij info UBL"); - LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Stopień wypełnienia"); - LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Ręczne wypełnienie"); - LSTR MSG_UBL_SMART_FILLIN = _UxGT("Inteligentne wypełnienie"); - LSTR MSG_UBL_FILLIN_MESH = _UxGT("Wypełnienie siatki"); - LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Unieważnij wszystko"); - LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Unieważnij najbliższy"); - LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Dostrajaj wszystko"); - LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Dostrajaj najbliższy"); - LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Przechowywanie siatki"); - LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Slot Pamięci"); - LSTR MSG_UBL_LOAD_MESH = _UxGT("Załaduj siatkę stołu"); - LSTR MSG_UBL_SAVE_MESH = _UxGT("Zapisz siatkę stołu"); - LSTR MSG_MESH_LOADED = _UxGT("Siatka %i załadowana"); - LSTR MSG_MESH_SAVED = _UxGT("Siatka %i zapisana"); - LSTR MSG_UBL_NO_STORAGE = _UxGT("Brak magazynu"); - LSTR MSG_UBL_SAVE_ERROR = _UxGT("Błąd: Zapis UBL"); - LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Bład: Odczyt UBL"); - LSTR MSG_UBL_Z_OFFSET = _UxGT("Przesunięcie Z: "); - LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Przesunięcie Z zatrzymane"); - LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("UBL Krok po kroku"); - LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1. Tworzenie zimnej siatki"); - LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2. Inteligentne wypełnienie"); - LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3. Sprawdzenie siatki"); - LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4. Dostrojenie wszystkiego"); - LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5. Sprawdzenie siatki"); - LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6. Dostrojenie wszystkiego"); - LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7. Zapis siatki stołu"); - - LSTR MSG_LED_CONTROL = _UxGT("Sterowanie LED"); - LSTR MSG_LIGHTS = _UxGT("Światła"); - LSTR MSG_LIGHT_N = _UxGT("Światło #{"); - LSTR MSG_LED_PRESETS = _UxGT("Ustawienia świateł"); - LSTR MSG_SET_LEDS_RED = _UxGT("Czerwony"); - LSTR MSG_SET_LEDS_ORANGE = _UxGT("Pomarańczowy"); - LSTR MSG_SET_LEDS_YELLOW = _UxGT("Zółty"); - LSTR MSG_SET_LEDS_GREEN = _UxGT("Zielony"); - LSTR MSG_SET_LEDS_BLUE = _UxGT("Niebieski"); - LSTR MSG_SET_LEDS_INDIGO = _UxGT("Indygo"); - LSTR MSG_SET_LEDS_VIOLET = _UxGT("Fioletowy"); - LSTR MSG_SET_LEDS_WHITE = _UxGT("Biały"); - LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Domyślny"); - LSTR MSG_LED_CHANNEL_N = _UxGT("Kanał {"); - LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Jasność"); - LSTR MSG_CUSTOM_LEDS = _UxGT("Własne światła"); - LSTR MSG_INTENSITY_R = _UxGT("Czerwony"); - LSTR MSG_INTENSITY_G = _UxGT("Zielony"); - LSTR MSG_INTENSITY_B = _UxGT("Niebieski"); - LSTR MSG_INTENSITY_W = _UxGT("Biały"); - LSTR MSG_LED_BRIGHTNESS = _UxGT("Jasność"); - - LSTR MSG_MOVING = _UxGT("Ruch..."); - LSTR MSG_FREE_XY = _UxGT("Swobodne XY"); - LSTR MSG_MOVE_X = _UxGT("Przesuń w X"); - LSTR MSG_MOVE_Y = _UxGT("Przesuń w Y"); - LSTR MSG_MOVE_Z = _UxGT("Przesuń w Z"); - LSTR MSG_MOVE_N = _UxGT("Przesuń w @"); - LSTR MSG_MOVE_E = _UxGT("Ekstruzja (os E)"); - LSTR MSG_MOVE_EN = _UxGT("Ekstruzja (os E) *"); - LSTR MSG_HOTEND_TOO_COLD = _UxGT("Dysza za zimna"); - LSTR MSG_MOVE_N_MM = _UxGT("Przesuń co $mm"); - LSTR MSG_MOVE_N_IN = _UxGT("Przesuń co $in"); - LSTR MSG_MOVE_N_DEG = _UxGT("Przesuń co $") LCD_STR_DEGREE; - LSTR MSG_SPEED = _UxGT("Predkość"); - LSTR MSG_MESH_Z_OFFSET = _UxGT("Stół Z"); - LSTR MSG_NOZZLE = _UxGT("Dysza"); - LSTR MSG_NOZZLE_N = _UxGT("Dysza ~"); - LSTR MSG_NOZZLE_STANDBY = _UxGT("Dysza w oczekiwaniu"); - LSTR MSG_BED = _UxGT("Stół"); - LSTR MSG_CHAMBER = _UxGT("Obudowa"); - LSTR MSG_FAN_SPEED = _UxGT("Obroty wentylatora"); - LSTR MSG_FAN_SPEED_N = _UxGT("Obroty wentylatora ~"); - LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Obroty dodatkowego wentylatora"); - LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Obroty dodatkowego wentylatora ~"); - LSTR MSG_CONTROLLER_FAN = _UxGT("Wentylator kontrolera"); - LSTR MSG_FLOW = _UxGT("Przepływ"); - LSTR MSG_FLOW_N = _UxGT("Przepływ ~"); - LSTR MSG_CONTROL = _UxGT("Ustawienia"); - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Mnożnik"); - LSTR MSG_AUTOTEMP = _UxGT("Auto. temperatura"); - LSTR MSG_LCD_ON = _UxGT("Wł."); - LSTR MSG_LCD_OFF = _UxGT("Wył."); - LSTR MSG_PID_AUTOTUNE = _UxGT("PID Autostrojenie"); - LSTR MSG_PID_AUTOTUNE_E = _UxGT("PID Autostrojenie *"); - LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("Strojenie PID zakończone"); - LSTR MSG_SELECT_E = _UxGT("Wybierz *"); - LSTR MSG_ACC = _UxGT("Przyspieszenie"); - LSTR MSG_JERK = _UxGT("Zryw"); - LSTR MSG_VA_JERK = _UxGT("Zryw V") STR_A; - LSTR MSG_VB_JERK = _UxGT("Zryw V") STR_B; - LSTR MSG_VC_JERK = _UxGT("Zryw V") STR_C; - LSTR MSG_VN_JERK = _UxGT("Zryw V@"); - LSTR MSG_VE_JERK = _UxGT("Zryw Ve"); - LSTR MSG_MAX_SPEED = _UxGT("Prędkość (V)"); - - LSTR MSG_VTRAV_MIN = _UxGT("Vskok min"); - LSTR MSG_ACCELERATION = _UxGT("Przyspieszenie (A)"); - - LSTR MSG_A_RETRACT = _UxGT("A-wycofanie"); - LSTR MSG_A_TRAVEL = _UxGT("A-przesuń."); - LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("Częstotliwość max"); - LSTR MSG_STEPS_PER_MM = _UxGT("kroki/mm"); - LSTR MSG_A_STEPS = STR_A _UxGT(" kroki/mm"); - LSTR MSG_B_STEPS = STR_B _UxGT(" kroki/mm"); - LSTR MSG_C_STEPS = STR_C _UxGT(" kroki/mm"); - LSTR MSG_N_STEPS = _UxGT("@ kroki/mm"); - LSTR MSG_E_STEPS = _UxGT("E kroki/mm"); - LSTR MSG_EN_STEPS = _UxGT("* kroki/mm"); - LSTR MSG_TEMPERATURE = _UxGT("Temperatura"); - LSTR MSG_MOTION = _UxGT("Ruch"); - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E w mm") SUPERSCRIPT_THREE; - LSTR MSG_FILAMENT_DIAM = _UxGT("Śr. fil."); - LSTR MSG_FILAMENT_DIAM_E = _UxGT("Śr. fil. *"); - LSTR MSG_FILAMENT_UNLOAD = _UxGT("Wysuń mm"); - LSTR MSG_FILAMENT_LOAD = _UxGT("Wsuń mm"); - LSTR MSG_CONTRAST = _UxGT("Kontrast LCD"); - LSTR MSG_STORE_EEPROM = _UxGT("Zapisz w pamięci"); - LSTR MSG_LOAD_EEPROM = _UxGT("Wczytaj z pamięci"); - LSTR MSG_RESTORE_DEFAULTS = _UxGT("Ustaw. fabryczne"); - LSTR MSG_INIT_EEPROM = _UxGT("Initializuj EEPROM"); - LSTR MSG_MEDIA_UPDATE = _UxGT("Uaktualnij kartę"); - LSTR MSG_RESET_PRINTER = _UxGT("Resetuj drukarkę"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Odswież"); - LSTR MSG_INFO_SCREEN = _UxGT("Ekran główny"); - LSTR MSG_PREPARE = _UxGT("Przygotuj"); - LSTR MSG_TUNE = _UxGT("Strojenie"); - LSTR MSG_CURRENT = _UxGT("Natężenie"); - LSTR MSG_VOLTAGE = _UxGT("Napięcie"); - LSTR MSG_POWER = _UxGT("Moc"); - LSTR MSG_START_PRINT = _UxGT("Start wydruku"); - LSTR MSG_BUTTON_NEXT = _UxGT("Następny"); - LSTR MSG_BUTTON_INIT = _UxGT("Inic."); - LSTR MSG_BUTTON_PRINT = _UxGT("Drukuj"); - LSTR MSG_BUTTON_RESET = _UxGT("Resetuj"); - LSTR MSG_BUTTON_IGNORE = _UxGT("Ignoruj"); - LSTR MSG_BUTTON_CANCEL = _UxGT("Przerwij"); - LSTR MSG_BUTTON_DONE = _UxGT("Gotowe"); - LSTR MSG_BUTTON_BACK = _UxGT("Wstecz"); - LSTR MSG_BUTTON_PROCEED = _UxGT("Kontynuuj"); - LSTR MSG_BUTTON_SKIP = _UxGT("Pomiń"); - LSTR MSG_PAUSING = _UxGT("Wstrzymywanie..."); - LSTR MSG_PAUSE_PRINT = _UxGT("Wstrzymaj druk"); - LSTR MSG_RESUME_PRINT = _UxGT("Wznowienie"); - LSTR MSG_STOP_PRINT = _UxGT("Stop"); - LSTR MSG_PRINTING_OBJECT = _UxGT("Drukowanie obiektu"); - LSTR MSG_CANCEL_OBJECT = _UxGT("Anunuj obiekt"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Anunuj obiekt {"); - LSTR MSG_OUTAGE_RECOVERY = _UxGT("Odzyskiwanie po awarii"); - LSTR MSG_MEDIA_MENU = _UxGT("Karta SD"); - LSTR MSG_NO_MEDIA = _UxGT("Brak karty"); - LSTR MSG_DWELL = _UxGT("Uśpij..."); - LSTR MSG_USERWAIT = _UxGT("Oczekiwanie..."); - LSTR MSG_PRINT_PAUSED = _UxGT("Druk wstrzymany"); - LSTR MSG_PRINTING = _UxGT("Drukowanie..."); - LSTR MSG_PRINT_ABORTED = _UxGT("Druk przerwany"); - LSTR MSG_PRINT_DONE = _UxGT("Druk zakończony"); - LSTR MSG_NO_MOVE = _UxGT("Brak ruchu"); - LSTR MSG_KILLED = _UxGT("Ubity. "); - LSTR MSG_STOPPED = _UxGT("Zatrzymany. "); - LSTR MSG_CONTROL_RETRACT = _UxGT("Wycofaj mm"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Z Wycof. mm"); - LSTR MSG_CONTROL_RETRACTF = _UxGT("Wycofaj V"); - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Skok Z mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Cof. wycof. mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Z Cof. wyc. mm"); - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Cof. wycof. V"); - LSTR MSG_AUTORETRACT = _UxGT("Auto. wycofanie"); - LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Długość zmiany"); - LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Długość oczyszczania"); - LSTR MSG_TOOL_CHANGE = _UxGT("Zmiana narzędzia"); - LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Podniesienie Z"); - LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Prędkość napełniania"); - LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Prędkość wycofania"); - LSTR MSG_FILAMENTCHANGE = _UxGT("Zmień filament"); - LSTR MSG_FILAMENTCHANGE_E = _UxGT("Zmień filament *"); - LSTR MSG_FILAMENTLOAD = _UxGT("Wsuń Filament"); - LSTR MSG_FILAMENTLOAD_E = _UxGT("Wsuń Filament *"); - LSTR MSG_FILAMENTUNLOAD = _UxGT("Wysuń Filament"); - LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Wysuń Filament *"); - LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Wysuń wszystkie"); - - LSTR MSG_ATTACH_MEDIA = _UxGT("Inicjal. karty SD"); - LSTR MSG_ATTACH_SD = _UxGT("Inicjal. karty SD"); - LSTR MSG_ATTACH_USB = _UxGT("Inicjal. dysk flash"); - LSTR MSG_CHANGE_MEDIA = _UxGT("Zmiana karty SD"); - LSTR MSG_RELEASE_MEDIA = _UxGT("Zwolnienie karty"); - LSTR MSG_RUN_AUTOFILES = _UxGT("Autostart"); - - LSTR MSG_ZPROBE_OUT = _UxGT("Sonda Z za stołem"); - LSTR MSG_SKEW_FACTOR = _UxGT("Współczynik skrzywienia"); - LSTR MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch Self-Test"); - LSTR MSG_BLTOUCH_RESET = _UxGT("Reset BLTouch"); - LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("UWAGA: Złe ustawienia mogą uszkodzić drukarkę. Kontynuować?"); - LSTR MSG_HOME_FIRST = _UxGT("Najpierw Home %s"); - LSTR MSG_ZPROBE_XOFFSET = _UxGT("Offset X"); - LSTR MSG_ZPROBE_YOFFSET = _UxGT("Offset Y"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Offset Z"); - LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Offset @"); - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Krok Z offsetu"); - LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Przesuń dyszę do stołu"); - LSTR MSG_BABYSTEP_TOTAL = _UxGT("Łącznie"); - LSTR MSG_ENDSTOP_ABORT = _UxGT("Błąd krańcówki"); - LSTR MSG_ERR_HEATING_FAILED = _UxGT("Rozgrz. nieudane"); - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Błąd temperatury"); - LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("ZANIK TEMPERATURY"); - LSTR MSG_ERR_MAXTEMP = _UxGT("Błąd: MAXTEMP"); - LSTR MSG_ERR_MINTEMP = _UxGT("Błąd: MINTEMP"); - LSTR MSG_HALTED = _UxGT("Drukarka zatrzym."); - LSTR MSG_PLEASE_RESET = _UxGT("Proszę zresetować"); - LSTR MSG_SHORT_HOUR = _UxGT("g"); // One character only - LSTR MSG_HEATING = _UxGT("Rozgrzewanie..."); - LSTR MSG_COOLING = _UxGT("Chłodzenie..."); - LSTR MSG_BED_HEATING = _UxGT("Rozgrzewanie stołu..."); - LSTR MSG_BED_COOLING = _UxGT("Chłodzenie stołu..."); - LSTR MSG_CHAMBER_HEATING = _UxGT("Rozgrzewanie komory..."); - LSTR MSG_CHAMBER_COOLING = _UxGT("Chłodzenie komory..."); - LSTR MSG_DELTA_CALIBRATE = _UxGT("Kalibrowanie Delty"); - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Kalibruj X"); - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Kalibruj Y"); - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Kalibruj Z"); - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Kalibruj środek"); - LSTR MSG_DELTA_SETTINGS = _UxGT("Ustawienia delty"); - LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Auto kalibrowanie"); - LSTR MSG_DELTA_DIAG_ROD = _UxGT("Ukośne ramię"); - LSTR MSG_DELTA_HEIGHT = _UxGT("Wysokość"); - LSTR MSG_DELTA_RADIUS = _UxGT("Promień"); - LSTR MSG_INFO_MENU = _UxGT("O drukarce"); - LSTR MSG_INFO_PRINTER_MENU = _UxGT("Info drukarki"); - LSTR MSG_3POINT_LEVELING = _UxGT("Poziomowanie 3-punktowe"); - LSTR MSG_LINEAR_LEVELING = _UxGT("Poziomowanie liniowe"); - LSTR MSG_BILINEAR_LEVELING = _UxGT("Poziomowanie biliniowe"); - LSTR MSG_MESH_LEVELING = _UxGT("Poziomowanie siatką"); - LSTR MSG_INFO_STATS_MENU = _UxGT("Statystyki"); - LSTR MSG_INFO_BOARD_MENU = _UxGT("Info płyty"); - LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Termistory"); - LSTR MSG_INFO_EXTRUDERS = _UxGT("Ekstrudery"); - LSTR MSG_INFO_BAUDRATE = _UxGT("Predkość USB"); - LSTR MSG_INFO_PROTOCOL = _UxGT("Protokół"); - LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Zegar pracy: OFF"); - LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Zegar pracy: ON"); - - LSTR MSG_CASE_LIGHT = _UxGT("Oświetlenie obudowy"); - LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Jasność oświetlenia"); - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Niepoprawna drukarka"); - - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Wydrukowano"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Ukończono"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Razem"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Najdł. druk"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Użyty fil."); - - LSTR MSG_INFO_PSU = _UxGT("Zasilacz"); - LSTR MSG_DRIVE_STRENGTH = _UxGT("Siła silnika"); - LSTR MSG_DAC_PERCENT_N = _UxGT("@ Siła %"); - LSTR MSG_ERROR_TMC = _UxGT("TMC BŁĄD POŁĄCZENIA"); - LSTR MSG_DAC_EEPROM_WRITE = _UxGT("Zapisz DAC EEPROM"); - LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("ZMIEŃ FILAMENT"); - LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("WYDRUK WSTRZYMANY"); - LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("WSUŃ FILAMENT"); - LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("WYSUŃ FILAMENT"); - LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("OPCJE WZNOWIENIA:"); - LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Oczyść więcej"); - LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Kontynuuj"); - LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Dysza: "); - LSTR MSG_RUNOUT_SENSOR = _UxGT("Czujnik filamentu"); - LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("Dystans do czujnika mm"); - LSTR MSG_KILL_HOMING_FAILED = _UxGT("Zerowanie nieudane"); - LSTR MSG_LCD_PROBING_FAILED = _UxGT("Sondowanie nieudane"); - - LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("WYBIERZ FILAMENT"); - LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("Uaktualnij firmware MMU!"); - LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU wymaga uwagi."); - LSTR MSG_MMU2_RESUME = _UxGT("Wznów wydruk"); - LSTR MSG_MMU2_RESUMING = _UxGT("Wznawianie..."); - LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("Wsuń filament"); - LSTR MSG_MMU2_LOAD_ALL = _UxGT("Wsuń wszystko"); - LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Wsuń do dyszy"); - LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("Wysuń filament"); - LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("Wysuń filament ~"); - LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Wysuń filament"); - LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Wsuwanie fil. %i..."); - LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Wysuwanie fil. ..."); - LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Wysuwanie fil...."); - LSTR MSG_MMU2_ALL = _UxGT("Wszystko"); - LSTR MSG_MMU2_RESET = _UxGT("Resetuj MMU"); - LSTR MSG_MMU2_RESETTING = _UxGT("Resetowanie MMU..."); - LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Usuń, kliknij"); - - LSTR MSG_MIX = _UxGT("Miks"); - LSTR MSG_MIX_COMPONENT_N = _UxGT("Komponent {"); - LSTR MSG_MIXER = _UxGT("Mikser"); - LSTR MSG_FULL_GRADIENT = _UxGT("Pełny gradient"); - LSTR MSG_TOGGLE_MIX = _UxGT("Przełacz miks"); - LSTR MSG_REVERSE_GRADIENT = _UxGT("Odwrotny gradient"); - - LSTR MSG_GAMES = _UxGT("Gry"); - - LSTR MSG_EDIT_PASSWORD = _UxGT("Zmień hasło"); - LSTR MSG_LOGIN_REQUIRED = _UxGT("Wymagane zalogowanie"); - LSTR MSG_PASSWORD_SETTINGS = _UxGT("Ustawienia hasła"); - LSTR MSG_ENTER_DIGIT = _UxGT("Wprowadź cyfrę"); - LSTR MSG_CHANGE_PASSWORD = _UxGT("Ustaw/zmień hasło"); - LSTR MSG_REMOVE_PASSWORD = _UxGT("Usuń hasło"); - LSTR MSG_PASSWORD_SET = _UxGT("Hasło to "); - LSTR MSG_START_OVER = _UxGT("Od nowa"); - LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Pamiętaj by zapisać!"); - LSTR MSG_PASSWORD_REMOVED = _UxGT("Hasło usunięte"); - - // - // Filament Change screens show up to 2 lines on a 3-line display - // - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Kliknij by kontynuować")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parkowanie...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Proszę czekać...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Włóż i kliknij")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Kliknij by nagrzać")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Nagrzewanie...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Wysuwanie...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Wsuwanie...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Oczyszczanie...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Kliknij by zakończyć")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Wznawianie...")); - - LSTR MSG_TMC_DRIVERS = _UxGT("Sterowniki TMC"); - LSTR MSG_TMC_CURRENT = _UxGT("Prąd sterownika"); - LSTR MSG_TMC_HOMING_THRS = _UxGT("Zerowanie bezczujnikowe"); - LSTR MSG_BACKLASH_CORRECTION = _UxGT("Korekcja"); - LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Wygładzanie"); - - LSTR MSG_LEVEL_X_AXIS = _UxGT("Wypoziomuj oś X"); - LSTR MSG_AUTO_CALIBRATE = _UxGT("Autokalibracja"); - - LSTR MSG_SOUND = _UxGT("Dźwięk"); - - LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Kalibracja zakończona"); - LSTR MSG_CALIBRATION_FAILED = _UxGT("Kalibracja nie powiodła się"); - + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" gotowy."); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = _UxGT("Karta włożona"); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = _UxGT("Karta usunięta"); // (MEDIA_TYPE_EN) Removed + LSTR MSG_LCD_ENDSTOPS = _UxGT("Krańców."); // Endstops + LSTR MSG_MAIN_MENU = _UxGT("Menu główne"); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("Wyłącz silniki"); // Disable Steppers + LSTR MSG_AUTO_HOME = _UxGT("Pozycja zerowa"); // Auto Home + LSTR MSG_AUTO_HOME_X = _UxGT("Zeruj X"); // Home X + LSTR MSG_AUTO_HOME_Y = _UxGT("Zeruj Y"); // Home Y + LSTR MSG_AUTO_HOME_Z = _UxGT("Zeruj Z"); // Home Z + LSTR MSG_LEVEL_BED_HOMING = _UxGT("Pozycja zerowa"); // Homing XYZ + LSTR MSG_LEVEL_BED_WAITING = _UxGT("Kliknij by rozp."); // Click to Begin + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Następny punkt"); // Next Point + LSTR MSG_LEVEL_BED_DONE = _UxGT("Wypoziomowano!"); // Leveling Done! + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Ust. poz. zer."); // Set Home Offsets + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Poz. zerowa ust."); // Offsets Applied + LSTR MSG_PREHEAT_1 = _UxGT("Rozgrzej ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = _UxGT("Rozgrzej ") PREHEAT_1_LABEL " ~"; // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" Dysza"); // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" Dysza ~"); // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_1_ALL = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" wsz."); // Preheat (PREHEAT_1_LABEL) All + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" stół"); // Preheat (PREHEAT_1_LABEL) Bed + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Rozgrzej ") PREHEAT_1_LABEL _UxGT(" ustaw."); // Preheat (PREHEAT_1_LABEL) Conf + LSTR MSG_PREHEAT_M = _UxGT("Rozgrzej $"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("Rozgrzej $ ~"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("Rozgrzej $ Dysza"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("Rozgrzej $ Dysza ~"); // Preheat $ End ~ + LSTR MSG_PREHEAT_M_ALL = _UxGT("Rozgrzej $ wsz."); // Preheat $ All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Rozgrzej $ stół"); // Preheat $ Bed + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Rozgrzej $ ustaw."); // Preheat $ Conf + LSTR MSG_COOLDOWN = _UxGT("Chłodzenie"); // Cooldown + LSTR MSG_SWITCH_PS_ON = _UxGT("Włącz zasilacz"); // Switch Power On + LSTR MSG_SWITCH_PS_OFF = _UxGT("Wyłącz zasilacz"); // Switch Power Off + LSTR MSG_EXTRUDE = _UxGT("Ekstruzja"); // Extrude + LSTR MSG_RETRACT = _UxGT("Wycofanie"); // Retract + LSTR MSG_MOVE_AXIS = _UxGT("Ruch osi"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("Sonda/poziomowanie"); // Probe and Level + LSTR MSG_BED_LEVELING = _UxGT("Poziomowanie stołu"); // Bed Leveling + LSTR MSG_LEVEL_BED = _UxGT("Wypoziomuj stół"); // Level Bed + LSTR MSG_MOVE_X = _UxGT("Przesuń w X"); // Move X + LSTR MSG_MOVE_Y = _UxGT("Przesuń w Y"); // Move Y + LSTR MSG_MOVE_Z = _UxGT("Przesuń w Z"); // Move Z + LSTR MSG_MOVE_N = _UxGT("Przesuń w @"); // Move @ + LSTR MSG_MOVE_E = _UxGT("Ekstruzja (os E)"); // Move Extruder + LSTR MSG_MOVE_EN = _UxGT("Ekstruzja (os E) *"); // Move * + LSTR MSG_MOVE_N_MM = _UxGT("Przesuń co $mm"); // Move $mm + LSTR MSG_MOVE_N_IN = _UxGT("Przesuń co $in"); // Move $in + LSTR MSG_MOVE_N_DEG = _UxGT("Przesuń co $") LCD_STR_DEGREE; // Move $(LCD_STR_DEGREE) + LSTR MSG_SPEED = _UxGT("Predkość"); // Speed + LSTR MSG_MESH_Z_OFFSET = _UxGT("Stół Z"); // Bed Z + LSTR MSG_NOZZLE = _UxGT("Dysza"); // Nozzle + LSTR MSG_NOZZLE_N = _UxGT("Dysza ~"); // Nozzle ~ + LSTR MSG_BED = _UxGT("Stół"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("Obroty wentylatora"); // Fan Speed + LSTR MSG_FAN_SPEED_N = _UxGT("Obroty wentylatora ~"); // Fan Speed ~ + LSTR MSG_FLOW = _UxGT("Przepływ"); // Flow + LSTR MSG_FLOW_N = _UxGT("Przepływ ~"); // Flow ~ + LSTR MSG_CONTROL = _UxGT("Ustawienia"); // Control + LSTR MSG_AUTOTEMP = _UxGT("Auto. temperatura"); // Autotemp + LSTR MSG_SELECT_E = _UxGT("Wybierz *"); // Select * + LSTR MSG_ACC = _UxGT("Przyspieszenie"); // Accel + LSTR MSG_VTRAV_MIN = _UxGT("Vskok min"); // Min Travel Speed + LSTR MSG_ACCELERATION = _UxGT("Przyspieszenie (A)"); // Acceleration + LSTR MSG_A_RETRACT = _UxGT("A-wycofanie"); // Retract Accel + LSTR MSG_A_TRAVEL = _UxGT("A-przesuń."); // Travel Accel + LSTR MSG_STEPS_PER_MM = _UxGT("kroki/mm"); // Steps/mm + LSTR MSG_A_STEPS = STR_A _UxGT(" kroki/mm"); // (STR_A) Steps/mm + LSTR MSG_B_STEPS = STR_B _UxGT(" kroki/mm"); // (STR_B) Steps/mm + LSTR MSG_C_STEPS = STR_C _UxGT(" kroki/mm"); // (STR_C) Steps/mm + LSTR MSG_N_STEPS = _UxGT("@ kroki/mm"); // @ steps/mm + LSTR MSG_E_STEPS = _UxGT("E kroki/mm"); // E steps/mm + LSTR MSG_EN_STEPS = _UxGT("* kroki/mm"); // * Steps/mm + LSTR MSG_TEMPERATURE = _UxGT("Temperatura"); // Temperature + LSTR MSG_MOTION = _UxGT("Ruch"); // Motion + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E w mm") SUPERSCRIPT_THREE; // E in mm(SUPERSCRIPT_THREE) + LSTR MSG_FILAMENT_DIAM = _UxGT("Śr. fil."); // Fil. Dia. + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Śr. fil. *"); // Fil. Dia. * + LSTR MSG_CONTRAST = _UxGT("Kontrast LCD"); // LCD Contrast + LSTR MSG_STORE_EEPROM = _UxGT("Zapisz w pamięci"); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("Wczytaj z pamięci"); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("Ustaw. fabryczne"); // Restore Defaults + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Odswież"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT("Ekran główny"); // Info Screen + LSTR MSG_PREPARE = _UxGT("Przygotuj"); // Prepare + LSTR MSG_TUNE = _UxGT("Strojenie"); // Tune + LSTR MSG_PAUSE_PRINT = _UxGT("Wstrzymaj druk"); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("Wznowienie"); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("Stop"); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("Karta SD"); // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = _UxGT("Brak karty"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_DWELL = _UxGT("Uśpij..."); // Sleep... + LSTR MSG_USERWAIT = _UxGT("Oczekiwanie..."); // Click to Resume... + LSTR MSG_PRINT_ABORTED = _UxGT("Druk przerwany"); // Print Aborted + LSTR MSG_NO_MOVE = _UxGT("Brak ruchu"); // No Move. + LSTR MSG_KILLED = _UxGT("Ubity. "); // KILLED. + LSTR MSG_STOPPED = _UxGT("Zatrzymany. "); // STOPPED. + LSTR MSG_CONTROL_RETRACT = _UxGT("Wycofaj mm"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Z Wycof. mm"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACTF = _UxGT("Wycofaj V"); // Retract V + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Skok Z mm"); // Hop mm + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Cof. wycof. mm"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Z Cof. wyc. mm"); // S Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Cof. wycof. V"); // Unretract V + LSTR MSG_AUTORETRACT = _UxGT("Auto. wycofanie"); // Auto-Retract + LSTR MSG_FILAMENTCHANGE = _UxGT("Zmień filament"); // Change Filament + LSTR MSG_FILAMENTCHANGE_E = _UxGT("Zmień filament *"); // Change * Filament + LSTR MSG_ATTACH_MEDIA = _UxGT("Inicjal. karty SD"); // Attach (MEDIA_TYPE_EN) + LSTR MSG_ATTACH_SD = _UxGT("Inicjal. karty SD"); // Attach SD Card + LSTR MSG_ATTACH_USB = _UxGT("Inicjal. dysk flash"); // Attach USB Drive + LSTR MSG_CHANGE_MEDIA = _UxGT("Zmiana karty SD"); // Refresh (MEDIA_TYPE_EN) + LSTR MSG_RUN_AUTOFILES = _UxGT("Autostart"); // Run Autofiles + LSTR MSG_ZPROBE_OUT = _UxGT("Sonda Z za stołem"); // Z Probe Past Bed + LSTR MSG_BLTOUCH_RESET = _UxGT("Reset BLTouch"); // Reset + LSTR MSG_ZPROBE_XOFFSET = _UxGT("Offset X"); // Probe X Offset + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Offset Y"); // Probe Y Offset + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Offset Z"); // Probe Z Offset + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Offset @"); // Probe @ Offset + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Krok Z offsetu"); // Babystep Probe Z + LSTR MSG_ENDSTOP_ABORT = _UxGT("Błąd krańcówki"); // Endstop Abort + LSTR MSG_ERR_HEATING_FAILED = _UxGT("Rozgrz. nieudane"); // Heating Failed + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Błąd temperatury"); // Err: REDUNDANT TEMP + LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("ZANIK TEMPERATURY"); // THERMAL RUNAWAY + LSTR MSG_ERR_MAXTEMP = _UxGT("Błąd: MAXTEMP"); // Err: MAXTEMP + LSTR MSG_ERR_MINTEMP = _UxGT("Błąd: MINTEMP"); // Err: MINTEMP + LSTR MSG_HALTED = _UxGT("Drukarka zatrzym."); // PRINTER HALTED + LSTR MSG_PLEASE_RESET = _UxGT("Proszę zresetować"); // Please Reset + LSTR MSG_HEATING = _UxGT("Rozgrzewanie..."); // Heating... + LSTR MSG_BED_HEATING = _UxGT("Rozgrzewanie stołu..."); // Bed Heating... + LSTR MSG_DELTA_CALIBRATE = _UxGT("Kalibrowanie Delty"); // Delta Calibration + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Kalibruj X"); // Calibrate X + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Kalibruj Y"); // Calibrate Y + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Kalibruj Z"); // Calibrate Z + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Kalibruj środek"); // Calibrate Center + LSTR MSG_INFO_MENU = _UxGT("O drukarce"); // About Printer + LSTR MSG_INFO_PRINTER_MENU = _UxGT("Info drukarki"); // Printer Info + LSTR MSG_INFO_STATS_MENU = _UxGT("Statystyki"); // Stats + LSTR MSG_INFO_BOARD_MENU = _UxGT("Info płyty"); // Board Info + LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Termistory"); // Thermistors + LSTR MSG_INFO_EXTRUDERS = _UxGT("Ekstrudery"); // Extruders + LSTR MSG_INFO_BAUDRATE = _UxGT("Predkość USB"); // Baud + LSTR MSG_INFO_PROTOCOL = _UxGT("Protokół"); // Protocol + LSTR MSG_CASE_LIGHT = _UxGT("Oświetlenie obudowy"); // Case Light + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Wydrukowano"); // Prints + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Ukończono"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Razem"); // Total + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Najdł. druk"); // Longest + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Użyty fil."); // Extruded + LSTR MSG_INFO_PSU = _UxGT("Zasilacz"); // PSU + LSTR MSG_DRIVE_STRENGTH = _UxGT("Siła silnika"); // Drive Strength + LSTR MSG_DAC_EEPROM_WRITE = _UxGT("Zapisz DAC EEPROM"); // DAC EEPROM Write + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Kontynuuj"); // Continue + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Proszę czekać...")); // |Please wait... + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Włóż i kliknij")); // |Insert and Click + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Wysuwanie...")); // |Ejecting... + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Wsuwanie...")); // |Loading... + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Wznawianie...")); // |Resuming... + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Mnożnik"); // (LCD_STR_THERMOMETER) Fact + LSTR MSG_LCD_ON = _UxGT("Wł."); // On + LSTR MSG_LCD_OFF = _UxGT("Wył."); // Off + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Niepoprawna drukarka"); // INCORRECT PRINTER + LSTR MSG_DEBUG_MENU = _UxGT("Menu Debugowania"); // Debug Menu + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Testowy pasek postępu"); // Progress Bar Test + LSTR MSG_MOVING = _UxGT("Ruch..."); // Moving... + LSTR MSG_FREE_XY = _UxGT("Swobodne XY"); // Free XY + LSTR MSG_HOME_FIRST = _UxGT("Najpierw Home %s"); // Home %s First + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Nagrzewanie...")); // |Heating... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Kliknij by nagrzać")); // |Click to heat + LSTR MSG_YES = _UxGT("TAK"); // YES + LSTR MSG_NO = _UxGT("NIE"); // NO + LSTR MSG_BACK = _UxGT("Wstecz"); // Back + LSTR MSG_MEDIA_ABORTING = _UxGT("Przerywanie..."); // Aborting... + LSTR MSG_MEDIA_READ_ERROR = _UxGT("Bład odczytu karty"); // (MEDIA_TYPE_EN) read error + LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("Urządzenie USB usunięte"); // USB device removed + LSTR MSG_USB_FD_USB_FAILED = _UxGT("Błąd uruchomienia USB"); // USB start failed + LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Progr. Krańcówki"); // Soft Endstops + LSTR MSG_ADVANCED_SETTINGS = _UxGT("Ustawienie zaawansowane"); // Advanced Settings + LSTR MSG_CONFIGURATION = _UxGT("Konfiguracja"); // Configuration + LSTR MSG_AUTO_Z_ALIGN = _UxGT("Autowyrównanie Z"); // Auto Z-Align + LSTR MSG_Z_FADE_HEIGHT = _UxGT("Wys. zanikania"); // Fade Height + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Rozgrzej własne ust."); // Preheat Custom + LSTR MSG_LASER_MENU = _UxGT("Sterowanie Lasera"); // Laser Control + LSTR MSG_LASER_POWER = _UxGT("Zasilanie Lasera"); // Laser Power + LSTR MSG_SPINDLE_MENU = _UxGT("Sterowanie wrzeciona"); // Spindle Control + LSTR MSG_SPINDLE_POWER = _UxGT("Zasilanie wrzeciona"); // Spindle Pwr + LSTR MSG_SPINDLE_REVERSE = _UxGT("Rewers wrzeciona"); // Spindle Reverse + LSTR MSG_BED_TRAMMING = _UxGT("Narożniki poziomowania"); // Bed Tramming + LSTR MSG_NEXT_CORNER = _UxGT("Nastepny narożnik"); // Next Corner + LSTR MSG_MESH_EDITOR = _UxGT("Edytor siatki"); // Mesh Editor + LSTR MSG_EDIT_MESH = _UxGT("Edycja siatki"); // Edit Mesh + LSTR MSG_EDITING_STOPPED = _UxGT("Edycja siatki zatrzymana"); // Mesh Editing Stopped + LSTR MSG_PROBING_POINT = _UxGT("Punkt pomiarowy"); // Probing Point + LSTR MSG_MESH_X = _UxGT("Indeks X"); // Index X + LSTR MSG_MESH_Y = _UxGT("Indeks Y"); // Index Y + LSTR MSG_MESH_EDIT_Z = _UxGT("Wartość Z"); // Z Value + LSTR MSG_CUSTOM_COMMANDS = _UxGT("Własne Polecenia"); // Custom Commands + LSTR MSG_M48_TEST = _UxGT("M48 Test sondy"); // M48 Probe Test + LSTR MSG_M48_POINT = _UxGT("M48 Punky"); // M48 Point + LSTR MSG_M48_DEVIATION = _UxGT("Odchylenie"); // Deviation + LSTR MSG_IDEX_MENU = _UxGT("Tryb IDEX"); // IDEX Mode + LSTR MSG_OFFSETS_MENU = _UxGT("Przesunięcie narzędzia"); // Tool Offsets + LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-Parkowanie"); // Auto-Park + LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplikowanie"); // Duplication + LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Kopia lustrzana"); // Mirrored Copy + LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Pełne sterowanie"); // Full Control + LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2ga dysza Z"); // 2nd Nozzle Z + LSTR MSG_HOTEND_OFFSET_N = _UxGT("2ga dysza @"); // 2nd Nozzle @ + LSTR MSG_UBL_DOING_G29 = _UxGT("Wykonywanie G29"); // Doing G29 + LSTR MSG_UBL_TOOLS = _UxGT("Narzędzia UBL"); // UBL Tools + LSTR MSG_LCD_TILTING_MESH = _UxGT("Punkt pochylenia"); // Tilting Point + LSTR MSG_UBL_MANUAL_MESH = _UxGT("Ręczne Budowanie Siatki"); // Manually Build Mesh + LSTR MSG_UBL_BC_INSERT = _UxGT("Umieść podkładkę i zmierz"); // Place Shim & Measure + LSTR MSG_UBL_BC_INSERT2 = _UxGT("Zmierz"); // Measure + LSTR MSG_UBL_BC_REMOVE = _UxGT("Usuń & Zmierz Stół"); // Remove & Measure Bed + LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Przesuwanie do następnego"); // Moving to next + LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Temperatura stołu"); // Bed Temp + LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Temperatura stołu"); // Bed Temp + LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Temperatura dyszy"); // Hotend Temp + LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Temperatura dyszy"); // Hotend Temp + LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Edycja własnej siatki"); // Edit Custom Mesh + LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Dostrajanie siatki"); // Fine Tuning Mesh + LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Koniec edycji siati"); // Done Editing Mesh + LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Buduj własna siatkę"); // Build Custom Mesh + LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Buduj siatkę"); // Build Mesh + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Buduj siatkę ($)"); // Build Mesh ($) + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Sprawdzenie siatki ($)"); // Validate Mesh ($) + LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Buduj siatkę na zimno"); // Build Cold Mesh + LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Dostrojenie wysokości siatki"); // Adjust Mesh Height + LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Wartość wysokości"); // Height Amount + LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Sprawdzenie siatki"); // Validate Mesh + LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Sprawdzenie własnej siatki"); // Validate Custom Mesh + LSTR MSG_G26_HEATING_BED = _UxGT("G26 Nagrzewanie stołu"); // G26 Heating Bed + LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 Nagrzewanie dyszy"); // G26 Heating Nozzle + LSTR MSG_G26_MANUAL_PRIME = _UxGT("Napełnianie ręczne..."); // Manual priming... + LSTR MSG_G26_FIXED_LENGTH = _UxGT("Napełnij kreśloną długością"); // Fixed Length Prime + LSTR MSG_G26_PRIME_DONE = _UxGT("Napełnianie zakończone"); // Done Priming + LSTR MSG_G26_CANCELED = _UxGT("G26 Przewane"); // G26 Canceled + LSTR MSG_G26_LEAVING = _UxGT("Opuszczanie G26"); // Leaving G26 + LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Kontynuuj tworzenie siatki"); // Continue Bed Mesh + LSTR MSG_UBL_MESH_LEVELING = _UxGT("Poziomowanie siatką"); // Mesh Leveling + LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("Poziomowaie 3-punktowe"); // 3-Point Leveling + LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Poziomowaie według siatki"); // Grid Mesh Leveling + LSTR MSG_UBL_MESH_LEVEL = _UxGT("Poziomuj siatkę"); // Level Mesh + LSTR MSG_UBL_SIDE_POINTS = _UxGT("Punkty boczne"); // Side Points + LSTR MSG_UBL_MAP_TYPE = _UxGT("Rodzaj mapy"); // Map Type + LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Wyslij mapę siatki"); // Output Mesh Map + LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Wyslij do Hosta"); // Output for Host + LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Wyslij do CSV"); // Output for CSV + LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Kopia poza drukarką"); // Off Printer Backup + LSTR MSG_UBL_INFO_UBL = _UxGT("Wyslij info UBL"); // Output UBL Info + LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Stopień wypełnienia"); // Fill-in Amount + LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Ręczne wypełnienie"); // Manual Fill-in + LSTR MSG_UBL_SMART_FILLIN = _UxGT("Inteligentne wypełnienie"); // Smart Fill-in + LSTR MSG_UBL_FILLIN_MESH = _UxGT("Wypełnienie siatki"); // Fill-in Mesh + LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Unieważnij wszystko"); // Invalidate All + LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Unieważnij najbliższy"); // Invalidate Closest + LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Dostrajaj wszystko"); // Fine Tune All + LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Dostrajaj najbliższy"); // Fine Tune Closest + LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Przechowywanie siatki"); // Mesh Storage + LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Slot Pamięci"); // Memory Slot + LSTR MSG_UBL_LOAD_MESH = _UxGT("Załaduj siatkę stołu"); // Load Bed Mesh + LSTR MSG_UBL_SAVE_MESH = _UxGT("Zapisz siatkę stołu"); // Save Bed Mesh + LSTR MSG_MESH_LOADED = _UxGT("Siatka %i załadowana"); // Mesh %i Loaded + LSTR MSG_MESH_SAVED = _UxGT("Siatka %i zapisana"); // Mesh %i Saved + LSTR MSG_UBL_NO_STORAGE = _UxGT("Brak magazynu"); // No Storage + LSTR MSG_UBL_SAVE_ERROR = _UxGT("Błąd: Zapis UBL"); // UBL Save Error + LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Bład: Odczyt UBL"); // UBL Restore Error + LSTR MSG_UBL_Z_OFFSET = _UxGT("Przesunięcie Z: "); // Z-Offset: + LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Przesunięcie Z zatrzymane"); // Z-Offset Stopped + LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("UBL Krok po kroku"); // Step-By-Step UBL + LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1. Tworzenie zimnej siatki"); // 1. Build Cold Mesh + LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2. Inteligentne wypełnienie"); // 2. Smart Fill-in + LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3. Sprawdzenie siatki"); // 3. Validate Mesh + LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4. Dostrojenie wszystkiego"); // 4. Fine Tune All + LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5. Sprawdzenie siatki"); // 5. Validate Mesh + LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6. Dostrojenie wszystkiego"); // 6. Fine Tune All + LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7. Zapis siatki stołu"); // 7. Save Bed Mesh + LSTR MSG_LED_CONTROL = _UxGT("Sterowanie LED"); // LED Control + LSTR MSG_LIGHTS = _UxGT("Światła"); // Lights + LSTR MSG_LIGHT_N = _UxGT("Światło #{"); // Light #{ + LSTR MSG_LED_PRESETS = _UxGT("Ustawienia świateł"); // Light Presets + LSTR MSG_SET_LEDS_RED = _UxGT("Czerwony"); // Red + LSTR MSG_SET_LEDS_ORANGE = _UxGT("Pomarańczowy"); // Orange + LSTR MSG_SET_LEDS_YELLOW = _UxGT("Zółty"); // Yellow + LSTR MSG_SET_LEDS_GREEN = _UxGT("Zielony"); // Green + LSTR MSG_SET_LEDS_BLUE = _UxGT("Niebieski"); // Blue + LSTR MSG_SET_LEDS_INDIGO = _UxGT("Indygo"); // Indigo + LSTR MSG_SET_LEDS_VIOLET = _UxGT("Fioletowy"); // Violet + LSTR MSG_SET_LEDS_WHITE = _UxGT("Biały"); // White + LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Domyślny"); // Default + LSTR MSG_CUSTOM_LEDS = _UxGT("Własne światła"); // Custom Lights + LSTR MSG_INTENSITY_R = _UxGT("Czerwony"); // Red Intensity + LSTR MSG_INTENSITY_G = _UxGT("Zielony"); // Green Intensity + LSTR MSG_INTENSITY_B = _UxGT("Niebieski"); // Blue Intensity + LSTR MSG_INTENSITY_W = _UxGT("Biały"); // White Intensity + LSTR MSG_LED_BRIGHTNESS = _UxGT("Jasność"); // Brightness + LSTR MSG_HOTEND_TOO_COLD = _UxGT("Dysza za zimna"); // Hotend too cold + LSTR MSG_CHAMBER = _UxGT("Obudowa"); // Enclosure + LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Obroty dodatkowego wentylatora"); // Extra Fan Speed + LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Obroty dodatkowego wentylatora ~"); // Extra Fan Speed ~ + LSTR MSG_PID_AUTOTUNE = _UxGT("PID Autostrojenie"); // PID Autotune + LSTR MSG_PID_AUTOTUNE_E = _UxGT("PID Autostrojenie *"); // Autotune * PID + LSTR MSG_JERK = _UxGT("Zryw"); // Jerk + LSTR MSG_VA_JERK = _UxGT("Zryw V") STR_A; // Max (STR_A) Jerk + LSTR MSG_VB_JERK = _UxGT("Zryw V") STR_B; // Max (STR_B) Jerk + LSTR MSG_VC_JERK = _UxGT("Zryw V") STR_C; // Max (STR_C) Jerk + LSTR MSG_VN_JERK = _UxGT("Zryw V@"); // Max @ Jerk + LSTR MSG_VE_JERK = _UxGT("Zryw Ve"); // Max E Jerk + LSTR MSG_MAX_SPEED = _UxGT("Prędkość (V)"); // Max Speed (mm/s) + LSTR MSG_FILAMENT_UNLOAD = _UxGT("Wysuń mm"); // Unload mm + LSTR MSG_FILAMENT_LOAD = _UxGT("Wsuń mm"); // Load mm + LSTR MSG_INIT_EEPROM = _UxGT("Initializuj EEPROM"); // Initialize EEPROM + LSTR MSG_MEDIA_UPDATE = _UxGT("Uaktualnij kartę"); // (MEDIA_TYPE_EN) Update + LSTR MSG_RESET_PRINTER = _UxGT("Resetuj drukarkę"); // Reset Printer + LSTR MSG_START_PRINT = _UxGT("Start wydruku"); // Start Print + LSTR MSG_BUTTON_NEXT = _UxGT("Następny"); // Next + LSTR MSG_BUTTON_INIT = _UxGT("Inic."); // Init + LSTR MSG_BUTTON_PRINT = _UxGT("Drukuj"); // Print + LSTR MSG_BUTTON_RESET = _UxGT("Resetuj"); // Reset + LSTR MSG_BUTTON_CANCEL = _UxGT("Przerwij"); // Cancel + LSTR MSG_BUTTON_DONE = _UxGT("Gotowe"); // Done + LSTR MSG_BUTTON_BACK = _UxGT("Wstecz"); // Back + LSTR MSG_BUTTON_PROCEED = _UxGT("Kontynuuj"); // Proceed + LSTR MSG_PRINTING_OBJECT = _UxGT("Drukowanie obiektu"); // Print Obj + LSTR MSG_CANCEL_OBJECT = _UxGT("Anunuj obiekt"); // Cancel Obj + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Anunuj obiekt {"); // Cancel Obj { + LSTR MSG_OUTAGE_RECOVERY = _UxGT("Odzyskiwanie po awarii"); // Power Outage + LSTR MSG_PRINT_PAUSED = _UxGT("Druk wstrzymany"); // Print Paused + LSTR MSG_PRINTING = _UxGT("Drukowanie..."); // Printing... + LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Długość zmiany"); // Swap Length + LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Długość oczyszczania"); // Purge Length + LSTR MSG_TOOL_CHANGE = _UxGT("Zmiana narzędzia"); // Tool Change + LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Podniesienie Z"); // Z Raise + LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Prędkość napełniania"); // Prime Speed + LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Prędkość wycofania"); // Retract Speed + LSTR MSG_NOZZLE_STANDBY = _UxGT("Dysza w oczekiwaniu"); // Nozzle Standby + LSTR MSG_FILAMENTLOAD = _UxGT("Wsuń Filament"); // Load Filament + LSTR MSG_FILAMENTLOAD_E = _UxGT("Wsuń Filament *"); // Load * Filament + LSTR MSG_FILAMENTUNLOAD = _UxGT("Wysuń Filament"); // Unload Filament + LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Wysuń Filament *"); // Unload * Filament + LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Wysuń wszystkie"); // Unload All + LSTR MSG_RELEASE_MEDIA = _UxGT("Zwolnienie karty"); // Release (MEDIA_TYPE_EN) + LSTR MSG_SKEW_FACTOR = _UxGT("Współczynik skrzywienia"); // Skew Factor + LSTR MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch Self-Test"); // Self-Test + LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("UWAGA: Złe ustawienia mogą uszkodzić drukarkę. Kontynuować?"); // DANGER: Bad settings can cause damage! Proceed anyway? + LSTR MSG_BABYSTEP_TOTAL = _UxGT("Łącznie"); // Total + LSTR MSG_COOLING = _UxGT("Chłodzenie..."); // Cooling... + LSTR MSG_BED_COOLING = _UxGT("Chłodzenie stołu..."); // Bed Cooling... + LSTR MSG_CHAMBER_HEATING = _UxGT("Rozgrzewanie komory..."); // Chamber Heating... + LSTR MSG_CHAMBER_COOLING = _UxGT("Chłodzenie komory..."); // Chamber Cooling... + LSTR MSG_DELTA_SETTINGS = _UxGT("Ustawienia delty"); // Delta Settings + LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Auto kalibrowanie"); // Auto Calibration + LSTR MSG_DELTA_DIAG_ROD = _UxGT("Ukośne ramię"); // Diag Rod + LSTR MSG_DELTA_HEIGHT = _UxGT("Wysokość"); // Height + LSTR MSG_DELTA_RADIUS = _UxGT("Promień"); // Radius + LSTR MSG_3POINT_LEVELING = _UxGT("Poziomowanie 3-punktowe"); // 3-Point Leveling + LSTR MSG_LINEAR_LEVELING = _UxGT("Poziomowanie liniowe"); // Linear Leveling + LSTR MSG_BILINEAR_LEVELING = _UxGT("Poziomowanie biliniowe"); // Bilinear Leveling + LSTR MSG_MESH_LEVELING = _UxGT("Poziomowanie siatką"); // Mesh Leveling + LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Zegar pracy: OFF"); // Runaway Watch: OFF + LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Zegar pracy: ON"); // Runaway Watch: ON + LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Jasność oświetlenia"); // Light Brightness + LSTR MSG_DAC_PERCENT_N = _UxGT("@ Siła %"); // @ Driver % + LSTR MSG_ERROR_TMC = _UxGT("TMC BŁĄD POŁĄCZENIA"); // TMC CONNECTION ERROR + LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("ZMIEŃ FILAMENT"); // FILAMENT CHANGE + LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("WYDRUK WSTRZYMANY"); // PRINT PAUSED + LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("WSUŃ FILAMENT"); // LOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("WYSUŃ FILAMENT"); // UNLOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("OPCJE WZNOWIENIA:"); // RESUME OPTIONS: + LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Oczyść więcej"); // Purge more + LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Dysza: "); // Nozzle: + LSTR MSG_RUNOUT_SENSOR = _UxGT("Czujnik filamentu"); // Runout Sensor + LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("Dystans do czujnika mm"); // Runout Dist mm + LSTR MSG_KILL_HOMING_FAILED = _UxGT("Zerowanie nieudane"); // Homing Failed + LSTR MSG_LCD_PROBING_FAILED = _UxGT("Sondowanie nieudane"); // Probing Failed + LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("WYBIERZ FILAMENT"); // CHOOSE FILAMENT + LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("Uaktualnij firmware MMU!"); // Update MMU Firmware! + LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU wymaga uwagi."); // MMU Needs Attention. + LSTR MSG_MMU2_RESUME = _UxGT("Wznów wydruk"); // Resume + LSTR MSG_MMU2_RESUMING = _UxGT("Wznawianie..."); // MMU Resuming... + LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("Wsuń filament"); // Load + LSTR MSG_MMU2_LOAD_ALL = _UxGT("Wsuń wszystko"); // Load All + LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Wsuń do dyszy"); // Load to Nozzle + LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("Wysuń filament"); // Eject + LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("Wysuń filament ~"); // Eject ~ + LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Wysuń filament"); // Unload + LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Wsuwanie fil. %i..."); // Filament %i Load... + LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Wysuwanie fil. ..."); // Filament %i Eject... + LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Wysuwanie fil...."); // Filament %i Unload... + LSTR MSG_MMU2_ALL = _UxGT("Wszystko"); // All + LSTR MSG_MMU2_RESET = _UxGT("Resetuj MMU"); // Reset MMU + LSTR MSG_MMU2_RESETTING = _UxGT("Resetowanie MMU..."); // Resetting... + LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Usuń, kliknij"); // Eject Recover + LSTR MSG_MIX = _UxGT("Miks"); // Mix + LSTR MSG_MIX_COMPONENT_N = _UxGT("Komponent {"); // Component { + LSTR MSG_MIXER = _UxGT("Mikser"); // Mixer + LSTR MSG_FULL_GRADIENT = _UxGT("Pełny gradient"); // Full Gradient + LSTR MSG_TOGGLE_MIX = _UxGT("Przełacz miks"); // Toggle Mix + LSTR MSG_REVERSE_GRADIENT = _UxGT("Odwrotny gradient"); // Reverse Gradient + LSTR MSG_GAMES = _UxGT("Gry"); // Games + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Kliknij by kontynuować")); // |Click to continue + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parkowanie...")); // |Parking... + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Oczyszczanie...")); // |Purging... + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Kliknij by zakończyć")); // |Click to finish + LSTR MSG_TMC_DRIVERS = _UxGT("Sterowniki TMC"); // TMC Drivers + LSTR MSG_TMC_CURRENT = _UxGT("Prąd sterownika"); // Driver Current + LSTR MSG_TMC_HOMING_THRS = _UxGT("Zerowanie bezczujnikowe"); // Sensorless Homing + LSTR MSG_BACKLASH_CORRECTION = _UxGT("Korekcja"); // Correction + LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Wygładzanie"); // Smoothing + LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Błąd inicializacji karty"); // (MEDIA_TYPE_EN) Init Fail + LSTR MSG_DECREASING_ACCURACY = _UxGT("Spadek dokładności!"); // Accuracy Decreasing! + LSTR MSG_ACCURACY_ACHIEVED = _UxGT("Osiągnięto dokładność"); // Accuracy Achieved + LSTR MSG_SELECT_ORIGIN = _UxGT("Wybierz punkt zero"); // Select Origin + LSTR MSG_LAST_VALUE_SP = _UxGT("Poprzednia wartość "); // Last value + LSTR MSG_CUTTER_FREQUENCY = _UxGT("Częstotliwość"); // Frequency + LSTR MSG_LED_CHANNEL_N = _UxGT("Kanał {"); // Channel { + LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Jasność"); // Brightness + LSTR MSG_CONTROLLER_FAN = _UxGT("Wentylator kontrolera"); // Controller Fan + LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("Strojenie PID zakończone"); // PID tuning done + LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("Częstotliwość max"); // XY Freq Limit + LSTR MSG_CURRENT = _UxGT("Natężenie"); // Current + LSTR MSG_VOLTAGE = _UxGT("Napięcie"); // Voltage + LSTR MSG_POWER = _UxGT("Moc"); // Power + LSTR MSG_BUTTON_IGNORE = _UxGT("Ignoruj"); // Ignore + LSTR MSG_BUTTON_SKIP = _UxGT("Pomiń"); // Skip + LSTR MSG_PAUSING = _UxGT("Wstrzymywanie..."); // Pausing... + LSTR MSG_PRINT_DONE = _UxGT("Druk zakończony"); // Print Done + LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Przesuń dyszę do stołu"); // Move Nozzle to Bed + LSTR MSG_EDIT_PASSWORD = _UxGT("Zmień hasło"); // Edit Password + LSTR MSG_LOGIN_REQUIRED = _UxGT("Wymagane zalogowanie"); // Login Required + LSTR MSG_PASSWORD_SETTINGS = _UxGT("Ustawienia hasła"); // Password Settings + LSTR MSG_ENTER_DIGIT = _UxGT("Wprowadź cyfrę"); // Enter Digit + LSTR MSG_CHANGE_PASSWORD = _UxGT("Ustaw/zmień hasło"); // Set/Edit Password + LSTR MSG_REMOVE_PASSWORD = _UxGT("Usuń hasło"); // Remove Password + LSTR MSG_PASSWORD_SET = _UxGT("Hasło to "); // Password is + LSTR MSG_START_OVER = _UxGT("Od nowa"); // Start Over + LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Pamiętaj by zapisać!"); // Remember to Save! + LSTR MSG_PASSWORD_REMOVED = _UxGT("Hasło usunięte"); // Password Removed + LSTR MSG_LEVEL_X_AXIS = _UxGT("Wypoziomuj oś X"); // Level X Axis + LSTR MSG_AUTO_CALIBRATE = _UxGT("Autokalibracja"); // Auto Calibrate + LSTR MSG_SOUND = _UxGT("Dźwięk"); // Sound + LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Kalibracja zakończona"); // Calibration Completed + LSTR MSG_CALIBRATION_FAILED = _UxGT("Kalibracja nie powiodła się"); // Calibration Failed + LSTR MSG_SHORT_HOUR = _UxGT("g"); // h } namespace LanguageWide_pl { using namespace LanguageNarrow_pl; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Wydrukowano"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Ukończono"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Czas druku"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Najdł. druk"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Użyty fil."); + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Wydrukowano"); // Print Count + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Ukończono"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Czas druku"); // Print Time + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Najdł. druk"); // Longest Job Time + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Użyty fil."); // Extruded Total #endif } @@ -532,16 +504,16 @@ namespace LanguageTall_pl { using namespace LanguageWide_pl; #if LCD_HEIGHT >= 4 // Filament Change screens show up to 3 lines on a 4-line display - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Nacisnik przycisk", "by wznowić drukowanie")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Czekam na", "zmianę filamentu", "by wystartować")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Włóż filament", "i naciśnij przycisk", "by kontynuować")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Naciśnij przycisk", "by nagrzać dyszę")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Nagrzewanie dyszy", "Proszę czekać...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Czekam na", "wyjęcie filamentu")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Czekam na", "włożenie filamentu")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Czekam na", "oczyszczenie filamentu")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Kliknij by zakończyć", "oczyszczanie filamentu")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Czekam na", "wznowienie wydruku...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Czekam na", "zmianę filamentu", "by wystartować")); // |Wait for|filament change|to start + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Włóż filament", "i naciśnij przycisk", "by kontynuować")); // |Insert filament|and press button|to continue + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Czekam na", "wyjęcie filamentu")); // |Wait for|filament unload + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Czekam na", "włożenie filamentu")); // |Wait for|filament load + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Czekam na", "wznowienie wydruku...")); // |Wait for print|to resume... + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Nagrzewanie dyszy", "Proszę czekać...")); // |Nozzle heating|Please wait... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Naciśnij przycisk", "by nagrzać dyszę")); // |Press button|to heat nozzle + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Nacisnik przycisk", "by wznowić drukowanie")); // |Press Button|to resume print + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Czekam na", "oczyszczenie filamentu")); // |Wait for|filament purge + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Kliknij by zakończyć", "oczyszczanie filamentu")); // |Click to finish|filament purge #endif } diff --git a/Marlin/src/lcd/language/language_pt.h b/Marlin/src/lcd/language/language_pt.h index ce1b37be84..de17abb752 100644 --- a/Marlin/src/lcd/language/language_pt.h +++ b/Marlin/src/lcd/language/language_pt.h @@ -44,150 +44,142 @@ namespace LanguageNarrow_pt { constexpr uint8_t CHARSIZE = 2; LSTR LANGUAGE = _UxGT("Portuguese"); - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" pronta."); - LSTR MSG_MEDIA_INSERTED = _UxGT("Cartão inserido"); - LSTR MSG_MEDIA_REMOVED = _UxGT("Cartão removido"); - LSTR MSG_MAIN_MENU = _UxGT("Menu principal"); - LSTR MSG_DISABLE_STEPPERS = _UxGT("Desactivar motores"); - LSTR MSG_AUTO_HOME = _UxGT("Ir para origem"); - LSTR MSG_AUTO_HOME_X = _UxGT("Ir para origem X"); - LSTR MSG_AUTO_HOME_Y = _UxGT("Ir para origem Y"); - LSTR MSG_AUTO_HOME_Z = _UxGT("Ir para origem Z"); - LSTR MSG_LEVEL_BED_HOMING = _UxGT("Indo para origem"); - LSTR MSG_LEVEL_BED_WAITING = _UxGT("Click para iniciar"); - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Próximo ponto"); - LSTR MSG_LEVEL_BED_DONE = _UxGT("Pronto !"); - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Definir desvio"); - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Offsets aplicados"); - - LSTR MSG_PREHEAT_1 = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL _UxGT(" Bico"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL _UxGT(" Bico ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Pre-aq. ") PREHEAT_1_LABEL _UxGT(" Tudo"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Pre-aq. ") PREHEAT_1_LABEL _UxGT(" ") LCD_STR_THERMOMETER _UxGT("Base"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Definições ") PREHEAT_1_LABEL; - - LSTR MSG_PREHEAT_M = _UxGT("Pre-aquecer $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Pre-aquecer $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Pre-aquecer $ Bico"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Pre-aquecer $ Bico ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Pre-aq. $ Tudo"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Pre-aq. $ ") LCD_STR_THERMOMETER _UxGT("Base"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Definições $"); - - LSTR MSG_COOLDOWN = _UxGT("Arrefecer"); - LSTR MSG_SWITCH_PS_ON = _UxGT("Ligar"); - LSTR MSG_SWITCH_PS_OFF = _UxGT("Desligar"); - LSTR MSG_EXTRUDE = _UxGT("Extrudir"); - LSTR MSG_RETRACT = _UxGT("Retrair"); - LSTR MSG_MOVE_AXIS = _UxGT("Mover eixo"); - LSTR MSG_PROBE_AND_LEVEL = _UxGT("Calibrar e nivelar"); - LSTR MSG_MOVE_X = _UxGT("Mover X"); - LSTR MSG_MOVE_Y = _UxGT("Mover Y"); - LSTR MSG_MOVE_Z = _UxGT("Mover Z"); - LSTR MSG_MOVE_N = _UxGT("Mover @"); - LSTR MSG_MOVE_E = _UxGT("Mover Extrusor"); - LSTR MSG_MOVE_EN = _UxGT("Mover Extrusor *"); - LSTR MSG_MOVE_N_MM = _UxGT("Mover $mm"); - LSTR MSG_MOVE_N_IN = _UxGT("Mover $in"); - LSTR MSG_MOVE_N_DEG = _UxGT("Mover $") LCD_STR_DEGREE; - LSTR MSG_SPEED = _UxGT("Velocidade"); - LSTR MSG_MESH_Z_OFFSET = _UxGT("Base Z"); - LSTR MSG_NOZZLE = " " LCD_STR_THERMOMETER _UxGT(" Bico"); - LSTR MSG_NOZZLE_N = " " LCD_STR_THERMOMETER _UxGT(" Bico ~"); - LSTR MSG_BED = " " LCD_STR_THERMOMETER _UxGT(" Base"); - LSTR MSG_FAN_SPEED = _UxGT("Vel. ventoinha"); - LSTR MSG_FAN_SPEED_N = _UxGT("Vel. ventoinha ~"); - LSTR MSG_FLOW = _UxGT("Fluxo"); - LSTR MSG_FLOW_N = _UxGT("Fluxo ~"); - LSTR MSG_CONTROL = _UxGT("Controlo"); - LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); - LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fact"); - LSTR MSG_A_RETRACT = _UxGT("A-retracção"); - LSTR MSG_A_TRAVEL = _UxGT("A-movimento"); - LSTR MSG_STEPS_PER_MM = _UxGT("Passo/mm"); - LSTR MSG_A_STEPS = STR_A _UxGT(" passo/mm"); - LSTR MSG_B_STEPS = STR_B _UxGT(" passo/mm"); - LSTR MSG_C_STEPS = STR_C _UxGT(" passo/mm"); - LSTR MSG_N_STEPS = _UxGT("@ passo/mm"); - LSTR MSG_E_STEPS = _UxGT("E passo/mm"); - LSTR MSG_EN_STEPS = _UxGT("* passo/mm"); - LSTR MSG_TEMPERATURE = _UxGT("Temperatura"); - LSTR MSG_MOTION = _UxGT("Movimento"); - LSTR MSG_FILAMENT = _UxGT("Filamento"); - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E em mm") SUPERSCRIPT_THREE; - LSTR MSG_FILAMENT_DIAM = _UxGT("Fil. Diam."); - LSTR MSG_FILAMENT_DIAM_E = _UxGT("Fil. Diam. *"); - LSTR MSG_CONTRAST = _UxGT("Contraste"); - LSTR MSG_STORE_EEPROM = _UxGT("Guardar na memoria"); - LSTR MSG_LOAD_EEPROM = _UxGT("Carregar da memoria"); - LSTR MSG_RESTORE_DEFAULTS = _UxGT("Rest. de emergen."); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT(" Recarregar"); - LSTR MSG_INFO_SCREEN = _UxGT("Monitorizar"); - LSTR MSG_PREPARE = _UxGT("Preparar"); - LSTR MSG_TUNE = _UxGT("Afinar"); - LSTR MSG_PAUSE_PRINT = _UxGT("Pausar impressão"); - LSTR MSG_RESUME_PRINT = _UxGT("Retomar impressão"); - LSTR MSG_STOP_PRINT = _UxGT("Parar impressão"); - LSTR MSG_MEDIA_MENU = _UxGT("Imprimir do SD"); - LSTR MSG_NO_MEDIA = _UxGT("Sem cartão SD"); - LSTR MSG_DWELL = _UxGT("Em espera..."); - LSTR MSG_USERWAIT = _UxGT("Á espera de ordem"); - LSTR MSG_PRINT_ABORTED = _UxGT("Impressão cancelada"); - LSTR MSG_NO_MOVE = _UxGT("Sem movimento"); - LSTR MSG_KILLED = _UxGT("EMERGÊNCIA. "); - LSTR MSG_STOPPED = _UxGT("PARADO. "); - LSTR MSG_CONTROL_RETRACT = _UxGT(" Retrair mm"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Troca Retrair mm"); - LSTR MSG_CONTROL_RETRACTF = _UxGT(" Retrair V"); - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT(" Levantar mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT(" DesRet mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Troca DesRet mm"); - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT(" DesRet V"); - LSTR MSG_AUTORETRACT = _UxGT(" Auto-Retract"); - LSTR MSG_FILAMENTCHANGE = _UxGT("Trocar filamento"); - LSTR MSG_FILAMENTCHANGE_E = _UxGT("Trocar filamento *"); - - LSTR MSG_ATTACH_MEDIA = _UxGT("Inici. cartão SD"); - LSTR MSG_ATTACH_SD = _UxGT("Inici. cartão SD"); - LSTR MSG_ATTACH_USB = _UxGT("Inici. flash USB"); - LSTR MSG_CHANGE_MEDIA = _UxGT("Trocar cartão SD"); - - LSTR MSG_ZPROBE_OUT = _UxGT("Sensor fora/base"); - LSTR MSG_ZPROBE_XOFFSET = _UxGT("Desvio X"); - LSTR MSG_ZPROBE_YOFFSET = _UxGT("Desvio Y"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Desvio Z"); - LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Desvio @"); - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Passo Z ajuste"); - LSTR MSG_ENDSTOP_ABORT = _UxGT("Fim de curso"); - LSTR MSG_ERR_HEATING_FAILED = _UxGT("Aquecimento falhou"); - LSTR MSG_ERR_MAXTEMP = _UxGT("Err: T Máxima"); - LSTR MSG_ERR_MINTEMP = _UxGT("Err: T Mínima"); - LSTR MSG_HEATING = _UxGT("Aquecendo..."); - LSTR MSG_BED_HEATING = _UxGT("Aquecendo base..."); - LSTR MSG_DELTA_CALIBRATE = _UxGT("Calibração Delta"); - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Calibrar X"); - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Calibrar Y"); - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Calibrar Z"); - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibrar Centro"); - - LSTR MSG_LCD_ENDSTOPS = _UxGT("Fim de curso"); - - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Impressora Incorreta"); - - LSTR MSG_TOP_LEFT = _UxGT("Superior Esquerdo"); - LSTR MSG_BOTTOM_LEFT = _UxGT("Inferior Esquerdo"); - LSTR MSG_TOP_RIGHT = _UxGT("Superior Direto"); - LSTR MSG_BOTTOM_RIGHT = _UxGT("Inferior Direto"); - LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Calibração Completa"); - LSTR MSG_CALIBRATION_FAILED = _UxGT("Calibração Falhou"); + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" pronta."); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = _UxGT("Cartão inserido"); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = _UxGT("Cartão removido"); // (MEDIA_TYPE_EN) Removed + LSTR MSG_LCD_ENDSTOPS = _UxGT("Fim de curso"); // Endstops + LSTR MSG_MAIN_MENU = _UxGT("Menu principal"); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("Desactivar motores"); // Disable Steppers + LSTR MSG_AUTO_HOME = _UxGT("Ir para origem"); // Auto Home + LSTR MSG_AUTO_HOME_X = _UxGT("Ir para origem X"); // Home X + LSTR MSG_AUTO_HOME_Y = _UxGT("Ir para origem Y"); // Home Y + LSTR MSG_AUTO_HOME_Z = _UxGT("Ir para origem Z"); // Home Z + LSTR MSG_LEVEL_BED_HOMING = _UxGT("Indo para origem"); // Homing XYZ + LSTR MSG_LEVEL_BED_WAITING = _UxGT("Click para iniciar"); // Click to Begin + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Próximo ponto"); // Next Point + LSTR MSG_LEVEL_BED_DONE = _UxGT("Pronto !"); // Leveling Done! + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Definir desvio"); // Set Home Offsets + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Offsets aplicados"); // Offsets Applied + LSTR MSG_PREHEAT_1 = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " ~"; // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL _UxGT(" Bico"); // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL _UxGT(" Bico ~"); // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_1_ALL = _UxGT("Pre-aq. ") PREHEAT_1_LABEL _UxGT(" Tudo"); // Preheat (PREHEAT_1_LABEL) All + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Pre-aq. ") PREHEAT_1_LABEL " " LCD_STR_THERMOMETER _UxGT("Base"); // Preheat (PREHEAT_1_LABEL) Bed + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Definições ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) Conf + LSTR MSG_PREHEAT_M = _UxGT("Pre-aquecer $"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("Pre-aquecer $ ~"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("Pre-aquecer $ Bico"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("Pre-aquecer $ Bico ~"); // Preheat $ End ~ + LSTR MSG_PREHEAT_M_ALL = _UxGT("Pre-aq. $ Tudo"); // Preheat $ All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Pre-aq. $ ") LCD_STR_THERMOMETER _UxGT("Base"); // Preheat $ Bed + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Definições $"); // Preheat $ Conf + LSTR MSG_COOLDOWN = _UxGT("Arrefecer"); // Cooldown + LSTR MSG_SWITCH_PS_ON = _UxGT("Ligar"); // Switch Power On + LSTR MSG_SWITCH_PS_OFF = _UxGT("Desligar"); // Switch Power Off + LSTR MSG_EXTRUDE = _UxGT("Extrudir"); // Extrude + LSTR MSG_RETRACT = _UxGT("Retrair"); // Retract + LSTR MSG_MOVE_AXIS = _UxGT("Mover eixo"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("Calibrar e nivelar"); // Probe and Level + LSTR MSG_MOVE_X = _UxGT("Mover X"); // Move X + LSTR MSG_MOVE_Y = _UxGT("Mover Y"); // Move Y + LSTR MSG_MOVE_Z = _UxGT("Mover Z"); // Move Z + LSTR MSG_MOVE_N = _UxGT("Mover @"); // Move @ + LSTR MSG_MOVE_E = _UxGT("Mover Extrusor"); // Move Extruder + LSTR MSG_MOVE_EN = _UxGT("Mover Extrusor *"); // Move * + LSTR MSG_MOVE_N_MM = _UxGT("Mover $mm"); // Move $mm + LSTR MSG_MOVE_N_IN = _UxGT("Mover $in"); // Move $in + LSTR MSG_MOVE_N_DEG = _UxGT("Mover $") LCD_STR_DEGREE; // Move $(LCD_STR_DEGREE) + LSTR MSG_SPEED = _UxGT("Velocidade"); // Speed + LSTR MSG_MESH_Z_OFFSET = _UxGT("Base Z"); // Bed Z + LSTR MSG_NOZZLE = " " LCD_STR_THERMOMETER _UxGT(" Bico"); // Nozzle + LSTR MSG_NOZZLE_N = " " LCD_STR_THERMOMETER _UxGT(" Bico ~"); // Nozzle ~ + LSTR MSG_BED = " " LCD_STR_THERMOMETER _UxGT(" Base"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("Vel. ventoinha"); // Fan Speed + LSTR MSG_FAN_SPEED_N = _UxGT("Vel. ventoinha ~"); // Fan Speed ~ + LSTR MSG_FLOW = _UxGT("Fluxo"); // Flow + LSTR MSG_FLOW_N = _UxGT("Fluxo ~"); // Flow ~ + LSTR MSG_CONTROL = _UxGT("Controlo"); // Control + LSTR MSG_A_RETRACT = _UxGT("A-retracção"); // Retract Accel + LSTR MSG_A_TRAVEL = _UxGT("A-movimento"); // Travel Accel + LSTR MSG_STEPS_PER_MM = _UxGT("Passo/mm"); // Steps/mm + LSTR MSG_A_STEPS = STR_A _UxGT(" passo/mm"); // (STR_A) Steps/mm + LSTR MSG_B_STEPS = STR_B _UxGT(" passo/mm"); // (STR_B) Steps/mm + LSTR MSG_C_STEPS = STR_C _UxGT(" passo/mm"); // (STR_C) Steps/mm + LSTR MSG_N_STEPS = _UxGT("@ passo/mm"); // @ steps/mm + LSTR MSG_E_STEPS = _UxGT("E passo/mm"); // E steps/mm + LSTR MSG_EN_STEPS = _UxGT("* passo/mm"); // * Steps/mm + LSTR MSG_TEMPERATURE = _UxGT("Temperatura"); // Temperature + LSTR MSG_MOTION = _UxGT("Movimento"); // Motion + LSTR MSG_FILAMENT = _UxGT("Filamento"); // Filament + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E em mm") SUPERSCRIPT_THREE; // E in mm(SUPERSCRIPT_THREE) + LSTR MSG_FILAMENT_DIAM = _UxGT("Fil. Diam."); // Fil. Dia. + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Fil. Diam. *"); // Fil. Dia. * + LSTR MSG_CONTRAST = _UxGT("Contraste"); // LCD Contrast + LSTR MSG_STORE_EEPROM = _UxGT("Guardar na memoria"); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("Carregar da memoria"); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("Rest. de emergen."); // Restore Defaults + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT(" Recarregar"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT("Monitorizar"); // Info Screen + LSTR MSG_PREPARE = _UxGT("Preparar"); // Prepare + LSTR MSG_TUNE = _UxGT("Afinar"); // Tune + LSTR MSG_PAUSE_PRINT = _UxGT("Pausar impressão"); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("Retomar impressão"); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("Parar impressão"); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("Imprimir do SD"); // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = _UxGT("Sem cartão SD"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_DWELL = _UxGT("Em espera..."); // Sleep... + LSTR MSG_USERWAIT = _UxGT("Á espera de ordem"); // Click to Resume... + LSTR MSG_PRINT_ABORTED = _UxGT("Impressão cancelada"); // Print Aborted + LSTR MSG_NO_MOVE = _UxGT("Sem movimento"); // No Move. + LSTR MSG_KILLED = _UxGT("EMERGÊNCIA. "); // KILLED. + LSTR MSG_STOPPED = _UxGT("PARADO. "); // STOPPED. + LSTR MSG_CONTROL_RETRACT = _UxGT(" Retrair mm"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Troca Retrair mm"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACTF = _UxGT(" Retrair V"); // Retract V + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT(" Levantar mm"); // Hop mm + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT(" DesRet mm"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Troca DesRet mm"); // S Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT(" DesRet V"); // Unretract V + LSTR MSG_AUTORETRACT = _UxGT(" Auto-Retract"); // Auto-Retract + LSTR MSG_FILAMENTCHANGE = _UxGT("Trocar filamento"); // Change Filament + LSTR MSG_FILAMENTCHANGE_E = _UxGT("Trocar filamento *"); // Change * Filament + LSTR MSG_ATTACH_MEDIA = _UxGT("Inici. cartão SD"); // Attach (MEDIA_TYPE_EN) + LSTR MSG_ATTACH_SD = _UxGT("Inici. cartão SD"); // Attach SD Card + LSTR MSG_ATTACH_USB = _UxGT("Inici. flash USB"); // Attach USB Drive + LSTR MSG_CHANGE_MEDIA = _UxGT("Trocar cartão SD"); // Refresh (MEDIA_TYPE_EN) + LSTR MSG_ZPROBE_OUT = _UxGT("Sensor fora/base"); // Z Probe Past Bed + LSTR MSG_ZPROBE_XOFFSET = _UxGT("Desvio X"); // Probe X Offset + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Desvio Y"); // Probe Y Offset + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Desvio Z"); // Probe Z Offset + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Desvio @"); // Probe @ Offset + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Passo Z ajuste"); // Babystep Probe Z + LSTR MSG_ENDSTOP_ABORT = _UxGT("Fim de curso"); // Endstop Abort + LSTR MSG_ERR_HEATING_FAILED = _UxGT("Aquecimento falhou"); // Heating Failed + LSTR MSG_ERR_MAXTEMP = _UxGT("Err: T Máxima"); // Err: MAXTEMP + LSTR MSG_ERR_MINTEMP = _UxGT("Err: T Mínima"); // Err: MINTEMP + LSTR MSG_HEATING = _UxGT("Aquecendo..."); // Heating... + LSTR MSG_BED_HEATING = _UxGT("Aquecendo base..."); // Bed Heating... + LSTR MSG_DELTA_CALIBRATE = _UxGT("Calibração Delta"); // Delta Calibration + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Calibrar X"); // Calibrate X + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Calibrar Y"); // Calibrate Y + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Calibrar Z"); // Calibrate Z + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibrar Centro"); // Calibrate Center + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); // (LCD_STR_THERMOMETER) Min + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); // (LCD_STR_THERMOMETER) Max + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fact"); // (LCD_STR_THERMOMETER) Fact + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Impressora Incorreta"); // INCORRECT PRINTER + LSTR MSG_TOP_LEFT = _UxGT("Superior Esquerdo"); // Touch Top Left + LSTR MSG_BOTTOM_LEFT = _UxGT("Inferior Esquerdo"); // Touch Bottom Left + LSTR MSG_TOP_RIGHT = _UxGT("Superior Direto"); // Touch Top Right + LSTR MSG_BOTTOM_RIGHT = _UxGT("Inferior Direto"); // Touch Bottom Right + LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Calibração Completa"); // Calibration Completed + LSTR MSG_CALIBRATION_FAILED = _UxGT("Calibração Falhou"); // Calibration Failed } namespace LanguageWide_pt { using namespace LanguageNarrow_pt; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 #endif } diff --git a/Marlin/src/lcd/language/language_pt_br.h b/Marlin/src/lcd/language/language_pt_br.h index 4dadeae0ef..e8b092bd65 100644 --- a/Marlin/src/lcd/language/language_pt_br.h +++ b/Marlin/src/lcd/language/language_pt_br.h @@ -42,440 +42,423 @@ namespace LanguageNarrow_pt_br { constexpr uint8_t CHARSIZE = 2; LSTR LANGUAGE = _UxGT("Portuguese (BR)"); - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" pronto."); - LSTR MSG_YES = _UxGT("SIM"); - LSTR MSG_NO = _UxGT("NÃO"); - LSTR MSG_BACK = _UxGT("Voltar"); - - LSTR MSG_MEDIA_ABORTING = _UxGT("Abortando..."); - LSTR MSG_MEDIA_INSERTED = _UxGT("Cartão inserido"); - LSTR MSG_MEDIA_REMOVED = _UxGT("Cartão removido"); - LSTR MSG_MEDIA_READ_ERROR = _UxGT("Erro de leitura"); - LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB removido"); - LSTR MSG_USB_FD_USB_FAILED = _UxGT("USB falhou"); - - LSTR MSG_LCD_ENDSTOPS = _UxGT("Fins de curso"); - LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Soft Fins curso"); - LSTR MSG_MAIN_MENU = _UxGT("Menu principal"); - LSTR MSG_ADVANCED_SETTINGS = _UxGT("Config. Avançada"); - LSTR MSG_CONFIGURATION = _UxGT("Configuração"); - LSTR MSG_DISABLE_STEPPERS = _UxGT("Desabilit. motores"); - LSTR MSG_DEBUG_MENU = _UxGT("Menu Debug"); - LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Testar Barra Progres"); - LSTR MSG_AUTO_HOME = _UxGT("Ir a origem XYZ"); - LSTR MSG_AUTO_HOME_X = _UxGT("Ir na origem X"); - LSTR MSG_AUTO_HOME_Y = _UxGT("Ir na origem Y"); - LSTR MSG_AUTO_HOME_Z = _UxGT("Ir na origem Z"); - LSTR MSG_AUTO_Z_ALIGN = _UxGT("Auto alinhar Z"); - LSTR MSG_LEVEL_BED_HOMING = _UxGT("Indo para origem"); - LSTR MSG_LEVEL_BED_WAITING = _UxGT("Clique para Iniciar"); - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Próximo Ponto"); - LSTR MSG_LEVEL_BED_DONE = _UxGT("Fim nivelação!"); - LSTR MSG_Z_FADE_HEIGHT = _UxGT("Suavizar altura"); - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Compensar origem"); - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Alteração aplicada"); - - LSTR MSG_PREHEAT_1 = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Extrusora ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_END_E = _UxGT("Extrusora ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_ALL = _UxGT("Pre-aq.Todo ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Pre-aq.Mesa ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Ajustar ") PREHEAT_1_LABEL; - - LSTR MSG_PREHEAT_M = _UxGT("Pre-aquecer $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Pre-aquecer $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Extrusora $"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Extrusora $ ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Pre-aq.Todo $"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Pre-aq.Mesa $"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Ajustar $"); - - LSTR MSG_PREHEAT_CUSTOM = _UxGT("Customizar Pre-aq."); - LSTR MSG_COOLDOWN = _UxGT("Esfriar"); - LSTR MSG_SWITCH_PS_ON = _UxGT("Ligar"); - LSTR MSG_SWITCH_PS_OFF = _UxGT("Desligar"); - LSTR MSG_EXTRUDE = _UxGT("Extrusar"); - LSTR MSG_RETRACT = _UxGT("Retrair"); - LSTR MSG_MOVE_AXIS = _UxGT("Mover eixo"); - LSTR MSG_PROBE_AND_LEVEL = _UxGT("Sondar e Nivelar"); - LSTR MSG_BED_LEVELING = _UxGT("Nivelação Mesa"); - LSTR MSG_LEVEL_BED = _UxGT("Nivelar Mesa"); - LSTR MSG_BED_TRAMMING = _UxGT("Nivelar Cantos"); - LSTR MSG_NEXT_CORNER = _UxGT("Próximo Canto"); - LSTR MSG_MESH_EDITOR = _UxGT("Editor de Malha"); - LSTR MSG_EDIT_MESH = _UxGT("Editar Malha"); - LSTR MSG_EDITING_STOPPED = _UxGT("Fim da Edição"); - LSTR MSG_PROBING_POINT = _UxGT("Sondando ponto"); - LSTR MSG_MESH_X = _UxGT("Índice X"); - LSTR MSG_MESH_Y = _UxGT("Índice Y"); - LSTR MSG_MESH_EDIT_Z = _UxGT("Valor Z"); - LSTR MSG_CUSTOM_COMMANDS = _UxGT("Comando customizado"); - LSTR MSG_M48_TEST = _UxGT("M48 Teste de sonda"); - LSTR MSG_M48_POINT = _UxGT("M48 Ponto"); - LSTR MSG_IDEX_MENU = _UxGT("Modo IDEX"); - LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-Estacionar"); - LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplicação"); - LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Cópia espelhada"); - LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Controle Total"); - LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2o bico Z"); - LSTR MSG_HOTEND_OFFSET_N = _UxGT("2o bico @"); - LSTR MSG_UBL_DOING_G29 = _UxGT("Executando G29"); - LSTR MSG_UBL_TOOLS = _UxGT("Ferramentas UBL"); - LSTR MSG_UBL_MANUAL_MESH = _UxGT("Fazer malha manual"); - LSTR MSG_UBL_BC_INSERT = _UxGT("Calçar e calibrar"); - LSTR MSG_UBL_BC_INSERT2 = _UxGT("Medir"); - LSTR MSG_UBL_BC_REMOVE = _UxGT("Remover e calibrar"); - LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Movendo para Próximo"); - LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Temp. Mesa"); - LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Temp. Mesa"); - LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Temp. Extrusora"); - LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Temp. Extrusora"); - LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Editar Malha Custom"); - LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Ajuste Fino da Malha"); - LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Fim da Edição"); - LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Montar Malha Custom"); - LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Montar "); - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Montar $"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Checar $"); - LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Montar Malha fria"); - LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Ajustar Altura"); - LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Quant. de Altura"); - LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Validar Malha"); - LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Validar Malha Custom"); - LSTR MSG_G26_HEATING_BED = _UxGT("G26 Aquecendo Mesa"); - LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 Aquecendo Ext."); - LSTR MSG_G26_CANCELED = _UxGT("G26 Cancelado"); - LSTR MSG_G26_LEAVING = _UxGT("G26 Saindo"); - LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Continuar Malha"); - LSTR MSG_UBL_MESH_LEVELING = _UxGT("Nivelação da Malha"); - LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("Nivelação 3 pontos"); - LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Nivelação Grid"); - LSTR MSG_UBL_MESH_LEVEL = _UxGT("Nivelar Malha"); - LSTR MSG_UBL_SIDE_POINTS = _UxGT("Cantos"); - LSTR MSG_UBL_MAP_TYPE = _UxGT("Tipo de Mapa"); - LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Salvar Mapa da Malha"); - LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Enviar Para Host"); - LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Salvar Malha CSV"); - LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Salvar Backup"); - LSTR MSG_UBL_INFO_UBL = _UxGT("Informação do UBL"); - LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Qtd de Enchimento"); - LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Enchimento Manual"); - LSTR MSG_UBL_SMART_FILLIN = _UxGT("Enchimento Smart"); - LSTR MSG_UBL_FILLIN_MESH = _UxGT("Preencher malha"); - LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Invalidar tudo"); - LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Invalidar próximo"); - LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Ajuste Fino de Todos"); - LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Ajustar Mais Próximo"); - LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Armazenamento Malha"); - LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Slot de Memória"); - LSTR MSG_UBL_LOAD_MESH = _UxGT("Ler Malha"); - LSTR MSG_UBL_SAVE_MESH = _UxGT("Salvar Malha"); - LSTR MSG_MESH_LOADED = _UxGT("Malha %i carregada"); - LSTR MSG_MESH_SAVED = _UxGT("Malha %i salva"); - LSTR MSG_UBL_NO_STORAGE = _UxGT("Sem armazenamento"); - LSTR MSG_UBL_SAVE_ERROR = _UxGT("Erro ao salvar UBL"); - LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Erro no restauro UBL"); - LSTR MSG_UBL_Z_OFFSET = _UxGT("Compensação Z: "); - LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Compensação Z parou"); - LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("UBL passo a passo"); - LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Montar Malha fria"); - LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2.Enchimento Smart"); - LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Validar Malha"); - LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Ajuste Fino de Todos"); - LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Validar Malha"); - LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Ajuste Fino de Todos"); - LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Salvar Malha"); - - LSTR MSG_LED_CONTROL = _UxGT("Controle do LED"); - LSTR MSG_LIGHTS = _UxGT("Luz"); - LSTR MSG_LIGHT_N = _UxGT("Luz #{"); - LSTR MSG_LED_PRESETS = _UxGT("Configuração da Luz"); - LSTR MSG_SET_LEDS_RED = _UxGT("Luz Vermelha"); - LSTR MSG_SET_LEDS_ORANGE = _UxGT("Luz Laranja"); - LSTR MSG_SET_LEDS_YELLOW = _UxGT("Luz Amarela"); - LSTR MSG_SET_LEDS_GREEN = _UxGT("Luz Verde"); - LSTR MSG_SET_LEDS_BLUE = _UxGT("Luz Azul"); - LSTR MSG_SET_LEDS_INDIGO = _UxGT("Luz Indigo"); - LSTR MSG_SET_LEDS_VIOLET = _UxGT("Luz Violeta"); - LSTR MSG_SET_LEDS_WHITE = _UxGT("Luz Branca"); - LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Luz Padrão"); - LSTR MSG_CUSTOM_LEDS = _UxGT("Luz Customizada"); - LSTR MSG_INTENSITY_R = _UxGT("Intensidade Vermelho"); - LSTR MSG_INTENSITY_G = _UxGT("Intensidade Verde"); - LSTR MSG_INTENSITY_B = _UxGT("Intensidade Azul"); - LSTR MSG_INTENSITY_W = _UxGT("Intensidade Branco"); - LSTR MSG_LED_BRIGHTNESS = _UxGT("Brilho"); - - LSTR MSG_MOVING = _UxGT("Movendo..."); - LSTR MSG_FREE_XY = _UxGT("Liberar XY"); - LSTR MSG_MOVE_X = _UxGT("Mover X"); - LSTR MSG_MOVE_Y = _UxGT("Mover Y"); - LSTR MSG_MOVE_Z = _UxGT("Mover Z"); - LSTR MSG_MOVE_N = _UxGT("Mover @"); - LSTR MSG_MOVE_E = _UxGT("Mover Extrusor"); - LSTR MSG_MOVE_EN = _UxGT("Mover Extrusor *"); - LSTR MSG_HOTEND_TOO_COLD = _UxGT("Extrus. mto fria"); - LSTR MSG_MOVE_N_MM = _UxGT("Mover $mm"); - LSTR MSG_MOVE_N_IN = _UxGT("Mover $in"); - LSTR MSG_MOVE_N_DEG = _UxGT("Mover $") LCD_STR_DEGREE; - LSTR MSG_SPEED = _UxGT("Velocidade"); - LSTR MSG_MESH_Z_OFFSET = _UxGT("Base Z"); - LSTR MSG_NOZZLE = _UxGT("Bocal"); - LSTR MSG_NOZZLE_N = _UxGT("Bocal ~"); - LSTR MSG_BED = _UxGT("Mesa"); - LSTR MSG_FAN_SPEED = _UxGT("Vel. Ventoinha"); - LSTR MSG_FAN_SPEED_N = _UxGT("Vel. Ventoinha ~"); - LSTR MSG_EXTRA_FAN_SPEED = _UxGT("+Vel. Ventoinha"); - LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("+Vel. Ventoinha ~"); - LSTR MSG_FLOW = _UxGT("Vazão"); - LSTR MSG_FLOW_N = _UxGT("Vazão ~"); - LSTR MSG_CONTROL = _UxGT("Controle"); - LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); - LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Máx"); - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fator"); - LSTR MSG_AUTOTEMP = _UxGT("Temp. Automática"); - LSTR MSG_LCD_ON = _UxGT("Ligado"); - LSTR MSG_LCD_OFF = _UxGT("Desligado"); - LSTR MSG_SELECT_E = _UxGT("Selecionar *"); - LSTR MSG_ACC = _UxGT("Acel."); - LSTR MSG_JERK = _UxGT("Arrancada"); - LSTR MSG_VA_JERK = _UxGT("arrancada V") STR_A; - LSTR MSG_VB_JERK = _UxGT("arrancada V") STR_B; - LSTR MSG_VC_JERK = _UxGT("arrancada V") STR_C; - LSTR MSG_VN_JERK = _UxGT("arrancada V@"); - LSTR MSG_VE_JERK = _UxGT("arrancada VE"); - LSTR MSG_JUNCTION_DEVIATION = _UxGT("Desv. Junção"); - LSTR MSG_MAX_SPEED = _UxGT("Velocidade"); - LSTR MSG_VTRAV_MIN = _UxGT("VDeslocamento min"); - LSTR MSG_ACCELERATION = _UxGT("Aceleração"); - LSTR MSG_A_RETRACT = _UxGT("Retrair A"); - LSTR MSG_A_TRAVEL = _UxGT("Movimento A"); - LSTR MSG_STEPS_PER_MM = _UxGT("Passo/mm"); - LSTR MSG_A_STEPS = _UxGT("Passo ") STR_A _UxGT("/mm"); - LSTR MSG_B_STEPS = _UxGT("Passo ") STR_B _UxGT("/mm"); - LSTR MSG_C_STEPS = _UxGT("Passo ") STR_C _UxGT("/mm"); - LSTR MSG_N_STEPS = _UxGT("Passo @/mm"); - LSTR MSG_E_STEPS = _UxGT("E/mm"); - LSTR MSG_EN_STEPS = _UxGT("*/mm"); - LSTR MSG_TEMPERATURE = _UxGT("Temperatura"); - LSTR MSG_MOTION = _UxGT("Movimento"); - LSTR MSG_FILAMENT = _UxGT("Filamento"); - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("Extrusão em mm") SUPERSCRIPT_THREE; - LSTR MSG_FILAMENT_DIAM = _UxGT("Diâmetro Fil."); - LSTR MSG_FILAMENT_DIAM_E = _UxGT("Diâmetro Fil. *"); - LSTR MSG_FILAMENT_UNLOAD = _UxGT("Descarr. mm"); - LSTR MSG_FILAMENT_LOAD = _UxGT("Carregar mm"); - LSTR MSG_ADVANCE_K = _UxGT("Avanço K"); - LSTR MSG_ADVANCE_K_E = _UxGT("Avanço K *"); - LSTR MSG_CONTRAST = _UxGT("Contraste"); - LSTR MSG_STORE_EEPROM = _UxGT("Salvar Configuração"); - LSTR MSG_LOAD_EEPROM = _UxGT("Ler Configuração"); - LSTR MSG_RESTORE_DEFAULTS = _UxGT("Restauro seguro"); - LSTR MSG_INIT_EEPROM = _UxGT("Iniciar EEPROM"); - LSTR MSG_MEDIA_UPDATE = _UxGT("Atualiz. SD"); - LSTR MSG_RESET_PRINTER = _UxGT("Resetar Impressora"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Atualização"); - LSTR MSG_INFO_SCREEN = _UxGT("Informações"); - LSTR MSG_PREPARE = _UxGT("Preparar"); - LSTR MSG_TUNE = _UxGT("Ajustar"); - LSTR MSG_START_PRINT = _UxGT("Iniciar Impressão"); - LSTR MSG_BUTTON_NEXT = _UxGT("Prox."); - LSTR MSG_BUTTON_INIT = _UxGT("Iniciar"); - LSTR MSG_BUTTON_STOP = _UxGT("Parar"); - LSTR MSG_BUTTON_PRINT = _UxGT("Imprimir"); - LSTR MSG_BUTTON_RESET = _UxGT("Resetar"); - LSTR MSG_BUTTON_CANCEL = _UxGT("Cancelar"); - LSTR MSG_BUTTON_DONE = _UxGT("Pronto"); - LSTR MSG_BUTTON_BACK = _UxGT("Voltar"); - LSTR MSG_BUTTON_PROCEED = _UxGT("Continuar"); - LSTR MSG_PAUSE_PRINT = _UxGT("Pausar impressão"); - LSTR MSG_RESUME_PRINT = _UxGT("Continuar impressão"); - LSTR MSG_STOP_PRINT = _UxGT("Parar impressão"); - LSTR MSG_PRINTING_OBJECT = _UxGT("Imprimindo objeto"); - LSTR MSG_CANCEL_OBJECT = _UxGT("Cancelar Objeto"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Cancelar Objeto {"); - LSTR MSG_OUTAGE_RECOVERY = _UxGT("Recuperar Impressão"); - LSTR MSG_MEDIA_MENU = _UxGT("Imprimir do SD"); - LSTR MSG_NO_MEDIA = _UxGT("Sem cartão SD"); - LSTR MSG_DWELL = _UxGT("Dormindo..."); - LSTR MSG_USERWAIT = _UxGT("Clique para retomar"); - LSTR MSG_PRINT_PAUSED = _UxGT("Impressão Pausada"); - LSTR MSG_PRINTING = _UxGT("Imprimindo..."); - LSTR MSG_PRINT_ABORTED = _UxGT("Impressão Abortada"); - LSTR MSG_NO_MOVE = _UxGT("Sem movimento"); - LSTR MSG_KILLED = _UxGT("PARADA DE EMERGÊNCIA"); - LSTR MSG_STOPPED = _UxGT("PAROU. "); - LSTR MSG_CONTROL_RETRACT = _UxGT("Retrair mm"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Retrair Troca mm"); - LSTR MSG_CONTROL_RETRACTF = _UxGT("Retrair V"); - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Saltar mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Des-Retrair mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Des-RetTroca mm"); - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Des-Retrair V"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("Des-RetTroca V"); - LSTR MSG_AUTORETRACT = _UxGT("Retração Automática"); - LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Distancia Retração"); - LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Distancia Purga"); - LSTR MSG_TOOL_CHANGE = _UxGT("Mudar Ferramenta"); - LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Levantar Z"); - LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Preparar Veloc."); - LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Veloc. Retração"); - LSTR MSG_NOZZLE_STANDBY = _UxGT("Standby bico"); - LSTR MSG_FILAMENTCHANGE = _UxGT("Trocar Filamento"); - LSTR MSG_FILAMENTCHANGE_E = _UxGT("Trocar Filamento *"); - LSTR MSG_FILAMENTLOAD = _UxGT("Carregar Filamento"); - LSTR MSG_FILAMENTLOAD_E = _UxGT("Carregar Filamento *"); - LSTR MSG_FILAMENTUNLOAD = _UxGT("Descarreg. Filamento"); - LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Descarreg. Filamento *"); - LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Descarregar Todos"); - - LSTR MSG_ATTACH_MEDIA = _UxGT("Iniciar cartão SD"); - LSTR MSG_ATTACH_SD = _UxGT("Iniciar cartão SD"); - LSTR MSG_ATTACH_USB = _UxGT("Iniciar flash USB"); - LSTR MSG_CHANGE_MEDIA = _UxGT("Trocar SD"); - LSTR MSG_RELEASE_MEDIA = _UxGT("Liberar SD"); - LSTR MSG_RUN_AUTOFILES = _UxGT("Início automático"); - - LSTR MSG_ZPROBE_OUT = _UxGT("Sonda fora da mesa"); - LSTR MSG_SKEW_FACTOR = _UxGT("Fator de Cisalho"); - LSTR MSG_BLTOUCH = _UxGT("BLTouch"); - LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Testar BLTouch"); - LSTR MSG_BLTOUCH_RESET = _UxGT("Reiniciar BLTouch"); - LSTR MSG_BLTOUCH_STOW = _UxGT("Recolher BLTouch"); - LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Estender BLTouch"); - LSTR MSG_MANUAL_DEPLOY = _UxGT("Estender Sonda-Z"); - LSTR MSG_MANUAL_STOW = _UxGT("Recolher Sonda-Z"); - LSTR MSG_HOME_FIRST = _UxGT("Home %s Primeiro"); - LSTR MSG_ZPROBE_OFFSETS = _UxGT("Compensar Sonda"); - LSTR MSG_ZPROBE_XOFFSET = _UxGT("Compensar Sonda em X"); - LSTR MSG_ZPROBE_YOFFSET = _UxGT("Compensar Sonda em Y"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Compensar Sonda em Z"); - LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Compensar Sonda em @"); - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Passo Z ajuste"); - LSTR MSG_BABYSTEP_X = _UxGT("Passinho X"); - LSTR MSG_BABYSTEP_Y = _UxGT("Passinho Y"); - LSTR MSG_BABYSTEP_Z = _UxGT("Passinho Z"); - LSTR MSG_BABYSTEP_N = _UxGT("Passinho @"); - LSTR MSG_BABYSTEP_TOTAL = _UxGT("Total"); - LSTR MSG_ENDSTOP_ABORT = _UxGT("Abortar Fim de Curso"); - LSTR MSG_ERR_HEATING_FAILED = _UxGT("Aquecimento falhou"); - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Erro:Temp Redundante"); - LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("ESCAPE TÉRMICO"); - LSTR MSG_ERR_MAXTEMP = _UxGT("Erro:Temp Máxima"); - LSTR MSG_ERR_MINTEMP = _UxGT("Erro:Temp Mínima"); - LSTR MSG_HALTED = _UxGT("IMPRESSORA PAROU"); - LSTR MSG_PLEASE_RESET = _UxGT("Favor resetar"); - LSTR MSG_HEATING = _UxGT("Aquecendo..."); - LSTR MSG_COOLING = _UxGT("Resfriando..."); - LSTR MSG_BED_HEATING = _UxGT("Aquecendo mesa..."); - LSTR MSG_BED_COOLING = _UxGT("Esfriando mesa..."); - LSTR MSG_CHAMBER_HEATING = _UxGT("Aquecendo Câmara..."); - LSTR MSG_CHAMBER_COOLING = _UxGT("Esfriando Câmara..."); - LSTR MSG_DELTA_CALIBRATE = _UxGT("Calibrar Delta"); - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Calibrar X"); - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Calibrar Y"); - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Calibrar Z"); - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibrar Centro"); - LSTR MSG_DELTA_SETTINGS = _UxGT("Configuração Delta"); - LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Auto-Calibração"); - LSTR MSG_DELTA_DIAG_ROD = _UxGT("Haste Diagonal"); - LSTR MSG_DELTA_HEIGHT = _UxGT("Altura"); - LSTR MSG_DELTA_RADIUS = _UxGT("Raio"); - LSTR MSG_INFO_MENU = _UxGT("Sobre"); - LSTR MSG_INFO_PRINTER_MENU = _UxGT("Impressora"); - LSTR MSG_3POINT_LEVELING = _UxGT("Nivelamento 3 pontos"); - LSTR MSG_LINEAR_LEVELING = _UxGT("Nivelamento Linear"); - LSTR MSG_BILINEAR_LEVELING = _UxGT("Nivelamento Bilinear"); - LSTR MSG_UBL_LEVELING = _UxGT("Nivelamento UBL"); - LSTR MSG_MESH_LEVELING = _UxGT("Nivelamento da Malha"); - LSTR MSG_INFO_STATS_MENU = _UxGT("Estatísticas"); - LSTR MSG_INFO_BOARD_MENU = _UxGT("Info. da Placa"); - LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Termistores"); - LSTR MSG_INFO_EXTRUDERS = _UxGT("Extrusoras"); - LSTR MSG_INFO_BAUDRATE = _UxGT("Taxa de Transmissão"); - LSTR MSG_INFO_PROTOCOL = _UxGT("Protocolo"); - - LSTR MSG_CASE_LIGHT = _UxGT("Luz da Impressora"); - LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Intensidade Brilho"); - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Impressora Incorreta"); - - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Qtd de Impressões"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Realizadas"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Tempo de Impressão"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Maior trabalho"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("T. Extrusão"); - - LSTR MSG_INFO_MIN_TEMP = _UxGT("Temp Mín"); - LSTR MSG_INFO_MAX_TEMP = _UxGT("Temp Máx"); - LSTR MSG_INFO_PSU = _UxGT("PSU"); - LSTR MSG_DRIVE_STRENGTH = _UxGT("Força do Motor"); - LSTR MSG_DAC_EEPROM_WRITE = _UxGT("Escrever EEPROM DAC"); - LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("TROCA DE FILAMENTO"); - LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("IMPRESSÃO PAUSADA"); - LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("CARREGAR FILAMENTO"); - LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("DESCARREG. FILAMENTO"); - LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("Config. de Retomada"); - LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Purgar mais"); - LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Continuar Impressão"); - LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Bocal: "); - LSTR MSG_RUNOUT_SENSOR = _UxGT("Sensor filamento"); - LSTR MSG_KILL_HOMING_FAILED = _UxGT("Falha ao ir à origem"); - LSTR MSG_LCD_PROBING_FAILED = _UxGT("Falha ao sondar"); - - LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("ESCOLHER FILAMENTO"); - LSTR MSG_MMU2_MENU = _UxGT("MMU"); - - LSTR MSG_MMU2_RESUME = _UxGT("Continuar Impressão"); - LSTR MSG_MMU2_RESUMING = _UxGT("Continuando..."); - LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("Carregar Filamento"); - LSTR MSG_MMU2_LOAD_ALL = _UxGT("Carregar Todos"); - LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Carregar para bocal"); - LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("Ejetar Filamento"); - LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("Ejetar Filamento ~"); - LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Liberar Filamento"); - LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Carregando Fil. %i..."); - LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Ejetando Fil. ..."); - LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Carregando Fil...."); - LSTR MSG_MMU2_ALL = _UxGT("Todos"); - LSTR MSG_MMU2_FILAMENT_N = _UxGT("Filamento ~"); - LSTR MSG_MMU2_RESET = _UxGT("Resetar MMU"); - LSTR MSG_MMU2_RESETTING = _UxGT("Resetando MMU..."); - - LSTR MSG_GAMES = _UxGT("Jogos"); - LSTR MSG_BRICKOUT = _UxGT("Brickout"); - LSTR MSG_INVADERS = _UxGT("Invaders"); - LSTR MSG_SNAKE = _UxGT("Sn4k3"); - LSTR MSG_MAZE = _UxGT("Labirinto"); - - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Clique p. continuar")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Estacionando...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Aguarde...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Insira e Clique")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Clique para Aquecer")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Aquecendo...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Ejetando...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Carregando...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Purgando...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Clique p. finalizar")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Continuando...")); - - LSTR MSG_TOP_LEFT = _UxGT("Superior Esquerdo"); - LSTR MSG_BOTTOM_LEFT = _UxGT("Inferior Esquerdo"); - LSTR MSG_TOP_RIGHT = _UxGT("Superior Direto"); - LSTR MSG_BOTTOM_RIGHT = _UxGT("Inferior Direto"); - LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Calibração Completa"); - LSTR MSG_CALIBRATION_FAILED = _UxGT("Calibração Falhou"); + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" pronto."); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = _UxGT("Cartão inserido"); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = _UxGT("Cartão removido"); // (MEDIA_TYPE_EN) Removed + LSTR MSG_LCD_ENDSTOPS = _UxGT("Fins de curso"); // Endstops + LSTR MSG_MAIN_MENU = _UxGT("Menu principal"); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("Desabilit. motores"); // Disable Steppers + LSTR MSG_AUTO_HOME = _UxGT("Ir a origem XYZ"); // Auto Home + LSTR MSG_AUTO_HOME_X = _UxGT("Ir na origem X"); // Home X + LSTR MSG_AUTO_HOME_Y = _UxGT("Ir na origem Y"); // Home Y + LSTR MSG_AUTO_HOME_Z = _UxGT("Ir na origem Z"); // Home Z + LSTR MSG_LEVEL_BED_HOMING = _UxGT("Indo para origem"); // Homing XYZ + LSTR MSG_LEVEL_BED_WAITING = _UxGT("Clique para Iniciar"); // Click to Begin + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Próximo Ponto"); // Next Point + LSTR MSG_LEVEL_BED_DONE = _UxGT("Fim nivelação!"); // Leveling Done! + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Compensar origem"); // Set Home Offsets + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Alteração aplicada"); // Offsets Applied + LSTR MSG_PREHEAT_1 = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = _UxGT("Pre-aquecer ") PREHEAT_1_LABEL " ~"; // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = _UxGT("Extrusora ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = _UxGT("Extrusora ") PREHEAT_1_LABEL " ~"; // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_1_ALL = _UxGT("Pre-aq.Todo ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) All + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Pre-aq.Mesa ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) Bed + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Ajustar ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) Conf + LSTR MSG_PREHEAT_M = _UxGT("Pre-aquecer $"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("Pre-aquecer $ ~"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("Extrusora $"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("Extrusora $ ~"); // Preheat $ End ~ + LSTR MSG_PREHEAT_M_ALL = _UxGT("Pre-aq.Todo $"); // Preheat $ All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Pre-aq.Mesa $"); // Preheat $ Bed + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Ajustar $"); // Preheat $ Conf + LSTR MSG_COOLDOWN = _UxGT("Esfriar"); // Cooldown + LSTR MSG_SWITCH_PS_ON = _UxGT("Ligar"); // Switch Power On + LSTR MSG_SWITCH_PS_OFF = _UxGT("Desligar"); // Switch Power Off + LSTR MSG_EXTRUDE = _UxGT("Extrusar"); // Extrude + LSTR MSG_RETRACT = _UxGT("Retrair"); // Retract + LSTR MSG_MOVE_AXIS = _UxGT("Mover eixo"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("Sondar e Nivelar"); // Probe and Level + LSTR MSG_BED_LEVELING = _UxGT("Nivelação Mesa"); // Bed Leveling + LSTR MSG_LEVEL_BED = _UxGT("Nivelar Mesa"); // Level Bed + LSTR MSG_MOVE_X = _UxGT("Mover X"); // Move X + LSTR MSG_MOVE_Y = _UxGT("Mover Y"); // Move Y + LSTR MSG_MOVE_Z = _UxGT("Mover Z"); // Move Z + LSTR MSG_MOVE_N = _UxGT("Mover @"); // Move @ + LSTR MSG_MOVE_E = _UxGT("Mover Extrusor"); // Move Extruder + LSTR MSG_MOVE_EN = _UxGT("Mover Extrusor *"); // Move * + LSTR MSG_MOVE_N_MM = _UxGT("Mover $mm"); // Move $mm + LSTR MSG_MOVE_N_IN = _UxGT("Mover $in"); // Move $in + LSTR MSG_MOVE_N_DEG = _UxGT("Mover $") LCD_STR_DEGREE; // Move $(LCD_STR_DEGREE) + LSTR MSG_SPEED = _UxGT("Velocidade"); // Speed + LSTR MSG_MESH_Z_OFFSET = _UxGT("Base Z"); // Bed Z + LSTR MSG_NOZZLE = _UxGT("Bocal"); // Nozzle + LSTR MSG_NOZZLE_N = _UxGT("Bocal ~"); // Nozzle ~ + LSTR MSG_BED = _UxGT("Mesa"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("Vel. Ventoinha"); // Fan Speed + LSTR MSG_FAN_SPEED_N = _UxGT("Vel. Ventoinha ~"); // Fan Speed ~ + LSTR MSG_FLOW = _UxGT("Vazão"); // Flow + LSTR MSG_FLOW_N = _UxGT("Vazão ~"); // Flow ~ + LSTR MSG_CONTROL = _UxGT("Controle"); // Control + LSTR MSG_AUTOTEMP = _UxGT("Temp. Automática"); // Autotemp + LSTR MSG_SELECT_E = _UxGT("Selecionar *"); // Select * + LSTR MSG_ACC = _UxGT("Acel."); // Accel + LSTR MSG_VTRAV_MIN = _UxGT("VDeslocamento min"); // Min Travel Speed + LSTR MSG_ACCELERATION = _UxGT("Aceleração"); // Acceleration + LSTR MSG_A_RETRACT = _UxGT("Retrair A"); // Retract Accel + LSTR MSG_A_TRAVEL = _UxGT("Movimento A"); // Travel Accel + LSTR MSG_STEPS_PER_MM = _UxGT("Passo/mm"); // Steps/mm + LSTR MSG_A_STEPS = _UxGT("Passo ") STR_A _UxGT("/mm"); // (STR_A) Steps/mm + LSTR MSG_B_STEPS = _UxGT("Passo ") STR_B _UxGT("/mm"); // (STR_B) Steps/mm + LSTR MSG_C_STEPS = _UxGT("Passo ") STR_C _UxGT("/mm"); // (STR_C) Steps/mm + LSTR MSG_N_STEPS = _UxGT("Passo @/mm"); // @ steps/mm + LSTR MSG_E_STEPS = _UxGT("E/mm"); // E steps/mm + LSTR MSG_EN_STEPS = _UxGT("*/mm"); // * Steps/mm + LSTR MSG_TEMPERATURE = _UxGT("Temperatura"); // Temperature + LSTR MSG_MOTION = _UxGT("Movimento"); // Motion + LSTR MSG_FILAMENT = _UxGT("Filamento"); // Filament + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("Extrusão em mm") SUPERSCRIPT_THREE; // E in mm(SUPERSCRIPT_THREE) + LSTR MSG_FILAMENT_DIAM = _UxGT("Diâmetro Fil."); // Fil. Dia. + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Diâmetro Fil. *"); // Fil. Dia. * + LSTR MSG_CONTRAST = _UxGT("Contraste"); // LCD Contrast + LSTR MSG_STORE_EEPROM = _UxGT("Salvar Configuração"); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("Ler Configuração"); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("Restauro seguro"); // Restore Defaults + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Atualização"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT("Informações"); // Info Screen + LSTR MSG_PREPARE = _UxGT("Preparar"); // Prepare + LSTR MSG_TUNE = _UxGT("Ajustar"); // Tune + LSTR MSG_PAUSE_PRINT = _UxGT("Pausar impressão"); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("Continuar impressão"); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("Parar impressão"); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("Imprimir do SD"); // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = _UxGT("Sem cartão SD"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_DWELL = _UxGT("Dormindo..."); // Sleep... + LSTR MSG_USERWAIT = _UxGT("Clique para retomar"); // Click to Resume... + LSTR MSG_PRINT_ABORTED = _UxGT("Impressão Abortada"); // Print Aborted + LSTR MSG_NO_MOVE = _UxGT("Sem movimento"); // No Move. + LSTR MSG_KILLED = _UxGT("PARADA DE EMERGÊNCIA"); // KILLED. + LSTR MSG_STOPPED = _UxGT("PAROU. "); // STOPPED. + LSTR MSG_CONTROL_RETRACT = _UxGT("Retrair mm"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Retrair Troca mm"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACTF = _UxGT("Retrair V"); // Retract V + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Saltar mm"); // Hop mm + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Des-Retrair mm"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Des-RetTroca mm"); // S Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Des-Retrair V"); // Unretract V + LSTR MSG_AUTORETRACT = _UxGT("Retração Automática"); // Auto-Retract + LSTR MSG_FILAMENTCHANGE = _UxGT("Trocar Filamento"); // Change Filament + LSTR MSG_FILAMENTCHANGE_E = _UxGT("Trocar Filamento *"); // Change * Filament + LSTR MSG_ATTACH_MEDIA = _UxGT("Iniciar cartão SD"); // Attach (MEDIA_TYPE_EN) + LSTR MSG_ATTACH_SD = _UxGT("Iniciar cartão SD"); // Attach SD Card + LSTR MSG_ATTACH_USB = _UxGT("Iniciar flash USB"); // Attach USB Drive + LSTR MSG_CHANGE_MEDIA = _UxGT("Trocar SD"); // Refresh (MEDIA_TYPE_EN) + LSTR MSG_RUN_AUTOFILES = _UxGT("Início automático"); // Run Autofiles + LSTR MSG_ZPROBE_OUT = _UxGT("Sonda fora da mesa"); // Z Probe Past Bed + LSTR MSG_BLTOUCH_RESET = _UxGT("Reiniciar BLTouch"); // Reset + LSTR MSG_ZPROBE_XOFFSET = _UxGT("Compensar Sonda em X"); // Probe X Offset + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Compensar Sonda em Y"); // Probe Y Offset + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Compensar Sonda em Z"); // Probe Z Offset + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Compensar Sonda em @"); // Probe @ Offset + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Passo Z ajuste"); // Babystep Probe Z + LSTR MSG_BABYSTEP_X = _UxGT("Passinho X"); // Babystep X + LSTR MSG_BABYSTEP_Y = _UxGT("Passinho Y"); // Babystep Y + LSTR MSG_BABYSTEP_Z = _UxGT("Passinho Z"); // Babystep Z + LSTR MSG_BABYSTEP_N = _UxGT("Passinho @"); // Babystep @ + LSTR MSG_ENDSTOP_ABORT = _UxGT("Abortar Fim de Curso"); // Endstop Abort + LSTR MSG_ERR_HEATING_FAILED = _UxGT("Aquecimento falhou"); // Heating Failed + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Erro:Temp Redundante"); // Err: REDUNDANT TEMP + LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("ESCAPE TÉRMICO"); // THERMAL RUNAWAY + LSTR MSG_ERR_MAXTEMP = _UxGT("Erro:Temp Máxima"); // Err: MAXTEMP + LSTR MSG_ERR_MINTEMP = _UxGT("Erro:Temp Mínima"); // Err: MINTEMP + LSTR MSG_HALTED = _UxGT("IMPRESSORA PAROU"); // PRINTER HALTED + LSTR MSG_PLEASE_RESET = _UxGT("Favor resetar"); // Please Reset + LSTR MSG_HEATING = _UxGT("Aquecendo..."); // Heating... + LSTR MSG_BED_HEATING = _UxGT("Aquecendo mesa..."); // Bed Heating... + LSTR MSG_DELTA_CALIBRATE = _UxGT("Calibrar Delta"); // Delta Calibration + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Calibrar X"); // Calibrate X + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Calibrar Y"); // Calibrate Y + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Calibrar Z"); // Calibrate Z + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibrar Centro"); // Calibrate Center + LSTR MSG_INFO_MENU = _UxGT("Sobre"); // About Printer + LSTR MSG_INFO_PRINTER_MENU = _UxGT("Impressora"); // Printer Info + LSTR MSG_INFO_STATS_MENU = _UxGT("Estatísticas"); // Stats + LSTR MSG_INFO_BOARD_MENU = _UxGT("Info. da Placa"); // Board Info + LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Termistores"); // Thermistors + LSTR MSG_INFO_EXTRUDERS = _UxGT("Extrusoras"); // Extruders + LSTR MSG_INFO_BAUDRATE = _UxGT("Taxa de Transmissão"); // Baud + LSTR MSG_INFO_PROTOCOL = _UxGT("Protocolo"); // Protocol + LSTR MSG_CASE_LIGHT = _UxGT("Luz da Impressora"); // Case Light + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Qtd de Impressões"); // Prints + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Realizadas"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Tempo de Impressão"); // Total + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Maior trabalho"); // Longest + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("T. Extrusão"); // Extruded + LSTR MSG_INFO_MIN_TEMP = _UxGT("Temp Mín"); // Min Temp + LSTR MSG_INFO_MAX_TEMP = _UxGT("Temp Máx"); // Max Temp + LSTR MSG_INFO_PSU = _UxGT("PSU"); // PSU + LSTR MSG_DRIVE_STRENGTH = _UxGT("Força do Motor"); // Drive Strength + LSTR MSG_DAC_EEPROM_WRITE = _UxGT("Escrever EEPROM DAC"); // DAC EEPROM Write + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Continuar Impressão"); // Continue + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Aguarde...")); // |Please wait... + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Insira e Clique")); // |Insert and Click + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Ejetando...")); // |Ejecting... + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Carregando...")); // |Loading... + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Continuando...")); // |Resuming... + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); // (LCD_STR_THERMOMETER) Min + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Máx"); // (LCD_STR_THERMOMETER) Max + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fator"); // (LCD_STR_THERMOMETER) Fact + LSTR MSG_LCD_ON = _UxGT("Ligado"); // On + LSTR MSG_LCD_OFF = _UxGT("Desligado"); // Off + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Impressora Incorreta"); // INCORRECT PRINTER + LSTR MSG_DEBUG_MENU = _UxGT("Menu Debug"); // Debug Menu + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Testar Barra Progres"); // Progress Bar Test + LSTR MSG_MOVING = _UxGT("Movendo..."); // Moving... + LSTR MSG_FREE_XY = _UxGT("Liberar XY"); // Free XY + LSTR MSG_HOME_FIRST = _UxGT("Home %s Primeiro"); // Home %s First + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Aquecendo...")); // |Heating... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Clique para Aquecer")); // |Click to heat + LSTR MSG_YES = _UxGT("SIM"); // YES + LSTR MSG_NO = _UxGT("NÃO"); // NO + LSTR MSG_BACK = _UxGT("Voltar"); // Back + LSTR MSG_MEDIA_ABORTING = _UxGT("Abortando..."); // Aborting... + LSTR MSG_MEDIA_READ_ERROR = _UxGT("Erro de leitura"); // (MEDIA_TYPE_EN) read error + LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB removido"); // USB device removed + LSTR MSG_USB_FD_USB_FAILED = _UxGT("USB falhou"); // USB start failed + LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Soft Fins curso"); // Soft Endstops + LSTR MSG_ADVANCED_SETTINGS = _UxGT("Config. Avançada"); // Advanced Settings + LSTR MSG_CONFIGURATION = _UxGT("Configuração"); // Configuration + LSTR MSG_AUTO_Z_ALIGN = _UxGT("Auto alinhar Z"); // Auto Z-Align + LSTR MSG_Z_FADE_HEIGHT = _UxGT("Suavizar altura"); // Fade Height + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Customizar Pre-aq."); // Preheat Custom + LSTR MSG_BED_TRAMMING = _UxGT("Nivelar Cantos"); // Bed Tramming + LSTR MSG_NEXT_CORNER = _UxGT("Próximo Canto"); // Next Corner + LSTR MSG_MESH_EDITOR = _UxGT("Editor de Malha"); // Mesh Editor + LSTR MSG_EDIT_MESH = _UxGT("Editar Malha"); // Edit Mesh + LSTR MSG_EDITING_STOPPED = _UxGT("Fim da Edição"); // Mesh Editing Stopped + LSTR MSG_PROBING_POINT = _UxGT("Sondando ponto"); // Probing Point + LSTR MSG_MESH_X = _UxGT("Índice X"); // Index X + LSTR MSG_MESH_Y = _UxGT("Índice Y"); // Index Y + LSTR MSG_MESH_EDIT_Z = _UxGT("Valor Z"); // Z Value + LSTR MSG_CUSTOM_COMMANDS = _UxGT("Comando customizado"); // Custom Commands + LSTR MSG_M48_TEST = _UxGT("M48 Teste de sonda"); // M48 Probe Test + LSTR MSG_M48_POINT = _UxGT("M48 Ponto"); // M48 Point + LSTR MSG_IDEX_MENU = _UxGT("Modo IDEX"); // IDEX Mode + LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-Estacionar"); // Auto-Park + LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplicação"); // Duplication + LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Cópia espelhada"); // Mirrored Copy + LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Controle Total"); // Full Control + LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2o bico Z"); // 2nd Nozzle Z + LSTR MSG_HOTEND_OFFSET_N = _UxGT("2o bico @"); // 2nd Nozzle @ + LSTR MSG_UBL_DOING_G29 = _UxGT("Executando G29"); // Doing G29 + LSTR MSG_UBL_TOOLS = _UxGT("Ferramentas UBL"); // UBL Tools + LSTR MSG_UBL_MANUAL_MESH = _UxGT("Fazer malha manual"); // Manually Build Mesh + LSTR MSG_UBL_BC_INSERT = _UxGT("Calçar e calibrar"); // Place Shim & Measure + LSTR MSG_UBL_BC_INSERT2 = _UxGT("Medir"); // Measure + LSTR MSG_UBL_BC_REMOVE = _UxGT("Remover e calibrar"); // Remove & Measure Bed + LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Movendo para Próximo"); // Moving to next + LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Temp. Mesa"); // Bed Temp + LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Temp. Mesa"); // Bed Temp + LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Temp. Extrusora"); // Hotend Temp + LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Temp. Extrusora"); // Hotend Temp + LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Editar Malha Custom"); // Edit Custom Mesh + LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Ajuste Fino da Malha"); // Fine Tuning Mesh + LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Fim da Edição"); // Done Editing Mesh + LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Montar Malha Custom"); // Build Custom Mesh + LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Montar "); // Build Mesh + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Montar $"); // Build Mesh ($) + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Checar $"); // Validate Mesh ($) + LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Montar Malha fria"); // Build Cold Mesh + LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Ajustar Altura"); // Adjust Mesh Height + LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Quant. de Altura"); // Height Amount + LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Validar Malha"); // Validate Mesh + LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Validar Malha Custom"); // Validate Custom Mesh + LSTR MSG_G26_HEATING_BED = _UxGT("G26 Aquecendo Mesa"); // G26 Heating Bed + LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 Aquecendo Ext."); // G26 Heating Nozzle + LSTR MSG_G26_CANCELED = _UxGT("G26 Cancelado"); // G26 Canceled + LSTR MSG_G26_LEAVING = _UxGT("G26 Saindo"); // Leaving G26 + LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Continuar Malha"); // Continue Bed Mesh + LSTR MSG_UBL_MESH_LEVELING = _UxGT("Nivelação da Malha"); // Mesh Leveling + LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("Nivelação 3 pontos"); // 3-Point Leveling + LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Nivelação Grid"); // Grid Mesh Leveling + LSTR MSG_UBL_MESH_LEVEL = _UxGT("Nivelar Malha"); // Level Mesh + LSTR MSG_UBL_SIDE_POINTS = _UxGT("Cantos"); // Side Points + LSTR MSG_UBL_MAP_TYPE = _UxGT("Tipo de Mapa"); // Map Type + LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Salvar Mapa da Malha"); // Output Mesh Map + LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Enviar Para Host"); // Output for Host + LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Salvar Malha CSV"); // Output for CSV + LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Salvar Backup"); // Off Printer Backup + LSTR MSG_UBL_INFO_UBL = _UxGT("Informação do UBL"); // Output UBL Info + LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Qtd de Enchimento"); // Fill-in Amount + LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Enchimento Manual"); // Manual Fill-in + LSTR MSG_UBL_SMART_FILLIN = _UxGT("Enchimento Smart"); // Smart Fill-in + LSTR MSG_UBL_FILLIN_MESH = _UxGT("Preencher malha"); // Fill-in Mesh + LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Invalidar tudo"); // Invalidate All + LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Invalidar próximo"); // Invalidate Closest + LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Ajuste Fino de Todos"); // Fine Tune All + LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Ajustar Mais Próximo"); // Fine Tune Closest + LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Armazenamento Malha"); // Mesh Storage + LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Slot de Memória"); // Memory Slot + LSTR MSG_UBL_LOAD_MESH = _UxGT("Ler Malha"); // Load Bed Mesh + LSTR MSG_UBL_SAVE_MESH = _UxGT("Salvar Malha"); // Save Bed Mesh + LSTR MSG_MESH_LOADED = _UxGT("Malha %i carregada"); // Mesh %i Loaded + LSTR MSG_MESH_SAVED = _UxGT("Malha %i salva"); // Mesh %i Saved + LSTR MSG_UBL_NO_STORAGE = _UxGT("Sem armazenamento"); // No Storage + LSTR MSG_UBL_SAVE_ERROR = _UxGT("Erro ao salvar UBL"); // UBL Save Error + LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Erro no restauro UBL"); // UBL Restore Error + LSTR MSG_UBL_Z_OFFSET = _UxGT("Compensação Z: "); // Z-Offset: + LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Compensação Z parou"); // Z-Offset Stopped + LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("UBL passo a passo"); // Step-By-Step UBL + LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Montar Malha fria"); // 1. Build Cold Mesh + LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2.Enchimento Smart"); // 2. Smart Fill-in + LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Validar Malha"); // 3. Validate Mesh + LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Ajuste Fino de Todos"); // 4. Fine Tune All + LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Validar Malha"); // 5. Validate Mesh + LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Ajuste Fino de Todos"); // 6. Fine Tune All + LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Salvar Malha"); // 7. Save Bed Mesh + LSTR MSG_LED_CONTROL = _UxGT("Controle do LED"); // LED Control + LSTR MSG_LIGHTS = _UxGT("Luz"); // Lights + LSTR MSG_LIGHT_N = _UxGT("Luz #{"); // Light #{ + LSTR MSG_LED_PRESETS = _UxGT("Configuração da Luz"); // Light Presets + LSTR MSG_SET_LEDS_RED = _UxGT("Luz Vermelha"); // Red + LSTR MSG_SET_LEDS_ORANGE = _UxGT("Luz Laranja"); // Orange + LSTR MSG_SET_LEDS_YELLOW = _UxGT("Luz Amarela"); // Yellow + LSTR MSG_SET_LEDS_GREEN = _UxGT("Luz Verde"); // Green + LSTR MSG_SET_LEDS_BLUE = _UxGT("Luz Azul"); // Blue + LSTR MSG_SET_LEDS_INDIGO = _UxGT("Luz Indigo"); // Indigo + LSTR MSG_SET_LEDS_VIOLET = _UxGT("Luz Violeta"); // Violet + LSTR MSG_SET_LEDS_WHITE = _UxGT("Luz Branca"); // White + LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Luz Padrão"); // Default + LSTR MSG_CUSTOM_LEDS = _UxGT("Luz Customizada"); // Custom Lights + LSTR MSG_INTENSITY_R = _UxGT("Intensidade Vermelho"); // Red Intensity + LSTR MSG_INTENSITY_G = _UxGT("Intensidade Verde"); // Green Intensity + LSTR MSG_INTENSITY_B = _UxGT("Intensidade Azul"); // Blue Intensity + LSTR MSG_INTENSITY_W = _UxGT("Intensidade Branco"); // White Intensity + LSTR MSG_LED_BRIGHTNESS = _UxGT("Brilho"); // Brightness + LSTR MSG_HOTEND_TOO_COLD = _UxGT("Extrus. mto fria"); // Hotend too cold + LSTR MSG_EXTRA_FAN_SPEED = _UxGT("+Vel. Ventoinha"); // Extra Fan Speed + LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("+Vel. Ventoinha ~"); // Extra Fan Speed ~ + LSTR MSG_JERK = _UxGT("Arrancada"); // Jerk + LSTR MSG_VA_JERK = _UxGT("arrancada V") STR_A; // Max (STR_A) Jerk + LSTR MSG_VB_JERK = _UxGT("arrancada V") STR_B; // Max (STR_B) Jerk + LSTR MSG_VC_JERK = _UxGT("arrancada V") STR_C; // Max (STR_C) Jerk + LSTR MSG_VN_JERK = _UxGT("arrancada V@"); // Max @ Jerk + LSTR MSG_VE_JERK = _UxGT("arrancada VE"); // Max E Jerk + LSTR MSG_JUNCTION_DEVIATION = _UxGT("Desv. Junção"); // Junction Dev + LSTR MSG_MAX_SPEED = _UxGT("Velocidade"); // Max Speed (mm/s) + LSTR MSG_FILAMENT_UNLOAD = _UxGT("Descarr. mm"); // Unload mm + LSTR MSG_FILAMENT_LOAD = _UxGT("Carregar mm"); // Load mm + LSTR MSG_ADVANCE_K = _UxGT("Avanço K"); // Advance K + LSTR MSG_ADVANCE_K_E = _UxGT("Avanço K *"); // Advance K * + LSTR MSG_INIT_EEPROM = _UxGT("Iniciar EEPROM"); // Initialize EEPROM + LSTR MSG_MEDIA_UPDATE = _UxGT("Atualiz. SD"); // (MEDIA_TYPE_EN) Update + LSTR MSG_RESET_PRINTER = _UxGT("Resetar Impressora"); // Reset Printer + LSTR MSG_START_PRINT = _UxGT("Iniciar Impressão"); // Start Print + LSTR MSG_BUTTON_NEXT = _UxGT("Prox."); // Next + LSTR MSG_BUTTON_INIT = _UxGT("Iniciar"); // Init + LSTR MSG_BUTTON_STOP = _UxGT("Parar"); // Stop + LSTR MSG_BUTTON_PRINT = _UxGT("Imprimir"); // Print + LSTR MSG_BUTTON_RESET = _UxGT("Resetar"); // Reset + LSTR MSG_BUTTON_CANCEL = _UxGT("Cancelar"); // Cancel + LSTR MSG_BUTTON_DONE = _UxGT("Pronto"); // Done + LSTR MSG_BUTTON_BACK = _UxGT("Voltar"); // Back + LSTR MSG_BUTTON_PROCEED = _UxGT("Continuar"); // Proceed + LSTR MSG_PRINTING_OBJECT = _UxGT("Imprimindo objeto"); // Print Obj + LSTR MSG_CANCEL_OBJECT = _UxGT("Cancelar Objeto"); // Cancel Obj + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Cancelar Objeto {"); // Cancel Obj { + LSTR MSG_OUTAGE_RECOVERY = _UxGT("Recuperar Impressão"); // Power Outage + LSTR MSG_PRINT_PAUSED = _UxGT("Impressão Pausada"); // Print Paused + LSTR MSG_PRINTING = _UxGT("Imprimindo..."); // Printing... + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("Des-RetTroca V"); // S UnRet V + LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Distancia Retração"); // Swap Length + LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Distancia Purga"); // Purge Length + LSTR MSG_TOOL_CHANGE = _UxGT("Mudar Ferramenta"); // Tool Change + LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Levantar Z"); // Z Raise + LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Preparar Veloc."); // Prime Speed + LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Veloc. Retração"); // Retract Speed + LSTR MSG_NOZZLE_STANDBY = _UxGT("Standby bico"); // Nozzle Standby + LSTR MSG_FILAMENTLOAD = _UxGT("Carregar Filamento"); // Load Filament + LSTR MSG_FILAMENTLOAD_E = _UxGT("Carregar Filamento *"); // Load * Filament + LSTR MSG_FILAMENTUNLOAD = _UxGT("Descarreg. Filamento"); // Unload Filament + LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Descarreg. Filamento *"); // Unload * Filament + LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Descarregar Todos"); // Unload All + LSTR MSG_RELEASE_MEDIA = _UxGT("Liberar SD"); // Release (MEDIA_TYPE_EN) + LSTR MSG_SKEW_FACTOR = _UxGT("Fator de Cisalho"); // Skew Factor + LSTR MSG_BLTOUCH = _UxGT("BLTouch"); // BLTouch + LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Testar BLTouch"); // Self-Test + LSTR MSG_BLTOUCH_STOW = _UxGT("Recolher BLTouch"); // Stow + LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Estender BLTouch"); // Deploy + LSTR MSG_MANUAL_DEPLOY = _UxGT("Estender Sonda-Z"); // Deploy Z-Probe + LSTR MSG_MANUAL_STOW = _UxGT("Recolher Sonda-Z"); // Stow Z-Probe + LSTR MSG_BABYSTEP_TOTAL = _UxGT("Total"); // Total + LSTR MSG_COOLING = _UxGT("Resfriando..."); // Cooling... + LSTR MSG_BED_COOLING = _UxGT("Esfriando mesa..."); // Bed Cooling... + LSTR MSG_CHAMBER_HEATING = _UxGT("Aquecendo Câmara..."); // Chamber Heating... + LSTR MSG_CHAMBER_COOLING = _UxGT("Esfriando Câmara..."); // Chamber Cooling... + LSTR MSG_DELTA_SETTINGS = _UxGT("Configuração Delta"); // Delta Settings + LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Auto-Calibração"); // Auto Calibration + LSTR MSG_DELTA_DIAG_ROD = _UxGT("Haste Diagonal"); // Diag Rod + LSTR MSG_DELTA_HEIGHT = _UxGT("Altura"); // Height + LSTR MSG_DELTA_RADIUS = _UxGT("Raio"); // Radius + LSTR MSG_3POINT_LEVELING = _UxGT("Nivelamento 3 pontos"); // 3-Point Leveling + LSTR MSG_LINEAR_LEVELING = _UxGT("Nivelamento Linear"); // Linear Leveling + LSTR MSG_BILINEAR_LEVELING = _UxGT("Nivelamento Bilinear"); // Bilinear Leveling + LSTR MSG_UBL_LEVELING = _UxGT("Nivelamento UBL"); // Unified Bed Leveling + LSTR MSG_MESH_LEVELING = _UxGT("Nivelamento da Malha"); // Mesh Leveling + LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Intensidade Brilho"); // Light Brightness + LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("TROCA DE FILAMENTO"); // FILAMENT CHANGE + LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("IMPRESSÃO PAUSADA"); // PRINT PAUSED + LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("CARREGAR FILAMENTO"); // LOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("DESCARREG. FILAMENTO"); // UNLOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("Config. de Retomada"); // RESUME OPTIONS: + LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Purgar mais"); // Purge more + LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Bocal: "); // Nozzle: + LSTR MSG_RUNOUT_SENSOR = _UxGT("Sensor filamento"); // Runout Sensor + LSTR MSG_KILL_HOMING_FAILED = _UxGT("Falha ao ir à origem"); // Homing Failed + LSTR MSG_LCD_PROBING_FAILED = _UxGT("Falha ao sondar"); // Probing Failed + LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("ESCOLHER FILAMENTO"); // CHOOSE FILAMENT + LSTR MSG_MMU2_MENU = _UxGT("MMU"); // MMU + LSTR MSG_MMU2_RESUME = _UxGT("Continuar Impressão"); // Resume + LSTR MSG_MMU2_RESUMING = _UxGT("Continuando..."); // MMU Resuming... + LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("Carregar Filamento"); // Load + LSTR MSG_MMU2_LOAD_ALL = _UxGT("Carregar Todos"); // Load All + LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Carregar para bocal"); // Load to Nozzle + LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("Ejetar Filamento"); // Eject + LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("Ejetar Filamento ~"); // Eject ~ + LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Liberar Filamento"); // Unload + LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Carregando Fil. %i..."); // Filament %i Load... + LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Ejetando Fil. ..."); // Filament %i Eject... + LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Carregando Fil...."); // Filament %i Unload... + LSTR MSG_MMU2_ALL = _UxGT("Todos"); // All + LSTR MSG_MMU2_FILAMENT_N = _UxGT("Filamento ~"); // Filament ~ + LSTR MSG_MMU2_RESET = _UxGT("Resetar MMU"); // Reset MMU + LSTR MSG_MMU2_RESETTING = _UxGT("Resetando MMU..."); // Resetting... + LSTR MSG_GAMES = _UxGT("Jogos"); // Games + LSTR MSG_BRICKOUT = _UxGT("Brickout"); // Brickout + LSTR MSG_INVADERS = _UxGT("Invaders"); // Invaders + LSTR MSG_SNAKE = _UxGT("Sn4k3"); // Sn4k3 + LSTR MSG_MAZE = _UxGT("Labirinto"); // Maze + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Clique p. continuar")); // |Click to continue + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Estacionando...")); // |Parking... + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Purgando...")); // |Purging... + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Clique p. finalizar")); // |Click to finish + LSTR MSG_ZPROBE_OFFSETS = _UxGT("Compensar Sonda"); // Probe Offsets + LSTR MSG_TOP_LEFT = _UxGT("Superior Esquerdo"); // Touch Top Left + LSTR MSG_BOTTOM_LEFT = _UxGT("Inferior Esquerdo"); // Touch Bottom Left + LSTR MSG_TOP_RIGHT = _UxGT("Superior Direto"); // Touch Top Right + LSTR MSG_BOTTOM_RIGHT = _UxGT("Inferior Direto"); // Touch Bottom Right + LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Calibração Completa"); // Calibration Completed + LSTR MSG_CALIBRATION_FAILED = _UxGT("Calibração Falhou"); // Calibration Failed } namespace LanguageWide_pt_br { using namespace LanguageNarrow_pt_br; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Total de Impressões"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Realizadas"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Tempo de Impressão"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Trabalho Mais longo"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total de Extrusão"); + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Total de Impressões"); // Print Count + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Realizadas"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Tempo de Impressão"); // Print Time + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Trabalho Mais longo"); // Longest Job Time + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total de Extrusão"); // Extruded Total #endif } @@ -483,16 +466,16 @@ namespace LanguageTall_pt_br { using namespace LanguageWide_pt_br; #if LCD_HEIGHT >= 4 // Filament Change screens show up to 3 lines on a 4-line display - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Aperte o botão para", "continuar impressão")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Esperando o", "inicio da", "troca de filamento")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Coloque filamento", "pressione o botão", "para continuar...")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Pressione o botão", "p/ aquecer o bocal")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Aquecendo o bocal", "Aguarde...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Esperando", "remoção de filamento")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Esperando", "filamento")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Espere pela", "purga de filamento")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Clique para finaliz.", "purga de filamento")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Esperando impressão", "continuar")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Esperando o", "inicio da", "troca de filamento")); // |Wait for|filament change|to start + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Coloque filamento", "pressione o botão", "para continuar...")); // |Insert filament|and press button|to continue + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Esperando", "remoção de filamento")); // |Wait for|filament unload + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Esperando", "filamento")); // |Wait for|filament load + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Esperando impressão", "continuar")); // |Wait for print|to resume... + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Aquecendo o bocal", "Aguarde...")); // |Nozzle heating|Please wait... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Pressione o botão", "p/ aquecer o bocal")); // |Press button|to heat nozzle + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Aperte o botão para", "continuar impressão")); // |Press Button|to resume print + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Espere pela", "purga de filamento")); // |Wait for|filament purge + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Clique para finaliz.", "purga de filamento")); // |Click to finish|filament purge #endif } diff --git a/Marlin/src/lcd/language/language_ro.h b/Marlin/src/lcd/language/language_ro.h index 38edf1fd54..b8553fcbd4 100644 --- a/Marlin/src/lcd/language/language_ro.h +++ b/Marlin/src/lcd/language/language_ro.h @@ -46,564 +46,541 @@ namespace LanguageNarrow_ro { constexpr uint8_t CHARSIZE = 2; LSTR LANGUAGE = _UxGT("Romanian"); - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" Pregatit."); - LSTR MSG_YES = _UxGT("DA"); - LSTR MSG_NO = _UxGT("NU"); - LSTR MSG_BACK = _UxGT("Inapoi"); - - LSTR MSG_MEDIA_ABORTING = _UxGT("Abandon..."); - LSTR MSG_MEDIA_INSERTED = _UxGT("Media Introdus"); - LSTR MSG_MEDIA_REMOVED = _UxGT("Media Inlaturat"); - LSTR MSG_MEDIA_READ_ERROR = _UxGT("Eroare Citire Media"); - LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("Dispozitiv USB Inlaturat"); - LSTR MSG_USB_FD_USB_FAILED = _UxGT("Pornire USB Esuata"); - LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Eroare:Subcall Overflow"); - - LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Max length 8 characters - LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Soft Endstops"); - LSTR MSG_MAIN_MENU = _UxGT("Principal"); - LSTR MSG_ADVANCED_SETTINGS = _UxGT("Setari Avansate"); - LSTR MSG_CONFIGURATION = _UxGT("Configurare"); - LSTR MSG_DISABLE_STEPPERS = _UxGT("Dezactivare Motoare"); - LSTR MSG_DEBUG_MENU = _UxGT("Meniu Debug"); - LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Test Bara Progres"); - LSTR MSG_AUTO_HOME = _UxGT("Auto Acasa"); - LSTR MSG_AUTO_HOME_X = _UxGT("Acasa X"); - LSTR MSG_AUTO_HOME_Y = _UxGT("Acasa Y"); - LSTR MSG_AUTO_HOME_Z = _UxGT("Acasa Z"); - LSTR MSG_AUTO_Z_ALIGN = _UxGT("Auto Aliniere-Z"); - LSTR MSG_LEVEL_BED_HOMING = _UxGT("Acasa XYZ"); - LSTR MSG_LEVEL_BED_WAITING = _UxGT("Click pentru a incepe"); - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Urmatorul Punct"); - LSTR MSG_LEVEL_BED_DONE = _UxGT("Nivelare Terminata!"); - LSTR MSG_Z_FADE_HEIGHT = _UxGT("Fade Inaltime"); - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Seteaza Offseturile Acasa"); - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Offseturi Aplicate"); - - LSTR MSG_PREHEAT_1 = _UxGT("Preincalzeste ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Preincalzeste ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Capatul"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Capatul ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Tot"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Patul"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Conf"); - - LSTR MSG_PREHEAT_M = _UxGT("Preincalzeste $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Preincalzeste $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Preincalzeste $ Capatul"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Preincalzeste $ Capatul ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Preincalzeste $ Tot"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Preincalzeste $ Patul"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Preincalzeste $ Conf"); - - LSTR MSG_PREHEAT_CUSTOM = _UxGT("Preincalzeste Personalizat"); - LSTR MSG_COOLDOWN = _UxGT("Racire"); - LSTR MSG_CUTTER_FREQUENCY = _UxGT("Frecventa"); - LSTR MSG_LASER_MENU = _UxGT("Control Laser"); - LSTR MSG_LASER_POWER = _UxGT("Puterea Laserului"); - LSTR MSG_SPINDLE_MENU = _UxGT("Controlul Spindle"); - LSTR MSG_SPINDLE_POWER = _UxGT("Puterea Spindle"); - LSTR MSG_SPINDLE_REVERSE = _UxGT("Spindle Invers"); - LSTR MSG_SWITCH_PS_ON = _UxGT("Porneste"); - LSTR MSG_SWITCH_PS_OFF = _UxGT("Opreste"); - LSTR MSG_EXTRUDE = _UxGT("Extrudeaza"); - LSTR MSG_RETRACT = _UxGT("Retracteaza"); - LSTR MSG_MOVE_AXIS = _UxGT("Muta Axa"); - LSTR MSG_PROBE_AND_LEVEL = _UxGT("Probare si Nivelare"); - LSTR MSG_BED_LEVELING = _UxGT("Nivelarea Patului"); - LSTR MSG_LEVEL_BED = _UxGT("Niveleaza Patul"); - LSTR MSG_BED_TRAMMING = _UxGT("Niveleaza Colturile"); - LSTR MSG_NEXT_CORNER = _UxGT("Urmatorul Colt"); - LSTR MSG_MESH_EDITOR = _UxGT("Editor Mesh"); - LSTR MSG_EDIT_MESH = _UxGT("Editeaza Mesh"); - LSTR MSG_EDITING_STOPPED = _UxGT("Editarea Meshului Oprita"); - LSTR MSG_PROBING_POINT = _UxGT("Punctul de Probare"); - LSTR MSG_MESH_X = _UxGT("Index X"); - LSTR MSG_MESH_Y = _UxGT("Index Y"); - LSTR MSG_MESH_EDIT_Z = _UxGT("Valoare Z"); - LSTR MSG_CUSTOM_COMMANDS = _UxGT("Comenzi Personalizate"); - LSTR MSG_M48_TEST = _UxGT("M48 Probe Test"); - LSTR MSG_M48_POINT = _UxGT("M48 Point"); - LSTR MSG_M48_DEVIATION = _UxGT("Deviation"); - LSTR MSG_IDEX_MENU = _UxGT("IDEX Mode"); - LSTR MSG_OFFSETS_MENU = _UxGT("Tool Offsets"); - LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-Park"); - LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplication"); - LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Mirrored Copy"); - LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Full Control"); - LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2nd Nozzle Z"); - LSTR MSG_HOTEND_OFFSET_N = _UxGT("2nd Nozzle @"); - LSTR MSG_UBL_DOING_G29 = _UxGT("Doing G29"); - LSTR MSG_UBL_TOOLS = _UxGT("UBL Tools"); - LSTR MSG_LCD_TILTING_MESH = _UxGT("Tilting Point"); - LSTR MSG_UBL_MANUAL_MESH = _UxGT("Manually Build Mesh"); - LSTR MSG_UBL_BC_INSERT = _UxGT("Place Shim & Measure"); - LSTR MSG_UBL_BC_INSERT2 = _UxGT("Measure"); - LSTR MSG_UBL_BC_REMOVE = _UxGT("Remove & Measure Bed"); - LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Moving to next"); - LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Bed Temp"); - LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Bed Temp"); - LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Hotend Temp"); - LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Hotend Temp"); - LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Edit Custom Mesh"); - LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Fine Tuning Mesh"); - LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Done Editing Mesh"); - LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Build Custom Mesh"); - LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Build Mesh"); - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Build Mesh ($)"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Validate Mesh ($)"); - LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Build Cold Mesh"); - LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Adjust Mesh Height"); - LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Height Amount"); - LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Validate Mesh"); - LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Validate Custom Mesh"); - LSTR MSG_G26_HEATING_BED = _UxGT("G26 Heating Bed"); - LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 Heating Nozzle"); - LSTR MSG_G26_MANUAL_PRIME = _UxGT("Manual priming..."); - LSTR MSG_G26_FIXED_LENGTH = _UxGT("Fixed Length Prime"); - LSTR MSG_G26_PRIME_DONE = _UxGT("Done Priming"); - LSTR MSG_G26_CANCELED = _UxGT("G26 Canceled"); - LSTR MSG_G26_LEAVING = _UxGT("Leaving G26"); - LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Continue Bed Mesh"); - LSTR MSG_UBL_MESH_LEVELING = _UxGT("Mesh Leveling"); - LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-Point Leveling"); - LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Grid Mesh Leveling"); - LSTR MSG_UBL_MESH_LEVEL = _UxGT("Level Mesh"); - LSTR MSG_UBL_SIDE_POINTS = _UxGT("Side Points"); - LSTR MSG_UBL_MAP_TYPE = _UxGT("Map Type"); - LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Output Mesh Map"); - LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Output for Host"); - LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Output for CSV"); - LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Off Imprimanta Backup"); - LSTR MSG_UBL_INFO_UBL = _UxGT("Output UBL Info"); - LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Fill-in Amount"); - LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Manual Fill-in"); - LSTR MSG_UBL_SMART_FILLIN = _UxGT("Smart Fill-in"); - LSTR MSG_UBL_FILLIN_MESH = _UxGT("Fill-in Mesh"); - LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Invalidate All"); - LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Invalidate Closest"); - LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Fine Tune All"); - LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Fine Tune Closest"); - LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Mesh Storage"); - LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Memory Slot"); - LSTR MSG_UBL_LOAD_MESH = _UxGT("Load Bed Mesh"); - LSTR MSG_UBL_SAVE_MESH = _UxGT("Save Bed Mesh"); - LSTR MSG_MESH_LOADED = _UxGT("Mesh %i Loaded"); - LSTR MSG_MESH_SAVED = _UxGT("Mesh %i Saved"); - LSTR MSG_UBL_NO_STORAGE = _UxGT("No Storage"); - LSTR MSG_UBL_SAVE_ERROR = _UxGT("Err: UBL Save"); - LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Err: UBL Restore"); - LSTR MSG_UBL_Z_OFFSET = _UxGT("Z-Offset: "); - LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Z-Offset Stopped"); - LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("Step-By-Step UBL"); - LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1. Build Cold Mesh"); - LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2. Smart Fill-in"); - LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3. Validate Mesh"); - LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4. Fine Tune All"); - LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5. Validate Mesh"); - LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6. Fine Tune All"); - LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7. Save Bed Mesh"); - - LSTR MSG_LED_CONTROL = _UxGT("LED Control"); - LSTR MSG_LIGHTS = _UxGT("Lights"); - LSTR MSG_LIGHT_N = _UxGT("Light #{"); - LSTR MSG_LED_PRESETS = _UxGT("Light Presets"); - LSTR MSG_SET_LEDS_RED = _UxGT("Red"); - LSTR MSG_SET_LEDS_ORANGE = _UxGT("Orange"); - LSTR MSG_SET_LEDS_YELLOW = _UxGT("Yellow"); - LSTR MSG_SET_LEDS_GREEN = _UxGT("Green"); - LSTR MSG_SET_LEDS_BLUE = _UxGT("Blue"); - LSTR MSG_SET_LEDS_INDIGO = _UxGT("Indigo"); - LSTR MSG_SET_LEDS_VIOLET = _UxGT("Violet"); - LSTR MSG_SET_LEDS_WHITE = _UxGT("White"); - LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Default"); - LSTR MSG_CUSTOM_LEDS = _UxGT("Custom Lights"); - LSTR MSG_INTENSITY_R = _UxGT("Red Intensity"); - LSTR MSG_INTENSITY_G = _UxGT("Green Intensity"); - LSTR MSG_INTENSITY_B = _UxGT("Blue Intensity"); - LSTR MSG_INTENSITY_W = _UxGT("White Intensity"); - LSTR MSG_LED_BRIGHTNESS = _UxGT("Brightness"); - - LSTR MSG_MOVING = _UxGT("Moving..."); - LSTR MSG_FREE_XY = _UxGT("Free XY"); - LSTR MSG_MOVE_X = _UxGT("Move X"); - LSTR MSG_MOVE_Y = _UxGT("Move Y"); - LSTR MSG_MOVE_Z = _UxGT("Move Z"); - LSTR MSG_MOVE_N = _UxGT("Move @"); - LSTR MSG_MOVE_E = _UxGT("Extruder"); - LSTR MSG_MOVE_EN = _UxGT("Extruder *"); - LSTR MSG_HOTEND_TOO_COLD = _UxGT("Capat Prea Rece"); - LSTR MSG_MOVE_N_MM = _UxGT("Move $mm"); - LSTR MSG_MOVE_N_IN = _UxGT("Move $in"); - LSTR MSG_MOVE_N_DEG = _UxGT("Move $") LCD_STR_DEGREE; - LSTR MSG_SPEED = _UxGT("Speed"); - LSTR MSG_MESH_Z_OFFSET = _UxGT("Bed Z"); - LSTR MSG_NOZZLE = _UxGT("Nozzle"); - LSTR MSG_NOZZLE_N = _UxGT("Nozzle ~"); - LSTR MSG_NOZZLE_PARKED = _UxGT("Nozzle Parked"); - LSTR MSG_NOZZLE_STANDBY = _UxGT("Nozzle Standby"); - LSTR MSG_BED = _UxGT("Bed"); - LSTR MSG_CHAMBER = _UxGT("Enclosure"); - LSTR MSG_FAN_SPEED = _UxGT("Fan Speed"); - LSTR MSG_FAN_SPEED_N = _UxGT("Fan Speed ~"); - LSTR MSG_STORED_FAN_N = _UxGT("Stored Fan ~"); - LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Extra Fan Speed"); - LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Extra Fan Speed ~"); - LSTR MSG_CONTROLLER_FAN = _UxGT("Controller Fan"); - LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("Idle Speed"); - LSTR MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("Auto Mode"); - LSTR MSG_CONTROLLER_FAN_SPEED = _UxGT("Active Speed"); - LSTR MSG_CONTROLLER_FAN_DURATION = _UxGT("Idle Period"); - LSTR MSG_FLOW = _UxGT("Flow"); - LSTR MSG_FLOW_N = _UxGT("Flow ~"); - LSTR MSG_CONTROL = _UxGT("Control"); - LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); - LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fact"); - LSTR MSG_AUTOTEMP = _UxGT("Autotemp"); - LSTR MSG_LCD_ON = _UxGT("On"); - LSTR MSG_LCD_OFF = _UxGT("Off"); - LSTR MSG_PID_AUTOTUNE = _UxGT("PID Autotune"); - LSTR MSG_PID_AUTOTUNE_E = _UxGT("PID Autotune *"); - LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("PID tuning done"); - LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Autotune failed! Bad extruder."); - LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Autotune failed! Temperature too high."); - LSTR MSG_PID_TIMEOUT = _UxGT("Autotune failed! Timeout."); - LSTR MSG_SELECT_E = _UxGT("Select *"); - LSTR MSG_ACC = _UxGT("Accel"); - LSTR MSG_JERK = _UxGT("Jerk"); - LSTR MSG_VA_JERK = _UxGT("V") STR_A _UxGT("-Jerk"); - LSTR MSG_VB_JERK = _UxGT("V") STR_B _UxGT("-Jerk"); - LSTR MSG_VC_JERK = _UxGT("V") STR_C _UxGT("-Jerk"); - LSTR MSG_VN_JERK = _UxGT("V@-Jerk"); - LSTR MSG_VE_JERK = _UxGT("Ve-Jerk"); - LSTR MSG_JUNCTION_DEVIATION = _UxGT("Junction Dev"); - LSTR MSG_MAX_SPEED = _UxGT("Max Speed"); - LSTR MSG_VMAX_A = _UxGT("Max Speed ") STR_A; - LSTR MSG_VMAX_B = _UxGT("Max Speed ") STR_B; - LSTR MSG_VMAX_C = _UxGT("Max Speed ") STR_C; - LSTR MSG_VMAX_N = _UxGT("Max Speed @"); - LSTR MSG_VMAX_E = _UxGT("Max Speed E"); - LSTR MSG_VMAX_EN = _UxGT("Max Speed *"); - LSTR MSG_VMIN = _UxGT("Vmin"); - LSTR MSG_VTRAV_MIN = _UxGT("VTrav Min"); - LSTR MSG_ACCELERATION = _UxGT("Acceleration"); - LSTR MSG_AMAX_A = _UxGT("Amax ") STR_A; - LSTR MSG_AMAX_B = _UxGT("Amax ") STR_B; - LSTR MSG_AMAX_C = _UxGT("Amax ") STR_C; - LSTR MSG_AMAX_N = _UxGT("Amax @"); - LSTR MSG_AMAX_E = _UxGT("Amax E"); - LSTR MSG_AMAX_EN = _UxGT("Amax *"); - LSTR MSG_A_RETRACT = _UxGT("A-Retract"); - LSTR MSG_A_TRAVEL = _UxGT("A-Travel"); - LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("Frequency max"); - LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("Feed min"); - LSTR MSG_STEPS_PER_MM = _UxGT("Steps/mm"); - LSTR MSG_A_STEPS = STR_A _UxGT(" steps/mm"); - LSTR MSG_B_STEPS = STR_B _UxGT(" steps/mm"); - LSTR MSG_C_STEPS = STR_C _UxGT(" steps/mm"); - LSTR MSG_N_STEPS = _UxGT("@ steps/mm"); - LSTR MSG_E_STEPS = _UxGT("E steps/mm"); - LSTR MSG_EN_STEPS = _UxGT("* steps/mm"); - LSTR MSG_TEMPERATURE = _UxGT("Temperature"); - LSTR MSG_MOTION = _UxGT("Motion"); - LSTR MSG_FILAMENT = _UxGT("Filament"); - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm") SUPERSCRIPT_THREE; - LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("E Limit in mm") SUPERSCRIPT_THREE; - LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("E Limit *"); - LSTR MSG_FILAMENT_DIAM = _UxGT("Fil. Dia."); - LSTR MSG_FILAMENT_DIAM_E = _UxGT("Fil. Dia. *"); - LSTR MSG_FILAMENT_UNLOAD = _UxGT("Unload mm"); - LSTR MSG_FILAMENT_LOAD = _UxGT("Load mm"); - LSTR MSG_ADVANCE_K = _UxGT("Advance K"); - LSTR MSG_ADVANCE_K_E = _UxGT("Advance K *"); - LSTR MSG_CONTRAST = _UxGT("LCD Contrast"); - LSTR MSG_STORE_EEPROM = _UxGT("Store Settings"); - LSTR MSG_LOAD_EEPROM = _UxGT("Load Settings"); - LSTR MSG_RESTORE_DEFAULTS = _UxGT("Restore Defaults"); - LSTR MSG_INIT_EEPROM = _UxGT("Initialize EEPROM"); - LSTR MSG_ERR_EEPROM_CRC = _UxGT("Err: EEPROM CRC"); - LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Err: Mărimea EEPROM"); - LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Err: Versiunea EEPROM"); - LSTR MSG_SETTINGS_STORED = _UxGT("Settings Stored"); - LSTR MSG_MEDIA_UPDATE = _UxGT("Media Update"); - LSTR MSG_RESET_PRINTER = _UxGT("Reset Imprimanta"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Refresh"); - LSTR MSG_INFO_SCREEN = _UxGT("Info Screen"); - LSTR MSG_PREPARE = _UxGT("Prepare"); - LSTR MSG_TUNE = _UxGT("Tune"); - LSTR MSG_POWER_MONITOR = _UxGT("Power monitor"); - LSTR MSG_CURRENT = _UxGT("Intensitate"); - LSTR MSG_VOLTAGE = _UxGT("Voltaj"); - LSTR MSG_POWER = _UxGT("Putere"); - LSTR MSG_START_PRINT = _UxGT("Start Imprimare"); - LSTR MSG_BUTTON_NEXT = _UxGT("Urmatorul"); - LSTR MSG_BUTTON_INIT = _UxGT("Initiere"); - LSTR MSG_BUTTON_STOP = _UxGT("Stop"); - LSTR MSG_BUTTON_PRINT = _UxGT("Imprimeaza"); - LSTR MSG_BUTTON_RESET = _UxGT("Reseteaza"); - LSTR MSG_BUTTON_IGNORE = _UxGT("Ignora"); - LSTR MSG_BUTTON_CANCEL = _UxGT("Anuleaza"); - LSTR MSG_BUTTON_DONE = _UxGT("OK"); - LSTR MSG_BUTTON_BACK = _UxGT("Inapoi"); - LSTR MSG_BUTTON_PROCEED = _UxGT("Proceed"); - LSTR MSG_PAUSING = _UxGT("Pausing..."); - LSTR MSG_PAUSE_PRINT = _UxGT("Pause Print"); - LSTR MSG_RESUME_PRINT = _UxGT("Resume Print"); - LSTR MSG_STOP_PRINT = _UxGT("Stop Print"); - LSTR MSG_PRINTING_OBJECT = _UxGT("Printing Object"); - LSTR MSG_CANCEL_OBJECT = _UxGT("Cancel Object"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Cancel Object {"); - LSTR MSG_OUTAGE_RECOVERY = _UxGT("Outage Recovery"); - LSTR MSG_MEDIA_MENU = _UxGT("Print from Media"); - LSTR MSG_NO_MEDIA = _UxGT("No Media"); - LSTR MSG_DWELL = _UxGT("Sleep..."); - LSTR MSG_USERWAIT = _UxGT("Click to Resume..."); - LSTR MSG_PRINT_PAUSED = _UxGT("Print Paused"); - LSTR MSG_PRINTING = _UxGT("Printing..."); - LSTR MSG_PRINT_ABORTED = _UxGT("Print Aborted"); - LSTR MSG_PRINT_DONE = _UxGT("Print Done"); - LSTR MSG_NO_MOVE = _UxGT("No Move."); - LSTR MSG_KILLED = _UxGT("KILLED. "); - LSTR MSG_STOPPED = _UxGT("STOPPED. "); - LSTR MSG_CONTROL_RETRACT = _UxGT("Retract mm"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Swap Re.mm"); - LSTR MSG_CONTROL_RETRACTF = _UxGT("Retract V"); - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Hop mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Unretr. mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("S Unretr. mm"); - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Unretract V"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V"); - LSTR MSG_AUTORETRACT = _UxGT("Auto-Retract"); - LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Swap Length"); - LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Swap Extra"); - LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Purge Length"); - LSTR MSG_TOOL_CHANGE = _UxGT("Tool Inlocuire"); - LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Z Raise"); - LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Prime Speed"); - LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Retract Speed"); - LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Park Head"); - LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Recover Speed"); - LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Fan Speed"); - LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Fan Time"); - LSTR MSG_TOOL_MIGRATION_ON = _UxGT("Auto Pornit"); - LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("Auto Oprit"); - LSTR MSG_TOOL_MIGRATION = _UxGT("Tool Migration"); - LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("Auto-migrare"); - LSTR MSG_TOOL_MIGRATION_END = _UxGT("Last Extruder"); - LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("Migrate to *"); - LSTR MSG_FILAMENTCHANGE = _UxGT("Inlocuire Filament"); - LSTR MSG_FILAMENTCHANGE_E = _UxGT("Inlocuire Filament *"); - LSTR MSG_FILAMENTLOAD = _UxGT("Incarcare Filament"); - LSTR MSG_FILAMENTLOAD_E = _UxGT("Incarcare Filament *"); - LSTR MSG_FILAMENTUNLOAD = _UxGT("Scoatere Filament"); - LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Scoatere Filament *"); - LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Scoate Tot"); - - LSTR MSG_ATTACH_MEDIA = _UxGT("Atasare card SD"); - LSTR MSG_ATTACH_SD = _UxGT("Atasare card SD"); - LSTR MSG_ATTACH_USB = _UxGT("Atasare FD USB"); - LSTR MSG_CHANGE_MEDIA = _UxGT("Inlocuire Media"); - LSTR MSG_RELEASE_MEDIA = _UxGT("Eliberare Media"); - LSTR MSG_RUN_AUTOFILES = _UxGT("Autostart"); - - LSTR MSG_ZPROBE_OUT = _UxGT("Z Probe Past Bed"); - LSTR MSG_SKEW_FACTOR = _UxGT("Skew Factor"); - LSTR MSG_BLTOUCH = _UxGT("BLTouch"); - LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Self-Test"); - LSTR MSG_BLTOUCH_RESET = _UxGT("Reset"); - LSTR MSG_BLTOUCH_STOW = _UxGT("Stow"); - LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Deploy"); - LSTR MSG_BLTOUCH_SW_MODE = _UxGT("SW-Mode"); - LSTR MSG_BLTOUCH_5V_MODE = _UxGT("5V-Mode"); - LSTR MSG_BLTOUCH_OD_MODE = _UxGT("OD-Mode"); - LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("Mode-Store"); - LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Set BLTouch to 5V"); - LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Set BLTouch to OD"); - LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Report Drain"); - LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("DANGER: Bad settings can cause damage! Proceed anyway?"); - LSTR MSG_TOUCHMI_PROBE = _UxGT("TouchMI"); - LSTR MSG_TOUCHMI_INIT = _UxGT("Init TouchMI"); - LSTR MSG_TOUCHMI_ZTEST = _UxGT("Z Offset Test"); - LSTR MSG_TOUCHMI_SAVE = _UxGT("Save"); - LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("Deploy TouchMI"); - LSTR MSG_MANUAL_DEPLOY = _UxGT("Deploy Z-Probe"); - LSTR MSG_MANUAL_STOW = _UxGT("Stow Z-Probe"); - LSTR MSG_HOME_FIRST = _UxGT("Home %s First"); - LSTR MSG_ZPROBE_OFFSETS = _UxGT("Probe Offsets"); - LSTR MSG_ZPROBE_XOFFSET = _UxGT("Probe X Offset"); - LSTR MSG_ZPROBE_YOFFSET = _UxGT("Probe Y Offset"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Probe Z Offset"); - LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Probe @ Offset"); - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Pas Z ajustare"); - LSTR MSG_BABYSTEP_X = _UxGT("Babystep X"); - LSTR MSG_BABYSTEP_Y = _UxGT("Babystep Y"); - LSTR MSG_BABYSTEP_Z = _UxGT("Babystep Z"); - LSTR MSG_BABYSTEP_N = _UxGT("Babystep @"); - LSTR MSG_BABYSTEP_TOTAL = _UxGT("Total"); - LSTR MSG_ENDSTOP_ABORT = _UxGT("Endstop Abort"); - LSTR MSG_ERR_HEATING_FAILED = _UxGT("Heating Failed"); - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Err: REDUNDANT TEMP"); - LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("THERMAL RUNAWAY"); - LSTR MSG_ERR_MAXTEMP = _UxGT("Err: MAXTEMP"); - LSTR MSG_ERR_MINTEMP = _UxGT("Err: MINTEMP"); - LSTR MSG_HALTED = _UxGT("PRINTER HALTED"); - LSTR MSG_PLEASE_RESET = _UxGT("Please Reset"); - LSTR MSG_HEATING = _UxGT("Heating..."); - LSTR MSG_COOLING = _UxGT("Cooling..."); - LSTR MSG_BED_HEATING = _UxGT("Bed Heating..."); - LSTR MSG_BED_COOLING = _UxGT("Bed Cooling..."); - LSTR MSG_CHAMBER_HEATING = _UxGT("Chamber Heating..."); - LSTR MSG_CHAMBER_COOLING = _UxGT("Chamber Cooling..."); - LSTR MSG_DELTA_CALIBRATE = _UxGT("Delta Calibration"); - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Calibrate X"); - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Calibrate Y"); - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Calibrate Z"); - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibrate Center"); - LSTR MSG_DELTA_SETTINGS = _UxGT("Delta Settings"); - LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Auto Calibration"); - LSTR MSG_DELTA_DIAG_ROD = _UxGT("Diag Rod"); - LSTR MSG_DELTA_HEIGHT = _UxGT("Inaltime"); - LSTR MSG_DELTA_RADIUS = _UxGT("Radius"); - LSTR MSG_INFO_MENU = _UxGT("Despre Imprimanta"); - LSTR MSG_INFO_PRINTER_MENU = _UxGT("Info Imprimanta"); - LSTR MSG_3POINT_LEVELING = _UxGT("Nivelare in 3 puncte"); - LSTR MSG_LINEAR_LEVELING = _UxGT("Nivelare Lineara"); - LSTR MSG_BILINEAR_LEVELING = _UxGT("Nivelare Bilineara"); - LSTR MSG_UBL_LEVELING = _UxGT("Nivelarea Patului Unificata"); - LSTR MSG_MESH_LEVELING = _UxGT("Nivelare Mesh"); - LSTR MSG_INFO_STATS_MENU = _UxGT("Status Imprimanta"); - LSTR MSG_INFO_BOARD_MENU = _UxGT("Informatii Placa"); - LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Termistoare"); - LSTR MSG_INFO_EXTRUDERS = _UxGT("Extrudere"); - LSTR MSG_INFO_BAUDRATE = _UxGT("Baud"); - LSTR MSG_INFO_PROTOCOL = _UxGT("Protocol"); - LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Runaway Watch: OFF"); - LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Runaway Watch: ON"); - LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Hotend Idle Timeout"); - - LSTR MSG_CASE_LIGHT = _UxGT("Case Light"); - LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Light Brightness"); - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("INCORRECT PRINTER"); - - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Prints"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completed"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Longest"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extruded"); - - LSTR MSG_INFO_MIN_TEMP = _UxGT("Temperatura Minima"); - LSTR MSG_INFO_MAX_TEMP = _UxGT("Temperatura Maxima"); - LSTR MSG_INFO_PSU = _UxGT("PSU"); - LSTR MSG_DRIVE_STRENGTH = _UxGT("Drive Strength"); - LSTR MSG_DAC_PERCENT_N = _UxGT("@ Driver %"); - LSTR MSG_ERROR_TMC = _UxGT("TMC CONNECTION ERROR"); - LSTR MSG_DAC_EEPROM_WRITE = _UxGT("DAC EEPROM Write"); - LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("FILAMENT CHANGE"); - LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("PRINT PAUSED"); - LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("LOAD FILAMENT"); - LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("UNLOAD FILAMENT"); - LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("RESUME OPTIONS:"); - LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Purge more"); - LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Continue"); - LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Nozzle: "); - LSTR MSG_RUNOUT_SENSOR = _UxGT("Runout Sensor"); - LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("Runout Dist mm"); - LSTR MSG_KILL_HOMING_FAILED = _UxGT("Homing Failed"); - LSTR MSG_LCD_PROBING_FAILED = _UxGT("Probing Failed"); - - LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("CHOOSE FILAMENT"); - LSTR MSG_MMU2_MENU = _UxGT("MMU"); - LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("Update MMU Firmware!"); - LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU Needs Attention."); - LSTR MSG_MMU2_RESUME = _UxGT("MMU Resume"); - LSTR MSG_MMU2_RESUMING = _UxGT("MMU Resuming..."); - LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("MMU Load"); - LSTR MSG_MMU2_LOAD_ALL = _UxGT("MMU Load All"); - LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("MMU Load to Nozzle"); - LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("MMU Eject"); - LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("MMU Eject ~"); - LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("MMU Unload"); - LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Loading Fil. %i..."); - LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Ejecting Fil. ..."); - LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Unloading Fil...."); - LSTR MSG_MMU2_ALL = _UxGT("All"); - LSTR MSG_MMU2_FILAMENT_N = _UxGT("Filament ~"); - LSTR MSG_MMU2_RESET = _UxGT("Reset MMU"); - LSTR MSG_MMU2_RESETTING = _UxGT("MMU Resetting..."); - LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Remove, click"); - - LSTR MSG_MIX = _UxGT("Mix"); - LSTR MSG_MIX_COMPONENT_N = _UxGT("Component {"); - LSTR MSG_MIXER = _UxGT("Mixer"); - LSTR MSG_GRADIENT = _UxGT("Gradient"); - LSTR MSG_FULL_GRADIENT = _UxGT("Full Gradient"); - LSTR MSG_TOGGLE_MIX = _UxGT("Toggle Mix"); - LSTR MSG_CYCLE_MIX = _UxGT("Cycle Mix"); - LSTR MSG_GRADIENT_MIX = _UxGT("Gradient Mix"); - LSTR MSG_REVERSE_GRADIENT = _UxGT("Reverse Gradient"); - LSTR MSG_ACTIVE_VTOOL = _UxGT("Active V-tool"); - LSTR MSG_START_VTOOL = _UxGT("Start V-tool"); - LSTR MSG_END_VTOOL = _UxGT(" End V-tool"); - LSTR MSG_GRADIENT_ALIAS = _UxGT("Alias V-tool"); - LSTR MSG_RESET_VTOOLS = _UxGT("Reset V-tools"); - LSTR MSG_COMMIT_VTOOL = _UxGT("Commit V-tool Mix"); - LSTR MSG_VTOOLS_RESET = _UxGT("V-tools Were Reset"); - LSTR MSG_START_Z = _UxGT("Start Z:"); - LSTR MSG_END_Z = _UxGT(" End Z:"); - - LSTR MSG_GAMES = _UxGT("Jocuri"); - LSTR MSG_BRICKOUT = _UxGT("Brickout"); - LSTR MSG_INVADERS = _UxGT("Invaders"); - LSTR MSG_SNAKE = _UxGT("Sn4k3"); - LSTR MSG_MAZE = _UxGT("Maze"); - - LSTR MSG_BAD_PAGE = _UxGT("Bad page index"); - LSTR MSG_BAD_PAGE_SPEED = _UxGT("Bad page speed"); - - // - // Filament Inlocuire screens show up to 2 lines on a 3-line display - // - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Click to continue")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parcare...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Va rog asteptati...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Insert and Click")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Click pentru incalzire")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Incalzire...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Ejectare...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Incarcare...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Curatare...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Click pentru a termina")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Se Reia...")); - - LSTR MSG_TMC_DRIVERS = _UxGT("TMC Drivers"); - LSTR MSG_TMC_CURRENT = _UxGT("Driver Current"); - LSTR MSG_TMC_HYBRID_THRS = _UxGT("Hybrid Threshold"); - LSTR MSG_TMC_HOMING_THRS = _UxGT("Sensorless Homing"); - LSTR MSG_TMC_STEPPING_MODE = _UxGT("Stepping Mode"); - LSTR MSG_TMC_STEALTHCHOP = _UxGT("StealthChop"); - - LSTR MSG_SERVICE_RESET = _UxGT("Reset"); - LSTR MSG_SERVICE_IN = _UxGT(" in:"); - LSTR MSG_BACKLASH = _UxGT("Backlash"); - LSTR MSG_BACKLASH_CORRECTION = _UxGT("Corectare"); - LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Smoothing"); - - LSTR MSG_LEVEL_X_AXIS = _UxGT("Nivelare Axa X"); - LSTR MSG_AUTO_CALIBRATE = _UxGT("Auto Calibrare"); - LSTR MSG_HEATER_TIMEOUT = _UxGT("Timeout Incalzitor"); - LSTR MSG_REHEAT = _UxGT("Reincalzire"); - LSTR MSG_REHEATING = _UxGT("Reincalzire..."); + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" Pregatit."); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = _UxGT("Media Introdus"); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = _UxGT("Media Inlaturat"); // (MEDIA_TYPE_EN) Removed + LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Endstops + LSTR MSG_MAIN_MENU = _UxGT("Principal"); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("Dezactivare Motoare"); // Disable Steppers + LSTR MSG_AUTO_HOME = _UxGT("Auto Acasa"); // Auto Home + LSTR MSG_AUTO_HOME_X = _UxGT("Acasa X"); // Home X + LSTR MSG_AUTO_HOME_Y = _UxGT("Acasa Y"); // Home Y + LSTR MSG_AUTO_HOME_Z = _UxGT("Acasa Z"); // Home Z + LSTR MSG_LEVEL_BED_HOMING = _UxGT("Acasa XYZ"); // Homing XYZ + LSTR MSG_LEVEL_BED_WAITING = _UxGT("Click pentru a incepe"); // Click to Begin + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Urmatorul Punct"); // Next Point + LSTR MSG_LEVEL_BED_DONE = _UxGT("Nivelare Terminata!"); // Leveling Done! + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Seteaza Offseturile Acasa"); // Set Home Offsets + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Offseturi Aplicate"); // Offsets Applied + LSTR MSG_PREHEAT_1 = _UxGT("Preincalzeste ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = _UxGT("Preincalzeste ") PREHEAT_1_LABEL " ~"; // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Capatul"); // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Capatul ~"); // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_1_ALL = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Tot"); // Preheat (PREHEAT_1_LABEL) All + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Patul"); // Preheat (PREHEAT_1_LABEL) Bed + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Preincalzeste ") PREHEAT_1_LABEL _UxGT(" Conf"); // Preheat (PREHEAT_1_LABEL) Conf + LSTR MSG_PREHEAT_M = _UxGT("Preincalzeste $"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("Preincalzeste $ ~"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("Preincalzeste $ Capatul"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("Preincalzeste $ Capatul ~"); // Preheat $ End ~ + LSTR MSG_PREHEAT_M_ALL = _UxGT("Preincalzeste $ Tot"); // Preheat $ All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Preincalzeste $ Patul"); // Preheat $ Bed + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Preincalzeste $ Conf"); // Preheat $ Conf + LSTR MSG_COOLDOWN = _UxGT("Racire"); // Cooldown + LSTR MSG_SWITCH_PS_ON = _UxGT("Porneste"); // Switch Power On + LSTR MSG_SWITCH_PS_OFF = _UxGT("Opreste"); // Switch Power Off + LSTR MSG_EXTRUDE = _UxGT("Extrudeaza"); // Extrude + LSTR MSG_RETRACT = _UxGT("Retracteaza"); // Retract + LSTR MSG_MOVE_AXIS = _UxGT("Muta Axa"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("Probare si Nivelare"); // Probe and Level + LSTR MSG_BED_LEVELING = _UxGT("Nivelarea Patului"); // Bed Leveling + LSTR MSG_LEVEL_BED = _UxGT("Niveleaza Patul"); // Level Bed + LSTR MSG_MOVE_X = _UxGT("Move X"); // Move X + LSTR MSG_MOVE_Y = _UxGT("Move Y"); // Move Y + LSTR MSG_MOVE_Z = _UxGT("Move Z"); // Move Z + LSTR MSG_MOVE_N = _UxGT("Move @"); // Move @ + LSTR MSG_MOVE_E = _UxGT("Extruder"); // Move Extruder + LSTR MSG_MOVE_EN = _UxGT("Extruder *"); // Move * + LSTR MSG_MOVE_N_MM = _UxGT("Move $mm"); // Move $mm + LSTR MSG_MOVE_N_IN = _UxGT("Move $in"); // Move $in + LSTR MSG_MOVE_N_DEG = _UxGT("Move $") LCD_STR_DEGREE; // Move $(LCD_STR_DEGREE) + LSTR MSG_SPEED = _UxGT("Speed"); // Speed + LSTR MSG_MESH_Z_OFFSET = _UxGT("Bed Z"); // Bed Z + LSTR MSG_NOZZLE = _UxGT("Nozzle"); // Nozzle + LSTR MSG_NOZZLE_N = _UxGT("Nozzle ~"); // Nozzle ~ + LSTR MSG_BED = _UxGT("Bed"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("Fan Speed"); // Fan Speed + LSTR MSG_FAN_SPEED_N = _UxGT("Fan Speed ~"); // Fan Speed ~ + LSTR MSG_FLOW = _UxGT("Flow"); // Flow + LSTR MSG_FLOW_N = _UxGT("Flow ~"); // Flow ~ + LSTR MSG_CONTROL = _UxGT("Control"); // Control + LSTR MSG_AUTOTEMP = _UxGT("Autotemp"); // Autotemp + LSTR MSG_SELECT_E = _UxGT("Select *"); // Select * + LSTR MSG_ACC = _UxGT("Accel"); // Accel + LSTR MSG_VTRAV_MIN = _UxGT("VTrav Min"); // Min Travel Speed + LSTR MSG_ACCELERATION = _UxGT("Acceleration"); // Acceleration + LSTR MSG_AMAX_A = _UxGT("Amax ") STR_A; // Max (STR_A) Accel + LSTR MSG_AMAX_B = _UxGT("Amax ") STR_B; // Max (STR_B) Accel + LSTR MSG_AMAX_C = _UxGT("Amax ") STR_C; // Max (STR_C) Accel + LSTR MSG_AMAX_N = _UxGT("Amax @"); // Max @ Accel + LSTR MSG_AMAX_E = _UxGT("Amax E"); // Max E Accel + LSTR MSG_AMAX_EN = _UxGT("Amax *"); // Max * Accel + LSTR MSG_A_RETRACT = _UxGT("A-Retract"); // Retract Accel + LSTR MSG_A_TRAVEL = _UxGT("A-Travel"); // Travel Accel + LSTR MSG_STEPS_PER_MM = _UxGT("Steps/mm"); // Steps/mm + LSTR MSG_A_STEPS = STR_A _UxGT(" steps/mm"); // (STR_A) Steps/mm + LSTR MSG_B_STEPS = STR_B _UxGT(" steps/mm"); // (STR_B) Steps/mm + LSTR MSG_C_STEPS = STR_C _UxGT(" steps/mm"); // (STR_C) Steps/mm + LSTR MSG_N_STEPS = _UxGT("@ steps/mm"); // @ steps/mm + LSTR MSG_E_STEPS = _UxGT("E steps/mm"); // E steps/mm + LSTR MSG_EN_STEPS = _UxGT("* steps/mm"); // * Steps/mm + LSTR MSG_TEMPERATURE = _UxGT("Temperature"); // Temperature + LSTR MSG_MOTION = _UxGT("Motion"); // Motion + LSTR MSG_FILAMENT = _UxGT("Filament"); // Filament + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E in mm") SUPERSCRIPT_THREE; // E in mm(SUPERSCRIPT_THREE) + LSTR MSG_FILAMENT_DIAM = _UxGT("Fil. Dia."); // Fil. Dia. + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Fil. Dia. *"); // Fil. Dia. * + LSTR MSG_CONTRAST = _UxGT("LCD Contrast"); // LCD Contrast + LSTR MSG_STORE_EEPROM = _UxGT("Store Settings"); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("Load Settings"); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("Restore Defaults"); // Restore Defaults + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Refresh"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT("Info Screen"); // Info Screen + LSTR MSG_PREPARE = _UxGT("Prepare"); // Prepare + LSTR MSG_TUNE = _UxGT("Tune"); // Tune + LSTR MSG_PAUSE_PRINT = _UxGT("Pause Print"); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("Resume Print"); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("Stop Print"); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("Print from Media"); // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = _UxGT("No Media"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_DWELL = _UxGT("Sleep..."); // Sleep... + LSTR MSG_USERWAIT = _UxGT("Click to Resume..."); // Click to Resume... + LSTR MSG_PRINT_ABORTED = _UxGT("Print Aborted"); // Print Aborted + LSTR MSG_NO_MOVE = _UxGT("No Move."); // No Move. + LSTR MSG_KILLED = _UxGT("KILLED. "); // KILLED. + LSTR MSG_STOPPED = _UxGT("STOPPED. "); // STOPPED. + LSTR MSG_CONTROL_RETRACT = _UxGT("Retract mm"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Swap Re.mm"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACTF = _UxGT("Retract V"); // Retract V + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Hop mm"); // Hop mm + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Unretr. mm"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("S Unretr. mm"); // S Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Unretract V"); // Unretract V + LSTR MSG_AUTORETRACT = _UxGT("Auto-Retract"); // Auto-Retract + LSTR MSG_FILAMENTCHANGE = _UxGT("Inlocuire Filament"); // Change Filament + LSTR MSG_FILAMENTCHANGE_E = _UxGT("Inlocuire Filament *"); // Change * Filament + LSTR MSG_ATTACH_MEDIA = _UxGT("Atasare card SD"); // Attach (MEDIA_TYPE_EN) + LSTR MSG_ATTACH_SD = _UxGT("Atasare card SD"); // Attach SD Card + LSTR MSG_ATTACH_USB = _UxGT("Atasare FD USB"); // Attach USB Drive + LSTR MSG_CHANGE_MEDIA = _UxGT("Inlocuire Media"); // Refresh (MEDIA_TYPE_EN) + LSTR MSG_RUN_AUTOFILES = _UxGT("Autostart"); // Run Autofiles + LSTR MSG_ZPROBE_OUT = _UxGT("Z Probe Past Bed"); // Z Probe Past Bed + LSTR MSG_BLTOUCH_RESET = _UxGT("Reset"); // Reset + LSTR MSG_ZPROBE_XOFFSET = _UxGT("Probe X Offset"); // Probe X Offset + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Probe Y Offset"); // Probe Y Offset + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Probe Z Offset"); // Probe Z Offset + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Probe @ Offset"); // Probe @ Offset + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Pas Z ajustare"); // Babystep Probe Z + LSTR MSG_BABYSTEP_X = _UxGT("Babystep X"); // Babystep X + LSTR MSG_BABYSTEP_Y = _UxGT("Babystep Y"); // Babystep Y + LSTR MSG_BABYSTEP_Z = _UxGT("Babystep Z"); // Babystep Z + LSTR MSG_BABYSTEP_N = _UxGT("Babystep @"); // Babystep @ + LSTR MSG_ENDSTOP_ABORT = _UxGT("Endstop Abort"); // Endstop Abort + LSTR MSG_ERR_HEATING_FAILED = _UxGT("Heating Failed"); // Heating Failed + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Err: REDUNDANT TEMP"); // Err: REDUNDANT TEMP + LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("THERMAL RUNAWAY"); // THERMAL RUNAWAY + LSTR MSG_ERR_MAXTEMP = _UxGT("Err: MAXTEMP"); // Err: MAXTEMP + LSTR MSG_ERR_MINTEMP = _UxGT("Err: MINTEMP"); // Err: MINTEMP + LSTR MSG_HALTED = _UxGT("PRINTER HALTED"); // PRINTER HALTED + LSTR MSG_PLEASE_RESET = _UxGT("Please Reset"); // Please Reset + LSTR MSG_HEATING = _UxGT("Heating..."); // Heating... + LSTR MSG_BED_HEATING = _UxGT("Bed Heating..."); // Bed Heating... + LSTR MSG_DELTA_CALIBRATE = _UxGT("Delta Calibration"); // Delta Calibration + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Calibrate X"); // Calibrate X + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Calibrate Y"); // Calibrate Y + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Calibrate Z"); // Calibrate Z + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Calibrate Center"); // Calibrate Center + LSTR MSG_INFO_MENU = _UxGT("Despre Imprimanta"); // About Printer + LSTR MSG_INFO_PRINTER_MENU = _UxGT("Info Imprimanta"); // Printer Info + LSTR MSG_INFO_STATS_MENU = _UxGT("Status Imprimanta"); // Stats + LSTR MSG_INFO_BOARD_MENU = _UxGT("Informatii Placa"); // Board Info + LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Termistoare"); // Thermistors + LSTR MSG_INFO_EXTRUDERS = _UxGT("Extrudere"); // Extruders + LSTR MSG_INFO_BAUDRATE = _UxGT("Baud"); // Baud + LSTR MSG_INFO_PROTOCOL = _UxGT("Protocol"); // Protocol + LSTR MSG_CASE_LIGHT = _UxGT("Case Light"); // Case Light + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Prints"); // Prints + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completed"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Total"); // Total + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Longest"); // Longest + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extruded"); // Extruded + LSTR MSG_INFO_MIN_TEMP = _UxGT("Temperatura Minima"); // Min Temp + LSTR MSG_INFO_MAX_TEMP = _UxGT("Temperatura Maxima"); // Max Temp + LSTR MSG_INFO_PSU = _UxGT("PSU"); // PSU + LSTR MSG_DRIVE_STRENGTH = _UxGT("Drive Strength"); // Drive Strength + LSTR MSG_DAC_EEPROM_WRITE = _UxGT("DAC EEPROM Write"); // DAC EEPROM Write + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Continue"); // Continue + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Va rog asteptati...")); // |Please wait... + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Insert and Click")); // |Insert and Click + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Ejectare...")); // |Ejecting... + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Incarcare...")); // |Loading... + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Se Reia...")); // |Resuming... + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); // (LCD_STR_THERMOMETER) Min + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); // (LCD_STR_THERMOMETER) Max + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fact"); // (LCD_STR_THERMOMETER) Fact + LSTR MSG_LCD_ON = _UxGT("On"); // On + LSTR MSG_LCD_OFF = _UxGT("Off"); // Off + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("INCORRECT PRINTER"); // INCORRECT PRINTER + LSTR MSG_DEBUG_MENU = _UxGT("Meniu Debug"); // Debug Menu + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Test Bara Progres"); // Progress Bar Test + LSTR MSG_MOVING = _UxGT("Moving..."); // Moving... + LSTR MSG_FREE_XY = _UxGT("Free XY"); // Free XY + LSTR MSG_HOME_FIRST = _UxGT("Home %s First"); // Home %s First + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Incalzire...")); // |Heating... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Click pentru incalzire")); // |Click to heat + LSTR MSG_YES = _UxGT("DA"); // YES + LSTR MSG_NO = _UxGT("NU"); // NO + LSTR MSG_BACK = _UxGT("Inapoi"); // Back + LSTR MSG_MEDIA_ABORTING = _UxGT("Abandon..."); // Aborting... + LSTR MSG_MEDIA_READ_ERROR = _UxGT("Eroare Citire Media"); // (MEDIA_TYPE_EN) read error + LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("Dispozitiv USB Inlaturat"); // USB device removed + LSTR MSG_USB_FD_USB_FAILED = _UxGT("Pornire USB Esuata"); // USB start failed + LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Soft Endstops"); // Soft Endstops + LSTR MSG_ADVANCED_SETTINGS = _UxGT("Setari Avansate"); // Advanced Settings + LSTR MSG_CONFIGURATION = _UxGT("Configurare"); // Configuration + LSTR MSG_AUTO_Z_ALIGN = _UxGT("Auto Aliniere-Z"); // Auto Z-Align + LSTR MSG_Z_FADE_HEIGHT = _UxGT("Fade Inaltime"); // Fade Height + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Preincalzeste Personalizat"); // Preheat Custom + LSTR MSG_LASER_MENU = _UxGT("Control Laser"); // Laser Control + LSTR MSG_LASER_POWER = _UxGT("Puterea Laserului"); // Laser Power + LSTR MSG_SPINDLE_MENU = _UxGT("Controlul Spindle"); // Spindle Control + LSTR MSG_SPINDLE_POWER = _UxGT("Puterea Spindle"); // Spindle Pwr + LSTR MSG_SPINDLE_REVERSE = _UxGT("Spindle Invers"); // Spindle Reverse + LSTR MSG_BED_TRAMMING = _UxGT("Niveleaza Colturile"); // Bed Tramming + LSTR MSG_NEXT_CORNER = _UxGT("Urmatorul Colt"); // Next Corner + LSTR MSG_MESH_EDITOR = _UxGT("Editor Mesh"); // Mesh Editor + LSTR MSG_EDIT_MESH = _UxGT("Editeaza Mesh"); // Edit Mesh + LSTR MSG_EDITING_STOPPED = _UxGT("Editarea Meshului Oprita"); // Mesh Editing Stopped + LSTR MSG_PROBING_POINT = _UxGT("Punctul de Probare"); // Probing Point + LSTR MSG_MESH_X = _UxGT("Index X"); // Index X + LSTR MSG_MESH_Y = _UxGT("Index Y"); // Index Y + LSTR MSG_MESH_EDIT_Z = _UxGT("Valoare Z"); // Z Value + LSTR MSG_CUSTOM_COMMANDS = _UxGT("Comenzi Personalizate"); // Custom Commands + LSTR MSG_M48_TEST = _UxGT("M48 Probe Test"); // M48 Probe Test + LSTR MSG_M48_POINT = _UxGT("M48 Point"); // M48 Point + LSTR MSG_M48_DEVIATION = _UxGT("Deviation"); // Deviation + LSTR MSG_IDEX_MENU = _UxGT("IDEX Mode"); // IDEX Mode + LSTR MSG_OFFSETS_MENU = _UxGT("Tool Offsets"); // Tool Offsets + LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-Park"); // Auto-Park + LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplication"); // Duplication + LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Mirrored Copy"); // Mirrored Copy + LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Full Control"); // Full Control + LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2nd Nozzle Z"); // 2nd Nozzle Z + LSTR MSG_HOTEND_OFFSET_N = _UxGT("2nd Nozzle @"); // 2nd Nozzle @ + LSTR MSG_UBL_DOING_G29 = _UxGT("Doing G29"); // Doing G29 + LSTR MSG_UBL_TOOLS = _UxGT("UBL Tools"); // UBL Tools + LSTR MSG_LCD_TILTING_MESH = _UxGT("Tilting Point"); // Tilting Point + LSTR MSG_UBL_MANUAL_MESH = _UxGT("Manually Build Mesh"); // Manually Build Mesh + LSTR MSG_UBL_BC_INSERT = _UxGT("Place Shim & Measure"); // Place Shim & Measure + LSTR MSG_UBL_BC_INSERT2 = _UxGT("Measure"); // Measure + LSTR MSG_UBL_BC_REMOVE = _UxGT("Remove & Measure Bed"); // Remove & Measure Bed + LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Moving to next"); // Moving to next + LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Bed Temp"); // Bed Temp + LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Bed Temp"); // Bed Temp + LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Hotend Temp"); // Hotend Temp + LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Hotend Temp"); // Hotend Temp + LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Edit Custom Mesh"); // Edit Custom Mesh + LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Fine Tuning Mesh"); // Fine Tuning Mesh + LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Done Editing Mesh"); // Done Editing Mesh + LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Build Custom Mesh"); // Build Custom Mesh + LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Build Mesh"); // Build Mesh + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Build Mesh ($)"); // Build Mesh ($) + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Validate Mesh ($)"); // Validate Mesh ($) + LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Build Cold Mesh"); // Build Cold Mesh + LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Adjust Mesh Height"); // Adjust Mesh Height + LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Height Amount"); // Height Amount + LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Validate Mesh"); // Validate Mesh + LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Validate Custom Mesh"); // Validate Custom Mesh + LSTR MSG_G26_HEATING_BED = _UxGT("G26 Heating Bed"); // G26 Heating Bed + LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 Heating Nozzle"); // G26 Heating Nozzle + LSTR MSG_G26_MANUAL_PRIME = _UxGT("Manual priming..."); // Manual priming... + LSTR MSG_G26_FIXED_LENGTH = _UxGT("Fixed Length Prime"); // Fixed Length Prime + LSTR MSG_G26_PRIME_DONE = _UxGT("Done Priming"); // Done Priming + LSTR MSG_G26_CANCELED = _UxGT("G26 Canceled"); // G26 Canceled + LSTR MSG_G26_LEAVING = _UxGT("Leaving G26"); // Leaving G26 + LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Continue Bed Mesh"); // Continue Bed Mesh + LSTR MSG_UBL_MESH_LEVELING = _UxGT("Mesh Leveling"); // Mesh Leveling + LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-Point Leveling"); // 3-Point Leveling + LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Grid Mesh Leveling"); // Grid Mesh Leveling + LSTR MSG_UBL_MESH_LEVEL = _UxGT("Level Mesh"); // Level Mesh + LSTR MSG_UBL_SIDE_POINTS = _UxGT("Side Points"); // Side Points + LSTR MSG_UBL_MAP_TYPE = _UxGT("Map Type"); // Map Type + LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Output Mesh Map"); // Output Mesh Map + LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Output for Host"); // Output for Host + LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Output for CSV"); // Output for CSV + LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Off Imprimanta Backup"); // Off Printer Backup + LSTR MSG_UBL_INFO_UBL = _UxGT("Output UBL Info"); // Output UBL Info + LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Fill-in Amount"); // Fill-in Amount + LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Manual Fill-in"); // Manual Fill-in + LSTR MSG_UBL_SMART_FILLIN = _UxGT("Smart Fill-in"); // Smart Fill-in + LSTR MSG_UBL_FILLIN_MESH = _UxGT("Fill-in Mesh"); // Fill-in Mesh + LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Invalidate All"); // Invalidate All + LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Invalidate Closest"); // Invalidate Closest + LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Fine Tune All"); // Fine Tune All + LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Fine Tune Closest"); // Fine Tune Closest + LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Mesh Storage"); // Mesh Storage + LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Memory Slot"); // Memory Slot + LSTR MSG_UBL_LOAD_MESH = _UxGT("Load Bed Mesh"); // Load Bed Mesh + LSTR MSG_UBL_SAVE_MESH = _UxGT("Save Bed Mesh"); // Save Bed Mesh + LSTR MSG_MESH_LOADED = _UxGT("Mesh %i Loaded"); // Mesh %i Loaded + LSTR MSG_MESH_SAVED = _UxGT("Mesh %i Saved"); // Mesh %i Saved + LSTR MSG_UBL_NO_STORAGE = _UxGT("No Storage"); // No Storage + LSTR MSG_UBL_SAVE_ERROR = _UxGT("Err: UBL Save"); // UBL Save Error + LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Err: UBL Restore"); // UBL Restore Error + LSTR MSG_UBL_Z_OFFSET = _UxGT("Z-Offset: "); // Z-Offset: + LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Z-Offset Stopped"); // Z-Offset Stopped + LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("Step-By-Step UBL"); // Step-By-Step UBL + LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1. Build Cold Mesh"); // 1. Build Cold Mesh + LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2. Smart Fill-in"); // 2. Smart Fill-in + LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3. Validate Mesh"); // 3. Validate Mesh + LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4. Fine Tune All"); // 4. Fine Tune All + LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5. Validate Mesh"); // 5. Validate Mesh + LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6. Fine Tune All"); // 6. Fine Tune All + LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7. Save Bed Mesh"); // 7. Save Bed Mesh + LSTR MSG_LED_CONTROL = _UxGT("LED Control"); // LED Control + LSTR MSG_LIGHTS = _UxGT("Lights"); // Lights + LSTR MSG_LIGHT_N = _UxGT("Light #{"); // Light #{ + LSTR MSG_LED_PRESETS = _UxGT("Light Presets"); // Light Presets + LSTR MSG_SET_LEDS_RED = _UxGT("Red"); // Red + LSTR MSG_SET_LEDS_ORANGE = _UxGT("Orange"); // Orange + LSTR MSG_SET_LEDS_YELLOW = _UxGT("Yellow"); // Yellow + LSTR MSG_SET_LEDS_GREEN = _UxGT("Green"); // Green + LSTR MSG_SET_LEDS_BLUE = _UxGT("Blue"); // Blue + LSTR MSG_SET_LEDS_INDIGO = _UxGT("Indigo"); // Indigo + LSTR MSG_SET_LEDS_VIOLET = _UxGT("Violet"); // Violet + LSTR MSG_SET_LEDS_WHITE = _UxGT("White"); // White + LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Default"); // Default + LSTR MSG_CUSTOM_LEDS = _UxGT("Custom Lights"); // Custom Lights + LSTR MSG_INTENSITY_R = _UxGT("Red Intensity"); // Red Intensity + LSTR MSG_INTENSITY_G = _UxGT("Green Intensity"); // Green Intensity + LSTR MSG_INTENSITY_B = _UxGT("Blue Intensity"); // Blue Intensity + LSTR MSG_INTENSITY_W = _UxGT("White Intensity"); // White Intensity + LSTR MSG_LED_BRIGHTNESS = _UxGT("Brightness"); // Brightness + LSTR MSG_HOTEND_TOO_COLD = _UxGT("Capat Prea Rece"); // Hotend too cold + LSTR MSG_CHAMBER = _UxGT("Enclosure"); // Enclosure + LSTR MSG_STORED_FAN_N = _UxGT("Stored Fan ~"); // Stored Fan ~ + LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Extra Fan Speed"); // Extra Fan Speed + LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Extra Fan Speed ~"); // Extra Fan Speed ~ + LSTR MSG_PID_AUTOTUNE = _UxGT("PID Autotune"); // PID Autotune + LSTR MSG_PID_AUTOTUNE_E = _UxGT("PID Autotune *"); // Autotune * PID + LSTR MSG_JERK = _UxGT("Jerk"); // Jerk + LSTR MSG_VA_JERK = _UxGT("V") STR_A _UxGT("-Jerk"); // Max (STR_A) Jerk + LSTR MSG_VB_JERK = _UxGT("V") STR_B _UxGT("-Jerk"); // Max (STR_B) Jerk + LSTR MSG_VC_JERK = _UxGT("V") STR_C _UxGT("-Jerk"); // Max (STR_C) Jerk + LSTR MSG_VN_JERK = _UxGT("V@-Jerk"); // Max @ Jerk + LSTR MSG_VE_JERK = _UxGT("Ve-Jerk"); // Max E Jerk + LSTR MSG_JUNCTION_DEVIATION = _UxGT("Junction Dev"); // Junction Dev + LSTR MSG_MAX_SPEED = _UxGT("Max Speed"); // Max Speed (mm/s) + LSTR MSG_VMAX_A = _UxGT("Max Speed ") STR_A; // Max (STR_A) Speed + LSTR MSG_VMAX_B = _UxGT("Max Speed ") STR_B; // Max (STR_B) Speed + LSTR MSG_VMAX_C = _UxGT("Max Speed ") STR_C; // Max (STR_C) Speed + LSTR MSG_VMAX_N = _UxGT("Max Speed @"); // Max @ Speed + LSTR MSG_VMAX_E = _UxGT("Max Speed E"); // Max E Speed + LSTR MSG_VMAX_EN = _UxGT("Max Speed *"); // Max * Speed + LSTR MSG_VMIN = _UxGT("Vmin"); // Min Velocity + LSTR MSG_FILAMENT_UNLOAD = _UxGT("Unload mm"); // Unload mm + LSTR MSG_FILAMENT_LOAD = _UxGT("Load mm"); // Load mm + LSTR MSG_ADVANCE_K = _UxGT("Advance K"); // Advance K + LSTR MSG_ADVANCE_K_E = _UxGT("Advance K *"); // Advance K * + LSTR MSG_INIT_EEPROM = _UxGT("Initialize EEPROM"); // Initialize EEPROM + LSTR MSG_MEDIA_UPDATE = _UxGT("Media Update"); // (MEDIA_TYPE_EN) Update + LSTR MSG_RESET_PRINTER = _UxGT("Reset Imprimanta"); // Reset Printer + LSTR MSG_START_PRINT = _UxGT("Start Imprimare"); // Start Print + LSTR MSG_BUTTON_NEXT = _UxGT("Urmatorul"); // Next + LSTR MSG_BUTTON_INIT = _UxGT("Initiere"); // Init + LSTR MSG_BUTTON_STOP = _UxGT("Stop"); // Stop + LSTR MSG_BUTTON_PRINT = _UxGT("Imprimeaza"); // Print + LSTR MSG_BUTTON_RESET = _UxGT("Reseteaza"); // Reset + LSTR MSG_BUTTON_CANCEL = _UxGT("Anuleaza"); // Cancel + LSTR MSG_BUTTON_DONE = _UxGT("OK"); // Done + LSTR MSG_BUTTON_BACK = _UxGT("Inapoi"); // Back + LSTR MSG_BUTTON_PROCEED = _UxGT("Proceed"); // Proceed + LSTR MSG_PRINTING_OBJECT = _UxGT("Printing Object"); // Print Obj + LSTR MSG_CANCEL_OBJECT = _UxGT("Cancel Object"); // Cancel Obj + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Cancel Object {"); // Cancel Obj { + LSTR MSG_OUTAGE_RECOVERY = _UxGT("Outage Recovery"); // Power Outage + LSTR MSG_PRINT_PAUSED = _UxGT("Print Paused"); // Print Paused + LSTR MSG_PRINTING = _UxGT("Printing..."); // Printing... + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V"); // S UnRet V + LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Swap Length"); // Swap Length + LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Purge Length"); // Purge Length + LSTR MSG_TOOL_CHANGE = _UxGT("Tool Inlocuire"); // Tool Change + LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Z Raise"); // Z Raise + LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Prime Speed"); // Prime Speed + LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Retract Speed"); // Retract Speed + LSTR MSG_NOZZLE_STANDBY = _UxGT("Nozzle Standby"); // Nozzle Standby + LSTR MSG_FILAMENTLOAD = _UxGT("Incarcare Filament"); // Load Filament + LSTR MSG_FILAMENTLOAD_E = _UxGT("Incarcare Filament *"); // Load * Filament + LSTR MSG_FILAMENTUNLOAD = _UxGT("Scoatere Filament"); // Unload Filament + LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Scoatere Filament *"); // Unload * Filament + LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Scoate Tot"); // Unload All + LSTR MSG_RELEASE_MEDIA = _UxGT("Eliberare Media"); // Release (MEDIA_TYPE_EN) + LSTR MSG_SKEW_FACTOR = _UxGT("Skew Factor"); // Skew Factor + LSTR MSG_BLTOUCH = _UxGT("BLTouch"); // BLTouch + LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Self-Test"); // Self-Test + LSTR MSG_BLTOUCH_STOW = _UxGT("Stow"); // Stow + LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Deploy"); // Deploy + LSTR MSG_BLTOUCH_SW_MODE = _UxGT("SW-Mode"); // SW-Mode + LSTR MSG_BLTOUCH_5V_MODE = _UxGT("5V-Mode"); // 5V-Mode + LSTR MSG_BLTOUCH_OD_MODE = _UxGT("OD-Mode"); // OD-Mode + LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("Mode-Store"); // Mode-Store + LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Set BLTouch to 5V"); // Set BLTouch to 5V + LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Set BLTouch to OD"); // Set BLTouch to OD + LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Report Drain"); // Report Drain + LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("DANGER: Bad settings can cause damage! Proceed anyway?"); // DANGER: Bad settings can cause damage! Proceed anyway? + LSTR MSG_TOUCHMI_PROBE = _UxGT("TouchMI"); // TouchMI + LSTR MSG_TOUCHMI_INIT = _UxGT("Init TouchMI"); // Init TouchMI + LSTR MSG_TOUCHMI_ZTEST = _UxGT("Z Offset Test"); // Z Offset Test + LSTR MSG_TOUCHMI_SAVE = _UxGT("Save"); // Save + LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("Deploy TouchMI"); // Deploy TouchMI + LSTR MSG_MANUAL_DEPLOY = _UxGT("Deploy Z-Probe"); // Deploy Z-Probe + LSTR MSG_MANUAL_STOW = _UxGT("Stow Z-Probe"); // Stow Z-Probe + LSTR MSG_BABYSTEP_TOTAL = _UxGT("Total"); // Total + LSTR MSG_COOLING = _UxGT("Cooling..."); // Cooling... + LSTR MSG_BED_COOLING = _UxGT("Bed Cooling..."); // Bed Cooling... + LSTR MSG_CHAMBER_HEATING = _UxGT("Chamber Heating..."); // Chamber Heating... + LSTR MSG_CHAMBER_COOLING = _UxGT("Chamber Cooling..."); // Chamber Cooling... + LSTR MSG_DELTA_SETTINGS = _UxGT("Delta Settings"); // Delta Settings + LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Auto Calibration"); // Auto Calibration + LSTR MSG_DELTA_DIAG_ROD = _UxGT("Diag Rod"); // Diag Rod + LSTR MSG_DELTA_HEIGHT = _UxGT("Inaltime"); // Height + LSTR MSG_DELTA_RADIUS = _UxGT("Radius"); // Radius + LSTR MSG_3POINT_LEVELING = _UxGT("Nivelare in 3 puncte"); // 3-Point Leveling + LSTR MSG_LINEAR_LEVELING = _UxGT("Nivelare Lineara"); // Linear Leveling + LSTR MSG_BILINEAR_LEVELING = _UxGT("Nivelare Bilineara"); // Bilinear Leveling + LSTR MSG_UBL_LEVELING = _UxGT("Nivelarea Patului Unificata"); // Unified Bed Leveling + LSTR MSG_MESH_LEVELING = _UxGT("Nivelare Mesh"); // Mesh Leveling + LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Runaway Watch: OFF"); // Runaway Watch: OFF + LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Runaway Watch: ON"); // Runaway Watch: ON + LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Light Brightness"); // Light Brightness + LSTR MSG_DAC_PERCENT_N = _UxGT("@ Driver %"); // @ Driver % + LSTR MSG_ERROR_TMC = _UxGT("TMC CONNECTION ERROR"); // TMC CONNECTION ERROR + LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("FILAMENT CHANGE"); // FILAMENT CHANGE + LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("PRINT PAUSED"); // PRINT PAUSED + LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("LOAD FILAMENT"); // LOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("UNLOAD FILAMENT"); // UNLOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("RESUME OPTIONS:"); // RESUME OPTIONS: + LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Purge more"); // Purge more + LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Nozzle: "); // Nozzle: + LSTR MSG_RUNOUT_SENSOR = _UxGT("Runout Sensor"); // Runout Sensor + LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("Runout Dist mm"); // Runout Dist mm + LSTR MSG_KILL_HOMING_FAILED = _UxGT("Homing Failed"); // Homing Failed + LSTR MSG_LCD_PROBING_FAILED = _UxGT("Probing Failed"); // Probing Failed + LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("CHOOSE FILAMENT"); // CHOOSE FILAMENT + LSTR MSG_MMU2_MENU = _UxGT("MMU"); // MMU + LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("Update MMU Firmware!"); // Update MMU Firmware! + LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU Needs Attention."); // MMU Needs Attention. + LSTR MSG_MMU2_RESUME = _UxGT("MMU Resume"); // Resume + LSTR MSG_MMU2_RESUMING = _UxGT("MMU Resuming..."); // MMU Resuming... + LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("MMU Load"); // Load + LSTR MSG_MMU2_LOAD_ALL = _UxGT("MMU Load All"); // Load All + LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("MMU Load to Nozzle"); // Load to Nozzle + LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("MMU Eject"); // Eject + LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("MMU Eject ~"); // Eject ~ + LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("MMU Unload"); // Unload + LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Loading Fil. %i..."); // Filament %i Load... + LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Ejecting Fil. ..."); // Filament %i Eject... + LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Unloading Fil...."); // Filament %i Unload... + LSTR MSG_MMU2_ALL = _UxGT("All"); // All + LSTR MSG_MMU2_FILAMENT_N = _UxGT("Filament ~"); // Filament ~ + LSTR MSG_MMU2_RESET = _UxGT("Reset MMU"); // Reset MMU + LSTR MSG_MMU2_RESETTING = _UxGT("MMU Resetting..."); // Resetting... + LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Remove, click"); // Eject Recover + LSTR MSG_MIX = _UxGT("Mix"); // Mix + LSTR MSG_MIX_COMPONENT_N = _UxGT("Component {"); // Component { + LSTR MSG_MIXER = _UxGT("Mixer"); // Mixer + LSTR MSG_GRADIENT = _UxGT("Gradient"); // Gradient + LSTR MSG_FULL_GRADIENT = _UxGT("Full Gradient"); // Full Gradient + LSTR MSG_TOGGLE_MIX = _UxGT("Toggle Mix"); // Toggle Mix + LSTR MSG_CYCLE_MIX = _UxGT("Cycle Mix"); // Cycle Mix + LSTR MSG_GRADIENT_MIX = _UxGT("Gradient Mix"); // Gradient Mix + LSTR MSG_REVERSE_GRADIENT = _UxGT("Reverse Gradient"); // Reverse Gradient + LSTR MSG_ACTIVE_VTOOL = _UxGT("Active V-tool"); // Active V-tool + LSTR MSG_START_VTOOL = _UxGT("Start V-tool"); // Start V-tool + LSTR MSG_END_VTOOL = _UxGT(" End V-tool"); // End V-tool + LSTR MSG_GRADIENT_ALIAS = _UxGT("Alias V-tool"); // Alias V-tool + LSTR MSG_RESET_VTOOLS = _UxGT("Reset V-tools"); // Reset V-tools + LSTR MSG_COMMIT_VTOOL = _UxGT("Commit V-tool Mix"); // Commit V-tool Mix + LSTR MSG_VTOOLS_RESET = _UxGT("V-tools Were Reset"); // V-tools Were Reset + LSTR MSG_START_Z = _UxGT("Start Z:"); // Start Z: + LSTR MSG_END_Z = _UxGT(" End Z:"); // End Z: + LSTR MSG_GAMES = _UxGT("Jocuri"); // Games + LSTR MSG_BRICKOUT = _UxGT("Brickout"); // Brickout + LSTR MSG_INVADERS = _UxGT("Invaders"); // Invaders + LSTR MSG_SNAKE = _UxGT("Sn4k3"); // Sn4k3 + LSTR MSG_MAZE = _UxGT("Maze"); // Maze + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Click to continue")); // |Click to continue + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parcare...")); // |Parking... + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Curatare...")); // |Purging... + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Click pentru a termina")); // |Click to finish + LSTR MSG_TMC_DRIVERS = _UxGT("TMC Drivers"); // TMC Drivers + LSTR MSG_TMC_CURRENT = _UxGT("Driver Current"); // Driver Current + LSTR MSG_TMC_HYBRID_THRS = _UxGT("Hybrid Threshold"); // Hybrid Threshold + LSTR MSG_TMC_HOMING_THRS = _UxGT("Sensorless Homing"); // Sensorless Homing + LSTR MSG_TMC_STEPPING_MODE = _UxGT("Stepping Mode"); // Stepping Mode + LSTR MSG_TMC_STEALTHCHOP = _UxGT("StealthChop"); // StealthChop + LSTR MSG_SERVICE_RESET = _UxGT("Reset"); // Reset + LSTR MSG_SERVICE_IN = _UxGT(" in:"); // in: + LSTR MSG_BACKLASH = _UxGT("Backlash"); // Backlash + LSTR MSG_BACKLASH_CORRECTION = _UxGT("Corectare"); // Correction + LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Smoothing"); // Smoothing + LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Eroare:Subcall Overflow"); // Subcall Overflow + LSTR MSG_CUTTER_FREQUENCY = _UxGT("Frecventa"); // Frequency + LSTR MSG_NOZZLE_PARKED = _UxGT("Nozzle Parked"); // Nozzle Parked + LSTR MSG_CONTROLLER_FAN = _UxGT("Controller Fan"); // Controller Fan + LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("Idle Speed"); // Idle Speed + LSTR MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("Auto Mode"); // Auto Mode + LSTR MSG_CONTROLLER_FAN_SPEED = _UxGT("Active Speed"); // Active Speed + LSTR MSG_CONTROLLER_FAN_DURATION = _UxGT("Idle Period"); // Idle Period + LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("PID tuning done"); // PID tuning done + LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Autotune failed! Bad extruder."); // Autotune failed! Bad extruder. + LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Autotune failed! Temperature too high."); // Autotune failed! Temperature too high. + LSTR MSG_PID_TIMEOUT = _UxGT("Autotune failed! Timeout."); // Autotune failed! Timeout. + LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("Frequency max"); // XY Freq Limit + LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("Feed min"); // Min FR Factor + LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("E Limit in mm") SUPERSCRIPT_THREE; // E Limit in mm(SUPERSCRIPT_THREE) + LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("E Limit *"); // E Limit * + LSTR MSG_ERR_EEPROM_CRC = _UxGT("Err: EEPROM CRC"); // Err: EEPROM CRC + LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Err: Mărimea EEPROM"); // Err: EEPROM Size + LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Err: Versiunea EEPROM"); // Err: EEPROM Version + LSTR MSG_SETTINGS_STORED = _UxGT("Settings Stored"); // Settings Stored + LSTR MSG_POWER_MONITOR = _UxGT("Power monitor"); // Power monitor + LSTR MSG_CURRENT = _UxGT("Intensitate"); // Current + LSTR MSG_VOLTAGE = _UxGT("Voltaj"); // Voltage + LSTR MSG_POWER = _UxGT("Putere"); // Power + LSTR MSG_BUTTON_IGNORE = _UxGT("Ignora"); // Ignore + LSTR MSG_PAUSING = _UxGT("Pausing..."); // Pausing... + LSTR MSG_PRINT_DONE = _UxGT("Print Done"); // Print Done + LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Swap Extra"); // Swap Extra + LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Park Head"); // Park Head + LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Recover Speed"); // Recover Speed + LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Fan Speed"); // Fan Speed + LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Fan Time"); // Fan Time + LSTR MSG_TOOL_MIGRATION_ON = _UxGT("Auto Pornit"); // Auto ON + LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("Auto Oprit"); // Auto OFF + LSTR MSG_TOOL_MIGRATION = _UxGT("Tool Migration"); // Tool Migration + LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("Auto-migrare"); // Auto-migration + LSTR MSG_TOOL_MIGRATION_END = _UxGT("Last Extruder"); // Last Extruder + LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("Migrate to *"); // Migrate to * + LSTR MSG_ZPROBE_OFFSETS = _UxGT("Probe Offsets"); // Probe Offsets + LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Hotend Idle Timeout"); // Hotend Idle Timeout + LSTR MSG_BAD_PAGE = _UxGT("Bad page index"); // Bad page index + LSTR MSG_BAD_PAGE_SPEED = _UxGT("Bad page speed"); // Bad page speed + LSTR MSG_LEVEL_X_AXIS = _UxGT("Nivelare Axa X"); // Level X Axis + LSTR MSG_AUTO_CALIBRATE = _UxGT("Auto Calibrare"); // Auto Calibrate + LSTR MSG_HEATER_TIMEOUT = _UxGT("Timeout Incalzitor"); // Heater Timeout + LSTR MSG_REHEAT = _UxGT("Reincalzire"); // Reheat + LSTR MSG_REHEATING = _UxGT("Reincalzire..."); // Reheating... } namespace LanguageWide_ro { using namespace LanguageNarrow_ro; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Total Printuri"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completat"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Timp Imprimare Total"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Longest Job Time"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total Extrudat"); + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Total Printuri"); // Print Count + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Completat"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Timp Imprimare Total"); // Print Time + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Longest Job Time"); // Longest Job Time + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total Extrudat"); // Extruded Total #endif } @@ -611,16 +588,16 @@ namespace LanguageTall_ro { using namespace LanguageWide_ro; #if LCD_HEIGHT >= 4 // Filament Change screens show up to 3 lines on a 4-line display - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Apasa Butonul", "pentru a reveni la print")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Astept ca", "inlocuirea filamentului", "sa inceapa")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Insert filament", "and press button", "to continue")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Press button", "to heat nozzle")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Nozzle heating", "Please wait...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Wait for", "filament unload")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Wait for", "filament load")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Wait for", "filament purge")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Click to finish", "filament purge")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Wait for print", "to resume...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Astept ca", "inlocuirea filamentului", "sa inceapa")); // |Wait for|filament change|to start + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Insert filament", "and press button", "to continue")); // |Insert filament|and press button|to continue + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Wait for", "filament unload")); // |Wait for|filament unload + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Wait for", "filament load")); // |Wait for|filament load + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Wait for print", "to resume...")); // |Wait for print|to resume... + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Nozzle heating", "Please wait...")); // |Nozzle heating|Please wait... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Press button", "to heat nozzle")); // |Press button|to heat nozzle + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Apasa Butonul", "pentru a reveni la print")); // |Press Button|to resume print + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Wait for", "filament purge")); // |Wait for|filament purge + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Click to finish", "filament purge")); // |Click to finish|filament purge #endif } diff --git a/Marlin/src/lcd/language/language_ru.h b/Marlin/src/lcd/language/language_ru.h index f8f826290c..1c2b8719c7 100644 --- a/Marlin/src/lcd/language/language_ru.h +++ b/Marlin/src/lcd/language/language_ru.h @@ -35,893 +35,837 @@ * * displays 'E1'...'E11' for indexes 0 - 10 (By default. Uses LCD_FIRST_TOOL) * @ displays an axis name such as XYZUVW, or E for an extruder */ + #define DISPLAY_CHARSET_ISO10646_5 namespace LanguageNarrow_ru { using namespace Language_en; // Inherit undefined strings from English - constexpr uint8_t CHARSIZE = 2; - LSTR LANGUAGE = _UxGT("Russian"); + constexpr uint8_t CHARSIZE = 2; + LSTR LANGUAGE = _UxGT("Russian"); - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" Готов."); - LSTR MSG_YES = _UxGT("Да"); - LSTR MSG_NO = _UxGT("Нет"); - LSTR MSG_BACK = _UxGT("Назад"); - - LSTR MSG_MEDIA_ABORTING = _UxGT("Прерывание..."); - LSTR MSG_MEDIA_INSERTED = _UxGT("SD карта вставлена"); - LSTR MSG_MEDIA_REMOVED = _UxGT("SD карта извлечена"); - LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Сбой инициализ. SD"); - LSTR MSG_ADVANCED_SETTINGS = _UxGT("Расшир. настройки"); - LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Переполн. вызова"); - LSTR MSG_MEDIA_READ_ERROR = _UxGT("Ошибка чтения"); - LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB диск удалён"); - LSTR MSG_USB_FD_USB_FAILED = _UxGT("Ошибка USB диска"); - - LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Прогр. концевики"); - LSTR MSG_LCD_ENDSTOPS = _UxGT("Концевик"); // Max length 8 characters - LSTR MSG_MAIN_MENU = _UxGT("Главное меню"); - LSTR MSG_CONFIGURATION = _UxGT("Конфигурация"); - LSTR MSG_DISABLE_STEPPERS = _UxGT("Выключить двигатели"); - LSTR MSG_DEBUG_MENU = _UxGT("Меню отладки"); - LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Тест индикатора"); - LSTR MSG_AUTO_HOME = _UxGT("Парковка XYZ"); - LSTR MSG_AUTO_HOME_N = _UxGT("Парковка @"); - LSTR MSG_AUTO_HOME_X = _UxGT("Парковка X"); - LSTR MSG_AUTO_HOME_Y = _UxGT("Парковка Y"); - LSTR MSG_AUTO_HOME_Z = _UxGT("Парковка Z"); - LSTR MSG_AUTO_Z_ALIGN = _UxGT("Авто-выравнивание Z"); - LSTR MSG_ITERATION = _UxGT("G34 Итерация: %i"); - LSTR MSG_DECREASING_ACCURACY = _UxGT("Уменьшение точности!"); - LSTR MSG_ACCURACY_ACHIEVED = _UxGT("Точность достигнута"); - LSTR MSG_LEVEL_BED_HOMING = _UxGT("Нулевое положение"); - LSTR MSG_LEVEL_BED_WAITING = _UxGT("Нажмите чтобы начать"); - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Следующая точка"); - LSTR MSG_LEVEL_BED_DONE = _UxGT("Выравнивание готово!"); - LSTR MSG_Z_FADE_HEIGHT = _UxGT("Лимит выранивания"); - - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Установ.смещ.дома"); - - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Смещения применены"); - LSTR MSG_SELECT_ORIGIN = _UxGT("Выберите ноль"); - LSTR MSG_LAST_VALUE_SP = _UxGT("Послед. знач. "); - - LSTR MSG_PREHEAT_1 = _UxGT("Нагрев ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Нагреть ~ ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Нагреть сопло ") PREHEAT_1_LABEL _UxGT(" сопло"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Нагреть сопло ~") PREHEAT_1_LABEL _UxGT(" сопло ~");; - LSTR MSG_PREHEAT_1_ALL = _UxGT("Нагреть всё ") PREHEAT_1_LABEL _UxGT(" всё"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Нагреть стол ") PREHEAT_1_LABEL _UxGT(" стол"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Правка предн. ") PREHEAT_1_LABEL _UxGT(" наст."); - - LSTR MSG_PREHEAT_M = _UxGT("Нагрев $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Нагреть ~ $"); - LSTR MSG_PREHEAT_M_END = _UxGT("Нагреть сопло $"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Нагреть сопло ~ $"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Нагреть всё $"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Нагреть стол $"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Настр.нагрева $"); - - LSTR MSG_PREHEAT_CUSTOM = _UxGT("Нагрев Свой"); - LSTR MSG_COOLDOWN = _UxGT("Охлаждение"); - LSTR MSG_CUTTER_FREQUENCY = _UxGT("Частота"); - LSTR MSG_LASER_MENU = _UxGT("Управление лазером"); - - LSTR MSG_SPINDLE_MENU = _UxGT("Управл. шпинд."); - LSTR MSG_LASER_TOGGLE = _UxGT("Переключ.лазер"); - LSTR MSG_SPINDLE_TOGGLE = _UxGT("Переключ.шпинд"); - LSTR MSG_SPINDLE_POWER = _UxGT("Мощн.шпинделя"); - LSTR MSG_LASER_POWER = _UxGT("Мощн. лазера"); - LSTR MSG_LASER_PULSE_MS = _UxGT("Тест. имп. мс"); - LSTR MSG_LASER_EVAC_TOGGLE = _UxGT("Переключ. обдув"); - LSTR MSG_SPINDLE_EVAC_TOGGLE = _UxGT("Переключ. вакуум"); - - LSTR MSG_LASER_ASSIST_TOGGLE = _UxGT("Управление обдувом"); - LSTR MSG_FLOWMETER_FAULT = _UxGT("Ошибка обдува"); - LSTR MSG_LASER_FIRE_PULSE = _UxGT("Импульс лазера"); - LSTR MSG_SPINDLE_FORWARD = _UxGT("Шпиндель вперёд"); - LSTR MSG_SPINDLE_REVERSE = _UxGT("Инверсия шпинделя"); - - LSTR MSG_SWITCH_PS_ON = _UxGT("Включить питание"); - LSTR MSG_SWITCH_PS_OFF = _UxGT("Выключить питание"); - LSTR MSG_EXTRUDE = _UxGT("Выдавить"); - LSTR MSG_RETRACT = _UxGT("Втянуть"); - LSTR MSG_MOVE_AXIS = _UxGT("Движение по осям"); - LSTR MSG_PROBE_AND_LEVEL = _UxGT("Проба/выравнивание"); - LSTR MSG_BED_LEVELING = _UxGT("Выравнивание стола"); - LSTR MSG_LEVEL_BED = _UxGT("Выровнять стол"); - LSTR MSG_BED_TRAMMING = _UxGT("Выровнять углы"); - LSTR MSG_NEXT_CORNER = _UxGT("Следующий угол"); - LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Вверх до сраб. зонда"); - LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Углы в норме. Вырав."); - LSTR MSG_BED_TRAMMING_GOOD_POINTS = _UxGT("Хорошие точки: "); - LSTR MSG_BED_TRAMMING_LAST_Z = _UxGT("Последняя Z: "); - LSTR MSG_MESH_EDITOR = _UxGT("Смещение Z"); - LSTR MSG_EDITING_STOPPED = _UxGT("Правка окончена"); - LSTR MSG_EDIT_MESH = _UxGT("Редактировать сетку"); - LSTR MSG_PROBING_POINT = _UxGT("Точка сетки"); - LSTR MSG_MESH_X = _UxGT("Индекс X"); - LSTR MSG_MESH_Y = _UxGT("Индекс Y"); - LSTR MSG_MESH_EDIT_Z = _UxGT("Значение Z"); - LSTR MSG_CUSTOM_COMMANDS = _UxGT("Свои команды"); - - LSTR MSG_M48_TEST = _UxGT("M48 тест Z-зонда"); - LSTR MSG_M48_DEVIATION = _UxGT("Отклонение"); - LSTR MSG_M48_POINT = _UxGT("M48 точка"); - LSTR MSG_M48_OUT_OF_BOUNDS = _UxGT("Зонд за пределами"); - - LSTR MSG_IDEX_MENU = _UxGT("Меню IDEX"); - LSTR MSG_OFFSETS_MENU = _UxGT("Размещение сопел"); - LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Авто парковка"); - LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Размножение"); - LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Зеркальная копия"); - LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Полный контроль"); - LSTR MSG_IDEX_DUPE_GAP = _UxGT("Дублировать X-зазор"); - - LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2-е сопло Z"); - LSTR MSG_HOTEND_OFFSET_N = _UxGT("2-е сопло @"); - - LSTR MSG_UBL_DOING_G29 = _UxGT("Выполняем G29"); - LSTR MSG_UBL_TOOLS = _UxGT("Инструменты UBL"); - LSTR MSG_LCD_TILTING_MESH = _UxGT("Точка разворота"); - LSTR MSG_UBL_MANUAL_MESH = _UxGT("Ручной ввод сетки"); - LSTR MSG_UBL_BC_INSERT = _UxGT("Разм.шайбу, измерить"); - LSTR MSG_UBL_BC_REMOVE = _UxGT("Убрать, измер. стол"); - LSTR MSG_UBL_MESH_WIZARD = _UxGT("Мастер сеток UBL"); - LSTR MSG_UBL_BC_INSERT2 = _UxGT("Измерение"); - LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Двигаемся дальше"); - LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Править свою сетку"); - LSTR MSG_UBL_SET_TEMP_BED = LCD_STR_THERMOMETER _UxGT(" стола, ") LCD_STR_DEGREE _UxGT("C"); - LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Своя ") LCD_STR_THERMOMETER _UxGT(" стола,") LCD_STR_DEGREE _UxGT("C"); - LSTR MSG_UBL_SET_TEMP_HOTEND = LCD_STR_THERMOMETER _UxGT(" сопла, ") LCD_STR_DEGREE _UxGT("C"); - LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Своя ") LCD_STR_THERMOMETER _UxGT(" сопла,") LCD_STR_DEGREE _UxGT("C"); - LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Построить свою"); - LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Правка завершена"); - LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Точная правка сетки"); - LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Построить сетку"); - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Построить сетку $"); - LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Строить холод.сетку"); - LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Правка высоты сетки"); - LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Высота"); - LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Проверить сетку"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Провер. сетку $"); - LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Провер. свою сетку"); - LSTR MSG_G26_HEATING_BED = _UxGT("G26 нагрев стола"); - LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 нагрев сопла"); - LSTR MSG_G26_MANUAL_PRIME = _UxGT("Ручная прочистка"); - LSTR MSG_G26_FIXED_LENGTH = _UxGT("Прочистка фикс.длины"); - LSTR MSG_G26_PRIME_DONE = _UxGT("Прочистка окончена"); - LSTR MSG_G26_CANCELED = _UxGT("G26 завершена"); - LSTR MSG_G26_LEAVING = _UxGT("Выйти из G26"); - LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Продолжить сетку"); - LSTR MSG_UBL_MESH_LEVELING = _UxGT("Выравнивание сетки"); - LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-точечное выравн."); - LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Выравнивание сеткой"); - LSTR MSG_UBL_MESH_LEVEL = _UxGT("Выровнять сетку"); - LSTR MSG_UBL_SIDE_POINTS = _UxGT("Крайние точки"); - LSTR MSG_UBL_MAP_TYPE = _UxGT("Тип карты"); - LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Вывести карту сетки"); - LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Вывести на хост"); - LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Вывести в CSV"); - LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Сохранить снаружи"); - LSTR MSG_UBL_INFO_UBL = _UxGT("Информация UBL"); - LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Кол-во заполн."); - LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Ручное заполнение"); - LSTR MSG_UBL_SMART_FILLIN = _UxGT("Умное заполнение"); - LSTR MSG_UBL_FILLIN_MESH = _UxGT("Заполнить сетку"); - LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Аннулировать всё"); - LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Аннулир. ближайшую"); - LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Точно править всё"); - LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Настр. ближ. точку"); - LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Хранилище сеток"); - LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Слот памяти"); - LSTR MSG_UBL_LOAD_MESH = _UxGT("Загрузить сетку"); - LSTR MSG_UBL_SAVE_MESH = _UxGT("Сохранить сетку"); - LSTR MSG_MESH_LOADED = _UxGT("Сетка %i загружена"); - LSTR MSG_MESH_SAVED = _UxGT("Сетка %i сохранена"); - LSTR MSG_UBL_NO_STORAGE = _UxGT("Нет хранилища"); - LSTR MSG_UBL_SAVE_ERROR = _UxGT("Ошибка: Сохран. UBL"); - LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Ошибка: Восстан.UBL"); - LSTR MSG_UBL_Z_OFFSET = _UxGT("Смещение Z: "); - LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Смещение Z останов."); - LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("Пошаговая настр. UBL"); - LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Строить холодную"); - LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2.Умное заполнение"); - LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Проверить сетку"); - LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Точно настр. всё"); - LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Проверить сетку"); - LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Точно настр. всё"); - LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Сохранить сетку"); - - LSTR MSG_LED_CONTROL = _UxGT("Настройка подсветки"); - LSTR MSG_LIGHTS = _UxGT("Подсветка"); - LSTR MSG_LIGHT_N = _UxGT("Свет #{"); - LSTR MSG_LED_PRESETS = _UxGT("Предустановки света"); - LSTR MSG_SET_LEDS_RED = _UxGT("Красный"); - LSTR MSG_SET_LEDS_ORANGE = _UxGT("Оранжевый"); - LSTR MSG_SET_LEDS_YELLOW = _UxGT("Жёлтый"); - LSTR MSG_SET_LEDS_GREEN = _UxGT("Зелёный"); - LSTR MSG_SET_LEDS_BLUE = _UxGT("Синий"); - LSTR MSG_SET_LEDS_INDIGO = _UxGT("Индиго"); - LSTR MSG_SET_LEDS_VIOLET = _UxGT("Фиолетовый"); - LSTR MSG_SET_LEDS_WHITE = _UxGT("Белый"); - LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Свет по умолчанию"); - LSTR MSG_LED_CHANNEL_N = _UxGT("Канал {"); - LSTR MSG_NEO2_PRESETS = _UxGT("Свет #2 предустан."); - LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Яркость"); - LSTR MSG_CUSTOM_LEDS = _UxGT("Свой цвет подсветки"); - LSTR MSG_INTENSITY_R = _UxGT("Уровень красного"); - LSTR MSG_INTENSITY_G = _UxGT("Уровень зелёного"); - LSTR MSG_INTENSITY_B = _UxGT("Уровень синего"); - LSTR MSG_INTENSITY_W = _UxGT("Уровень белого"); - LSTR MSG_LED_BRIGHTNESS = _UxGT("Яркость"); - - LSTR MSG_MOVING = _UxGT("Движемся..."); - LSTR MSG_FREE_XY = _UxGT("Освободить XY"); - LSTR MSG_MOVE_X = _UxGT("Движение по X"); - LSTR MSG_MOVE_Y = _UxGT("Движение по Y"); - LSTR MSG_MOVE_Z = _UxGT("Движение по Z"); - LSTR MSG_MOVE_N = _UxGT("Движение по @"); - LSTR MSG_MOVE_E = _UxGT("Экструдер"); - LSTR MSG_MOVE_EN = _UxGT("Экструдер *"); - LSTR MSG_HOTEND_TOO_COLD = _UxGT("Сопло не нагрето"); - LSTR MSG_MOVE_N_MM = _UxGT("Движение $мм"); - LSTR MSG_MOVE_N_IN = _UxGT("Движение $in"); - LSTR MSG_MOVE_N_DEG = _UxGT("Движение $") LCD_STR_DEGREE; - LSTR MSG_SPEED = _UxGT("Скорость"); - LSTR MSG_MESH_Z_OFFSET = _UxGT("Z стола"); - LSTR MSG_NOZZLE = _UxGT("Сопло, ") LCD_STR_DEGREE _UxGT("C"); - LSTR MSG_NOZZLE_N = _UxGT("Сопло ~"); - LSTR MSG_NOZZLE_PARKED = _UxGT("Сопло запарковано"); - LSTR MSG_NOZZLE_STANDBY = _UxGT("Сопло ожидает"); - LSTR MSG_BED = _UxGT("Стол, ") LCD_STR_DEGREE _UxGT("C"); - LSTR MSG_CHAMBER = _UxGT("Камера,") LCD_STR_DEGREE _UxGT("C"); - LSTR MSG_COOLER = _UxGT("Охлажд. лазера"); - LSTR MSG_COOLER_TOGGLE = _UxGT("Переключ. охл."); - LSTR MSG_FLOWMETER_SAFETY = _UxGT("Безопас.потока"); - LSTR MSG_LASER = _UxGT("Лазер"); - LSTR MSG_FAN_SPEED = _UxGT("Кулер"); - LSTR MSG_FAN_SPEED_N = _UxGT("Кулер ~"); - LSTR MSG_STORED_FAN_N = _UxGT("Сохранённый кулер ~"); - LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Дополн. кулер"); - LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Дополн. кулер ~"); - LSTR MSG_CONTROLLER_FAN = _UxGT("Кулер контроллера"); - LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("Холостые обороты"); - LSTR MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("Автовключение"); - LSTR MSG_CONTROLLER_FAN_SPEED = _UxGT("Рабочие обороты"); - LSTR MSG_CONTROLLER_FAN_DURATION = _UxGT("Период простоя"); - LSTR MSG_FLOW = _UxGT("Поток"); - LSTR MSG_FLOW_N = _UxGT("Поток ~"); - LSTR MSG_CONTROL = _UxGT("Настройки"); - LSTR MSG_MIN = " " LCD_STR_THERMOMETER ", " LCD_STR_DEGREE _UxGT("С мин"); - LSTR MSG_MAX = " " LCD_STR_THERMOMETER ", " LCD_STR_DEGREE _UxGT("С макс"); - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Фактор"); - LSTR MSG_AUTOTEMP = _UxGT("Автотемпература"); - LSTR MSG_TIMEOUT = _UxGT("Таймаут."); - LSTR MSG_LCD_ON = _UxGT("Вкл"); - LSTR MSG_LCD_OFF = _UxGT("Выкл"); - - LSTR MSG_PID_AUTOTUNE = _UxGT("Автокалибровка PID"); - LSTR MSG_PID_AUTOTUNE_E = _UxGT("Автокалибр. PID *"); - LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("Калибр.PID выполнена"); - LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Сбой калибровки! Неверный экструдер."); - LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Сбой калибровки! Температура завышена."); - LSTR MSG_PID_TIMEOUT = _UxGT("Сбой калибровки! Таймаут."); - - LSTR MSG_SELECT_E = _UxGT("Выбор *"); - LSTR MSG_ACC = _UxGT("Ускорение"); - LSTR MSG_JERK = _UxGT("Рывок"); - LSTR MSG_VA_JERK = _UxGT("V") STR_A _UxGT("-рывок"); - LSTR MSG_VB_JERK = _UxGT("V") STR_B _UxGT("-рывок"); - LSTR MSG_VC_JERK = _UxGT("V") STR_C _UxGT("-рывок"); - LSTR MSG_VN_JERK = _UxGT("V@-рывок"); - LSTR MSG_VE_JERK = _UxGT("Ve-рывок"); - LSTR MSG_JUNCTION_DEVIATION = _UxGT("Отклон.угла"); - LSTR MSG_MAX_SPEED = _UxGT("Скорость, мм/с"); - LSTR MSG_VMAX_A = _UxGT("Скор.макс ") STR_A; - LSTR MSG_VMAX_B = _UxGT("Скор.макс ") STR_B; - LSTR MSG_VMAX_C = _UxGT("Скор.макс ") STR_C; - LSTR MSG_VMAX_N = _UxGT("Скор.макс @"); - LSTR MSG_VMAX_E = _UxGT("Скор.макс E"); - LSTR MSG_VMAX_EN = _UxGT("Скор.макс *"); - LSTR MSG_VMIN = _UxGT("Скор.мин"); - LSTR MSG_VTRAV_MIN = _UxGT("Перемещение мин"); - LSTR MSG_ACCELERATION = _UxGT("Ускорение, мм/с2"); - LSTR MSG_AMAX_A = _UxGT("Ускор.макс ") STR_A; - LSTR MSG_AMAX_B = _UxGT("Ускор.макс ") STR_B; - LSTR MSG_AMAX_C = _UxGT("Ускор.макс ") STR_C; - LSTR MSG_AMAX_N = _UxGT("Ускор.макс @"); - LSTR MSG_AMAX_E = _UxGT("Ускор.макс E"); - LSTR MSG_AMAX_EN = _UxGT("Ускор.макс *"); - LSTR MSG_A_RETRACT = _UxGT("Ускор.втягив."); - LSTR MSG_A_TRAVEL = _UxGT("Ускор.путеш."); - LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("Частота макс."); - LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("Подача мин."); - LSTR MSG_STEPS_PER_MM = _UxGT("Шагов/мм"); - LSTR MSG_A_STEPS = STR_A _UxGT(" шаг/мм"); - LSTR MSG_B_STEPS = STR_B _UxGT(" шаг/мм"); - LSTR MSG_C_STEPS = STR_C _UxGT(" шаг/мм"); - LSTR MSG_N_STEPS = _UxGT("@ шаг/мм"); - LSTR MSG_E_STEPS = _UxGT("E шаг/мм"); - LSTR MSG_EN_STEPS = _UxGT("* шаг/мм"); - LSTR MSG_TEMPERATURE = _UxGT("Температура"); - LSTR MSG_MOTION = _UxGT("Движение"); - LSTR MSG_FILAMENT = _UxGT("Филамент"); - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E в мм") SUPERSCRIPT_THREE; - LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("E огран.,мм") SUPERSCRIPT_THREE; - LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("E огран. *"); - LSTR MSG_FILAMENT_DIAM = _UxGT("Диам. филам."); - LSTR MSG_FILAMENT_DIAM_E = _UxGT("Диам. филам. *"); - LSTR MSG_FILAMENT_UNLOAD = _UxGT("Загрузка, мм"); - LSTR MSG_FILAMENT_LOAD = _UxGT("Выгрузка, мм"); - LSTR MSG_ADVANCE_K = _UxGT("К-фактор LA"); - LSTR MSG_ADVANCE_K_E = _UxGT("К-фактор LA *"); - LSTR MSG_CONTRAST = _UxGT("Контраст экрана"); - LSTR MSG_STORE_EEPROM = _UxGT("Сохранить настройки"); - LSTR MSG_LOAD_EEPROM = _UxGT("Загрузить настройки"); - LSTR MSG_RESTORE_DEFAULTS = _UxGT("На базовые парам."); - LSTR MSG_INIT_EEPROM = _UxGT("Инициализ. EEPROM"); - LSTR MSG_ERR_EEPROM_CRC = _UxGT("Сбой EEPROM: CRC"); - LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Сбой EEPROM: размер"); - LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Сбой EEPROM: версия"); - LSTR MSG_ERR_EEPROM_CORRUPT = _UxGT("Сбой EEPROM: данные"); - LSTR MSG_SETTINGS_STORED = _UxGT("Параметры сохранены"); - LSTR MSG_MEDIA_UPDATE = _UxGT("Обновление прошивки"); - LSTR MSG_RESET_PRINTER = _UxGT("Сброс принтера"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT(" Обновить"); - LSTR MSG_INFO_SCREEN = _UxGT("Главный экран"); - LSTR MSG_PREPARE = _UxGT("Подготовить"); - LSTR MSG_TUNE = _UxGT("Настроить"); - LSTR MSG_POWER_MONITOR = _UxGT("Монитор питания"); - LSTR MSG_CURRENT = _UxGT("Ток"); - LSTR MSG_VOLTAGE = _UxGT("Напряжение"); - LSTR MSG_POWER = _UxGT("Мощность"); - LSTR MSG_START_PRINT = _UxGT("Запустить печать"); - - LSTR MSG_BUTTON_NEXT = _UxGT("Дальше"); //short text for buttons - LSTR MSG_BUTTON_INIT = _UxGT("Иниц-я"); - LSTR MSG_BUTTON_STOP = _UxGT("Стоп"); - LSTR MSG_BUTTON_PRINT = _UxGT("Печать"); - LSTR MSG_BUTTON_RESET = _UxGT("Сброс"); - LSTR MSG_BUTTON_IGNORE = _UxGT("Игнорир."); - LSTR MSG_BUTTON_CANCEL = _UxGT("Отмена"); - LSTR MSG_BUTTON_DONE = _UxGT("Готово"); - LSTR MSG_BUTTON_BACK = _UxGT("Назад"); - LSTR MSG_BUTTON_PROCEED = _UxGT("Продолжить"); - LSTR MSG_BUTTON_SKIP = _UxGT("Пропустить"); - - LSTR MSG_PAUSE_PRINT = _UxGT("Пауза печати"); - LSTR MSG_RESUME_PRINT = _UxGT("Продолжить печать"); - LSTR MSG_HOST_START_PRINT = _UxGT("Старт с хоста"); - LSTR MSG_STOP_PRINT = _UxGT("Остановить печать"); - LSTR MSG_PRINTING_OBJECT = _UxGT("Печать объекта"); - LSTR MSG_CANCEL_OBJECT = _UxGT("Завершить объект"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Завершить объект {"); - LSTR MSG_OUTAGE_RECOVERY = _UxGT("Восстановение сбоя"); - LSTR MSG_MEDIA_MENU = _UxGT("Печать с SD карты"); - LSTR MSG_NO_MEDIA = _UxGT("Нет SD карты"); - LSTR MSG_DWELL = _UxGT("Сон..."); - LSTR MSG_USERWAIT = _UxGT("Продолжить..."); - LSTR MSG_PRINT_PAUSED = _UxGT("Печать на паузе"); - LSTR MSG_PRINTING = _UxGT("Печать..."); - LSTR MSG_PRINT_ABORTED = _UxGT("Печать отменена"); - LSTR MSG_PRINT_DONE = _UxGT("Печать завершена"); - LSTR MSG_NO_MOVE = _UxGT("Нет движения."); - LSTR MSG_KILLED = _UxGT("УБИТО. "); - LSTR MSG_STOPPED = _UxGT("ОСТАНОВЛЕНО. "); - LSTR MSG_CONTROL_RETRACT = _UxGT("Откат, мм"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Откат смены,мм"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Возвр.смены,мм"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("Возвр.смены V"); - LSTR MSG_AUTORETRACT = _UxGT("Автооткат"); - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Подскок Z, мм"); - LSTR MSG_CONTROL_RETRACTF = _UxGT("Втягивание V"); - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Возврат, мм"); - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Возврат V"); - - LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Длина замены"); - LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Доп. длина"); - LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Длина прочистки"); - - LSTR MSG_TOOL_CHANGE = _UxGT("Смена сопел"); - LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Поднятие по Z"); - LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Началь.скор."); - LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Скор.отката"); - LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Парковать голову"); - LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Скорость возврата"); - LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Скорость кулера"); - LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Время кулера"); - LSTR MSG_TOOL_MIGRATION_ON = _UxGT("Авто Вкл."); - LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("Авто Выкл."); - LSTR MSG_TOOL_MIGRATION = _UxGT("Смена инструмента"); - LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("Авто смена"); - LSTR MSG_TOOL_MIGRATION_END = _UxGT("Последний экструдер"); - LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("Замена на *"); - LSTR MSG_FILAMENTCHANGE = _UxGT("Смена филамента"); - LSTR MSG_FILAMENTCHANGE_E = _UxGT("Смена филамента *"); - LSTR MSG_FILAMENTLOAD = _UxGT("Загрузить филамент"); - LSTR MSG_FILAMENTLOAD_E = _UxGT("Подать филамент *"); - LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Убрать филамент *"); - LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Выгрузить всё"); - - LSTR MSG_ATTACH_MEDIA = _UxGT("Установить SD карту"); - LSTR MSG_ATTACH_SD = _UxGT("Установить SD карту"); - LSTR MSG_ATTACH_USB = _UxGT("Монтировать USB"); // Установить флешка - LSTR MSG_CHANGE_MEDIA = _UxGT("Сменить SD карту"); - LSTR MSG_RELEASE_MEDIA = _UxGT("Освободить SD карту"); - LSTR MSG_RUN_AUTOFILES = _UxGT("Автостарт"); - - LSTR MSG_ZPROBE_OUT = _UxGT("Z-зонд вне стола"); - LSTR MSG_SKEW_FACTOR = _UxGT("Фактор перекоса"); - LSTR MSG_BLTOUCH = _UxGT("Z-зонд BLTouch"); - LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Тестирование BLTouch"); - LSTR MSG_BLTOUCH_RESET = _UxGT("Сброс BLTouch"); - LSTR MSG_BLTOUCH_STOW = _UxGT("Втянуть BLTouch"); - LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Выдвинуть BLTouch"); - LSTR MSG_BLTOUCH_SW_MODE = _UxGT("Режим SW"); - LSTR MSG_BLTOUCH_5V_MODE = _UxGT("Режим 5V"); - LSTR MSG_BLTOUCH_OD_MODE = _UxGT("Режим OD"); - LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("Сохранить режим"); - LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Установить в 5V"); - LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Установить в OD"); - LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Текущий режим"); - LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("ОПАСНОСТЬ: Неправильные параметры приводят к повреждениям! Продолжить?"); - LSTR MSG_TOUCHMI_PROBE = _UxGT("Z-Зонд TouchMI"); - LSTR MSG_TOUCHMI_INIT = _UxGT("Инициализация"); - LSTR MSG_TOUCHMI_ZTEST = _UxGT("Тест Z-смещения"); - LSTR MSG_TOUCHMI_SAVE = _UxGT("Сохранить"); - LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("Установить TouchMI"); - LSTR MSG_MANUAL_DEPLOY = _UxGT("Выдвинуть зонд"); - LSTR MSG_MANUAL_STOW = _UxGT("Втянуть зонд"); - LSTR MSG_HOME_FIRST = _UxGT("Сначала паркуй %s"); - LSTR MSG_ZPROBE_OFFSETS = _UxGT("Смещение Z-зонда"); - LSTR MSG_ZPROBE_XOFFSET = _UxGT("Смещение X"); - LSTR MSG_ZPROBE_YOFFSET = _UxGT("Смещение Y"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Смещение Z"); - LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Смещение @"); - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Шаг Z смещения"); - LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Двиг. сопло к столу"); - LSTR MSG_BABYSTEP_X = _UxGT("Микрошаг X"); - LSTR MSG_BABYSTEP_Y = _UxGT("Микрошаг Y"); - LSTR MSG_BABYSTEP_Z = _UxGT("Микрошаг Z"); - LSTR MSG_BABYSTEP_N = _UxGT("Микрошаг @"); - LSTR MSG_BABYSTEP_TOTAL = _UxGT("Суммарно"); - LSTR MSG_ENDSTOP_ABORT = _UxGT("Сработал концевик"); - LSTR MSG_ERR_HEATING_FAILED = _UxGT("Разогрев не удался"); - LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("УТЕЧКА ТЕМПЕРАТУРЫ"); - LSTR MSG_ERR_COOLING_FAILED = _UxGT("НЕ УДАЛОСЬ ОХЛАДИТЬ"); - LSTR MSG_ERR_MAXTEMP = _UxGT("Ошибка: Т макс."); - LSTR MSG_ERR_MINTEMP = _UxGT("Ошибка: Т мин."); - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Ошибка: Т контр."); - LSTR MSG_HALTED = _UxGT("ПРИНТЕР ОСТАНОВЛЕН"); - LSTR MSG_PLEASE_RESET = _UxGT("Сделайте сброс"); - LSTR MSG_HEATING = _UxGT("Нагрев..."); - LSTR MSG_COOLING = _UxGT("Охлаждение..."); - LSTR MSG_BED_HEATING = _UxGT("Нагрев стола..."); - LSTR MSG_BED_COOLING = _UxGT("Охлаждение стола..."); - LSTR MSG_PROBE_HEATING = _UxGT("Нагрев зонда..."); - LSTR MSG_PROBE_COOLING = _UxGT("Охлаждение зонда..."); - LSTR MSG_CHAMBER_HEATING = _UxGT("Нагрев камеры..."); - LSTR MSG_CHAMBER_COOLING = _UxGT("Охладжение камеры..."); - LSTR MSG_LASER_COOLING = _UxGT("Охлаждение лазера..."); - LSTR MSG_DELTA_CALIBRATE = _UxGT("Калибровка дельты"); - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Калибровать X"); - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Калибровать Y"); - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Калибровать Z"); - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Калибровать центр"); - LSTR MSG_DELTA_SETTINGS = _UxGT("Настройки дельты"); - LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Автокалибр. дельты"); - LSTR MSG_DELTA_DIAG_ROD = _UxGT("Стержень диаг."); - LSTR MSG_DELTA_HEIGHT = _UxGT("Высота"); - LSTR MSG_DELTA_RADIUS = _UxGT("Радиус"); - LSTR MSG_INFO_MENU = _UxGT("О принтере"); - LSTR MSG_INFO_PRINTER_MENU = _UxGT("Данные принтера"); - LSTR MSG_3POINT_LEVELING = _UxGT("3-точ. выравнив."); - LSTR MSG_LINEAR_LEVELING = _UxGT("Линейное выравн."); - LSTR MSG_BILINEAR_LEVELING = _UxGT("Билин. выравнив."); - LSTR MSG_UBL_LEVELING = _UxGT("Выравнивание UBL"); - LSTR MSG_MESH_LEVELING = _UxGT("Выравнивание сеткой"); - LSTR MSG_MESH_DONE = _UxGT("Зондиров. выполнено"); - - LSTR MSG_INFO_STATS_MENU = _UxGT("Статистика принтера"); - LSTR MSG_INFO_BOARD_MENU = _UxGT("Данные платы"); - LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Термисторы"); - LSTR MSG_INFO_EXTRUDERS = _UxGT("Экструдеры"); - LSTR MSG_INFO_BAUDRATE = _UxGT("Скорость,БОД"); - LSTR MSG_INFO_PROTOCOL = _UxGT("Протокол"); - LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Контр.утечки Т:Выкл"); - LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Контр.утечки Т:Вкл"); - LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Время прост.хот-а"); - LSTR MSG_CASE_LIGHT = _UxGT("Подсветка корпуса"); - LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Яркость подсветки"); - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("НЕВЕРНЫЙ ПРИНТЕР"); - - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Напечатано"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Общее время"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Наидольшее"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Выдавлено"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Завершено"); - - LSTR MSG_INFO_MIN_TEMP = _UxGT("Мин. ") LCD_STR_THERMOMETER; - LSTR MSG_INFO_MAX_TEMP = _UxGT("Макс. ") LCD_STR_THERMOMETER; - LSTR MSG_INFO_PSU = _UxGT("БП"); - LSTR MSG_DRIVE_STRENGTH = _UxGT("Сила привода"); - LSTR MSG_DAC_PERCENT_N = _UxGT("@ Привод, %"); - LSTR MSG_ERROR_TMC = _UxGT("СБОЙ СВЯЗИ С TMC"); - LSTR MSG_DAC_EEPROM_WRITE = _UxGT("Запись DAC в EEPROM"); - LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("ЗАМЕНА ФИЛАМЕНТА"); - LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("ПЕЧАТЬ НА ПАУЗЕ"); - LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("ЗАГРУЗКА ФИЛАМЕНТА"); - LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("ВЫГРУЗКА ФИЛАМЕНТА"); - LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("ОПЦИИ ПРОДОЛЖЕНИЯ:"); - LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Выдавить ещё"); - LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Возобновить печать"); - LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Сопла: "); - LSTR MSG_RUNOUT_SENSOR = _UxGT("Датчик оконч.филам."); - LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("До конца, мм"); - LSTR MSG_KILL_HOMING_FAILED = _UxGT("Ошибка парковки"); - LSTR MSG_LCD_PROBING_FAILED = _UxGT("Ошибка зондирования"); - - LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("ВЫБИРЕТЕ ФИЛАМЕНТ"); - LSTR MSG_MMU2_MENU = _UxGT("Настройки MMU"); - LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("Обнови прошивку MMU"); - LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU требует внимания"); - LSTR MSG_MMU2_RESUME = _UxGT("Продолжить печать"); - LSTR MSG_MMU2_RESUMING = _UxGT("Продолжение..."); - LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("Загрузить филамент"); - LSTR MSG_MMU2_LOAD_ALL = _UxGT("Загрузить всё"); - LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Загрузить в сопло"); - LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("Извлечь филамент"); - LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("Извлечь филамент ~"); - LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Выгрузить филамент"); - LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Загрузка %i..."); - LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Извлеч.филамента..."); - LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Выгрузка...."); - LSTR MSG_MMU2_ALL = _UxGT("Всё"); - LSTR MSG_MMU2_FILAMENT_N = _UxGT("Филамент ~"); - LSTR MSG_MMU2_RESET = _UxGT("Перезапуск MMU"); - LSTR MSG_MMU2_RESETTING = _UxGT("Перезапуск MMU..."); - LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Удалите и нажмите"); - - LSTR MSG_MIX = _UxGT("Смешив."); - LSTR MSG_MIX_COMPONENT_N = _UxGT("Компонент {"); - LSTR MSG_MIXER = _UxGT("Смеситель"); - LSTR MSG_GRADIENT = _UxGT("Градиент"); - LSTR MSG_FULL_GRADIENT = _UxGT("Полный градиент"); - LSTR MSG_CYCLE_MIX = _UxGT("Цикличное смешивание"); - LSTR MSG_GRADIENT_MIX = _UxGT("Градиент смешивания"); - LSTR MSG_REVERSE_GRADIENT = _UxGT("Сменить градиент"); - LSTR MSG_TOGGLE_MIX = _UxGT("Перекл. смешивание"); - LSTR MSG_ACTIVE_VTOOL = _UxGT("Актив.В-инструм."); - LSTR MSG_START_VTOOL = _UxGT("В-инструм.нач."); - LSTR MSG_END_VTOOL = _UxGT("В-инструм.кон."); - LSTR MSG_GRADIENT_ALIAS = _UxGT("Псевдоним В-инстр."); - LSTR MSG_RESET_VTOOLS = _UxGT("Сброс В-инструм."); - LSTR MSG_COMMIT_VTOOL = _UxGT("Смешать В-инструм."); - LSTR MSG_VTOOLS_RESET = _UxGT("В-инструм. сброшены"); - - LSTR MSG_START_Z = _UxGT("Начало Z"); - LSTR MSG_END_Z = _UxGT(" Конец Z"); - - LSTR MSG_GAMES = _UxGT("Игры"); - LSTR MSG_BRICKOUT = _UxGT("Brickout"); - LSTR MSG_INVADERS = _UxGT("Invaders"); - LSTR MSG_SNAKE = _UxGT("Sn4k3"); - LSTR MSG_MAZE = _UxGT("Maze"); - - LSTR MSG_BAD_PAGE = _UxGT("Плохая страница"); - LSTR MSG_BAD_PAGE_SPEED = _UxGT("Плохая скор.стран."); - - LSTR MSG_EDIT_PASSWORD = _UxGT("Редактировать пароль"); - LSTR MSG_LOGIN_REQUIRED = _UxGT("Нужен логин"); - LSTR MSG_PASSWORD_SETTINGS = _UxGT("Настройки пароля"); - LSTR MSG_ENTER_DIGIT = _UxGT("Введите цифру"); - LSTR MSG_CHANGE_PASSWORD = _UxGT("Смените пароль"); - LSTR MSG_REMOVE_PASSWORD = _UxGT("Удалить пароль"); - LSTR MSG_PASSWORD_SET = _UxGT("Пароль это "); - LSTR MSG_START_OVER = _UxGT("Старт через"); - LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Не забудь сохранить"); - LSTR MSG_PASSWORD_REMOVED = _UxGT("Пароль удалён"); - - // - // Filament Change screens show up to 3 lines on a 4-line display - // ...or up to 2 lines on a 3-line display - // - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Парковка...")); - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Продолжить печать")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Ожидайте...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Вставь и нажми")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Нагреть сопло")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Нагрев...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Выгрузка...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Загрузка...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Прочистка...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Завершить прочистку")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Возобновление...")); - - LSTR MSG_TMC_DRIVERS = _UxGT("Драйвера TMC"); - LSTR MSG_TMC_CURRENT = _UxGT("Ток двигателей"); - LSTR MSG_TMC_HYBRID_THRS = _UxGT("Гибридный режим"); - LSTR MSG_TMC_HOMING_THRS = _UxGT("Чувствительность"); - LSTR MSG_TMC_STEPPING_MODE = _UxGT("Режим драйвера"); - LSTR MSG_TMC_STEALTHCHOP = _UxGT("Тихий режим вкл"); - - LSTR MSG_SERVICE_RESET = _UxGT("Сброс"); - LSTR MSG_SERVICE_IN = _UxGT(" в:"); - LSTR MSG_BACKLASH = _UxGT("Люфт"); - LSTR MSG_BACKLASH_CORRECTION = _UxGT("Исправление"); - LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Сглаживание"); - - LSTR MSG_LEVEL_X_AXIS = _UxGT("Выровнять ось X"); - LSTR MSG_AUTO_CALIBRATE = _UxGT("Автокалибровка"); - LSTR MSG_HEATER_TIMEOUT = _UxGT("Таймаут нагрева"); - LSTR MSG_REHEAT = _UxGT("Возобновить нагрев"); - LSTR MSG_REHEATING = _UxGT("Нагрев..."); - - LSTR MSG_PROBE_WIZARD = _UxGT("Мастер Z-зонда"); - LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Зондир.контр.точки Z"); - LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Движ.к точке зондир."); - - LSTR MSG_SOUND = _UxGT("Звук"); - - LSTR MSG_TOP_LEFT = _UxGT("Верхний левый"); - LSTR MSG_BOTTOM_LEFT = _UxGT("Нижний левый"); - LSTR MSG_TOP_RIGHT = _UxGT("Верхний правый"); - LSTR MSG_BOTTOM_RIGHT = _UxGT("Нижний правый"); - LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Калибровка успешна"); - LSTR MSG_CALIBRATION_FAILED = _UxGT("Ошибка калибровки"); - - LSTR MSG_DRIVER_BACKWARD = _UxGT(" драйвер наоборот"); - - LSTR MSG_SD_CARD = _UxGT("SD Карта"); - LSTR MSG_USB_DISK = _UxGT("USB Диск"); - - LSTR MSG_SHORT_DAY = _UxGT("д"); // One character only - LSTR MSG_SHORT_HOUR = _UxGT("ч"); // One character only - LSTR MSG_SHORT_MINUTE = _UxGT("м"); // One character only - - LSTR MSG_FILAMENT_MAN = _UxGT("Управл.филаментом"); - LSTR MSG_MANUAL_LEVELING = _UxGT("Ручное выравнивание"); - LSTR MSG_TRAM_FL = _UxGT("Передний левый"); - LSTR MSG_TRAM_FR = _UxGT("Передний правый"); - LSTR MSG_TRAM_C = _UxGT("Центр"); - LSTR MSG_TRAM_BL = _UxGT("Задний левый"); - LSTR MSG_TRAM_BR = _UxGT("Задний правый"); - LSTR MSG_MANUAL_MESH = _UxGT("Сетка вручную"); - LSTR MSG_AUTO_MESH = _UxGT("Сетка автоматически"); - LSTR MSG_ERR_M428_TOO_FAR = _UxGT("Ошибка: слишком далеко!"); - LSTR MSG_TRAMMING_WIZARD = _UxGT("Помощник выравнив."); - LSTR MSG_PREHEAT_HOTEND = _UxGT("Нагреть сопло"); - LSTR MSG_BED_TRAMMING_MANUAL = _UxGT("Ручное выравнив."); - LSTR MSG_MESH_VIEWER = _UxGT("Просмотр сетки"); - LSTR MSG_MESH_VIEW = _UxGT("Смотреть сетку"); - LSTR MSG_NO_VALID_MESH = _UxGT("Нет годной сетки"); - LSTR MSG_ACTIVATE_MESH = _UxGT("Включить сетку"); - LSTR MSG_MESH_INSET = _UxGT("Отступы сетки"); - LSTR MSG_MESH_MIN_X = _UxGT("Сетка X минимум"); - LSTR MSG_MESH_MAX_X = _UxGT("Сетка X максимум"); - LSTR MSG_MESH_MIN_Y = _UxGT("Сетка Y минимум"); - LSTR MSG_MESH_MAX_Y = _UxGT("Сетка Y максимум"); - LSTR MSG_MESH_AMAX = _UxGT("Максимальная зона"); - LSTR MSG_MESH_CENTER = _UxGT("Центрировать зону"); - LSTR MSG_MESH_CANCEL = _UxGT("Сетка отменена"); - LSTR MSG_UBL_TILT_MESH = _UxGT("Наколнить сетку"); - LSTR MSG_UBL_TILTING_GRID = _UxGT("Величина наклона"); - LSTR MSG_UBL_MESH_TILTED = _UxGT("Сетка наклонена"); - LSTR MSG_UBL_MESH_FILLED = _UxGT("Попущенные точки заполнены"); - LSTR MSG_UBL_MESH_INVALID = _UxGT("Негодная сетка"); - LSTR MSG_UBL_INVALID_SLOT = _UxGT("Сперва выберите слот сетки"); - LSTR MSG_MESH_ACTIVE = _UxGT("Сетка %i активна"); - LSTR MSG_LIVE_MOVE = _UxGT("Живое перемещение"); - LSTR MSG_CUTTER = _UxGT("Резак"); - LSTR MSG_PID_CYCLE = _UxGT("Циклы PID"); - LSTR MSG_PID_AUTOTUNE_FAILED = _UxGT("Автонастройка PID не удалась!"); - LSTR MSG_MPC_MEASURING_AMBIENT = _UxGT("Тест потери тепла"); - LSTR MSG_MPC_HEATING_PAST_200 = _UxGT("Нагрев выше >200C"); - LSTR MSG_MPC_COOLING_TO_AMBIENT = _UxGT("Охлаждение до окружающей"); - LSTR MSG_MPC_AUTOTUNE = _UxGT("Автонастройка MPC"); - LSTR MSG_MPC_EDIT = _UxGT("Изменить * MPC"); - LSTR MSG_MPC_POWER = _UxGT("Мощность нагревателя"); - LSTR MSG_MPC_POWER_E = _UxGT("Мощность *"); - LSTR MSG_MPC_BLOCK_HEAT_CAPACITY = _UxGT("Теплоёмкость"); - LSTR MSG_MPC_BLOCK_HEAT_CAPACITY_E = _UxGT("Теплоёмк. *"); - LSTR MSG_SENSOR_RESPONSIVENESS = _UxGT("Отклик датчика"); - LSTR MSG_SENSOR_RESPONSIVENESS_E = _UxGT("Отклик датч. *"); - LSTR MSG_MPC_AMBIENT_XFER_COEFF = _UxGT("Коэфф.окружения"); - LSTR MSG_MPC_AMBIENT_XFER_COEFF_E = _UxGT("Коэфф.окруж *"); - LSTR MSG_MPC_AMBIENT_XFER_COEFF_FAN = _UxGT("Коэфф.кулера"); - LSTR MSG_MPC_AMBIENT_XFER_COEFF_FAN_E = _UxGT("Коэфф.кулер *"); - LSTR MSG_INPUT_SHAPING = _UxGT("Input Shaping"); - LSTR MSG_SHAPING_ENABLE_N = _UxGT("Включить шейпинг @"); - LSTR MSG_SHAPING_DISABLE_N = _UxGT("Выключить шейпинг @"); - LSTR MSG_SHAPING_FREQ_N = _UxGT("@ частота"); - LSTR MSG_SHAPING_ZETA_N = _UxGT("@ подавление"); - LSTR MSG_FILAMENT_EN = _UxGT("Филамент *"); - LSTR MSG_SEGMENTS_PER_SECOND = _UxGT("Сегментов/сек"); - LSTR MSG_DRAW_MIN_X = _UxGT("Рисовать мин X"); - LSTR MSG_DRAW_MAX_X = _UxGT("Рисовать макс X"); - LSTR MSG_DRAW_MIN_Y = _UxGT("Рисовать мин Y"); - LSTR MSG_DRAW_MAX_Y = _UxGT("Рисовать макс Y"); - LSTR MSG_MAX_BELT_LEN = _UxGT("Макс.длина ремня"); - LSTR MSG_LINEAR_ADVANCE = _UxGT("Linear Advance"); - LSTR MSG_BRIGHTNESS = _UxGT("Яркость LCD"); - LSTR MSG_SCREEN_TIMEOUT = _UxGT("Таймаут LCD (м)"); - LSTR MSG_BRIGHTNESS_OFF = _UxGT("Выкл.подсветку"); - LSTR MSG_INFO_MACHINENAME = _UxGT("Название машины"); - LSTR MSG_INFO_SIZE = _UxGT("Размер"); - LSTR MSG_INFO_FWVERSION = _UxGT("Версия прошивки"); - LSTR MSG_INFO_BUILD = _UxGT("Дата сборки"); - LSTR MSG_BUTTON_CONFIRM = _UxGT("Подтвердить"); - LSTR MSG_BUTTON_CONTINUE = _UxGT("Продолжить"); - LSTR MSG_BUTTON_INFO = _UxGT("Инфо"); - LSTR MSG_BUTTON_LEVEL = _UxGT("Выровнять"); - LSTR MSG_BUTTON_PAUSE = _UxGT("Пауза"); - LSTR MSG_BUTTON_RESUME = _UxGT("Продолжить"); - LSTR MSG_BUTTON_ADVANCED = _UxGT("Расширанные"); - LSTR MSG_BUTTON_SAVE = _UxGT("Сохранить"); - LSTR MSG_BUTTON_PURGE = _UxGT("Прочистить"); - LSTR MSG_PAUSING = _UxGT("Пауза..."); - LSTR MSG_ADVANCED_PAUSE = _UxGT("Расширенная пауза"); - LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Продолжить печать"); - LSTR MSG_TURN_OFF = _UxGT("Выключить принтер"); - LSTR MSG_END_LOOPS = _UxGT("Завершить петлю"); - LSTR MSG_STOPPING = _UxGT("Остановка..."); - LSTR MSG_REMAINING_TIME = _UxGT("Осталось"); - LSTR MSG_PRINTER_KILLED = _UxGT("Принтер убит!"); - LSTR MSG_FWRETRACT = _UxGT("Откат принтера"); - LSTR MSG_SINGLENOZZLE_WIPE_RETRACT = _UxGT("Вытирание при откате"); - LSTR MSG_PARK_FAILED = _UxGT("Не удалось запарковать"); - LSTR MSG_FILAMENTUNLOAD = _UxGT("Выгрузить филамент"); - LSTR MSG_BLTOUCH_SPEED_MODE = _UxGT("Высокая скорость"); - LSTR MSG_MANUAL_PENUP = _UxGT("Поднять перо"); - LSTR MSG_MANUAL_PENDOWN = _UxGT("Опустить перо"); - LSTR MSG_ZPROBE_SETTINGS = _UxGT("Наторойки зонда"); - LSTR MSG_ZPROBE_MARGIN = _UxGT("Отступы зонда"); - LSTR MSG_Z_FEED_RATE = _UxGT("Скорость Z"); - LSTR MSG_ENABLE_HS_MODE = _UxGT("Включить режим ВС"); - LSTR MSG_ERR_TEMP_MALFUNCTION = _UxGT("СБОЙ ТЕМПЕРАТУРЫ"); - LSTR MSG_PLEASE_WAIT = _UxGT("Ожидайте..."); - LSTR MSG_PREHEATING = _UxGT("Нагреваю..."); - LSTR MSG_DELTA_CALIBRATION_IN_PROGRESS = _UxGT("Делаю дельта-калибровку"); - LSTR MSG_RESET_STATS = _UxGT("Сбросить статистику печати?"); - LSTR MSG_FAN_SPEED_FAULT = _UxGT("Сбой скорости кулера"); - - LSTR MSG_COLORS_GET = _UxGT("Получить цвет"); // ProUI - LSTR MSG_COLORS_SELECT = _UxGT("Выбрать цвета"); // ProUI - LSTR MSG_COLORS_APPLIED = _UxGT("Цвета применены"); // ProUI - LSTR MSG_COLORS_RED = _UxGT("Красный"); // ProUI / JyersUI - LSTR MSG_COLORS_GREEN = _UxGT("Зелёный"); // ProUI / JyersUI - LSTR MSG_COLORS_BLUE = _UxGT("Синий"); // ProUI / JyersUI - LSTR MSG_COLORS_WHITE = _UxGT("Белый"); // ProUI - LSTR MSG_UI_LANGUAGE = _UxGT("UI Language"); // ProUI - LSTR MSG_SOUND_ENABLE = _UxGT("Включить звук"); // ProUI - LSTR MSG_LOCKSCREEN = _UxGT("Блокировать экран"); // ProUI - LSTR MSG_LOCKSCREEN_LOCKED = _UxGT("Принтер заблокирован,"); // ProUI - LSTR MSG_LOCKSCREEN_UNLOCK = _UxGT("Крутить для разблокировки."); // ProUI - LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Ждите перезагрузки."); // ProUI - LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Нет носителя."); // ProUI - LSTR MSG_PLEASE_PREHEAT = _UxGT("Нагрейте сопло."); // ProUI - LSTR MSG_INFO_PRINT_COUNT_RESET = _UxGT("Сбросить счетчик"); // ProUI - LSTR MSG_FILAMENT_CHANGE_PURGE_CONTINUE = _UxGT("Прочистить или продолжить?"); // ProUI - LSTR MSG_EXTRUDER_MIN_TEMP = _UxGT("Миню темп. экструдера."); // ProUI - - LSTR MSG_FANCHECK = _UxGT("Пров.тахометра кулера"); - LSTR MSG_MMU2_REMOVE_AND_CLICK = _UxGT("Уберите и кликните..."); - LSTR MSG_REHEATDONE = _UxGT("Нагрето"); - - LSTR MSG_XATC = _UxGT("Помощник перекоса X"); - LSTR MSG_XATC_DONE = _UxGT("Перекос Х настроен!"); - LSTR MSG_XATC_UPDATE_Z_OFFSET = _UxGT("Новое смещение Z-зонда "); - LSTR MSG_HOST_SHUTDOWN = _UxGT("Выключить хост"); - - // did not translate as there is no local terms/slang yet - LSTR MSG_FIXED_TIME_MOTION = _UxGT("FT Motion"); - LSTR MSG_FTM_CMPN_MODE = _UxGT("@ Режим комп.: $"); - LSTR MSG_FTM_ZV = _UxGT("ZV"); - LSTR MSG_FTM_ZVD = _UxGT("ZVD"); - LSTR MSG_FTM_EI = _UxGT("EI"); - LSTR MSG_FTM_2HEI = _UxGT("2HEI"); - LSTR MSG_FTM_3HEI = _UxGT("3HEI"); - LSTR MSG_FTM_MZV = _UxGT("MZV"); - //LSTR MSG_FTM_ULENDO_FBS = _UxGT("Ulendo ФBС"); - //LSTR MSG_FTM_DISCTF = _UxGT("DISCTF"); - LSTR MSG_FTM_DYN_MODE = _UxGT("DF Mode: $"); - LSTR MSG_FTM_Z_BASED = _UxGT("Z-based"); - LSTR MSG_FTM_MASS_BASED = _UxGT("Mass-based"); - LSTR MSG_FTM_BASE_FREQ_N = _UxGT("@ Base Freq."); - LSTR MSG_FTM_DFREQ_K_N = _UxGT("@ Dyn. Freq."); - - // DGUS-Specific message strings, not used elsewhere - LSTR DGUS_MSG_TEMP_TOO_HIGH = _UxGT("Слишком высокая температура."); + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" Готов."); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = _UxGT("SD карта вставлена"); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = _UxGT("SD карта извлечена"); // (MEDIA_TYPE_EN) Removed + LSTR MSG_LCD_ENDSTOPS = _UxGT("Концевик"); // Endstops + LSTR MSG_MAIN_MENU = _UxGT("Главное меню"); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("Выключить двигатели"); // Disable Steppers + LSTR MSG_AUTO_HOME = _UxGT("Парковка XYZ"); // Auto Home + LSTR MSG_AUTO_HOME_X = _UxGT("Парковка X"); // Home X + LSTR MSG_AUTO_HOME_Y = _UxGT("Парковка Y"); // Home Y + LSTR MSG_AUTO_HOME_Z = _UxGT("Парковка Z"); // Home Z + LSTR MSG_LEVEL_BED_HOMING = _UxGT("Нулевое положение"); // Homing XYZ + LSTR MSG_LEVEL_BED_WAITING = _UxGT("Нажмите чтобы начать"); // Click to Begin + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Следующая точка"); // Next Point + LSTR MSG_LEVEL_BED_DONE = _UxGT("Выравнивание готово!"); // Leveling Done! + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Установ.смещ.дома"); // Set Home Offsets + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Смещения применены"); // Offsets Applied + LSTR MSG_PREHEAT_1 = _UxGT("Нагрев ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = _UxGT("Нагреть ~ ") PREHEAT_1_LABEL " ~"; // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = _UxGT("Нагреть сопло ") PREHEAT_1_LABEL _UxGT(" сопло"); // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = _UxGT("Нагреть сопло ~") PREHEAT_1_LABEL _UxGT(" сопло ~;"); // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_1_ALL = _UxGT("Нагреть всё ") PREHEAT_1_LABEL _UxGT(" всё"); // Preheat (PREHEAT_1_LABEL) All + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Нагреть стол ") PREHEAT_1_LABEL _UxGT(" стол"); // Preheat (PREHEAT_1_LABEL) Bed + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Правка предн. ") PREHEAT_1_LABEL _UxGT(" наст."); // Preheat (PREHEAT_1_LABEL) Conf + LSTR MSG_PREHEAT_M = _UxGT("Нагрев $"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("Нагреть ~ $"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("Нагреть сопло $"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("Нагреть сопло ~ $"); // Preheat $ End ~ + LSTR MSG_PREHEAT_M_ALL = _UxGT("Нагреть всё $"); // Preheat $ All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Нагреть стол $"); // Preheat $ Bed + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Настр.нагрева $"); // Preheat $ Conf + LSTR MSG_COOLDOWN = _UxGT("Охлаждение"); // Cooldown + LSTR MSG_SWITCH_PS_ON = _UxGT("Включить питание"); // Switch Power On + LSTR MSG_SWITCH_PS_OFF = _UxGT("Выключить питание"); // Switch Power Off + LSTR MSG_EXTRUDE = _UxGT("Выдавить"); // Extrude + LSTR MSG_RETRACT = _UxGT("Втянуть"); // Retract + LSTR MSG_MOVE_AXIS = _UxGT("Движение по осям"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("Проба/выравнивание"); // Probe and Level + LSTR MSG_BED_LEVELING = _UxGT("Выравнивание стола"); // Bed Leveling + LSTR MSG_LEVEL_BED = _UxGT("Выровнять стол"); // Level Bed + LSTR MSG_MOVE_X = _UxGT("Движение по X"); // Move X + LSTR MSG_MOVE_Y = _UxGT("Движение по Y"); // Move Y + LSTR MSG_MOVE_Z = _UxGT("Движение по Z"); // Move Z + LSTR MSG_MOVE_N = _UxGT("Движение по @"); // Move @ + LSTR MSG_MOVE_E = _UxGT("Экструдер"); // Move Extruder + LSTR MSG_MOVE_EN = _UxGT("Экструдер *"); // Move * + LSTR MSG_MOVE_N_MM = _UxGT("Движение $мм"); // Move $mm + LSTR MSG_MOVE_N_IN = _UxGT("Движение $in"); // Move $in + LSTR MSG_MOVE_N_DEG = _UxGT("Движение $") LCD_STR_DEGREE; // Move $(LCD_STR_DEGREE) + LSTR MSG_SPEED = _UxGT("Скорость"); // Speed + LSTR MSG_MESH_Z_OFFSET = _UxGT("Z стола"); // Bed Z + LSTR MSG_NOZZLE = _UxGT("Сопло, ") LCD_STR_DEGREE _UxGT("C"); // Nozzle + LSTR MSG_NOZZLE_N = _UxGT("Сопло ~"); // Nozzle ~ + LSTR MSG_BED = _UxGT("Стол, ") LCD_STR_DEGREE _UxGT("C"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("Кулер"); // Fan Speed + LSTR MSG_FAN_SPEED_N = _UxGT("Кулер ~"); // Fan Speed ~ + LSTR MSG_FLOW = _UxGT("Поток"); // Flow + LSTR MSG_FLOW_N = _UxGT("Поток ~"); // Flow ~ + LSTR MSG_CONTROL = _UxGT("Настройки"); // Control + LSTR MSG_AUTOTEMP = _UxGT("Автотемпература"); // Autotemp + LSTR MSG_SELECT_E = _UxGT("Выбор *"); // Select * + LSTR MSG_ACC = _UxGT("Ускорение"); // Accel + LSTR MSG_VTRAV_MIN = _UxGT("Перемещение мин"); // Min Travel Speed + LSTR MSG_ACCELERATION = _UxGT("Ускорение, мм/с2"); // Acceleration + LSTR MSG_AMAX_A = _UxGT("Ускор.макс ") STR_A; // Max (STR_A) Accel + LSTR MSG_AMAX_B = _UxGT("Ускор.макс ") STR_B; // Max (STR_B) Accel + LSTR MSG_AMAX_C = _UxGT("Ускор.макс ") STR_C; // Max (STR_C) Accel + LSTR MSG_AMAX_N = _UxGT("Ускор.макс @"); // Max @ Accel + LSTR MSG_AMAX_E = _UxGT("Ускор.макс E"); // Max E Accel + LSTR MSG_AMAX_EN = _UxGT("Ускор.макс *"); // Max * Accel + LSTR MSG_A_RETRACT = _UxGT("Ускор.втягив."); // Retract Accel + LSTR MSG_A_TRAVEL = _UxGT("Ускор.путеш."); // Travel Accel + LSTR MSG_STEPS_PER_MM = _UxGT("Шагов/мм"); // Steps/mm + LSTR MSG_A_STEPS = STR_A _UxGT(" шаг/мм"); // (STR_A) Steps/mm + LSTR MSG_B_STEPS = STR_B _UxGT(" шаг/мм"); // (STR_B) Steps/mm + LSTR MSG_C_STEPS = STR_C _UxGT(" шаг/мм"); // (STR_C) Steps/mm + LSTR MSG_N_STEPS = _UxGT("@ шаг/мм"); // @ steps/mm + LSTR MSG_E_STEPS = _UxGT("E шаг/мм"); // E steps/mm + LSTR MSG_EN_STEPS = _UxGT("* шаг/мм"); // * Steps/mm + LSTR MSG_TEMPERATURE = _UxGT("Температура"); // Temperature + LSTR MSG_MOTION = _UxGT("Движение"); // Motion + LSTR MSG_FILAMENT = _UxGT("Филамент"); // Filament + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E в мм") SUPERSCRIPT_THREE; // E in mm(SUPERSCRIPT_THREE) + LSTR MSG_FILAMENT_DIAM = _UxGT("Диам. филам."); // Fil. Dia. + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Диам. филам. *"); // Fil. Dia. * + LSTR MSG_CONTRAST = _UxGT("Контраст экрана"); // LCD Contrast + LSTR MSG_STORE_EEPROM = _UxGT("Сохранить настройки"); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("Загрузить настройки"); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("На базовые парам."); // Restore Defaults + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT(" Обновить"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT("Главный экран"); // Info Screen + LSTR MSG_PREPARE = _UxGT("Подготовить"); // Prepare + LSTR MSG_TUNE = _UxGT("Настроить"); // Tune + LSTR MSG_PAUSE_PRINT = _UxGT("Пауза печати"); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("Продолжить печать"); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("Остановить печать"); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("Печать с SD карты"); // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = _UxGT("Нет SD карты"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_DWELL = _UxGT("Сон..."); // Sleep... + LSTR MSG_USERWAIT = _UxGT("Продолжить..."); // Click to Resume... + LSTR MSG_PRINT_ABORTED = _UxGT("Печать отменена"); // Print Aborted + LSTR MSG_NO_MOVE = _UxGT("Нет движения."); // No Move. + LSTR MSG_KILLED = _UxGT("УБИТО. "); // KILLED. + LSTR MSG_STOPPED = _UxGT("ОСТАНОВЛЕНО. "); // STOPPED. + LSTR MSG_CONTROL_RETRACT = _UxGT("Откат, мм"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Откат смены,мм"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACTF = _UxGT("Втягивание V"); // Retract V + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Подскок Z, мм"); // Hop mm + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Возврат, мм"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Возвр.смены,мм"); // S Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Возврат V"); // Unretract V + LSTR MSG_AUTORETRACT = _UxGT("Автооткат"); // Auto-Retract + LSTR MSG_FILAMENTCHANGE = _UxGT("Смена филамента"); // Change Filament + LSTR MSG_FILAMENTCHANGE_E = _UxGT("Смена филамента *"); // Change * Filament + LSTR MSG_ATTACH_MEDIA = _UxGT("Установить SD карту"); // Attach (MEDIA_TYPE_EN) + LSTR MSG_ATTACH_SD = _UxGT("Установить SD карту"); // Attach SD Card + LSTR MSG_ATTACH_USB = _UxGT("Монтировать USB"); // Attach USB Drive + LSTR MSG_CHANGE_MEDIA = _UxGT("Сменить SD карту"); // Refresh (MEDIA_TYPE_EN) + LSTR MSG_RUN_AUTOFILES = _UxGT("Автостарт"); // Run Autofiles + LSTR MSG_ZPROBE_OUT = _UxGT("Z-зонд вне стола"); // Z Probe Past Bed + LSTR MSG_BLTOUCH_RESET = _UxGT("Сброс BLTouch"); // Reset + LSTR MSG_ZPROBE_XOFFSET = _UxGT("Смещение X"); // Probe X Offset + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Смещение Y"); // Probe Y Offset + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Смещение Z"); // Probe Z Offset + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Смещение @"); // Probe @ Offset + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Шаг Z смещения"); // Babystep Probe Z + LSTR MSG_BABYSTEP_X = _UxGT("Микрошаг X"); // Babystep X + LSTR MSG_BABYSTEP_Y = _UxGT("Микрошаг Y"); // Babystep Y + LSTR MSG_BABYSTEP_Z = _UxGT("Микрошаг Z"); // Babystep Z + LSTR MSG_BABYSTEP_N = _UxGT("Микрошаг @"); // Babystep @ + LSTR MSG_ENDSTOP_ABORT = _UxGT("Сработал концевик"); // Endstop Abort + LSTR MSG_ERR_HEATING_FAILED = _UxGT("Разогрев не удался"); // Heating Failed + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Ошибка: Т контр."); // Err: REDUNDANT TEMP + LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("УТЕЧКА ТЕМПЕРАТУРЫ"); // THERMAL RUNAWAY + LSTR MSG_ERR_MAXTEMP = _UxGT("Ошибка: Т макс."); // Err: MAXTEMP + LSTR MSG_ERR_MINTEMP = _UxGT("Ошибка: Т мин."); // Err: MINTEMP + LSTR MSG_HALTED = _UxGT("ПРИНТЕР ОСТАНОВЛЕН"); // PRINTER HALTED + LSTR MSG_PLEASE_RESET = _UxGT("Сделайте сброс"); // Please Reset + LSTR MSG_HEATING = _UxGT("Нагрев..."); // Heating... + LSTR MSG_BED_HEATING = _UxGT("Нагрев стола..."); // Bed Heating... + LSTR MSG_DELTA_CALIBRATE = _UxGT("Калибровка дельты"); // Delta Calibration + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Калибровать X"); // Calibrate X + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Калибровать Y"); // Calibrate Y + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Калибровать Z"); // Calibrate Z + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Калибровать центр"); // Calibrate Center + LSTR MSG_INFO_MENU = _UxGT("О принтере"); // About Printer + LSTR MSG_INFO_PRINTER_MENU = _UxGT("Данные принтера"); // Printer Info + LSTR MSG_INFO_STATS_MENU = _UxGT("Статистика принтера"); // Stats + LSTR MSG_INFO_BOARD_MENU = _UxGT("Данные платы"); // Board Info + LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Термисторы"); // Thermistors + LSTR MSG_INFO_EXTRUDERS = _UxGT("Экструдеры"); // Extruders + LSTR MSG_INFO_BAUDRATE = _UxGT("Скорость,БОД"); // Baud + LSTR MSG_INFO_PROTOCOL = _UxGT("Протокол"); // Protocol + LSTR MSG_CASE_LIGHT = _UxGT("Подсветка корпуса"); // Case Light + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Напечатано"); // Prints + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Завершено"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Общее время"); // Total + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Наидольшее"); // Longest + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Выдавлено"); // Extruded + LSTR MSG_INFO_MIN_TEMP = _UxGT("Мин. ") LCD_STR_THERMOMETER; // Min Temp + LSTR MSG_INFO_MAX_TEMP = _UxGT("Макс. ") LCD_STR_THERMOMETER; // Max Temp + LSTR MSG_INFO_PSU = _UxGT("БП"); // PSU + LSTR MSG_DRIVE_STRENGTH = _UxGT("Сила привода"); // Drive Strength + LSTR MSG_DAC_EEPROM_WRITE = _UxGT("Запись DAC в EEPROM"); // DAC EEPROM Write + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Возобновить печать"); // Continue + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Ожидайте...")); // |Please wait... + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Вставь и нажми")); // |Insert and Click + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Выгрузка...")); // |Ejecting... + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Загрузка...")); // |Loading... + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Возобновление...")); // |Resuming... + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(", ") LCD_STR_DEGREE _UxGT("С мин"); // (LCD_STR_THERMOMETER) Min + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(", ") LCD_STR_DEGREE _UxGT("С макс"); // (LCD_STR_THERMOMETER) Max + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Фактор"); // (LCD_STR_THERMOMETER) Fact + LSTR MSG_LCD_ON = _UxGT("Вкл"); // On + LSTR MSG_LCD_OFF = _UxGT("Выкл"); // Off + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("НЕВЕРНЫЙ ПРИНТЕР"); // INCORRECT PRINTER + LSTR MSG_DEBUG_MENU = _UxGT("Меню отладки"); // Debug Menu + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Тест индикатора"); // Progress Bar Test + LSTR MSG_MOVING = _UxGT("Движемся..."); // Moving... + LSTR MSG_FREE_XY = _UxGT("Освободить XY"); // Free XY + LSTR MSG_HOME_FIRST = _UxGT("Сначала паркуй %s"); // Home %s First + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Нагрев...")); // |Heating... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Нагреть сопло")); // |Click to heat + LSTR MSG_YES = _UxGT("Да"); // YES + LSTR MSG_NO = _UxGT("Нет"); // NO + LSTR MSG_BACK = _UxGT("Назад"); // Back + LSTR MSG_MEDIA_ABORTING = _UxGT("Прерывание..."); // Aborting... + LSTR MSG_MEDIA_READ_ERROR = _UxGT("Ошибка чтения"); // (MEDIA_TYPE_EN) read error + LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB диск удалён"); // USB device removed + LSTR MSG_USB_FD_USB_FAILED = _UxGT("Ошибка USB диска"); // USB start failed + LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Прогр. концевики"); // Soft Endstops + LSTR MSG_ADVANCED_SETTINGS = _UxGT("Расшир. настройки"); // Advanced Settings + LSTR MSG_CONFIGURATION = _UxGT("Конфигурация"); // Configuration + LSTR MSG_AUTO_Z_ALIGN = _UxGT("Авто-выравнивание Z"); // Auto Z-Align + LSTR MSG_Z_FADE_HEIGHT = _UxGT("Лимит выранивания"); // Fade Height + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Нагрев Свой"); // Preheat Custom + LSTR MSG_LASER_MENU = _UxGT("Управление лазером"); // Laser Control + LSTR MSG_LASER_POWER = _UxGT("Мощн. лазера"); // Laser Power + LSTR MSG_SPINDLE_MENU = _UxGT("Управл. шпинд."); // Spindle Control + LSTR MSG_SPINDLE_POWER = _UxGT("Мощн.шпинделя"); // Spindle Pwr + LSTR MSG_SPINDLE_REVERSE = _UxGT("Инверсия шпинделя"); // Spindle Reverse + LSTR MSG_BED_TRAMMING = _UxGT("Выровнять углы"); // Bed Tramming + LSTR MSG_NEXT_CORNER = _UxGT("Следующий угол"); // Next Corner + LSTR MSG_MESH_EDITOR = _UxGT("Смещение Z"); // Mesh Editor + LSTR MSG_EDIT_MESH = _UxGT("Редактировать сетку"); // Edit Mesh + LSTR MSG_EDITING_STOPPED = _UxGT("Правка окончена"); // Mesh Editing Stopped + LSTR MSG_PROBING_POINT = _UxGT("Точка сетки"); // Probing Point + LSTR MSG_MESH_X = _UxGT("Индекс X"); // Index X + LSTR MSG_MESH_Y = _UxGT("Индекс Y"); // Index Y + LSTR MSG_MESH_EDIT_Z = _UxGT("Значение Z"); // Z Value + LSTR MSG_CUSTOM_COMMANDS = _UxGT("Свои команды"); // Custom Commands + LSTR MSG_M48_TEST = _UxGT("M48 тест Z-зонда"); // M48 Probe Test + LSTR MSG_M48_POINT = _UxGT("M48 точка"); // M48 Point + LSTR MSG_M48_DEVIATION = _UxGT("Отклонение"); // Deviation + LSTR MSG_IDEX_MENU = _UxGT("Меню IDEX"); // IDEX Mode + LSTR MSG_OFFSETS_MENU = _UxGT("Размещение сопел"); // Tool Offsets + LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Авто парковка"); // Auto-Park + LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Размножение"); // Duplication + LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Зеркальная копия"); // Mirrored Copy + LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Полный контроль"); // Full Control + LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2-е сопло Z"); // 2nd Nozzle Z + LSTR MSG_HOTEND_OFFSET_N = _UxGT("2-е сопло @"); // 2nd Nozzle @ + LSTR MSG_UBL_DOING_G29 = _UxGT("Выполняем G29"); // Doing G29 + LSTR MSG_UBL_TOOLS = _UxGT("Инструменты UBL"); // UBL Tools + LSTR MSG_LCD_TILTING_MESH = _UxGT("Точка разворота"); // Tilting Point + LSTR MSG_UBL_MANUAL_MESH = _UxGT("Ручной ввод сетки"); // Manually Build Mesh + LSTR MSG_UBL_BC_INSERT = _UxGT("Разм.шайбу, измерить"); // Place Shim & Measure + LSTR MSG_UBL_BC_INSERT2 = _UxGT("Измерение"); // Measure + LSTR MSG_UBL_BC_REMOVE = _UxGT("Убрать, измер. стол"); // Remove & Measure Bed + LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Двигаемся дальше"); // Moving to next + LSTR MSG_UBL_SET_TEMP_BED = LCD_STR_THERMOMETER _UxGT(" стола, ") LCD_STR_DEGREE _UxGT("C"); // Bed Temp + LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Своя ") LCD_STR_THERMOMETER _UxGT(" стола,") LCD_STR_DEGREE _UxGT("C"); // Bed Temp + LSTR MSG_UBL_SET_TEMP_HOTEND = LCD_STR_THERMOMETER _UxGT(" сопла, ") LCD_STR_DEGREE _UxGT("C"); // Hotend Temp + LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Своя ") LCD_STR_THERMOMETER _UxGT(" сопла,") LCD_STR_DEGREE _UxGT("C"); // Hotend Temp + LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Править свою сетку"); // Edit Custom Mesh + LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Точная правка сетки"); // Fine Tuning Mesh + LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Правка завершена"); // Done Editing Mesh + LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Построить свою"); // Build Custom Mesh + LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Построить сетку"); // Build Mesh + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Построить сетку $"); // Build Mesh ($) + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Провер. сетку $"); // Validate Mesh ($) + LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Строить холод.сетку"); // Build Cold Mesh + LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Правка высоты сетки"); // Adjust Mesh Height + LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Высота"); // Height Amount + LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Проверить сетку"); // Validate Mesh + LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Провер. свою сетку"); // Validate Custom Mesh + LSTR MSG_G26_HEATING_BED = _UxGT("G26 нагрев стола"); // G26 Heating Bed + LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 нагрев сопла"); // G26 Heating Nozzle + LSTR MSG_G26_MANUAL_PRIME = _UxGT("Ручная прочистка"); // Manual priming... + LSTR MSG_G26_FIXED_LENGTH = _UxGT("Прочистка фикс.длины"); // Fixed Length Prime + LSTR MSG_G26_PRIME_DONE = _UxGT("Прочистка окончена"); // Done Priming + LSTR MSG_G26_CANCELED = _UxGT("G26 завершена"); // G26 Canceled + LSTR MSG_G26_LEAVING = _UxGT("Выйти из G26"); // Leaving G26 + LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Продолжить сетку"); // Continue Bed Mesh + LSTR MSG_UBL_MESH_LEVELING = _UxGT("Выравнивание сетки"); // Mesh Leveling + LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-точечное выравн."); // 3-Point Leveling + LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Выравнивание сеткой"); // Grid Mesh Leveling + LSTR MSG_UBL_MESH_LEVEL = _UxGT("Выровнять сетку"); // Level Mesh + LSTR MSG_UBL_SIDE_POINTS = _UxGT("Крайние точки"); // Side Points + LSTR MSG_UBL_MAP_TYPE = _UxGT("Тип карты"); // Map Type + LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Вывести карту сетки"); // Output Mesh Map + LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Вывести на хост"); // Output for Host + LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Вывести в CSV"); // Output for CSV + LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Сохранить снаружи"); // Off Printer Backup + LSTR MSG_UBL_INFO_UBL = _UxGT("Информация UBL"); // Output UBL Info + LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Кол-во заполн."); // Fill-in Amount + LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Ручное заполнение"); // Manual Fill-in + LSTR MSG_UBL_SMART_FILLIN = _UxGT("Умное заполнение"); // Smart Fill-in + LSTR MSG_UBL_FILLIN_MESH = _UxGT("Заполнить сетку"); // Fill-in Mesh + LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Аннулировать всё"); // Invalidate All + LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Аннулир. ближайшую"); // Invalidate Closest + LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Точно править всё"); // Fine Tune All + LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Настр. ближ. точку"); // Fine Tune Closest + LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Хранилище сеток"); // Mesh Storage + LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Слот памяти"); // Memory Slot + LSTR MSG_UBL_LOAD_MESH = _UxGT("Загрузить сетку"); // Load Bed Mesh + LSTR MSG_UBL_SAVE_MESH = _UxGT("Сохранить сетку"); // Save Bed Mesh + LSTR MSG_MESH_LOADED = _UxGT("Сетка %i загружена"); // Mesh %i Loaded + LSTR MSG_MESH_SAVED = _UxGT("Сетка %i сохранена"); // Mesh %i Saved + LSTR MSG_UBL_NO_STORAGE = _UxGT("Нет хранилища"); // No Storage + LSTR MSG_UBL_SAVE_ERROR = _UxGT("Ошибка: Сохран. UBL"); // UBL Save Error + LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Ошибка: Восстан.UBL"); // UBL Restore Error + LSTR MSG_UBL_Z_OFFSET = _UxGT("Смещение Z: "); // Z-Offset: + LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Смещение Z останов."); // Z-Offset Stopped + LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("Пошаговая настр. UBL"); // Step-By-Step UBL + LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Строить холодную"); // 1. Build Cold Mesh + LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2.Умное заполнение"); // 2. Smart Fill-in + LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Проверить сетку"); // 3. Validate Mesh + LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Точно настр. всё"); // 4. Fine Tune All + LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Проверить сетку"); // 5. Validate Mesh + LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Точно настр. всё"); // 6. Fine Tune All + LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Сохранить сетку"); // 7. Save Bed Mesh + LSTR MSG_LED_CONTROL = _UxGT("Настройка подсветки"); // LED Control + LSTR MSG_LIGHTS = _UxGT("Подсветка"); // Lights + LSTR MSG_LIGHT_N = _UxGT("Свет #{"); // Light #{ + LSTR MSG_LED_PRESETS = _UxGT("Предустановки света"); // Light Presets + LSTR MSG_SET_LEDS_RED = _UxGT("Красный"); // Red + LSTR MSG_SET_LEDS_ORANGE = _UxGT("Оранжевый"); // Orange + LSTR MSG_SET_LEDS_YELLOW = _UxGT("Жёлтый"); // Yellow + LSTR MSG_SET_LEDS_GREEN = _UxGT("Зелёный"); // Green + LSTR MSG_SET_LEDS_BLUE = _UxGT("Синий"); // Blue + LSTR MSG_SET_LEDS_INDIGO = _UxGT("Индиго"); // Indigo + LSTR MSG_SET_LEDS_VIOLET = _UxGT("Фиолетовый"); // Violet + LSTR MSG_SET_LEDS_WHITE = _UxGT("Белый"); // White + LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Свет по умолчанию"); // Default + LSTR MSG_CUSTOM_LEDS = _UxGT("Свой цвет подсветки"); // Custom Lights + LSTR MSG_INTENSITY_R = _UxGT("Уровень красного"); // Red Intensity + LSTR MSG_INTENSITY_G = _UxGT("Уровень зелёного"); // Green Intensity + LSTR MSG_INTENSITY_B = _UxGT("Уровень синего"); // Blue Intensity + LSTR MSG_INTENSITY_W = _UxGT("Уровень белого"); // White Intensity + LSTR MSG_LED_BRIGHTNESS = _UxGT("Яркость"); // Brightness + LSTR MSG_HOTEND_TOO_COLD = _UxGT("Сопло не нагрето"); // Hotend too cold + LSTR MSG_CHAMBER = _UxGT("Камера,") LCD_STR_DEGREE _UxGT("C"); // Enclosure + LSTR MSG_STORED_FAN_N = _UxGT("Сохранённый кулер ~"); // Stored Fan ~ + LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Дополн. кулер"); // Extra Fan Speed + LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Дополн. кулер ~"); // Extra Fan Speed ~ + LSTR MSG_PID_AUTOTUNE = _UxGT("Автокалибровка PID"); // PID Autotune + LSTR MSG_PID_AUTOTUNE_E = _UxGT("Автокалибр. PID *"); // Autotune * PID + LSTR MSG_JERK = _UxGT("Рывок"); // Jerk + LSTR MSG_VA_JERK = _UxGT("V") STR_A _UxGT("-рывок"); // Max (STR_A) Jerk + LSTR MSG_VB_JERK = _UxGT("V") STR_B _UxGT("-рывок"); // Max (STR_B) Jerk + LSTR MSG_VC_JERK = _UxGT("V") STR_C _UxGT("-рывок"); // Max (STR_C) Jerk + LSTR MSG_VN_JERK = _UxGT("V@-рывок"); // Max @ Jerk + LSTR MSG_VE_JERK = _UxGT("Ve-рывок"); // Max E Jerk + LSTR MSG_JUNCTION_DEVIATION = _UxGT("Отклон.угла"); // Junction Dev + LSTR MSG_MAX_SPEED = _UxGT("Скорость, мм/с"); // Max Speed (mm/s) + LSTR MSG_VMAX_A = _UxGT("Скор.макс ") STR_A; // Max (STR_A) Speed + LSTR MSG_VMAX_B = _UxGT("Скор.макс ") STR_B; // Max (STR_B) Speed + LSTR MSG_VMAX_C = _UxGT("Скор.макс ") STR_C; // Max (STR_C) Speed + LSTR MSG_VMAX_N = _UxGT("Скор.макс @"); // Max @ Speed + LSTR MSG_VMAX_E = _UxGT("Скор.макс E"); // Max E Speed + LSTR MSG_VMAX_EN = _UxGT("Скор.макс *"); // Max * Speed + LSTR MSG_VMIN = _UxGT("Скор.мин"); // Min Velocity + LSTR MSG_FILAMENT_UNLOAD = _UxGT("Загрузка, мм"); // Unload mm + LSTR MSG_FILAMENT_LOAD = _UxGT("Выгрузка, мм"); // Load mm + LSTR MSG_ADVANCE_K = _UxGT("К-фактор LA"); // Advance K + LSTR MSG_ADVANCE_K_E = _UxGT("К-фактор LA *"); // Advance K * + LSTR MSG_INIT_EEPROM = _UxGT("Инициализ. EEPROM"); // Initialize EEPROM + LSTR MSG_MEDIA_UPDATE = _UxGT("Обновление прошивки"); // (MEDIA_TYPE_EN) Update + LSTR MSG_RESET_PRINTER = _UxGT("Сброс принтера"); // Reset Printer + LSTR MSG_START_PRINT = _UxGT("Запустить печать"); // Start Print + LSTR MSG_BUTTON_NEXT = _UxGT("Дальше"); // Next + LSTR MSG_BUTTON_INIT = _UxGT("Иниц-я"); // Init + LSTR MSG_BUTTON_STOP = _UxGT("Стоп"); // Stop + LSTR MSG_BUTTON_PRINT = _UxGT("Печать"); // Print + LSTR MSG_BUTTON_RESET = _UxGT("Сброс"); // Reset + LSTR MSG_BUTTON_CANCEL = _UxGT("Отмена"); // Cancel + LSTR MSG_BUTTON_DONE = _UxGT("Готово"); // Done + LSTR MSG_BUTTON_BACK = _UxGT("Назад"); // Back + LSTR MSG_BUTTON_PROCEED = _UxGT("Продолжить"); // Proceed + LSTR MSG_PRINTING_OBJECT = _UxGT("Печать объекта"); // Print Obj + LSTR MSG_CANCEL_OBJECT = _UxGT("Завершить объект"); // Cancel Obj + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Завершить объект {"); // Cancel Obj { + LSTR MSG_OUTAGE_RECOVERY = _UxGT("Восстановение сбоя"); // Power Outage + LSTR MSG_PRINT_PAUSED = _UxGT("Печать на паузе"); // Print Paused + LSTR MSG_PRINTING = _UxGT("Печать..."); // Printing... + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("Возвр.смены V"); // S UnRet V + LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Длина замены"); // Swap Length + LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Длина прочистки"); // Purge Length + LSTR MSG_TOOL_CHANGE = _UxGT("Смена сопел"); // Tool Change + LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Поднятие по Z"); // Z Raise + LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Началь.скор."); // Prime Speed + LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Скор.отката"); // Retract Speed + LSTR MSG_NOZZLE_STANDBY = _UxGT("Сопло ожидает"); // Nozzle Standby + LSTR MSG_FILAMENTLOAD = _UxGT("Загрузить филамент"); // Load Filament + LSTR MSG_FILAMENTLOAD_E = _UxGT("Подать филамент *"); // Load * Filament + LSTR MSG_FILAMENTUNLOAD = _UxGT("Выгрузить филамент"); // Unload Filament + LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Убрать филамент *"); // Unload * Filament + LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Выгрузить всё"); // Unload All + LSTR MSG_RELEASE_MEDIA = _UxGT("Освободить SD карту"); // Release (MEDIA_TYPE_EN) + LSTR MSG_SKEW_FACTOR = _UxGT("Фактор перекоса"); // Skew Factor + LSTR MSG_BLTOUCH = _UxGT("Z-зонд BLTouch"); // BLTouch + LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Тестирование BLTouch"); // Self-Test + LSTR MSG_BLTOUCH_STOW = _UxGT("Втянуть BLTouch"); // Stow + LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Выдвинуть BLTouch"); // Deploy + LSTR MSG_BLTOUCH_SW_MODE = _UxGT("Режим SW"); // SW-Mode + LSTR MSG_BLTOUCH_5V_MODE = _UxGT("Режим 5V"); // 5V-Mode + LSTR MSG_BLTOUCH_OD_MODE = _UxGT("Режим OD"); // OD-Mode + LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("Сохранить режим"); // Mode-Store + LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Установить в 5V"); // Set BLTouch to 5V + LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Установить в OD"); // Set BLTouch to OD + LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Текущий режим"); // Report Drain + LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("ОПАСНОСТЬ: Неправильные параметры приводят к повреждениям! Продолжить?"); // DANGER: Bad settings can cause damage! Proceed anyway? + LSTR MSG_TOUCHMI_PROBE = _UxGT("Z-Зонд TouchMI"); // TouchMI + LSTR MSG_TOUCHMI_INIT = _UxGT("Инициализация"); // Init TouchMI + LSTR MSG_TOUCHMI_ZTEST = _UxGT("Тест Z-смещения"); // Z Offset Test + LSTR MSG_TOUCHMI_SAVE = _UxGT("Сохранить"); // Save + LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("Установить TouchMI"); // Deploy TouchMI + LSTR MSG_MANUAL_DEPLOY = _UxGT("Выдвинуть зонд"); // Deploy Z-Probe + LSTR MSG_MANUAL_STOW = _UxGT("Втянуть зонд"); // Stow Z-Probe + LSTR MSG_BABYSTEP_TOTAL = _UxGT("Суммарно"); // Total + LSTR MSG_COOLING = _UxGT("Охлаждение..."); // Cooling... + LSTR MSG_BED_COOLING = _UxGT("Охлаждение стола..."); // Bed Cooling... + LSTR MSG_CHAMBER_HEATING = _UxGT("Нагрев камеры..."); // Chamber Heating... + LSTR MSG_CHAMBER_COOLING = _UxGT("Охладжение камеры..."); // Chamber Cooling... + LSTR MSG_DELTA_SETTINGS = _UxGT("Настройки дельты"); // Delta Settings + LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Автокалибр. дельты"); // Auto Calibration + LSTR MSG_DELTA_DIAG_ROD = _UxGT("Стержень диаг."); // Diag Rod + LSTR MSG_DELTA_HEIGHT = _UxGT("Высота"); // Height + LSTR MSG_DELTA_RADIUS = _UxGT("Радиус"); // Radius + LSTR MSG_3POINT_LEVELING = _UxGT("3-точ. выравнив."); // 3-Point Leveling + LSTR MSG_LINEAR_LEVELING = _UxGT("Линейное выравн."); // Linear Leveling + LSTR MSG_BILINEAR_LEVELING = _UxGT("Билин. выравнив."); // Bilinear Leveling + LSTR MSG_UBL_LEVELING = _UxGT("Выравнивание UBL"); // Unified Bed Leveling + LSTR MSG_MESH_LEVELING = _UxGT("Выравнивание сеткой"); // Mesh Leveling + LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Контр.утечки Т:Выкл"); // Runaway Watch: OFF + LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Контр.утечки Т:Вкл"); // Runaway Watch: ON + LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Яркость подсветки"); // Light Brightness + LSTR MSG_DAC_PERCENT_N = _UxGT("@ Привод, %"); // @ Driver % + LSTR MSG_ERROR_TMC = _UxGT("СБОЙ СВЯЗИ С TMC"); // TMC CONNECTION ERROR + LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("ЗАМЕНА ФИЛАМЕНТА"); // FILAMENT CHANGE + LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("ПЕЧАТЬ НА ПАУЗЕ"); // PRINT PAUSED + LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("ЗАГРУЗКА ФИЛАМЕНТА"); // LOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("ВЫГРУЗКА ФИЛАМЕНТА"); // UNLOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("ОПЦИИ ПРОДОЛЖЕНИЯ:"); // RESUME OPTIONS: + LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Выдавить ещё"); // Purge more + LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Сопла: "); // Nozzle: + LSTR MSG_RUNOUT_SENSOR = _UxGT("Датчик оконч.филам."); // Runout Sensor + LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("До конца, мм"); // Runout Dist mm + LSTR MSG_KILL_HOMING_FAILED = _UxGT("Ошибка парковки"); // Homing Failed + LSTR MSG_LCD_PROBING_FAILED = _UxGT("Ошибка зондирования"); // Probing Failed + LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("ВЫБИРЕТЕ ФИЛАМЕНТ"); // CHOOSE FILAMENT + LSTR MSG_MMU2_MENU = _UxGT("Настройки MMU"); // MMU + LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("Обнови прошивку MMU"); // Update MMU Firmware! + LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU требует внимания"); // MMU Needs Attention. + LSTR MSG_MMU2_RESUME = _UxGT("Продолжить печать"); // Resume + LSTR MSG_MMU2_RESUMING = _UxGT("Продолжение..."); // MMU Resuming... + LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("Загрузить филамент"); // Load + LSTR MSG_MMU2_LOAD_ALL = _UxGT("Загрузить всё"); // Load All + LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Загрузить в сопло"); // Load to Nozzle + LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("Извлечь филамент"); // Eject + LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("Извлечь филамент ~"); // Eject ~ + LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Выгрузить филамент"); // Unload + LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Загрузка %i..."); // Filament %i Load... + LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Извлеч.филамента..."); // Filament %i Eject... + LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Выгрузка...."); // Filament %i Unload... + LSTR MSG_MMU2_ALL = _UxGT("Всё"); // All + LSTR MSG_MMU2_FILAMENT_N = _UxGT("Филамент ~"); // Filament ~ + LSTR MSG_MMU2_RESET = _UxGT("Перезапуск MMU"); // Reset MMU + LSTR MSG_MMU2_RESETTING = _UxGT("Перезапуск MMU..."); // Resetting... + LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Удалите и нажмите"); // Eject Recover + LSTR MSG_MIX = _UxGT("Смешив."); // Mix + LSTR MSG_MIX_COMPONENT_N = _UxGT("Компонент {"); // Component { + LSTR MSG_MIXER = _UxGT("Смеситель"); // Mixer + LSTR MSG_GRADIENT = _UxGT("Градиент"); // Gradient + LSTR MSG_FULL_GRADIENT = _UxGT("Полный градиент"); // Full Gradient + LSTR MSG_TOGGLE_MIX = _UxGT("Перекл. смешивание"); // Toggle Mix + LSTR MSG_CYCLE_MIX = _UxGT("Цикличное смешивание"); // Cycle Mix + LSTR MSG_GRADIENT_MIX = _UxGT("Градиент смешивания"); // Gradient Mix + LSTR MSG_REVERSE_GRADIENT = _UxGT("Сменить градиент"); // Reverse Gradient + LSTR MSG_ACTIVE_VTOOL = _UxGT("Актив.В-инструм."); // Active V-tool + LSTR MSG_START_VTOOL = _UxGT("В-инструм.нач."); // Start V-tool + LSTR MSG_END_VTOOL = _UxGT("В-инструм.кон."); // End V-tool + LSTR MSG_GRADIENT_ALIAS = _UxGT("Псевдоним В-инстр."); // Alias V-tool + LSTR MSG_RESET_VTOOLS = _UxGT("Сброс В-инструм."); // Reset V-tools + LSTR MSG_COMMIT_VTOOL = _UxGT("Смешать В-инструм."); // Commit V-tool Mix + LSTR MSG_VTOOLS_RESET = _UxGT("В-инструм. сброшены"); // V-tools Were Reset + LSTR MSG_START_Z = _UxGT("Начало Z"); // Start Z: + LSTR MSG_END_Z = _UxGT(" Конец Z"); // End Z: + LSTR MSG_GAMES = _UxGT("Игры"); // Games + LSTR MSG_BRICKOUT = _UxGT("Brickout"); // Brickout + LSTR MSG_INVADERS = _UxGT("Invaders"); // Invaders + LSTR MSG_SNAKE = _UxGT("Sn4k3"); // Sn4k3 + LSTR MSG_MAZE = _UxGT("Maze"); // Maze + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Продолжить печать")); // |Click to continue + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Парковка...")); // |Parking... + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Прочистка...")); // |Purging... + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Завершить прочистку")); // |Click to finish + LSTR MSG_TMC_DRIVERS = _UxGT("Драйвера TMC"); // TMC Drivers + LSTR MSG_TMC_CURRENT = _UxGT("Ток двигателей"); // Driver Current + LSTR MSG_TMC_HYBRID_THRS = _UxGT("Гибридный режим"); // Hybrid Threshold + LSTR MSG_TMC_HOMING_THRS = _UxGT("Чувствительность"); // Sensorless Homing + LSTR MSG_TMC_STEPPING_MODE = _UxGT("Режим драйвера"); // Stepping Mode + LSTR MSG_TMC_STEALTHCHOP = _UxGT("Тихий режим вкл"); // StealthChop + LSTR MSG_SERVICE_RESET = _UxGT("Сброс"); // Reset + LSTR MSG_SERVICE_IN = _UxGT(" в:"); // in: + LSTR MSG_BACKLASH = _UxGT("Люфт"); // Backlash + LSTR MSG_BACKLASH_CORRECTION = _UxGT("Исправление"); // Correction + LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Сглаживание"); // Smoothing + LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Сбой инициализ. SD"); // (MEDIA_TYPE_EN) Init Fail + LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Переполн. вызова"); // Subcall Overflow + LSTR MSG_AUTO_HOME_N = _UxGT("Парковка @"); // Home @ + LSTR MSG_FILAMENT_MAN = _UxGT("Управл.филаментом"); // Filament Management + LSTR MSG_MANUAL_LEVELING = _UxGT("Ручное выравнивание"); // Manual Leveling + LSTR MSG_TRAM_FL = _UxGT("Передний левый"); // Front Left + LSTR MSG_TRAM_FR = _UxGT("Передний правый"); // Front Right + LSTR MSG_TRAM_C = _UxGT("Центр"); // Center + LSTR MSG_TRAM_BL = _UxGT("Задний левый"); // Back Left + LSTR MSG_TRAM_BR = _UxGT("Задний правый"); // Back Right + LSTR MSG_MANUAL_MESH = _UxGT("Сетка вручную"); // Manual Mesh + LSTR MSG_AUTO_MESH = _UxGT("Сетка автоматически"); // Auto Build Mesh + LSTR MSG_ITERATION = _UxGT("G34 Итерация: %i"); // G34 Iteration: %i + LSTR MSG_DECREASING_ACCURACY = _UxGT("Уменьшение точности!"); // Accuracy Decreasing! + LSTR MSG_ACCURACY_ACHIEVED = _UxGT("Точность достигнута"); // Accuracy Achieved + LSTR MSG_TRAMMING_WIZARD = _UxGT("Помощник выравнив."); // Tramming Wizard + LSTR MSG_SELECT_ORIGIN = _UxGT("Выберите ноль"); // Select Origin + LSTR MSG_LAST_VALUE_SP = _UxGT("Послед. знач. "); // Last value + LSTR MSG_CUTTER_FREQUENCY = _UxGT("Частота"); // Frequency + LSTR MSG_LASER_TOGGLE = _UxGT("Переключ.лазер"); // Toggle Laser + LSTR MSG_LASER_EVAC_TOGGLE = _UxGT("Переключ. обдув"); // Toggle Blower + LSTR MSG_LASER_ASSIST_TOGGLE = _UxGT("Управление обдувом"); // Air Assist + LSTR MSG_LASER_PULSE_MS = _UxGT("Тест. имп. мс"); // Test Pulse ms + LSTR MSG_LASER_FIRE_PULSE = _UxGT("Импульс лазера"); // Fire Pulse + LSTR MSG_FLOWMETER_FAULT = _UxGT("Ошибка обдува"); // Coolant Flow Fault + LSTR MSG_SPINDLE_TOGGLE = _UxGT("Переключ.шпинд"); // Toggle Spindle + LSTR MSG_SPINDLE_EVAC_TOGGLE = _UxGT("Переключ. вакуум"); // Toggle Vacuum + LSTR MSG_SPINDLE_FORWARD = _UxGT("Шпиндель вперёд"); // Spindle Forward + LSTR MSG_BED_TRAMMING_MANUAL = _UxGT("Ручное выравнив."); // Manual Tramming + LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Вверх до сраб. зонда"); // Adjust bed until the probe triggers. + LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Углы в норме. Вырав."); // Corners within tolerance. Bed trammed. + LSTR MSG_BED_TRAMMING_GOOD_POINTS = _UxGT("Хорошие точки: "); // Good Points: + LSTR MSG_BED_TRAMMING_LAST_Z = _UxGT("Последняя Z: "); // Last Z: + LSTR MSG_MESH_VIEWER = _UxGT("Просмотр сетки"); // Mesh Viewer + LSTR MSG_MESH_VIEW = _UxGT("Смотреть сетку"); // View Mesh + LSTR MSG_NO_VALID_MESH = _UxGT("Нет годной сетки"); // No valid mesh + LSTR MSG_ACTIVATE_MESH = _UxGT("Включить сетку"); // Activate Leveling + LSTR MSG_MESH_INSET = _UxGT("Отступы сетки"); // Mesh Inset + LSTR MSG_MESH_MIN_X = _UxGT("Сетка X минимум"); // Mesh X Minimum + LSTR MSG_MESH_MAX_X = _UxGT("Сетка X максимум"); // Mesh X Maximum + LSTR MSG_MESH_MIN_Y = _UxGT("Сетка Y минимум"); // Mesh Y Minimum + LSTR MSG_MESH_MAX_Y = _UxGT("Сетка Y максимум"); // Mesh Y Maximum + LSTR MSG_MESH_AMAX = _UxGT("Максимальная зона"); // Maximize Area + LSTR MSG_MESH_CENTER = _UxGT("Центрировать зону"); // Center Area + LSTR MSG_MESH_CANCEL = _UxGT("Сетка отменена"); // Mesh cancelled + LSTR MSG_M48_OUT_OF_BOUNDS = _UxGT("Зонд за пределами"); // Probe out of bounds + LSTR MSG_IDEX_DUPE_GAP = _UxGT("Дублировать X-зазор"); // Duplicate X-Gap + LSTR MSG_UBL_TILT_MESH = _UxGT("Наколнить сетку"); // Tilt Mesh + LSTR MSG_UBL_TILTING_GRID = _UxGT("Величина наклона"); // Tilting Grid Size + LSTR MSG_UBL_MESH_TILTED = _UxGT("Сетка наклонена"); // Mesh Tilted + LSTR MSG_UBL_MESH_WIZARD = _UxGT("Мастер сеток UBL"); // UBL Mesh Wizard + LSTR MSG_UBL_MESH_FILLED = _UxGT("Попущенные точки заполнены"); // Missing Points Filled + LSTR MSG_UBL_MESH_INVALID = _UxGT("Негодная сетка"); // Invalid Mesh + LSTR MSG_UBL_INVALID_SLOT = _UxGT("Сперва выберите слот сетки"); // First Select a Mesh Slot + LSTR MSG_LED_CHANNEL_N = _UxGT("Канал {"); // Channel { + LSTR MSG_NEO2_PRESETS = _UxGT("Свет #2 предустан."); // Light #2 Presets + LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Яркость"); // Brightness + LSTR MSG_NOZZLE_PARKED = _UxGT("Сопло запарковано"); // Nozzle Parked + LSTR MSG_COOLER = _UxGT("Охлажд. лазера"); // Laser Coolant + LSTR MSG_COOLER_TOGGLE = _UxGT("Переключ. охл."); // Toggle Cooler + LSTR MSG_FLOWMETER_SAFETY = _UxGT("Безопас.потока"); // Flow Safety + LSTR MSG_LASER = _UxGT("Лазер"); // Laser + LSTR MSG_CONTROLLER_FAN = _UxGT("Кулер контроллера"); // Controller Fan + LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("Холостые обороты"); // Idle Speed + LSTR MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("Автовключение"); // Auto Mode + LSTR MSG_CONTROLLER_FAN_SPEED = _UxGT("Рабочие обороты"); // Active Speed + LSTR MSG_CONTROLLER_FAN_DURATION = _UxGT("Период простоя"); // Idle Period + LSTR MSG_PID_CYCLE = _UxGT("Циклы PID"); // PID Cycles + LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("Калибр.PID выполнена"); // PID tuning done + LSTR MSG_PID_AUTOTUNE_FAILED = _UxGT("Автонастройка PID не удалась!"); // Autotune failed! + LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Сбой калибровки! Неверный экструдер."); // Autotune failed! Bad extruder. + LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Сбой калибровки! Температура завышена."); // Autotune failed! Temperature too high. + LSTR MSG_PID_TIMEOUT = _UxGT("Сбой калибровки! Таймаут."); // Autotune failed! Timeout. + LSTR MSG_MPC_MEASURING_AMBIENT = _UxGT("Тест потери тепла"); // Testing heat loss + LSTR MSG_MPC_AUTOTUNE = _UxGT("Автонастройка MPC"); // MPC Autotune + LSTR MSG_MPC_EDIT = _UxGT("Изменить * MPC"); // Edit * MPC + LSTR MSG_MPC_POWER_E = _UxGT("Мощность *"); // Power * + LSTR MSG_MPC_BLOCK_HEAT_CAPACITY_E = _UxGT("Теплоёмк. *"); // Heat Cap. * + LSTR MSG_SENSOR_RESPONSIVENESS_E = _UxGT("Отклик датч. *"); // Sensor Resp. * + LSTR MSG_MPC_AMBIENT_XFER_COEFF_E = _UxGT("Коэфф.окруж *"); // Ambient Co. * + LSTR MSG_MPC_AMBIENT_XFER_COEFF_FAN_E = _UxGT("Коэфф.кулер *"); // Fan coeff. * + LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("Частота макс."); // XY Freq Limit + LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("Подача мин."); // Min FR Factor + LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("E огран.,мм") SUPERSCRIPT_THREE; // E Limit in mm(SUPERSCRIPT_THREE) + LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("E огран. *"); // E Limit * + LSTR MSG_BRIGHTNESS = _UxGT("Яркость LCD"); // LCD Brightness + LSTR MSG_SCREEN_TIMEOUT = _UxGT("Таймаут LCD (м)"); // LCD Timeout (m) + LSTR MSG_BRIGHTNESS_OFF = _UxGT("Выкл.подсветку"); // Backlight Off + LSTR MSG_ERR_EEPROM_CRC = _UxGT("Сбой EEPROM: CRC"); // Err: EEPROM CRC + LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Сбой EEPROM: размер"); // Err: EEPROM Size + LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Сбой EEPROM: версия"); // Err: EEPROM Version + LSTR MSG_SETTINGS_STORED = _UxGT("Параметры сохранены"); // Settings Stored + LSTR MSG_INFO_MACHINENAME = _UxGT("Название машины"); // Machine Name + LSTR MSG_INFO_SIZE = _UxGT("Размер"); // Size + LSTR MSG_INFO_FWVERSION = _UxGT("Версия прошивки"); // Firmware Version + LSTR MSG_INFO_BUILD = _UxGT("Дата сборки"); // Build Info + LSTR MSG_POWER_MONITOR = _UxGT("Монитор питания"); // Power monitor + LSTR MSG_CURRENT = _UxGT("Ток"); // Current + LSTR MSG_VOLTAGE = _UxGT("Напряжение"); // Voltage + LSTR MSG_POWER = _UxGT("Мощность"); // Power + LSTR MSG_BUTTON_IGNORE = _UxGT("Игнорир."); // Ignore + LSTR MSG_BUTTON_CONFIRM = _UxGT("Подтвердить"); // Confirm + LSTR MSG_BUTTON_CONTINUE = _UxGT("Продолжить"); // Continue + LSTR MSG_BUTTON_SKIP = _UxGT("Пропустить"); // Skip + LSTR MSG_BUTTON_INFO = _UxGT("Инфо"); // Info + LSTR MSG_BUTTON_LEVEL = _UxGT("Выровнять"); // Level + LSTR MSG_BUTTON_PAUSE = _UxGT("Пауза"); // Pause + LSTR MSG_BUTTON_RESUME = _UxGT("Продолжить"); // Resume + LSTR MSG_BUTTON_ADVANCED = _UxGT("Расширанные"); // Advanced + LSTR MSG_BUTTON_SAVE = _UxGT("Сохранить"); // Save + LSTR MSG_BUTTON_PURGE = _UxGT("Прочистить"); // Purge + LSTR MSG_PAUSING = _UxGT("Пауза..."); // Pausing... + LSTR MSG_ADVANCED_PAUSE = _UxGT("Расширенная пауза"); // Advanced Pause + LSTR MSG_HOST_START_PRINT = _UxGT("Старт с хоста"); // Host Start + LSTR MSG_END_LOOPS = _UxGT("Завершить петлю"); // End Loops + LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Продолжить печать"); // Continue Job + LSTR MSG_STOPPING = _UxGT("Остановка..."); // Stopping... + LSTR MSG_REMAINING_TIME = _UxGT("Осталось"); // Remaining + LSTR MSG_PRINT_DONE = _UxGT("Печать завершена"); // Print Done + LSTR MSG_PRINTER_KILLED = _UxGT("Принтер убит!"); // Printer killed! + LSTR MSG_TURN_OFF = _UxGT("Выключить принтер"); // Turn off now + LSTR MSG_FWRETRACT = _UxGT("Откат принтера"); // Firmware Retract + LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Доп. длина"); // Swap Extra + LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Парковать голову"); // Park Head + LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Скорость возврата"); // Recover Speed + LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Скорость кулера"); // Fan Speed + LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Время кулера"); // Fan Time + LSTR MSG_TOOL_MIGRATION_ON = _UxGT("Авто Вкл."); // Auto ON + LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("Авто Выкл."); // Auto OFF + LSTR MSG_TOOL_MIGRATION = _UxGT("Смена инструмента"); // Tool Migration + LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("Авто смена"); // Auto-migration + LSTR MSG_TOOL_MIGRATION_END = _UxGT("Последний экструдер"); // Last Extruder + LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("Замена на *"); // Migrate to * + LSTR MSG_BLTOUCH_SPEED_MODE = _UxGT("Высокая скорость"); // High Speed + LSTR MSG_ZPROBE_SETTINGS = _UxGT("Наторойки зонда"); // Probe Settings + LSTR MSG_ZPROBE_OFFSETS = _UxGT("Смещение Z-зонда"); // Probe Offsets + LSTR MSG_ZPROBE_MARGIN = _UxGT("Отступы зонда"); // Probe Margin + LSTR MSG_Z_FEED_RATE = _UxGT("Скорость Z"); // Z Feedrate + LSTR MSG_ENABLE_HS_MODE = _UxGT("Включить режим ВС"); // Enable HS mode + LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Двиг. сопло к столу"); // Move Nozzle to Bed + LSTR MSG_ERR_TEMP_MALFUNCTION = _UxGT("СБОЙ ТЕМПЕРАТУРЫ"); // TEMP MALFUNCTION + LSTR MSG_ERR_COOLING_FAILED = _UxGT("НЕ УДАЛОСЬ ОХЛАДИТЬ"); // Cooling Failed + LSTR MSG_PLEASE_WAIT = _UxGT("Ожидайте..."); // Please wait... + LSTR MSG_PREHEATING = _UxGT("Нагреваю..."); // Preheating... + LSTR MSG_PROBE_HEATING = _UxGT("Нагрев зонда..."); // Probe Heating... + LSTR MSG_PROBE_COOLING = _UxGT("Охлаждение зонда..."); // Probe Cooling... + LSTR MSG_LASER_COOLING = _UxGT("Охлаждение лазера..."); // Laser Cooling... + LSTR MSG_MESH_DONE = _UxGT("Зондиров. выполнено"); // Mesh probing done + LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Время прост.хот-а"); // Hotend Idle Timeout + LSTR MSG_FAN_SPEED_FAULT = _UxGT("Сбой скорости кулера"); // Fan speed fault + LSTR MSG_COLORS_GET = _UxGT("Получить цвет"); // Get Color + LSTR MSG_COLORS_SELECT = _UxGT("Выбрать цвета"); // Select Colors + LSTR MSG_COLORS_APPLIED = _UxGT("Цвета применены"); // Colors applied + LSTR MSG_COLORS_RED = _UxGT("Красный"); // Red + LSTR MSG_COLORS_GREEN = _UxGT("Зелёный"); // Green + LSTR MSG_COLORS_BLUE = _UxGT("Синий"); // Blue + LSTR MSG_COLORS_WHITE = _UxGT("Белый"); // White + LSTR MSG_UI_LANGUAGE = _UxGT("UI Language"); // UI Language + LSTR MSG_SOUND_ENABLE = _UxGT("Включить звук"); // Enable sound + LSTR MSG_LOCKSCREEN = _UxGT("Блокировать экран"); // Lock Screen + LSTR MSG_LOCKSCREEN_LOCKED = _UxGT("Принтер заблокирован,"); // Printer is Locked, + LSTR MSG_LOCKSCREEN_UNLOCK = _UxGT("Крутить для разблокировки."); // Scroll to unlock. + LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Ждите перезагрузки."); // Please wait for reboot. + LSTR MSG_PLEASE_PREHEAT = _UxGT("Нагрейте сопло."); // Please Preheat + LSTR MSG_FILAMENT_CHANGE_PURGE_CONTINUE = _UxGT("Прочистить или продолжить?"); // Purge or Continue? + LSTR MSG_EXTRUDER_MIN_TEMP = _UxGT("Миню темп. экструдера."); // Extruder Min Temp. + LSTR MSG_FANCHECK = _UxGT("Пров.тахометра кулера"); // Fan Tacho Check + LSTR MSG_BAD_PAGE = _UxGT("Плохая страница"); // Bad page index + LSTR MSG_BAD_PAGE_SPEED = _UxGT("Плохая скор.стран."); // Bad page speed + LSTR MSG_EDIT_PASSWORD = _UxGT("Редактировать пароль"); // Edit Password + LSTR MSG_LOGIN_REQUIRED = _UxGT("Нужен логин"); // Login Required + LSTR MSG_PASSWORD_SETTINGS = _UxGT("Настройки пароля"); // Password Settings + LSTR MSG_ENTER_DIGIT = _UxGT("Введите цифру"); // Enter Digit + LSTR MSG_CHANGE_PASSWORD = _UxGT("Смените пароль"); // Set/Edit Password + LSTR MSG_REMOVE_PASSWORD = _UxGT("Удалить пароль"); // Remove Password + LSTR MSG_PASSWORD_SET = _UxGT("Пароль это "); // Password is + LSTR MSG_START_OVER = _UxGT("Старт через"); // Start Over + LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Не забудь сохранить"); // Remember to Save! + LSTR MSG_PASSWORD_REMOVED = _UxGT("Пароль удалён"); // Password Removed + LSTR MSG_LEVEL_X_AXIS = _UxGT("Выровнять ось X"); // Level X Axis + LSTR MSG_AUTO_CALIBRATE = _UxGT("Автокалибровка"); // Auto Calibrate + LSTR MSG_HEATER_TIMEOUT = _UxGT("Таймаут нагрева"); // Heater Timeout + LSTR MSG_REHEAT = _UxGT("Возобновить нагрев"); // Reheat + LSTR MSG_REHEATING = _UxGT("Нагрев..."); // Reheating... + LSTR MSG_REHEATDONE = _UxGT("Нагрето"); // Reheat Done + LSTR MSG_PROBE_WIZARD = _UxGT("Мастер Z-зонда"); // Z Probe Wizard + LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Зондир.контр.точки Z"); // Probing Z Reference + LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Движ.к точке зондир."); // Moving to Probing Pos + LSTR MSG_XATC = _UxGT("Помощник перекоса X"); // X-Twist Wizard + LSTR MSG_XATC_DONE = _UxGT("Перекос Х настроен!"); // X-Twist Wizard Done! + LSTR MSG_XATC_UPDATE_Z_OFFSET = _UxGT("Новое смещение Z-зонда "); // Update Z-Offset to + LSTR MSG_SOUND = _UxGT("Звук"); // Sound + LSTR MSG_TOP_LEFT = _UxGT("Верхний левый"); // Touch Top Left + LSTR MSG_BOTTOM_LEFT = _UxGT("Нижний левый"); // Touch Bottom Left + LSTR MSG_TOP_RIGHT = _UxGT("Верхний правый"); // Touch Top Right + LSTR MSG_BOTTOM_RIGHT = _UxGT("Нижний правый"); // Touch Bottom Right + LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Калибровка успешна"); // Calibration Completed + LSTR MSG_CALIBRATION_FAILED = _UxGT("Ошибка калибровки"); // Calibration Failed + LSTR MSG_DRIVER_BACKWARD = _UxGT(" драйвер наоборот"); // driver backward + LSTR MSG_SD_CARD = _UxGT("SD Карта"); // SD Card + LSTR MSG_USB_DISK = _UxGT("USB Диск"); // USB Disk + LSTR MSG_HOST_SHUTDOWN = _UxGT("Выключить хост"); // Host Shutdown + LSTR DGUS_MSG_TEMP_TOO_HIGH = _UxGT("Слишком высокая температура."); // Temperature too high. + LSTR MSG_SHORT_DAY = _UxGT("д"); // d + LSTR MSG_SHORT_HOUR = _UxGT("ч"); // h + LSTR MSG_SHORT_MINUTE = _UxGT("м"); // m + LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Нет носителя."); // No Media + LSTR MSG_INFO_PRINT_COUNT_RESET = _UxGT("Сбросить счетчик"); // No Media + LSTR MSG_ERR_M428_TOO_FAR = _UxGT("Ошибка: слишком далеко!"); // MIN/MAX Too Far + LSTR MSG_PREHEAT_HOTEND = _UxGT("Нагреть сопло"); // Preheat Hotend + LSTR MSG_MESH_ACTIVE = _UxGT("Сетка %i активна"); // Mesh %i active + LSTR MSG_LIVE_MOVE = _UxGT("Живое перемещение"); // Live Movement + LSTR MSG_CUTTER = _UxGT("Резак"); // Cutter + LSTR MSG_TIMEOUT = _UxGT("Таймаут."); // Timeout + LSTR MSG_MPC_HEATING_PAST_200 = _UxGT("Нагрев выше >200C"); // Heating to >200C + LSTR MSG_MPC_COOLING_TO_AMBIENT = _UxGT("Охлаждение до окружающей"); // Cooling to ambient + LSTR MSG_MPC_POWER = _UxGT("Мощность нагревателя"); // Heater Power + LSTR MSG_MPC_BLOCK_HEAT_CAPACITY = _UxGT("Теплоёмкость"); // Heat Capacity + LSTR MSG_SENSOR_RESPONSIVENESS = _UxGT("Отклик датчика"); // Sensor Resp. + LSTR MSG_MPC_AMBIENT_XFER_COEFF = _UxGT("Коэфф.окружения"); // Ambient Coeff. + LSTR MSG_MPC_AMBIENT_XFER_COEFF_FAN = _UxGT("Коэфф.кулера"); // Fan coeff. + LSTR MSG_INPUT_SHAPING = _UxGT("Input Shaping"); // Input Shaping + LSTR MSG_SHAPING_ENABLE_N = _UxGT("Включить шейпинг @"); // Enable @ shaping + LSTR MSG_SHAPING_DISABLE_N = _UxGT("Выключить шейпинг @"); // Disable @ shaping + LSTR MSG_SHAPING_FREQ_N = _UxGT("@ частота"); // @ frequency + LSTR MSG_SHAPING_ZETA_N = _UxGT("@ подавление"); // @ damping + LSTR MSG_FILAMENT_EN = _UxGT("Филамент *"); // Filament * + LSTR MSG_SEGMENTS_PER_SECOND = _UxGT("Сегментов/сек"); // Segments/Sec + LSTR MSG_DRAW_MIN_X = _UxGT("Рисовать мин X"); // Draw Min X + LSTR MSG_DRAW_MAX_X = _UxGT("Рисовать макс X"); // Draw Max X + LSTR MSG_DRAW_MIN_Y = _UxGT("Рисовать мин Y"); // Draw Min Y + LSTR MSG_DRAW_MAX_Y = _UxGT("Рисовать макс Y"); // Draw Max Y + LSTR MSG_MAX_BELT_LEN = _UxGT("Макс.длина ремня"); // Max Belt Len + LSTR MSG_LINEAR_ADVANCE = _UxGT("Linear Advance"); // Linear Advance + LSTR MSG_ERR_EEPROM_CORRUPT = _UxGT("Сбой EEPROM: данные"); // Err: EEPROM Corrupt + LSTR MSG_SINGLENOZZLE_WIPE_RETRACT = _UxGT("Вытирание при откате"); // Wipe Retract + LSTR MSG_PARK_FAILED = _UxGT("Не удалось запарковать"); // Head cannot be parked + LSTR MSG_MANUAL_PENUP = _UxGT("Поднять перо"); // Pen up + LSTR MSG_MANUAL_PENDOWN = _UxGT("Опустить перо"); // Pen down + LSTR MSG_DELTA_CALIBRATION_IN_PROGRESS = _UxGT("Делаю дельта-калибровку"); // Delta Calibration in progress + LSTR MSG_RESET_STATS = _UxGT("Сбросить статистику печати?"); // Reset Print Stats? + LSTR MSG_MMU2_REMOVE_AND_CLICK = _UxGT("Уберите и кликните..."); // Remove and click... + LSTR MSG_FIXED_TIME_MOTION = _UxGT("FT Motion"); // Fixed-Time Motion + LSTR MSG_FTM_CMPN_MODE = _UxGT("@ Режим комп.: $"); // @ Comp. Mode: $ + LSTR MSG_FTM_ZV = _UxGT("ZV"); // ZV + LSTR MSG_FTM_ZVD = _UxGT("ZVD"); // ZVD + LSTR MSG_FTM_EI = _UxGT("EI"); // EI + LSTR MSG_FTM_2HEI = _UxGT("2HEI"); // 2HEI + LSTR MSG_FTM_3HEI = _UxGT("3HEI"); // 3HEI + LSTR MSG_FTM_MZV = _UxGT("MZV"); // MZV + LSTR MSG_FTM_DYN_MODE = _UxGT("DF Mode: $"); // DF Mode: $ + LSTR MSG_FTM_Z_BASED = _UxGT("Z-based"); // Z-based + LSTR MSG_FTM_MASS_BASED = _UxGT("Mass-based"); // Mass-based + LSTR MSG_FTM_BASE_FREQ_N = _UxGT("@ Base Freq."); // @ Base Freq. + LSTR MSG_FTM_DFREQ_K_N = _UxGT("@ Dyn. Freq."); // @ Dyn. Freq. } namespace LanguageWide_ru { using namespace LanguageNarrow_ru; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Сбой инициализации SD"); - LSTR MSG_ADVANCED_SETTINGS = _UxGT("Расширенные настройки"); - LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Переполнение вызова"); - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Установ. смещения дома"); - LSTR MSG_HOME_OFFSET_X = _UxGT("Смещение дома X"); // DWIN - LSTR MSG_HOME_OFFSET_Y = _UxGT("Смещение дома Y"); // DWIN - LSTR MSG_HOME_OFFSET_Z = _UxGT("Смещение дома Z"); // DWIN - LSTR MSG_LAST_VALUE_SP = _UxGT("Последнее значение "); - LSTR MSG_SPINDLE_MENU = _UxGT("Управлен.шпинделем"); - LSTR MSG_LASER_TOGGLE = _UxGT("Переключить лазер"); - LSTR MSG_SPINDLE_TOGGLE = _UxGT("Переключ. шпиндель"); - LSTR MSG_SPINDLE_POWER = _UxGT("Мощность шпинделя"); - LSTR MSG_LASER_POWER = _UxGT("Мощность лазера"); - LSTR MSG_LASER_PULSE_MS = _UxGT("Тестовый импульс мс"); - LSTR MSG_LASER_EVAC_TOGGLE = _UxGT("Переключить обдув"); - LSTR MSG_SPINDLE_EVAC_TOGGLE = _UxGT("Переключить вакуум"); - LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Вверх до срабатыв. зонда"); - LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Углы в норме. Вырав.стола"); - LSTR MSG_MESH_EDITOR = _UxGT("Смещение по Z"); - LSTR MSG_EDITING_STOPPED = _UxGT("Правка сетки окончена"); - LSTR MSG_UBL_BC_INSERT = _UxGT("Разместить шайбу,измерить"); - LSTR MSG_UBL_BC_REMOVE = _UxGT("Убрать и замерить стол"); - LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Температура стола"); - LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Температура стола"); - LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Температура сопла"); - LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Температура сопла"); - LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Построить свою сетку"); - LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Правка сетки завершена"); - LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Построить холодную сетку"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Проверить сетку $"); - LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Проверить свою сетку"); - LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-х точечное выравнивание"); - LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Сохранить сетку снаружи"); - LSTR MSG_UBL_INFO_UBL = _UxGT("Вывод информации UBL"); - LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Кол-во заполнителя"); - LSTR MSG_NEO2_PRESETS = _UxGT("Свет #2 предустановки"); - LSTR MSG_COOLER = _UxGT("Охлаждение лазера"); - LSTR MSG_COOLER_TOGGLE = _UxGT("Переключ. охлажд."); - LSTR MSG_FLOWMETER_SAFETY = _UxGT("Безопасн. потока"); - LSTR MSG_JUNCTION_DEVIATION = _UxGT("Отклонение угла"); - LSTR MSG_FILAMENT_DIAM = _UxGT("Диам. филамента"); - LSTR MSG_FILAMENT_DIAM_E = _UxGT("Диам. филамента *"); - LSTR MSG_RESTORE_DEFAULTS = _UxGT("На базовые параметры"); - LSTR MSG_INIT_EEPROM = _UxGT("Инициализация EEPROM"); - LSTR MSG_CONTROL_RETRACT = _UxGT("Откат, мм"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Откат при смене, мм"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Возврат при смене, мм"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("Возврат при смене, V"); - LSTR MSG_AUTORETRACT = _UxGT("Автооткат"); - LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Дополнительная длина"); - LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Начальная скор."); - LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Скорость отката"); - LSTR MSG_FILAMENTLOAD_E = _UxGT("Загрузить филамент *"); - LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Выгрузить филамент *"); - LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Двигать сопло к столу"); - LSTR MSG_3POINT_LEVELING = _UxGT("3-точечное выравнивание"); - LSTR MSG_LINEAR_LEVELING = _UxGT("Линейное выравнивание"); - LSTR MSG_BILINEAR_LEVELING = _UxGT("Билинейное выравнивание"); - LSTR MSG_MESH_DONE = _UxGT("Зондирование выполнено"); - LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Контроль утечки Т: Выкл"); - LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Контроль утечки Т: Вкл"); - LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Время простоя хотенда"); - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Счётчик печати"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Общее время печати"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Наидольшее задание"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Длина филамента"); - LSTR MSG_RUNOUT_SENSOR = _UxGT("Датчик оконч. филамента"); - LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("Обновить прошивку MMU!"); - LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Извлечение филамента..."); - LSTR MSG_MIX = _UxGT("Смешивание"); - LSTR MSG_TOGGLE_MIX = _UxGT("Переключить смешивание"); - LSTR MSG_ACTIVE_VTOOL = _UxGT("Активация В-инструм."); - LSTR MSG_START_VTOOL = _UxGT("Начало В-инструмента"); - LSTR MSG_END_VTOOL = _UxGT("Конец В-инструмента"); - LSTR MSG_GRADIENT_ALIAS = _UxGT("Псевдоним В-инструмента"); - LSTR MSG_RESET_VTOOLS = _UxGT("Сброс В-инструментов"); - LSTR MSG_COMMIT_VTOOL = _UxGT("Смешать В-инструменты"); - LSTR MSG_VTOOLS_RESET = _UxGT("В-инструменты сброшены"); - LSTR MSG_BAD_PAGE = _UxGT("Плохой индекс страницы"); - LSTR MSG_BAD_PAGE_SPEED = _UxGT("Плохая скорость страницы"); - LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Не забудь сохранить!"); - LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Зондиров. контр. точки Z"); - LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Движение к точке зондиров."); - LSTR MSG_FILAMENT_MAN = _UxGT("Управление филаментом"); + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Установ. смещения дома"); // Set Home Offsets + LSTR MSG_FILAMENT_DIAM = _UxGT("Диам. филамента"); // Fil. Dia. + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Диам. филамента *"); // Fil. Dia. * + LSTR MSG_RESTORE_DEFAULTS = _UxGT("На базовые параметры"); // Restore Defaults + LSTR MSG_CONTROL_RETRACT = _UxGT("Откат, мм"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Откат при смене, мм"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Возврат при смене, мм"); // S Unretr. mm + LSTR MSG_AUTORETRACT = _UxGT("Автооткат"); // Auto-Retract + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Счётчик печати"); // Print Count + LSTR MSG_INFO_PRINT_TIME = _UxGT("Общее время печати"); // Print Time + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Наидольшее задание"); // Longest Job Time + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Длина филамента"); // Extruded Total + LSTR MSG_ADVANCED_SETTINGS = _UxGT("Расширенные настройки"); // Advanced Settings + LSTR MSG_LASER_POWER = _UxGT("Мощность лазера"); // Laser Power + LSTR MSG_SPINDLE_MENU = _UxGT("Управлен.шпинделем"); // Spindle Control + LSTR MSG_SPINDLE_POWER = _UxGT("Мощность шпинделя"); // Spindle Pwr + LSTR MSG_MESH_EDITOR = _UxGT("Смещение по Z"); // Mesh Editor + LSTR MSG_EDITING_STOPPED = _UxGT("Правка сетки окончена"); // Mesh Editing Stopped + LSTR MSG_UBL_BC_INSERT = _UxGT("Разместить шайбу,измерить"); // Place Shim & Measure + LSTR MSG_UBL_BC_REMOVE = _UxGT("Убрать и замерить стол"); // Remove & Measure Bed + LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Температура стола"); // Bed Temp + LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Температура стола"); // Bed Temp + LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Температура сопла"); // Hotend Temp + LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Температура сопла"); // Hotend Temp + LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Правка сетки завершена"); // Done Editing Mesh + LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Построить свою сетку"); // Build Custom Mesh + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Проверить сетку $"); // Validate Mesh ($) + LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Построить холодную сетку"); // Build Cold Mesh + LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Проверить свою сетку"); // Validate Custom Mesh + LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-х точечное выравнивание"); // 3-Point Leveling + LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Сохранить сетку снаружи"); // Off Printer Backup + LSTR MSG_UBL_INFO_UBL = _UxGT("Вывод информации UBL"); // Output UBL Info + LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Кол-во заполнителя"); // Fill-in Amount + LSTR MSG_JUNCTION_DEVIATION = _UxGT("Отклонение угла"); // Junction Dev + LSTR MSG_INIT_EEPROM = _UxGT("Инициализация EEPROM"); // Initialize EEPROM + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("Возврат при смене, V"); // S UnRet V + LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Начальная скор."); // Prime Speed + LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Скорость отката"); // Retract Speed + LSTR MSG_FILAMENTLOAD_E = _UxGT("Загрузить филамент *"); // Load * Filament + LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Выгрузить филамент *"); // Unload * Filament + LSTR MSG_3POINT_LEVELING = _UxGT("3-точечное выравнивание"); // 3-Point Leveling + LSTR MSG_LINEAR_LEVELING = _UxGT("Линейное выравнивание"); // Linear Leveling + LSTR MSG_BILINEAR_LEVELING = _UxGT("Билинейное выравнивание"); // Bilinear Leveling + LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Контроль утечки Т: Выкл"); // Runaway Watch: OFF + LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Контроль утечки Т: Вкл"); // Runaway Watch: ON + LSTR MSG_RUNOUT_SENSOR = _UxGT("Датчик оконч. филамента"); // Runout Sensor + LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("Обновить прошивку MMU!"); // Update MMU Firmware! + LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Извлечение филамента..."); // Filament %i Eject... + LSTR MSG_MIX = _UxGT("Смешивание"); // Mix + LSTR MSG_TOGGLE_MIX = _UxGT("Переключить смешивание"); // Toggle Mix + LSTR MSG_ACTIVE_VTOOL = _UxGT("Активация В-инструм."); // Active V-tool + LSTR MSG_START_VTOOL = _UxGT("Начало В-инструмента"); // Start V-tool + LSTR MSG_END_VTOOL = _UxGT("Конец В-инструмента"); // End V-tool + LSTR MSG_GRADIENT_ALIAS = _UxGT("Псевдоним В-инструмента"); // Alias V-tool + LSTR MSG_RESET_VTOOLS = _UxGT("Сброс В-инструментов"); // Reset V-tools + LSTR MSG_COMMIT_VTOOL = _UxGT("Смешать В-инструменты"); // Commit V-tool Mix + LSTR MSG_VTOOLS_RESET = _UxGT("В-инструменты сброшены"); // V-tools Were Reset + LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Сбой инициализации SD"); // (MEDIA_TYPE_EN) Init Fail + LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Переполнение вызова"); // Subcall Overflow + LSTR MSG_FILAMENT_MAN = _UxGT("Управление филаментом"); // Filament Management + LSTR MSG_HOME_OFFSET_X = _UxGT("Смещение дома X"); // Home Offset X + LSTR MSG_HOME_OFFSET_Y = _UxGT("Смещение дома Y"); // Home Offset Y + LSTR MSG_HOME_OFFSET_Z = _UxGT("Смещение дома Z"); // Home Offset Z + LSTR MSG_LAST_VALUE_SP = _UxGT("Последнее значение "); // Last value + LSTR MSG_LASER_TOGGLE = _UxGT("Переключить лазер"); // Toggle Laser + LSTR MSG_LASER_EVAC_TOGGLE = _UxGT("Переключить обдув"); // Toggle Blower + LSTR MSG_LASER_PULSE_MS = _UxGT("Тестовый импульс мс"); // Test Pulse ms + LSTR MSG_SPINDLE_TOGGLE = _UxGT("Переключ. шпиндель"); // Toggle Spindle + LSTR MSG_SPINDLE_EVAC_TOGGLE = _UxGT("Переключить вакуум"); // Toggle Vacuum + LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Вверх до срабатыв. зонда"); // Adjust bed until the probe triggers. + LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Углы в норме. Вырав.стола"); // Corners within tolerance. Bed trammed. + LSTR MSG_NEO2_PRESETS = _UxGT("Свет #2 предустановки"); // Light #2 Presets + LSTR MSG_COOLER = _UxGT("Охлаждение лазера"); // Laser Coolant + LSTR MSG_COOLER_TOGGLE = _UxGT("Переключ. охлажд."); // Toggle Cooler + LSTR MSG_FLOWMETER_SAFETY = _UxGT("Безопасн. потока"); // Flow Safety + LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Дополнительная длина"); // Swap Extra + LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Двигать сопло к столу"); // Move Nozzle to Bed + LSTR MSG_MESH_DONE = _UxGT("Зондирование выполнено"); // Mesh probing done + LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Время простоя хотенда"); // Hotend Idle Timeout + LSTR MSG_BAD_PAGE = _UxGT("Плохой индекс страницы"); // Bad page index + LSTR MSG_BAD_PAGE_SPEED = _UxGT("Плохая скорость страницы"); // Bad page speed + LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Не забудь сохранить!"); // Remember to Save! + LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Зондиров. контр. точки Z"); // Probing Z Reference + LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Движение к точке зондиров."); // Moving to Probing Pos #endif } @@ -929,16 +873,16 @@ namespace LanguageTall_ru { using namespace LanguageWide_ru; #if LCD_HEIGHT >= 4 // Filament Change screens show up to 3 lines on a 4-line display - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_3_LINE("Нажмите кнопку", "для продолжения", "печати")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("Ожидайте начала", "смены филамента")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Вставьте филамент", "и нажмите кнопку", "для продолжения")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_3_LINE("Нажмите кнопку", "для нагрева", "сопла...")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Нагрев сопла", "Ждите...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Ожидайте", "выгрузки", "филамента")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Ожидайте", "загрузки", "филамента")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_3_LINE("Ожидайте", "экструзии", "филамента")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Нажмите кнопку", "для завершения", "прочистки филамента")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Ожидайте", "возобновления", "печати")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_2_LINE("Ожидайте начала", "смены филамента")); // |Wait for|filament change|to start + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Вставьте филамент", "и нажмите кнопку", "для продолжения")); // |Insert filament|and press button|to continue + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Ожидайте", "выгрузки", "филамента")); // |Wait for|filament unload + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Ожидайте", "загрузки", "филамента")); // |Wait for|filament load + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Ожидайте", "возобновления", "печати")); // |Wait for print|to resume... + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Нагрев сопла", "Ждите...")); // |Nozzle heating|Please wait... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_3_LINE("Нажмите кнопку", "для нагрева", "сопла...")); // |Press button|to heat nozzle + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_3_LINE("Нажмите кнопку", "для продолжения", "печати")); // |Press Button|to resume print + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_3_LINE("Ожидайте", "экструзии", "филамента")); // |Wait for|filament purge + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Нажмите кнопку", "для завершения", "прочистки филамента")); // |Click to finish|filament purge #endif } diff --git a/Marlin/src/lcd/language/language_sk.h b/Marlin/src/lcd/language/language_sk.h index 6f4706c9a0..67624e3fce 100644 --- a/Marlin/src/lcd/language/language_sk.h +++ b/Marlin/src/lcd/language/language_sk.h @@ -51,780 +51,745 @@ namespace LanguageNarrow_sk { constexpr uint8_t CHARSIZE = 2; LSTR LANGUAGE = _UxGT("Slovenčina"); - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" pripravená."); - LSTR MSG_YES = _UxGT("ÁNO"); - LSTR MSG_NO = _UxGT("NIE"); - LSTR MSG_HIGH = _UxGT("VYSOKÁ"); - LSTR MSG_LOW = _UxGT("NÍZKA"); - LSTR MSG_BACK = _UxGT("Naspäť"); - LSTR MSG_ERROR = _UxGT("Chyba"); - - LSTR MSG_MEDIA_ABORTING = _UxGT("Ruším..."); - LSTR MSG_MEDIA_INSERTED = _UxGT("Karta vložená"); - LSTR MSG_MEDIA_REMOVED = _UxGT("Karta vybraná"); - LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Inicial.karty zlyhala"); - LSTR MSG_MEDIA_READ_ERROR = _UxGT("Chyba čítania karty"); - LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB zaria. odstrán."); - LSTR MSG_USB_FD_USB_FAILED = _UxGT("Chyba spúšťania USB"); - - LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Preteč. podprogramu"); - LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstopy"); // max 8 znakov - LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Soft. endstopy"); - LSTR MSG_MAIN_MENU = _UxGT("Hlavná ponuka"); - LSTR MSG_ADVANCED_SETTINGS = _UxGT("Pokročilé nastav."); - LSTR MSG_CONFIGURATION = _UxGT("Konfigurácia"); - LSTR MSG_DISABLE_STEPPERS = _UxGT("Uvolniť motory"); - LSTR MSG_DEBUG_MENU = _UxGT("Ponuka ladenia"); - LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Test uk. priebehu"); - LSTR MSG_HOMING = _UxGT("Parkovanie"); - LSTR MSG_AUTO_HOME = _UxGT("Domovská pozícia"); - LSTR MSG_AUTO_HOME_N = _UxGT("Domov os @"); - LSTR MSG_AUTO_HOME_X = _UxGT("Domov os X"); - LSTR MSG_AUTO_HOME_Y = _UxGT("Domov os Y"); - LSTR MSG_AUTO_HOME_Z = _UxGT("Domov os Z"); - LSTR MSG_Z_AFTER_HOME = _UxGT("Os Z po domov.poz."); - LSTR MSG_FILAMENT_SET = _UxGT("Nastav. filamentu"); - LSTR MSG_FILAMENT_MAN = _UxGT("Správa filamentu"); - LSTR MSG_MANUAL_LEVELING = _UxGT("Ručné rovnanie"); - LSTR MSG_TRAM_FL = _UxGT("Ľavý predný"); - LSTR MSG_TRAM_FR = _UxGT("Pravý predný"); - LSTR MSG_TRAM_C = _UxGT("Stred"); - LSTR MSG_TRAM_BL = _UxGT("Ľavý zadný"); - LSTR MSG_TRAM_BR = _UxGT("Pravý zadný"); - LSTR MSG_MANUAL_MESH = _UxGT("Ručná mriežka"); - LSTR MSG_AUTO_MESH = _UxGT("Automat. mriežka"); - LSTR MSG_AUTO_Z_ALIGN = _UxGT("Auto-zarovn. Z"); - LSTR MSG_ITERATION = _UxGT("Iterácia G34: %i"); - LSTR MSG_DECREASING_ACCURACY = _UxGT("Klesajúca presnosť!"); - LSTR MSG_ACCURACY_ACHIEVED = _UxGT("Dosiahnutá presnosť"); - LSTR MSG_LEVEL_BED_HOMING = _UxGT("Parkovanie XYZ"); - LSTR MSG_LEVEL_BED_WAITING = _UxGT("Kliknutím začnete"); - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Ďalší bod"); - LSTR MSG_LEVEL_BED_DONE = _UxGT("Vyrovnanie hotové!"); - LSTR MSG_Z_FADE_HEIGHT = _UxGT("Výška rovnania"); - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Nastav. dom. ofsety"); - LSTR MSG_HOME_OFFSET_X = _UxGT("X Ofset"); // DWIN - LSTR MSG_HOME_OFFSET_Y = _UxGT("Y Ofset"); // DWIN - LSTR MSG_HOME_OFFSET_Z = _UxGT("Z Ofset"); // DWIN - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Ofsety nastavené"); - LSTR MSG_ERR_M428_TOO_FAR = _UxGT("Chyba: Príliš ďaleko!"); - LSTR MSG_TRAMMING_WIZARD = _UxGT("Spriev. vyrovn."); - LSTR MSG_SELECT_ORIGIN = _UxGT("Vyberte začiatok"); - LSTR MSG_LAST_VALUE_SP = _UxGT("Posl. hodnota "); - - LSTR MSG_PREHEAT_1 = _UxGT("Zahriať ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Zahriať ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" hotend"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" hotend ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" všetko"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" podlož"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" nast."); - - LSTR MSG_PREHEAT_M = _UxGT("Zahriať $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Zahriať $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Zahriať $ hotend"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Zahriať $ hotend ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Zahriať $ všetko"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Zahriať $ podlož"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Zahriať $ nast."); - - LSTR MSG_PREHEAT_HOTEND = _UxGT("Zahriať hotend"); - LSTR MSG_PREHEAT_CUSTOM = _UxGT("Vlastná teplota"); - LSTR MSG_COOLDOWN = _UxGT("Schladiť"); - - LSTR MSG_CUTTER_FREQUENCY = _UxGT("Frekvencia"); - LSTR MSG_LASER_MENU = _UxGT("Nastavenie lasera"); - LSTR MSG_SPINDLE_MENU = _UxGT("Nastavenie vretena"); - LSTR MSG_LASER_POWER = _UxGT("Výkon lasera"); - LSTR MSG_SPINDLE_POWER = _UxGT("Výkon vretena"); - LSTR MSG_LASER_TOGGLE = _UxGT("Prepnúť laser"); - LSTR MSG_LASER_EVAC_TOGGLE = _UxGT("Prepnúť odsávanie"); - LSTR MSG_LASER_ASSIST_TOGGLE = _UxGT("Prepnúť ofuk"); - LSTR MSG_LASER_PULSE_MS = _UxGT("Test. impulz ms"); - LSTR MSG_LASER_FIRE_PULSE = _UxGT("Vystreliť impulz"); - LSTR MSG_FLOWMETER_FAULT = _UxGT("Chyba chladenia"); - LSTR MSG_SPINDLE_TOGGLE = _UxGT("Prepnúť vreteno"); - LSTR MSG_SPINDLE_EVAC_TOGGLE = _UxGT("Prepnúť odsávanie"); - LSTR MSG_SPINDLE_FORWARD = _UxGT("Dopredný chod"); - LSTR MSG_SPINDLE_REVERSE = _UxGT("Spätný chod"); - LSTR MSG_SWITCH_PS_ON = _UxGT("Zapnúť napájanie"); - LSTR MSG_SWITCH_PS_OFF = _UxGT("Vypnúť napájanie"); - LSTR MSG_EXTRUDE = _UxGT("Vytlačiť (extr.)"); - LSTR MSG_RETRACT = _UxGT("Vytiahnuť (retr.)"); - LSTR MSG_MOVE_AXIS = _UxGT("Posunúť osy"); - LSTR MSG_PROBE_AND_LEVEL = _UxGT("Sonda a vyrovnanie"); - LSTR MSG_BED_LEVELING = _UxGT("Vyrovnanie podložky"); - LSTR MSG_LEVEL_BED = _UxGT("Vyrovnať podložku"); - LSTR MSG_BED_TRAMMING = _UxGT("Vyrovnať rohy"); - LSTR MSG_BED_TRAMMING_MANUAL = _UxGT("Ručné vyrovnanie"); - LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Zdvihnite podl., kým sa nezopne sonda"); - LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Rohy sú vrámci odchyl. Vyrovnajte podl."); - LSTR MSG_BED_TRAMMING_GOOD_POINTS = _UxGT("Dobré body: "); - LSTR MSG_BED_TRAMMING_LAST_Z = _UxGT("Posl. Z: "); - LSTR MSG_NEXT_CORNER = _UxGT("Ďalší roh"); - LSTR MSG_MESH_EDITOR = _UxGT("Editor sieťe bodov"); - LSTR MSG_MESH_VIEWER = _UxGT("Zobraz. sieťe bodov"); - LSTR MSG_EDIT_MESH = _UxGT("Upraviť sieť bodov"); - LSTR MSG_MESH_VIEW = _UxGT("Zobraz. sieť bodov"); - LSTR MSG_EDITING_STOPPED = _UxGT("Koniec úprav siete"); - LSTR MSG_NO_VALID_MESH = _UxGT("Neplatná sieť bodov"); - LSTR MSG_ACTIVATE_MESH = _UxGT("Zapnúť vyrovnanie"); - LSTR MSG_PROBING_POINT = _UxGT("Skúšam bod"); - LSTR MSG_MESH_X = _UxGT("Index X"); - LSTR MSG_MESH_Y = _UxGT("Index Y"); - LSTR MSG_MESH_INSET = _UxGT("Vložiť sieť"); - LSTR MSG_MESH_MIN_X = _UxGT("Min. X sieťe"); - LSTR MSG_MESH_MAX_X = _UxGT("Max. X sieťe"); - LSTR MSG_MESH_MIN_Y = _UxGT("Min. Y sieťe"); - LSTR MSG_MESH_MAX_Y = _UxGT("Max. Y sieťe"); - LSTR MSG_MESH_AMAX = _UxGT("Maximál. oblasť"); - LSTR MSG_MESH_CENTER = _UxGT("Stredová oblasť"); - LSTR MSG_MESH_EDIT_Z = _UxGT("Hodnota Z"); - LSTR MSG_MESH_CANCEL = _UxGT("Mriežka zrušená"); - LSTR MSG_CUSTOM_COMMANDS = _UxGT("Vlastné príkazy"); - LSTR MSG_M48_TEST = _UxGT("M48 Test sondy"); - LSTR MSG_M48_POINT = _UxGT("M48 Bod"); - LSTR MSG_M48_OUT_OF_BOUNDS = _UxGT("Sonda mimo hraníc"); - LSTR MSG_M48_DEVIATION = _UxGT("Odchýlka"); - LSTR MSG_IDEX_MENU = _UxGT("IDEX režim"); - LSTR MSG_OFFSETS_MENU = _UxGT("Ofset nástrojov"); - LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-parkovanie"); - LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplikácia"); - LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Zrkadlená kópia"); - LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Plná kontrola"); - LSTR MSG_IDEX_DUPE_GAP = _UxGT("Duplik. medz.-X"); - LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2. tryska Z"); - LSTR MSG_HOTEND_OFFSET_N = _UxGT("2. tryska @"); - LSTR MSG_UBL_DOING_G29 = _UxGT("Vykonávam G29"); - LSTR MSG_UBL_TOOLS = _UxGT("Nástroje UBL"); - LSTR MSG_LCD_TILTING_MESH = _UxGT("Vyrovnávam bod"); - LSTR MSG_UBL_TILT_MESH = _UxGT("Nakloniť sieť"); - LSTR MSG_UBL_TILTING_GRID = _UxGT("Veľkosť nakl. siete"); - LSTR MSG_UBL_MESH_TILTED = _UxGT("Sieť naklonená"); - LSTR MSG_UBL_MANUAL_MESH = _UxGT("Manuálna sieť bodov"); - LSTR MSG_UBL_MESH_WIZARD = _UxGT("Spriev. UBL rovnan."); - LSTR MSG_UBL_BC_INSERT = _UxGT("Položte a zmerajte"); - LSTR MSG_UBL_BC_INSERT2 = _UxGT("Zmerajte"); - LSTR MSG_UBL_BC_REMOVE = _UxGT("Odstráňte a zmerajte"); - LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Presun na ďalší"); - LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Teplota podložky"); - LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Teplota podložky"); - LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Teplota hotendu"); - LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Teplota hotendu"); - LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Upraviť vlastnú sieť"); - LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Doladiť sieť bodov"); - LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Koniec úprav siete"); - LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Vlastná sieť"); - LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Vytvoriť sieť"); - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Sieť bodov ($)"); - LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Studená sieť bodov"); - LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Upraviť výšku siete"); - LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Výška"); - LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Skontrolovať sieť"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Kontrola siete ($)"); - LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Kontrola vlast.siete"); - LSTR MSG_G26_HEATING_BED = _UxGT("G26 ohrev podlž."); - LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 ohrev trysky"); - LSTR MSG_G26_MANUAL_PRIME = _UxGT("Ručné čistenie..."); - LSTR MSG_G26_FIXED_LENGTH = _UxGT("Čistenie pevn. dĺž."); - LSTR MSG_G26_PRIME_DONE = _UxGT("Čistenie dokončené"); - LSTR MSG_G26_CANCELED = _UxGT("G26 zrušený"); - LSTR MSG_G26_LEAVING = _UxGT("Opúšťam G26"); - LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Pokračovať v sieti"); - LSTR MSG_UBL_MESH_LEVELING = _UxGT("Sieťové rovnanie"); - LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-bodové rovnanie"); - LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Mriežkové rovnanie"); - LSTR MSG_UBL_MESH_LEVEL = _UxGT("Vyrovnať podložku"); - LSTR MSG_UBL_SIDE_POINTS = _UxGT("Postranné body"); - LSTR MSG_UBL_MAP_TYPE = _UxGT("Typ siete bodov"); - LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Exportovať sieť"); - LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Export do hosta"); - LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Export do CSV"); - LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Externá záloha"); - LSTR MSG_UBL_INFO_UBL = _UxGT("Info. o výst. UBL"); - LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Hustota mriežky"); - LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Ručné vyplnenie"); - LSTR MSG_UBL_SMART_FILLIN = _UxGT("Chytré vyplnenie"); - LSTR MSG_UBL_FILLIN_MESH = _UxGT("Vyplniť mriežku"); - LSTR MSG_UBL_MESH_FILLED = _UxGT("Doplnené chýb. body"); - LSTR MSG_UBL_MESH_INVALID = _UxGT("Neplatná sieť"); - LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Zrušiť všetko"); - LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Zrušiť najbližší"); - LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Upraviť všetky"); - LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Upraviť najbližší"); - LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Úložisko sietí"); - LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Pamäťový slot"); - LSTR MSG_UBL_LOAD_MESH = _UxGT("Načítať sieť bodov"); - LSTR MSG_UBL_SAVE_MESH = _UxGT("Uložiť sieť bodov"); - LSTR MSG_UBL_INVALID_SLOT = _UxGT("Najskôr zvol. slot siete"); - LSTR MSG_MESH_LOADED = _UxGT("Sieť %i načítaná"); - LSTR MSG_MESH_SAVED = _UxGT("Sieť %i uložená"); - LSTR MSG_MESH_ACTIVE = _UxGT("Sieť %i aktívna"); - LSTR MSG_UBL_NO_STORAGE = _UxGT("Nedostatok miesta"); - LSTR MSG_UBL_SAVE_ERROR = _UxGT("Chyba: Ukladanie UBL"); - LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Chyba: Obnovenie UBL"); - LSTR MSG_UBL_Z_OFFSET = _UxGT("Z-Ofset: "); - LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Koniec kompenz. Z"); - LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("Postupné UBL"); - LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Studená sieť bodov"); - LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2.Chytré vyplnenie"); - LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Skontrolovať sieť"); - LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Upraviť všetky"); - LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Skontrolovať sieť"); - LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Upraviť všetky"); - LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Uložiť sieť bodov"); - - LSTR MSG_LED_CONTROL = _UxGT("Nastavenie LED"); - LSTR MSG_LIGHTS = _UxGT("Svetlo"); - LSTR MSG_LIGHT_N = _UxGT("Svetlo #{"); - LSTR MSG_LED_PRESETS = _UxGT("Predvolby svetla"); - LSTR MSG_SET_LEDS_RED = _UxGT("Červená"); - LSTR MSG_SET_LEDS_ORANGE = _UxGT("Oranžová"); - LSTR MSG_SET_LEDS_YELLOW = _UxGT("Žltá"); - LSTR MSG_SET_LEDS_GREEN = _UxGT("Zelená"); - LSTR MSG_SET_LEDS_BLUE = _UxGT("Modrá"); - LSTR MSG_SET_LEDS_INDIGO = _UxGT("Indigo"); - LSTR MSG_SET_LEDS_VIOLET = _UxGT("Fialová"); - LSTR MSG_SET_LEDS_WHITE = _UxGT("Biela"); - LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Obnoviť nastavenie"); - LSTR MSG_LED_CHANNEL_N = _UxGT("Kanál {"); - LSTR MSG_NEO2_PRESETS = _UxGT("Predvolby svetla #2"); - LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Jas"); - LSTR MSG_CUSTOM_LEDS = _UxGT("Vlastná farba"); - LSTR MSG_INTENSITY_R = _UxGT("Inten. červenej"); - LSTR MSG_INTENSITY_G = _UxGT("Inten. zelenej"); - LSTR MSG_INTENSITY_B = _UxGT("Inten. modrej"); - LSTR MSG_INTENSITY_W = _UxGT("Inten. bielej"); - LSTR MSG_LED_BRIGHTNESS = _UxGT("Jas"); - - LSTR MSG_MOVING = _UxGT("Posúvam..."); - LSTR MSG_FREE_XY = _UxGT("Uvolniť XY"); - LSTR MSG_MOVE_X = _UxGT("Posunúť X"); - LSTR MSG_MOVE_Y = _UxGT("Posunúť Y"); - LSTR MSG_MOVE_Z = _UxGT("Posunúť Z"); - LSTR MSG_MOVE_N = _UxGT("Posunúť @"); - LSTR MSG_MOVE_E = _UxGT("Extrudér"); - LSTR MSG_MOVE_EN = _UxGT("Extrudér *"); - LSTR MSG_HOTEND_TOO_COLD = _UxGT("Hotend je studený"); - LSTR MSG_MOVE_N_MM = _UxGT("Posunúť o $mm"); - LSTR MSG_MOVE_N_IN = _UxGT("Posunúť o $in"); - LSTR MSG_MOVE_N_DEG = _UxGT("Posunúť o $") LCD_STR_DEGREE; - LSTR MSG_LIVE_MOVE = _UxGT("Živý pohyb"); - LSTR MSG_SPEED = _UxGT("Rýchlosť"); - LSTR MSG_MESH_Z_OFFSET = _UxGT("Výška podl."); - LSTR MSG_NOZZLE = _UxGT("Tryska"); - LSTR MSG_NOZZLE_N = _UxGT("Tryska ~"); - LSTR MSG_NOZZLE_PARKED = _UxGT("Tryska zaparkovaná"); - LSTR MSG_NOZZLE_STANDBY = _UxGT("Záložná tryska"); - LSTR MSG_BED = _UxGT("Podložka"); - LSTR MSG_CHAMBER = _UxGT("Komora"); - LSTR MSG_COOLER = _UxGT("Chladen. lasera"); - LSTR MSG_COOLER_TOGGLE = _UxGT("Prepnúť chladenie"); - LSTR MSG_FLOWMETER_SAFETY = _UxGT("Bezpeč. prietok"); - LSTR MSG_CUTTER = _UxGT("Rezačka"); - LSTR MSG_LASER = _UxGT("Laser"); - LSTR MSG_FAN_SPEED = _UxGT("Rýchlosť vent."); - LSTR MSG_FAN_SPEED_N = _UxGT("Rýchlosť vent. ~"); - LSTR MSG_STORED_FAN_N = _UxGT("Ulož. vent. ~"); - LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Rýchlosť ex. vent."); - LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Rýchlosť ex. vent. ~"); - LSTR MSG_CONTROLLER_FAN = _UxGT("Vent. riad. jedn."); - LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("Voľno. rýchl."); - LSTR MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("Auto-režim"); - LSTR MSG_CONTROLLER_FAN_SPEED = _UxGT("Aktív. rýchl."); - LSTR MSG_CONTROLLER_FAN_DURATION = _UxGT("Doba nečinnosti"); - LSTR MSG_FLOW = _UxGT("Prietok"); - LSTR MSG_FLOW_N = _UxGT("Prietok ~"); - LSTR MSG_CONTROL = _UxGT("Ovládanie"); - LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); - LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fakt"); - LSTR MSG_AUTOTEMP = _UxGT("Auto-teplota"); - LSTR MSG_TIMEOUT = _UxGT("Čas vypršal"); - LSTR MSG_LCD_ON = _UxGT("Zap"); - LSTR MSG_LCD_OFF = _UxGT("Vyp"); - LSTR MSG_PID_AUTOTUNE = _UxGT("Kalibrácia PID"); - LSTR MSG_PID_AUTOTUNE_E = _UxGT("Kalibrácia PID *"); - LSTR MSG_PID_CYCLE = _UxGT("Cykly PID"); - LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("Kal. PID dokončená"); - LSTR MSG_PID_AUTOTUNE_FAILED = _UxGT("Kal. PID zlyhala!"); - LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Auto-kal. zlyhala! Zlý extrúder."); - LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Auto-kal. zlyhala! Príliš vysoká tepl."); - LSTR MSG_PID_TIMEOUT = _UxGT("Auto-kal. zlyhala! Čas vypršal."); - LSTR MSG_MPC_MEASURING_AMBIENT = _UxGT("Test. tepl. straty"); - LSTR MSG_MPC_HEATING_PAST_200 = _UxGT("Zahriať na >200C"); - LSTR MSG_MPC_COOLING_TO_AMBIENT = _UxGT("Schladiť na okolie"); - LSTR MSG_MPC_AUTOTUNE = _UxGT("Auto-kal. MPC"); - LSTR MSG_MPC_EDIT = _UxGT("Upraviť * MPC"); - LSTR MSG_MPC_POWER = _UxGT("Výkon ohrievača"); - LSTR MSG_MPC_POWER_E = _UxGT("Výkon *"); - LSTR MSG_MPC_BLOCK_HEAT_CAPACITY = _UxGT("Tepelná kapacita"); - LSTR MSG_MPC_BLOCK_HEAT_CAPACITY_E = _UxGT("Tepelná kap. *"); - LSTR MSG_SENSOR_RESPONSIVENESS = _UxGT("Reakcia senzoru"); - LSTR MSG_SENSOR_RESPONSIVENESS_E = _UxGT("Reakcia senz. *"); - LSTR MSG_MPC_AMBIENT_XFER_COEFF = _UxGT("Koef. okolia"); - LSTR MSG_MPC_AMBIENT_XFER_COEFF_E = _UxGT("Koef. okolia *"); - LSTR MSG_MPC_AMBIENT_XFER_COEFF_FAN = _UxGT("Koef. vent."); - LSTR MSG_MPC_AMBIENT_XFER_COEFF_FAN_E = _UxGT("Koef. vent. *"); - LSTR MSG_SELECT_E = _UxGT("Vybrať *"); - LSTR MSG_ACC = _UxGT("Zrýchlenie"); - LSTR MSG_JERK = _UxGT("Skok"); - LSTR MSG_VA_JERK = _UxGT("V") STR_A _UxGT("-skok"); - LSTR MSG_VB_JERK = _UxGT("V") STR_B _UxGT("-skok"); - LSTR MSG_VC_JERK = _UxGT("V") STR_C _UxGT("-skok"); - LSTR MSG_VN_JERK = _UxGT("V@-skok"); - LSTR MSG_VE_JERK = _UxGT("Ve-skok"); - LSTR MSG_JUNCTION_DEVIATION = _UxGT("Junction Dev"); - LSTR MSG_MAX_SPEED = _UxGT("Max rýchl. (mm/s)"); - LSTR MSG_VMAX_A = _UxGT("Max rýchl. ") STR_A; - LSTR MSG_VMAX_B = _UxGT("Max rýchl. ") STR_B; - LSTR MSG_VMAX_C = _UxGT("Max rýchl. ") STR_C; - LSTR MSG_VMAX_N = _UxGT("Max rýchl. @"); - LSTR MSG_VMAX_E = _UxGT("Max rýchl. E"); - LSTR MSG_VMAX_EN = _UxGT("Max rýchl. *"); - LSTR MSG_VMIN = _UxGT("Vmin"); - LSTR MSG_VTRAV_MIN = _UxGT("VPrej Min"); - LSTR MSG_ACCELERATION = _UxGT("Akcelerácia"); - LSTR MSG_AMAX_A = _UxGT("Amax ") STR_A; - LSTR MSG_AMAX_B = _UxGT("Amax ") STR_B; - LSTR MSG_AMAX_C = _UxGT("Amax ") STR_C; - LSTR MSG_AMAX_N = _UxGT("Amax @"); - LSTR MSG_AMAX_E = _UxGT("Amax E"); - LSTR MSG_AMAX_EN = _UxGT("Amax *"); - LSTR MSG_A_RETRACT = _UxGT("A-retrakt"); - LSTR MSG_A_TRAVEL = _UxGT("A-prejazd"); - LSTR MSG_INPUT_SHAPING = _UxGT("Tvarov. vstupu"); - LSTR MSG_SHAPING_ENABLE_N = _UxGT("Povol. tvarov. @"); - LSTR MSG_SHAPING_DISABLE_N = _UxGT("Zakáz. tvarov. @"); - LSTR MSG_SHAPING_FREQ_N = _UxGT("Frekvencia @"); - LSTR MSG_SHAPING_ZETA_N = _UxGT("Tlmenie @"); - LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("Max. frekvencia"); - LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("Min. posun"); - LSTR MSG_STEPS_PER_MM = _UxGT("Kroky/mm"); - LSTR MSG_A_STEPS = STR_A _UxGT(" krokov/mm"); - LSTR MSG_B_STEPS = STR_B _UxGT(" krokov/mm"); - LSTR MSG_C_STEPS = STR_C _UxGT(" krokov/mm"); - LSTR MSG_N_STEPS = _UxGT("@ krokov/mm"); - LSTR MSG_E_STEPS = _UxGT("E krokov/mm"); - LSTR MSG_EN_STEPS = _UxGT("* krokov/mm"); - LSTR MSG_TEMPERATURE = _UxGT("Teplota"); - LSTR MSG_MOTION = _UxGT("Pohyb"); - LSTR MSG_FILAMENT = _UxGT("Filament"); - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E v mm") SUPERSCRIPT_THREE; - LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("E Limit v mm") SUPERSCRIPT_THREE; - LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("E Limit *"); - LSTR MSG_FILAMENT_DIAM = _UxGT("Priem. fil."); - LSTR MSG_FILAMENT_DIAM_E = _UxGT("Priem. fil. *"); - LSTR MSG_FILAMENT_UNLOAD = _UxGT("Vysunúť mm"); - LSTR MSG_FILAMENT_LOAD = _UxGT("Zaviesť mm"); - LSTR MSG_SEGMENTS_PER_SECOND = _UxGT("Segmentov/sek"); - LSTR MSG_DRAW_MIN_X = _UxGT("Min. X kresby"); - LSTR MSG_DRAW_MAX_X = _UxGT("Max. X kresby"); - LSTR MSG_DRAW_MIN_Y = _UxGT("Min. Y kresby"); - LSTR MSG_DRAW_MAX_Y = _UxGT("Max. Y kresby"); - LSTR MSG_MAX_BELT_LEN = _UxGT("Max. dĺžka pásu"); - LSTR MSG_ADVANCE_K = _UxGT("K pre posun"); - LSTR MSG_ADVANCE_K_E = _UxGT("K pre posun *"); - LSTR MSG_CONTRAST = _UxGT("Kontrast LCD"); - LSTR MSG_BRIGHTNESS = _UxGT("Jas LCD"); - LSTR MSG_SCREEN_TIMEOUT = _UxGT("Čas. limit LCD (m)"); - LSTR MSG_BRIGHTNESS_OFF = _UxGT("Podsviet. vyp."); - LSTR MSG_STORE_EEPROM = _UxGT("Uložiť nastavenie"); - LSTR MSG_LOAD_EEPROM = _UxGT("Načítať nastavenie"); - LSTR MSG_RESTORE_DEFAULTS = _UxGT("Obnoviť nastavenie"); - LSTR MSG_INIT_EEPROM = _UxGT("Inicializ. EEPROM"); - LSTR MSG_ERR_EEPROM_CRC = _UxGT("Chyba: EEPROM CRC"); - LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Chyba: Veľkosť EEPROM"); - LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Chyba: Verzia EEPROM"); - LSTR MSG_SETTINGS_STORED = _UxGT("Nastavenie uložené"); - LSTR MSG_MEDIA_UPDATE = _UxGT("Aktualiz. z karty"); - LSTR MSG_RESET_PRINTER = _UxGT("Reštart. tlačiar."); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Obnoviť"); - LSTR MSG_INFO_SCREEN = _UxGT("Info. obrazovka"); - LSTR MSG_INFO_MACHINENAME = _UxGT("Názov stroja"); - LSTR MSG_INFO_SIZE = _UxGT("Rozmer"); - LSTR MSG_INFO_FWVERSION = _UxGT("Verzia firmvéru"); - LSTR MSG_INFO_BUILD = _UxGT("Čas zostavenia"); - LSTR MSG_PREPARE = _UxGT("Príprava tlače"); - LSTR MSG_TUNE = _UxGT("Doladenie tlače"); - LSTR MSG_POWER_MONITOR = _UxGT("Monitor napájania"); - LSTR MSG_CURRENT = _UxGT("Prúd"); - LSTR MSG_VOLTAGE = _UxGT("Napätie"); - LSTR MSG_POWER = _UxGT("Výkon"); - LSTR MSG_START_PRINT = _UxGT("Spustiť tlač"); - LSTR MSG_BUTTON_NEXT = _UxGT("Ďalší"); - LSTR MSG_BUTTON_INIT = _UxGT("Inicial."); - LSTR MSG_BUTTON_STOP = _UxGT("Zastaviť"); - LSTR MSG_BUTTON_PRINT = _UxGT("Tlačiť"); - LSTR MSG_BUTTON_RESET = _UxGT("Vynulovať"); - LSTR MSG_BUTTON_IGNORE = _UxGT("Ignorovať"); - LSTR MSG_BUTTON_CANCEL = _UxGT("Zrušiť"); - LSTR MSG_BUTTON_CONFIRM = _UxGT("Potvrdiť"); - LSTR MSG_BUTTON_CONTINUE = _UxGT("Pokračovať"); - LSTR MSG_BUTTON_DONE = _UxGT("Hotovo"); - LSTR MSG_BUTTON_BACK = _UxGT("Naspäť"); - LSTR MSG_BUTTON_PROCEED = _UxGT("Pokračovať"); - LSTR MSG_BUTTON_SKIP = _UxGT("Preskočiť"); - LSTR MSG_BUTTON_INFO = _UxGT("Informácie"); - LSTR MSG_BUTTON_LEVEL = _UxGT("Vyrovnať"); - LSTR MSG_BUTTON_PAUSE = _UxGT("Pauza"); - LSTR MSG_BUTTON_RESUME = _UxGT("Obnoviť"); - LSTR MSG_BUTTON_ADVANCED = _UxGT("Pokročilé"); - LSTR MSG_BUTTON_SAVE = _UxGT("Uložiť"); - LSTR MSG_BUTTON_PURGE = _UxGT("Vytlačiť"); - LSTR MSG_PAUSING = _UxGT("Pozastavujem..."); - LSTR MSG_PAUSE_PRINT = _UxGT("Pozastaviť tlač"); - LSTR MSG_ADVANCED_PAUSE = _UxGT("Pokročil. pauza"); - LSTR MSG_RESUME_PRINT = _UxGT("Obnoviť tlač"); - LSTR MSG_STOP_PRINT = _UxGT("Zastaviť tlač"); - LSTR MSG_OUTAGE_RECOVERY = _UxGT("Obnova po výp. nap."); - LSTR MSG_HOST_START_PRINT = _UxGT("Spustiť z hosta"); - LSTR MSG_PRINTING_OBJECT = _UxGT("Tlačím obj."); - LSTR MSG_CANCEL_OBJECT = _UxGT("Zrušiť obj."); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Zrušiť obj. {"); - LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Pokrač. v úlohe"); - LSTR MSG_MEDIA_MENU = _UxGT("Tlač z karty"); - LSTR MSG_TURN_OFF = _UxGT("Vypnit. teraz"); - LSTR MSG_END_LOOPS = _UxGT("Ukončiť sluč."); - LSTR MSG_NO_MEDIA = _UxGT("Žiadna karta"); - LSTR MSG_DWELL = _UxGT("Spím..."); - LSTR MSG_USERWAIT = _UxGT("Pokrač. kliknutím..."); - LSTR MSG_PRINT_PAUSED = _UxGT("Tlač pozastavená"); - LSTR MSG_PRINTING = _UxGT("Tlačím..."); - LSTR MSG_STOPPING = _UxGT("Zastavujem..."); - LSTR MSG_REMAINING_TIME = _UxGT("Zostávajúci"); - LSTR MSG_PRINT_ABORTED = _UxGT("Tlač zrušená"); - LSTR MSG_PRINT_DONE = _UxGT("Tlač dokončená"); - LSTR MSG_PRINTER_KILLED = _UxGT("Tlačiareň zastavená!"); - LSTR MSG_NO_MOVE = _UxGT("Žiadny pohyb."); - LSTR MSG_KILLED = _UxGT("PRERUŠENÉ. "); - LSTR MSG_STOPPED = _UxGT("ZASTAVENÉ. "); - LSTR MSG_FWRETRACT = _UxGT("Firmv. retrakcia"); - LSTR MSG_CONTROL_RETRACT = _UxGT("Retrakt mm"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Výmena Re.mm"); - LSTR MSG_CONTROL_RETRACTF = _UxGT("Retraktovať V"); - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Zdvih Z mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Unretr. mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("S Unretr. mm"); - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Unretract V"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V"); - LSTR MSG_AUTORETRACT = _UxGT("Auto-Retract"); - LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Dĺžka výmeny"); - LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Vymeniť naviac"); - LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Dĺžka vytlačenia"); - LSTR MSG_TOOL_CHANGE = _UxGT("Výmena nástroja"); - LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Zdvihnúť Z"); - LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Primárna rýchl."); - LSTR MSG_SINGLENOZZLE_WIPE_RETRACT = _UxGT("Očist. retrakciou"); - LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Rýchl. retrakcie"); - LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Parkovať hlavu"); - LSTR MSG_PARK_FAILED = _UxGT("Hlava sa nedá zapark."); - LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Rýchl. obnovenia"); - LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Rýchlosť vent."); - LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Doba fúkania"); - LSTR MSG_TOOL_MIGRATION_ON = _UxGT("Auto-Zap"); - LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("Auto-Vyp"); - LSTR MSG_TOOL_MIGRATION = _UxGT("Výmena nástroja"); - LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("Auto-výmena"); - LSTR MSG_TOOL_MIGRATION_END = _UxGT("Posl. extruder"); - LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("Vymeniť za *"); - LSTR MSG_FILAMENTCHANGE = _UxGT("Vymeniť filament"); - LSTR MSG_FILAMENTCHANGE_E = _UxGT("Vymeniť filament *"); - LSTR MSG_FILAMENTLOAD = _UxGT("Zaviesť filament"); - LSTR MSG_FILAMENTLOAD_E = _UxGT("Zaviesť filament *"); - LSTR MSG_FILAMENTUNLOAD = _UxGT("Vysunúť filament"); - LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Vysunúť filament *"); - LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Vysunúť všetko"); - - LSTR MSG_ATTACH_MEDIA = _UxGT("Načítať SD kartu"); - LSTR MSG_ATTACH_SD = _UxGT("Načítať SD kartu"); - LSTR MSG_ATTACH_USB = _UxGT("Načítať USB disk"); - LSTR MSG_CHANGE_MEDIA = _UxGT("Vymeniť kartu"); - LSTR MSG_RELEASE_MEDIA = _UxGT("Odpojiť kartu"); - LSTR MSG_RUN_AUTOFILES = _UxGT("Auto-štart"); - - LSTR MSG_ZPROBE_OUT = _UxGT("Sonda Z mimo podl."); - LSTR MSG_SKEW_FACTOR = _UxGT("Faktor skosenia"); - LSTR MSG_BLTOUCH = _UxGT("BLTouch"); - LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Self-Test"); - LSTR MSG_BLTOUCH_RESET = _UxGT("Reset"); - LSTR MSG_BLTOUCH_STOW = _UxGT("Zasunúť"); - LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Vysunúť"); - LSTR MSG_BLTOUCH_SW_MODE = _UxGT("Režim SW"); - LSTR MSG_BLTOUCH_SPEED_MODE = _UxGT("Vysoká rýchl."); - LSTR MSG_BLTOUCH_5V_MODE = _UxGT("Režim 5V"); - LSTR MSG_BLTOUCH_OD_MODE = _UxGT("Režim OD"); - LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("Ulož. režim"); - LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Prepnúť do 5V"); - LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Prepnúť do OD"); - LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Zobraziť režim"); - LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("POZOR: Zlé nastav. môže spôsobiť poškoden. Pokračovať?"); - LSTR MSG_TOUCHMI_PROBE = _UxGT("TouchMI"); - LSTR MSG_TOUCHMI_INIT = _UxGT("Inicializ. TouchMI"); - LSTR MSG_TOUCHMI_ZTEST = _UxGT("Test Z ofsetu"); - LSTR MSG_TOUCHMI_SAVE = _UxGT("Uložiť"); - LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("Zasunúť TouchMI"); - LSTR MSG_MANUAL_DEPLOY = _UxGT("Zasunúť sondu Z"); - LSTR MSG_MANUAL_STOW = _UxGT("Vysunúť sondu Z"); - LSTR MSG_HOME_FIRST = _UxGT("Najskôr os %s domov"); - LSTR MSG_ZPROBE_SETTINGS = _UxGT("Nastav. sondy"); - LSTR MSG_ZPROBE_OFFSETS = _UxGT("Ofsety sondy Z"); - LSTR MSG_ZPROBE_XOFFSET = _UxGT("X ofset"); - LSTR MSG_ZPROBE_YOFFSET = _UxGT("Y ofset"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Z ofset"); - LSTR MSG_ZPROBE_OFFSET_N = _UxGT("@ ofset"); - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Krok Z posuň"); - LSTR MSG_ZPROBE_MARGIN = _UxGT("Hranica sondy"); - LSTR MSG_Z_FEED_RATE = _UxGT("Rýchl. posunu Z"); - LSTR MSG_ENABLE_HS_MODE = _UxGT("Povoliť rež. HS"); - LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Pos. trysku k podl."); - LSTR MSG_BABYSTEP_X = _UxGT("Babystep X"); - LSTR MSG_BABYSTEP_Y = _UxGT("Babystep Y"); - LSTR MSG_BABYSTEP_Z = _UxGT("Babystep Z"); - LSTR MSG_BABYSTEP_N = _UxGT("Babystep @"); - LSTR MSG_BABYSTEP_TOTAL = _UxGT("Celkom"); - LSTR MSG_ENDSTOP_ABORT = _UxGT("Zastavenie Endstop"); - LSTR MSG_ERR_HEATING_FAILED = _UxGT("Chyba ohrevu"); - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Chyba: REDUND. TEP."); - LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("TEPLOTNÝ SKOK"); - LSTR MSG_ERR_TEMP_MALFUNCTION = _UxGT("TEPLOTNÁ PORUCHA"); - LSTR MSG_ERR_COOLING_FAILED = _UxGT("Ochladz. zlyhalo"); - LSTR MSG_ERR_MAXTEMP = _UxGT("Chyba: MAXTEMP"); - LSTR MSG_ERR_MINTEMP = _UxGT("Chyba: MINTEMP"); - LSTR MSG_HALTED = _UxGT("TLAČIAREŇ ZASTAVENÁ"); - LSTR MSG_PLEASE_WAIT = _UxGT("Čakajte prosím..."); - LSTR MSG_PLEASE_RESET = _UxGT("Reštartuje ju"); - LSTR MSG_PREHEATING = _UxGT("Zahrievanie..."); - LSTR MSG_HEATING = _UxGT("Ohrev..."); - LSTR MSG_COOLING = _UxGT("Ochladzovanie..."); - LSTR MSG_BED_HEATING = _UxGT("Ohrev podložky..."); - LSTR MSG_BED_COOLING = _UxGT("Ochladz. podložky..."); - LSTR MSG_PROBE_HEATING = _UxGT("Ohrev sondy..."); - LSTR MSG_PROBE_COOLING = _UxGT("Ochladz. sondy..."); - LSTR MSG_CHAMBER_HEATING = _UxGT("Ohrev komory..."); - LSTR MSG_CHAMBER_COOLING = _UxGT("Ochladz. komory..."); - LSTR MSG_LASER_COOLING = _UxGT("Ochladz. lasera..."); - LSTR MSG_DELTA_CALIBRATE = _UxGT("Delta kalibrácia"); - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Kalibrovať X"); - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Kalibrovať Y"); - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Kalibrovať Z"); - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Kalibrovať stred"); - LSTR MSG_DELTA_SETTINGS = _UxGT("Delta nastavenia"); - LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Auto-kalibrácia"); - LSTR MSG_DELTA_DIAG_ROD = _UxGT("Diag. rameno"); - LSTR MSG_DELTA_HEIGHT = _UxGT("Výška"); - LSTR MSG_DELTA_RADIUS = _UxGT("Polomer"); - LSTR MSG_INFO_MENU = _UxGT("O tlačiarni"); - LSTR MSG_INFO_PRINTER_MENU = _UxGT("Info. o tlačiarni"); - LSTR MSG_3POINT_LEVELING = _UxGT("3-bodové rovnanie"); - LSTR MSG_LINEAR_LEVELING = _UxGT("Lineárne rovnanie"); - LSTR MSG_BILINEAR_LEVELING = _UxGT("Bilineárne rovnanie"); - LSTR MSG_UBL_LEVELING = _UxGT("UBL rovnanie"); - LSTR MSG_MESH_LEVELING = _UxGT("Mriežkové rovnanie"); - LSTR MSG_MESH_DONE = _UxGT("Mriežka dokončená"); - LSTR MSG_INFO_STATS_MENU = _UxGT("Štatistika"); - LSTR MSG_RESET_STATS = _UxGT("Vynulovať štatis.?"); - LSTR MSG_INFO_BOARD_MENU = _UxGT("Info. o doske"); - LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Termistory"); - LSTR MSG_INFO_EXTRUDERS = _UxGT("Extrudéry"); - LSTR MSG_INFO_BAUDRATE = _UxGT("Rýchlosť"); - LSTR MSG_INFO_PROTOCOL = _UxGT("Protokol"); - LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Tepl. ochrana: VYP"); - LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Tepl. ochrana: ZAP"); - LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Vypr.čas nečinnosti"); - LSTR MSG_FAN_SPEED_FAULT = _UxGT("Chyba rýchl. vent."); - - LSTR MSG_CASE_LIGHT = _UxGT("Osvetlenie"); - LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Jas svetla"); - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Nesprávna tlačiareň"); - - LSTR MSG_COLORS_GET = _UxGT("Zvoliť farbu"); // ProUI - LSTR MSG_COLORS_SELECT = _UxGT("Zvoliť farby"); // ProUI - LSTR MSG_COLORS_APPLIED = _UxGT("Farby aplikované"); // ProUI - LSTR MSG_COLORS_RED = _UxGT("Červená"); // ProUI / JyersUI - LSTR MSG_COLORS_GREEN = _UxGT("Zelená"); // ProUI / JyersUI - LSTR MSG_COLORS_BLUE = _UxGT("Modrá"); // ProUI / JyersUI - LSTR MSG_COLORS_WHITE = _UxGT("Biela"); // ProUI - LSTR MSG_UI_LANGUAGE = _UxGT("Jazyk rozhrania"); // ProUI - LSTR MSG_SOUND_ENABLE = _UxGT("Povoliť zvuky"); // ProUI - LSTR MSG_LOCKSCREEN = _UxGT("Uzamknúť obrazovku"); // ProUI - LSTR MSG_LOCKSCREEN_LOCKED = _UxGT("Tlačiareň je uzamknutá,"); // ProUI - LSTR MSG_LOCKSCREEN_UNLOCK = _UxGT("potiahnite pre odomknutie."); // ProUI - LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Prosím čakajte do reštartu."); // ProUI - LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Žiadna karta"); // ProUI - LSTR MSG_PLEASE_PREHEAT = _UxGT("Prosím zahrejte"); // ProUI - - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Tlače"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Čas"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Najdlhšia"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Vytlačené"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Dokončené"); - LSTR MSG_INFO_MIN_TEMP = _UxGT("Teplota min"); - LSTR MSG_INFO_MAX_TEMP = _UxGT("Teplota max"); - LSTR MSG_INFO_PSU = _UxGT("Nap. zdroj"); - - LSTR MSG_DRIVE_STRENGTH = _UxGT("Budenie motorov"); - LSTR MSG_DAC_PERCENT_N = _UxGT("@ Motor %"); - LSTR MSG_ERROR_TMC = _UxGT("CHYBA KOMUNIKÁ. TMC"); - LSTR MSG_DAC_EEPROM_WRITE = _UxGT("Uložiť do EEPROM"); - LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("VÝMENA FILAMENTU"); - LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("PAUZA TLAČE"); - LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("ZAVEDENIE FILAMENTU"); - LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("VYSUNUTIE FILAMENTU"); - LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("MOŽNOSTI POKRAČ.:"); - LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Vytlačiť viacej"); - LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Obnoviť tlač"); - LSTR MSG_FILAMENT_CHANGE_PURGE_CONTINUE = _UxGT("Vytlač. alebo pokrač.?"); // ProUI - LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Tryska: "); - LSTR MSG_RUNOUT_SENSOR = _UxGT("Senzor filamentu"); - LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("Vzd. mm fil. senz."); - LSTR MSG_EXTRUDER_MIN_TEMP = _UxGT("Min. tepl. extrud."); // ProUI - LSTR MSG_FANCHECK = _UxGT("Kontrola rýchl."); - LSTR MSG_KILL_HOMING_FAILED = _UxGT("Parkovanie zlyhalo"); - LSTR MSG_LCD_PROBING_FAILED = _UxGT("Kalibrácia zlyhala"); - - LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("VYBERTE FILAMENT"); - LSTR MSG_MMU2_MENU = _UxGT("MMU2"); - LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("Aktualizujte FW MMU!"); - LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU potrebuje zásah."); - LSTR MSG_MMU2_RESUME = _UxGT("Obnoviť tlač"); - LSTR MSG_MMU2_RESUMING = _UxGT("Obnovovanie..."); - LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("Zaviesť filament"); - LSTR MSG_MMU2_LOAD_ALL = _UxGT("Zaviesť všetky"); - LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Zaviesť po trysku"); - LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("Vysunúť filament"); - LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("Vysunúť filament ~"); - LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Vyňať filament"); - LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Zavádzanie fil. %i..."); - LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Vysúvanie fil. ..."); - LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Vysúvanie fil. ..."); - LSTR MSG_MMU2_ALL = _UxGT("Všetky"); - LSTR MSG_MMU2_FILAMENT_N = _UxGT("Filament ~"); - LSTR MSG_MMU2_RESET = _UxGT("Reštartovať MMU"); - LSTR MSG_MMU2_RESETTING = _UxGT("Reštart MMU..."); - LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Odstráňte, kliknite"); - - LSTR MSG_MIX = _UxGT("Mix"); - LSTR MSG_MIX_COMPONENT_N = _UxGT("Zložka ~"); - LSTR MSG_MIXER = _UxGT("Mixér"); - LSTR MSG_GRADIENT = _UxGT("Gradient"); - LSTR MSG_FULL_GRADIENT = _UxGT("Plný gradient"); - LSTR MSG_TOGGLE_MIX = _UxGT("Prepnúť mix"); - LSTR MSG_CYCLE_MIX = _UxGT("Cyklický mix"); - LSTR MSG_GRADIENT_MIX = _UxGT("Gradientný mix"); - LSTR MSG_REVERSE_GRADIENT = _UxGT("Otočiť gradient"); - LSTR MSG_ACTIVE_VTOOL = _UxGT("Aktívny V-tool"); - LSTR MSG_START_VTOOL = _UxGT("Počiat. V-tool"); - LSTR MSG_END_VTOOL = _UxGT("Konečn. V-tool"); - LSTR MSG_GRADIENT_ALIAS = _UxGT("Alias V-tool"); - LSTR MSG_RESET_VTOOLS = _UxGT("Vynulovať V-tools"); - LSTR MSG_COMMIT_VTOOL = _UxGT("Uložiť V-tool Mix"); - LSTR MSG_VTOOLS_RESET = _UxGT("V-tools vynulované"); - LSTR MSG_START_Z = _UxGT("Počiat.Z:"); - LSTR MSG_END_Z = _UxGT("Konečn.Z:"); - - LSTR MSG_GAMES = _UxGT("Hry"); - LSTR MSG_BRICKOUT = _UxGT("Brickout"); - LSTR MSG_INVADERS = _UxGT("Nájazdníci"); - LSTR MSG_SNAKE = _UxGT("Had"); - LSTR MSG_MAZE = _UxGT("Bludisko"); - - LSTR MSG_BAD_PAGE = _UxGT("Chyb. index stránky"); - LSTR MSG_BAD_PAGE_SPEED = _UxGT("Chyb. rých. stránky"); - - LSTR MSG_EDIT_PASSWORD = _UxGT("Zmeniť heslo"); - LSTR MSG_LOGIN_REQUIRED = _UxGT("Vyžad. sa prihl."); - LSTR MSG_PASSWORD_SETTINGS = _UxGT("Nastavenie hesla"); - LSTR MSG_ENTER_DIGIT = _UxGT("Zvoľte číslo"); - LSTR MSG_CHANGE_PASSWORD = _UxGT("Zmeniť heslo"); - LSTR MSG_REMOVE_PASSWORD = _UxGT("Odstrániť heslo"); - LSTR MSG_PASSWORD_SET = _UxGT("Heslo je "); - LSTR MSG_START_OVER = _UxGT("Začať odznova"); - LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Nezabudnite uložiť!"); - LSTR MSG_PASSWORD_REMOVED = _UxGT("Heslo odstránené"); - - // - // Filament Change screens show up to 2 lines on a 3-line display - // - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Kliknite pre pokr.")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parkovanie...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Čakajte prosím...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Vložte a kliknite")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Kliknite pre ohrev")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Ohrev...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Vysúvanie...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Zavádzanie...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Vytlačovanie...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Klik. pre dokonč.")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Pokračovanie...")); - - LSTR MSG_TMC_DRIVERS = _UxGT("Ovládače TMC"); - LSTR MSG_TMC_CURRENT = _UxGT("Prúd ovládača"); - LSTR MSG_TMC_HYBRID_THRS = _UxGT("Hybridný prah"); - LSTR MSG_TMC_HOMING_THRS = _UxGT("Bezsenzor. domov"); - LSTR MSG_TMC_STEPPING_MODE = _UxGT("Režim krokovania"); - LSTR MSG_TMC_STEALTHCHOP = _UxGT("StealthChop"); - - LSTR MSG_SERVICE_RESET = _UxGT("Vynulovať"); - LSTR MSG_SERVICE_IN = _UxGT("za:"); - LSTR MSG_BACKLASH = _UxGT("Kompenz. vôle"); - LSTR MSG_BACKLASH_CORRECTION = _UxGT("Korekcia"); - LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Vyhladzovanie"); - - LSTR MSG_LEVEL_X_AXIS = _UxGT("Vyrovnať os X"); - LSTR MSG_AUTO_CALIBRATE = _UxGT("Auto-kalibrovať"); - LSTR MSG_FTDI_HEATER_TIMEOUT = _UxGT("Vypršal čas ohrevu, znížená teplota. Stlačte OK pre ohrev a ešte raz pre obnovu."); - LSTR MSG_HEATER_TIMEOUT = _UxGT("Vypršal čas ohrevu"); - LSTR MSG_REHEAT = _UxGT("Zohriať"); - LSTR MSG_REHEATING = _UxGT("Zohrievanie..."); - LSTR MSG_REHEATDONE = _UxGT("Zohrievanie dokonč."); - - LSTR MSG_PROBE_WIZARD = _UxGT("Sprievodca sondy Z"); - LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Referencia Z"); - LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Presúvam na pozíciu"); - - LSTR MSG_XATC = _UxGT("Sprievodca X-Twist"); - LSTR MSG_XATC_DONE = _UxGT("Spriev. X-Twist dokonč.!"); - LSTR MSG_XATC_UPDATE_Z_OFFSET = _UxGT("Aktual. ofset sondy Z na "); - - LSTR MSG_SOUND = _UxGT("Zvuk"); - - LSTR MSG_TOP_LEFT = _UxGT("Ľavý horný"); - LSTR MSG_BOTTOM_LEFT = _UxGT("Ľavý dolný"); - LSTR MSG_TOP_RIGHT = _UxGT("Pravý horný"); - LSTR MSG_BOTTOM_RIGHT = _UxGT("Pravý dolný"); - LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Kalibrácia dokončená"); - LSTR MSG_CALIBRATION_FAILED = _UxGT("Kalibrácia zlyhala"); - - LSTR MSG_DRIVER_BACKWARD = _UxGT(" spätný chod ovl."); - - LSTR MSG_SD_CARD = _UxGT("SD karta"); - LSTR MSG_USB_DISK = _UxGT("USB disk"); - - LSTR MSG_HOST_SHUTDOWN = _UxGT("Vypnúť hosta"); - - // DGUS-Specific message strings, not used elsewhere - LSTR DGUS_MSG_TEMP_TOO_HIGH = _UxGT("Príliš vysoká tepl."); + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" pripravená."); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = _UxGT("Karta vložená"); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = _UxGT("Karta vybraná"); // (MEDIA_TYPE_EN) Removed + LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstopy"); // Endstops + LSTR MSG_MAIN_MENU = _UxGT("Hlavná ponuka"); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("Uvolniť motory"); // Disable Steppers + LSTR MSG_HOMING = _UxGT("Parkovanie"); // Homing + LSTR MSG_AUTO_HOME = _UxGT("Domovská pozícia"); // Auto Home + LSTR MSG_AUTO_HOME_X = _UxGT("Domov os X"); // Home X + LSTR MSG_AUTO_HOME_Y = _UxGT("Domov os Y"); // Home Y + LSTR MSG_AUTO_HOME_Z = _UxGT("Domov os Z"); // Home Z + LSTR MSG_LEVEL_BED_HOMING = _UxGT("Parkovanie XYZ"); // Homing XYZ + LSTR MSG_LEVEL_BED_WAITING = _UxGT("Kliknutím začnete"); // Click to Begin + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Ďalší bod"); // Next Point + LSTR MSG_LEVEL_BED_DONE = _UxGT("Vyrovnanie hotové!"); // Leveling Done! + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Nastav. dom. ofsety"); // Set Home Offsets + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Ofsety nastavené"); // Offsets Applied + LSTR MSG_PREHEAT_1 = _UxGT("Zahriať ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = _UxGT("Zahriať ") PREHEAT_1_LABEL " ~"; // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" hotend"); // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" hotend ~"); // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_1_ALL = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" všetko"); // Preheat (PREHEAT_1_LABEL) All + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" podlož"); // Preheat (PREHEAT_1_LABEL) Bed + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Zahriať ") PREHEAT_1_LABEL _UxGT(" nast."); // Preheat (PREHEAT_1_LABEL) Conf + LSTR MSG_PREHEAT_M = _UxGT("Zahriať $"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("Zahriať $ ~"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("Zahriať $ hotend"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("Zahriať $ hotend ~"); // Preheat $ End ~ + LSTR MSG_PREHEAT_M_ALL = _UxGT("Zahriať $ všetko"); // Preheat $ All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Zahriať $ podlož"); // Preheat $ Bed + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Zahriať $ nast."); // Preheat $ Conf + LSTR MSG_COOLDOWN = _UxGT("Schladiť"); // Cooldown + LSTR MSG_SWITCH_PS_ON = _UxGT("Zapnúť napájanie"); // Switch Power On + LSTR MSG_SWITCH_PS_OFF = _UxGT("Vypnúť napájanie"); // Switch Power Off + LSTR MSG_EXTRUDE = _UxGT("Vytlačiť (extr.)"); // Extrude + LSTR MSG_RETRACT = _UxGT("Vytiahnuť (retr.)"); // Retract + LSTR MSG_MOVE_AXIS = _UxGT("Posunúť osy"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("Sonda a vyrovnanie"); // Probe and Level + LSTR MSG_BED_LEVELING = _UxGT("Vyrovnanie podložky"); // Bed Leveling + LSTR MSG_LEVEL_BED = _UxGT("Vyrovnať podložku"); // Level Bed + LSTR MSG_MOVE_X = _UxGT("Posunúť X"); // Move X + LSTR MSG_MOVE_Y = _UxGT("Posunúť Y"); // Move Y + LSTR MSG_MOVE_Z = _UxGT("Posunúť Z"); // Move Z + LSTR MSG_MOVE_N = _UxGT("Posunúť @"); // Move @ + LSTR MSG_MOVE_E = _UxGT("Extrudér"); // Move Extruder + LSTR MSG_MOVE_EN = _UxGT("Extrudér *"); // Move * + LSTR MSG_MOVE_N_MM = _UxGT("Posunúť o $mm"); // Move $mm + LSTR MSG_MOVE_N_IN = _UxGT("Posunúť o $in"); // Move $in + LSTR MSG_MOVE_N_DEG = _UxGT("Posunúť o $") LCD_STR_DEGREE; // Move $(LCD_STR_DEGREE) + LSTR MSG_SPEED = _UxGT("Rýchlosť"); // Speed + LSTR MSG_MESH_Z_OFFSET = _UxGT("Výška podl."); // Bed Z + LSTR MSG_NOZZLE = _UxGT("Tryska"); // Nozzle + LSTR MSG_NOZZLE_N = _UxGT("Tryska ~"); // Nozzle ~ + LSTR MSG_BED = _UxGT("Podložka"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("Rýchlosť vent."); // Fan Speed + LSTR MSG_FAN_SPEED_N = _UxGT("Rýchlosť vent. ~"); // Fan Speed ~ + LSTR MSG_FLOW = _UxGT("Prietok"); // Flow + LSTR MSG_FLOW_N = _UxGT("Prietok ~"); // Flow ~ + LSTR MSG_CONTROL = _UxGT("Ovládanie"); // Control + LSTR MSG_AUTOTEMP = _UxGT("Auto-teplota"); // Autotemp + LSTR MSG_SELECT_E = _UxGT("Vybrať *"); // Select * + LSTR MSG_ACC = _UxGT("Zrýchlenie"); // Accel + LSTR MSG_VTRAV_MIN = _UxGT("VPrej Min"); // Min Travel Speed + LSTR MSG_ACCELERATION = _UxGT("Akcelerácia"); // Acceleration + LSTR MSG_AMAX_A = _UxGT("Amax ") STR_A; // Max (STR_A) Accel + LSTR MSG_AMAX_B = _UxGT("Amax ") STR_B; // Max (STR_B) Accel + LSTR MSG_AMAX_C = _UxGT("Amax ") STR_C; // Max (STR_C) Accel + LSTR MSG_AMAX_N = _UxGT("Amax @"); // Max @ Accel + LSTR MSG_AMAX_E = _UxGT("Amax E"); // Max E Accel + LSTR MSG_AMAX_EN = _UxGT("Amax *"); // Max * Accel + LSTR MSG_A_RETRACT = _UxGT("A-retrakt"); // Retract Accel + LSTR MSG_A_TRAVEL = _UxGT("A-prejazd"); // Travel Accel + LSTR MSG_STEPS_PER_MM = _UxGT("Kroky/mm"); // Steps/mm + LSTR MSG_A_STEPS = STR_A _UxGT(" krokov/mm"); // (STR_A) Steps/mm + LSTR MSG_B_STEPS = STR_B _UxGT(" krokov/mm"); // (STR_B) Steps/mm + LSTR MSG_C_STEPS = STR_C _UxGT(" krokov/mm"); // (STR_C) Steps/mm + LSTR MSG_N_STEPS = _UxGT("@ krokov/mm"); // @ steps/mm + LSTR MSG_E_STEPS = _UxGT("E krokov/mm"); // E steps/mm + LSTR MSG_EN_STEPS = _UxGT("* krokov/mm"); // * Steps/mm + LSTR MSG_TEMPERATURE = _UxGT("Teplota"); // Temperature + LSTR MSG_MOTION = _UxGT("Pohyb"); // Motion + LSTR MSG_FILAMENT = _UxGT("Filament"); // Filament + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E v mm") SUPERSCRIPT_THREE; // E in mm(SUPERSCRIPT_THREE) + LSTR MSG_FILAMENT_DIAM = _UxGT("Priem. fil."); // Fil. Dia. + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Priem. fil. *"); // Fil. Dia. * + LSTR MSG_CONTRAST = _UxGT("Kontrast LCD"); // LCD Contrast + LSTR MSG_STORE_EEPROM = _UxGT("Uložiť nastavenie"); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("Načítať nastavenie"); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("Obnoviť nastavenie"); // Restore Defaults + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Obnoviť"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT("Info. obrazovka"); // Info Screen + LSTR MSG_PREPARE = _UxGT("Príprava tlače"); // Prepare + LSTR MSG_TUNE = _UxGT("Doladenie tlače"); // Tune + LSTR MSG_PAUSE_PRINT = _UxGT("Pozastaviť tlač"); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("Obnoviť tlač"); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("Zastaviť tlač"); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("Tlač z karty"); // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = _UxGT("Žiadna karta"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_DWELL = _UxGT("Spím..."); // Sleep... + LSTR MSG_USERWAIT = _UxGT("Pokrač. kliknutím..."); // Click to Resume... + LSTR MSG_PRINT_ABORTED = _UxGT("Tlač zrušená"); // Print Aborted + LSTR MSG_NO_MOVE = _UxGT("Žiadny pohyb."); // No Move. + LSTR MSG_KILLED = _UxGT("PRERUŠENÉ. "); // KILLED. + LSTR MSG_STOPPED = _UxGT("ZASTAVENÉ. "); // STOPPED. + LSTR MSG_CONTROL_RETRACT = _UxGT("Retrakt mm"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Výmena Re.mm"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACTF = _UxGT("Retraktovať V"); // Retract V + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Zdvih Z mm"); // Hop mm + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Unretr. mm"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("S Unretr. mm"); // S Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Unretract V"); // Unretract V + LSTR MSG_AUTORETRACT = _UxGT("Auto-Retract"); // Auto-Retract + LSTR MSG_FILAMENTCHANGE = _UxGT("Vymeniť filament"); // Change Filament + LSTR MSG_FILAMENTCHANGE_E = _UxGT("Vymeniť filament *"); // Change * Filament + LSTR MSG_ATTACH_MEDIA = _UxGT("Načítať SD kartu"); // Attach (MEDIA_TYPE_EN) + LSTR MSG_ATTACH_SD = _UxGT("Načítať SD kartu"); // Attach SD Card + LSTR MSG_ATTACH_USB = _UxGT("Načítať USB disk"); // Attach USB Drive + LSTR MSG_CHANGE_MEDIA = _UxGT("Vymeniť kartu"); // Refresh (MEDIA_TYPE_EN) + LSTR MSG_RUN_AUTOFILES = _UxGT("Auto-štart"); // Run Autofiles + LSTR MSG_ZPROBE_OUT = _UxGT("Sonda Z mimo podl."); // Z Probe Past Bed + LSTR MSG_BLTOUCH_RESET = _UxGT("Reset"); // Reset + LSTR MSG_ZPROBE_XOFFSET = _UxGT("X ofset"); // Probe X Offset + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Y ofset"); // Probe Y Offset + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Z ofset"); // Probe Z Offset + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("@ ofset"); // Probe @ Offset + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Krok Z posuň"); // Babystep Probe Z + LSTR MSG_BABYSTEP_X = _UxGT("Babystep X"); // Babystep X + LSTR MSG_BABYSTEP_Y = _UxGT("Babystep Y"); // Babystep Y + LSTR MSG_BABYSTEP_Z = _UxGT("Babystep Z"); // Babystep Z + LSTR MSG_BABYSTEP_N = _UxGT("Babystep @"); // Babystep @ + LSTR MSG_ENDSTOP_ABORT = _UxGT("Zastavenie Endstop"); // Endstop Abort + LSTR MSG_ERR_HEATING_FAILED = _UxGT("Chyba ohrevu"); // Heating Failed + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Chyba: REDUND. TEP."); // Err: REDUNDANT TEMP + LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("TEPLOTNÝ SKOK"); // THERMAL RUNAWAY + LSTR MSG_ERR_MAXTEMP = _UxGT("Chyba: MAXTEMP"); // Err: MAXTEMP + LSTR MSG_ERR_MINTEMP = _UxGT("Chyba: MINTEMP"); // Err: MINTEMP + LSTR MSG_HALTED = _UxGT("TLAČIAREŇ ZASTAVENÁ"); // PRINTER HALTED + LSTR MSG_PLEASE_RESET = _UxGT("Reštartuje ju"); // Please Reset + LSTR MSG_HEATING = _UxGT("Ohrev..."); // Heating... + LSTR MSG_BED_HEATING = _UxGT("Ohrev podložky..."); // Bed Heating... + LSTR MSG_DELTA_CALIBRATE = _UxGT("Delta kalibrácia"); // Delta Calibration + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Kalibrovať X"); // Calibrate X + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Kalibrovať Y"); // Calibrate Y + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Kalibrovať Z"); // Calibrate Z + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Kalibrovať stred"); // Calibrate Center + LSTR MSG_INFO_MENU = _UxGT("O tlačiarni"); // About Printer + LSTR MSG_INFO_PRINTER_MENU = _UxGT("Info. o tlačiarni"); // Printer Info + LSTR MSG_INFO_STATS_MENU = _UxGT("Štatistika"); // Stats + LSTR MSG_INFO_BOARD_MENU = _UxGT("Info. o doske"); // Board Info + LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Termistory"); // Thermistors + LSTR MSG_INFO_EXTRUDERS = _UxGT("Extrudéry"); // Extruders + LSTR MSG_INFO_BAUDRATE = _UxGT("Rýchlosť"); // Baud + LSTR MSG_INFO_PROTOCOL = _UxGT("Protokol"); // Protocol + LSTR MSG_CASE_LIGHT = _UxGT("Osvetlenie"); // Case Light + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Tlače"); // Prints + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Dokončené"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Čas"); // Total + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Najdlhšia"); // Longest + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Vytlačené"); // Extruded + LSTR MSG_INFO_MIN_TEMP = _UxGT("Teplota min"); // Min Temp + LSTR MSG_INFO_MAX_TEMP = _UxGT("Teplota max"); // Max Temp + LSTR MSG_INFO_PSU = _UxGT("Nap. zdroj"); // PSU + LSTR MSG_DRIVE_STRENGTH = _UxGT("Budenie motorov"); // Drive Strength + LSTR MSG_DAC_EEPROM_WRITE = _UxGT("Uložiť do EEPROM"); // DAC EEPROM Write + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Obnoviť tlač"); // Continue + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Čakajte prosím...")); // |Please wait... + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Vložte a kliknite")); // |Insert and Click + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Vysúvanie...")); // |Ejecting... + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Zavádzanie...")); // |Loading... + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Pokračovanie...")); // |Resuming... + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); // (LCD_STR_THERMOMETER) Min + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); // (LCD_STR_THERMOMETER) Max + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fakt"); // (LCD_STR_THERMOMETER) Fact + LSTR MSG_LCD_ON = _UxGT("Zap"); // On + LSTR MSG_LCD_OFF = _UxGT("Vyp"); // Off + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("Nesprávna tlačiareň"); // INCORRECT PRINTER + LSTR MSG_DEBUG_MENU = _UxGT("Ponuka ladenia"); // Debug Menu + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Test uk. priebehu"); // Progress Bar Test + LSTR MSG_MOVING = _UxGT("Posúvam..."); // Moving... + LSTR MSG_FREE_XY = _UxGT("Uvolniť XY"); // Free XY + LSTR MSG_HOME_FIRST = _UxGT("Najskôr os %s domov"); // Home %s First + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Ohrev...")); // |Heating... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Kliknite pre ohrev")); // |Click to heat + LSTR MSG_YES = _UxGT("ÁNO"); // YES + LSTR MSG_NO = _UxGT("NIE"); // NO + LSTR MSG_BACK = _UxGT("Naspäť"); // Back + LSTR MSG_MEDIA_ABORTING = _UxGT("Ruším..."); // Aborting... + LSTR MSG_MEDIA_READ_ERROR = _UxGT("Chyba čítania karty"); // (MEDIA_TYPE_EN) read error + LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB zaria. odstrán."); // USB device removed + LSTR MSG_USB_FD_USB_FAILED = _UxGT("Chyba spúšťania USB"); // USB start failed + LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Soft. endstopy"); // Soft Endstops + LSTR MSG_ADVANCED_SETTINGS = _UxGT("Pokročilé nastav."); // Advanced Settings + LSTR MSG_CONFIGURATION = _UxGT("Konfigurácia"); // Configuration + LSTR MSG_AUTO_Z_ALIGN = _UxGT("Auto-zarovn. Z"); // Auto Z-Align + LSTR MSG_Z_FADE_HEIGHT = _UxGT("Výška rovnania"); // Fade Height + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Vlastná teplota"); // Preheat Custom + LSTR MSG_LASER_MENU = _UxGT("Nastavenie lasera"); // Laser Control + LSTR MSG_LASER_POWER = _UxGT("Výkon lasera"); // Laser Power + LSTR MSG_SPINDLE_MENU = _UxGT("Nastavenie vretena"); // Spindle Control + LSTR MSG_SPINDLE_POWER = _UxGT("Výkon vretena"); // Spindle Pwr + LSTR MSG_SPINDLE_REVERSE = _UxGT("Spätný chod"); // Spindle Reverse + LSTR MSG_BED_TRAMMING = _UxGT("Vyrovnať rohy"); // Bed Tramming + LSTR MSG_NEXT_CORNER = _UxGT("Ďalší roh"); // Next Corner + LSTR MSG_MESH_EDITOR = _UxGT("Editor sieťe bodov"); // Mesh Editor + LSTR MSG_EDIT_MESH = _UxGT("Upraviť sieť bodov"); // Edit Mesh + LSTR MSG_EDITING_STOPPED = _UxGT("Koniec úprav siete"); // Mesh Editing Stopped + LSTR MSG_PROBING_POINT = _UxGT("Skúšam bod"); // Probing Point + LSTR MSG_MESH_X = _UxGT("Index X"); // Index X + LSTR MSG_MESH_Y = _UxGT("Index Y"); // Index Y + LSTR MSG_MESH_EDIT_Z = _UxGT("Hodnota Z"); // Z Value + LSTR MSG_CUSTOM_COMMANDS = _UxGT("Vlastné príkazy"); // Custom Commands + LSTR MSG_M48_TEST = _UxGT("M48 Test sondy"); // M48 Probe Test + LSTR MSG_M48_POINT = _UxGT("M48 Bod"); // M48 Point + LSTR MSG_M48_DEVIATION = _UxGT("Odchýlka"); // Deviation + LSTR MSG_IDEX_MENU = _UxGT("IDEX režim"); // IDEX Mode + LSTR MSG_OFFSETS_MENU = _UxGT("Ofset nástrojov"); // Tool Offsets + LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-parkovanie"); // Auto-Park + LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplikácia"); // Duplication + LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Zrkadlená kópia"); // Mirrored Copy + LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Plná kontrola"); // Full Control + LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2. tryska Z"); // 2nd Nozzle Z + LSTR MSG_HOTEND_OFFSET_N = _UxGT("2. tryska @"); // 2nd Nozzle @ + LSTR MSG_UBL_DOING_G29 = _UxGT("Vykonávam G29"); // Doing G29 + LSTR MSG_UBL_TOOLS = _UxGT("Nástroje UBL"); // UBL Tools + LSTR MSG_LCD_TILTING_MESH = _UxGT("Vyrovnávam bod"); // Tilting Point + LSTR MSG_UBL_MANUAL_MESH = _UxGT("Manuálna sieť bodov"); // Manually Build Mesh + LSTR MSG_UBL_BC_INSERT = _UxGT("Položte a zmerajte"); // Place Shim & Measure + LSTR MSG_UBL_BC_INSERT2 = _UxGT("Zmerajte"); // Measure + LSTR MSG_UBL_BC_REMOVE = _UxGT("Odstráňte a zmerajte"); // Remove & Measure Bed + LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Presun na ďalší"); // Moving to next + LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Teplota podložky"); // Bed Temp + LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Teplota podložky"); // Bed Temp + LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Teplota hotendu"); // Hotend Temp + LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Teplota hotendu"); // Hotend Temp + LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Upraviť vlastnú sieť"); // Edit Custom Mesh + LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Doladiť sieť bodov"); // Fine Tuning Mesh + LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Koniec úprav siete"); // Done Editing Mesh + LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Vlastná sieť"); // Build Custom Mesh + LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Vytvoriť sieť"); // Build Mesh + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Sieť bodov ($)"); // Build Mesh ($) + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Kontrola siete ($)"); // Validate Mesh ($) + LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Studená sieť bodov"); // Build Cold Mesh + LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Upraviť výšku siete"); // Adjust Mesh Height + LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Výška"); // Height Amount + LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Skontrolovať sieť"); // Validate Mesh + LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Kontrola vlast.siete"); // Validate Custom Mesh + LSTR MSG_G26_HEATING_BED = _UxGT("G26 ohrev podlž."); // G26 Heating Bed + LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 ohrev trysky"); // G26 Heating Nozzle + LSTR MSG_G26_MANUAL_PRIME = _UxGT("Ručné čistenie..."); // Manual priming... + LSTR MSG_G26_FIXED_LENGTH = _UxGT("Čistenie pevn. dĺž."); // Fixed Length Prime + LSTR MSG_G26_PRIME_DONE = _UxGT("Čistenie dokončené"); // Done Priming + LSTR MSG_G26_CANCELED = _UxGT("G26 zrušený"); // G26 Canceled + LSTR MSG_G26_LEAVING = _UxGT("Opúšťam G26"); // Leaving G26 + LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Pokračovať v sieti"); // Continue Bed Mesh + LSTR MSG_UBL_MESH_LEVELING = _UxGT("Sieťové rovnanie"); // Mesh Leveling + LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-bodové rovnanie"); // 3-Point Leveling + LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Mriežkové rovnanie"); // Grid Mesh Leveling + LSTR MSG_UBL_MESH_LEVEL = _UxGT("Vyrovnať podložku"); // Level Mesh + LSTR MSG_UBL_SIDE_POINTS = _UxGT("Postranné body"); // Side Points + LSTR MSG_UBL_MAP_TYPE = _UxGT("Typ siete bodov"); // Map Type + LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Exportovať sieť"); // Output Mesh Map + LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Export do hosta"); // Output for Host + LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Export do CSV"); // Output for CSV + LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Externá záloha"); // Off Printer Backup + LSTR MSG_UBL_INFO_UBL = _UxGT("Info. o výst. UBL"); // Output UBL Info + LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Hustota mriežky"); // Fill-in Amount + LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Ručné vyplnenie"); // Manual Fill-in + LSTR MSG_UBL_SMART_FILLIN = _UxGT("Chytré vyplnenie"); // Smart Fill-in + LSTR MSG_UBL_FILLIN_MESH = _UxGT("Vyplniť mriežku"); // Fill-in Mesh + LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Zrušiť všetko"); // Invalidate All + LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Zrušiť najbližší"); // Invalidate Closest + LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Upraviť všetky"); // Fine Tune All + LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Upraviť najbližší"); // Fine Tune Closest + LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Úložisko sietí"); // Mesh Storage + LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Pamäťový slot"); // Memory Slot + LSTR MSG_UBL_LOAD_MESH = _UxGT("Načítať sieť bodov"); // Load Bed Mesh + LSTR MSG_UBL_SAVE_MESH = _UxGT("Uložiť sieť bodov"); // Save Bed Mesh + LSTR MSG_MESH_LOADED = _UxGT("Sieť %i načítaná"); // Mesh %i Loaded + LSTR MSG_MESH_SAVED = _UxGT("Sieť %i uložená"); // Mesh %i Saved + LSTR MSG_UBL_NO_STORAGE = _UxGT("Nedostatok miesta"); // No Storage + LSTR MSG_UBL_SAVE_ERROR = _UxGT("Chyba: Ukladanie UBL"); // UBL Save Error + LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Chyba: Obnovenie UBL"); // UBL Restore Error + LSTR MSG_UBL_Z_OFFSET = _UxGT("Z-Ofset: "); // Z-Offset: + LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Koniec kompenz. Z"); // Z-Offset Stopped + LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("Postupné UBL"); // Step-By-Step UBL + LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Studená sieť bodov"); // 1. Build Cold Mesh + LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2.Chytré vyplnenie"); // 2. Smart Fill-in + LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Skontrolovať sieť"); // 3. Validate Mesh + LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Upraviť všetky"); // 4. Fine Tune All + LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Skontrolovať sieť"); // 5. Validate Mesh + LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Upraviť všetky"); // 6. Fine Tune All + LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Uložiť sieť bodov"); // 7. Save Bed Mesh + LSTR MSG_LED_CONTROL = _UxGT("Nastavenie LED"); // LED Control + LSTR MSG_LIGHTS = _UxGT("Svetlo"); // Lights + LSTR MSG_LIGHT_N = _UxGT("Svetlo #{"); // Light #{ + LSTR MSG_LED_PRESETS = _UxGT("Predvolby svetla"); // Light Presets + LSTR MSG_SET_LEDS_RED = _UxGT("Červená"); // Red + LSTR MSG_SET_LEDS_ORANGE = _UxGT("Oranžová"); // Orange + LSTR MSG_SET_LEDS_YELLOW = _UxGT("Žltá"); // Yellow + LSTR MSG_SET_LEDS_GREEN = _UxGT("Zelená"); // Green + LSTR MSG_SET_LEDS_BLUE = _UxGT("Modrá"); // Blue + LSTR MSG_SET_LEDS_INDIGO = _UxGT("Indigo"); // Indigo + LSTR MSG_SET_LEDS_VIOLET = _UxGT("Fialová"); // Violet + LSTR MSG_SET_LEDS_WHITE = _UxGT("Biela"); // White + LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Obnoviť nastavenie"); // Default + LSTR MSG_CUSTOM_LEDS = _UxGT("Vlastná farba"); // Custom Lights + LSTR MSG_INTENSITY_R = _UxGT("Inten. červenej"); // Red Intensity + LSTR MSG_INTENSITY_G = _UxGT("Inten. zelenej"); // Green Intensity + LSTR MSG_INTENSITY_B = _UxGT("Inten. modrej"); // Blue Intensity + LSTR MSG_INTENSITY_W = _UxGT("Inten. bielej"); // White Intensity + LSTR MSG_LED_BRIGHTNESS = _UxGT("Jas"); // Brightness + LSTR MSG_HOTEND_TOO_COLD = _UxGT("Hotend je studený"); // Hotend too cold + LSTR MSG_CHAMBER = _UxGT("Komora"); // Enclosure + LSTR MSG_STORED_FAN_N = _UxGT("Ulož. vent. ~"); // Stored Fan ~ + LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Rýchlosť ex. vent."); // Extra Fan Speed + LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Rýchlosť ex. vent. ~"); // Extra Fan Speed ~ + LSTR MSG_PID_AUTOTUNE = _UxGT("Kalibrácia PID"); // PID Autotune + LSTR MSG_PID_AUTOTUNE_E = _UxGT("Kalibrácia PID *"); // Autotune * PID + LSTR MSG_JERK = _UxGT("Skok"); // Jerk + LSTR MSG_VA_JERK = _UxGT("V") STR_A _UxGT("-skok"); // Max (STR_A) Jerk + LSTR MSG_VB_JERK = _UxGT("V") STR_B _UxGT("-skok"); // Max (STR_B) Jerk + LSTR MSG_VC_JERK = _UxGT("V") STR_C _UxGT("-skok"); // Max (STR_C) Jerk + LSTR MSG_VN_JERK = _UxGT("V@-skok"); // Max @ Jerk + LSTR MSG_VE_JERK = _UxGT("Ve-skok"); // Max E Jerk + LSTR MSG_JUNCTION_DEVIATION = _UxGT("Junction Dev"); // Junction Dev + LSTR MSG_MAX_SPEED = _UxGT("Max rýchl. (mm/s)"); // Max Speed (mm/s) + LSTR MSG_VMAX_A = _UxGT("Max rýchl. ") STR_A; // Max (STR_A) Speed + LSTR MSG_VMAX_B = _UxGT("Max rýchl. ") STR_B; // Max (STR_B) Speed + LSTR MSG_VMAX_C = _UxGT("Max rýchl. ") STR_C; // Max (STR_C) Speed + LSTR MSG_VMAX_N = _UxGT("Max rýchl. @"); // Max @ Speed + LSTR MSG_VMAX_E = _UxGT("Max rýchl. E"); // Max E Speed + LSTR MSG_VMAX_EN = _UxGT("Max rýchl. *"); // Max * Speed + LSTR MSG_VMIN = _UxGT("Vmin"); // Min Velocity + LSTR MSG_FILAMENT_UNLOAD = _UxGT("Vysunúť mm"); // Unload mm + LSTR MSG_FILAMENT_LOAD = _UxGT("Zaviesť mm"); // Load mm + LSTR MSG_ADVANCE_K = _UxGT("K pre posun"); // Advance K + LSTR MSG_ADVANCE_K_E = _UxGT("K pre posun *"); // Advance K * + LSTR MSG_INIT_EEPROM = _UxGT("Inicializ. EEPROM"); // Initialize EEPROM + LSTR MSG_MEDIA_UPDATE = _UxGT("Aktualiz. z karty"); // (MEDIA_TYPE_EN) Update + LSTR MSG_RESET_PRINTER = _UxGT("Reštart. tlačiar."); // Reset Printer + LSTR MSG_START_PRINT = _UxGT("Spustiť tlač"); // Start Print + LSTR MSG_BUTTON_NEXT = _UxGT("Ďalší"); // Next + LSTR MSG_BUTTON_INIT = _UxGT("Inicial."); // Init + LSTR MSG_BUTTON_STOP = _UxGT("Zastaviť"); // Stop + LSTR MSG_BUTTON_PRINT = _UxGT("Tlačiť"); // Print + LSTR MSG_BUTTON_RESET = _UxGT("Vynulovať"); // Reset + LSTR MSG_BUTTON_CANCEL = _UxGT("Zrušiť"); // Cancel + LSTR MSG_BUTTON_DONE = _UxGT("Hotovo"); // Done + LSTR MSG_BUTTON_BACK = _UxGT("Naspäť"); // Back + LSTR MSG_BUTTON_PROCEED = _UxGT("Pokračovať"); // Proceed + LSTR MSG_PRINTING_OBJECT = _UxGT("Tlačím obj."); // Print Obj + LSTR MSG_CANCEL_OBJECT = _UxGT("Zrušiť obj."); // Cancel Obj + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Zrušiť obj. {"); // Cancel Obj { + LSTR MSG_OUTAGE_RECOVERY = _UxGT("Obnova po výp. nap."); // Power Outage + LSTR MSG_PRINT_PAUSED = _UxGT("Tlač pozastavená"); // Print Paused + LSTR MSG_PRINTING = _UxGT("Tlačím..."); // Printing... + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V"); // S UnRet V + LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Dĺžka výmeny"); // Swap Length + LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Dĺžka vytlačenia"); // Purge Length + LSTR MSG_TOOL_CHANGE = _UxGT("Výmena nástroja"); // Tool Change + LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Zdvihnúť Z"); // Z Raise + LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Primárna rýchl."); // Prime Speed + LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Rýchl. retrakcie"); // Retract Speed + LSTR MSG_NOZZLE_STANDBY = _UxGT("Záložná tryska"); // Nozzle Standby + LSTR MSG_FILAMENTLOAD = _UxGT("Zaviesť filament"); // Load Filament + LSTR MSG_FILAMENTLOAD_E = _UxGT("Zaviesť filament *"); // Load * Filament + LSTR MSG_FILAMENTUNLOAD = _UxGT("Vysunúť filament"); // Unload Filament + LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Vysunúť filament *"); // Unload * Filament + LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Vysunúť všetko"); // Unload All + LSTR MSG_RELEASE_MEDIA = _UxGT("Odpojiť kartu"); // Release (MEDIA_TYPE_EN) + LSTR MSG_SKEW_FACTOR = _UxGT("Faktor skosenia"); // Skew Factor + LSTR MSG_BLTOUCH = _UxGT("BLTouch"); // BLTouch + LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Self-Test"); // Self-Test + LSTR MSG_BLTOUCH_STOW = _UxGT("Zasunúť"); // Stow + LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Vysunúť"); // Deploy + LSTR MSG_BLTOUCH_SW_MODE = _UxGT("Režim SW"); // SW-Mode + LSTR MSG_BLTOUCH_5V_MODE = _UxGT("Režim 5V"); // 5V-Mode + LSTR MSG_BLTOUCH_OD_MODE = _UxGT("Režim OD"); // OD-Mode + LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("Ulož. režim"); // Mode-Store + LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Prepnúť do 5V"); // Set BLTouch to 5V + LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Prepnúť do OD"); // Set BLTouch to OD + LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Zobraziť režim"); // Report Drain + LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("POZOR: Zlé nastav. môže spôsobiť poškoden. Pokračovať?"); // DANGER: Bad settings can cause damage! Proceed anyway? + LSTR MSG_TOUCHMI_PROBE = _UxGT("TouchMI"); // TouchMI + LSTR MSG_TOUCHMI_INIT = _UxGT("Inicializ. TouchMI"); // Init TouchMI + LSTR MSG_TOUCHMI_ZTEST = _UxGT("Test Z ofsetu"); // Z Offset Test + LSTR MSG_TOUCHMI_SAVE = _UxGT("Uložiť"); // Save + LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("Zasunúť TouchMI"); // Deploy TouchMI + LSTR MSG_MANUAL_DEPLOY = _UxGT("Zasunúť sondu Z"); // Deploy Z-Probe + LSTR MSG_MANUAL_STOW = _UxGT("Vysunúť sondu Z"); // Stow Z-Probe + LSTR MSG_BABYSTEP_TOTAL = _UxGT("Celkom"); // Total + LSTR MSG_COOLING = _UxGT("Ochladzovanie..."); // Cooling... + LSTR MSG_BED_COOLING = _UxGT("Ochladz. podložky..."); // Bed Cooling... + LSTR MSG_CHAMBER_HEATING = _UxGT("Ohrev komory..."); // Chamber Heating... + LSTR MSG_CHAMBER_COOLING = _UxGT("Ochladz. komory..."); // Chamber Cooling... + LSTR MSG_DELTA_SETTINGS = _UxGT("Delta nastavenia"); // Delta Settings + LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Auto-kalibrácia"); // Auto Calibration + LSTR MSG_DELTA_DIAG_ROD = _UxGT("Diag. rameno"); // Diag Rod + LSTR MSG_DELTA_HEIGHT = _UxGT("Výška"); // Height + LSTR MSG_DELTA_RADIUS = _UxGT("Polomer"); // Radius + LSTR MSG_3POINT_LEVELING = _UxGT("3-bodové rovnanie"); // 3-Point Leveling + LSTR MSG_LINEAR_LEVELING = _UxGT("Lineárne rovnanie"); // Linear Leveling + LSTR MSG_BILINEAR_LEVELING = _UxGT("Bilineárne rovnanie"); // Bilinear Leveling + LSTR MSG_UBL_LEVELING = _UxGT("UBL rovnanie"); // Unified Bed Leveling + LSTR MSG_MESH_LEVELING = _UxGT("Mriežkové rovnanie"); // Mesh Leveling + LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Tepl. ochrana: VYP"); // Runaway Watch: OFF + LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Tepl. ochrana: ZAP"); // Runaway Watch: ON + LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Jas svetla"); // Light Brightness + LSTR MSG_DAC_PERCENT_N = _UxGT("@ Motor %"); // @ Driver % + LSTR MSG_ERROR_TMC = _UxGT("CHYBA KOMUNIKÁ. TMC"); // TMC CONNECTION ERROR + LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("VÝMENA FILAMENTU"); // FILAMENT CHANGE + LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("PAUZA TLAČE"); // PRINT PAUSED + LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("ZAVEDENIE FILAMENTU"); // LOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("VYSUNUTIE FILAMENTU"); // UNLOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("MOŽNOSTI POKRAČ.:"); // RESUME OPTIONS: + LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Vytlačiť viacej"); // Purge more + LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Tryska: "); // Nozzle: + LSTR MSG_RUNOUT_SENSOR = _UxGT("Senzor filamentu"); // Runout Sensor + LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("Vzd. mm fil. senz."); // Runout Dist mm + LSTR MSG_KILL_HOMING_FAILED = _UxGT("Parkovanie zlyhalo"); // Homing Failed + LSTR MSG_LCD_PROBING_FAILED = _UxGT("Kalibrácia zlyhala"); // Probing Failed + LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("VYBERTE FILAMENT"); // CHOOSE FILAMENT + LSTR MSG_MMU2_MENU = _UxGT("MMU2"); // MMU + LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("Aktualizujte FW MMU!"); // Update MMU Firmware! + LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU potrebuje zásah."); // MMU Needs Attention. + LSTR MSG_MMU2_RESUME = _UxGT("Obnoviť tlač"); // Resume + LSTR MSG_MMU2_RESUMING = _UxGT("Obnovovanie..."); // MMU Resuming... + LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("Zaviesť filament"); // Load + LSTR MSG_MMU2_LOAD_ALL = _UxGT("Zaviesť všetky"); // Load All + LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Zaviesť po trysku"); // Load to Nozzle + LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("Vysunúť filament"); // Eject + LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("Vysunúť filament ~"); // Eject ~ + LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Vyňať filament"); // Unload + LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Zavádzanie fil. %i..."); // Filament %i Load... + LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Vysúvanie fil. ..."); // Filament %i Eject... + LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Vysúvanie fil. ..."); // Filament %i Unload... + LSTR MSG_MMU2_ALL = _UxGT("Všetky"); // All + LSTR MSG_MMU2_FILAMENT_N = _UxGT("Filament ~"); // Filament ~ + LSTR MSG_MMU2_RESET = _UxGT("Reštartovať MMU"); // Reset MMU + LSTR MSG_MMU2_RESETTING = _UxGT("Reštart MMU..."); // Resetting... + LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Odstráňte, kliknite"); // Eject Recover + LSTR MSG_MIX = _UxGT("Mix"); // Mix + LSTR MSG_MIX_COMPONENT_N = _UxGT("Zložka ~"); // Component { + LSTR MSG_MIXER = _UxGT("Mixér"); // Mixer + LSTR MSG_GRADIENT = _UxGT("Gradient"); // Gradient + LSTR MSG_FULL_GRADIENT = _UxGT("Plný gradient"); // Full Gradient + LSTR MSG_TOGGLE_MIX = _UxGT("Prepnúť mix"); // Toggle Mix + LSTR MSG_CYCLE_MIX = _UxGT("Cyklický mix"); // Cycle Mix + LSTR MSG_GRADIENT_MIX = _UxGT("Gradientný mix"); // Gradient Mix + LSTR MSG_REVERSE_GRADIENT = _UxGT("Otočiť gradient"); // Reverse Gradient + LSTR MSG_ACTIVE_VTOOL = _UxGT("Aktívny V-tool"); // Active V-tool + LSTR MSG_START_VTOOL = _UxGT("Počiat. V-tool"); // Start V-tool + LSTR MSG_END_VTOOL = _UxGT("Konečn. V-tool"); // End V-tool + LSTR MSG_GRADIENT_ALIAS = _UxGT("Alias V-tool"); // Alias V-tool + LSTR MSG_RESET_VTOOLS = _UxGT("Vynulovať V-tools"); // Reset V-tools + LSTR MSG_COMMIT_VTOOL = _UxGT("Uložiť V-tool Mix"); // Commit V-tool Mix + LSTR MSG_VTOOLS_RESET = _UxGT("V-tools vynulované"); // V-tools Were Reset + LSTR MSG_START_Z = _UxGT("Počiat.Z:"); // Start Z: + LSTR MSG_END_Z = _UxGT("Konečn.Z:"); // End Z: + LSTR MSG_GAMES = _UxGT("Hry"); // Games + LSTR MSG_BRICKOUT = _UxGT("Brickout"); // Brickout + LSTR MSG_INVADERS = _UxGT("Nájazdníci"); // Invaders + LSTR MSG_SNAKE = _UxGT("Had"); // Sn4k3 + LSTR MSG_MAZE = _UxGT("Bludisko"); // Maze + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Kliknite pre pokr.")); // |Click to continue + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parkovanie...")); // |Parking... + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Vytlačovanie...")); // |Purging... + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Klik. pre dokonč.")); // |Click to finish + LSTR MSG_TMC_DRIVERS = _UxGT("Ovládače TMC"); // TMC Drivers + LSTR MSG_TMC_CURRENT = _UxGT("Prúd ovládača"); // Driver Current + LSTR MSG_TMC_HYBRID_THRS = _UxGT("Hybridný prah"); // Hybrid Threshold + LSTR MSG_TMC_HOMING_THRS = _UxGT("Bezsenzor. domov"); // Sensorless Homing + LSTR MSG_TMC_STEPPING_MODE = _UxGT("Režim krokovania"); // Stepping Mode + LSTR MSG_TMC_STEALTHCHOP = _UxGT("StealthChop"); // StealthChop + LSTR MSG_SERVICE_RESET = _UxGT("Vynulovať"); // Reset + LSTR MSG_SERVICE_IN = _UxGT("za:"); // in: + LSTR MSG_BACKLASH = _UxGT("Kompenz. vôle"); // Backlash + LSTR MSG_BACKLASH_CORRECTION = _UxGT("Korekcia"); // Correction + LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Vyhladzovanie"); // Smoothing + LSTR MSG_HIGH = _UxGT("VYSOKÁ"); // HIGH + LSTR MSG_LOW = _UxGT("NÍZKA"); // LOW + LSTR MSG_ERROR = _UxGT("Chyba"); // Error + LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Inicial.karty zlyhala"); // (MEDIA_TYPE_EN) Init Fail + LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Preteč. podprogramu"); // Subcall Overflow + LSTR MSG_AUTO_HOME_N = _UxGT("Domov os @"); // Home @ + LSTR MSG_FILAMENT_SET = _UxGT("Nastav. filamentu"); // Filament Settings + LSTR MSG_FILAMENT_MAN = _UxGT("Správa filamentu"); // Filament Management + LSTR MSG_MANUAL_LEVELING = _UxGT("Ručné rovnanie"); // Manual Leveling + LSTR MSG_TRAM_FL = _UxGT("Ľavý predný"); // Front Left + LSTR MSG_TRAM_FR = _UxGT("Pravý predný"); // Front Right + LSTR MSG_TRAM_C = _UxGT("Stred"); // Center + LSTR MSG_TRAM_BL = _UxGT("Ľavý zadný"); // Back Left + LSTR MSG_TRAM_BR = _UxGT("Pravý zadný"); // Back Right + LSTR MSG_MANUAL_MESH = _UxGT("Ručná mriežka"); // Manual Mesh + LSTR MSG_AUTO_MESH = _UxGT("Automat. mriežka"); // Auto Build Mesh + LSTR MSG_ITERATION = _UxGT("Iterácia G34: %i"); // G34 Iteration: %i + LSTR MSG_DECREASING_ACCURACY = _UxGT("Klesajúca presnosť!"); // Accuracy Decreasing! + LSTR MSG_ACCURACY_ACHIEVED = _UxGT("Dosiahnutá presnosť"); // Accuracy Achieved + LSTR MSG_HOME_OFFSET_X = _UxGT("X Ofset"); // Home Offset X + LSTR MSG_HOME_OFFSET_Y = _UxGT("Y Ofset"); // Home Offset Y + LSTR MSG_HOME_OFFSET_Z = _UxGT("Z Ofset"); // Home Offset Z + LSTR MSG_TRAMMING_WIZARD = _UxGT("Spriev. vyrovn."); // Tramming Wizard + LSTR MSG_SELECT_ORIGIN = _UxGT("Vyberte začiatok"); // Select Origin + LSTR MSG_LAST_VALUE_SP = _UxGT("Posl. hodnota "); // Last value + LSTR MSG_CUTTER_FREQUENCY = _UxGT("Frekvencia"); // Frequency + LSTR MSG_LASER_TOGGLE = _UxGT("Prepnúť laser"); // Toggle Laser + LSTR MSG_LASER_EVAC_TOGGLE = _UxGT("Prepnúť odsávanie"); // Toggle Blower + LSTR MSG_LASER_ASSIST_TOGGLE = _UxGT("Prepnúť ofuk"); // Air Assist + LSTR MSG_LASER_PULSE_MS = _UxGT("Test. impulz ms"); // Test Pulse ms + LSTR MSG_LASER_FIRE_PULSE = _UxGT("Vystreliť impulz"); // Fire Pulse + LSTR MSG_FLOWMETER_FAULT = _UxGT("Chyba chladenia"); // Coolant Flow Fault + LSTR MSG_SPINDLE_TOGGLE = _UxGT("Prepnúť vreteno"); // Toggle Spindle + LSTR MSG_SPINDLE_EVAC_TOGGLE = _UxGT("Prepnúť odsávanie"); // Toggle Vacuum + LSTR MSG_SPINDLE_FORWARD = _UxGT("Dopredný chod"); // Spindle Forward + LSTR MSG_BED_TRAMMING_MANUAL = _UxGT("Ručné vyrovnanie"); // Manual Tramming + LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Zdvihnite podl., kým sa nezopne sonda"); // Adjust bed until the probe triggers. + LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Rohy sú vrámci odchyl. Vyrovnajte podl."); // Corners within tolerance. Bed trammed. + LSTR MSG_BED_TRAMMING_GOOD_POINTS = _UxGT("Dobré body: "); // Good Points: + LSTR MSG_BED_TRAMMING_LAST_Z = _UxGT("Posl. Z: "); // Last Z: + LSTR MSG_MESH_VIEWER = _UxGT("Zobraz. sieťe bodov"); // Mesh Viewer + LSTR MSG_MESH_VIEW = _UxGT("Zobraz. sieť bodov"); // View Mesh + LSTR MSG_NO_VALID_MESH = _UxGT("Neplatná sieť bodov"); // No valid mesh + LSTR MSG_ACTIVATE_MESH = _UxGT("Zapnúť vyrovnanie"); // Activate Leveling + LSTR MSG_MESH_INSET = _UxGT("Vložiť sieť"); // Mesh Inset + LSTR MSG_MESH_MIN_X = _UxGT("Min. X sieťe"); // Mesh X Minimum + LSTR MSG_MESH_MAX_X = _UxGT("Max. X sieťe"); // Mesh X Maximum + LSTR MSG_MESH_MIN_Y = _UxGT("Min. Y sieťe"); // Mesh Y Minimum + LSTR MSG_MESH_MAX_Y = _UxGT("Max. Y sieťe"); // Mesh Y Maximum + LSTR MSG_MESH_AMAX = _UxGT("Maximál. oblasť"); // Maximize Area + LSTR MSG_MESH_CENTER = _UxGT("Stredová oblasť"); // Center Area + LSTR MSG_MESH_CANCEL = _UxGT("Mriežka zrušená"); // Mesh cancelled + LSTR MSG_M48_OUT_OF_BOUNDS = _UxGT("Sonda mimo hraníc"); // Probe out of bounds + LSTR MSG_IDEX_DUPE_GAP = _UxGT("Duplik. medz.-X"); // Duplicate X-Gap + LSTR MSG_UBL_TILT_MESH = _UxGT("Nakloniť sieť"); // Tilt Mesh + LSTR MSG_UBL_TILTING_GRID = _UxGT("Veľkosť nakl. siete"); // Tilting Grid Size + LSTR MSG_UBL_MESH_TILTED = _UxGT("Sieť naklonená"); // Mesh Tilted + LSTR MSG_UBL_MESH_WIZARD = _UxGT("Spriev. UBL rovnan."); // UBL Mesh Wizard + LSTR MSG_UBL_MESH_FILLED = _UxGT("Doplnené chýb. body"); // Missing Points Filled + LSTR MSG_UBL_MESH_INVALID = _UxGT("Neplatná sieť"); // Invalid Mesh + LSTR MSG_UBL_INVALID_SLOT = _UxGT("Najskôr zvol. slot siete"); // First Select a Mesh Slot + LSTR MSG_LED_CHANNEL_N = _UxGT("Kanál {"); // Channel { + LSTR MSG_NEO2_PRESETS = _UxGT("Predvolby svetla #2"); // Light #2 Presets + LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Jas"); // Brightness + LSTR MSG_NOZZLE_PARKED = _UxGT("Tryska zaparkovaná"); // Nozzle Parked + LSTR MSG_COOLER = _UxGT("Chladen. lasera"); // Laser Coolant + LSTR MSG_COOLER_TOGGLE = _UxGT("Prepnúť chladenie"); // Toggle Cooler + LSTR MSG_FLOWMETER_SAFETY = _UxGT("Bezpeč. prietok"); // Flow Safety + LSTR MSG_LASER = _UxGT("Laser"); // Laser + LSTR MSG_CONTROLLER_FAN = _UxGT("Vent. riad. jedn."); // Controller Fan + LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("Voľno. rýchl."); // Idle Speed + LSTR MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("Auto-režim"); // Auto Mode + LSTR MSG_CONTROLLER_FAN_SPEED = _UxGT("Aktív. rýchl."); // Active Speed + LSTR MSG_CONTROLLER_FAN_DURATION = _UxGT("Doba nečinnosti"); // Idle Period + LSTR MSG_PID_CYCLE = _UxGT("Cykly PID"); // PID Cycles + LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("Kal. PID dokončená"); // PID tuning done + LSTR MSG_PID_AUTOTUNE_FAILED = _UxGT("Kal. PID zlyhala!"); // Autotune failed! + LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Auto-kal. zlyhala! Zlý extrúder."); // Autotune failed! Bad extruder. + LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Auto-kal. zlyhala! Príliš vysoká tepl."); // Autotune failed! Temperature too high. + LSTR MSG_PID_TIMEOUT = _UxGT("Auto-kal. zlyhala! Čas vypršal."); // Autotune failed! Timeout. + LSTR MSG_MPC_MEASURING_AMBIENT = _UxGT("Test. tepl. straty"); // Testing heat loss + LSTR MSG_MPC_AUTOTUNE = _UxGT("Auto-kal. MPC"); // MPC Autotune + LSTR MSG_MPC_EDIT = _UxGT("Upraviť * MPC"); // Edit * MPC + LSTR MSG_MPC_POWER_E = _UxGT("Výkon *"); // Power * + LSTR MSG_MPC_BLOCK_HEAT_CAPACITY_E = _UxGT("Tepelná kap. *"); // Heat Cap. * + LSTR MSG_SENSOR_RESPONSIVENESS_E = _UxGT("Reakcia senz. *"); // Sensor Resp. * + LSTR MSG_MPC_AMBIENT_XFER_COEFF_E = _UxGT("Koef. okolia *"); // Ambient Co. * + LSTR MSG_MPC_AMBIENT_XFER_COEFF_FAN_E = _UxGT("Koef. vent. *"); // Fan coeff. * + LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("Max. frekvencia"); // XY Freq Limit + LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("Min. posun"); // Min FR Factor + LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("E Limit v mm") SUPERSCRIPT_THREE; // E Limit in mm(SUPERSCRIPT_THREE) + LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("E Limit *"); // E Limit * + LSTR MSG_BRIGHTNESS = _UxGT("Jas LCD"); // LCD Brightness + LSTR MSG_SCREEN_TIMEOUT = _UxGT("Čas. limit LCD (m)"); // LCD Timeout (m) + LSTR MSG_BRIGHTNESS_OFF = _UxGT("Podsviet. vyp."); // Backlight Off + LSTR MSG_ERR_EEPROM_CRC = _UxGT("Chyba: EEPROM CRC"); // Err: EEPROM CRC + LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Chyba: Veľkosť EEPROM"); // Err: EEPROM Size + LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Chyba: Verzia EEPROM"); // Err: EEPROM Version + LSTR MSG_SETTINGS_STORED = _UxGT("Nastavenie uložené"); // Settings Stored + LSTR MSG_INFO_MACHINENAME = _UxGT("Názov stroja"); // Machine Name + LSTR MSG_INFO_SIZE = _UxGT("Rozmer"); // Size + LSTR MSG_INFO_FWVERSION = _UxGT("Verzia firmvéru"); // Firmware Version + LSTR MSG_INFO_BUILD = _UxGT("Čas zostavenia"); // Build Info + LSTR MSG_POWER_MONITOR = _UxGT("Monitor napájania"); // Power monitor + LSTR MSG_CURRENT = _UxGT("Prúd"); // Current + LSTR MSG_VOLTAGE = _UxGT("Napätie"); // Voltage + LSTR MSG_POWER = _UxGT("Výkon"); // Power + LSTR MSG_BUTTON_IGNORE = _UxGT("Ignorovať"); // Ignore + LSTR MSG_BUTTON_CONFIRM = _UxGT("Potvrdiť"); // Confirm + LSTR MSG_BUTTON_CONTINUE = _UxGT("Pokračovať"); // Continue + LSTR MSG_BUTTON_SKIP = _UxGT("Preskočiť"); // Skip + LSTR MSG_BUTTON_INFO = _UxGT("Informácie"); // Info + LSTR MSG_BUTTON_LEVEL = _UxGT("Vyrovnať"); // Level + LSTR MSG_BUTTON_PAUSE = _UxGT("Pauza"); // Pause + LSTR MSG_BUTTON_RESUME = _UxGT("Obnoviť"); // Resume + LSTR MSG_BUTTON_ADVANCED = _UxGT("Pokročilé"); // Advanced + LSTR MSG_BUTTON_SAVE = _UxGT("Uložiť"); // Save + LSTR MSG_BUTTON_PURGE = _UxGT("Vytlačiť"); // Purge + LSTR MSG_PAUSING = _UxGT("Pozastavujem..."); // Pausing... + LSTR MSG_ADVANCED_PAUSE = _UxGT("Pokročil. pauza"); // Advanced Pause + LSTR MSG_HOST_START_PRINT = _UxGT("Spustiť z hosta"); // Host Start + LSTR MSG_END_LOOPS = _UxGT("Ukončiť sluč."); // End Loops + LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Pokrač. v úlohe"); // Continue Job + LSTR MSG_STOPPING = _UxGT("Zastavujem..."); // Stopping... + LSTR MSG_REMAINING_TIME = _UxGT("Zostávajúci"); // Remaining + LSTR MSG_PRINT_DONE = _UxGT("Tlač dokončená"); // Print Done + LSTR MSG_PRINTER_KILLED = _UxGT("Tlačiareň zastavená!"); // Printer killed! + LSTR MSG_TURN_OFF = _UxGT("Vypnit. teraz"); // Turn off now + LSTR MSG_FWRETRACT = _UxGT("Firmv. retrakcia"); // Firmware Retract + LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Vymeniť naviac"); // Swap Extra + LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Parkovať hlavu"); // Park Head + LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Rýchl. obnovenia"); // Recover Speed + LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Rýchlosť vent."); // Fan Speed + LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Doba fúkania"); // Fan Time + LSTR MSG_TOOL_MIGRATION_ON = _UxGT("Auto-Zap"); // Auto ON + LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("Auto-Vyp"); // Auto OFF + LSTR MSG_TOOL_MIGRATION = _UxGT("Výmena nástroja"); // Tool Migration + LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("Auto-výmena"); // Auto-migration + LSTR MSG_TOOL_MIGRATION_END = _UxGT("Posl. extruder"); // Last Extruder + LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("Vymeniť za *"); // Migrate to * + LSTR MSG_BLTOUCH_SPEED_MODE = _UxGT("Vysoká rýchl."); // High Speed + LSTR MSG_ZPROBE_SETTINGS = _UxGT("Nastav. sondy"); // Probe Settings + LSTR MSG_ZPROBE_OFFSETS = _UxGT("Ofsety sondy Z"); // Probe Offsets + LSTR MSG_ZPROBE_MARGIN = _UxGT("Hranica sondy"); // Probe Margin + LSTR MSG_Z_FEED_RATE = _UxGT("Rýchl. posunu Z"); // Z Feedrate + LSTR MSG_ENABLE_HS_MODE = _UxGT("Povoliť rež. HS"); // Enable HS mode + LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Pos. trysku k podl."); // Move Nozzle to Bed + LSTR MSG_ERR_TEMP_MALFUNCTION = _UxGT("TEPLOTNÁ PORUCHA"); // TEMP MALFUNCTION + LSTR MSG_ERR_COOLING_FAILED = _UxGT("Ochladz. zlyhalo"); // Cooling Failed + LSTR MSG_PLEASE_WAIT = _UxGT("Čakajte prosím..."); // Please wait... + LSTR MSG_PREHEATING = _UxGT("Zahrievanie..."); // Preheating... + LSTR MSG_PROBE_HEATING = _UxGT("Ohrev sondy..."); // Probe Heating... + LSTR MSG_PROBE_COOLING = _UxGT("Ochladz. sondy..."); // Probe Cooling... + LSTR MSG_LASER_COOLING = _UxGT("Ochladz. lasera..."); // Laser Cooling... + LSTR MSG_MESH_DONE = _UxGT("Mriežka dokončená"); // Mesh probing done + LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Vypr.čas nečinnosti"); // Hotend Idle Timeout + LSTR MSG_FAN_SPEED_FAULT = _UxGT("Chyba rýchl. vent."); // Fan speed fault + LSTR MSG_COLORS_GET = _UxGT("Zvoliť farbu"); // Get Color + LSTR MSG_COLORS_SELECT = _UxGT("Zvoliť farby"); // Select Colors + LSTR MSG_COLORS_APPLIED = _UxGT("Farby aplikované"); // Colors applied + LSTR MSG_COLORS_RED = _UxGT("Červená"); // Red + LSTR MSG_COLORS_GREEN = _UxGT("Zelená"); // Green + LSTR MSG_COLORS_BLUE = _UxGT("Modrá"); // Blue + LSTR MSG_COLORS_WHITE = _UxGT("Biela"); // White + LSTR MSG_UI_LANGUAGE = _UxGT("Jazyk rozhrania"); // UI Language + LSTR MSG_SOUND_ENABLE = _UxGT("Povoliť zvuky"); // Enable sound + LSTR MSG_LOCKSCREEN = _UxGT("Uzamknúť obrazovku"); // Lock Screen + LSTR MSG_LOCKSCREEN_LOCKED = _UxGT("Tlačiareň je uzamknutá,"); // Printer is Locked, + LSTR MSG_LOCKSCREEN_UNLOCK = _UxGT("potiahnite pre odomknutie."); // Scroll to unlock. + LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Prosím čakajte do reštartu."); // Please wait for reboot. + LSTR MSG_PLEASE_PREHEAT = _UxGT("Prosím zahrejte"); // Please Preheat + LSTR MSG_FILAMENT_CHANGE_PURGE_CONTINUE = _UxGT("Vytlač. alebo pokrač.?"); // Purge or Continue? + LSTR MSG_EXTRUDER_MIN_TEMP = _UxGT("Min. tepl. extrud."); // Extruder Min Temp. + LSTR MSG_FANCHECK = _UxGT("Kontrola rýchl."); // Fan Tacho Check + LSTR MSG_BAD_PAGE = _UxGT("Chyb. index stránky"); // Bad page index + LSTR MSG_BAD_PAGE_SPEED = _UxGT("Chyb. rých. stránky"); // Bad page speed + LSTR MSG_EDIT_PASSWORD = _UxGT("Zmeniť heslo"); // Edit Password + LSTR MSG_LOGIN_REQUIRED = _UxGT("Vyžad. sa prihl."); // Login Required + LSTR MSG_PASSWORD_SETTINGS = _UxGT("Nastavenie hesla"); // Password Settings + LSTR MSG_ENTER_DIGIT = _UxGT("Zvoľte číslo"); // Enter Digit + LSTR MSG_CHANGE_PASSWORD = _UxGT("Zmeniť heslo"); // Set/Edit Password + LSTR MSG_REMOVE_PASSWORD = _UxGT("Odstrániť heslo"); // Remove Password + LSTR MSG_PASSWORD_SET = _UxGT("Heslo je "); // Password is + LSTR MSG_START_OVER = _UxGT("Začať odznova"); // Start Over + LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Nezabudnite uložiť!"); // Remember to Save! + LSTR MSG_PASSWORD_REMOVED = _UxGT("Heslo odstránené"); // Password Removed + LSTR MSG_LEVEL_X_AXIS = _UxGT("Vyrovnať os X"); // Level X Axis + LSTR MSG_AUTO_CALIBRATE = _UxGT("Auto-kalibrovať"); // Auto Calibrate + LSTR MSG_FTDI_HEATER_TIMEOUT = _UxGT("Vypršal čas ohrevu, znížená teplota. Stlačte OK pre ohrev a ešte raz pre obnovu."); // Idle timeout, temperature decreased. Press Okay to reheat and again to resume. + LSTR MSG_HEATER_TIMEOUT = _UxGT("Vypršal čas ohrevu"); // Heater Timeout + LSTR MSG_REHEAT = _UxGT("Zohriať"); // Reheat + LSTR MSG_REHEATING = _UxGT("Zohrievanie..."); // Reheating... + LSTR MSG_REHEATDONE = _UxGT("Zohrievanie dokonč."); // Reheat Done + LSTR MSG_PROBE_WIZARD = _UxGT("Sprievodca sondy Z"); // Z Probe Wizard + LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Referencia Z"); // Probing Z Reference + LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Presúvam na pozíciu"); // Moving to Probing Pos + LSTR MSG_XATC = _UxGT("Sprievodca X-Twist"); // X-Twist Wizard + LSTR MSG_XATC_DONE = _UxGT("Spriev. X-Twist dokonč.!"); // X-Twist Wizard Done! + LSTR MSG_XATC_UPDATE_Z_OFFSET = _UxGT("Aktual. ofset sondy Z na "); // Update Z-Offset to + LSTR MSG_SOUND = _UxGT("Zvuk"); // Sound + LSTR MSG_TOP_LEFT = _UxGT("Ľavý horný"); // Touch Top Left + LSTR MSG_BOTTOM_LEFT = _UxGT("Ľavý dolný"); // Touch Bottom Left + LSTR MSG_TOP_RIGHT = _UxGT("Pravý horný"); // Touch Top Right + LSTR MSG_BOTTOM_RIGHT = _UxGT("Pravý dolný"); // Touch Bottom Right + LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Kalibrácia dokončená"); // Calibration Completed + LSTR MSG_CALIBRATION_FAILED = _UxGT("Kalibrácia zlyhala"); // Calibration Failed + LSTR MSG_DRIVER_BACKWARD = _UxGT(" spätný chod ovl."); // driver backward + LSTR MSG_SD_CARD = _UxGT("SD karta"); // SD Card + LSTR MSG_USB_DISK = _UxGT("USB disk"); // USB Disk + LSTR MSG_HOST_SHUTDOWN = _UxGT("Vypnúť hosta"); // Host Shutdown + LSTR DGUS_MSG_TEMP_TOO_HIGH = _UxGT("Príliš vysoká tepl."); // Temperature too high. + LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Žiadna karta"); // No Media + LSTR MSG_Z_AFTER_HOME = _UxGT("Os Z po domov.poz."); // Z After Homing + LSTR MSG_ERR_M428_TOO_FAR = _UxGT("Chyba: Príliš ďaleko!"); // MIN/MAX Too Far + LSTR MSG_PREHEAT_HOTEND = _UxGT("Zahriať hotend"); // Preheat Hotend + LSTR MSG_MESH_ACTIVE = _UxGT("Sieť %i aktívna"); // Mesh %i active + LSTR MSG_LIVE_MOVE = _UxGT("Živý pohyb"); // Live Movement + LSTR MSG_CUTTER = _UxGT("Rezačka"); // Cutter + LSTR MSG_TIMEOUT = _UxGT("Čas vypršal"); // Timeout + LSTR MSG_MPC_HEATING_PAST_200 = _UxGT("Zahriať na >200C"); // Heating to >200C + LSTR MSG_MPC_COOLING_TO_AMBIENT = _UxGT("Schladiť na okolie"); // Cooling to ambient + LSTR MSG_MPC_POWER = _UxGT("Výkon ohrievača"); // Heater Power + LSTR MSG_MPC_BLOCK_HEAT_CAPACITY = _UxGT("Tepelná kapacita"); // Heat Capacity + LSTR MSG_SENSOR_RESPONSIVENESS = _UxGT("Reakcia senzoru"); // Sensor Resp. + LSTR MSG_MPC_AMBIENT_XFER_COEFF = _UxGT("Koef. okolia"); // Ambient Coeff. + LSTR MSG_MPC_AMBIENT_XFER_COEFF_FAN = _UxGT("Koef. vent."); // Fan coeff. + LSTR MSG_INPUT_SHAPING = _UxGT("Tvarov. vstupu"); // Input Shaping + LSTR MSG_SHAPING_ENABLE_N = _UxGT("Povol. tvarov. @"); // Enable @ shaping + LSTR MSG_SHAPING_DISABLE_N = _UxGT("Zakáz. tvarov. @"); // Disable @ shaping + LSTR MSG_SHAPING_FREQ_N = _UxGT("Frekvencia @"); // @ frequency + LSTR MSG_SHAPING_ZETA_N = _UxGT("Tlmenie @"); // @ damping + LSTR MSG_SEGMENTS_PER_SECOND = _UxGT("Segmentov/sek"); // Segments/Sec + LSTR MSG_DRAW_MIN_X = _UxGT("Min. X kresby"); // Draw Min X + LSTR MSG_DRAW_MAX_X = _UxGT("Max. X kresby"); // Draw Max X + LSTR MSG_DRAW_MIN_Y = _UxGT("Min. Y kresby"); // Draw Min Y + LSTR MSG_DRAW_MAX_Y = _UxGT("Max. Y kresby"); // Draw Max Y + LSTR MSG_MAX_BELT_LEN = _UxGT("Max. dĺžka pásu"); // Max Belt Len + LSTR MSG_SINGLENOZZLE_WIPE_RETRACT = _UxGT("Očist. retrakciou"); // Wipe Retract + LSTR MSG_PARK_FAILED = _UxGT("Hlava sa nedá zapark."); // Head cannot be parked + LSTR MSG_RESET_STATS = _UxGT("Vynulovať štatis.?"); // Reset Print Stats? } namespace LanguageWide_sk { using namespace LanguageNarrow_sk; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_HOST_START_PRINT = _UxGT("Spustiť z hosta"); - LSTR MSG_PRINTING_OBJECT = _UxGT("Tlačím objekt"); - LSTR MSG_CANCEL_OBJECT = _UxGT("Zrušiť objekt"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Zrušiť objekt {"); - LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Pokračovať v úlohe"); - LSTR MSG_MEDIA_MENU = _UxGT("Vytlačiť z karty"); - LSTR MSG_TURN_OFF = _UxGT("Vypnite tlačiareň"); - LSTR MSG_END_LOOPS = _UxGT("Ukončiť opak. sluč."); - LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Nie je vložená karta."); // ProUI - LSTR MSG_PLEASE_PREHEAT = _UxGT("Prosím zahrejte hotend."); // ProUI - LSTR MSG_INFO_PRINT_COUNT_RESET = _UxGT("Vynulovať počítadlo"); // ProUI - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Počet tlačí"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Celkový čas"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Najdlhšia tlač"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Celkom vytlačené"); + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 + LSTR MSG_MEDIA_MENU = _UxGT("Vytlačiť z karty"); // Select from (MEDIA_TYPE_EN) + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Počet tlačí"); // Print Count + LSTR MSG_INFO_PRINT_TIME = _UxGT("Celkový čas"); // Print Time + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Najdlhšia tlač"); // Longest Job Time + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Celkom vytlačené"); // Extruded Total + LSTR MSG_PRINTING_OBJECT = _UxGT("Tlačím objekt"); // Printing Object + LSTR MSG_CANCEL_OBJECT = _UxGT("Zrušiť objekt"); // Cancel Object + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Zrušiť objekt {"); // Cancel Object { + LSTR MSG_HOST_START_PRINT = _UxGT("Spustiť z hosta"); // Start Host Print + LSTR MSG_END_LOOPS = _UxGT("Ukončiť opak. sluč."); // End Repeat Loops + LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Pokračovať v úlohe"); // Continue Print Job + LSTR MSG_TURN_OFF = _UxGT("Vypnite tlačiareň"); // Turn off the printer + LSTR MSG_PLEASE_PREHEAT = _UxGT("Prosím zahrejte hotend."); // Please preheat the hot end. + LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Nie je vložená karta."); // No media inserted. + LSTR MSG_INFO_PRINT_COUNT_RESET = _UxGT("Vynulovať počítadlo"); // Reset Print Count #endif } @@ -832,17 +797,17 @@ namespace LanguageTall_sk { using namespace LanguageWide_sk; #if LCD_HEIGHT >= 4 // Filament Change screens show up to 3 lines on a 4-line display - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Stlačte tlačidlo", "pre obnovu tlače")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parkovanie...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Čakajte prosím", "na spustenie", "výmeny filamentu")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Vložte filament", "a stlačte tlačidlo", "pre pokračovanie")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Stlačte tlačidlo", "pre ohrev trysky")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Ohrev trysky", "Čakajte prosím...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Čakajte prosím", "na vysunutie", "filamentu")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Čakajte prosím", "na zavedenie", "filamentu")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_3_LINE("Čakajte prosím", "na vytlačenie", "filamentu")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Stlačte tlačidlo", "pre dokončenie", "vytláčania filam.")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Čakajte prosím na", "obnovenie tlače...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Čakajte prosím", "na spustenie", "výmeny filamentu")); // |Wait for|filament change|to start + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Vložte filament", "a stlačte tlačidlo", "pre pokračovanie")); // |Insert filament|and press button|to continue + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_3_LINE("Čakajte prosím", "na vysunutie", "filamentu")); // |Wait for|filament unload + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_3_LINE("Čakajte prosím", "na zavedenie", "filamentu")); // |Wait for|filament load + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Čakajte prosím na", "obnovenie tlače...")); // |Wait for print|to resume... + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Ohrev trysky", "Čakajte prosím...")); // |Nozzle heating|Please wait... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Stlačte tlačidlo", "pre ohrev trysky")); // |Press button|to heat nozzle + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Stlačte tlačidlo", "pre obnovu tlače")); // |Press Button|to resume print + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parkovanie...")); // |Parking... + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_3_LINE("Čakajte prosím", "na vytlačenie", "filamentu")); // |Wait for|filament purge + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Stlačte tlačidlo", "pre dokončenie", "vytláčania filam.")); // |Click to finish|filament purge #endif } diff --git a/Marlin/src/lcd/language/language_sv.h b/Marlin/src/lcd/language/language_sv.h index 75df0ce9a8..93e2ab453e 100644 --- a/Marlin/src/lcd/language/language_sv.h +++ b/Marlin/src/lcd/language/language_sv.h @@ -44,643 +44,615 @@ namespace LanguageNarrow_sv { constexpr uint8_t CHARSIZE = 2; LSTR LANGUAGE = _UxGT("Swedish"); - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" redo."); - LSTR MSG_YES = _UxGT("JA"); - LSTR MSG_NO = _UxGT("NEJ"); - LSTR MSG_HIGH = _UxGT("Hög"); - LSTR MSG_LOW = _UxGT("låg"); - LSTR MSG_BACK = _UxGT("Bakåt"); - LSTR MSG_ERROR = _UxGT("Fel"); - - LSTR MSG_MEDIA_ABORTING = _UxGT("Avbryter..."); - LSTR MSG_MEDIA_INSERTED = _UxGT("Minneskort isatt"); - LSTR MSG_MEDIA_REMOVED = _UxGT("Minneskort avlägsnat"); - LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Misslyckad läsning av minneskort"); - LSTR MSG_MEDIA_READ_ERROR = _UxGT("Läsningsfel minneskort"); - LSTR MSG_USB_FD_WAITING_FOR_MEDIA = _UxGT("Väntar på minneskort"); - LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB-minne avlägsnat"); - LSTR MSG_USB_FD_USB_FAILED = _UxGT("USB-start misslyckad"); - LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Underanrop överskriden"); - - LSTR MSG_LCD_ENDSTOPS = _UxGT("Ändlägesbrytare"); // Max length 8 characters - LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Mjukvarugränslägen"); - LSTR MSG_MAIN_MENU = _UxGT("Huvudmeny"); - LSTR MSG_ADVANCED_SETTINGS = _UxGT("Advancerade inställningar"); - LSTR MSG_CONFIGURATION = _UxGT("Konfiguration"); - LSTR MSG_DISABLE_STEPPERS = _UxGT("Inaktivera stegmotorer"); - LSTR MSG_DEBUG_MENU = _UxGT("Debugmeny"); - LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Förloppindikator test"); - LSTR MSG_HOMING = _UxGT("Hemkörning"); - LSTR MSG_AUTO_HOME = _UxGT("Auto hem"); - LSTR MSG_AUTO_HOME_N = _UxGT("Hem @"); - LSTR MSG_AUTO_HOME_X = _UxGT("Hem X"); - LSTR MSG_AUTO_HOME_Y = _UxGT("Hem Y"); - LSTR MSG_AUTO_HOME_Z = _UxGT("Hem Z"); - LSTR MSG_Z_AFTER_HOME = _UxGT("Z efter hemkörning"); - LSTR MSG_FILAMENT_SET = _UxGT("Trådinställningar"); - LSTR MSG_FILAMENT_MAN = _UxGT("Trådhantering"); - LSTR MSG_MANUAL_LEVELING = _UxGT("Manuell höjdjustering"); - LSTR MSG_TRAM_FL = _UxGT("Övre vänster"); - LSTR MSG_TRAM_FR = _UxGT("Övre höger"); - LSTR MSG_TRAM_C = _UxGT("Mittpunkt"); - LSTR MSG_TRAM_BL = _UxGT("Nedre vänster"); - LSTR MSG_TRAM_BR = _UxGT("Nedre höger"); - LSTR MSG_MANUAL_MESH = _UxGT("Manellt meshmät"); - LSTR MSG_AUTO_MESH = _UxGT("Automatiskt meshnät"); - - LSTR MSG_AUTO_Z_ALIGN = _UxGT("Auto Z-Justering"); - LSTR MSG_ITERATION = _UxGT("G34 upprepning: %i"); - LSTR MSG_DECREASING_ACCURACY = _UxGT("Noggrannhet minskar!"); - LSTR MSG_ACCURACY_ACHIEVED = _UxGT("Noggrannhet uppnådd"); - LSTR MSG_LEVEL_BED_HOMING = _UxGT("Hemkörning XYZ"); - LSTR MSG_LEVEL_BED_WAITING = _UxGT("Klicka för att starta"); - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Nästa punkt"); - LSTR MSG_LEVEL_BED_DONE = _UxGT("Höjdjustering klar!"); - LSTR MSG_Z_FADE_HEIGHT = _UxGT("Tona höjden"); - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Ange offset för hemmaläge"); - LSTR MSG_HOME_OFFSET_X = _UxGT("Hem offset X"); - LSTR MSG_HOME_OFFSET_Y = _UxGT("Hem offset Y"); - LSTR MSG_HOME_OFFSET_Z = _UxGT("Hem offset Z"); - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Offset tillämpad"); - LSTR MSG_ERR_M428_TOO_FAR = _UxGT("MIN/MAX för långt"); - LSTR MSG_TRAMMING_WIZARD = _UxGT("Justerings guide"); - LSTR MSG_SELECT_ORIGIN = _UxGT("Välj origo"); - LSTR MSG_LAST_VALUE_SP = _UxGT("Senaste värde "); - - LSTR MSG_PREHEAT_1 = _UxGT("Förvärmning ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Förvärmning ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Förvärmning ") PREHEAT_1_LABEL _UxGT(" Stoppa"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Förvärmning ") PREHEAT_1_LABEL _UxGT(" Stoppa ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Förvärmning ") PREHEAT_1_LABEL _UxGT(" Alla"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Förvärmning ") PREHEAT_1_LABEL _UxGT(" Bädd"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Förvärmning ") PREHEAT_1_LABEL _UxGT(" Konf"); - - LSTR MSG_PREHEAT_M = _UxGT("Förvärmning $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Förvärmning $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Förvärmning $ Stoppa"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Förvärmning $ Stoppa ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Förvärmning $ Alla"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Förvärmning $ Bädd"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Förvärmning $ Donf"); - - LSTR MSG_PREHEAT_CUSTOM = _UxGT("Anpassad förvärmning"); - LSTR MSG_COOLDOWN = _UxGT("Nedkylning"); - LSTR MSG_CUTTER_FREQUENCY = _UxGT("Frekvens"); - LSTR MSG_LASER_MENU = _UxGT("Laserkontroll"); - LSTR MSG_SPINDLE_MENU = _UxGT("Spindelkontroll"); - LSTR MSG_LASER_POWER = _UxGT("Laserstyrka"); - LSTR MSG_SPINDLE_POWER = _UxGT("Spindelstyrka"); - LSTR MSG_LASER_TOGGLE = _UxGT("Växla laser"); - LSTR MSG_LASER_PULSE_MS = _UxGT("Testpuls ms"); - LSTR MSG_LASER_FIRE_PULSE = _UxGT("Aktivera puls"); - LSTR MSG_SPINDLE_TOGGLE = _UxGT("Växla spindel"); - LSTR MSG_SPINDLE_FORWARD = _UxGT("Spindel framåt"); - LSTR MSG_SPINDLE_REVERSE = _UxGT("Spindel bakåt"); - LSTR MSG_SWITCH_PS_ON = _UxGT("Spänning till"); - LSTR MSG_SWITCH_PS_OFF = _UxGT("Spänning från"); - LSTR MSG_EXTRUDE = _UxGT("Extrudera"); - LSTR MSG_RETRACT = _UxGT("Sug tillbaka"); - LSTR MSG_MOVE_AXIS = _UxGT("Förflytta axel"); - LSTR MSG_PROBE_AND_LEVEL = _UxGT("Sond och Nivellera"); - LSTR MSG_BED_LEVELING = _UxGT("Höjdjustering av bädd"); - LSTR MSG_LEVEL_BED = _UxGT("Höjdjustera bädd"); - LSTR MSG_BED_TRAMMING = _UxGT("Justering av bädd"); - LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Höj bädden tills proben triggas"); - LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Alla hörn inom tolerans. Bädd höjdjusterad"); - LSTR MSG_BED_TRAMMING_GOOD_POINTS = _UxGT("Bra punkter: "); - LSTR MSG_BED_TRAMMING_LAST_Z = _UxGT("Senaste Z: "); - LSTR MSG_NEXT_CORNER = _UxGT("Nästa hörn"); - LSTR MSG_MESH_EDITOR = _UxGT("Meshnätredigerare"); - LSTR MSG_EDIT_MESH = _UxGT("Redigera meshnät"); - LSTR MSG_EDITING_STOPPED = _UxGT("Meshnätredigering stoppad"); - LSTR MSG_PROBING_POINT = _UxGT("Höjdmätpunkt"); - LSTR MSG_MESH_X = _UxGT("Index X"); - LSTR MSG_MESH_Y = _UxGT("Index Y"); - LSTR MSG_MESH_EDIT_Z = _UxGT("Z-värde"); - LSTR MSG_CUSTOM_COMMANDS = _UxGT("Anpassade kommandon"); - LSTR MSG_M48_TEST = _UxGT("M48 probtest"); - LSTR MSG_M48_POINT = _UxGT("M48 punkt"); - LSTR MSG_M48_OUT_OF_BOUNDS = _UxGT("Mätprob utanför tolerans"); - LSTR MSG_M48_DEVIATION = _UxGT("Avvikelse"); - LSTR MSG_IDEX_MENU = _UxGT("IDEX läge"); - LSTR MSG_OFFSETS_MENU = _UxGT("Verktygsoffset"); - LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Autoparkera"); - LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplicering"); - LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Speglad kopia"); - LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Full kontroll"); - LSTR MSG_IDEX_DUPE_GAP = _UxGT("Duplicera X-avstånd"); - LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2:a munstycke Z"); - LSTR MSG_HOTEND_OFFSET_N = _UxGT("2:a munstycke @"); - LSTR MSG_UBL_DOING_G29 = _UxGT("Utför G29"); - LSTR MSG_UBL_TOOLS = _UxGT("UBL verktyg"); - LSTR MSG_LCD_TILTING_MESH = _UxGT("Lutningspunkt"); - LSTR MSG_UBL_MANUAL_MESH = _UxGT("Skapa manuellt meshnät"); - LSTR MSG_UBL_BC_INSERT = _UxGT("Placera shims & mät"); - LSTR MSG_UBL_BC_INSERT2 = _UxGT("Mät"); - LSTR MSG_UBL_BC_REMOVE = _UxGT("Ta bort & mät bädd"); - LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Går vidare till nästa"); - LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Bäddtemperatur"); - LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Bäddtemperatur"); - LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Temperatur munstycke"); - LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Temperatur munstycke"); - LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Redigera anpassat meshnät"); - LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Finjustera meshnät"); - LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Redigering meshnät slutförd"); - LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Bygg anpassat meshnät"); - LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Bygg meshnät"); - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Bygg meshnät ($)"); - LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Bygg meshnät kallt"); - LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Justera höjd på meshnät"); - LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Höjdantal"); - LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Validera meshnät"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Validera meshnät ($)"); - LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Validera anpassat meshnät"); - LSTR MSG_G26_HEATING_BED = _UxGT("G26 Värm bädd"); - LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 Värm munstycke"); - LSTR MSG_G26_MANUAL_PRIME = _UxGT("Manuell grundinställning..."); - LSTR MSG_G26_FIXED_LENGTH = _UxGT("Fast längd grundinställning"); - LSTR MSG_G26_PRIME_DONE = _UxGT("Grundinställning klar"); - LSTR MSG_G26_CANCELED = _UxGT("G26 Avbruten"); - LSTR MSG_G26_LEAVING = _UxGT("Höjdjustera G26"); - LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Fortsätt bädd meshnät"); - LSTR MSG_UBL_MESH_LEVELING = _UxGT("Meshnät höjdjustering"); - LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-punkts höjdjustering"); - LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Höjdjustering av rutnät"); - LSTR MSG_UBL_MESH_LEVEL = _UxGT("Höjdjustera meshnät"); - LSTR MSG_UBL_SIDE_POINTS = _UxGT("Sidopunkter"); - LSTR MSG_UBL_MAP_TYPE = _UxGT("Karttyp"); - LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Utmatning meshnätkarta"); - LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Utmatning för värd"); - LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Utmatning för CSV"); - LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Utanför skrivare backup"); - LSTR MSG_UBL_INFO_UBL = _UxGT("Utmatning UBL info"); - LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Ifyllnadsmängd"); - LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Manuell ifyllnad"); - LSTR MSG_UBL_SMART_FILLIN = _UxGT("Smart ifyllnad"); - LSTR MSG_UBL_FILLIN_MESH = _UxGT("Ifyllnad meshnät"); - LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Ogiltigförklara alla"); - LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Ogiltigförklara närmast"); - LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Finjustera alla"); - LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Finjustera närmast"); - LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Meshnätlagring"); - LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Minnesfack"); - LSTR MSG_UBL_LOAD_MESH = _UxGT("Ladda bädd meshnät"); - LSTR MSG_UBL_SAVE_MESH = _UxGT("Spara bädd meshnät"); - LSTR MSG_MESH_LOADED = _UxGT("Meshnät %i laddad"); - LSTR MSG_MESH_SAVED = _UxGT("Meshnät %i sparad"); - LSTR MSG_UBL_NO_STORAGE = _UxGT("Inget lagringsutrymme"); - LSTR MSG_UBL_SAVE_ERROR = _UxGT("Fel när UBL skulle sparas"); - LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Fel när UBL skulle återställas"); - LSTR MSG_UBL_Z_OFFSET = _UxGT("Z-offset: "); - LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Z-offset stoppad"); - LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("Steg för steg UBL"); - LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1. Bygg meshnät kallt"); - LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2. Smart ifyllnad"); - LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3. Validera meshnät"); - LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4. Finjustera alla"); - LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5. Validera meshnät"); - LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6. Finjustera alla"); - LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7. Spara bädd meshnät"); - - LSTR MSG_LED_CONTROL = _UxGT("LED-kontroll"); - LSTR MSG_LIGHTS = _UxGT("Ljus"); - LSTR MSG_LIGHT_N = _UxGT("Ljus #{"); - LSTR MSG_LED_PRESETS = _UxGT("Förinställt ljus"); - LSTR MSG_SET_LEDS_RED = _UxGT("Rött"); - LSTR MSG_SET_LEDS_ORANGE = _UxGT("Orange"); - LSTR MSG_SET_LEDS_YELLOW = _UxGT("Gult"); - LSTR MSG_SET_LEDS_GREEN = _UxGT("Grönt"); - LSTR MSG_SET_LEDS_BLUE = _UxGT("Blått"); - LSTR MSG_SET_LEDS_INDIGO = _UxGT("Indigo"); - LSTR MSG_SET_LEDS_VIOLET = _UxGT("Lila"); - LSTR MSG_SET_LEDS_WHITE = _UxGT("Vitt"); - LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Standard"); - LSTR MSG_LED_CHANNEL_N = _UxGT("Kanal {"); - LSTR MSG_NEO2_PRESETS = _UxGT("Ljus #2 förinställd"); - LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Ljusstyrka"); - LSTR MSG_CUSTOM_LEDS = _UxGT("Anpassat ljus"); - LSTR MSG_INTENSITY_R = _UxGT("Ljusstyrka rött"); - LSTR MSG_INTENSITY_G = _UxGT("Ljusstyrka grönt"); - LSTR MSG_INTENSITY_B = _UxGT("Ljusstyrka blått"); - LSTR MSG_INTENSITY_W = _UxGT("Ljusstyrka vitt"); - LSTR MSG_LED_BRIGHTNESS = _UxGT("Ljusstyrka"); - - LSTR MSG_MOVING = _UxGT("Förflyttar..."); - LSTR MSG_FREE_XY = _UxGT("Fri XY"); - LSTR MSG_MOVE_X = _UxGT("Förflytta X"); - LSTR MSG_MOVE_Y = _UxGT("Förflytta Y"); - LSTR MSG_MOVE_Z = _UxGT("Förflytta Z"); - LSTR MSG_MOVE_N = _UxGT("Förflytta @"); - LSTR MSG_MOVE_E = _UxGT("Kör extruder"); - LSTR MSG_MOVE_EN = _UxGT("Extruder *"); - LSTR MSG_HOTEND_TOO_COLD = _UxGT("Ej uppnådd temperatur munstycke"); - LSTR MSG_MOVE_N_MM = _UxGT("Förflytta $mm"); - LSTR MSG_MOVE_N_IN = _UxGT("Flytta $in"); - LSTR MSG_MOVE_N_DEG = _UxGT("Flytta $") LCD_STR_DEGREE; - LSTR MSG_SPEED = _UxGT("Hastighet"); - LSTR MSG_MESH_Z_OFFSET = _UxGT("Bädd Z"); - LSTR MSG_NOZZLE = _UxGT("Munstycke"); - LSTR MSG_NOZZLE_N = _UxGT("Munstycke ~"); - LSTR MSG_NOZZLE_PARKED = _UxGT("Munstycke parkerat"); - LSTR MSG_NOZZLE_STANDBY = _UxGT("Munstycke standby"); - LSTR MSG_BED = _UxGT("Bädd"); - LSTR MSG_CHAMBER = _UxGT("Inkapsling"); - LSTR MSG_FAN_SPEED = _UxGT("Fläktvarvtal"); - LSTR MSG_FAN_SPEED_N = _UxGT("Fläktvarvtal ~"); - LSTR MSG_STORED_FAN_N = _UxGT("Sparad fläkt ~"); - LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Varvtal extrafläkt"); - LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Varvtal extrafläkt ~"); - LSTR MSG_CONTROLLER_FAN = _UxGT("Fläktstyrning"); - LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("Tomgångsvarvtal fläkt"); - LSTR MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("Autoläge"); - LSTR MSG_CONTROLLER_FAN_SPEED = _UxGT("Aktivt varvtal"); - LSTR MSG_CONTROLLER_FAN_DURATION = _UxGT("Tomgångsperiod"); - LSTR MSG_FLOW = _UxGT("Flöde"); - LSTR MSG_FLOW_N = _UxGT("Flöde ~"); - LSTR MSG_CONTROL = _UxGT("Styrning"); - LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); - LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fakt"); - LSTR MSG_AUTOTEMP = _UxGT("Autotemperatur"); - LSTR MSG_LCD_ON = _UxGT("Till"); - LSTR MSG_LCD_OFF = _UxGT("Från"); - LSTR MSG_PID_AUTOTUNE = _UxGT("PID automappning"); - LSTR MSG_PID_AUTOTUNE_E = _UxGT("PID automappning *"); - LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("PID-mappninging klar"); - LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Automappning misslyckad! Kass extruder."); - LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Automappning misslyckad! Temperatur för hög."); - LSTR MSG_PID_TIMEOUT = _UxGT("Automappning misslyckad! Tidsgräns överskriden."); - LSTR MSG_SELECT_E = _UxGT("Välj *"); - LSTR MSG_ACC = _UxGT("Accel"); - LSTR MSG_JERK = _UxGT("Ryck"); - LSTR MSG_VA_JERK = _UxGT("V") STR_A _UxGT("-Ryck"); - LSTR MSG_VB_JERK = _UxGT("V") STR_B _UxGT("-Ryck"); - LSTR MSG_VC_JERK = _UxGT("V") STR_C _UxGT("-Ryck"); - LSTR MSG_VN_JERK = _UxGT("V@-Ryck"); - LSTR MSG_VE_JERK = _UxGT("Ve-Ryck"); - LSTR MSG_JUNCTION_DEVIATION = _UxGT("Knutpunkt avv"); - LSTR MSG_MAX_SPEED = _UxGT("Toppfart (mm/s)"); - LSTR MSG_VMAX_A = _UxGT("Vmax ") STR_A; - LSTR MSG_VMAX_B = _UxGT("Vmax ") STR_B; - LSTR MSG_VMAX_C = _UxGT("Vmax ") STR_C; - LSTR MSG_VMAX_N = _UxGT("Toppfart @"); - LSTR MSG_VMAX_E = _UxGT("Toppfart E"); - LSTR MSG_VMAX_EN = _UxGT("Toppfart *"); - LSTR MSG_VMIN = _UxGT("Lägsta hastighet"); - LSTR MSG_VTRAV_MIN = _UxGT("Lägsta förflyttningshastighet"); - LSTR MSG_ACCELERATION = _UxGT("Acceleration"); - LSTR MSG_AMAX_A = _UxGT("Amax ") STR_A; - LSTR MSG_AMAX_B = _UxGT("Amax ") STR_B; - LSTR MSG_AMAX_C = _UxGT("Amax ") STR_C; - LSTR MSG_AMAX_N = _UxGT("Högsta acceleration @"); - LSTR MSG_AMAX_E = _UxGT("Högsta acceleration E"); - LSTR MSG_AMAX_EN = _UxGT("Högsta acceleration *"); - LSTR MSG_A_RETRACT = _UxGT("Sugacceleration"); - LSTR MSG_A_TRAVEL = _UxGT("Förflyttningsacceleration"); - LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("Frekvensbegränsning XY"); - LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("Min frekvensfaktor"); - LSTR MSG_STEPS_PER_MM = _UxGT("Steg/mm"); - LSTR MSG_A_STEPS = STR_A _UxGT(" Steg/mm"); - LSTR MSG_B_STEPS = STR_B _UxGT(" Steg/mm"); - LSTR MSG_C_STEPS = STR_C _UxGT(" Steg/mm"); - LSTR MSG_N_STEPS = _UxGT("@ steg/mm"); - LSTR MSG_E_STEPS = _UxGT("E steg/mm"); - LSTR MSG_EN_STEPS = _UxGT("* steg/mm"); - LSTR MSG_TEMPERATURE = _UxGT("Temperatur"); - LSTR MSG_MOTION = _UxGT("Rörelse"); - LSTR MSG_FILAMENT = _UxGT("Tråd"); - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E i mm³"); - LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("E-gräns i mm³"); - LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("E-gräns *"); - LSTR MSG_FILAMENT_DIAM = _UxGT("Tråddiameter."); - LSTR MSG_FILAMENT_DIAM_E = _UxGT("Tråddiameter. *"); - LSTR MSG_FILAMENT_UNLOAD = _UxGT("Frigör mm"); - LSTR MSG_FILAMENT_LOAD = _UxGT("Ladda mm"); - LSTR MSG_ADVANCE_K = _UxGT("Avancera K"); - LSTR MSG_ADVANCE_K_E = _UxGT("Avancera K *"); - LSTR MSG_CONTRAST = _UxGT("Kontrast LCD"); - LSTR MSG_STORE_EEPROM = _UxGT("Spara inställningar"); - LSTR MSG_LOAD_EEPROM = _UxGT("Ladda inställningar"); - LSTR MSG_RESTORE_DEFAULTS = _UxGT("Återställ till grundinställning"); - LSTR MSG_INIT_EEPROM = _UxGT("Initiera EEPROM"); - LSTR MSG_ERR_EEPROM_CRC = _UxGT("EEPROM CRC fel"); - LSTR MSG_ERR_EEPROM_SIZE = _UxGT("EEPROM-storlek fel"); - LSTR MSG_ERR_EEPROM_VERSION = _UxGT("EEPROM-version fel"); - LSTR MSG_SETTINGS_STORED = _UxGT("Inställningar sparade"); - LSTR MSG_MEDIA_UPDATE = _UxGT("Uppdatera minneskort"); - LSTR MSG_RESET_PRINTER = _UxGT("Starta om 3D-skrivare"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Uppdatera"); - LSTR MSG_INFO_SCREEN = _UxGT("Infoskärm"); - LSTR MSG_PREPARE = _UxGT("Förbered"); - LSTR MSG_TUNE = _UxGT("Justera"); - LSTR MSG_POWER_MONITOR = _UxGT("Strömövervakning"); - LSTR MSG_CURRENT = _UxGT("Ström"); - LSTR MSG_VOLTAGE = _UxGT("Spänning"); - LSTR MSG_POWER = _UxGT("Effekt"); - LSTR MSG_START_PRINT = _UxGT("Starta utskrift"); - LSTR MSG_BUTTON_NEXT = _UxGT("Nästa"); - LSTR MSG_BUTTON_INIT = _UxGT("Initiera"); - LSTR MSG_BUTTON_STOP = _UxGT("Stoppa"); - LSTR MSG_BUTTON_PRINT = _UxGT("Skriv"); - LSTR MSG_BUTTON_RESET = _UxGT("Återställ"); - LSTR MSG_BUTTON_IGNORE = _UxGT("Ignorera"); - LSTR MSG_BUTTON_CANCEL = _UxGT("Avbryt"); - LSTR MSG_BUTTON_DONE = _UxGT("Färdig"); - LSTR MSG_BUTTON_BACK = _UxGT("Bakåt"); - LSTR MSG_BUTTON_PROCEED = _UxGT("Fortsätt"); - LSTR MSG_BUTTON_SKIP = _UxGT("Hoppa över"); - LSTR MSG_PAUSING = _UxGT("Paus.."); - LSTR MSG_PAUSE_PRINT = _UxGT("Pausa utskrift"); - LSTR MSG_RESUME_PRINT = _UxGT("Återuppta utskrift"); - LSTR MSG_HOST_START_PRINT = _UxGT("Värd start"); - LSTR MSG_STOP_PRINT = _UxGT("Stoppa utskrift"); - LSTR MSG_END_LOOPS = _UxGT("Slut upprepningsloop"); - LSTR MSG_PRINTING_OBJECT = _UxGT("Skriver objekt"); - LSTR MSG_CANCEL_OBJECT = _UxGT("Avbryt objekt"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Avbryt objekt {"); - LSTR MSG_OUTAGE_RECOVERY = _UxGT("Strömavbrott"); - LSTR MSG_MEDIA_MENU = _UxGT("Skriv från minneskort"); - LSTR MSG_NO_MEDIA = _UxGT("Inget minneskort"); - LSTR MSG_DWELL = _UxGT("Sov..."); - LSTR MSG_USERWAIT = _UxGT("Klicka för att återuppta..."); - LSTR MSG_PRINT_PAUSED = _UxGT("Utskrift pausad"); - LSTR MSG_PRINTING = _UxGT("Skriver..."); - LSTR MSG_PRINT_ABORTED = _UxGT("Utskrift avbruten"); - LSTR MSG_PRINT_DONE = _UxGT("Utskrift slutförd"); - LSTR MSG_NO_MOVE = _UxGT("Ingen förflyttning."); - LSTR MSG_KILLED = _UxGT("DÖDAD. "); - LSTR MSG_STOPPED = _UxGT("STOPPAD. "); - LSTR MSG_CONTROL_RETRACT = _UxGT("Sug tillbaka mm"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Byt sug.mm"); - LSTR MSG_CONTROL_RETRACTF = _UxGT("Sug tillbaka V"); - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Hoppa mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Åter sug tillbaka. mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Byt åter sug t. mm"); - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Återsugt. V"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("Byt åter sug. V"); - LSTR MSG_AUTORETRACT = _UxGT("Auto sug tillbka"); - LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Byt längd"); - LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Byt extra"); - LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Rensa längd"); - LSTR MSG_TOOL_CHANGE = _UxGT("Verktygsbyte"); - LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Z höj"); - LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Grundhastighet"); - LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Återgångshastighet"); - LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Parkera huvud"); - LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Återgångshastighet"); - LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Fläktvarvtal"); - LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Fläkttid"); - LSTR MSG_TOOL_MIGRATION_ON = _UxGT("Auto till"); - LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("Auto från"); - LSTR MSG_TOOL_MIGRATION = _UxGT("Verktyg migration"); - LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("Auto migration"); - LSTR MSG_TOOL_MIGRATION_END = _UxGT("Senaste extruder"); - LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("Migrera till *"); - LSTR MSG_FILAMENTCHANGE = _UxGT("Byt tråd"); - LSTR MSG_FILAMENTCHANGE_E = _UxGT("Byt tråd *"); - LSTR MSG_FILAMENTLOAD = _UxGT("Ladda tråd"); - LSTR MSG_FILAMENTLOAD_E = _UxGT("Ladda * tråd"); - LSTR MSG_FILAMENTUNLOAD = _UxGT("Lossa tråd"); - LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Lossa * tråd"); - LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Lossa allt"); - - LSTR MSG_ATTACH_MEDIA = _UxGT("Applicera minneskort"); - LSTR MSG_ATTACH_SD = _UxGT("Bifoga SD-kort"); - LSTR MSG_ATTACH_USB = _UxGT("Bifoga USB-minne"); - LSTR MSG_CHANGE_MEDIA = _UxGT("Byt minneskort"); - LSTR MSG_RELEASE_MEDIA = _UxGT("Mata ut minneskort"); - LSTR MSG_RUN_AUTOFILES = _UxGT("Autostarta filer"); - - LSTR MSG_ZPROBE_OUT = _UxGT("Z-prob utanför bädd"); - LSTR MSG_SKEW_FACTOR = _UxGT("Skevhetsfaktor"); - LSTR MSG_BLTOUCH = _UxGT("BLTouch"); - LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Självtest"); - LSTR MSG_BLTOUCH_RESET = _UxGT("Återställ"); - LSTR MSG_BLTOUCH_STOW = _UxGT("Fäll in"); - LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Fäll ut"); - LSTR MSG_BLTOUCH_SW_MODE = _UxGT("SW-läge"); - LSTR MSG_BLTOUCH_5V_MODE = _UxGT("5V-läge"); - LSTR MSG_BLTOUCH_OD_MODE = _UxGT("OD-läge"); - LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("Läge-lagring"); - LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Sätt BLTouch till 5V"); - LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Sätt BLTouch till OD"); - LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Reportera tömning"); - LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("VARNING: Felaktiga inställningar kan orsaka skada! Fortsätt ändå?"); - LSTR MSG_TOUCHMI_PROBE = _UxGT("TouchMI"); - LSTR MSG_TOUCHMI_INIT = _UxGT("Initiera TouchMI"); - LSTR MSG_TOUCHMI_ZTEST = _UxGT("Test Z-offset"); - LSTR MSG_TOUCHMI_SAVE = _UxGT("Spara"); - LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("Fäll ut TouchMI"); - LSTR MSG_MANUAL_DEPLOY = _UxGT("Fäll ut Z-prob"); - LSTR MSG_MANUAL_STOW = _UxGT("Fäll in Z-prob"); - LSTR MSG_HOME_FIRST = _UxGT("Hem %s först"); - LSTR MSG_ZPROBE_OFFSETS = _UxGT("Offsets mätprob"); - LSTR MSG_ZPROBE_XOFFSET = _UxGT("X-offset mätprob"); - LSTR MSG_ZPROBE_YOFFSET = _UxGT("Y-offset mätprob"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Z-offset mätprob"); - LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Sond @ Offset"); - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Steg Z justering"); - LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Förflytta munstycke till bädd"); - LSTR MSG_BABYSTEP_X = _UxGT("Microsteg X"); - LSTR MSG_BABYSTEP_Y = _UxGT("Microsteg Y"); - LSTR MSG_BABYSTEP_Z = _UxGT("Microsteg Z"); - LSTR MSG_BABYSTEP_N = _UxGT("Microsteg @"); - LSTR MSG_BABYSTEP_TOTAL = _UxGT("Total"); - LSTR MSG_ENDSTOP_ABORT = _UxGT("Ändlägesstopp avbrott"); - LSTR MSG_ERR_HEATING_FAILED = _UxGT("Värmning misslyckad"); - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Fel: REDUNDANT TEMP"); - LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("TERMISK ÖVERDRIFT"); - LSTR MSG_ERR_MAXTEMP = _UxGT("Fel: MAXTEMP"); - LSTR MSG_ERR_MINTEMP = _UxGT("Fel: MINTEMP"); - LSTR MSG_HALTED = _UxGT("Utskrift stoppad"); - LSTR MSG_PLEASE_RESET = _UxGT("Vänligen återställ"); - LSTR MSG_SHORT_HOUR = _UxGT("t"); // One character only - LSTR MSG_HEATING = _UxGT("Värmer..."); - LSTR MSG_COOLING = _UxGT("Avkylning..."); - LSTR MSG_BED_HEATING = _UxGT("Värmer bädden..."); - LSTR MSG_BED_COOLING = _UxGT("Kyler bädden..."); - LSTR MSG_PROBE_HEATING = _UxGT("Värmer munstycke..."); - LSTR MSG_PROBE_COOLING = _UxGT("Kyler munstycke..."); - LSTR MSG_CHAMBER_HEATING = _UxGT("Värmer kammare..."); - LSTR MSG_CHAMBER_COOLING = _UxGT("Kyler kammare..."); - LSTR MSG_DELTA_CALIBRATE = _UxGT("Deltakalibrering"); - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Kalibrera X"); - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Kalibrera Y"); - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Kalibrera Z"); - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Kalibrera mittläge"); - LSTR MSG_DELTA_SETTINGS = _UxGT("Deltainställningar"); - LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Autokalibrering"); - LSTR MSG_DELTA_DIAG_ROD = _UxGT("Diag Rod"); - LSTR MSG_DELTA_HEIGHT = _UxGT("Höjd"); - LSTR MSG_DELTA_RADIUS = _UxGT("Radie"); - LSTR MSG_INFO_MENU = _UxGT("Om skrivaren"); - LSTR MSG_INFO_PRINTER_MENU = _UxGT("Skrivarinformation"); - LSTR MSG_3POINT_LEVELING = _UxGT("3-Punkts nivåjustering"); - LSTR MSG_LINEAR_LEVELING = _UxGT("Linjär nivåjustering"); - LSTR MSG_BILINEAR_LEVELING = _UxGT("Bilinjär nivåjustering"); - LSTR MSG_UBL_LEVELING = _UxGT("Enhetlig bädd nivåjustering (UBL)"); - LSTR MSG_MESH_LEVELING = _UxGT("Meshnät nivåjustering"); - LSTR MSG_INFO_STATS_MENU = _UxGT("Skrivarstatistik"); - LSTR MSG_INFO_BOARD_MENU = _UxGT("Styrkortsinfo"); - LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Termistorer"); - LSTR MSG_INFO_EXTRUDERS = _UxGT("Extruderare"); - LSTR MSG_INFO_BAUDRATE = _UxGT("Datahastighet"); - LSTR MSG_INFO_PROTOCOL = _UxGT("Protokoll"); - LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Övertempsövervakning: från"); - LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Övertempsövervakning: till"); - LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Tidsgräns värmare munstycke"); - - LSTR MSG_CASE_LIGHT = _UxGT("Kapslingsljus"); - LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Ljusstyrka belysning"); - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("DEFEKT SKRIVARE"); - - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Utskrift"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Slutförda"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Total utskriftstid"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Längsta utskriftstid"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total extrudering"); - - LSTR MSG_INFO_MIN_TEMP = _UxGT("Min temperatur"); - LSTR MSG_INFO_MAX_TEMP = _UxGT("Max temperatur"); - LSTR MSG_INFO_PSU = _UxGT("PSU"); - LSTR MSG_DRIVE_STRENGTH = _UxGT("Drivstyrka"); - LSTR MSG_DAC_PERCENT_N = _UxGT("@ Driver %"); - LSTR MSG_ERROR_TMC = _UxGT("TMC KOPPLINGSFEL"); - LSTR MSG_DAC_EEPROM_WRITE = _UxGT("DAC EEPROM skriv"); - LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("TRÅDBYTE"); - LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("UTSKRIFT PAUSAD"); - LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("LADDA TRÅD"); - LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("LOSSA TRÅD"); - LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("FORTSÄTT ALTERNATIV:"); - LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Rensa mer"); - LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Fortsätt"); - LSTR MSG_FILAMENT_CHANGE_PURGE_CONTINUE = _UxGT("Rengör eller fortsätt?"); - LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Munstycke: "); - LSTR MSG_RUNOUT_SENSOR = _UxGT("Trådkontrollgivare"); - LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("Förbrukad trådlängd mm"); - LSTR MSG_EXTRUDER_MIN_TEMP = _UxGT("Extruder Minimumtemp."); - LSTR MSG_FANCHECK = _UxGT("Fläktvarvövervakning"); - LSTR MSG_KILL_HOMING_FAILED = _UxGT("Hemkörning misslyckad"); - LSTR MSG_LCD_PROBING_FAILED = _UxGT("Probning misslyckad"); - - LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("VÄLJ TRÅD"); - LSTR MSG_MMU2_MENU = _UxGT("MMU"); - LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("Uppdatera MMU firmware!"); - LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU behöver kontrolleras."); - LSTR MSG_MMU2_RESUME = _UxGT("Återuppta MMU"); - LSTR MSG_MMU2_RESUMING = _UxGT("MMU Återupptas..."); - LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("Ladda MMU"); - LSTR MSG_MMU2_LOAD_ALL = _UxGT("MMU ladda alla"); - LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("MMU ladda till munstycke"); - LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("Mata ut MMU"); - LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("MMU Mata ut ~"); - LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Lossa MMU"); - LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Ladda tråd %i..."); - LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Mata ut tråd ..."); - LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Lossa tråd..."); - LSTR MSG_MMU2_ALL = _UxGT("Alla"); - LSTR MSG_MMU2_FILAMENT_N = _UxGT("Tråd ~"); - LSTR MSG_MMU2_RESET = _UxGT("Återställ MMU"); - LSTR MSG_MMU2_RESETTING = _UxGT("MMU återställs..."); - LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Ta bort, klicka"); - LSTR MSG_MMU2_REMOVE_AND_CLICK = _UxGT("Avlägsna och klicka..."); - - LSTR MSG_MIX = _UxGT("Mixa"); - LSTR MSG_MIX_COMPONENT_N = _UxGT("Komponent {"); - LSTR MSG_MIXER = _UxGT("Mixer"); - LSTR MSG_GRADIENT = _UxGT("Gradient"); - LSTR MSG_FULL_GRADIENT = _UxGT("Full gradient"); - LSTR MSG_TOGGLE_MIX = _UxGT("Växla mix"); - LSTR MSG_CYCLE_MIX = _UxGT("Rotera mix"); - LSTR MSG_GRADIENT_MIX = _UxGT("Gradient mix"); - LSTR MSG_REVERSE_GRADIENT = _UxGT("Omvänd gradient"); - LSTR MSG_ACTIVE_VTOOL = _UxGT("Aktiva V-verktyg"); - LSTR MSG_START_VTOOL = _UxGT("Starta V-verktyg"); - LSTR MSG_END_VTOOL = _UxGT(" Avsluta V-verktyg"); - LSTR MSG_GRADIENT_ALIAS = _UxGT("Alias V-verktyg"); - LSTR MSG_RESET_VTOOLS = _UxGT("Återställ V-verktyg"); - LSTR MSG_COMMIT_VTOOL = _UxGT("Anslut V-verktyg mix"); - LSTR MSG_VTOOLS_RESET = _UxGT("V-verktyg blev återställda"); - LSTR MSG_START_Z = _UxGT("Start Z:"); - LSTR MSG_END_Z = _UxGT(" Slut Z:"); - - LSTR MSG_GAMES = _UxGT("Spel"); - LSTR MSG_BRICKOUT = _UxGT("Brickout"); - LSTR MSG_INVADERS = _UxGT("Invaders"); - LSTR MSG_SNAKE = _UxGT("Sn4k3"); - LSTR MSG_MAZE = _UxGT("Labyrint"); - - LSTR MSG_BAD_PAGE = _UxGT("Dålig sida index"); - LSTR MSG_BAD_PAGE_SPEED = _UxGT("Dålig sida hastighet"); - - LSTR MSG_EDIT_PASSWORD = _UxGT("Redigera Lösenord"); - LSTR MSG_LOGIN_REQUIRED = _UxGT("Inloggning krävs"); - LSTR MSG_PASSWORD_SETTINGS = _UxGT("Lösenordsinställningar"); - LSTR MSG_ENTER_DIGIT = _UxGT("Ange siffra"); - LSTR MSG_CHANGE_PASSWORD = _UxGT("Ange/ändra lösenord"); - LSTR MSG_REMOVE_PASSWORD = _UxGT("Ta bort lösenord"); - LSTR MSG_PASSWORD_SET = _UxGT("Lösenordet är "); - LSTR MSG_START_OVER = _UxGT("Börja om"); - LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Glöm inte att spara!"); - LSTR MSG_PASSWORD_REMOVED = _UxGT("Lösenord borttaget"); - - // - // Filament Change screens show up to 2 lines on a 3-line display - // - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Klick för att fortsätta")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parkera...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Vänta...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Sätt in och klicka")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Klicka för att värma")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Värmer...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Lossar...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Laddar...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Rensar...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Klicka för att slutföra")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Återgår...")); - - LSTR MSG_TMC_DRIVERS = _UxGT("TMC-Drivare"); - LSTR MSG_TMC_CURRENT = _UxGT("Strömdrivare"); - LSTR MSG_TMC_HYBRID_THRS = _UxGT("Tröskelvärde hybrid"); - LSTR MSG_TMC_HOMING_THRS = _UxGT("Givarfri hemkörning"); - LSTR MSG_TMC_STEPPING_MODE = _UxGT("Stegningsläge"); - LSTR MSG_TMC_STEALTHCHOP = _UxGT("Smyghack"); - - LSTR MSG_SERVICE_RESET = _UxGT("Återställ"); - LSTR MSG_SERVICE_IN = _UxGT(" in:"); - LSTR MSG_BACKLASH = _UxGT("Backslag"); - LSTR MSG_BACKLASH_CORRECTION = _UxGT("Korrigering"); - LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Släta ut"); - - LSTR MSG_LEVEL_X_AXIS = _UxGT("Nivå X-axel"); - LSTR MSG_AUTO_CALIBRATE = _UxGT("Autokalibrera"); - LSTR MSG_FTDI_HEATER_TIMEOUT = _UxGT("Overksam tidsgräns, temperatur minskning. Tryck ok för att återvärma och igen för att fortsätta."); - LSTR MSG_HEATER_TIMEOUT = _UxGT("Värmare Tidsgräns"); - LSTR MSG_REHEAT = _UxGT("Återvärm"); - LSTR MSG_REHEATING = _UxGT("Återvärmning..."); - - LSTR MSG_PROBE_WIZARD = _UxGT("Z Sond Wizard"); - LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Sondering Z Referens"); - LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Flyttar till Sonderings Pos"); - - LSTR MSG_SOUND = _UxGT("Ljud"); - - LSTR MSG_TOP_LEFT = _UxGT("Uppe Vänster"); - LSTR MSG_BOTTOM_LEFT = _UxGT("Nere Vänster"); - LSTR MSG_TOP_RIGHT = _UxGT("Uppe Höger"); - LSTR MSG_BOTTOM_RIGHT = _UxGT("Nere Höger"); - LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Kalibrering Färdig"); - LSTR MSG_CALIBRATION_FAILED = _UxGT("Kalibrering misslyckad"); + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" redo."); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = _UxGT("Minneskort isatt"); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = _UxGT("Minneskort avlägsnat"); // (MEDIA_TYPE_EN) Removed + LSTR MSG_LCD_ENDSTOPS = _UxGT("Ändlägesbrytare"); // Endstops + LSTR MSG_MAIN_MENU = _UxGT("Huvudmeny"); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("Inaktivera stegmotorer"); // Disable Steppers + LSTR MSG_HOMING = _UxGT("Hemkörning"); // Homing + LSTR MSG_AUTO_HOME = _UxGT("Auto hem"); // Auto Home + LSTR MSG_AUTO_HOME_X = _UxGT("Hem X"); // Home X + LSTR MSG_AUTO_HOME_Y = _UxGT("Hem Y"); // Home Y + LSTR MSG_AUTO_HOME_Z = _UxGT("Hem Z"); // Home Z + LSTR MSG_LEVEL_BED_HOMING = _UxGT("Hemkörning XYZ"); // Homing XYZ + LSTR MSG_LEVEL_BED_WAITING = _UxGT("Klicka för att starta"); // Click to Begin + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Nästa punkt"); // Next Point + LSTR MSG_LEVEL_BED_DONE = _UxGT("Höjdjustering klar!"); // Leveling Done! + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Ange offset för hemmaläge"); // Set Home Offsets + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Offset tillämpad"); // Offsets Applied + LSTR MSG_PREHEAT_1 = _UxGT("Förvärmning ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = _UxGT("Förvärmning ") PREHEAT_1_LABEL " ~"; // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = _UxGT("Förvärmning ") PREHEAT_1_LABEL _UxGT(" Stoppa"); // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = _UxGT("Förvärmning ") PREHEAT_1_LABEL _UxGT(" Stoppa ~"); // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_1_ALL = _UxGT("Förvärmning ") PREHEAT_1_LABEL _UxGT(" Alla"); // Preheat (PREHEAT_1_LABEL) All + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Förvärmning ") PREHEAT_1_LABEL _UxGT(" Bädd"); // Preheat (PREHEAT_1_LABEL) Bed + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Förvärmning ") PREHEAT_1_LABEL _UxGT(" Konf"); // Preheat (PREHEAT_1_LABEL) Conf + LSTR MSG_PREHEAT_M = _UxGT("Förvärmning $"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("Förvärmning $ ~"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("Förvärmning $ Stoppa"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("Förvärmning $ Stoppa ~"); // Preheat $ End ~ + LSTR MSG_PREHEAT_M_ALL = _UxGT("Förvärmning $ Alla"); // Preheat $ All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Förvärmning $ Bädd"); // Preheat $ Bed + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Förvärmning $ Donf"); // Preheat $ Conf + LSTR MSG_COOLDOWN = _UxGT("Nedkylning"); // Cooldown + LSTR MSG_SWITCH_PS_ON = _UxGT("Spänning till"); // Switch Power On + LSTR MSG_SWITCH_PS_OFF = _UxGT("Spänning från"); // Switch Power Off + LSTR MSG_EXTRUDE = _UxGT("Extrudera"); // Extrude + LSTR MSG_RETRACT = _UxGT("Sug tillbaka"); // Retract + LSTR MSG_MOVE_AXIS = _UxGT("Förflytta axel"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("Sond och Nivellera"); // Probe and Level + LSTR MSG_BED_LEVELING = _UxGT("Höjdjustering av bädd"); // Bed Leveling + LSTR MSG_LEVEL_BED = _UxGT("Höjdjustera bädd"); // Level Bed + LSTR MSG_MOVE_X = _UxGT("Förflytta X"); // Move X + LSTR MSG_MOVE_Y = _UxGT("Förflytta Y"); // Move Y + LSTR MSG_MOVE_Z = _UxGT("Förflytta Z"); // Move Z + LSTR MSG_MOVE_N = _UxGT("Förflytta @"); // Move @ + LSTR MSG_MOVE_E = _UxGT("Kör extruder"); // Move Extruder + LSTR MSG_MOVE_EN = _UxGT("Extruder *"); // Move * + LSTR MSG_MOVE_N_MM = _UxGT("Förflytta $mm"); // Move $mm + LSTR MSG_MOVE_N_IN = _UxGT("Flytta $in"); // Move $in + LSTR MSG_MOVE_N_DEG = _UxGT("Flytta $") LCD_STR_DEGREE; // Move $(LCD_STR_DEGREE) + LSTR MSG_SPEED = _UxGT("Hastighet"); // Speed + LSTR MSG_MESH_Z_OFFSET = _UxGT("Bädd Z"); // Bed Z + LSTR MSG_NOZZLE = _UxGT("Munstycke"); // Nozzle + LSTR MSG_NOZZLE_N = _UxGT("Munstycke ~"); // Nozzle ~ + LSTR MSG_BED = _UxGT("Bädd"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("Fläktvarvtal"); // Fan Speed + LSTR MSG_FAN_SPEED_N = _UxGT("Fläktvarvtal ~"); // Fan Speed ~ + LSTR MSG_FLOW = _UxGT("Flöde"); // Flow + LSTR MSG_FLOW_N = _UxGT("Flöde ~"); // Flow ~ + LSTR MSG_CONTROL = _UxGT("Styrning"); // Control + LSTR MSG_AUTOTEMP = _UxGT("Autotemperatur"); // Autotemp + LSTR MSG_SELECT_E = _UxGT("Välj *"); // Select * + LSTR MSG_ACC = _UxGT("Accel"); // Accel + LSTR MSG_VTRAV_MIN = _UxGT("Lägsta förflyttningshastighet"); // Min Travel Speed + LSTR MSG_ACCELERATION = _UxGT("Acceleration"); // Acceleration + LSTR MSG_AMAX_A = _UxGT("Amax ") STR_A; // Max (STR_A) Accel + LSTR MSG_AMAX_B = _UxGT("Amax ") STR_B; // Max (STR_B) Accel + LSTR MSG_AMAX_C = _UxGT("Amax ") STR_C; // Max (STR_C) Accel + LSTR MSG_AMAX_N = _UxGT("Högsta acceleration @"); // Max @ Accel + LSTR MSG_AMAX_E = _UxGT("Högsta acceleration E"); // Max E Accel + LSTR MSG_AMAX_EN = _UxGT("Högsta acceleration *"); // Max * Accel + LSTR MSG_A_RETRACT = _UxGT("Sugacceleration"); // Retract Accel + LSTR MSG_A_TRAVEL = _UxGT("Förflyttningsacceleration"); // Travel Accel + LSTR MSG_STEPS_PER_MM = _UxGT("Steg/mm"); // Steps/mm + LSTR MSG_A_STEPS = STR_A _UxGT(" Steg/mm"); // (STR_A) Steps/mm + LSTR MSG_B_STEPS = STR_B _UxGT(" Steg/mm"); // (STR_B) Steps/mm + LSTR MSG_C_STEPS = STR_C _UxGT(" Steg/mm"); // (STR_C) Steps/mm + LSTR MSG_N_STEPS = _UxGT("@ steg/mm"); // @ steps/mm + LSTR MSG_E_STEPS = _UxGT("E steg/mm"); // E steps/mm + LSTR MSG_EN_STEPS = _UxGT("* steg/mm"); // * Steps/mm + LSTR MSG_TEMPERATURE = _UxGT("Temperatur"); // Temperature + LSTR MSG_MOTION = _UxGT("Rörelse"); // Motion + LSTR MSG_FILAMENT = _UxGT("Tråd"); // Filament + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E i mm³"); // E in mm(SUPERSCRIPT_THREE) + LSTR MSG_FILAMENT_DIAM = _UxGT("Tråddiameter."); // Fil. Dia. + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Tråddiameter. *"); // Fil. Dia. * + LSTR MSG_CONTRAST = _UxGT("Kontrast LCD"); // LCD Contrast + LSTR MSG_STORE_EEPROM = _UxGT("Spara inställningar"); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("Ladda inställningar"); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("Återställ till grundinställning"); // Restore Defaults + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Uppdatera"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT("Infoskärm"); // Info Screen + LSTR MSG_PREPARE = _UxGT("Förbered"); // Prepare + LSTR MSG_TUNE = _UxGT("Justera"); // Tune + LSTR MSG_PAUSE_PRINT = _UxGT("Pausa utskrift"); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("Återuppta utskrift"); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("Stoppa utskrift"); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("Skriv från minneskort"); // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = _UxGT("Inget minneskort"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_DWELL = _UxGT("Sov..."); // Sleep... + LSTR MSG_USERWAIT = _UxGT("Klicka för att återuppta..."); // Click to Resume... + LSTR MSG_PRINT_ABORTED = _UxGT("Utskrift avbruten"); // Print Aborted + LSTR MSG_NO_MOVE = _UxGT("Ingen förflyttning."); // No Move. + LSTR MSG_KILLED = _UxGT("DÖDAD. "); // KILLED. + LSTR MSG_STOPPED = _UxGT("STOPPAD. "); // STOPPED. + LSTR MSG_CONTROL_RETRACT = _UxGT("Sug tillbaka mm"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Byt sug.mm"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACTF = _UxGT("Sug tillbaka V"); // Retract V + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Hoppa mm"); // Hop mm + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Åter sug tillbaka. mm"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Byt åter sug t. mm"); // S Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Återsugt. V"); // Unretract V + LSTR MSG_AUTORETRACT = _UxGT("Auto sug tillbka"); // Auto-Retract + LSTR MSG_FILAMENTCHANGE = _UxGT("Byt tråd"); // Change Filament + LSTR MSG_FILAMENTCHANGE_E = _UxGT("Byt tråd *"); // Change * Filament + LSTR MSG_ATTACH_MEDIA = _UxGT("Applicera minneskort"); // Attach (MEDIA_TYPE_EN) + LSTR MSG_ATTACH_SD = _UxGT("Bifoga SD-kort"); // Attach SD Card + LSTR MSG_ATTACH_USB = _UxGT("Bifoga USB-minne"); // Attach USB Drive + LSTR MSG_CHANGE_MEDIA = _UxGT("Byt minneskort"); // Refresh (MEDIA_TYPE_EN) + LSTR MSG_RUN_AUTOFILES = _UxGT("Autostarta filer"); // Run Autofiles + LSTR MSG_ZPROBE_OUT = _UxGT("Z-prob utanför bädd"); // Z Probe Past Bed + LSTR MSG_BLTOUCH_RESET = _UxGT("Återställ"); // Reset + LSTR MSG_ZPROBE_XOFFSET = _UxGT("X-offset mätprob"); // Probe X Offset + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Y-offset mätprob"); // Probe Y Offset + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Z-offset mätprob"); // Probe Z Offset + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Sond @ Offset"); // Probe @ Offset + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Steg Z justering"); // Babystep Probe Z + LSTR MSG_BABYSTEP_X = _UxGT("Microsteg X"); // Babystep X + LSTR MSG_BABYSTEP_Y = _UxGT("Microsteg Y"); // Babystep Y + LSTR MSG_BABYSTEP_Z = _UxGT("Microsteg Z"); // Babystep Z + LSTR MSG_BABYSTEP_N = _UxGT("Microsteg @"); // Babystep @ + LSTR MSG_ENDSTOP_ABORT = _UxGT("Ändlägesstopp avbrott"); // Endstop Abort + LSTR MSG_ERR_HEATING_FAILED = _UxGT("Värmning misslyckad"); // Heating Failed + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Fel: REDUNDANT TEMP"); // Err: REDUNDANT TEMP + LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("TERMISK ÖVERDRIFT"); // THERMAL RUNAWAY + LSTR MSG_ERR_MAXTEMP = _UxGT("Fel: MAXTEMP"); // Err: MAXTEMP + LSTR MSG_ERR_MINTEMP = _UxGT("Fel: MINTEMP"); // Err: MINTEMP + LSTR MSG_HALTED = _UxGT("Utskrift stoppad"); // PRINTER HALTED + LSTR MSG_PLEASE_RESET = _UxGT("Vänligen återställ"); // Please Reset + LSTR MSG_HEATING = _UxGT("Värmer..."); // Heating... + LSTR MSG_BED_HEATING = _UxGT("Värmer bädden..."); // Bed Heating... + LSTR MSG_DELTA_CALIBRATE = _UxGT("Deltakalibrering"); // Delta Calibration + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Kalibrera X"); // Calibrate X + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Kalibrera Y"); // Calibrate Y + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Kalibrera Z"); // Calibrate Z + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Kalibrera mittläge"); // Calibrate Center + LSTR MSG_INFO_MENU = _UxGT("Om skrivaren"); // About Printer + LSTR MSG_INFO_PRINTER_MENU = _UxGT("Skrivarinformation"); // Printer Info + LSTR MSG_INFO_STATS_MENU = _UxGT("Skrivarstatistik"); // Stats + LSTR MSG_INFO_BOARD_MENU = _UxGT("Styrkortsinfo"); // Board Info + LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Termistorer"); // Thermistors + LSTR MSG_INFO_EXTRUDERS = _UxGT("Extruderare"); // Extruders + LSTR MSG_INFO_BAUDRATE = _UxGT("Datahastighet"); // Baud + LSTR MSG_INFO_PROTOCOL = _UxGT("Protokoll"); // Protocol + LSTR MSG_CASE_LIGHT = _UxGT("Kapslingsljus"); // Case Light + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Utskrift"); // Prints + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Slutförda"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Total utskriftstid"); // Total + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Längsta utskriftstid"); // Longest + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Total extrudering"); // Extruded + LSTR MSG_INFO_MIN_TEMP = _UxGT("Min temperatur"); // Min Temp + LSTR MSG_INFO_MAX_TEMP = _UxGT("Max temperatur"); // Max Temp + LSTR MSG_INFO_PSU = _UxGT("PSU"); // PSU + LSTR MSG_DRIVE_STRENGTH = _UxGT("Drivstyrka"); // Drive Strength + LSTR MSG_DAC_EEPROM_WRITE = _UxGT("DAC EEPROM skriv"); // DAC EEPROM Write + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Fortsätt"); // Continue + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Vänta...")); // |Please wait... + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Sätt in och klicka")); // |Insert and Click + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Lossar...")); // |Ejecting... + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Laddar...")); // |Loading... + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Återgår...")); // |Resuming... + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); // (LCD_STR_THERMOMETER) Min + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); // (LCD_STR_THERMOMETER) Max + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Fakt"); // (LCD_STR_THERMOMETER) Fact + LSTR MSG_LCD_ON = _UxGT("Till"); // On + LSTR MSG_LCD_OFF = _UxGT("Från"); // Off + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("DEFEKT SKRIVARE"); // INCORRECT PRINTER + LSTR MSG_DEBUG_MENU = _UxGT("Debugmeny"); // Debug Menu + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Förloppindikator test"); // Progress Bar Test + LSTR MSG_MOVING = _UxGT("Förflyttar..."); // Moving... + LSTR MSG_FREE_XY = _UxGT("Fri XY"); // Free XY + LSTR MSG_HOME_FIRST = _UxGT("Hem %s först"); // Home %s First + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Värmer...")); // |Heating... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Klicka för att värma")); // |Click to heat + LSTR MSG_YES = _UxGT("JA"); // YES + LSTR MSG_NO = _UxGT("NEJ"); // NO + LSTR MSG_BACK = _UxGT("Bakåt"); // Back + LSTR MSG_MEDIA_ABORTING = _UxGT("Avbryter..."); // Aborting... + LSTR MSG_MEDIA_READ_ERROR = _UxGT("Läsningsfel minneskort"); // (MEDIA_TYPE_EN) read error + LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB-minne avlägsnat"); // USB device removed + LSTR MSG_USB_FD_USB_FAILED = _UxGT("USB-start misslyckad"); // USB start failed + LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Mjukvarugränslägen"); // Soft Endstops + LSTR MSG_ADVANCED_SETTINGS = _UxGT("Advancerade inställningar"); // Advanced Settings + LSTR MSG_CONFIGURATION = _UxGT("Konfiguration"); // Configuration + LSTR MSG_AUTO_Z_ALIGN = _UxGT("Auto Z-Justering"); // Auto Z-Align + LSTR MSG_Z_FADE_HEIGHT = _UxGT("Tona höjden"); // Fade Height + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Anpassad förvärmning"); // Preheat Custom + LSTR MSG_LASER_MENU = _UxGT("Laserkontroll"); // Laser Control + LSTR MSG_LASER_POWER = _UxGT("Laserstyrka"); // Laser Power + LSTR MSG_SPINDLE_MENU = _UxGT("Spindelkontroll"); // Spindle Control + LSTR MSG_SPINDLE_POWER = _UxGT("Spindelstyrka"); // Spindle Pwr + LSTR MSG_SPINDLE_REVERSE = _UxGT("Spindel bakåt"); // Spindle Reverse + LSTR MSG_BED_TRAMMING = _UxGT("Justering av bädd"); // Bed Tramming + LSTR MSG_NEXT_CORNER = _UxGT("Nästa hörn"); // Next Corner + LSTR MSG_MESH_EDITOR = _UxGT("Meshnätredigerare"); // Mesh Editor + LSTR MSG_EDIT_MESH = _UxGT("Redigera meshnät"); // Edit Mesh + LSTR MSG_EDITING_STOPPED = _UxGT("Meshnätredigering stoppad"); // Mesh Editing Stopped + LSTR MSG_PROBING_POINT = _UxGT("Höjdmätpunkt"); // Probing Point + LSTR MSG_MESH_X = _UxGT("Index X"); // Index X + LSTR MSG_MESH_Y = _UxGT("Index Y"); // Index Y + LSTR MSG_MESH_EDIT_Z = _UxGT("Z-värde"); // Z Value + LSTR MSG_CUSTOM_COMMANDS = _UxGT("Anpassade kommandon"); // Custom Commands + LSTR MSG_M48_TEST = _UxGT("M48 probtest"); // M48 Probe Test + LSTR MSG_M48_POINT = _UxGT("M48 punkt"); // M48 Point + LSTR MSG_M48_DEVIATION = _UxGT("Avvikelse"); // Deviation + LSTR MSG_IDEX_MENU = _UxGT("IDEX läge"); // IDEX Mode + LSTR MSG_OFFSETS_MENU = _UxGT("Verktygsoffset"); // Tool Offsets + LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Autoparkera"); // Auto-Park + LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplicering"); // Duplication + LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Speglad kopia"); // Mirrored Copy + LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Full kontroll"); // Full Control + LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2:a munstycke Z"); // 2nd Nozzle Z + LSTR MSG_HOTEND_OFFSET_N = _UxGT("2:a munstycke @"); // 2nd Nozzle @ + LSTR MSG_UBL_DOING_G29 = _UxGT("Utför G29"); // Doing G29 + LSTR MSG_UBL_TOOLS = _UxGT("UBL verktyg"); // UBL Tools + LSTR MSG_LCD_TILTING_MESH = _UxGT("Lutningspunkt"); // Tilting Point + LSTR MSG_UBL_MANUAL_MESH = _UxGT("Skapa manuellt meshnät"); // Manually Build Mesh + LSTR MSG_UBL_BC_INSERT = _UxGT("Placera shims & mät"); // Place Shim & Measure + LSTR MSG_UBL_BC_INSERT2 = _UxGT("Mät"); // Measure + LSTR MSG_UBL_BC_REMOVE = _UxGT("Ta bort & mät bädd"); // Remove & Measure Bed + LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Går vidare till nästa"); // Moving to next + LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Bäddtemperatur"); // Bed Temp + LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Bäddtemperatur"); // Bed Temp + LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Temperatur munstycke"); // Hotend Temp + LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Temperatur munstycke"); // Hotend Temp + LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Redigera anpassat meshnät"); // Edit Custom Mesh + LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Finjustera meshnät"); // Fine Tuning Mesh + LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Redigering meshnät slutförd"); // Done Editing Mesh + LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Bygg anpassat meshnät"); // Build Custom Mesh + LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Bygg meshnät"); // Build Mesh + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Bygg meshnät ($)"); // Build Mesh ($) + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Validera meshnät ($)"); // Validate Mesh ($) + LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Bygg meshnät kallt"); // Build Cold Mesh + LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Justera höjd på meshnät"); // Adjust Mesh Height + LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Höjdantal"); // Height Amount + LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Validera meshnät"); // Validate Mesh + LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Validera anpassat meshnät"); // Validate Custom Mesh + LSTR MSG_G26_HEATING_BED = _UxGT("G26 Värm bädd"); // G26 Heating Bed + LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 Värm munstycke"); // G26 Heating Nozzle + LSTR MSG_G26_MANUAL_PRIME = _UxGT("Manuell grundinställning..."); // Manual priming... + LSTR MSG_G26_FIXED_LENGTH = _UxGT("Fast längd grundinställning"); // Fixed Length Prime + LSTR MSG_G26_PRIME_DONE = _UxGT("Grundinställning klar"); // Done Priming + LSTR MSG_G26_CANCELED = _UxGT("G26 Avbruten"); // G26 Canceled + LSTR MSG_G26_LEAVING = _UxGT("Höjdjustera G26"); // Leaving G26 + LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Fortsätt bädd meshnät"); // Continue Bed Mesh + LSTR MSG_UBL_MESH_LEVELING = _UxGT("Meshnät höjdjustering"); // Mesh Leveling + LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-punkts höjdjustering"); // 3-Point Leveling + LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Höjdjustering av rutnät"); // Grid Mesh Leveling + LSTR MSG_UBL_MESH_LEVEL = _UxGT("Höjdjustera meshnät"); // Level Mesh + LSTR MSG_UBL_SIDE_POINTS = _UxGT("Sidopunkter"); // Side Points + LSTR MSG_UBL_MAP_TYPE = _UxGT("Karttyp"); // Map Type + LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Utmatning meshnätkarta"); // Output Mesh Map + LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Utmatning för värd"); // Output for Host + LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Utmatning för CSV"); // Output for CSV + LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Utanför skrivare backup"); // Off Printer Backup + LSTR MSG_UBL_INFO_UBL = _UxGT("Utmatning UBL info"); // Output UBL Info + LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Ifyllnadsmängd"); // Fill-in Amount + LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Manuell ifyllnad"); // Manual Fill-in + LSTR MSG_UBL_SMART_FILLIN = _UxGT("Smart ifyllnad"); // Smart Fill-in + LSTR MSG_UBL_FILLIN_MESH = _UxGT("Ifyllnad meshnät"); // Fill-in Mesh + LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Ogiltigförklara alla"); // Invalidate All + LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Ogiltigförklara närmast"); // Invalidate Closest + LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Finjustera alla"); // Fine Tune All + LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Finjustera närmast"); // Fine Tune Closest + LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Meshnätlagring"); // Mesh Storage + LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Minnesfack"); // Memory Slot + LSTR MSG_UBL_LOAD_MESH = _UxGT("Ladda bädd meshnät"); // Load Bed Mesh + LSTR MSG_UBL_SAVE_MESH = _UxGT("Spara bädd meshnät"); // Save Bed Mesh + LSTR MSG_MESH_LOADED = _UxGT("Meshnät %i laddad"); // Mesh %i Loaded + LSTR MSG_MESH_SAVED = _UxGT("Meshnät %i sparad"); // Mesh %i Saved + LSTR MSG_UBL_NO_STORAGE = _UxGT("Inget lagringsutrymme"); // No Storage + LSTR MSG_UBL_SAVE_ERROR = _UxGT("Fel när UBL skulle sparas"); // UBL Save Error + LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Fel när UBL skulle återställas"); // UBL Restore Error + LSTR MSG_UBL_Z_OFFSET = _UxGT("Z-offset: "); // Z-Offset: + LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Z-offset stoppad"); // Z-Offset Stopped + LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("Steg för steg UBL"); // Step-By-Step UBL + LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1. Bygg meshnät kallt"); // 1. Build Cold Mesh + LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2. Smart ifyllnad"); // 2. Smart Fill-in + LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3. Validera meshnät"); // 3. Validate Mesh + LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4. Finjustera alla"); // 4. Fine Tune All + LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5. Validera meshnät"); // 5. Validate Mesh + LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6. Finjustera alla"); // 6. Fine Tune All + LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7. Spara bädd meshnät"); // 7. Save Bed Mesh + LSTR MSG_LED_CONTROL = _UxGT("LED-kontroll"); // LED Control + LSTR MSG_LIGHTS = _UxGT("Ljus"); // Lights + LSTR MSG_LIGHT_N = _UxGT("Ljus #{"); // Light #{ + LSTR MSG_LED_PRESETS = _UxGT("Förinställt ljus"); // Light Presets + LSTR MSG_SET_LEDS_RED = _UxGT("Rött"); // Red + LSTR MSG_SET_LEDS_ORANGE = _UxGT("Orange"); // Orange + LSTR MSG_SET_LEDS_YELLOW = _UxGT("Gult"); // Yellow + LSTR MSG_SET_LEDS_GREEN = _UxGT("Grönt"); // Green + LSTR MSG_SET_LEDS_BLUE = _UxGT("Blått"); // Blue + LSTR MSG_SET_LEDS_INDIGO = _UxGT("Indigo"); // Indigo + LSTR MSG_SET_LEDS_VIOLET = _UxGT("Lila"); // Violet + LSTR MSG_SET_LEDS_WHITE = _UxGT("Vitt"); // White + LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Standard"); // Default + LSTR MSG_CUSTOM_LEDS = _UxGT("Anpassat ljus"); // Custom Lights + LSTR MSG_INTENSITY_R = _UxGT("Ljusstyrka rött"); // Red Intensity + LSTR MSG_INTENSITY_G = _UxGT("Ljusstyrka grönt"); // Green Intensity + LSTR MSG_INTENSITY_B = _UxGT("Ljusstyrka blått"); // Blue Intensity + LSTR MSG_INTENSITY_W = _UxGT("Ljusstyrka vitt"); // White Intensity + LSTR MSG_LED_BRIGHTNESS = _UxGT("Ljusstyrka"); // Brightness + LSTR MSG_HOTEND_TOO_COLD = _UxGT("Ej uppnådd temperatur munstycke"); // Hotend too cold + LSTR MSG_CHAMBER = _UxGT("Inkapsling"); // Enclosure + LSTR MSG_STORED_FAN_N = _UxGT("Sparad fläkt ~"); // Stored Fan ~ + LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Varvtal extrafläkt"); // Extra Fan Speed + LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Varvtal extrafläkt ~"); // Extra Fan Speed ~ + LSTR MSG_PID_AUTOTUNE = _UxGT("PID automappning"); // PID Autotune + LSTR MSG_PID_AUTOTUNE_E = _UxGT("PID automappning *"); // Autotune * PID + LSTR MSG_JERK = _UxGT("Ryck"); // Jerk + LSTR MSG_VA_JERK = _UxGT("V") STR_A _UxGT("-Ryck"); // Max (STR_A) Jerk + LSTR MSG_VB_JERK = _UxGT("V") STR_B _UxGT("-Ryck"); // Max (STR_B) Jerk + LSTR MSG_VC_JERK = _UxGT("V") STR_C _UxGT("-Ryck"); // Max (STR_C) Jerk + LSTR MSG_VN_JERK = _UxGT("V@-Ryck"); // Max @ Jerk + LSTR MSG_VE_JERK = _UxGT("Ve-Ryck"); // Max E Jerk + LSTR MSG_JUNCTION_DEVIATION = _UxGT("Knutpunkt avv"); // Junction Dev + LSTR MSG_MAX_SPEED = _UxGT("Toppfart (mm/s)"); // Max Speed (mm/s) + LSTR MSG_VMAX_A = _UxGT("Vmax ") STR_A; // Max (STR_A) Speed + LSTR MSG_VMAX_B = _UxGT("Vmax ") STR_B; // Max (STR_B) Speed + LSTR MSG_VMAX_C = _UxGT("Vmax ") STR_C; // Max (STR_C) Speed + LSTR MSG_VMAX_N = _UxGT("Toppfart @"); // Max @ Speed + LSTR MSG_VMAX_E = _UxGT("Toppfart E"); // Max E Speed + LSTR MSG_VMAX_EN = _UxGT("Toppfart *"); // Max * Speed + LSTR MSG_VMIN = _UxGT("Lägsta hastighet"); // Min Velocity + LSTR MSG_FILAMENT_UNLOAD = _UxGT("Frigör mm"); // Unload mm + LSTR MSG_FILAMENT_LOAD = _UxGT("Ladda mm"); // Load mm + LSTR MSG_ADVANCE_K = _UxGT("Avancera K"); // Advance K + LSTR MSG_ADVANCE_K_E = _UxGT("Avancera K *"); // Advance K * + LSTR MSG_INIT_EEPROM = _UxGT("Initiera EEPROM"); // Initialize EEPROM + LSTR MSG_MEDIA_UPDATE = _UxGT("Uppdatera minneskort"); // (MEDIA_TYPE_EN) Update + LSTR MSG_RESET_PRINTER = _UxGT("Starta om 3D-skrivare"); // Reset Printer + LSTR MSG_START_PRINT = _UxGT("Starta utskrift"); // Start Print + LSTR MSG_BUTTON_NEXT = _UxGT("Nästa"); // Next + LSTR MSG_BUTTON_INIT = _UxGT("Initiera"); // Init + LSTR MSG_BUTTON_STOP = _UxGT("Stoppa"); // Stop + LSTR MSG_BUTTON_PRINT = _UxGT("Skriv"); // Print + LSTR MSG_BUTTON_RESET = _UxGT("Återställ"); // Reset + LSTR MSG_BUTTON_CANCEL = _UxGT("Avbryt"); // Cancel + LSTR MSG_BUTTON_DONE = _UxGT("Färdig"); // Done + LSTR MSG_BUTTON_BACK = _UxGT("Bakåt"); // Back + LSTR MSG_BUTTON_PROCEED = _UxGT("Fortsätt"); // Proceed + LSTR MSG_PRINTING_OBJECT = _UxGT("Skriver objekt"); // Print Obj + LSTR MSG_CANCEL_OBJECT = _UxGT("Avbryt objekt"); // Cancel Obj + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Avbryt objekt {"); // Cancel Obj { + LSTR MSG_OUTAGE_RECOVERY = _UxGT("Strömavbrott"); // Power Outage + LSTR MSG_PRINT_PAUSED = _UxGT("Utskrift pausad"); // Print Paused + LSTR MSG_PRINTING = _UxGT("Skriver..."); // Printing... + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("Byt åter sug. V"); // S UnRet V + LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Byt längd"); // Swap Length + LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Rensa längd"); // Purge Length + LSTR MSG_TOOL_CHANGE = _UxGT("Verktygsbyte"); // Tool Change + LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Z höj"); // Z Raise + LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Grundhastighet"); // Prime Speed + LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Återgångshastighet"); // Retract Speed + LSTR MSG_NOZZLE_STANDBY = _UxGT("Munstycke standby"); // Nozzle Standby + LSTR MSG_FILAMENTLOAD = _UxGT("Ladda tråd"); // Load Filament + LSTR MSG_FILAMENTLOAD_E = _UxGT("Ladda * tråd"); // Load * Filament + LSTR MSG_FILAMENTUNLOAD = _UxGT("Lossa tråd"); // Unload Filament + LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Lossa * tråd"); // Unload * Filament + LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Lossa allt"); // Unload All + LSTR MSG_RELEASE_MEDIA = _UxGT("Mata ut minneskort"); // Release (MEDIA_TYPE_EN) + LSTR MSG_SKEW_FACTOR = _UxGT("Skevhetsfaktor"); // Skew Factor + LSTR MSG_BLTOUCH = _UxGT("BLTouch"); // BLTouch + LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Självtest"); // Self-Test + LSTR MSG_BLTOUCH_STOW = _UxGT("Fäll in"); // Stow + LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Fäll ut"); // Deploy + LSTR MSG_BLTOUCH_SW_MODE = _UxGT("SW-läge"); // SW-Mode + LSTR MSG_BLTOUCH_5V_MODE = _UxGT("5V-läge"); // 5V-Mode + LSTR MSG_BLTOUCH_OD_MODE = _UxGT("OD-läge"); // OD-Mode + LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("Läge-lagring"); // Mode-Store + LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Sätt BLTouch till 5V"); // Set BLTouch to 5V + LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Sätt BLTouch till OD"); // Set BLTouch to OD + LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Reportera tömning"); // Report Drain + LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("VARNING: Felaktiga inställningar kan orsaka skada! Fortsätt ändå?"); // DANGER: Bad settings can cause damage! Proceed anyway? + LSTR MSG_TOUCHMI_PROBE = _UxGT("TouchMI"); // TouchMI + LSTR MSG_TOUCHMI_INIT = _UxGT("Initiera TouchMI"); // Init TouchMI + LSTR MSG_TOUCHMI_ZTEST = _UxGT("Test Z-offset"); // Z Offset Test + LSTR MSG_TOUCHMI_SAVE = _UxGT("Spara"); // Save + LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("Fäll ut TouchMI"); // Deploy TouchMI + LSTR MSG_MANUAL_DEPLOY = _UxGT("Fäll ut Z-prob"); // Deploy Z-Probe + LSTR MSG_MANUAL_STOW = _UxGT("Fäll in Z-prob"); // Stow Z-Probe + LSTR MSG_BABYSTEP_TOTAL = _UxGT("Total"); // Total + LSTR MSG_COOLING = _UxGT("Avkylning..."); // Cooling... + LSTR MSG_BED_COOLING = _UxGT("Kyler bädden..."); // Bed Cooling... + LSTR MSG_CHAMBER_HEATING = _UxGT("Värmer kammare..."); // Chamber Heating... + LSTR MSG_CHAMBER_COOLING = _UxGT("Kyler kammare..."); // Chamber Cooling... + LSTR MSG_DELTA_SETTINGS = _UxGT("Deltainställningar"); // Delta Settings + LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Autokalibrering"); // Auto Calibration + LSTR MSG_DELTA_DIAG_ROD = _UxGT("Diag Rod"); // Diag Rod + LSTR MSG_DELTA_HEIGHT = _UxGT("Höjd"); // Height + LSTR MSG_DELTA_RADIUS = _UxGT("Radie"); // Radius + LSTR MSG_3POINT_LEVELING = _UxGT("3-Punkts nivåjustering"); // 3-Point Leveling + LSTR MSG_LINEAR_LEVELING = _UxGT("Linjär nivåjustering"); // Linear Leveling + LSTR MSG_BILINEAR_LEVELING = _UxGT("Bilinjär nivåjustering"); // Bilinear Leveling + LSTR MSG_UBL_LEVELING = _UxGT("Enhetlig bädd nivåjustering (UBL)"); // Unified Bed Leveling + LSTR MSG_MESH_LEVELING = _UxGT("Meshnät nivåjustering"); // Mesh Leveling + LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Övertempsövervakning: från"); // Runaway Watch: OFF + LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Övertempsövervakning: till"); // Runaway Watch: ON + LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Ljusstyrka belysning"); // Light Brightness + LSTR MSG_DAC_PERCENT_N = _UxGT("@ Driver %"); // @ Driver % + LSTR MSG_ERROR_TMC = _UxGT("TMC KOPPLINGSFEL"); // TMC CONNECTION ERROR + LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("TRÅDBYTE"); // FILAMENT CHANGE + LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("UTSKRIFT PAUSAD"); // PRINT PAUSED + LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("LADDA TRÅD"); // LOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("LOSSA TRÅD"); // UNLOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("FORTSÄTT ALTERNATIV:"); // RESUME OPTIONS: + LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Rensa mer"); // Purge more + LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Munstycke: "); // Nozzle: + LSTR MSG_RUNOUT_SENSOR = _UxGT("Trådkontrollgivare"); // Runout Sensor + LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("Förbrukad trådlängd mm"); // Runout Dist mm + LSTR MSG_KILL_HOMING_FAILED = _UxGT("Hemkörning misslyckad"); // Homing Failed + LSTR MSG_LCD_PROBING_FAILED = _UxGT("Probning misslyckad"); // Probing Failed + LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("VÄLJ TRÅD"); // CHOOSE FILAMENT + LSTR MSG_MMU2_MENU = _UxGT("MMU"); // MMU + LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("Uppdatera MMU firmware!"); // Update MMU Firmware! + LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU behöver kontrolleras."); // MMU Needs Attention. + LSTR MSG_MMU2_RESUME = _UxGT("Återuppta MMU"); // Resume + LSTR MSG_MMU2_RESUMING = _UxGT("MMU Återupptas..."); // MMU Resuming... + LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("Ladda MMU"); // Load + LSTR MSG_MMU2_LOAD_ALL = _UxGT("MMU ladda alla"); // Load All + LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("MMU ladda till munstycke"); // Load to Nozzle + LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("Mata ut MMU"); // Eject + LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("MMU Mata ut ~"); // Eject ~ + LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Lossa MMU"); // Unload + LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Ladda tråd %i..."); // Filament %i Load... + LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Mata ut tråd ..."); // Filament %i Eject... + LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Lossa tråd..."); // Filament %i Unload... + LSTR MSG_MMU2_ALL = _UxGT("Alla"); // All + LSTR MSG_MMU2_FILAMENT_N = _UxGT("Tråd ~"); // Filament ~ + LSTR MSG_MMU2_RESET = _UxGT("Återställ MMU"); // Reset MMU + LSTR MSG_MMU2_RESETTING = _UxGT("MMU återställs..."); // Resetting... + LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Ta bort, klicka"); // Eject Recover + LSTR MSG_MIX = _UxGT("Mixa"); // Mix + LSTR MSG_MIX_COMPONENT_N = _UxGT("Komponent {"); // Component { + LSTR MSG_MIXER = _UxGT("Mixer"); // Mixer + LSTR MSG_GRADIENT = _UxGT("Gradient"); // Gradient + LSTR MSG_FULL_GRADIENT = _UxGT("Full gradient"); // Full Gradient + LSTR MSG_TOGGLE_MIX = _UxGT("Växla mix"); // Toggle Mix + LSTR MSG_CYCLE_MIX = _UxGT("Rotera mix"); // Cycle Mix + LSTR MSG_GRADIENT_MIX = _UxGT("Gradient mix"); // Gradient Mix + LSTR MSG_REVERSE_GRADIENT = _UxGT("Omvänd gradient"); // Reverse Gradient + LSTR MSG_ACTIVE_VTOOL = _UxGT("Aktiva V-verktyg"); // Active V-tool + LSTR MSG_START_VTOOL = _UxGT("Starta V-verktyg"); // Start V-tool + LSTR MSG_END_VTOOL = _UxGT(" Avsluta V-verktyg"); // End V-tool + LSTR MSG_GRADIENT_ALIAS = _UxGT("Alias V-verktyg"); // Alias V-tool + LSTR MSG_RESET_VTOOLS = _UxGT("Återställ V-verktyg"); // Reset V-tools + LSTR MSG_COMMIT_VTOOL = _UxGT("Anslut V-verktyg mix"); // Commit V-tool Mix + LSTR MSG_VTOOLS_RESET = _UxGT("V-verktyg blev återställda"); // V-tools Were Reset + LSTR MSG_START_Z = _UxGT("Start Z:"); // Start Z: + LSTR MSG_END_Z = _UxGT(" Slut Z:"); // End Z: + LSTR MSG_GAMES = _UxGT("Spel"); // Games + LSTR MSG_BRICKOUT = _UxGT("Brickout"); // Brickout + LSTR MSG_INVADERS = _UxGT("Invaders"); // Invaders + LSTR MSG_SNAKE = _UxGT("Sn4k3"); // Sn4k3 + LSTR MSG_MAZE = _UxGT("Labyrint"); // Maze + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Klick för att fortsätta")); // |Click to continue + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Parkera...")); // |Parking... + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Rensar...")); // |Purging... + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Klicka för att slutföra")); // |Click to finish + LSTR MSG_TMC_DRIVERS = _UxGT("TMC-Drivare"); // TMC Drivers + LSTR MSG_TMC_CURRENT = _UxGT("Strömdrivare"); // Driver Current + LSTR MSG_TMC_HYBRID_THRS = _UxGT("Tröskelvärde hybrid"); // Hybrid Threshold + LSTR MSG_TMC_HOMING_THRS = _UxGT("Givarfri hemkörning"); // Sensorless Homing + LSTR MSG_TMC_STEPPING_MODE = _UxGT("Stegningsläge"); // Stepping Mode + LSTR MSG_TMC_STEALTHCHOP = _UxGT("Smyghack"); // StealthChop + LSTR MSG_SERVICE_RESET = _UxGT("Återställ"); // Reset + LSTR MSG_SERVICE_IN = _UxGT(" in:"); // in: + LSTR MSG_BACKLASH = _UxGT("Backslag"); // Backlash + LSTR MSG_BACKLASH_CORRECTION = _UxGT("Korrigering"); // Correction + LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Släta ut"); // Smoothing + LSTR MSG_HIGH = _UxGT("Hög"); // HIGH + LSTR MSG_LOW = _UxGT("låg"); // LOW + LSTR MSG_ERROR = _UxGT("Fel"); // Error + LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Misslyckad läsning av minneskort"); // (MEDIA_TYPE_EN) Init Fail + LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Underanrop överskriden"); // Subcall Overflow + LSTR MSG_AUTO_HOME_N = _UxGT("Hem @"); // Home @ + LSTR MSG_FILAMENT_SET = _UxGT("Trådinställningar"); // Filament Settings + LSTR MSG_FILAMENT_MAN = _UxGT("Trådhantering"); // Filament Management + LSTR MSG_MANUAL_LEVELING = _UxGT("Manuell höjdjustering"); // Manual Leveling + LSTR MSG_TRAM_FL = _UxGT("Övre vänster"); // Front Left + LSTR MSG_TRAM_FR = _UxGT("Övre höger"); // Front Right + LSTR MSG_TRAM_C = _UxGT("Mittpunkt"); // Center + LSTR MSG_TRAM_BL = _UxGT("Nedre vänster"); // Back Left + LSTR MSG_TRAM_BR = _UxGT("Nedre höger"); // Back Right + LSTR MSG_MANUAL_MESH = _UxGT("Manellt meshmät"); // Manual Mesh + LSTR MSG_AUTO_MESH = _UxGT("Automatiskt meshnät"); // Auto Build Mesh + LSTR MSG_ITERATION = _UxGT("G34 upprepning: %i"); // G34 Iteration: %i + LSTR MSG_DECREASING_ACCURACY = _UxGT("Noggrannhet minskar!"); // Accuracy Decreasing! + LSTR MSG_ACCURACY_ACHIEVED = _UxGT("Noggrannhet uppnådd"); // Accuracy Achieved + LSTR MSG_HOME_OFFSET_X = _UxGT("Hem offset X"); // Home Offset X + LSTR MSG_HOME_OFFSET_Y = _UxGT("Hem offset Y"); // Home Offset Y + LSTR MSG_HOME_OFFSET_Z = _UxGT("Hem offset Z"); // Home Offset Z + LSTR MSG_TRAMMING_WIZARD = _UxGT("Justerings guide"); // Tramming Wizard + LSTR MSG_SELECT_ORIGIN = _UxGT("Välj origo"); // Select Origin + LSTR MSG_LAST_VALUE_SP = _UxGT("Senaste värde "); // Last value + LSTR MSG_CUTTER_FREQUENCY = _UxGT("Frekvens"); // Frequency + LSTR MSG_LASER_TOGGLE = _UxGT("Växla laser"); // Toggle Laser + LSTR MSG_LASER_PULSE_MS = _UxGT("Testpuls ms"); // Test Pulse ms + LSTR MSG_LASER_FIRE_PULSE = _UxGT("Aktivera puls"); // Fire Pulse + LSTR MSG_SPINDLE_TOGGLE = _UxGT("Växla spindel"); // Toggle Spindle + LSTR MSG_SPINDLE_FORWARD = _UxGT("Spindel framåt"); // Spindle Forward + LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Höj bädden tills proben triggas"); // Adjust bed until the probe triggers. + LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Alla hörn inom tolerans. Bädd höjdjusterad"); // Corners within tolerance. Bed trammed. + LSTR MSG_BED_TRAMMING_GOOD_POINTS = _UxGT("Bra punkter: "); // Good Points: + LSTR MSG_BED_TRAMMING_LAST_Z = _UxGT("Senaste Z: "); // Last Z: + LSTR MSG_M48_OUT_OF_BOUNDS = _UxGT("Mätprob utanför tolerans"); // Probe out of bounds + LSTR MSG_IDEX_DUPE_GAP = _UxGT("Duplicera X-avstånd"); // Duplicate X-Gap + LSTR MSG_LED_CHANNEL_N = _UxGT("Kanal {"); // Channel { + LSTR MSG_NEO2_PRESETS = _UxGT("Ljus #2 förinställd"); // Light #2 Presets + LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Ljusstyrka"); // Brightness + LSTR MSG_NOZZLE_PARKED = _UxGT("Munstycke parkerat"); // Nozzle Parked + LSTR MSG_CONTROLLER_FAN = _UxGT("Fläktstyrning"); // Controller Fan + LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("Tomgångsvarvtal fläkt"); // Idle Speed + LSTR MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("Autoläge"); // Auto Mode + LSTR MSG_CONTROLLER_FAN_SPEED = _UxGT("Aktivt varvtal"); // Active Speed + LSTR MSG_CONTROLLER_FAN_DURATION = _UxGT("Tomgångsperiod"); // Idle Period + LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("PID-mappninging klar"); // PID tuning done + LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Automappning misslyckad! Kass extruder."); // Autotune failed! Bad extruder. + LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Automappning misslyckad! Temperatur för hög."); // Autotune failed! Temperature too high. + LSTR MSG_PID_TIMEOUT = _UxGT("Automappning misslyckad! Tidsgräns överskriden."); // Autotune failed! Timeout. + LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("Frekvensbegränsning XY"); // XY Freq Limit + LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("Min frekvensfaktor"); // Min FR Factor + LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("E-gräns i mm³"); // E Limit in mm(SUPERSCRIPT_THREE) + LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("E-gräns *"); // E Limit * + LSTR MSG_ERR_EEPROM_CRC = _UxGT("EEPROM CRC fel"); // Err: EEPROM CRC + LSTR MSG_ERR_EEPROM_SIZE = _UxGT("EEPROM-storlek fel"); // Err: EEPROM Size + LSTR MSG_ERR_EEPROM_VERSION = _UxGT("EEPROM-version fel"); // Err: EEPROM Version + LSTR MSG_SETTINGS_STORED = _UxGT("Inställningar sparade"); // Settings Stored + LSTR MSG_POWER_MONITOR = _UxGT("Strömövervakning"); // Power monitor + LSTR MSG_CURRENT = _UxGT("Ström"); // Current + LSTR MSG_VOLTAGE = _UxGT("Spänning"); // Voltage + LSTR MSG_POWER = _UxGT("Effekt"); // Power + LSTR MSG_BUTTON_IGNORE = _UxGT("Ignorera"); // Ignore + LSTR MSG_BUTTON_SKIP = _UxGT("Hoppa över"); // Skip + LSTR MSG_PAUSING = _UxGT("Paus.."); // Pausing... + LSTR MSG_HOST_START_PRINT = _UxGT("Värd start"); // Host Start + LSTR MSG_END_LOOPS = _UxGT("Slut upprepningsloop"); // End Loops + LSTR MSG_PRINT_DONE = _UxGT("Utskrift slutförd"); // Print Done + LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Byt extra"); // Swap Extra + LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Parkera huvud"); // Park Head + LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Återgångshastighet"); // Recover Speed + LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Fläktvarvtal"); // Fan Speed + LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Fläkttid"); // Fan Time + LSTR MSG_TOOL_MIGRATION_ON = _UxGT("Auto till"); // Auto ON + LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("Auto från"); // Auto OFF + LSTR MSG_TOOL_MIGRATION = _UxGT("Verktyg migration"); // Tool Migration + LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("Auto migration"); // Auto-migration + LSTR MSG_TOOL_MIGRATION_END = _UxGT("Senaste extruder"); // Last Extruder + LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("Migrera till *"); // Migrate to * + LSTR MSG_ZPROBE_OFFSETS = _UxGT("Offsets mätprob"); // Probe Offsets + LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Förflytta munstycke till bädd"); // Move Nozzle to Bed + LSTR MSG_PROBE_HEATING = _UxGT("Värmer munstycke..."); // Probe Heating... + LSTR MSG_PROBE_COOLING = _UxGT("Kyler munstycke..."); // Probe Cooling... + LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Tidsgräns värmare munstycke"); // Hotend Idle Timeout + LSTR MSG_FILAMENT_CHANGE_PURGE_CONTINUE = _UxGT("Rengör eller fortsätt?"); // Purge or Continue? + LSTR MSG_EXTRUDER_MIN_TEMP = _UxGT("Extruder Minimumtemp."); // Extruder Min Temp. + LSTR MSG_FANCHECK = _UxGT("Fläktvarvövervakning"); // Fan Tacho Check + LSTR MSG_BAD_PAGE = _UxGT("Dålig sida index"); // Bad page index + LSTR MSG_BAD_PAGE_SPEED = _UxGT("Dålig sida hastighet"); // Bad page speed + LSTR MSG_EDIT_PASSWORD = _UxGT("Redigera Lösenord"); // Edit Password + LSTR MSG_LOGIN_REQUIRED = _UxGT("Inloggning krävs"); // Login Required + LSTR MSG_PASSWORD_SETTINGS = _UxGT("Lösenordsinställningar"); // Password Settings + LSTR MSG_ENTER_DIGIT = _UxGT("Ange siffra"); // Enter Digit + LSTR MSG_CHANGE_PASSWORD = _UxGT("Ange/ändra lösenord"); // Set/Edit Password + LSTR MSG_REMOVE_PASSWORD = _UxGT("Ta bort lösenord"); // Remove Password + LSTR MSG_PASSWORD_SET = _UxGT("Lösenordet är "); // Password is + LSTR MSG_START_OVER = _UxGT("Börja om"); // Start Over + LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Glöm inte att spara!"); // Remember to Save! + LSTR MSG_PASSWORD_REMOVED = _UxGT("Lösenord borttaget"); // Password Removed + LSTR MSG_LEVEL_X_AXIS = _UxGT("Nivå X-axel"); // Level X Axis + LSTR MSG_AUTO_CALIBRATE = _UxGT("Autokalibrera"); // Auto Calibrate + LSTR MSG_FTDI_HEATER_TIMEOUT = _UxGT("Overksam tidsgräns, temperatur minskning. Tryck ok för att återvärma och igen för att fortsätta."); // Idle timeout, temperature decreased. Press Okay to reheat and again to resume. + LSTR MSG_HEATER_TIMEOUT = _UxGT("Värmare Tidsgräns"); // Heater Timeout + LSTR MSG_REHEAT = _UxGT("Återvärm"); // Reheat + LSTR MSG_REHEATING = _UxGT("Återvärmning..."); // Reheating... + LSTR MSG_PROBE_WIZARD = _UxGT("Z Sond Wizard"); // Z Probe Wizard + LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Sondering Z Referens"); // Probing Z Reference + LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Flyttar till Sonderings Pos"); // Moving to Probing Pos + LSTR MSG_SOUND = _UxGT("Ljud"); // Sound + LSTR MSG_TOP_LEFT = _UxGT("Uppe Vänster"); // Touch Top Left + LSTR MSG_BOTTOM_LEFT = _UxGT("Nere Vänster"); // Touch Bottom Left + LSTR MSG_TOP_RIGHT = _UxGT("Uppe Höger"); // Touch Top Right + LSTR MSG_BOTTOM_RIGHT = _UxGT("Nere Höger"); // Touch Bottom Right + LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Kalibrering Färdig"); // Calibration Completed + LSTR MSG_CALIBRATION_FAILED = _UxGT("Kalibrering misslyckad"); // Calibration Failed + LSTR MSG_SHORT_HOUR = _UxGT("t"); // h + LSTR MSG_USB_FD_WAITING_FOR_MEDIA = _UxGT("Väntar på minneskort"); // Wait for USB Drive + LSTR MSG_Z_AFTER_HOME = _UxGT("Z efter hemkörning"); // Z After Homing + LSTR MSG_ERR_M428_TOO_FAR = _UxGT("MIN/MAX för långt"); // MIN/MAX Too Far + LSTR MSG_MMU2_REMOVE_AND_CLICK = _UxGT("Avlägsna och klicka..."); // Remove and click... } namespace LanguageWide_sv { using namespace LanguageNarrow_sv; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Utskriftsantal"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Färdiga"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Total Utskriftstid"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Längsta Jobbtid"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extruderade Totalt"); + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Utskriftsantal"); // Print Count + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Färdiga"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Total Utskriftstid"); // Print Time + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Längsta Jobbtid"); // Longest Job Time + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extruderade Totalt"); // Extruded Total #endif } @@ -688,16 +660,16 @@ namespace LanguageTall_sv { using namespace LanguageWide_sv; #if LCD_HEIGHT >= 4 // Filament Change screens show up to 3 lines on a 4-line display - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Tryck på knappen", "för att fortsätta utskrift")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Vänta på", "trådbyte", "att börja")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Sätt in tråd", "och tryck på knappen", "för att fortsätta")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Tryck på knappen", "för att värma munstycke")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Munstycke värms", "Var snäll och vänta...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Väntar på", "trådlossning")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Väntar på", "trådladdning")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Väntar på", "tråd utrensning")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Klicka för att slutföra", "tråd utrensning")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Väntar på utskrift", "att återstarta...")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Vänta på", "trådbyte", "att börja")); // |Wait for|filament change|to start + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Sätt in tråd", "och tryck på knappen", "för att fortsätta")); // |Insert filament|and press button|to continue + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Väntar på", "trådlossning")); // |Wait for|filament unload + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Väntar på", "trådladdning")); // |Wait for|filament load + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Väntar på utskrift", "att återstarta...")); // |Wait for print|to resume... + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Munstycke värms", "Var snäll och vänta...")); // |Nozzle heating|Please wait... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Tryck på knappen", "för att värma munstycke")); // |Press button|to heat nozzle + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Tryck på knappen", "för att fortsätta utskrift")); // |Press Button|to resume print + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Väntar på", "tråd utrensning")); // |Wait for|filament purge + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Klicka för att slutföra", "tråd utrensning")); // |Click to finish|filament purge #endif } diff --git a/Marlin/src/lcd/language/language_tr.h b/Marlin/src/lcd/language/language_tr.h index 21a65d3c2f..667c49564f 100644 --- a/Marlin/src/lcd/language/language_tr.h +++ b/Marlin/src/lcd/language/language_tr.h @@ -44,867 +44,827 @@ namespace LanguageNarrow_tr { constexpr uint8_t CHARSIZE = 2; LSTR LANGUAGE = _UxGT("Turkish"); - // These strings should be translated - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" Hazır."); - LSTR MSG_YES = _UxGT("EVET"); - LSTR MSG_NO = _UxGT("HAYIR"); - LSTR MSG_HIGH = _UxGT("YÜKSEK"); - LSTR MSG_LOW = _UxGT("DÜŞÜK"); - LSTR MSG_BACK = _UxGT("Geri"); - LSTR MSG_ERROR = _UxGT("Hata"); - - LSTR MSG_MEDIA_ABORTING = _UxGT("Durduruluyor..."); - LSTR MSG_MEDIA_INSERTED = _UxGT("SD K. Yerleştirildi."); - LSTR MSG_MEDIA_REMOVED = _UxGT("SD Kart Çıkarıldı."); - LSTR MSG_MEDIA_INIT_FAIL = _UxGT("SD K. Başlatma Hatası"); - LSTR MSG_MEDIA_READ_ERROR = _UxGT("Kart Okuma Hatası"); - LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB Çıkarıldı"); - LSTR MSG_USB_FD_USB_FAILED = _UxGT("USB Başlat. Hatası"); - LSTR MSG_MEDIA_SORT = _UxGT("Medyayı Sırala"); - LSTR MSG_MEDIA_UPDATE = _UxGT("Medyayı Güncelle"); - LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Subcall Overflow"); - - LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Max length 8 characters - LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Soft Endstops"); - LSTR MSG_MAIN_MENU = _UxGT("Ana"); - LSTR MSG_ADVANCED_SETTINGS = _UxGT("Gelişmiş Ayarlar"); - LSTR MSG_CONFIGURATION = _UxGT("Yapılandırma"); - LSTR MSG_DISABLE_STEPPERS = _UxGT("Motorları Durdur"); - LSTR MSG_DEBUG_MENU = _UxGT("Hata Ayıklama"); - LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Durum Çubuğu Testi"); - LSTR MSG_ENDSTOP_TEST = _UxGT("Endstop Test"); - LSTR MSG_Z_PROBE = _UxGT("Z Probe"); - LSTR MSG_HOMING = _UxGT("Sıfırlanıyor"); - LSTR MSG_AUTO_HOME = _UxGT("Eksenleri Sıfırla"); - LSTR MSG_AUTO_HOME_N = _UxGT("@ Sıfırla"); - LSTR MSG_AUTO_HOME_X = _UxGT("X Sıfırla"); - LSTR MSG_AUTO_HOME_Y = _UxGT("Y Sıfırla"); - LSTR MSG_AUTO_HOME_Z = _UxGT("Z Sıfırla"); - LSTR MSG_Z_AFTER_HOME = _UxGT("Z After Homing"); - LSTR MSG_FILAMENT_SET = _UxGT("Filament Ayarları"); - LSTR MSG_FILAMENT_MAN = _UxGT("Filament Yönetimi"); - LSTR MSG_MANUAL_LEVELING = _UxGT("Manuel Seviyeleme"); - LSTR MSG_TRAM_FL = _UxGT("Sol Ön"); - LSTR MSG_TRAM_FR = _UxGT("Ön Sağ"); - LSTR MSG_TRAM_C = _UxGT("Orta"); - LSTR MSG_TRAM_BL = _UxGT("Arka Sol"); - LSTR MSG_TRAM_BR = _UxGT("Arka Sağ"); - LSTR MSG_MANUAL_MESH = _UxGT("Manuel Mesh"); - LSTR MSG_AUTO_MESH = _UxGT("Oto Mesh Oluştur"); - LSTR MSG_AUTO_Z_ALIGN = _UxGT("Oto. Z-Hizalama"); - LSTR MSG_ITERATION = _UxGT("G34 Yinelemesi: %i"); - LSTR MSG_DECREASING_ACCURACY = _UxGT("Doğruluk Düşüyor!"); - LSTR MSG_ACCURACY_ACHIEVED = _UxGT("Doğruluk Sağlandı"); - LSTR MSG_LEVEL_BED_HOMING = _UxGT("XYZ Sıfırlanıyor"); - LSTR MSG_LEVEL_BED_WAITING = _UxGT("Başlatmak için tıkla"); - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Sonraki Nokta"); - LSTR MSG_LEVEL_BED_DONE = _UxGT("Seviyeleme Tamam!"); - LSTR MSG_Z_FADE_HEIGHT = _UxGT("Kaçınma Yüksekliği"); - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Ofset Ayarla"); - LSTR MSG_HOME_OFFSET_X = _UxGT("X Ofset Sıfırla"); // DWIN - LSTR MSG_HOME_OFFSET_Y = _UxGT("Y Ofset Sıfırla"); // DWIN - LSTR MSG_HOME_OFFSET_Z = _UxGT("Z Ofset Sıfırla"); // DWIN - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Ofset Tamam"); - LSTR MSG_ERR_M428_TOO_FAR = _UxGT("MIN/MAX Çok Fazla"); - LSTR MSG_TRAMMING_WIZARD = _UxGT("Hizalama Sihirbazı"); - LSTR MSG_SELECT_ORIGIN = _UxGT("Başlangıç Seç"); - LSTR MSG_LAST_VALUE_SP = _UxGT("Son değer "); - - LSTR MSG_PREHEAT_1 = _UxGT("ÖnIsıtma ") PREHEAT_1_LABEL; // Çalışma gerekli Hata - LSTR MSG_PREHEAT_1_H = _UxGT("ÖnIsıtma ") PREHEAT_1_LABEL " ~"; // Çalışma gerekli Hata - LSTR MSG_PREHEAT_1_END = _UxGT("ÖnIsıtma ") PREHEAT_1_LABEL _UxGT(" Nozul"); // Çalışma gerekli Hata - LSTR MSG_PREHEAT_1_END_E = _UxGT("ÖnIsıtma ") PREHEAT_1_LABEL _UxGT(" Nozul ~"); // Çalışma gerekli Hata - LSTR MSG_PREHEAT_1_ALL = _UxGT("ÖnIsıtma ") PREHEAT_1_LABEL _UxGT(" Tüm"); // Çalışma gerekli Hata - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("ÖnIsıtma ") PREHEAT_1_LABEL _UxGT(" Tabla"); // Çalışma gerekli Hata - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("ÖnIsıtma ") PREHEAT_1_LABEL _UxGT(" Ayar"); // Çalışma gerekli Hata - - LSTR MSG_PREHEAT_M = _UxGT("ÖnIsıtma $"); // Çalışma gerekli Hata - LSTR MSG_PREHEAT_M_H = _UxGT("ÖnIsıtma $ ~"); // Çalışma gerekli Hata - LSTR MSG_PREHEAT_M_END = _UxGT("ÖnIsıtma $ Nozul"); // Çalışma gerekli Hata - LSTR MSG_PREHEAT_M_END_E = _UxGT("ÖnIsıtma $ Nozul ~"); // Çalışma gerekli Hata - LSTR MSG_PREHEAT_M_ALL = _UxGT("ÖnIsıtma $ Tüm"); // Çalışma gerekli Hata - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("ÖnIsıtma $ Tabla"); // Çalışma gerekli Hata - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("ÖnIsıtma $ Ayar"); // Çalışma gerekli Hata - - LSTR MSG_PREHEAT_HOTEND = _UxGT("Nozul Ön Isıtma"); - LSTR MSG_PREHEAT_CUSTOM = _UxGT("Özel Ön Isıtma"); - LSTR MSG_COOLDOWN = _UxGT("Soğut/(Durdur)"); - - LSTR MSG_CUTTER_FREQUENCY = _UxGT("Frekans"); - LSTR MSG_LASER_MENU = _UxGT("Lazer Kontrolü"); - LSTR MSG_SPINDLE_MENU = _UxGT("Spindle Kontrolü"); - LSTR MSG_LASER_POWER = _UxGT("Lazer Gücü"); - LSTR MSG_SPINDLE_POWER = _UxGT("Spindle Gücü"); - LSTR MSG_LASER_TOGGLE = _UxGT("Lazer Değiştir"); - LSTR MSG_LASER_EVAC_TOGGLE = _UxGT("Üfleyici Değiştir"); - LSTR MSG_LASER_ASSIST_TOGGLE = _UxGT("Hava Desteği"); - LSTR MSG_LASER_PULSE_MS = _UxGT("Test Darbesi ms"); - LSTR MSG_LASER_FIRE_PULSE = _UxGT("Atış Darbe"); - LSTR MSG_FLOWMETER_FAULT = _UxGT("Soğutucu Akış Hatası"); - LSTR MSG_SPINDLE_TOGGLE = _UxGT("Spindle Değiştir"); - LSTR MSG_SPINDLE_EVAC_TOGGLE = _UxGT("Vakum Değiştir"); - LSTR MSG_SPINDLE_FORWARD = _UxGT("Spindle İleri Yön"); - LSTR MSG_SPINDLE_REVERSE = _UxGT("Spindle Geri Yön"); - LSTR MSG_SWITCH_PS_ON = _UxGT("Gücü Aç"); - LSTR MSG_SWITCH_PS_OFF = _UxGT("Gücü Kapat"); - LSTR MSG_EXTRUDE = _UxGT("Ekstrüzyon"); - LSTR MSG_RETRACT = _UxGT("Geri Çek"); - LSTR MSG_MOVE_AXIS = _UxGT("Eksen Hareketleri"); - LSTR MSG_PROBE_AND_LEVEL = _UxGT("Prob ve Seviyeleme"); - LSTR MSG_BED_LEVELING = _UxGT("Tabla Seviyeleme"); - LSTR MSG_LEVEL_BED = _UxGT("Tablayı Seviyele"); - LSTR MSG_BED_TRAMMING = _UxGT("Tabla Hizalama"); - LSTR MSG_BED_TRAMMING_MANUAL = _UxGT("Manuel Hizalama"); - LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Prob tetiklenene kadar tablayı ayarlayın."); - LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Köşeler tolerans dahilinde. Tabla hizalandı."); - LSTR MSG_BED_TRAMMING_GOOD_POINTS = _UxGT("İyi Noktalar: "); - LSTR MSG_BED_TRAMMING_LAST_Z = _UxGT("Son Z: "); - LSTR MSG_NEXT_CORNER = _UxGT("Sonraki Köşe"); - LSTR MSG_MESH_EDITOR = _UxGT("Mesh Editörü"); - LSTR MSG_MESH_VIEWER = _UxGT("Mesh görüntüleyici"); - LSTR MSG_EDIT_MESH = _UxGT("Mesh Düzenle"); - LSTR MSG_MESH_VIEW = _UxGT("Mesh Göster"); - LSTR MSG_EDITING_STOPPED = _UxGT("Mesh Düzenleme Durdu"); - LSTR MSG_NO_VALID_MESH = _UxGT("Geçerli Mesh yok"); - LSTR MSG_ACTIVATE_MESH = _UxGT("Seviyeleme Aç"); - LSTR MSG_PROBING_POINT = _UxGT("Prop Noktası"); - LSTR MSG_MESH_X = _UxGT("İndeks X"); - LSTR MSG_MESH_Y = _UxGT("İndeks Y"); - LSTR MSG_MESH_INSET = _UxGT("Mesh Inset"); - LSTR MSG_MESH_MIN_X = _UxGT("Mesh X Minimum"); - LSTR MSG_MESH_MAX_X = _UxGT("Mesh X Maximum"); - LSTR MSG_MESH_MIN_Y = _UxGT("Mesh Y Minimum"); - LSTR MSG_MESH_MAX_Y = _UxGT("Mesh Y Maximum"); - LSTR MSG_MESH_AMAX = _UxGT("Alanı Büyüt"); - LSTR MSG_MESH_CENTER = _UxGT("Merkez Alan"); - LSTR MSG_MESH_EDIT_Z = _UxGT("Z Değeri"); - LSTR MSG_MESH_CANCEL = _UxGT("Mesh iptal edildi"); - LSTR MSG_MESH_RESET = _UxGT("Mesh reset"); - LSTR MSG_CUSTOM_COMMANDS = _UxGT("Özel Komutlar"); - LSTR MSG_M48_TEST = _UxGT("M48 Prob Testi"); - LSTR MSG_M48_POINT = _UxGT("M48 Nokta"); - LSTR MSG_M48_OUT_OF_BOUNDS = _UxGT("Sınır dışı araştırma"); - LSTR MSG_M48_DEVIATION = _UxGT("Sapma"); - LSTR MSG_IDEX_MENU = _UxGT("IDEX Modu"); - LSTR MSG_OFFSETS_MENU = _UxGT("Takım Ofsetleri"); - LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Oto-Park"); - LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Kopyala"); - LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Yansıtılmış kopya"); - LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Tam Kontrol"); - LSTR MSG_IDEX_DUPE_GAP = _UxGT("Yinelenen X-Boşluğu"); - LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2. nozul Z"); - LSTR MSG_HOTEND_OFFSET_N = _UxGT("2. nozul @"); - LSTR MSG_UBL_DOING_G29 = _UxGT("G29 Çalışıyor"); - LSTR MSG_UBL_TOOLS = _UxGT("UBL Araçları"); - LSTR MSG_LCD_TILTING_MESH = _UxGT("Eğim Noktası"); - LSTR MSG_UBL_TILT_MESH = _UxGT("Eğimli Mesh"); - LSTR MSG_UBL_TILTING_GRID = _UxGT("Eğimli Izgara Boyutu"); - LSTR MSG_UBL_MESH_TILTED = _UxGT("Mesh Eğildi"); - LSTR MSG_UBL_MANUAL_MESH = _UxGT("Elle Mesh Oluştur"); - LSTR MSG_UBL_MESH_WIZARD = _UxGT("UBL Mesh Sihirbazı"); - LSTR MSG_UBL_BC_INSERT = _UxGT("Altlık & Ölçü Ver"); - LSTR MSG_UBL_BC_INSERT2 = _UxGT("Ölçüm"); - LSTR MSG_UBL_BC_REMOVE = _UxGT("Tablayı Kaldır & Ölç"); - LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Sonrakine Git"); - LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Tabla Sıcaklığı"); - LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Tabla Sıcaklığı"); - LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Nozul Sıcaklığı"); - LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Nozul Sıcaklığı"); - LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Özel Mesh Düzenleme"); - LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("İnce Ayar Mesh"); - LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Mesh Düzenleme Tamam"); - LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Özel Mesh Oluştur"); - LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Mesh Oluştur"); - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Mesh Oluştur ($)"); - LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Soğuk Mesh Oluştur"); - LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Mesh Yükseklik Ayarı"); - LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Yükseklik miktarı"); - LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Mesh Doğrulama"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Mesh Doğrulama ($)"); - LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Özel Mesh Doğrulama"); - LSTR MSG_G26_HEATING_BED = _UxGT("G26 Isıtma Tablası"); - LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 Isıtma Memesi"); - LSTR MSG_G26_MANUAL_PRIME = _UxGT("Manuel çalışma..."); - LSTR MSG_G26_FIXED_LENGTH = _UxGT("Birincil Sabit Uzunluk"); - LSTR MSG_G26_PRIME_DONE = _UxGT("Çalışma Tamamlandı"); - LSTR MSG_G26_CANCELED = _UxGT("G26 İptal edildi"); - LSTR MSG_G26_LEAVING = _UxGT("Çıkış G26"); - LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Tabla Mesh Devam et"); - LSTR MSG_UBL_MESH_LEVELING = _UxGT("Mesh Seviyeleme"); - LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-Nokta Seviyeleme"); - LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Kafes Mesh Seviyeleme"); - LSTR MSG_UBL_MESH_LEVEL = _UxGT("Mesh Seviyesi"); - LSTR MSG_UBL_SIDE_POINTS = _UxGT("Yan Noktalar"); - LSTR MSG_UBL_MAP_TYPE = _UxGT("Haritalama Türü"); - LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Mesh Çikis Haritası"); // Çalışma gerekli Hata - LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Host için Çıktı"); - LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("CSV için Çıktı"); - LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Yedekleme Kapalı"); - LSTR MSG_UBL_INFO_UBL = _UxGT("UBL Çıkış Bilgisi"); - LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Dolgu Miktarı"); - LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Manuel Dolgu"); - LSTR MSG_UBL_SMART_FILLIN = _UxGT("Akıllı Dolgu"); - LSTR MSG_UBL_FILLIN_MESH = _UxGT("Mesh Dolgu"); - LSTR MSG_UBL_MESH_FILLED = _UxGT("Eksikler Dolduruldu"); - LSTR MSG_UBL_MESH_INVALID = _UxGT("Geçersiz Mesh"); - LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Tumunu Gecersiz Kil"); // Çalışma gerekli Hata - LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Yakini Gecersiz Kil"); // Çalışma gerekli Hata - LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Tumunu İnce Ayarla"); // Çalışma gerekli Hata - LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Yakını İnce Ayarla"); - LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Mesh Depolama"); - LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Bellek Yuvası"); - LSTR MSG_UBL_LOAD_MESH = _UxGT("Tabla Mesh Yükle"); - LSTR MSG_UBL_SAVE_MESH = _UxGT("Tabla Mesh Kaydet"); - LSTR MSG_UBL_INVALID_SLOT = _UxGT("Önce Mesh Yuvası Seç"); - LSTR MSG_MESH_LOADED = _UxGT("Mesh %i yüklendi"); - LSTR MSG_MESH_SAVED = _UxGT("Mesh %i kayıtlandı"); - LSTR MSG_MESH_ACTIVE = _UxGT("%i mesh aktif"); - LSTR MSG_UBL_NO_STORAGE = _UxGT("Depolama Yok"); - LSTR MSG_UBL_SAVE_ERROR = _UxGT("UBL Kaydetme Hatası"); - LSTR MSG_UBL_RESTORE_ERROR = _UxGT("UBL Geri Yükleme Hatası"); - LSTR MSG_UBL_Z_OFFSET = _UxGT("Z-Ofset: "); - LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Z-Ofset Durduruldu"); - LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("Adım Adım UBL"); - LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Soğuk Mesh Oluştur"); - LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2.Akıllı Dolgu"); - LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Mesh Dogrulama"); // Çalışma gerekli Hata - LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Tumunu ince Ayarla"); // Çalışma gerekli Hata - LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Mesh Dogrulama"); // Çalışma gerekli Hata - LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Tumunu ince Ayarla"); // Çalışma gerekli Hata - LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Tabla Mesh Kaydet"); - - LSTR MSG_LED_CONTROL = _UxGT("LED Kontrolü"); - LSTR MSG_LIGHTS = _UxGT("LEDler"); - LSTR MSG_LIGHT_N = _UxGT("Işıklar #{"); - LSTR MSG_LED_PRESETS = _UxGT("LED Hazır Ayarları"); - LSTR MSG_SET_LEDS_RED = _UxGT("Kırmızı"); - LSTR MSG_SET_LEDS_ORANGE = _UxGT("Turuncu"); - LSTR MSG_SET_LEDS_YELLOW = _UxGT("Sarı"); - LSTR MSG_SET_LEDS_GREEN = _UxGT("Yeşil"); - LSTR MSG_SET_LEDS_BLUE = _UxGT("Mavi"); - LSTR MSG_SET_LEDS_INDIGO = _UxGT("Lacivert"); - LSTR MSG_SET_LEDS_VIOLET = _UxGT("Menekşe"); - LSTR MSG_SET_LEDS_WHITE = _UxGT("Beyaz"); - LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Varsayılan"); - LSTR MSG_LED_CHANNEL_N = _UxGT("Kanal {"); - LSTR MSG_NEO2_PRESETS = _UxGT("Işık #2 Ön Ayarları"); - LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Parlaklık"); - LSTR MSG_CUSTOM_LEDS = _UxGT("Özel Işıklar"); - LSTR MSG_INTENSITY_R = _UxGT("Kırmızı Şiddeti"); - LSTR MSG_INTENSITY_G = _UxGT("Yeşil Şiddeti"); - LSTR MSG_INTENSITY_B = _UxGT("Mavi Şiddeti"); - LSTR MSG_INTENSITY_W = _UxGT("Beyaz Şiddeti"); - LSTR MSG_LED_BRIGHTNESS = _UxGT("Parlaklık"); - - LSTR MSG_MOVING = _UxGT("Hareket Ediyor.."); - LSTR MSG_FREE_XY = _UxGT("Durdur XY"); - LSTR MSG_MOVE_X = _UxGT("X Hareketi"); // Used by draw_edit_screen - LSTR MSG_MOVE_Y = _UxGT("Y Hareketi"); - LSTR MSG_MOVE_Z = _UxGT("Z Hareketi"); - LSTR MSG_MOVE_N = _UxGT("@ Hareketi"); - LSTR MSG_MOVE_E = _UxGT("Ekstruder"); - LSTR MSG_MOVE_EN = _UxGT("Ekstruder *"); - LSTR MSG_HOTEND_TOO_COLD = _UxGT("Nozul Çok Soğuk"); - LSTR MSG_MOVE_N_MM = _UxGT("$mm"); - LSTR MSG_MOVE_N_IN = _UxGT("$in"); - LSTR MSG_MOVE_N_DEG = _UxGT("$") LCD_STR_DEGREE; - LSTR MSG_LIVE_MOVE = _UxGT("Canlı Hareket"); - LSTR MSG_SPEED = _UxGT("Hız"); - LSTR MSG_MESH_Z_OFFSET = _UxGT("Z Mesafesi"); - LSTR MSG_NOZZLE = _UxGT("Nozul"); - LSTR MSG_NOZZLE_N = _UxGT("Nozul ~"); - LSTR MSG_NOZZLE_PARKED = _UxGT("Nozul Park Edildi"); - LSTR MSG_NOZZLE_STANDBY = _UxGT("Nozul Beklemede"); - LSTR MSG_BED = _UxGT("Tabla"); - LSTR MSG_CHAMBER = _UxGT("Kabin"); - LSTR MSG_COOLER = _UxGT("Lazer Soğutucu"); - LSTR MSG_COOLER_TOGGLE = _UxGT("Soğutucuyu Değiştir"); - LSTR MSG_FLOWMETER_SAFETY = _UxGT("Akış Güvenliği"); - LSTR MSG_CUTTER = _UxGT("Kesici"); - LSTR MSG_LASER = _UxGT("Lazer"); - LSTR MSG_FAN_SPEED = _UxGT("Fan Hızı"); - LSTR MSG_FAN_SPEED_N = _UxGT("Fan Hızı ~"); - LSTR MSG_STORED_FAN_N = _UxGT("Depolanan Fan ~"); - LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Ekstra Fan Hızı"); - LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Ekstra Fan Hızı ~"); - LSTR MSG_CONTROLLER_FAN = _UxGT("Sistem Fan Kontrol"); - LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("Rölanti Hızı"); - LSTR MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("Otomatik Mod"); - LSTR MSG_CONTROLLER_FAN_SPEED = _UxGT("Aktif Hız"); - LSTR MSG_CONTROLLER_FAN_DURATION = _UxGT("Rölanti Periyodu"); - LSTR MSG_FLOW = _UxGT("Akış"); - LSTR MSG_FLOW_N = _UxGT("Akış ~"); - LSTR MSG_CONTROL = _UxGT("Kontrol"); - LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); - LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Çarpan"); - LSTR MSG_AUTOTEMP = _UxGT("Oto. Sıcaklık"); - LSTR MSG_TIMEOUT = _UxGT("Zaman aşımı"); - LSTR MSG_LCD_ON = _UxGT("Açık"); - LSTR MSG_LCD_OFF = _UxGT("Kapalı"); - LSTR MSG_PID_AUTOTUNE = _UxGT("PID Kalibrasyonu"); - LSTR MSG_PID_AUTOTUNE_E = _UxGT("* PID Kalibrasyonu"); - LSTR MSG_PID_CYCLE = _UxGT("PID Döngüleri"); - LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("PID ayarı yapıldı"); - LSTR MSG_PID_AUTOTUNE_FAILED = _UxGT("Kalibrasyon başarısız!"); - LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Kalibrasyon başarısız! Kötü ekstruder."); - LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Kalibrasyon başarısız! Sıcaklık çok yüksek."); - LSTR MSG_PID_TIMEOUT = _UxGT("Kalibrasyon başarısız! Zaman aşımı."); - LSTR MSG_MPC_MEASURING_AMBIENT = _UxGT("Isı kaybı testi"); - LSTR MSG_MPC_HEATING_PAST_200 = _UxGT(">200C Isıtma"); - LSTR MSG_MPC_COOLING_TO_AMBIENT = _UxGT("Ortam ısısına soğutma"); - LSTR MSG_MPC_AUTOTUNE = _UxGT("MPC Kalibrasyonu"); - LSTR MSG_MPC_EDIT = _UxGT("* MPC Düzenle"); - LSTR MSG_MPC_POWER = _UxGT("Isıtıcı Gücü"); - LSTR MSG_MPC_POWER_E = _UxGT("* Gücü"); - LSTR MSG_MPC_BLOCK_HEAT_CAPACITY = _UxGT("Isı Kapasitesi"); - LSTR MSG_MPC_BLOCK_HEAT_CAPACITY_E = _UxGT("Isı Kap. *"); - LSTR MSG_SENSOR_RESPONSIVENESS = _UxGT("Sensör Hassasiyeti"); - LSTR MSG_SENSOR_RESPONSIVENESS_E = _UxGT("Sensör Has. *"); - LSTR MSG_MPC_AMBIENT_XFER_COEFF = _UxGT("Ortam Kats."); - LSTR MSG_MPC_AMBIENT_XFER_COEFF_E = _UxGT("Ortam Ka. *"); - LSTR MSG_MPC_AMBIENT_XFER_COEFF_FAN = _UxGT("Fan kats."); - LSTR MSG_MPC_AMBIENT_XFER_COEFF_FAN_E = _UxGT("Fan kats. *"); - LSTR MSG_SELECT_E = _UxGT("Seç *"); - LSTR MSG_ACC = _UxGT("İvme"); - LSTR MSG_JERK = _UxGT("Sarsım"); - LSTR MSG_VA_JERK = _UxGT("Max ") STR_A _UxGT(" Sarsımı"); - LSTR MSG_VB_JERK = _UxGT("Max ") STR_B _UxGT(" Sarsımı"); - LSTR MSG_VC_JERK = _UxGT("Max ") STR_C _UxGT(" Sarsımı"); - LSTR MSG_VN_JERK = _UxGT("Max @ Sarsımı"); - LSTR MSG_VE_JERK = _UxGT("Max E Sarsımı"); - LSTR MSG_JUNCTION_DEVIATION = _UxGT("Jonksiyon Sapması"); - LSTR MSG_STEP_SMOOTHING = _UxGT("Adım Yumuşatma"); - LSTR MSG_MAX_SPEED = _UxGT("Max Hız (mm/s)"); - LSTR MSG_VMAX_A = _UxGT("Max ") STR_A _UxGT(" Hızı"); - LSTR MSG_VMAX_B = _UxGT("Max ") STR_B _UxGT(" Hızı"); - LSTR MSG_VMAX_C = _UxGT("Max ") STR_C _UxGT(" Hızı"); - LSTR MSG_VMAX_N = _UxGT("Max @ Hızı"); - LSTR MSG_VMAX_E = _UxGT("Max E Hızı"); - LSTR MSG_VMAX_EN = _UxGT("Max * Hızı"); - LSTR MSG_VMIN = _UxGT("Min Hız"); - LSTR MSG_VTRAV_MIN = _UxGT("Min Gezme Hızı"); - LSTR MSG_ACCELERATION = _UxGT("İvme"); - LSTR MSG_AMAX_A = _UxGT("Max ") STR_A _UxGT(" İvmesi"); - LSTR MSG_AMAX_B = _UxGT("Max ") STR_B _UxGT(" İvmesi"); - LSTR MSG_AMAX_C = _UxGT("Max ") STR_C _UxGT(" İvmesi"); - LSTR MSG_AMAX_N = _UxGT("Max @ İvmesi"); - LSTR MSG_AMAX_E = _UxGT("Max E İvmesi"); - LSTR MSG_AMAX_EN = _UxGT("Max * İvmesi"); - LSTR MSG_A_RETRACT = _UxGT("G.Çekme Hızı"); - LSTR MSG_A_TRAVEL = _UxGT("Gezinme Hızı"); - LSTR MSG_INPUT_SHAPING = _UxGT("Input Shaping"); - LSTR MSG_SHAPING_ENABLE_N = _UxGT("@ Biçimlemeyi Aç"); - LSTR MSG_SHAPING_DISABLE_N = _UxGT("@ Biçimlemeyi Kapat"); - LSTR MSG_SHAPING_FREQ_N = _UxGT("@ frekans"); - LSTR MSG_SHAPING_ZETA_N = _UxGT("@ sönümleme"); - LSTR MSG_SHAPING_A_FREQ = STR_A _UxGT(" frekansı"); // ProUI - LSTR MSG_SHAPING_B_FREQ = STR_B _UxGT(" frekansı"); // ProUI - LSTR MSG_SHAPING_C_FREQ = STR_C _UxGT(" frekansı"); // ProUI - LSTR MSG_SHAPING_A_ZETA = STR_A _UxGT(" sönümleme"); // ProUI - LSTR MSG_SHAPING_B_ZETA = STR_B _UxGT(" sönümleme"); // ProUI - LSTR MSG_SHAPING_C_ZETA = STR_C _UxGT(" sönümleme"); // ProUI - LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("XY Frek. Sınırı"); - LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("Min FR Factörü"); - LSTR MSG_STEPS_PER_MM = _UxGT("Adım/mm"); - LSTR MSG_A_STEPS = STR_A _UxGT(" adım/mm"); - LSTR MSG_B_STEPS = STR_B _UxGT(" adım/mm"); - LSTR MSG_C_STEPS = STR_C _UxGT(" adım/mm"); - LSTR MSG_N_STEPS = _UxGT("@ adım/mm"); - LSTR MSG_E_STEPS = _UxGT("E adım/mm"); - LSTR MSG_EN_STEPS = _UxGT("* adım/mm"); - LSTR MSG_TEMPERATURE = _UxGT("Sıcaklık"); - LSTR MSG_MOTION = _UxGT("Hareket"); - LSTR MSG_FILAMENT = _UxGT("Filaman"); - LSTR MSG_FILAMENT_EN = _UxGT("Filaman *"); - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("Ekstrüzyon/mm") SUPERSCRIPT_THREE; - LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("E Limit in mm") SUPERSCRIPT_THREE; - LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("E Limit *"); - LSTR MSG_FILAMENT_DIAM = _UxGT("Filaman Çapı"); - LSTR MSG_FILAMENT_DIAM_E = _UxGT("Filaman Çapı *"); - LSTR MSG_FILAMENT_UNLOAD = _UxGT("Çıkart mm"); - LSTR MSG_FILAMENT_LOAD = _UxGT("Yükle mm"); - LSTR MSG_SEGMENTS_PER_SECOND = _UxGT("Segment/Sn"); - LSTR MSG_DRAW_MIN_X = _UxGT("Min X Çiz"); - LSTR MSG_DRAW_MAX_X = _UxGT("Max X Çiz"); - LSTR MSG_DRAW_MIN_Y = _UxGT("Min Y Çİz"); - LSTR MSG_DRAW_MAX_Y = _UxGT("Max Y Çiz"); - LSTR MSG_MAX_BELT_LEN = _UxGT("Max Kayış Boyu"); - LSTR MSG_LINEAR_ADVANCE = _UxGT("Doğrusal İlerleme"); - LSTR MSG_ADVANCE_K = _UxGT("K. Değeri"); - LSTR MSG_ADVANCE_K_E = _UxGT("K. Değeri *"); - LSTR MSG_CONTRAST = _UxGT("LCD Kontrast"); - LSTR MSG_BRIGHTNESS = _UxGT("LCD Parlaklığı"); - LSTR MSG_SCREEN_TIMEOUT = _UxGT("LCD Zaman Aşımı (m)"); - LSTR MSG_HOTEND_TEMP_GRAPH = _UxGT("Nozul Isı Grafiği"); - LSTR MSG_BED_TEMP_GRAPH = _UxGT("Tablo Isı Grafiği"); - LSTR MSG_BRIGHTNESS_OFF = _UxGT("Arka Işık Kapalı"); - LSTR MSG_STORE_EEPROM = _UxGT("Hafızaya Al"); - LSTR MSG_LOAD_EEPROM = _UxGT("Hafızadan Yükle"); - LSTR MSG_RESTORE_DEFAULTS = _UxGT("Fabrika Ayarları"); - LSTR MSG_INIT_EEPROM = _UxGT("EEPROM'u başlat"); - LSTR MSG_ERR_EEPROM_CRC = _UxGT("Hata: EEPROM CRC"); - LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Hata: EEPROM Boyutu"); - LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Hata: EEPROM Sürümü"); - LSTR MSG_ERR_EEPROM_CORRUPT = _UxGT("Hata: EEPROM Bozuk"); - LSTR MSG_SETTINGS_STORED = _UxGT("Ayarlar Kaydedildi"); - LSTR MSG_HAS_PREVIEW = _UxGT("Önizleme var"); - LSTR MSG_RESET_PRINTER = _UxGT("Yazıcıyı Resetle"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Yenile"); - LSTR MSG_INFO_SCREEN = _UxGT("Bilgi Ekranı"); - LSTR MSG_INFO_MACHINENAME = _UxGT("Makine Adı"); - LSTR MSG_INFO_SIZE = _UxGT("Boyut"); - LSTR MSG_INFO_FWVERSION = _UxGT("Yazılım Sürümü"); - LSTR MSG_INFO_BUILD = _UxGT("Tarih & Saat Oluştur"); - LSTR MSG_PREPARE = _UxGT("Hazırlık"); - LSTR MSG_TUNE = _UxGT("Ayar"); - LSTR MSG_POWER_MONITOR = _UxGT("Güç monitörü"); - LSTR MSG_CURRENT = _UxGT("Akım"); - LSTR MSG_VOLTAGE = _UxGT("Voltaj"); - LSTR MSG_POWER = _UxGT("Güç"); - LSTR MSG_START_PRINT = _UxGT("Yazdırmayı Başlat"); - LSTR MSG_BUTTON_NEXT = _UxGT("İleri"); - LSTR MSG_BUTTON_INIT = _UxGT("Başlat"); - LSTR MSG_BUTTON_STOP = _UxGT("Durdur"); - LSTR MSG_BUTTON_PRINT = _UxGT("Yazdır"); - LSTR MSG_BUTTON_RESET = _UxGT("Resetle"); - LSTR MSG_BUTTON_IGNORE = _UxGT("Yoksay"); - LSTR MSG_BUTTON_CANCEL = _UxGT("İptal"); - LSTR MSG_BUTTON_CONFIRM = _UxGT("Onayla"); - LSTR MSG_BUTTON_CONTINUE = _UxGT("Sürdür"); - LSTR MSG_BUTTON_DONE = _UxGT("Tamamlandı"); - LSTR MSG_BUTTON_BACK = _UxGT("Geri"); - LSTR MSG_BUTTON_PROCEED = _UxGT("Devam Et"); - LSTR MSG_BUTTON_SKIP = _UxGT("Atla"); - LSTR MSG_BUTTON_INFO = _UxGT("Bilgi"); - LSTR MSG_BUTTON_LEVEL = _UxGT("Seviye"); - LSTR MSG_BUTTON_PAUSE = _UxGT("Duraklat"); - LSTR MSG_BUTTON_RESUME = _UxGT("Devam Et"); - LSTR MSG_BUTTON_ADVANCED = _UxGT("Gelişmiş"); - LSTR MSG_BUTTON_SAVE = _UxGT("Kaydet"); - LSTR MSG_BUTTON_PURGE = _UxGT("Temizle"); - LSTR MSG_PAUSING = _UxGT("Duraklatılıyor..."); - LSTR MSG_PAUSE_PRINT = _UxGT("Duraklat"); - LSTR MSG_ADVANCED_PAUSE = _UxGT("Gelişmiş Duraklatma"); - LSTR MSG_RESUME_PRINT = _UxGT("Baskıyı Sürdür"); - LSTR MSG_STOP_PRINT = _UxGT("Baskıyı Durdur"); - LSTR MSG_OUTAGE_RECOVERY = _UxGT("Kesinti Kurtarma"); - LSTR MSG_RESUME_BED_TEMP = _UxGT("Tabla Isıtmayı Sürdür"); - LSTR MSG_HOST_START_PRINT = _UxGT("Host Başlat"); - LSTR MSG_PRINTING_OBJECT = _UxGT("Nesneyi Yazdır"); - LSTR MSG_CANCEL_OBJECT = _UxGT("Nesneyi İptal Et"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Nesneyi İptal Et {"); - LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("İşe Devam Et"); - LSTR MSG_MEDIA_MENU = _UxGT("Medyayı Yazdır"); - LSTR MSG_TURN_OFF = _UxGT("Şimdi kapat"); - LSTR MSG_END_LOOPS = _UxGT("Son Döngüler"); - LSTR MSG_NO_MEDIA = _UxGT("SD Kart Yok!"); - LSTR MSG_DWELL = _UxGT("Uyku..."); - LSTR MSG_USERWAIT = _UxGT("Devam için tıkla..."); - LSTR MSG_PRINT_PAUSED = _UxGT("Baskı Duraklatıldı"); - LSTR MSG_PRINTING = _UxGT("Baskı Yapılıyor..."); - LSTR MSG_STOPPING = _UxGT("Durduruluyor..."); - LSTR MSG_REMAINING_TIME = _UxGT("Kalan"); - LSTR MSG_PRINT_ABORTED = _UxGT("Baskı Durduruldu!"); - LSTR MSG_PRINT_DONE = _UxGT("Yazdırma Bitti"); - LSTR MSG_PRINTER_KILLED = _UxGT("Yazıcı çöktü!"); - LSTR MSG_NO_MOVE = _UxGT("İşlem yok."); - LSTR MSG_KILLED = _UxGT("ÇÖKTÜ. "); - LSTR MSG_STOPPED = _UxGT("DURDURULDU. "); - LSTR MSG_FWRETRACT = _UxGT("Yazılım Geri Çekme"); - LSTR MSG_CONTROL_RETRACT = _UxGT("Geri Çek mm"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("GÇ. Değiş mm"); - LSTR MSG_CONTROL_RETRACTF = _UxGT("Geri Çekme V"); - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Atlama mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Geri Çek. mm"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("S Unretr. mm"); - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Unretract V"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V"); - LSTR MSG_AUTORETRACT = _UxGT("Oto. Geri Çekme"); - LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("G.Çekme Boyu"); - LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Ekstra Değiştir"); - LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Tasfiye uzunluğu"); - LSTR MSG_TOOL_CHANGE = _UxGT("Takım Değişimi"); - LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Z Yükselt"); - LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Birincil Hız"); - LSTR MSG_SINGLENOZZLE_WIPE_RETRACT = _UxGT("Geri Çekme Sil"); - LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Geri Çekme Hızı"); - LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Kafa Park"); - LSTR MSG_PARK_FAILED = _UxGT("Kafa park edilemiyor"); - LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Kurtarma Hızı"); - LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Fan Hızı"); - LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Fan Süresi"); - LSTR MSG_TOOL_MIGRATION_ON = _UxGT("Otomatik AÇIK"); - LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("Otomatik KAPALI"); - LSTR MSG_TOOL_MIGRATION = _UxGT("Takım Taşıma"); - LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("Otomatik-taşıma"); - LSTR MSG_TOOL_MIGRATION_END = _UxGT("Son Ekstruder"); - LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("* konumuna taşı"); - LSTR MSG_FILAMENTCHANGE = _UxGT("Filaman Değiştir"); - LSTR MSG_FILAMENTCHANGE_E = _UxGT("Filaman Değiştir *"); - LSTR MSG_FILAMENTLOAD = _UxGT("Filaman Yükle"); - LSTR MSG_FILAMENTLOAD_E = _UxGT("Filaman Yükle *"); - LSTR MSG_FILAMENTUNLOAD = _UxGT("Filaman Çıkart"); - LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Filaman Çıkart *"); - LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Tümünü Çıkart"); - - LSTR MSG_ATTACH_MEDIA = _UxGT("Medyayı Ekle"); - LSTR MSG_ATTACH_SD = _UxGT("SD Kartı takın"); - LSTR MSG_ATTACH_USB = _UxGT("USB Sürücüyü takın"); - LSTR MSG_CHANGE_MEDIA = _UxGT("Medyayı Değiştir"); - LSTR MSG_RELEASE_MEDIA = _UxGT("Medyayı Çıkart"); - LSTR MSG_RUN_AUTOFILES = _UxGT("Oto. Başlat"); - - LSTR MSG_ZPROBE_OUT = _UxGT("Z Prob Tablayı Geçti"); - LSTR MSG_SKEW_FACTOR = _UxGT("Çarpıklık Faktörü"); - LSTR MSG_BLTOUCH = _UxGT("BLTouch"); - LSTR MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch K. Test"); - LSTR MSG_BLTOUCH_RESET = _UxGT("Sıfırla"); - LSTR MSG_BLTOUCH_STOW = _UxGT("Kapat"); - LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Aç"); - LSTR MSG_BLTOUCH_SW_MODE = _UxGT("SW-Modu"); - LSTR MSG_BLTOUCH_SPEED_MODE = _UxGT("Yüksek Hız"); - LSTR MSG_BLTOUCH_5V_MODE = _UxGT("5V-Modu"); - LSTR MSG_BLTOUCH_OD_MODE = _UxGT("OD-Modu"); - LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("Mode-Store"); - LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("BLTouch 5V Ayarla"); - LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("BLTouch OD Ayarla"); - LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Drenaj Raporu"); - LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("TEHLIKE: Kötü ayarlar zarar verebilir! Yine de devam edilsin mi?"); - LSTR MSG_TOUCHMI_PROBE = _UxGT("TouchMI"); - LSTR MSG_TOUCHMI_INIT = _UxGT("TouchMI'yi Başlat"); - LSTR MSG_TOUCHMI_ZTEST = _UxGT("Z Ofset Testi"); - LSTR MSG_TOUCHMI_SAVE = _UxGT("Kaydet"); - LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("TouchMI Aç"); - LSTR MSG_MANUAL_DEPLOY = _UxGT("Z-Probe Aç"); - LSTR MSG_MANUAL_PENUP = _UxGT("Kalem yukarı"); - LSTR MSG_MANUAL_PENDOWN = _UxGT("Kalem aşağı"); - LSTR MSG_MANUAL_STOW = _UxGT("Z-Probe Kapat"); - LSTR MSG_HOME_FIRST = _UxGT("Önce %s Sıfırla"); - LSTR MSG_ZPROBE_SETTINGS = _UxGT("Prob Ayarları"); - LSTR MSG_ZPROBE_OFFSETS = _UxGT("Prob Ofsetleri"); - LSTR MSG_ZPROBE_XOFFSET = _UxGT("X Prob Ofseti"); - LSTR MSG_ZPROBE_YOFFSET = _UxGT("Y Prob Ofseti"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Z Prob Ofseti"); - LSTR MSG_ZPROBE_OFFSET_N = _UxGT("@ Prob Ofseti"); - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Z ayarı adımsal"); - LSTR MSG_ZPROBE_MARGIN = _UxGT("Prob Payı"); - LSTR MSG_Z_FEED_RATE = _UxGT("Z İlerleme Hızı"); - LSTR MSG_ENABLE_HS_MODE = _UxGT("HS modunu aç"); - LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Nozülü Tablaya Taşı"); - LSTR MSG_BABYSTEP_X = _UxGT("Miniadım X"); - LSTR MSG_BABYSTEP_Y = _UxGT("Miniadım Y"); - LSTR MSG_BABYSTEP_Z = _UxGT("Miniadım Z"); - LSTR MSG_BABYSTEP_N = _UxGT("Miniadım @"); - LSTR MSG_BABYSTEP_TOTAL = _UxGT("Toplam"); - LSTR MSG_ENDSTOP_ABORT = _UxGT("Endstop iptal"); - LSTR MSG_ERR_HEATING_FAILED = _UxGT("Isınma başarısız"); - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Hata: ISI AŞIMI"); - LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("ISI SORUNU"); - LSTR MSG_ERR_TEMP_MALFUNCTION = _UxGT("SICAKLIK ARIZASI"); - LSTR MSG_ERR_COOLING_FAILED = _UxGT("Soğutma Başarısız"); - LSTR MSG_ERR_MAXTEMP = _UxGT("HATA:MAX.SICAK."); - LSTR MSG_ERR_MINTEMP = _UxGT("HATA:MIN.SICAK."); - LSTR MSG_HALTED = _UxGT("YAZICI DURDURULDU"); - LSTR MSG_PLEASE_WAIT = _UxGT("Lütfen bekleyin..."); - LSTR MSG_PLEASE_RESET = _UxGT("Lütfen Resetleyin"); - LSTR MSG_PREHEATING = _UxGT("ön ısıtma..."); - LSTR MSG_HEATING = _UxGT("Isınıyor..."); - LSTR MSG_COOLING = _UxGT("Soğuyor..."); - LSTR MSG_BED_HEATING = _UxGT("Tabla Isınıyor..."); - LSTR MSG_BED_COOLING = _UxGT("Tabla Soğuyor..."); - LSTR MSG_BED_ANNEALING = _UxGT("Tavlama..."); - LSTR MSG_PROBE_HEATING = _UxGT("Prob ısınıyor..."); - LSTR MSG_PROBE_COOLING = _UxGT("Prob Soğuyor..."); - LSTR MSG_CHAMBER_HEATING = _UxGT("Kabin Isınıyor..."); - LSTR MSG_CHAMBER_COOLING = _UxGT("Kabin Soğuyor..."); - LSTR MSG_LASER_COOLING = _UxGT("Lazer Soğuyor..."); - LSTR MSG_DELTA_CALIBRATE = _UxGT("Delta Kalibrasyonu"); - LSTR MSG_DELTA_CALIBRATION_IN_PROGRESS = _UxGT("Delta Kalibrasyonu sürüyor"); - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Ayarla X"); - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Ayarla Y"); - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Ayarla Z"); - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Ayarla Merkez"); - LSTR MSG_DELTA_SETTINGS = _UxGT("Delta Ayarları"); - LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Oto Kalibrasyon"); - LSTR MSG_DELTA_DIAG_ROD = _UxGT("Çapral Mil"); - LSTR MSG_DELTA_HEIGHT = _UxGT("Yükseklik"); - LSTR MSG_DELTA_RADIUS = _UxGT("Yarıçap"); - LSTR MSG_INFO_MENU = _UxGT("Yazıcı Hakkında"); - LSTR MSG_INFO_PRINTER_MENU = _UxGT("Yazıcı Bilgisi"); - LSTR MSG_3POINT_LEVELING = _UxGT("3-Nokta Seviyeleme"); - LSTR MSG_LINEAR_LEVELING = _UxGT("Doğrusal Seviyeleme"); - LSTR MSG_BILINEAR_LEVELING = _UxGT("İki Yönlü Doğ. Hiza."); - LSTR MSG_UBL_LEVELING = _UxGT("Birleşik Tabla Hiza."); - LSTR MSG_MESH_LEVELING = _UxGT("Mesh Seviyeleme"); - LSTR MSG_MESH_DONE = _UxGT("Mesh sondalama tamam"); - LSTR MSG_INFO_STATS_MENU = _UxGT("İstatistikler"); - LSTR MSG_RESET_STATS = _UxGT("Yazdırma istatistik Sıfırla?"); - LSTR MSG_INFO_BOARD_MENU = _UxGT("Kontrolcü Bilgisi"); - LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Termistörler"); - LSTR MSG_INFO_EXTRUDERS = _UxGT("Ekstruderler"); - LSTR MSG_INFO_BAUDRATE = _UxGT("İletişim Hızı"); - LSTR MSG_INFO_PROTOCOL = _UxGT("Protokol"); - LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Kaçak İzleme: KAPALI"); - LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Kaçak İzleme: AÇIK"); - LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Hotend Boşta Zamn Aş"); - LSTR MSG_HOTEND_IDLE_DISABLE = _UxGT("Zaman Aşımı Pasif"); - LSTR MSG_HOTEND_IDLE_NOZZLE_TARGET = _UxGT("Meme Boşta Isısı"); - LSTR MSG_HOTEND_IDLE_BED_TARGET = _UxGT("Tabla Boşta Isısı"); - LSTR MSG_FAN_SPEED_FAULT = _UxGT("Fan hızı hatası"); - - LSTR MSG_CASE_LIGHT = _UxGT("Aydınlatma"); - LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Işık Parlaklğı"); - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("HATALI YAZICI"); - - LSTR MSG_COLORS_GET = _UxGT("Renk Al"); // ProUI - LSTR MSG_COLORS_SELECT = _UxGT("Renkleri Seç"); // ProUI - LSTR MSG_COLORS_APPLIED = _UxGT("Uygulanan renkler"); // ProUI - LSTR MSG_COLORS_RED = _UxGT("Kırmızı"); // ProUI / JyersUI - LSTR MSG_COLORS_GREEN = _UxGT("Yeşil"); // ProUI / JyersUI - LSTR MSG_COLORS_BLUE = _UxGT("Mavi"); // ProUI / JyersUI - LSTR MSG_COLORS_WHITE = _UxGT("Beyaz"); // ProUI - LSTR MSG_UI_LANGUAGE = _UxGT("UI Dili"); // ProUI - LSTR MSG_SOUND_ENABLE = _UxGT("Sesi etkinleştir"); // ProUI - LSTR MSG_LOCKSCREEN = _UxGT("Kilit Ekranı"); // ProUI - LSTR MSG_LOCKSCREEN_LOCKED = _UxGT("Yazıcı Kilitlendi,"); // ProUI - LSTR MSG_LOCKSCREEN_UNLOCK = _UxGT("Açmak için kaydırın."); // ProUI - LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Y.Başlatma bekleyin."); // ProUI - LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Medya Yok"); // ProUI - LSTR MSG_PLEASE_PREHEAT = _UxGT("Ön Isıtma Lütfen"); // ProUI - - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Baskı"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Süre"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("En Uzun"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Filaman"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Tamamlanan"); - LSTR MSG_INFO_MIN_TEMP = _UxGT("Min Sıc."); - LSTR MSG_INFO_MAX_TEMP = _UxGT("Max Sıc."); - LSTR MSG_INFO_PSU = _UxGT("Güç Kaynağı"); - - LSTR MSG_DRIVE_STRENGTH = _UxGT("Sürücü Gücü"); - LSTR MSG_DAC_PERCENT_N = _UxGT("@ Sürücü %"); - LSTR MSG_ERROR_TMC = _UxGT("TMC BAĞLANTI HATASI"); - LSTR MSG_DAC_EEPROM_WRITE = _UxGT("DAC EEPROM Yaz"); - LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("FILAMAN DEGISTIR"); - LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("BASKI DURAKLATILDI"); - LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("FILAMAN YüKLE"); - LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("FILAMAN ÇIKART"); - LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("Seçenekler:"); - LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Daha Fazla Temizle"); - LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Baskıyı sürdür"); - LSTR MSG_FILAMENT_CHANGE_PURGE_CONTINUE = _UxGT("Temizle veya Devam?"); // ProUI - LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Nozul: "); - LSTR MSG_RUNOUT_SENSOR = _UxGT("Fil. Sensörü"); - LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("Aşınma Farkı mm"); - LSTR MSG_EXTRUDER_MIN_TEMP = _UxGT("Ekstruder Min Isı"); // ProUI - LSTR MSG_FANCHECK = _UxGT("Fan Takosu Kontrolü"); - LSTR MSG_KILL_HOMING_FAILED = _UxGT("Sıfırlama Başarısız"); - LSTR MSG_LCD_PROBING_FAILED = _UxGT("Probing Başarısız"); - - LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("FILAMAN SEÇ"); - LSTR MSG_MMU2_MENU = _UxGT("MMU"); - LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("MMU Yaz. Güncelle!"); - LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU Dikkat Gerektirir."); - LSTR MSG_MMU2_RESUME = _UxGT("Yaz. Devam Et"); - LSTR MSG_MMU2_RESUMING = _UxGT("Sürdürülüyor..."); - LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("Filaman Yükle"); - LSTR MSG_MMU2_LOAD_ALL = _UxGT("Tümünü Yükle"); - LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Nozula Yükle"); - LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("Filaman Çıkart"); - LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("Filaman Çıkart ~"); - LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Filamenti Boşalt"); - LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("%i Filaman Yükle..."); - LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Filaman Çek..."); - LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Filaman Boşalt...."); - LSTR MSG_MMU2_ALL = _UxGT("Tümü"); - LSTR MSG_MMU2_FILAMENT_N = _UxGT("Filaman ~"); - LSTR MSG_MMU2_RESET = _UxGT("MMU Resetle"); - LSTR MSG_MMU2_RESETTING = _UxGT("MMU Resetleniyor..."); - LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("MMU2 Eject Recover"); - LSTR MSG_MMU2_REMOVE_AND_CLICK = _UxGT("Kaldır ve tıkla..."); - - LSTR MSG_MIX = _UxGT("Karışım"); - LSTR MSG_MIX_COMPONENT_N = _UxGT("Bileşen {"); - LSTR MSG_MIXER = _UxGT("Karıştırıcı"); - LSTR MSG_GRADIENT = _UxGT("Gradyan"); - LSTR MSG_FULL_GRADIENT = _UxGT("Tam Gradyan"); - LSTR MSG_TOGGLE_MIX = _UxGT("Karışım Geçişi"); - LSTR MSG_CYCLE_MIX = _UxGT("Döngü Karışımı"); - LSTR MSG_GRADIENT_MIX = _UxGT("Gradyan Karışımı"); - LSTR MSG_REVERSE_GRADIENT = _UxGT("Ters Gradyan"); - LSTR MSG_ACTIVE_VTOOL = _UxGT("Aktif V-tool"); - LSTR MSG_START_VTOOL = _UxGT("Başlat V-tool"); - LSTR MSG_END_VTOOL = _UxGT(" Bitir V-tool"); - LSTR MSG_GRADIENT_ALIAS = _UxGT("Alias V-tool"); - LSTR MSG_RESET_VTOOLS = _UxGT("Reset V-tools"); - LSTR MSG_COMMIT_VTOOL = _UxGT("V-tool Karışıö Yap"); - LSTR MSG_VTOOLS_RESET = _UxGT("V-tools Resetlendi"); - LSTR MSG_START_Z = _UxGT("Başlat Z:"); - LSTR MSG_END_Z = _UxGT(" Bitir Z:"); - - LSTR MSG_GAMES = _UxGT("Oyunlar"); - LSTR MSG_BRICKOUT = _UxGT("Brickout"); - LSTR MSG_INVADERS = _UxGT("Invaders"); - LSTR MSG_SNAKE = _UxGT("Sn4k3"); - LSTR MSG_MAZE = _UxGT("Maze"); - - LSTR MSG_BAD_PAGE = _UxGT("Hatalı sayfa dizini"); - LSTR MSG_BAD_PAGE_SPEED = _UxGT("Kötü sayfa hızı"); - - LSTR MSG_EDIT_PASSWORD = _UxGT("Şifreyi Düzenle"); - LSTR MSG_LOGIN_REQUIRED = _UxGT("Giriş Gerekli"); - LSTR MSG_PASSWORD_SETTINGS = _UxGT("Şifre Ayarları"); - LSTR MSG_ENTER_DIGIT = _UxGT("Rakam girin"); - LSTR MSG_CHANGE_PASSWORD = _UxGT("Şifre Belirle/Düzenle"); - LSTR MSG_REMOVE_PASSWORD = _UxGT("Şifre Kaldır"); - LSTR MSG_PASSWORD_SET = _UxGT("Şifre "); - LSTR MSG_START_OVER = _UxGT("Yeniden Başla"); - LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Kaydetmeyi Unutma!"); - LSTR MSG_PASSWORD_REMOVED = _UxGT("Şifre Kaldırıldı"); - - // Filament Değişim ekranları 3 satırlı ekranda 2 satıra kadar - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Sürdürmek İçin Tıkla")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Park Ediliyor...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Lütfen bekleyiniz...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Yükle ve bas")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Isıtmak için Tıkla")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Isınıyor...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Çıkartılıyor...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Yüklüyor...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Temizleniyor...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Bitirmek için Tıkla")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Sürdürülüyor...")); - LSTR MSG_TMC_DRIVERS = _UxGT("TMC Sürücüleri"); - LSTR MSG_TMC_CURRENT = _UxGT("Sürücü Akımı"); - LSTR MSG_TMC_ACURRENT = STR_A _UxGT("Sürücü Akımı"); - LSTR MSG_TMC_BCURRENT = STR_B _UxGT("Sürücü Akımı"); - LSTR MSG_TMC_CCURRENT = STR_C _UxGT("Sürücü Akımı"); - LSTR MSG_TMC_ECURRENT = _UxGT("E Sürücü Akımı"); - LSTR MSG_TMC_HYBRID_THRS = _UxGT("Hibrit Eşiği"); - LSTR MSG_TMC_HOMING_THRS = _UxGT("Sensörsüz Sıfırlama"); - LSTR MSG_TMC_STEPPING_MODE = _UxGT("Adım Modu"); - LSTR MSG_TMC_STEALTHCHOP = _UxGT("StealthChop"); - - LSTR MSG_SERVICE_RESET = _UxGT("Resetle"); - LSTR MSG_SERVICE_IN = _UxGT(" içinde:"); - LSTR MSG_BACKLASH = _UxGT("Ters Tepki"); - LSTR MSG_BACKLASH_CORRECTION = _UxGT("Düzeltme"); - LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Yumuşatma"); - - LSTR MSG_FIXED_TIME_MOTION = _UxGT("Sabit Zamanlı Hareket"); - LSTR MSG_FTM_CMPN_MODE = _UxGT("@ Telafi Modu: $"); - LSTR MSG_FTM_ZV = _UxGT("ZV"); - LSTR MSG_FTM_ZVD = _UxGT("ZVD"); - LSTR MSG_FTM_ZVDD = _UxGT("ZVDD"); - LSTR MSG_FTM_ZVDDD = _UxGT("ZVDDD"); - LSTR MSG_FTM_EI = _UxGT("EI"); - LSTR MSG_FTM_2HEI = _UxGT("2HEI"); - LSTR MSG_FTM_3HEI = _UxGT("3HEI"); - LSTR MSG_FTM_MZV = _UxGT("MZV"); - //LSTR MSG_FTM_ULENDO_FBS = _UxGT("Ulendo FBS"); - //LSTR MSG_FTM_DISCTF = _UxGT("DISCTF"); - LSTR MSG_FTM_DYN_MODE = _UxGT("DF Modu: $"); - LSTR MSG_FTM_Z_BASED = _UxGT("Z-based"); - LSTR MSG_FTM_MASS_BASED = _UxGT("Mass-based"); - LSTR MSG_FTM_BASE_FREQ_N = _UxGT("@ Base Freq."); - LSTR MSG_FTM_DFREQ_K_N = _UxGT("@ Dyn. Freq."); - LSTR MSG_FTM_ZETA_N = _UxGT("@ Damping"); - LSTR MSG_FTM_VTOL_N = _UxGT("@ Vib. Level"); - - LSTR MSG_LEVEL_X_AXIS = _UxGT("Seviye X Ekseni"); - LSTR MSG_AUTO_CALIBRATE = _UxGT("Otomatik Kalibre Et"); - LSTR MSG_FTDI_HEATER_TIMEOUT = _UxGT("Boşta kalma zaman aşımı, sıcaklık düştü. Yeniden ısıtmak ve tekrar devam etmek için için Tamam'a basın."); - LSTR MSG_HEATER_TIMEOUT = _UxGT("Isıtıcı Zaman Aşımı"); - LSTR MSG_REHEAT = _UxGT("Yeniden ısıt"); - LSTR MSG_REHEATING = _UxGT("Yeniden ısıtılıyor..."); - LSTR MSG_REHEATDONE = _UxGT("Y. Isıtma Tamam"); - - LSTR MSG_PROBE_WIZARD = _UxGT("Z Prob Sihirbazı"); - LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Z Referansını Tarama"); - LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Prob Konumuna Geçme"); - - LSTR MSG_XATC = _UxGT("X-Twist Sihirbazı"); - LSTR MSG_XATC_DONE = _UxGT("X-Twist Sihirbazı Bitti!"); - LSTR MSG_XATC_UPDATE_Z_OFFSET = _UxGT("Prob Z-Offset güncelle "); - - LSTR MSG_SOUND = _UxGT("Ses"); - - LSTR MSG_TOP_LEFT = _UxGT("Üst Sol"); - LSTR MSG_BOTTOM_LEFT = _UxGT("Alt Sol"); - LSTR MSG_TOP_RIGHT = _UxGT("Üst Sağ"); - LSTR MSG_BOTTOM_RIGHT = _UxGT("Alt Sağ"); - LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Kalibrasyon Tamamlandı"); - LSTR MSG_CALIBRATION_FAILED = _UxGT("Kalibrasyon Başarısız"); - - LSTR MSG_DRIVER_BACKWARD = _UxGT(" driver backward"); - - LSTR MSG_SD_CARD = _UxGT("SD Kart"); - LSTR MSG_USB_DISK = _UxGT("USB Disk"); - - LSTR MSG_HOST_SHUTDOWN = _UxGT("Host'u Kapat"); - - LSTR MSG_SHORT_DAY = _UxGT("g"); // One character only - LSTR MSG_SHORT_HOUR = _UxGT("s"); // One character only - LSTR MSG_SHORT_MINUTE = _UxGT("d"); // One character only - - // These strings can be the same in all languages - LSTR MSG_MARLIN = _UxGT("Marlin"); - LSTR MSG_PID_P = _UxGT("PID-P"); - LSTR MSG_PID_P_E = _UxGT("PID-P *"); - LSTR MSG_PID_I = _UxGT("PID-I"); - LSTR MSG_PID_I_E = _UxGT("PID-I *"); - LSTR MSG_PID_D = _UxGT("PID-D"); - LSTR MSG_PID_D_E = _UxGT("PID-D *"); - LSTR MSG_PID_C = _UxGT("PID-C"); - LSTR MSG_PID_C_E = _UxGT("PID-C *"); - LSTR MSG_PID_F = _UxGT("PID-F"); - LSTR MSG_PID_F_E = _UxGT("PID-F *"); - LSTR MSG_BACKLASH_N = _UxGT("@"); - - // DGUS-Specific message strings, not used elsewhere - LSTR DGUS_MSG_NOT_WHILE_PRINTING = _UxGT("Yazdırma sırasında izin verilmez"); - LSTR DGUS_MSG_NOT_WHILE_IDLE = _UxGT("Boştayken izin verilmez"); - LSTR DGUS_MSG_NO_FILE_SELECTED = _UxGT("Seçili dosya yok"); - LSTR DGUS_MSG_TEMP_TOO_LOW = _UxGT("Sıcaklık çok düşük"); - LSTR DGUS_MSG_TEMP_TOO_HIGH = _UxGT("Sıcaklık çok yüksek."); - LSTR DGUS_MSG_EXECUTING_COMMAND = _UxGT("Komut yürütülüyor..."); - LSTR DGUS_MSG_BED_PID_DISABLED = _UxGT("Tabla PID pasif"); - LSTR DGUS_MSG_PID_DISABLED = _UxGT("PID devre dışı"); - LSTR DGUS_MSG_PID_AUTOTUNING = _UxGT("PID otomatik ayarlama..."); - LSTR DGUS_MSG_INVALID_RECOVERY_DATA = _UxGT("Geçersiz kurtarma verileri"); - - LSTR DGUS_MSG_HOMING_REQUIRED = _UxGT("Eve dönüş gerekli"); - LSTR DGUS_MSG_BUSY = _UxGT("Meşgul"); - LSTR DGUS_MSG_HOMING = _UxGT("Eve dönüş..."); - LSTR DGUS_MSG_FW_OUTDATED = _UxGT("DWIN GUI/OS güncelleme gerekli"); - LSTR DGUS_MSG_ABL_REQUIRED = _UxGT("Oto tabla seviyeleme gerekli"); - LSTR DGUS_MSG_PROBING_FAILED = _UxGT("Sondalama başarısız"); - LSTR DGUS_MSG_PROBING_SUCCESS = _UxGT("Sondalama başarılı"); - LSTR DGUS_MSG_RESET_EEPROM = _UxGT("EEPROM sıfırla"); - LSTR DGUS_MSG_WRITE_EEPROM_FAILED = _UxGT("EEPROM yazımı başarısız"); - LSTR DGUS_MSG_READ_EEPROM_FAILED = _UxGT("EEPROM okuma başarısız"); - LSTR DGUS_MSG_FILAMENT_RUNOUT = _UxGT("E%d Filaman Tükenme"); + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" Hazır."); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = _UxGT("SD K. Yerleştirildi."); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = _UxGT("SD Kart Çıkarıldı."); // (MEDIA_TYPE_EN) Removed + LSTR MSG_LCD_ENDSTOPS = _UxGT("Endstops"); // Endstops + LSTR MSG_MAIN_MENU = _UxGT("Ana"); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("Motorları Durdur"); // Disable Steppers + LSTR MSG_HOMING = _UxGT("Sıfırlanıyor"); // Homing + LSTR MSG_AUTO_HOME = _UxGT("Eksenleri Sıfırla"); // Auto Home + LSTR MSG_AUTO_HOME_X = _UxGT("X Sıfırla"); // Home X + LSTR MSG_AUTO_HOME_Y = _UxGT("Y Sıfırla"); // Home Y + LSTR MSG_AUTO_HOME_Z = _UxGT("Z Sıfırla"); // Home Z + LSTR MSG_LEVEL_BED_HOMING = _UxGT("XYZ Sıfırlanıyor"); // Homing XYZ + LSTR MSG_LEVEL_BED_WAITING = _UxGT("Başlatmak için tıkla"); // Click to Begin + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Sonraki Nokta"); // Next Point + LSTR MSG_LEVEL_BED_DONE = _UxGT("Seviyeleme Tamam!"); // Leveling Done! + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Ofset Ayarla"); // Set Home Offsets + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Ofset Tamam"); // Offsets Applied + LSTR MSG_PREHEAT_1 = _UxGT("ÖnIsıtma ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = _UxGT("ÖnIsıtma ") PREHEAT_1_LABEL " ~"; // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = _UxGT("ÖnIsıtma ") PREHEAT_1_LABEL _UxGT(" Nozul"); // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = _UxGT("ÖnIsıtma ") PREHEAT_1_LABEL _UxGT(" Nozul ~"); // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_1_ALL = _UxGT("ÖnIsıtma ") PREHEAT_1_LABEL _UxGT(" Tüm"); // Preheat (PREHEAT_1_LABEL) All + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("ÖnIsıtma ") PREHEAT_1_LABEL _UxGT(" Tabla"); // Preheat (PREHEAT_1_LABEL) Bed + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("ÖnIsıtma ") PREHEAT_1_LABEL _UxGT(" Ayar"); // Preheat (PREHEAT_1_LABEL) Conf + LSTR MSG_PREHEAT_M = _UxGT("ÖnIsıtma $"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("ÖnIsıtma $ ~"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("ÖnIsıtma $ Nozul"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("ÖnIsıtma $ Nozul ~"); // Preheat $ End ~ + LSTR MSG_PREHEAT_M_ALL = _UxGT("ÖnIsıtma $ Tüm"); // Preheat $ All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("ÖnIsıtma $ Tabla"); // Preheat $ Bed + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("ÖnIsıtma $ Ayar"); // Preheat $ Conf + LSTR MSG_COOLDOWN = _UxGT("Soğut/(Durdur)"); // Cooldown + LSTR MSG_SWITCH_PS_ON = _UxGT("Gücü Aç"); // Switch Power On + LSTR MSG_SWITCH_PS_OFF = _UxGT("Gücü Kapat"); // Switch Power Off + LSTR MSG_EXTRUDE = _UxGT("Ekstrüzyon"); // Extrude + LSTR MSG_RETRACT = _UxGT("Geri Çek"); // Retract + LSTR MSG_MOVE_AXIS = _UxGT("Eksen Hareketleri"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("Prob ve Seviyeleme"); // Probe and Level + LSTR MSG_BED_LEVELING = _UxGT("Tabla Seviyeleme"); // Bed Leveling + LSTR MSG_LEVEL_BED = _UxGT("Tablayı Seviyele"); // Level Bed + LSTR MSG_MOVE_X = _UxGT("X Hareketi"); // Move X + LSTR MSG_MOVE_Y = _UxGT("Y Hareketi"); // Move Y + LSTR MSG_MOVE_Z = _UxGT("Z Hareketi"); // Move Z + LSTR MSG_MOVE_N = _UxGT("@ Hareketi"); // Move @ + LSTR MSG_MOVE_E = _UxGT("Ekstruder"); // Move Extruder + LSTR MSG_MOVE_EN = _UxGT("Ekstruder *"); // Move * + LSTR MSG_MOVE_N_MM = _UxGT("$mm"); // Move $mm + LSTR MSG_MOVE_N_IN = _UxGT("$in"); // Move $in + LSTR MSG_MOVE_N_DEG = _UxGT("$") LCD_STR_DEGREE; // Move $(LCD_STR_DEGREE) + LSTR MSG_SPEED = _UxGT("Hız"); // Speed + LSTR MSG_MESH_Z_OFFSET = _UxGT("Z Mesafesi"); // Bed Z + LSTR MSG_NOZZLE = _UxGT("Nozul"); // Nozzle + LSTR MSG_NOZZLE_N = _UxGT("Nozul ~"); // Nozzle ~ + LSTR MSG_BED = _UxGT("Tabla"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("Fan Hızı"); // Fan Speed + LSTR MSG_FAN_SPEED_N = _UxGT("Fan Hızı ~"); // Fan Speed ~ + LSTR MSG_FLOW = _UxGT("Akış"); // Flow + LSTR MSG_FLOW_N = _UxGT("Akış ~"); // Flow ~ + LSTR MSG_CONTROL = _UxGT("Kontrol"); // Control + LSTR MSG_AUTOTEMP = _UxGT("Oto. Sıcaklık"); // Autotemp + LSTR MSG_SELECT_E = _UxGT("Seç *"); // Select * + LSTR MSG_ACC = _UxGT("İvme"); // Accel + LSTR MSG_VTRAV_MIN = _UxGT("Min Gezme Hızı"); // Min Travel Speed + LSTR MSG_ACCELERATION = _UxGT("İvme"); // Acceleration + LSTR MSG_AMAX_A = _UxGT("Max ") STR_A _UxGT(" İvmesi"); // Max (STR_A) Accel + LSTR MSG_AMAX_B = _UxGT("Max ") STR_B _UxGT(" İvmesi"); // Max (STR_B) Accel + LSTR MSG_AMAX_C = _UxGT("Max ") STR_C _UxGT(" İvmesi"); // Max (STR_C) Accel + LSTR MSG_AMAX_N = _UxGT("Max @ İvmesi"); // Max @ Accel + LSTR MSG_AMAX_E = _UxGT("Max E İvmesi"); // Max E Accel + LSTR MSG_AMAX_EN = _UxGT("Max * İvmesi"); // Max * Accel + LSTR MSG_A_RETRACT = _UxGT("G.Çekme Hızı"); // Retract Accel + LSTR MSG_A_TRAVEL = _UxGT("Gezinme Hızı"); // Travel Accel + LSTR MSG_STEPS_PER_MM = _UxGT("Adım/mm"); // Steps/mm + LSTR MSG_A_STEPS = STR_A _UxGT(" adım/mm"); // (STR_A) Steps/mm + LSTR MSG_B_STEPS = STR_B _UxGT(" adım/mm"); // (STR_B) Steps/mm + LSTR MSG_C_STEPS = STR_C _UxGT(" adım/mm"); // (STR_C) Steps/mm + LSTR MSG_N_STEPS = _UxGT("@ adım/mm"); // @ steps/mm + LSTR MSG_E_STEPS = _UxGT("E adım/mm"); // E steps/mm + LSTR MSG_EN_STEPS = _UxGT("* adım/mm"); // * Steps/mm + LSTR MSG_TEMPERATURE = _UxGT("Sıcaklık"); // Temperature + LSTR MSG_MOTION = _UxGT("Hareket"); // Motion + LSTR MSG_FILAMENT = _UxGT("Filaman"); // Filament + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("Ekstrüzyon/mm") SUPERSCRIPT_THREE; // E in mm(SUPERSCRIPT_THREE) + LSTR MSG_FILAMENT_DIAM = _UxGT("Filaman Çapı"); // Fil. Dia. + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Filaman Çapı *"); // Fil. Dia. * + LSTR MSG_CONTRAST = _UxGT("LCD Kontrast"); // LCD Contrast + LSTR MSG_STORE_EEPROM = _UxGT("Hafızaya Al"); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("Hafızadan Yükle"); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("Fabrika Ayarları"); // Restore Defaults + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Yenile"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT("Bilgi Ekranı"); // Info Screen + LSTR MSG_PREPARE = _UxGT("Hazırlık"); // Prepare + LSTR MSG_TUNE = _UxGT("Ayar"); // Tune + LSTR MSG_PAUSE_PRINT = _UxGT("Duraklat"); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("Baskıyı Sürdür"); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("Baskıyı Durdur"); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("Medyayı Yazdır"); // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = _UxGT("SD Kart Yok!"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_DWELL = _UxGT("Uyku..."); // Sleep... + LSTR MSG_USERWAIT = _UxGT("Devam için tıkla..."); // Click to Resume... + LSTR MSG_PRINT_ABORTED = _UxGT("Baskı Durduruldu!"); // Print Aborted + LSTR MSG_NO_MOVE = _UxGT("İşlem yok."); // No Move. + LSTR MSG_KILLED = _UxGT("ÇÖKTÜ. "); // KILLED. + LSTR MSG_STOPPED = _UxGT("DURDURULDU. "); // STOPPED. + LSTR MSG_CONTROL_RETRACT = _UxGT("Geri Çek mm"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("GÇ. Değiş mm"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACTF = _UxGT("Geri Çekme V"); // Retract V + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Atlama mm"); // Hop mm + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Geri Çek. mm"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("S Unretr. mm"); // S Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Unretract V"); // Unretract V + LSTR MSG_AUTORETRACT = _UxGT("Oto. Geri Çekme"); // Auto-Retract + LSTR MSG_FILAMENTCHANGE = _UxGT("Filaman Değiştir"); // Change Filament + LSTR MSG_FILAMENTCHANGE_E = _UxGT("Filaman Değiştir *"); // Change * Filament + LSTR MSG_ATTACH_MEDIA = _UxGT("Medyayı Ekle"); // Attach (MEDIA_TYPE_EN) + LSTR MSG_ATTACH_SD = _UxGT("SD Kartı takın"); // Attach SD Card + LSTR MSG_ATTACH_USB = _UxGT("USB Sürücüyü takın"); // Attach USB Drive + LSTR MSG_CHANGE_MEDIA = _UxGT("Medyayı Değiştir"); // Refresh (MEDIA_TYPE_EN) + LSTR MSG_RUN_AUTOFILES = _UxGT("Oto. Başlat"); // Run Autofiles + LSTR MSG_ZPROBE_OUT = _UxGT("Z Prob Tablayı Geçti"); // Z Probe Past Bed + LSTR MSG_BLTOUCH_RESET = _UxGT("Sıfırla"); // Reset + LSTR MSG_ZPROBE_XOFFSET = _UxGT("X Prob Ofseti"); // Probe X Offset + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Y Prob Ofseti"); // Probe Y Offset + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Z Prob Ofseti"); // Probe Z Offset + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("@ Prob Ofseti"); // Probe @ Offset + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Z ayarı adımsal"); // Babystep Probe Z + LSTR MSG_BABYSTEP_X = _UxGT("Miniadım X"); // Babystep X + LSTR MSG_BABYSTEP_Y = _UxGT("Miniadım Y"); // Babystep Y + LSTR MSG_BABYSTEP_Z = _UxGT("Miniadım Z"); // Babystep Z + LSTR MSG_BABYSTEP_N = _UxGT("Miniadım @"); // Babystep @ + LSTR MSG_ENDSTOP_ABORT = _UxGT("Endstop iptal"); // Endstop Abort + LSTR MSG_ERR_HEATING_FAILED = _UxGT("Isınma başarısız"); // Heating Failed + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Hata: ISI AŞIMI"); // Err: REDUNDANT TEMP + LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("ISI SORUNU"); // THERMAL RUNAWAY + LSTR MSG_ERR_MAXTEMP = _UxGT("HATA:MAX.SICAK."); // Err: MAXTEMP + LSTR MSG_ERR_MINTEMP = _UxGT("HATA:MIN.SICAK."); // Err: MINTEMP + LSTR MSG_HALTED = _UxGT("YAZICI DURDURULDU"); // PRINTER HALTED + LSTR MSG_PLEASE_RESET = _UxGT("Lütfen Resetleyin"); // Please Reset + LSTR MSG_HEATING = _UxGT("Isınıyor..."); // Heating... + LSTR MSG_BED_HEATING = _UxGT("Tabla Isınıyor..."); // Bed Heating... + LSTR MSG_DELTA_CALIBRATE = _UxGT("Delta Kalibrasyonu"); // Delta Calibration + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Ayarla X"); // Calibrate X + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Ayarla Y"); // Calibrate Y + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Ayarla Z"); // Calibrate Z + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Ayarla Merkez"); // Calibrate Center + LSTR MSG_INFO_MENU = _UxGT("Yazıcı Hakkında"); // About Printer + LSTR MSG_INFO_PRINTER_MENU = _UxGT("Yazıcı Bilgisi"); // Printer Info + LSTR MSG_INFO_STATS_MENU = _UxGT("İstatistikler"); // Stats + LSTR MSG_INFO_BOARD_MENU = _UxGT("Kontrolcü Bilgisi"); // Board Info + LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Termistörler"); // Thermistors + LSTR MSG_INFO_EXTRUDERS = _UxGT("Ekstruderler"); // Extruders + LSTR MSG_INFO_BAUDRATE = _UxGT("İletişim Hızı"); // Baud + LSTR MSG_INFO_PROTOCOL = _UxGT("Protokol"); // Protocol + LSTR MSG_CASE_LIGHT = _UxGT("Aydınlatma"); // Case Light + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Baskı"); // Prints + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Tamamlanan"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Süre"); // Total + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("En Uzun"); // Longest + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Filaman"); // Extruded + LSTR MSG_INFO_MIN_TEMP = _UxGT("Min Sıc."); // Min Temp + LSTR MSG_INFO_MAX_TEMP = _UxGT("Max Sıc."); // Max Temp + LSTR MSG_INFO_PSU = _UxGT("Güç Kaynağı"); // PSU + LSTR MSG_DRIVE_STRENGTH = _UxGT("Sürücü Gücü"); // Drive Strength + LSTR MSG_DAC_EEPROM_WRITE = _UxGT("DAC EEPROM Yaz"); // DAC EEPROM Write + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Baskıyı sürdür"); // Continue + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Lütfen bekleyiniz...")); // |Please wait... + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Yükle ve bas")); // |Insert and Click + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Çıkartılıyor...")); // |Ejecting... + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Yüklüyor...")); // |Loading... + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Sürdürülüyor...")); // |Resuming... + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Min"); // (LCD_STR_THERMOMETER) Min + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Max"); // (LCD_STR_THERMOMETER) Max + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Çarpan"); // (LCD_STR_THERMOMETER) Fact + LSTR MSG_LCD_ON = _UxGT("Açık"); // On + LSTR MSG_LCD_OFF = _UxGT("Kapalı"); // Off + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("HATALI YAZICI"); // INCORRECT PRINTER + LSTR MSG_DEBUG_MENU = _UxGT("Hata Ayıklama"); // Debug Menu + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Durum Çubuğu Testi"); // Progress Bar Test + LSTR MSG_MOVING = _UxGT("Hareket Ediyor.."); // Moving... + LSTR MSG_FREE_XY = _UxGT("Durdur XY"); // Free XY + LSTR MSG_HOME_FIRST = _UxGT("Önce %s Sıfırla"); // Home %s First + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Isınıyor...")); // |Heating... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Isıtmak için Tıkla")); // |Click to heat + LSTR MSG_YES = _UxGT("EVET"); // YES + LSTR MSG_NO = _UxGT("HAYIR"); // NO + LSTR MSG_BACK = _UxGT("Geri"); // Back + LSTR MSG_MEDIA_ABORTING = _UxGT("Durduruluyor..."); // Aborting... + LSTR MSG_MEDIA_READ_ERROR = _UxGT("Kart Okuma Hatası"); // (MEDIA_TYPE_EN) read error + LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB Çıkarıldı"); // USB device removed + LSTR MSG_USB_FD_USB_FAILED = _UxGT("USB Başlat. Hatası"); // USB start failed + LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Soft Endstops"); // Soft Endstops + LSTR MSG_ADVANCED_SETTINGS = _UxGT("Gelişmiş Ayarlar"); // Advanced Settings + LSTR MSG_CONFIGURATION = _UxGT("Yapılandırma"); // Configuration + LSTR MSG_AUTO_Z_ALIGN = _UxGT("Oto. Z-Hizalama"); // Auto Z-Align + LSTR MSG_Z_FADE_HEIGHT = _UxGT("Kaçınma Yüksekliği"); // Fade Height + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Özel Ön Isıtma"); // Preheat Custom + LSTR MSG_LASER_MENU = _UxGT("Lazer Kontrolü"); // Laser Control + LSTR MSG_LASER_POWER = _UxGT("Lazer Gücü"); // Laser Power + LSTR MSG_SPINDLE_MENU = _UxGT("Spindle Kontrolü"); // Spindle Control + LSTR MSG_SPINDLE_POWER = _UxGT("Spindle Gücü"); // Spindle Pwr + LSTR MSG_SPINDLE_REVERSE = _UxGT("Spindle Geri Yön"); // Spindle Reverse + LSTR MSG_BED_TRAMMING = _UxGT("Tabla Hizalama"); // Bed Tramming + LSTR MSG_NEXT_CORNER = _UxGT("Sonraki Köşe"); // Next Corner + LSTR MSG_MESH_EDITOR = _UxGT("Mesh Editörü"); // Mesh Editor + LSTR MSG_EDIT_MESH = _UxGT("Mesh Düzenle"); // Edit Mesh + LSTR MSG_EDITING_STOPPED = _UxGT("Mesh Düzenleme Durdu"); // Mesh Editing Stopped + LSTR MSG_PROBING_POINT = _UxGT("Prop Noktası"); // Probing Point + LSTR MSG_MESH_X = _UxGT("İndeks X"); // Index X + LSTR MSG_MESH_Y = _UxGT("İndeks Y"); // Index Y + LSTR MSG_MESH_EDIT_Z = _UxGT("Z Değeri"); // Z Value + LSTR MSG_CUSTOM_COMMANDS = _UxGT("Özel Komutlar"); // Custom Commands + LSTR MSG_M48_TEST = _UxGT("M48 Prob Testi"); // M48 Probe Test + LSTR MSG_M48_POINT = _UxGT("M48 Nokta"); // M48 Point + LSTR MSG_M48_DEVIATION = _UxGT("Sapma"); // Deviation + LSTR MSG_IDEX_MENU = _UxGT("IDEX Modu"); // IDEX Mode + LSTR MSG_OFFSETS_MENU = _UxGT("Takım Ofsetleri"); // Tool Offsets + LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Oto-Park"); // Auto-Park + LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Kopyala"); // Duplication + LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Yansıtılmış kopya"); // Mirrored Copy + LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Tam Kontrol"); // Full Control + LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2. nozul Z"); // 2nd Nozzle Z + LSTR MSG_HOTEND_OFFSET_N = _UxGT("2. nozul @"); // 2nd Nozzle @ + LSTR MSG_UBL_DOING_G29 = _UxGT("G29 Çalışıyor"); // Doing G29 + LSTR MSG_UBL_TOOLS = _UxGT("UBL Araçları"); // UBL Tools + LSTR MSG_LCD_TILTING_MESH = _UxGT("Eğim Noktası"); // Tilting Point + LSTR MSG_UBL_MANUAL_MESH = _UxGT("Elle Mesh Oluştur"); // Manually Build Mesh + LSTR MSG_UBL_BC_INSERT = _UxGT("Altlık & Ölçü Ver"); // Place Shim & Measure + LSTR MSG_UBL_BC_INSERT2 = _UxGT("Ölçüm"); // Measure + LSTR MSG_UBL_BC_REMOVE = _UxGT("Tablayı Kaldır & Ölç"); // Remove & Measure Bed + LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Sonrakine Git"); // Moving to next + LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Tabla Sıcaklığı"); // Bed Temp + LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Tabla Sıcaklığı"); // Bed Temp + LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Nozul Sıcaklığı"); // Hotend Temp + LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Nozul Sıcaklığı"); // Hotend Temp + LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Özel Mesh Düzenleme"); // Edit Custom Mesh + LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("İnce Ayar Mesh"); // Fine Tuning Mesh + LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Mesh Düzenleme Tamam"); // Done Editing Mesh + LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Özel Mesh Oluştur"); // Build Custom Mesh + LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Mesh Oluştur"); // Build Mesh + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Mesh Oluştur ($)"); // Build Mesh ($) + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Mesh Doğrulama ($)"); // Validate Mesh ($) + LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Soğuk Mesh Oluştur"); // Build Cold Mesh + LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Mesh Yükseklik Ayarı"); // Adjust Mesh Height + LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Yükseklik miktarı"); // Height Amount + LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Mesh Doğrulama"); // Validate Mesh + LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Özel Mesh Doğrulama"); // Validate Custom Mesh + LSTR MSG_G26_HEATING_BED = _UxGT("G26 Isıtma Tablası"); // G26 Heating Bed + LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 Isıtma Memesi"); // G26 Heating Nozzle + LSTR MSG_G26_MANUAL_PRIME = _UxGT("Manuel çalışma..."); // Manual priming... + LSTR MSG_G26_FIXED_LENGTH = _UxGT("Birincil Sabit Uzunluk"); // Fixed Length Prime + LSTR MSG_G26_PRIME_DONE = _UxGT("Çalışma Tamamlandı"); // Done Priming + LSTR MSG_G26_CANCELED = _UxGT("G26 İptal edildi"); // G26 Canceled + LSTR MSG_G26_LEAVING = _UxGT("Çıkış G26"); // Leaving G26 + LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Tabla Mesh Devam et"); // Continue Bed Mesh + LSTR MSG_UBL_MESH_LEVELING = _UxGT("Mesh Seviyeleme"); // Mesh Leveling + LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-Nokta Seviyeleme"); // 3-Point Leveling + LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Kafes Mesh Seviyeleme"); // Grid Mesh Leveling + LSTR MSG_UBL_MESH_LEVEL = _UxGT("Mesh Seviyesi"); // Level Mesh + LSTR MSG_UBL_SIDE_POINTS = _UxGT("Yan Noktalar"); // Side Points + LSTR MSG_UBL_MAP_TYPE = _UxGT("Haritalama Türü"); // Map Type + LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Mesh Çikis Haritası"); // Output Mesh Map + LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Host için Çıktı"); // Output for Host + LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("CSV için Çıktı"); // Output for CSV + LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Yedekleme Kapalı"); // Off Printer Backup + LSTR MSG_UBL_INFO_UBL = _UxGT("UBL Çıkış Bilgisi"); // Output UBL Info + LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Dolgu Miktarı"); // Fill-in Amount + LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Manuel Dolgu"); // Manual Fill-in + LSTR MSG_UBL_SMART_FILLIN = _UxGT("Akıllı Dolgu"); // Smart Fill-in + LSTR MSG_UBL_FILLIN_MESH = _UxGT("Mesh Dolgu"); // Fill-in Mesh + LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Tumunu Gecersiz Kil"); // Invalidate All + LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Yakini Gecersiz Kil"); // Invalidate Closest + LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Tumunu İnce Ayarla"); // Fine Tune All + LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Yakını İnce Ayarla"); // Fine Tune Closest + LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Mesh Depolama"); // Mesh Storage + LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Bellek Yuvası"); // Memory Slot + LSTR MSG_UBL_LOAD_MESH = _UxGT("Tabla Mesh Yükle"); // Load Bed Mesh + LSTR MSG_UBL_SAVE_MESH = _UxGT("Tabla Mesh Kaydet"); // Save Bed Mesh + LSTR MSG_MESH_LOADED = _UxGT("Mesh %i yüklendi"); // Mesh %i Loaded + LSTR MSG_MESH_SAVED = _UxGT("Mesh %i kayıtlandı"); // Mesh %i Saved + LSTR MSG_UBL_NO_STORAGE = _UxGT("Depolama Yok"); // No Storage + LSTR MSG_UBL_SAVE_ERROR = _UxGT("UBL Kaydetme Hatası"); // UBL Save Error + LSTR MSG_UBL_RESTORE_ERROR = _UxGT("UBL Geri Yükleme Hatası"); // UBL Restore Error + LSTR MSG_UBL_Z_OFFSET = _UxGT("Z-Ofset: "); // Z-Offset: + LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Z-Ofset Durduruldu"); // Z-Offset Stopped + LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("Adım Adım UBL"); // Step-By-Step UBL + LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Soğuk Mesh Oluştur"); // 1. Build Cold Mesh + LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2.Akıllı Dolgu"); // 2. Smart Fill-in + LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Mesh Dogrulama"); // 3. Validate Mesh + LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Tumunu ince Ayarla"); // 4. Fine Tune All + LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Mesh Dogrulama"); // 5. Validate Mesh + LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Tumunu ince Ayarla"); // 6. Fine Tune All + LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Tabla Mesh Kaydet"); // 7. Save Bed Mesh + LSTR MSG_LED_CONTROL = _UxGT("LED Kontrolü"); // LED Control + LSTR MSG_LIGHTS = _UxGT("LEDler"); // Lights + LSTR MSG_LIGHT_N = _UxGT("Işıklar #{"); // Light #{ + LSTR MSG_LED_PRESETS = _UxGT("LED Hazır Ayarları"); // Light Presets + LSTR MSG_SET_LEDS_RED = _UxGT("Kırmızı"); // Red + LSTR MSG_SET_LEDS_ORANGE = _UxGT("Turuncu"); // Orange + LSTR MSG_SET_LEDS_YELLOW = _UxGT("Sarı"); // Yellow + LSTR MSG_SET_LEDS_GREEN = _UxGT("Yeşil"); // Green + LSTR MSG_SET_LEDS_BLUE = _UxGT("Mavi"); // Blue + LSTR MSG_SET_LEDS_INDIGO = _UxGT("Lacivert"); // Indigo + LSTR MSG_SET_LEDS_VIOLET = _UxGT("Menekşe"); // Violet + LSTR MSG_SET_LEDS_WHITE = _UxGT("Beyaz"); // White + LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Varsayılan"); // Default + LSTR MSG_CUSTOM_LEDS = _UxGT("Özel Işıklar"); // Custom Lights + LSTR MSG_INTENSITY_R = _UxGT("Kırmızı Şiddeti"); // Red Intensity + LSTR MSG_INTENSITY_G = _UxGT("Yeşil Şiddeti"); // Green Intensity + LSTR MSG_INTENSITY_B = _UxGT("Mavi Şiddeti"); // Blue Intensity + LSTR MSG_INTENSITY_W = _UxGT("Beyaz Şiddeti"); // White Intensity + LSTR MSG_LED_BRIGHTNESS = _UxGT("Parlaklık"); // Brightness + LSTR MSG_HOTEND_TOO_COLD = _UxGT("Nozul Çok Soğuk"); // Hotend too cold + LSTR MSG_CHAMBER = _UxGT("Kabin"); // Enclosure + LSTR MSG_STORED_FAN_N = _UxGT("Depolanan Fan ~"); // Stored Fan ~ + LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Ekstra Fan Hızı"); // Extra Fan Speed + LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Ekstra Fan Hızı ~"); // Extra Fan Speed ~ + LSTR MSG_PID_AUTOTUNE = _UxGT("PID Kalibrasyonu"); // PID Autotune + LSTR MSG_PID_AUTOTUNE_E = _UxGT("* PID Kalibrasyonu"); // Autotune * PID + LSTR MSG_JERK = _UxGT("Sarsım"); // Jerk + LSTR MSG_VA_JERK = _UxGT("Max ") STR_A _UxGT(" Sarsımı"); // Max (STR_A) Jerk + LSTR MSG_VB_JERK = _UxGT("Max ") STR_B _UxGT(" Sarsımı"); // Max (STR_B) Jerk + LSTR MSG_VC_JERK = _UxGT("Max ") STR_C _UxGT(" Sarsımı"); // Max (STR_C) Jerk + LSTR MSG_VN_JERK = _UxGT("Max @ Sarsımı"); // Max @ Jerk + LSTR MSG_VE_JERK = _UxGT("Max E Sarsımı"); // Max E Jerk + LSTR MSG_JUNCTION_DEVIATION = _UxGT("Jonksiyon Sapması"); // Junction Dev + LSTR MSG_MAX_SPEED = _UxGT("Max Hız (mm/s)"); // Max Speed (mm/s) + LSTR MSG_VMAX_A = _UxGT("Max ") STR_A _UxGT(" Hızı"); // Max (STR_A) Speed + LSTR MSG_VMAX_B = _UxGT("Max ") STR_B _UxGT(" Hızı"); // Max (STR_B) Speed + LSTR MSG_VMAX_C = _UxGT("Max ") STR_C _UxGT(" Hızı"); // Max (STR_C) Speed + LSTR MSG_VMAX_N = _UxGT("Max @ Hızı"); // Max @ Speed + LSTR MSG_VMAX_E = _UxGT("Max E Hızı"); // Max E Speed + LSTR MSG_VMAX_EN = _UxGT("Max * Hızı"); // Max * Speed + LSTR MSG_VMIN = _UxGT("Min Hız"); // Min Velocity + LSTR MSG_FILAMENT_UNLOAD = _UxGT("Çıkart mm"); // Unload mm + LSTR MSG_FILAMENT_LOAD = _UxGT("Yükle mm"); // Load mm + LSTR MSG_ADVANCE_K = _UxGT("K. Değeri"); // Advance K + LSTR MSG_ADVANCE_K_E = _UxGT("K. Değeri *"); // Advance K * + LSTR MSG_INIT_EEPROM = _UxGT("EEPROM'u başlat"); // Initialize EEPROM + LSTR MSG_MEDIA_UPDATE = _UxGT("Medyayı Güncelle"); // (MEDIA_TYPE_EN) Update + LSTR MSG_RESET_PRINTER = _UxGT("Yazıcıyı Resetle"); // Reset Printer + LSTR MSG_START_PRINT = _UxGT("Yazdırmayı Başlat"); // Start Print + LSTR MSG_BUTTON_NEXT = _UxGT("İleri"); // Next + LSTR MSG_BUTTON_INIT = _UxGT("Başlat"); // Init + LSTR MSG_BUTTON_STOP = _UxGT("Durdur"); // Stop + LSTR MSG_BUTTON_PRINT = _UxGT("Yazdır"); // Print + LSTR MSG_BUTTON_RESET = _UxGT("Resetle"); // Reset + LSTR MSG_BUTTON_CANCEL = _UxGT("İptal"); // Cancel + LSTR MSG_BUTTON_DONE = _UxGT("Tamamlandı"); // Done + LSTR MSG_BUTTON_BACK = _UxGT("Geri"); // Back + LSTR MSG_BUTTON_PROCEED = _UxGT("Devam Et"); // Proceed + LSTR MSG_PRINTING_OBJECT = _UxGT("Nesneyi Yazdır"); // Print Obj + LSTR MSG_CANCEL_OBJECT = _UxGT("Nesneyi İptal Et"); // Cancel Obj + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Nesneyi İptal Et {"); // Cancel Obj { + LSTR MSG_OUTAGE_RECOVERY = _UxGT("Kesinti Kurtarma"); // Power Outage + LSTR MSG_PRINT_PAUSED = _UxGT("Baskı Duraklatıldı"); // Print Paused + LSTR MSG_PRINTING = _UxGT("Baskı Yapılıyor..."); // Printing... + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V"); // S UnRet V + LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("G.Çekme Boyu"); // Swap Length + LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Tasfiye uzunluğu"); // Purge Length + LSTR MSG_TOOL_CHANGE = _UxGT("Takım Değişimi"); // Tool Change + LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Z Yükselt"); // Z Raise + LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Birincil Hız"); // Prime Speed + LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Geri Çekme Hızı"); // Retract Speed + LSTR MSG_NOZZLE_STANDBY = _UxGT("Nozul Beklemede"); // Nozzle Standby + LSTR MSG_FILAMENTLOAD = _UxGT("Filaman Yükle"); // Load Filament + LSTR MSG_FILAMENTLOAD_E = _UxGT("Filaman Yükle *"); // Load * Filament + LSTR MSG_FILAMENTUNLOAD = _UxGT("Filaman Çıkart"); // Unload Filament + LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Filaman Çıkart *"); // Unload * Filament + LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Tümünü Çıkart"); // Unload All + LSTR MSG_RELEASE_MEDIA = _UxGT("Medyayı Çıkart"); // Release (MEDIA_TYPE_EN) + LSTR MSG_SKEW_FACTOR = _UxGT("Çarpıklık Faktörü"); // Skew Factor + LSTR MSG_BLTOUCH = _UxGT("BLTouch"); // BLTouch + LSTR MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch K. Test"); // Self-Test + LSTR MSG_BLTOUCH_STOW = _UxGT("Kapat"); // Stow + LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Aç"); // Deploy + LSTR MSG_BLTOUCH_SW_MODE = _UxGT("SW-Modu"); // SW-Mode + LSTR MSG_BLTOUCH_5V_MODE = _UxGT("5V-Modu"); // 5V-Mode + LSTR MSG_BLTOUCH_OD_MODE = _UxGT("OD-Modu"); // OD-Mode + LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("Mode-Store"); // Mode-Store + LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("BLTouch 5V Ayarla"); // Set BLTouch to 5V + LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("BLTouch OD Ayarla"); // Set BLTouch to OD + LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Drenaj Raporu"); // Report Drain + LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("TEHLIKE: Kötü ayarlar zarar verebilir! Yine de devam edilsin mi?"); // DANGER: Bad settings can cause damage! Proceed anyway? + LSTR MSG_TOUCHMI_PROBE = _UxGT("TouchMI"); // TouchMI + LSTR MSG_TOUCHMI_INIT = _UxGT("TouchMI'yi Başlat"); // Init TouchMI + LSTR MSG_TOUCHMI_ZTEST = _UxGT("Z Ofset Testi"); // Z Offset Test + LSTR MSG_TOUCHMI_SAVE = _UxGT("Kaydet"); // Save + LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("TouchMI Aç"); // Deploy TouchMI + LSTR MSG_MANUAL_DEPLOY = _UxGT("Z-Probe Aç"); // Deploy Z-Probe + LSTR MSG_MANUAL_STOW = _UxGT("Z-Probe Kapat"); // Stow Z-Probe + LSTR MSG_BABYSTEP_TOTAL = _UxGT("Toplam"); // Total + LSTR MSG_COOLING = _UxGT("Soğuyor..."); // Cooling... + LSTR MSG_BED_COOLING = _UxGT("Tabla Soğuyor..."); // Bed Cooling... + LSTR MSG_CHAMBER_HEATING = _UxGT("Kabin Isınıyor..."); // Chamber Heating... + LSTR MSG_CHAMBER_COOLING = _UxGT("Kabin Soğuyor..."); // Chamber Cooling... + LSTR MSG_DELTA_SETTINGS = _UxGT("Delta Ayarları"); // Delta Settings + LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Oto Kalibrasyon"); // Auto Calibration + LSTR MSG_DELTA_DIAG_ROD = _UxGT("Çapral Mil"); // Diag Rod + LSTR MSG_DELTA_HEIGHT = _UxGT("Yükseklik"); // Height + LSTR MSG_DELTA_RADIUS = _UxGT("Yarıçap"); // Radius + LSTR MSG_3POINT_LEVELING = _UxGT("3-Nokta Seviyeleme"); // 3-Point Leveling + LSTR MSG_LINEAR_LEVELING = _UxGT("Doğrusal Seviyeleme"); // Linear Leveling + LSTR MSG_BILINEAR_LEVELING = _UxGT("İki Yönlü Doğ. Hiza."); // Bilinear Leveling + LSTR MSG_UBL_LEVELING = _UxGT("Birleşik Tabla Hiza."); // Unified Bed Leveling + LSTR MSG_MESH_LEVELING = _UxGT("Mesh Seviyeleme"); // Mesh Leveling + LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Kaçak İzleme: KAPALI"); // Runaway Watch: OFF + LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Kaçak İzleme: AÇIK"); // Runaway Watch: ON + LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Işık Parlaklğı"); // Light Brightness + LSTR MSG_DAC_PERCENT_N = _UxGT("@ Sürücü %"); // @ Driver % + LSTR MSG_ERROR_TMC = _UxGT("TMC BAĞLANTI HATASI"); // TMC CONNECTION ERROR + LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("FILAMAN DEGISTIR"); // FILAMENT CHANGE + LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("BASKI DURAKLATILDI"); // PRINT PAUSED + LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("FILAMAN YüKLE"); // LOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("FILAMAN ÇIKART"); // UNLOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("Seçenekler:"); // RESUME OPTIONS: + LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Daha Fazla Temizle"); // Purge more + LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Nozul: "); // Nozzle: + LSTR MSG_RUNOUT_SENSOR = _UxGT("Fil. Sensörü"); // Runout Sensor + LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("Aşınma Farkı mm"); // Runout Dist mm + LSTR MSG_KILL_HOMING_FAILED = _UxGT("Sıfırlama Başarısız"); // Homing Failed + LSTR MSG_LCD_PROBING_FAILED = _UxGT("Probing Başarısız"); // Probing Failed + LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("FILAMAN SEÇ"); // CHOOSE FILAMENT + LSTR MSG_MMU2_MENU = _UxGT("MMU"); // MMU + LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("MMU Yaz. Güncelle!"); // Update MMU Firmware! + LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU Dikkat Gerektirir."); // MMU Needs Attention. + LSTR MSG_MMU2_RESUME = _UxGT("Yaz. Devam Et"); // Resume + LSTR MSG_MMU2_RESUMING = _UxGT("Sürdürülüyor..."); // MMU Resuming... + LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("Filaman Yükle"); // Load + LSTR MSG_MMU2_LOAD_ALL = _UxGT("Tümünü Yükle"); // Load All + LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("Nozula Yükle"); // Load to Nozzle + LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("Filaman Çıkart"); // Eject + LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("Filaman Çıkart ~"); // Eject ~ + LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("Filamenti Boşalt"); // Unload + LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("%i Filaman Yükle..."); // Filament %i Load... + LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Filaman Çek..."); // Filament %i Eject... + LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Filaman Boşalt...."); // Filament %i Unload... + LSTR MSG_MMU2_ALL = _UxGT("Tümü"); // All + LSTR MSG_MMU2_FILAMENT_N = _UxGT("Filaman ~"); // Filament ~ + LSTR MSG_MMU2_RESET = _UxGT("MMU Resetle"); // Reset MMU + LSTR MSG_MMU2_RESETTING = _UxGT("MMU Resetleniyor..."); // Resetting... + LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("MMU2 Eject Recover"); // Eject Recover + LSTR MSG_MIX = _UxGT("Karışım"); // Mix + LSTR MSG_MIX_COMPONENT_N = _UxGT("Bileşen {"); // Component { + LSTR MSG_MIXER = _UxGT("Karıştırıcı"); // Mixer + LSTR MSG_GRADIENT = _UxGT("Gradyan"); // Gradient + LSTR MSG_FULL_GRADIENT = _UxGT("Tam Gradyan"); // Full Gradient + LSTR MSG_TOGGLE_MIX = _UxGT("Karışım Geçişi"); // Toggle Mix + LSTR MSG_CYCLE_MIX = _UxGT("Döngü Karışımı"); // Cycle Mix + LSTR MSG_GRADIENT_MIX = _UxGT("Gradyan Karışımı"); // Gradient Mix + LSTR MSG_REVERSE_GRADIENT = _UxGT("Ters Gradyan"); // Reverse Gradient + LSTR MSG_ACTIVE_VTOOL = _UxGT("Aktif V-tool"); // Active V-tool + LSTR MSG_START_VTOOL = _UxGT("Başlat V-tool"); // Start V-tool + LSTR MSG_END_VTOOL = _UxGT(" Bitir V-tool"); // End V-tool + LSTR MSG_GRADIENT_ALIAS = _UxGT("Alias V-tool"); // Alias V-tool + LSTR MSG_RESET_VTOOLS = _UxGT("Reset V-tools"); // Reset V-tools + LSTR MSG_COMMIT_VTOOL = _UxGT("V-tool Karışıö Yap"); // Commit V-tool Mix + LSTR MSG_VTOOLS_RESET = _UxGT("V-tools Resetlendi"); // V-tools Were Reset + LSTR MSG_START_Z = _UxGT("Başlat Z:"); // Start Z: + LSTR MSG_END_Z = _UxGT(" Bitir Z:"); // End Z: + LSTR MSG_GAMES = _UxGT("Oyunlar"); // Games + LSTR MSG_BRICKOUT = _UxGT("Brickout"); // Brickout + LSTR MSG_INVADERS = _UxGT("Invaders"); // Invaders + LSTR MSG_SNAKE = _UxGT("Sn4k3"); // Sn4k3 + LSTR MSG_MAZE = _UxGT("Maze"); // Maze + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Sürdürmek İçin Tıkla")); // |Click to continue + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Park Ediliyor...")); // |Parking... + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Temizleniyor...")); // |Purging... + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Bitirmek için Tıkla")); // |Click to finish + LSTR MSG_TMC_DRIVERS = _UxGT("TMC Sürücüleri"); // TMC Drivers + LSTR MSG_TMC_CURRENT = _UxGT("Sürücü Akımı"); // Driver Current + LSTR MSG_TMC_HYBRID_THRS = _UxGT("Hibrit Eşiği"); // Hybrid Threshold + LSTR MSG_TMC_HOMING_THRS = _UxGT("Sensörsüz Sıfırlama"); // Sensorless Homing + LSTR MSG_TMC_STEPPING_MODE = _UxGT("Adım Modu"); // Stepping Mode + LSTR MSG_TMC_STEALTHCHOP = _UxGT("StealthChop"); // StealthChop + LSTR MSG_SERVICE_RESET = _UxGT("Resetle"); // Reset + LSTR MSG_SERVICE_IN = _UxGT(" içinde:"); // in: + LSTR MSG_BACKLASH = _UxGT("Ters Tepki"); // Backlash + LSTR MSG_BACKLASH_CORRECTION = _UxGT("Düzeltme"); // Correction + LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Yumuşatma"); // Smoothing + LSTR MSG_HIGH = _UxGT("YÜKSEK"); // HIGH + LSTR MSG_LOW = _UxGT("DÜŞÜK"); // LOW + LSTR MSG_ERROR = _UxGT("Hata"); // Error + LSTR MSG_MEDIA_INIT_FAIL = _UxGT("SD K. Başlatma Hatası"); // (MEDIA_TYPE_EN) Init Fail + LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Subcall Overflow"); // Subcall Overflow + LSTR MSG_AUTO_HOME_N = _UxGT("@ Sıfırla"); // Home @ + LSTR MSG_FILAMENT_SET = _UxGT("Filament Ayarları"); // Filament Settings + LSTR MSG_FILAMENT_MAN = _UxGT("Filament Yönetimi"); // Filament Management + LSTR MSG_MANUAL_LEVELING = _UxGT("Manuel Seviyeleme"); // Manual Leveling + LSTR MSG_TRAM_FL = _UxGT("Sol Ön"); // Front Left + LSTR MSG_TRAM_FR = _UxGT("Ön Sağ"); // Front Right + LSTR MSG_TRAM_C = _UxGT("Orta"); // Center + LSTR MSG_TRAM_BL = _UxGT("Arka Sol"); // Back Left + LSTR MSG_TRAM_BR = _UxGT("Arka Sağ"); // Back Right + LSTR MSG_MANUAL_MESH = _UxGT("Manuel Mesh"); // Manual Mesh + LSTR MSG_AUTO_MESH = _UxGT("Oto Mesh Oluştur"); // Auto Build Mesh + LSTR MSG_ITERATION = _UxGT("G34 Yinelemesi: %i"); // G34 Iteration: %i + LSTR MSG_DECREASING_ACCURACY = _UxGT("Doğruluk Düşüyor!"); // Accuracy Decreasing! + LSTR MSG_ACCURACY_ACHIEVED = _UxGT("Doğruluk Sağlandı"); // Accuracy Achieved + LSTR MSG_HOME_OFFSET_X = _UxGT("X Ofset Sıfırla"); // Home Offset X + LSTR MSG_HOME_OFFSET_Y = _UxGT("Y Ofset Sıfırla"); // Home Offset Y + LSTR MSG_HOME_OFFSET_Z = _UxGT("Z Ofset Sıfırla"); // Home Offset Z + LSTR MSG_TRAMMING_WIZARD = _UxGT("Hizalama Sihirbazı"); // Tramming Wizard + LSTR MSG_SELECT_ORIGIN = _UxGT("Başlangıç Seç"); // Select Origin + LSTR MSG_LAST_VALUE_SP = _UxGT("Son değer "); // Last value + LSTR MSG_CUTTER_FREQUENCY = _UxGT("Frekans"); // Frequency + LSTR MSG_LASER_TOGGLE = _UxGT("Lazer Değiştir"); // Toggle Laser + LSTR MSG_LASER_EVAC_TOGGLE = _UxGT("Üfleyici Değiştir"); // Toggle Blower + LSTR MSG_LASER_ASSIST_TOGGLE = _UxGT("Hava Desteği"); // Air Assist + LSTR MSG_LASER_PULSE_MS = _UxGT("Test Darbesi ms"); // Test Pulse ms + LSTR MSG_LASER_FIRE_PULSE = _UxGT("Atış Darbe"); // Fire Pulse + LSTR MSG_FLOWMETER_FAULT = _UxGT("Soğutucu Akış Hatası"); // Coolant Flow Fault + LSTR MSG_SPINDLE_TOGGLE = _UxGT("Spindle Değiştir"); // Toggle Spindle + LSTR MSG_SPINDLE_EVAC_TOGGLE = _UxGT("Vakum Değiştir"); // Toggle Vacuum + LSTR MSG_SPINDLE_FORWARD = _UxGT("Spindle İleri Yön"); // Spindle Forward + LSTR MSG_BED_TRAMMING_MANUAL = _UxGT("Manuel Hizalama"); // Manual Tramming + LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Prob tetiklenene kadar tablayı ayarlayın."); // Adjust bed until the probe triggers. + LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Köşeler tolerans dahilinde. Tabla hizalandı."); // Corners within tolerance. Bed trammed. + LSTR MSG_BED_TRAMMING_GOOD_POINTS = _UxGT("İyi Noktalar: "); // Good Points: + LSTR MSG_BED_TRAMMING_LAST_Z = _UxGT("Son Z: "); // Last Z: + LSTR MSG_MESH_VIEWER = _UxGT("Mesh görüntüleyici"); // Mesh Viewer + LSTR MSG_MESH_VIEW = _UxGT("Mesh Göster"); // View Mesh + LSTR MSG_NO_VALID_MESH = _UxGT("Geçerli Mesh yok"); // No valid mesh + LSTR MSG_ACTIVATE_MESH = _UxGT("Seviyeleme Aç"); // Activate Leveling + LSTR MSG_MESH_INSET = _UxGT("Mesh Inset"); // Mesh Inset + LSTR MSG_MESH_MIN_X = _UxGT("Mesh X Minimum"); // Mesh X Minimum + LSTR MSG_MESH_MAX_X = _UxGT("Mesh X Maximum"); // Mesh X Maximum + LSTR MSG_MESH_MIN_Y = _UxGT("Mesh Y Minimum"); // Mesh Y Minimum + LSTR MSG_MESH_MAX_Y = _UxGT("Mesh Y Maximum"); // Mesh Y Maximum + LSTR MSG_MESH_AMAX = _UxGT("Alanı Büyüt"); // Maximize Area + LSTR MSG_MESH_CENTER = _UxGT("Merkez Alan"); // Center Area + LSTR MSG_MESH_CANCEL = _UxGT("Mesh iptal edildi"); // Mesh cancelled + LSTR MSG_M48_OUT_OF_BOUNDS = _UxGT("Sınır dışı araştırma"); // Probe out of bounds + LSTR MSG_IDEX_DUPE_GAP = _UxGT("Yinelenen X-Boşluğu"); // Duplicate X-Gap + LSTR MSG_UBL_TILT_MESH = _UxGT("Eğimli Mesh"); // Tilt Mesh + LSTR MSG_UBL_TILTING_GRID = _UxGT("Eğimli Izgara Boyutu"); // Tilting Grid Size + LSTR MSG_UBL_MESH_TILTED = _UxGT("Mesh Eğildi"); // Mesh Tilted + LSTR MSG_UBL_MESH_WIZARD = _UxGT("UBL Mesh Sihirbazı"); // UBL Mesh Wizard + LSTR MSG_UBL_MESH_FILLED = _UxGT("Eksikler Dolduruldu"); // Missing Points Filled + LSTR MSG_UBL_MESH_INVALID = _UxGT("Geçersiz Mesh"); // Invalid Mesh + LSTR MSG_UBL_INVALID_SLOT = _UxGT("Önce Mesh Yuvası Seç"); // First Select a Mesh Slot + LSTR MSG_LED_CHANNEL_N = _UxGT("Kanal {"); // Channel { + LSTR MSG_NEO2_PRESETS = _UxGT("Işık #2 Ön Ayarları"); // Light #2 Presets + LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Parlaklık"); // Brightness + LSTR MSG_NOZZLE_PARKED = _UxGT("Nozul Park Edildi"); // Nozzle Parked + LSTR MSG_COOLER = _UxGT("Lazer Soğutucu"); // Laser Coolant + LSTR MSG_COOLER_TOGGLE = _UxGT("Soğutucuyu Değiştir"); // Toggle Cooler + LSTR MSG_FLOWMETER_SAFETY = _UxGT("Akış Güvenliği"); // Flow Safety + LSTR MSG_LASER = _UxGT("Lazer"); // Laser + LSTR MSG_CONTROLLER_FAN = _UxGT("Sistem Fan Kontrol"); // Controller Fan + LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("Rölanti Hızı"); // Idle Speed + LSTR MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("Otomatik Mod"); // Auto Mode + LSTR MSG_CONTROLLER_FAN_SPEED = _UxGT("Aktif Hız"); // Active Speed + LSTR MSG_CONTROLLER_FAN_DURATION = _UxGT("Rölanti Periyodu"); // Idle Period + LSTR MSG_PID_CYCLE = _UxGT("PID Döngüleri"); // PID Cycles + LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("PID ayarı yapıldı"); // PID tuning done + LSTR MSG_PID_AUTOTUNE_FAILED = _UxGT("Kalibrasyon başarısız!"); // Autotune failed! + LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Kalibrasyon başarısız! Kötü ekstruder."); // Autotune failed! Bad extruder. + LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Kalibrasyon başarısız! Sıcaklık çok yüksek."); // Autotune failed! Temperature too high. + LSTR MSG_PID_TIMEOUT = _UxGT("Kalibrasyon başarısız! Zaman aşımı."); // Autotune failed! Timeout. + LSTR MSG_MPC_MEASURING_AMBIENT = _UxGT("Isı kaybı testi"); // Testing heat loss + LSTR MSG_MPC_AUTOTUNE = _UxGT("MPC Kalibrasyonu"); // MPC Autotune + LSTR MSG_MPC_EDIT = _UxGT("* MPC Düzenle"); // Edit * MPC + LSTR MSG_MPC_POWER_E = _UxGT("* Gücü"); // Power * + LSTR MSG_MPC_BLOCK_HEAT_CAPACITY_E = _UxGT("Isı Kap. *"); // Heat Cap. * + LSTR MSG_SENSOR_RESPONSIVENESS_E = _UxGT("Sensör Has. *"); // Sensor Resp. * + LSTR MSG_MPC_AMBIENT_XFER_COEFF_E = _UxGT("Ortam Ka. *"); // Ambient Co. * + LSTR MSG_MPC_AMBIENT_XFER_COEFF_FAN_E = _UxGT("Fan kats. *"); // Fan coeff. * + LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("XY Frek. Sınırı"); // XY Freq Limit + LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("Min FR Factörü"); // Min FR Factor + LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("E Limit in mm") SUPERSCRIPT_THREE; // E Limit in mm(SUPERSCRIPT_THREE) + LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("E Limit *"); // E Limit * + LSTR MSG_BRIGHTNESS = _UxGT("LCD Parlaklığı"); // LCD Brightness + LSTR MSG_SCREEN_TIMEOUT = _UxGT("LCD Zaman Aşımı (m)"); // LCD Timeout (m) + LSTR MSG_BRIGHTNESS_OFF = _UxGT("Arka Işık Kapalı"); // Backlight Off + LSTR MSG_ERR_EEPROM_CRC = _UxGT("Hata: EEPROM CRC"); // Err: EEPROM CRC + LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Hata: EEPROM Boyutu"); // Err: EEPROM Size + LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Hata: EEPROM Sürümü"); // Err: EEPROM Version + LSTR MSG_SETTINGS_STORED = _UxGT("Ayarlar Kaydedildi"); // Settings Stored + LSTR MSG_INFO_MACHINENAME = _UxGT("Makine Adı"); // Machine Name + LSTR MSG_INFO_SIZE = _UxGT("Boyut"); // Size + LSTR MSG_INFO_FWVERSION = _UxGT("Yazılım Sürümü"); // Firmware Version + LSTR MSG_INFO_BUILD = _UxGT("Tarih & Saat Oluştur"); // Build Info + LSTR MSG_POWER_MONITOR = _UxGT("Güç monitörü"); // Power monitor + LSTR MSG_CURRENT = _UxGT("Akım"); // Current + LSTR MSG_VOLTAGE = _UxGT("Voltaj"); // Voltage + LSTR MSG_POWER = _UxGT("Güç"); // Power + LSTR MSG_BUTTON_IGNORE = _UxGT("Yoksay"); // Ignore + LSTR MSG_BUTTON_CONFIRM = _UxGT("Onayla"); // Confirm + LSTR MSG_BUTTON_CONTINUE = _UxGT("Sürdür"); // Continue + LSTR MSG_BUTTON_SKIP = _UxGT("Atla"); // Skip + LSTR MSG_BUTTON_INFO = _UxGT("Bilgi"); // Info + LSTR MSG_BUTTON_LEVEL = _UxGT("Seviye"); // Level + LSTR MSG_BUTTON_PAUSE = _UxGT("Duraklat"); // Pause + LSTR MSG_BUTTON_RESUME = _UxGT("Devam Et"); // Resume + LSTR MSG_BUTTON_ADVANCED = _UxGT("Gelişmiş"); // Advanced + LSTR MSG_BUTTON_SAVE = _UxGT("Kaydet"); // Save + LSTR MSG_BUTTON_PURGE = _UxGT("Temizle"); // Purge + LSTR MSG_PAUSING = _UxGT("Duraklatılıyor..."); // Pausing... + LSTR MSG_ADVANCED_PAUSE = _UxGT("Gelişmiş Duraklatma"); // Advanced Pause + LSTR MSG_HOST_START_PRINT = _UxGT("Host Başlat"); // Host Start + LSTR MSG_END_LOOPS = _UxGT("Son Döngüler"); // End Loops + LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("İşe Devam Et"); // Continue Job + LSTR MSG_STOPPING = _UxGT("Durduruluyor..."); // Stopping... + LSTR MSG_REMAINING_TIME = _UxGT("Kalan"); // Remaining + LSTR MSG_PRINT_DONE = _UxGT("Yazdırma Bitti"); // Print Done + LSTR MSG_PRINTER_KILLED = _UxGT("Yazıcı çöktü!"); // Printer killed! + LSTR MSG_TURN_OFF = _UxGT("Şimdi kapat"); // Turn off now + LSTR MSG_FWRETRACT = _UxGT("Yazılım Geri Çekme"); // Firmware Retract + LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Ekstra Değiştir"); // Swap Extra + LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Kafa Park"); // Park Head + LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Kurtarma Hızı"); // Recover Speed + LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Fan Hızı"); // Fan Speed + LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Fan Süresi"); // Fan Time + LSTR MSG_TOOL_MIGRATION_ON = _UxGT("Otomatik AÇIK"); // Auto ON + LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("Otomatik KAPALI"); // Auto OFF + LSTR MSG_TOOL_MIGRATION = _UxGT("Takım Taşıma"); // Tool Migration + LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("Otomatik-taşıma"); // Auto-migration + LSTR MSG_TOOL_MIGRATION_END = _UxGT("Son Ekstruder"); // Last Extruder + LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("* konumuna taşı"); // Migrate to * + LSTR MSG_BLTOUCH_SPEED_MODE = _UxGT("Yüksek Hız"); // High Speed + LSTR MSG_ZPROBE_SETTINGS = _UxGT("Prob Ayarları"); // Probe Settings + LSTR MSG_ZPROBE_OFFSETS = _UxGT("Prob Ofsetleri"); // Probe Offsets + LSTR MSG_ZPROBE_MARGIN = _UxGT("Prob Payı"); // Probe Margin + LSTR MSG_Z_FEED_RATE = _UxGT("Z İlerleme Hızı"); // Z Feedrate + LSTR MSG_ENABLE_HS_MODE = _UxGT("HS modunu aç"); // Enable HS mode + LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Nozülü Tablaya Taşı"); // Move Nozzle to Bed + LSTR MSG_ERR_TEMP_MALFUNCTION = _UxGT("SICAKLIK ARIZASI"); // TEMP MALFUNCTION + LSTR MSG_ERR_COOLING_FAILED = _UxGT("Soğutma Başarısız"); // Cooling Failed + LSTR MSG_PLEASE_WAIT = _UxGT("Lütfen bekleyin..."); // Please wait... + LSTR MSG_PREHEATING = _UxGT("ön ısıtma..."); // Preheating... + LSTR MSG_PROBE_HEATING = _UxGT("Prob ısınıyor..."); // Probe Heating... + LSTR MSG_PROBE_COOLING = _UxGT("Prob Soğuyor..."); // Probe Cooling... + LSTR MSG_LASER_COOLING = _UxGT("Lazer Soğuyor..."); // Laser Cooling... + LSTR MSG_MESH_DONE = _UxGT("Mesh sondalama tamam"); // Mesh probing done + LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Hotend Boşta Zamn Aş"); // Hotend Idle Timeout + LSTR MSG_FAN_SPEED_FAULT = _UxGT("Fan hızı hatası"); // Fan speed fault + LSTR MSG_COLORS_GET = _UxGT("Renk Al"); // Get Color + LSTR MSG_COLORS_SELECT = _UxGT("Renkleri Seç"); // Select Colors + LSTR MSG_COLORS_APPLIED = _UxGT("Uygulanan renkler"); // Colors applied + LSTR MSG_COLORS_RED = _UxGT("Kırmızı"); // Red + LSTR MSG_COLORS_GREEN = _UxGT("Yeşil"); // Green + LSTR MSG_COLORS_BLUE = _UxGT("Mavi"); // Blue + LSTR MSG_COLORS_WHITE = _UxGT("Beyaz"); // White + LSTR MSG_UI_LANGUAGE = _UxGT("UI Dili"); // UI Language + LSTR MSG_SOUND_ENABLE = _UxGT("Sesi etkinleştir"); // Enable sound + LSTR MSG_LOCKSCREEN = _UxGT("Kilit Ekranı"); // Lock Screen + LSTR MSG_LOCKSCREEN_LOCKED = _UxGT("Yazıcı Kilitlendi,"); // Printer is Locked, + LSTR MSG_LOCKSCREEN_UNLOCK = _UxGT("Açmak için kaydırın."); // Scroll to unlock. + LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Y.Başlatma bekleyin."); // Please wait for reboot. + LSTR MSG_PLEASE_PREHEAT = _UxGT("Ön Isıtma Lütfen"); // Please Preheat + LSTR MSG_FILAMENT_CHANGE_PURGE_CONTINUE = _UxGT("Temizle veya Devam?"); // Purge or Continue? + LSTR MSG_EXTRUDER_MIN_TEMP = _UxGT("Ekstruder Min Isı"); // Extruder Min Temp. + LSTR MSG_FANCHECK = _UxGT("Fan Takosu Kontrolü"); // Fan Tacho Check + LSTR MSG_BAD_PAGE = _UxGT("Hatalı sayfa dizini"); // Bad page index + LSTR MSG_BAD_PAGE_SPEED = _UxGT("Kötü sayfa hızı"); // Bad page speed + LSTR MSG_EDIT_PASSWORD = _UxGT("Şifreyi Düzenle"); // Edit Password + LSTR MSG_LOGIN_REQUIRED = _UxGT("Giriş Gerekli"); // Login Required + LSTR MSG_PASSWORD_SETTINGS = _UxGT("Şifre Ayarları"); // Password Settings + LSTR MSG_ENTER_DIGIT = _UxGT("Rakam girin"); // Enter Digit + LSTR MSG_CHANGE_PASSWORD = _UxGT("Şifre Belirle/Düzenle"); // Set/Edit Password + LSTR MSG_REMOVE_PASSWORD = _UxGT("Şifre Kaldır"); // Remove Password + LSTR MSG_PASSWORD_SET = _UxGT("Şifre "); // Password is + LSTR MSG_START_OVER = _UxGT("Yeniden Başla"); // Start Over + LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Kaydetmeyi Unutma!"); // Remember to Save! + LSTR MSG_PASSWORD_REMOVED = _UxGT("Şifre Kaldırıldı"); // Password Removed + LSTR MSG_LEVEL_X_AXIS = _UxGT("Seviye X Ekseni"); // Level X Axis + LSTR MSG_AUTO_CALIBRATE = _UxGT("Otomatik Kalibre Et"); // Auto Calibrate + LSTR MSG_FTDI_HEATER_TIMEOUT = _UxGT("Boşta kalma zaman aşımı, sıcaklık düştü. Yeniden ısıtmak ve tekrar devam etmek için için Tamam'a basın."); // Idle timeout, temperature decreased. Press Okay to reheat and again to resume. + LSTR MSG_HEATER_TIMEOUT = _UxGT("Isıtıcı Zaman Aşımı"); // Heater Timeout + LSTR MSG_REHEAT = _UxGT("Yeniden ısıt"); // Reheat + LSTR MSG_REHEATING = _UxGT("Yeniden ısıtılıyor..."); // Reheating... + LSTR MSG_REHEATDONE = _UxGT("Y. Isıtma Tamam"); // Reheat Done + LSTR MSG_PROBE_WIZARD = _UxGT("Z Prob Sihirbazı"); // Z Probe Wizard + LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Z Referansını Tarama"); // Probing Z Reference + LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Prob Konumuna Geçme"); // Moving to Probing Pos + LSTR MSG_XATC = _UxGT("X-Twist Sihirbazı"); // X-Twist Wizard + LSTR MSG_XATC_DONE = _UxGT("X-Twist Sihirbazı Bitti!"); // X-Twist Wizard Done! + LSTR MSG_XATC_UPDATE_Z_OFFSET = _UxGT("Prob Z-Offset güncelle "); // Update Z-Offset to + LSTR MSG_SOUND = _UxGT("Ses"); // Sound + LSTR MSG_TOP_LEFT = _UxGT("Üst Sol"); // Touch Top Left + LSTR MSG_BOTTOM_LEFT = _UxGT("Alt Sol"); // Touch Bottom Left + LSTR MSG_TOP_RIGHT = _UxGT("Üst Sağ"); // Touch Top Right + LSTR MSG_BOTTOM_RIGHT = _UxGT("Alt Sağ"); // Touch Bottom Right + LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Kalibrasyon Tamamlandı"); // Calibration Completed + LSTR MSG_CALIBRATION_FAILED = _UxGT("Kalibrasyon Başarısız"); // Calibration Failed + LSTR MSG_DRIVER_BACKWARD = _UxGT(" driver backward"); // driver backward + LSTR MSG_SD_CARD = _UxGT("SD Kart"); // SD Card + LSTR MSG_USB_DISK = _UxGT("USB Disk"); // USB Disk + LSTR MSG_HOST_SHUTDOWN = _UxGT("Host'u Kapat"); // Host Shutdown + LSTR DGUS_MSG_TEMP_TOO_HIGH = _UxGT("Sıcaklık çok yüksek."); // Temperature too high. + LSTR MSG_SHORT_DAY = _UxGT("g"); // d + LSTR MSG_SHORT_HOUR = _UxGT("s"); // h + LSTR MSG_SHORT_MINUTE = _UxGT("d"); // m + LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Medya Yok"); // No Media + LSTR MSG_MEDIA_SORT = _UxGT("Medyayı Sırala"); // Sort (MEDIA_TYPE_EN) + LSTR MSG_ENDSTOP_TEST = _UxGT("Endstop Test"); // Endstop Test + LSTR MSG_Z_PROBE = _UxGT("Z Probe"); // Z Probe + LSTR MSG_Z_AFTER_HOME = _UxGT("Z After Homing"); // Z After Homing + LSTR MSG_ERR_M428_TOO_FAR = _UxGT("MIN/MAX Çok Fazla"); // MIN/MAX Too Far + LSTR MSG_PREHEAT_HOTEND = _UxGT("Nozul Ön Isıtma"); // Preheat Hotend + LSTR MSG_MESH_RESET = _UxGT("Mesh reset"); // Mesh reset + LSTR MSG_MESH_ACTIVE = _UxGT("%i mesh aktif"); // Mesh %i active + LSTR MSG_LIVE_MOVE = _UxGT("Canlı Hareket"); // Live Movement + LSTR MSG_CUTTER = _UxGT("Kesici"); // Cutter + LSTR MSG_TIMEOUT = _UxGT("Zaman aşımı"); // Timeout + LSTR MSG_MPC_HEATING_PAST_200 = _UxGT(">200C Isıtma"); // Heating to >200C + LSTR MSG_MPC_COOLING_TO_AMBIENT = _UxGT("Ortam ısısına soğutma"); // Cooling to ambient + LSTR MSG_MPC_POWER = _UxGT("Isıtıcı Gücü"); // Heater Power + LSTR MSG_MPC_BLOCK_HEAT_CAPACITY = _UxGT("Isı Kapasitesi"); // Heat Capacity + LSTR MSG_SENSOR_RESPONSIVENESS = _UxGT("Sensör Hassasiyeti"); // Sensor Resp. + LSTR MSG_MPC_AMBIENT_XFER_COEFF = _UxGT("Ortam Kats."); // Ambient Coeff. + LSTR MSG_MPC_AMBIENT_XFER_COEFF_FAN = _UxGT("Fan kats."); // Fan coeff. + LSTR MSG_STEP_SMOOTHING = _UxGT("Adım Yumuşatma"); // Step Smoothing + LSTR MSG_INPUT_SHAPING = _UxGT("Input Shaping"); // Input Shaping + LSTR MSG_SHAPING_ENABLE_N = _UxGT("@ Biçimlemeyi Aç"); // Enable @ shaping + LSTR MSG_SHAPING_DISABLE_N = _UxGT("@ Biçimlemeyi Kapat"); // Disable @ shaping + LSTR MSG_SHAPING_FREQ_N = _UxGT("@ frekans"); // @ frequency + LSTR MSG_SHAPING_ZETA_N = _UxGT("@ sönümleme"); // @ damping + LSTR MSG_SHAPING_A_FREQ = STR_A _UxGT(" frekansı"); // (STR_A) frequency + LSTR MSG_SHAPING_B_FREQ = STR_B _UxGT(" frekansı"); // (STR_B) frequency + LSTR MSG_SHAPING_C_FREQ = STR_C _UxGT(" frekansı"); // (STR_C) frequency + LSTR MSG_SHAPING_A_ZETA = STR_A _UxGT(" sönümleme"); // (STR_A) damping + LSTR MSG_SHAPING_B_ZETA = STR_B _UxGT(" sönümleme"); // (STR_B) damping + LSTR MSG_SHAPING_C_ZETA = STR_C _UxGT(" sönümleme"); // (STR_C) damping + LSTR MSG_FILAMENT_EN = _UxGT("Filaman *"); // Filament * + LSTR MSG_SEGMENTS_PER_SECOND = _UxGT("Segment/Sn"); // Segments/Sec + LSTR MSG_DRAW_MIN_X = _UxGT("Min X Çiz"); // Draw Min X + LSTR MSG_DRAW_MAX_X = _UxGT("Max X Çiz"); // Draw Max X + LSTR MSG_DRAW_MIN_Y = _UxGT("Min Y Çİz"); // Draw Min Y + LSTR MSG_DRAW_MAX_Y = _UxGT("Max Y Çiz"); // Draw Max Y + LSTR MSG_MAX_BELT_LEN = _UxGT("Max Kayış Boyu"); // Max Belt Len + LSTR MSG_LINEAR_ADVANCE = _UxGT("Doğrusal İlerleme"); // Linear Advance + LSTR MSG_HOTEND_TEMP_GRAPH = _UxGT("Nozul Isı Grafiği"); // Hotend Temp Graph + LSTR MSG_BED_TEMP_GRAPH = _UxGT("Tablo Isı Grafiği"); // Bed Temp Graph + LSTR MSG_ERR_EEPROM_CORRUPT = _UxGT("Hata: EEPROM Bozuk"); // Err: EEPROM Corrupt + LSTR MSG_HAS_PREVIEW = _UxGT("Önizleme var"); // Has preview + LSTR MSG_RESUME_BED_TEMP = _UxGT("Tabla Isıtmayı Sürdür"); // Resume Bed Temp + LSTR MSG_SINGLENOZZLE_WIPE_RETRACT = _UxGT("Geri Çekme Sil"); // Wipe Retract + LSTR MSG_PARK_FAILED = _UxGT("Kafa park edilemiyor"); // Head cannot be parked + LSTR MSG_MANUAL_PENUP = _UxGT("Kalem yukarı"); // Pen up + LSTR MSG_MANUAL_PENDOWN = _UxGT("Kalem aşağı"); // Pen down + LSTR MSG_BED_ANNEALING = _UxGT("Tavlama..."); // Annealing... + LSTR MSG_DELTA_CALIBRATION_IN_PROGRESS = _UxGT("Delta Kalibrasyonu sürüyor"); // Delta Calibration in progress + LSTR MSG_RESET_STATS = _UxGT("Yazdırma istatistik Sıfırla?"); // Reset Print Stats? + LSTR MSG_HOTEND_IDLE_DISABLE = _UxGT("Zaman Aşımı Pasif"); // Disable Timeout + LSTR MSG_HOTEND_IDLE_NOZZLE_TARGET = _UxGT("Meme Boşta Isısı"); // Nozzle Idle Temp + LSTR MSG_HOTEND_IDLE_BED_TARGET = _UxGT("Tabla Boşta Isısı"); // Bed Idle Temp + LSTR MSG_MMU2_REMOVE_AND_CLICK = _UxGT("Kaldır ve tıkla..."); // Remove and click... + LSTR MSG_TMC_ACURRENT = STR_A _UxGT("Sürücü Akımı"); // (STR_A)Driver Current + LSTR MSG_TMC_BCURRENT = STR_B _UxGT("Sürücü Akımı"); // (STR_B)Driver Current + LSTR MSG_TMC_CCURRENT = STR_C _UxGT("Sürücü Akımı"); // (STR_C)Driver Current + LSTR MSG_TMC_ECURRENT = _UxGT("E Sürücü Akımı"); // E Driver Current + LSTR MSG_FIXED_TIME_MOTION = _UxGT("Sabit Zamanlı Hareket"); // Fixed-Time Motion + LSTR MSG_FTM_CMPN_MODE = _UxGT("@ Telafi Modu: $"); // @ Comp. Mode: $ + LSTR MSG_FTM_ZV = _UxGT("ZV"); // ZV + LSTR MSG_FTM_ZVD = _UxGT("ZVD"); // ZVD + LSTR MSG_FTM_ZVDD = _UxGT("ZVDD"); // ZVDD + LSTR MSG_FTM_ZVDDD = _UxGT("ZVDDD"); // ZVDDD + LSTR MSG_FTM_EI = _UxGT("EI"); // EI + LSTR MSG_FTM_2HEI = _UxGT("2HEI"); // 2HEI + LSTR MSG_FTM_3HEI = _UxGT("3HEI"); // 3HEI + LSTR MSG_FTM_MZV = _UxGT("MZV"); // MZV + LSTR MSG_FTM_DYN_MODE = _UxGT("DF Modu: $"); // DF Mode: $ + LSTR MSG_FTM_Z_BASED = _UxGT("Z-based"); // Z-based + LSTR MSG_FTM_MASS_BASED = _UxGT("Mass-based"); // Mass-based + LSTR MSG_FTM_BASE_FREQ_N = _UxGT("@ Base Freq."); // @ Base Freq. + LSTR MSG_FTM_DFREQ_K_N = _UxGT("@ Dyn. Freq."); // @ Dyn. Freq. + LSTR MSG_FTM_ZETA_N = _UxGT("@ Damping"); // @ Damping + LSTR MSG_FTM_VTOL_N = _UxGT("@ Vib. Level"); // @ Vib. Level + LSTR MSG_MARLIN = _UxGT("Marlin"); // Marlin + LSTR MSG_PID_P = _UxGT("PID-P"); // PID-P + LSTR MSG_PID_P_E = _UxGT("PID-P *"); // PID-P * + LSTR MSG_PID_I = _UxGT("PID-I"); // PID-I + LSTR MSG_PID_I_E = _UxGT("PID-I *"); // PID-I * + LSTR MSG_PID_D = _UxGT("PID-D"); // PID-D + LSTR MSG_PID_D_E = _UxGT("PID-D *"); // PID-D * + LSTR MSG_PID_C = _UxGT("PID-C"); // PID-C + LSTR MSG_PID_C_E = _UxGT("PID-C *"); // PID-C * + LSTR MSG_PID_F = _UxGT("PID-F"); // PID-F + LSTR MSG_PID_F_E = _UxGT("PID-F *"); // PID-F * + LSTR MSG_BACKLASH_N = _UxGT("@"); // @ + LSTR DGUS_MSG_NOT_WHILE_PRINTING = _UxGT("Yazdırma sırasında izin verilmez"); // Not allowed during print + LSTR DGUS_MSG_NOT_WHILE_IDLE = _UxGT("Boştayken izin verilmez"); // Not allowed while idle + LSTR DGUS_MSG_NO_FILE_SELECTED = _UxGT("Seçili dosya yok"); // No file selected + LSTR DGUS_MSG_TEMP_TOO_LOW = _UxGT("Sıcaklık çok düşük"); // Temperature too low + LSTR DGUS_MSG_EXECUTING_COMMAND = _UxGT("Komut yürütülüyor..."); // Executing command... + LSTR DGUS_MSG_BED_PID_DISABLED = _UxGT("Tabla PID pasif"); // Bed PID disabled + LSTR DGUS_MSG_PID_DISABLED = _UxGT("PID devre dışı"); // PID disabled + LSTR DGUS_MSG_PID_AUTOTUNING = _UxGT("PID otomatik ayarlama..."); // PID autotuning... + LSTR DGUS_MSG_INVALID_RECOVERY_DATA = _UxGT("Geçersiz kurtarma verileri"); // Invalid recovery data + LSTR DGUS_MSG_HOMING_REQUIRED = _UxGT("Eve dönüş gerekli"); // Homing required + LSTR DGUS_MSG_BUSY = _UxGT("Meşgul"); // Busy + LSTR DGUS_MSG_HOMING = _UxGT("Eve dönüş..."); // Homing... + LSTR DGUS_MSG_FW_OUTDATED = _UxGT("DWIN GUI/OS güncelleme gerekli"); // DWIN GUI/OS update required + LSTR DGUS_MSG_ABL_REQUIRED = _UxGT("Oto tabla seviyeleme gerekli"); // Auto bed leveling required + LSTR DGUS_MSG_PROBING_FAILED = _UxGT("Sondalama başarısız"); // Probing failed + LSTR DGUS_MSG_PROBING_SUCCESS = _UxGT("Sondalama başarılı"); // Probing successful + LSTR DGUS_MSG_RESET_EEPROM = _UxGT("EEPROM sıfırla"); // EEPROM reset + LSTR DGUS_MSG_WRITE_EEPROM_FAILED = _UxGT("EEPROM yazımı başarısız"); // EEPROM write failed + LSTR DGUS_MSG_READ_EEPROM_FAILED = _UxGT("EEPROM okuma başarısız"); // EEPROM read failed + LSTR DGUS_MSG_FILAMENT_RUNOUT = _UxGT("E%d Filaman Tükenme"); // Filament runout E%d } namespace LanguageWide_tr { using namespace LanguageNarrow_tr; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_HOST_START_PRINT = _UxGT("Host Baskıyı başlat"); - LSTR MSG_PRINTING_OBJECT = _UxGT("Yazdırma Nesnesi"); - LSTR MSG_CANCEL_OBJECT = _UxGT("Nesneyi İptal Et"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Nesneyi İptal Et {"); - LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Yazdırmaya Devam Et"); - LSTR MSG_MEDIA_MENU = _UxGT("SD Karttan Yazdır"); - LSTR MSG_TURN_OFF = _UxGT("Yazıcıyı kapat"); - LSTR MSG_END_LOOPS = _UxGT("Tekrr Döngüler Bitir"); - LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Ortam yerleştirilmedi."); // ProUI - LSTR MSG_PLEASE_PREHEAT = _UxGT("Lütfen önce hotend'i ısıtın."); // ProUI - LSTR MSG_INFO_PRINT_COUNT_RESET = _UxGT("Baskı Sayısını Sıfırla"); // ProUI - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Baskı Sayısı"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Toplam Baskı Süresi"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("En Uzun Baskı Süresi"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Toplam Filaman"); + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 + LSTR MSG_MEDIA_MENU = _UxGT("SD Karttan Yazdır"); // Select from (MEDIA_TYPE_EN) + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Baskı Sayısı"); // Print Count + LSTR MSG_INFO_PRINT_TIME = _UxGT("Toplam Baskı Süresi"); // Print Time + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("En Uzun Baskı Süresi"); // Longest Job Time + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Toplam Filaman"); // Extruded Total + LSTR MSG_PRINTING_OBJECT = _UxGT("Yazdırma Nesnesi"); // Printing Object + LSTR MSG_CANCEL_OBJECT = _UxGT("Nesneyi İptal Et"); // Cancel Object + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Nesneyi İptal Et {"); // Cancel Object { + LSTR MSG_HOST_START_PRINT = _UxGT("Host Baskıyı başlat"); // Start Host Print + LSTR MSG_END_LOOPS = _UxGT("Tekrr Döngüler Bitir"); // End Repeat Loops + LSTR MSG_CONTINUE_PRINT_JOB = _UxGT("Yazdırmaya Devam Et"); // Continue Print Job + LSTR MSG_TURN_OFF = _UxGT("Yazıcıyı kapat"); // Turn off the printer + LSTR MSG_PLEASE_PREHEAT = _UxGT("Lütfen önce hotend'i ısıtın."); // Please preheat the hot end. + LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Ortam yerleştirilmedi."); // No media inserted. + LSTR MSG_INFO_PRINT_COUNT_RESET = _UxGT("Baskı Sayısını Sıfırla"); // Reset Print Count #endif } @@ -912,17 +872,17 @@ namespace LanguageTall_tr { using namespace LanguageWide_tr; #if LCD_HEIGHT >= 4 // Filament Change screens show up to 3 lines on a 4-line display - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Baskıya devam etmek", "için Butona bas")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Park Ediliyor...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Filaman değişimi", "için başlama", "bekleniyor")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Filamanı yükle", "ve devam için", "tuşa bas...")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Nozulü Isıtmak için", "Butona Bas.")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Nozul Isınıyor", "Lütfen Bekleyin...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Filamanın çıkması", "bekleniyor")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Filamanın yüklenmesi", "bekleniyor..")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Filaman Temizlemesi", "için bekle")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Filaman Temizlemesi", "bitirmek için tıkla")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Baskının devam ", "etmesi için bekle")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Filaman değişimi", "için başlama", "bekleniyor")); // |Wait for|filament change|to start + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Filamanı yükle", "ve devam için", "tuşa bas...")); // |Insert filament|and press button|to continue + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Filamanın çıkması", "bekleniyor")); // |Wait for|filament unload + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Filamanın yüklenmesi", "bekleniyor..")); // |Wait for|filament load + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Baskının devam ", "etmesi için bekle")); // |Wait for print|to resume... + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Nozul Isınıyor", "Lütfen Bekleyin...")); // |Nozzle heating|Please wait... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Nozulü Isıtmak için", "Butona Bas.")); // |Press button|to heat nozzle + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Baskıya devam etmek", "için Butona bas")); // |Press Button|to resume print + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Park Ediliyor...")); // |Parking... + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Filaman Temizlemesi", "için bekle")); // |Wait for|filament purge + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("Filaman Temizlemesi", "bitirmek için tıkla")); // |Click to finish|filament purge #endif } diff --git a/Marlin/src/lcd/language/language_uk.h b/Marlin/src/lcd/language/language_uk.h index c0a5380692..427934ac66 100644 --- a/Marlin/src/lcd/language/language_uk.h +++ b/Marlin/src/lcd/language/language_uk.h @@ -41,757 +41,709 @@ namespace LanguageNarrow_uk { using namespace Language_en; // Inherit undefined strings from English - constexpr uint8_t CHARSIZE = 2; - LSTR LANGUAGE = _UxGT("Ukrainian"); + constexpr uint8_t CHARSIZE = 2; + LSTR LANGUAGE = _UxGT("Ukrainian"); - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" Готовий."); - LSTR MSG_YES = _UxGT("ТАК"); - LSTR MSG_NO = _UxGT("НІ"); - LSTR MSG_BACK = _UxGT("Назад"); - - LSTR MSG_MEDIA_ABORTING = _UxGT("Переривання..."); - LSTR MSG_MEDIA_INSERTED = _UxGT("SD-картка вставлена"); - LSTR MSG_MEDIA_REMOVED = _UxGT("SD-картка видалена"); - LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Збій ініціаліз. SD"); - LSTR MSG_MEDIA_READ_ERROR = _UxGT("Помилка зчитування"); - LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB диск видалений"); - LSTR MSG_USB_FD_USB_FAILED = _UxGT("Помилка USB диску"); - LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Переповн. виклику"); - - LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Прогр.кінцевики"); - LSTR MSG_LCD_ENDSTOPS = _UxGT("Кінцевик"); // Max length 8 characters - LSTR MSG_MAIN_MENU = _UxGT("Основне меню"); - LSTR MSG_ADVANCED_SETTINGS = _UxGT("Інші налаштування"); - LSTR MSG_CONFIGURATION = _UxGT("Конфігурація"); - LSTR MSG_DISABLE_STEPPERS = _UxGT("Вимкнути двигуни"); - LSTR MSG_DEBUG_MENU = _UxGT("Меню Debug"); - LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Тест лінії прогр."); - LSTR MSG_AUTO_HOME = _UxGT("Авто паркування"); - LSTR MSG_AUTO_HOME_N = _UxGT("Паркування @"); - LSTR MSG_AUTO_HOME_X = _UxGT("Паркування X"); - LSTR MSG_AUTO_HOME_Y = _UxGT("Паркування Y"); - LSTR MSG_AUTO_HOME_Z = _UxGT("Паркування Z"); - LSTR MSG_AUTO_Z_ALIGN = _UxGT("Авто Z-вирівнювання"); - LSTR MSG_ITERATION = _UxGT("G34 Ітерація: %i"); - LSTR MSG_DECREASING_ACCURACY = _UxGT("Зменьшення точності!"); - LSTR MSG_ACCURACY_ACHIEVED = _UxGT("Точність досягнута"); - LSTR MSG_LEVEL_BED_HOMING = _UxGT("Паркування XYZ"); - LSTR MSG_LEVEL_BED_WAITING = _UxGT("Почати"); - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Наступна точка"); - LSTR MSG_LEVEL_BED_DONE = _UxGT("Завершено!"); - LSTR MSG_Z_FADE_HEIGHT = _UxGT("Висота спаду"); - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Встан. зміщ. дому"); - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Зміщення прийняті"); - LSTR MSG_SELECT_ORIGIN = _UxGT("Оберіть нуль"); - LSTR MSG_LAST_VALUE_SP = _UxGT("Останнє знач. "); - - LSTR MSG_PREHEAT_1 = _UxGT("Нагрів ") PREHEAT_1_LABEL; - LSTR MSG_PREHEAT_1_H = _UxGT("Нагрів ") PREHEAT_1_LABEL " ~"; - LSTR MSG_PREHEAT_1_END = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" сопло"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" сопло ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" все"); - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" стіл"); - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" налашт"); - - LSTR MSG_PREHEAT_M = _UxGT("Нагрів $"); - LSTR MSG_PREHEAT_M_H = _UxGT("Нагрів $ ~"); - LSTR MSG_PREHEAT_M_END = _UxGT("Нагрів $ сопло"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Нагрів $ сопло ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Нагрів $ все"); - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Нагрів $ стіл"); - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Нагрів $ налашт"); - - LSTR MSG_PREHEAT_CUSTOM = _UxGT("Нагрів свого"); - LSTR MSG_COOLDOWN = _UxGT("Вимкнути нагрів"); - - LSTR MSG_CUTTER_FREQUENCY = _UxGT("Частота"); - LSTR MSG_LASER_MENU = _UxGT("Керування лазером"); - LSTR MSG_SPINDLE_MENU = _UxGT("Керування шпінделем"); - LSTR MSG_LASER_POWER = _UxGT("Потужн. лазера"); - LSTR MSG_SPINDLE_TOGGLE = _UxGT("Перемк. шпінд."); - LSTR MSG_SPINDLE_EVAC_TOGGLE = _UxGT("Перемк. вакуум"); - LSTR MSG_LASER_TOGGLE = _UxGT("Перемкн. лазер"); - LSTR MSG_SPINDLE_POWER = _UxGT("Потужн. шпінд."); - LSTR MSG_LASER_PULSE_MS = _UxGT("Тест. імп., мс"); - LSTR MSG_LASER_EVAC_TOGGLE = _UxGT("Перемкн. обдув"); - LSTR MSG_LASER_ASSIST_TOGGLE = _UxGT("Керування обдувом"); - LSTR MSG_FLOWMETER_FAULT = _UxGT("Помилка обдуву"); - LSTR MSG_LASER_FIRE_PULSE = _UxGT("Імпульс лазеру"); - LSTR MSG_SPINDLE_FORWARD = _UxGT("Шпіндель вперед"); - LSTR MSG_SPINDLE_REVERSE = _UxGT("Шпіндель назад"); - - LSTR MSG_SWITCH_PS_ON = _UxGT("Увімкнути живлення"); - LSTR MSG_SWITCH_PS_OFF = _UxGT("Вимкнути живлення"); - LSTR MSG_EXTRUDE = _UxGT("Екструзія"); - LSTR MSG_RETRACT = _UxGT("Втягування"); - LSTR MSG_MOVE_AXIS = _UxGT("Рух по осям"); - LSTR MSG_PROBE_AND_LEVEL = _UxGT("Проба/вирівнювання"); - LSTR MSG_BED_LEVELING = _UxGT("Вирівнювання столу"); - LSTR MSG_LEVEL_BED = _UxGT("Вирівняти стіл"); - LSTR MSG_BED_TRAMMING = _UxGT("Вирівняти кути"); - LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Вгору до спрац.зонду"); - LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Кути в межах. Вирівн"); - LSTR MSG_BED_TRAMMING_GOOD_POINTS = _UxGT("Хороші точки: "); - LSTR MSG_BED_TRAMMING_LAST_Z = _UxGT("Остання Z: "); - LSTR MSG_NEXT_CORNER = _UxGT("Наступний кут"); - LSTR MSG_MESH_EDITOR = _UxGT("Зміщення Z"); - LSTR MSG_EDIT_MESH = _UxGT("Редагувати сітку"); - LSTR MSG_EDITING_STOPPED = _UxGT("Редагув. зупинено"); - LSTR MSG_PROBING_POINT = _UxGT("Точка сітки"); - LSTR MSG_MESH_X = _UxGT("Індекс X"); - LSTR MSG_MESH_Y = _UxGT("Індекс Y"); - LSTR MSG_MESH_EDIT_Z = _UxGT("Значення Z"); - LSTR MSG_CUSTOM_COMMANDS = _UxGT("Власні команди"); - - LSTR MSG_M48_TEST = _UxGT("M48 тест зонду"); - LSTR MSG_M48_POINT = _UxGT("M48 точка"); - LSTR MSG_M48_OUT_OF_BOUNDS = _UxGT("Зонд за межами"); - LSTR MSG_M48_DEVIATION = _UxGT("Відхилення"); - - LSTR MSG_IDEX_MENU = _UxGT("Режим IDEX"); - LSTR MSG_OFFSETS_MENU = _UxGT("Зміщення сопел"); - LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Авто паркування"); - LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Дуплікація"); - LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Дзеркальна копія"); - LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Повний контроль"); - LSTR MSG_IDEX_DUPE_GAP = _UxGT("Дублюв. X-проміжок"); - - LSTR MSG_HOTEND_OFFSET_Z = _UxGT("Друге сопло Z"); - LSTR MSG_HOTEND_OFFSET_N = _UxGT("Друге сопло @"); - - LSTR MSG_UBL_DOING_G29 = _UxGT("Виконується G29"); - LSTR MSG_UBL_TOOLS = _UxGT("Інструменти UBL"); - LSTR MSG_LCD_TILTING_MESH = _UxGT("Точка нахилу"); - LSTR MSG_UBL_MANUAL_MESH = _UxGT("Ручне введ. сітки"); - LSTR MSG_UBL_BC_INSERT = _UxGT("Розм. шайбу і вимір."); - LSTR MSG_UBL_MESH_WIZARD = _UxGT("Майстер сіток UBL"); - LSTR MSG_UBL_BC_INSERT2 = _UxGT("Вимірювання"); - LSTR MSG_UBL_BC_REMOVE = _UxGT("Видали і вимір. стіл"); - LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Рух до наступної"); - LSTR MSG_UBL_SET_TEMP_BED = LCD_STR_THERMOMETER _UxGT(" столу, ") LCD_STR_DEGREE _UxGT("C"); - LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Своя ") LCD_STR_THERMOMETER _UxGT(" столу,") LCD_STR_DEGREE _UxGT("C"); - LSTR MSG_UBL_SET_TEMP_HOTEND = LCD_STR_THERMOMETER _UxGT(" сопла, ") LCD_STR_DEGREE _UxGT("C"); - LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Своя ") LCD_STR_THERMOMETER _UxGT(" сопла,") LCD_STR_DEGREE _UxGT("C"); - LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Редагувати свою"); - LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Точне редаг. сітки"); - LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Будувати свою"); - LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Сітка побудована"); - LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Будувати сітку"); - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Будувати сітку ($)"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Підтвердити ($)"); - LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Буд. холодну сітку"); - LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Встан.висоту сітки"); - LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Висота"); - LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Підтвердити сітку"); - LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Підтвердити свою"); - - LSTR MSG_G26_HEATING_BED = _UxGT("G26 нагрів столу"); - LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 нагрів сопла"); - LSTR MSG_G26_MANUAL_PRIME = _UxGT("Ручне грунтування"); - LSTR MSG_G26_FIXED_LENGTH = _UxGT("Фікс. довж. грунт."); - LSTR MSG_G26_PRIME_DONE = _UxGT("Грунтув. виконане"); - LSTR MSG_G26_CANCELED = _UxGT("G26 скасовано"); - LSTR MSG_G26_LEAVING = _UxGT("Вийти з G26"); - LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Продовжити сітку"); - LSTR MSG_UBL_MESH_LEVELING = _UxGT("Вирівнювання сітки"); - LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-точкове вирівн."); - LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Вирівнюв. растру"); - LSTR MSG_UBL_MESH_LEVEL = _UxGT("Вирівняти сітку"); - LSTR MSG_UBL_SIDE_POINTS = _UxGT("Крайні точки"); - LSTR MSG_UBL_MAP_TYPE = _UxGT("Тип мапи сітки"); - LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Вивести мапу сітки"); - LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Вивести на хост"); - LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Вивести в CSV"); - LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Зберегти зовні"); - LSTR MSG_UBL_INFO_UBL = _UxGT("Інформація по UBL"); - LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Обсяг заповн."); - LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Ручне заповнення"); - LSTR MSG_UBL_SMART_FILLIN = _UxGT("Розумне заповнення"); - LSTR MSG_UBL_FILLIN_MESH = _UxGT("Заповнити сітку"); - LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Анулювати все"); - LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Анулювати найближчу"); - LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Точно налашт. все"); - LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Точно найближчу"); - LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Збереження сітки"); - LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Слот пам'яті"); - LSTR MSG_UBL_LOAD_MESH = _UxGT("Завантажити сітку"); - LSTR MSG_UBL_SAVE_MESH = _UxGT("Зберегти сітку"); - LSTR MSG_MESH_LOADED = _UxGT("Сітка %i завантажена"); - LSTR MSG_MESH_SAVED = _UxGT("Сітка %i збережена"); - LSTR MSG_UBL_NO_STORAGE = _UxGT("Немає носія"); - LSTR MSG_UBL_SAVE_ERROR = _UxGT("Збій: збереж. UBL"); - LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Збій: відновл. UBL"); - LSTR MSG_UBL_Z_OFFSET = _UxGT("Зміщення Z: "); - LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Зміщення Z зупинено"); - LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("UBL покроково"); - LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Збудувати холодну"); - LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2.Розумне заповн-я"); - LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Затвердити сітку"); - LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Точно налашт.все"); - LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Затвердити сітку"); - LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Точно налашт.все"); - LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Зберегти сітку"); - - LSTR MSG_LED_CONTROL = _UxGT("Керування світлом"); - LSTR MSG_LIGHTS = _UxGT("Підсвітка"); - LSTR MSG_LIGHT_N = _UxGT("Світло #{"); - LSTR MSG_LED_PRESETS = _UxGT("Передустан. світла"); - LSTR MSG_SET_LEDS_RED = _UxGT("Червоний"); - LSTR MSG_SET_LEDS_ORANGE = _UxGT("Помаранчевий"); - LSTR MSG_SET_LEDS_YELLOW = _UxGT("Жовтий"); - LSTR MSG_SET_LEDS_GREEN = _UxGT("Зелений"); - LSTR MSG_SET_LEDS_BLUE = _UxGT("Синій"); - LSTR MSG_SET_LEDS_INDIGO = _UxGT("Індіго"); - LSTR MSG_SET_LEDS_VIOLET = _UxGT("Фіолетовий"); - LSTR MSG_SET_LEDS_WHITE = _UxGT("Білий"); - LSTR MSG_SET_LEDS_DEFAULT = _UxGT("За умовчанням"); - LSTR MSG_LED_CHANNEL_N = _UxGT("Канал {"); - LSTR MSG_NEO2_PRESETS = _UxGT("Передуст. світла #2"); - LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Яскравість"); - LSTR MSG_CUSTOM_LEDS = _UxGT("Своє світло"); - LSTR MSG_INTENSITY_R = _UxGT("Рівень червоного"); - LSTR MSG_INTENSITY_G = _UxGT("Рівень зеленого"); - LSTR MSG_INTENSITY_B = _UxGT("Рівень синього"); - LSTR MSG_INTENSITY_W = _UxGT("Рівень білого"); - LSTR MSG_LED_BRIGHTNESS = _UxGT("Яскравість"); - - LSTR MSG_MOVING = _UxGT("Рух..."); - LSTR MSG_FREE_XY = _UxGT("Звільнити XY"); - LSTR MSG_MOVE_X = _UxGT("Рух по X"); - LSTR MSG_MOVE_Y = _UxGT("Рух по Y"); - LSTR MSG_MOVE_Z = _UxGT("Рух по Z"); - LSTR MSG_MOVE_N = _UxGT("Рух по @"); - LSTR MSG_MOVE_E = _UxGT("Екструдер"); - LSTR MSG_MOVE_EN = _UxGT("Екструдер *"); - LSTR MSG_HOTEND_TOO_COLD = _UxGT("Сопло дуже холодне"); - LSTR MSG_MOVE_N_MM = _UxGT("Рух $мм"); - LSTR MSG_MOVE_N_IN = _UxGT("Рух $in"); - LSTR MSG_MOVE_N_DEG = _UxGT("Рух $") LCD_STR_DEGREE; - LSTR MSG_SPEED = _UxGT("Швидкість"); - LSTR MSG_MESH_Z_OFFSET = _UxGT("Z Столу"); - LSTR MSG_NOZZLE = _UxGT("Сопло, ") LCD_STR_DEGREE _UxGT("C"); - LSTR MSG_NOZZLE_N = _UxGT("Сопло ~"); - LSTR MSG_NOZZLE_PARKED = _UxGT("Сопло запарковане"); - LSTR MSG_NOZZLE_STANDBY = _UxGT("Сопло очікує"); - LSTR MSG_BED = _UxGT("Стіл, ") LCD_STR_DEGREE _UxGT("C"); - LSTR MSG_CHAMBER = _UxGT("Камера,") LCD_STR_DEGREE _UxGT("C"); - LSTR MSG_COOLER = _UxGT("Охолодж. лазеру"); - LSTR MSG_COOLER_TOGGLE = _UxGT("Перемк.охолод"); - LSTR MSG_FLOWMETER_SAFETY = _UxGT("Безпека потоку"); - LSTR MSG_LASER = _UxGT("Лазер"); - LSTR MSG_FAN_SPEED = _UxGT("Швидк. вент."); - LSTR MSG_FAN_SPEED_N = _UxGT("Швидк. вент. ~"); - LSTR MSG_STORED_FAN_N = _UxGT("Збереж. вент. ~"); - LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Додат.вент. ~"); - LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Дод. швидк. вент."); - LSTR MSG_CONTROLLER_FAN = _UxGT("Вент. контролера"); - LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("Холості оберти"); - LSTR MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("Авто-режим"); - LSTR MSG_CONTROLLER_FAN_SPEED = _UxGT("Робочі оберти"); - LSTR MSG_CONTROLLER_FAN_DURATION = _UxGT("Період простою"); - LSTR MSG_FLOW = _UxGT("Потік"); - LSTR MSG_FLOW_N = _UxGT("Потік ~"); - LSTR MSG_CONTROL = _UxGT("Налаштування"); - LSTR MSG_MIN = " " LCD_STR_THERMOMETER ", " LCD_STR_DEGREE _UxGT("С мін"); - LSTR MSG_MAX = " " LCD_STR_THERMOMETER ", " LCD_STR_DEGREE _UxGT("С макс"); - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Фактор"); - LSTR MSG_AUTOTEMP = _UxGT("Автотемпер."); - LSTR MSG_LCD_ON = _UxGT("Увім"); - LSTR MSG_LCD_OFF = _UxGT("Вимк"); - - LSTR MSG_PID_AUTOTUNE = _UxGT("Автопідбір PID"); - LSTR MSG_PID_AUTOTUNE_E = _UxGT("Автопідбір PID *"); - LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("Підбір PID виконано"); - LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Збій автопідбору! Поганий екструдер."); - LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Збій автопідбору! Температура завищена."); - LSTR MSG_PID_TIMEOUT = _UxGT("Збій автопідбору! Вичерпан час."); - - LSTR MSG_SELECT_E = _UxGT("Вибрати *"); - LSTR MSG_ACC = _UxGT("Прискорорення"); - LSTR MSG_JERK = _UxGT("Ривок"); - LSTR MSG_VA_JERK = _UxGT("V") STR_A _UxGT("-ривок"); - LSTR MSG_VB_JERK = _UxGT("V") STR_B _UxGT("-ривок"); - LSTR MSG_VC_JERK = _UxGT("V") STR_C _UxGT("-ривок"); - LSTR MSG_VN_JERK = _UxGT("V@-ривок"); - LSTR MSG_VE_JERK = _UxGT("Ve-ривок"); - LSTR MSG_JUNCTION_DEVIATION = _UxGT("Відхил.вузла"); - LSTR MSG_MAX_SPEED = _UxGT("Швидкість, мм/с"); - LSTR MSG_VMAX_A = _UxGT("Швидк.макс ") STR_A; - LSTR MSG_VMAX_B = _UxGT("Швидк.макс ") STR_B; - LSTR MSG_VMAX_C = _UxGT("Швидк.макс ") STR_C; - LSTR MSG_VMAX_N = _UxGT("Швидк.макс @"); - LSTR MSG_VMAX_E = _UxGT("Швидк.макс E"); - LSTR MSG_VMAX_EN = _UxGT("Швидк.макс *"); - LSTR MSG_VMIN = _UxGT("Швидк. мін"); - LSTR MSG_VTRAV_MIN = _UxGT("Переміщ. мін"); - LSTR MSG_ACCELERATION = _UxGT("Прискорення, мм/с2"); - LSTR MSG_AMAX_A = _UxGT("Приск.макс ") STR_A; - LSTR MSG_AMAX_B = _UxGT("Приск.макс ") STR_B; - LSTR MSG_AMAX_C = _UxGT("Приск.макс ") STR_C; - LSTR MSG_AMAX_N = _UxGT("Приск.макс @"); - LSTR MSG_AMAX_E = _UxGT("Приск.макс E"); - LSTR MSG_AMAX_EN = _UxGT("Приск.макс *"); - LSTR MSG_A_RETRACT = _UxGT("Приск.втягув."); - LSTR MSG_A_TRAVEL = _UxGT("Приск.переміщ."); - LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("Частота макс."); - LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("Подача мін."); - LSTR MSG_STEPS_PER_MM = _UxGT("Кроків на мм"); - LSTR MSG_A_STEPS = STR_A _UxGT(" кроків/мм"); - LSTR MSG_B_STEPS = STR_B _UxGT(" кроків/мм"); - LSTR MSG_C_STEPS = STR_C _UxGT(" кроків/мм"); - LSTR MSG_N_STEPS = _UxGT("@ кроків/мм"); - LSTR MSG_E_STEPS = _UxGT("E кроків/мм"); - LSTR MSG_EN_STEPS = _UxGT("* кроків/мм"); - LSTR MSG_TEMPERATURE = _UxGT("Температура"); - LSTR MSG_MOTION = _UxGT("Рух"); - LSTR MSG_FILAMENT = _UxGT("Пруток"); - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E, мм") SUPERSCRIPT_THREE; - LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("E обмеж.,мм") SUPERSCRIPT_THREE; - LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("E обмеж. *"); - LSTR MSG_FILAMENT_DIAM = _UxGT("Діам. прутка"); - LSTR MSG_FILAMENT_DIAM_E = _UxGT("Діам. прутка *"); - LSTR MSG_FILAMENT_UNLOAD = _UxGT("Вивантаж., мм"); - LSTR MSG_FILAMENT_LOAD = _UxGT("Завантаж., мм"); - LSTR MSG_ADVANCE_K = _UxGT("Kоеф. просув."); - LSTR MSG_ADVANCE_K_E = _UxGT("Kоеф. просув. *"); - LSTR MSG_CONTRAST = _UxGT("Контраст"); - LSTR MSG_BRIGHTNESS = _UxGT("Яскравість"); - LSTR MSG_SCREEN_TIMEOUT = _UxGT("LCD Таймаут, x"); - LSTR MSG_BRIGHTNESS_OFF = _UxGT("Підсвітка вимк."); - LSTR MSG_STORE_EEPROM = _UxGT("Зберегти в EEPROM"); - LSTR MSG_LOAD_EEPROM = _UxGT("Зчитати з EEPROM"); - LSTR MSG_RESTORE_DEFAULTS = _UxGT("На базові параметри"); - LSTR MSG_INIT_EEPROM = _UxGT("Ініціаліз. EEPROM"); - LSTR MSG_ERR_EEPROM_CRC = _UxGT("Збій EEPROM: CRC"); - LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Збій EEPROM: розмір"); - LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Збій EEPROM: версія"); - LSTR MSG_SETTINGS_STORED = _UxGT("Параметри збережені"); - LSTR MSG_MEDIA_UPDATE = _UxGT("Оновити SD-картку"); - LSTR MSG_RESET_PRINTER = _UxGT("Зкинути принтер"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT(" Поновити"); - LSTR MSG_INFO_SCREEN = _UxGT("Головний екран"); - LSTR MSG_PREPARE = _UxGT("Підготувати"); - LSTR MSG_TUNE = _UxGT("Підлаштування"); - LSTR MSG_POWER_MONITOR = _UxGT("Монітор живлення"); - LSTR MSG_CURRENT = _UxGT("Струм"); - LSTR MSG_VOLTAGE = _UxGT("Напруга"); - LSTR MSG_POWER = _UxGT("Потужність"); - LSTR MSG_START_PRINT = _UxGT("Почати друк"); - - LSTR MSG_BUTTON_NEXT = _UxGT("Далі"); //short text for buttons - LSTR MSG_BUTTON_INIT = _UxGT("Ініц-я"); - LSTR MSG_BUTTON_STOP = _UxGT("Зупинка"); - LSTR MSG_BUTTON_PRINT = _UxGT("Друк"); - LSTR MSG_BUTTON_RESET = _UxGT("Зкинути"); - LSTR MSG_BUTTON_IGNORE = _UxGT("Ігнорув."); - LSTR MSG_BUTTON_CANCEL = _UxGT("Відміна"); - LSTR MSG_BUTTON_CONFIRM = _UxGT("Підтвер."); - LSTR MSG_BUTTON_CONTINUE = _UxGT("Продовж."); - LSTR MSG_BUTTON_DONE = _UxGT("Готово"); - LSTR MSG_BUTTON_BACK = _UxGT("Назад"); - LSTR MSG_BUTTON_PROCEED = _UxGT("Продовж."); - LSTR MSG_BUTTON_SKIP = _UxGT("Пропуск"); - LSTR MSG_BUTTON_INFO = _UxGT("Інфо"); - LSTR MSG_BUTTON_LEVEL = _UxGT("Рівень"); - LSTR MSG_BUTTON_PAUSE = _UxGT("Пауза"); - LSTR MSG_BUTTON_RESUME = _UxGT("Звіт"); - LSTR MSG_BUTTON_SAVE = _UxGT("Зберегти"); - - LSTR MSG_PAUSING = _UxGT("Призупинення..."); - LSTR MSG_PAUSE_PRINT = _UxGT("Призупинити друк"); - LSTR MSG_RESUME_PRINT = _UxGT("Відновити друк"); - LSTR MSG_HOST_START_PRINT = _UxGT("Старт з хосту"); - LSTR MSG_STOP_PRINT = _UxGT("Скасувати друк"); - LSTR MSG_END_LOOPS = _UxGT("End Repeat Loops"); // needs translation - LSTR MSG_PRINTING_OBJECT = _UxGT("Друк об'єкта"); - LSTR MSG_CANCEL_OBJECT = _UxGT("Завершити об'єкт"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("Завершити об'єкт {"); - LSTR MSG_OUTAGE_RECOVERY = _UxGT("Віднов. після збою"); - LSTR MSG_MEDIA_MENU = _UxGT("Друкувати з SD"); - LSTR MSG_NO_MEDIA = _UxGT("SD-картки немає"); - LSTR MSG_DWELL = _UxGT("Сон..."); - LSTR MSG_USERWAIT = _UxGT("Продовжити..."); - LSTR MSG_PRINT_PAUSED = _UxGT("Друк призупинено"); - LSTR MSG_PRINTING = _UxGT("Друк..."); - LSTR MSG_STOPPING = _UxGT("Зупинка..."); - LSTR MSG_REMAINING_TIME = _UxGT("Залишилось"); - LSTR MSG_PRINT_ABORTED = _UxGT("Друк скасовано"); - LSTR MSG_PRINT_DONE = _UxGT("Друк завершено"); - LSTR MSG_NO_MOVE = _UxGT("Немає руху."); - LSTR MSG_KILLED = _UxGT("ПЕРЕРВАНО. "); - LSTR MSG_STOPPED = _UxGT("ЗУПИНЕНО. "); - LSTR MSG_CONTROL_RETRACT = _UxGT("Втягув., мм"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Зміна втяг.мм"); - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Поверн., мм"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Повер.зміни,мм"); - LSTR MSG_AUTORETRACT = _UxGT("Автовтягув."); - LSTR MSG_CONTROL_RETRACTF = _UxGT("Втягування V"); - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Підскок, мм"); - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Повернення V"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("Поверн.зміни V"); - LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Змінити довжини"); - LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Змінити додатково"); - LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Очистити довжину"); - LSTR MSG_TOOL_CHANGE = _UxGT("Зміна сопла"); - LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Підняти по Z"); - LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Початк.швидк."); - LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Швидк.втягув."); - LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Паркувати голову"); - LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Відновити швидкість"); - LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Оберти вент."); - LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Час вент."); - LSTR MSG_TOOL_MIGRATION_ON = _UxGT("Авто Увімк."); - LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("Авто Вимкн."); - LSTR MSG_TOOL_MIGRATION = _UxGT("Заміна інструменту"); - LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("Авто заміна"); - LSTR MSG_TOOL_MIGRATION_END = _UxGT("Останній екструдер"); - LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("Заміна на *"); - LSTR MSG_FILAMENTCHANGE = _UxGT("Заміна прутка"); - LSTR MSG_FILAMENTCHANGE_E = _UxGT("Заміна прутка *"); - LSTR MSG_FILAMENTLOAD = _UxGT("Подати пруток"); - LSTR MSG_FILAMENTLOAD_E = _UxGT("Подати пруток *"); - LSTR MSG_FILAMENTUNLOAD = _UxGT("Видалити пруток"); - LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Видалити пруток *"); - LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Видалити все"); - - LSTR MSG_ATTACH_MEDIA = _UxGT("Вставити SD-картку"); - LSTR MSG_ATTACH_SD = _UxGT("Вставити SD-картку"); - LSTR MSG_ATTACH_USB = _UxGT("Вставити USB флешка"); - LSTR MSG_CHANGE_MEDIA = _UxGT("Заміна SD-картки"); - LSTR MSG_RELEASE_MEDIA = _UxGT("Видаліть SD-картку"); - LSTR MSG_RUN_AUTOFILES = _UxGT("Автостарт"); - - LSTR MSG_ZPROBE_OUT = _UxGT("Z-Зонд поза столом"); - LSTR MSG_SKEW_FACTOR = _UxGT("Фактор нахилу"); - LSTR MSG_BLTOUCH = _UxGT("BLTouch"); - LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Само-тест"); - LSTR MSG_BLTOUCH_RESET = _UxGT("Зкинути зонд"); - LSTR MSG_BLTOUCH_STOW = _UxGT("Підняти зонд"); - LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Опустити зонд"); - LSTR MSG_BLTOUCH_SW_MODE = _UxGT("Режим SW"); - LSTR MSG_BLTOUCH_5V_MODE = _UxGT("Режим 5V"); - LSTR MSG_BLTOUCH_OD_MODE = _UxGT("Режим OD"); - LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("Режим збереження"); - LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Встановити BLT на 5V"); - LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Встановити BLT на OD"); - LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Звітувати злив"); - LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("НЕБЕЗПЕКА: Неправильні параметри приводять до пошкоджень! Продовжити?"); - LSTR MSG_TOUCHMI_PROBE = _UxGT("Z-Зонд TouchMI"); - LSTR MSG_TOUCHMI_INIT = _UxGT("Ініц. TouchMI"); - LSTR MSG_TOUCHMI_ZTEST = _UxGT("Тест Z-зміщення"); - LSTR MSG_TOUCHMI_SAVE = _UxGT("Зберегти"); - LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("Установити TouchMI"); - LSTR MSG_MANUAL_DEPLOY = _UxGT("Установити Z-зонд"); - LSTR MSG_MANUAL_STOW = _UxGT("Завантажити Z-зонд"); - LSTR MSG_HOME_FIRST = _UxGT("Спочатку дім %s"); - LSTR MSG_ZPROBE_OFFSETS = _UxGT("Зміщення зонду"); - LSTR MSG_ZPROBE_XOFFSET = _UxGT("Зміщення по X"); - LSTR MSG_ZPROBE_YOFFSET = _UxGT("Зміщення по Y"); - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Зміщення по Z"); - LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Зміщення по @"); - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Крок Z зміщення"); - LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Рухати сопло до столу"); - LSTR MSG_BABYSTEP_X = _UxGT("Мікрокрок X"); - LSTR MSG_BABYSTEP_Y = _UxGT("Мікрокрок Y"); - LSTR MSG_BABYSTEP_Z = _UxGT("Мікрокрок Z"); - LSTR MSG_BABYSTEP_N = _UxGT("Мікрокрок @"); - LSTR MSG_BABYSTEP_TOTAL = _UxGT("Сумарно"); - LSTR MSG_ENDSTOP_ABORT = _UxGT("Кінцевик спрацював"); - LSTR MSG_ERR_HEATING_FAILED = _UxGT("Збій нагріву"); - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("ЗАВИЩЕНА Т") LCD_STR_DEGREE; - LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("ВИТІК ТЕПЛА"); - LSTR MSG_ERR_COOLING_FAILED = _UxGT("ОХОЛОДЖ. НЕ ВДАЛОСЬ"); - LSTR MSG_ERR_MAXTEMP = _UxGT("МАКСИМАЛЬНА Т") LCD_STR_DEGREE; - LSTR MSG_ERR_MINTEMP = _UxGT("МІНІМАЛЬНА Т") LCD_STR_DEGREE; - LSTR MSG_HALTED = _UxGT("ПРИНТЕР ЗУПИНЕНО"); - LSTR MSG_PLEASE_RESET = _UxGT("Перезавантажте"); - LSTR MSG_HEATING = _UxGT("Нагрівання..."); - LSTR MSG_COOLING = _UxGT("Охолодження..."); - LSTR MSG_BED_HEATING = _UxGT("Нагрів столу..."); - LSTR MSG_PROBE_HEATING = _UxGT("Нагрів зонду..."); - LSTR MSG_CHAMBER_HEATING = _UxGT("Нагрів камери..."); - LSTR MSG_BED_COOLING = _UxGT("Охолодж. столу..."); - LSTR MSG_PROBE_COOLING = _UxGT("Охолодж. зонду..."); - LSTR MSG_CHAMBER_COOLING = _UxGT("Охолодж. камери..."); - LSTR MSG_LASER_COOLING = _UxGT("Охолодж. лазеру..."); - LSTR MSG_DELTA_CALIBRATE = _UxGT("Калібрування Delta"); - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Калібрувати X"); - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Калібрувати Y"); - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Калібрувати Z"); - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Калібр. центр"); - LSTR MSG_DELTA_SETTINGS = _UxGT("Параметри Delta"); - LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Автокалібрування"); - LSTR MSG_DELTA_DIAG_ROD = _UxGT("Діагональ стрижня"); - LSTR MSG_DELTA_HEIGHT = _UxGT("Висота"); - LSTR MSG_DELTA_RADIUS = _UxGT("Радіус"); - - LSTR MSG_INFO_MENU = _UxGT("Про принтер"); - LSTR MSG_INFO_PRINTER_MENU = _UxGT("Дані принтера"); - - LSTR MSG_3POINT_LEVELING = _UxGT("3-точкове вирівн."); - LSTR MSG_LINEAR_LEVELING = _UxGT("Лінійне вирівн."); - LSTR MSG_BILINEAR_LEVELING = _UxGT("Білінійне вирівн."); - LSTR MSG_UBL_LEVELING = _UxGT("UBL"); - LSTR MSG_MESH_LEVELING = _UxGT("Вирівнювання сітки"); - LSTR MSG_MESH_DONE = _UxGT("Зондування виконано"); - - LSTR MSG_INFO_STATS_MENU = _UxGT("Статистика принтера"); - LSTR MSG_INFO_BOARD_MENU = _UxGT("Про плату"); - LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Термістори"); - LSTR MSG_INFO_EXTRUDERS = _UxGT("Екструдери"); - LSTR MSG_INFO_BAUDRATE = _UxGT("Бод"); - LSTR MSG_INFO_PROTOCOL = _UxGT("Протокол"); - LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Контр.витіку ") LCD_STR_THERMOMETER _UxGT(" Вимк"); - LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Контр.витіку ") LCD_STR_THERMOMETER _UxGT(" Увімк"); - LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Час прост. хот-у"); - - LSTR MSG_CASE_LIGHT = _UxGT("Підсвітка"); - LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Яскравість світла"); - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("НЕ ТОЙ ПРИНТЕР"); - - LSTR MSG_COLORS_GET = _UxGT("Отримати колір"); // ProUI - LSTR MSG_COLORS_SELECT = _UxGT("Кольори"); // ProUI - LSTR MSG_COLORS_APPLIED = _UxGT("Кольори застос."); // ProUI - LSTR MSG_COLORS_RED = _UxGT("Червоний"); // ProUI / JyersUI - LSTR MSG_COLORS_GREEN = _UxGT("Зелений"); // ProUI / JyersUI - LSTR MSG_COLORS_BLUE = _UxGT("Синій"); // ProUI / JyersUI - LSTR MSG_COLORS_WHITE = _UxGT("Білий"); // ProUI - LSTR MSG_UI_LANGUAGE = _UxGT("Мова"); // ProUI - LSTR MSG_SOUND_ENABLE = _UxGT("Дозволити звук"); // ProUI - LSTR MSG_LOCKSCREEN = _UxGT("Блокувати екран"); // ProUI - //MSG_LOCKSCREEN_LOCKED - //MSG_LOCKSCREEN_UNLOCK - LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Перезавантаж..."); // ProUI - LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Немає носія"); // ProUI - LSTR MSG_PLEASE_PREHEAT = _UxGT("Нагрійте хотенд"); // ProUI - - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Друків"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Загалом"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Найдовше"); - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Екструдовано"); - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Завершено"); - LSTR MSG_INFO_MIN_TEMP = _UxGT("Мін. ") LCD_STR_THERMOMETER; - LSTR MSG_INFO_MAX_TEMP = _UxGT("Макс. ") LCD_STR_THERMOMETER; - LSTR MSG_INFO_PSU = _UxGT("Блок жив-ня"); - - LSTR MSG_DRIVE_STRENGTH = _UxGT("Сила мотору"); - LSTR MSG_DAC_PERCENT_N = _UxGT("Драйвер @, %"); - LSTR MSG_ERROR_TMC = _UxGT("ЗБІЙ ЗВ'ЯЗКУ З TMC"); - LSTR MSG_DAC_EEPROM_WRITE = _UxGT("Запис ЦАП у EEPROM"); - LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("ЗАМІНА ПРУТКА"); - LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("ЗУПИНКА ДРУКУ"); - LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("ЗАВАНТАЖИТИ ПРУТОК"); - LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("ВИВАНТАЖИТИ ПРУТОК"); - LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("ПАРАМ.ПРОДОВЖЕННЯ:"); - LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Видавити ще"); - LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Відновити друк"); - LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Сопло: "); - LSTR MSG_RUNOUT_SENSOR = _UxGT("Датчик закінч.прутка"); - LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("До закінч.,мм"); - LSTR MSG_KILL_HOMING_FAILED = _UxGT("Помилка паркування"); - LSTR MSG_LCD_PROBING_FAILED = _UxGT("Помилка зондування"); - - LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("ОБЕРІТЬ ПРУТОК"); - LSTR MSG_MMU2_MENU = _UxGT("MMU"); - LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("Онови прошивку MMU!"); - LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU потребує уваги"); - LSTR MSG_MMU2_RESUME = _UxGT("MMU Продовжити"); - LSTR MSG_MMU2_RESUMING = _UxGT("MMU Продовження..."); - LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("MMU Завантажити"); - LSTR MSG_MMU2_LOAD_ALL = _UxGT("MMU Завантажити все"); - LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("MMU Завант. в сопло"); - LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("MMU Звільнити"); - LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("MMU Звільнити ~"); - LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("MMU Вивантажити"); - LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Завантаж. %i..."); - LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Викидання прутка..."); - LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Вивантаження..."); - LSTR MSG_MMU2_ALL = _UxGT("Все"); - LSTR MSG_MMU2_FILAMENT_N = _UxGT("Пруток ~"); - LSTR MSG_MMU2_RESET = _UxGT("Перезапуск MMU"); - LSTR MSG_MMU2_RESETTING = _UxGT("MMU Перезапуск..."); - LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Видаліть, натисніть"); - - LSTR MSG_MIX = _UxGT("Змішув."); - LSTR MSG_MIX_COMPONENT_N = _UxGT("Компонент {"); - LSTR MSG_MIXER = _UxGT("Змішувач"); - LSTR MSG_GRADIENT = _UxGT("Градієнт"); - LSTR MSG_FULL_GRADIENT = _UxGT("Повний градієнт"); - LSTR MSG_TOGGLE_MIX = _UxGT("Переключ.змішування"); - LSTR MSG_CYCLE_MIX = _UxGT("Циклічне змішування"); - LSTR MSG_GRADIENT_MIX = _UxGT("Градієнт змішування"); - LSTR MSG_REVERSE_GRADIENT = _UxGT("Змінити градієнт"); - LSTR MSG_ACTIVE_VTOOL = _UxGT("Актив. В-інструм."); - LSTR MSG_GRADIENT_ALIAS = _UxGT("Псевдонім В-інструм"); - LSTR MSG_RESET_VTOOLS = _UxGT("Зкидання В-інструм."); - LSTR MSG_START_VTOOL = _UxGT("Початок В-інструменту"); - LSTR MSG_END_VTOOL = _UxGT("Кінець В-інструменту"); - LSTR MSG_COMMIT_VTOOL = _UxGT("Змішати В-інструменти"); - LSTR MSG_VTOOLS_RESET = _UxGT("В-інструменти зкинуті"); - LSTR MSG_START_Z = _UxGT("Початок Z:"); - LSTR MSG_END_Z = _UxGT(" Кінець Z:"); - - LSTR MSG_GAMES = _UxGT("Ігри"); - LSTR MSG_BRICKOUT = _UxGT("Цеглини"); - LSTR MSG_INVADERS = _UxGT("Вторгнення"); - LSTR MSG_SNAKE = _UxGT("Zм!йк@"); - LSTR MSG_MAZE = _UxGT("Лабіринт"); - - LSTR MSG_BAD_PAGE = _UxGT("Погана сторінка"); - LSTR MSG_BAD_PAGE_SPEED = _UxGT("Погана швидк. стор."); - - LSTR MSG_EDIT_PASSWORD = _UxGT("Редагувати пароль"); - LSTR MSG_LOGIN_REQUIRED = _UxGT("Потрібен логін"); - LSTR MSG_PASSWORD_SETTINGS = _UxGT("Параметри паролю"); - LSTR MSG_ENTER_DIGIT = _UxGT("Введіть цифру"); - LSTR MSG_CHANGE_PASSWORD = _UxGT("Змінити пароль"); - LSTR MSG_REMOVE_PASSWORD = _UxGT("Видалити пароль"); - LSTR MSG_PASSWORD_SET = _UxGT("Пароль: "); - LSTR MSG_START_OVER = _UxGT("Старт через"); - LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Не забудь зберегти!"); - LSTR MSG_PASSWORD_REMOVED = _UxGT("Пароль видалений"); - - // - // Filament Change screens show up to 2 lines on a 3-line display - // - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Паркування...")); - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Продовжити друк")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Зачекайте...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Вставте і натисніть")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Нагріти сопло")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Нагрів сопла...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Вивід прутка...")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Ввід прутка...")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Очищення прутка...")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Завершити очищення")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Поновлення друку...")); - - LSTR MSG_TMC_DRIVERS = _UxGT("Драйвери TMC"); - LSTR MSG_TMC_CURRENT = _UxGT("Струм драйвера"); - LSTR MSG_TMC_HYBRID_THRS = _UxGT("Гібридний поріг"); - LSTR MSG_TMC_HOMING_THRS = _UxGT("Дім без кінцевиків"); - LSTR MSG_TMC_STEPPING_MODE = _UxGT("Режим мікрокроку"); - LSTR MSG_TMC_STEALTHCHOP = _UxGT("Тихий режим увімк."); - - LSTR MSG_SERVICE_RESET = _UxGT("Зкидання"); - LSTR MSG_SERVICE_IN = _UxGT(" в:"); - LSTR MSG_BACKLASH = _UxGT("Люфт"); - LSTR MSG_BACKLASH_CORRECTION = _UxGT("Виправлення"); - LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Зглажування"); - - LSTR MSG_LEVEL_X_AXIS = _UxGT("Рівень вісі X"); - LSTR MSG_AUTO_CALIBRATE = _UxGT("Авто калібрування"); - - LSTR MSG_FTDI_HEATER_TIMEOUT = _UxGT("Час простою збіг, температура впала. Натисніть ОК, щоби знову нагріти та продовжити"); - LSTR MSG_HEATER_TIMEOUT = _UxGT("Час нагрівача збіг"); - LSTR MSG_REHEAT = _UxGT("Поновити нагрів"); - LSTR MSG_REHEATING = _UxGT("Нагрівання..."); - - LSTR MSG_PROBE_WIZARD = _UxGT("Майстер Z-зонда"); - LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Зондув.контр.точки Z"); - LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Рух до точки зондув."); - - LSTR MSG_SOUND = _UxGT("Звук"); - - LSTR MSG_TOP_LEFT = _UxGT("Верхній лівий"); - LSTR MSG_BOTTOM_LEFT = _UxGT("Нижній лівий"); - LSTR MSG_TOP_RIGHT = _UxGT("Верхній правий"); - LSTR MSG_BOTTOM_RIGHT = _UxGT("Нижній правий"); - LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Калібрування успішне"); - LSTR MSG_CALIBRATION_FAILED = _UxGT("Збій калібрування"); - - LSTR MSG_DRIVER_BACKWARD = _UxGT(" драйвер назад"); - - LSTR MSG_SD_CARD = _UxGT("SD Картка"); - LSTR MSG_USB_DISK = _UxGT("USB Диск"); - - LSTR MSG_SHORT_DAY = _UxGT("д"); // One character only - LSTR MSG_SHORT_HOUR = _UxGT("г"); // One character only - LSTR MSG_SHORT_MINUTE = _UxGT("х"); // One character only + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" Готовий."); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = _UxGT("SD-картка вставлена"); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = _UxGT("SD-картка видалена"); // (MEDIA_TYPE_EN) Removed + LSTR MSG_LCD_ENDSTOPS = _UxGT("Кінцевик"); // Endstops + LSTR MSG_MAIN_MENU = _UxGT("Основне меню"); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("Вимкнути двигуни"); // Disable Steppers + LSTR MSG_AUTO_HOME = _UxGT("Авто паркування"); // Auto Home + LSTR MSG_AUTO_HOME_X = _UxGT("Паркування X"); // Home X + LSTR MSG_AUTO_HOME_Y = _UxGT("Паркування Y"); // Home Y + LSTR MSG_AUTO_HOME_Z = _UxGT("Паркування Z"); // Home Z + LSTR MSG_LEVEL_BED_HOMING = _UxGT("Паркування XYZ"); // Homing XYZ + LSTR MSG_LEVEL_BED_WAITING = _UxGT("Почати"); // Click to Begin + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Наступна точка"); // Next Point + LSTR MSG_LEVEL_BED_DONE = _UxGT("Завершено!"); // Leveling Done! + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Встан. зміщ. дому"); // Set Home Offsets + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Зміщення прийняті"); // Offsets Applied + LSTR MSG_PREHEAT_1 = _UxGT("Нагрів ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = _UxGT("Нагрів ") PREHEAT_1_LABEL " ~"; // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" сопло"); // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" сопло ~"); // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_1_ALL = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" все"); // Preheat (PREHEAT_1_LABEL) All + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" стіл"); // Preheat (PREHEAT_1_LABEL) Bed + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Нагрів ") PREHEAT_1_LABEL _UxGT(" налашт"); // Preheat (PREHEAT_1_LABEL) Conf + LSTR MSG_PREHEAT_M = _UxGT("Нагрів $"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("Нагрів $ ~"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("Нагрів $ сопло"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("Нагрів $ сопло ~"); // Preheat $ End ~ + LSTR MSG_PREHEAT_M_ALL = _UxGT("Нагрів $ все"); // Preheat $ All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Нагрів $ стіл"); // Preheat $ Bed + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Нагрів $ налашт"); // Preheat $ Conf + LSTR MSG_COOLDOWN = _UxGT("Вимкнути нагрів"); // Cooldown + LSTR MSG_SWITCH_PS_ON = _UxGT("Увімкнути живлення"); // Switch Power On + LSTR MSG_SWITCH_PS_OFF = _UxGT("Вимкнути живлення"); // Switch Power Off + LSTR MSG_EXTRUDE = _UxGT("Екструзія"); // Extrude + LSTR MSG_RETRACT = _UxGT("Втягування"); // Retract + LSTR MSG_MOVE_AXIS = _UxGT("Рух по осям"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("Проба/вирівнювання"); // Probe and Level + LSTR MSG_BED_LEVELING = _UxGT("Вирівнювання столу"); // Bed Leveling + LSTR MSG_LEVEL_BED = _UxGT("Вирівняти стіл"); // Level Bed + LSTR MSG_MOVE_X = _UxGT("Рух по X"); // Move X + LSTR MSG_MOVE_Y = _UxGT("Рух по Y"); // Move Y + LSTR MSG_MOVE_Z = _UxGT("Рух по Z"); // Move Z + LSTR MSG_MOVE_N = _UxGT("Рух по @"); // Move @ + LSTR MSG_MOVE_E = _UxGT("Екструдер"); // Move Extruder + LSTR MSG_MOVE_EN = _UxGT("Екструдер *"); // Move * + LSTR MSG_MOVE_N_MM = _UxGT("Рух $мм"); // Move $mm + LSTR MSG_MOVE_N_IN = _UxGT("Рух $in"); // Move $in + LSTR MSG_MOVE_N_DEG = _UxGT("Рух $") LCD_STR_DEGREE; // Move $(LCD_STR_DEGREE) + LSTR MSG_SPEED = _UxGT("Швидкість"); // Speed + LSTR MSG_MESH_Z_OFFSET = _UxGT("Z Столу"); // Bed Z + LSTR MSG_NOZZLE = _UxGT("Сопло, ") LCD_STR_DEGREE _UxGT("C"); // Nozzle + LSTR MSG_NOZZLE_N = _UxGT("Сопло ~"); // Nozzle ~ + LSTR MSG_BED = _UxGT("Стіл, ") LCD_STR_DEGREE _UxGT("C"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("Швидк. вент."); // Fan Speed + LSTR MSG_FAN_SPEED_N = _UxGT("Швидк. вент. ~"); // Fan Speed ~ + LSTR MSG_FLOW = _UxGT("Потік"); // Flow + LSTR MSG_FLOW_N = _UxGT("Потік ~"); // Flow ~ + LSTR MSG_CONTROL = _UxGT("Налаштування"); // Control + LSTR MSG_AUTOTEMP = _UxGT("Автотемпер."); // Autotemp + LSTR MSG_SELECT_E = _UxGT("Вибрати *"); // Select * + LSTR MSG_ACC = _UxGT("Прискорорення"); // Accel + LSTR MSG_VTRAV_MIN = _UxGT("Переміщ. мін"); // Min Travel Speed + LSTR MSG_ACCELERATION = _UxGT("Прискорення, мм/с2"); // Acceleration + LSTR MSG_AMAX_A = _UxGT("Приск.макс ") STR_A; // Max (STR_A) Accel + LSTR MSG_AMAX_B = _UxGT("Приск.макс ") STR_B; // Max (STR_B) Accel + LSTR MSG_AMAX_C = _UxGT("Приск.макс ") STR_C; // Max (STR_C) Accel + LSTR MSG_AMAX_N = _UxGT("Приск.макс @"); // Max @ Accel + LSTR MSG_AMAX_E = _UxGT("Приск.макс E"); // Max E Accel + LSTR MSG_AMAX_EN = _UxGT("Приск.макс *"); // Max * Accel + LSTR MSG_A_RETRACT = _UxGT("Приск.втягув."); // Retract Accel + LSTR MSG_A_TRAVEL = _UxGT("Приск.переміщ."); // Travel Accel + LSTR MSG_STEPS_PER_MM = _UxGT("Кроків на мм"); // Steps/mm + LSTR MSG_A_STEPS = STR_A _UxGT(" кроків/мм"); // (STR_A) Steps/mm + LSTR MSG_B_STEPS = STR_B _UxGT(" кроків/мм"); // (STR_B) Steps/mm + LSTR MSG_C_STEPS = STR_C _UxGT(" кроків/мм"); // (STR_C) Steps/mm + LSTR MSG_N_STEPS = _UxGT("@ кроків/мм"); // @ steps/mm + LSTR MSG_E_STEPS = _UxGT("E кроків/мм"); // E steps/mm + LSTR MSG_EN_STEPS = _UxGT("* кроків/мм"); // * Steps/mm + LSTR MSG_TEMPERATURE = _UxGT("Температура"); // Temperature + LSTR MSG_MOTION = _UxGT("Рух"); // Motion + LSTR MSG_FILAMENT = _UxGT("Пруток"); // Filament + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E, мм") SUPERSCRIPT_THREE; // E in mm(SUPERSCRIPT_THREE) + LSTR MSG_FILAMENT_DIAM = _UxGT("Діам. прутка"); // Fil. Dia. + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Діам. прутка *"); // Fil. Dia. * + LSTR MSG_CONTRAST = _UxGT("Контраст"); // LCD Contrast + LSTR MSG_STORE_EEPROM = _UxGT("Зберегти в EEPROM"); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("Зчитати з EEPROM"); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("На базові параметри"); // Restore Defaults + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT(" Поновити"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT("Головний екран"); // Info Screen + LSTR MSG_PREPARE = _UxGT("Підготувати"); // Prepare + LSTR MSG_TUNE = _UxGT("Підлаштування"); // Tune + LSTR MSG_PAUSE_PRINT = _UxGT("Призупинити друк"); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("Відновити друк"); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("Скасувати друк"); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("Друкувати з SD"); // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = _UxGT("SD-картки немає"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_DWELL = _UxGT("Сон..."); // Sleep... + LSTR MSG_USERWAIT = _UxGT("Продовжити..."); // Click to Resume... + LSTR MSG_PRINT_ABORTED = _UxGT("Друк скасовано"); // Print Aborted + LSTR MSG_NO_MOVE = _UxGT("Немає руху."); // No Move. + LSTR MSG_KILLED = _UxGT("ПЕРЕРВАНО. "); // KILLED. + LSTR MSG_STOPPED = _UxGT("ЗУПИНЕНО. "); // STOPPED. + LSTR MSG_CONTROL_RETRACT = _UxGT("Втягув., мм"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Зміна втяг.мм"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACTF = _UxGT("Втягування V"); // Retract V + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Підскок, мм"); // Hop mm + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Поверн., мм"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Повер.зміни,мм"); // S Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("Повернення V"); // Unretract V + LSTR MSG_AUTORETRACT = _UxGT("Автовтягув."); // Auto-Retract + LSTR MSG_FILAMENTCHANGE = _UxGT("Заміна прутка"); // Change Filament + LSTR MSG_FILAMENTCHANGE_E = _UxGT("Заміна прутка *"); // Change * Filament + LSTR MSG_ATTACH_MEDIA = _UxGT("Вставити SD-картку"); // Attach (MEDIA_TYPE_EN) + LSTR MSG_ATTACH_SD = _UxGT("Вставити SD-картку"); // Attach SD Card + LSTR MSG_ATTACH_USB = _UxGT("Вставити USB флешка"); // Attach USB Drive + LSTR MSG_CHANGE_MEDIA = _UxGT("Заміна SD-картки"); // Refresh (MEDIA_TYPE_EN) + LSTR MSG_RUN_AUTOFILES = _UxGT("Автостарт"); // Run Autofiles + LSTR MSG_ZPROBE_OUT = _UxGT("Z-Зонд поза столом"); // Z Probe Past Bed + LSTR MSG_BLTOUCH_RESET = _UxGT("Зкинути зонд"); // Reset + LSTR MSG_ZPROBE_XOFFSET = _UxGT("Зміщення по X"); // Probe X Offset + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Зміщення по Y"); // Probe Y Offset + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Зміщення по Z"); // Probe Z Offset + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Зміщення по @"); // Probe @ Offset + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Крок Z зміщення"); // Babystep Probe Z + LSTR MSG_BABYSTEP_X = _UxGT("Мікрокрок X"); // Babystep X + LSTR MSG_BABYSTEP_Y = _UxGT("Мікрокрок Y"); // Babystep Y + LSTR MSG_BABYSTEP_Z = _UxGT("Мікрокрок Z"); // Babystep Z + LSTR MSG_BABYSTEP_N = _UxGT("Мікрокрок @"); // Babystep @ + LSTR MSG_ENDSTOP_ABORT = _UxGT("Кінцевик спрацював"); // Endstop Abort + LSTR MSG_ERR_HEATING_FAILED = _UxGT("Збій нагріву"); // Heating Failed + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("ЗАВИЩЕНА Т") LCD_STR_DEGREE; // Err: REDUNDANT TEMP + LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("ВИТІК ТЕПЛА"); // THERMAL RUNAWAY + LSTR MSG_ERR_MAXTEMP = _UxGT("МАКСИМАЛЬНА Т") LCD_STR_DEGREE; // Err: MAXTEMP + LSTR MSG_ERR_MINTEMP = _UxGT("МІНІМАЛЬНА Т") LCD_STR_DEGREE; // Err: MINTEMP + LSTR MSG_HALTED = _UxGT("ПРИНТЕР ЗУПИНЕНО"); // PRINTER HALTED + LSTR MSG_PLEASE_RESET = _UxGT("Перезавантажте"); // Please Reset + LSTR MSG_HEATING = _UxGT("Нагрівання..."); // Heating... + LSTR MSG_BED_HEATING = _UxGT("Нагрів столу..."); // Bed Heating... + LSTR MSG_DELTA_CALIBRATE = _UxGT("Калібрування Delta"); // Delta Calibration + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Калібрувати X"); // Calibrate X + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Калібрувати Y"); // Calibrate Y + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Калібрувати Z"); // Calibrate Z + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Калібр. центр"); // Calibrate Center + LSTR MSG_INFO_MENU = _UxGT("Про принтер"); // About Printer + LSTR MSG_INFO_PRINTER_MENU = _UxGT("Дані принтера"); // Printer Info + LSTR MSG_INFO_STATS_MENU = _UxGT("Статистика принтера"); // Stats + LSTR MSG_INFO_BOARD_MENU = _UxGT("Про плату"); // Board Info + LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Термістори"); // Thermistors + LSTR MSG_INFO_EXTRUDERS = _UxGT("Екструдери"); // Extruders + LSTR MSG_INFO_BAUDRATE = _UxGT("Бод"); // Baud + LSTR MSG_INFO_PROTOCOL = _UxGT("Протокол"); // Protocol + LSTR MSG_CASE_LIGHT = _UxGT("Підсвітка"); // Case Light + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Друків"); // Prints + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Завершено"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Загалом"); // Total + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Найдовше"); // Longest + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Екструдовано"); // Extruded + LSTR MSG_INFO_MIN_TEMP = _UxGT("Мін. ") LCD_STR_THERMOMETER; // Min Temp + LSTR MSG_INFO_MAX_TEMP = _UxGT("Макс. ") LCD_STR_THERMOMETER; // Max Temp + LSTR MSG_INFO_PSU = _UxGT("Блок жив-ня"); // PSU + LSTR MSG_DRIVE_STRENGTH = _UxGT("Сила мотору"); // Drive Strength + LSTR MSG_DAC_EEPROM_WRITE = _UxGT("Запис ЦАП у EEPROM"); // DAC EEPROM Write + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Відновити друк"); // Continue + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Зачекайте...")); // |Please wait... + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Вставте і натисніть")); // |Insert and Click + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Вивід прутка...")); // |Ejecting... + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Ввід прутка...")); // |Loading... + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Поновлення друку...")); // |Resuming... + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(", ") LCD_STR_DEGREE _UxGT("С мін"); // (LCD_STR_THERMOMETER) Min + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(", ") LCD_STR_DEGREE _UxGT("С макс"); // (LCD_STR_THERMOMETER) Max + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Фактор"); // (LCD_STR_THERMOMETER) Fact + LSTR MSG_LCD_ON = _UxGT("Увім"); // On + LSTR MSG_LCD_OFF = _UxGT("Вимк"); // Off + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("НЕ ТОЙ ПРИНТЕР"); // INCORRECT PRINTER + LSTR MSG_DEBUG_MENU = _UxGT("Меню Debug"); // Debug Menu + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Тест лінії прогр."); // Progress Bar Test + LSTR MSG_MOVING = _UxGT("Рух..."); // Moving... + LSTR MSG_FREE_XY = _UxGT("Звільнити XY"); // Free XY + LSTR MSG_HOME_FIRST = _UxGT("Спочатку дім %s"); // Home %s First + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Нагрів сопла...")); // |Heating... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Нагріти сопло")); // |Click to heat + LSTR MSG_YES = _UxGT("ТАК"); // YES + LSTR MSG_NO = _UxGT("НІ"); // NO + LSTR MSG_BACK = _UxGT("Назад"); // Back + LSTR MSG_MEDIA_ABORTING = _UxGT("Переривання..."); // Aborting... + LSTR MSG_MEDIA_READ_ERROR = _UxGT("Помилка зчитування"); // (MEDIA_TYPE_EN) read error + LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB диск видалений"); // USB device removed + LSTR MSG_USB_FD_USB_FAILED = _UxGT("Помилка USB диску"); // USB start failed + LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Прогр.кінцевики"); // Soft Endstops + LSTR MSG_ADVANCED_SETTINGS = _UxGT("Інші налаштування"); // Advanced Settings + LSTR MSG_CONFIGURATION = _UxGT("Конфігурація"); // Configuration + LSTR MSG_AUTO_Z_ALIGN = _UxGT("Авто Z-вирівнювання"); // Auto Z-Align + LSTR MSG_Z_FADE_HEIGHT = _UxGT("Висота спаду"); // Fade Height + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Нагрів свого"); // Preheat Custom + LSTR MSG_LASER_MENU = _UxGT("Керування лазером"); // Laser Control + LSTR MSG_LASER_POWER = _UxGT("Потужн. лазера"); // Laser Power + LSTR MSG_SPINDLE_MENU = _UxGT("Керування шпінделем"); // Spindle Control + LSTR MSG_SPINDLE_POWER = _UxGT("Потужн. шпінд."); // Spindle Pwr + LSTR MSG_SPINDLE_REVERSE = _UxGT("Шпіндель назад"); // Spindle Reverse + LSTR MSG_BED_TRAMMING = _UxGT("Вирівняти кути"); // Bed Tramming + LSTR MSG_NEXT_CORNER = _UxGT("Наступний кут"); // Next Corner + LSTR MSG_MESH_EDITOR = _UxGT("Зміщення Z"); // Mesh Editor + LSTR MSG_EDIT_MESH = _UxGT("Редагувати сітку"); // Edit Mesh + LSTR MSG_EDITING_STOPPED = _UxGT("Редагув. зупинено"); // Mesh Editing Stopped + LSTR MSG_PROBING_POINT = _UxGT("Точка сітки"); // Probing Point + LSTR MSG_MESH_X = _UxGT("Індекс X"); // Index X + LSTR MSG_MESH_Y = _UxGT("Індекс Y"); // Index Y + LSTR MSG_MESH_EDIT_Z = _UxGT("Значення Z"); // Z Value + LSTR MSG_CUSTOM_COMMANDS = _UxGT("Власні команди"); // Custom Commands + LSTR MSG_M48_TEST = _UxGT("M48 тест зонду"); // M48 Probe Test + LSTR MSG_M48_POINT = _UxGT("M48 точка"); // M48 Point + LSTR MSG_M48_DEVIATION = _UxGT("Відхилення"); // Deviation + LSTR MSG_IDEX_MENU = _UxGT("Режим IDEX"); // IDEX Mode + LSTR MSG_OFFSETS_MENU = _UxGT("Зміщення сопел"); // Tool Offsets + LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Авто паркування"); // Auto-Park + LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Дуплікація"); // Duplication + LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Дзеркальна копія"); // Mirrored Copy + LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Повний контроль"); // Full Control + LSTR MSG_HOTEND_OFFSET_Z = _UxGT("Друге сопло Z"); // 2nd Nozzle Z + LSTR MSG_HOTEND_OFFSET_N = _UxGT("Друге сопло @"); // 2nd Nozzle @ + LSTR MSG_UBL_DOING_G29 = _UxGT("Виконується G29"); // Doing G29 + LSTR MSG_UBL_TOOLS = _UxGT("Інструменти UBL"); // UBL Tools + LSTR MSG_LCD_TILTING_MESH = _UxGT("Точка нахилу"); // Tilting Point + LSTR MSG_UBL_MANUAL_MESH = _UxGT("Ручне введ. сітки"); // Manually Build Mesh + LSTR MSG_UBL_BC_INSERT = _UxGT("Розм. шайбу і вимір."); // Place Shim & Measure + LSTR MSG_UBL_BC_INSERT2 = _UxGT("Вимірювання"); // Measure + LSTR MSG_UBL_BC_REMOVE = _UxGT("Видали і вимір. стіл"); // Remove & Measure Bed + LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Рух до наступної"); // Moving to next + LSTR MSG_UBL_SET_TEMP_BED = LCD_STR_THERMOMETER _UxGT(" столу, ") LCD_STR_DEGREE _UxGT("C"); // Bed Temp + LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Своя ") LCD_STR_THERMOMETER _UxGT(" столу,") LCD_STR_DEGREE _UxGT("C"); // Bed Temp + LSTR MSG_UBL_SET_TEMP_HOTEND = LCD_STR_THERMOMETER _UxGT(" сопла, ") LCD_STR_DEGREE _UxGT("C"); // Hotend Temp + LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Своя ") LCD_STR_THERMOMETER _UxGT(" сопла,") LCD_STR_DEGREE _UxGT("C"); // Hotend Temp + LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Редагувати свою"); // Edit Custom Mesh + LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Точне редаг. сітки"); // Fine Tuning Mesh + LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Сітка побудована"); // Done Editing Mesh + LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Будувати свою"); // Build Custom Mesh + LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Будувати сітку"); // Build Mesh + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Будувати сітку ($)"); // Build Mesh ($) + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Підтвердити ($)"); // Validate Mesh ($) + LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Буд. холодну сітку"); // Build Cold Mesh + LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Встан.висоту сітки"); // Adjust Mesh Height + LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Висота"); // Height Amount + LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Підтвердити сітку"); // Validate Mesh + LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Підтвердити свою"); // Validate Custom Mesh + LSTR MSG_G26_HEATING_BED = _UxGT("G26 нагрів столу"); // G26 Heating Bed + LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 нагрів сопла"); // G26 Heating Nozzle + LSTR MSG_G26_MANUAL_PRIME = _UxGT("Ручне грунтування"); // Manual priming... + LSTR MSG_G26_FIXED_LENGTH = _UxGT("Фікс. довж. грунт."); // Fixed Length Prime + LSTR MSG_G26_PRIME_DONE = _UxGT("Грунтув. виконане"); // Done Priming + LSTR MSG_G26_CANCELED = _UxGT("G26 скасовано"); // G26 Canceled + LSTR MSG_G26_LEAVING = _UxGT("Вийти з G26"); // Leaving G26 + LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Продовжити сітку"); // Continue Bed Mesh + LSTR MSG_UBL_MESH_LEVELING = _UxGT("Вирівнювання сітки"); // Mesh Leveling + LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("3-точкове вирівн."); // 3-Point Leveling + LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Вирівнюв. растру"); // Grid Mesh Leveling + LSTR MSG_UBL_MESH_LEVEL = _UxGT("Вирівняти сітку"); // Level Mesh + LSTR MSG_UBL_SIDE_POINTS = _UxGT("Крайні точки"); // Side Points + LSTR MSG_UBL_MAP_TYPE = _UxGT("Тип мапи сітки"); // Map Type + LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Вивести мапу сітки"); // Output Mesh Map + LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Вивести на хост"); // Output for Host + LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Вивести в CSV"); // Output for CSV + LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Зберегти зовні"); // Off Printer Backup + LSTR MSG_UBL_INFO_UBL = _UxGT("Інформація по UBL"); // Output UBL Info + LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Обсяг заповн."); // Fill-in Amount + LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Ручне заповнення"); // Manual Fill-in + LSTR MSG_UBL_SMART_FILLIN = _UxGT("Розумне заповнення"); // Smart Fill-in + LSTR MSG_UBL_FILLIN_MESH = _UxGT("Заповнити сітку"); // Fill-in Mesh + LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Анулювати все"); // Invalidate All + LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Анулювати найближчу"); // Invalidate Closest + LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Точно налашт. все"); // Fine Tune All + LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Точно найближчу"); // Fine Tune Closest + LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Збереження сітки"); // Mesh Storage + LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Слот пам'яті"); // Memory Slot + LSTR MSG_UBL_LOAD_MESH = _UxGT("Завантажити сітку"); // Load Bed Mesh + LSTR MSG_UBL_SAVE_MESH = _UxGT("Зберегти сітку"); // Save Bed Mesh + LSTR MSG_MESH_LOADED = _UxGT("Сітка %i завантажена"); // Mesh %i Loaded + LSTR MSG_MESH_SAVED = _UxGT("Сітка %i збережена"); // Mesh %i Saved + LSTR MSG_UBL_NO_STORAGE = _UxGT("Немає носія"); // No Storage + LSTR MSG_UBL_SAVE_ERROR = _UxGT("Збій: збереж. UBL"); // UBL Save Error + LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Збій: відновл. UBL"); // UBL Restore Error + LSTR MSG_UBL_Z_OFFSET = _UxGT("Зміщення Z: "); // Z-Offset: + LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Зміщення Z зупинено"); // Z-Offset Stopped + LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("UBL покроково"); // Step-By-Step UBL + LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Збудувати холодну"); // 1. Build Cold Mesh + LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2.Розумне заповн-я"); // 2. Smart Fill-in + LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Затвердити сітку"); // 3. Validate Mesh + LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Точно налашт.все"); // 4. Fine Tune All + LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Затвердити сітку"); // 5. Validate Mesh + LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Точно налашт.все"); // 6. Fine Tune All + LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Зберегти сітку"); // 7. Save Bed Mesh + LSTR MSG_LED_CONTROL = _UxGT("Керування світлом"); // LED Control + LSTR MSG_LIGHTS = _UxGT("Підсвітка"); // Lights + LSTR MSG_LIGHT_N = _UxGT("Світло #{"); // Light #{ + LSTR MSG_LED_PRESETS = _UxGT("Передустан. світла"); // Light Presets + LSTR MSG_SET_LEDS_RED = _UxGT("Червоний"); // Red + LSTR MSG_SET_LEDS_ORANGE = _UxGT("Помаранчевий"); // Orange + LSTR MSG_SET_LEDS_YELLOW = _UxGT("Жовтий"); // Yellow + LSTR MSG_SET_LEDS_GREEN = _UxGT("Зелений"); // Green + LSTR MSG_SET_LEDS_BLUE = _UxGT("Синій"); // Blue + LSTR MSG_SET_LEDS_INDIGO = _UxGT("Індіго"); // Indigo + LSTR MSG_SET_LEDS_VIOLET = _UxGT("Фіолетовий"); // Violet + LSTR MSG_SET_LEDS_WHITE = _UxGT("Білий"); // White + LSTR MSG_SET_LEDS_DEFAULT = _UxGT("За умовчанням"); // Default + LSTR MSG_CUSTOM_LEDS = _UxGT("Своє світло"); // Custom Lights + LSTR MSG_INTENSITY_R = _UxGT("Рівень червоного"); // Red Intensity + LSTR MSG_INTENSITY_G = _UxGT("Рівень зеленого"); // Green Intensity + LSTR MSG_INTENSITY_B = _UxGT("Рівень синього"); // Blue Intensity + LSTR MSG_INTENSITY_W = _UxGT("Рівень білого"); // White Intensity + LSTR MSG_LED_BRIGHTNESS = _UxGT("Яскравість"); // Brightness + LSTR MSG_HOTEND_TOO_COLD = _UxGT("Сопло дуже холодне"); // Hotend too cold + LSTR MSG_CHAMBER = _UxGT("Камера,") LCD_STR_DEGREE _UxGT("C"); // Enclosure + LSTR MSG_STORED_FAN_N = _UxGT("Збереж. вент. ~"); // Stored Fan ~ + LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Дод. швидк. вент."); // Extra Fan Speed + LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Додат.вент. ~"); // Extra Fan Speed ~ + LSTR MSG_PID_AUTOTUNE = _UxGT("Автопідбір PID"); // PID Autotune + LSTR MSG_PID_AUTOTUNE_E = _UxGT("Автопідбір PID *"); // Autotune * PID + LSTR MSG_JERK = _UxGT("Ривок"); // Jerk + LSTR MSG_VA_JERK = _UxGT("V") STR_A _UxGT("-ривок"); // Max (STR_A) Jerk + LSTR MSG_VB_JERK = _UxGT("V") STR_B _UxGT("-ривок"); // Max (STR_B) Jerk + LSTR MSG_VC_JERK = _UxGT("V") STR_C _UxGT("-ривок"); // Max (STR_C) Jerk + LSTR MSG_VN_JERK = _UxGT("V@-ривок"); // Max @ Jerk + LSTR MSG_VE_JERK = _UxGT("Ve-ривок"); // Max E Jerk + LSTR MSG_JUNCTION_DEVIATION = _UxGT("Відхил.вузла"); // Junction Dev + LSTR MSG_MAX_SPEED = _UxGT("Швидкість, мм/с"); // Max Speed (mm/s) + LSTR MSG_VMAX_A = _UxGT("Швидк.макс ") STR_A; // Max (STR_A) Speed + LSTR MSG_VMAX_B = _UxGT("Швидк.макс ") STR_B; // Max (STR_B) Speed + LSTR MSG_VMAX_C = _UxGT("Швидк.макс ") STR_C; // Max (STR_C) Speed + LSTR MSG_VMAX_N = _UxGT("Швидк.макс @"); // Max @ Speed + LSTR MSG_VMAX_E = _UxGT("Швидк.макс E"); // Max E Speed + LSTR MSG_VMAX_EN = _UxGT("Швидк.макс *"); // Max * Speed + LSTR MSG_VMIN = _UxGT("Швидк. мін"); // Min Velocity + LSTR MSG_FILAMENT_UNLOAD = _UxGT("Вивантаж., мм"); // Unload mm + LSTR MSG_FILAMENT_LOAD = _UxGT("Завантаж., мм"); // Load mm + LSTR MSG_ADVANCE_K = _UxGT("Kоеф. просув."); // Advance K + LSTR MSG_ADVANCE_K_E = _UxGT("Kоеф. просув. *"); // Advance K * + LSTR MSG_INIT_EEPROM = _UxGT("Ініціаліз. EEPROM"); // Initialize EEPROM + LSTR MSG_MEDIA_UPDATE = _UxGT("Оновити SD-картку"); // (MEDIA_TYPE_EN) Update + LSTR MSG_RESET_PRINTER = _UxGT("Зкинути принтер"); // Reset Printer + LSTR MSG_START_PRINT = _UxGT("Почати друк"); // Start Print + LSTR MSG_BUTTON_NEXT = _UxGT("Далі"); // Next + LSTR MSG_BUTTON_INIT = _UxGT("Ініц-я"); // Init + LSTR MSG_BUTTON_STOP = _UxGT("Зупинка"); // Stop + LSTR MSG_BUTTON_PRINT = _UxGT("Друк"); // Print + LSTR MSG_BUTTON_RESET = _UxGT("Зкинути"); // Reset + LSTR MSG_BUTTON_CANCEL = _UxGT("Відміна"); // Cancel + LSTR MSG_BUTTON_DONE = _UxGT("Готово"); // Done + LSTR MSG_BUTTON_BACK = _UxGT("Назад"); // Back + LSTR MSG_BUTTON_PROCEED = _UxGT("Продовж."); // Proceed + LSTR MSG_PRINTING_OBJECT = _UxGT("Друк об'єкта"); // Print Obj + LSTR MSG_CANCEL_OBJECT = _UxGT("Завершити об'єкт"); // Cancel Obj + LSTR MSG_CANCEL_OBJECT_N = _UxGT("Завершити об'єкт {"); // Cancel Obj { + LSTR MSG_OUTAGE_RECOVERY = _UxGT("Віднов. після збою"); // Power Outage + LSTR MSG_PRINT_PAUSED = _UxGT("Друк призупинено"); // Print Paused + LSTR MSG_PRINTING = _UxGT("Друк..."); // Printing... + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("Поверн.зміни V"); // S UnRet V + LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Змінити довжини"); // Swap Length + LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("Очистити довжину"); // Purge Length + LSTR MSG_TOOL_CHANGE = _UxGT("Зміна сопла"); // Tool Change + LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Підняти по Z"); // Z Raise + LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Початк.швидк."); // Prime Speed + LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Швидк.втягув."); // Retract Speed + LSTR MSG_NOZZLE_STANDBY = _UxGT("Сопло очікує"); // Nozzle Standby + LSTR MSG_FILAMENTLOAD = _UxGT("Подати пруток"); // Load Filament + LSTR MSG_FILAMENTLOAD_E = _UxGT("Подати пруток *"); // Load * Filament + LSTR MSG_FILAMENTUNLOAD = _UxGT("Видалити пруток"); // Unload Filament + LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Видалити пруток *"); // Unload * Filament + LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Видалити все"); // Unload All + LSTR MSG_RELEASE_MEDIA = _UxGT("Видаліть SD-картку"); // Release (MEDIA_TYPE_EN) + LSTR MSG_SKEW_FACTOR = _UxGT("Фактор нахилу"); // Skew Factor + LSTR MSG_BLTOUCH = _UxGT("BLTouch"); // BLTouch + LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Само-тест"); // Self-Test + LSTR MSG_BLTOUCH_STOW = _UxGT("Підняти зонд"); // Stow + LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Опустити зонд"); // Deploy + LSTR MSG_BLTOUCH_SW_MODE = _UxGT("Режим SW"); // SW-Mode + LSTR MSG_BLTOUCH_5V_MODE = _UxGT("Режим 5V"); // 5V-Mode + LSTR MSG_BLTOUCH_OD_MODE = _UxGT("Режим OD"); // OD-Mode + LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("Режим збереження"); // Mode-Store + LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("Встановити BLT на 5V"); // Set BLTouch to 5V + LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("Встановити BLT на OD"); // Set BLTouch to OD + LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("Звітувати злив"); // Report Drain + LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("НЕБЕЗПЕКА: Неправильні параметри приводять до пошкоджень! Продовжити?"); // DANGER: Bad settings can cause damage! Proceed anyway? + LSTR MSG_TOUCHMI_PROBE = _UxGT("Z-Зонд TouchMI"); // TouchMI + LSTR MSG_TOUCHMI_INIT = _UxGT("Ініц. TouchMI"); // Init TouchMI + LSTR MSG_TOUCHMI_ZTEST = _UxGT("Тест Z-зміщення"); // Z Offset Test + LSTR MSG_TOUCHMI_SAVE = _UxGT("Зберегти"); // Save + LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("Установити TouchMI"); // Deploy TouchMI + LSTR MSG_MANUAL_DEPLOY = _UxGT("Установити Z-зонд"); // Deploy Z-Probe + LSTR MSG_MANUAL_STOW = _UxGT("Завантажити Z-зонд"); // Stow Z-Probe + LSTR MSG_BABYSTEP_TOTAL = _UxGT("Сумарно"); // Total + LSTR MSG_COOLING = _UxGT("Охолодження..."); // Cooling... + LSTR MSG_BED_COOLING = _UxGT("Охолодж. столу..."); // Bed Cooling... + LSTR MSG_CHAMBER_HEATING = _UxGT("Нагрів камери..."); // Chamber Heating... + LSTR MSG_CHAMBER_COOLING = _UxGT("Охолодж. камери..."); // Chamber Cooling... + LSTR MSG_DELTA_SETTINGS = _UxGT("Параметри Delta"); // Delta Settings + LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Автокалібрування"); // Auto Calibration + LSTR MSG_DELTA_DIAG_ROD = _UxGT("Діагональ стрижня"); // Diag Rod + LSTR MSG_DELTA_HEIGHT = _UxGT("Висота"); // Height + LSTR MSG_DELTA_RADIUS = _UxGT("Радіус"); // Radius + LSTR MSG_3POINT_LEVELING = _UxGT("3-точкове вирівн."); // 3-Point Leveling + LSTR MSG_LINEAR_LEVELING = _UxGT("Лінійне вирівн."); // Linear Leveling + LSTR MSG_BILINEAR_LEVELING = _UxGT("Білінійне вирівн."); // Bilinear Leveling + LSTR MSG_UBL_LEVELING = _UxGT("UBL"); // Unified Bed Leveling + LSTR MSG_MESH_LEVELING = _UxGT("Вирівнювання сітки"); // Mesh Leveling + LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Контр.витіку ") LCD_STR_THERMOMETER _UxGT(" Вимк"); // Runaway Watch: OFF + LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Контр.витіку ") LCD_STR_THERMOMETER _UxGT(" Увімк"); // Runaway Watch: ON + LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Яскравість світла"); // Light Brightness + LSTR MSG_DAC_PERCENT_N = _UxGT("Драйвер @, %"); // @ Driver % + LSTR MSG_ERROR_TMC = _UxGT("ЗБІЙ ЗВ'ЯЗКУ З TMC"); // TMC CONNECTION ERROR + LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("ЗАМІНА ПРУТКА"); // FILAMENT CHANGE + LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("ЗУПИНКА ДРУКУ"); // PRINT PAUSED + LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("ЗАВАНТАЖИТИ ПРУТОК"); // LOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("ВИВАНТАЖИТИ ПРУТОК"); // UNLOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("ПАРАМ.ПРОДОВЖЕННЯ:"); // RESUME OPTIONS: + LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Видавити ще"); // Purge more + LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Сопло: "); // Nozzle: + LSTR MSG_RUNOUT_SENSOR = _UxGT("Датчик закінч.прутка"); // Runout Sensor + LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("До закінч.,мм"); // Runout Dist mm + LSTR MSG_KILL_HOMING_FAILED = _UxGT("Помилка паркування"); // Homing Failed + LSTR MSG_LCD_PROBING_FAILED = _UxGT("Помилка зондування"); // Probing Failed + LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("ОБЕРІТЬ ПРУТОК"); // CHOOSE FILAMENT + LSTR MSG_MMU2_MENU = _UxGT("MMU"); // MMU + LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("Онови прошивку MMU!"); // Update MMU Firmware! + LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU потребує уваги"); // MMU Needs Attention. + LSTR MSG_MMU2_RESUME = _UxGT("MMU Продовжити"); // Resume + LSTR MSG_MMU2_RESUMING = _UxGT("MMU Продовження..."); // MMU Resuming... + LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("MMU Завантажити"); // Load + LSTR MSG_MMU2_LOAD_ALL = _UxGT("MMU Завантажити все"); // Load All + LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("MMU Завант. в сопло"); // Load to Nozzle + LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("MMU Звільнити"); // Eject + LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("MMU Звільнити ~"); // Eject ~ + LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("MMU Вивантажити"); // Unload + LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("Завантаж. %i..."); // Filament %i Load... + LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("Викидання прутка..."); // Filament %i Eject... + LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("Вивантаження..."); // Filament %i Unload... + LSTR MSG_MMU2_ALL = _UxGT("Все"); // All + LSTR MSG_MMU2_FILAMENT_N = _UxGT("Пруток ~"); // Filament ~ + LSTR MSG_MMU2_RESET = _UxGT("Перезапуск MMU"); // Reset MMU + LSTR MSG_MMU2_RESETTING = _UxGT("MMU Перезапуск..."); // Resetting... + LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("Видаліть, натисніть"); // Eject Recover + LSTR MSG_MIX = _UxGT("Змішув."); // Mix + LSTR MSG_MIX_COMPONENT_N = _UxGT("Компонент {"); // Component { + LSTR MSG_MIXER = _UxGT("Змішувач"); // Mixer + LSTR MSG_GRADIENT = _UxGT("Градієнт"); // Gradient + LSTR MSG_FULL_GRADIENT = _UxGT("Повний градієнт"); // Full Gradient + LSTR MSG_TOGGLE_MIX = _UxGT("Переключ.змішування"); // Toggle Mix + LSTR MSG_CYCLE_MIX = _UxGT("Циклічне змішування"); // Cycle Mix + LSTR MSG_GRADIENT_MIX = _UxGT("Градієнт змішування"); // Gradient Mix + LSTR MSG_REVERSE_GRADIENT = _UxGT("Змінити градієнт"); // Reverse Gradient + LSTR MSG_ACTIVE_VTOOL = _UxGT("Актив. В-інструм."); // Active V-tool + LSTR MSG_START_VTOOL = _UxGT("Початок В-інструменту"); // Start V-tool + LSTR MSG_END_VTOOL = _UxGT("Кінець В-інструменту"); // End V-tool + LSTR MSG_GRADIENT_ALIAS = _UxGT("Псевдонім В-інструм"); // Alias V-tool + LSTR MSG_RESET_VTOOLS = _UxGT("Зкидання В-інструм."); // Reset V-tools + LSTR MSG_COMMIT_VTOOL = _UxGT("Змішати В-інструменти"); // Commit V-tool Mix + LSTR MSG_VTOOLS_RESET = _UxGT("В-інструменти зкинуті"); // V-tools Were Reset + LSTR MSG_START_Z = _UxGT("Початок Z:"); // Start Z: + LSTR MSG_END_Z = _UxGT(" Кінець Z:"); // End Z: + LSTR MSG_GAMES = _UxGT("Ігри"); // Games + LSTR MSG_BRICKOUT = _UxGT("Цеглини"); // Brickout + LSTR MSG_INVADERS = _UxGT("Вторгнення"); // Invaders + LSTR MSG_SNAKE = _UxGT("Zм!йк@"); // Sn4k3 + LSTR MSG_MAZE = _UxGT("Лабіринт"); // Maze + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Продовжити друк")); // |Click to continue + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("Паркування...")); // |Parking... + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Очищення прутка...")); // |Purging... + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Завершити очищення")); // |Click to finish + LSTR MSG_TMC_DRIVERS = _UxGT("Драйвери TMC"); // TMC Drivers + LSTR MSG_TMC_CURRENT = _UxGT("Струм драйвера"); // Driver Current + LSTR MSG_TMC_HYBRID_THRS = _UxGT("Гібридний поріг"); // Hybrid Threshold + LSTR MSG_TMC_HOMING_THRS = _UxGT("Дім без кінцевиків"); // Sensorless Homing + LSTR MSG_TMC_STEPPING_MODE = _UxGT("Режим мікрокроку"); // Stepping Mode + LSTR MSG_TMC_STEALTHCHOP = _UxGT("Тихий режим увімк."); // StealthChop + LSTR MSG_SERVICE_RESET = _UxGT("Зкидання"); // Reset + LSTR MSG_SERVICE_IN = _UxGT(" в:"); // in: + LSTR MSG_BACKLASH = _UxGT("Люфт"); // Backlash + LSTR MSG_BACKLASH_CORRECTION = _UxGT("Виправлення"); // Correction + LSTR MSG_BACKLASH_SMOOTHING = _UxGT("Зглажування"); // Smoothing + LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Збій ініціаліз. SD"); // (MEDIA_TYPE_EN) Init Fail + LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Переповн. виклику"); // Subcall Overflow + LSTR MSG_AUTO_HOME_N = _UxGT("Паркування @"); // Home @ + LSTR MSG_ITERATION = _UxGT("G34 Ітерація: %i"); // G34 Iteration: %i + LSTR MSG_DECREASING_ACCURACY = _UxGT("Зменьшення точності!"); // Accuracy Decreasing! + LSTR MSG_ACCURACY_ACHIEVED = _UxGT("Точність досягнута"); // Accuracy Achieved + LSTR MSG_SELECT_ORIGIN = _UxGT("Оберіть нуль"); // Select Origin + LSTR MSG_LAST_VALUE_SP = _UxGT("Останнє знач. "); // Last value + LSTR MSG_CUTTER_FREQUENCY = _UxGT("Частота"); // Frequency + LSTR MSG_LASER_TOGGLE = _UxGT("Перемкн. лазер"); // Toggle Laser + LSTR MSG_LASER_EVAC_TOGGLE = _UxGT("Перемкн. обдув"); // Toggle Blower + LSTR MSG_LASER_ASSIST_TOGGLE = _UxGT("Керування обдувом"); // Air Assist + LSTR MSG_LASER_PULSE_MS = _UxGT("Тест. імп., мс"); // Test Pulse ms + LSTR MSG_LASER_FIRE_PULSE = _UxGT("Імпульс лазеру"); // Fire Pulse + LSTR MSG_FLOWMETER_FAULT = _UxGT("Помилка обдуву"); // Coolant Flow Fault + LSTR MSG_SPINDLE_TOGGLE = _UxGT("Перемк. шпінд."); // Toggle Spindle + LSTR MSG_SPINDLE_EVAC_TOGGLE = _UxGT("Перемк. вакуум"); // Toggle Vacuum + LSTR MSG_SPINDLE_FORWARD = _UxGT("Шпіндель вперед"); // Spindle Forward + LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Вгору до спрац.зонду"); // Adjust bed until the probe triggers. + LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Кути в межах. Вирівн"); // Corners within tolerance. Bed trammed. + LSTR MSG_BED_TRAMMING_GOOD_POINTS = _UxGT("Хороші точки: "); // Good Points: + LSTR MSG_BED_TRAMMING_LAST_Z = _UxGT("Остання Z: "); // Last Z: + LSTR MSG_M48_OUT_OF_BOUNDS = _UxGT("Зонд за межами"); // Probe out of bounds + LSTR MSG_IDEX_DUPE_GAP = _UxGT("Дублюв. X-проміжок"); // Duplicate X-Gap + LSTR MSG_UBL_MESH_WIZARD = _UxGT("Майстер сіток UBL"); // UBL Mesh Wizard + LSTR MSG_LED_CHANNEL_N = _UxGT("Канал {"); // Channel { + LSTR MSG_NEO2_PRESETS = _UxGT("Передуст. світла #2"); // Light #2 Presets + LSTR MSG_NEO2_BRIGHTNESS = _UxGT("Яскравість"); // Brightness + LSTR MSG_NOZZLE_PARKED = _UxGT("Сопло запарковане"); // Nozzle Parked + LSTR MSG_COOLER = _UxGT("Охолодж. лазеру"); // Laser Coolant + LSTR MSG_COOLER_TOGGLE = _UxGT("Перемк.охолод"); // Toggle Cooler + LSTR MSG_FLOWMETER_SAFETY = _UxGT("Безпека потоку"); // Flow Safety + LSTR MSG_LASER = _UxGT("Лазер"); // Laser + LSTR MSG_CONTROLLER_FAN = _UxGT("Вент. контролера"); // Controller Fan + LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("Холості оберти"); // Idle Speed + LSTR MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("Авто-режим"); // Auto Mode + LSTR MSG_CONTROLLER_FAN_SPEED = _UxGT("Робочі оберти"); // Active Speed + LSTR MSG_CONTROLLER_FAN_DURATION = _UxGT("Період простою"); // Idle Period + LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("Підбір PID виконано"); // PID tuning done + LSTR MSG_PID_BAD_HEATER_ID = _UxGT("Збій автопідбору! Поганий екструдер."); // Autotune failed! Bad extruder. + LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("Збій автопідбору! Температура завищена."); // Autotune failed! Temperature too high. + LSTR MSG_PID_TIMEOUT = _UxGT("Збій автопідбору! Вичерпан час."); // Autotune failed! Timeout. + LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("Частота макс."); // XY Freq Limit + LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("Подача мін."); // Min FR Factor + LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("E обмеж.,мм") SUPERSCRIPT_THREE; // E Limit in mm(SUPERSCRIPT_THREE) + LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("E обмеж. *"); // E Limit * + LSTR MSG_BRIGHTNESS = _UxGT("Яскравість"); // LCD Brightness + LSTR MSG_SCREEN_TIMEOUT = _UxGT("LCD Таймаут, x"); // LCD Timeout (m) + LSTR MSG_BRIGHTNESS_OFF = _UxGT("Підсвітка вимк."); // Backlight Off + LSTR MSG_ERR_EEPROM_CRC = _UxGT("Збій EEPROM: CRC"); // Err: EEPROM CRC + LSTR MSG_ERR_EEPROM_SIZE = _UxGT("Збій EEPROM: розмір"); // Err: EEPROM Size + LSTR MSG_ERR_EEPROM_VERSION = _UxGT("Збій EEPROM: версія"); // Err: EEPROM Version + LSTR MSG_SETTINGS_STORED = _UxGT("Параметри збережені"); // Settings Stored + LSTR MSG_POWER_MONITOR = _UxGT("Монітор живлення"); // Power monitor + LSTR MSG_CURRENT = _UxGT("Струм"); // Current + LSTR MSG_VOLTAGE = _UxGT("Напруга"); // Voltage + LSTR MSG_POWER = _UxGT("Потужність"); // Power + LSTR MSG_BUTTON_IGNORE = _UxGT("Ігнорув."); // Ignore + LSTR MSG_BUTTON_CONFIRM = _UxGT("Підтвер."); // Confirm + LSTR MSG_BUTTON_CONTINUE = _UxGT("Продовж."); // Continue + LSTR MSG_BUTTON_SKIP = _UxGT("Пропуск"); // Skip + LSTR MSG_BUTTON_INFO = _UxGT("Інфо"); // Info + LSTR MSG_BUTTON_LEVEL = _UxGT("Рівень"); // Level + LSTR MSG_BUTTON_PAUSE = _UxGT("Пауза"); // Pause + LSTR MSG_BUTTON_RESUME = _UxGT("Звіт"); // Resume + LSTR MSG_BUTTON_SAVE = _UxGT("Зберегти"); // Save + LSTR MSG_PAUSING = _UxGT("Призупинення..."); // Pausing... + LSTR MSG_HOST_START_PRINT = _UxGT("Старт з хосту"); // Host Start + LSTR MSG_END_LOOPS = _UxGT("End Repeat Loops"); // End Loops + LSTR MSG_STOPPING = _UxGT("Зупинка..."); // Stopping... + LSTR MSG_REMAINING_TIME = _UxGT("Залишилось"); // Remaining + LSTR MSG_PRINT_DONE = _UxGT("Друк завершено"); // Print Done + LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("Змінити додатково"); // Swap Extra + LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("Паркувати голову"); // Park Head + LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("Відновити швидкість"); // Recover Speed + LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Оберти вент."); // Fan Speed + LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Час вент."); // Fan Time + LSTR MSG_TOOL_MIGRATION_ON = _UxGT("Авто Увімк."); // Auto ON + LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("Авто Вимкн."); // Auto OFF + LSTR MSG_TOOL_MIGRATION = _UxGT("Заміна інструменту"); // Tool Migration + LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("Авто заміна"); // Auto-migration + LSTR MSG_TOOL_MIGRATION_END = _UxGT("Останній екструдер"); // Last Extruder + LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("Заміна на *"); // Migrate to * + LSTR MSG_ZPROBE_OFFSETS = _UxGT("Зміщення зонду"); // Probe Offsets + LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Рухати сопло до столу"); // Move Nozzle to Bed + LSTR MSG_ERR_COOLING_FAILED = _UxGT("ОХОЛОДЖ. НЕ ВДАЛОСЬ"); // Cooling Failed + LSTR MSG_PROBE_HEATING = _UxGT("Нагрів зонду..."); // Probe Heating... + LSTR MSG_PROBE_COOLING = _UxGT("Охолодж. зонду..."); // Probe Cooling... + LSTR MSG_LASER_COOLING = _UxGT("Охолодж. лазеру..."); // Laser Cooling... + LSTR MSG_MESH_DONE = _UxGT("Зондування виконано"); // Mesh probing done + LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Час прост. хот-у"); // Hotend Idle Timeout + LSTR MSG_COLORS_GET = _UxGT("Отримати колір"); // Get Color + LSTR MSG_COLORS_SELECT = _UxGT("Кольори"); // Select Colors + LSTR MSG_COLORS_APPLIED = _UxGT("Кольори застос."); // Colors applied + LSTR MSG_COLORS_RED = _UxGT("Червоний"); // Red + LSTR MSG_COLORS_GREEN = _UxGT("Зелений"); // Green + LSTR MSG_COLORS_BLUE = _UxGT("Синій"); // Blue + LSTR MSG_COLORS_WHITE = _UxGT("Білий"); // White + LSTR MSG_UI_LANGUAGE = _UxGT("Мова"); // UI Language + LSTR MSG_SOUND_ENABLE = _UxGT("Дозволити звук"); // Enable sound + LSTR MSG_LOCKSCREEN = _UxGT("Блокувати екран"); // Lock Screen + LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Перезавантаж..."); // Please wait for reboot. + LSTR MSG_PLEASE_PREHEAT = _UxGT("Нагрійте хотенд"); // Please Preheat + LSTR MSG_BAD_PAGE = _UxGT("Погана сторінка"); // Bad page index + LSTR MSG_BAD_PAGE_SPEED = _UxGT("Погана швидк. стор."); // Bad page speed + LSTR MSG_EDIT_PASSWORD = _UxGT("Редагувати пароль"); // Edit Password + LSTR MSG_LOGIN_REQUIRED = _UxGT("Потрібен логін"); // Login Required + LSTR MSG_PASSWORD_SETTINGS = _UxGT("Параметри паролю"); // Password Settings + LSTR MSG_ENTER_DIGIT = _UxGT("Введіть цифру"); // Enter Digit + LSTR MSG_CHANGE_PASSWORD = _UxGT("Змінити пароль"); // Set/Edit Password + LSTR MSG_REMOVE_PASSWORD = _UxGT("Видалити пароль"); // Remove Password + LSTR MSG_PASSWORD_SET = _UxGT("Пароль: "); // Password is + LSTR MSG_START_OVER = _UxGT("Старт через"); // Start Over + LSTR MSG_REMINDER_SAVE_SETTINGS = _UxGT("Не забудь зберегти!"); // Remember to Save! + LSTR MSG_PASSWORD_REMOVED = _UxGT("Пароль видалений"); // Password Removed + LSTR MSG_LEVEL_X_AXIS = _UxGT("Рівень вісі X"); // Level X Axis + LSTR MSG_AUTO_CALIBRATE = _UxGT("Авто калібрування"); // Auto Calibrate + LSTR MSG_FTDI_HEATER_TIMEOUT = _UxGT("Час простою збіг, температура впала. Натисніть ОК, щоби знову нагріти та продовжити"); // Idle timeout, temperature decreased. Press Okay to reheat and again to resume. + LSTR MSG_HEATER_TIMEOUT = _UxGT("Час нагрівача збіг"); // Heater Timeout + LSTR MSG_REHEAT = _UxGT("Поновити нагрів"); // Reheat + LSTR MSG_REHEATING = _UxGT("Нагрівання..."); // Reheating... + LSTR MSG_PROBE_WIZARD = _UxGT("Майстер Z-зонда"); // Z Probe Wizard + LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Зондув.контр.точки Z"); // Probing Z Reference + LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Рух до точки зондув."); // Moving to Probing Pos + LSTR MSG_SOUND = _UxGT("Звук"); // Sound + LSTR MSG_TOP_LEFT = _UxGT("Верхній лівий"); // Touch Top Left + LSTR MSG_BOTTOM_LEFT = _UxGT("Нижній лівий"); // Touch Bottom Left + LSTR MSG_TOP_RIGHT = _UxGT("Верхній правий"); // Touch Top Right + LSTR MSG_BOTTOM_RIGHT = _UxGT("Нижній правий"); // Touch Bottom Right + LSTR MSG_CALIBRATION_COMPLETED = _UxGT("Калібрування успішне"); // Calibration Completed + LSTR MSG_CALIBRATION_FAILED = _UxGT("Збій калібрування"); // Calibration Failed + LSTR MSG_DRIVER_BACKWARD = _UxGT(" драйвер назад"); // driver backward + LSTR MSG_SD_CARD = _UxGT("SD Картка"); // SD Card + LSTR MSG_USB_DISK = _UxGT("USB Диск"); // USB Disk + LSTR MSG_SHORT_DAY = _UxGT("д"); // d + LSTR MSG_SHORT_HOUR = _UxGT("г"); // h + LSTR MSG_SHORT_MINUTE = _UxGT("х"); // m + LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Немає носія"); // No Media } namespace LanguageWide_uk { using namespace LanguageNarrow_uk; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Збій ініціалізації SD"); - LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Переповнення виклику"); - LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Програмні кінцевики"); - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Встанов. зміщення дому"); - LSTR MSG_HOME_OFFSET_X = _UxGT("Зміщення дому X"); // DWIN - LSTR MSG_HOME_OFFSET_Y = _UxGT("Зміщення дому Y"); // DWIN - LSTR MSG_HOME_OFFSET_Z = _UxGT("Зміщення дому Z"); // DWIN - LSTR MSG_LAST_VALUE_SP = _UxGT("Останнє значення "); - LSTR MSG_LASER_POWER = _UxGT("Потужність лазера"); - LSTR MSG_SPINDLE_TOGGLE = _UxGT("Перемкн. шпіндель"); - LSTR MSG_SPINDLE_EVAC_TOGGLE = _UxGT("Перемкнути вакуум"); - LSTR MSG_LASER_TOGGLE = _UxGT("Перемкнути лазер"); - LSTR MSG_SPINDLE_POWER = _UxGT("Потужн. шпінделя"); - LSTR MSG_LASER_PULSE_MS = _UxGT("Тестовий імпульс мс"); - LSTR MSG_LASER_EVAC_TOGGLE = _UxGT("Перемкнути обдув"); - LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Вгору до спрацюв. зонду"); - LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Кути в межах. Вирів.столу"); - LSTR MSG_MESH_EDITOR = _UxGT("Зміщення по Z"); - LSTR MSG_UBL_MANUAL_MESH = _UxGT("Ручне введення сітки"); - LSTR MSG_UBL_BC_INSERT = _UxGT("Розмістити шайбу і вимір."); - LSTR MSG_UBL_BC_REMOVE = _UxGT("Видалити і виміряти стіл"); - LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Редагувати свою сітку"); - LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Точне редагування сітки"); - LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Будувати свою сітку"); - LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Вирівнювання растру"); - LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Обсяг заповнюв."); - LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Точно налаштувати все"); - LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Точно налашт.найближчу"); - LSTR MSG_LED_PRESETS = _UxGT("Передустановки світла"); - LSTR MSG_NEO2_PRESETS = _UxGT("Передустановка світла #2"); - LSTR MSG_COOLER = _UxGT("Охолодження лазеру"); - LSTR MSG_COOLER_TOGGLE = _UxGT("Перемк. охолодж."); - LSTR MSG_STORED_FAN_N = _UxGT("Збереж.швидк.вент. ~"); - LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Дод. швидк. вент. ~"); - LSTR MSG_JUNCTION_DEVIATION = _UxGT("Відхилення вузла"); - LSTR MSG_VTRAV_MIN = _UxGT("Переміщення мін"); - LSTR MSG_CONTRAST = _UxGT("Контраст екрану"); - LSTR MSG_BRIGHTNESS = _UxGT("Яскравість LCD"); - LSTR MSG_INIT_EEPROM = _UxGT("Ініціалізація EEPROM"); - LSTR MSG_CONTROL_RETRACT = _UxGT("Втягування, мм"); - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Зміна втягув.,мм"); - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Повернення, мм"); - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Поверн.зміни, мм"); - LSTR MSG_AUTORETRACT = _UxGT("Автовтягування"); - LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Початк.швидкість"); - LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Швидкість втягув."); - LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Оберти вентилятора"); - LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Час вентилятора"); - LSTR MSG_ERR_COOLING_FAILED = _UxGT("ОХОЛОДЖЕННЯ НЕ ВДАЛОСЬ"); - LSTR MSG_BED_COOLING = _UxGT("Охолодження столу..."); - LSTR MSG_PROBE_COOLING = _UxGT("Охолодження зонду..."); - LSTR MSG_CHAMBER_COOLING = _UxGT("Охолодження камери..."); - LSTR MSG_LASER_COOLING = _UxGT("Охолодження лазеру..."); - LSTR MSG_3POINT_LEVELING = _UxGT("3-точкове вирівнювання"); - LSTR MSG_LINEAR_LEVELING = _UxGT("Лінійне вирівнювання"); - LSTR MSG_BILINEAR_LEVELING = _UxGT("Білінійне вирівнювання"); - LSTR MSG_MESH_DONE = _UxGT("Зондування сітки виконано"); - LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Контроль витіку ") LCD_STR_THERMOMETER _UxGT(" Вимк"); - LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Контроль витіку ") LCD_STR_THERMOMETER _UxGT(" Увімк"); - LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Час простою хотенду"); - LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Носій не вставлений"); - LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Перезавантаження..."); - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Кількість друків"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Час друку"); - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Найдовший час"); - LSTR MSG_COLORS_SELECT = _UxGT("Обрати кольори"); - LSTR MSG_COLORS_APPLIED = _UxGT("Кольори застосовані"); - LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("ПАРАМЕТРИ ПРОДОВЖЕННЯ:"); - LSTR MSG_RUNOUT_SENSOR = _UxGT("Датчик закінчення прутка"); - LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("Відстань закінч.,мм"); - LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("MMU Завантажити в сопло"); - LSTR MSG_MIX = _UxGT("Змішування"); - LSTR MSG_TOGGLE_MIX = _UxGT("Переключити змішування"); - LSTR MSG_ACTIVE_VTOOL = _UxGT("Активація В-інструменту"); - LSTR MSG_GRADIENT_ALIAS = _UxGT("Псевдонім В-інструменту"); - LSTR MSG_RESET_VTOOLS = _UxGT("Зкидання В-інструментів"); - LSTR MSG_BAD_PAGE_SPEED = _UxGT("Погана швидкість стор."); - LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Зондув. контрольної точки Z"); - LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Рух до точки зондування"); + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Встанов. зміщення дому"); // Set Home Offsets + LSTR MSG_VTRAV_MIN = _UxGT("Переміщення мін"); // Min Travel Speed + LSTR MSG_CONTRAST = _UxGT("Контраст екрану"); // LCD Contrast + LSTR MSG_CONTROL_RETRACT = _UxGT("Втягування, мм"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Зміна втягув.,мм"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("Повернення, мм"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("Поверн.зміни, мм"); // S Unretr. mm + LSTR MSG_AUTORETRACT = _UxGT("Автовтягування"); // Auto-Retract + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Кількість друків"); // Print Count + LSTR MSG_INFO_PRINT_TIME = _UxGT("Час друку"); // Print Time + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Найдовший час"); // Longest Job Time + LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Програмні кінцевики"); // Soft Endstops + LSTR MSG_LASER_POWER = _UxGT("Потужність лазера"); // Laser Power + LSTR MSG_SPINDLE_POWER = _UxGT("Потужн. шпінделя"); // Spindle Pwr + LSTR MSG_MESH_EDITOR = _UxGT("Зміщення по Z"); // Mesh Editor + LSTR MSG_UBL_MANUAL_MESH = _UxGT("Ручне введення сітки"); // Manually Build Mesh + LSTR MSG_UBL_BC_INSERT = _UxGT("Розмістити шайбу і вимір."); // Place Shim & Measure + LSTR MSG_UBL_BC_REMOVE = _UxGT("Видалити і виміряти стіл"); // Remove & Measure Bed + LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Редагувати свою сітку"); // Edit Custom Mesh + LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Точне редагування сітки"); // Fine Tuning Mesh + LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Будувати свою сітку"); // Build Custom Mesh + LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Вирівнювання растру"); // Grid Mesh Leveling + LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Обсяг заповнюв."); // Fill-in Amount + LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Точно налаштувати все"); // Fine Tune All + LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Точно налашт.найближчу"); // Fine Tune Closest + LSTR MSG_LED_PRESETS = _UxGT("Передустановки світла"); // Light Presets + LSTR MSG_STORED_FAN_N = _UxGT("Збереж.швидк.вент. ~"); // Stored Fan ~ + LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Дод. швидк. вент. ~"); // Extra Fan Speed ~ + LSTR MSG_JUNCTION_DEVIATION = _UxGT("Відхилення вузла"); // Junction Dev + LSTR MSG_INIT_EEPROM = _UxGT("Ініціалізація EEPROM"); // Initialize EEPROM + LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Початк.швидкість"); // Prime Speed + LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Швидкість втягув."); // Retract Speed + LSTR MSG_BED_COOLING = _UxGT("Охолодження столу..."); // Bed Cooling... + LSTR MSG_CHAMBER_COOLING = _UxGT("Охолодження камери..."); // Chamber Cooling... + LSTR MSG_3POINT_LEVELING = _UxGT("3-точкове вирівнювання"); // 3-Point Leveling + LSTR MSG_LINEAR_LEVELING = _UxGT("Лінійне вирівнювання"); // Linear Leveling + LSTR MSG_BILINEAR_LEVELING = _UxGT("Білінійне вирівнювання"); // Bilinear Leveling + LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("Контроль витіку ") LCD_STR_THERMOMETER _UxGT(" Вимк"); // Runaway Watch: OFF + LSTR MSG_INFO_RUNAWAY_ON = _UxGT("Контроль витіку ") LCD_STR_THERMOMETER _UxGT(" Увімк"); // Runaway Watch: ON + LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("ПАРАМЕТРИ ПРОДОВЖЕННЯ:"); // RESUME OPTIONS: + LSTR MSG_RUNOUT_SENSOR = _UxGT("Датчик закінчення прутка"); // Runout Sensor + LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("Відстань закінч.,мм"); // Runout Dist mm + LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("MMU Завантажити в сопло"); // Load to Nozzle + LSTR MSG_MIX = _UxGT("Змішування"); // Mix + LSTR MSG_TOGGLE_MIX = _UxGT("Переключити змішування"); // Toggle Mix + LSTR MSG_ACTIVE_VTOOL = _UxGT("Активація В-інструменту"); // Active V-tool + LSTR MSG_GRADIENT_ALIAS = _UxGT("Псевдонім В-інструменту"); // Alias V-tool + LSTR MSG_RESET_VTOOLS = _UxGT("Зкидання В-інструментів"); // Reset V-tools + LSTR MSG_MEDIA_INIT_FAIL = _UxGT("Збій ініціалізації SD"); // (MEDIA_TYPE_EN) Init Fail + LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("Переповнення виклику"); // Subcall Overflow + LSTR MSG_HOME_OFFSET_X = _UxGT("Зміщення дому X"); // Home Offset X + LSTR MSG_HOME_OFFSET_Y = _UxGT("Зміщення дому Y"); // Home Offset Y + LSTR MSG_HOME_OFFSET_Z = _UxGT("Зміщення дому Z"); // Home Offset Z + LSTR MSG_LAST_VALUE_SP = _UxGT("Останнє значення "); // Last value + LSTR MSG_LASER_TOGGLE = _UxGT("Перемкнути лазер"); // Toggle Laser + LSTR MSG_LASER_EVAC_TOGGLE = _UxGT("Перемкнути обдув"); // Toggle Blower + LSTR MSG_LASER_PULSE_MS = _UxGT("Тестовий імпульс мс"); // Test Pulse ms + LSTR MSG_SPINDLE_TOGGLE = _UxGT("Перемкн. шпіндель"); // Toggle Spindle + LSTR MSG_SPINDLE_EVAC_TOGGLE = _UxGT("Перемкнути вакуум"); // Toggle Vacuum + LSTR MSG_BED_TRAMMING_RAISE = _UxGT("Вгору до спрацюв. зонду"); // Adjust bed until the probe triggers. + LSTR MSG_BED_TRAMMING_IN_RANGE = _UxGT("Кути в межах. Вирів.столу"); // Corners within tolerance. Bed trammed. + LSTR MSG_NEO2_PRESETS = _UxGT("Передустановка світла #2"); // Light #2 Presets + LSTR MSG_COOLER = _UxGT("Охолодження лазеру"); // Laser Coolant + LSTR MSG_COOLER_TOGGLE = _UxGT("Перемк. охолодж."); // Toggle Cooler + LSTR MSG_BRIGHTNESS = _UxGT("Яскравість LCD"); // LCD Brightness + LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("Оберти вентилятора"); // Fan Speed + LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("Час вентилятора"); // Fan Time + LSTR MSG_ERR_COOLING_FAILED = _UxGT("ОХОЛОДЖЕННЯ НЕ ВДАЛОСЬ"); // Cooling Failed + LSTR MSG_PROBE_COOLING = _UxGT("Охолодження зонду..."); // Probe Cooling... + LSTR MSG_LASER_COOLING = _UxGT("Охолодження лазеру..."); // Laser Cooling... + LSTR MSG_MESH_DONE = _UxGT("Зондування сітки виконано"); // Mesh probing done + LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("Час простою хотенду"); // Hotend Idle Timeout + LSTR MSG_COLORS_SELECT = _UxGT("Обрати кольори"); // Select Colors + LSTR MSG_COLORS_APPLIED = _UxGT("Кольори застосовані"); // Colors applied + LSTR MSG_PLEASE_WAIT_REBOOT = _UxGT("Перезавантаження..."); // Please wait for reboot. + LSTR MSG_BAD_PAGE_SPEED = _UxGT("Погана швидкість стор."); // Bad page speed + LSTR MSG_PROBE_WIZARD_PROBING = _UxGT("Зондув. контрольної точки Z"); // Probing Z Reference + LSTR MSG_PROBE_WIZARD_MOVING = _UxGT("Рух до точки зондування"); // Moving to Probing Pos + LSTR MSG_MEDIA_NOT_INSERTED = _UxGT("Носій не вставлений"); // No media inserted. #endif } @@ -799,16 +751,16 @@ namespace LanguageTall_uk { using namespace LanguageWide_uk; #if LCD_HEIGHT >= 4 // Filament Change screens show up to 3 lines on a 4-line display - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_3_LINE("Натисніть кнопку", "для продовження", "друку")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Зачекайте", "на початок", "заміни прутка")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Вставте пруток", "та натисніть", "для продовження")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Натисніть кнопку", "для нагріву сопла")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Сопло нагрівається", "зачекайте...")); - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Зачекайте", "на вивід прутка")); - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Зачекайте", "на ввід прутка")); - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Дочекайтесь", "очищення прутка")); - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Натисніть кнопку", "для завершення", "очищення прутка")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Зачекайте", "на відновлення", "друку")); + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("Зачекайте", "на початок", "заміни прутка")); // |Wait for|filament change|to start + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("Вставте пруток", "та натисніть", "для продовження")); // |Insert filament|and press button|to continue + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Зачекайте", "на вивід прутка")); // |Wait for|filament unload + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Зачекайте", "на ввід прутка")); // |Wait for|filament load + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_3_LINE("Зачекайте", "на відновлення", "друку")); // |Wait for print|to resume... + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Сопло нагрівається", "зачекайте...")); // |Nozzle heating|Please wait... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Натисніть кнопку", "для нагріву сопла")); // |Press button|to heat nozzle + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_3_LINE("Натисніть кнопку", "для продовження", "друку")); // |Press Button|to resume print + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Дочекайтесь", "очищення прутка")); // |Wait for|filament purge + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_3_LINE("Натисніть кнопку", "для завершення", "очищення прутка")); // |Click to finish|filament purge #endif } diff --git a/Marlin/src/lcd/language/language_vi.h b/Marlin/src/lcd/language/language_vi.h index 1351224ba4..de7840d76a 100644 --- a/Marlin/src/lcd/language/language_vi.h +++ b/Marlin/src/lcd/language/language_vi.h @@ -42,411 +42,382 @@ namespace LanguageNarrow_vi { constexpr uint8_t CHARSIZE = 2; LSTR LANGUAGE = _UxGT("Vietnamese"); - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" Sẵn sàng."); // Ready - LSTR MSG_BACK = _UxGT("Trở lại"); // Back - - LSTR MSG_MEDIA_ABORTING = _UxGT("Đang hủy bỏ..."); - LSTR MSG_MEDIA_INSERTED = _UxGT("Phương tiện được cắm vào"); // Media inserted - LSTR MSG_MEDIA_REMOVED = _UxGT("Phương tiện được rút ra"); - LSTR MSG_MEDIA_READ_ERROR = _UxGT("Lỗi đọc phương tiện"); - LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB được rút ra"); - LSTR MSG_USB_FD_USB_FAILED = _UxGT("USB khởi thất bại"); - - LSTR MSG_LCD_ENDSTOPS = _UxGT("Công tắc"); // Endstops - công tắc hành trình - LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Công tắc mềm"); // Soft Endstops - LSTR MSG_MAIN_MENU = _UxGT("Chính"); // Main - LSTR MSG_ADVANCED_SETTINGS = _UxGT("Thiết lập cấp cao"); // Advanced Settings - LSTR MSG_CONFIGURATION = _UxGT("Cấu hình"); // Configuration - LSTR MSG_DISABLE_STEPPERS = _UxGT("Tắt động cơ bước"); // Disable steppers - LSTR MSG_DEBUG_MENU = _UxGT("Menu gỡ lỗi"); // Debug Menu - LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Kiểm tra tiến độ"); // Progress bar test - LSTR MSG_AUTO_HOME = _UxGT("Về nhà tự động"); // Auto home - LSTR MSG_AUTO_HOME_X = _UxGT("Về nhà X"); // Home X - LSTR MSG_AUTO_HOME_Y = _UxGT("Về nhà Y"); // Home Y - LSTR MSG_AUTO_HOME_Z = _UxGT("Về nhà Z"); // Home Z - LSTR MSG_AUTO_Z_ALIGN = _UxGT("Chỉnh canh Z tự động"); - LSTR MSG_LEVEL_BED_HOMING = _UxGT("Đang về nhà XYZ"); // Homing XYZ - LSTR MSG_LEVEL_BED_WAITING = _UxGT("Nhấn để bắt đầu"); // Click to Begin - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Điểm tiếp theo"); // Next Point - LSTR MSG_LEVEL_BED_DONE = _UxGT("San lấp được hoàn thành"); // Leveling Done! - LSTR MSG_Z_FADE_HEIGHT = _UxGT("Chiều cao mờ dần"); // Fade Height - LSTR MSG_SET_HOME_OFFSETS = _UxGT("Đặt bù đắp nhà"); // Set home offsets - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Bù đắp được áp dụng"); // Offsets applied - - LSTR MSG_PREHEAT_1 = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" trước"); // Preheat - LSTR MSG_PREHEAT_1_H = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" trước ~"); // Preheat - LSTR MSG_PREHEAT_1_END = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Đầu"); - LSTR MSG_PREHEAT_1_END_E = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Đầu ~"); - LSTR MSG_PREHEAT_1_ALL = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Tất cả"); // All - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Bàn"); // Bed -- using vietnamese term for 'table' instead - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Cấu hình"); // Conf - - LSTR MSG_PREHEAT_M = _UxGT("Làm nóng $ trước"); // Preheat - LSTR MSG_PREHEAT_M_H = _UxGT("Làm nóng $ trước ~"); // Preheat - LSTR MSG_PREHEAT_M_END = _UxGT("Làm nóng $ Đầu"); - LSTR MSG_PREHEAT_M_END_E = _UxGT("Làm nóng $ Đầu ~"); - LSTR MSG_PREHEAT_M_ALL = _UxGT("Làm nóng $ Tất cả"); // All - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Làm nóng $ Bàn"); // Bed -- using vietnamese term for 'table' instead - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Làm nóng $ Cấu hình"); // Conf - - LSTR MSG_PREHEAT_CUSTOM = _UxGT("Sự nóng trước tự chọn"); // Preheat Custom - LSTR MSG_COOLDOWN = _UxGT("Nguội xuống"); // Cooldown - LSTR MSG_SWITCH_PS_ON = _UxGT("Bật nguồn"); // Switch power on - LSTR MSG_SWITCH_PS_OFF = _UxGT("Tắt nguồn"); // Switch power off - LSTR MSG_EXTRUDE = _UxGT("Ép đùn"); // Extrude - LSTR MSG_RETRACT = _UxGT("Rút lại"); // Retract - LSTR MSG_MOVE_AXIS = _UxGT("Di chuyển trục"); // Move axis - LSTR MSG_PROBE_AND_LEVEL = _UxGT("Chạm và san lấp"); // Probe and Level - LSTR MSG_BED_LEVELING = _UxGT("San Lấp Bàn"); // Bed Leveling - LSTR MSG_LEVEL_BED = _UxGT("Làm bằng mặt bàn"); // Level bed - LSTR MSG_BED_TRAMMING = _UxGT("Làm bằng góc bàn"); // Level corners - LSTR MSG_NEXT_CORNER = _UxGT("Góc tiếp theo"); // Next corner - LSTR MSG_EDITING_STOPPED = _UxGT("Chỉnh lưới đã dừng"); // Mesh Editing Stopped - LSTR MSG_MESH_X = _UxGT("Mục lục X"); // Index X - LSTR MSG_MESH_Y = _UxGT("Mục lục Y"); - LSTR MSG_MESH_EDIT_Z = _UxGT("Giá trị Z"); // Z Value - LSTR MSG_CUSTOM_COMMANDS = _UxGT("Các lệnh tự chọn"); // Custom Commands - LSTR MSG_UBL_DOING_G29 = _UxGT("Đang chạy G29"); // Doing G29 - LSTR MSG_UBL_TOOLS = _UxGT("Công cụ UBL"); // UBL tools - LSTR MSG_IDEX_MENU = _UxGT("chế độ IDEX"); // IDEX Mode - LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Đậu tự động"); // Auto-Park - LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Sự gấp đôi"); // Duplication - LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Bản sao thu nhỏ"); - LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Toàn quyền điều khiển"); // Full control - LSTR MSG_UBL_MANUAL_MESH = _UxGT("Tự xây dựng lưới"); // Manually Build Mesh - LSTR MSG_UBL_BC_INSERT = _UxGT("Đặt chêm và đo"); // Place shim & measure - LSTR MSG_UBL_BC_INSERT2 = _UxGT("Đo"); // Measure - LSTR MSG_UBL_BC_REMOVE = _UxGT("Tháo và đo bàn"); // Remove & measure bed - LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Chuyển sang tiếp theo"); // Moving to next - LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Nhiệt độ bàn"); // Bed Temp - LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Bed Temp"); - LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Nhiệt độ đầu phun"); // Hotend Temp - LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Hotend Temp"); - LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Chỉnh sửa lưới tự chọn"); // Edit Custom Mesh - LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Chỉnh lưới chính xác"); // Fine tuning mesh - LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Chỉnh sửa xong lưới"); // Done Editing Mesh - LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Xây dựng lưới tự chọn"); // Build Custom Mesh - LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Xây dựng lưới"); // Build Mesh - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Xây dựng lưới ($)"); - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Thẩm tra lưới ($)"); - LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Xây dựng lưới lạnh"); // Build cold mesh - LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Điều chỉnh chiều cao lưới"); // Adjust Mesh Height - LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Số lượng chiều cao"); // Height Amount - LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Thẩm tra lưới"); // Validate Mesh - LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Thẩm tra lưới tự chọn"); // Validate custom mesh - LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Tiếp tục xây lưới bàn"); // Continue Bed Mesh - LSTR MSG_UBL_MESH_LEVELING = _UxGT("Đang san lấp lưới"); // Mesh Leveling - LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("Đang san lấp 3-điểm"); // 3-Point Leveling - LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Đang san lấp lưới phẳng"); // Grid (planar) Mesh Leveling - LSTR MSG_UBL_MESH_LEVEL = _UxGT("Làm bằng lưới"); // Level Mesh - LSTR MSG_UBL_SIDE_POINTS = _UxGT("Điểm bên cạnh"); // Side Points - LSTR MSG_UBL_MAP_TYPE = _UxGT("Loại bản đồ"); // Map Type - LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Đầu ra bản đồ lưới"); // Output Mesh Map - LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Đầu ra cho máy chủ"); // Output for Host - LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Đầu ra cho CSV"); // Output for CSV - LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Hỗ trợ lưới"); // Off Printer Backup | backup mesh - LSTR MSG_UBL_INFO_UBL = _UxGT("Đầu ra thông tin UBL"); // Output UBL Info - LSTR MSG_EDIT_MESH = _UxGT("Chỉnh sửa lưới"); // Edit mesh - LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Số lượng lấp đầy"); // Fill-in Amount - LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Tự lấp đầy"); // Manual Fill-in - LSTR MSG_UBL_SMART_FILLIN = _UxGT("Lấp đầy thông minh"); // Smart Fill-in - LSTR MSG_UBL_FILLIN_MESH = _UxGT("Lưới lấp đầy"); // Fill-in Mesh - LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Bác bỏ tất cả"); // Invalidate All - LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Bác bỏ gần nhất"); // Invalidate Closest - LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Chỉnh chính xác tất cả"); // Fine Tune ALl - LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Chỉnh chính xác gần nhất"); // Fine Tune Closest - LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Lưu trữ lưới"); // Mesh Storage - LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Khe nhớ"); // Memory Slot - LSTR MSG_UBL_LOAD_MESH = _UxGT("Tải lưới bàn"); // Load Bed Mesh - LSTR MSG_UBL_SAVE_MESH = _UxGT("Lưu lưới bàn"); // Save Bed Mesh - LSTR MSG_MESH_LOADED = _UxGT("%i lưới được nạp"); // Mesh %i loaded - LSTR MSG_MESH_SAVED = _UxGT("%i lưới đã lưu"); - LSTR MSG_UBL_NO_STORAGE = _UxGT("Không lưu trữ"); // No Storage - LSTR MSG_UBL_SAVE_ERROR = _UxGT("Điều sai: Lưu UBL"); // Err: UBL Save - LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Điều Sai: Khôi Phục UBL"); // Err: UBL Restore - LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Đầu Dò-Z Đã Ngừng"); // Z-Offset Stopped - LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("Bước-Từng-Bước UBL"); // Step-By-Step UBL - LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Xây dựng lưới lạnh"); - LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2.Lấp đầy thông minh"); - LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Thẩm tra lưới"); - LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Chỉnh chính xác tất cả"); - LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Thẩm tra lưới"); - LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Chỉnh chính xác tất cả"); - LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Lưu lưới bàn"); - - LSTR MSG_LED_CONTROL = _UxGT("Điều khiển LED"); // LED Control - LSTR MSG_LIGHTS = _UxGT("Đèn"); // Lights - LSTR MSG_LIGHT_N = _UxGT("Đèn #{"); // Light #{ - LSTR MSG_LED_PRESETS = _UxGT("Đèn định sẵn"); // Light Presets - LSTR MSG_SET_LEDS_RED = _UxGT("Đỏ"); // Red - LSTR MSG_SET_LEDS_ORANGE = _UxGT("Cam"); // Orange - LSTR MSG_SET_LEDS_YELLOW = _UxGT("Vàng"); // Yellow - LSTR MSG_SET_LEDS_GREEN = _UxGT("Xanh Lá"); // Green - LSTR MSG_SET_LEDS_BLUE = _UxGT("Xanh"); // Blue - LSTR MSG_SET_LEDS_INDIGO = _UxGT("Xanh Đậm"); // Indigo - LSTR MSG_SET_LEDS_VIOLET = _UxGT("Tím"); // Violet - LSTR MSG_SET_LEDS_WHITE = _UxGT("Trắng"); // White - LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Mặc định"); // Default - LSTR MSG_CUSTOM_LEDS = _UxGT("Đèn Tự Chọn"); // Custom Lights - LSTR MSG_INTENSITY_R = _UxGT("Cường Độ Đỏ"); // Red Intensity - LSTR MSG_INTENSITY_G = _UxGT("Cường Độ Xanh Lá"); // Green Intensity - LSTR MSG_INTENSITY_B = _UxGT("Cường Độ Xanh"); // Blue Intensity - LSTR MSG_INTENSITY_W = _UxGT("Cường Độ Trắng"); // White Intensity - LSTR MSG_LED_BRIGHTNESS = _UxGT("độ sáng"); // Brightness - - LSTR MSG_MOVING = _UxGT("Di chuyển..."); // Moving - LSTR MSG_FREE_XY = _UxGT("Giải phóng XY"); // Free XY - LSTR MSG_MOVE_X = _UxGT("Di chuyển X"); // Move X - LSTR MSG_MOVE_Y = _UxGT("Di chuyển Y"); - LSTR MSG_MOVE_Z = _UxGT("Di chuyển Z"); - LSTR MSG_MOVE_N = _UxGT("Di chuyển @"); - LSTR MSG_MOVE_E = _UxGT("Máy đùn"); // Extruder - LSTR MSG_MOVE_EN = _UxGT("Máy đùn *"); - LSTR MSG_HOTEND_TOO_COLD = _UxGT("Đầu nóng quá lạnh"); // Hotend too cold - LSTR MSG_MOVE_N_MM = _UxGT("Di chuyển $mm"); // Move $mm - LSTR MSG_MOVE_N_IN = _UxGT("Di chuyển $in"); // Move $in - LSTR MSG_MOVE_N_DEG = _UxGT("Di chuyển $") LCD_STR_DEGREE; // Move $° - LSTR MSG_SPEED = _UxGT("Tốc độ"); // Speed - LSTR MSG_MESH_Z_OFFSET = _UxGT("Z Bàn"); - LSTR MSG_NOZZLE = _UxGT("Đầu phun"); // Nozzle - LSTR MSG_NOZZLE_N = _UxGT("Đầu phun ~"); - LSTR MSG_BED = _UxGT("Bàn"); // Bed - LSTR MSG_FAN_SPEED = _UxGT("Tốc độ quạt"); // Fan speed - LSTR MSG_FAN_SPEED_N = _UxGT("Tốc độ quạt ~"); - LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Tốc độ quạt phụ"); // Extra fan speed - LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Tốc độ quạt phụ ~"); - LSTR MSG_FLOW = _UxGT("Lưu Lượng"); - LSTR MSG_FLOW_N = _UxGT("Lưu Lượng ~"); - LSTR MSG_CONTROL = _UxGT("Điều khiển"); // Control - LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Đa"); // Min - LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Thiểu"); // Max - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Hệ Số"); // Factor - LSTR MSG_AUTOTEMP = _UxGT("Nhiệt độ tự động"); // Autotemp - LSTR MSG_LCD_ON = _UxGT("Bật"); // On - LSTR MSG_LCD_OFF = _UxGT("Tắt"); // Off - LSTR MSG_SELECT_E = _UxGT("Lựa *"); - LSTR MSG_ACC = _UxGT("Tăng Tốc"); - LSTR MSG_JERK = _UxGT("Giật"); - LSTR MSG_VA_JERK = _UxGT("Giật-V") STR_A; - LSTR MSG_VB_JERK = _UxGT("Giật-V") STR_B; - LSTR MSG_VC_JERK = _UxGT("Giật-V") STR_C; - LSTR MSG_VN_JERK = _UxGT("Giật-V@"); - LSTR MSG_VE_JERK = _UxGT("Giật-Ve"); - LSTR MSG_JUNCTION_DEVIATION = _UxGT("Độ Lệch Chỗ Giao"); // Junction Dev - LSTR MSG_MAX_SPEED = _UxGT("Vận tốc"); // Velocity - LSTR MSG_VMAX_A = _UxGT("Vđa") STR_A; // Vmax - LSTR MSG_VMAX_B = _UxGT("Vđa") STR_B; - LSTR MSG_VMAX_C = _UxGT("Vđa") STR_C; - LSTR MSG_VMAX_N = _UxGT("Vđa@"); - LSTR MSG_VMAX_E = _UxGT("VđaE"); - LSTR MSG_VMAX_EN = _UxGT("Vđa *"); - LSTR MSG_VMIN = _UxGT("Vthiểu"); // Vmin - LSTR MSG_VTRAV_MIN = _UxGT("Vchuyển thiểu"); // VTrav min - LSTR MSG_ACCELERATION = _UxGT("Sự tăng tốc"); // Acceleration - LSTR MSG_AMAX_A = _UxGT("Tăng tốc ca") STR_A; // Amax - LSTR MSG_AMAX_B = _UxGT("Tăng tốc ca") STR_B; - LSTR MSG_AMAX_C = _UxGT("Tăng tốc ca") STR_C; - LSTR MSG_AMAX_N = _UxGT("Tăng tốc ca@"); - LSTR MSG_AMAX_E = _UxGT("Tăng tốc caE"); - LSTR MSG_AMAX_EN = _UxGT("Tăng tốc ca *"); - LSTR MSG_A_RETRACT = _UxGT("TT-Rút"); // A-retract - LSTR MSG_A_TRAVEL = _UxGT("TT-Chuyển"); // A-travel - LSTR MSG_STEPS_PER_MM = _UxGT("Bước/mm"); // Steps - LSTR MSG_A_STEPS = _UxGT("Bước") STR_A _UxGT("/mm"); // Steps/mm - LSTR MSG_B_STEPS = _UxGT("Bước") STR_B _UxGT("/mm"); - LSTR MSG_C_STEPS = _UxGT("Bước") STR_C _UxGT("/mm"); - LSTR MSG_N_STEPS = _UxGT("Bước@/mm"); - LSTR MSG_E_STEPS = _UxGT("BướcE/mm"); - LSTR MSG_EN_STEPS = _UxGT("Bước */mm"); - LSTR MSG_TEMPERATURE = _UxGT("Nhiệt độ"); // Temperature - LSTR MSG_MOTION = _UxGT("Chuyển động"); // Motion - LSTR MSG_FILAMENT = _UxGT("Vật liệu in"); // Dây nhựa - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E bằng mm") SUPERSCRIPT_THREE; // E in mm - LSTR MSG_FILAMENT_DIAM = _UxGT("Đường kính nhựa"); // Fil. Dai. - LSTR MSG_FILAMENT_DIAM_E = _UxGT("Đường kính nhựa *"); - LSTR MSG_FILAMENT_UNLOAD = _UxGT("Dỡ mm"); // Unload mm - LSTR MSG_FILAMENT_LOAD = _UxGT("Nạp mm"); - LSTR MSG_ADVANCE_K = _UxGT("K Cấp Cao"); // Advance K - LSTR MSG_ADVANCE_K_E = _UxGT("K Cấp Cao *"); // Advance K - LSTR MSG_CONTRAST = _UxGT("Độ tương phản LCD"); // LCD contrast - LSTR MSG_STORE_EEPROM = _UxGT("Lưu các thiết lập"); // Store settings - LSTR MSG_LOAD_EEPROM = _UxGT("Tải các cài đặt"); // Load settings - LSTR MSG_RESTORE_DEFAULTS = _UxGT("Khôi phục phòng hư"); // Restore Defaults - LSTR MSG_INIT_EEPROM = _UxGT("Khởi Tạo EEPROM"); // Initialize EEPROM - LSTR MSG_MEDIA_UPDATE = _UxGT("Cập Nhật phương tiện"); // Update media - LSTR MSG_RESET_PRINTER = _UxGT("Bặt Lại Máy In"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Cập Nhật"); // Refresh - LSTR MSG_INFO_SCREEN = _UxGT("Màn Hình Thông Tin"); // Info screen - LSTR MSG_PREPARE = _UxGT("Chuẩn bị"); // Prepare - LSTR MSG_TUNE = _UxGT("Điều Chỉnh"); // Tune - LSTR MSG_PAUSE_PRINT = _UxGT("Tạm dừng in"); // Pause print - LSTR MSG_RESUME_PRINT = _UxGT("Tiếp tục in"); // Resume print - LSTR MSG_STOP_PRINT = _UxGT("Ngừng in"); // Stop print - LSTR MSG_OUTAGE_RECOVERY = _UxGT("Phục Hồi Mất Điện"); // Outage Recovery - LSTR MSG_MEDIA_MENU = _UxGT("In từ phương tiện"); // Print from media - LSTR MSG_NO_MEDIA = _UxGT("Không có phương tiện"); // No media - LSTR MSG_DWELL = _UxGT("Ngủ..."); // Sleep - LSTR MSG_USERWAIT = _UxGT("Nhấn để tiếp tục..."); // Click to resume (same as 'continue') - LSTR MSG_PRINT_PAUSED = _UxGT("In tạm dừng"); // Print paused - LSTR MSG_PRINTING = _UxGT("Đang in..."); // Printing - LSTR MSG_PRINT_ABORTED = _UxGT("In đã hủy bỏ"); // Print aborted - LSTR MSG_NO_MOVE = _UxGT("Không di chuyển."); // No move. - LSTR MSG_KILLED = _UxGT("ĐÃ CHẾT. "); - LSTR MSG_STOPPED = _UxGT("ĐÃ NGỪNG. "); - LSTR MSG_CONTROL_RETRACT = _UxGT("Rút mm"); // Retract mm - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Rút Trao.mm"); // Swap Re.mm - LSTR MSG_CONTROL_RETRACTF = _UxGT("Rút V"); - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Nhảy mm"); // Hop - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("BỏRút mm"); // Unretr. mm - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("BỏRút T mm"); // S Unretr. mm - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("BỏRút V"); // UnRet V - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("BỏRút T V"); // S UnRet V - LSTR MSG_AUTORETRACT = _UxGT("RútTựĐộng"); // Auto-Retract - LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Khoảng Cách Rút"); // Retract Distance - LSTR MSG_TOOL_CHANGE = _UxGT("Thay Đổi Công Cụ"); // Tool Change - LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Đưa Lên Z"); // Z Raise - LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Tốc Độ Tuôn Ra"); // Prime Speed - LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Tốc Độ Rút Lại"); // Retract Speed - LSTR MSG_FILAMENTCHANGE = _UxGT("Thay dây nhựa"); // Change filament - LSTR MSG_FILAMENTCHANGE_E = _UxGT("Thay dây nhựa *"); // Change filament - LSTR MSG_FILAMENTLOAD = _UxGT("Nạp dây nhựa"); // Load filament - LSTR MSG_FILAMENTLOAD_E = _UxGT("Nạp dây nhựa *"); // Load filament - LSTR MSG_FILAMENTUNLOAD = _UxGT("Dỡ dây nhựa"); // Unload filament - LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Dỡ dây nhựa *"); // Unload filament - LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Dỡ tất cả"); // Unload All - - LSTR MSG_ATTACH_MEDIA = _UxGT("Khởi tạo phương tiện"); // Attach media - LSTR MSG_ATTACH_SD = _UxGT("Khởi tạo thẻ SD"); // Attach SD Card - LSTR MSG_ATTACH_USB = _UxGT("Khởi tạo thanh USB"); // Attach USB Drive - LSTR MSG_CHANGE_MEDIA = _UxGT("Thay phương tiện"); // Change midea - LSTR MSG_RELEASE_MEDIA = _UxGT("Phát hành phương tiện"); - LSTR MSG_RUN_AUTOFILES = _UxGT("Khởi chạy tự động"); // Autostart - - LSTR MSG_ZPROBE_OUT = _UxGT("Đầu Dò Z qua bàn"); // Z Probe past bed - LSTR MSG_SKEW_FACTOR = _UxGT("Hệ số nghiêng"); // Skew Factor - LSTR MSG_BLTOUCH = _UxGT("BLTOUCH"); // BLTouch - LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Tự kiểm tra BLTOUCH "); // BLTouch Self-Test - LSTR MSG_BLTOUCH_RESET = _UxGT("Bặt lại BLTouch"); // Reset BLTouch - LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Đem BLTouch"); // Deploy BLTouch - LSTR MSG_BLTOUCH_STOW = _UxGT("Cất BLTouch"); // Stow BLTouch - LSTR MSG_MANUAL_DEPLOY = _UxGT("Đem Đầu Dò-Z"); // Deploy Z-Probe - LSTR MSG_MANUAL_STOW = _UxGT("Cất Đầu Dò-Z"); // Stow Z-Probe - LSTR MSG_HOME_FIRST = _UxGT("Về nhà %s Trước"); // Home %s first - LSTR MSG_ZPROBE_XOFFSET = _UxGT("Đầu Dò Bù Đắp X"); // Probe X Offset - LSTR MSG_ZPROBE_YOFFSET = _UxGT("Đầu Dò Bù Đắp Y"); // Probe Y Offset - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Đầu Dò Bù Đắp Z"); // Probe Z Offset - LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Đầu Dò Bù Đắp @"); // Probe @ Offset - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Điều chỉnh Z từng"); // Babystep Probe Z - LSTR MSG_BABYSTEP_X = _UxGT("Nhít X"); // Babystep X - LSTR MSG_BABYSTEP_Y = _UxGT("Nhít Y"); - LSTR MSG_BABYSTEP_Z = _UxGT("Nhít Z"); - LSTR MSG_BABYSTEP_N = _UxGT("Nhít @"); - LSTR MSG_ENDSTOP_ABORT = _UxGT("Hủy bỏ công tắc"); // Endstop abort - LSTR MSG_ERR_HEATING_FAILED = _UxGT("Sưởi đầu phun không thành công"); // Heating failed - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Điều sai: nhiệt độ dư"); // Err: REDUNDANT TEMP - LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("Vấn đề nhiệt"); // THERMAL RUNAWAY | problem - LSTR MSG_ERR_MAXTEMP = _UxGT("Điều sai: nhiệt độ tối đa"); // Err: MAXTEMP - LSTR MSG_ERR_MINTEMP = _UxGT("Điều sai: nhiệt độ tối thiểu"); // Err: MINTEMP - LSTR MSG_HALTED = _UxGT("MÁY IN ĐÃ DỪNG LẠI"); // PRINTER HALTED - LSTR MSG_PLEASE_RESET = _UxGT("Xin bặt lại"); // Please reset - LSTR MSG_HEATING = _UxGT("Đang sưởi nóng..."); // Heating - LSTR MSG_COOLING = _UxGT("Đang làm nguội..."); // Cooling - LSTR MSG_BED_HEATING = _UxGT("Đang sưởi nong bàn..."); // Bed heating - LSTR MSG_BED_COOLING = _UxGT("Đang làm nguội bàn..."); // Bed cooling - LSTR MSG_DELTA_CALIBRATE = _UxGT("Cân Chỉnh Delta"); // Delta calibration - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Chỉnh X lại"); - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Chỉnh Y lại"); - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Chỉnh Z lại"); - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Chỉnh Z Center"); // Calibrate Center - LSTR MSG_DELTA_SETTINGS = _UxGT("Cài Đặt Delta"); // Delta Settings - LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Cân Chỉnh Tự Động"); // Auto Calibration - LSTR MSG_DELTA_DIAG_ROD = _UxGT("Gậy Chéo"); // Diag Rod - LSTR MSG_DELTA_HEIGHT = _UxGT("Chiều Cao"); // Height - LSTR MSG_DELTA_RADIUS = _UxGT("Bán Kính"); // Radius - LSTR MSG_INFO_MENU = _UxGT("Về Máy In"); - LSTR MSG_INFO_PRINTER_MENU = _UxGT("Thông Tin Máy In"); // Printer Info - LSTR MSG_3POINT_LEVELING = _UxGT("San lấp 3-Điểm"); // 3-Point Leveling - LSTR MSG_LINEAR_LEVELING = _UxGT("San Lấp Tuyến Tính"); // Linear Leveling - LSTR MSG_BILINEAR_LEVELING = _UxGT("San Lấp Song Tuyến"); // Bilinear Leveling - LSTR MSG_UBL_LEVELING = _UxGT("San Lấp Bàn Thống Nhất"); // Unified Bed Leveling - LSTR MSG_MESH_LEVELING = _UxGT("Lưới San Lấp"); // Mesh Leveling - LSTR MSG_INFO_STATS_MENU = _UxGT("Thống Kê Máy In"); // Printer Stats - LSTR MSG_INFO_BOARD_MENU = _UxGT("Thông Tin Bo Mạch"); // Board Info - LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Điện Trở Nhiệt"); // Thermistors - LSTR MSG_INFO_EXTRUDERS = _UxGT("Máy đùn"); // Extruders - LSTR MSG_INFO_BAUDRATE = _UxGT("Baud"); // Baud - LSTR MSG_INFO_PROTOCOL = _UxGT("Giao Thức"); // Protocol - LSTR MSG_CASE_LIGHT = _UxGT("Đèn Khuông"); // Case light - LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Độ Sáng"); // Light Brightness - LSTR MSG_INFO_PRINT_COUNT = _UxGT("In"); // Prints - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Đã hoàn thành"); // Completed - LSTR MSG_INFO_PRINT_TIME = _UxGT("Tổng số"); // Total - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Dài nhất"); // Longest - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Đã ép đùn"); - LSTR MSG_INFO_MIN_TEMP = _UxGT("Nhiệt độ tối thiểu"); // Min Temp - LSTR MSG_INFO_MAX_TEMP = _UxGT("Nhiệt độ tối đa"); // Max temp - LSTR MSG_INFO_PSU = _UxGT("Bộ nguồn"); // PSU - LSTR MSG_DRIVE_STRENGTH = _UxGT("Sức mạnh ổ đĩa"); // Drive Strength - LSTR MSG_DAC_PERCENT_N = _UxGT("@ % trình điều khiển"); - LSTR MSG_DAC_EEPROM_WRITE = _UxGT("Ghi DAC EEPROM"); // DAC EEPROM Write - LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("In tạm dừng"); // PRINT PAUSED - LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("Nạp dây nhựa"); - LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("Dỡ dây nhựa"); // Unload filament - LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("Tùy chọn hồi phục:"); // RESUME OPTIONS - LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Xả thêm"); // Purge more - LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Tiếp tục"); // Continue - LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Đầu Phun: "); // Nozzle - LSTR MSG_KILL_HOMING_FAILED = _UxGT("Sự nhà không thành công"); // Homing failed - LSTR MSG_LCD_PROBING_FAILED = _UxGT(" không thành công"); // Probing failed - - // - // 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 - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Nhấn nút", "để tiếp tục in")); // Press button to resume print - LSTR 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 - LSTR 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 // - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Nhấn nút", "để làm nóng đầu phun")); // Press button to heat nozzle - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Đầu phun đang nóng lên", "Xin chờ...")); // Nozzle heating Please wait - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Chờ tro", "dây nhựa ra")); // Wait for filament unload - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Chờ tro", "dây nhựa vào")); // Wait for filament load - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Chờ tro", "xả dây nhựa")); // Wait for filament purge - LSTR 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 - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Chờ tro in", "tiếp tục...")); // Wait for print to resume - #else // LCD_HEIGHT < 4 - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Nhấn nút để tiếp tục")); // Click to continue - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Xin chờ...")); - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Chèn và nhấn")); // Insert and Click - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Nhấn để sưởi")); // Click to heat - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Đang sưởi nóng")); // Heating - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Đang dỡ ra...")); // Ejecting - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Đang nạp...")); // Loading - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Đang xả...")); // Purging - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Nhấn nút để kết thúc")); // Click to finish - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Đang tiếp tục...")); // Resuming - #endif // LCD_HEIGHT < 4 - - LSTR MSG_TMC_DRIVERS = _UxGT("Trình điều khiển TMC"); // TMC drivers - LSTR MSG_TMC_CURRENT = _UxGT("Dòng điện trình điều khiển"); // Driver current - LSTR MSG_TMC_HYBRID_THRS = _UxGT("Ngưỡng Hỗn Hợp"); // Hybrid threshold - LSTR MSG_TMC_HOMING_THRS = _UxGT("Vô cảm biến"); // Sensorless homing - LSTR MSG_TMC_STEPPING_MODE = _UxGT("Chế độ từng bước"); // Stepping mode - LSTR MSG_TMC_STEALTHCHOP = _UxGT("CắtTàngHình"); // StealthChop - - LSTR MSG_SHORT_DAY = _UxGT("n"); // d - ngày - One character only - LSTR MSG_SHORT_HOUR = _UxGT("g"); // h - giờ - One character only - LSTR MSG_SHORT_MINUTE = _UxGT("p"); // m - phút - One character only + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT(" Sẵn sàng."); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = _UxGT("Phương tiện được cắm vào"); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = _UxGT("Phương tiện được rút ra"); // (MEDIA_TYPE_EN) Removed + LSTR MSG_LCD_ENDSTOPS = _UxGT("Công tắc"); // Endstops + LSTR MSG_MAIN_MENU = _UxGT("Chính"); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("Tắt động cơ bước"); // Disable Steppers + LSTR MSG_AUTO_HOME = _UxGT("Về nhà tự động"); // Auto Home + LSTR MSG_AUTO_HOME_X = _UxGT("Về nhà X"); // Home X + LSTR MSG_AUTO_HOME_Y = _UxGT("Về nhà Y"); // Home Y + LSTR MSG_AUTO_HOME_Z = _UxGT("Về nhà Z"); // Home Z + LSTR MSG_LEVEL_BED_HOMING = _UxGT("Đang về nhà XYZ"); // Homing XYZ + LSTR MSG_LEVEL_BED_WAITING = _UxGT("Nhấn để bắt đầu"); // Click to Begin + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("Điểm tiếp theo"); // Next Point + LSTR MSG_LEVEL_BED_DONE = _UxGT("San lấp được hoàn thành"); // Leveling Done! + LSTR MSG_SET_HOME_OFFSETS = _UxGT("Đặt bù đắp nhà"); // Set Home Offsets + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("Bù đắp được áp dụng"); // Offsets Applied + LSTR MSG_PREHEAT_1 = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" trước"); // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" trước ~"); // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Đầu"); // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Đầu ~"); // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_1_ALL = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Tất cả"); // Preheat (PREHEAT_1_LABEL) All + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Bàn"); // Preheat (PREHEAT_1_LABEL) Bed + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("Làm nóng ") PREHEAT_1_LABEL _UxGT(" Cấu hình"); // Preheat (PREHEAT_1_LABEL) Conf + LSTR MSG_PREHEAT_M = _UxGT("Làm nóng $ trước"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("Làm nóng $ trước ~"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("Làm nóng $ Đầu"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("Làm nóng $ Đầu ~"); // Preheat $ End ~ + LSTR MSG_PREHEAT_M_ALL = _UxGT("Làm nóng $ Tất cả"); // Preheat $ All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("Làm nóng $ Bàn"); // Preheat $ Bed + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("Làm nóng $ Cấu hình"); // Preheat $ Conf + LSTR MSG_COOLDOWN = _UxGT("Nguội xuống"); // Cooldown + LSTR MSG_SWITCH_PS_ON = _UxGT("Bật nguồn"); // Switch Power On + LSTR MSG_SWITCH_PS_OFF = _UxGT("Tắt nguồn"); // Switch Power Off + LSTR MSG_EXTRUDE = _UxGT("Ép đùn"); // Extrude + LSTR MSG_RETRACT = _UxGT("Rút lại"); // Retract + LSTR MSG_MOVE_AXIS = _UxGT("Di chuyển trục"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("Chạm và san lấp"); // Probe and Level + LSTR MSG_BED_LEVELING = _UxGT("San Lấp Bàn"); // Bed Leveling + LSTR MSG_LEVEL_BED = _UxGT("Làm bằng mặt bàn"); // Level Bed + LSTR MSG_MOVE_X = _UxGT("Di chuyển X"); // Move X + LSTR MSG_MOVE_Y = _UxGT("Di chuyển Y"); // Move Y + LSTR MSG_MOVE_Z = _UxGT("Di chuyển Z"); // Move Z + LSTR MSG_MOVE_N = _UxGT("Di chuyển @"); // Move @ + LSTR MSG_MOVE_E = _UxGT("Máy đùn"); // Move Extruder + LSTR MSG_MOVE_EN = _UxGT("Máy đùn *"); // Move * + LSTR MSG_MOVE_N_MM = _UxGT("Di chuyển $mm"); // Move $mm + LSTR MSG_MOVE_N_IN = _UxGT("Di chuyển $in"); // Move $in + LSTR MSG_MOVE_N_DEG = _UxGT("Di chuyển $") LCD_STR_DEGREE; // Move $(LCD_STR_DEGREE) + LSTR MSG_SPEED = _UxGT("Tốc độ"); // Speed + LSTR MSG_MESH_Z_OFFSET = _UxGT("Z Bàn"); // Bed Z + LSTR MSG_NOZZLE = _UxGT("Đầu phun"); // Nozzle + LSTR MSG_NOZZLE_N = _UxGT("Đầu phun ~"); // Nozzle ~ + LSTR MSG_BED = _UxGT("Bàn"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("Tốc độ quạt"); // Fan Speed + LSTR MSG_FAN_SPEED_N = _UxGT("Tốc độ quạt ~"); // Fan Speed ~ + LSTR MSG_FLOW = _UxGT("Lưu Lượng"); // Flow + LSTR MSG_FLOW_N = _UxGT("Lưu Lượng ~"); // Flow ~ + LSTR MSG_CONTROL = _UxGT("Điều khiển"); // Control + LSTR MSG_AUTOTEMP = _UxGT("Nhiệt độ tự động"); // Autotemp + LSTR MSG_SELECT_E = _UxGT("Lựa *"); // Select * + LSTR MSG_ACC = _UxGT("Tăng Tốc"); // Accel + LSTR MSG_VTRAV_MIN = _UxGT("Vchuyển thiểu"); // Min Travel Speed + LSTR MSG_ACCELERATION = _UxGT("Sự tăng tốc"); // Acceleration + LSTR MSG_AMAX_A = _UxGT("Tăng tốc ca") STR_A; // Max (STR_A) Accel + LSTR MSG_AMAX_B = _UxGT("Tăng tốc ca") STR_B; // Max (STR_B) Accel + LSTR MSG_AMAX_C = _UxGT("Tăng tốc ca") STR_C; // Max (STR_C) Accel + LSTR MSG_AMAX_N = _UxGT("Tăng tốc ca@"); // Max @ Accel + LSTR MSG_AMAX_E = _UxGT("Tăng tốc caE"); // Max E Accel + LSTR MSG_AMAX_EN = _UxGT("Tăng tốc ca *"); // Max * Accel + LSTR MSG_A_RETRACT = _UxGT("TT-Rút"); // Retract Accel + LSTR MSG_A_TRAVEL = _UxGT("TT-Chuyển"); // Travel Accel + LSTR MSG_STEPS_PER_MM = _UxGT("Bước/mm"); // Steps/mm + LSTR MSG_A_STEPS = _UxGT("Bước") STR_A _UxGT("/mm"); // (STR_A) Steps/mm + LSTR MSG_B_STEPS = _UxGT("Bước") STR_B _UxGT("/mm"); // (STR_B) Steps/mm + LSTR MSG_C_STEPS = _UxGT("Bước") STR_C _UxGT("/mm"); // (STR_C) Steps/mm + LSTR MSG_N_STEPS = _UxGT("Bước@/mm"); // @ steps/mm + LSTR MSG_E_STEPS = _UxGT("BướcE/mm"); // E steps/mm + LSTR MSG_EN_STEPS = _UxGT("Bước */mm"); // * Steps/mm + LSTR MSG_TEMPERATURE = _UxGT("Nhiệt độ"); // Temperature + LSTR MSG_MOTION = _UxGT("Chuyển động"); // Motion + LSTR MSG_FILAMENT = _UxGT("Vật liệu in"); // Filament + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E bằng mm") SUPERSCRIPT_THREE; // E in mm(SUPERSCRIPT_THREE) + LSTR MSG_FILAMENT_DIAM = _UxGT("Đường kính nhựa"); // Fil. Dia. + LSTR MSG_FILAMENT_DIAM_E = _UxGT("Đường kính nhựa *"); // Fil. Dia. * + LSTR MSG_CONTRAST = _UxGT("Độ tương phản LCD"); // LCD Contrast + LSTR MSG_STORE_EEPROM = _UxGT("Lưu các thiết lập"); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("Tải các cài đặt"); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("Khôi phục phòng hư"); // Restore Defaults + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("Cập Nhật"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT("Màn Hình Thông Tin"); // Info Screen + LSTR MSG_PREPARE = _UxGT("Chuẩn bị"); // Prepare + LSTR MSG_TUNE = _UxGT("Điều Chỉnh"); // Tune + LSTR MSG_PAUSE_PRINT = _UxGT("Tạm dừng in"); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("Tiếp tục in"); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("Ngừng in"); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("In từ phương tiện"); // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = _UxGT("Không có phương tiện"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_DWELL = _UxGT("Ngủ..."); // Sleep... + LSTR MSG_USERWAIT = _UxGT("Nhấn để tiếp tục..."); // Click to Resume... + LSTR MSG_PRINT_ABORTED = _UxGT("In đã hủy bỏ"); // Print Aborted + LSTR MSG_NO_MOVE = _UxGT("Không di chuyển."); // No Move. + LSTR MSG_KILLED = _UxGT("ĐÃ CHẾT. "); // KILLED. + LSTR MSG_STOPPED = _UxGT("ĐÃ NGỪNG. "); // STOPPED. + LSTR MSG_CONTROL_RETRACT = _UxGT("Rút mm"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("Rút Trao.mm"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACTF = _UxGT("Rút V"); // Retract V + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Nhảy mm"); // Hop mm + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("BỏRút mm"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("BỏRút T mm"); // S Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("BỏRút V"); // Unretract V + LSTR MSG_AUTORETRACT = _UxGT("RútTựĐộng"); // Auto-Retract + LSTR MSG_FILAMENTCHANGE = _UxGT("Thay dây nhựa"); // Change Filament + LSTR MSG_FILAMENTCHANGE_E = _UxGT("Thay dây nhựa *"); // Change * Filament + LSTR MSG_ATTACH_MEDIA = _UxGT("Khởi tạo phương tiện"); // Attach (MEDIA_TYPE_EN) + LSTR MSG_ATTACH_SD = _UxGT("Khởi tạo thẻ SD"); // Attach SD Card + LSTR MSG_ATTACH_USB = _UxGT("Khởi tạo thanh USB"); // Attach USB Drive + LSTR MSG_CHANGE_MEDIA = _UxGT("Thay phương tiện"); // Refresh (MEDIA_TYPE_EN) + LSTR MSG_RUN_AUTOFILES = _UxGT("Khởi chạy tự động"); // Run Autofiles + LSTR MSG_ZPROBE_OUT = _UxGT("Đầu Dò Z qua bàn"); // Z Probe Past Bed + LSTR MSG_BLTOUCH_RESET = _UxGT("Bặt lại BLTouch"); // Reset + LSTR MSG_ZPROBE_XOFFSET = _UxGT("Đầu Dò Bù Đắp X"); // Probe X Offset + LSTR MSG_ZPROBE_YOFFSET = _UxGT("Đầu Dò Bù Đắp Y"); // Probe Y Offset + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Đầu Dò Bù Đắp Z"); // Probe Z Offset + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("Đầu Dò Bù Đắp @"); // Probe @ Offset + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("Điều chỉnh Z từng"); // Babystep Probe Z + LSTR MSG_BABYSTEP_X = _UxGT("Nhít X"); // Babystep X + LSTR MSG_BABYSTEP_Y = _UxGT("Nhít Y"); // Babystep Y + LSTR MSG_BABYSTEP_Z = _UxGT("Nhít Z"); // Babystep Z + LSTR MSG_BABYSTEP_N = _UxGT("Nhít @"); // Babystep @ + LSTR MSG_ENDSTOP_ABORT = _UxGT("Hủy bỏ công tắc"); // Endstop Abort + LSTR MSG_ERR_HEATING_FAILED = _UxGT("Sưởi đầu phun không thành công"); // Heating Failed + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("Điều sai: nhiệt độ dư"); // Err: REDUNDANT TEMP + LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("Vấn đề nhiệt"); // THERMAL RUNAWAY + LSTR MSG_ERR_MAXTEMP = _UxGT("Điều sai: nhiệt độ tối đa"); // Err: MAXTEMP + LSTR MSG_ERR_MINTEMP = _UxGT("Điều sai: nhiệt độ tối thiểu"); // Err: MINTEMP + LSTR MSG_HALTED = _UxGT("MÁY IN ĐÃ DỪNG LẠI"); // PRINTER HALTED + LSTR MSG_PLEASE_RESET = _UxGT("Xin bặt lại"); // Please Reset + LSTR MSG_HEATING = _UxGT("Đang sưởi nóng..."); // Heating... + LSTR MSG_BED_HEATING = _UxGT("Đang sưởi nong bàn..."); // Bed Heating... + LSTR MSG_DELTA_CALIBRATE = _UxGT("Cân Chỉnh Delta"); // Delta Calibration + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("Chỉnh X lại"); // Calibrate X + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("Chỉnh Y lại"); // Calibrate Y + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("Chỉnh Z lại"); // Calibrate Z + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("Chỉnh Z Center"); // Calibrate Center + LSTR MSG_INFO_MENU = _UxGT("Về Máy In"); // About Printer + LSTR MSG_INFO_PRINTER_MENU = _UxGT("Thông Tin Máy In"); // Printer Info + LSTR MSG_INFO_STATS_MENU = _UxGT("Thống Kê Máy In"); // Stats + LSTR MSG_INFO_BOARD_MENU = _UxGT("Thông Tin Bo Mạch"); // Board Info + LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("Điện Trở Nhiệt"); // Thermistors + LSTR MSG_INFO_EXTRUDERS = _UxGT("Máy đùn"); // Extruders + LSTR MSG_INFO_BAUDRATE = _UxGT("Baud"); // Baud + LSTR MSG_INFO_PROTOCOL = _UxGT("Giao Thức"); // Protocol + LSTR MSG_CASE_LIGHT = _UxGT("Đèn Khuông"); // Case Light + LSTR MSG_INFO_PRINT_COUNT = _UxGT("In"); // Prints + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Đã hoàn thành"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Tổng số"); // Total + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Dài nhất"); // Longest + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Đã ép đùn"); // Extruded + LSTR MSG_INFO_MIN_TEMP = _UxGT("Nhiệt độ tối thiểu"); // Min Temp + LSTR MSG_INFO_MAX_TEMP = _UxGT("Nhiệt độ tối đa"); // Max Temp + LSTR MSG_INFO_PSU = _UxGT("Bộ nguồn"); // PSU + LSTR MSG_DRIVE_STRENGTH = _UxGT("Sức mạnh ổ đĩa"); // Drive Strength + LSTR MSG_DAC_EEPROM_WRITE = _UxGT("Ghi DAC EEPROM"); // DAC EEPROM Write + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("Tiếp tục"); // Continue + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("Xin chờ...")); // |Please wait... + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("Chèn và nhấn")); // |Insert and Click + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("Đang dỡ ra...")); // |Ejecting... + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("Đang nạp...")); // |Loading... + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("Đang tiếp tục...")); // |Resuming... + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" Đa"); // (LCD_STR_THERMOMETER) Min + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" Thiểu"); // (LCD_STR_THERMOMETER) Max + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" Hệ Số"); // (LCD_STR_THERMOMETER) Fact + LSTR MSG_LCD_ON = _UxGT("Bật"); // On + LSTR MSG_LCD_OFF = _UxGT("Tắt"); // Off + LSTR MSG_DEBUG_MENU = _UxGT("Menu gỡ lỗi"); // Debug Menu + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Kiểm tra tiến độ"); // Progress Bar Test + LSTR MSG_MOVING = _UxGT("Di chuyển..."); // Moving... + LSTR MSG_FREE_XY = _UxGT("Giải phóng XY"); // Free XY + LSTR MSG_HOME_FIRST = _UxGT("Về nhà %s Trước"); // Home %s First + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("Đang sưởi nóng")); // |Heating... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("Nhấn để sưởi")); // |Click to heat + LSTR MSG_BACK = _UxGT("Trở lại"); // Back + LSTR MSG_MEDIA_ABORTING = _UxGT("Đang hủy bỏ..."); // Aborting... + LSTR MSG_MEDIA_READ_ERROR = _UxGT("Lỗi đọc phương tiện"); // (MEDIA_TYPE_EN) read error + LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB được rút ra"); // USB device removed + LSTR MSG_USB_FD_USB_FAILED = _UxGT("USB khởi thất bại"); // USB start failed + LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("Công tắc mềm"); // Soft Endstops + LSTR MSG_ADVANCED_SETTINGS = _UxGT("Thiết lập cấp cao"); // Advanced Settings + LSTR MSG_CONFIGURATION = _UxGT("Cấu hình"); // Configuration + LSTR MSG_AUTO_Z_ALIGN = _UxGT("Chỉnh canh Z tự động"); // Auto Z-Align + LSTR MSG_Z_FADE_HEIGHT = _UxGT("Chiều cao mờ dần"); // Fade Height + LSTR MSG_PREHEAT_CUSTOM = _UxGT("Sự nóng trước tự chọn"); // Preheat Custom + LSTR MSG_BED_TRAMMING = _UxGT("Làm bằng góc bàn"); // Bed Tramming + LSTR MSG_NEXT_CORNER = _UxGT("Góc tiếp theo"); // Next Corner + LSTR MSG_EDIT_MESH = _UxGT("Chỉnh sửa lưới"); // Edit Mesh + LSTR MSG_EDITING_STOPPED = _UxGT("Chỉnh lưới đã dừng"); // Mesh Editing Stopped + LSTR MSG_MESH_X = _UxGT("Mục lục X"); // Index X + LSTR MSG_MESH_Y = _UxGT("Mục lục Y"); // Index Y + LSTR MSG_MESH_EDIT_Z = _UxGT("Giá trị Z"); // Z Value + LSTR MSG_CUSTOM_COMMANDS = _UxGT("Các lệnh tự chọn"); // Custom Commands + LSTR MSG_IDEX_MENU = _UxGT("chế độ IDEX"); // IDEX Mode + LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Đậu tự động"); // Auto-Park + LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Sự gấp đôi"); // Duplication + LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Bản sao thu nhỏ"); // Mirrored Copy + LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Toàn quyền điều khiển"); // Full Control + LSTR MSG_UBL_DOING_G29 = _UxGT("Đang chạy G29"); // Doing G29 + LSTR MSG_UBL_TOOLS = _UxGT("Công cụ UBL"); // UBL Tools + LSTR MSG_UBL_MANUAL_MESH = _UxGT("Tự xây dựng lưới"); // Manually Build Mesh + LSTR MSG_UBL_BC_INSERT = _UxGT("Đặt chêm và đo"); // Place Shim & Measure + LSTR MSG_UBL_BC_INSERT2 = _UxGT("Đo"); // Measure + LSTR MSG_UBL_BC_REMOVE = _UxGT("Tháo và đo bàn"); // Remove & Measure Bed + LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("Chuyển sang tiếp theo"); // Moving to next + LSTR MSG_UBL_SET_TEMP_BED = _UxGT("Nhiệt độ bàn"); // Bed Temp + LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("Bed Temp"); // Bed Temp + LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("Nhiệt độ đầu phun"); // Hotend Temp + LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("Hotend Temp"); // Hotend Temp + LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("Chỉnh sửa lưới tự chọn"); // Edit Custom Mesh + LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("Chỉnh lưới chính xác"); // Fine Tuning Mesh + LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("Chỉnh sửa xong lưới"); // Done Editing Mesh + LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("Xây dựng lưới tự chọn"); // Build Custom Mesh + LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("Xây dựng lưới"); // Build Mesh + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("Xây dựng lưới ($)"); // Build Mesh ($) + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("Thẩm tra lưới ($)"); // Validate Mesh ($) + LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("Xây dựng lưới lạnh"); // Build Cold Mesh + LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("Điều chỉnh chiều cao lưới"); // Adjust Mesh Height + LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("Số lượng chiều cao"); // Height Amount + LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("Thẩm tra lưới"); // Validate Mesh + LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("Thẩm tra lưới tự chọn"); // Validate Custom Mesh + LSTR MSG_UBL_CONTINUE_MESH = _UxGT("Tiếp tục xây lưới bàn"); // Continue Bed Mesh + LSTR MSG_UBL_MESH_LEVELING = _UxGT("Đang san lấp lưới"); // Mesh Leveling + LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("Đang san lấp 3-điểm"); // 3-Point Leveling + LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("Đang san lấp lưới phẳng"); // Grid Mesh Leveling + LSTR MSG_UBL_MESH_LEVEL = _UxGT("Làm bằng lưới"); // Level Mesh + LSTR MSG_UBL_SIDE_POINTS = _UxGT("Điểm bên cạnh"); // Side Points + LSTR MSG_UBL_MAP_TYPE = _UxGT("Loại bản đồ"); // Map Type + LSTR MSG_UBL_OUTPUT_MAP = _UxGT("Đầu ra bản đồ lưới"); // Output Mesh Map + LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("Đầu ra cho máy chủ"); // Output for Host + LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("Đầu ra cho CSV"); // Output for CSV + LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("Hỗ trợ lưới"); // Off Printer Backup + LSTR MSG_UBL_INFO_UBL = _UxGT("Đầu ra thông tin UBL"); // Output UBL Info + LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("Số lượng lấp đầy"); // Fill-in Amount + LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("Tự lấp đầy"); // Manual Fill-in + LSTR MSG_UBL_SMART_FILLIN = _UxGT("Lấp đầy thông minh"); // Smart Fill-in + LSTR MSG_UBL_FILLIN_MESH = _UxGT("Lưới lấp đầy"); // Fill-in Mesh + LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("Bác bỏ tất cả"); // Invalidate All + LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("Bác bỏ gần nhất"); // Invalidate Closest + LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("Chỉnh chính xác tất cả"); // Fine Tune All + LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("Chỉnh chính xác gần nhất"); // Fine Tune Closest + LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("Lưu trữ lưới"); // Mesh Storage + LSTR MSG_UBL_STORAGE_SLOT = _UxGT("Khe nhớ"); // Memory Slot + LSTR MSG_UBL_LOAD_MESH = _UxGT("Tải lưới bàn"); // Load Bed Mesh + LSTR MSG_UBL_SAVE_MESH = _UxGT("Lưu lưới bàn"); // Save Bed Mesh + LSTR MSG_MESH_LOADED = _UxGT("%i lưới được nạp"); // Mesh %i Loaded + LSTR MSG_MESH_SAVED = _UxGT("%i lưới đã lưu"); // Mesh %i Saved + LSTR MSG_UBL_NO_STORAGE = _UxGT("Không lưu trữ"); // No Storage + LSTR MSG_UBL_SAVE_ERROR = _UxGT("Điều sai: Lưu UBL"); // UBL Save Error + LSTR MSG_UBL_RESTORE_ERROR = _UxGT("Điều Sai: Khôi Phục UBL"); // UBL Restore Error + LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Đầu Dò-Z Đã Ngừng"); // Z-Offset Stopped + LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("Bước-Từng-Bước UBL"); // Step-By-Step UBL + LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1.Xây dựng lưới lạnh"); // 1. Build Cold Mesh + LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2.Lấp đầy thông minh"); // 2. Smart Fill-in + LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3.Thẩm tra lưới"); // 3. Validate Mesh + LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4.Chỉnh chính xác tất cả"); // 4. Fine Tune All + LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5.Thẩm tra lưới"); // 5. Validate Mesh + LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6.Chỉnh chính xác tất cả"); // 6. Fine Tune All + LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7.Lưu lưới bàn"); // 7. Save Bed Mesh + LSTR MSG_LED_CONTROL = _UxGT("Điều khiển LED"); // LED Control + LSTR MSG_LIGHTS = _UxGT("Đèn"); // Lights + LSTR MSG_LIGHT_N = _UxGT("Đèn #{"); // Light #{ + LSTR MSG_LED_PRESETS = _UxGT("Đèn định sẵn"); // Light Presets + LSTR MSG_SET_LEDS_RED = _UxGT("Đỏ"); // Red + LSTR MSG_SET_LEDS_ORANGE = _UxGT("Cam"); // Orange + LSTR MSG_SET_LEDS_YELLOW = _UxGT("Vàng"); // Yellow + LSTR MSG_SET_LEDS_GREEN = _UxGT("Xanh Lá"); // Green + LSTR MSG_SET_LEDS_BLUE = _UxGT("Xanh"); // Blue + LSTR MSG_SET_LEDS_INDIGO = _UxGT("Xanh Đậm"); // Indigo + LSTR MSG_SET_LEDS_VIOLET = _UxGT("Tím"); // Violet + LSTR MSG_SET_LEDS_WHITE = _UxGT("Trắng"); // White + LSTR MSG_SET_LEDS_DEFAULT = _UxGT("Mặc định"); // Default + LSTR MSG_CUSTOM_LEDS = _UxGT("Đèn Tự Chọn"); // Custom Lights + LSTR MSG_INTENSITY_R = _UxGT("Cường Độ Đỏ"); // Red Intensity + LSTR MSG_INTENSITY_G = _UxGT("Cường Độ Xanh Lá"); // Green Intensity + LSTR MSG_INTENSITY_B = _UxGT("Cường Độ Xanh"); // Blue Intensity + LSTR MSG_INTENSITY_W = _UxGT("Cường Độ Trắng"); // White Intensity + LSTR MSG_LED_BRIGHTNESS = _UxGT("độ sáng"); // Brightness + LSTR MSG_HOTEND_TOO_COLD = _UxGT("Đầu nóng quá lạnh"); // Hotend too cold + LSTR MSG_EXTRA_FAN_SPEED = _UxGT("Tốc độ quạt phụ"); // Extra Fan Speed + LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("Tốc độ quạt phụ ~"); // Extra Fan Speed ~ + LSTR MSG_JERK = _UxGT("Giật"); // Jerk + LSTR MSG_VA_JERK = _UxGT("Giật-V") STR_A; // Max (STR_A) Jerk + LSTR MSG_VB_JERK = _UxGT("Giật-V") STR_B; // Max (STR_B) Jerk + LSTR MSG_VC_JERK = _UxGT("Giật-V") STR_C; // Max (STR_C) Jerk + LSTR MSG_VN_JERK = _UxGT("Giật-V@"); // Max @ Jerk + LSTR MSG_VE_JERK = _UxGT("Giật-Ve"); // Max E Jerk + LSTR MSG_JUNCTION_DEVIATION = _UxGT("Độ Lệch Chỗ Giao"); // Junction Dev + LSTR MSG_MAX_SPEED = _UxGT("Vận tốc"); // Max Speed (mm/s) + LSTR MSG_VMAX_A = _UxGT("Vđa") STR_A; // Max (STR_A) Speed + LSTR MSG_VMAX_B = _UxGT("Vđa") STR_B; // Max (STR_B) Speed + LSTR MSG_VMAX_C = _UxGT("Vđa") STR_C; // Max (STR_C) Speed + LSTR MSG_VMAX_N = _UxGT("Vđa@"); // Max @ Speed + LSTR MSG_VMAX_E = _UxGT("VđaE"); // Max E Speed + LSTR MSG_VMAX_EN = _UxGT("Vđa *"); // Max * Speed + LSTR MSG_VMIN = _UxGT("Vthiểu"); // Min Velocity + LSTR MSG_FILAMENT_UNLOAD = _UxGT("Dỡ mm"); // Unload mm + LSTR MSG_FILAMENT_LOAD = _UxGT("Nạp mm"); // Load mm + LSTR MSG_ADVANCE_K = _UxGT("K Cấp Cao"); // Advance K + LSTR MSG_ADVANCE_K_E = _UxGT("K Cấp Cao *"); // Advance K * + LSTR MSG_INIT_EEPROM = _UxGT("Khởi Tạo EEPROM"); // Initialize EEPROM + LSTR MSG_MEDIA_UPDATE = _UxGT("Cập Nhật phương tiện"); // (MEDIA_TYPE_EN) Update + LSTR MSG_RESET_PRINTER = _UxGT("Bặt Lại Máy In"); // Reset Printer + LSTR MSG_OUTAGE_RECOVERY = _UxGT("Phục Hồi Mất Điện"); // Power Outage + LSTR MSG_PRINT_PAUSED = _UxGT("In tạm dừng"); // Print Paused + LSTR MSG_PRINTING = _UxGT("Đang in..."); // Printing... + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("BỏRút T V"); // S UnRet V + LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("Khoảng Cách Rút"); // Swap Length + LSTR MSG_TOOL_CHANGE = _UxGT("Thay Đổi Công Cụ"); // Tool Change + LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Đưa Lên Z"); // Z Raise + LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("Tốc Độ Tuôn Ra"); // Prime Speed + LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("Tốc Độ Rút Lại"); // Retract Speed + LSTR MSG_FILAMENTLOAD = _UxGT("Nạp dây nhựa"); // Load Filament + LSTR MSG_FILAMENTLOAD_E = _UxGT("Nạp dây nhựa *"); // Load * Filament + LSTR MSG_FILAMENTUNLOAD = _UxGT("Dỡ dây nhựa"); // Unload Filament + LSTR MSG_FILAMENTUNLOAD_E = _UxGT("Dỡ dây nhựa *"); // Unload * Filament + LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("Dỡ tất cả"); // Unload All + LSTR MSG_RELEASE_MEDIA = _UxGT("Phát hành phương tiện"); // Release (MEDIA_TYPE_EN) + LSTR MSG_SKEW_FACTOR = _UxGT("Hệ số nghiêng"); // Skew Factor + LSTR MSG_BLTOUCH = _UxGT("BLTOUCH"); // BLTouch + LSTR MSG_BLTOUCH_SELFTEST = _UxGT("Tự kiểm tra BLTOUCH "); // Self-Test + LSTR MSG_BLTOUCH_STOW = _UxGT("Cất BLTouch"); // Stow + LSTR MSG_BLTOUCH_DEPLOY = _UxGT("Đem BLTouch"); // Deploy + LSTR MSG_MANUAL_DEPLOY = _UxGT("Đem Đầu Dò-Z"); // Deploy Z-Probe + LSTR MSG_MANUAL_STOW = _UxGT("Cất Đầu Dò-Z"); // Stow Z-Probe + LSTR MSG_COOLING = _UxGT("Đang làm nguội..."); // Cooling... + LSTR MSG_BED_COOLING = _UxGT("Đang làm nguội bàn..."); // Bed Cooling... + LSTR MSG_DELTA_SETTINGS = _UxGT("Cài Đặt Delta"); // Delta Settings + LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("Cân Chỉnh Tự Động"); // Auto Calibration + LSTR MSG_DELTA_DIAG_ROD = _UxGT("Gậy Chéo"); // Diag Rod + LSTR MSG_DELTA_HEIGHT = _UxGT("Chiều Cao"); // Height + LSTR MSG_DELTA_RADIUS = _UxGT("Bán Kính"); // Radius + LSTR MSG_3POINT_LEVELING = _UxGT("San lấp 3-Điểm"); // 3-Point Leveling + LSTR MSG_LINEAR_LEVELING = _UxGT("San Lấp Tuyến Tính"); // Linear Leveling + LSTR MSG_BILINEAR_LEVELING = _UxGT("San Lấp Song Tuyến"); // Bilinear Leveling + LSTR MSG_UBL_LEVELING = _UxGT("San Lấp Bàn Thống Nhất"); // Unified Bed Leveling + LSTR MSG_MESH_LEVELING = _UxGT("Lưới San Lấp"); // Mesh Leveling + LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("Độ Sáng"); // Light Brightness + LSTR MSG_DAC_PERCENT_N = _UxGT("@ % trình điều khiển"); // @ Driver % + LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("In tạm dừng"); // PRINT PAUSED + LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("Nạp dây nhựa"); // LOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("Dỡ dây nhựa"); // UNLOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("Tùy chọn hồi phục:"); // RESUME OPTIONS: + LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("Xả thêm"); // Purge more + LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" Đầu Phun: "); // Nozzle: + LSTR MSG_KILL_HOMING_FAILED = _UxGT("Sự nhà không thành công"); // Homing Failed + LSTR MSG_LCD_PROBING_FAILED = _UxGT(" không thành công"); // Probing Failed + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("Nhấn nút để tiếp tục")); // |Click to continue + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("Đang xả...")); // |Purging... + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("Nhấn nút để kết thúc")); // |Click to finish + LSTR MSG_TMC_DRIVERS = _UxGT("Trình điều khiển TMC"); // TMC Drivers + LSTR MSG_TMC_CURRENT = _UxGT("Dòng điện trình điều khiển"); // Driver Current + LSTR MSG_TMC_HYBRID_THRS = _UxGT("Ngưỡng Hỗn Hợp"); // Hybrid Threshold + LSTR MSG_TMC_HOMING_THRS = _UxGT("Vô cảm biến"); // Sensorless Homing + LSTR MSG_TMC_STEPPING_MODE = _UxGT("Chế độ từng bước"); // Stepping Mode + LSTR MSG_TMC_STEALTHCHOP = _UxGT("CắtTàngHình"); // StealthChop + LSTR MSG_SHORT_DAY = _UxGT("n"); // d + LSTR MSG_SHORT_HOUR = _UxGT("g"); // h + LSTR MSG_SHORT_MINUTE = _UxGT("p"); // m } namespace LanguageWide_vi { using namespace LanguageNarrow_vi; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("Số In"); // Print Count - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Đã hoàn thành"); - LSTR MSG_INFO_PRINT_TIME = _UxGT("Tổng số thời gian in"); // Total print time - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Thời gian việc lâu nhất"); // Longest job time - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Tổng số đùn"); // Extruded total + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("Số In"); // Print Count + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("Đã hoàn thành"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("Tổng số thời gian in"); // Print Time + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Thời gian việc lâu nhất"); // Longest Job Time + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Tổng số đùn"); // Extruded Total #endif } @@ -454,6 +425,16 @@ namespace LanguageTall_vi { using namespace LanguageWide_vi; #if LCD_HEIGHT >= 4 // Filament Change screens show up to 3 lines on a 4-line display + LSTR 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 + LSTR 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 + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("Chờ tro", "dây nhựa ra")); // |Wait for|filament unload + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("Chờ tro", "dây nhựa vào")); // |Wait for|filament load + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("Chờ tro in", "tiếp tục...")); // |Wait for print|to resume... + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("Đầu phun đang nóng lên", "Xin chờ...")); // |Nozzle heating|Please wait... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("Nhấn nút", "để làm nóng đầu phun")); // |Press button|to heat nozzle + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("Nhấn nút", "để tiếp tục in")); // |Press Button|to resume print + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("Chờ tro", "xả dây nhựa")); // |Wait for|filament purge + LSTR 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|filament purge #endif } diff --git a/Marlin/src/lcd/language/language_zh_CN.h b/Marlin/src/lcd/language/language_zh_CN.h index ffefb7de5e..95cd8c3520 100644 --- a/Marlin/src/lcd/language/language_zh_CN.h +++ b/Marlin/src/lcd/language/language_zh_CN.h @@ -42,580 +42,555 @@ namespace LanguageNarrow_zh_CN { constexpr uint8_t CHARSIZE = 3; LSTR LANGUAGE = _UxGT("Simplified Chinese"); - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT("已就绪."); // " ready." - LSTR MSG_MARLIN = _UxGT("马林"); - LSTR MSG_YES = _UxGT("是"); - LSTR MSG_NO = _UxGT("否"); - LSTR MSG_HIGH = _UxGT("高"); - LSTR MSG_LOW = _UxGT("低"); - LSTR MSG_BACK = _UxGT("返回"); // ”Back“ - LSTR MSG_ERROR = _UxGT("错误"); - - LSTR MSG_MEDIA_ABORTING = _UxGT("存储卡中止..."); - LSTR MSG_MEDIA_INSERTED = _UxGT("存储卡已插入"); // "Card inserted" - LSTR MSG_MEDIA_REMOVED = _UxGT("存储卡被拔出"); // "Card removed" - LSTR MSG_MEDIA_READ_ERROR = _UxGT("卡读卡器错误"); - LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB设备已弹出"); - LSTR MSG_USB_FD_USB_FAILED = _UxGT("USB读取失败"); - LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("子响应溢出"); - - LSTR MSG_LCD_ENDSTOPS = _UxGT("挡块"); // "Endstops" // Max length 8 characters - LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("软挡块"); - LSTR MSG_MAIN_MENU = _UxGT("主菜单"); // "Main" - LSTR MSG_ADVANCED_SETTINGS = _UxGT("高级设置"); - LSTR MSG_CONFIGURATION = _UxGT("配置"); - LSTR MSG_DISABLE_STEPPERS = _UxGT("关闭步进电机"); // "Disable steppers" - LSTR MSG_DEBUG_MENU = _UxGT("调试菜单"); // "Debug Menu" - LSTR MSG_PROGRESS_BAR_TEST = _UxGT("进度条测试"); // "Progress Bar Test" - LSTR MSG_HOMING = _UxGT("回原点"); - LSTR MSG_AUTO_HOME = _UxGT("自动回原点"); // "Auto home" - LSTR MSG_AUTO_HOME_X = _UxGT("回X原位"); // "Home X" - LSTR MSG_AUTO_HOME_Y = _UxGT("回Y原位"); // "Home Y" - LSTR MSG_AUTO_HOME_Z = _UxGT("回Z原位"); // "Home Z" - LSTR MSG_AUTO_Z_ALIGN = _UxGT("自动Z对齐"); - LSTR MSG_LEVEL_BED_HOMING = _UxGT("平台调平XYZ归原位"); // "Homing XYZ" - LSTR MSG_LEVEL_BED_WAITING = _UxGT("单击开始热床调平"); // "Click to Begin" - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("下个热床调平点"); // "Next Point" - LSTR MSG_LEVEL_BED_DONE = _UxGT("完成热床调平"); // "Leveling Done!" - LSTR MSG_Z_FADE_HEIGHT = _UxGT("淡出高度"); // "Fade Height" - LSTR MSG_SET_HOME_OFFSETS = _UxGT("设置原点偏移"); // "Set home offsets" - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("偏移已启用"); // "Offsets applied" - - LSTR MSG_PREHEAT_1 = _UxGT("预热 ") PREHEAT_1_LABEL; // "Preheat PREHEAT_2_LABEL" - LSTR MSG_PREHEAT_1_H = _UxGT("预热 ") PREHEAT_1_LABEL " ~"; // "Preheat PREHEAT_2_LABEL" - LSTR MSG_PREHEAT_1_END = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴"); //MSG_PREHEAT_1 " " - LSTR MSG_PREHEAT_1_END_E = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴 ~"); //MSG_PREHEAT_1 " " - LSTR MSG_PREHEAT_1_ALL = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 全部"); //MSG_PREHEAT_1 " All" - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 热床"); //MSG_PREHEAT_1 " Bed" - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 设置"); //MSG_PREHEAT_1 " conf" - - LSTR MSG_PREHEAT_M = _UxGT("预热 $"); // "Preheat PREHEAT_2_LABEL" - LSTR MSG_PREHEAT_M_H = _UxGT("预热 $ ~"); // "Preheat PREHEAT_2_LABEL" - LSTR MSG_PREHEAT_M_END = _UxGT("预热 $ 喷嘴"); //MSG_PREHEAT_1 " " - LSTR MSG_PREHEAT_M_END_E = _UxGT("预热 $ 喷嘴 ~"); //MSG_PREHEAT_1 " " - LSTR MSG_PREHEAT_M_ALL = _UxGT("预热 $ 全部"); //MSG_PREHEAT_1 " All" - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("预热 $ 热床"); //MSG_PREHEAT_1 " Bed" - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("预热 $ 设置"); //MSG_PREHEAT_1 " conf" - - LSTR MSG_PREHEAT_CUSTOM = _UxGT("预热自定义"); - LSTR MSG_COOLDOWN = _UxGT("降温"); // "Cooldown" - LSTR MSG_CUTTER_FREQUENCY = _UxGT("切割频率"); - LSTR MSG_LASER_MENU = _UxGT("激光控制"); - LSTR MSG_LASER_POWER = _UxGT("激光电源"); - LSTR MSG_SPINDLE_MENU = _UxGT("主轴控制"); - LSTR MSG_SPINDLE_POWER = _UxGT("主轴电源"); - LSTR MSG_SPINDLE_REVERSE = _UxGT("主轴反转"); - LSTR MSG_SWITCH_PS_ON = _UxGT("开启电源"); // "Switch power on" - LSTR MSG_SWITCH_PS_OFF = _UxGT("关闭电源"); // "Switch power off" - LSTR MSG_EXTRUDE = _UxGT("挤出"); // "Extrude" - LSTR MSG_RETRACT = _UxGT("回抽"); // "Retract" - LSTR MSG_MOVE_AXIS = _UxGT("移动轴"); // "Move axis" - LSTR MSG_PROBE_AND_LEVEL = _UxGT("探测并调平"); // "Probe and Level" - LSTR MSG_BED_LEVELING = _UxGT("调平热床"); // "Bed leveling" - LSTR MSG_LEVEL_BED = _UxGT("调平热床"); // "Level bed" - LSTR MSG_BED_TRAMMING = _UxGT("调平边角"); // "Bed Tramming" - LSTR MSG_NEXT_CORNER = _UxGT("下个边角"); // "Next corner" - LSTR MSG_MESH_EDITOR = _UxGT("网格编辑器"); - LSTR MSG_EDIT_MESH = _UxGT("编辑网格"); // "Edit Mesh" - LSTR MSG_EDITING_STOPPED = _UxGT("网格编辑已停止"); // "Mesh Editing Stopped" - LSTR MSG_PROBING_POINT = _UxGT("探测点"); - LSTR MSG_MESH_X = _UxGT("索引X"); - LSTR MSG_MESH_Y = _UxGT("索引Y"); - LSTR MSG_MESH_EDIT_Z = _UxGT("Z 值"); - LSTR MSG_CUSTOM_COMMANDS = _UxGT("定制命令"); // "Custom Commands" - LSTR MSG_M48_TEST = _UxGT("M48探测"); - LSTR MSG_M48_POINT = _UxGT("M48点"); - LSTR MSG_M48_OUT_OF_BOUNDS = _UxGT("探针测试越界"); - LSTR MSG_M48_DEVIATION = _UxGT("M48偏差"); - LSTR MSG_IDEX_MENU = _UxGT("IDEX模式"); - LSTR MSG_OFFSETS_MENU = _UxGT("工具偏移量"); - LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("自动停靠"); - LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("复制"); - LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("镜像复制"); - LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("完全控制"); - LSTR MSG_HOTEND_OFFSET_Z = _UxGT("第二喷头是Z"); - LSTR MSG_HOTEND_OFFSET_N = _UxGT("第二喷头是@"); - LSTR MSG_UBL_DOING_G29 = _UxGT("执行G29"); // "Doing G29" - LSTR MSG_UBL_TOOLS = _UxGT("UBL工具"); // "UBL Tools" - LSTR MSG_LCD_TILTING_MESH = _UxGT("倾斜點"); - LSTR MSG_UBL_TILT_MESH = _UxGT("倾斜网格"); - LSTR MSG_UBL_TILTING_GRID = _UxGT("倾斜网格尺寸"); - LSTR MSG_UBL_MESH_TILTED = _UxGT("网格倾斜"); - LSTR MSG_UBL_MANUAL_MESH = _UxGT("手工创设网格"); // "Manually Build Mesh" - LSTR MSG_UBL_MESH_WIZARD = _UxGT("网格精灵(UBL)"); - LSTR MSG_UBL_BC_INSERT = _UxGT("放置垫片并测量"); // "Place shim & measure" - LSTR MSG_UBL_BC_INSERT2 = _UxGT("测量"); // "Measure" - LSTR MSG_UBL_BC_REMOVE = _UxGT("移除并测量热床"); // "Remove & measure bed" - LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("移动到下一个"); // "Moving to next" - LSTR MSG_UBL_SET_TEMP_BED = _UxGT("热床温度"); // "Bed Temp" - LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("热床温度"); - LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("热端温度"); // "Hotend Temp" - LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("热端温度"); - LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("编辑客户网格"); // "Edit Custom Mesh" - LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("细调网格"); // "Fine Tuning Mesh" - LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("完成编辑网格"); // "Done Editing Mesh" - LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("创设客户网格"); // "Build Custom Mesh" - LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("创设网格"); // "Build Mesh" - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("创设 $ 网格"); // "Build PREHEAT_1_LABEL Mesh" - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("批准 $ 网格"); // "Validate PREHEAT_1_LABEL Mesh" - LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("创设冷网格"); // "Build Cold Mesh" - LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("调整网格高度"); // "Adjust Mesh Height" - LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("高度合计"); // "Height Amount" - LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("批准网格"); // "Validate Mesh" - LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("批准客户网格"); // "Validate Custom Mesh" - LSTR MSG_G26_HEATING_BED = _UxGT("G26加热热床"); - LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26加热喷嘴"); - LSTR MSG_G26_MANUAL_PRIME = _UxGT("手动填装中..."); - LSTR MSG_G26_FIXED_LENGTH = _UxGT("固定距离填装"); - LSTR MSG_G26_PRIME_DONE = _UxGT("填装完成"); - LSTR MSG_G26_CANCELED = _UxGT("G26已取消"); - LSTR MSG_G26_LEAVING = _UxGT("离开G26"); - LSTR MSG_UBL_CONTINUE_MESH = _UxGT("继续热床网格"); // "Continue Bed Mesh" - LSTR MSG_UBL_MESH_LEVELING = _UxGT("网格调平"); // "Mesh Leveling" - LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("三点调平"); // "3-Point Leveling" - LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("格子网格调平"); // "Grid Mesh Leveling" - LSTR MSG_UBL_MESH_LEVEL = _UxGT("调平网格"); // "Level Mesh" - LSTR MSG_UBL_SIDE_POINTS = _UxGT("边点"); // "Side Points" - LSTR MSG_UBL_MAP_TYPE = _UxGT("图类型"); // "Map Type" - LSTR MSG_UBL_OUTPUT_MAP = _UxGT("输出网格图"); // "Output Mesh Map" - LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("输出到主机"); // "Output for Host" - LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("输出到CSV"); // "Output for CSV" - LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("输出到备份"); // "Off Printer Backup" - LSTR MSG_UBL_INFO_UBL = _UxGT("输出UBL信息"); // "Output UBL Info" - LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("填充合计"); // "Fill-in Amount" - LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("手工填充"); // "Manual Fill-in" - LSTR MSG_UBL_SMART_FILLIN = _UxGT("聪明填充"); // "Smart Fill-in" - LSTR MSG_UBL_FILLIN_MESH = _UxGT("填充网格"); // "Fill-in Mesh" - LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("作废所有的"); // "Invalidate All" - LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("作废最近的"); // "Invalidate Closest" - LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("细调所有的"); // "Fine Tune All" - LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("细调最近的"); // "Fine Tune Closest" - LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("网格存储"); // "Mesh Storage" - LSTR MSG_UBL_STORAGE_SLOT = _UxGT("存储槽"); // "Memory Slot" - LSTR MSG_UBL_LOAD_MESH = _UxGT("装载热床网格"); // "Load Bed Mesh" - LSTR MSG_UBL_SAVE_MESH = _UxGT("保存热床网格"); // "Save Bed Mesh" - LSTR MSG_UBL_INVALID_SLOT = _UxGT("首先选择一个网格槽"); - LSTR MSG_MESH_LOADED = _UxGT("网格 %i 已装载"); // "Mesh %i loaded" - LSTR MSG_MESH_SAVED = _UxGT("网格 %i 已保存"); // "Mesh %i saved" - LSTR MSG_MESH_ACTIVE = _UxGT("网格 %i 激活"); - LSTR MSG_UBL_NO_STORAGE = _UxGT("没有存储"); // "No storage" - LSTR MSG_UBL_SAVE_ERROR = _UxGT("错误: UBL保存"); // "Err: UBL Save" - LSTR MSG_UBL_RESTORE_ERROR = _UxGT("错误: UBL还原"); // "Err: UBL Restore" - LSTR MSG_UBL_Z_OFFSET = _UxGT("Z偏移量: "); - LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Z偏移已停止"); // "Z-Offset Stopped" - LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("一步步UBL"); // "Step-By-Step UBL" - LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1. 创设冷网格"); - LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2. 聪明填充"); - LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3. 批准网格"); - LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4. 细调所有的"); - LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5. 批准网格"); - LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6. 细调所有的"); - LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7. 保存热床网格"); - - LSTR MSG_LED_CONTROL = _UxGT("LED控制"); // "LED Control" - LSTR MSG_LIGHTS = _UxGT("灯"); // "Lights" - LSTR MSG_LIGHT_N = _UxGT("灯 #{"); // "Light #{" - LSTR MSG_LED_PRESETS = _UxGT("灯预置"); // "Light Presets" - LSTR MSG_SET_LEDS_RED = _UxGT("红"); // "Red" - LSTR MSG_SET_LEDS_ORANGE = _UxGT("橙"); // "Orange" - LSTR MSG_SET_LEDS_YELLOW = _UxGT("黄"); // "Yellow" - LSTR MSG_SET_LEDS_GREEN = _UxGT("绿"); // "Green" - LSTR MSG_SET_LEDS_BLUE = _UxGT("蓝"); // "Blue" - LSTR MSG_SET_LEDS_INDIGO = _UxGT("青"); // "Indigo" - LSTR MSG_SET_LEDS_VIOLET = _UxGT("紫"); // "Violet" - LSTR MSG_SET_LEDS_WHITE = _UxGT("白"); // "White" - LSTR MSG_SET_LEDS_DEFAULT = _UxGT("缺省"); // "Default" - LSTR MSG_CUSTOM_LEDS = _UxGT("定制灯"); // "Custom Lights" - LSTR MSG_INTENSITY_R = _UxGT("红饱和度"); // "Red Intensity" - LSTR MSG_INTENSITY_G = _UxGT("绿饱和度"); // "Green Intensity" - LSTR MSG_INTENSITY_B = _UxGT("蓝饱和度"); // "Blue Intensity" - LSTR MSG_INTENSITY_W = _UxGT("白饱和度"); // "White Intensity" - LSTR MSG_LED_BRIGHTNESS = _UxGT("亮度"); // "Brightness" - - LSTR MSG_MOVING = _UxGT("移动..."); // "Moving..." - LSTR MSG_FREE_XY = _UxGT("释放 XY"); // "Free XY" - LSTR MSG_MOVE_X = _UxGT("移动X"); // "Move X" - LSTR MSG_MOVE_Y = _UxGT("移动Y"); // "Move Y" - LSTR MSG_MOVE_Z = _UxGT("移动Z"); // "Move Z" - LSTR MSG_MOVE_N = _UxGT("移动@"); // "Move @" - LSTR MSG_MOVE_E = _UxGT("挤出机"); // "Extruder" - LSTR MSG_MOVE_EN = _UxGT("挤出机 *"); // "Extruder" - LSTR MSG_HOTEND_TOO_COLD = _UxGT("热端太冷"); - LSTR MSG_MOVE_N_MM = _UxGT("移动 $mm"); // "Move $mm" - LSTR MSG_MOVE_N_IN = _UxGT("移动 $in"); // "Move $in" - LSTR MSG_MOVE_N_DEG = _UxGT("移动 $") LCD_STR_DEGREE; // "Move $°" - LSTR MSG_SPEED = _UxGT("速率"); // "Speed" - LSTR MSG_MESH_Z_OFFSET = _UxGT("热床Z"); // "Bed Z" - LSTR MSG_NOZZLE = _UxGT("喷嘴"); // "Nozzle" 噴嘴 - LSTR MSG_NOZZLE_N = _UxGT("喷嘴 ~"); // "Nozzle" 噴嘴 - LSTR MSG_NOZZLE_PARKED = _UxGT("喷嘴已停靠"); - LSTR MSG_NOZZLE_STANDBY = _UxGT("喷嘴待命中"); - LSTR MSG_BED = _UxGT("热床"); // "Bed" - LSTR MSG_CHAMBER = _UxGT("机箱壳"); - LSTR MSG_FAN_SPEED = _UxGT("风扇速率"); // "Fan speed" - LSTR MSG_FAN_SPEED_N = _UxGT("风扇速率 ~"); // "Fan speed" - LSTR MSG_STORED_FAN_N = _UxGT("存储的风扇 ~"); - LSTR MSG_EXTRA_FAN_SPEED = _UxGT("额外风扇速率"); // "Extra fan speed" - LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("额外风扇速率 ~"); // "Extra fan speed" - LSTR MSG_CONTROLLER_FAN = _UxGT("控制器风扇"); - LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("空闲速度"); - LSTR MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("自动模式"); - LSTR MSG_CONTROLLER_FAN_SPEED = _UxGT("工作速度"); - LSTR MSG_CONTROLLER_FAN_DURATION = _UxGT("空闲周期"); - LSTR MSG_FLOW = _UxGT("挤出速率"); // "Flow" - LSTR MSG_FLOW_N = _UxGT("挤出速率 ~"); // "Flow" - LSTR MSG_CONTROL = _UxGT("控制"); // "Control" - LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" 最小"); // " " LCD_STR_THERMOMETER " Min" - LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" 最大"); // " " LCD_STR_THERMOMETER " Max" - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" 因数"); // " " LCD_STR_THERMOMETER " Fact" - LSTR MSG_AUTOTEMP = _UxGT("自动控温"); // "Autotemp" - LSTR MSG_LCD_ON = _UxGT("开"); // "On" - LSTR MSG_LCD_OFF = _UxGT("关"); // "Off" - LSTR MSG_PID_AUTOTUNE = _UxGT("自动PID"); - LSTR MSG_PID_AUTOTUNE_E = _UxGT("自动PID *"); - LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("PID调整完成"); - LSTR MSG_PID_BAD_HEATER_ID = _UxGT("自动调失败! 坏的挤出机"); - LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("自动调失败! 温度太高"); - LSTR MSG_PID_TIMEOUT = _UxGT("自动调失败! 超时"); - LSTR MSG_SELECT_E = _UxGT("选择 *"); - LSTR MSG_ACC = _UxGT("加速度"); // "Accel" acceleration - LSTR MSG_JERK = _UxGT("抖动速率"); // "Jerk" - LSTR MSG_VA_JERK = _UxGT("轴抖动速率") STR_A; // "Va-jerk" - LSTR MSG_VB_JERK = _UxGT("轴抖动速率") STR_B; // "Vb-jerk" - LSTR MSG_VC_JERK = _UxGT("轴抖动速率") STR_C; // "Vc-jerk" - LSTR MSG_VN_JERK = _UxGT("轴抖动速率@"); // "V@-jerk" - LSTR MSG_VE_JERK = _UxGT("挤出机抖动速率"); // "Ve-jerk" - LSTR MSG_JUNCTION_DEVIATION = _UxGT("接点差"); - LSTR MSG_MAX_SPEED = _UxGT("速度"); // "Velocity" - LSTR MSG_VMAX_A = _UxGT("最大进料速率") STR_A; // "Vmax " max_feedrate_mm_s - LSTR MSG_VMAX_B = _UxGT("最大进料速率") STR_B; - LSTR MSG_VMAX_C = _UxGT("最大进料速率") STR_C; - LSTR MSG_VMAX_N = _UxGT("最大进料速率@"); - LSTR MSG_VMAX_E = _UxGT("最大进料速率E"); - LSTR MSG_VMAX_EN = _UxGT("最大进料速率 *"); - LSTR MSG_VMIN = _UxGT("最小进料速率"); // "Vmin" min_feedrate_mm_s - LSTR MSG_VTRAV_MIN = _UxGT("最小移动速率"); // "VTrav min" min_travel_feedrate_mm_s, (target) speed of the move - LSTR MSG_ACCELERATION = _UxGT("加速度"); // "Acceleration" - LSTR MSG_AMAX_A = _UxGT("最大打印加速度") STR_A; // "Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves - LSTR MSG_AMAX_B = _UxGT("最大打印加速度") STR_B; - LSTR MSG_AMAX_C = _UxGT("最大打印加速度") STR_C; - LSTR MSG_AMAX_N = _UxGT("最大打印加速度@"); - LSTR MSG_AMAX_E = _UxGT("最大打印加速度E"); - LSTR MSG_AMAX_EN = _UxGT("最大打印加速度 *"); - LSTR MSG_A_RETRACT = _UxGT("收进加速度"); // "A-retract" retract_acceleration, E acceleration in mm/s^2 for retracts - LSTR MSG_A_TRAVEL = _UxGT("非打印移动加速度"); // "A-travel" travel_acceleration, X, Y, Z acceleration in mm/s^2 for travel (non printing) moves - LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("频率最大"); - LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("进给速度"); - LSTR MSG_STEPS_PER_MM = _UxGT("轴步数/mm"); // "Steps/mm" axis_steps_per_mm, axis steps-per-unit G92 - LSTR MSG_A_STEPS = STR_A _UxGT(" 步数/mm"); // "Asteps/mm" - LSTR MSG_B_STEPS = STR_B _UxGT(" 步数/mm"); - LSTR MSG_C_STEPS = STR_C _UxGT(" 步数/mm"); - LSTR MSG_N_STEPS = _UxGT("@ 步数/mm"); - LSTR MSG_E_STEPS = _UxGT("E 步数/mm"); // "Esteps/mm" - LSTR MSG_EN_STEPS = _UxGT("* 步数/mm"); - LSTR MSG_TEMPERATURE = _UxGT("温度"); // "Temperature" - LSTR MSG_MOTION = _UxGT("运动"); // "Motion" - LSTR MSG_FILAMENT = _UxGT("料丝"); // "Filament" menu_advanced_filament - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E 在 mm") SUPERSCRIPT_THREE; // "E in mm3" volumetric_enabled - LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("E 限制 在 mm") SUPERSCRIPT_THREE; - LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("E 限制 *"); - LSTR MSG_FILAMENT_DIAM = _UxGT("丝料直径"); // "Fil. Dia." - LSTR MSG_FILAMENT_DIAM_E = _UxGT("丝料直径 *"); - LSTR MSG_FILAMENT_UNLOAD = _UxGT("卸载 mm"); // "Unload mm" - LSTR MSG_FILAMENT_LOAD = _UxGT("装载 mm"); // "Load mm" - LSTR MSG_ADVANCE_K = _UxGT("Advance K"); - LSTR MSG_ADVANCE_K_E = _UxGT("Advance K *"); - LSTR MSG_CONTRAST = _UxGT("LCD对比度"); // "LCD contrast" - LSTR MSG_STORE_EEPROM = _UxGT("保存设置"); // "Store memory" - LSTR MSG_LOAD_EEPROM = _UxGT("装载设置"); // "Load memory" - LSTR MSG_RESTORE_DEFAULTS = _UxGT("恢复安全值"); // "Restore Defaults" - LSTR MSG_INIT_EEPROM = _UxGT("初始化设置"); // "Initialize EEPROM" - LSTR MSG_ERR_EEPROM_CRC = _UxGT("EEPROM 校验和 错误"); - LSTR MSG_ERR_EEPROM_SIZE = _UxGT("EEPROM 尺寸 错误"); - LSTR MSG_ERR_EEPROM_VERSION = _UxGT("EEPROM 版本 错误"); - LSTR MSG_SETTINGS_STORED = _UxGT("设置已保存"); - LSTR MSG_MEDIA_UPDATE = _UxGT("存储器更新"); - LSTR MSG_RESET_PRINTER = _UxGT("复位打印机"); - LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("刷新"); - LSTR MSG_INFO_SCREEN = _UxGT("信息屏"); // "Info screen" - LSTR MSG_PREPARE = _UxGT("准备"); // "Prepare" - LSTR MSG_TUNE = _UxGT("调整"); // "Tune" - LSTR MSG_POWER_MONITOR = _UxGT("电源监控"); - LSTR MSG_CURRENT = _UxGT("电流"); - LSTR MSG_VOLTAGE = _UxGT("电压"); - LSTR MSG_POWER = _UxGT("功率"); - LSTR MSG_START_PRINT = _UxGT("开始打印"); - LSTR MSG_BUTTON_NEXT = _UxGT("下一个"); - LSTR MSG_BUTTON_INIT = _UxGT("初始"); - LSTR MSG_BUTTON_STOP = _UxGT("停止"); - LSTR MSG_BUTTON_PRINT = _UxGT("打印"); - LSTR MSG_BUTTON_RESET = _UxGT("复位"); - LSTR MSG_BUTTON_IGNORE = _UxGT("忽略"); - LSTR MSG_BUTTON_CANCEL = _UxGT("取消"); - LSTR MSG_BUTTON_DONE = _UxGT("完成"); - LSTR MSG_BUTTON_BACK = _UxGT("返回"); - LSTR MSG_BUTTON_PROCEED = _UxGT("继续"); - LSTR MSG_PAUSING = _UxGT("暂停中..."); - LSTR MSG_PAUSE_PRINT = _UxGT("暂停打印"); // "Pause print" - LSTR MSG_RESUME_PRINT = _UxGT("恢复打印"); // "Resume print" - LSTR MSG_STOP_PRINT = _UxGT("停止打印"); // "Stop print" - LSTR MSG_PRINTING_OBJECT = _UxGT("打印物体"); - LSTR MSG_CANCEL_OBJECT = _UxGT("取消物体"); - LSTR MSG_CANCEL_OBJECT_N = _UxGT("取消物体 {"); - LSTR MSG_OUTAGE_RECOVERY = _UxGT("中断恢复"); - LSTR MSG_MEDIA_MENU = _UxGT("从存储卡上打印"); // "Print from SD" - LSTR MSG_NO_MEDIA = _UxGT("无存储卡"); // "No SD card" - LSTR MSG_DWELL = _UxGT("休眠中 ..."); // "Sleep..." - LSTR MSG_USERWAIT = _UxGT("点击继续 ..."); // "Click to resume..." - LSTR MSG_PRINT_PAUSED = _UxGT("暫停打印"); // "Print paused" - LSTR MSG_PRINTING = _UxGT("打印中..."); - LSTR MSG_PRINT_ABORTED = _UxGT("已取消打印"); // "Print aborted" - LSTR MSG_PRINT_DONE = _UxGT("打印已完成"); - LSTR MSG_NO_MOVE = _UxGT("无移动"); // "No move." - LSTR MSG_KILLED = _UxGT("已杀掉"); // "KILLED. " - LSTR MSG_STOPPED = _UxGT("已停止"); // "STOPPED. " - LSTR MSG_CONTROL_RETRACT = _UxGT("回抽长度mm"); // "Retract mm" retract_length, retract length (positive mm) - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("换手回抽长度mm"); // "Swap Re.mm" swap_retract_length, swap retract length (positive mm), for extruder change - LSTR MSG_CONTROL_RETRACTF = _UxGT("回抽速率mm/s"); // "Retract V" retract_feedrate_mm_s, feedrate for retracting (mm/s) - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Hop mm"); // "Hop mm" retract_zraise, retract Z-lift - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("回抽恢复长度mm"); // "UnRet +mm" retract_recover_extra, additional recover length (mm, added to retract length when recovering) - LSTR 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) - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("回抽恢复后进料速率mm/s"); // "Unretract V" retract_recover_feedrate_mm_s, feedrate for recovering from retraction (mm/s) - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V"); // "S UnRet V" - LSTR MSG_AUTORETRACT = _UxGT("自动抽回"); // "Auto-Retract" autoretract_enabled, - LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("交换长度"); - LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("额外的交换"); - LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("清洗长度"); - LSTR MSG_TOOL_CHANGE = _UxGT("换工具"); - LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Z抬起"); - LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("进给速度"); - LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("回抽速度"); - LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("停靠头"); - LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("恢复速度"); - LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("风扇速度"); - LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("风扇时间"); - LSTR MSG_TOOL_MIGRATION_ON = _UxGT("自动开"); - LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("自动关"); - LSTR MSG_TOOL_MIGRATION = _UxGT("工具迁移"); - LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("自动迁移"); - LSTR MSG_TOOL_MIGRATION_END = _UxGT("上一个挤出机"); - LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("迁移至 *"); - LSTR MSG_FILAMENTCHANGE = _UxGT("更换丝料"); // "Change filament" - LSTR MSG_FILAMENTCHANGE_E = _UxGT("更换丝料 *"); // "Change filament" - LSTR MSG_FILAMENTLOAD = _UxGT("装载丝料"); // "Load filament" - LSTR MSG_FILAMENTLOAD_E = _UxGT("装载丝料 *"); // "Load filament" - LSTR MSG_FILAMENTUNLOAD = _UxGT("卸载丝料"); // "Unload filament" - LSTR MSG_FILAMENTUNLOAD_E = _UxGT("卸载丝料 *"); // "Unload filament" - LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("卸载全部"); // "Unload All" - - LSTR MSG_ATTACH_MEDIA = _UxGT("挂载存储卡"); // "Attach SD Card" - LSTR MSG_ATTACH_SD = _UxGT("挂载存储卡"); // "Attach SD Card" - LSTR MSG_ATTACH_USB = _UxGT("挂载U盘"); // "Attach USB Drive" - LSTR MSG_CHANGE_MEDIA = _UxGT("更换存储卡"); // "Change SD card" - LSTR MSG_RELEASE_MEDIA = _UxGT("释放存储卡"); - LSTR MSG_RUN_AUTOFILES = _UxGT("自动开始"); // "Autostart" - - LSTR MSG_ZPROBE_OUT = _UxGT("Z探针在热床之外"); // "Z probe out. bed" Z probe is not within the physical limits - LSTR MSG_SKEW_FACTOR = _UxGT("偏斜因数"); // "Skew Factor" - LSTR MSG_BLTOUCH = _UxGT("BLTouch"); // "BLTouch" - LSTR MSG_BLTOUCH_SELFTEST = _UxGT("自检"); - LSTR MSG_BLTOUCH_RESET = _UxGT("重置"); - LSTR MSG_BLTOUCH_STOW = _UxGT("装载"); - LSTR MSG_BLTOUCH_DEPLOY = _UxGT("部署"); - LSTR MSG_BLTOUCH_SW_MODE = _UxGT("SW模式"); - LSTR MSG_BLTOUCH_5V_MODE = _UxGT("5V模式"); - LSTR MSG_BLTOUCH_OD_MODE = _UxGT("OD模式"); - LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("模式保存"); - LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("设置BLTouch为5V"); - LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("设置BLTouch为OD"); - LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("报告开漏"); - LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("危险: 错误的设置将引起损坏! 是否继续?"); - LSTR MSG_TOUCHMI_PROBE = _UxGT("TouchMI"); - LSTR MSG_TOUCHMI_INIT = _UxGT("初始化TouchMI"); - LSTR MSG_TOUCHMI_ZTEST = _UxGT("Z偏移量测试"); - LSTR MSG_TOUCHMI_SAVE = _UxGT("保存"); - LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("部署TouchMI"); - LSTR MSG_MANUAL_DEPLOY = _UxGT("部署Z探针"); - LSTR MSG_MANUAL_STOW = _UxGT("收好Z探针"); - LSTR MSG_HOME_FIRST = _UxGT("归位 %s 先"); // "Home ... first" - LSTR MSG_ZPROBE_OFFSETS = _UxGT("探针偏移量"); - LSTR MSG_ZPROBE_XOFFSET = _UxGT("探针X偏移"); // "X Offset" - LSTR MSG_ZPROBE_YOFFSET = _UxGT("探针Y偏移"); // "Y Offset" - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("探针Z偏移"); // "Z Offset" - LSTR MSG_ZPROBE_OFFSET_N = _UxGT("探针@偏移"); // "@ Offset" - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("逐步调整Z"); // "Babystep Probe Z" - LSTR MSG_BABYSTEP_X = _UxGT("微量调整X轴"); // "Babystep X" lcd_babystep_x, Babystepping enables the user to control the axis in tiny amounts - LSTR MSG_BABYSTEP_Y = _UxGT("微量调整Y轴"); // "Babystep Y" - LSTR MSG_BABYSTEP_Z = _UxGT("微量调整Z轴"); // "Babystep Z" - LSTR MSG_BABYSTEP_TOTAL = _UxGT("总计"); - LSTR MSG_ENDSTOP_ABORT = _UxGT("挡块终止"); // "Endstop abort" - LSTR MSG_ERR_HEATING_FAILED = _UxGT("加热失败"); // "Heating failed" - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("错误:冗余温度"); // "Err: REDUNDANT TEMP" - LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("温控失控"); // "THERMAL RUNAWAY" - LSTR MSG_ERR_MAXTEMP = _UxGT("错误:最高温度"); // "Err: MAXTEMP" - LSTR MSG_ERR_MINTEMP = _UxGT("错误:最低温度"); // "Err: MINTEMP" - LSTR MSG_HALTED = _UxGT("打印停机"); // "PRINTER HALTED" - LSTR MSG_PLEASE_RESET = _UxGT("请重置"); // "Please reset" - LSTR MSG_HEATING = _UxGT("加热中 ..."); // "Heating..." - LSTR MSG_COOLING = _UxGT("冷却中 ..."); - LSTR MSG_BED_HEATING = _UxGT("加热热床中 ..."); // "Bed Heating..." - LSTR MSG_BED_COOLING = _UxGT("热床冷却中 ..."); - LSTR MSG_CHAMBER_HEATING = _UxGT("机箱加热中 ..."); - LSTR MSG_CHAMBER_COOLING = _UxGT("机箱冷却中 ..."); - LSTR MSG_DELTA_CALIBRATE = _UxGT("⊿校准"); // "Delta Calibration" - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("⊿校准X"); // "Calibrate X" - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("⊿校准Y"); // "Calibrate Y" - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("⊿校准Z"); // "Calibrate Z" - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("⊿校准中心"); // "Calibrate Center" - LSTR MSG_DELTA_SETTINGS = _UxGT("⊿设置"); // "Delta Settings" - LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("⊿自动校准"); // "Auto Calibration" - LSTR MSG_DELTA_DIAG_ROD = _UxGT("⊿斜柱"); // "Diag Rod" - LSTR MSG_DELTA_HEIGHT = _UxGT("⊿高度"); // "Height" - LSTR MSG_DELTA_RADIUS = _UxGT("⊿半径"); // "Radius" - LSTR MSG_INFO_MENU = _UxGT("关于打印机"); // "About Printer" - LSTR MSG_INFO_PRINTER_MENU = _UxGT("打印机信息"); // "Printer Info" - LSTR MSG_3POINT_LEVELING = _UxGT("三点调平"); // "3-Point Leveling" - LSTR MSG_LINEAR_LEVELING = _UxGT("线性调平"); // "Linear Leveling" - LSTR MSG_BILINEAR_LEVELING = _UxGT("双线性调平"); // "Bilinear Leveling" - LSTR MSG_UBL_LEVELING = _UxGT("统一热床调平(UBL)"); // "Unified Bed Leveling" - LSTR MSG_MESH_LEVELING = _UxGT("网格调平"); // "Mesh Leveling" - LSTR MSG_INFO_STATS_MENU = _UxGT("打印机统计"); // "Printer Stats" - LSTR MSG_INFO_BOARD_MENU = _UxGT("主板信息"); // "Board Info" - LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("温度计"); // "Thermistors" - LSTR MSG_INFO_EXTRUDERS = _UxGT("挤出机"); // "Extruders" - LSTR MSG_INFO_BAUDRATE = _UxGT("波特率"); // "Baud" - LSTR MSG_INFO_PROTOCOL = _UxGT("协议"); // "Protocol" - LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("监控温度失控:关"); - LSTR MSG_INFO_RUNAWAY_ON = _UxGT("监控温度失控:开"); - LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("热端空闲超时"); - - LSTR MSG_CASE_LIGHT = _UxGT("外壳灯"); // "Case light" - LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("灯亮度"); // "Light BRIGHTNESS" - - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("打印机不正确"); // "The printer is incorrect" - - LSTR MSG_INFO_PRINT_COUNT = _UxGT("打印数"); // "Prints" - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("完成"); // "Completed" - LSTR MSG_INFO_PRINT_TIME = _UxGT("总共"); // "Total" - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("最长"); // "Longest" - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("已挤出"); // "Extruded" - - LSTR MSG_INFO_MIN_TEMP = _UxGT("最低温度"); // "Min Temp" - LSTR MSG_INFO_MAX_TEMP = _UxGT("最高温度"); // "Max Temp" - LSTR MSG_INFO_PSU = _UxGT("电源供应"); // "Power Supply" - LSTR MSG_DRIVE_STRENGTH = _UxGT("驱动力度"); // "Drive Strength" - LSTR MSG_DAC_PERCENT_N = _UxGT("@ 驱动 %"); // "E Driver %" - LSTR MSG_ERROR_TMC = _UxGT("TMC 连接错误"); - LSTR MSG_DAC_EEPROM_WRITE = _UxGT("保存驱动设置"); // "DAC EEPROM Write" - LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("更换料"); - LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("打印已暂停"); // "PRINT PAUSED" - LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("装载丝料"); // "LOAD FILAMENT" - LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("卸载丝料"); // "UNLOAD FILAMENT" - LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("恢复选项:"); // "RESUME OPTIONS:" - LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("清除更多"); // "Purge more" - LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("恢复打印"); // "Resume print" - LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" 喷嘴: "); // " Nozzle: " - LSTR MSG_RUNOUT_SENSOR = _UxGT("断料传感器"); - LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("断料距离mm"); - LSTR MSG_KILL_HOMING_FAILED = _UxGT("归原位失败"); // "Homing failed" - LSTR MSG_LCD_PROBING_FAILED = _UxGT("探针探测失败"); // "Probing failed" - - LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("选择料"); - LSTR MSG_MMU2_MENU = _UxGT("MMU"); - LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("升级MMU固件!"); - LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU需要专注."); - LSTR MSG_MMU2_RESUME = _UxGT("MMU恢复"); - LSTR MSG_MMU2_RESUMING = _UxGT("MMU恢复中..."); - LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("MMU加载"); - LSTR MSG_MMU2_LOAD_ALL = _UxGT("MMU加载全部"); - LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("MMU加载到喷嘴"); - LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("MMU弹出"); - LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("MMU弹出 ~"); - LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("MMU卸载"); - LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("加载填充. %i..."); - LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("弹出填充. ..."); - LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("卸载填充...."); - LSTR MSG_MMU2_ALL = _UxGT("全部"); - LSTR MSG_MMU2_FILAMENT_N = _UxGT("料 ~"); - LSTR MSG_MMU2_RESET = _UxGT("复位MMU"); - LSTR MSG_MMU2_RESETTING = _UxGT("MMU复位中..."); - LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("移出, 按下"); - - LSTR MSG_MIX = _UxGT("混合"); - LSTR MSG_MIX_COMPONENT_N = _UxGT("器件 {"); - LSTR MSG_MIXER = _UxGT("混合器"); - LSTR MSG_GRADIENT = _UxGT("梯度"); - LSTR MSG_FULL_GRADIENT = _UxGT("全梯度"); - LSTR MSG_TOGGLE_MIX = _UxGT("开关混合"); - LSTR MSG_CYCLE_MIX = _UxGT("循环混合"); - LSTR MSG_GRADIENT_MIX = _UxGT("梯度混合"); - LSTR MSG_REVERSE_GRADIENT = _UxGT("反向梯度"); - LSTR MSG_ACTIVE_VTOOL = _UxGT("激活 V-tool"); - LSTR MSG_START_VTOOL = _UxGT("开始 V-tool"); - LSTR MSG_END_VTOOL = _UxGT(" 结束 V-tool"); - LSTR MSG_GRADIENT_ALIAS = _UxGT("别名 V-tool"); - LSTR MSG_RESET_VTOOLS = _UxGT("复位 V-tools"); - LSTR MSG_COMMIT_VTOOL = _UxGT("提交 V-tool Mix"); - LSTR MSG_VTOOLS_RESET = _UxGT("V-tools 已复位"); - LSTR MSG_START_Z = _UxGT("开始 Z:"); - LSTR MSG_END_Z = _UxGT(" 结束 Z:"); - - LSTR MSG_GAMES = _UxGT("游戏"); - LSTR MSG_BRICKOUT = _UxGT("敲方块"); - LSTR MSG_INVADERS = _UxGT("入侵者"); - LSTR MSG_SNAKE = _UxGT("贪吃蛇"); - LSTR MSG_MAZE = _UxGT("迷宫"); - - LSTR MSG_BAD_PAGE = _UxGT("错误页面索引"); - LSTR MSG_BAD_PAGE_SPEED = _UxGT("错误页面速度"); - - // - // Filament Change screens show up to 2 lines on a 3-line display - // - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("按下继续")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("停靠中...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("请等待 ...")); // "Please wait..." - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("插入并单击")); // "Insert and Click" - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("按下加热")); - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("加热中 ...")); // "Heating..." - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("退出中 ...")); // "Ejecting..." - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("装载中 ...")); // "Loading..." - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("清除中 ...")); // "Purging..." - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("按下完成")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("恢复中 ...")); // "Resuming..." - - LSTR MSG_TMC_DRIVERS = _UxGT("TMC驱动器"); - LSTR MSG_TMC_CURRENT = _UxGT("驱动电流"); - LSTR MSG_TMC_HYBRID_THRS = _UxGT("混合阈值"); - LSTR MSG_TMC_HOMING_THRS = _UxGT("无感回零"); - LSTR MSG_TMC_STEPPING_MODE = _UxGT("步进模式"); - LSTR MSG_TMC_STEALTHCHOP = _UxGT("StealthChop已使能"); - - LSTR MSG_SERVICE_RESET = _UxGT("复位"); - LSTR MSG_SERVICE_IN = _UxGT(" 在:"); - LSTR MSG_BACKLASH = _UxGT("回差"); - LSTR MSG_BACKLASH_CORRECTION = _UxGT("校正"); - LSTR MSG_BACKLASH_SMOOTHING = _UxGT("平滑的"); - - LSTR MSG_LEVEL_X_AXIS = _UxGT("X轴调平"); - LSTR MSG_AUTO_CALIBRATE = _UxGT("自动校准"); - LSTR MSG_HEATER_TIMEOUT = _UxGT("加热器超时"); - LSTR MSG_REHEAT = _UxGT("重新加热"); - LSTR MSG_REHEATING = _UxGT("重新加热中..."); - - LSTR MSG_SHORT_DAY = _UxGT("天"); // "d" // One character only - LSTR MSG_SHORT_HOUR = _UxGT("时"); // "h" // One character only - LSTR MSG_SHORT_MINUTE = _UxGT("分"); // "m" // One character only + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT("已就绪."); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = _UxGT("存储卡已插入"); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = _UxGT("存储卡被拔出"); // (MEDIA_TYPE_EN) Removed + LSTR MSG_LCD_ENDSTOPS = _UxGT("挡块"); // Endstops + LSTR MSG_MAIN_MENU = _UxGT("主菜单"); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("关闭步进电机"); // Disable Steppers + LSTR MSG_HOMING = _UxGT("回原点"); // Homing + LSTR MSG_AUTO_HOME = _UxGT("自动回原点"); // Auto Home + LSTR MSG_AUTO_HOME_X = _UxGT("回X原位"); // Home X + LSTR MSG_AUTO_HOME_Y = _UxGT("回Y原位"); // Home Y + LSTR MSG_AUTO_HOME_Z = _UxGT("回Z原位"); // Home Z + LSTR MSG_LEVEL_BED_HOMING = _UxGT("平台调平XYZ归原位"); // Homing XYZ + LSTR MSG_LEVEL_BED_WAITING = _UxGT("单击开始热床调平"); // Click to Begin + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("下个热床调平点"); // Next Point + LSTR MSG_LEVEL_BED_DONE = _UxGT("完成热床调平"); // Leveling Done! + LSTR MSG_SET_HOME_OFFSETS = _UxGT("设置原点偏移"); // Set Home Offsets + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("偏移已启用"); // Offsets Applied + LSTR MSG_PREHEAT_1 = _UxGT("预热 ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = _UxGT("预热 ") PREHEAT_1_LABEL " ~"; // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴"); // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 喷嘴 ~"); // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_1_ALL = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 全部"); // Preheat (PREHEAT_1_LABEL) All + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 热床"); // Preheat (PREHEAT_1_LABEL) Bed + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("预热 ") PREHEAT_1_LABEL _UxGT(" 设置"); // Preheat (PREHEAT_1_LABEL) Conf + LSTR MSG_PREHEAT_M = _UxGT("预热 $"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("预热 $ ~"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("预热 $ 喷嘴"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("预热 $ 喷嘴 ~"); // Preheat $ End ~ + LSTR MSG_PREHEAT_M_ALL = _UxGT("预热 $ 全部"); // Preheat $ All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("预热 $ 热床"); // Preheat $ Bed + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("预热 $ 设置"); // Preheat $ Conf + LSTR MSG_COOLDOWN = _UxGT("降温"); // Cooldown + LSTR MSG_SWITCH_PS_ON = _UxGT("开启电源"); // Switch Power On + LSTR MSG_SWITCH_PS_OFF = _UxGT("关闭电源"); // Switch Power Off + LSTR MSG_EXTRUDE = _UxGT("挤出"); // Extrude + LSTR MSG_RETRACT = _UxGT("回抽"); // Retract + LSTR MSG_MOVE_AXIS = _UxGT("移动轴"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("探测并调平"); // Probe and Level + LSTR MSG_BED_LEVELING = _UxGT("调平热床"); // Bed Leveling + LSTR MSG_LEVEL_BED = _UxGT("调平热床"); // Level Bed + LSTR MSG_MOVE_X = _UxGT("移动X"); // Move X + LSTR MSG_MOVE_Y = _UxGT("移动Y"); // Move Y + LSTR MSG_MOVE_Z = _UxGT("移动Z"); // Move Z + LSTR MSG_MOVE_N = _UxGT("移动@"); // Move @ + LSTR MSG_MOVE_E = _UxGT("挤出机"); // Move Extruder + LSTR MSG_MOVE_EN = _UxGT("挤出机 *"); // Move * + LSTR MSG_MOVE_N_MM = _UxGT("移动 $mm"); // Move $mm + LSTR MSG_MOVE_N_IN = _UxGT("移动 $in"); // Move $in + LSTR MSG_MOVE_N_DEG = _UxGT("移动 $") LCD_STR_DEGREE; // Move $(LCD_STR_DEGREE) + LSTR MSG_SPEED = _UxGT("速率"); // Speed + LSTR MSG_MESH_Z_OFFSET = _UxGT("热床Z"); // Bed Z + LSTR MSG_NOZZLE = _UxGT("喷嘴"); // Nozzle + LSTR MSG_NOZZLE_N = _UxGT("喷嘴 ~"); // Nozzle ~ + LSTR MSG_BED = _UxGT("热床"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("风扇速率"); // Fan Speed + LSTR MSG_FAN_SPEED_N = _UxGT("风扇速率 ~"); // Fan Speed ~ + LSTR MSG_FLOW = _UxGT("挤出速率"); // Flow + LSTR MSG_FLOW_N = _UxGT("挤出速率 ~"); // Flow ~ + LSTR MSG_CONTROL = _UxGT("控制"); // Control + LSTR MSG_AUTOTEMP = _UxGT("自动控温"); // Autotemp + LSTR MSG_SELECT_E = _UxGT("选择 *"); // Select * + LSTR MSG_ACC = _UxGT("加速度"); // Accel + LSTR MSG_VTRAV_MIN = _UxGT("最小移动速率"); // Min Travel Speed + LSTR MSG_ACCELERATION = _UxGT("加速度"); // Acceleration + LSTR MSG_AMAX_A = _UxGT("最大打印加速度") STR_A; // Max (STR_A) Accel + LSTR MSG_AMAX_B = _UxGT("最大打印加速度") STR_B; // Max (STR_B) Accel + LSTR MSG_AMAX_C = _UxGT("最大打印加速度") STR_C; // Max (STR_C) Accel + LSTR MSG_AMAX_N = _UxGT("最大打印加速度@"); // Max @ Accel + LSTR MSG_AMAX_E = _UxGT("最大打印加速度E"); // Max E Accel + LSTR MSG_AMAX_EN = _UxGT("最大打印加速度 *"); // Max * Accel + LSTR MSG_A_RETRACT = _UxGT("收进加速度"); // Retract Accel + LSTR MSG_A_TRAVEL = _UxGT("非打印移动加速度"); // Travel Accel + LSTR MSG_STEPS_PER_MM = _UxGT("轴步数/mm"); // Steps/mm + LSTR MSG_A_STEPS = STR_A _UxGT(" 步数/mm"); // (STR_A) Steps/mm + LSTR MSG_B_STEPS = STR_B _UxGT(" 步数/mm"); // (STR_B) Steps/mm + LSTR MSG_C_STEPS = STR_C _UxGT(" 步数/mm"); // (STR_C) Steps/mm + LSTR MSG_N_STEPS = _UxGT("@ 步数/mm"); // @ steps/mm + LSTR MSG_E_STEPS = _UxGT("E 步数/mm"); // E steps/mm + LSTR MSG_EN_STEPS = _UxGT("* 步数/mm"); // * Steps/mm + LSTR MSG_TEMPERATURE = _UxGT("温度"); // Temperature + LSTR MSG_MOTION = _UxGT("运动"); // Motion + LSTR MSG_FILAMENT = _UxGT("料丝"); // Filament + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("E 在 mm") SUPERSCRIPT_THREE; // E in mm(SUPERSCRIPT_THREE) + LSTR MSG_FILAMENT_DIAM = _UxGT("丝料直径"); // Fil. Dia. + LSTR MSG_FILAMENT_DIAM_E = _UxGT("丝料直径 *"); // Fil. Dia. * + LSTR MSG_CONTRAST = _UxGT("LCD对比度"); // LCD Contrast + LSTR MSG_STORE_EEPROM = _UxGT("保存设置"); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("装载设置"); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("恢复安全值"); // Restore Defaults + LSTR MSG_REFRESH = LCD_STR_REFRESH _UxGT("刷新"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT("信息屏"); // Info Screen + LSTR MSG_PREPARE = _UxGT("准备"); // Prepare + LSTR MSG_TUNE = _UxGT("调整"); // Tune + LSTR MSG_PAUSE_PRINT = _UxGT("暂停打印"); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("恢复打印"); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("停止打印"); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("从存储卡上打印"); // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = _UxGT("无存储卡"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_DWELL = _UxGT("休眠中 ..."); // Sleep... + LSTR MSG_USERWAIT = _UxGT("点击继续 ..."); // Click to Resume... + LSTR MSG_PRINT_ABORTED = _UxGT("已取消打印"); // Print Aborted + LSTR MSG_NO_MOVE = _UxGT("无移动"); // No Move. + LSTR MSG_KILLED = _UxGT("已杀掉"); // KILLED. + LSTR MSG_STOPPED = _UxGT("已停止"); // STOPPED. + LSTR MSG_CONTROL_RETRACT = _UxGT("回抽长度mm"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("换手回抽长度mm"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACTF = _UxGT("回抽速率mm/s"); // Retract V + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Hop mm"); // Hop mm + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("回抽恢复长度mm"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("换手回抽恢复长度mm"); // S Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("回抽恢复后进料速率mm/s"); // Unretract V + LSTR MSG_AUTORETRACT = _UxGT("自动抽回"); // Auto-Retract + LSTR MSG_FILAMENTCHANGE = _UxGT("更换丝料"); // Change Filament + LSTR MSG_FILAMENTCHANGE_E = _UxGT("更换丝料 *"); // Change * Filament + LSTR MSG_ATTACH_MEDIA = _UxGT("挂载存储卡"); // Attach (MEDIA_TYPE_EN) + LSTR MSG_ATTACH_SD = _UxGT("挂载存储卡"); // Attach SD Card + LSTR MSG_ATTACH_USB = _UxGT("挂载U盘"); // Attach USB Drive + LSTR MSG_CHANGE_MEDIA = _UxGT("更换存储卡"); // Refresh (MEDIA_TYPE_EN) + LSTR MSG_RUN_AUTOFILES = _UxGT("自动开始"); // Run Autofiles + LSTR MSG_ZPROBE_OUT = _UxGT("Z探针在热床之外"); // Z Probe Past Bed + LSTR MSG_BLTOUCH_RESET = _UxGT("重置"); // Reset + LSTR MSG_ZPROBE_XOFFSET = _UxGT("探针X偏移"); // Probe X Offset + LSTR MSG_ZPROBE_YOFFSET = _UxGT("探针Y偏移"); // Probe Y Offset + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("探针Z偏移"); // Probe Z Offset + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("探针@偏移"); // Probe @ Offset + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("逐步调整Z"); // Babystep Probe Z + LSTR MSG_BABYSTEP_X = _UxGT("微量调整X轴"); // Babystep X + LSTR MSG_BABYSTEP_Y = _UxGT("微量调整Y轴"); // Babystep Y + LSTR MSG_BABYSTEP_Z = _UxGT("微量调整Z轴"); // Babystep Z + LSTR MSG_ENDSTOP_ABORT = _UxGT("挡块终止"); // Endstop Abort + LSTR MSG_ERR_HEATING_FAILED = _UxGT("加热失败"); // Heating Failed + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("错误:冗余温度"); // Err: REDUNDANT TEMP + LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("温控失控"); // THERMAL RUNAWAY + LSTR MSG_ERR_MAXTEMP = _UxGT("错误:最高温度"); // Err: MAXTEMP + LSTR MSG_ERR_MINTEMP = _UxGT("错误:最低温度"); // Err: MINTEMP + LSTR MSG_HALTED = _UxGT("打印停机"); // PRINTER HALTED + LSTR MSG_PLEASE_RESET = _UxGT("请重置"); // Please Reset + LSTR MSG_HEATING = _UxGT("加热中 ..."); // Heating... + LSTR MSG_BED_HEATING = _UxGT("加热热床中 ..."); // Bed Heating... + LSTR MSG_DELTA_CALIBRATE = _UxGT("⊿校准"); // Delta Calibration + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("⊿校准X"); // Calibrate X + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("⊿校准Y"); // Calibrate Y + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("⊿校准Z"); // Calibrate Z + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("⊿校准中心"); // Calibrate Center + LSTR MSG_INFO_MENU = _UxGT("关于打印机"); // About Printer + LSTR MSG_INFO_PRINTER_MENU = _UxGT("打印机信息"); // Printer Info + LSTR MSG_INFO_STATS_MENU = _UxGT("打印机统计"); // Stats + LSTR MSG_INFO_BOARD_MENU = _UxGT("主板信息"); // Board Info + LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("温度计"); // Thermistors + LSTR MSG_INFO_EXTRUDERS = _UxGT("挤出机"); // Extruders + LSTR MSG_INFO_BAUDRATE = _UxGT("波特率"); // Baud + LSTR MSG_INFO_PROTOCOL = _UxGT("协议"); // Protocol + LSTR MSG_CASE_LIGHT = _UxGT("外壳灯"); // Case Light + LSTR MSG_INFO_PRINT_COUNT = _UxGT("打印数"); // Prints + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("完成"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("总共"); // Total + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("最长"); // Longest + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("已挤出"); // Extruded + LSTR MSG_INFO_MIN_TEMP = _UxGT("最低温度"); // Min Temp + LSTR MSG_INFO_MAX_TEMP = _UxGT("最高温度"); // Max Temp + LSTR MSG_INFO_PSU = _UxGT("电源供应"); // PSU + LSTR MSG_DRIVE_STRENGTH = _UxGT("驱动力度"); // Drive Strength + LSTR MSG_DAC_EEPROM_WRITE = _UxGT("保存驱动设置"); // DAC EEPROM Write + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("恢复打印"); // Continue + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("请等待 ...")); // |Please wait... + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("插入并单击")); // |Insert and Click + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("退出中 ...")); // |Ejecting... + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("装载中 ...")); // |Loading... + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("恢复中 ...")); // |Resuming... + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" 最小"); // (LCD_STR_THERMOMETER) Min + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" 最大"); // (LCD_STR_THERMOMETER) Max + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" 因数"); // (LCD_STR_THERMOMETER) Fact + LSTR MSG_LCD_ON = _UxGT("开"); // On + LSTR MSG_LCD_OFF = _UxGT("关"); // Off + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("打印机不正确"); // INCORRECT PRINTER + LSTR MSG_DEBUG_MENU = _UxGT("调试菜单"); // Debug Menu + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("进度条测试"); // Progress Bar Test + LSTR MSG_MOVING = _UxGT("移动..."); // Moving... + LSTR MSG_FREE_XY = _UxGT("释放 XY"); // Free XY + LSTR MSG_HOME_FIRST = _UxGT("归位 %s 先"); // Home %s First + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("加热中 ...")); // |Heating... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("按下加热")); // |Click to heat + LSTR MSG_YES = _UxGT("是"); // YES + LSTR MSG_NO = _UxGT("否"); // NO + LSTR MSG_BACK = _UxGT("返回"); // Back + LSTR MSG_MEDIA_ABORTING = _UxGT("存储卡中止..."); // Aborting... + LSTR MSG_MEDIA_READ_ERROR = _UxGT("卡读卡器错误"); // (MEDIA_TYPE_EN) read error + LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB设备已弹出"); // USB device removed + LSTR MSG_USB_FD_USB_FAILED = _UxGT("USB读取失败"); // USB start failed + LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("软挡块"); // Soft Endstops + LSTR MSG_ADVANCED_SETTINGS = _UxGT("高级设置"); // Advanced Settings + LSTR MSG_CONFIGURATION = _UxGT("配置"); // Configuration + LSTR MSG_AUTO_Z_ALIGN = _UxGT("自动Z对齐"); // Auto Z-Align + LSTR MSG_Z_FADE_HEIGHT = _UxGT("淡出高度"); // Fade Height + LSTR MSG_PREHEAT_CUSTOM = _UxGT("预热自定义"); // Preheat Custom + LSTR MSG_LASER_MENU = _UxGT("激光控制"); // Laser Control + LSTR MSG_LASER_POWER = _UxGT("激光电源"); // Laser Power + LSTR MSG_SPINDLE_MENU = _UxGT("主轴控制"); // Spindle Control + LSTR MSG_SPINDLE_POWER = _UxGT("主轴电源"); // Spindle Pwr + LSTR MSG_SPINDLE_REVERSE = _UxGT("主轴反转"); // Spindle Reverse + LSTR MSG_BED_TRAMMING = _UxGT("调平边角"); // Bed Tramming + LSTR MSG_NEXT_CORNER = _UxGT("下个边角"); // Next Corner + LSTR MSG_MESH_EDITOR = _UxGT("网格编辑器"); // Mesh Editor + LSTR MSG_EDIT_MESH = _UxGT("编辑网格"); // Edit Mesh + LSTR MSG_EDITING_STOPPED = _UxGT("网格编辑已停止"); // Mesh Editing Stopped + LSTR MSG_PROBING_POINT = _UxGT("探测点"); // Probing Point + LSTR MSG_MESH_X = _UxGT("索引X"); // Index X + LSTR MSG_MESH_Y = _UxGT("索引Y"); // Index Y + LSTR MSG_MESH_EDIT_Z = _UxGT("Z 值"); // Z Value + LSTR MSG_CUSTOM_COMMANDS = _UxGT("定制命令"); // Custom Commands + LSTR MSG_M48_TEST = _UxGT("M48探测"); // M48 Probe Test + LSTR MSG_M48_POINT = _UxGT("M48点"); // M48 Point + LSTR MSG_M48_DEVIATION = _UxGT("M48偏差"); // Deviation + LSTR MSG_IDEX_MENU = _UxGT("IDEX模式"); // IDEX Mode + LSTR MSG_OFFSETS_MENU = _UxGT("工具偏移量"); // Tool Offsets + LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("自动停靠"); // Auto-Park + LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("复制"); // Duplication + LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("镜像复制"); // Mirrored Copy + LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("完全控制"); // Full Control + LSTR MSG_HOTEND_OFFSET_Z = _UxGT("第二喷头是Z"); // 2nd Nozzle Z + LSTR MSG_HOTEND_OFFSET_N = _UxGT("第二喷头是@"); // 2nd Nozzle @ + LSTR MSG_UBL_DOING_G29 = _UxGT("执行G29"); // Doing G29 + LSTR MSG_UBL_TOOLS = _UxGT("UBL工具"); // UBL Tools + LSTR MSG_LCD_TILTING_MESH = _UxGT("倾斜點"); // Tilting Point + LSTR MSG_UBL_MANUAL_MESH = _UxGT("手工创设网格"); // Manually Build Mesh + LSTR MSG_UBL_BC_INSERT = _UxGT("放置垫片并测量"); // Place Shim & Measure + LSTR MSG_UBL_BC_INSERT2 = _UxGT("测量"); // Measure + LSTR MSG_UBL_BC_REMOVE = _UxGT("移除并测量热床"); // Remove & Measure Bed + LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("移动到下一个"); // Moving to next + LSTR MSG_UBL_SET_TEMP_BED = _UxGT("热床温度"); // Bed Temp + LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("热床温度"); // Bed Temp + LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("热端温度"); // Hotend Temp + LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("热端温度"); // Hotend Temp + LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("编辑客户网格"); // Edit Custom Mesh + LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("细调网格"); // Fine Tuning Mesh + LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("完成编辑网格"); // Done Editing Mesh + LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("创设客户网格"); // Build Custom Mesh + LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("创设网格"); // Build Mesh + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("创设 $ 网格"); // Build Mesh ($) + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("批准 $ 网格"); // Validate Mesh ($) + LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("创设冷网格"); // Build Cold Mesh + LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("调整网格高度"); // Adjust Mesh Height + LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("高度合计"); // Height Amount + LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("批准网格"); // Validate Mesh + LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("批准客户网格"); // Validate Custom Mesh + LSTR MSG_G26_HEATING_BED = _UxGT("G26加热热床"); // G26 Heating Bed + LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26加热喷嘴"); // G26 Heating Nozzle + LSTR MSG_G26_MANUAL_PRIME = _UxGT("手动填装中..."); // Manual priming... + LSTR MSG_G26_FIXED_LENGTH = _UxGT("固定距离填装"); // Fixed Length Prime + LSTR MSG_G26_PRIME_DONE = _UxGT("填装完成"); // Done Priming + LSTR MSG_G26_CANCELED = _UxGT("G26已取消"); // G26 Canceled + LSTR MSG_G26_LEAVING = _UxGT("离开G26"); // Leaving G26 + LSTR MSG_UBL_CONTINUE_MESH = _UxGT("继续热床网格"); // Continue Bed Mesh + LSTR MSG_UBL_MESH_LEVELING = _UxGT("网格调平"); // Mesh Leveling + LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("三点调平"); // 3-Point Leveling + LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("格子网格调平"); // Grid Mesh Leveling + LSTR MSG_UBL_MESH_LEVEL = _UxGT("调平网格"); // Level Mesh + LSTR MSG_UBL_SIDE_POINTS = _UxGT("边点"); // Side Points + LSTR MSG_UBL_MAP_TYPE = _UxGT("图类型"); // Map Type + LSTR MSG_UBL_OUTPUT_MAP = _UxGT("输出网格图"); // Output Mesh Map + LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("输出到主机"); // Output for Host + LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("输出到CSV"); // Output for CSV + LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("输出到备份"); // Off Printer Backup + LSTR MSG_UBL_INFO_UBL = _UxGT("输出UBL信息"); // Output UBL Info + LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("填充合计"); // Fill-in Amount + LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("手工填充"); // Manual Fill-in + LSTR MSG_UBL_SMART_FILLIN = _UxGT("聪明填充"); // Smart Fill-in + LSTR MSG_UBL_FILLIN_MESH = _UxGT("填充网格"); // Fill-in Mesh + LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("作废所有的"); // Invalidate All + LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("作废最近的"); // Invalidate Closest + LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("细调所有的"); // Fine Tune All + LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("细调最近的"); // Fine Tune Closest + LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("网格存储"); // Mesh Storage + LSTR MSG_UBL_STORAGE_SLOT = _UxGT("存储槽"); // Memory Slot + LSTR MSG_UBL_LOAD_MESH = _UxGT("装载热床网格"); // Load Bed Mesh + LSTR MSG_UBL_SAVE_MESH = _UxGT("保存热床网格"); // Save Bed Mesh + LSTR MSG_MESH_LOADED = _UxGT("网格 %i 已装载"); // Mesh %i Loaded + LSTR MSG_MESH_SAVED = _UxGT("网格 %i 已保存"); // Mesh %i Saved + LSTR MSG_UBL_NO_STORAGE = _UxGT("没有存储"); // No Storage + LSTR MSG_UBL_SAVE_ERROR = _UxGT("错误: UBL保存"); // UBL Save Error + LSTR MSG_UBL_RESTORE_ERROR = _UxGT("错误: UBL还原"); // UBL Restore Error + LSTR MSG_UBL_Z_OFFSET = _UxGT("Z偏移量: "); // Z-Offset: + LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Z偏移已停止"); // Z-Offset Stopped + LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("一步步UBL"); // Step-By-Step UBL + LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1. 创设冷网格"); // 1. Build Cold Mesh + LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2. 聪明填充"); // 2. Smart Fill-in + LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3. 批准网格"); // 3. Validate Mesh + LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4. 细调所有的"); // 4. Fine Tune All + LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5. 批准网格"); // 5. Validate Mesh + LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6. 细调所有的"); // 6. Fine Tune All + LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7. 保存热床网格"); // 7. Save Bed Mesh + LSTR MSG_LED_CONTROL = _UxGT("LED控制"); // LED Control + LSTR MSG_LIGHTS = _UxGT("灯"); // Lights + LSTR MSG_LIGHT_N = _UxGT("灯 #{"); // Light #{ + LSTR MSG_LED_PRESETS = _UxGT("灯预置"); // Light Presets + LSTR MSG_SET_LEDS_RED = _UxGT("红"); // Red + LSTR MSG_SET_LEDS_ORANGE = _UxGT("橙"); // Orange + LSTR MSG_SET_LEDS_YELLOW = _UxGT("黄"); // Yellow + LSTR MSG_SET_LEDS_GREEN = _UxGT("绿"); // Green + LSTR MSG_SET_LEDS_BLUE = _UxGT("蓝"); // Blue + LSTR MSG_SET_LEDS_INDIGO = _UxGT("青"); // Indigo + LSTR MSG_SET_LEDS_VIOLET = _UxGT("紫"); // Violet + LSTR MSG_SET_LEDS_WHITE = _UxGT("白"); // White + LSTR MSG_SET_LEDS_DEFAULT = _UxGT("缺省"); // Default + LSTR MSG_CUSTOM_LEDS = _UxGT("定制灯"); // Custom Lights + LSTR MSG_INTENSITY_R = _UxGT("红饱和度"); // Red Intensity + LSTR MSG_INTENSITY_G = _UxGT("绿饱和度"); // Green Intensity + LSTR MSG_INTENSITY_B = _UxGT("蓝饱和度"); // Blue Intensity + LSTR MSG_INTENSITY_W = _UxGT("白饱和度"); // White Intensity + LSTR MSG_LED_BRIGHTNESS = _UxGT("亮度"); // Brightness + LSTR MSG_HOTEND_TOO_COLD = _UxGT("热端太冷"); // Hotend too cold + LSTR MSG_CHAMBER = _UxGT("机箱壳"); // Enclosure + LSTR MSG_STORED_FAN_N = _UxGT("存储的风扇 ~"); // Stored Fan ~ + LSTR MSG_EXTRA_FAN_SPEED = _UxGT("额外风扇速率"); // Extra Fan Speed + LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("额外风扇速率 ~"); // Extra Fan Speed ~ + LSTR MSG_PID_AUTOTUNE = _UxGT("自动PID"); // PID Autotune + LSTR MSG_PID_AUTOTUNE_E = _UxGT("自动PID *"); // Autotune * PID + LSTR MSG_JERK = _UxGT("抖动速率"); // Jerk + LSTR MSG_VA_JERK = _UxGT("轴抖动速率") STR_A; // Max (STR_A) Jerk + LSTR MSG_VB_JERK = _UxGT("轴抖动速率") STR_B; // Max (STR_B) Jerk + LSTR MSG_VC_JERK = _UxGT("轴抖动速率") STR_C; // Max (STR_C) Jerk + LSTR MSG_VN_JERK = _UxGT("轴抖动速率@"); // Max @ Jerk + LSTR MSG_VE_JERK = _UxGT("挤出机抖动速率"); // Max E Jerk + LSTR MSG_JUNCTION_DEVIATION = _UxGT("接点差"); // Junction Dev + LSTR MSG_MAX_SPEED = _UxGT("速度"); // Max Speed (mm/s) + LSTR MSG_VMAX_A = _UxGT("最大进料速率") STR_A; // Max (STR_A) Speed + LSTR MSG_VMAX_B = _UxGT("最大进料速率") STR_B; // Max (STR_B) Speed + LSTR MSG_VMAX_C = _UxGT("最大进料速率") STR_C; // Max (STR_C) Speed + LSTR MSG_VMAX_N = _UxGT("最大进料速率@"); // Max @ Speed + LSTR MSG_VMAX_E = _UxGT("最大进料速率E"); // Max E Speed + LSTR MSG_VMAX_EN = _UxGT("最大进料速率 *"); // Max * Speed + LSTR MSG_VMIN = _UxGT("最小进料速率"); // Min Velocity + LSTR MSG_FILAMENT_UNLOAD = _UxGT("卸载 mm"); // Unload mm + LSTR MSG_FILAMENT_LOAD = _UxGT("装载 mm"); // Load mm + LSTR MSG_ADVANCE_K = _UxGT("Advance K"); // Advance K + LSTR MSG_ADVANCE_K_E = _UxGT("Advance K *"); // Advance K * + LSTR MSG_INIT_EEPROM = _UxGT("初始化设置"); // Initialize EEPROM + LSTR MSG_MEDIA_UPDATE = _UxGT("存储器更新"); // (MEDIA_TYPE_EN) Update + LSTR MSG_RESET_PRINTER = _UxGT("复位打印机"); // Reset Printer + LSTR MSG_START_PRINT = _UxGT("开始打印"); // Start Print + LSTR MSG_BUTTON_NEXT = _UxGT("下一个"); // Next + LSTR MSG_BUTTON_INIT = _UxGT("初始"); // Init + LSTR MSG_BUTTON_STOP = _UxGT("停止"); // Stop + LSTR MSG_BUTTON_PRINT = _UxGT("打印"); // Print + LSTR MSG_BUTTON_RESET = _UxGT("复位"); // Reset + LSTR MSG_BUTTON_CANCEL = _UxGT("取消"); // Cancel + LSTR MSG_BUTTON_DONE = _UxGT("完成"); // Done + LSTR MSG_BUTTON_BACK = _UxGT("返回"); // Back + LSTR MSG_BUTTON_PROCEED = _UxGT("继续"); // Proceed + LSTR MSG_PRINTING_OBJECT = _UxGT("打印物体"); // Print Obj + LSTR MSG_CANCEL_OBJECT = _UxGT("取消物体"); // Cancel Obj + LSTR MSG_CANCEL_OBJECT_N = _UxGT("取消物体 {"); // Cancel Obj { + LSTR MSG_OUTAGE_RECOVERY = _UxGT("中断恢复"); // Power Outage + LSTR MSG_PRINT_PAUSED = _UxGT("暫停打印"); // Print Paused + LSTR MSG_PRINTING = _UxGT("打印中..."); // Printing... + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V"); // S UnRet V + LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("交换长度"); // Swap Length + LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("清洗长度"); // Purge Length + LSTR MSG_TOOL_CHANGE = _UxGT("换工具"); // Tool Change + LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Z抬起"); // Z Raise + LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("进给速度"); // Prime Speed + LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("回抽速度"); // Retract Speed + LSTR MSG_NOZZLE_STANDBY = _UxGT("喷嘴待命中"); // Nozzle Standby + LSTR MSG_FILAMENTLOAD = _UxGT("装载丝料"); // Load Filament + LSTR MSG_FILAMENTLOAD_E = _UxGT("装载丝料 *"); // Load * Filament + LSTR MSG_FILAMENTUNLOAD = _UxGT("卸载丝料"); // Unload Filament + LSTR MSG_FILAMENTUNLOAD_E = _UxGT("卸载丝料 *"); // Unload * Filament + LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("卸载全部"); // Unload All + LSTR MSG_RELEASE_MEDIA = _UxGT("释放存储卡"); // Release (MEDIA_TYPE_EN) + LSTR MSG_SKEW_FACTOR = _UxGT("偏斜因数"); // Skew Factor + LSTR MSG_BLTOUCH = _UxGT("BLTouch"); // BLTouch + LSTR MSG_BLTOUCH_SELFTEST = _UxGT("自检"); // Self-Test + LSTR MSG_BLTOUCH_STOW = _UxGT("装载"); // Stow + LSTR MSG_BLTOUCH_DEPLOY = _UxGT("部署"); // Deploy + LSTR MSG_BLTOUCH_SW_MODE = _UxGT("SW模式"); // SW-Mode + LSTR MSG_BLTOUCH_5V_MODE = _UxGT("5V模式"); // 5V-Mode + LSTR MSG_BLTOUCH_OD_MODE = _UxGT("OD模式"); // OD-Mode + LSTR MSG_BLTOUCH_MODE_STORE = _UxGT("模式保存"); // Mode-Store + LSTR MSG_BLTOUCH_MODE_STORE_5V = _UxGT("设置BLTouch为5V"); // Set BLTouch to 5V + LSTR MSG_BLTOUCH_MODE_STORE_OD = _UxGT("设置BLTouch为OD"); // Set BLTouch to OD + LSTR MSG_BLTOUCH_MODE_ECHO = _UxGT("报告开漏"); // Report Drain + LSTR MSG_BLTOUCH_MODE_CHANGE = _UxGT("危险: 错误的设置将引起损坏! 是否继续?"); // DANGER: Bad settings can cause damage! Proceed anyway? + LSTR MSG_TOUCHMI_PROBE = _UxGT("TouchMI"); // TouchMI + LSTR MSG_TOUCHMI_INIT = _UxGT("初始化TouchMI"); // Init TouchMI + LSTR MSG_TOUCHMI_ZTEST = _UxGT("Z偏移量测试"); // Z Offset Test + LSTR MSG_TOUCHMI_SAVE = _UxGT("保存"); // Save + LSTR MSG_MANUAL_DEPLOY_TOUCHMI = _UxGT("部署TouchMI"); // Deploy TouchMI + LSTR MSG_MANUAL_DEPLOY = _UxGT("部署Z探针"); // Deploy Z-Probe + LSTR MSG_MANUAL_STOW = _UxGT("收好Z探针"); // Stow Z-Probe + LSTR MSG_BABYSTEP_TOTAL = _UxGT("总计"); // Total + LSTR MSG_COOLING = _UxGT("冷却中 ..."); // Cooling... + LSTR MSG_BED_COOLING = _UxGT("热床冷却中 ..."); // Bed Cooling... + LSTR MSG_CHAMBER_HEATING = _UxGT("机箱加热中 ..."); // Chamber Heating... + LSTR MSG_CHAMBER_COOLING = _UxGT("机箱冷却中 ..."); // Chamber Cooling... + LSTR MSG_DELTA_SETTINGS = _UxGT("⊿设置"); // Delta Settings + LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("⊿自动校准"); // Auto Calibration + LSTR MSG_DELTA_DIAG_ROD = _UxGT("⊿斜柱"); // Diag Rod + LSTR MSG_DELTA_HEIGHT = _UxGT("⊿高度"); // Height + LSTR MSG_DELTA_RADIUS = _UxGT("⊿半径"); // Radius + LSTR MSG_3POINT_LEVELING = _UxGT("三点调平"); // 3-Point Leveling + LSTR MSG_LINEAR_LEVELING = _UxGT("线性调平"); // Linear Leveling + LSTR MSG_BILINEAR_LEVELING = _UxGT("双线性调平"); // Bilinear Leveling + LSTR MSG_UBL_LEVELING = _UxGT("统一热床调平(UBL)"); // Unified Bed Leveling + LSTR MSG_MESH_LEVELING = _UxGT("网格调平"); // Mesh Leveling + LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("监控温度失控:关"); // Runaway Watch: OFF + LSTR MSG_INFO_RUNAWAY_ON = _UxGT("监控温度失控:开"); // Runaway Watch: ON + LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("灯亮度"); // Light Brightness + LSTR MSG_DAC_PERCENT_N = _UxGT("@ 驱动 %"); // @ Driver % + LSTR MSG_ERROR_TMC = _UxGT("TMC 连接错误"); // TMC CONNECTION ERROR + LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("更换料"); // FILAMENT CHANGE + LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("打印已暂停"); // PRINT PAUSED + LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("装载丝料"); // LOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("卸载丝料"); // UNLOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("恢复选项:"); // RESUME OPTIONS: + LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("清除更多"); // Purge more + LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" 喷嘴: "); // Nozzle: + LSTR MSG_RUNOUT_SENSOR = _UxGT("断料传感器"); // Runout Sensor + LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("断料距离mm"); // Runout Dist mm + LSTR MSG_KILL_HOMING_FAILED = _UxGT("归原位失败"); // Homing Failed + LSTR MSG_LCD_PROBING_FAILED = _UxGT("探针探测失败"); // Probing Failed + LSTR MSG_MMU2_CHOOSE_FILAMENT_HEADER = _UxGT("选择料"); // CHOOSE FILAMENT + LSTR MSG_MMU2_MENU = _UxGT("MMU"); // MMU + LSTR MSG_KILL_MMU2_FIRMWARE = _UxGT("升级MMU固件!"); // Update MMU Firmware! + LSTR MSG_MMU2_NOT_RESPONDING = _UxGT("MMU需要专注."); // MMU Needs Attention. + LSTR MSG_MMU2_RESUME = _UxGT("MMU恢复"); // Resume + LSTR MSG_MMU2_RESUMING = _UxGT("MMU恢复中..."); // MMU Resuming... + LSTR MSG_MMU2_LOAD_FILAMENT = _UxGT("MMU加载"); // Load + LSTR MSG_MMU2_LOAD_ALL = _UxGT("MMU加载全部"); // Load All + LSTR MSG_MMU2_LOAD_TO_NOZZLE = _UxGT("MMU加载到喷嘴"); // Load to Nozzle + LSTR MSG_MMU2_EJECT_FILAMENT = _UxGT("MMU弹出"); // Eject + LSTR MSG_MMU2_EJECT_FILAMENT_N = _UxGT("MMU弹出 ~"); // Eject ~ + LSTR MSG_MMU2_UNLOAD_FILAMENT = _UxGT("MMU卸载"); // Unload + LSTR MSG_MMU2_LOADING_FILAMENT = _UxGT("加载填充. %i..."); // Filament %i Load... + LSTR MSG_MMU2_EJECTING_FILAMENT = _UxGT("弹出填充. ..."); // Filament %i Eject... + LSTR MSG_MMU2_UNLOADING_FILAMENT = _UxGT("卸载填充...."); // Filament %i Unload... + LSTR MSG_MMU2_ALL = _UxGT("全部"); // All + LSTR MSG_MMU2_FILAMENT_N = _UxGT("料 ~"); // Filament ~ + LSTR MSG_MMU2_RESET = _UxGT("复位MMU"); // Reset MMU + LSTR MSG_MMU2_RESETTING = _UxGT("MMU复位中..."); // Resetting... + LSTR MSG_MMU2_EJECT_RECOVER = _UxGT("移出, 按下"); // Eject Recover + LSTR MSG_MIX = _UxGT("混合"); // Mix + LSTR MSG_MIX_COMPONENT_N = _UxGT("器件 {"); // Component { + LSTR MSG_MIXER = _UxGT("混合器"); // Mixer + LSTR MSG_GRADIENT = _UxGT("梯度"); // Gradient + LSTR MSG_FULL_GRADIENT = _UxGT("全梯度"); // Full Gradient + LSTR MSG_TOGGLE_MIX = _UxGT("开关混合"); // Toggle Mix + LSTR MSG_CYCLE_MIX = _UxGT("循环混合"); // Cycle Mix + LSTR MSG_GRADIENT_MIX = _UxGT("梯度混合"); // Gradient Mix + LSTR MSG_REVERSE_GRADIENT = _UxGT("反向梯度"); // Reverse Gradient + LSTR MSG_ACTIVE_VTOOL = _UxGT("激活 V-tool"); // Active V-tool + LSTR MSG_START_VTOOL = _UxGT("开始 V-tool"); // Start V-tool + LSTR MSG_END_VTOOL = _UxGT(" 结束 V-tool"); // End V-tool + LSTR MSG_GRADIENT_ALIAS = _UxGT("别名 V-tool"); // Alias V-tool + LSTR MSG_RESET_VTOOLS = _UxGT("复位 V-tools"); // Reset V-tools + LSTR MSG_COMMIT_VTOOL = _UxGT("提交 V-tool Mix"); // Commit V-tool Mix + LSTR MSG_VTOOLS_RESET = _UxGT("V-tools 已复位"); // V-tools Were Reset + LSTR MSG_START_Z = _UxGT("开始 Z:"); // Start Z: + LSTR MSG_END_Z = _UxGT(" 结束 Z:"); // End Z: + LSTR MSG_GAMES = _UxGT("游戏"); // Games + LSTR MSG_BRICKOUT = _UxGT("敲方块"); // Brickout + LSTR MSG_INVADERS = _UxGT("入侵者"); // Invaders + LSTR MSG_SNAKE = _UxGT("贪吃蛇"); // Sn4k3 + LSTR MSG_MAZE = _UxGT("迷宫"); // Maze + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("按下继续")); // |Click to continue + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("停靠中...")); // |Parking... + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("清除中 ...")); // |Purging... + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("按下完成")); // |Click to finish + LSTR MSG_TMC_DRIVERS = _UxGT("TMC驱动器"); // TMC Drivers + LSTR MSG_TMC_CURRENT = _UxGT("驱动电流"); // Driver Current + LSTR MSG_TMC_HYBRID_THRS = _UxGT("混合阈值"); // Hybrid Threshold + LSTR MSG_TMC_HOMING_THRS = _UxGT("无感回零"); // Sensorless Homing + LSTR MSG_TMC_STEPPING_MODE = _UxGT("步进模式"); // Stepping Mode + LSTR MSG_TMC_STEALTHCHOP = _UxGT("StealthChop已使能"); // StealthChop + LSTR MSG_SERVICE_RESET = _UxGT("复位"); // Reset + LSTR MSG_SERVICE_IN = _UxGT(" 在:"); // in: + LSTR MSG_BACKLASH = _UxGT("回差"); // Backlash + LSTR MSG_BACKLASH_CORRECTION = _UxGT("校正"); // Correction + LSTR MSG_BACKLASH_SMOOTHING = _UxGT("平滑的"); // Smoothing + LSTR MSG_HIGH = _UxGT("高"); // HIGH + LSTR MSG_LOW = _UxGT("低"); // LOW + LSTR MSG_ERROR = _UxGT("错误"); // Error + LSTR MSG_KILL_SUBCALL_OVERFLOW = _UxGT("子响应溢出"); // Subcall Overflow + LSTR MSG_CUTTER_FREQUENCY = _UxGT("切割频率"); // Frequency + LSTR MSG_M48_OUT_OF_BOUNDS = _UxGT("探针测试越界"); // Probe out of bounds + LSTR MSG_UBL_TILT_MESH = _UxGT("倾斜网格"); // Tilt Mesh + LSTR MSG_UBL_TILTING_GRID = _UxGT("倾斜网格尺寸"); // Tilting Grid Size + LSTR MSG_UBL_MESH_TILTED = _UxGT("网格倾斜"); // Mesh Tilted + LSTR MSG_UBL_MESH_WIZARD = _UxGT("网格精灵(UBL)"); // UBL Mesh Wizard + LSTR MSG_UBL_INVALID_SLOT = _UxGT("首先选择一个网格槽"); // First Select a Mesh Slot + LSTR MSG_NOZZLE_PARKED = _UxGT("喷嘴已停靠"); // Nozzle Parked + LSTR MSG_CONTROLLER_FAN = _UxGT("控制器风扇"); // Controller Fan + LSTR MSG_CONTROLLER_FAN_IDLE_SPEED = _UxGT("空闲速度"); // Idle Speed + LSTR MSG_CONTROLLER_FAN_AUTO_ON = _UxGT("自动模式"); // Auto Mode + LSTR MSG_CONTROLLER_FAN_SPEED = _UxGT("工作速度"); // Active Speed + LSTR MSG_CONTROLLER_FAN_DURATION = _UxGT("空闲周期"); // Idle Period + LSTR MSG_PID_AUTOTUNE_DONE = _UxGT("PID调整完成"); // PID tuning done + LSTR MSG_PID_BAD_HEATER_ID = _UxGT("自动调失败! 坏的挤出机"); // Autotune failed! Bad extruder. + LSTR MSG_PID_TEMP_TOO_HIGH = _UxGT("自动调失败! 温度太高"); // Autotune failed! Temperature too high. + LSTR MSG_PID_TIMEOUT = _UxGT("自动调失败! 超时"); // Autotune failed! Timeout. + LSTR MSG_XY_FREQUENCY_LIMIT = _UxGT("频率最大"); // XY Freq Limit + LSTR MSG_XY_FREQUENCY_FEEDRATE = _UxGT("进给速度"); // Min FR Factor + LSTR MSG_VOLUMETRIC_LIMIT = _UxGT("E 限制 在 mm") SUPERSCRIPT_THREE; // E Limit in mm(SUPERSCRIPT_THREE) + LSTR MSG_VOLUMETRIC_LIMIT_E = _UxGT("E 限制 *"); // E Limit * + LSTR MSG_ERR_EEPROM_CRC = _UxGT("EEPROM 校验和 错误"); // Err: EEPROM CRC + LSTR MSG_ERR_EEPROM_SIZE = _UxGT("EEPROM 尺寸 错误"); // Err: EEPROM Size + LSTR MSG_ERR_EEPROM_VERSION = _UxGT("EEPROM 版本 错误"); // Err: EEPROM Version + LSTR MSG_SETTINGS_STORED = _UxGT("设置已保存"); // Settings Stored + LSTR MSG_POWER_MONITOR = _UxGT("电源监控"); // Power monitor + LSTR MSG_CURRENT = _UxGT("电流"); // Current + LSTR MSG_VOLTAGE = _UxGT("电压"); // Voltage + LSTR MSG_POWER = _UxGT("功率"); // Power + LSTR MSG_BUTTON_IGNORE = _UxGT("忽略"); // Ignore + LSTR MSG_PAUSING = _UxGT("暂停中..."); // Pausing... + LSTR MSG_PRINT_DONE = _UxGT("打印已完成"); // Print Done + LSTR MSG_FILAMENT_SWAP_EXTRA = _UxGT("额外的交换"); // Swap Extra + LSTR MSG_FILAMENT_PARK_ENABLED = _UxGT("停靠头"); // Park Head + LSTR MSG_SINGLENOZZLE_UNRETRACT_SPEED = _UxGT("恢复速度"); // Recover Speed + LSTR MSG_SINGLENOZZLE_FAN_SPEED = _UxGT("风扇速度"); // Fan Speed + LSTR MSG_SINGLENOZZLE_FAN_TIME = _UxGT("风扇时间"); // Fan Time + LSTR MSG_TOOL_MIGRATION_ON = _UxGT("自动开"); // Auto ON + LSTR MSG_TOOL_MIGRATION_OFF = _UxGT("自动关"); // Auto OFF + LSTR MSG_TOOL_MIGRATION = _UxGT("工具迁移"); // Tool Migration + LSTR MSG_TOOL_MIGRATION_AUTO = _UxGT("自动迁移"); // Auto-migration + LSTR MSG_TOOL_MIGRATION_END = _UxGT("上一个挤出机"); // Last Extruder + LSTR MSG_TOOL_MIGRATION_SWAP = _UxGT("迁移至 *"); // Migrate to * + LSTR MSG_ZPROBE_OFFSETS = _UxGT("探针偏移量"); // Probe Offsets + LSTR MSG_HOTEND_IDLE_TIMEOUT = _UxGT("热端空闲超时"); // Hotend Idle Timeout + LSTR MSG_BAD_PAGE = _UxGT("错误页面索引"); // Bad page index + LSTR MSG_BAD_PAGE_SPEED = _UxGT("错误页面速度"); // Bad page speed + LSTR MSG_LEVEL_X_AXIS = _UxGT("X轴调平"); // Level X Axis + LSTR MSG_AUTO_CALIBRATE = _UxGT("自动校准"); // Auto Calibrate + LSTR MSG_HEATER_TIMEOUT = _UxGT("加热器超时"); // Heater Timeout + LSTR MSG_REHEAT = _UxGT("重新加热"); // Reheat + LSTR MSG_REHEATING = _UxGT("重新加热中..."); // Reheating... + LSTR MSG_SHORT_DAY = _UxGT("天"); // d + LSTR MSG_SHORT_HOUR = _UxGT("时"); // h + LSTR MSG_SHORT_MINUTE = _UxGT("分"); // m + LSTR MSG_MESH_ACTIVE = _UxGT("网格 %i 激活"); // Mesh %i active + LSTR MSG_MARLIN = _UxGT("马林"); // Marlin } namespace LanguageWide_zh_CN { using namespace LanguageNarrow_zh_CN; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("打印计数"); // "Print Count" - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("完成了"); // "Completed" - LSTR MSG_INFO_PRINT_TIME = _UxGT("总打印时间"); // "Total print time" - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("最长工作时间"); // "Longest job time" - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("总计挤出"); // "Extruded total" + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("打印计数"); // Print Count + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("完成了"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("总打印时间"); // Print Time + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("最长工作时间"); // Longest Job Time + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("总计挤出"); // Extruded Total #endif } @@ -623,17 +598,17 @@ namespace LanguageTall_zh_CN { using namespace LanguageWide_zh_CN; #if LCD_HEIGHT >= 4 // Filament Change screens show up to 3 lines on a 4-line display - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("按下按钮", "恢复打印")); - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("停靠中...")); - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("等待开始", "丝料", "变更")); // "Wait for start of the filament change" - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("插入料", "并按下", "以继续")); - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("按下按钮来", "加热喷嘴.")); // "Press button to heat nozzle." - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("加热喷嘴", "请等待 ...")); // "Heating nozzle Please wait..." - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("等待", "卸下丝料")); // "Wait for filament unload" - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("等待", "进料")); // "Wait for filament load" - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("等待", "丝料清除")); // "Wait for filament purge" - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("按下已完成", "料的清洗")); - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("等待打印", "恢复")); // "Wait for print to resume" + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("等待开始", "丝料", "变更")); // |Wait for|filament change|to start + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("插入料", "并按下", "以继续")); // |Insert filament|and press button|to continue + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("等待", "卸下丝料")); // |Wait for|filament unload + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("等待", "进料")); // |Wait for|filament load + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("等待打印", "恢复")); // |Wait for print|to resume... + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("加热喷嘴", "请等待 ...")); // |Nozzle heating|Please wait... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("按下按钮来", "加热喷嘴.")); // |Press button|to heat nozzle + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("按下按钮", "恢复打印")); // |Press Button|to resume print + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("停靠中...")); // |Parking... + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("等待", "丝料清除")); // |Wait for|filament purge + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("按下已完成", "料的清洗")); // |Click to finish|filament purge #endif } diff --git a/Marlin/src/lcd/language/language_zh_TW.h b/Marlin/src/lcd/language/language_zh_TW.h index dd35797dd4..4ad368e065 100644 --- a/Marlin/src/lcd/language/language_zh_TW.h +++ b/Marlin/src/lcd/language/language_zh_TW.h @@ -42,448 +42,427 @@ namespace LanguageNarrow_zh_TW { constexpr uint8_t CHARSIZE = 3; LSTR LANGUAGE = _UxGT("Traditional Chinese"); - LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT("已就緒."); // " ready." - LSTR MSG_YES = _UxGT("是"); // "YES" - LSTR MSG_NO = _UxGT("否"); // "NO" - LSTR MSG_BACK = _UxGT("返回"); // "Back" - - LSTR MSG_MEDIA_ABORTING = _UxGT("正在中止..."); // "Aborting..." - LSTR MSG_MEDIA_INSERTED = _UxGT("記憶卡已插入"); // "Card inserted" - LSTR MSG_MEDIA_REMOVED = _UxGT("記憶卡被拔出"); // "Card removed" - LSTR MSG_MEDIA_READ_ERROR = _UxGT("記憶卡讀取錯誤"); //"Media read error" - LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB裝置已移除"); // "USB device removed" - LSTR MSG_USB_FD_USB_FAILED = _UxGT("USB啟動失敗"); // "USB start failed" - - LSTR MSG_LCD_ENDSTOPS = _UxGT("擋塊"); // "Endstops" // Max length 8 characters - LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("軟體擋塊"); // "Soft Endstops" - LSTR MSG_MAIN_MENU = _UxGT("主選單"); // "Main" - LSTR MSG_ADVANCED_SETTINGS = _UxGT("進階設置"); // "Advanced Settings" - LSTR MSG_CONFIGURATION = _UxGT("設置"); //Configuration - LSTR MSG_DISABLE_STEPPERS = _UxGT("關閉步進馬達"); // "Disable steppers" - LSTR MSG_DEBUG_MENU = _UxGT("除錯選單"); // "Debug Menu" - LSTR MSG_PROGRESS_BAR_TEST = _UxGT("進度條測試"); // "Progress Bar Test" - LSTR MSG_AUTO_HOME = _UxGT("自動回原點"); // "Auto home" - LSTR MSG_AUTO_HOME_X = _UxGT("回X原點"); // "Home X" - LSTR MSG_AUTO_HOME_Y = _UxGT("回Y原點"); // "Home Y" - LSTR MSG_AUTO_HOME_Z = _UxGT("回Z原點"); // "Home Z" - LSTR MSG_AUTO_Z_ALIGN = _UxGT("自動Z對齊"); // "Auto Z-Align" - LSTR MSG_LEVEL_BED_HOMING = _UxGT("平台調平XYZ歸原點"); // "Homing XYZ" - LSTR MSG_LEVEL_BED_WAITING = _UxGT("單擊開始熱床調平"); // "Click to Begin" - LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("下個熱床調平點"); // "Next Point" - LSTR MSG_LEVEL_BED_DONE = _UxGT("完成熱床調平"); // "Leveling Done!" - LSTR MSG_Z_FADE_HEIGHT = _UxGT("淡出高度"); // "Fade Height" - LSTR MSG_SET_HOME_OFFSETS = _UxGT("設置原點偏移"); // "Set home offsets" - LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("偏移已啟用"); // "Offsets applied" - - LSTR MSG_PREHEAT_1 = _UxGT("預熱 ") PREHEAT_1_LABEL; // "Preheat PREHEAT_1_LABEL" - LSTR MSG_PREHEAT_1_H = _UxGT("預熱 ") PREHEAT_1_LABEL " ~"; // "Preheat PREHEAT_1_LABEL" - LSTR MSG_PREHEAT_1_END = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴"); //MSG_PREHEAT_1 " " - LSTR MSG_PREHEAT_1_END_E = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴 ~"); //MSG_PREHEAT_1 " " - LSTR MSG_PREHEAT_1_ALL = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 全部"); //MSG_PREHEAT_1 " All" - LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 熱床"); //MSG_PREHEAT_1 " Bed" - LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 設置"); //MSG_PREHEAT_1 " conf" - - LSTR MSG_PREHEAT_M = _UxGT("預熱 $"); // "Preheat PREHEAT_1_LABEL" - LSTR MSG_PREHEAT_M_H = _UxGT("預熱 $ ~"); // "Preheat PREHEAT_1_LABEL" - LSTR MSG_PREHEAT_M_END = _UxGT("預熱 $ 噴嘴"); //MSG_PREHEAT_1 " " - LSTR MSG_PREHEAT_M_END_E = _UxGT("預熱 $ 噴嘴 ~"); //MSG_PREHEAT_1 " " - LSTR MSG_PREHEAT_M_ALL = _UxGT("預熱 $ 全部"); //MSG_PREHEAT_1 " All" - LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("預熱 $ 熱床"); //MSG_PREHEAT_1 " Bed" - LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("預熱 $ 設置"); //MSG_PREHEAT_1 " conf" - - LSTR MSG_PREHEAT_CUSTOM = _UxGT("自定預熱"); // "Preheat Custom" - LSTR MSG_COOLDOWN = _UxGT("降溫"); // "Cooldown" - LSTR MSG_LASER_MENU = _UxGT("激光控制"); // "Laser Control" - LSTR MSG_LASER_POWER = _UxGT("激光電源"); // "Laser Power" - LSTR MSG_SPINDLE_MENU = _UxGT("主軸控告制"); // "Spindle Control" - LSTR MSG_SPINDLE_POWER = _UxGT("主軸電源"); // "Spindle Power" - LSTR MSG_SPINDLE_REVERSE = _UxGT("主軸反轉"); // "Spindle Reverse" - LSTR MSG_SWITCH_PS_ON = _UxGT("電源打開"); // "Switch power on" - LSTR MSG_SWITCH_PS_OFF = _UxGT("電源關閉"); // "Switch power off" - LSTR MSG_EXTRUDE = _UxGT("擠出"); // "Extrude" - LSTR MSG_RETRACT = _UxGT("回縮"); // "Retract" - LSTR MSG_MOVE_AXIS = _UxGT("移動軸"); // "Move axis" - LSTR MSG_PROBE_AND_LEVEL = _UxGT("探測和調平"); // "Probe and Level" - LSTR MSG_BED_LEVELING = _UxGT("調平熱床"); // "Bed leveling" - LSTR MSG_LEVEL_BED = _UxGT("調平熱床"); // "Level bed" - LSTR MSG_BED_TRAMMING = _UxGT("調平邊角"); // "Bed Tramming" - LSTR MSG_NEXT_CORNER = _UxGT("下個邊角"); // "Next corner" - LSTR MSG_MESH_EDITOR = _UxGT("網格編輯器"); // "Mesh Editor" - LSTR MSG_EDIT_MESH = _UxGT("編輯網格"); // "Edit Mesh" - LSTR MSG_EDITING_STOPPED = _UxGT("網格編輯已停止"); // "Mesh Editing Stopped" - LSTR MSG_PROBING_POINT = _UxGT("探測點"); // "Probing Point" - LSTR MSG_MESH_X = _UxGT("索引 X"); // "Index X" - LSTR MSG_MESH_Y = _UxGT("索引 Y"); // "Index Y" - LSTR MSG_MESH_EDIT_Z = _UxGT("Z 值"); // "Z Value" - LSTR MSG_CUSTOM_COMMANDS = _UxGT("自定命令"); // "Custom Commands" - LSTR MSG_M48_TEST = _UxGT("M48 探測測試"); // "M48 Probe Test" - LSTR MSG_M48_POINT = _UxGT("M48 探測點"); // "M48 Point" - LSTR MSG_M48_DEVIATION = _UxGT("偏差"); // "Deviation" - LSTR MSG_IDEX_MENU = _UxGT("IDEX Mode"); - LSTR MSG_OFFSETS_MENU = _UxGT("Tool Offsets"); - LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-Park"); - LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplication"); - LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Mirrored Copy"); - LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Full Control"); - LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2nd Nozzle Z"); - LSTR MSG_HOTEND_OFFSET_N = _UxGT("2nd Nozzle @"); - LSTR MSG_UBL_DOING_G29 = _UxGT("執行G29"); // "Doing G29" - LSTR MSG_UBL_TOOLS = _UxGT("UBL工具"); // "UBL Tools" - LSTR MSG_LCD_TILTING_MESH = _UxGT("傾斜點"); // "Tilting Point" - LSTR MSG_UBL_MANUAL_MESH = _UxGT("手工建網"); // "Manually Build Mesh" - LSTR MSG_UBL_BC_INSERT = _UxGT("放置墊片並測量"); // "Place shim & measure" - LSTR MSG_UBL_BC_INSERT2 = _UxGT("測量"); // "Measure" - LSTR MSG_UBL_BC_REMOVE = _UxGT("移除並測量熱床"); // "Remove & measure bed" - LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("移動到下一個"); // "Moving to next" - LSTR MSG_UBL_SET_TEMP_BED = _UxGT("置設熱床溫度"); // "Bed Temp" - LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("置設熱床溫度"); // "Bed Temp" - LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("置設噴嘴溫度"); // "Hotend Temp" - LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("熱端溫度"); // "Hotend Temp" - LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("編輯客戶網格"); // "Edit Custom Mesh" - LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("細調網格"); // "Fine Tuning Mesh" - LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("完成編輯網格"); // "Done Editing Mesh" - LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("創設客戶網格"); // "Build Custom Mesh" - LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("創設網格"); // "Build Mesh" - LSTR MSG_UBL_BUILD_MESH_M = _UxGT("創設 $ 網格"); // "Build PREHEAT_1_LABEL Mesh" - LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("批准 $ 網格"); // "Validate PREHEAT_1_LABEL Mesh" - LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("創設冷網格"); // "Build Cold Mesh" - LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("調整網格高度"); // "Adjust Mesh Height" - LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("高度合計"); // "Height Amount" - LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("批准網格"); // "Validate Mesh" - LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("批准客戶網格"); // "Validate Custom Mesh" - LSTR MSG_G26_HEATING_BED = _UxGT("G26 加熱熱床"); // "G26 Heating Bed" - LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 加熱噴嘴"); //"G26 Heating Nozzle" - LSTR MSG_G26_MANUAL_PRIME = _UxGT("手動填裝"); // "Manual priming..." - LSTR MSG_G26_FIXED_LENGTH = _UxGT("固定距離填裝"); // "Fixed Length Prime" - LSTR MSG_G26_PRIME_DONE = _UxGT("完成填裝"); // "Done Priming" - LSTR MSG_G26_CANCELED = _UxGT("G26已取消"); // "G26 Canceled" - LSTR MSG_G26_LEAVING = _UxGT("離開 G26"); // "Leaving G26" - LSTR MSG_UBL_CONTINUE_MESH = _UxGT("繼續熱床網格"); // "Continue Bed Mesh" - LSTR MSG_UBL_MESH_LEVELING = _UxGT("網格調平"); // "Mesh Leveling" - LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("三點調平"); // "3-Point Leveling" - LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("格子網格調平"); // "Grid Mesh Leveling" - LSTR MSG_UBL_MESH_LEVEL = _UxGT("調平網格"); // "Level Mesh" - LSTR MSG_UBL_SIDE_POINTS = _UxGT("邊點"); // "Side Points" - LSTR MSG_UBL_MAP_TYPE = _UxGT("圖類型"); // "Map Type" - LSTR MSG_UBL_OUTPUT_MAP = _UxGT("輸出網格圖"); // "Output Mesh Map" - LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("輸出到主機"); // "Output for Host" - LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("輸出到CSV"); // "Output for CSV" - LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("輸出到備份"); // "Off Printer Backup" - LSTR MSG_UBL_INFO_UBL = _UxGT("輸出UBL信息"); // "Output UBL Info" - LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("填充合計"); // "Fill-in Amount" - LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("手工填充"); // "Manual Fill-in" - LSTR MSG_UBL_SMART_FILLIN = _UxGT("聰明填充"); // "Smart Fill-in" - LSTR MSG_UBL_FILLIN_MESH = _UxGT("填充網格"); // "Fill-in Mesh" - LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("作廢所有的"); // "Invalidate All" - LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("作廢最近的"); // "Invalidate Closest" - LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("細調所有的"); // "Fine Tune All" - LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("細調最近的"); // "Fine Tune Closest" - LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("網格存儲"); // "Mesh Storage" - LSTR MSG_UBL_STORAGE_SLOT = _UxGT("存儲槽"); // "Memory Slot" - LSTR MSG_UBL_LOAD_MESH = _UxGT("裝載熱床網格"); // "Load Bed Mesh" - LSTR MSG_UBL_SAVE_MESH = _UxGT("保存熱床網格"); // "Save Bed Mesh" - LSTR MSG_MESH_LOADED = _UxGT("網格 %i 已裝載"); // "Mesh %i loaded" - LSTR MSG_MESH_SAVED = _UxGT("網格 %i 已保存"); // "Mesh %i saved" - LSTR MSG_UBL_NO_STORAGE = _UxGT("沒有存儲"); // "No storage" - LSTR MSG_UBL_SAVE_ERROR = _UxGT("錯誤: UBL保存"); // "Err: UBL Save" - LSTR MSG_UBL_RESTORE_ERROR = _UxGT("錯誤: UBL還原"); // "Err: UBL Restore" - LSTR MSG_UBL_Z_OFFSET = _UxGT("Z-偏移:"); // "Z-Offset: " - LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Z偏移已停止"); // "Z-Offset Stopped" - LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("一步步UBL"); // "Step-By-Step UBL" - LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1. 創設冷網格"); - LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2. 聰明填充"); - LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3. 批准網格"); - LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4. 細調所有的"); - LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5. 批准網格"); - LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6. 細調所有的"); - LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7. 保存熱床網格"); - - LSTR MSG_LED_CONTROL = _UxGT("燈管控制"); // "LED Control" - LSTR MSG_LIGHTS = _UxGT("燈"); // "Lights" - LSTR MSG_LIGHT_N = _UxGT("燈 #{"); // "Light #{" - LSTR MSG_LED_PRESETS = _UxGT("燈預置"); // "Light Presets" - LSTR MSG_SET_LEDS_RED = _UxGT("红"); // "Red" - LSTR MSG_SET_LEDS_ORANGE = _UxGT("橙"); // "Orange" - LSTR MSG_SET_LEDS_YELLOW = _UxGT("黃"); // "Yellow" - LSTR MSG_SET_LEDS_GREEN = _UxGT("綠"); // "Green" - LSTR MSG_SET_LEDS_BLUE = _UxGT("藍"); // "Blue" - LSTR MSG_SET_LEDS_INDIGO = _UxGT("青"); // "Indigo" - LSTR MSG_SET_LEDS_VIOLET = _UxGT("紫"); // "Violet" - LSTR MSG_SET_LEDS_WHITE = _UxGT("白"); // "White" - LSTR MSG_SET_LEDS_DEFAULT = _UxGT("復歸"); // "Default" - LSTR MSG_CUSTOM_LEDS = _UxGT("定制燈"); // "Custom Lights" - LSTR MSG_INTENSITY_R = _UxGT("紅飽和度"); // "Red Intensity" - LSTR MSG_INTENSITY_G = _UxGT("綠飽和度"); // "Green Intensity" - LSTR MSG_INTENSITY_B = _UxGT("藍飽和度"); // "Blue Intensity" - LSTR MSG_INTENSITY_W = _UxGT("白飽和度"); // "White Intensity" - LSTR MSG_LED_BRIGHTNESS = _UxGT("亮度"); // "Brightness" - - LSTR MSG_MOVING = _UxGT("移動 ..."); // "Moving..." - LSTR MSG_FREE_XY = _UxGT("釋放 XY"); // "Free XY" - LSTR MSG_MOVE_X = _UxGT("移動X"); // "Move X" - LSTR MSG_MOVE_Y = _UxGT("移動Y"); // "Move Y" - LSTR MSG_MOVE_Z = _UxGT("移動Z"); // "Move Z" - LSTR MSG_MOVE_N = _UxGT("移動Q"); // "Move @" - LSTR MSG_MOVE_E = _UxGT("擠出機"); // "Extruder" - LSTR MSG_MOVE_EN = _UxGT("擠出機 *"); // "Extruder *" - LSTR MSG_HOTEND_TOO_COLD = _UxGT("噴嘴溫度不夠"); // "Hotend too cold" - LSTR MSG_MOVE_N_MM = _UxGT("移動 $mm"); // "Move $mm" - LSTR MSG_MOVE_N_IN = _UxGT("移動 $in"); // "Move $in" - LSTR MSG_MOVE_N_DEG = _UxGT("移動 $") LCD_STR_DEGREE; // "Move $°" - LSTR MSG_SPEED = _UxGT("速率"); // "Speed" - LSTR MSG_MESH_Z_OFFSET = _UxGT("熱床Z"); // "Bed Z" - LSTR MSG_NOZZLE = " " LCD_STR_THERMOMETER _UxGT(" 噴嘴"); // "Nozzle" 噴嘴 - LSTR MSG_NOZZLE_N = " " LCD_STR_THERMOMETER _UxGT(" 噴嘴 ~"); - LSTR MSG_BED = " " LCD_STR_THERMOMETER _UxGT(" 熱床"); // "Bed" - LSTR MSG_CHAMBER = _UxGT("Enclosure"); - LSTR MSG_FAN_SPEED = _UxGT("風扇速率"); // "Fan speed" - LSTR MSG_FAN_SPEED_N = _UxGT("風扇速率 {"); - LSTR MSG_STORED_FAN_N = _UxGT("Stored Fan {"); - LSTR MSG_EXTRA_FAN_SPEED = _UxGT("額外風扇速率"); // "Extra fan speed" - LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("額外風扇速率 {"); - LSTR MSG_FLOW = _UxGT("擠出速率"); - LSTR MSG_FLOW_N = _UxGT("擠出速率 ~"); // "Flow" - LSTR MSG_CONTROL = _UxGT("控制"); // "Control" - LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" 最小"); // " " LCD_STR_THERMOMETER " Min" - LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" 最大"); // " " LCD_STR_THERMOMETER " Max" - LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" 系數"); // " " LCD_STR_THERMOMETER " Fact" - LSTR MSG_AUTOTEMP = _UxGT("自動控溫"); // "Autotemp" - LSTR MSG_LCD_ON = _UxGT("開 "); // "On" - LSTR MSG_LCD_OFF = _UxGT("關 "); // "Off" - - LSTR MSG_SELECT_E = _UxGT("選擇 *"); - LSTR MSG_ACC = _UxGT("加速度"); // "Accel" acceleration - LSTR MSG_JERK = _UxGT("抖動速率"); // "Jerk" - LSTR MSG_VA_JERK = _UxGT("軸抖動速率") STR_A; // "Va-jerk" - LSTR MSG_VB_JERK = _UxGT("軸抖動速率") STR_B; - LSTR MSG_VC_JERK = _UxGT("軸抖動速率") STR_C; - LSTR MSG_VN_JERK = _UxGT("軸抖動速率@"); - LSTR MSG_VE_JERK = _UxGT("擠出機抖動速率"); - - LSTR MSG_MAX_SPEED = _UxGT("速度"); // "Velocity" - LSTR MSG_VMAX_A = _UxGT("最大進料速率") STR_A; // "Vmax " max_feedrate_mm_s - LSTR MSG_VMAX_B = _UxGT("最大進料速率") STR_B; - LSTR MSG_VMAX_C = _UxGT("最大進料速率") STR_C; - LSTR MSG_VMAX_N = _UxGT("最大進料速率@"); - LSTR MSG_VMAX_E = _UxGT("最大進料速率E"); - LSTR MSG_VMAX_EN = _UxGT("最大進料速率 *"); // "Vmax " max_feedrate_mm_s - LSTR MSG_VMIN = _UxGT("最小進料速率"); // "Vmin" min_feedrate_mm_s - LSTR MSG_VTRAV_MIN = _UxGT("最小移動速率"); // "VTrav min" min_travel_feedrate_mm_s, (target) speed of the move - LSTR MSG_ACCELERATION = _UxGT("加速度"); // "Acceleration" - LSTR MSG_AMAX_A = _UxGT("最大列印加速度") STR_A; // "Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves - LSTR MSG_AMAX_B = _UxGT("最大列印加速度") STR_B; - LSTR MSG_AMAX_C = _UxGT("最大列印加速度") STR_C; - LSTR MSG_AMAX_N = _UxGT("最大列印加速度@"); - LSTR MSG_AMAX_E = _UxGT("最大列印加速度E"); - LSTR MSG_AMAX_EN = _UxGT("最大列印加速度 *"); // "Amax " max_acceleration_mm_per_s2, acceleration in units/s^2 for print moves - LSTR MSG_A_RETRACT = _UxGT("回縮加速度"); // "A-retract" retract_acceleration, E acceleration in mm/s^2 for retracts - LSTR MSG_A_TRAVEL = _UxGT("非列印移動加速度"); // "A-travel" travel_acceleration, X, Y, Z acceleration in mm/s^2 for travel (non printing) moves - LSTR MSG_STEPS_PER_MM = _UxGT("軸步數/mm"); // "Steps/mm" axis_steps_per_mm, axis steps-per-unit G92 - LSTR MSG_A_STEPS = STR_A _UxGT(" 軸步數/mm"); // "Asteps/mm" axis_steps_per_mm, axis steps-per-unit G92 - LSTR MSG_B_STEPS = STR_B _UxGT(" 軸步數/mm"); - LSTR MSG_C_STEPS = STR_C _UxGT(" 軸步數/mm"); - LSTR MSG_N_STEPS = _UxGT("@ 軸步數/mm"); - LSTR MSG_E_STEPS = _UxGT("擠出機步數/mm"); // "Esteps/mm" - LSTR MSG_EN_STEPS = _UxGT("擠出機~步數/mm"); - LSTR MSG_TEMPERATURE = _UxGT("溫度"); // "Temperature" - LSTR MSG_MOTION = _UxGT("運作"); // "Motion" - LSTR MSG_FILAMENT = _UxGT("絲料測容"); // "Filament" menu_control_volumetric - LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("測容積mm") SUPERSCRIPT_THREE; // "E in mm3" volumetric_enabled - LSTR MSG_FILAMENT_DIAM = _UxGT("絲料直徑"); // "Fil. Dia." - LSTR MSG_FILAMENT_DIAM_E = _UxGT("絲料直徑 *"); - LSTR MSG_FILAMENT_UNLOAD = _UxGT("卸載 mm"); // "Unload mm" - LSTR MSG_FILAMENT_LOAD = _UxGT("装載 mm"); // "Load mm" - LSTR MSG_ADVANCE_K = _UxGT("Advance K"); - LSTR MSG_ADVANCE_K_E = _UxGT("Advance K *"); - LSTR MSG_CONTRAST = _UxGT("LCD對比度"); // "LCD contrast" - LSTR MSG_STORE_EEPROM = _UxGT("保存設置"); // "Store memory" - LSTR MSG_LOAD_EEPROM = _UxGT("載入設置"); // "Load memory" - LSTR MSG_RESTORE_DEFAULTS = _UxGT("恢復安全值"); // "Restore failsafe" - LSTR MSG_INIT_EEPROM = _UxGT("初始化設置"); // "Initialize EEPROM" - LSTR MSG_ERR_EEPROM_CRC = _UxGT("錯誤: EEPROM CRC"); // "Err: EEPROM CRC" - LSTR MSG_ERR_EEPROM_SIZE = _UxGT("錯誤: EEPROM 尺寸"); // "Err: EEPROM Index" - LSTR MSG_ERR_EEPROM_VERSION = _UxGT("錯誤: EEPROM 版本"); // "EEPROM Version" - LSTR MSG_MEDIA_UPDATE = _UxGT("媒體更新"); // "Media Update" - LSTR MSG_RESET_PRINTER = _UxGT("重置打印機"); // "Reset Printer - LSTR MSG_REFRESH = _UxGT("刷新"); // "Refresh" - LSTR MSG_INFO_SCREEN = _UxGT("資訊界面"); // "Info screen" - LSTR MSG_PREPARE = _UxGT("準備"); // "Prepare" - LSTR MSG_TUNE = _UxGT("調整"); // "Tune" - LSTR MSG_START_PRINT = _UxGT("開始列印"); // "Start Print" - LSTR MSG_BUTTON_NEXT = _UxGT("下一個"); // "Next" - LSTR MSG_BUTTON_INIT = _UxGT("初始 "); // "Init" - LSTR MSG_BUTTON_STOP = _UxGT("停止 "); // "Stop" - LSTR MSG_BUTTON_PRINT = _UxGT("列印 "); // "Print" - LSTR MSG_BUTTON_RESET = _UxGT("復歸 "); // "Reset" - LSTR MSG_BUTTON_CANCEL = _UxGT("放棄 "); // "Cancel" - LSTR MSG_BUTTON_DONE = _UxGT("確認 "); // "Done" - LSTR MSG_BUTTON_BACK = _UxGT("返回 "); // "Back" - LSTR MSG_BUTTON_PROCEED = _UxGT("繼續 "); // "Proceed" - LSTR MSG_PAUSE_PRINT = _UxGT("暫停列印"); // "Pause print" - LSTR MSG_RESUME_PRINT = _UxGT("恢復列印"); // "Resume print" - LSTR MSG_STOP_PRINT = _UxGT("停止列印"); // "Stop print" - LSTR MSG_PRINTING_OBJECT = _UxGT("列印物件"); // "Printing Object" - LSTR MSG_CANCEL_OBJECT = _UxGT("中止物件"); // "Cancel Object" - LSTR MSG_CANCEL_OBJECT_N = _UxGT("中止物件 {"); // "Cancel Object {" - LSTR MSG_OUTAGE_RECOVERY = _UxGT("中斷恢復"); // "Outage Recovery" - LSTR MSG_MEDIA_MENU = _UxGT("從記憶卡上列印"); // "Print from SD" - LSTR MSG_NO_MEDIA = _UxGT("無記憶卡"); // "No SD card" - LSTR MSG_DWELL = _UxGT("休眠 ..."); // "Sleep..." - LSTR MSG_USERWAIT = _UxGT("點擊繼續 ..."); // "Click to resume..." - LSTR MSG_PRINT_PAUSED = _UxGT("列印已暫停"); // "Print paused" - LSTR MSG_PRINTING = _UxGT("列印中 ..."); // "Printing..." - LSTR MSG_PRINT_ABORTED = _UxGT("已取消列印"); // "Print aborted" - LSTR MSG_NO_MOVE = _UxGT("無移動"); // "No move." - LSTR MSG_KILLED = _UxGT("已砍掉"); // "KILLED. " - LSTR MSG_STOPPED = _UxGT("已停止"); // "STOPPED. " - LSTR MSG_CONTROL_RETRACT = _UxGT("回縮長度mm"); // "Retract mm" retract_length, retract length (positive mm) - LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("換手回抽長度mm"); // "Swap Re.mm" swap_retract_length, swap retract length (positive mm), for extruder change - LSTR MSG_CONTROL_RETRACTF = _UxGT("回縮速率mm/s"); // "Retract V" retract_feedrate_mm_s, feedrate for retracting (mm/s) - LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Hop mm"); // "Hop mm" retract_zraise, retract Z-lift - LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("回縮恢復長度mm"); // "UnRet +mm" retract_recover_extra, additional recover length (mm, added to retract length when recovering) - LSTR 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) - LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("回縮恢復後進料速率mm/s"); // "Unretract V" retract_recover_feedrate_mm_s, feedrate for recovering from retraction (mm/s) - LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V"); // "S UnRet V" - LSTR MSG_AUTORETRACT = _UxGT("自動回縮"); // "Auto-Retract" autoretract_enabled, - LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("交換長度"); // "Swap Length" - LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("清除長度"); // "Purge Length" - LSTR MSG_TOOL_CHANGE = _UxGT("交換工具"); //"Tool Change" - LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Z軸提昇"); // "Z Raise" - LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("最高速度"); // "Prime Speed" - LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("收回速度"); // "Retract Speed" - LSTR MSG_NOZZLE_STANDBY = _UxGT("噴嘴待機"); //"Nozzle Standby" - LSTR MSG_FILAMENTCHANGE = _UxGT("更換絲料"); // "Change filament" - LSTR MSG_FILAMENTCHANGE_E = _UxGT("更換絲料 *"); - LSTR MSG_FILAMENTLOAD = _UxGT("裝載絲料"); // "Load filament" - LSTR MSG_FILAMENTLOAD_E = _UxGT("裝載絲料 *"); - LSTR MSG_FILAMENTUNLOAD = _UxGT("卸載絲料"); // "Unload filament" - LSTR MSG_FILAMENTUNLOAD_E = _UxGT("卸載絲料 *"); // "Unload filament" - LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("卸載全部"); // "Unload All" - - LSTR MSG_ATTACH_MEDIA = _UxGT("連接記憶卡"); // "Attach Media" - LSTR MSG_ATTACH_SD = _UxGT("挂载記憶卡"); // "Attach SD Card" - LSTR MSG_ATTACH_USB = _UxGT("挂载隨身碟"); // "Attach USB Drive" - LSTR MSG_CHANGE_MEDIA = _UxGT("更換記憶卡"); // "Change SD card" - LSTR MSG_RELEASE_MEDIA = _UxGT("釋放媒體"); // "Release Media" - LSTR MSG_RUN_AUTOFILES = _UxGT("自動開始"); // "Autostart" - - LSTR MSG_ZPROBE_OUT = _UxGT("Z探針在熱床之外"); // "Z probe out. bed" Z probe is not within the physical limits - LSTR MSG_SKEW_FACTOR = _UxGT("偏斜因數"); // "Skew Factor" - - LSTR MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch 自檢"); // "BLTouch Self-Test" - LSTR MSG_BLTOUCH_RESET = _UxGT("重置BLTouch"); // "Reset BLTouch" - LSTR MSG_BLTOUCH_STOW = _UxGT("裝載BLTouch"); // "Stow BLTouch" - LSTR MSG_BLTOUCH_DEPLOY = _UxGT("部署BLTouch"); // "Deploy BLTouch" - - LSTR MSG_HOME_FIRST = _UxGT("歸位 %s 先"); // "Home ... first" - LSTR MSG_ZPROBE_OFFSETS = _UxGT("探針偏移"); // "Probe Offsets" - LSTR MSG_ZPROBE_XOFFSET = _UxGT("探針X偏移量"); // "Probe X Offset" - LSTR MSG_ZPROBE_YOFFSET = _UxGT("探針Y偏移量"); // "Probe Y Offset" - LSTR MSG_ZPROBE_ZOFFSET = _UxGT("探針Z偏移量"); // "Probe Z Offset" - LSTR MSG_ZPROBE_OFFSET_N = _UxGT("探針@偏移量"); // "Probe @ Offset" - LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("逐步調整Z"); // "Babystep Probe Z" - LSTR MSG_BABYSTEP_X = _UxGT("微量調整X軸"); // "Babystep X" lcd_babystep_x, Babystepping enables the user to control the axis in tiny amounts - LSTR MSG_BABYSTEP_Y = _UxGT("微量調整Y軸"); // "Babystep Y" - LSTR MSG_BABYSTEP_Z = _UxGT("微量調整Z軸"); // "Babystep Z" - LSTR MSG_BABYSTEP_TOTAL = _UxGT("總計"); // "Total" - LSTR MSG_ENDSTOP_ABORT = _UxGT("擋塊終止"); // "Endstop abort" - LSTR MSG_ERR_HEATING_FAILED = _UxGT("加熱失敗"); // "Heating failed" - LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("錯誤:冗餘溫度"); // "Err: REDUNDANT TEMP" - LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("溫度失控"); // "THERMAL RUNAWAY" - LSTR MSG_ERR_MAXTEMP = _UxGT("錯誤:最高溫度"); // "Err: MAXTEMP" - LSTR MSG_ERR_MINTEMP = _UxGT("錯誤:最低溫度"); // "Err: MINTEMP" - LSTR MSG_HALTED = _UxGT("印表機停機"); // "PRINTER HALTED" - LSTR MSG_PLEASE_RESET = _UxGT("請重置"); // "Please reset" - LSTR MSG_HEATING = _UxGT("加熱中 ..."); // "Heating..." - LSTR MSG_COOLING = _UxGT("冷卻中 ..."); // "Cooling..." - LSTR MSG_BED_HEATING = _UxGT("加熱熱床中 ..."); // "Bed Heating..." - LSTR MSG_BED_COOLING = _UxGT("熱床冷卻中 ..."); // "Bed Cooling..." - LSTR MSG_CHAMBER_HEATING = _UxGT("機箱加熱中 .."); // "Chamber Heating..." - LSTR MSG_CHAMBER_COOLING = _UxGT("機箱冷卻中 ..."); //Chamber Cooling... - LSTR MSG_DELTA_CALIBRATE = _UxGT("⊿校準"); // "Delta Calibration" - LSTR MSG_DELTA_CALIBRATE_X = _UxGT("⊿校準X"); // "Calibrate X" - LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("⊿校準Y"); // "Calibrate Y" - LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("⊿校準Z"); // "Calibrate Z" - LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("⊿校準中心"); // "Calibrate Center" - LSTR MSG_DELTA_SETTINGS = _UxGT("⊿設置"); // "Delta Settings" - LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("⊿自動校準"); // "Auto Calibration" - LSTR MSG_DELTA_DIAG_ROD = _UxGT("⊿斜柱"); // "Diag Rod" - LSTR MSG_DELTA_HEIGHT = _UxGT("⊿高度"); // "Height" - LSTR MSG_DELTA_RADIUS = _UxGT("⊿半徑"); // "Radius" - LSTR MSG_INFO_MENU = _UxGT("關於印表機"); // "About Printer" - LSTR MSG_INFO_PRINTER_MENU = _UxGT("印表機訊息"); // "Printer Info" - LSTR MSG_3POINT_LEVELING = _UxGT("三點調平"); // "3-Point Leveling" - LSTR MSG_LINEAR_LEVELING = _UxGT("線性調平"); // "Linear Leveling" - LSTR MSG_BILINEAR_LEVELING = _UxGT(" 雙線性調平"); // "Bilinear Leveling" - LSTR MSG_UBL_LEVELING = _UxGT("統一熱床調平(UBL)"); // "Unified Bed Leveling" - LSTR MSG_MESH_LEVELING = _UxGT("網格調平"); // "Mesh Leveling" - LSTR MSG_INFO_STATS_MENU = _UxGT("印表機統計"); // "Printer Stats" - LSTR MSG_INFO_BOARD_MENU = _UxGT("主板訊息"); // "Board Info" - LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("溫度計"); // "Thermistors" - LSTR MSG_INFO_EXTRUDERS = _UxGT(" 擠出機"); // "Extruders" - LSTR MSG_INFO_BAUDRATE = _UxGT("傳輸率"); // "Baud" - LSTR MSG_INFO_PROTOCOL = _UxGT("協議"); // "Protocol" - LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("監測溫度失控:關"); // "Runaway Watch: OFF" - LSTR MSG_INFO_RUNAWAY_ON = _UxGT("監測溫度失控:開"); // "Runaway Watch: ON" - - LSTR MSG_CASE_LIGHT = _UxGT("外殼燈"); // "Case light" - LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("燈亮度"); // "Light BRIGHTNESS" - LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("打印機不正確"); // "The printer is incorrect" - - LSTR MSG_INFO_PRINT_COUNT = _UxGT("列印數"); // "Prints" - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("完成"); // "Completed" - LSTR MSG_INFO_PRINT_TIME = _UxGT("總共"); // "Total" - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("最長"); // "Longest" - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("已擠出"); // "Extruded" - - LSTR MSG_INFO_MIN_TEMP = _UxGT("最低溫度"); // "Min Temp" - LSTR MSG_INFO_MAX_TEMP = _UxGT("最高溫度"); // "Max Temp" - LSTR MSG_INFO_PSU = _UxGT("電源供應"); // "Power Supply" - LSTR MSG_DRIVE_STRENGTH = _UxGT("驅動力度"); // "Drive Strength" - LSTR MSG_DAC_PERCENT_N = _UxGT("@ 驅動 %"); //E Driver % - LSTR MSG_ERROR_TMC = _UxGT("TMC連接錯誤"); // "TMC CONNECTION ERROR" - LSTR MSG_DAC_EEPROM_WRITE = _UxGT("保存驅動設置"); // "DAC EEPROM Write" - LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("更換絲料"); // "FILAMENT CHANGE" - LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("列印已暫停"); // "PRINT PAUSED" - LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("裝載絲料"); // "LOAD FILAMENT" - LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("卸載絲料"); // "UNLOAD FILAMENT" - LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("恢複選項:"); // "RESUME OPTIONS:" - LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("清除更多"); // "Purge more" - LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("恢復列印"); // "Resume print" - LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" 噴嘴: "); // " Nozzle: " - LSTR MSG_RUNOUT_SENSOR = _UxGT("斷絲偵測"); // "Runout Sensor" - LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("絲距離mm"); // "Runout Dist mm" - LSTR MSG_KILL_HOMING_FAILED = _UxGT("歸原位失敗"); // "Homing failed" - LSTR MSG_LCD_PROBING_FAILED = _UxGT("探針探測失敗"); // "Probing failed" - - // - // Filament Change screens show up to 2 lines on a 3-line display - // - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("按下繼續..")); // "Click to continue" - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("停車中 ...")); // "Parking..." - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("請等待 ...")); // "Please wait..." - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("插入並點擊")); // "Insert and Click" - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("按下加熱..")); // "Click to heat" - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("加熱中 ...")); // "Heating..." - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("退出中 ...")); // "Ejecting..." - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("載入中 ...")); // "Loading..." - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("清除中 ...")); // "Purging..." - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("按下完成..")); // "Click to finish" - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("恢復中 ...")); // "Resuming..." - - LSTR MSG_SHORT_DAY = _UxGT("天"); // "d" // One character only - LSTR MSG_SHORT_HOUR = _UxGT("時"); // "h" // One character only - LSTR MSG_SHORT_MINUTE = _UxGT("分"); // "m" // One character only + LSTR WELCOME_MSG = MACHINE_NAME_SUBST _UxGT("已就緒."); // (MACHINE_NAME_SUBST) Ready. + LSTR MSG_MEDIA_INSERTED = _UxGT("記憶卡已插入"); // (MEDIA_TYPE_EN) Inserted + LSTR MSG_MEDIA_REMOVED = _UxGT("記憶卡被拔出"); // (MEDIA_TYPE_EN) Removed + LSTR MSG_LCD_ENDSTOPS = _UxGT("擋塊"); // Endstops + LSTR MSG_MAIN_MENU = _UxGT("主選單"); // Main Menu + LSTR MSG_DISABLE_STEPPERS = _UxGT("關閉步進馬達"); // Disable Steppers + LSTR MSG_AUTO_HOME = _UxGT("自動回原點"); // Auto Home + LSTR MSG_AUTO_HOME_X = _UxGT("回X原點"); // Home X + LSTR MSG_AUTO_HOME_Y = _UxGT("回Y原點"); // Home Y + LSTR MSG_AUTO_HOME_Z = _UxGT("回Z原點"); // Home Z + LSTR MSG_LEVEL_BED_HOMING = _UxGT("平台調平XYZ歸原點"); // Homing XYZ + LSTR MSG_LEVEL_BED_WAITING = _UxGT("單擊開始熱床調平"); // Click to Begin + LSTR MSG_LEVEL_BED_NEXT_POINT = _UxGT("下個熱床調平點"); // Next Point + LSTR MSG_LEVEL_BED_DONE = _UxGT("完成熱床調平"); // Leveling Done! + LSTR MSG_SET_HOME_OFFSETS = _UxGT("設置原點偏移"); // Set Home Offsets + LSTR MSG_HOME_OFFSETS_APPLIED = _UxGT("偏移已啟用"); // Offsets Applied + LSTR MSG_PREHEAT_1 = _UxGT("預熱 ") PREHEAT_1_LABEL; // Preheat (PREHEAT_1_LABEL) + LSTR MSG_PREHEAT_1_H = _UxGT("預熱 ") PREHEAT_1_LABEL " ~"; // Preheat (PREHEAT_1_LABEL) ~ + LSTR MSG_PREHEAT_1_END = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴"); // Preheat (PREHEAT_1_LABEL) End + LSTR MSG_PREHEAT_1_END_E = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 噴嘴 ~"); // Preheat (PREHEAT_1_LABEL) End ~ + LSTR MSG_PREHEAT_1_ALL = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 全部"); // Preheat (PREHEAT_1_LABEL) All + LSTR MSG_PREHEAT_1_BEDONLY = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 熱床"); // Preheat (PREHEAT_1_LABEL) Bed + LSTR MSG_PREHEAT_1_SETTINGS = _UxGT("預熱 ") PREHEAT_1_LABEL _UxGT(" 設置"); // Preheat (PREHEAT_1_LABEL) Conf + LSTR MSG_PREHEAT_M = _UxGT("預熱 $"); // Preheat $ + LSTR MSG_PREHEAT_M_H = _UxGT("預熱 $ ~"); // Preheat $ ~ + LSTR MSG_PREHEAT_M_END = _UxGT("預熱 $ 噴嘴"); // Preheat $ End + LSTR MSG_PREHEAT_M_END_E = _UxGT("預熱 $ 噴嘴 ~"); // Preheat $ End ~ + LSTR MSG_PREHEAT_M_ALL = _UxGT("預熱 $ 全部"); // Preheat $ All + LSTR MSG_PREHEAT_M_BEDONLY = _UxGT("預熱 $ 熱床"); // Preheat $ Bed + LSTR MSG_PREHEAT_M_SETTINGS = _UxGT("預熱 $ 設置"); // Preheat $ Conf + LSTR MSG_COOLDOWN = _UxGT("降溫"); // Cooldown + LSTR MSG_SWITCH_PS_ON = _UxGT("電源打開"); // Switch Power On + LSTR MSG_SWITCH_PS_OFF = _UxGT("電源關閉"); // Switch Power Off + LSTR MSG_EXTRUDE = _UxGT("擠出"); // Extrude + LSTR MSG_RETRACT = _UxGT("回縮"); // Retract + LSTR MSG_MOVE_AXIS = _UxGT("移動軸"); // Move Axis + LSTR MSG_PROBE_AND_LEVEL = _UxGT("探測和調平"); // Probe and Level + LSTR MSG_BED_LEVELING = _UxGT("調平熱床"); // Bed Leveling + LSTR MSG_LEVEL_BED = _UxGT("調平熱床"); // Level Bed + LSTR MSG_MOVE_X = _UxGT("移動X"); // Move X + LSTR MSG_MOVE_Y = _UxGT("移動Y"); // Move Y + LSTR MSG_MOVE_Z = _UxGT("移動Z"); // Move Z + LSTR MSG_MOVE_N = _UxGT("移動Q"); // Move @ + LSTR MSG_MOVE_E = _UxGT("擠出機"); // Move Extruder + LSTR MSG_MOVE_EN = _UxGT("擠出機 *"); // Move * + LSTR MSG_MOVE_N_MM = _UxGT("移動 $mm"); // Move $mm + LSTR MSG_MOVE_N_IN = _UxGT("移動 $in"); // Move $in + LSTR MSG_MOVE_N_DEG = _UxGT("移動 $") LCD_STR_DEGREE; // Move $(LCD_STR_DEGREE) + LSTR MSG_SPEED = _UxGT("速率"); // Speed + LSTR MSG_MESH_Z_OFFSET = _UxGT("熱床Z"); // Bed Z + LSTR MSG_NOZZLE = " " LCD_STR_THERMOMETER _UxGT(" 噴嘴"); // Nozzle + LSTR MSG_NOZZLE_N = " " LCD_STR_THERMOMETER _UxGT(" 噴嘴 ~"); // Nozzle ~ + LSTR MSG_BED = " " LCD_STR_THERMOMETER _UxGT(" 熱床"); // Bed + LSTR MSG_FAN_SPEED = _UxGT("風扇速率"); // Fan Speed + LSTR MSG_FAN_SPEED_N = _UxGT("風扇速率 {"); // Fan Speed ~ + LSTR MSG_FLOW = _UxGT("擠出速率"); // Flow + LSTR MSG_FLOW_N = _UxGT("擠出速率 ~"); // Flow ~ + LSTR MSG_CONTROL = _UxGT("控制"); // Control + LSTR MSG_AUTOTEMP = _UxGT("自動控溫"); // Autotemp + LSTR MSG_SELECT_E = _UxGT("選擇 *"); // Select * + LSTR MSG_ACC = _UxGT("加速度"); // Accel + LSTR MSG_VTRAV_MIN = _UxGT("最小移動速率"); // Min Travel Speed + LSTR MSG_ACCELERATION = _UxGT("加速度"); // Acceleration + LSTR MSG_AMAX_A = _UxGT("最大列印加速度") STR_A; // Max (STR_A) Accel + LSTR MSG_AMAX_B = _UxGT("最大列印加速度") STR_B; // Max (STR_B) Accel + LSTR MSG_AMAX_C = _UxGT("最大列印加速度") STR_C; // Max (STR_C) Accel + LSTR MSG_AMAX_N = _UxGT("最大列印加速度@"); // Max @ Accel + LSTR MSG_AMAX_E = _UxGT("最大列印加速度E"); // Max E Accel + LSTR MSG_AMAX_EN = _UxGT("最大列印加速度 *"); // Max * Accel + LSTR MSG_A_RETRACT = _UxGT("回縮加速度"); // Retract Accel + LSTR MSG_A_TRAVEL = _UxGT("非列印移動加速度"); // Travel Accel + LSTR MSG_STEPS_PER_MM = _UxGT("軸步數/mm"); // Steps/mm + LSTR MSG_A_STEPS = STR_A _UxGT(" 軸步數/mm"); // (STR_A) Steps/mm + LSTR MSG_B_STEPS = STR_B _UxGT(" 軸步數/mm"); // (STR_B) Steps/mm + LSTR MSG_C_STEPS = STR_C _UxGT(" 軸步數/mm"); // (STR_C) Steps/mm + LSTR MSG_N_STEPS = _UxGT("@ 軸步數/mm"); // @ steps/mm + LSTR MSG_E_STEPS = _UxGT("擠出機步數/mm"); // E steps/mm + LSTR MSG_EN_STEPS = _UxGT("擠出機~步數/mm"); // * Steps/mm + LSTR MSG_TEMPERATURE = _UxGT("溫度"); // Temperature + LSTR MSG_MOTION = _UxGT("運作"); // Motion + LSTR MSG_FILAMENT = _UxGT("絲料測容"); // Filament + LSTR MSG_VOLUMETRIC_ENABLED = _UxGT("測容積mm") SUPERSCRIPT_THREE; // E in mm(SUPERSCRIPT_THREE) + LSTR MSG_FILAMENT_DIAM = _UxGT("絲料直徑"); // Fil. Dia. + LSTR MSG_FILAMENT_DIAM_E = _UxGT("絲料直徑 *"); // Fil. Dia. * + LSTR MSG_CONTRAST = _UxGT("LCD對比度"); // LCD Contrast + LSTR MSG_STORE_EEPROM = _UxGT("保存設置"); // Store Settings + LSTR MSG_LOAD_EEPROM = _UxGT("載入設置"); // Load Settings + LSTR MSG_RESTORE_DEFAULTS = _UxGT("恢復安全值"); // Restore Defaults + LSTR MSG_REFRESH = _UxGT("刷新"); // (LCD_STR_REFRESH)Refresh + LSTR MSG_INFO_SCREEN = _UxGT("資訊界面"); // Info Screen + LSTR MSG_PREPARE = _UxGT("準備"); // Prepare + LSTR MSG_TUNE = _UxGT("調整"); // Tune + LSTR MSG_PAUSE_PRINT = _UxGT("暫停列印"); // Pause Print + LSTR MSG_RESUME_PRINT = _UxGT("恢復列印"); // Resume Print + LSTR MSG_STOP_PRINT = _UxGT("停止列印"); // Stop Print + LSTR MSG_MEDIA_MENU = _UxGT("從記憶卡上列印"); // (MEDIA_TYPE_EN) Print + LSTR MSG_NO_MEDIA = _UxGT("無記憶卡"); // No (MEDIA_TYPE_EN) Detected + LSTR MSG_DWELL = _UxGT("休眠 ..."); // Sleep... + LSTR MSG_USERWAIT = _UxGT("點擊繼續 ..."); // Click to Resume... + LSTR MSG_PRINT_ABORTED = _UxGT("已取消列印"); // Print Aborted + LSTR MSG_NO_MOVE = _UxGT("無移動"); // No Move. + LSTR MSG_KILLED = _UxGT("已砍掉"); // KILLED. + LSTR MSG_STOPPED = _UxGT("已停止"); // STOPPED. + LSTR MSG_CONTROL_RETRACT = _UxGT("回縮長度mm"); // Retract mm + LSTR MSG_CONTROL_RETRACT_SWAP = _UxGT("換手回抽長度mm"); // Swap Re.mm + LSTR MSG_CONTROL_RETRACTF = _UxGT("回縮速率mm/s"); // Retract V + LSTR MSG_CONTROL_RETRACT_ZHOP = _UxGT("Hop mm"); // Hop mm + LSTR MSG_CONTROL_RETRACT_RECOVER = _UxGT("回縮恢復長度mm"); // Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAP = _UxGT("換手回縮恢復長度mm"); // S Unretr. mm + LSTR MSG_CONTROL_RETRACT_RECOVERF = _UxGT("回縮恢復後進料速率mm/s"); // Unretract V + LSTR MSG_AUTORETRACT = _UxGT("自動回縮"); // Auto-Retract + LSTR MSG_FILAMENTCHANGE = _UxGT("更換絲料"); // Change Filament + LSTR MSG_FILAMENTCHANGE_E = _UxGT("更換絲料 *"); // Change * Filament + LSTR MSG_ATTACH_MEDIA = _UxGT("連接記憶卡"); // Attach (MEDIA_TYPE_EN) + LSTR MSG_ATTACH_SD = _UxGT("挂载記憶卡"); // Attach SD Card + LSTR MSG_ATTACH_USB = _UxGT("挂载隨身碟"); // Attach USB Drive + LSTR MSG_CHANGE_MEDIA = _UxGT("更換記憶卡"); // Refresh (MEDIA_TYPE_EN) + LSTR MSG_RUN_AUTOFILES = _UxGT("自動開始"); // Run Autofiles + LSTR MSG_ZPROBE_OUT = _UxGT("Z探針在熱床之外"); // Z Probe Past Bed + LSTR MSG_BLTOUCH_RESET = _UxGT("重置BLTouch"); // Reset + LSTR MSG_ZPROBE_XOFFSET = _UxGT("探針X偏移量"); // Probe X Offset + LSTR MSG_ZPROBE_YOFFSET = _UxGT("探針Y偏移量"); // Probe Y Offset + LSTR MSG_ZPROBE_ZOFFSET = _UxGT("探針Z偏移量"); // Probe Z Offset + LSTR MSG_ZPROBE_OFFSET_N = _UxGT("探針@偏移量"); // Probe @ Offset + LSTR MSG_BABYSTEP_PROBE_Z = _UxGT("逐步調整Z"); // Babystep Probe Z + LSTR MSG_BABYSTEP_X = _UxGT("微量調整X軸"); // Babystep X + LSTR MSG_BABYSTEP_Y = _UxGT("微量調整Y軸"); // Babystep Y + LSTR MSG_BABYSTEP_Z = _UxGT("微量調整Z軸"); // Babystep Z + LSTR MSG_ENDSTOP_ABORT = _UxGT("擋塊終止"); // Endstop Abort + LSTR MSG_ERR_HEATING_FAILED = _UxGT("加熱失敗"); // Heating Failed + LSTR MSG_ERR_REDUNDANT_TEMP = _UxGT("錯誤:冗餘溫度"); // Err: REDUNDANT TEMP + LSTR MSG_ERR_THERMAL_RUNAWAY = _UxGT("溫度失控"); // THERMAL RUNAWAY + LSTR MSG_ERR_MAXTEMP = _UxGT("錯誤:最高溫度"); // Err: MAXTEMP + LSTR MSG_ERR_MINTEMP = _UxGT("錯誤:最低溫度"); // Err: MINTEMP + LSTR MSG_HALTED = _UxGT("印表機停機"); // PRINTER HALTED + LSTR MSG_PLEASE_RESET = _UxGT("請重置"); // Please Reset + LSTR MSG_HEATING = _UxGT("加熱中 ..."); // Heating... + LSTR MSG_BED_HEATING = _UxGT("加熱熱床中 ..."); // Bed Heating... + LSTR MSG_DELTA_CALIBRATE = _UxGT("⊿校準"); // Delta Calibration + LSTR MSG_DELTA_CALIBRATE_X = _UxGT("⊿校準X"); // Calibrate X + LSTR MSG_DELTA_CALIBRATE_Y = _UxGT("⊿校準Y"); // Calibrate Y + LSTR MSG_DELTA_CALIBRATE_Z = _UxGT("⊿校準Z"); // Calibrate Z + LSTR MSG_DELTA_CALIBRATE_CENTER = _UxGT("⊿校準中心"); // Calibrate Center + LSTR MSG_INFO_MENU = _UxGT("關於印表機"); // About Printer + LSTR MSG_INFO_PRINTER_MENU = _UxGT("印表機訊息"); // Printer Info + LSTR MSG_INFO_STATS_MENU = _UxGT("印表機統計"); // Stats + LSTR MSG_INFO_BOARD_MENU = _UxGT("主板訊息"); // Board Info + LSTR MSG_INFO_THERMISTOR_MENU = _UxGT("溫度計"); // Thermistors + LSTR MSG_INFO_EXTRUDERS = _UxGT(" 擠出機"); // Extruders + LSTR MSG_INFO_BAUDRATE = _UxGT("傳輸率"); // Baud + LSTR MSG_INFO_PROTOCOL = _UxGT("協議"); // Protocol + LSTR MSG_CASE_LIGHT = _UxGT("外殼燈"); // Case Light + LSTR MSG_INFO_PRINT_COUNT = _UxGT("列印數"); // Prints + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("完成"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("總共"); // Total + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("最長"); // Longest + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("已擠出"); // Extruded + LSTR MSG_INFO_MIN_TEMP = _UxGT("最低溫度"); // Min Temp + LSTR MSG_INFO_MAX_TEMP = _UxGT("最高溫度"); // Max Temp + LSTR MSG_INFO_PSU = _UxGT("電源供應"); // PSU + LSTR MSG_DRIVE_STRENGTH = _UxGT("驅動力度"); // Drive Strength + LSTR MSG_DAC_EEPROM_WRITE = _UxGT("保存驅動設置"); // DAC EEPROM Write + LSTR MSG_FILAMENT_CHANGE_OPTION_RESUME = _UxGT("恢復列印"); // Continue + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_1_LINE("請等待 ...")); // |Please wait... + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_1_LINE("插入並點擊")); // |Insert and Click + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_1_LINE("退出中 ...")); // |Ejecting... + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_1_LINE("載入中 ...")); // |Loading... + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_1_LINE("恢復中 ...")); // |Resuming... + LSTR MSG_MIN = " " LCD_STR_THERMOMETER _UxGT(" 最小"); // (LCD_STR_THERMOMETER) Min + LSTR MSG_MAX = " " LCD_STR_THERMOMETER _UxGT(" 最大"); // (LCD_STR_THERMOMETER) Max + LSTR MSG_FACTOR = " " LCD_STR_THERMOMETER _UxGT(" 系數"); // (LCD_STR_THERMOMETER) Fact + LSTR MSG_LCD_ON = _UxGT("開 "); // On + LSTR MSG_LCD_OFF = _UxGT("關 "); // Off + LSTR MSG_KILL_EXPECTED_PRINTER = _UxGT("打印機不正確"); // INCORRECT PRINTER + LSTR MSG_DEBUG_MENU = _UxGT("除錯選單"); // Debug Menu + LSTR MSG_PROGRESS_BAR_TEST = _UxGT("進度條測試"); // Progress Bar Test + LSTR MSG_MOVING = _UxGT("移動 ..."); // Moving... + LSTR MSG_FREE_XY = _UxGT("釋放 XY"); // Free XY + LSTR MSG_HOME_FIRST = _UxGT("歸位 %s 先"); // Home %s First + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_1_LINE("加熱中 ...")); // |Heating... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_1_LINE("按下加熱..")); // |Click to heat + LSTR MSG_YES = _UxGT("是"); // YES + LSTR MSG_NO = _UxGT("否"); // NO + LSTR MSG_BACK = _UxGT("返回"); // Back + LSTR MSG_MEDIA_ABORTING = _UxGT("正在中止..."); // Aborting... + LSTR MSG_MEDIA_READ_ERROR = _UxGT("記憶卡讀取錯誤"); // (MEDIA_TYPE_EN) read error + LSTR MSG_USB_FD_DEVICE_REMOVED = _UxGT("USB裝置已移除"); // USB device removed + LSTR MSG_USB_FD_USB_FAILED = _UxGT("USB啟動失敗"); // USB start failed + LSTR MSG_LCD_SOFT_ENDSTOPS = _UxGT("軟體擋塊"); // Soft Endstops + LSTR MSG_ADVANCED_SETTINGS = _UxGT("進階設置"); // Advanced Settings + LSTR MSG_CONFIGURATION = _UxGT("設置"); // Configuration + LSTR MSG_AUTO_Z_ALIGN = _UxGT("自動Z對齊"); // Auto Z-Align + LSTR MSG_Z_FADE_HEIGHT = _UxGT("淡出高度"); // Fade Height + LSTR MSG_PREHEAT_CUSTOM = _UxGT("自定預熱"); // Preheat Custom + LSTR MSG_LASER_MENU = _UxGT("激光控制"); // Laser Control + LSTR MSG_LASER_POWER = _UxGT("激光電源"); // Laser Power + LSTR MSG_SPINDLE_MENU = _UxGT("主軸控告制"); // Spindle Control + LSTR MSG_SPINDLE_POWER = _UxGT("主軸電源"); // Spindle Pwr + LSTR MSG_SPINDLE_REVERSE = _UxGT("主軸反轉"); // Spindle Reverse + LSTR MSG_BED_TRAMMING = _UxGT("調平邊角"); // Bed Tramming + LSTR MSG_NEXT_CORNER = _UxGT("下個邊角"); // Next Corner + LSTR MSG_MESH_EDITOR = _UxGT("網格編輯器"); // Mesh Editor + LSTR MSG_EDIT_MESH = _UxGT("編輯網格"); // Edit Mesh + LSTR MSG_EDITING_STOPPED = _UxGT("網格編輯已停止"); // Mesh Editing Stopped + LSTR MSG_PROBING_POINT = _UxGT("探測點"); // Probing Point + LSTR MSG_MESH_X = _UxGT("索引 X"); // Index X + LSTR MSG_MESH_Y = _UxGT("索引 Y"); // Index Y + LSTR MSG_MESH_EDIT_Z = _UxGT("Z 值"); // Z Value + LSTR MSG_CUSTOM_COMMANDS = _UxGT("自定命令"); // Custom Commands + LSTR MSG_M48_TEST = _UxGT("M48 探測測試"); // M48 Probe Test + LSTR MSG_M48_POINT = _UxGT("M48 探測點"); // M48 Point + LSTR MSG_M48_DEVIATION = _UxGT("偏差"); // Deviation + LSTR MSG_IDEX_MENU = _UxGT("IDEX Mode"); // IDEX Mode + LSTR MSG_OFFSETS_MENU = _UxGT("Tool Offsets"); // Tool Offsets + LSTR MSG_IDEX_MODE_AUTOPARK = _UxGT("Auto-Park"); // Auto-Park + LSTR MSG_IDEX_MODE_DUPLICATE = _UxGT("Duplication"); // Duplication + LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Mirrored Copy"); // Mirrored Copy + LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Full Control"); // Full Control + LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2nd Nozzle Z"); // 2nd Nozzle Z + LSTR MSG_HOTEND_OFFSET_N = _UxGT("2nd Nozzle @"); // 2nd Nozzle @ + LSTR MSG_UBL_DOING_G29 = _UxGT("執行G29"); // Doing G29 + LSTR MSG_UBL_TOOLS = _UxGT("UBL工具"); // UBL Tools + LSTR MSG_LCD_TILTING_MESH = _UxGT("傾斜點"); // Tilting Point + LSTR MSG_UBL_MANUAL_MESH = _UxGT("手工建網"); // Manually Build Mesh + LSTR MSG_UBL_BC_INSERT = _UxGT("放置墊片並測量"); // Place Shim & Measure + LSTR MSG_UBL_BC_INSERT2 = _UxGT("測量"); // Measure + LSTR MSG_UBL_BC_REMOVE = _UxGT("移除並測量熱床"); // Remove & Measure Bed + LSTR MSG_UBL_MOVING_TO_NEXT = _UxGT("移動到下一個"); // Moving to next + LSTR MSG_UBL_SET_TEMP_BED = _UxGT("置設熱床溫度"); // Bed Temp + LSTR MSG_UBL_BED_TEMP_CUSTOM = _UxGT("置設熱床溫度"); // Bed Temp + LSTR MSG_UBL_SET_TEMP_HOTEND = _UxGT("置設噴嘴溫度"); // Hotend Temp + LSTR MSG_UBL_HOTEND_TEMP_CUSTOM = _UxGT("熱端溫度"); // Hotend Temp + LSTR MSG_UBL_EDIT_CUSTOM_MESH = _UxGT("編輯客戶網格"); // Edit Custom Mesh + LSTR MSG_UBL_FINE_TUNE_MESH = _UxGT("細調網格"); // Fine Tuning Mesh + LSTR MSG_UBL_DONE_EDITING_MESH = _UxGT("完成編輯網格"); // Done Editing Mesh + LSTR MSG_UBL_BUILD_CUSTOM_MESH = _UxGT("創設客戶網格"); // Build Custom Mesh + LSTR MSG_UBL_BUILD_MESH_MENU = _UxGT("創設網格"); // Build Mesh + LSTR MSG_UBL_BUILD_MESH_M = _UxGT("創設 $ 網格"); // Build Mesh ($) + LSTR MSG_UBL_VALIDATE_MESH_M = _UxGT("批准 $ 網格"); // Validate Mesh ($) + LSTR MSG_UBL_BUILD_COLD_MESH = _UxGT("創設冷網格"); // Build Cold Mesh + LSTR MSG_UBL_MESH_HEIGHT_ADJUST = _UxGT("調整網格高度"); // Adjust Mesh Height + LSTR MSG_UBL_MESH_HEIGHT_AMOUNT = _UxGT("高度合計"); // Height Amount + LSTR MSG_UBL_VALIDATE_MESH_MENU = _UxGT("批准網格"); // Validate Mesh + LSTR MSG_UBL_VALIDATE_CUSTOM_MESH = _UxGT("批准客戶網格"); // Validate Custom Mesh + LSTR MSG_G26_HEATING_BED = _UxGT("G26 加熱熱床"); // G26 Heating Bed + LSTR MSG_G26_HEATING_NOZZLE = _UxGT("G26 加熱噴嘴"); // G26 Heating Nozzle + LSTR MSG_G26_MANUAL_PRIME = _UxGT("手動填裝"); // Manual priming... + LSTR MSG_G26_FIXED_LENGTH = _UxGT("固定距離填裝"); // Fixed Length Prime + LSTR MSG_G26_PRIME_DONE = _UxGT("完成填裝"); // Done Priming + LSTR MSG_G26_CANCELED = _UxGT("G26已取消"); // G26 Canceled + LSTR MSG_G26_LEAVING = _UxGT("離開 G26"); // Leaving G26 + LSTR MSG_UBL_CONTINUE_MESH = _UxGT("繼續熱床網格"); // Continue Bed Mesh + LSTR MSG_UBL_MESH_LEVELING = _UxGT("網格調平"); // Mesh Leveling + LSTR MSG_UBL_3POINT_MESH_LEVELING = _UxGT("三點調平"); // 3-Point Leveling + LSTR MSG_UBL_GRID_MESH_LEVELING = _UxGT("格子網格調平"); // Grid Mesh Leveling + LSTR MSG_UBL_MESH_LEVEL = _UxGT("調平網格"); // Level Mesh + LSTR MSG_UBL_SIDE_POINTS = _UxGT("邊點"); // Side Points + LSTR MSG_UBL_MAP_TYPE = _UxGT("圖類型"); // Map Type + LSTR MSG_UBL_OUTPUT_MAP = _UxGT("輸出網格圖"); // Output Mesh Map + LSTR MSG_UBL_OUTPUT_MAP_HOST = _UxGT("輸出到主機"); // Output for Host + LSTR MSG_UBL_OUTPUT_MAP_CSV = _UxGT("輸出到CSV"); // Output for CSV + LSTR MSG_UBL_OUTPUT_MAP_BACKUP = _UxGT("輸出到備份"); // Off Printer Backup + LSTR MSG_UBL_INFO_UBL = _UxGT("輸出UBL信息"); // Output UBL Info + LSTR MSG_UBL_FILLIN_AMOUNT = _UxGT("填充合計"); // Fill-in Amount + LSTR MSG_UBL_MANUAL_FILLIN = _UxGT("手工填充"); // Manual Fill-in + LSTR MSG_UBL_SMART_FILLIN = _UxGT("聰明填充"); // Smart Fill-in + LSTR MSG_UBL_FILLIN_MESH = _UxGT("填充網格"); // Fill-in Mesh + LSTR MSG_UBL_INVALIDATE_ALL = _UxGT("作廢所有的"); // Invalidate All + LSTR MSG_UBL_INVALIDATE_CLOSEST = _UxGT("作廢最近的"); // Invalidate Closest + LSTR MSG_UBL_FINE_TUNE_ALL = _UxGT("細調所有的"); // Fine Tune All + LSTR MSG_UBL_FINE_TUNE_CLOSEST = _UxGT("細調最近的"); // Fine Tune Closest + LSTR MSG_UBL_STORAGE_MESH_MENU = _UxGT("網格存儲"); // Mesh Storage + LSTR MSG_UBL_STORAGE_SLOT = _UxGT("存儲槽"); // Memory Slot + LSTR MSG_UBL_LOAD_MESH = _UxGT("裝載熱床網格"); // Load Bed Mesh + LSTR MSG_UBL_SAVE_MESH = _UxGT("保存熱床網格"); // Save Bed Mesh + LSTR MSG_MESH_LOADED = _UxGT("網格 %i 已裝載"); // Mesh %i Loaded + LSTR MSG_MESH_SAVED = _UxGT("網格 %i 已保存"); // Mesh %i Saved + LSTR MSG_UBL_NO_STORAGE = _UxGT("沒有存儲"); // No Storage + LSTR MSG_UBL_SAVE_ERROR = _UxGT("錯誤: UBL保存"); // UBL Save Error + LSTR MSG_UBL_RESTORE_ERROR = _UxGT("錯誤: UBL還原"); // UBL Restore Error + LSTR MSG_UBL_Z_OFFSET = _UxGT("Z-偏移:"); // Z-Offset: + LSTR MSG_UBL_Z_OFFSET_STOPPED = _UxGT("Z偏移已停止"); // Z-Offset Stopped + LSTR MSG_UBL_STEP_BY_STEP_MENU = _UxGT("一步步UBL"); // Step-By-Step UBL + LSTR MSG_UBL_1_BUILD_COLD_MESH = _UxGT("1. 創設冷網格"); // 1. Build Cold Mesh + LSTR MSG_UBL_2_SMART_FILLIN = _UxGT("2. 聰明填充"); // 2. Smart Fill-in + LSTR MSG_UBL_3_VALIDATE_MESH_MENU = _UxGT("3. 批准網格"); // 3. Validate Mesh + LSTR MSG_UBL_4_FINE_TUNE_ALL = _UxGT("4. 細調所有的"); // 4. Fine Tune All + LSTR MSG_UBL_5_VALIDATE_MESH_MENU = _UxGT("5. 批准網格"); // 5. Validate Mesh + LSTR MSG_UBL_6_FINE_TUNE_ALL = _UxGT("6. 細調所有的"); // 6. Fine Tune All + LSTR MSG_UBL_7_SAVE_MESH = _UxGT("7. 保存熱床網格"); // 7. Save Bed Mesh + LSTR MSG_LED_CONTROL = _UxGT("燈管控制"); // LED Control + LSTR MSG_LIGHTS = _UxGT("燈"); // Lights + LSTR MSG_LIGHT_N = _UxGT("燈 #{"); // Light #{ + LSTR MSG_LED_PRESETS = _UxGT("燈預置"); // Light Presets + LSTR MSG_SET_LEDS_RED = _UxGT("红"); // Red + LSTR MSG_SET_LEDS_ORANGE = _UxGT("橙"); // Orange + LSTR MSG_SET_LEDS_YELLOW = _UxGT("黃"); // Yellow + LSTR MSG_SET_LEDS_GREEN = _UxGT("綠"); // Green + LSTR MSG_SET_LEDS_BLUE = _UxGT("藍"); // Blue + LSTR MSG_SET_LEDS_INDIGO = _UxGT("青"); // Indigo + LSTR MSG_SET_LEDS_VIOLET = _UxGT("紫"); // Violet + LSTR MSG_SET_LEDS_WHITE = _UxGT("白"); // White + LSTR MSG_SET_LEDS_DEFAULT = _UxGT("復歸"); // Default + LSTR MSG_CUSTOM_LEDS = _UxGT("定制燈"); // Custom Lights + LSTR MSG_INTENSITY_R = _UxGT("紅飽和度"); // Red Intensity + LSTR MSG_INTENSITY_G = _UxGT("綠飽和度"); // Green Intensity + LSTR MSG_INTENSITY_B = _UxGT("藍飽和度"); // Blue Intensity + LSTR MSG_INTENSITY_W = _UxGT("白飽和度"); // White Intensity + LSTR MSG_LED_BRIGHTNESS = _UxGT("亮度"); // Brightness + LSTR MSG_HOTEND_TOO_COLD = _UxGT("噴嘴溫度不夠"); // Hotend too cold + LSTR MSG_CHAMBER = _UxGT("Enclosure"); // Enclosure + LSTR MSG_STORED_FAN_N = _UxGT("Stored Fan {"); // Stored Fan ~ + LSTR MSG_EXTRA_FAN_SPEED = _UxGT("額外風扇速率"); // Extra Fan Speed + LSTR MSG_EXTRA_FAN_SPEED_N = _UxGT("額外風扇速率 {"); // Extra Fan Speed ~ + LSTR MSG_JERK = _UxGT("抖動速率"); // Jerk + LSTR MSG_VA_JERK = _UxGT("軸抖動速率") STR_A; // Max (STR_A) Jerk + LSTR MSG_VB_JERK = _UxGT("軸抖動速率") STR_B; // Max (STR_B) Jerk + LSTR MSG_VC_JERK = _UxGT("軸抖動速率") STR_C; // Max (STR_C) Jerk + LSTR MSG_VN_JERK = _UxGT("軸抖動速率@"); // Max @ Jerk + LSTR MSG_VE_JERK = _UxGT("擠出機抖動速率"); // Max E Jerk + LSTR MSG_MAX_SPEED = _UxGT("速度"); // Max Speed (mm/s) + LSTR MSG_VMAX_A = _UxGT("最大進料速率") STR_A; // Max (STR_A) Speed + LSTR MSG_VMAX_B = _UxGT("最大進料速率") STR_B; // Max (STR_B) Speed + LSTR MSG_VMAX_C = _UxGT("最大進料速率") STR_C; // Max (STR_C) Speed + LSTR MSG_VMAX_N = _UxGT("最大進料速率@"); // Max @ Speed + LSTR MSG_VMAX_E = _UxGT("最大進料速率E"); // Max E Speed + LSTR MSG_VMAX_EN = _UxGT("最大進料速率 *"); // Max * Speed + LSTR MSG_VMIN = _UxGT("最小進料速率"); // Min Velocity + LSTR MSG_FILAMENT_UNLOAD = _UxGT("卸載 mm"); // Unload mm + LSTR MSG_FILAMENT_LOAD = _UxGT("装載 mm"); // Load mm + LSTR MSG_ADVANCE_K = _UxGT("Advance K"); // Advance K + LSTR MSG_ADVANCE_K_E = _UxGT("Advance K *"); // Advance K * + LSTR MSG_INIT_EEPROM = _UxGT("初始化設置"); // Initialize EEPROM + LSTR MSG_MEDIA_UPDATE = _UxGT("媒體更新"); // (MEDIA_TYPE_EN) Update + LSTR MSG_RESET_PRINTER = _UxGT("重置打印機"); // Reset Printer + LSTR MSG_START_PRINT = _UxGT("開始列印"); // Start Print + LSTR MSG_BUTTON_NEXT = _UxGT("下一個"); // Next + LSTR MSG_BUTTON_INIT = _UxGT("初始 "); // Init + LSTR MSG_BUTTON_STOP = _UxGT("停止 "); // Stop + LSTR MSG_BUTTON_PRINT = _UxGT("列印 "); // Print + LSTR MSG_BUTTON_RESET = _UxGT("復歸 "); // Reset + LSTR MSG_BUTTON_CANCEL = _UxGT("放棄 "); // Cancel + LSTR MSG_BUTTON_DONE = _UxGT("確認 "); // Done + LSTR MSG_BUTTON_BACK = _UxGT("返回 "); // Back + LSTR MSG_BUTTON_PROCEED = _UxGT("繼續 "); // Proceed + LSTR MSG_PRINTING_OBJECT = _UxGT("列印物件"); // Print Obj + LSTR MSG_CANCEL_OBJECT = _UxGT("中止物件"); // Cancel Obj + LSTR MSG_CANCEL_OBJECT_N = _UxGT("中止物件 {"); // Cancel Obj { + LSTR MSG_OUTAGE_RECOVERY = _UxGT("中斷恢復"); // Power Outage + LSTR MSG_PRINT_PAUSED = _UxGT("列印已暫停"); // Print Paused + LSTR MSG_PRINTING = _UxGT("列印中 ..."); // Printing... + LSTR MSG_CONTROL_RETRACT_RECOVER_SWAPF = _UxGT("S UnRet V"); // S UnRet V + LSTR MSG_FILAMENT_SWAP_LENGTH = _UxGT("交換長度"); // Swap Length + LSTR MSG_FILAMENT_PURGE_LENGTH = _UxGT("清除長度"); // Purge Length + LSTR MSG_TOOL_CHANGE = _UxGT("交換工具"); // Tool Change + LSTR MSG_TOOL_CHANGE_ZLIFT = _UxGT("Z軸提昇"); // Z Raise + LSTR MSG_SINGLENOZZLE_PRIME_SPEED = _UxGT("最高速度"); // Prime Speed + LSTR MSG_SINGLENOZZLE_RETRACT_SPEED = _UxGT("收回速度"); // Retract Speed + LSTR MSG_NOZZLE_STANDBY = _UxGT("噴嘴待機"); // Nozzle Standby + LSTR MSG_FILAMENTLOAD = _UxGT("裝載絲料"); // Load Filament + LSTR MSG_FILAMENTLOAD_E = _UxGT("裝載絲料 *"); // Load * Filament + LSTR MSG_FILAMENTUNLOAD = _UxGT("卸載絲料"); // Unload Filament + LSTR MSG_FILAMENTUNLOAD_E = _UxGT("卸載絲料 *"); // Unload * Filament + LSTR MSG_FILAMENTUNLOAD_ALL = _UxGT("卸載全部"); // Unload All + LSTR MSG_RELEASE_MEDIA = _UxGT("釋放媒體"); // Release (MEDIA_TYPE_EN) + LSTR MSG_SKEW_FACTOR = _UxGT("偏斜因數"); // Skew Factor + LSTR MSG_BLTOUCH_SELFTEST = _UxGT("BLTouch 自檢"); // Self-Test + LSTR MSG_BLTOUCH_STOW = _UxGT("裝載BLTouch"); // Stow + LSTR MSG_BLTOUCH_DEPLOY = _UxGT("部署BLTouch"); // Deploy + LSTR MSG_BABYSTEP_TOTAL = _UxGT("總計"); // Total + LSTR MSG_COOLING = _UxGT("冷卻中 ..."); // Cooling... + LSTR MSG_BED_COOLING = _UxGT("熱床冷卻中 ..."); // Bed Cooling... + LSTR MSG_CHAMBER_HEATING = _UxGT("機箱加熱中 .."); // Chamber Heating... + LSTR MSG_CHAMBER_COOLING = _UxGT("機箱冷卻中 ..."); // Chamber Cooling... + LSTR MSG_DELTA_SETTINGS = _UxGT("⊿設置"); // Delta Settings + LSTR MSG_DELTA_AUTO_CALIBRATE = _UxGT("⊿自動校準"); // Auto Calibration + LSTR MSG_DELTA_DIAG_ROD = _UxGT("⊿斜柱"); // Diag Rod + LSTR MSG_DELTA_HEIGHT = _UxGT("⊿高度"); // Height + LSTR MSG_DELTA_RADIUS = _UxGT("⊿半徑"); // Radius + LSTR MSG_3POINT_LEVELING = _UxGT("三點調平"); // 3-Point Leveling + LSTR MSG_LINEAR_LEVELING = _UxGT("線性調平"); // Linear Leveling + LSTR MSG_BILINEAR_LEVELING = _UxGT(" 雙線性調平"); // Bilinear Leveling + LSTR MSG_UBL_LEVELING = _UxGT("統一熱床調平(UBL)"); // Unified Bed Leveling + LSTR MSG_MESH_LEVELING = _UxGT("網格調平"); // Mesh Leveling + LSTR MSG_INFO_RUNAWAY_OFF = _UxGT("監測溫度失控:關"); // Runaway Watch: OFF + LSTR MSG_INFO_RUNAWAY_ON = _UxGT("監測溫度失控:開"); // Runaway Watch: ON + LSTR MSG_CASE_LIGHT_BRIGHTNESS = _UxGT("燈亮度"); // Light Brightness + LSTR MSG_DAC_PERCENT_N = _UxGT("@ 驅動 %"); // @ Driver % + LSTR MSG_ERROR_TMC = _UxGT("TMC連接錯誤"); // TMC CONNECTION ERROR + LSTR MSG_FILAMENT_CHANGE_HEADER = _UxGT("更換絲料"); // FILAMENT CHANGE + LSTR MSG_FILAMENT_CHANGE_HEADER_PAUSE = _UxGT("列印已暫停"); // PRINT PAUSED + LSTR MSG_FILAMENT_CHANGE_HEADER_LOAD = _UxGT("裝載絲料"); // LOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_HEADER_UNLOAD = _UxGT("卸載絲料"); // UNLOAD FILAMENT + LSTR MSG_FILAMENT_CHANGE_OPTION_HEADER = _UxGT("恢複選項:"); // RESUME OPTIONS: + LSTR MSG_FILAMENT_CHANGE_OPTION_PURGE = _UxGT("清除更多"); // Purge more + LSTR MSG_FILAMENT_CHANGE_NOZZLE = _UxGT(" 噴嘴: "); // Nozzle: + LSTR MSG_RUNOUT_SENSOR = _UxGT("斷絲偵測"); // Runout Sensor + LSTR MSG_RUNOUT_DISTANCE_MM = _UxGT("絲距離mm"); // Runout Dist mm + LSTR MSG_KILL_HOMING_FAILED = _UxGT("歸原位失敗"); // Homing Failed + LSTR MSG_LCD_PROBING_FAILED = _UxGT("探針探測失敗"); // Probing Failed + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_1_LINE("按下繼續..")); // |Click to continue + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("停車中 ...")); // |Parking... + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_1_LINE("清除中 ...")); // |Purging... + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_1_LINE("按下完成..")); // |Click to finish + LSTR MSG_ERR_EEPROM_CRC = _UxGT("錯誤: EEPROM CRC"); // Err: EEPROM CRC + LSTR MSG_ERR_EEPROM_SIZE = _UxGT("錯誤: EEPROM 尺寸"); // Err: EEPROM Size + LSTR MSG_ERR_EEPROM_VERSION = _UxGT("錯誤: EEPROM 版本"); // Err: EEPROM Version + LSTR MSG_ZPROBE_OFFSETS = _UxGT("探針偏移"); // Probe Offsets + LSTR MSG_SHORT_DAY = _UxGT("天"); // d + LSTR MSG_SHORT_HOUR = _UxGT("時"); // h + LSTR MSG_SHORT_MINUTE = _UxGT("分"); // m } namespace LanguageWide_zh_TW { using namespace LanguageNarrow_zh_TW; - #if LCD_WIDTH >= 20 || HAS_DWIN_E3V2 - LSTR MSG_INFO_PRINT_COUNT = _UxGT("列印計數"); // "Print Count" - LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("已完成"); // "Completed" - LSTR MSG_INFO_PRINT_TIME = _UxGT("總列印時間"); // "Total print time" - LSTR MSG_INFO_PRINT_LONGEST = _UxGT("最長工作時間"); // "Longest job time" - LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("總計擠出"); // "Extruded total" + #if LCD_WIDTH > 20 || HAS_DWIN_E3V2 + LSTR MSG_INFO_PRINT_COUNT = _UxGT("列印計數"); // Print Count + LSTR MSG_INFO_COMPLETED_PRINTS = _UxGT("已完成"); // Completed + LSTR MSG_INFO_PRINT_TIME = _UxGT("總列印時間"); // Print Time + LSTR MSG_INFO_PRINT_LONGEST = _UxGT("最長工作時間"); // Longest Job Time + LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("總計擠出"); // Extruded Total #endif } @@ -491,17 +470,17 @@ namespace LanguageTall_zh_TW { using namespace LanguageWide_zh_TW; #if LCD_HEIGHT >= 4 // Filament Change screens show up to 3 lines on a 4-line display - LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("按下按鈕", "恢復列印")); //"Press Button to resume print" - LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("停車中 ...")); // "Parking..." - LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("等待開始", "絲料", "變更")); // "Wait for start of the filament change" - LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("等待", "卸下絲料")); // "Wait for filament unload" - LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("插入絲料", "並按鍵", "繼續 ...")); // "Insert filament and press button to continue..." - LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("按下按鈕", "加熱噴嘴.")); // "Press button to heat nozzle." - LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("加熱噴嘴", "請等待 ...")); // "Heating nozzle Please wait..." - LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("等待", "進料")); // "Wait for filament load" - LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("等待", "絲料清除")); // "Wait for filament purge" - LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("按下完成","絲料清除")); //"Press button to filament purge" - LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("等待列印", "恢復")); // "Wait for print to resume" + LSTR MSG_FILAMENT_CHANGE_INIT = _UxGT(MSG_3_LINE("等待開始", "絲料", "變更")); // |Wait for|filament change|to start + LSTR MSG_FILAMENT_CHANGE_INSERT = _UxGT(MSG_3_LINE("插入絲料", "並按鍵", "繼續 ...")); // |Insert filament|and press button|to continue + LSTR MSG_FILAMENT_CHANGE_UNLOAD = _UxGT(MSG_2_LINE("等待", "卸下絲料")); // |Wait for|filament unload + LSTR MSG_FILAMENT_CHANGE_LOAD = _UxGT(MSG_2_LINE("等待", "進料")); // |Wait for|filament load + LSTR MSG_FILAMENT_CHANGE_RESUME = _UxGT(MSG_2_LINE("等待列印", "恢復")); // |Wait for print|to resume... + LSTR MSG_FILAMENT_CHANGE_HEATING = _UxGT(MSG_2_LINE("加熱噴嘴", "請等待 ...")); // |Nozzle heating|Please wait... + LSTR MSG_FILAMENT_CHANGE_HEAT = _UxGT(MSG_2_LINE("按下按鈕", "加熱噴嘴.")); // |Press button|to heat nozzle + LSTR MSG_ADVANCED_PAUSE_WAITING = _UxGT(MSG_2_LINE("按下按鈕", "恢復列印")); // |Press Button|to resume print + LSTR MSG_PAUSE_PRINT_PARKING = _UxGT(MSG_1_LINE("停車中 ...")); // |Parking... + LSTR MSG_FILAMENT_CHANGE_PURGE = _UxGT(MSG_2_LINE("等待", "絲料清除")); // |Wait for|filament purge + LSTR MSG_FILAMENT_CHANGE_CONT_PURGE = _UxGT(MSG_2_LINE("按下完成", "絲料清除")); // |Click to finish|filament purge #endif } From 6179563e0baa59615bdd803ff55820b395d19f72 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Mon, 2 Feb 2026 06:31:17 +0000 Subject: [PATCH 15/38] [cron] Bump distribution date (2026-02-02) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index c8852c65c3..d3daa71098 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2026-01-28" +//#define STRING_DISTRIBUTION_DATE "2026-02-02" /** * The protocol for communication to the host. Protocol indicates communication diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index f3cf3ee883..800e8e1a98 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2026-01-28" + #define STRING_DISTRIBUTION_DATE "2026-02-02" #endif /** From 3f98310004fe853bef06faba7af845c6bb5fb226 Mon Sep 17 00:00:00 2001 From: Kadin Le <106722133+Sodapop465@users.noreply.github.com> Date: Mon, 2 Feb 2026 16:07:49 -0800 Subject: [PATCH 16/38] =?UTF-8?q?=F0=9F=90=9B=20Fix=20FTM=20Linear=20Advan?= =?UTF-8?q?ce=20toggle=20(#28311)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/ft_motion.cpp | 38 +++++++++++++++------------------ 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/Marlin/src/module/ft_motion.cpp b/Marlin/src/module/ft_motion.cpp index 1db5b0ee6b..f20ac49967 100644 --- a/Marlin/src/module/ft_motion.cpp +++ b/Marlin/src/module/ft_motion.cpp @@ -478,35 +478,31 @@ xyze_float_t FTMotion::calc_traj_point(const float dist) { LOGICAL_AXIS_MAP_LC(_SET_TRAJ); #if FTM_HAS_LIN_ADVANCE + float traj_e = traj_coords.e; // Apply LA/NLE only to printing (not retract/unretract) blocks - if (use_advance_lead) { - const float advK = planner.get_advance_k(); - if (advK || TERN0(NONLINEAR_EXTRUSION, stepper.ne.settings.enabled)) { - float traj_e = traj_coords.e; - const float traj_e_delta = traj_e - prev_traj_e; // extruder delta in mm, always positive for use_advance_lead (printing moves) - const float e_rate = traj_e_delta * FTM_FS; // extruder velocity in mm/s + const float traj_e_delta = traj_e - prev_traj_e; // Extruder delta in mm, always positive for use_advance_lead (printing moves) + const float e_rate = traj_e_delta * (FTM_FS); // Extruder velocity in mm/s - traj_coords.e += e_rate * advK; + traj_coords.e += e_rate * planner.get_advance_k(); - #if ENABLED(NONLINEAR_EXTRUSION) - if (stepper.ne.settings.enabled) { - const nonlinear_coeff_t &coeff = stepper.ne.settings.coeff; - const float multiplier = max(coeff.C, coeff.A * sq(e_rate) + coeff.B * e_rate + coeff.C), - nle_term = traj_e_delta * (multiplier - 1); + #if ENABLED(NONLINEAR_EXTRUSION) + if (stepper.ne.settings.enabled) { + const nonlinear_coeff_t &coeff = stepper.ne.settings.coeff; + const float multiplier = max(coeff.C, coeff.A * sq(e_rate) + coeff.B * e_rate + coeff.C), + nle_term = traj_e_delta * (multiplier - 1); - traj_coords.e += nle_term; - traj_e += nle_term; - startPos.e += nle_term; - endPos_prevBlock.e += nle_term; - } - #endif - - prev_traj_e = traj_e; - } + traj_coords.e += nle_term; + traj_e += nle_term; + startPos.e += nle_term; + endPos_prevBlock.e += nle_term; + } + #endif } + prev_traj_e = traj_e; + #endif // FTM_HAS_LIN_ADVANCE // Update shaping parameters if needed. From 488bd82db0ab4bf18ab10c76dc1f312b384ea2ca Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 2 Feb 2026 18:35:26 -0600 Subject: [PATCH 17/38] =?UTF-8?q?=F0=9F=8E=A8=20stepper.ne=20=3D>=20steppe?= =?UTF-8?q?r.nle?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/gcode/feature/nonlinear/M592.cpp | 12 ++++---- Marlin/src/lcd/menu/menu_advanced.cpp | 2 +- Marlin/src/lcd/menu/menu_tune.cpp | 2 +- Marlin/src/module/ft_motion.cpp | 4 +-- Marlin/src/module/planner.cpp | 4 +-- Marlin/src/module/settings.cpp | 6 ++-- Marlin/src/module/stepper.cpp | 32 ++++++++++----------- Marlin/src/module/stepper.h | 2 +- 8 files changed, 32 insertions(+), 32 deletions(-) diff --git a/Marlin/src/gcode/feature/nonlinear/M592.cpp b/Marlin/src/gcode/feature/nonlinear/M592.cpp index b084e326f7..8a9e596f79 100644 --- a/Marlin/src/gcode/feature/nonlinear/M592.cpp +++ b/Marlin/src/gcode/feature/nonlinear/M592.cpp @@ -30,7 +30,7 @@ void GcodeSuite::M592_report(const bool forReplay/*=true*/) { TERN_(MARLIN_SMALL_BUILD, return); report_heading_etc(forReplay, F(STR_NONLINEAR_EXTRUSION)); - const nonlinear_settings_t &sns = stepper.ne.settings; + const nonlinear_settings_t &sns = stepper.nle.settings; SERIAL_ECHOLNPGM(" M592 S", sns.enabled, " A", sns.coeff.A, " B", sns.coeff.B, " C", sns.coeff.C); } @@ -48,8 +48,8 @@ void GcodeSuite::M592_report(const bool forReplay/*=true*/) { void GcodeSuite::M592() { if (!parser.seen_any()) return M592_report(); - nonlinear_t &ne = stepper.ne; - nonlinear_settings_t &sns = ne.settings; + nonlinear_t &nle = stepper.nle; + nonlinear_settings_t &sns = nle.settings; if (parser.seen('S')) sns.enabled = parser.value_bool(); if (parser.seenval('A')) sns.coeff.A = parser.value_float(); @@ -57,9 +57,9 @@ void GcodeSuite::M592() { if (parser.seenval('C')) sns.coeff.C = parser.value_float(); #if ENABLED(SMOOTH_LIN_ADVANCE) - ne.q30.A = _BV32(30) * (sns.coeff.A * planner.mm_per_step[E_AXIS_N(0)] * planner.mm_per_step[E_AXIS_N(0)]); - ne.q30.B = _BV32(30) * (sns.coeff.B * planner.mm_per_step[E_AXIS_N(0)]); - ne.q30.C = _BV32(30) * sns.coeff.C; + nle.q30.A = _BV32(30) * (sns.coeff.A * planner.mm_per_step[E_AXIS_N(0)] * planner.mm_per_step[E_AXIS_N(0)]); + nle.q30.B = _BV32(30) * (sns.coeff.B * planner.mm_per_step[E_AXIS_N(0)]); + nle.q30.C = _BV32(30) * sns.coeff.C; #endif } diff --git a/Marlin/src/lcd/menu/menu_advanced.cpp b/Marlin/src/lcd/menu/menu_advanced.cpp index 0ef1ed1b3f..fd3b547f46 100644 --- a/Marlin/src/lcd/menu/menu_advanced.cpp +++ b/Marlin/src/lcd/menu/menu_advanced.cpp @@ -139,7 +139,7 @@ void menu_backlash(); #endif // LIN_ADVANCE #if ENABLED(NONLINEAR_EXTRUSION) - EDIT_ITEM(bool, MSG_NLE_ON, &stepper.ne.settings.enabled); + EDIT_ITEM(bool, MSG_NLE_ON, &stepper.nle.settings.enabled); #endif #if HAS_VOLUMETRIC_EXTRUSION diff --git a/Marlin/src/lcd/menu/menu_tune.cpp b/Marlin/src/lcd/menu/menu_tune.cpp index 8b34b01612..c20170c692 100644 --- a/Marlin/src/lcd/menu/menu_tune.cpp +++ b/Marlin/src/lcd/menu/menu_tune.cpp @@ -244,7 +244,7 @@ void menu_tune() { // Nonlinear Extrusion state // #if ENABLED(NONLINEAR_EXTRUSION) - EDIT_ITEM(bool, MSG_NLE_ON, &stepper.ne.settings.enabled); + EDIT_ITEM(bool, MSG_NLE_ON, &stepper.nle.settings.enabled); #endif // diff --git a/Marlin/src/module/ft_motion.cpp b/Marlin/src/module/ft_motion.cpp index f20ac49967..d2876404e0 100644 --- a/Marlin/src/module/ft_motion.cpp +++ b/Marlin/src/module/ft_motion.cpp @@ -488,8 +488,8 @@ xyze_float_t FTMotion::calc_traj_point(const float dist) { traj_coords.e += e_rate * planner.get_advance_k(); #if ENABLED(NONLINEAR_EXTRUSION) - if (stepper.ne.settings.enabled) { - const nonlinear_coeff_t &coeff = stepper.ne.settings.coeff; + if (stepper.nle.settings.enabled) { + const nonlinear_coeff_t &coeff = stepper.nle.settings.coeff; const float multiplier = max(coeff.C, coeff.A * sq(e_rate) + coeff.B * e_rate + coeff.C), nle_term = traj_e_delta * (multiplier - 1); diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp index 6da11fd8c4..13074d5464 100644 --- a/Marlin/src/module/planner.cpp +++ b/Marlin/src/module/planner.cpp @@ -3222,8 +3222,8 @@ void Planner::refresh_positioning() { #if ENABLED(EDITABLE_STEPS_PER_UNIT) LOOP_DISTINCT_AXES(i) mm_per_step[i] = 1.0f / settings.axis_steps_per_mm[i]; #if ALL(NONLINEAR_EXTRUSION, SMOOTH_LIN_ADVANCE) - stepper.ne.q30.A = _BV32(30) * (stepper.ne.settings.coeff.A * sq(mm_per_step[E_AXIS_N(0)])); - stepper.ne.q30.B = _BV32(30) * (stepper.ne.settings.coeff.B * mm_per_step[E_AXIS_N(0)]); + stepper.nle.q30.A = _BV32(30) * (stepper.nle.settings.coeff.A * sq(mm_per_step[E_AXIS_N(0)])); + stepper.nle.q30.B = _BV32(30) * (stepper.nle.settings.coeff.B * mm_per_step[E_AXIS_N(0)]); #endif #endif set_position_mm(current_position); diff --git a/Marlin/src/module/settings.cpp b/Marlin/src/module/settings.cpp index f0ade99082..b06a2486c8 100644 --- a/Marlin/src/module/settings.cpp +++ b/Marlin/src/module/settings.cpp @@ -1809,7 +1809,7 @@ void MarlinSettings::postprocess() { // Nonlinear Extrusion // #if ENABLED(NONLINEAR_EXTRUSION) - EEPROM_WRITE(stepper.ne.settings); + EEPROM_WRITE(stepper.nle.settings); #endif // @@ -2962,7 +2962,7 @@ void MarlinSettings::postprocess() { // Nonlinear Extrusion // #if ENABLED(NONLINEAR_EXTRUSION) - EEPROM_READ(stepper.ne.settings); + EEPROM_READ(stepper.nle.settings); #endif // @@ -3800,7 +3800,7 @@ void MarlinSettings::reset() { // // Nonlinear Extrusion // - TERN_(NONLINEAR_EXTRUSION, stepper.ne.settings.reset()); + TERN_(NONLINEAR_EXTRUSION, stepper.nle.settings.reset()); // // Input Shaping diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index cfb2617024..d9da13bcaa 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -263,7 +263,7 @@ uint32_t Stepper::advance_divisor = 0, * Standard Motion Non-linear Extrusion state */ #if ENABLED(NONLINEAR_EXTRUSION) - nonlinear_t Stepper::ne; // Initialized by settings.load + nonlinear_t Stepper::nle; // Initialized by settings.load #endif #if HAS_ZV_SHAPING @@ -2255,11 +2255,11 @@ void Stepper::isr() { #if NONLINEAR_EXTRUSION_Q24 void Stepper::calc_nonlinear_e(const uint32_t step_rate) { - const uint32_t velocity_q24 = ne.scale_q24 * step_rate; // Scale step_rate first so all intermediate values stay in range of 8.24 fixed point math - int32_t vd_q24 = ((((int64_t(ne.q24.A) * velocity_q24) >> 24) * velocity_q24) >> 24) + ((int64_t(ne.q24.B) * velocity_q24) >> 24); + const uint32_t velocity_q24 = nle.scale_q24 * step_rate; // Scale step_rate first so all intermediate values stay in range of 8.24 fixed point math + int32_t vd_q24 = ((((int64_t(nle.q24.A) * velocity_q24) >> 24) * velocity_q24) >> 24) + ((int64_t(nle.q24.B) * velocity_q24) >> 24); NOLESS(vd_q24, 0); - advance_dividend.e = (uint64_t(ne.q24.C + vd_q24) * ne.edividend) >> 24; + advance_dividend.e = (uint64_t(nle.q24.C + vd_q24) * nle.edividend) >> 24; } #endif @@ -2934,17 +2934,17 @@ void Stepper::isr() { // Calculate Nonlinear Extrusion fixed-point quotients #if NONLINEAR_EXTRUSION_Q24 - ne.edividend = advance_dividend.e; - const float scale = (float(ne.edividend) / advance_divisor) * planner.mm_per_step[E_AXIS_N(current_block->extruder)]; - ne.scale_q24 = _BV32(24) * scale; - if (ne.settings.enabled && current_block->direction_bits.e && XYZ_HAS_STEPS(current_block)) { - ne.q24.A = _BV32(24) * ne.settings.coeff.A; - ne.q24.B = _BV32(24) * ne.settings.coeff.B; - ne.q24.C = _BV32(24) * ne.settings.coeff.C; + nle.edividend = advance_dividend.e; + const float scale = (float(nle.edividend) / advance_divisor) * planner.mm_per_step[E_AXIS_N(current_block->extruder)]; + nle.scale_q24 = _BV32(24) * scale; + if (nle.settings.enabled && current_block->direction_bits.e && XYZ_HAS_STEPS(current_block)) { + nle.q24.A = _BV32(24) * nle.settings.coeff.A; + nle.q24.B = _BV32(24) * nle.settings.coeff.B; + nle.q24.C = _BV32(24) * nle.settings.coeff.C; } else { - ne.q24.A = ne.q24.B = 0; - ne.q24.C = _BV32(24); + nle.q24.A = nle.q24.B = 0; + nle.q24.C = _BV32(24); } #endif @@ -3000,11 +3000,11 @@ void Stepper::isr() { const bool forward_e = step_rate > 0; #if ENABLED(NONLINEAR_EXTRUSION) - if (ne.settings.enabled && forward_e && XYZ_HAS_STEPS(current_block)) { + if (nle.settings.enabled && forward_e && XYZ_HAS_STEPS(current_block)) { // Maximum polynomial value is just above 1, like 1.05..1.2, less than 2 anyway, so we can use 30 bits for fractional part - int32_t vd_q30 = ne.q30.A * sq(step_rate) + ne.q30.B * step_rate; + int32_t vd_q30 = nle.q30.A * sq(step_rate) + nle.q30.B * step_rate; NOLESS(vd_q30, 0); - step_rate = (int64_t(step_rate) * (ne.q30.C + vd_q30)) >> 30; + step_rate = (int64_t(step_rate) * (nle.q30.C + vd_q30)) >> 30; } #endif diff --git a/Marlin/src/module/stepper.h b/Marlin/src/module/stepper.h index 370c9ffa8e..3d9820a496 100644 --- a/Marlin/src/module/stepper.h +++ b/Marlin/src/module/stepper.h @@ -398,7 +398,7 @@ class Stepper { #endif #if ENABLED(NONLINEAR_EXTRUSION) - static nonlinear_t ne; + static nonlinear_t nle; #endif #if ENABLED(ADAPTIVE_STEP_SMOOTHING_TOGGLE) From 643704e318852d67832ee952d66641939436097f Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 2 Feb 2026 18:40:14 -0600 Subject: [PATCH 18/38] =?UTF-8?q?=F0=9F=A9=B9=20Show=20Linear=20Advance=20?= =?UTF-8?q?for=20FT=20Motion=20(#28306)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Followup to 5a0923ed, #21827 --- Marlin/src/HAL/ESP32/inc/SanityCheck.h | 2 +- Marlin/src/lcd/dwin/jyersui/dwin.cpp | 12 ++++++------ Marlin/src/lcd/dwin/proui/dwin.cpp | 2 +- .../bioprinter/advanced_settings.cpp | 4 ++-- .../cocoa_press/advanced_settings_menu.cpp | 8 ++++---- .../generic/advanced_settings_menu.cpp | 4 ++-- .../ftdi_eve_touch_ui/generic/filament_menu.cpp | 4 ++-- .../lcd/extui/ftdi_eve_touch_ui/generic/screens.h | 8 ++++---- Marlin/src/lcd/extui/nextion/nextion_tft.cpp | 2 +- Marlin/src/lcd/extui/ui_api.cpp | 4 ++-- Marlin/src/lcd/extui/ui_api.h | 2 +- Marlin/src/lcd/menu/menu_advanced.cpp | 10 +++++----- Marlin/src/lcd/menu/menu_tune.cpp | 4 ++-- Marlin/src/lcd/sovol_rts/sovol_rts.cpp | 6 +++--- Marlin/src/module/planner.cpp | 2 +- Marlin/src/module/planner.h | 2 +- Marlin/src/module/settings.cpp | 6 +++--- Marlin/src/module/tool_change.cpp | 2 +- 18 files changed, 42 insertions(+), 42 deletions(-) diff --git a/Marlin/src/HAL/ESP32/inc/SanityCheck.h b/Marlin/src/HAL/ESP32/inc/SanityCheck.h index dd199c390d..7914fb8473 100644 --- a/Marlin/src/HAL/ESP32/inc/SanityCheck.h +++ b/Marlin/src/HAL/ESP32/inc/SanityCheck.h @@ -57,7 +57,7 @@ #endif #if ALL(I2S_STEPPER_STREAM, LIN_ADVANCE) && DISABLED(EXPERIMENTAL_I2S_LA) - #error "I2S stream is currently incompatible with LIN_ADVANCE." + #error "I2S stream is currently incompatible with LIN_ADVANCE. Enable EXPERIMENTAL_I2S_LA to proceed anyway." #endif #if ALL(I2S_STEPPER_STREAM, PRINTCOUNTER) && PRINTCOUNTER_SAVE_INTERVAL > 0 && DISABLED(PRINTCOUNTER_SYNC) diff --git a/Marlin/src/lcd/dwin/jyersui/dwin.cpp b/Marlin/src/lcd/dwin/jyersui/dwin.cpp index d451526540..3ffdc4ab89 100644 --- a/Marlin/src/lcd/dwin/jyersui/dwin.cpp +++ b/Marlin/src/lcd/dwin/jyersui/dwin.cpp @@ -2325,7 +2325,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #define MOTION_JERK (MOTION_ACCEL + ENABLED(CLASSIC_JERK)) #define MOTION_STEPS (MOTION_JERK + 1) #define MOTION_FLOW (MOTION_STEPS + ENABLED(HAS_HOTEND)) - #define MOTION_LA (MOTION_FLOW + ENABLED(LIN_ADVANCE)) + #define MOTION_LA (MOTION_FLOW + ENABLED(HAS_LIN_ADVANCE_K)) #define MOTION_TOTAL MOTION_LA switch (item) { @@ -2383,7 +2383,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; #endif - #if ENABLED(LIN_ADVANCE) + #if HAS_LIN_ADVANCE_K case MOTION_LA: if (draw) { drawMenuItem(row, ICON_MaxAccelerated, GET_TEXT_F(MSG_ADVANCE_K)); @@ -2845,7 +2845,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #define ADVANCED_PROBE (ADVANCED_BEEPER + ENABLED(HAS_BED_PROBE)) #define ADVANCED_TMC (ADVANCED_PROBE + ENABLED(HAS_TRINAMIC_CONFIG)) #define ADVANCED_CORNER (ADVANCED_TMC + 1) - #define ADVANCED_LA (ADVANCED_CORNER + ENABLED(LIN_ADVANCE)) + #define ADVANCED_LA (ADVANCED_CORNER + ENABLED(HAS_LIN_ADVANCE_K)) #define ADVANCED_LOAD (ADVANCED_LA + ENABLED(ADVANCED_PAUSE_FEATURE)) #define ADVANCED_UNLOAD (ADVANCED_LOAD + ENABLED(ADVANCED_PAUSE_FEATURE)) #define ADVANCED_COLD_EXTRUDE (ADVANCED_UNLOAD + ENABLED(PREVENT_COLD_EXTRUSION)) @@ -2902,7 +2902,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra modifyValue(corner_pos, 1, 100, 10); break; - #if ENABLED(LIN_ADVANCE) + #if HAS_LIN_ADVANCE_K case ADVANCED_LA: if (draw) { drawMenuItem(row, ICON_MaxAccelerated, GET_TEXT_F(MSG_ADVANCE_K)); @@ -3819,7 +3819,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra #define TUNE_ZOFFSET (TUNE_FAN + ENABLED(HAS_ZOFFSET_ITEM)) #define TUNE_ZUP (TUNE_ZOFFSET + ENABLED(HAS_ZOFFSET_ITEM)) #define TUNE_ZDOWN (TUNE_ZUP + ENABLED(HAS_ZOFFSET_ITEM)) - #define TUNE_LA (TUNE_ZDOWN + ENABLED(LIN_ADVANCE)) + #define TUNE_LA (TUNE_ZDOWN + ENABLED(HAS_LIN_ADVANCE_K)) #define TUNE_CHANGEFIL (TUNE_LA + ENABLED(FILAMENT_LOAD_UNLOAD_GCODES)) #define TUNE_FWRETRACT (TUNE_CHANGEFIL + ENABLED(FWRETRACT)) #define TUNE_FILSENSORENABLED (TUNE_FWRETRACT + ENABLED(HAS_FILAMENT_SENSOR)) @@ -3913,7 +3913,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; #endif - #if ENABLED(LIN_ADVANCE) + #if HAS_LIN_ADVANCE_K case TUNE_LA: if (draw) { drawMenuItem(row, ICON_MaxAccelerated, GET_TEXT_F(MSG_ADVANCE_K)); diff --git a/Marlin/src/lcd/dwin/proui/dwin.cpp b/Marlin/src/lcd/dwin/proui/dwin.cpp index 34927e1df4..85d28dc665 100644 --- a/Marlin/src/lcd/dwin/proui/dwin.cpp +++ b/Marlin/src/lcd/dwin/proui/dwin.cpp @@ -2691,7 +2691,7 @@ void applyMaxAccel() { planner.set_max_acceleration(hmiValue.axis, menuData.valu void setMaxJerkE() { hmiValue.axis = E_AXIS; setFloatOnClick(min_jerk_edit_values.e, max_jerk_edit_values.e, UNITFDIGITS, planner.max_jerk.e, applyMaxJerk); } #endif #elif HAS_JUNCTION_DEVIATION - void applyJDmm() { TERN_(LIN_ADVANCE, planner.recalculate_max_e_jerk()); } + void applyJDmm() { TERN_(HAS_LINEAR_E_JERK, planner.recalculate_max_e_jerk()); } void setJDmm() { setPFloatOnClick(MIN_JD_MM, MAX_JD_MM, 3, applyJDmm); } #endif diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/bioprinter/advanced_settings.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/bioprinter/advanced_settings.cpp index 656c1f04d2..06ce9ea902 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/bioprinter/advanced_settings.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/bioprinter/advanced_settings.cpp @@ -58,7 +58,7 @@ void AdvancedSettingsMenu::onRedraw(draw_mode_t what) { .tag(10) .button(BTN_POS(2,4), BTN_SIZE(1,1), GET_TEXT_F(TERN(HAS_JUNCTION_DEVIATION, MSG_JUNCTION_DEVIATION, MSG_JERK))) .enabled(ENABLED(BACKLASH_GCODE)) .tag(11) .button(BTN_POS(2,5), BTN_SIZE(1,1), GET_TEXT_F(MSG_BACKLASH)) - .enabled(ENABLED(LIN_ADVANCE)) + .enabled(ENABLED(HAS_LIN_ADVANCE_K)) .tag(12) .button(BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXT_F(MSG_LINEAR_ADVANCE)) .tag(13) .button(BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXT_F(MSG_INTERFACE)) .tag(14) .button(BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXT_F(MSG_RESTORE_DEFAULTS)) @@ -88,7 +88,7 @@ bool AdvancedSettingsMenu::onTouchEnd(uint8_t tag) { #if ENABLED(BACKLASH_GCODE) case 11: GOTO_SCREEN(BacklashCompensationScreen); break; #endif - #if ENABLED(LIN_ADVANCE) + #if HAS_LIN_ADVANCE_K case 12: GOTO_SCREEN(LinearAdvanceScreen); break; #endif case 13: GOTO_SCREEN(InterfaceSettingsScreen); break; diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/advanced_settings_menu.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/advanced_settings_menu.cpp index f607dc102d..17809cfaf6 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/advanced_settings_menu.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/advanced_settings_menu.cpp @@ -57,7 +57,7 @@ void AdvancedSettingsMenu::onRedraw(draw_mode_t what) { .tag(2) .button(STEPS_PER_MM_POS, GET_TEXT_F(MSG_STEPS_PER_MM)) .enabled(ENABLED(HAS_TRINAMIC_CONFIG)) .tag(3) .button(TMC_CURRENT_POS, GET_TEXT_F(MSG_TMC_CURRENT)) - .enabled(ENABLED(LIN_ADVANCE)) + .enabled(ENABLED(HAS_LIN_ADVANCE_K)) .tag(4) .button(LIN_ADVANCE_POS, GET_TEXT_F(MSG_LINEAR_ADVANCE)) .tag(5) .button(VELOCITY_POS, GET_TEXT_F(MSG_MAX_SPEED_NO_UNITS)) .tag(6) .button(ACCELERATION_POS, GET_TEXT_F(MSG_ACCELERATION)) @@ -76,10 +76,10 @@ bool AdvancedSettingsMenu::onTouchEnd(uint8_t tag) { case 1: SaveSettingsDialogBox::promptToSaveSettings(); break; case 2: GOTO_SCREEN(StepsScreen); break; #if HAS_TRINAMIC_CONFIG - case 3: GOTO_SCREEN(StepperCurrentScreen); break; + case 3: GOTO_SCREEN(StepperCurrentScreen); break; #endif - #if ENABLED(LIN_ADVANCE) - case 4: GOTO_SCREEN(LinearAdvanceScreen); break; + #if HAS_LIN_ADVANCE_K + case 4: GOTO_SCREEN(LinearAdvanceScreen); break; #endif case 5: GOTO_SCREEN(MaxVelocityScreen); break; case 6: GOTO_SCREEN(DefaultAccelerationScreen); break; diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/advanced_settings_menu.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/advanced_settings_menu.cpp index ab7d38599d..ec266f1963 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/advanced_settings_menu.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/advanced_settings_menu.cpp @@ -102,7 +102,7 @@ void AdvancedSettingsMenu::onRedraw(draw_mode_t what) { #endif .enabled(ENABLED(HAS_MULTI_HOTEND)) .tag(4) .button(OFFSETS_POS, GET_TEXT_F(MSG_OFFSETS_MENU)) - .enabled(ANY(LIN_ADVANCE, HAS_FILAMENT_SENSOR)) + .enabled(ANY(HAS_LIN_ADVANCE_K, HAS_FILAMENT_SENSOR)) .tag(11).button(FILAMENT_POS, GET_TEXT_F(MSG_FILAMENT)) .tag(12).button(ENDSTOPS_POS, GET_TEXT_F(MSG_LCD_ENDSTOPS)) .tag(15).button(DISPLAY_POS, GET_TEXT_F(MSG_DISPLAY_MENU)) @@ -136,7 +136,7 @@ bool AdvancedSettingsMenu::onTouchEnd(uint8_t tag) { #endif case 9: GOTO_SCREEN(InterfaceSettingsScreen); LockScreen::check_passcode(); break; case 10: GOTO_SCREEN(RestoreFailsafeDialogBox); LockScreen::check_passcode(); break; - #if ANY(LIN_ADVANCE, HAS_FILAMENT_SENSOR) + #if HAS_LIN_ADVANCE_K || HAS_FILAMENT_SENSOR case 11: GOTO_SCREEN(FilamentMenu); break; #endif case 12: GOTO_SCREEN(EndstopStatesScreen); break; diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/filament_menu.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/filament_menu.cpp index 7883ff71f0..cb10bb2296 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/filament_menu.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/filament_menu.cpp @@ -60,7 +60,7 @@ void FilamentMenu::onRedraw(draw_mode_t what) { .font(font_medium).colors(normal_btn) .enabled(ENABLED(HAS_FILAMENT_SENSOR)) .tag(2).button(RUNOUT_SENSOR_POS, GET_TEXT_F(MSG_RUNOUT_SENSOR)) - .enabled(ENABLED(LIN_ADVANCE)) + .enabled(ENABLED(HAS_LIN_ADVANCE_K)) .tag(3).button(LIN_ADVANCE_POS, GET_TEXT_F(MSG_LINEAR_ADVANCE)) .colors(action_btn) .tag(1).button(BACK_POS, GET_TEXT_F(MSG_BUTTON_DONE)); @@ -73,7 +73,7 @@ bool FilamentMenu::onTouchEnd(uint8_t tag) { #if HAS_FILAMENT_SENSOR case 2: GOTO_SCREEN(FilamentRunoutScreen); break; #endif - #if ENABLED(LIN_ADVANCE) + #if HAS_LIN_ADVANCE_K case 3: GOTO_SCREEN(LinearAdvanceScreen); break; #endif default: return false; diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/screens.h b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/screens.h index dcfaa5f9d9..03ecd7cbe3 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/screens.h +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/screens.h @@ -75,10 +75,10 @@ enum { #if ENABLED(CASE_LIGHT_ENABLE) CASE_LIGHT_SCREEN_CACHE, #endif - #if ANY(LIN_ADVANCE, HAS_FILAMENT_SENSOR) + #if HAS_LIN_ADVANCE_K || HAS_FILAMENT_SENSOR FILAMENT_MENU_CACHE, #endif - #if ENABLED(LIN_ADVANCE) + #if HAS_LIN_ADVANCE_K LINEAR_ADVANCE_SCREEN_CACHE, #endif #if HAS_FILAMENT_SENSOR @@ -197,7 +197,7 @@ enum { #include "case_light_screen.h" #endif -#if ANY(LIN_ADVANCE, HAS_FILAMENT_SENSOR) +#if HAS_LIN_ADVANCE_K || HAS_FILAMENT_SENSOR #include "filament_menu.h" #endif @@ -205,7 +205,7 @@ enum { #include "filament_runout_screen.h" #endif -#if ENABLED(LIN_ADVANCE) +#if HAS_LIN_ADVANCE_K #include "linear_advance_screen.h" #endif diff --git a/Marlin/src/lcd/extui/nextion/nextion_tft.cpp b/Marlin/src/lcd/extui/nextion/nextion_tft.cpp index 93b2ce5144..e8a03fa1b3 100644 --- a/Marlin/src/lcd/extui/nextion/nextion_tft.cpp +++ b/Marlin/src/lcd/extui/nextion/nextion_tft.cpp @@ -263,7 +263,7 @@ void NextionTFT::panelInfo(uint8_t req) { break; case 23: // Linear Advance - #if ENABLED(LIN_ADVANCE) + #if HAS_LIN_ADVANCE_K SEND_VALasTXT("linadvance", getLinearAdvance_mm_mm_s(getActiveTool())); #else SEND_NA("linadvance"); diff --git a/Marlin/src/lcd/extui/ui_api.cpp b/Marlin/src/lcd/extui/ui_api.cpp index 608e632854..ded9b80227 100644 --- a/Marlin/src/lcd/extui/ui_api.cpp +++ b/Marlin/src/lcd/extui/ui_api.cpp @@ -641,7 +641,7 @@ namespace ExtUI { void setPowerLossRecoveryEnabled(const bool value) { recovery.enable(value); } #endif - #if ENABLED(LIN_ADVANCE) + #if HAS_LIN_ADVANCE_K float getLinearAdvance_mm_mm_s(const extruder_t extruder) { return (extruder < EXTRUDERS) ? planner.get_advance_k(E_INDEX_N(extruder - E0)) : 0; } @@ -676,7 +676,7 @@ namespace ExtUI { void setJunctionDeviation_mm(const float value) { planner.junction_deviation_mm = constrain(value, 0.001, 0.3); - TERN_(LIN_ADVANCE, planner.recalculate_max_e_jerk()); + TERN_(HAS_LIN_ADVANCE_K, planner.recalculate_max_e_jerk()); } #else diff --git a/Marlin/src/lcd/extui/ui_api.h b/Marlin/src/lcd/extui/ui_api.h index f864f3d1cd..134bf62960 100644 --- a/Marlin/src/lcd/extui/ui_api.h +++ b/Marlin/src/lcd/extui/ui_api.h @@ -327,7 +327,7 @@ namespace ExtUI { PauseMode getPauseMode(); #endif - #if ENABLED(LIN_ADVANCE) + #if HAS_LIN_ADVANCE_K // Linear Advance Control float getLinearAdvance_mm_mm_s(const extruder_t); void setLinearAdvance_mm_mm_s(const float, const extruder_t); diff --git a/Marlin/src/lcd/menu/menu_advanced.cpp b/Marlin/src/lcd/menu/menu_advanced.cpp index fd3b547f46..94e3ee41b2 100644 --- a/Marlin/src/lcd/menu/menu_advanced.cpp +++ b/Marlin/src/lcd/menu/menu_advanced.cpp @@ -103,7 +103,7 @@ void menu_backlash(); #endif -#if ANY(HAS_VOLUMETRIC_EXTRUSION, ADVANCED_PAUSE_FEATURE) +#if ANY(NONLINEAR_EXTRUSION, HAS_VOLUMETRIC_EXTRUSION, CONFIGURE_FILAMENT_CHANGE, FILAMENT_SWITCH_AND_MOTION) #define HAS_ADV_FILAMENT_MENU 1 #endif @@ -115,7 +115,7 @@ void menu_backlash(); START_MENU(); BACK_ITEM(MSG_ADVANCED_SETTINGS); - #if ENABLED(LIN_ADVANCE) + #if HAS_LIN_ADVANCE_K #if DISABLED(DISTINCT_E_FACTORS) editable.decimal = planner.get_advance_k(); EDIT_ITEM(float42_52, MSG_ADVANCE_K, &editable.decimal, 0.0f, 10.0f, []{ planner.set_advance_k(editable.decimal); }); @@ -136,7 +136,7 @@ void menu_backlash(); } #endif #endif - #endif // LIN_ADVANCE + #endif // HAS_LIN_ADVANCE_K #if ENABLED(NONLINEAR_EXTRUSION) EDIT_ITEM(bool, MSG_NLE_ON, &stepper.nle.settings.enabled); @@ -763,7 +763,7 @@ void menu_advanced_settings() { SUBMENU(MSG_FILAMENT, menu_advanced_filament); - #elif ENABLED(LIN_ADVANCE) + #elif HAS_LIN_ADVANCE_K #if DISABLED(DISTINCT_E_FACTORS) editable.decimal = planner.get_advance_k(); @@ -786,7 +786,7 @@ void menu_advanced_settings() { #endif #endif - #endif // LIN_ADVANCE && !HAS_ADV_FILAMENT_MENU + #endif // HAS_LIN_ADVANCE_K && !HAS_ADV_FILAMENT_MENU // M540 S - Abort on endstop hit when SD printing #if ENABLED(SD_ABORT_ON_ENDSTOP_HIT) diff --git a/Marlin/src/lcd/menu/menu_tune.cpp b/Marlin/src/lcd/menu/menu_tune.cpp index c20170c692..856ae5a5f4 100644 --- a/Marlin/src/lcd/menu/menu_tune.cpp +++ b/Marlin/src/lcd/menu/menu_tune.cpp @@ -217,7 +217,7 @@ void menu_tune() { // // Advance K: // - #if ENABLED(LIN_ADVANCE) && DISABLED(SLIM_LCD_MENUS) + #if HAS_LIN_ADVANCE_K && DISABLED(SLIM_LCD_MENUS) #if DISABLED(DISTINCT_E_FACTORS) editable.decimal = planner.get_advance_k(); EDIT_ITEM(float42_52, MSG_ADVANCE_K, &editable.decimal, 0.0f, 10.0f, []{ planner.set_advance_k(editable.decimal); }); @@ -238,7 +238,7 @@ void menu_tune() { } #endif #endif - #endif + #endif // HAS_LIN_ADVANCE_K && !SLIM_LCD_MENUS // // Nonlinear Extrusion state diff --git a/Marlin/src/lcd/sovol_rts/sovol_rts.cpp b/Marlin/src/lcd/sovol_rts/sovol_rts.cpp index 82a80bdd4a..153db1bf6d 100644 --- a/Marlin/src/lcd/sovol_rts/sovol_rts.cpp +++ b/Marlin/src/lcd/sovol_rts/sovol_rts.cpp @@ -893,7 +893,7 @@ void RTS::handleData() { break; case 4: // Go to Advanced Settings - TERN_(LIN_ADVANCE, sendData(planner.get_advance_k() * 100, Advance_K_VP)); + TERN_(HAS_LIN_ADVANCE_K, sendData(planner.get_advance_k() * 100, Advance_K_VP)); gotoPage(ID_AdvWarn_L, ID_AdvWarn_D); break; @@ -1289,7 +1289,7 @@ void RTS::handleData() { case 6: gotoPage(ID_Settings_L, ID_Settings_D); break; // Return - #if ENABLED(LIN_ADVANCE) + #if HAS_LIN_ADVANCE_K case 7: // Confirm sendData(planner.get_advance_k() * 100, Advance_K_VP); gotoPage(ID_Advanced_L, ID_Advanced_D); @@ -1348,7 +1348,7 @@ void RTS::handleData() { case Jerk_E: planner.max_jerk.e = float(recdat.data[0]) * 0.1f; break; #endif case A_Retract: planner.settings.retract_acceleration = recdat.data[0]; break; - #if ENABLED(LIN_ADVANCE) + #if HAS_LIN_ADVANCE_K case Advance_K: planner.set_advance_k(float(recdat.data[0]) * 0.01f); break; #endif #endif diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp index 13074d5464..4ed9d9c0cd 100644 --- a/Marlin/src/module/planner.cpp +++ b/Marlin/src/module/planner.cpp @@ -2340,7 +2340,7 @@ bool Planner::_populate_block( const float steps_per_mm = block->step_event_count * inverse_millimeters; block->steps_per_mm = steps_per_mm; uint32_t accel; - #if ANY(LIN_ADVANCE, FTM_HAS_LIN_ADVANCE) + #if HAS_LIN_ADVANCE_K bool use_adv_lead = false; #endif if (!XYZ_HAS_STEPS(block)) { // Is this a retract / recover move? diff --git a/Marlin/src/module/planner.h b/Marlin/src/module/planner.h index 36b94da77d..cdcf553698 100644 --- a/Marlin/src/module/planner.h +++ b/Marlin/src/module/planner.h @@ -323,7 +323,7 @@ typedef struct PlannerBlock { } block_t; -#if ANY(LIN_ADVANCE, FTM_HAS_LIN_ADVANCE, FEEDRATE_SCALING, GRADIENT_MIX, LCD_SHOW_E_TOTAL, POWER_LOSS_RECOVERY) +#if ANY(HAS_LIN_ADVANCE_K, FEEDRATE_SCALING, GRADIENT_MIX, LCD_SHOW_E_TOTAL, POWER_LOSS_RECOVERY) #define HAS_POSITION_FLOAT 1 #endif diff --git a/Marlin/src/module/settings.cpp b/Marlin/src/module/settings.cpp index b06a2486c8..56c93bbcfc 100644 --- a/Marlin/src/module/settings.cpp +++ b/Marlin/src/module/settings.cpp @@ -494,7 +494,7 @@ typedef struct SettingsDataStruct { per_stepper_bool_t tmc_stealth_enabled; // M569 X Y Z... // - // LIN_ADVANCE + // Linear Advance // #if HAS_LIN_ADVANCE_K float planner_extruder_advance_K[DISTINCT_E]; // M900 K planner.extruder_advance_K @@ -3645,7 +3645,7 @@ void MarlinSettings::reset() { // // Linear Advance // - #if ENABLED(LIN_ADVANCE) + #if HAS_LIN_ADVANCE_K #if ENABLED(DISTINCT_E_FACTORS) constexpr float linAdvanceK[] = ADVANCE_K; @@ -3669,7 +3669,7 @@ void MarlinSettings::reset() { #endif #endif - #endif // LIN_ADVANCE + #endif // HAS_LIN_ADVANCE_K // // Motor Current PWM diff --git a/Marlin/src/module/tool_change.cpp b/Marlin/src/module/tool_change.cpp index e13d75d5c4..93abeb7468 100644 --- a/Marlin/src/module/tool_change.cpp +++ b/Marlin/src/module/tool_change.cpp @@ -1587,7 +1587,7 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { #endif // Migrate Linear Advance K factor to the new extruder - TERN_(LIN_ADVANCE, planner.set_advance_k(planner.get_advance_k(migration_extruder), active_extruder)); + TERN_(HAS_LIN_ADVANCE_K, planner.set_advance_k(planner.get_advance_k(migration_extruder), active_extruder)); // Temporary migration toolchange_settings restored on exit. i.e., before next tool_change(). #if defined(MIGRATION_FS_EXTRA_PRIME) \ From a6a5be0ad4f9e8e1936a5e42d34ab091b43d6190 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Tue, 3 Feb 2026 00:56:04 +0000 Subject: [PATCH 19/38] [cron] Bump distribution date (2026-02-03) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index d3daa71098..d5e8ed0a27 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2026-02-02" +//#define STRING_DISTRIBUTION_DATE "2026-02-03" /** * The protocol for communication to the host. Protocol indicates communication diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 800e8e1a98..b356ed27dc 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2026-02-02" + #define STRING_DISTRIBUTION_DATE "2026-02-03" #endif /** From 6561ecfcf53a10d10db5d49d85f6224bd5dbd649 Mon Sep 17 00:00:00 2001 From: jaysuk Date: Thu, 5 Feb 2026 19:37:36 +0000 Subject: [PATCH 20/38] =?UTF-8?q?=E2=9C=A8Mellow=20Fly=20E3=20Pro=20V3=20(?= =?UTF-8?q?STM32F407VG)=20(#26214)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/boards.h | 21 +- Marlin/src/pins/pins.h | 4 +- .../pins/stm32f4/pins_MELLOW_FLY_E3_PRO_V3.h | 586 ++++++++++++++++++ ini/renamed.ini | 3 + ini/stm32f4.ini | 4 +- 5 files changed, 605 insertions(+), 13 deletions(-) create mode 100644 Marlin/src/pins/stm32f4/pins_MELLOW_FLY_E3_PRO_V3.h diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h index b99fcad89a..13d28a4a02 100644 --- a/Marlin/src/core/boards.h +++ b/Marlin/src/core/boards.h @@ -484,16 +484,17 @@ #define BOARD_BLACKPILL_CUSTOM 5249 // Custom board based on STM32F401CDU6. #define BOARD_I3DBEEZ9_V1 5250 // I3DBEEZ9 V1 (STM32F407ZG) #define BOARD_MELLOW_FLY_E3_V2 5251 // Mellow Fly E3 V2 (STM32F407VG) -#define BOARD_BLACKBEEZMINI_V1 5252 // BlackBeezMini V1 (STM32F401CCU6) -#define BOARD_XTLW_CLIMBER_8TH 5253 // XTLW Climber-8th (STM32F407VGT6) -#define BOARD_FLY_RRF_E3_V1 5254 // Fly RRF E3 V1.0 (STM32F407VG) -#define BOARD_FLY_SUPER8 5255 // Fly SUPER8 (STM32F407ZGT6) -#define BOARD_FLY_D8 5256 // FLY D8 (STM32F407VG) -#define BOARD_FLY_CDY_V3 5257 // FLY CDY V3 (STM32F407VGT6) -#define BOARD_ZNP_ROBIN_NANO 5258 // Elegoo Neptune 2 v1.2 board -#define BOARD_ZNP_ROBIN_NANO_V1_3 5259 // Elegoo Neptune 2 v1.3 board -#define BOARD_MKS_NEPTUNE_X 5260 // Elegoo Neptune X -#define BOARD_MKS_NEPTUNE_3 5261 // Elegoo Neptune 3 +#define BOARD_MELLOW_FLY_E3_PRO_V3 5252 // Mellow Fly E3 Pro V3 (STM32F407VG) +#define BOARD_BLACKBEEZMINI_V1 5253 // BlackBeezMini V1 (STM32F401CCU6) +#define BOARD_XTLW_CLIMBER_8TH 5254 // XTLW Climber-8th (STM32F407VGT6) +#define BOARD_FLY_RRF_E3_V1 5255 // Fly RRF E3 V1.0 (STM32F407VG) +#define BOARD_FLY_SUPER8 5256 // Fly SUPER8 (STM32F407ZGT6) +#define BOARD_FLY_D8 5257 // FLY D8 (STM32F407VG) +#define BOARD_FLY_CDY_V3 5258 // FLY CDY V3 (STM32F407VGT6) +#define BOARD_ZNP_ROBIN_NANO 5259 // Elegoo Neptune 2 v1.2 board +#define BOARD_ZNP_ROBIN_NANO_V1_3 5260 // Elegoo Neptune 2 v1.3 board +#define BOARD_MKS_NEPTUNE_X 5261 // Elegoo Neptune X +#define BOARD_MKS_NEPTUNE_3 5262 // Elegoo Neptune 3 // // Other ARM Cortex-M4 diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index cac64ad677..6c4894f20d 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -803,7 +803,9 @@ #elif MB(I3DBEEZ9_V1) #include "stm32f4/pins_I3DBEEZ9.h" // STM32F4 env:I3DBEEZ9_V1 #elif MB(MELLOW_FLY_E3_V2) - #include "stm32f4/pins_MELLOW_FLY_E3_V2.h" // STM32F4 env:FLY_E3_V2 + #include "stm32f4/pins_MELLOW_FLY_E3_V2.h" // STM32F4 env:STM32F407VG_mellow_fly_e3 +#elif MB(MELLOW_FLY_E3_PRO_V3) + #include "stm32f4/pins_MELLOW_FLY_E3_PRO_V3.h" // STM32F4 env:STM32F407VG_mellow_fly_e3 #elif MB(BLACKBEEZMINI_V1) #include "stm32f4/pins_BLACKBEEZMINI.h" // STM32F4 env:BLACKBEEZMINI_V1 #elif MB(XTLW_CLIMBER_8TH) diff --git a/Marlin/src/pins/stm32f4/pins_MELLOW_FLY_E3_PRO_V3.h b/Marlin/src/pins/stm32f4/pins_MELLOW_FLY_E3_PRO_V3.h new file mode 100644 index 0000000000..f5875be242 --- /dev/null +++ b/Marlin/src/pins/stm32f4/pins_MELLOW_FLY_E3_PRO_V3.h @@ -0,0 +1,586 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2025 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +/** + * Mellow Fly E3 Pro V3 pin assignments + * Schematic: https://github.com/Mellow-3D/Fly-E3-Pro-v3/blob/main/Hardware/Schematic_E3-Pro-V3.pdf + * Pins: https://github.com/Mellow-3D/Fly-E3-Pro-v3/blob/main/Hardware/fly_e3_prov3_pins.svg + */ + +#include "env_validate.h" + +#if EXTRUDERS > 2 || E_STEPPERS > 2 + #error "Fly E3 Pro V3 only supports up to 2 E steppers." +#elif HOTENDS > 2 + #error "Fly E3 Pro V3 only supports up to 2 hotends." +#endif + +#define BOARD_INFO_NAME "Fly E3 Pro V3" +#define BOARD_WEBSITE_URL "github.com/Mellow-3D/Fly-E3-Pro-v3" + +#define USES_DIAG_JUMPERS + +// If you have the BigTreeTech driver expansion module, enable BTT_MOTOR_EXPANSION +// https://github.com/bigtreetech/BTT-Expansion-module/tree/master/BTT%20EXP-MOT +//#define BTT_MOTOR_EXPANSION + +#if ALL(HAS_WIRED_LCD, BTT_MOTOR_EXPANSION) + #if ANY(CR10_STOCKDISPLAY, ENDER2_STOCKDISPLAY) + #define EXP_MOT_USE_EXP2_ONLY 1 + #else + #error "You can't use both an LCD and a Motor Expansion Module on EXP1/EXP2 at the same time." + #endif +#endif + +// Use one of these or SDCard-based Emulation will be used +#if NO_EEPROM_SELECTED + //#define SRAM_EEPROM_EMULATION // Use BackSRAM-based EEPROM emulation + #define FLASH_EEPROM_EMULATION // Use Flash-based EEPROM emulation +#endif + +#if ENABLED(FLASH_EEPROM_EMULATION) + // Decrease delays and flash wear by spreading writes across the + // 128 kB sector allocated for EEPROM emulation. + #define FLASH_EEPROM_LEVELING +#endif + +// +// Servos +// +#define SERVO0_PIN PB0 // SERVOS + +// +// Trinamic Stallguard pins +// +#define X_DIAG_PIN PA2 // X-STOP +#define Y_DIAG_PIN PB10 // Y-STOP +#define Z_DIAG_PIN PC4 // Z-STOP +#define E0_DIAG_PIN PD0 // E0-STOP +#define E1_DIAG_PIN PD1 // E1-STOP + +// +// Limit Switches +// +#ifdef X_STALL_SENSITIVITY + #define X_STOP_PIN X_DIAG_PIN +#else + #define X_STOP_PIN PA2 // X-STOP +#endif + +#ifdef Y_STALL_SENSITIVITY + #define Y_STOP_PIN Y_DIAG_PIN +#else + #define Y_STOP_PIN PB10 // Y-STOP +#endif + +#ifdef Z_STALL_SENSITIVITY + #define Z_STOP_PIN Z_DIAG_PIN +#else + #ifndef Z_STOP_PIN + #define Z_STOP_PIN PC4 // Z-STOP + #endif +#endif + +// +// Z Probe must be this pin +// +#define Z_MIN_PROBE_PIN PC5 // PROBE + +// +// Probe enable +// +#if ENABLED(PROBE_ENABLE_DISABLE) && !defined(PROBE_ENABLE_PIN) + #define PROBE_ENABLE_PIN SERVO0_PIN +#endif + +// +// Filament Runout Sensor +// +#define FIL_RUNOUT_PIN PD0 // E0STOP +#define FIL_RUNOUT2_PIN PD1 // E1STOP + +// +// Power Supply Control +// +#ifndef PS_ON_PIN + #define PS_ON_PIN PD11 // PS-ON +#endif + +// +// Power Loss Detection +// +#ifndef POWER_LOSS_PIN + #define POWER_LOSS_PIN PD10 // PWRDET +#endif + +// +// Laser Port +// +#if HAS_CUTTER + #define SPINDLE_LASER_ENA_PIN PB1 +#endif + +// +// Steppers +// +#define X_ENABLE_PIN PE5 +#define X_STEP_PIN PE3 +#define X_DIR_PIN PE2 + +#define Y_ENABLE_PIN PE1 +#define Y_STEP_PIN PB9 +#define Y_DIR_PIN PB8 + +#define Z_ENABLE_PIN PC2 +#define Z_STEP_PIN PA15 +#define Z_DIR_PIN PD7 + +#define E0_ENABLE_PIN PD6 +#define E0_STEP_PIN PD4 +#define E0_DIR_PIN PD3 + +#define E1_ENABLE_PIN PC15 +#define E1_STEP_PIN PC13 +#define E1_DIR_PIN PC0 + +// +// Integrated TMC2209 driver defaults +// +#if (HAS_X_AXIS && !AXIS_DRIVER_TYPE_X(TMC2209)) \ + || (HAS_Y_AXIS && !AXIS_DRIVER_TYPE_Y(TMC2209)) \ + || (NUM_Z_STEPPERS >= 1 && !AXIS_DRIVER_TYPE_Z(TMC2209)) \ + || (NUM_Z_STEPPERS >= 2 && !AXIS_DRIVER_TYPE_Z2(TMC2209)) \ + || (EXTRUDERS >= 1 && !AXIS_DRIVER_TYPE_E0(TMC2209)) \ + || (EXTRUDERS >= 2 && !AXIS_DRIVER_TYPE_E1(TMC2209)) + #error "All DRIVER TYPEs must be TMC2209 for BOARD_MELLOW_FLY_E3_PRO_V3." +#endif + +// RSENSE defaults +#if HAS_X_AXIS + static_assert(X_RSENSE == 0.11, "X_RSENSE must be 0.11 for BOARD_MELLOW_FLY_E3_PRO_V3."); +#endif +#if HAS_Y_AXIS + static_assert(Y_RSENSE == 0.11, "Y_RSENSE must be 0.11 for BOARD_MELLOW_FLY_E3_PRO_V3."); +#endif +#if NUM_Z_STEPPERS >= 1 + static_assert(Z_RSENSE == 0.11, "Z_RSENSE must be 0.11 for BOARD_MELLOW_FLY_E3_PRO_V3."); +#endif +#if NUM_Z_STEPPERS >= 2 + static_assert(Z2_RSENSE == 0.11, "Z2_RSENSE must be 0.11 for BOARD_MELLOW_FLY_E3_PRO_V3."); +#endif +#if EXTRUDERS >= 1 + static_assert(E0_RSENSE == 0.11, "E0_RSENSE must be 0.11 for BOARD_MELLOW_FLY_E3_PRO_V3."); +#endif +#if EXTRUDERS >= 2 + static_assert(E1_RSENSE == 0.11, "E1_RSENSE must be 0.11 for BOARD_MELLOW_FLY_E3_PRO_V3."); +#endif + +// +// Temperature Sensors +// +#define TEMP_BED_PIN PA3 // Analog Input "TB" +#define TEMP_0_PIN PA4 // Analog Input "TH0" + +#if TEMP_SENSOR_0_IS_MAX31865 + #define TEMP_0_CS_PIN PD15 // Max31865 CS + #define TEMP_0_SCK_PIN PD14 + #define TEMP_0_MISO_PIN PD12 + #define TEMP_0_MOSI_PIN PD13 + #define SOFTWARE_SPI // Max31865 use's Software SPI + #define FORCE_SOFT_SPI +#elif TEMP_SENSOR_0_IS_AD8495 + #define TEMP_0_CS_PIN PC7 // Max31855 CS + #define TEMP_0_SCK_PIN PD14 + #define TEMP_0_MISO_PIN PD12 + #define TEMP_0_MOSI_PIN PD13 + #define SOFTWARE_SPI // Max31855 use's Software SPI + #define FORCE_SOFT_SPI +#endif + +#define TEMP_1_PIN PA1 // Analog Input "TH0" + +#if TEMP_SENSOR_1_IS_MAX31865 + #define TEMP_1_CS_PIN PD15 // Max31865 CS + #define TEMP_1_SCK_PIN PD14 + #define TEMP_1_MISO_PIN PD12 + #define TEMP_1_MOSI_PIN PD13 + #define SOFTWARE_SPI // Max31865 use's Software SPI + #define FORCE_SOFT_SPI +#elif TEMP_SENSOR_1_IS_AD8495 + #define TEMP_1_CS_PIN PC7 // Max31855 CS + #define TEMP_1_SCK_PIN PD14 + #define TEMP_1_MISO_PIN PD12 + #define TEMP_1_MOSI_PIN PD13 + #define SOFTWARE_SPI // Max31855 use's Software SPI + #define FORCE_SOFT_SPI +#endif + +#define TEMP_BOARD_PIN PC1 // Board Temp + +// +// Heaters / Fans +// +#ifndef HEATER_BED_PIN + #define HEATER_BED_PIN PA0 // "HB" +#endif +#ifndef HEATER_0_PIN + #define HEATER_0_PIN PA5 // "HE0" +#endif +#ifndef HEATER_1_PIN + #define HEATER_1_PIN PC6 // "HE0" +#endif + +#ifndef FAN0_PIN + #define FAN0_PIN PA7 // "FAN0" +#endif +#ifndef FAN1_PIN + #define FAN1_PIN PA6 +#endif +#ifndef FAN2_PIN + #define FAN2_PIN PB6 +#endif +#ifndef FAN3_PIN + #define FAN3_PIN PB7 +#endif + +#if HAS_TMC_UART + /** + * TMC2208/TMC2209 stepper drivers + * + * Hardware serial communication ports. + * If undefined software serial is used according to the pins below + */ + //#define X_HARDWARE_SERIAL Serial1 + //#define X2_HARDWARE_SERIAL Serial1 + //#define Y_HARDWARE_SERIAL Serial1 + //#define Y2_HARDWARE_SERIAL Serial1 + //#define Z_HARDWARE_SERIAL Serial1 + //#define Z2_HARDWARE_SERIAL Serial1 + //#define E0_HARDWARE_SERIAL Serial1 + //#define E1_HARDWARE_SERIAL Serial1 + //#define E2_HARDWARE_SERIAL Serial1 + //#define E3_HARDWARE_SERIAL Serial1 + //#define E4_HARDWARE_SERIAL Serial1 + + // + // Software serial + // + #define X_SERIAL_TX_PIN PE4 + #define X_SERIAL_RX_PIN X_SERIAL_TX_PIN + + #define Y_SERIAL_TX_PIN PE0 + #define Y_SERIAL_RX_PIN Y_SERIAL_TX_PIN + + #define Z_SERIAL_TX_PIN PA8 + #define Z_SERIAL_RX_PIN Z_SERIAL_TX_PIN + + #define E0_SERIAL_TX_PIN PD5 + #define E0_SERIAL_RX_PIN E0_SERIAL_TX_PIN + + #define E1_SERIAL_TX_PIN PC14 + #define E1_SERIAL_RX_PIN E1_SERIAL_TX_PIN + + // Reduce baud rate to improve software serial reliability + #ifndef TMC_BAUD_RATE + #define TMC_BAUD_RATE 19200 + #endif + +#endif // HAS_TMC_UART + +// +// SD Support +// +#ifndef SDCARD_CONNECTION + #if HAS_WIRED_LCD && DISABLED(NO_LCD_SDCARD) + #define SDCARD_CONNECTION LCD + #else + #define SDCARD_CONNECTION ONBOARD + #endif +#endif + +/** + * Fly-E3-v2 + * ------ ------ + * (BEEPER) PE11 | 1 2 | PE12 (BTN_ENC) (MISO) PB4 | 1 2 | PB3 (SCK) + * (LCD_EN) PA14 | 3 4 | PE6 (LCD_RS) (BTN_EN1) PA10 | 3 4 | PB2 (SD_SS) + * (LCD_D4) PE9 | 5 6 PE10 (LCD_D5) (BTN_EN2) PA9 | 5 6 | PB5 (MOSI) + * (LCD_D6) PE7 | 7 8 | PE8 (LCD_D7) (SD_DETECT) PA13 | 7 8 | RESET + * GND | 9 10 | 5V GND | 9 10 | -- + * ------ ------ + * EXP1 EXP2 + */ +#define EXP1_01_PIN PE11 +#define EXP1_02_PIN PE12 +#define EXP1_03_PIN PA14 +#define EXP1_04_PIN PE6 +#define EXP1_05_PIN PE9 +#define EXP1_06_PIN PE10 +#define EXP1_07_PIN PE7 +#define EXP1_08_PIN PE8 + +#define EXP2_01_PIN PB4 +#define EXP2_02_PIN PB3 +#define EXP2_03_PIN PA10 +#define EXP2_04_PIN PB2 +#define EXP2_05_PIN PA9 +#define EXP2_06_PIN PB5 +#define EXP2_07_PIN PA13 +#define EXP2_08_PIN -1 + +// +// Onboard SD card +// Must use soft SPI because Marlin's default hardware SPI is tied to LCD's EXP2 +// +#if SD_CONNECTION_IS(LCD) + #define SDSS EXP2_04_PIN + #define SD_SS_PIN SDSS + #define SD_SCK_PIN EXP2_02_PIN + #define SD_MISO_PIN EXP2_01_PIN + #define SD_MOSI_PIN EXP2_06_PIN + #define SD_DETECT_PIN EXP2_07_PIN +#elif SD_CONNECTION_IS(ONBOARD) + #define ONBOARD_SDIO // Use SDIO for onboard SD +#elif SD_CONNECTION_IS(CUSTOM_CABLE) + #error "No custom SD drive cable defined for this board." +#endif + +#if ENABLED(BTT_MOTOR_EXPANSION) + /** ----- ----- + * -- | . . | GND -- | . . | GND + * -- | . . | M1EN M2EN | . . | M3EN + * M1STP | . . M1DIR M1RX | . . M1DIAG + * M2DIR | . . | M2STP M2RX | . . | M2DIAG + * M3DIR | . . | M3STP M3RX | . . | M3DIAG + * ----- ----- + * EXP2 EXP1 + * + * NB In EXP_MOT_USE_EXP2_ONLY mode EXP1 is not used and M2EN and M3EN need to be jumpered to M1EN + */ + + // M1 on Driver Expansion Module + #define E2_STEP_PIN EXP2_06_PIN + #define E2_DIR_PIN EXP2_05_PIN + #define E2_ENABLE_PIN EXP2_07_PIN + #if !EXP_MOT_USE_EXP2_ONLY + #define E2_DIAG_PIN EXP1_05_PIN + #define E2_CS_PIN EXP1_06_PIN + #if HAS_TMC_UART + #define E2_SERIAL_TX_PIN EXP1_06_PIN + #define E2_SERIAL_RX_PIN EXP1_06_PIN + #endif + #endif + + // M2 on Driver Expansion Module + #define E3_STEP_PIN EXP2_03_PIN + #define E3_DIR_PIN EXP2_04_PIN + #if !EXP_MOT_USE_EXP2_ONLY + #define E3_ENABLE_PIN EXP1_08_PIN + #define E3_DIAG_PIN EXP1_03_PIN + #define E3_CS_PIN EXP1_04_PIN + #if HAS_TMC_UART + #define E3_SERIAL_TX_PIN EXP1_04_PIN + #define E3_SERIAL_RX_PIN EXP1_04_PIN + #endif + #else + #define E3_ENABLE_PIN EXP2_07_PIN + #endif + + // M3 on Driver Expansion Module + #define E4_STEP_PIN EXP2_01_PIN + #define E4_DIR_PIN EXP2_02_PIN + #if !EXP_MOT_USE_EXP2_ONLY + #define E4_ENABLE_PIN EXP1_07_PIN + #define E4_DIAG_PIN EXP1_01_PIN + #define E4_CS_PIN EXP1_02_PIN + #if HAS_TMC_UART + #define E4_SERIAL_TX_PIN EXP1_02_PIN + #define E4_SERIAL_RX_PIN EXP1_02_PIN + #endif + #else + #define E4_ENABLE_PIN EXP2_07_PIN + #endif + +#endif // BTT_MOTOR_EXPANSION + +// +// LCDs and Controllers +// +#if IS_TFTGLCD_PANEL + + #if ENABLED(TFTGLCD_PANEL_SPI) + #define TFTGLCD_CS EXP2_03_PIN + #endif + +#elif HAS_WIRED_LCD + + #define BEEPER_PIN EXP1_01_PIN + #define BTN_ENC EXP1_02_PIN + + #if ENABLED(CR10_STOCKDISPLAY) + + #define LCD_PINS_RS EXP1_07_PIN + + #define BTN_EN1 EXP1_03_PIN + #define BTN_EN2 EXP1_05_PIN + + #define LCD_PINS_EN EXP1_08_PIN + #define LCD_PINS_D4 EXP1_06_PIN + + #elif ENABLED(MKS_MINI_12864) + + #define DOGLCD_A0 EXP1_07_PIN + #define DOGLCD_CS EXP1_06_PIN + #define BTN_EN1 EXP2_03_PIN + #define BTN_EN2 EXP2_05_PIN + + #else + + #define LCD_PINS_RS EXP1_04_PIN + + #define BTN_EN1 EXP2_03_PIN + #define BTN_EN2 EXP2_05_PIN + + #define LCD_PINS_EN EXP1_03_PIN + #define LCD_PINS_D4 EXP1_05_PIN + + #if ENABLED(FYSETC_MINI_12864) + #define DOGLCD_CS EXP1_03_PIN + #define DOGLCD_A0 EXP1_04_PIN + //#define LCD_BACKLIGHT_PIN -1 + #define LCD_RESET_PIN EXP1_05_PIN // Must be high or open for LCD to operate normally. + #if ANY(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) + #ifndef RGB_LED_R_PIN + #define RGB_LED_R_PIN EXP1_06_PIN + #endif + #ifndef RGB_LED_G_PIN + #define RGB_LED_G_PIN EXP1_07_PIN + #endif + #ifndef RGB_LED_B_PIN + #define RGB_LED_B_PIN EXP1_08_PIN + #endif + #elif ENABLED(FYSETC_MINI_12864_2_1) + #define NEOPIXEL_PIN EXP1_06_PIN + #endif + #endif // !FYSETC_MINI_12864 + + #if IS_ULTIPANEL + #define LCD_PINS_D5 EXP1_06_PIN + #define LCD_PINS_D6 EXP1_07_PIN + #define LCD_PINS_D7 EXP1_08_PIN + + #if ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) + #define BTN_ENC_EN LCD_PINS_D7 // Detect the presence of the encoder + #endif + + #endif + + #endif + +#endif // HAS_WIRED_LCD + +#if HAS_SPI_TFT + + #define BTN_ENC EXP1_02_PIN + #define BTN_EN1 EXP2_03_PIN + #define BTN_EN2 EXP2_05_PIN + + #if ENABLED(BTT_TFT35_SPI_V1_0) + // 480x320, 3.5", SPI Display with Rotary Encoder. + // Stock Display for the BIQU B1 SE. + #define TFT_CS_PIN EXP2_04_PIN + #define TFT_A0_PIN EXP2_07_PIN + + #define TOUCH_CS_PIN EXP1_04_PIN + #define TOUCH_SCK_PIN EXP1_05_PIN + #define TOUCH_MISO_PIN EXP1_06_PIN + #define TOUCH_MOSI_PIN EXP1_03_PIN + #define TOUCH_INT_PIN EXP1_07_PIN + + #elif ENABLED(MKS_TS35_V2_0) + + /** ------ ------ + * BEEPER | 1 2 | BTN_ENC SPI1_MISO | 1 2 | SPI1_SCK + * TFT_BKL / LCD_EN | 3 4 | TFT_RESET / LCD_RS BTN_EN1 | 3 4 | SPI1_CS + * TOUCH_CS / LCD_D4 | 5 6 TOUCH_INT / LCD_D5 BTN_EN2 | 5 6 SPI1_MOSI + * SPI1_CS / LCD_D6 | 7 8 | SPI1_RS / LCD_D7 SPI1_RS | 7 8 | RESET + * GND | 9 10 | VCC GND | 9 10 | VCC + * ------ ------ + * EXP1 EXP2 + */ + #define TFT_CS_PIN EXP1_07_PIN // SPI1_CS + #define TFT_A0_PIN EXP1_08_PIN // SPI1_RS + #define TFT_DC_PIN TFT_DC_PIN + + #define TFT_RESET_PIN EXP1_04_PIN + + #define LCD_BACKLIGHT_PIN EXP1_03_PIN + #define TFT_BACKLIGHT_PIN LCD_BACKLIGHT_PIN + + #define TOUCH_BUTTONS_HW_SPI + #define TOUCH_BUTTONS_HW_SPI_DEVICE 1 + + #define TOUCH_CS_PIN EXP1_05_PIN // SPI1_NSS + #define TOUCH_SCK_PIN EXP2_02_PIN // SPI1_SCK + #define TOUCH_MISO_PIN EXP2_01_PIN // SPI1_MISO + #define TOUCH_MOSI_PIN EXP2_06_PIN // SPI1_MOSI + + #define LCD_READ_ID 0xD3 + #define LCD_USE_DMA_SPI + + #define TFT_BUFFER_SIZE 14400 + + #endif + +#endif // HAS_SPI_TFT + +// Alter timing for graphical display +#if IS_U8GLIB_ST7920 + #ifndef BOARD_ST7920_DELAY_1 + #define BOARD_ST7920_DELAY_1 120 + #endif + #ifndef BOARD_ST7920_DELAY_2 + #define BOARD_ST7920_DELAY_2 80 + #endif + #ifndef BOARD_ST7920_DELAY_3 + #define BOARD_ST7920_DELAY_3 580 + #endif +#endif + +// +// NeoPixel LED +// +#ifndef BOARD_NEOPIXEL_PIN + #define BOARD_NEOPIXEL_PIN PB11 +#endif + +#if ENABLED(WIFISUPPORT) + // + // WIFI + // + + #define ESP_WIFI_MODULE_COM 3 // Must also set either SERIAL_PORT or SERIAL_PORT_2 to this + #define ESP_WIFI_MODULE_BAUDRATE BAUDRATE // Must use same BAUDRATE as SERIAL_PORT & SERIAL_PORT_2 + #define ESP_WIFI_MODULE_RESET_PIN PE15 + #define ESP_WIFI_MODULE_GPIO0_PIN PE13 + #define ESP_WIFI_MODULE_GPIO4_PIN PE14 +#endif diff --git a/ini/renamed.ini b/ini/renamed.ini index 121518b202..e41096a6d7 100644 --- a/ini/renamed.ini +++ b/ini/renamed.ini @@ -152,3 +152,6 @@ extends = renamed [env:FYSETC_F6] ;=> mega2560ext extends = renamed + +[env:FLY_E3_V2] ;= STM32F407VG_mellow_fly_e3 +extends = renamed diff --git a/ini/stm32f4.ini b/ini/stm32f4.ini index 722e73b396..2e326b162d 100644 --- a/ini/stm32f4.ini +++ b/ini/stm32f4.ini @@ -971,9 +971,9 @@ monitor_speed = 250000 upload_protocol = dfu # -# Mellow Fly E3 V2 (STM32F407VGT6 ARM Cortex-M4) +# Mellow Fly E3 V2 / Pro V3 (STM32F407VGT6 ARM Cortex-M4) # -[env:FLY_E3_V2] +[env:STM32F407VG_mellow_fly_e3] extends = stm32_variant board = marlin_STM32F407VGT6_CCM board_build.variant = MARLIN_F4x7Vx From f9d6093051c750a598a54542603926a06c0ac7b3 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 5 Feb 2026 17:52:39 -0600 Subject: [PATCH 21/38] =?UTF-8?q?=F0=9F=A9=B9=20Center=20UBL=20measure=5Fb?= =?UTF-8?q?usiness=5Fcard=5Fthickness?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp index 6341933bfb..42b0d0d5f6 100644 --- a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp +++ b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp @@ -895,8 +895,8 @@ void set_message_with_feedback(FSTR_P const fstr) { do_blocking_move_to( xyz_pos_t({ - 0.5f * ((MESH_MAX_X) - (MESH_MIN_X)), - 0.5f * ((MESH_MAX_Y) - (MESH_MIN_Y)), + 0.5f * ((MESH_MIN_X) + (MESH_MAX_X)), + 0.5f * ((MESH_MIN_Y) + (MESH_MAX_Y)), MANUAL_PROBE_START_Z #ifdef SAFE_BED_LEVELING_START_I , SAFE_BED_LEVELING_START_I From 20d035d78c9fe21730a4856c8a42e403bca31fea Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Fri, 6 Feb 2026 00:40:25 +0000 Subject: [PATCH 22/38] [cron] Bump distribution date (2026-02-06) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index d5e8ed0a27..8b487e4ac1 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2026-02-03" +//#define STRING_DISTRIBUTION_DATE "2026-02-06" /** * The protocol for communication to the host. Protocol indicates communication diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index b356ed27dc..bf43efa03e 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2026-02-03" + #define STRING_DISTRIBUTION_DATE "2026-02-06" #endif /** From 7f51e49b087afebcf077db2ccf48ef50d94d8c1c Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Fri, 6 Feb 2026 14:52:47 +1300 Subject: [PATCH 23/38] =?UTF-8?q?=F0=9F=A9=B9=20Fix=20LED=20menu=20conditi?= =?UTF-8?q?ons=20(#28304)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/leds/leds.h | 2 +- Marlin/src/lcd/dwin/proui/dwin.cpp | 2 +- Marlin/src/lcd/menu/menu_led.cpp | 61 ++++++++++++++++-------------- 3 files changed, 35 insertions(+), 30 deletions(-) diff --git a/Marlin/src/feature/leds/leds.h b/Marlin/src/feature/leds/leds.h index 3ba3a31cdb..0410f6ca37 100644 --- a/Marlin/src/feature/leds/leds.h +++ b/Marlin/src/feature/leds/leds.h @@ -226,7 +226,7 @@ public: #if ENABLED(LED_CONTROL_MENU) static void toggle(); // swap "off" with color #endif - #if ANY(LED_CONTROL_MENU, CASE_LIGHT_USE_RGB_LED, HAS_LED_POWEROFF_TIMEOUT) + #if ANY(LED_CONTROL_MENU, PRINTER_EVENT_LEDS, CASE_LIGHT_IS_COLOR_LED) static void update() { set_color(color); } #endif diff --git a/Marlin/src/lcd/dwin/proui/dwin.cpp b/Marlin/src/lcd/dwin/proui/dwin.cpp index 85d28dc665..9d404b3690 100644 --- a/Marlin/src/lcd/dwin/proui/dwin.cpp +++ b/Marlin/src/lcd/dwin/proui/dwin.cpp @@ -2328,7 +2328,7 @@ void setMoveZ() { hmiValue.axis = Z_AXIS; setPFloatOnClick(Z_MIN_POS, Z_MAX_POS, void setLEDColorW() { setIntOnClick(0, 255, leds.color.w, applyLEDColor, liveLEDColorW); } #endif #endif -#endif +#endif // LED_CONTROL_MENU #if ENABLED(SOUND_MENU_ITEM) void setEnableSound() { diff --git a/Marlin/src/lcd/menu/menu_led.cpp b/Marlin/src/lcd/menu/menu_led.cpp index 0d46f4d3ff..29f5647ddd 100644 --- a/Marlin/src/lcd/menu/menu_led.cpp +++ b/Marlin/src/lcd/menu/menu_led.cpp @@ -30,7 +30,7 @@ #include "menu_item.h" -#if ENABLED(LED_CONTROL_MENU) +#if ANY(LED_CONTROL_MENU, LED_COLOR_PRESETS, NEO2_COLOR_PRESETS, NEOPIXEL2_SEPARATE) #include "../../feature/leds/leds.h" #endif @@ -98,38 +98,41 @@ #endif // NEO2_COLOR_PRESETS -void menu_led_custom() { - START_MENU(); - BACK_ITEM(MSG_LED_CONTROL); +#if ENABLED(LED_CONTROL_MENU) + + void menu_led_custom() { + START_MENU(); + BACK_ITEM(MSG_LED_CONTROL); + + #if ENABLED(NEOPIXEL2_SEPARATE) + STATIC_ITEM_N(1, MSG_LED_CHANNEL_N, SS_DEFAULT|SS_INVERT); + #endif - #if ENABLED(NEOPIXEL2_SEPARATE) - STATIC_ITEM_N(1, MSG_LED_CHANNEL_N, SS_DEFAULT|SS_INVERT); - #endif - #if ENABLED(LED_CONTROL_MENU) EDIT_ITEM(uint8, MSG_INTENSITY_R, &leds.color.r, 0, 255, leds.update, true); EDIT_ITEM(uint8, MSG_INTENSITY_G, &leds.color.g, 0, 255, leds.update, true); EDIT_ITEM(uint8, MSG_INTENSITY_B, &leds.color.b, 0, 255, leds.update, true); - #endif - #if HAS_WHITE_LED - EDIT_ITEM(uint8, MSG_INTENSITY_W, &leds.color.w, 0, 255, leds.update, true); - #endif - #if ENABLED(NEOPIXEL_LED) - EDIT_ITEM(uint8, MSG_LED_BRIGHTNESS, &leds.color.i, 0, 255, leds.update, true); - #endif - - #if ENABLED(NEOPIXEL2_SEPARATE) - STATIC_ITEM_N(2, MSG_LED_CHANNEL_N, SS_DEFAULT|SS_INVERT); - EDIT_ITEM(uint8, MSG_INTENSITY_R, &leds2.color.r, 0, 255, leds2.update, true); - EDIT_ITEM(uint8, MSG_INTENSITY_G, &leds2.color.g, 0, 255, leds2.update, true); - EDIT_ITEM(uint8, MSG_INTENSITY_B, &leds2.color.b, 0, 255, leds2.update, true); - #if HAS_WHITE_LED2 - EDIT_ITEM(uint8, MSG_INTENSITY_W, &leds2.color.w, 0, 255, leds2.update, true); + #if HAS_WHITE_LED + EDIT_ITEM(uint8, MSG_INTENSITY_W, &leds.color.w, 0, 255, leds.update, true); + #endif + #if ENABLED(NEOPIXEL_LED) + EDIT_ITEM(uint8, MSG_LED_BRIGHTNESS, &leds.color.i, 0, 255, leds.update, true); #endif - EDIT_ITEM(uint8, MSG_NEO2_BRIGHTNESS, &leds2.color.i, 0, 255, leds2.update, true); - #endif - END_MENU(); -} + #if ENABLED(NEOPIXEL2_SEPARATE) + STATIC_ITEM_N(2, MSG_LED_CHANNEL_N, SS_DEFAULT|SS_INVERT); + EDIT_ITEM(uint8, MSG_INTENSITY_R, &leds2.color.r, 0, 255, leds2.update, true); + EDIT_ITEM(uint8, MSG_INTENSITY_G, &leds2.color.g, 0, 255, leds2.update, true); + EDIT_ITEM(uint8, MSG_INTENSITY_B, &leds2.color.b, 0, 255, leds2.update, true); + #if HAS_WHITE_LED2 + EDIT_ITEM(uint8, MSG_INTENSITY_W, &leds2.color.w, 0, 255, leds2.update, true); + #endif + EDIT_ITEM(uint8, MSG_NEO2_BRIGHTNESS, &leds2.color.i, 0, 255, leds2.update, true); + #endif + + END_MENU(); + } + +#endif // LED_CONTROL_MENU void menu_led() { #if ENABLED(CASE_LIGHT_MENU) @@ -171,7 +174,9 @@ void menu_led() { // // Directly set RGBW and Brightness // - SUBMENU(MSG_CUSTOM_LEDS, menu_led_custom); + #if ENABLED(LED_CONTROL_MENU) + SUBMENU(MSG_CUSTOM_LEDS, menu_led_custom); + #endif // // Set Case light on/off/brightness From 8da0d0871cf5b6679dc5308f40559e1f41561728 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sat, 7 Feb 2026 00:40:14 +0000 Subject: [PATCH 24/38] [cron] Bump distribution date (2026-02-07) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 8b487e4ac1..4d59fc4c60 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2026-02-06" +//#define STRING_DISTRIBUTION_DATE "2026-02-07" /** * The protocol for communication to the host. Protocol indicates communication diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index bf43efa03e..b77672d867 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2026-02-06" + #define STRING_DISTRIBUTION_DATE "2026-02-07" #endif /** From 12ee7e45f1170d6648d193c7a95cbc5d8cac9217 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 7 Feb 2026 19:20:18 -0600 Subject: [PATCH 25/38] =?UTF-8?q?=F0=9F=8E=A8=20Misc.=20endstop-related=20?= =?UTF-8?q?tweaks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/feature/backlash.cpp | 8 ++--- Marlin/src/feature/backlash.h | 2 +- Marlin/src/gcode/calibrate/M425.cpp | 16 +++++----- Marlin/src/module/endstops.cpp | 41 +++++++++++++++++++------- Marlin/src/module/ft_motion.cpp | 2 +- Marlin/src/module/ft_motion/stepping.h | 7 ++--- Marlin/src/module/planner.cpp | 2 +- Marlin/src/module/planner.h | 2 +- 8 files changed, 49 insertions(+), 31 deletions(-) diff --git a/Marlin/src/feature/backlash.cpp b/Marlin/src/feature/backlash.cpp index 3b9d78cb2e..2de0aa00ef 100644 --- a/Marlin/src/feature/backlash.cpp +++ b/Marlin/src/feature/backlash.cpp @@ -29,7 +29,7 @@ #include "../module/motion.h" #include "../module/planner.h" -AxisBits Backlash::last_direction_bits; +AxisBits Backlash::last_direction; xyz_long_t Backlash::residual_error{0}; #ifdef BACKLASH_DISTANCE_MM @@ -64,7 +64,7 @@ Backlash backlash; */ void Backlash::add_correction_steps(const xyze_long_t &dist, const AxisBits dm, block_t * const block) { - AxisBits changed_dir = last_direction_bits ^ dm; + AxisBits changed_dir = last_direction ^ dm; // Ignore direction change unless steps are taken in that direction #if DISABLED(CORE_BACKLASH) || ANY(MARKFORGED_XY, MARKFORGED_YX) if (!dist.a) changed_dir.x = false; @@ -83,7 +83,7 @@ void Backlash::add_correction_steps(const xyze_long_t &dist, const AxisBits dm, if (!(dist.b - dist.c)) changed_dir.z = false; if (!dist.a) changed_dir.x = false; #endif - last_direction_bits ^= changed_dir; + last_direction ^= changed_dir; if (!correction && !residual_error) return; @@ -167,7 +167,7 @@ void Backlash::add_correction_steps(const xyze_long_t &dist, const AxisBits dm, int32_t Backlash::get_applied_steps(const AxisEnum axis) { if (axis >= NUM_AXES) return 0; - const bool forward = last_direction_bits[axis]; + const bool forward = last_direction[axis]; const int32_t residual_error_axis = residual_error[axis]; diff --git a/Marlin/src/feature/backlash.h b/Marlin/src/feature/backlash.h index b4790cb161..39c55ea21c 100644 --- a/Marlin/src/feature/backlash.h +++ b/Marlin/src/feature/backlash.h @@ -29,7 +29,7 @@ public: static constexpr uint8_t all_on = 0xFF, all_off = 0x00; private: - static AxisBits last_direction_bits; + static AxisBits last_direction; static xyz_long_t residual_error; #if ENABLED(BACKLASH_GCODE) diff --git a/Marlin/src/gcode/calibrate/M425.cpp b/Marlin/src/gcode/calibrate/M425.cpp index 5dab92a307..d95bfcd7e5 100644 --- a/Marlin/src/gcode/calibrate/M425.cpp +++ b/Marlin/src/gcode/calibrate/M425.cpp @@ -32,14 +32,14 @@ /** * M425: Enable and tune backlash correction. * - * F Enable/disable/fade-out backlash correction (0.0 to 1.0) - * S Distance over which backlash correction is spread - * X Set the backlash distance on X (0 to disable) - * Y ... on Y - * Z ... on Z - * X If a backlash measurement was done on X, copy that value - * Y ... on Y - * Z ... on Z + * F Enable/disable/fade-out backlash correction (0.0 to 1.0) + * S Distance over which backlash correction is spread + * X Set the backlash distance on X (0 to disable) + * Y ... on Y + * Z ... on Z + * X If a backlash measurement was done on X, copy that value + * Y ... on Y + * Z ... on Z * * Type M425 without any arguments to show active values. */ diff --git a/Marlin/src/module/endstops.cpp b/Marlin/src/module/endstops.cpp index 5b7be5d00c..323a31e320 100644 --- a/Marlin/src/module/endstops.cpp +++ b/Marlin/src/module/endstops.cpp @@ -77,17 +77,6 @@ bool Endstops::enabled, Endstops::enabled_globally; // Initialized by settings.l volatile Endstops::endstop_mask_t Endstops::hit_state; Endstops::endstop_mask_t Endstops::live_state = 0; -#if ENABLED(BD_SENSOR) - bool Endstops::bdp_state; // = false - #if HOMING_Z_WITH_PROBE - #define READ_ENDSTOP(P) ((P == TERN(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN, Z_MIN_PIN, Z_MIN_PROBE_PIN)) ? bdp_state : READ(P)) - #else - #define READ_ENDSTOP(P) READ(P) - #endif -#else - #define READ_ENDSTOP(P) READ(P) -#endif - #if ENDSTOP_NOISE_THRESHOLD Endstops::endstop_mask_t Endstops::validated_live_state; uint8_t Endstops::endstop_poll_count; @@ -97,11 +86,34 @@ Endstops::endstop_mask_t Endstops::live_state = 0; volatile bool Endstops::z_probe_enabled = false; #endif +// +// Standard Endstop READ +// +#define READ_ENDSTOP(P) READ(P) + +// +// Bed Distance Sensor +// +#if ENABLED(BD_SENSOR) + bool Endstops::bdp_state; // = false + #if HOMING_Z_WITH_PROBE + #undef READ_ENDSTOP + #define READ_ENDSTOP(P) ((P == TERN(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN, Z_MIN_PIN, Z_MIN_PROBE_PIN)) ? bdp_state : READ(P)) + #endif +#endif + +// +// Calibration Probe +// #if ENABLED(CALIBRATION_GCODE) volatile bool Endstops::calibration_probe_enabled = false; volatile bool Endstops::calibration_stop_state; #endif +// +// Multi-Endstop Alignment +// + // Initialized by settings.load #if ENABLED(X_DUAL_ENDSTOPS) float Endstops::x2_endstop_adj; @@ -119,9 +131,16 @@ Endstops::endstop_mask_t Endstops::live_state = 0; #endif #endif +// +// SPI Endstops +// #if ENABLED(SPI_ENDSTOPS) Endstops::tmc_spi_homing_t Endstops::tmc_spi_homing; // = 0 #endif + +// +// StallGuard Debounce +// #if ENABLED(IMPROVE_HOMING_RELIABILITY) millis_t sg_guard_period; // = 0 #endif diff --git a/Marlin/src/module/ft_motion.cpp b/Marlin/src/module/ft_motion.cpp index d2876404e0..e59536f434 100644 --- a/Marlin/src/module/ft_motion.cpp +++ b/Marlin/src/module/ft_motion.cpp @@ -409,7 +409,7 @@ bool FTMotion::plan_next_block() { const float totalLength = current_block->millimeters; startPos = endPos_prevBlock; - const xyze_pos_t& moveDist = current_block->dist_mm; + const xyze_pos_t &moveDist = current_block->distance_mm; ratio = moveDist / totalLength; // Plan the trajectory using the trajectory generator diff --git a/Marlin/src/module/ft_motion/stepping.h b/Marlin/src/module/ft_motion/stepping.h index 636945ac06..e389e56c3c 100644 --- a/Marlin/src/module/ft_motion/stepping.h +++ b/Marlin/src/module/ft_motion/stepping.h @@ -67,8 +67,7 @@ typedef struct Stepping { // ISR part // - AxisBits dir_bits; - AxisBits step_bits; + AxisBits dir_bits, step_bits; xyze_ulong_t axis_interval_fp{ LOGICAL_AXIS_LIST_1(FTM_NEVER) }; xyze_ulong_t ticks_left_per_axis_fp{ LOGICAL_AXIS_LIST_1(FTM_NEVER) }; @@ -78,7 +77,7 @@ typedef struct Stepping { // generating the next step pulse. The call is inexpensive: // - no heap, no locks – pure arithmetic on pre-computed data FORCE_INLINE uint32_t advance_until_step() { - step_bits = 0; + step_bits.reset(); uint32_t ticks_to_wait_fp = 0; for (;;) { @@ -140,7 +139,7 @@ typedef struct Stepping { } FORCE_INLINE void reset() { - step_bits = 0; + step_bits.reset(); axis_interval_fp = FTM_NEVER; ticks_left_per_axis_fp = FTM_NEVER; ticks_left_in_frame_fp = 0; diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp index 4ed9d9c0cd..2d1e5dd219 100644 --- a/Marlin/src/module/planner.cpp +++ b/Marlin/src/module/planner.cpp @@ -2060,7 +2060,7 @@ bool Planner::_populate_block( TERN_(BACKLASH_COMPENSATION, backlash.add_correction_steps(dist, dm, block)); } - TERN_(FT_MOTION, block->dist_mm = dist_mm); // Store the distance for all axes in mm for this block + TERN_(FT_MOTION, block->distance_mm = dist_mm); // Store the distance for all axes in mm for this block TERN_(HAS_EXTRUDERS, block->steps.e = esteps); diff --git a/Marlin/src/module/planner.h b/Marlin/src/module/planner.h index cdcf553698..02150451b6 100644 --- a/Marlin/src/module/planner.h +++ b/Marlin/src/module/planner.h @@ -262,7 +262,7 @@ typedef struct PlannerBlock { AxisBits direction_bits; // Direction bits set for this block, where 1 is negative motion #if ENABLED(FT_MOTION) - xyze_pos_t dist_mm; // The distance traveled in mm along each axis + xyze_pos_t distance_mm; // The distance traveled in mm along each axis #endif #if ANY(SMOOTH_LIN_ADVANCE, FTM_HAS_LIN_ADVANCE) From 4eea9e5d7bbcbeed5b40d9fc5ab30d51f3c03f7f Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Sun, 8 Feb 2026 06:23:41 +0000 Subject: [PATCH 26/38] [cron] Bump distribution date (2026-02-08) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 4d59fc4c60..126bd2b7d2 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2026-02-07" +//#define STRING_DISTRIBUTION_DATE "2026-02-08" /** * The protocol for communication to the host. Protocol indicates communication diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index b77672d867..7962fa5472 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2026-02-07" + #define STRING_DISTRIBUTION_DATE "2026-02-08" #endif /** From e524a9841817b1aec8405b5238b7dcfba37cbeb7 Mon Sep 17 00:00:00 2001 From: David Buezas Date: Sun, 8 Feb 2026 21:19:14 +0100 Subject: [PATCH 27/38] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20Buffer=20Runtime=20f?= =?UTF-8?q?or=20FT=20Motion=20(#28327)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/marlinui.cpp | 14 +++++++++++++- Marlin/src/module/ft_motion/stepping.h | 7 +++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index d1d4bfd0a6..0c5a0b83a7 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -337,6 +337,9 @@ void MarlinUI::init() { #include "lcdprint.h" #include "../module/planner.h" + #if ENABLED(FT_MOTION) + #include "../module/ft_motion.h" + #endif #include "../module/motion.h" #if HAS_MARLINUI_MENU @@ -1161,8 +1164,17 @@ void MarlinUI::init() { } if (lcd_update_ms_elapsed || drawing_screen) { + const auto buffer_runtime = [&]() -> uint16_t { + #if ENABLED(FT_MOTION) + // In ftmotion, the isr only looks at the stepping buffer and the planner buffer is + // consumed from the idle loop. + if (ftMotion.cfg.active) return ftMotion.stepping.buffer_runtime(); + #endif + return planner.block_buffer_runtime(); + }; + // Then we want to use only 50% of the time - const uint16_t bbr2 = planner.block_buffer_runtime() >> 1; + const uint16_t bbr2 = buffer_runtime() >> 1; if ((should_draw() || drawing_screen) && (!bbr2 || bbr2 > max_display_update_time)) { diff --git a/Marlin/src/module/ft_motion/stepping.h b/Marlin/src/module/ft_motion/stepping.h index e389e56c3c..f14aa6372a 100644 --- a/Marlin/src/module/ft_motion/stepping.h +++ b/Marlin/src/module/ft_motion/stepping.h @@ -251,4 +251,11 @@ typedef struct Stepping { return ((stepper_plan_head + 1) & FTM_BUFFER_MASK) == stepper_plan_tail; } + // Buffer runtime in milliseconds (ignoring ticks left in current frame) + FORCE_INLINE uint16_t buffer_runtime() const { + const uint32_t queued_frames = (stepper_plan_head - stepper_plan_tail) & FTM_BUFFER_MASK; + const uint32_t queued_ms = queued_frames * (1000UL * FTM_TS); + return queued_ms; + } + } stepping_t; From 544f9e610497928437309b06c3a9e121728022bd Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 7 Feb 2026 19:47:24 -0600 Subject: [PATCH 28/38] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20Run=20motion=20logic?= =?UTF-8?q?=20before=20UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/MarlinCore.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp index 94d0bce188..5897ee7274 100644 --- a/Marlin/src/MarlinCore.cpp +++ b/Marlin/src/MarlinCore.cpp @@ -853,6 +853,17 @@ void Marlin::idle(const bool no_stepper_sleep/*=false*/) { // Update the Beeper queue TERN_(HAS_BEEPER, buzzer.tick()); + // Async Babystepping via the Emergency Parser + #if ALL(EP_BABYSTEPPING, EMERGENCY_PARSER) + babystep.do_ep_steps(); + #endif + + // Direct Stepping + TERN_(DIRECT_STEPPING, page_manager.write_responses()); + + // Manage Fixed-time Motion Control + TERN_(FT_MOTION, ftMotion.loop()); + // Handle UI input / draw events #if ENABLED(SOVOL_SV06_RTS) RTS_Update(); @@ -895,20 +906,9 @@ void Marlin::idle(const bool no_stepper_sleep/*=false*/) { // Handle Joystick jogging TERN_(POLL_JOG, joystick.inject_jog_moves()); - // Async Babystepping via the Emergency Parser - #if ALL(EP_BABYSTEPPING, EMERGENCY_PARSER) - babystep.do_ep_steps(); - #endif - - // Direct Stepping - TERN_(DIRECT_STEPPING, page_manager.write_responses()); - // Update the LVGL interface TERN_(HAS_TFT_LVGL_UI, LV_TASK_HANDLER()); - // Manage Fixed-time Motion Control - TERN_(FT_MOTION, ftMotion.loop()); - IDLE_DONE: TERN_(MARLIN_DEV_MODE, idle_depth--); From bdc57af40c1114fc7bcb9d267d0386a6977ec596 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 8 Feb 2026 14:00:58 -0600 Subject: [PATCH 29/38] =?UTF-8?q?=F0=9F=8C=90=20Language=20export=20-l=20a?= =?UTF-8?q?rgument?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- buildroot/share/scripts/languageExport.py | 30 ++++++++++++++--------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/buildroot/share/scripts/languageExport.py b/buildroot/share/scripts/languageExport.py index 0b981f0587..72e851af6d 100755 --- a/buildroot/share/scripts/languageExport.py +++ b/buildroot/share/scripts/languageExport.py @@ -34,7 +34,13 @@ def language_export(args={}): # Skip 'test' and any others that we don't want if langcode in ['test']: continue - if langcode != 'en' and args.languages and langcode not in args.languages: continue + + # Allow space-delimited list or multiple arguments + if args.language: + language_args = args.language[0].split(' ') if ' ' in args.language[0] else args.language + + # Always load canonical US English and specified (or all other) languages + if langcode != 'en' and language_args and langcode not in language_args: continue # Open the file f = open(langfile, 'r', encoding='utf-8') @@ -80,8 +86,9 @@ def language_export(args={}): value = re.sub(r'"(.*?)"', r'\1', value).replace('$$$', '""') # Store all unique names as dictionary keys names[name] = 1 - # Store the string as narrow or wide - strings['tall' if tallflag else 'wide' if wideflag else 'narrow'][name] = value + # Store the string as narrow, wide, tall + section = 'tall' if tallflag else 'wide' if wideflag else 'narrow' + strings[section][name] = value # Increment the string counter stringcount += 1 @@ -96,7 +103,8 @@ def language_export(args={}): # Get the codes of all imported languages langcodes = list(language_strings.keys()) - print("Languages:", ' '.join(langcodes)) + if args.verbose: + print("Languages:", ' '.join(langcodes)) # Print the array #print(language_strings) @@ -263,13 +271,13 @@ if __name__ == "__main__": # Parse and validate all arguments parser = argparse.ArgumentParser(description="Export LCD language strings to CSV with optional translation") - parser.add_argument('-l', '--languages', action="append", default=None, help="Languages to translate (otherwise all)") - parser.add_argument('-s', '--single', action="store_true", help="Output a single spreadsheet (languages.csv)") - parser.add_argument('-v', '--verbose', action="store_true", help="Extra output for debugging") - parser.add_argument('-n', '--limit', default=0, help="Limit the number of exported items") - parser.add_argument('-t', '--translate', action="store_true", help="Use an LLM to translate strings") - parser.add_argument('-d', '--dothink', action="store_true", help="Use thinking if the model supports it") - parser.add_argument('-m', '--model', default=None, help="Override the default LLM model for translation") + parser.add_argument('-l', '--language', action="append", default=None, help="specify language(s) to translate from canonical English") + parser.add_argument('-s', '--single', action="store_true", help="output a single spreadsheet (languages.csv)") + parser.add_argument('-v', '--verbose', action="store_true", help="extra output for debugging") + parser.add_argument('-n', '--limit', default=0, help="limit the number of exported items") + parser.add_argument('-t', '--translate', action="store_true", help="use an LLM to translate strings") + parser.add_argument('-d', '--dothink', action="store_true", help="use thinking if the model supports it") + parser.add_argument('-m', '--model', default=None, help="override the default LLM model for translation") args = parser.parse_args() if not args.translate: From 0e4d82b6803b50b295e58f82a7cab266efe1d152 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Mon, 9 Feb 2026 00:44:53 +0000 Subject: [PATCH 30/38] [cron] Bump distribution date (2026-02-09) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 126bd2b7d2..563aeee641 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2026-02-08" +//#define STRING_DISTRIBUTION_DATE "2026-02-09" /** * The protocol for communication to the host. Protocol indicates communication diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 7962fa5472..62334904f4 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2026-02-08" + #define STRING_DISTRIBUTION_DATE "2026-02-09" #endif /** From eba2e7b6698ba780e0faacef944821fdff468d30 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 9 Feb 2026 09:47:21 -0600 Subject: [PATCH 31/38] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Renam?= =?UTF-8?q?e=20plan=20pos=20elements?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/types.h | 64 ++++++------- Marlin/src/module/ft_motion.cpp | 16 ++-- Marlin/src/module/planner.cpp | 158 ++++++++++++++++---------------- Marlin/src/module/stepper.cpp | 2 +- 4 files changed, 121 insertions(+), 119 deletions(-) diff --git a/Marlin/src/core/types.h b/Marlin/src/core/types.h index 159a2e265c..96ce9716d2 100644 --- a/Marlin/src/core/types.h +++ b/Marlin/src/core/types.h @@ -723,28 +723,28 @@ struct XYZval { // Setters with fewer elements leave the rest untouched #if HAS_Y_AXIS - FI void set(const T px) { x = px; } + FI void set(const T px) { x = px; } #endif #if HAS_Z_AXIS - FI void set(const T px, const T py) { x = px; y = py; } + FI void set(const T px, const T py) { set(px); y = py; } #endif #if HAS_I_AXIS - FI void set(const T px, const T py, const T pz) { x = px; y = py; z = pz; } + FI void set(const T px, const T py, const T pz) { set(px, py); z = pz; } #endif #if HAS_J_AXIS - FI void set(const T px, const T py, const T pz, const T pi) { x = px; y = py; z = pz; i = pi; } + FI void set(const T px, const T py, const T pz, const T pi) { set(px, py, pz); i = pi; } #endif #if HAS_K_AXIS - FI void set(const T px, const T py, const T pz, const T pi, const T pj) { x = px; y = py; z = pz; i = pi; j = pj; } + FI void set(const T px, const T py, const T pz, const T pi, const T pj) { set(px, py, pz, pi); j = pj; } #endif #if HAS_U_AXIS - FI void set(const T px, const T py, const T pz, const T pi, const T pj, const T pk) { x = px; y = py; z = pz; i = pi; j = pj; k = pk; } + FI void set(const T px, const T py, const T pz, const T pi, const T pj, const T pk) { set(px, py, pz, pi, pj); k = pk; } #endif #if HAS_V_AXIS - FI void set(const T px, const T py, const T pz, const T pi, const T pj, const T pk, const T pu) { x = px; y = py; z = pz; i = pi; j = pj; k = pk; u = pu; } + FI void set(const T px, const T py, const T pz, const T pi, const T pj, const T pk, const T pu) { set(px, py, pz, pi, pj, pk); u = pu; } #endif #if HAS_W_AXIS - FI void set(const T px, const T py, const T pz, const T pi, const T pj, const T pk, const T pu, const T pv) { x = px; y = py; z = pz; i = pi; j = pj; k = pk; u = pu; v = pv; } + FI void set(const T px, const T py, const T pz, const T pi, const T pj, const T pk, const T pu, const T pv) { set(px, py, pz, pi, pj, pk, pu); v = pv; } #endif // Length reduced to one dimension @@ -872,7 +872,7 @@ struct XYZEval { T pos[LOGICAL_AXES]; }; // Reset all to 0 - FI void reset() { LOGICAL_AXIS_GANG(e =, x =, y =, z =, i =, j =, k =, u =, v =, w =) 0; } + FI void reset() { LOGICAL_AXIS_GANG(e =, x =, y =, z =, i =, j =, k =, u =, v =, w =) 0; } // Setters taking struct types and arrays FI void set(const XYval &pxy) { XY_CODE(x = pxy.x, y = pxy.y); } @@ -897,25 +897,25 @@ struct XYZEval { FI void set(const T px) { x = px; } #endif #if HAS_Z_AXIS - FI void set(const T px, const T py) { x = px; y = py; } + FI void set(const T px, const T py) { set(px); y = py; } #endif #if HAS_I_AXIS - FI void set(const T px, const T py, const T pz) { x = px; y = py; z = pz; } + FI void set(const T px, const T py, const T pz) { set(px, py); z = pz; } #endif #if HAS_J_AXIS - FI void set(const T px, const T py, const T pz, const T pi) { x = px; y = py; z = pz; i = pi; } + FI void set(const T px, const T py, const T pz, const T pi) { set(px, py, pz); i = pi; } #endif #if HAS_K_AXIS - FI void set(const T px, const T py, const T pz, const T pi, const T pj) { x = px; y = py; z = pz; i = pi; j = pj; } + FI void set(const T px, const T py, const T pz, const T pi, const T pj) { set(px, py, pz, pi); j = pj; } #endif #if HAS_U_AXIS - FI void set(const T px, const T py, const T pz, const T pi, const T pj, const T pk) { x = px; y = py; z = pz; i = pi; j = pj; k = pk; } + FI void set(const T px, const T py, const T pz, const T pi, const T pj, const T pk) { set(px, py, pz, pi, pj); k = pk; } #endif #if HAS_V_AXIS - FI void set(const T px, const T py, const T pz, const T pi, const T pj, const T pk, const T pu) { x = px; y = py; z = pz; i = pi; j = pj; k = pk; u = pu; } + FI void set(const T px, const T py, const T pz, const T pi, const T pj, const T pk, const T pu) { set(px, py, pz, pi, pj, pk); u = pu; } #endif #if HAS_W_AXIS - FI void set(const T px, const T py, const T pz, const T pi, const T pj, const T pk, const T pu, const T pv) { x = px; y = py; z = pz; i = pi; j = pj; k = pk; u = pu; v = pv; } + FI void set(const T px, const T py, const T pz, const T pi, const T pj, const T pk, const T pu, const T pv) { set(px, py, pz, pi, pj, pk, pu); v = pv; } #endif // Length reduced to one dimension @@ -1059,28 +1059,28 @@ struct XYZarray { // Setters with fewer elements leave the rest untouched #if HAS_Y_AXIS - FI void set(const int n, const T px) { x[n] = px; } + FI void set(const int n, const T px) { x[n] = px; } #endif #if HAS_Z_AXIS - FI void set(const int n, const T px, const T py) { x[n] = px; y[n] = py; } + FI void set(const int n, const T px, const T py) { set(n, px); y[n] = py; } #endif #if HAS_I_AXIS - FI void set(const int n, const T px, const T py, const T pz) { x[n] = px; y[n] = py; z[n] = pz; } + FI void set(const int n, const T px, const T py, const T pz) { set(n, px, py); z[n] = pz; } #endif #if HAS_J_AXIS - FI void set(const int n, const T px, const T py, const T pz, const T pi) { x[n] = px; y[n] = py; z[n] = pz; i[n] = pi; } + FI void set(const int n, const T px, const T py, const T pz, const T pi) { set(n, px, py, pz); i[n] = pi; } #endif #if HAS_K_AXIS - FI void set(const int n, const T px, const T py, const T pz, const T pi, const T pj) { x[n] = px; y[n] = py; z[n] = pz; i[n] = pi; j[n] = pj; } + FI void set(const int n, const T px, const T py, const T pz, const T pi, const T pj) { set(n, px, py, pz, pi); j[n] = pj; } #endif #if HAS_U_AXIS - FI void set(const int n, const T px, const T py, const T pz, const T pi, const T pj, const T pk) { x[n] = px; y[n] = py; z[n] = pz; i[n] = pi; j[n] = pj; k[n] = pk; } + FI void set(const int n, const T px, const T py, const T pz, const T pi, const T pj, const T pk) { set(n, px, py, pz, pi, pj); k[n] = pk; } #endif #if HAS_V_AXIS - FI void set(const int n, const T px, const T py, const T pz, const T pi, const T pj, const T pk, const T pu) { x[n] = px; y[n] = py; z[n] = pz; i[n] = pi; j[n] = pj; k[n] = pk; u[n] = pu; } + FI void set(const int n, const T px, const T py, const T pz, const T pi, const T pj, const T pk, const T pu) { set(n, px, py, pz, pi, pj, pk); u[n] = pu; } #endif #if HAS_W_AXIS - FI void set(const int n, const T px, const T py, const T pz, const T pi, const T pj, const T pk, const T pu, const T pv) { x[n] = px; y[n] = py; z[n] = pz; i[n] = pi; j[n] = pj; k[n] = pk; u[n] = pu; v[n] = pv; } + FI void set(const int n, const T px, const T py, const T pz, const T pi, const T pj, const T pk, const T pu, const T pv) { set(n, px, py, pz, pi, pj, pk, pu); v[n] = pv; } #endif FI XYZval operator[](const int n) const { return XYZval(NUM_AXIS_ARRAY(x[n], y[n], z[n], i[n], j[n], k[n], u[n], v[n], w[n])); } @@ -1145,7 +1145,7 @@ public: typedef bits_t(NUM_AXIS_HEADS) el; union { el bits; - // Axes x, y, z ... e0, e1, e2 ... hx, hy, hz + // Axes x, y, z ... e0, e1, e2 ... rx, ry, rz struct { #if NUM_AXES bool NUM_AXIS_LIST(x:1, y:1, z:1, i:1, j:1, k:1, u:1, v:1, w:1); @@ -1154,10 +1154,10 @@ public: REPEAT(EXTRUDERS,_EN_ITEM) #undef _EN_ITEM #if ANY(IS_CORE, MARKFORGED_XY, MARKFORGED_YX) - bool hx:1, hy:1, hz:1; + bool rx:1, ry:1, rz:1; #endif }; - // Axes X, Y, Z ... E0, E1, E2 ... HX, HY, HZ + // Axes X, Y, Z ... E0, E1, E2 ... RX, RY, RZ struct { #if NUM_AXES bool NUM_AXIS_LIST(X:1, Y:1, Z:1, I:1, J:1, K:1, U:1, V:1, W:1); @@ -1166,10 +1166,10 @@ public: REPEAT(EXTRUDERS,_EN_ITEM) #undef _EN_ITEM #if ANY(IS_CORE, MARKFORGED_XY, MARKFORGED_YX) - bool HX:1, HY:1, HZ:1; + bool RX:1, RY:1, RZ:1; #endif }; - // a, b, c, e ... ha, hb, hc + // a, b, c, e ... ra, rb, rc struct { bool LOGICAL_AXIS_LIST(e:1, a:1, b:1, c:1, ii:1, jj:1, kk:1, uu:1, vv:1, ww:1); #if EXTRUDERS > 1 @@ -1178,10 +1178,10 @@ public: #undef _EN_ITEM #endif #if ANY(IS_CORE, MARKFORGED_XY, MARKFORGED_YX) - bool ha:1, hb:1, hc:1; + bool ra:1, rb:1, rc:1; #endif }; - // A, B, C, E ... HA, HB, HC + // A, B, C, E ... RA, RB, RC struct { bool LOGICAL_AXIS_LIST(E:1, A:1, B:1, C:1, II:1, JJ:1, KK:1, UU:1, VV:1, WW:1); #if EXTRUDERS > 1 @@ -1190,7 +1190,7 @@ public: #undef _EN_ITEM #endif #if ANY(IS_CORE, MARKFORGED_XY, MARKFORGED_YX) - bool HA:1, HB:1, HC:1; + bool RA:1, RB:1, RC:1; #endif }; }; diff --git a/Marlin/src/module/ft_motion.cpp b/Marlin/src/module/ft_motion.cpp index e59536f434..3e8895ad05 100644 --- a/Marlin/src/module/ft_motion.cpp +++ b/Marlin/src/module/ft_motion.cpp @@ -353,10 +353,10 @@ FSTR_P FTMotion::getTrajectoryName() { // Called from FTMotion::loop() at the fetch of the next planner block. // Return whether a plan is available. bool FTMotion::plan_next_block() { - while (true) { + for (;;) { const bool had_block = !!stepper.current_block; - discard_planner_block_protected(); // Always clears stepper.current_block... + discard_planner_block_protected(); // Always clears stepper.current_block... block_t * const current_block = planner.get_current_block(); // ...so get the current block from the queue // The planner had a block and there was not another one? @@ -380,6 +380,8 @@ bool FTMotion::plan_next_block() { if (current_block->is_sync_pos()) stepper._set_position(current_block->position); continue; } + + // Keep extruder position within float precision ensure_extruder_float_precision(); #if ENABLED(POWER_LOSS_RECOVERY) @@ -387,15 +389,15 @@ bool FTMotion::plan_next_block() { recovery.info.current_position = current_block->start_position; #endif - // Some kinematics track axis motion in HX, HY, HZ + // Some kinematics track axis motion in RX, RY, RZ #if ANY(CORE_IS_XY, CORE_IS_XZ, MARKFORGED_XY, MARKFORGED_YX) - stepper.last_direction_bits.hx = current_block->direction_bits.hx; + stepper.last_direction_bits.rx = current_block->direction_bits.rx; #endif #if ANY(CORE_IS_XY, CORE_IS_YZ, MARKFORGED_XY, MARKFORGED_YX) - stepper.last_direction_bits.hy = current_block->direction_bits.hy; + stepper.last_direction_bits.ry = current_block->direction_bits.ry; #endif #if ANY(CORE_IS_XZ, CORE_IS_YZ) - stepper.last_direction_bits.hz = current_block->direction_bits.hz; + stepper.last_direction_bits.rz = current_block->direction_bits.rz; #endif // Cache the extruder index / axis for this block @@ -430,7 +432,7 @@ bool FTMotion::plan_next_block() { endstops.update(); return true; - } + } // infinite loop } #if HAS_EXTRUDERS diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp index 2d1e5dd219..59879d6bc6 100644 --- a/Marlin/src/module/planner.cpp +++ b/Marlin/src/module/planner.cpp @@ -1781,56 +1781,56 @@ bool Planner::_populate_block( , feedRate_t fr_mm_s, const uint8_t extruder, const PlannerHints &hints , float &minimum_planner_speed_sqr ) { - xyze_long_t dist = target - position; + xyze_long_t steps_dist = target - position; /* <-- add a slash to enable SERIAL_ECHOLNPGM( " _populate_block FR:", fr_mm_s, #if HAS_X_AXIS - " " STR_A ":", target.a, " (", dist.a, " steps)" + " " STR_A ":", target.a, " (", steps_dist.a, " steps)" #endif #if HAS_Y_AXIS - " " STR_B ":", target.b, " (", dist.b, " steps)" + " " STR_B ":", target.b, " (", steps_dist.b, " steps)" #endif #if HAS_Z_AXIS - " " STR_C ":", target.c, " (", dist.c, " steps)" + " " STR_C ":", target.c, " (", steps_dist.c, " steps)" #endif #if HAS_I_AXIS - " " STR_I ":", target.i, " (", dist.i, " steps)" + " " STR_I ":", target.i, " (", steps_dist.i, " steps)" #endif #if HAS_J_AXIS - " " STR_J ":", target.j, " (", dist.j, " steps)" + " " STR_J ":", target.j, " (", steps_dist.j, " steps)" #endif #if HAS_K_AXIS - " " STR_K ":", target.k, " (", dist.k, " steps)" + " " STR_K ":", target.k, " (", steps_dist.k, " steps)" #endif #if HAS_U_AXIS - " " STR_U ":", target.u, " (", dist.u, " steps)" + " " STR_U ":", target.u, " (", steps_dist.u, " steps)" #endif #if HAS_V_AXIS - " " STR_V ":", target.v, " (", dist.v, " steps)" + " " STR_V ":", target.v, " (", steps_dist.v, " steps)" #endif #if HAS_W_AXIS - " " STR_W ":", target.w, " (", dist.w, " steps)" + " " STR_W ":", target.w, " (", steps_dist.w, " steps)" #endif #if HAS_EXTRUDERS - " E:", target.e, " (", dist.e, " steps)" + " E:", target.e, " (", steps_dist.e, " steps)" #endif ); //*/ #if ANY(PREVENT_COLD_EXTRUSION, PREVENT_LENGTHY_EXTRUDE) - if (dist.e) { + if (steps_dist.e) { #if ENABLED(PREVENT_COLD_EXTRUSION) if (thermalManager.tooColdToExtrude(extruder)) { position.e = target.e; // Behave as if the move really took place, but ignore E part TERN_(HAS_POSITION_FLOAT, position_float.e = target_float.e); - dist.e = 0; // no difference + steps_dist.e = 0; // no difference SERIAL_ECHO_MSG(STR_ERR_COLD_EXTRUDE_STOP); } #endif // PREVENT_COLD_EXTRUSION #if ENABLED(PREVENT_LENGTHY_EXTRUDE) - const float e_steps = ABS(dist.e * e_factor[extruder]); + const float e_steps = ABS(steps_dist.e * e_factor[extruder]); const float max_e_steps = settings.axis_steps_per_mm[E_AXIS_N(extruder)] * (EXTRUDE_MAXLENGTH); if (e_steps > max_e_steps) { #if ENABLED(MIXING_EXTRUDER) @@ -1845,7 +1845,7 @@ bool Planner::_populate_block( if (ignore_e) { position.e = target.e; // Behave as if the move really took place, but ignore E part TERN_(HAS_POSITION_FLOAT, position_float.e = target_float.e); - dist.e = 0; // no difference + steps_dist.e = 0; // no difference SERIAL_ECHO_MSG(STR_ERR_LONG_EXTRUDE_STOP); } } @@ -1856,50 +1856,50 @@ bool Planner::_populate_block( // Compute direction bit-mask for this block AxisBits dm; #if ANY(CORE_IS_XY, CORE_IS_XZ, MARKFORGED_XY, MARKFORGED_YX) - dm.hx = (dist.a > 0); // True direction in X + dm.rx = (steps_dist.a > 0); // True direction in X #endif #if ANY(CORE_IS_XY, CORE_IS_YZ, MARKFORGED_XY, MARKFORGED_YX) - dm.hy = (dist.b > 0); // True direction in Y + dm.ry = (steps_dist.b > 0); // True direction in Y #endif #if ANY(CORE_IS_XZ, CORE_IS_YZ) - dm.hz = (dist.c > 0); // True direction in Z + dm.rz = (steps_dist.c > 0); // True direction in Z #endif #if CORE_IS_XY - dm.a = (dist.a + dist.b > 0); // Motor A direction - dm.b = (CORESIGN(dist.a - dist.b) > 0); // Motor B direction - TERN_(HAS_Z_AXIS, dm.z = (dist.c > 0)); // Axis Z direction + dm.a = (steps_dist.a + steps_dist.b > 0); // Motor A direction + dm.b = (CORESIGN(steps_dist.a - steps_dist.b) > 0); // Motor B direction + TERN_(HAS_Z_AXIS, dm.z = (steps_dist.c > 0)); // Axis Z direction #elif CORE_IS_XZ - dm.a = (dist.a + dist.c > 0); // Motor A direction - dm.y = (dist.b > 0); // Axis Y direction - dm.c = (CORESIGN(dist.a - dist.c) > 0); // Motor C direction + dm.a = (steps_dist.a + steps_dist.c > 0); // Motor A direction + dm.y = (steps_dist.b > 0); // Axis Y direction + dm.c = (CORESIGN(steps_dist.a - steps_dist.c) > 0); // Motor C direction #elif CORE_IS_YZ - dm.x = (dist.a > 0); // Axis X direction - dm.b = (dist.b + dist.c > 0); // Motor B direction - dm.c = (CORESIGN(dist.b - dist.c) > 0); // Motor C direction + dm.x = (steps_dist.a > 0); // Axis X direction + dm.b = (steps_dist.b + steps_dist.c > 0); // Motor B direction + dm.c = (CORESIGN(steps_dist.b - steps_dist.c) > 0); // Motor C direction #elif ENABLED(MARKFORGED_XY) - dm.a = (dist.a TERN(MARKFORGED_INVERSE, -, +) dist.b > 0); // Motor A direction - dm.b = (dist.b > 0); // Motor B direction - TERN_(HAS_Z_AXIS, dm.z = (dist.c > 0)); // Axis Z direction + dm.a = (steps_dist.a TERN(MARKFORGED_INVERSE, -, +) steps_dist.b > 0); // Motor A direction + dm.b = (steps_dist.b > 0); // Motor B direction + TERN_(HAS_Z_AXIS, dm.z = (steps_dist.c > 0)); // Axis Z direction #elif ENABLED(MARKFORGED_YX) - dm.a = (dist.a > 0); // Motor A direction - dm.b = (dist.b TERN(MARKFORGED_INVERSE, -, +) dist.a > 0); // Motor B direction - TERN_(HAS_Z_AXIS, dm.z = (dist.c > 0)); // Axis Z direction + dm.a = (steps_dist.a > 0); // Motor A direction + dm.b = (steps_dist.b TERN(MARKFORGED_INVERSE, -, +) steps_dist.a > 0); // Motor B direction + TERN_(HAS_Z_AXIS, dm.z = (steps_dist.c > 0)); // Axis Z direction #else XYZ_CODE( - dm.x = (dist.a > 0), - dm.y = (dist.b > 0), - dm.z = (dist.c > 0) + dm.x = (steps_dist.a > 0), + dm.y = (steps_dist.b > 0), + dm.z = (steps_dist.c > 0) ); #endif SECONDARY_AXIS_CODE( - dm.i = (dist.i > 0), dm.j = (dist.j > 0), dm.k = (dist.k > 0), - dm.u = (dist.u > 0), dm.v = (dist.v > 0), dm.w = (dist.w > 0) + dm.i = (steps_dist.i > 0), dm.j = (steps_dist.j > 0), dm.k = (steps_dist.k > 0), + dm.u = (steps_dist.u > 0), dm.v = (steps_dist.v > 0), dm.w = (steps_dist.w > 0) ); #if HAS_EXTRUDERS - dm.e = (dist.e > 0); - const float esteps_float = dist.e * e_factor[extruder]; + dm.e = (steps_dist.e > 0); + const float esteps_float = steps_dist.e * e_factor[extruder]; const uint32_t esteps = ABS(esteps_float); #else constexpr uint32_t esteps = 0; @@ -1908,7 +1908,7 @@ bool Planner::_populate_block( // Clear all flags, including the "busy" bit block->flag.clear(); - // Set direction bits + // Set direction bits for steppers, plus Cartesian elements for Core kinematics block->direction_bits = dm; /** @@ -1941,33 +1941,33 @@ bool Planner::_populate_block( } #endif - // Number of steps for each axis + // Number of steps for each stepper, applying Core kinematics if needed // See https://www.corexy.com/theory.html block->steps.set(NUM_AXIS_LIST( #if CORE_IS_XY - ABS(dist.a + dist.b), ABS(dist.a - dist.b), ABS(dist.c) + ABS(steps_dist.a + steps_dist.b), ABS(steps_dist.a - steps_dist.b), ABS(steps_dist.c) #elif CORE_IS_XZ - ABS(dist.a + dist.c), ABS(dist.b), ABS(dist.a - dist.c) + ABS(steps_dist.a + steps_dist.c), ABS(steps_dist.b), ABS(steps_dist.a - steps_dist.c) #elif CORE_IS_YZ - ABS(dist.a), ABS(dist.b + dist.c), ABS(dist.b - dist.c) + ABS(steps_dist.a), ABS(steps_dist.b + steps_dist.c), ABS(steps_dist.b - steps_dist.c) #elif ENABLED(MARKFORGED_XY) - ABS(dist.a TERN(MARKFORGED_INVERSE, -, +) dist.b), ABS(dist.b), ABS(dist.c) + ABS(steps_dist.a TERN(MARKFORGED_INVERSE, -, +) steps_dist.b), ABS(steps_dist.b), ABS(steps_dist.c) #elif ENABLED(MARKFORGED_YX) - ABS(dist.a), ABS(dist.b TERN(MARKFORGED_INVERSE, -, +) dist.a), ABS(dist.c) + ABS(steps_dist.a), ABS(steps_dist.b TERN(MARKFORGED_INVERSE, -, +) steps_dist.a), ABS(steps_dist.c) #elif IS_SCARA - ABS(dist.a), ABS(dist.b), ABS(dist.c) + ABS(steps_dist.a), ABS(steps_dist.b), ABS(steps_dist.c) #else // default non-h-bot planning - ABS(dist.a), ABS(dist.b), ABS(dist.c) + ABS(steps_dist.a), ABS(steps_dist.b), ABS(steps_dist.c) #endif - , ABS(dist.i), ABS(dist.j), ABS(dist.k), ABS(dist.u), ABS(dist.v), ABS(dist.w) + , ABS(steps_dist.i), ABS(steps_dist.j), ABS(steps_dist.k), ABS(steps_dist.u), ABS(steps_dist.v), ABS(steps_dist.w) )); /** * This part of the code calculates the total length of the movement. - * For cartesian bots, the distance along the X axis equals the X_AXIS joint displacement and same holds true for Y_AXIS. + * For Cartesian bots, the distance in XY axes equals the X_AXIS/Y_AXIS joint displacement. * But for geometries like CORE_XY that is not true. For these machines we need to create 2 additional variables, named X_HEAD and Y_HEAD, to store the displacent of the head along the X and Y axes in a cartesian coordinate system. * The displacement of the head along the axes of the cartesian coordinate system has to be calculated from "X_AXIS" and "Y_AXIS" (should be renamed to A_JOINT and B_JOINT) - * displacements in joints space using forward kinematics (A=X+Y and B=X-Y in the case of CORE_XY). + * For the joint displacements use forward kinematics (A=X+Y and B=X-Y in the case of CORE_XY). * Next we can calculate the total movement length and apply the desired speed. */ struct DistanceMM : abce_float_t { @@ -1977,42 +1977,42 @@ bool Planner::_populate_block( } dist_mm; #if ANY(CORE_IS_XY, MARKFORGED_XY, MARKFORGED_YX) - dist_mm.head.x = dist.a * mm_per_step[A_AXIS]; - dist_mm.head.y = dist.b * mm_per_step[B_AXIS]; - TERN_(HAS_Z_AXIS, dist_mm.z = dist.c * mm_per_step[Z_AXIS]); + dist_mm.head.x = steps_dist.a * mm_per_step[A_AXIS]; + dist_mm.head.y = steps_dist.b * mm_per_step[B_AXIS]; + TERN_(HAS_Z_AXIS, dist_mm.z = steps_dist.c * mm_per_step[Z_AXIS]); #endif #if CORE_IS_XY - dist_mm.a = (dist.a + dist.b) * mm_per_step[A_AXIS]; - dist_mm.b = CORESIGN(dist.a - dist.b) * mm_per_step[B_AXIS]; + dist_mm.a = (steps_dist.a + steps_dist.b) * mm_per_step[A_AXIS]; + dist_mm.b = CORESIGN(steps_dist.a - steps_dist.b) * mm_per_step[B_AXIS]; #elif CORE_IS_XZ - dist_mm.head.x = dist.a * mm_per_step[A_AXIS]; - dist_mm.y = dist.b * mm_per_step[Y_AXIS]; - dist_mm.head.z = dist.c * mm_per_step[C_AXIS]; - dist_mm.a = (dist.a + dist.c) * mm_per_step[A_AXIS]; - dist_mm.c = CORESIGN(dist.a - dist.c) * mm_per_step[C_AXIS]; + dist_mm.head.x = steps_dist.a * mm_per_step[A_AXIS]; + dist_mm.y = steps_dist.b * mm_per_step[Y_AXIS]; + dist_mm.head.z = steps_dist.c * mm_per_step[C_AXIS]; + dist_mm.a = (steps_dist.a + steps_dist.c) * mm_per_step[A_AXIS]; + dist_mm.c = CORESIGN(steps_dist.a - steps_dist.c) * mm_per_step[C_AXIS]; #elif CORE_IS_YZ - dist_mm.x = dist.a * mm_per_step[X_AXIS]; - dist_mm.head.y = dist.b * mm_per_step[B_AXIS]; - dist_mm.head.z = dist.c * mm_per_step[C_AXIS]; - dist_mm.b = (dist.b + dist.c) * mm_per_step[B_AXIS]; - dist_mm.c = CORESIGN(dist.b - dist.c) * mm_per_step[C_AXIS]; + dist_mm.x = steps_dist.a * mm_per_step[X_AXIS]; + dist_mm.head.y = steps_dist.b * mm_per_step[B_AXIS]; + dist_mm.head.z = steps_dist.c * mm_per_step[C_AXIS]; + dist_mm.b = (steps_dist.b + steps_dist.c) * mm_per_step[B_AXIS]; + dist_mm.c = CORESIGN(steps_dist.b - steps_dist.c) * mm_per_step[C_AXIS]; #elif ENABLED(MARKFORGED_XY) - dist_mm.a = (dist.a TERN(MARKFORGED_INVERSE, +, -) dist.b) * mm_per_step[A_AXIS]; - dist_mm.b = dist.b * mm_per_step[B_AXIS]; + dist_mm.a = (steps_dist.a TERN(MARKFORGED_INVERSE, +, -) steps_dist.b) * mm_per_step[A_AXIS]; + dist_mm.b = steps_dist.b * mm_per_step[B_AXIS]; #elif ENABLED(MARKFORGED_YX) - dist_mm.a = dist.a * mm_per_step[A_AXIS]; - dist_mm.b = (dist.b TERN(MARKFORGED_INVERSE, +, -) dist.a) * mm_per_step[B_AXIS]; + dist_mm.a = steps_dist.a * mm_per_step[A_AXIS]; + dist_mm.b = (steps_dist.b TERN(MARKFORGED_INVERSE, +, -) steps_dist.a) * mm_per_step[B_AXIS]; #else XYZ_CODE( - dist_mm.a = dist.a * mm_per_step[A_AXIS], - dist_mm.b = dist.b * mm_per_step[B_AXIS], - dist_mm.c = dist.c * mm_per_step[C_AXIS] + dist_mm.a = steps_dist.a * mm_per_step[A_AXIS], + dist_mm.b = steps_dist.b * mm_per_step[B_AXIS], + dist_mm.c = steps_dist.c * mm_per_step[C_AXIS] ); #endif SECONDARY_AXIS_CODE( - dist_mm.i = dist.i * mm_per_step[I_AXIS], dist_mm.j = dist.j * mm_per_step[J_AXIS], dist_mm.k = dist.k * mm_per_step[K_AXIS], - dist_mm.u = dist.u * mm_per_step[U_AXIS], dist_mm.v = dist.v * mm_per_step[V_AXIS], dist_mm.w = dist.w * mm_per_step[W_AXIS] + dist_mm.i = steps_dist.i * mm_per_step[I_AXIS], dist_mm.j = steps_dist.j * mm_per_step[J_AXIS], dist_mm.k = steps_dist.k * mm_per_step[K_AXIS], + dist_mm.u = steps_dist.u * mm_per_step[U_AXIS], dist_mm.v = steps_dist.v * mm_per_step[V_AXIS], dist_mm.w = steps_dist.w * mm_per_step[W_AXIS] ); TERN_(HAS_EXTRUDERS, dist_mm.e = esteps_float * mm_per_step[E_AXIS_N(extruder)]); @@ -2057,7 +2057,7 @@ bool Planner::_populate_block( * A correction function is permitted to add steps to an axis, it * should *never* remove steps! */ - TERN_(BACKLASH_COMPENSATION, backlash.add_correction_steps(dist, dm, block)); + TERN_(BACKLASH_COMPENSATION, backlash.add_correction_steps(steps_dist, dm, block)); } TERN_(FT_MOTION, block->distance_mm = dist_mm); // Store the distance for all axes in mm for this block @@ -2676,7 +2676,7 @@ bool Planner::_populate_block( #endif #ifdef TRAVEL_EXTRA_XYJERK - if (dist.e <= 0) { + if (steps_dist.e <= 0) { max_j.x += TRAVEL_EXTRA_XYJERK; max_j.y += TRAVEL_EXTRA_XYJERK; } @@ -2689,7 +2689,7 @@ bool Planner::_populate_block( // perform well; it takes more time/effort to push/melt filament than the reverse). static uint32_t previous_advance_rate; static float previous_e_mm_per_step; - if (dist.e < 0 && previous_advance_rate) { + if (steps_dist.e < 0 && previous_advance_rate) { // Retract move after a segment with LA that ended with an E speed decrease. // Correct for this to allow a faster junction speed. Since the decrease always helps to // get E to nominal retract speed, the equation simplifies to an increase in max jerk. diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index d9da13bcaa..ed359bd252 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -3656,7 +3656,7 @@ void Stepper::report_positions() { /** * Update direction bits for steppers that were stepped by this command. - * HX, HY, HZ direction bits were set for Core kinematics + * RX, RY, RZ direction bits were set for Core kinematics * when the block was fetched and are not overwritten here. */ From 5b71e64a77954133c0b6c49273b272964bfd6768 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 9 Feb 2026 10:55:55 -0600 Subject: [PATCH 32/38] =?UTF-8?q?=F0=9F=90=9B=20Fix=20endstops=5Ftrigsteps?= =?UTF-8?q?=20value?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/module/stepper.cpp | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index ed359bd252..cb339830d3 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -3564,24 +3564,18 @@ void Stepper::endstop_triggered(const AxisEnum axis) { ATOMIC_SECTION_START(); // Suspend the Stepper ISR on all platforms - endstops_trigsteps[axis] = ( - #if IS_CORE - (axis == CORE_AXIS_2 - ? CORESIGN(count_position[CORE_AXIS_1] - count_position[CORE_AXIS_2]) - : count_position[CORE_AXIS_1] + count_position[CORE_AXIS_2] - ) * double(0.5) - #elif ENABLED(MARKFORGED_XY) - axis == CORE_AXIS_1 - ? count_position[CORE_AXIS_1] TERN(MARKFORGED_INVERSE, +, -) count_position[CORE_AXIS_2] - : count_position[CORE_AXIS_2] - #elif ENABLED(MARKFORGED_YX) - axis == CORE_AXIS_1 - ? count_position[CORE_AXIS_1] - : count_position[CORE_AXIS_2] TERN(MARKFORGED_INVERSE, +, -) count_position[CORE_AXIS_1] - #else // !IS_CORE - count_position[axis] - #endif - ); + float axis_pos = count_position[axis]; + #if IS_CORE + if (axis == CORE_AXIS_2) + axis_pos = CORESIGN(count_position[CORE_AXIS_1] - axis_pos) * 0.5f; + else if (axis == CORE_AXIS_1) + axis_pos = (axis_pos + count_position[CORE_AXIS_2]) * 0.5f; + #elif ENABLED(MARKFORGED_XY) + if (axis == CORE_AXIS_1) axis_pos TERN(MARKFORGED_INVERSE, +=, -=) count_position[CORE_AXIS_2]; + #elif ENABLED(MARKFORGED_YX) + if (axis == CORE_AXIS_2) axis_pos TERN(MARKFORGED_INVERSE, +=, -=) count_position[CORE_AXIS_1]; + #endif + endstops_trigsteps[axis] = axis_pos; // Discard the rest of the move if there is a current block quick_stop(); From 097fc3020171ea917794b6ea508de9095b417708 Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Tue, 10 Feb 2026 10:30:24 +1300 Subject: [PATCH 33/38] =?UTF-8?q?=F0=9F=90=9B=20Fix=20FT=20Motion=20motion?= =?UTF-8?q?+dir=20for=20endstops=20(#28326)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Scott Lahteine --- Marlin/src/core/language.h | 6 +- Marlin/src/core/types.h | 85 ++++++++++-- Marlin/src/inc/Conditionals-3-etc.h | 9 ++ Marlin/src/inc/SanityCheck.h | 2 +- Marlin/src/module/endstops.cpp | 49 ++----- Marlin/src/module/ft_motion.cpp | 22 +-- Marlin/src/module/ft_motion.h | 8 +- Marlin/src/module/ft_motion/shaping.cpp | 14 +- Marlin/src/module/planner.cpp | 177 ++++++++++++------------ Marlin/src/module/planner.h | 48 ++++++- Marlin/src/module/stepper.cpp | 29 ++-- Marlin/src/module/stepper.h | 10 +- Marlin/src/module/temperature.cpp | 3 +- 13 files changed, 276 insertions(+), 186 deletions(-) diff --git a/Marlin/src/core/language.h b/Marlin/src/core/language.h index 837f3885b9..96aa58c807 100644 --- a/Marlin/src/core/language.h +++ b/Marlin/src/core/language.h @@ -366,17 +366,17 @@ #define STR_Z2 STR_C "2" #define STR_Z3 STR_C "3" #define STR_Z4 STR_C "4" -#if CORE_IS_XY || CORE_IS_XZ +#if ANY(HAS_REAL_X, IS_SCARA, DELTA) #define STEPPER_A_NAME 'A' #else #define STEPPER_A_NAME 'X' #endif -#if CORE_IS_XY || CORE_IS_YZ +#if ANY(HAS_REAL_Y, IS_SCARA, DELTA, POLAR) #define STEPPER_B_NAME 'B' #else #define STEPPER_B_NAME 'Y' #endif -#if CORE_IS_XZ || CORE_IS_YZ +#if ANY(HAS_REAL_Z, DELTA) #define STEPPER_C_NAME 'C' #else #define STEPPER_C_NAME 'Z' diff --git a/Marlin/src/core/types.h b/Marlin/src/core/types.h index 96ce9716d2..02ee0d9dd1 100644 --- a/Marlin/src/core/types.h +++ b/Marlin/src/core/types.h @@ -352,7 +352,7 @@ typedef struct { // // - X_AXIS, Y_AXIS, and Z_AXIS should be used for axes in Cartesian space // - A_AXIS, B_AXIS, and C_AXIS should be used for Steppers, corresponding to XYZ on Cartesians -// - X_HEAD, Y_HEAD, and Z_HEAD should be used for axes on Core kinematics +// - X_REAL, Y_REAL, and Z_REAL should be used for axes on Core kinematics // enum AxisEnum : uint8_t { @@ -364,8 +364,14 @@ enum AxisEnum : uint8_t { #undef _EN_ITEM // Core also keeps toolhead directions - #if ANY(IS_CORE, MARKFORGED_XY, MARKFORGED_YX) - X_HEAD, Y_HEAD, Z_HEAD, + #if HAS_REAL_X + X_REAL, + #endif + #if HAS_REAL_Y + Y_REAL, + #endif + #if HAS_REAL_Z + Z_REAL, #endif // Distinct axes, including all E and Core @@ -374,6 +380,10 @@ enum AxisEnum : uint8_t { // Most of the time we refer only to the single E_AXIS #if HAS_EXTRUDERS E_AXIS = E0_AXIS, + E_REAL = E_AXIS, + #define _EN_REAL(N) E##N##_REAL = E##N##_AXIS, + REPEAT(EXTRUDERS, _EN_REAL) + #undef _EN_REAL #endif // A, B, and C are for DELTA, SCARA, etc. @@ -387,6 +397,35 @@ enum AxisEnum : uint8_t { C_AXIS = Z_AXIS, #endif + // Aliases to distinguish tool axes from stepper indexes + #if HAS_X_AXIS && !HAS_REAL_X + X_REAL = X_AXIS, + #endif + #if HAS_Y_AXIS && !HAS_REAL_Y + Y_REAL = Y_AXIS, + #endif + #if HAS_Z_AXIS && !HAS_REAL_Z + Z_REAL = Z_AXIS, + #endif + #if HAS_I_AXIS + I_REAL = I_AXIS, + #endif + #if HAS_J_AXIS + J_REAL = J_AXIS, + #endif + #if HAS_K_AXIS + K_REAL = K_AXIS, + #endif + #if HAS_U_AXIS + U_REAL = U_AXIS, + #endif + #if HAS_V_AXIS + V_REAL = V_AXIS, + #endif + #if HAS_W_AXIS + W_REAL = W_AXIS, + #endif + // To refer to all or none ALL_AXES_ENUM = 0xFE, NO_AXIS_ENUM = 0xFF }; @@ -1153,8 +1192,14 @@ public: #define _EN_ITEM(N) bool e##N:1; REPEAT(EXTRUDERS,_EN_ITEM) #undef _EN_ITEM - #if ANY(IS_CORE, MARKFORGED_XY, MARKFORGED_YX) - bool rx:1, ry:1, rz:1; + #if HAS_REAL_X + bool rx:1; + #endif + #if HAS_REAL_Y + bool ry:1; + #endif + #if HAS_REAL_Z + bool rz:1; #endif }; // Axes X, Y, Z ... E0, E1, E2 ... RX, RY, RZ @@ -1165,8 +1210,14 @@ public: #define _EN_ITEM(N) bool E##N:1; REPEAT(EXTRUDERS,_EN_ITEM) #undef _EN_ITEM - #if ANY(IS_CORE, MARKFORGED_XY, MARKFORGED_YX) - bool RX:1, RY:1, RZ:1; + #if HAS_REAL_X + bool RX:1; + #endif + #if HAS_REAL_Y + bool RY:1; + #endif + #if HAS_REAL_Z + bool RZ:1; #endif }; // a, b, c, e ... ra, rb, rc @@ -1177,8 +1228,14 @@ public: REPEAT_S(1,EXTRUDERS,_EN_ITEM) #undef _EN_ITEM #endif - #if ANY(IS_CORE, MARKFORGED_XY, MARKFORGED_YX) - bool ra:1, rb:1, rc:1; + #if HAS_REAL_X + bool ra:1; + #endif + #if HAS_REAL_Y + bool rb:1; + #endif + #if HAS_REAL_Z + bool rc:1; #endif }; // A, B, C, E ... RA, RB, RC @@ -1189,8 +1246,14 @@ public: REPEAT_S(1,EXTRUDERS,_EN_ITEM) #undef _EN_ITEM #endif - #if ANY(IS_CORE, MARKFORGED_XY, MARKFORGED_YX) - bool RA:1, RB:1, RC:1; + #if HAS_REAL_X + bool RA:1; + #endif + #if HAS_REAL_Y + bool RB:1; + #endif + #if HAS_REAL_Z + bool RC:1; #endif }; }; diff --git a/Marlin/src/inc/Conditionals-3-etc.h b/Marlin/src/inc/Conditionals-3-etc.h index 2b6500910b..68f34a7fd6 100644 --- a/Marlin/src/inc/Conditionals-3-etc.h +++ b/Marlin/src/inc/Conditionals-3-etc.h @@ -584,6 +584,15 @@ #if ANY(COREYZ, COREZY) #define CORE_IS_YZ 1 #endif +#if ANY(CORE_IS_XY, CORE_IS_XZ, MARKFORGED_XY) + #define HAS_REAL_X 1 +#endif +#if ANY(CORE_IS_XY, CORE_IS_YZ, MARKFORGED_YX) + #define HAS_REAL_Y 1 +#endif +#if CORE_IS_XZ || CORE_IS_YZ + #define HAS_REAL_Z 1 +#endif #if CORE_IS_XY || CORE_IS_XZ || CORE_IS_YZ #define IS_CORE 1 #if CORE_IS_XY diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 761125d790..6be3b167db 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -1943,7 +1943,7 @@ static_assert(NUM_SERVOS <= NUM_SERVO_PLUGS, "NUM_SERVOS (or some servo index) i #if ENABLED(DUAL_X_CARRIAGE) #if EXTRUDERS < 2 #error "DUAL_X_CARRIAGE requires 2 (or more) extruders." - #elif ANY(CORE_IS_XY, CORE_IS_XZ, MARKFORGED_XY, MARKFORGED_YX) + #elif HAS_REAL_X #error "DUAL_X_CARRIAGE cannot be used with COREXY, COREYX, COREXZ, COREZX, MARKFORGED_YX, or MARKFORGED_XY." #elif !GOOD_AXIS_PINS(X2) #error "DUAL_X_CARRIAGE requires X2 stepper pins to be defined." diff --git a/Marlin/src/module/endstops.cpp b/Marlin/src/module/endstops.cpp index 323a31e320..5269d942ad 100644 --- a/Marlin/src/module/endstops.cpp +++ b/Marlin/src/module/endstops.cpp @@ -462,30 +462,6 @@ void Endstops::update() { #define X_MIN_TEST() TERN1(DUAL_X_CARRIAGE, stepper.last_moved_extruder == 0) // Check min for the left carriage #define X_MAX_TEST() TERN1(DUAL_X_CARRIAGE, stepper.last_moved_extruder != 0) // Check max for the right carriage - // Use HEAD for core axes, AXIS for others - #if ANY(CORE_IS_XY, CORE_IS_XZ, MARKFORGED_XY, MARKFORGED_YX) - #define X_AXIS_HEAD X_HEAD - #else - #define X_AXIS_HEAD X_AXIS - #endif - #if ANY(CORE_IS_XY, CORE_IS_YZ, MARKFORGED_XY, MARKFORGED_YX) - #define Y_AXIS_HEAD Y_HEAD - #else - #define Y_AXIS_HEAD Y_AXIS - #endif - #if CORE_IS_XZ || CORE_IS_YZ - #define Z_AXIS_HEAD Z_HEAD - #else - #define Z_AXIS_HEAD Z_AXIS - #endif - - #define I_AXIS_HEAD I_AXIS - #define J_AXIS_HEAD J_AXIS - #define K_AXIS_HEAD K_AXIS - #define U_AXIS_HEAD U_AXIS - #define V_AXIS_HEAD V_AXIS - #define W_AXIS_HEAD W_AXIS - /** * Check and update endstops */ @@ -680,8 +656,8 @@ void Endstops::update() { #define PROCESS_ENDSTOP_Z(MINMAX) PROCESS_DUAL_ENDSTOP(Z, MINMAX) #endif - #define AXIS_IS_MOVING(A) TERN(FT_MOTION, ftMotion, stepper).axis_is_moving(_AXIS(A)) - #define AXIS_DIR_REV(A) !TERN(FT_MOTION, ftMotion, stepper).motor_direction(A) + #define AXIS_IS_MOVING(A) TERN(FT_MOTION, ftMotion, stepper).axis_is_moving(A##_REAL) + #define AXIS_DIR_REV(A) !TERN(FT_MOTION, ftMotion, stepper).axis_direction(A##_REAL) #if ENABLED(G38_PROBE_TARGET) // For G38 moves check the probe's pin for ALL movement @@ -704,8 +680,7 @@ void Endstops::update() { #if HAS_X_AXIS if (AXIS_IS_MOVING(X)) { - const AxisEnum x_head = TERN0(FT_MOTION, ftMotion.cfg.active) ? X_AXIS : X_AXIS_HEAD; - if (AXIS_DIR_REV(x_head)) { + if (AXIS_DIR_REV(X)) { #if HAS_X_MIN_STATE PROCESS_ENDSTOP_X(MIN); #if CORE_DIAG(XY, Y, MIN) @@ -738,8 +713,7 @@ void Endstops::update() { #if HAS_Y_AXIS if (AXIS_IS_MOVING(Y)) { - const AxisEnum y_head = TERN0(FT_MOTION, ftMotion.cfg.active) ? Y_AXIS : Y_AXIS_HEAD; - if (AXIS_DIR_REV(y_head)) { + if (AXIS_DIR_REV(Y)) { #if HAS_Y_MIN_STATE PROCESS_ENDSTOP_Y(MIN); #if CORE_DIAG(XY, X, MIN) @@ -772,8 +746,7 @@ void Endstops::update() { #if HAS_Z_AXIS if (AXIS_IS_MOVING(Z)) { - const AxisEnum z_head = TERN0(FT_MOTION, ftMotion.cfg.active) ? Z_AXIS : Z_AXIS_HEAD; - if (AXIS_DIR_REV(z_head)) { + if (AXIS_DIR_REV(Z)) { // Z- : Gantry down, bed up #if HAS_Z_MIN_STATE // If the Z_MIN_PIN is being used for the probe there's no @@ -820,7 +793,7 @@ void Endstops::update() { #if HAS_I_AXIS && HAS_I_STATE if (AXIS_IS_MOVING(I)) { - if (AXIS_DIR_REV(I_AXIS_HEAD)) { + if (AXIS_DIR_REV(I)) { #if HAS_I_MIN_STATE PROCESS_ENDSTOP(I, MIN); #endif @@ -835,7 +808,7 @@ void Endstops::update() { #if HAS_J_AXIS && HAS_J_STATE if (AXIS_IS_MOVING(J)) { - if (AXIS_DIR_REV(J_AXIS_HEAD)) { + if (AXIS_DIR_REV(J)) { #if HAS_J_MIN_STATE PROCESS_ENDSTOP(J, MIN); #endif @@ -850,7 +823,7 @@ void Endstops::update() { #if HAS_K_AXIS && HAS_K_STATE if (AXIS_IS_MOVING(K)) { - if (AXIS_DIR_REV(K_AXIS_HEAD)) { + if (AXIS_DIR_REV(K)) { #if HAS_K_MIN_STATE PROCESS_ENDSTOP(K, MIN); #endif @@ -865,7 +838,7 @@ void Endstops::update() { #if HAS_U_AXIS && HAS_U_STATE if (AXIS_IS_MOVING(U)) { - if (AXIS_DIR_REV(U_AXIS_HEAD)) { + if (AXIS_DIR_REV(U)) { #if HAS_U_MIN_STATE PROCESS_ENDSTOP(U, MIN); #endif @@ -880,7 +853,7 @@ void Endstops::update() { #if HAS_V_AXIS && HAS_V_STATE if (AXIS_IS_MOVING(V)) { - if (AXIS_DIR_REV(V_AXIS_HEAD)) { + if (AXIS_DIR_REV(V)) { #if HAS_V_MIN_STATE PROCESS_ENDSTOP(V, MIN); #endif @@ -895,7 +868,7 @@ void Endstops::update() { #if HAS_W_AXIS && HAS_W_STATE if (AXIS_IS_MOVING(W)) { - if (AXIS_DIR_REV(W_AXIS_HEAD)) { + if (AXIS_DIR_REV(W)) { #if HAS_W_MIN_STATE PROCESS_ENDSTOP(W, MIN); #endif diff --git a/Marlin/src/module/ft_motion.cpp b/Marlin/src/module/ft_motion.cpp index 3e8895ad05..45e7b9c93e 100644 --- a/Marlin/src/module/ft_motion.cpp +++ b/Marlin/src/module/ft_motion.cpp @@ -390,15 +390,9 @@ bool FTMotion::plan_next_block() { #endif // Some kinematics track axis motion in RX, RY, RZ - #if ANY(CORE_IS_XY, CORE_IS_XZ, MARKFORGED_XY, MARKFORGED_YX) - stepper.last_direction_bits.rx = current_block->direction_bits.rx; - #endif - #if ANY(CORE_IS_XY, CORE_IS_YZ, MARKFORGED_XY, MARKFORGED_YX) - stepper.last_direction_bits.ry = current_block->direction_bits.ry; - #endif - #if ANY(CORE_IS_XZ, CORE_IS_YZ) - stepper.last_direction_bits.rz = current_block->direction_bits.rz; - #endif + TERN_(HAS_REAL_X, stepper.last_direction_bits.rx = current_block->direction_bits.rx); + TERN_(HAS_REAL_Y, stepper.last_direction_bits.ry = current_block->direction_bits.ry); + TERN_(HAS_REAL_Z, stepper.last_direction_bits.rz = current_block->direction_bits.rz); // Cache the extruder index / axis for this block #if ANY(HAS_MULTI_EXTRUDER, MIXING_EXTRUDER) @@ -411,7 +405,7 @@ bool FTMotion::plan_next_block() { const float totalLength = current_block->millimeters; startPos = endPos_prevBlock; - const xyze_pos_t &moveDist = current_block->distance_mm; + const ext_distance_t &moveDist = current_block->ext_distance_mm; ratio = moveDist / totalLength; // Plan the trajectory using the trajectory generator @@ -422,9 +416,15 @@ bool FTMotion::plan_next_block() { TERN_(FTM_HAS_LIN_ADVANCE, use_advance_lead = current_block->use_advance_lead); axis_move_dir = current_block->direction_bits; - #define _SET_MOVE_END(A) moving_axis_flags.A = bool(moveDist.A); + // Set moving flags for axes that have movement in this block + // For CORE kinematics: moveDist.x/.y/.z contain motor distances (a/b/c) + // HEAD movement flags need to be inferred: if either motor moves, the head moves + #define _SET_MOVE_END(A) moving_axis_flags.A = bool(moveDist.A); LOGICAL_AXIS_MAP(_SET_MOVE_END); + TERN_(HAS_REAL_X, moving_axis_flags.rx = bool(moveDist.real.x)); + TERN_(HAS_REAL_Y, moving_axis_flags.ry = bool(moveDist.real.y)); + TERN_(HAS_REAL_Z, moving_axis_flags.rz = bool(moveDist.real.z)); // If the endstop is already pressed, endstop interrupts won't invoke // endstop_triggered and the move will grind. So check here for a diff --git a/Marlin/src/module/ft_motion.h b/Marlin/src/module/ft_motion.h index 15be0154ae..ec6699af0c 100644 --- a/Marlin/src/module/ft_motion.h +++ b/Marlin/src/module/ft_motion.h @@ -300,11 +300,11 @@ class FTMotion { static TrajectoryType getTrajectoryType() { return TERN(FTM_POLYS, trajectoryType, TrajectoryType::TRAPEZOIDAL); } static FSTR_P getTrajectoryName(); - FORCE_INLINE static bool axis_is_moving(const AxisEnum axis) { - return cfg.active ? moving_axis_flags[axis] : TERN0(HAS_STANDARD_MOTION, stepper.axis_is_moving(axis)); + FORCE_INLINE static bool axis_is_moving(const AxisEnum real) { + return cfg.active ? moving_axis_flags[real] : TERN0(HAS_STANDARD_MOTION, stepper.axis_is_moving(real)); } - FORCE_INLINE static bool motor_direction(const AxisEnum axis) { - return cfg.active ? axis_move_dir[axis] : stepper.last_direction_bits[axis]; + FORCE_INLINE static bool axis_direction(const AxisEnum real) { + return cfg.active ? axis_move_dir[real] : stepper.last_direction_bits[real]; } // A frame of the stepping plan diff --git a/Marlin/src/module/ft_motion/shaping.cpp b/Marlin/src/module/ft_motion/shaping.cpp index bfefe77ae7..d6763a0015 100644 --- a/Marlin/src/module/ft_motion/shaping.cpp +++ b/Marlin/src/module/ft_motion/shaping.cpp @@ -33,10 +33,16 @@ void AxisShaping::set_axis_shaping_A( OPTARG(HAS_FTM_EI_SHAPING, const float vtol) ) { - const float K = exp(-zeta * M_PI / sqrt(1.f - sq(zeta))), - K2 = sq(K), - K3 = K2 * K, - K4 = K3 * K; + const float K = exp(-zeta * M_PI / sqrt(1.f - sq(zeta))); + #if ANY(FTM_SHAPER_ZVD, FTM_SHAPER_ZVDD, FTM_SHAPER_ZVDDD, FTM_SHAPER_EI, FTM_SHAPER_2HEI, FTM_SHAPER_3HEI, FTM_SHAPER_MZV) + const float K2 = sq(K); + #endif + #if ANY(FTM_SHAPER_ZVDD, FTM_SHAPER_ZVDDD, FTM_SHAPER_2HEI, FTM_SHAPER_3HEI) + const float K3 = K2 * K; + #endif + #if ANY(FTM_SHAPER_ZVDDD, FTM_SHAPER_3HEI) + const float K4 = K3 * K; + #endif switch (shaper) { diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp index 59879d6bc6..89f34e5e1b 100644 --- a/Marlin/src/module/planner.cpp +++ b/Marlin/src/module/planner.cpp @@ -1854,42 +1854,36 @@ bool Planner::_populate_block( #endif // PREVENT_COLD_EXTRUSION || PREVENT_LENGTHY_EXTRUDE // Compute direction bit-mask for this block + // In this context Core kinematics "real" bits pertain to Cartesian + // directions and others pertain directly to stepper directions. AxisBits dm; - #if ANY(CORE_IS_XY, CORE_IS_XZ, MARKFORGED_XY, MARKFORGED_YX) - dm.rx = (steps_dist.a > 0); // True direction in X - #endif - #if ANY(CORE_IS_XY, CORE_IS_YZ, MARKFORGED_XY, MARKFORGED_YX) - dm.ry = (steps_dist.b > 0); // True direction in Y - #endif - #if ANY(CORE_IS_XZ, CORE_IS_YZ) - dm.rz = (steps_dist.c > 0); // True direction in Z - #endif + TERN_(HAS_REAL_X, dm.rx = (steps_dist.x > 0)); // True direction in X + TERN_(HAS_REAL_Y, dm.ry = (steps_dist.y > 0)); // True direction in Y + TERN_(HAS_REAL_Z, dm.rz = (steps_dist.z > 0)); // True direction in Z #if CORE_IS_XY - dm.a = (steps_dist.a + steps_dist.b > 0); // Motor A direction - dm.b = (CORESIGN(steps_dist.a - steps_dist.b) > 0); // Motor B direction - TERN_(HAS_Z_AXIS, dm.z = (steps_dist.c > 0)); // Axis Z direction - #elif CORE_IS_XZ - dm.a = (steps_dist.a + steps_dist.c > 0); // Motor A direction - dm.y = (steps_dist.b > 0); // Axis Y direction - dm.c = (CORESIGN(steps_dist.a - steps_dist.c) > 0); // Motor C direction - #elif CORE_IS_YZ - dm.x = (steps_dist.a > 0); // Axis X direction - dm.b = (steps_dist.b + steps_dist.c > 0); // Motor B direction - dm.c = (CORESIGN(steps_dist.b - steps_dist.c) > 0); // Motor C direction - #elif ENABLED(MARKFORGED_XY) - dm.a = (steps_dist.a TERN(MARKFORGED_INVERSE, -, +) steps_dist.b > 0); // Motor A direction - dm.b = (steps_dist.b > 0); // Motor B direction - TERN_(HAS_Z_AXIS, dm.z = (steps_dist.c > 0)); // Axis Z direction - #elif ENABLED(MARKFORGED_YX) - dm.a = (steps_dist.a > 0); // Motor A direction - dm.b = (steps_dist.b TERN(MARKFORGED_INVERSE, -, +) steps_dist.a > 0); // Motor B direction - TERN_(HAS_Z_AXIS, dm.z = (steps_dist.c > 0)); // Axis Z direction - #else XYZ_CODE( - dm.x = (steps_dist.a > 0), - dm.y = (steps_dist.b > 0), - dm.z = (steps_dist.c > 0) + dm.a = (steps_dist.x + steps_dist.y) > 0, // Motor A direction + dm.b = CORESIGN(steps_dist.x - steps_dist.y) > 0, // Motor B direction + dm.z = (steps_dist.z > 0) // Axis Z direction ); + #elif CORE_IS_XZ + dm.a = (steps_dist.x + steps_dist.z) > 0; // Motor A direction + dm.y = (steps_dist.y > 0); // Axis Y direction + dm.c = (CORESIGN(steps_dist.x - steps_dist.z) > 0); // Motor C direction + #elif CORE_IS_YZ + dm.x = (steps_dist.x > 0); // Axis X direction + dm.b = (steps_dist.y + steps_dist.z > 0); // Motor B direction + dm.c = (CORESIGN(steps_dist.y - steps_dist.z) > 0); // Motor C direction + #elif ENABLED(MARKFORGED_XY) + dm.a = (steps_dist.x TERN(MARKFORGED_INVERSE, -, +) steps_dist.y > 0); // Motor A direction + dm.b = (steps_dist.y > 0); // Motor B direction + TERN_(HAS_Z_AXIS, dm.z = (steps_dist.z > 0)); // Axis Z direction + #elif ENABLED(MARKFORGED_YX) + dm.a = (steps_dist.x > 0); // Motor A direction + dm.b = (steps_dist.y TERN(MARKFORGED_INVERSE, -, +) steps_dist.x > 0); // Motor B direction + TERN_(HAS_Z_AXIS, dm.z = (steps_dist.z > 0)); // Axis Z direction + #else + XYZ_CODE(dm.x = (steps_dist.x > 0), dm.y = (steps_dist.y > 0), dm.z = (steps_dist.z > 0)); #endif SECONDARY_AXIS_CODE( @@ -1965,82 +1959,86 @@ bool Planner::_populate_block( /** * This part of the code calculates the total length of the movement. * For Cartesian bots, the distance in XY axes equals the X_AXIS/Y_AXIS joint displacement. - * But for geometries like CORE_XY that is not true. For these machines we need to create 2 additional variables, named X_HEAD and Y_HEAD, to store the displacent of the head along the X and Y axes in a cartesian coordinate system. - * The displacement of the head along the axes of the cartesian coordinate system has to be calculated from "X_AXIS" and "Y_AXIS" (should be renamed to A_JOINT and B_JOINT) + * For Core/H-bot geometries we use X_REAL and Y_REAL to store the real XY displacement of the head in Cartesian coordinates. + * The Cartesian head displacement is calculated from a combined ABC stepper positions. * For the joint displacements use forward kinematics (A=X+Y and B=X-Y in the case of CORE_XY). * Next we can calculate the total movement length and apply the desired speed. */ - struct DistanceMM : abce_float_t { - #if ANY(IS_CORE, MARKFORGED_XY, MARKFORGED_YX) - struct { float x, y, z; } head; - #endif - } dist_mm; + ext_distance_t dist_mm; - #if ANY(CORE_IS_XY, MARKFORGED_XY, MARKFORGED_YX) - dist_mm.head.x = steps_dist.a * mm_per_step[A_AXIS]; - dist_mm.head.y = steps_dist.b * mm_per_step[B_AXIS]; - TERN_(HAS_Z_AXIS, dist_mm.z = steps_dist.c * mm_per_step[Z_AXIS]); + #if HAS_X_AXIS + const float dx = steps_dist.x * mm_per_step[X_AXIS]; // Axis X or Tower A Steps + #endif + #if HAS_Y_AXIS + const float dy = steps_dist.y * mm_per_step[Y_AXIS]; // Axis Y or Tower B Steps + #endif + #if HAS_Z_AXIS + const float dz = steps_dist.z * mm_per_step[Z_AXIS]; // Axis Z or Tower C Steps #endif #if CORE_IS_XY - dist_mm.a = (steps_dist.a + steps_dist.b) * mm_per_step[A_AXIS]; - dist_mm.b = CORESIGN(steps_dist.a - steps_dist.b) * mm_per_step[B_AXIS]; - #elif CORE_IS_XZ - dist_mm.head.x = steps_dist.a * mm_per_step[A_AXIS]; - dist_mm.y = steps_dist.b * mm_per_step[Y_AXIS]; - dist_mm.head.z = steps_dist.c * mm_per_step[C_AXIS]; - dist_mm.a = (steps_dist.a + steps_dist.c) * mm_per_step[A_AXIS]; - dist_mm.c = CORESIGN(steps_dist.a - steps_dist.c) * mm_per_step[C_AXIS]; - #elif CORE_IS_YZ - dist_mm.x = steps_dist.a * mm_per_step[X_AXIS]; - dist_mm.head.y = steps_dist.b * mm_per_step[B_AXIS]; - dist_mm.head.z = steps_dist.c * mm_per_step[C_AXIS]; - dist_mm.b = (steps_dist.b + steps_dist.c) * mm_per_step[B_AXIS]; - dist_mm.c = CORESIGN(steps_dist.b - steps_dist.c) * mm_per_step[C_AXIS]; - #elif ENABLED(MARKFORGED_XY) - dist_mm.a = (steps_dist.a TERN(MARKFORGED_INVERSE, +, -) steps_dist.b) * mm_per_step[A_AXIS]; - dist_mm.b = steps_dist.b * mm_per_step[B_AXIS]; - #elif ENABLED(MARKFORGED_YX) - dist_mm.a = steps_dist.a * mm_per_step[A_AXIS]; - dist_mm.b = (steps_dist.b TERN(MARKFORGED_INVERSE, +, -) steps_dist.a) * mm_per_step[B_AXIS]; - #else XYZ_CODE( - dist_mm.a = steps_dist.a * mm_per_step[A_AXIS], - dist_mm.b = steps_dist.b * mm_per_step[B_AXIS], - dist_mm.c = steps_dist.c * mm_per_step[C_AXIS] + dist_mm.a = dx + dy, + dist_mm.b = CORESIGN(dx - dy), + dist_mm.z = dz ); + #elif CORE_IS_XZ + dist_mm.a = dx + dz, + dist_mm.y = dy, + dist_mm.c = CORESIGN(dx - dz) + #elif CORE_IS_YZ + dist_mm.x = dx; + dist_mm.b = dy + dz; + dist_mm.c = CORESIGN(dy - dz); + #elif ENABLED(MARKFORGED_XY) + XYZ_CODE( + dist_mm.a = dx TERN(MARKFORGED_INVERSE, +, -) dy, + dist_mm.b = dy, + dist_mm.z = dz + ); + #elif ENABLED(MARKFORGED_YX) + XYZ_CODE( + dist_mm.a = dx, + dist_mm.b = dy TERN(MARKFORGED_INVERSE, +, -) dx, + dist_mm.z = dz + ); + #else + // Cartesian, Delta, SCARA, etc. + XYZ_CODE(dist_mm.a = dx, dist_mm.b = dy, dist_mm.c = dz); #endif SECONDARY_AXIS_CODE( - dist_mm.i = steps_dist.i * mm_per_step[I_AXIS], dist_mm.j = steps_dist.j * mm_per_step[J_AXIS], dist_mm.k = steps_dist.k * mm_per_step[K_AXIS], - dist_mm.u = steps_dist.u * mm_per_step[U_AXIS], dist_mm.v = steps_dist.v * mm_per_step[V_AXIS], dist_mm.w = steps_dist.w * mm_per_step[W_AXIS] + dist_mm.i = steps_dist.i * mm_per_step[I_AXIS], dist_mm.j = steps_dist.j * mm_per_step[J_AXIS], + dist_mm.k = steps_dist.k * mm_per_step[K_AXIS], dist_mm.u = steps_dist.u * mm_per_step[U_AXIS], + dist_mm.v = steps_dist.v * mm_per_step[V_AXIS], dist_mm.w = steps_dist.w * mm_per_step[W_AXIS] ); - TERN_(HAS_EXTRUDERS, dist_mm.e = esteps_float * mm_per_step[E_AXIS_N(extruder)]); + TERN_(HAS_REAL_X, dist_mm.real.x = dx); + TERN_(HAS_REAL_Y, dist_mm.real.y = dy); + TERN_(HAS_REAL_Z, dist_mm.real.z = dz); + TERN_(HAS_EXTRUDERS, dist_mm.e = esteps_float * mm_per_step[E_AXIS_N(extruder)]); TERN_(LCD_SHOW_E_TOTAL, e_move_accumulator += dist_mm.e); + TERN_(FT_MOTION, block->ext_distance_mm = dist_mm); // Store the distance for all axes in mm for this block + #if HAS_ROTATIONAL_AXES bool cartesian_move = hints.cartesian_move; #endif + // Determine linear distance for block->millimeters + if (!XYZ_HAS_ENOUGH_STEPS(block)) { block->millimeters = TERN0(HAS_EXTRUDERS, ABS(dist_mm.e)); } else { - if (hints.millimeters) + // Use a provided move length (e.g., always provided by Kinematic robots) + if (/* ANY(DELTA, IS_SCARA, TPARA) || */ hints.millimeters) block->millimeters = hints.millimeters; else { + // Calculate move length from axis positions const xyze_pos_t displacement = LOGICAL_AXIS_ARRAY( dist_mm.e, - #if ANY(CORE_IS_XY, MARKFORGED_XY, MARKFORGED_YX) - dist_mm.head.x, dist_mm.head.y, dist_mm.z, - #elif CORE_IS_XZ - dist_mm.head.x, dist_mm.y, dist_mm.head.z, - #elif CORE_IS_YZ - dist_mm.x, dist_mm.head.y, dist_mm.head.z, - #else - dist_mm.x, dist_mm.y, dist_mm.z, - #endif + dx, dy, dz, dist_mm.i, dist_mm.j, dist_mm.k, dist_mm.u, dist_mm.v, dist_mm.w ); @@ -2051,19 +2049,19 @@ bool Planner::_populate_block( /** * At this point at least one of the axes has more steps than * MIN_STEPS_PER_SEGMENT, ensuring the segment won't get dropped as - * zero-length. It's important to not apply corrections - * to blocks that would get dropped! + * zero-length. It's important to not apply corrections to blocks + * that would get dropped! * - * A correction function is permitted to add steps to an axis, it - * should *never* remove steps! + * A correction function is permitted to add steps to an axis, but + * it should *never* remove steps! */ TERN_(BACKLASH_COMPENSATION, backlash.add_correction_steps(steps_dist, dm, block)); } - TERN_(FT_MOTION, block->distance_mm = dist_mm); // Store the distance for all axes in mm for this block - TERN_(HAS_EXTRUDERS, block->steps.e = esteps); + // Set the block's Step Event Count based from the axis with the most steps + block->step_event_count = ( #if NUM_AXES _MAX(LOGICAL_AXIS_LIST(esteps, @@ -2076,9 +2074,11 @@ bool Planner::_populate_block( #endif ); - // Bail if this is a zero-length block + // Bail if this is a "zero-length" block if (block->step_event_count < MIN_STEPS_PER_SEGMENT) return false; + E_TERN_(block->extruder = extruder); + TERN_(MIXING_EXTRUDER, mixer.populate_block(block->b_color)); #if HAS_FAN @@ -2090,8 +2090,6 @@ bool Planner::_populate_block( block->e_to_p_pressure = baricuda_e_to_p_pressure; #endif - E_TERN_(block->extruder = extruder); - #if ENABLED(AUTO_POWER_CONTROL) if (XYZ_HAS_STEPS(block)) powerManager.power_on(); #endif @@ -2983,6 +2981,7 @@ bool Planner::buffer_line(const xyze_pos_t &cart, const feedRate_t fr_mm_s // Cartesian XYZ to kinematic ABC, stored in global 'delta' inverse_kinematics(machine); + // Provide known Cartesian length in the hints structure PlannerHints ph = hints; if (!hints.millimeters) ph.millimeters = get_move_distance(xyze_pos_t(cart_dist_mm) OPTARG(HAS_ROTATIONAL_AXES, ph.cartesian_move)); diff --git a/Marlin/src/module/planner.h b/Marlin/src/module/planner.h index 02150451b6..46def85427 100644 --- a/Marlin/src/module/planner.h +++ b/Marlin/src/module/planner.h @@ -190,6 +190,52 @@ typedef struct { #endif +typedef struct DistanceMM : abce_float_t { + #if ANY(HAS_REAL_X, HAS_REAL_Y, HAS_REAL_Z) + struct { + #if HAS_REAL_X + float x; + #endif + #if HAS_REAL_Y + float y; + #endif + #if HAS_REAL_Z + float z; + #endif + } real; + #endif + const float& operator[](const int n) const { + switch (n) { + #if HAS_REAL_X + case X_REAL: return real.x; + #endif + #if HAS_REAL_Y + case Y_REAL: return real.y; + #endif + #if HAS_REAL_Z + case Z_REAL: return real.z; + #endif + default: break; + } + return pos[n]; + } + float& operator[](const int n) { + switch (n) { + #if HAS_REAL_X + case X_REAL: return real.x; + #endif + #if HAS_REAL_Y + case Y_REAL: return real.y; + #endif + #if HAS_REAL_Z + case Z_REAL: return real.z; + #endif + default: break; + } + return pos[n]; + } +} ext_distance_t; + /** * struct block_t * @@ -262,7 +308,7 @@ typedef struct PlannerBlock { AxisBits direction_bits; // Direction bits set for this block, where 1 is negative motion #if ENABLED(FT_MOTION) - xyze_pos_t distance_mm; // The distance traveled in mm along each axis + ext_distance_t ext_distance_mm; // The distance traveled in mm along each axis #endif #if ANY(SMOOTH_LIN_ADVANCE, FTM_HAS_LIN_ADVANCE) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index cb339830d3..bc049a3492 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -682,7 +682,7 @@ void Stepper::disable_all_steppers() { // Set a single axis direction based on the last set flags. // A direction bit of "1" indicates forward or positive motion. #define SET_STEP_DIR(A) do{ \ - const bool fwd = motor_direction(_AXIS(A)); \ + const bool fwd = axis_direction(_AXIS(A)); \ A##_APPLY_DIR(fwd, false); \ count_direction[_AXIS(A)] = fwd ? 1 : -1; \ }while(0) @@ -2389,19 +2389,12 @@ void Stepper::isr() { #endif // Set flags for all axes that move in this block - // These are set per-axis, not per-stepper AxisBits didmove; - NUM_AXIS_CODE( - if (X_MOVE_TEST) didmove.a = true, // Cartesian X or Kinematic A - if (Y_MOVE_TEST) didmove.b = true, // Cartesian Y or Kinematic B - if (Z_MOVE_TEST) didmove.c = true, // Cartesian Z or Kinematic C - if (!!current_block->steps.i) didmove.i = true, - if (!!current_block->steps.j) didmove.j = true, - if (!!current_block->steps.k) didmove.k = true, - if (!!current_block->steps.u) didmove.u = true, - if (!!current_block->steps.v) didmove.v = true, - if (!!current_block->steps.w) didmove.w = true - ); + #define _DID_MOVE(A) didmove.A = bool(current_block->steps.A); + MAIN_AXIS_MAP(_DID_MOVE); + TERN_(HAS_REAL_X, didmove.rx = X_MOVE_TEST); // Cartesian X + TERN_(HAS_REAL_Y, didmove.ry = Y_MOVE_TEST); // ... Y + TERN_(HAS_REAL_Z, didmove.rz = Z_MOVE_TEST); // ... Z axis_did_move = didmove; } @@ -2563,7 +2556,7 @@ void Stepper::isr() { const bool forward_e = la_step_rate < step_rate; la_interval = calc_timer_interval((forward_e ? step_rate - la_step_rate : la_step_rate - step_rate) >> current_block->la_scaling); - if (forward_e != motor_direction(E_AXIS)) { + if (forward_e != axis_direction(E_AXIS)) { last_direction_bits.toggle(E_AXIS); count_direction.e *= -1; @@ -3009,7 +3002,7 @@ void Stepper::isr() { #endif la_interval = calc_timer_interval(uint32_t(ABS(step_rate))); - if (forward_e != motor_direction(E_AXIS)) { + if (forward_e != axis_direction(E_AXIS)) { last_direction_bits.toggle(E_AXIS); count_direction.e *= -1; DIR_WAIT_BEFORE(); @@ -3595,13 +3588,13 @@ int32_t Stepper::triggered_position(const AxisEnum axis) { * Reporting */ -#if ANY(CORE_IS_XY, CORE_IS_XZ, MARKFORGED_XY, MARKFORGED_YX, IS_SCARA, DELTA) +#if ANY(HAS_REAL_X, IS_SCARA, DELTA) #define SAYS_A 1 #endif -#if ANY(CORE_IS_XY, CORE_IS_YZ, MARKFORGED_XY, MARKFORGED_YX, IS_SCARA, DELTA, POLAR) +#if ANY(HAS_REAL_Y, IS_SCARA, DELTA, POLAR) #define SAYS_B 1 #endif -#if ANY(CORE_IS_XZ, CORE_IS_YZ, DELTA) +#if ANY(HAS_REAL_Z, DELTA) #define SAYS_C 1 #endif diff --git a/Marlin/src/module/stepper.h b/Marlin/src/module/stepper.h index 3d9820a496..18ab27ab3a 100644 --- a/Marlin/src/module/stepper.h +++ b/Marlin/src/module/stepper.h @@ -657,18 +657,18 @@ class Stepper { // Quickly stop all steppers FORCE_INLINE static void quick_stop() { abort_current_block = true; } - // The direction of a single motor. A true result indicates forward or positive motion. - FORCE_INLINE static bool motor_direction(const AxisEnum axis) { return last_direction_bits[axis]; } + // The direction of a single motor and/or real axis. A true result indicates forward or positive motion. + FORCE_INLINE static bool axis_direction(const AxisEnum real) { return last_direction_bits[real]; } #if HAS_STANDARD_MOTION - // The last movement direction was not null on the specified axis. Note that motor direction is not necessarily the same. - FORCE_INLINE static bool axis_is_moving(const AxisEnum axis) { return axis_did_move[axis]; } + // The last segment moved on the specified motor and/or real axis. + FORCE_INLINE static bool axis_is_moving(const AxisEnum real) { return axis_did_move[real]; } #endif // Handle a triggered endstop static void endstop_triggered(const AxisEnum axis); - // Triggered position of an axis in steps + // Triggered position of an axis in steps, converted as needed from Core kinematics static int32_t triggered_position(const AxisEnum axis); #if HAS_MOTOR_CURRENT_SPI || HAS_MOTOR_CURRENT_PWM diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index f0ca49ef66..a4744c2bad 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -1938,7 +1938,8 @@ void Temperature::mintemp_error(const heater_id_t heater_id OPTARG(ERR_INCLUDE_T #endif temp_hotend[e].soft_pwm_amount = (temp_hotend[e].celsius > temp_range[e].mintemp || is_hotend_preheating(e)) - && temp_hotend[e].celsius < temp_range[e].maxtemp ? (int)get_pid_output_hotend(e) >> 1 : 0; + && (temp_hotend[e].celsius < temp_range[e].maxtemp) + ? (int)get_pid_output_hotend(e) >> 1 : 0; #if WATCH_HOTENDS // Make sure temperature is increasing From 0aded84207c3dc7be3bd0397b086f38600261e04 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 9 Feb 2026 15:59:05 -0600 Subject: [PATCH 34/38] =?UTF-8?q?=F0=9F=93=9D=20Update=20AxisEnum=20notes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/types.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Marlin/src/core/types.h b/Marlin/src/core/types.h index 02ee0d9dd1..0f1f98b53b 100644 --- a/Marlin/src/core/types.h +++ b/Marlin/src/core/types.h @@ -350,9 +350,9 @@ typedef struct { // // Enumerated axis indices // -// - X_AXIS, Y_AXIS, and Z_AXIS should be used for axes in Cartesian space -// - A_AXIS, B_AXIS, and C_AXIS should be used for Steppers, corresponding to XYZ on Cartesians -// - X_REAL, Y_REAL, and Z_REAL should be used for axes on Core kinematics +// - X_REAL, Y_REAL, and Z_REAL should be used for axes in Cartesian space +// - A_AXIS, B_AXIS, and C_AXIS should be used for Steppers +// - X_AXIS, Y_AXIS, and Z_AXIS are now more generic interchangeble indexes // enum AxisEnum : uint8_t { From ba9606694dee554c78e03170c6e4f5f6291cbd48 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Tue, 10 Feb 2026 00:49:22 +0000 Subject: [PATCH 35/38] [cron] Bump distribution date (2026-02-10) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index 563aeee641..de43e449a2 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2026-02-09" +//#define STRING_DISTRIBUTION_DATE "2026-02-10" /** * The protocol for communication to the host. Protocol indicates communication diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 62334904f4..6d2a859aee 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2026-02-09" + #define STRING_DISTRIBUTION_DATE "2026-02-10" #endif /** From f8cc1a0b4b4e7376ec25d334488eb462c3bdc5cd Mon Sep 17 00:00:00 2001 From: ellensp <530024+ellensp@users.noreply.github.com> Date: Tue, 10 Feb 2026 19:45:01 +1300 Subject: [PATCH 36/38] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Memor?= =?UTF-8?q?y=20Map=20Visualizer=20(#28301)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../share/scripts/visualize_memory_map.py | 1562 +++++++++++++++++ 1 file changed, 1562 insertions(+) create mode 100644 buildroot/share/scripts/visualize_memory_map.py diff --git a/buildroot/share/scripts/visualize_memory_map.py b/buildroot/share/scripts/visualize_memory_map.py new file mode 100644 index 0000000000..c74e396286 --- /dev/null +++ b/buildroot/share/scripts/visualize_memory_map.py @@ -0,0 +1,1562 @@ +#!/usr/bin/env python3 +# +# Visualize memory map +# +# Memory Map Visualizer for Marlin Firmware (AVR and ARM/STM32) +# Generates an interactive HTML page showing memory layout with color coding +# Uses nm to extract symbols from ELF file +# +# Author: Dust +# Additional contributor: Thomas Toka (Windows support) +# Implementation assistance: Claude Sonnet 4.5 +# + +import re +import sys +import subprocess +import argparse +import struct +import os +import shutil +from pathlib import Path +from collections import defaultdict +import glob + +def parse_size(size_str): + """Parse size string with optional KB/MB suffix to bytes. + + Examples: + '512KB' -> 524288 + '20KB' -> 20480 + '256' -> 256 + '1MB' -> 1048576 + """ + size_str = str(size_str).strip().upper() + + # Match number with optional unit + match = re.match(r'^([0-9.]+)\s*(B|KB|K|MB|M)?$', size_str) + if not match: + raise argparse.ArgumentTypeError(f"Invalid size format: {size_str}. Use formats like '512KB', '20KB', or '262144'") + + value = float(match.group(1)) + unit = match.group(2) or 'B' + + # Convert to bytes + if unit in ('B', ''): + return int(value) + elif unit in ('KB', 'K'): + return int(value * 1024) + elif unit in ('MB', 'M'): + return int(value * 1024 * 1024) + else: + raise argparse.ArgumentTypeError(f"Unknown unit: {unit}") + +def detect_architecture(elf_path): + """Detect if ELF is AVR or ARM by reading ELF header directly (cross-platform)""" + try: + with open(elf_path, 'rb') as f: + # Read ELF header + elf_header = f.read(20) # First 20 bytes contain what we need + + # Check ELF magic number + if elf_header[:4] != b'\x7fELF': + print(f"Warning: Not a valid ELF file: {elf_path}", file=sys.stderr) + return 'avr' # Default to AVR + + # ELF class (32-bit or 64-bit) is at byte 4 + # Machine type is at bytes 18-19 (little endian) + e_machine = struct.unpack('/.pio/packages/... + 3) User PlatformIO: ~.platformio/packages/... + 4) Fallback to bare tool name (keeps legacy behavior) + """ + exe = '.exe' if os.name == 'nt' else '' + tool = f'avr-nm{exe}' if arch == 'avr' else f'arm-none-eabi-nm{exe}' + + # 1) PATH + found = shutil.which(tool) + if found: + return found + + # Script path: /buildroot/share/scripts/visualize_memory_map.py + # Project root is 3 parents up from scripts/ + script_dir = Path(__file__).resolve().parent + try: + project_root = script_dir.parents[3] + except IndexError: + project_root = Path.cwd() + + # 2) Project-local PlatformIO + pio_packages = project_root / '.pio' / 'packages' + + # 3) User PlatformIO + user_packages = Path.home() / '.platformio' / 'packages' + + if arch == 'avr': + candidates = [ + pio_packages / 'toolchain-atmelavr' / 'bin' / tool, + user_packages / 'toolchain-atmelavr' / 'bin' / tool, + ] + else: + candidates = [ + pio_packages / 'toolchain-gccarmnoneeabi' / 'bin' / tool, + user_packages / 'toolchain-gccarmnoneeabi' / 'bin' / tool, + ] + + for c in candidates: + if c.exists(): + return str(c) + + # 4) Fallback + return tool + +def normalize_address(addr, arch): + """Normalize addresses for different architectures + STM32: Flash at 0x08000000, RAM at 0x20000000 + AVR: Flash at 0x00000000, RAM at 0x00800000+ (varies by chip) + """ + if arch == 'arm': + # STM32 Flash starts at 0x08000000, RAM at 0x20000000 + if addr >= 0x20000000: # RAM + return addr - 0x20000000 + elif addr >= 0x08000000: # Flash + return addr - 0x08000000 + elif arch == 'avr': + # AVR RAM typically starts at 0x00800000 or higher + # Flash starts at 0x00000000 + if addr >= 0x00800000: # RAM region + return addr - 0x00800000 + return addr + +def get_memory_type_arm(addr): + """Determine if ARM address is Flash or RAM""" + if addr >= 0x20000000: + return 'ram' + else: # 0x08000000 range + return 'flash' + +def parse_nm_output(elf_path, arch): + """Parse nm output to extract all symbols with sizes""" + symbols = [] + special_symbols = {} # For heap, stack, bss markers + zero_size_important = [] # For important symbols that nm doesn't report size for + + nm_tool = find_nm_tool(arch) + + # Early, explicit failure with a helpful hint (prevents WinError 2 confusion) + nm_tool_path = Path(nm_tool) + if not nm_tool_path.exists() and shutil.which(nm_tool) is None: + print(f"Error: nm tool not found: {nm_tool}", file=sys.stderr) + print("Hint: Build once with PlatformIO so .pio/packages is populated, or add the toolchain bin directory to PATH.", file=sys.stderr) + print("On Windows for ARM builds, expected path looks like: .pio\\packages\\toolchain-gccarmnoneeabi\\bin\\arm-none-eabi-nm.exe", file=sys.stderr) + sys.exit(1) + + # First, get special symbols and important zero-size markers (without --print-size) + try: + result = subprocess.run( + [nm_tool, '--demangle', str(elf_path)], + capture_output=True, + text=True, + check=True + ) + + for line in result.stdout.strip().split('\n'): + parts = line.split(None, 2) + if len(parts) >= 3: + addr_str, sym_type, name = parts + addr_raw = int(addr_str, 16) + + # Capture special symbols for heap/stack display + if name in ['__heap_start', '__heap_end', '__bss_end', '_end', '__stack', '__data_end', '__bss_start', '_estack', '_sstack']: + # Normalize address for architecture + addr = normalize_address(addr_raw, arch) + special_symbols[name] = addr + + # Capture important zero-size symbols that define memory regions + elif name in ['g_pfnVectors', '__vectors', '__trampolines_start', '__trampolines_end', + '__ctors_start', '__ctors_end', '__dtors_start', '__dtors_end', + '__init', '__fini', '_sidata', '_sdata', '_edata', '_sbss', '_ebss']: + zero_size_important.append({ + 'name': name, + 'addr_raw': addr_raw, + 'addr': normalize_address(addr_raw, arch), + 'sym_type': sym_type, + 'size': 0 + }) + except subprocess.CalledProcessError as e: + print(f"Error running {nm_tool} for special symbols: {e}", file=sys.stderr) + + if special_symbols: + print(f" Special symbols found: {list(special_symbols.keys())}") + for name, addr in special_symbols.items(): + print(f" {name}: 0x{addr:08x}") + + # Now get regular symbols with sizes (using size-sort for better ordering) + try: + result = subprocess.run( + [nm_tool, '--size-sort', '--print-size', '--demangle', str(elf_path)], + capture_output=True, + text=True, + check=True + ) + + for line in result.stdout.strip().split('\n'): + # Format: address size type name + # Example: 00001234 00000100 T _ZN10GcodeSuite3G28Ev + parts = line.split(None, 3) + if len(parts) >= 4: + addr_str, size_str, sym_type, name = parts + addr_raw = int(addr_str, 16) + size = int(size_str, 16) + + # Skip zero-size symbols EXCEPT for important startup symbols + # These mark important regions that nm doesn't report sizes for + if size == 0 and name not in ['__vectors', '__trampolines_start', '__trampolines_end', + '__ctors_start', '__ctors_end', '__dtors_start', '__dtors_end', + '__init', '__fini', 'g_pfnVectors']: + continue + + # Normalize address for architecture + addr = normalize_address(addr_raw, arch) + + # Categorize by symbol type + # t/T = text (code), d/D = initialized data, b/B = uninitialized data (BSS) + # r/R = read-only data, V = weak object + section = '' + if sym_type in 'tTrR': + # For ARM, check actual address to determine section + if arch == 'arm': + mem_type = get_memory_type_arm(addr_raw) + if mem_type == 'flash': + section = '.text' if sym_type in 'tT' else '.rodata' + else: + section = '.data' # Shouldn't happen for t/T/r/R but handle it + else: + section = '.text' if sym_type in 'tT' else '.rodata' + elif sym_type in 'dD': + section = '.data' + elif sym_type in 'bB': + section = '.bss' + elif sym_type in 'vV': # Weak objects + # For ARM, check actual address + if arch == 'arm': + mem_type = get_memory_type_arm(addr_raw) + section = '.data' if mem_type == 'ram' else '.rodata' + else: + section = '.data' # Usually in RAM for weak objects + else: + # For ARM, check actual address for unknown types + if arch == 'arm': + mem_type = get_memory_type_arm(addr_raw) + section = '.data' if mem_type == 'ram' else '.text' + else: + section = '.other' + + # Extract module name from demangled name + module = categorize_symbol(name) + + symbols.append({ + 'name': name, + 'addr': addr, + 'addr_raw': addr_raw, # Store original address for display + 'size': size, + 'section': section, + 'module': module, + 'type': 'symbol', + 'sym_type': sym_type + }) + except subprocess.CalledProcessError as e: + print(f"Error running nm: {e}", file=sys.stderr) + sys.exit(1) + + # Add important zero-size symbols that were captured earlier + for zero_sym in zero_size_important: + # Determine section based on symbol type and address + sym_type = zero_sym['sym_type'] + addr_raw = zero_sym['addr_raw'] + + if sym_type in 'tTrR': + if arch == 'arm': + mem_type = get_memory_type_arm(addr_raw) + section = '.text' if sym_type in 'tT' else '.rodata' if mem_type == 'flash' else '.data' + else: + section = '.text' if sym_type in 'tT' else '.rodata' + elif sym_type in 'dD': + section = '.data' + elif sym_type in 'bB': + section = '.bss' + else: + if arch == 'arm': + mem_type = get_memory_type_arm(addr_raw) + section = '.data' if mem_type == 'ram' else '.text' + else: + section = '.other' + + module = categorize_symbol(zero_sym['name']) + + symbols.append({ + 'name': zero_sym['name'], + 'addr': zero_sym['addr'], + 'addr_raw': zero_sym['addr_raw'], + 'size': 0, + 'section': section, + 'module': module, + 'type': 'symbol', + 'sym_type': sym_type + }) + + # Post-process: Calculate sizes for zero-size symbols based on next symbol + # Sort symbols by address + symbols.sort(key=lambda x: x['addr']) + + for i, sym in enumerate(symbols): + if sym['size'] == 0 and i + 1 < len(symbols): + # Find next symbol with non-zero address in same memory space + _, _, mem_type = categorize_section(sym['section']) + for next_sym in symbols[i + 1:]: + _, _, next_mem_type = categorize_section(next_sym['section']) + # Look for next symbol in same address space + if next_mem_type == mem_type and next_sym['addr'] > sym['addr']: + # Calculate size as gap to next symbol + calculated_size = next_sym['addr'] - sym['addr'] + if calculated_size > 0 and calculated_size < 100000: # Sanity check + sym['size'] = calculated_size + # Update name to show it's important + if sym['name'] == '__vectors': + sym['name'] = 'Interrupt Vectors (__vectors)' + sym['module'] = 'Core' + elif '__trampolines' in sym['name']: + sym['module'] = 'Core' + break + + return symbols, special_symbols + +def categorize_symbol(name, warn_conflicts=False): + """Categorize symbol by module based on name patterns""" + name_lower = name.lower() + + # Pattern definitions with their categories + # NOTE: Order matters! More specific patterns should come before general ones + patterns = [ + (['ubl', 'unified_bed_leveling'], 'UBL'), + (['tmcstepper', 'tmc2130', 'tmc2208', 'tmc2209', 'tmc2660', 'tmc5160', 'tmcmarlin'], 'TMCLibrary'), + (['planner'], 'Planner'), + (['stepper'], 'Stepper'), + (['temperature'], 'Temperature'), + (['ftmotion', 'ft_motion'], 'FT_Motion'), + (['motion', 'homing'], 'Motion'), + (['gcode', 'gcodesuite'], 'GCode'), + (['lcd', 'ui', 'marlinui'], 'LCD/UI'), + (['probe'], 'Probe'), + (['endstop'], 'Endstops'), + (['serial'], 'Serial'), + (['settings', 'eeprom'], 'Settings'), + (['marlincore'], 'Core'), # Note: 'marlin::' checked separately + ] + + matches = [] + + # Check all patterns + for pattern_list, category in patterns: + for pattern in pattern_list: + if pattern in name_lower: + matches.append((category, pattern)) + break # Only need one match per category + + # Special case for marlin:: prefix (case-sensitive) + if 'marlin::' in name: + matches.append(('Core', 'marlin::')) + + # Warn if multiple categories match + if warn_conflicts and len(matches) > 1: + categories = [m[0] for m in matches] + patterns_matched = [m[1] for m in matches] + print(f" ⚠ Ambiguous: '{name}' matches {len(matches)} categories: {', '.join([f'{c} ({p})' for c, p in matches])} → using {categories[0]}") + + # Return first match or 'Other' + if matches: + return matches[0][0] + else: + return 'Other' + +def categorize_section(section_name): + """Categorize section for color coding""" + if section_name.startswith('.text'): + return 'code', '#4CAF50', 'flash' # Green for code + elif section_name.startswith('.data'): + return 'data', '#2196F3', 'ram' # Blue for initialized data + elif section_name.startswith('.bss'): + return 'bss', '#FF9800', 'ram' # Orange for uninitialized data + elif section_name.startswith('.rodata'): + return 'rodata', '#9C27B0', 'flash' # Purple for read-only data + else: + return 'other', '#757575', 'flash' # Gray for other + +def generate_memory_blocks_html(items, module_colors, zoom_level=1, total_memory_size=None, special_symbols=None, arch='avr'): + """Generate HTML for memory blocks as a byte-by-byte map + zoom_level: multiplier (1x = 2 pixels per byte + 1px delimiter, 2x = 4 pixels + 2px delimiter, etc.) + total_memory_size: total available memory (to show unused space at end) + special_symbols: dict of special symbols like __heap_start, __stack for RAM visualization + arch: architecture ('avr' or 'arm') to determine address display format + """ + if not items: + return '
No data
' + + # Calculate actual pixels per byte and delimiter size + pixels_per_byte = zoom_level * 2 + delimiter_width = zoom_level * 1 + + # Find memory range + min_addr = min(item['addr'] for item in items) + max_addr = max(item['addr'] + item['size'] for item in items) + + # Determine address base for ARM architecture + addr_base = 0 + if arch == 'arm' and items: + # Check if this is RAM or Flash by looking at items' original addresses + # Find first item that has addr_raw set + for item in items: + if 'addr_raw' in item: + if item['addr_raw'] >= 0x20000000: + addr_base = 0x20000000 # RAM + else: + addr_base = 0x08000000 # Flash + break + + # If total memory size specified, extend to show full memory + if total_memory_size: + total_size = total_memory_size + else: + total_size = max_addr - min_addr + + # Create byte array for memory map + memory_map = [None] * total_size + + # Fill in the memory map with symbol info + for item in items: + start = item['addr'] - min_addr + end = start + item['size'] + _, default_color, _ = categorize_section(item['section']) + color = module_colors.get(item['module'], default_color) + + for i in range(start, min(end, total_size)): + memory_map[i] = { + 'color': color, + 'name': item['name'], + 'addr': item['addr'], + 'addr_raw': item.get('addr_raw', item['addr']), # Store original address for ARM display + 'size': item['size'], + 'section': item['section'], + 'module': item['module'] + } + + # Add heap/stack regions if this is RAM and we have special symbols + if special_symbols: + heap_start = special_symbols.get('__heap_start', special_symbols.get('_end', special_symbols.get('__bss_end'))) + + # Stack grows downward from top of RAM on AVR + # Reserve top portion of RAM for stack (typically starts 256-512 bytes from top) + if heap_start: + # Check if heap_start is within our RAM range + heap_start_idx = heap_start - min_addr + + if 0 <= heap_start_idx < total_size: + # Stack reserve: last 256 bytes of RAM + stack_reserve_bytes = 256 + stack_start_idx = total_size - stack_reserve_bytes + + # Heap region: from end of BSS to start of stack reserve + heap_end_idx = stack_start_idx + + # Mark heap region + for i in range(heap_start_idx, heap_end_idx): + if 0 <= i < total_size and memory_map[i] is None: + addr = min_addr + i + memory_map[i] = { + 'color': '#404040', + 'name': 'Heap (available)', + 'addr': addr, + 'addr_raw': addr + addr_base if arch == 'arm' else addr, + 'size': heap_end_idx - heap_start_idx, + 'section': '.heap', + 'module': 'Heap' + } + + # Mark stack reserve region (top 256 bytes) + for i in range(stack_start_idx, total_size): + if 0 <= i < total_size and memory_map[i] is None: + addr = min_addr + i + memory_map[i] = { + 'color': '#505050', + 'name': 'Stack (reserve)', + 'addr': addr, + 'addr_raw': addr + addr_base if arch == 'arm' else addr, + 'size': stack_reserve_bytes, + 'section': '.stack', + 'module': 'Stack' + } + + # Generate HTML as rows of pixels + html = '' + # Calculate bytes per row to keep display width constant at ~1000 pixels + bytes_per_row = 1000 // pixels_per_byte + + # Iterate through memory in rows + for row_start in range(0, total_size, bytes_per_row): + row_end = min(row_start + bytes_per_row, total_size) + html += '
\n' + + # Iterate through each byte in this row + i = row_start + while i < row_end: + byte_info = memory_map[i] + + # Find consecutive bytes with same data + count = 1 + while (i + count < row_end and + ((byte_info is None and memory_map[i + count] is None) or + (byte_info is not None and memory_map[i + count] is not None and + memory_map[i + count]['name'] == byte_info['name']))): + count += 1 + + if byte_info is None: + # Unallocated or unused space + addr = i + min_addr + # For ARM, add back the base address for display + display_addr = addr + addr_base if arch == 'arm' else addr + # Check if next byte is different (need delimiter) + next_i = i + count + needs_delimiter = False + if next_i < row_end: + next_info = memory_map[next_i] + if next_info is not None: + needs_delimiter = True + + if addr >= max_addr: + # Unused space at end + if needs_delimiter: + html += f'
\n' + html += f'
\n' + else: + html += f'
\n' + else: + # Gap between symbols - likely linker-inserted code, padding, or alignment + if needs_delimiter: + html += f'
\n' + html += f'
\n' + else: + html += f'
\n' + else: + # Symbol data + display_name = byte_info['name'].replace('&', '&').replace('<', '<').replace('>', '>').replace('"', '"') + + # Check if next byte is different (need delimiter) + next_i = i + count + needs_delimiter = False + if next_i < row_end: + next_info = memory_map[next_i] + if next_info is None or next_info['name'] != byte_info['name']: + needs_delimiter = True + + # For display: ARM uses raw addresses (0x08000000/0x20000000 ranges), AVR uses normalized + display_addr = byte_info['addr_raw'] if arch == 'arm' else byte_info['addr'] + + if needs_delimiter: + html += f'''
+''' + html += f'
\n' + else: + html += f'''
+''' + + i += count + + html += '
\n' + + return html + +def check_pattern_conflicts(): + """Check for pattern conflicts and warn about potential issues""" + patterns = [ + (['ubl', 'unified_bed_leveling'], 'UBL'), + (['planner'], 'Planner'), + (['stepper'], 'Stepper'), + (['temperature'], 'Temperature'), + (['ftmotion', 'ft_motion'], 'FT_Motion'), + (['motion', 'homing'], 'Motion'), + (['gcode', 'gcodesuite'], 'GCode'), + (['lcd', 'ui', 'marlinui'], 'LCD/UI'), + (['probe'], 'Probe'), + (['endstop'], 'Endstops'), + (['serial'], 'Serial'), + (['settings', 'eeprom'], 'Settings'), + (['marlincore'], 'Core'), + ] + + conflicts = [] + + # Check for substring overlaps + for i, (patterns1, cat1) in enumerate(patterns): + for j, (patterns2, cat2) in enumerate(patterns): + if i >= j: # Only check each pair once + continue + for p1 in patterns1: + for p2 in patterns2: + # Check if one is substring of the other + if p1 in p2 or p2 in p1: + # Determine which comes first in the list (has priority) + if i < j: + conflicts.append((p1, cat1, p2, cat2, 'priority')) + else: + conflicts.append((p2, cat2, p1, cat1, 'priority')) + + if conflicts: + print("Pattern conflict analysis:") + for p1, c1, p2, c2, conflict_type in conflicts: + print(f" ℹ '{p1}' ({c1}) vs '{p2}' ({c2}) - '{p1}' has priority") + + return len(conflicts) + +def generate_csv(symbols, flash_size, ram_size, output_dir='.', arch='avr'): + """Generate CSV files for RAM and Flash memory usage""" + import csv + + flash_items = [] + ram_items = [] + + # Separate symbols by memory type + for item in symbols: + _, _, mem_type = categorize_section(item['section']) + if mem_type == 'flash': + flash_items.append(item) + else: + ram_items.append(item) + + # Sort by address (lowest first) + flash_items.sort(key=lambda x: x['addr']) + ram_items.sort(key=lambda x: x['addr']) + + # Calculate totals for percentages + total_flash = sum(item['size'] for item in flash_items) + total_ram = sum(item['size'] for item in ram_items) + + # Generate Flash CSV + flash_csv_path = Path(output_dir) / 'flash.csv' + with open(flash_csv_path, 'w', newline='', encoding='utf-8') as f: + writer = csv.writer(f) + writer.writerow(['Address', 'Size', 'Percentage', 'Name']) + + for item in flash_items: + # For AVR use normalized address, for ARM use raw address + addr = item['addr_raw'] if arch == 'arm' else item['addr'] + size = item['size'] + percentage = (size / total_flash * 100) if total_flash > 0 else 0 + name = item['name'] + writer.writerow([f'0x{addr:08x}', size, f'{percentage:.3f}', name]) + + print(f"✓ Generated Flash CSV: {flash_csv_path}") + print(f" Entries: {len(flash_items):,}") + + # Generate RAM CSV + ram_csv_path = Path(output_dir) / 'ram.csv' + with open(ram_csv_path, 'w', newline='', encoding='utf-8') as f: + writer = csv.writer(f) + writer.writerow(['Address', 'Size', 'Percentage', 'Name']) + + for item in ram_items: + # For AVR use normalized address, for ARM use raw address + addr = item['addr_raw'] if arch == 'arm' else item['addr'] + size = item['size'] + percentage = (size / total_ram * 100) if total_ram > 0 else 0 + name = item['name'] + writer.writerow([f'0x{addr:08x}', size, f'{percentage:.3f}', name]) + + print(f"✓ Generated RAM CSV: {ram_csv_path}") + print(f" Entries: {len(ram_items):,}") + +def generate_html(symbols, special_symbols, output_path, flash_size, ram_size, arch='avr', show_list=False): + """Generate interactive HTML visualization""" + + # Calculate total memory and gather stats + total_flash = 0 + total_ram = 0 + module_stats = defaultdict(lambda: {'flash': 0, 'ram': 0}) + + flash_items = [] + ram_items = [] + + for item in symbols: + cat, color, mem_type = categorize_section(item['section']) + if mem_type == 'flash': + total_flash += item['size'] + module_stats[item['module']]['flash'] += item['size'] + flash_items.append(item) + else: # RAM + total_ram += item['size'] + module_stats[item['module']]['ram'] += item['size'] + ram_items.append(item) + + # Sort by address for linear display + flash_items.sort(key=lambda x: x['addr']) + ram_items.sort(key=lambda x: x['addr']) + + # Memory sizes from command line arguments + FLASH_SIZE = flash_size + RAM_SIZE = ram_size + + print(f" Special symbols found: {list(special_symbols.keys())}") + if special_symbols: + for sym, addr in special_symbols.items(): + print(f" {sym}: 0x{addr:08x}") + + # Calculate section ranges + section_ranges = {} + for item in symbols: + section = item['section'] + addr = item['addr'] + end_addr = addr + item['size'] + + if section not in section_ranges: + section_ranges[section] = {'start': addr, 'end': end_addr, 'type': categorize_section(section)[2]} + else: + section_ranges[section]['start'] = min(section_ranges[section]['start'], addr) + section_ranges[section]['end'] = max(section_ranges[section]['end'], end_addr) + + # Add heap and stack to section ranges if available + if special_symbols: + heap_start = special_symbols.get('__heap_start', special_symbols.get('_end', special_symbols.get('__bss_end'))) + if heap_start and ram_items: + # Find RAM base address + ram_base = min(item['addr'] for item in ram_items) + + # For ARM, check if we have _estack which marks the end of RAM/top of stack + if '_estack' in special_symbols: + # _estack marks the top of the stack area (end of RAM) + stack_end = special_symbols['_estack'] + # Reserve some stack space (ARM typically has larger stacks) + stack_reserve_bytes = min(2048, (RAM_SIZE - (heap_start - ram_base)) // 2) + stack_start = stack_end - stack_reserve_bytes + heap_end = stack_start + else: + # AVR-style: reserve fixed stack space at end of RAM + stack_reserve_bytes = 256 + heap_end = ram_base + RAM_SIZE - stack_reserve_bytes + stack_start = heap_end + stack_end = ram_base + RAM_SIZE + + section_ranges['.heap'] = {'start': heap_start, 'end': heap_end, 'type': 'ram'} + section_ranges['.stack'] = {'start': stack_start, 'end': stack_end, 'type': 'ram'} + + print(f" Heap: 0x{heap_start:08x} - 0x{heap_end:08x} ({heap_end - heap_start} bytes)") + print(f" Stack: 0x{stack_start:08x} - 0x{stack_end:08x} ({stack_end - stack_start} bytes)") + + # Module colors + module_colors = { + 'UBL': '#4CAF50', + 'Planner': '#2196F3', + 'Stepper': '#FF5722', + 'Temperature': '#FF9800', + 'FT_Motion': '#E91E63', + 'Motion': '#9C27B0', + 'GCode': '#00BCD4', + 'LCD/UI': '#FFEB3B', + 'Probe': '#8BC34A', + 'Endstops': '#FF6F00', + 'Serial': '#3F51B5', + 'Settings': '#009688', + 'TMCLibrary': "#C10091", + 'Core': '#795548', + 'Other': '#757575' + } + + # Generate HTML + html = f""" + + + + Marlin Memory Map Visualization + + + +
+

Marlin Firmware Memory Map

+
+
+
{total_ram:,}
+
RAM Used ({100.0 * total_ram / RAM_SIZE:.1f}% of {RAM_SIZE:,})
+
+
+
{total_flash:,}
+
Flash Used ({100.0 * total_flash / FLASH_SIZE:.1f}% of {FLASH_SIZE:,})
+
+
+
{len(symbols):,}
+
Symbols
+
+
+
+ +
+ + + Zoom: + + + + +
+ +
+
+
+

Flash Memory Layout (hover for details)

+
+{generate_memory_blocks_html(flash_items, module_colors, 1, FLASH_SIZE, None, arch)}
+ + + +
+ +
+

RAM Layout (hover for details)

+
+{generate_memory_blocks_html(ram_items, module_colors, 1, RAM_SIZE, special_symbols, arch)}
+ + + +
+
+ +
+

Modules

+""" + + # Add module legend + for module, color in sorted(module_colors.items()): + flash_size = module_stats[module]['flash'] + ram_size = module_stats[module]['ram'] + if flash_size > 0 or ram_size > 0: + html += f'''
+
+ {module} +
+''' + + html += """ +
+

Module Statistics

+""" + + # Add module statistics sorted by total size + for module, stats in sorted(module_stats.items(), key=lambda x: x[1]['flash'] + x[1]['ram'], reverse=True): + if stats['flash'] > 0 or stats['ram'] > 0: + html += f'''
+
{module}
+
Flash: {stats['flash']:,} bytes | RAM: {stats['ram']:,} bytes
+
+''' + + html += """
+
+

Section Map

+ + + + + + + + + + +""" + + # Add section rows sorted by start address + for section, info in sorted(section_ranges.items(), key=lambda x: x[1]['start']): + size = info['end'] - info['start'] + mem_type = info['type'].upper() + html += f''' + + + + + +''' + + html += """ +
SectionStartEndSize
{section}0x{info['start']:08x}0x{info['end']:08x}{size:,}
+
+
+""" + + # Add memory list tables if requested + if show_list: + # Sort items by address + flash_items_sorted = sorted(flash_items, key=lambda x: x['addr']) + ram_items_sorted = sorted(ram_items, key=lambda x: x['addr']) + + # Calculate totals for percentages + total_flash_used = sum(item['size'] for item in flash_items_sorted) + total_ram_used = sum(item['size'] for item in ram_items_sorted) + + html += """ +
+

Memory Usage Details

+ +
+ + +
+ +
+

RAM Symbols (""" + f"{len(ram_items_sorted):,}" + """ entries)

+
+ + + + + + + + + + +""" + + for item in ram_items_sorted: + # For AVR use normalized address, for ARM use raw address + addr = item['addr_raw'] if arch == 'arm' else item['addr'] + size = item['size'] + percentage = (size / total_ram_used * 100) if total_ram_used > 0 else 0 + name = item['name'].replace('&', '&').replace('<', '<').replace('>', '>').replace('"', '"') + html += f''' + + + + + +''' + + html += """ +
+ Address ▲▼ + + Size (bytes) ▲▼ + + Percentage ▲▼ + + Name ▲▼ +
0x{addr:08x}{size:,}{percentage:.3f}%{name}
+
+
+ + +
+""" + + html += """ +
+
+
+
+ + + + +""" + + with open(output_path, 'w') as f: + f.write(html) + + print(f"✓ Generated memory visualization: {output_path}") + print(f" Total Flash: {total_flash:,} bytes") + print(f" Total RAM: {total_ram:,} bytes") + print(f" Symbols: {len(symbols):,}") + print(f" Flash symbols: {len(flash_items):,}") + print(f" RAM symbols: {len(ram_items):,}") + +if __name__ == '__main__': + parser = argparse.ArgumentParser( + description='Generate interactive memory map visualization from AVR/ARM ELF file', + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog='''Examples: + # Use defaults (256KB Flash/8KB RAM for AVR, 512KB Flash/20KB RAM for ARM) + %(prog)s firmware.elf output.html + + # ATmega1284 with 128KB Flash, 16KB RAM + %(prog)s firmware.elf output.html --flash 128KB --ram 16KB + + # STM32F407 with 1MB Flash, 128KB RAM + %(prog)s firmware.elf output.html --flash 1MB --ram 128KB + + # Check for pattern conflicts and ambiguous symbol matches + %(prog)s firmware.elf output.html --flash 512KB --ram 20KB --warn-conflicts +''' + ) + + parser.add_argument('elf_file', type=Path, + help='Path to the ELF file to analyze') + parser.add_argument('output_file', type=Path, nargs='?', default=Path('memory_map.html'), + help='Output HTML file path (default: memory_map.html)') + parser.add_argument('--flash', type=parse_size, default=None, + help='Total Flash memory size (e.g., 256KB, 512KB, 262144 bytes) (default: 256KB for AVR, 512KB for ARM)') + parser.add_argument('--ram', type=parse_size, default=None, + help='Total RAM size (e.g., 8KB, 20KB, 8192 bytes) (default: 8KB for AVR, 20KB for ARM)') + parser.add_argument('--arch', choices=['avr', 'arm', 'auto'], default='auto', + help='Architecture (default: auto-detect)') + parser.add_argument('--warn-conflicts', action='store_true', + help='Warn about symbols that match multiple category patterns') + parser.add_argument('--csv', action='store_true', + help='Generate CSV files (flash.csv and ram.csv) with memory usage data') + parser.add_argument('--list', action='store_true', + help='Display memory usage data in HTML tables below the visualization') + + args = parser.parse_args() + + if not args.elf_file.exists(): + print(f"Error: ELF file not found: {args.elf_file}") + sys.exit(1) + + # Detect architecture + if args.arch == 'auto': + arch = detect_architecture(args.elf_file) + print(f"Detected architecture: {arch.upper()}") + else: + arch = args.arch + print(f"Using specified architecture: {arch.upper()}") + + # Set default sizes based on architecture if not specified + if args.flash is None: + args.flash = 256*1024 if arch == 'avr' else 512*1024 # ATmega2560: 256KB, STM32F103RE: 512KB + if args.ram is None: + args.ram = 8*1024 if arch == 'avr' else 20*1024 # ATmega2560: 8KB, STM32F103RE: 20KB + + print(f"Memory sizes: Flash={args.flash:,} bytes, RAM={args.ram:,} bytes") + + # Check for pattern conflicts if requested + if args.warn_conflicts: + num_conflicts = check_pattern_conflicts() + if num_conflicts == 0: + print("✓ No pattern conflicts detected") + print() + + symbols, special_symbols = parse_nm_output(args.elf_file, arch) + + # Categorize with conflict warnings if requested + if args.warn_conflicts: + print("Checking for ambiguous symbol matches...") + for symbol in symbols: + symbol['module'] = categorize_symbol(symbol['name'], warn_conflicts=True) + print() + + # Generate CSV files if requested + if args.csv: + output_dir = args.output_file.parent if args.output_file.parent != Path('.') else Path('.') + generate_csv(symbols, args.flash, args.ram, output_dir, arch) + print() + + generate_html(symbols, special_symbols, args.output_file, args.flash, args.ram, arch, args.list) From 59bcaca96b2b96b998c49ea9cd05ff01732c93f5 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 10 Feb 2026 01:16:41 -0600 Subject: [PATCH 37/38] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Motion=20encapsulati?= =?UTF-8?q?on=20(#27866)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/MarlinCore.cpp | 28 +- Marlin/src/core/debug_section.h | 2 +- Marlin/src/core/utility.cpp | 10 +- Marlin/src/feature/babystep.cpp | 4 +- Marlin/src/feature/backlash.cpp | 8 +- Marlin/src/feature/bedlevel/abl/bbl.cpp | 36 +- Marlin/src/feature/bedlevel/bdl/bdl.cpp | 28 +- Marlin/src/feature/bedlevel/bedlevel.cpp | 34 +- .../bedlevel/mbl/mesh_bed_leveling.cpp | 34 +- Marlin/src/feature/bedlevel/ubl/ubl.cpp | 4 +- Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp | 80 +- .../src/feature/bedlevel/ubl/ubl_motion.cpp | 44 +- Marlin/src/feature/e_parser.cpp | 11 +- Marlin/src/feature/easythreed_ui.cpp | 2 +- Marlin/src/feature/encoder_i2c.cpp | 12 +- Marlin/src/feature/fwretract.cpp | 43 +- Marlin/src/feature/hotend_idle.cpp | 4 +- Marlin/src/feature/joystick.cpp | 8 +- Marlin/src/feature/mixing.cpp | 4 +- Marlin/src/feature/mmu/mmu2.cpp | 60 +- Marlin/src/feature/mmu3/mmu3.cpp | 6 +- Marlin/src/feature/mmu3/mmu3_marlin1.cpp | 52 +- Marlin/src/feature/pause.cpp | 82 +- Marlin/src/feature/powerloss.cpp | 46 +- Marlin/src/feature/powerloss.h | 2 +- Marlin/src/feature/runout.h | 6 +- Marlin/src/feature/solenoid.cpp | 4 +- Marlin/src/feature/tramming.cpp | 2 +- Marlin/src/gcode/bedlevel/G26.cpp | 95 +- Marlin/src/gcode/bedlevel/G35.cpp | 4 +- Marlin/src/gcode/bedlevel/G42.cpp | 16 +- Marlin/src/gcode/bedlevel/M420.cpp | 6 +- Marlin/src/gcode/bedlevel/abl/G29.cpp | 72 +- Marlin/src/gcode/bedlevel/mbl/G29.cpp | 28 +- Marlin/src/gcode/bedlevel/mbl/M421.cpp | 4 +- Marlin/src/gcode/bedlevel/ubl/G29.cpp | 4 +- Marlin/src/gcode/bedlevel/ubl/M421.cpp | 2 +- Marlin/src/gcode/calibrate/G28.cpp | 120 +-- Marlin/src/gcode/calibrate/G33.cpp | 14 +- Marlin/src/gcode/calibrate/G34.cpp | 14 +- Marlin/src/gcode/calibrate/G34_M422.cpp | 12 +- Marlin/src/gcode/calibrate/G425.cpp | 54 +- Marlin/src/gcode/calibrate/G76_M871.cpp | 16 +- Marlin/src/gcode/calibrate/M48.cpp | 14 +- Marlin/src/gcode/calibrate/M665.cpp | 12 +- Marlin/src/gcode/calibrate/M852.cpp | 6 +- Marlin/src/gcode/config/M210.cpp | 36 +- Marlin/src/gcode/config/M217.cpp | 6 +- Marlin/src/gcode/config/M218.cpp | 4 +- Marlin/src/gcode/config/M220.cpp | 8 +- Marlin/src/gcode/config/M92.cpp | 2 +- Marlin/src/gcode/control/M108_M112_M410.cpp | 2 +- Marlin/src/gcode/control/M211.cpp | 8 +- Marlin/src/gcode/control/M380_M381.cpp | 6 +- Marlin/src/gcode/control/M605.cpp | 10 +- Marlin/src/gcode/control/T.cpp | 4 +- Marlin/src/gcode/feature/advance/M900.cpp | 2 +- Marlin/src/gcode/feature/camera/M240.cpp | 38 +- Marlin/src/gcode/feature/clean/G12.cpp | 6 +- Marlin/src/gcode/feature/mixing/M166.cpp | 4 +- Marlin/src/gcode/feature/pause/G27.cpp | 2 +- Marlin/src/gcode/feature/pause/G60_G61.cpp | 22 +- Marlin/src/gcode/feature/pause/M125.cpp | 18 +- Marlin/src/gcode/feature/pause/M600.cpp | 18 +- Marlin/src/gcode/feature/pause/M701_M702.cpp | 36 +- Marlin/src/gcode/gcode.cpp | 26 +- Marlin/src/gcode/gcode.h | 2 +- Marlin/src/gcode/geometry/G53-G59.cpp | 8 +- Marlin/src/gcode/geometry/G92.cpp | 28 +- Marlin/src/gcode/geometry/M206_M428.cpp | 40 +- Marlin/src/gcode/host/M114.cpp | 25 +- Marlin/src/gcode/host/M115.cpp | 4 +- Marlin/src/gcode/host/M154.cpp | 2 +- Marlin/src/gcode/host/M360.cpp | 4 +- Marlin/src/gcode/motion/G0_G1.cpp | 35 +- Marlin/src/gcode/motion/G2_G3.cpp | 68 +- Marlin/src/gcode/motion/G5.cpp | 4 +- Marlin/src/gcode/motion/M290.cpp | 14 +- Marlin/src/gcode/probe/G30.cpp | 14 +- Marlin/src/gcode/probe/G38.cpp | 24 +- Marlin/src/gcode/probe/M401_M402.cpp | 6 +- Marlin/src/gcode/probe/M951.cpp | 4 +- Marlin/src/gcode/queue.cpp | 2 +- Marlin/src/gcode/scara/M360-M364.cpp | 2 +- Marlin/src/gcode/temp/M104_M109.cpp | 2 +- Marlin/src/gcode/temp/M106_M107.cpp | 6 +- Marlin/src/gcode/temp/M306.cpp | 2 +- Marlin/src/inc/Conditionals-5-post.h | 2 +- Marlin/src/lcd/HD44780/marlinui_HD44780.cpp | 34 +- Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp | 12 +- Marlin/src/lcd/dogm/status_screen_DOGM.cpp | 22 +- .../lcd/dogm/status_screen_lite_ST7920.cpp | 12 +- Marlin/src/lcd/dwin/creality/dwin.cpp | 64 +- Marlin/src/lcd/dwin/jyersui/dwin.cpp | 156 +-- .../lcd/dwin/marlinui/ui_status_480x272.cpp | 14 +- Marlin/src/lcd/dwin/proui/bedlevel_tools.cpp | 6 +- Marlin/src/lcd/dwin/proui/dwin.cpp | 74 +- Marlin/src/lcd/dwin/proui/proui_extui.cpp | 4 +- .../extui/anycubic_chiron/chiron_extui.cpp | 2 +- .../extui/anycubic_i3mega/anycubic_extui.cpp | 2 +- .../anycubic_i3mega/anycubic_i3mega_lcd.cpp | 6 +- .../src/lcd/extui/anycubic_vyper/dgus_tft.cpp | 2 +- .../lcd/extui/anycubic_vyper/vyper_extui.cpp | 2 +- Marlin/src/lcd/extui/dgus/dgus_extui.cpp | 2 +- .../lcd/extui/dgus/fysetc/DGUSDisplayDef.cpp | 10 +- .../extui/dgus/fysetc/DGUSScreenHandler.cpp | 6 +- .../lcd/extui/dgus/hiprecy/DGUSDisplayDef.cpp | 10 +- .../extui/dgus/hiprecy/DGUSScreenHandler.cpp | 6 +- .../src/lcd/extui/dgus/mks/DGUSDisplayDef.cpp | 28 +- .../lcd/extui/dgus/mks/DGUSScreenHandler.cpp | 14 +- .../lcd/extui/dgus/origin/DGUSDisplayDef.cpp | 10 +- .../extui/dgus/origin/DGUSScreenHandler.cpp | 6 +- .../extui/dgus_e3s1pro/dgus_e3s1pro_extui.cpp | 2 +- .../dgus_reloaded/definition/DGUS_VPList.cpp | 8 +- .../dgus_reloaded/dgus_reloaded_extui.cpp | 2 +- Marlin/src/lcd/extui/example/example.cpp | 2 +- .../cocoa_press/load_chocolate.cpp | 6 +- .../cocoa_press/load_chocolate.h | 2 +- .../ftdi_eve_touch_ui/ftdi_eve_extui.cpp | 2 +- .../generic/move_axis_screen.cpp | 6 +- .../extui/ia_creality/ia_creality_extui.cpp | 2 +- .../lcd/extui/ia_creality/ia_creality_rts.cpp | 14 +- Marlin/src/lcd/extui/malyan/malyan.cpp | 4 +- Marlin/src/lcd/extui/malyan/malyan_extui.cpp | 2 +- .../lcd/extui/mks_ui/draw_change_speed.cpp | 6 +- Marlin/src/lcd/extui/mks_ui/draw_dialog.cpp | 2 +- .../lcd/extui/mks_ui/draw_filament_change.cpp | 4 +- .../src/lcd/extui/mks_ui/draw_move_motor.cpp | 6 +- .../src/lcd/extui/mks_ui/draw_operation.cpp | 6 +- Marlin/src/lcd/extui/mks_ui/draw_printing.cpp | 2 +- Marlin/src/lcd/extui/mks_ui/draw_ui.cpp | 2 +- .../lcd/extui/mks_ui/draw_z_offset_wizard.cpp | 22 +- .../lcd/extui/mks_ui/printer_operation.cpp | 8 +- Marlin/src/lcd/extui/mks_ui/wifi_module.cpp | 6 +- .../src/lcd/extui/nextion/nextion_extui.cpp | 2 +- Marlin/src/lcd/extui/ui_api.cpp | 84 +- Marlin/src/lcd/extui/ui_api.h | 4 +- Marlin/src/lcd/marlinui.cpp | 40 +- Marlin/src/lcd/marlinui.h | 27 +- Marlin/src/lcd/menu/menu.cpp | 12 +- Marlin/src/lcd/menu/menu_advanced.cpp | 18 +- Marlin/src/lcd/menu/menu_bed_tramming.cpp | 28 +- Marlin/src/lcd/menu/menu_configuration.cpp | 20 +- Marlin/src/lcd/menu/menu_delta_calibrate.cpp | 8 +- Marlin/src/lcd/menu/menu_filament.cpp | 10 +- Marlin/src/lcd/menu/menu_item.h | 6 +- Marlin/src/lcd/menu/menu_motion.cpp | 34 +- Marlin/src/lcd/menu/menu_probe_level.cpp | 16 +- Marlin/src/lcd/menu/menu_probe_offset.cpp | 26 +- Marlin/src/lcd/menu/menu_tramming_wizard.cpp | 4 +- Marlin/src/lcd/menu/menu_tune.cpp | 4 +- Marlin/src/lcd/menu/menu_ubl.cpp | 18 +- Marlin/src/lcd/menu/menu_x_twist.cpp | 22 +- Marlin/src/lcd/sovol_rts/sovol_rts.cpp | 62 +- Marlin/src/lcd/tft/touch.cpp | 2 +- Marlin/src/lcd/tft/ui_color_ui.cpp | 30 +- Marlin/src/lcd/tft/ui_common.cpp | 18 +- Marlin/src/libs/nozzle.cpp | 86 +- Marlin/src/module/delta.cpp | 48 +- Marlin/src/module/delta.h | 4 +- Marlin/src/module/endstops.cpp | 2 +- Marlin/src/module/ft_motion.cpp | 6 +- Marlin/src/module/motion.cpp | 545 +++++----- Marlin/src/module/motion.h | 967 +++++++++--------- Marlin/src/module/planner.cpp | 52 +- Marlin/src/module/planner.h | 16 +- Marlin/src/module/planner_bezier.cpp | 4 +- Marlin/src/module/polar.cpp | 8 +- Marlin/src/module/polargraph.cpp | 2 +- Marlin/src/module/probe.cpp | 142 +-- Marlin/src/module/probe.h | 28 +- Marlin/src/module/scara.cpp | 101 +- Marlin/src/module/settings.cpp | 42 +- Marlin/src/module/stepper.cpp | 4 +- Marlin/src/module/stepper.h | 10 +- Marlin/src/module/stepper/indirection.h | 22 +- Marlin/src/module/temperature.cpp | 32 +- Marlin/src/module/tool_change.cpp | 509 +++++---- 178 files changed, 2722 insertions(+), 2728 deletions(-) diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp index 5897ee7274..2eca094371 100644 --- a/Marlin/src/MarlinCore.cpp +++ b/Marlin/src/MarlinCore.cpp @@ -374,7 +374,7 @@ void Marlin::startOrResumeJob() { if (!printingIsPaused()) { TERN_(GCODE_REPEAT_MARKERS, repeat.reset()); TERN_(CANCEL_OBJECTS, cancelable.reset()); - TERN_(LCD_SHOW_E_TOTAL, e_move_accumulator = 0); + TERN_(LCD_SHOW_E_TOTAL, motion.e_move_accumulator = 0); TERN_(SET_REMAINING_TIME, ui.reset_remaining_time()); TERN_(HAS_PRUSA_MMU3, MMU3::operation_statistics.reset_per_print_stats()); } @@ -388,7 +388,7 @@ void Marlin::startOrResumeJob() { card.abortFilePrintNow(TERN_(SD_RESORT, true)); queue.clear(); - quickstop_stepper(); + motion.quickstop_stepper(); print_job_timer.abort(); @@ -709,18 +709,18 @@ void Marlin::manage_inactivity(const bool no_stepper_sleep/*=false*/) { #endif #if ENABLED(EXTRUDER_RUNOUT_PREVENT) - if (thermalManager.degHotend(active_extruder) > (EXTRUDER_RUNOUT_MINTEMP) + if (thermalManager.degHotend(motion.extruder) > (EXTRUDER_RUNOUT_MINTEMP) && ELAPSED(ms, gcode.previous_move_ms, SEC_TO_MS(EXTRUDER_RUNOUT_SECONDS)) && !planner.has_blocks_queued() ) { - const int8_t e_stepper = TERN(HAS_SWITCHING_EXTRUDER, active_extruder >> 1, active_extruder); + const int8_t e_stepper = TERN(HAS_SWITCHING_EXTRUDER, motion.extruder / 2, motion.extruder); const bool e_off = !stepper.AXIS_IS_ENABLED(E_AXIS, e_stepper); if (e_off) stepper.ENABLE_EXTRUDER(e_stepper); - const float olde = current_position.e; - current_position.e += EXTRUDER_RUNOUT_EXTRUDE; - line_to_current_position(MMM_TO_MMS(EXTRUDER_RUNOUT_SPEED)); - current_position.e = olde; + const float olde = motion.position.e; + motion.position.e += EXTRUDER_RUNOUT_EXTRUDE; + motion.goto_current_position(MMM_TO_MMS(EXTRUDER_RUNOUT_SPEED)); + motion.position.e = olde; planner.set_e_position_mm(olde); planner.synchronize(); @@ -735,8 +735,8 @@ void Marlin::manage_inactivity(const bool no_stepper_sleep/*=false*/) { if (delayed_move_time && ELAPSED(ms, delayed_move_time) && isRunning()) { // travel moves have been received so enact them delayed_move_time = UINT32_MAX; // force moves to be done - destination = current_position; - prepare_line_to_destination(); + motion.destination = motion.position; + motion.prepare_line_to_destination(); planner.synchronize(); } #endif @@ -816,7 +816,7 @@ void Marlin::idle(const bool no_stepper_sleep/*=false*/) { if (is(MF_INITIALIZING)) goto IDLE_DONE; // TODO: Still causing errors - TERN_(TOOL_SENSOR, (void)check_tool_sensor_stats(active_extruder, true)); + TERN_(TOOL_SENSOR, (void)check_tool_sensor_stats(motion.extruder, true)); // Handle filament runout sensors #if HAS_FILAMENT_SENSOR @@ -891,7 +891,7 @@ void Marlin::idle(const bool no_stepper_sleep/*=false*/) { TERN_(AUTO_REPORT_TEMPERATURES, thermalManager.auto_reporter.tick()); TERN_(AUTO_REPORT_FANS, fan_check.auto_reporter.tick()); TERN_(AUTO_REPORT_SD_STATUS, card.auto_reporter.tick()); - TERN_(AUTO_REPORT_POSITION, position_auto_reporter.tick()); + TERN_(AUTO_REPORT_POSITION, motion.position_auto_reporter.tick()); TERN_(BUFFER_MONITORING, queue.auto_report_buffer_statistics()); } #endif @@ -1411,9 +1411,9 @@ void setup() { SETUP_RUN(touchBt.init()); #endif - TERN_(HAS_HOME_OFFSET, current_position += home_offset); // Init current position based on home_offset + TERN_(HAS_HOME_OFFSET, motion.position += motion.home_offset); // Init current position based on home_offset - sync_plan_position(); // Vital to init stepper/planner equivalent for current_position + motion.sync_plan_position(); // Vital to init stepper/planner equivalent for motion.position SETUP_RUN(thermalManager.init()); // Initialize temperature loop diff --git a/Marlin/src/core/debug_section.h b/Marlin/src/core/debug_section.h index 6319515b71..15ff8f270b 100644 --- a/Marlin/src/core/debug_section.h +++ b/Marlin/src/core/debug_section.h @@ -41,6 +41,6 @@ private: SERIAL_ECHO(fpre); if (the_msg) SERIAL_ECHO(C(' '), the_msg); SERIAL_CHAR(' '); - print_xyz(xyz_pos_t(current_position)); + print_xyz(xyz_pos_t(motion.position)); } }; diff --git a/Marlin/src/core/utility.cpp b/Marlin/src/core/utility.cpp index f6b8b304c0..86a7b75640 100644 --- a/Marlin/src/core/utility.cpp +++ b/Marlin/src/core/utility.cpp @@ -133,7 +133,7 @@ SERIAL_ECHOPGM("ABL Adjustment"); LOOP_NUM_AXES(a) { SERIAL_ECHOPGM_P((PGM_P)pgm_read_ptr(&SP_AXIS_STR[a])); - serial_offset(planner.get_axis_position_mm((AxisEnum)a) - current_position[a]); + serial_offset(planner.get_axis_position_mm((AxisEnum)a) - motion.position[a]); } #else #if ENABLED(AUTO_BED_LEVELING_UBL) @@ -141,11 +141,11 @@ #elif ENABLED(AUTO_BED_LEVELING_BILINEAR) SERIAL_ECHOPGM("ABL Adjustment Z"); #endif - const float rz = bedlevel.get_z_correction(current_position); + const float rz = bedlevel.get_z_correction(motion.position); SERIAL_ECHO(ftostr43sign(rz, '+')); #if ENABLED(ENABLE_LEVELING_FADE_HEIGHT) if (planner.z_fade_height) - SERIAL_ECHO(F(" ("), ftostr43sign(rz * planner.fade_scaling_factor_for_z(current_position.z), '+'), C(')')); + SERIAL_ECHO(F(" ("), ftostr43sign(rz * planner.fade_scaling_factor_for_z(motion.position.z), '+'), C(')')); #endif #endif } @@ -160,11 +160,11 @@ if (planner.leveling_active) { SERIAL_ECHOLNPGM(" (enabled)"); const float z_offset = bedlevel.get_z_offset(), - z_correction = bedlevel.get_z_correction(current_position); + z_correction = bedlevel.get_z_correction(motion.position); SERIAL_ECHOPGM("MBL Adjustment Z", ftostr43sign(z_offset + z_correction, '+')); #if ENABLED(ENABLE_LEVELING_FADE_HEIGHT) if (planner.z_fade_height) { - SERIAL_ECHO(F(" ("), ftostr43sign(z_offset + z_correction * planner.fade_scaling_factor_for_z(current_position.z), '+'), C(')')); + SERIAL_ECHO(F(" ("), ftostr43sign(z_offset + z_correction * planner.fade_scaling_factor_for_z(motion.position.z), '+'), C(')')); } #endif } diff --git a/Marlin/src/feature/babystep.cpp b/Marlin/src/feature/babystep.cpp index d61784517b..6a5c2bb13f 100644 --- a/Marlin/src/feature/babystep.cpp +++ b/Marlin/src/feature/babystep.cpp @@ -59,7 +59,7 @@ void Babystep::add_mm(const AxisEnum axis, const float mm) { #if ENABLED(BD_SENSOR) void Babystep::set_mm(const AxisEnum axis, const float mm) { - //if (DISABLED(BABYSTEP_WITHOUT_HOMING) && axis_should_home(axis)) return; + //if (DISABLED(BABYSTEP_WITHOUT_HOMING) && motion.axis_should_home(axis)) return; const int16_t distance = mm * planner.settings.axis_steps_per_mm[axis]; accum = distance; // Count up babysteps for the UI steps[BS_AXIS_IND(axis)] = distance; @@ -70,7 +70,7 @@ void Babystep::add_mm(const AxisEnum axis, const float mm) { #endif bool Babystep::can_babystep(const AxisEnum axis) { - return (ENABLED(BABYSTEP_WITHOUT_HOMING) || !axis_should_home(axis)); + return (ENABLED(BABYSTEP_WITHOUT_HOMING) || !motion.axis_should_home(axis)); } void Babystep::add_steps(const AxisEnum axis, const int16_t distance) { diff --git a/Marlin/src/feature/backlash.cpp b/Marlin/src/feature/backlash.cpp index 2de0aa00ef..c18d32edd1 100644 --- a/Marlin/src/feature/backlash.cpp +++ b/Marlin/src/feature/backlash.cpp @@ -224,12 +224,12 @@ class Backlash::StepAdjuster { void Backlash::measure_with_probe() { if (measured_count.z == 255) return; - const float start_height = current_position.z; - while (current_position.z < (start_height + BACKLASH_MEASUREMENT_LIMIT) && PROBE_TRIGGERED()) - do_blocking_move_to_z(current_position.z + BACKLASH_MEASUREMENT_RESOLUTION, MMM_TO_MMS(BACKLASH_MEASUREMENT_FEEDRATE)); + const float start_height = motion.position.z; + while (motion.position.z < (start_height + BACKLASH_MEASUREMENT_LIMIT) && PROBE_TRIGGERED()) + motion.blocking_move_z(motion.position.z + BACKLASH_MEASUREMENT_RESOLUTION, MMM_TO_MMS(BACKLASH_MEASUREMENT_FEEDRATE)); // The backlash from all probe points is averaged, so count the number of measurements - measured_mm.z += current_position.z - start_height; + measured_mm.z += motion.position.z - start_height; measured_count.z++; } diff --git a/Marlin/src/feature/bedlevel/abl/bbl.cpp b/Marlin/src/feature/bedlevel/abl/bbl.cpp index 918b06d2b4..280700c1f1 100644 --- a/Marlin/src/feature/bedlevel/abl/bbl.cpp +++ b/Marlin/src/feature/bedlevel/abl/bbl.cpp @@ -371,8 +371,8 @@ float LevelingBilinear::get_z_correction(const xy_pos_t &raw) { */ void LevelingBilinear::line_to_destination(const feedRate_t scaled_fr_mm_s, uint16_t x_splits, uint16_t y_splits) { // Get current and destination cells for this line - xy_int_t c1 { CELL_INDEX(x, current_position.x), CELL_INDEX(y, current_position.y) }, - c2 { CELL_INDEX(x, destination.x), CELL_INDEX(y, destination.y) }; + xy_int_t c1 { CELL_INDEX(x, motion.position.x), CELL_INDEX(y, motion.position.y) }, + c2 { CELL_INDEX(x, motion.destination.x), CELL_INDEX(y, motion.destination.y) }; LIMIT(c1.x, 0, ABL_BG_POINTS_X - 2); LIMIT(c1.y, 0, ABL_BG_POINTS_Y - 2); LIMIT(c2.x, 0, ABL_BG_POINTS_X - 2); @@ -380,12 +380,12 @@ float LevelingBilinear::get_z_correction(const xy_pos_t &raw) { // Start and end in the same cell? No split needed. if (c1 == c2) { - current_position = destination; - line_to_current_position(scaled_fr_mm_s); + motion.position = motion.destination; + motion.goto_current_position(scaled_fr_mm_s); return; } - #define LINE_SEGMENT_END(A) (current_position.A + (destination.A - current_position.A) * normalized_dist) + #define LINE_SEGMENT_END(A) (motion.position.A + (motion.destination.A - motion.position.A) * normalized_dist) float normalized_dist; xyze_pos_t end; @@ -396,36 +396,36 @@ float LevelingBilinear::get_z_correction(const xy_pos_t &raw) { if (c2.x != c1.x && TEST(x_splits, gc.x)) { // Split on the X grid line CBI(x_splits, gc.x); - end = destination; - destination.x = grid_start.x + ABL_BG_SPACING(x) * gc.x; - normalized_dist = (destination.x - current_position.x) / (end.x - current_position.x); - destination.y = LINE_SEGMENT_END(y); + end = motion.destination; + motion.destination.x = grid_start.x + ABL_BG_SPACING(x) * gc.x; + normalized_dist = (motion.destination.x - motion.position.x) / (end.x - motion.position.x); + motion.destination.y = LINE_SEGMENT_END(y); } // Crosses on the Y and not already split on this Y? else if (c2.y != c1.y && TEST(y_splits, gc.y)) { // Split on the Y grid line CBI(y_splits, gc.y); - end = destination; - destination.y = grid_start.y + ABL_BG_SPACING(y) * gc.y; - normalized_dist = (destination.y - current_position.y) / (end.y - current_position.y); - destination.x = LINE_SEGMENT_END(x); + end = motion.destination; + motion.destination.y = grid_start.y + ABL_BG_SPACING(y) * gc.y; + normalized_dist = (motion.destination.y - motion.position.y) / (end.y - motion.position.y); + motion.destination.x = LINE_SEGMENT_END(x); } else { // Must already have been split on these border(s) // This should be a rare case. - current_position = destination; - line_to_current_position(scaled_fr_mm_s); + motion.position = motion.destination; + motion.goto_current_position(scaled_fr_mm_s); return; } - destination.z = LINE_SEGMENT_END(z); - destination.e = LINE_SEGMENT_END(e); + motion.destination.z = LINE_SEGMENT_END(z); + motion.destination.e = LINE_SEGMENT_END(e); // Do the split and look for more borders line_to_destination(scaled_fr_mm_s, x_splits, y_splits); // Restore destination from stack - destination = end; + motion.destination = end; line_to_destination(scaled_fr_mm_s, x_splits, y_splits); } diff --git a/Marlin/src/feature/bedlevel/bdl/bdl.cpp b/Marlin/src/feature/bedlevel/bdl/bdl.cpp index 45c7792d5c..c115ea93c9 100644 --- a/Marlin/src/feature/bedlevel/bdl/bdl.cpp +++ b/Marlin/src/feature/bedlevel/bdl/bdl.cpp @@ -72,8 +72,8 @@ void BDS_Leveling::init(uint8_t _sda, uint8_t _scl, uint16_t delay_s) { config_state = BDS_IDLE; const int ret = BD_I2C_SENSOR.i2c_init(_sda, _scl, BD_SENSOR_I2C_ADDR, delay_s); if (ret != 1) SERIAL_ECHOLNPGM("BD Sensor Init Fail (", ret, ")"); - sync_plan_position(); - pos_zero_offset = planner.get_axis_position_mm(Z_AXIS) - current_position.z; + motion.sync_plan_position(); + pos_zero_offset = planner.get_axis_position_mm(Z_AXIS) - motion.position.z; SERIAL_ECHOLNPGM("BD Sensor Zero Offset:", pos_zero_offset); } @@ -119,7 +119,7 @@ void BDS_Leveling::process() { uint16_t tmp = 0; const float cur_z = planner.get_axis_position_mm(Z_AXIS) - pos_zero_offset; - static float old_cur_z = cur_z, old_buf_z = current_position.z; + static float old_cur_z = cur_z, old_buf_z = motion.position.z; tmp = BD_I2C_SENSOR.BD_i2c_read(); if (BD_I2C_SENSOR.BD_Check_OddEven(tmp) && good_data(tmp)) { const float z_sensor = interpret(tmp); @@ -127,11 +127,11 @@ void BDS_Leveling::process() { if (config_state > 0) { if (cur_z < config_state * 0.1f && old_cur_z == cur_z - && old_buf_z == current_position.z + && old_buf_z == motion.position.z && z_sensor < (MAX_BD_HEIGHT) - 0.1f ) { babystep.set_mm(Z_AXIS, cur_z - z_sensor); - DEBUG_ECHOLNPGM("BD:", z_sensor, ", Z:", cur_z, "|", current_position.z); + DEBUG_ECHOLNPGM("BD:", z_sensor, ", Z:", cur_z, "|", motion.position.z); } else babystep.set_mm(Z_AXIS, 0); @@ -139,7 +139,7 @@ void BDS_Leveling::process() { #endif old_cur_z = cur_z; - old_buf_z = current_position.z; + old_buf_z = motion.position.z; endstops.bdp_state_update(z_sensor <= BD_SENSOR_HOME_Z_POSITION); #if HAS_STATUS_MESSAGE @@ -158,7 +158,7 @@ void BDS_Leveling::process() { marlin.kill(F("BDsensor connect Err!")); } - DEBUG_ECHOLNPGM("BD:", tmp & 0x3FF, " Z:", cur_z, "|", current_position.z); + DEBUG_ECHOLNPGM("BD:", tmp & 0x3FF, " Z:", cur_z, "|", motion.position.z); if (TERN0(DEBUG_OUT_BD, BD_I2C_SENSOR.BD_Check_OddEven(tmp) == 0)) DEBUG_ECHOLNPGM("CRC error"); if (!good_data(tmp)) { @@ -204,15 +204,15 @@ void BDS_Leveling::process() { SERIAL_ECHOLNPGM("c_z0:", planner.get_axis_position_mm(Z_AXIS), "-", pos_zero_offset); // Move the z axis instead of enabling the Z axis with M17 - // TODO: Use do_blocking_move_to_z for synchronized move. - current_position.z = 0; - sync_plan_position(); + // TODO: Use motion.blocking_move_z for synchronized move. + motion.position.z = 0; + motion.sync_plan_position(); gcode.process_subcommands_now(F("G1Z0.05")); safe_delay(300); gcode.process_subcommands_now(F("G1Z0.00")); safe_delay(300); - current_position.z = 0; - sync_plan_position(); + motion.position.z = 0; + motion.sync_plan_position(); //safe_delay(1000); while ((planner.get_axis_position_mm(Z_AXIS) - pos_zero_offset) > 0.00001f) { @@ -235,10 +235,10 @@ void BDS_Leveling::process() { } else { char tmp_1[32]; - // TODO: Use prepare_internal_move_to_destination to guarantee machine space + // TODO: Use motion.prepare_internal_move_to_destination to guarantee machine space sprintf_P(tmp_1, PSTR("G1Z%d.%d"), int(zpos), int(zpos * 10) % 10); gcode.process_subcommands_now(tmp_1); - SERIAL_ECHO(tmp_1); SERIAL_ECHOLNPGM(", Z:", current_position.z); + SERIAL_ECHO(tmp_1); SERIAL_ECHOLNPGM(", Z:", motion.position.z); uint16_t failcount = 300; for (float tmp_k = 0; abs(zpos - tmp_k) > 0.006f && failcount--;) { tmp_k = planner.get_axis_position_mm(Z_AXIS) - pos_zero_offset; diff --git a/Marlin/src/feature/bedlevel/bedlevel.cpp b/Marlin/src/feature/bedlevel/bedlevel.cpp index e479e4c70a..c49afa30e2 100644 --- a/Marlin/src/feature/bedlevel/bedlevel.cpp +++ b/Marlin/src/feature/bedlevel/bedlevel.cpp @@ -66,9 +66,9 @@ void set_bed_leveling_enabled(const bool enable/*=true*/) { auto _report_leveling = []{ if (DEBUGGING(LEVELING)) { if (planner.leveling_active) - DEBUG_POS("Leveling ON", current_position); + DEBUG_POS("Leveling ON", motion.position); else - DEBUG_POS("Leveling OFF", current_position); + DEBUG_POS("Leveling OFF", motion.position); } }; @@ -76,11 +76,11 @@ void set_bed_leveling_enabled(const bool enable/*=true*/) { planner.synchronize(); // Get the corrected leveled / unleveled position - planner.apply_modifiers(current_position, true); // Physical position with all modifiers - FLIP(planner.leveling_active); // Toggle leveling between apply and unapply - planner.unapply_modifiers(current_position, true); // Logical position with modifiers removed + planner.apply_modifiers(motion.position, true); // Physical position with all modifiers + FLIP(planner.leveling_active); // Toggle leveling between apply and unapply + planner.unapply_modifiers(motion.position, true); // Logical position with modifiers removed - sync_plan_position(); + motion.sync_plan_position(); _report_leveling(); } } @@ -101,10 +101,10 @@ TemporaryBedLevelingState::TemporaryBedLevelingState(const bool enable) : saved( planner.set_z_fade_height(zfh); if (leveling_was_active) { - const xyz_pos_t oldpos = current_position; + const xyz_pos_t oldpos = motion.position; set_bed_leveling_enabled(true); - if (do_report && oldpos != current_position) - report_current_position(); + if (do_report && oldpos != motion.position) + motion.report_position(); } } @@ -198,16 +198,16 @@ void reset_bed_level() { #else #warning "It's recommended to set some MANUAL_PROBE_START_Z value for manual leveling." #endif - #if Z_CLEARANCE_BETWEEN_MANUAL_PROBES > 0 // A probe/obstacle clearance exists so there is a raise: + #if Z_CLEARANCE_BETWEEN_MANUAL_PROBES > 0 // A probe/obstacle clearance exists so there is a raise: #ifndef MANUAL_PROBE_START_Z - const float finalz = current_position.z; // - Use the current Z for starting-Z if no MANUAL_PROBE_START_Z was provided + const float finalz = motion.position.z; // - Use the current Z for starting-Z if no MANUAL_PROBE_START_Z was provided #endif - do_blocking_move_to_xy_z(pos, Z_CLEARANCE_BETWEEN_MANUAL_PROBES); // - Raise Z, then move to the new XY - do_blocking_move_to_z(finalz); // - Lower down to the starting Z height, ready for adjustment! - #elif defined(MANUAL_PROBE_START_Z) // A starting-Z was provided, but there's no raise: - do_blocking_move_to_xy_z(pos, finalz); // - Move in XY then down to the starting Z height, ready for adjustment! - #else // Zero raise and no starting Z height either: - do_blocking_move_to_xy(pos); // - Move over with no raise, ready for adjustment! + motion.blocking_move_xy_z(pos, Z_CLEARANCE_BETWEEN_MANUAL_PROBES); // - Raise Z, then move to the new XY + motion.blocking_move_z(finalz); // - Lower down to the starting Z height, ready for adjustment! + #elif defined(MANUAL_PROBE_START_Z) // A starting-Z was provided, but there's no raise: + motion.blocking_move_xy_z(pos, finalz); // - Move in XY then down to the starting Z height, ready for adjustment! + #else // Zero raise and no starting Z height either: + motion.blocking_move_xy(pos); // - Move over with no raise, ready for adjustment! #endif TERN_(LCD_BED_LEVELING, ui.wait_for_move = false); diff --git a/Marlin/src/feature/bedlevel/mbl/mesh_bed_leveling.cpp b/Marlin/src/feature/bedlevel/mbl/mesh_bed_leveling.cpp index 155d34c4df..47e8e34fbd 100644 --- a/Marlin/src/feature/bedlevel/mbl/mesh_bed_leveling.cpp +++ b/Marlin/src/feature/bedlevel/mbl/mesh_bed_leveling.cpp @@ -63,7 +63,7 @@ */ void mesh_bed_leveling::line_to_destination(const feedRate_t scaled_fr_mm_s, uint8_t x_splits, uint8_t y_splits) { // Get current and destination cells for this line - xy_uint8_t scel = cell_indexes(current_position), ecel = cell_indexes(destination); + xy_uint8_t scel = cell_indexes(motion.position), ecel = cell_indexes(motion.destination); NOMORE(scel.x, GRID_MAX_CELLS_X - 1); NOMORE(scel.y, GRID_MAX_CELLS_Y - 1); NOMORE(ecel.x, GRID_MAX_CELLS_X - 1); @@ -71,12 +71,12 @@ // Start and end in the same cell? No split needed. if (scel == ecel) { - current_position = destination; - line_to_current_position(scaled_fr_mm_s); + motion.position = motion.destination; + motion.goto_current_position(scaled_fr_mm_s); return; } - #define MBL_SEGMENT_END(A) (current_position.A + (destination.A - current_position.A) * normalized_dist) + #define MBL_SEGMENT_END(A) (motion.position.A + (motion.destination.A - motion.position.A) * normalized_dist) float normalized_dist; xyze_pos_t dest; @@ -87,36 +87,36 @@ if (ecel.x != scel.x && TEST(x_splits, gcx)) { // Split on the X grid line CBI(x_splits, gcx); - dest = destination; - destination.x = index_to_xpos[gcx]; - normalized_dist = (destination.x - current_position.x) / (dest.x - current_position.x); - destination.y = MBL_SEGMENT_END(y); + dest = motion.destination; + motion.destination.x = index_to_xpos[gcx]; + normalized_dist = (motion.destination.x - motion.position.x) / (dest.x - motion.position.x); + motion.destination.y = MBL_SEGMENT_END(y); } // Crosses on the Y and not already split on this Y? else if (ecel.y != scel.y && TEST(y_splits, gcy)) { // Split on the Y grid line CBI(y_splits, gcy); - dest = destination; - destination.y = index_to_ypos[gcy]; - normalized_dist = (destination.y - current_position.y) / (dest.y - current_position.y); - destination.x = MBL_SEGMENT_END(x); + dest = motion.destination; + motion.destination.y = index_to_ypos[gcy]; + normalized_dist = (motion.destination.y - motion.position.y) / (dest.y - motion.position.y); + motion.destination.x = MBL_SEGMENT_END(x); } else { // Must already have been split on these border(s) // This should be a rare case. - current_position = destination; - line_to_current_position(scaled_fr_mm_s); + motion.position = motion.destination; + motion.goto_current_position(scaled_fr_mm_s); return; } - destination.z = MBL_SEGMENT_END(z); - destination.e = MBL_SEGMENT_END(e); + motion.destination.z = MBL_SEGMENT_END(z); + motion.destination.e = MBL_SEGMENT_END(e); // Do the split and look for more borders line_to_destination(scaled_fr_mm_s, x_splits, y_splits); // Restore destination from stack - destination = dest; + motion.destination = dest; line_to_destination(scaled_fr_mm_s, x_splits, y_splits); } diff --git a/Marlin/src/feature/bedlevel/ubl/ubl.cpp b/Marlin/src/feature/bedlevel/ubl/ubl.cpp index 2357437633..cc887fd23b 100644 --- a/Marlin/src/feature/bedlevel/ubl/ubl.cpp +++ b/Marlin/src/feature/bedlevel/ubl/ubl.cpp @@ -93,7 +93,7 @@ void unified_bed_leveling::reset() { #if ENABLED(EXTENSIBLE_UI) GRID_LOOP(x, y) ExtUI::onMeshUpdate(x, y, 0); #endif - if (was_enabled) report_current_position(); + if (was_enabled) motion.report_position(); } void unified_bed_leveling::invalidate() { @@ -184,7 +184,7 @@ void unified_bed_leveling::display_map(const uint8_t map_type) { // Add XY probe offset from extruder because probe.probe_at_point() subtracts them when // moving to the XY position to be measured. This ensures better agreement between // the current Z position after G28 and the mesh values. - const xy_int8_t curr = closest_indexes(xy_pos_t(current_position) + probe.offset_xy); + const xy_int8_t curr = closest_indexes(xy_pos_t(motion.position) + probe.offset_xy); if (!lcd) SERIAL_EOL(); for (int8_t j = (GRID_MAX_POINTS_Y) - 1; j >= 0; j--) { diff --git a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp index 42b0d0d5f6..02b904adca 100644 --- a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp +++ b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp @@ -324,7 +324,7 @@ void unified_bed_leveling::G29() { restore_ubl_active_state(false); // ...without telling ExtUI "done" #else // Send 'N' to force homing before G29 (internal only) - if (axes_should_home() || parser.seen_test('N')) gcode.home_all_axes(); + if (motion.axes_should_home() || parser.seen_test('N')) gcode.home_all_axes(); #endif probe.use_probing_tool(); @@ -335,7 +335,7 @@ void unified_bed_leveling::G29() { // Position bed horizontally and Z probe vertically. #if HAS_SAFE_BED_LEVELING - xyze_pos_t safe_position = current_position; + xyze_pos_t safe_position = motion.position; #ifdef SAFE_BED_LEVELING_START_X safe_position.x = SAFE_BED_LEVELING_START_X; #endif @@ -364,7 +364,7 @@ void unified_bed_leveling::G29() { safe_position.w = SAFE_BED_LEVELING_START_W; #endif - do_blocking_move_to(safe_position); + motion.blocking_move(safe_position); #endif // HAS_SAFE_BED_LEVELING } @@ -444,9 +444,9 @@ void unified_bed_leveling::G29() { tilt_mesh_based_on_probed_grid(param.J_grid_size == 0); // Zero size does 3-Point restore_ubl_active_state(); #if ENABLED(UBL_G29_J_RECENTER) - do_blocking_move_to_xy(0.5f * ((MESH_MIN_X) + (MESH_MAX_X)), 0.5f * ((MESH_MIN_Y) + (MESH_MAX_Y))); + motion.blocking_move_xy(0.5f * ((MESH_MIN_X) + (MESH_MAX_X)), 0.5f * ((MESH_MIN_Y) + (MESH_MAX_Y))); #endif - report_current_position(); + motion.report_position(); SET_PROBE_DEPLOYED(true); } @@ -481,7 +481,7 @@ void unified_bed_leveling::G29() { SERIAL_ECHOLN(F("Probing around ("), param.XY_pos.x, C(','), param.XY_pos.y, F(").\n")); probe_entire_mesh(param.XY_pos, parser.seen_test('T'), parser.seen_test('E'), parser.seen_test('U')); - report_current_position(); + motion.report_position(); SET_PROBE_DEPLOYED(true); } break; @@ -493,7 +493,7 @@ void unified_bed_leveling::G29() { // Manually Probe Mesh in areas that can't be reached by the probe // SERIAL_ECHOLNPGM("Manually probing unreachable points."); - do_z_clearance(Z_CLEARANCE_BETWEEN_PROBES); + motion.do_z_clearance(Z_CLEARANCE_BETWEEN_PROBES); if (parser.seen_test('C') && !param.XY_seen) { @@ -523,7 +523,7 @@ void unified_bed_leveling::G29() { SET_PROBE_DEPLOYED(true); } - if (!position_is_reachable(param.XY_pos)) { + if (!motion.can_reach(param.XY_pos)) { SERIAL_ECHOLNPGM("XY outside printable radius."); return; } @@ -533,7 +533,7 @@ void unified_bed_leveling::G29() { SERIAL_ECHOLNPGM("G29 P2 finished."); - report_current_position(); + motion.report_position(); #else @@ -827,7 +827,7 @@ void unified_bed_leveling::shift_mesh_height(const float zoffs) { probe.move_z_after_probing(); - do_blocking_move_to_xy( + motion.blocking_move_xy( constrain(nearby.x - probe.offset_xy.x, MESH_MIN_X, MESH_MAX_X), constrain(nearby.y - probe.offset_xy.y, MESH_MIN_Y, MESH_MAX_Y) ); @@ -874,7 +874,7 @@ void set_message_with_feedback(FSTR_P const fstr) { marlin.idle(); gcode.reset_stepper_timeout(); // Keep steppers powered if (encoder_diff) { - do_blocking_move_to_z(current_position.z + float(encoder_diff) * multiplier); + motion.blocking_move_z(motion.position.z + float(encoder_diff) * multiplier); encoder_diff = 0; } } @@ -884,7 +884,7 @@ void set_message_with_feedback(FSTR_P const fstr) { KEEPALIVE_STATE(PAUSED_FOR_USER); const float z_step = 0.01f; move_z_with_encoder(z_step); - return current_position.z; + return motion.position.z; } static void echo_and_take_a_measurement() { SERIAL_ECHOLNPGM(" and take a measurement."); } @@ -893,7 +893,7 @@ void set_message_with_feedback(FSTR_P const fstr) { ui.capture(); save_ubl_active_state_and_disable(); // Disable bed level correction for probing - do_blocking_move_to( + motion.blocking_move( xyz_pos_t({ 0.5f * ((MESH_MIN_X) + (MESH_MAX_X)), 0.5f * ((MESH_MIN_Y) + (MESH_MAX_Y)), @@ -927,14 +927,14 @@ void set_message_with_feedback(FSTR_P const fstr) { echo_and_take_a_measurement(); const float z1 = measure_point_with_encoder(); - do_z_clearance_by(SIZE_OF_LITTLE_RAISE); + motion.do_z_clearance_by(SIZE_OF_LITTLE_RAISE); SERIAL_ECHOPGM("Remove shim"); LCD_MESSAGE(MSG_UBL_BC_REMOVE); echo_and_take_a_measurement(); const float z2 = measure_point_with_encoder(); - do_z_clearance_by(Z_CLEARANCE_BETWEEN_PROBES); + motion.do_z_clearance_by(Z_CLEARANCE_BETWEEN_PROBES); const float thickness = ABS(z1 - z2); @@ -956,7 +956,7 @@ void set_message_with_feedback(FSTR_P const fstr) { TERN_(EXTENSIBLE_UI, ExtUI::onLevelingStart()); save_ubl_active_state_and_disable(); // No bed level correction so only raw data is obtained - do_blocking_move_to_xy_z(current_position, z_clearance); + motion.blocking_move_xy_z(motion.position, z_clearance); ui.return_to_status(); @@ -969,12 +969,12 @@ void set_message_with_feedback(FSTR_P const fstr) { const xyz_pos_t ppos = { get_mesh_x(lpos.x), get_mesh_y(lpos.y), z_clearance }; - if (!position_is_reachable(ppos)) break; // SHOULD NOT OCCUR (find_closest_mesh_point only returns reachable points) + if (!motion.can_reach(ppos)) break; // SHOULD NOT OCCUR (find_closest_mesh_point only returns reachable points) LCD_MESSAGE(MSG_UBL_MOVING_TO_NEXT); - do_blocking_move_to(ppos); - do_z_clearance(z_clearance); + motion.blocking_move(ppos); + motion.do_z_clearance(z_clearance); KEEPALIVE_STATE(PAUSED_FOR_USER); ui.capture(); @@ -995,11 +995,11 @@ void set_message_with_feedback(FSTR_P const fstr) { if (_click_and_hold([]{ SERIAL_ECHOLNPGM("\nMesh only partially populated."); - do_z_clearance(Z_CLEARANCE_DEPLOY_PROBE); + motion.do_z_clearance(Z_CLEARANCE_DEPLOY_PROBE); })) return restore_ubl_active_state(); // Store the Z position minus the shim height - z_values[lpos.x][lpos.y] = current_position.z - thick; + z_values[lpos.x][lpos.y] = motion.position.z - thick; // Tell the external UI to update TERN_(EXTENSIBLE_UI, ExtUI::onMeshUpdate(location, z_values[lpos.x][lpos.y])); @@ -1012,7 +1012,7 @@ void set_message_with_feedback(FSTR_P const fstr) { if (do_ubl_mesh_map) display_map(param.T_map_type); // show user where we're probing restore_ubl_active_state(); - do_blocking_move_to_xy_z(pos, Z_CLEARANCE_DEPLOY_PROBE); + motion.blocking_move_xy_z(pos, Z_CLEARANCE_DEPLOY_PROBE); } /** @@ -1033,7 +1033,7 @@ void set_message_with_feedback(FSTR_P const fstr) { mesh_index_pair location; - if (!position_is_reachable(pos)) { + if (!motion.can_reach(pos)) { SERIAL_ECHOLNPGM("(X,Y) outside printable radius."); return; } @@ -1043,7 +1043,7 @@ void set_message_with_feedback(FSTR_P const fstr) { LCD_MESSAGE(MSG_UBL_FINE_TUNE_MESH); ui.capture(); // Take over control of the LCD encoder - do_blocking_move_to_xy_z(pos, Z_TWEEN_SAFE_CLEARANCE); // Move to the given XY with probe clearance + motion.blocking_move_xy_z(pos, Z_TWEEN_SAFE_CLEARANCE); // Move to the given XY with probe clearance MeshFlags done_flags{0}; const xy_int8_t &lpos = location.pos; @@ -1062,18 +1062,18 @@ void set_message_with_feedback(FSTR_P const fstr) { // location is used on the next loop const xyz_pos_t raw = { get_mesh_x(lpos.x), get_mesh_y(lpos.y), Z_TWEEN_SAFE_CLEARANCE }; - if (!position_is_reachable(raw)) break; // SHOULD NOT OCCUR (find_closest_mesh_point_of_type only returns reachable) + if (!motion.can_reach(raw)) break; // SHOULD NOT OCCUR (find_closest_mesh_point_of_type only returns reachable) - do_blocking_move_to(raw); // Move the nozzle to the edit point with probe clearance + motion.blocking_move(raw); // Move the nozzle to the edit point with probe clearance - TERN_(UBL_MESH_EDIT_MOVES_Z, do_blocking_move_to_z(h_offset)); // Move Z to the given 'H' offset before editing + TERN_(UBL_MESH_EDIT_MOVES_Z, motion.blocking_move_z(h_offset)); // Move Z to the given 'H' offset before editing KEEPALIVE_STATE(PAUSED_FOR_USER); if (do_ubl_mesh_map) display_map(param.T_map_type); // Display the current point #if IS_TFTGLCD_PANEL - ui.ubl_plot(lpos.x, lpos.y); // update plot screen + ui.ubl_plot(lpos.x, lpos.y); // Update plot screen #endif ui.refresh(); @@ -1084,23 +1084,23 @@ void set_message_with_feedback(FSTR_P const fstr) { ui.ubl_mesh_edit_start(new_z); - SET_SOFT_ENDSTOP_LOOSE(true); + motion.set_soft_endstop_loose(true); do { marlin.idle_no_sleep(); new_z = ui.ubl_mesh_value(); - TERN_(UBL_MESH_EDIT_MOVES_Z, do_blocking_move_to_z(h_offset + new_z)); // Move the nozzle as the point is edited + TERN_(UBL_MESH_EDIT_MOVES_Z, motion.blocking_move_z(h_offset + new_z)); // Move the nozzle as the point is edited SERIAL_FLUSH(); // Prevent host M105 buffer overrun. } while (!ui.button_pressed()); - SET_SOFT_ENDSTOP_LOOSE(false); + motion.set_soft_endstop_loose(false); if (!lcd_map_control) ui.return_to_status(); // Just editing a single point? Return to status // Button held down? Abort editing if (_click_and_hold([]{ ui.return_to_status(); - do_z_clearance(Z_TWEEN_SAFE_CLEARANCE); + motion.do_z_clearance(Z_TWEEN_SAFE_CLEARANCE); set_message_with_feedback(GET_TEXT_F(MSG_EDITING_STOPPED)); })) break; @@ -1120,7 +1120,7 @@ void set_message_with_feedback(FSTR_P const fstr) { if (do_ubl_mesh_map) display_map(param.T_map_type); restore_ubl_active_state(); - do_blocking_move_to_xy_z(pos, Z_TWEEN_SAFE_CLEARANCE); + motion.blocking_move_xy_z(pos, Z_TWEEN_SAFE_CLEARANCE); LCD_MESSAGE(MSG_UBL_DONE_EDITING_MESH); SERIAL_ECHOLNPGM("Done Editing Mesh"); @@ -1191,9 +1191,9 @@ bool unified_bed_leveling::G29_parse_parameters() { } param.XY_seen.x = parser.seenval('X'); - float sx = param.XY_seen.x ? parser.value_float() : current_position.x; + float sx = param.XY_seen.x ? parser.value_float() : motion.position.x; param.XY_seen.y = parser.seenval('Y'); - float sy = param.XY_seen.y ? parser.value_float() : current_position.y; + float sy = param.XY_seen.y ? parser.value_float() : motion.position.y; if (param.XY_seen.x != param.XY_seen.y) { SERIAL_ECHOLNPGM("Both X & Y locations must be specified.\n"); @@ -1358,7 +1358,7 @@ mesh_index_pair unified_bed_leveling::find_furthest_invalid_mesh_point() { // Also for round beds, there are grid points outside the bed the nozzle can't reach. // Prune them from the list and ignore them till the next Phase (manual nozzle probing). - if (!(d->probe_relative ? probe.can_reach(mpos) : position_is_reachable(mpos))) + if (!(d->probe_relative ? probe.can_reach(mpos) : motion.can_reach(mpos))) return false; d->closest.pos.set(i, j); return true; @@ -1402,12 +1402,12 @@ mesh_index_pair unified_bed_leveling::find_closest_mesh_point_of_type(const Mesh // Also for round beds, there are grid points outside the bed the nozzle can't reach. // Prune them from the list and ignore them till the next Phase (manual nozzle probing). - if (!(probe_relative ? probe.can_reach(mpos) : position_is_reachable(mpos))) + if (!(probe_relative ? probe.can_reach(mpos) : motion.can_reach(mpos))) continue; // Reachable. Check if it's the best_so_far location to the nozzle. - const xy_pos_t diff = current_position - mpos; + const xy_pos_t diff = motion.position - mpos; const float distance = (ref - mpos).magnitude() + diff.magnitude() * 0.1f; // factor in the distance from the current location for the normal case @@ -1771,14 +1771,14 @@ void unified_bed_leveling::smart_fill_mesh() { SERIAL_ECHOPGM("X-Axis Mesh Points at: "); for (uint8_t i = 0; i < GRID_MAX_POINTS_X; ++i) { - SERIAL_ECHO(p_float_t(LOGICAL_X_POSITION(get_mesh_x(i)), 3), F(" ")); + SERIAL_ECHO(p_float_t(motion.logical_x(get_mesh_x(i)), 3), F(" ")); serial_delay(25); } SERIAL_EOL(); SERIAL_ECHOPGM("Y-Axis Mesh Points at: "); for (uint8_t i = 0; i < GRID_MAX_POINTS_Y; ++i) { - SERIAL_ECHO(p_float_t(LOGICAL_Y_POSITION(get_mesh_y(i)), 3), F(" ")); + SERIAL_ECHO(p_float_t(motion.logical_y(get_mesh_y(i)), 3), F(" ")); serial_delay(25); } SERIAL_EOL(); diff --git a/Marlin/src/feature/bedlevel/ubl/ubl_motion.cpp b/Marlin/src/feature/bedlevel/ubl/ubl_motion.cpp index b6b9ec4368..fa77bc1e18 100644 --- a/Marlin/src/feature/bedlevel/ubl/ubl_motion.cpp +++ b/Marlin/src/feature/bedlevel/ubl/ubl_motion.cpp @@ -53,11 +53,11 @@ * just do the required Z-Height correction, call the Planner's buffer_line() routine, and leave */ #if HAS_POSITION_MODIFIERS - xyze_pos_t start = current_position, end = destination; + xyze_pos_t start = motion.position, end = motion.destination; planner.apply_modifiers(start); planner.apply_modifiers(end); #else - const xyze_pos_t &start = current_position, &end = destination; + const xyze_pos_t &start = motion.position, &end = motion.destination; #endif const xy_uint8_t istart = cell_indexes(start), iend = cell_indexes(end); @@ -78,7 +78,7 @@ end.z += UBL_Z_RAISE_WHEN_OFF_MESH; planner.buffer_segment(end, scaled_fr_mm_s, extruder); - current_position = destination; + motion.position = motion.destination; return; } #endif @@ -96,7 +96,7 @@ // Replace NAN corrections with 0.0 to prevent NAN propagation. if (!isnan(z0)) end.z += z0; planner.buffer_segment(end, scaled_fr_mm_s, extruder); - current_position = destination; + motion.position = motion.destination; return; } @@ -190,10 +190,10 @@ } // At the final destination? Usually not, but when on a Y Mesh Line it's completed. - if (xy_pos_t(current_position) != xy_pos_t(end)) + if (xy_pos_t(motion.position) != xy_pos_t(end)) goto FINAL_MOVE; - current_position = destination; + motion.position = motion.destination; return; } @@ -240,10 +240,10 @@ DEBUG_ECHOLNPGM("[ubl] skip Y segment"); } - if (xy_pos_t(current_position) != xy_pos_t(end)) + if (xy_pos_t(motion.position) != xy_pos_t(end)) goto FINAL_MOVE; - current_position = destination; + motion.position = motion.destination; return; } @@ -324,10 +324,10 @@ if (cnt.x < 0 || cnt.y < 0) break; // Too far! Exit the loop and go to FINAL_MOVE } - if (xy_pos_t(current_position) != xy_pos_t(end)) + if (xy_pos_t(motion.position) != xy_pos_t(end)) goto FINAL_MOVE; - current_position = destination; + motion.position = motion.destination; } #else // UBL_SEGMENTED @@ -347,15 +347,15 @@ /** * Prepare a segmented linear move for DELTA/SCARA/CARTESIAN with UBL and FADE semantics. * This calls planner.buffer_segment multiple times for small incremental moves. - * Returns true if did NOT move, false if moved (requires current_position update). + * Returns true if did NOT move, false if moved (requires motion.position update). */ bool __O2 unified_bed_leveling::line_to_destination_segmented(const feedRate_t scaled_fr_mm_s) { - if (!position_is_reachable(destination)) // fail if moving outside reachable boundary - return true; // did not move, so current_position still accurate + if (!motion.can_reach(motion.destination)) // Fail if moving outside reachable boundary + return true; // Did not move, so motion.position still accurate - const xyze_pos_t total = destination - current_position; + const xyze_pos_t total = motion.destination - motion.position; const float cart_xy_mm_2 = HYPOT2(total.x, total.y), cart_xy_mm = SQRT(cart_xy_mm_2); // Total XY distance @@ -383,22 +383,22 @@ // Note that E segment distance could vary slightly as z mesh height // changes for each segment, but small enough to ignore. - xyze_pos_t raw = current_position; + xyze_pos_t raw = motion.position; // Just do plain segmentation if UBL is inactive or the target is above the fade height - if (!planner.leveling_active || !planner.leveling_active_at_z(destination.z)) { + if (!planner.leveling_active || !planner.leveling_active_at_z(motion.destination.z)) { while (--segments) { raw += diff; - planner.buffer_line(raw, scaled_fr_mm_s, active_extruder, hints); + planner.buffer_line(raw, scaled_fr_mm_s, motion.extruder, hints); } - planner.buffer_line(destination, scaled_fr_mm_s, active_extruder, hints); + planner.buffer_line(motion.destination, scaled_fr_mm_s, motion.extruder, hints); return false; // Did not set current from destination } // Otherwise perform per-segment leveling #if ENABLED(ENABLE_LEVELING_FADE_HEIGHT) - const float fade_scaling_factor = planner.fade_scaling_factor_for_z(destination.z); + const float fade_scaling_factor = planner.fade_scaling_factor_for_z(motion.destination.z); #endif // Move to first segment destination @@ -456,13 +456,13 @@ for (;;) { // for all segments within this mesh cell - if (--segments == 0) raw = destination; // if this is last segment, use destination for exact + if (--segments == 0) raw = motion.destination; // If this is last segment, use destination for exact const float z_cxcy = (z_cxy0 + z_cxym * cell.y) // interpolated mesh z height along cell.x at cell.y TERN_(ENABLE_LEVELING_FADE_HEIGHT, * fade_scaling_factor); // apply fade factor to interpolated height const float oldz = raw.z; raw.z += z_cxcy; - planner.buffer_line(raw, scaled_fr_mm_s, active_extruder, hints); + planner.buffer_line(raw, scaled_fr_mm_s, motion.extruder, hints); raw.z = oldz; if (segments == 0) // done with last segment @@ -483,7 +483,7 @@ } // segment loop } // cell loop - return false; // caller will update current_position + return false; // caller will update motion.position } #endif // UBL_SEGMENTED diff --git a/Marlin/src/feature/e_parser.cpp b/Marlin/src/feature/e_parser.cpp index 3744870164..0e0bbc1752 100644 --- a/Marlin/src/feature/e_parser.cpp +++ b/Marlin/src/feature/e_parser.cpp @@ -54,10 +54,7 @@ EmergencyParser emergency_parser; #endif #if ENABLED(REALTIME_REPORTING_COMMANDS) - // From motion.h, which cannot be included here - void report_current_position_moving(); - void quickpause_stepper(); - void quickresume_stepper(); + #include "../module/motion.h" #endif #if ENABLED(SOFT_FEED_HOLD) @@ -226,9 +223,9 @@ void EmergencyParser::update(EmergencyParser::State &state, const uint8_t c) { case EP_M876SN: hostui.handle_response(M876_reason); break; #endif #if ENABLED(REALTIME_REPORTING_COMMANDS) - case EP_GRBL_STATUS: report_current_position_moving(); break; - case EP_GRBL_PAUSE: TERN(SOFT_FEED_HOLD, realtime_ramping_pause_flag = true, quickpause_stepper()); break; - case EP_GRBL_RESUME: TERN(SOFT_FEED_HOLD, realtime_ramping_pause_flag = false, quickresume_stepper()); break; + case EP_GRBL_STATUS: motion.report_position_moving(); break; + case EP_GRBL_PAUSE: TERN(SOFT_FEED_HOLD, realtime_ramping_pause_flag = true, motion.quickpause_stepper()); break; + case EP_GRBL_RESUME: TERN(SOFT_FEED_HOLD, realtime_ramping_pause_flag = false, motion.quickresume_stepper()); break; #endif #if ENABLED(SOFT_RESET_VIA_SERIAL) case EP_KILL: hal.reboot(); break; diff --git a/Marlin/src/feature/easythreed_ui.cpp b/Marlin/src/feature/easythreed_ui.cpp index 7180c4dbcd..49d490cd76 100644 --- a/Marlin/src/feature/easythreed_ui.cpp +++ b/Marlin/src/feature/easythreed_ui.cpp @@ -136,7 +136,7 @@ void EasythreedUI::loadButton() { if (READ(BTN_RETRACT) && READ(BTN_FEED)) { // Switch in center position (stop) flag = false; // Restore flag to false filament_status = FS_IDLE; // Go back to idle state - quickstop_stepper(); // Hard-stop all the steppers ... now! + motion.quickstop_stepper(); // Hard-stop all the steppers ... now! thermalManager.disable_all_heaters(); // And disable all the heaters blink_interval_ms = LED_ON; } diff --git a/Marlin/src/feature/encoder_i2c.cpp b/Marlin/src/feature/encoder_i2c.cpp index 7c83053b89..ca7481a84d 100644 --- a/Marlin/src/feature/encoder_i2c.cpp +++ b/Marlin/src/feature/encoder_i2c.cpp @@ -318,9 +318,9 @@ bool I2CPositionEncoder::test_axis() { // Only works on XYZ Cartesian machines for the time being if (!(encoderAxis == X_AXIS || encoderAxis == Y_AXIS || encoderAxis == Z_AXIS)) return false; - const float startPosition = soft_endstop.min[encoderAxis] + 10, - endPosition = soft_endstop.max[encoderAxis] - 10; - const feedRate_t fr_mm_s = FLOOR(homing_feedrate(encoderAxis)); + const float startPosition = motion.soft_endstop.min[encoderAxis] + 10, + endPosition = motion.soft_endstop.max[encoderAxis] - 10; + const feedRate_t fr_mm_s = FLOOR(motion.homing_feedrate(encoderAxis)); ec = false; @@ -373,13 +373,13 @@ void I2CPositionEncoder::calibrate_steps_mm(const uint8_t iter) { int32_t startCount, stopCount; - const feedRate_t fr_mm_s = homing_feedrate(encoderAxis); + const feedRate_t fr_mm_s = motion.homing_feedrate(encoderAxis); bool oldec = ec; ec = false; startDistance = 20; - endDistance = soft_endstop.max[encoderAxis] - 20; + endDistance = motion.soft_endstop.max[encoderAxis] - 20; travelDistance = endDistance - startDistance; xyze_pos_t startCoord, endCoord; @@ -400,7 +400,7 @@ void I2CPositionEncoder::calibrate_steps_mm(const uint8_t iter) { delay(250); startCount = get_position(); - //do_blocking_move_to(endCoord); + //motion.blocking_move(endCoord); TERN_(HAS_EXTRUDERS, endCoord.e = planner.get_axis_position_mm(E_AXIS)); planner.buffer_line(endCoord, fr_mm_s, 0); diff --git a/Marlin/src/feature/fwretract.cpp b/Marlin/src/feature/fwretract.cpp index 5ea20401ea..6a726445a7 100644 --- a/Marlin/src/feature/fwretract.cpp +++ b/Marlin/src/feature/fwretract.cpp @@ -92,14 +92,14 @@ void FWRetract::reset() { */ void FWRetract::retract(const bool retracting E_OPTARG(bool swapping/*=false*/)) { // Prevent two retracts or recovers in a row - if (retracted[active_extruder] == retracting) return; + if (retracted[motion.extruder] == retracting) return; // Prevent two swap-retract or recovers in a row #if HAS_MULTI_EXTRUDER // Allow G10 S1 only after G11 - if (swapping && retracted_swap[active_extruder] == retracting) return; + if (swapping && retracted_swap[motion.extruder] == retracting) return; // G11 priority to recover the long retract if activated - if (!retracting) swapping = retracted_swap[active_extruder]; + if (!retracting) swapping = retracted_swap[motion.extruder]; #else constexpr bool swapping = false; #endif @@ -108,7 +108,7 @@ void FWRetract::retract(const bool retracting E_OPTARG(bool swapping/*=false*/)) SERIAL_ECHOLNPGM( "retracting ", AS_DIGIT(retracting), " swapping ", swapping, - " active extruder ", active_extruder + " active extruder ", motion.extruder ); EXTRUDER_LOOP() { SERIAL_ECHOLNPGM("retracted[", e, "] ", AS_DIGIT(retracted[e])); @@ -116,8 +116,8 @@ void FWRetract::retract(const bool retracting E_OPTARG(bool swapping/*=false*/)) SERIAL_ECHOLNPGM("retracted_swap[", e, "] ", AS_DIGIT(retracted_swap[e])); #endif } - SERIAL_ECHOLNPGM("current_position.z ", current_position.z); - SERIAL_ECHOLNPGM("current_position.e ", current_position.e); + SERIAL_ECHOLNPGM("motion.position.z ", motion.position.z); + SERIAL_ECHOLNPGM("motion.position.e ", motion.position.e); SERIAL_ECHOLNPGM("current_hop ", current_hop); //*/ @@ -125,7 +125,7 @@ void FWRetract::retract(const bool retracting E_OPTARG(bool swapping/*=false*/)) * (swapping ? settings.swap_retract_length : settings.retract_length); // The current position will be the destination for E and Z moves - destination = current_position; + motion.destination = motion.position; #if ENABLED(RETRACT_SYNC_MIXING) const uint8_t old_mixing_tool = mixer.get_current_vtool(); @@ -135,8 +135,8 @@ void FWRetract::retract(const bool retracting E_OPTARG(bool swapping/*=false*/)) const feedRate_t fr_max_z = planner.settings.max_feedrate_mm_s[Z_AXIS]; if (retracting) { // Retract by moving from a faux E position back to the current E position - current_retract[active_extruder] = base_retract; - prepare_internal_move_to_destination( // set current from destination + current_retract[motion.extruder] = base_retract; + motion.prepare_internal_move_to_destination( // Set current from destination MUL_TERN(RETRACT_SYNC_MIXING, settings.retract_feedrate_mm_s, MIXING_STEPPERS) ); @@ -144,7 +144,7 @@ void FWRetract::retract(const bool retracting E_OPTARG(bool swapping/*=false*/)) if (!current_hop && settings.retract_zraise > 0.01f) { // Apply hop only once current_hop += settings.retract_zraise; // Add to the hop total (again, only once) // Raise up, set_current_to_destination. Maximum Z feedrate - prepare_internal_move_to_destination(fr_max_z); + motion.prepare_internal_move_to_destination(fr_max_z); } } else { @@ -152,43 +152,42 @@ void FWRetract::retract(const bool retracting E_OPTARG(bool swapping/*=false*/)) if (current_hop) { current_hop = 0; // Lower Z, set_current_to_destination. Maximum Z feedrate - prepare_internal_move_to_destination(fr_max_z); + motion.prepare_internal_move_to_destination(fr_max_z); } + // Adjust the current E position by the extra amount to recover + // Sync the planner position so the extra amount is recovered const float extra_recover = swapping ? settings.swap_retract_recover_extra : settings.retract_recover_extra; - if (extra_recover) { - current_position.e -= extra_recover; // Adjust the current E position by the extra amount to recover - sync_plan_position_e(); // Sync the planner position so the extra amount is recovered - } + if (extra_recover) motion.set_and_sync_e(motion.position.e - extra_recover); - current_retract[active_extruder] = 0; + current_retract[motion.extruder] = 0; // Recover E, set_current_to_destination const feedRate_t fr_mm_s = swapping ? settings.swap_retract_recover_feedrate_mm_s : settings.retract_recover_feedrate_mm_s; - prepare_internal_move_to_destination(MUL_TERN(RETRACT_SYNC_MIXING, fr_mm_s, MIXING_STEPPERS)); + motion.prepare_internal_move_to_destination(MUL_TERN(RETRACT_SYNC_MIXING, fr_mm_s, MIXING_STEPPERS)); } TERN_(RETRACT_SYNC_MIXING, mixer.T(old_mixing_tool)); // Restore original mixing tool - retracted.set(active_extruder, retracting); // Active extruder now retracted / recovered + retracted.set(motion.extruder, retracting); // Active extruder now retracted / recovered // If swap retract/recover update the retracted_swap flag too #if HAS_MULTI_EXTRUDER - if (swapping) retracted_swap.set(active_extruder, retracting); + if (swapping) retracted_swap.set(motion.extruder, retracting); #endif /* // debugging SERIAL_ECHOLNPGM("retracting ", AS_DIGIT(retracting)); SERIAL_ECHOLNPGM("swapping ", AS_DIGIT(swapping)); - SERIAL_ECHOLNPGM("active_extruder ", active_extruder); + SERIAL_ECHOLNPGM("motion.extruder ", motion.extruder); EXTRUDER_LOOP() { SERIAL_ECHOLNPGM("retracted[", e, "] ", AS_DIGIT(retracted[e])); #if HAS_MULTI_EXTRUDER SERIAL_ECHOLNPGM("retracted_swap[", e, "] ", AS_DIGIT(retracted_swap[e])); #endif } - SERIAL_ECHOLNPGM("current_position.z ", current_position.z); - SERIAL_ECHOLNPGM("current_position.e ", current_position.e); + SERIAL_ECHOLNPGM("motion.position.z ", motion.position.z); + SERIAL_ECHOLNPGM("motion.position.e ", motion.position.e); SERIAL_ECHOLNPGM("current_hop ", current_hop); //*/ } diff --git a/Marlin/src/feature/hotend_idle.cpp b/Marlin/src/feature/hotend_idle.cpp index a779efeaff..f05e127a99 100644 --- a/Marlin/src/feature/hotend_idle.cpp +++ b/Marlin/src/feature/hotend_idle.cpp @@ -60,8 +60,8 @@ void HotendIdleProtection::check_hotends(const millis_t &ms) { void HotendIdleProtection::check_e_motion(const millis_t &ms) { static float old_e_position = 0; - if (old_e_position != current_position.e) { - old_e_position = current_position.e; // Track filament motion + if (old_e_position != motion.position.e) { + old_e_position = motion.position.e; // Track filament motion if (next_protect_ms) // If some heater is on then... next_protect_ms = ms + 1000UL * cfg.timeout; // ...delay the timeout till later } diff --git a/Marlin/src/feature/joystick.cpp b/Marlin/src/feature/joystick.cpp index cbfab1fed8..1bc38aba8c 100644 --- a/Marlin/src/feature/joystick.cpp +++ b/Marlin/src/feature/joystick.cpp @@ -119,7 +119,7 @@ Joystick joystick; if (injecting_now) return; #if ENABLED(NO_MOTION_BEFORE_HOMING) - if (TERN0(HAS_JOY_ADC_X, axis_should_home(X_AXIS)) || TERN0(HAS_JOY_ADC_Y, axis_should_home(Y_AXIS)) || TERN0(HAS_JOY_ADC_Z, axis_should_home(Z_AXIS))) + if (TERN0(HAS_JOY_ADC_X, motion.axis_should_home(X_AXIS)) || TERN0(HAS_JOY_ADC_Y, motion.axis_should_home(Y_AXIS)) || TERN0(HAS_JOY_ADC_Z, motion.axis_should_home(Z_AXIS))) return; #endif @@ -161,12 +161,12 @@ Joystick joystick; } if (!UNEAR_ZERO(hypot2)) { - current_position += move_dist; - apply_motion_limits(current_position); + motion.position += move_dist; + motion.apply_limits(motion.position); const float length = sqrt(hypot2); PlannerHints hints(length); injecting_now = true; - planner.buffer_line(current_position, length / seg_time, active_extruder, hints); + planner.buffer_line(motion.position, length / seg_time, motion.extruder, hints); injecting_now = false; } } diff --git a/Marlin/src/feature/mixing.cpp b/Marlin/src/feature/mixing.cpp index bc98bf3b26..fb4ebc894b 100644 --- a/Marlin/src/feature/mixing.cpp +++ b/Marlin/src/feature/mixing.cpp @@ -185,8 +185,8 @@ void Mixer::refresh_collector(const float proportion/*=1.0*/, const uint8_t t/*= void Mixer::update_gradient_for_planner_z() { #if ENABLED(DELTA) - get_cartesian_from_steppers(); - update_gradient_for_z(cartes.z); + motion.get_cartesian_from_steppers(); + update_gradient_for_z(motion.cartes.z); #else update_gradient_for_z(planner.get_axis_position_mm(Z_AXIS)); #endif diff --git a/Marlin/src/feature/mmu/mmu2.cpp b/Marlin/src/feature/mmu/mmu2.cpp index 76e2b8505f..0a4a2cb4ed 100644 --- a/Marlin/src/feature/mmu/mmu2.cpp +++ b/Marlin/src/feature/mmu/mmu2.cpp @@ -96,8 +96,8 @@ struct E_Step { }; inline void unscaled_mmu2_e_move(const float dist, const feedRate_t fr_mm_s, const bool sync=true) { - current_position.e += dist / planner.e_factor[active_extruder]; - line_to_current_position(fr_mm_s); + motion.position.e += dist / planner.e_factor[motion.extruder]; + motion.goto_current_position(fr_mm_s); if (sync) planner.synchronize(); } @@ -505,7 +505,7 @@ inline void beep_bad_cmd() { BUZZ(400, 40); } if (load_to_gears()) { extruder = index; // filament change is finished - active_extruder = 0; + motion.extruder = 0; stepper.enable_extruder(); SERIAL_ECHO_MSG(STR_ACTIVE_EXTRUDER, extruder); } @@ -531,7 +531,7 @@ inline void beep_bad_cmd() { BUZZ(400, 40); } case '?': { #if ENABLED(MMU_MENUS) const uint8_t index = mmu2_choose_filament(); - while (!thermalManager.wait_for_hotend(active_extruder, false)) safe_delay(100); + while (!thermalManager.wait_for_hotend(motion.extruder, false)) safe_delay(100); load_to_nozzle(index); #else beep_bad_cmd(); @@ -550,7 +550,7 @@ inline void beep_bad_cmd() { BUZZ(400, 40); } mmu_loop(); stepper.enable_extruder(); extruder = index; - active_extruder = 0; + motion.extruder = 0; } #else beep_bad_cmd(); @@ -558,7 +558,7 @@ inline void beep_bad_cmd() { BUZZ(400, 40); } } break; case 'c': { - while (!thermalManager.wait_for_hotend(active_extruder, false)) safe_delay(100); + while (!thermalManager.wait_for_hotend(motion.extruder, false)) safe_delay(100); load_to_nozzle_sequence(); } break; } @@ -591,7 +591,7 @@ inline void beep_bad_cmd() { BUZZ(400, 40); } mmu_continue_loading(); //command(MMU_CMD_C0); extruder = index; - active_extruder = 0; + motion.extruder = 0; stepper.enable_extruder(); SERIAL_ECHO_MSG(STR_ACTIVE_EXTRUDER, extruder); @@ -619,7 +619,7 @@ inline void beep_bad_cmd() { BUZZ(400, 40); } DEBUG_ECHOLNPGM("case ?\n"); #if ENABLED(MMU_MENUS) uint8_t index = mmu2_choose_filament(); - while (!thermalManager.wait_for_hotend(active_extruder, false)) safe_delay(100); + while (!thermalManager.wait_for_hotend(motion.extruder, false)) safe_delay(100); load_to_nozzle(index); #else beep_bad_cmd(); @@ -640,7 +640,7 @@ inline void beep_bad_cmd() { BUZZ(400, 40); } stepper.enable_extruder(); extruder = index; - active_extruder = 0; + motion.extruder = 0; #else beep_bad_cmd(); #endif @@ -648,7 +648,7 @@ inline void beep_bad_cmd() { BUZZ(400, 40); } case 'c': { DEBUG_ECHOLNPGM("case c\n"); - while (!thermalManager.wait_for_hotend(active_extruder, false)) safe_delay(100); + while (!thermalManager.wait_for_hotend(motion.extruder, false)) safe_delay(100); load_to_nozzle_sequence(); } break; } @@ -671,8 +671,8 @@ inline void beep_bad_cmd() { BUZZ(400, 40); } stepper.enable_extruder(); const millis_t expire_ms = millis() + 3000; do { - current_position.e += 1; - line_to_current_position(MMU_LOAD_FEEDRATE); + motion.position.e += 1; + motion.goto_current_position(MMU_LOAD_FEEDRATE); planner.synchronize(); // When (T0 rx->ok) load is ready, but in fact it did not load // successfully or an overload created pressure in the extruder. @@ -708,7 +708,7 @@ inline void beep_bad_cmd() { BUZZ(400, 40); } manage_response(true, true); command(MMU_CMD_C0); extruder = index; // Filament change is finished - active_extruder = 0; + motion.extruder = 0; stepper.enable_extruder(); SERIAL_ECHO_MSG(STR_ACTIVE_EXTRUDER, extruder); ui.reset_status(); @@ -734,7 +734,7 @@ inline void beep_bad_cmd() { BUZZ(400, 40); } DEBUG_ECHOLNPGM("case ?\n"); #if ENABLED(MMU_MENUS) uint8_t index = mmu2_choose_filament(); - while (!thermalManager.wait_for_hotend(active_extruder, false)) safe_delay(100); + while (!thermalManager.wait_for_hotend(motion.extruder, false)) safe_delay(100); load_to_nozzle(index); #else beep_bad_cmd(); @@ -754,7 +754,7 @@ inline void beep_bad_cmd() { BUZZ(400, 40); } stepper.enable_extruder(); extruder = index; - active_extruder = 0; + motion.extruder = 0; #else beep_bad_cmd(); #endif @@ -762,7 +762,7 @@ inline void beep_bad_cmd() { BUZZ(400, 40); } case 'c': { DEBUG_ECHOLNPGM("case c\n"); - while (!thermalManager.wait_for_hotend(active_extruder, false)) safe_delay(100); + while (!thermalManager.wait_for_hotend(motion.extruder, false)) safe_delay(100); load_to_nozzle_sequence(); } break; } @@ -806,7 +806,7 @@ void MMU2::manage_response(const bool move_axes, const bool turn_off_nozzle) { constexpr xyz_pos_t park_point = NOZZLE_PARK_POINT; bool response = false, mmu_print_saved = false; xyz_pos_t resume_position; - celsius_t resume_hotend_temp = thermalManager.degTargetHotend(active_extruder); + celsius_t resume_hotend_temp = thermalManager.degTargetHotend(motion.extruder); KEEPALIVE_STATE(PAUSED_FOR_USER); @@ -823,12 +823,12 @@ void MMU2::manage_response(const bool move_axes, const bool turn_off_nozzle) { SERIAL_ECHOLNPGM("MMU not responding"); - resume_hotend_temp = thermalManager.degTargetHotend(active_extruder); - resume_position = current_position; + resume_hotend_temp = thermalManager.degTargetHotend(motion.extruder); + resume_position = motion.position; - if (move_axes && all_axes_homed()) nozzle.park(0, park_point); + if (move_axes && motion.all_axes_homed()) nozzle.park(0, park_point); - if (turn_off_nozzle) thermalManager.setTargetHotend(0, active_extruder); + if (turn_off_nozzle) thermalManager.setTargetHotend(0, motion.extruder); mmu2_not_responding(); } @@ -837,10 +837,10 @@ void MMU2::manage_response(const bool move_axes, const bool turn_off_nozzle) { SERIAL_ECHOLNPGM("\nMMU starts responding"); if (turn_off_nozzle && resume_hotend_temp) { - thermalManager.setTargetHotend(resume_hotend_temp, active_extruder); + thermalManager.setTargetHotend(resume_hotend_temp, motion.extruder); LCD_MESSAGE(MSG_HEATING); ERR_BUZZ(); - while (!thermalManager.wait_for_hotend(active_extruder, false)) safe_delay(1000); + while (!thermalManager.wait_for_hotend(motion.extruder, false)) safe_delay(1000); } LCD_MESSAGE(MSG_MMU2_RESUMING); @@ -849,11 +849,11 @@ void MMU2::manage_response(const bool move_axes, const bool turn_off_nozzle) { #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" - if (move_axes && all_axes_homed()) { + if (move_axes && motion.all_axes_homed()) { // Move XY to starting position, then Z - do_blocking_move_to_xy(resume_position, feedRate_t(NOZZLE_PARK_XY_FEEDRATE)); + motion.blocking_move_xy(resume_position, feedRate_t(NOZZLE_PARK_XY_FEEDRATE)); // Move Z_AXIS to saved position - do_blocking_move_to_z(resume_position.z, feedRate_t(NOZZLE_PARK_Z_FEEDRATE)); + motion.blocking_move_z(resume_position.z, feedRate_t(NOZZLE_PARK_Z_FEEDRATE)); } #pragma GCC diagnostic pop @@ -935,7 +935,7 @@ void MMU2::load_to_feeder(const uint8_t index) { bool MMU2::load_to_nozzle(const uint8_t index) { if (!_enabled) return false; - if (thermalManager.tooColdToExtrude(active_extruder)) { + if (thermalManager.tooColdToExtrude(motion.extruder)) { mmu2_attn_buzz(); LCD_ALERTMESSAGE(MSG_HOTEND_TOO_COLD); return false; @@ -956,7 +956,7 @@ bool MMU2::load_to_nozzle(const uint8_t index) { if (success) { mmu_loop(); extruder = index; - active_extruder = 0; + motion.extruder = 0; load_to_nozzle_sequence(); mmu2_attn_buzz(); } @@ -967,7 +967,7 @@ bool MMU2::eject_filament(const uint8_t index, const bool recover) { if (!_enabled) return false; - if (thermalManager.tooColdToExtrude(active_extruder)) { + if (thermalManager.tooColdToExtrude(motion.extruder)) { mmu2_attn_buzz(); LCD_ALERTMESSAGE(MSG_HOTEND_TOO_COLD); return false; @@ -1012,7 +1012,7 @@ bool MMU2::unload() { if (!_enabled) return false; - if (thermalManager.tooColdToExtrude(active_extruder)) { + if (thermalManager.tooColdToExtrude(motion.extruder)) { mmu2_attn_buzz(); LCD_ALERTMESSAGE(MSG_HOTEND_TOO_COLD); return false; diff --git a/Marlin/src/feature/mmu3/mmu3.cpp b/Marlin/src/feature/mmu3/mmu3.cpp index dd06126724..4c3c5e6fd7 100644 --- a/Marlin/src/feature/mmu3/mmu3.cpp +++ b/Marlin/src/feature/mmu3/mmu3.cpp @@ -362,12 +362,12 @@ namespace MMU3 { * in the slope's sign or check the last machine position. * y(x) * ▲ - * │ ^◄────────── tryload_length + current_position + * │ ^◄────────── tryload_length + motion.position * machine │ / \ - * position │ / \◄────────── stepper_position_mm + current_position + * position │ / \◄────────── stepper_position_mm + motion.position * (mm) │ / \ * │ / \ - * │/ \◄───────current_position + * │/ \◄───────motion.position * └──────────────► x * 0 19 * pixel # diff --git a/Marlin/src/feature/mmu3/mmu3_marlin1.cpp b/Marlin/src/feature/mmu3/mmu3_marlin1.cpp index f12d83772a..aeddcbef40 100644 --- a/Marlin/src/feature/mmu3/mmu3_marlin1.cpp +++ b/Marlin/src/feature/mmu3/mmu3_marlin1.cpp @@ -41,7 +41,7 @@ namespace MMU3 { static void planner_line_to_current_position(float feedRate_mm_s) { - line_to_current_position(feedRate_mm_s); + motion.goto_current_position(feedRate_mm_s); } static void planner_line_to_current_position_sync(float feedRate_mm_s) { @@ -50,21 +50,21 @@ namespace MMU3 { } void extruder_move(const float delta, const float feedRate_mm_s, const bool sync/*=true*/) { - current_position.e += delta / planner.e_factor[active_extruder]; + motion.position.e += delta / planner.e_factor[motion.extruder]; planner_line_to_current_position(feedRate_mm_s); if (sync) planner.synchronize(); } float move_raise_z(const float delta) { //return raise_z(delta); - xyze_pos_t current_position_before = current_position; - do_z_clearance_by(delta); - return (current_position - current_position_before).z; + xyze_pos_t current_position_before = motion.position; + motion.do_z_clearance_by(delta); + return (motion.position - current_position_before).z; } void planner_abort_queued_moves() { //planner_abort_hard(); - quickstop_stepper(); + motion.quickstop_stepper(); // Unblock the planner. This should be safe in the // toolchange context. Currently we are mainly aborting @@ -75,41 +75,21 @@ namespace MMU3 { // eoyilmaz: we don't need this part, the print is not aborted } - void planner_synchronize() { - planner.synchronize(); - } - - bool planner_any_moves() { - return planner.has_blocks_queued(); - } - - float planner_get_machine_position_E_mm() { - return current_position.e; - } - - float stepper_get_machine_position_E_mm() { - return planner.get_axis_position_mm(E_AXIS); - } - - float planner_get_current_position_E() { - return current_position.e; - } - - void planner_set_current_position_E(float e) { - current_position.e = e; - } - - xyz_pos_t planner_current_position() { - return xyz_pos_t(current_position); - } + void planner_synchronize() { planner.synchronize(); } + bool planner_any_moves() { return planner.has_blocks_queued(); } + float planner_get_machine_position_E_mm() { return motion.position.e; } + float stepper_get_machine_position_E_mm() { return planner.get_axis_position_mm(E_AXIS); } + float planner_get_current_position_E() { return motion.position.e; } + void planner_set_current_position_E(float e) { motion.position.e = e; } + xyz_pos_t planner_current_position() { return xyz_pos_t(motion.position); } void motion_blocking_move_xy(float rx, float ry, float feedRate_mm_s) { - current_position.set(rx, ry); + motion.position.set(rx, ry); planner_line_to_current_position_sync(feedRate_mm_s); } void motion_blocking_move_z(float z, float feedRate_mm_s) { - current_position.z = z; + motion.position.z = z; planner_line_to_current_position_sync(feedRate_mm_s); } @@ -165,7 +145,7 @@ namespace MMU3 { void Disable_E0() { stepper.disable_extruder(TERN_(HAS_EXTRUDERS, 0)); } bool xy_are_trusted() { - return axis_is_trusted(X_AXIS) && axis_is_trusted(Y_AXIS); + return motion.axis_is_trusted(X_AXIS) && motion.axis_is_trusted(Y_AXIS); } } // MMU3 diff --git a/Marlin/src/feature/pause.cpp b/Marlin/src/feature/pause.cpp index 025bcb8383..1a188ca169 100644 --- a/Marlin/src/feature/pause.cpp +++ b/Marlin/src/feature/pause.cpp @@ -146,8 +146,8 @@ static bool ensure_safe_temperature(const bool wait=true, const PauseMode mode=P DEBUG_ECHOLNPGM("... wait:", wait, " mode:", mode); #if ENABLED(PREVENT_COLD_EXTRUSION) - if (!DEBUGGING(DRYRUN) && thermalManager.targetTooColdToExtrude(active_extruder)) - thermalManager.setTargetHotend(thermalManager.extrude_min_temp, active_extruder); + if (!DEBUGGING(DRYRUN) && thermalManager.targetTooColdToExtrude(motion.extruder)) + thermalManager.setTargetHotend(thermalManager.extrude_min_temp, motion.extruder); #endif ui.pause_show_message(PAUSE_MESSAGE_HEATING, mode); @@ -157,17 +157,17 @@ static bool ensure_safe_temperature(const bool wait=true, const PauseMode mode=P rts.updateTempE0(); #endif - if (wait) return thermalManager.wait_for_hotend(active_extruder); + if (wait) return thermalManager.wait_for_hotend(motion.extruder); // Allow interruption by Emergency Parser M108 marlin.wait_for_heatup = TERN1(PREVENT_COLD_EXTRUSION, !thermalManager.allow_cold_extrude); - while (marlin.is_heating() && ABS(thermalManager.wholeDegHotend(active_extruder) - thermalManager.degTargetHotend(active_extruder)) > (TEMP_WINDOW)) + while (marlin.is_heating() && ABS(thermalManager.wholeDegHotend(motion.extruder) - thermalManager.degTargetHotend(motion.extruder)) > (TEMP_WINDOW)) marlin.idle(); marlin.heatup_done(); #if ENABLED(PREVENT_COLD_EXTRUSION) // A user can cancel wait-for-heating with M108 - if (!DEBUGGING(DRYRUN) && thermalManager.targetTooColdToExtrude(active_extruder)) { + if (!DEBUGGING(DRYRUN) && thermalManager.targetTooColdToExtrude(motion.extruder)) { SERIAL_ECHO_MSG(STR_ERR_HOTEND_TOO_COLD); return false; } @@ -211,7 +211,7 @@ bool load_filament(const float slow_load_length/*=0*/, const float fast_load_len TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENTLOAD))); #if ENABLED(HOST_PROMPT_SUPPORT) - const char tool = '0' + TERN0(MULTI_FILAMENT_SENSOR, active_extruder); + const char tool = '0' + TERN0(MULTI_FILAMENT_SENSOR, motion.extruder); hostui.prompt_do(PROMPT_USER_CONTINUE, F("Load Filament T"), tool, FPSTR(CONTINUE_STR)); #endif @@ -220,7 +220,7 @@ bool load_filament(const float slow_load_length/*=0*/, const float fast_load_len #if ALL(HAS_FILAMENT_SENSOR, FILAMENT_CHANGE_RESUME_ON_INSERT) #if MULTI_FILAMENT_SENSOR #define _CASE_INSERTED(N) case N-1: if (!FILAMENT_IS_OUT(N)) marlin.user_resume(); break; - switch (active_extruder) { + switch (motion.extruder) { REPEAT_1(NUM_RUNOUT_SENSORS, _CASE_INSERTED) } #else @@ -234,17 +234,17 @@ bool load_filament(const float slow_load_length/*=0*/, const float fast_load_len if (show_lcd) ui.pause_show_message(PAUSE_MESSAGE_LOAD, mode); #if ENABLED(DUAL_X_CARRIAGE) - const int8_t saved_ext = active_extruder; + const int8_t saved_ext = motion.extruder; const bool saved_ext_dup_mode = extruder_duplication_enabled; set_duplication_enabled(false, DXC_ext); #endif - TERN_(BELTPRINTER, do_blocking_move_to_xy(0.00, 50.00)); + TERN_(BELTPRINTER, motion.blocking_move_xy(0.00, 50.00)); TERN_(MPCTEMP, MPC::e_paused = true); // Slow Load filament - if (slow_load_length) unscaled_e_move(slow_load_length, FILAMENT_CHANGE_SLOW_LOAD_FEEDRATE); + if (slow_load_length) motion.unscaled_e_move(slow_load_length, FILAMENT_CHANGE_SLOW_LOAD_FEEDRATE); // Fast Load Filament if (fast_load_length) { @@ -253,7 +253,7 @@ bool load_filament(const float slow_load_length/*=0*/, const float fast_load_len planner.settings.retract_acceleration = FILAMENT_CHANGE_FAST_LOAD_ACCEL; #endif - unscaled_e_move(fast_load_length, FILAMENT_CHANGE_FAST_LOAD_FEEDRATE); + motion.unscaled_e_move(fast_load_length, FILAMENT_CHANGE_FAST_LOAD_FEEDRATE); #if FILAMENT_CHANGE_FAST_LOAD_ACCEL > 0 planner.settings.retract_acceleration = saved_acceleration; @@ -272,7 +272,7 @@ bool load_filament(const float slow_load_length/*=0*/, const float fast_load_len TERN_(HOST_PROMPT_SUPPORT, hostui.continue_prompt(GET_TEXT_F(MSG_FILAMENT_CHANGE_PURGE))); marlin.wait_start(); // A click or M108 breaks the purge_length loop for (float purge_count = purge_length; purge_count > 0 && marlin.wait_for_user; --purge_count) - unscaled_e_move(1, ADVANCED_PAUSE_PURGE_FEEDRATE); + motion.unscaled_e_move(1, ADVANCED_PAUSE_PURGE_FEEDRATE); marlin.user_resume(); #else @@ -288,7 +288,7 @@ bool load_filament(const float slow_load_length/*=0*/, const float fast_load_len #endif // Extrude filament to get into hotend - unscaled_e_move(purge_length, ADVANCED_PAUSE_PURGE_FEEDRATE); + motion.unscaled_e_move(purge_length, ADVANCED_PAUSE_PURGE_FEEDRATE); } TERN_(HOST_PROMPT_SUPPORT, hostui.filament_load_prompt()); // Initiate another host prompt. @@ -327,7 +327,7 @@ bool load_filament(const float slow_load_length/*=0*/, const float fast_load_len */ inline void disable_active_extruder() { #if HAS_EXTRUDERS - stepper.DISABLE_EXTRUDER(active_extruder); + stepper.DISABLE_EXTRUDER(motion.extruder); safe_delay(100); #endif } @@ -372,13 +372,13 @@ bool unload_filament(const float unload_length, const bool show_lcd/*=false*/, #endif // Retract filament - unscaled_e_move(-(FILAMENT_UNLOAD_PURGE_RETRACT) * mix_multiplier, (PAUSE_PARK_RETRACT_FEEDRATE) * mix_multiplier); + motion.unscaled_e_move(-(FILAMENT_UNLOAD_PURGE_RETRACT) * mix_multiplier, (PAUSE_PARK_RETRACT_FEEDRATE) * mix_multiplier); // Wait for filament to cool safe_delay(FILAMENT_UNLOAD_PURGE_DELAY); // Quickly purge - unscaled_e_move((FILAMENT_UNLOAD_PURGE_RETRACT + FILAMENT_UNLOAD_PURGE_LENGTH) * mix_multiplier, + motion.unscaled_e_move((FILAMENT_UNLOAD_PURGE_RETRACT + FILAMENT_UNLOAD_PURGE_LENGTH) * mix_multiplier, (FILAMENT_UNLOAD_PURGE_FEEDRATE) * mix_multiplier); // Unload filament @@ -387,7 +387,7 @@ bool unload_filament(const float unload_length, const bool show_lcd/*=false*/, planner.settings.retract_acceleration = FILAMENT_CHANGE_UNLOAD_ACCEL; #endif - unscaled_e_move(unload_length * mix_multiplier, (FILAMENT_CHANGE_UNLOAD_FEEDRATE) * mix_multiplier); + motion.unscaled_e_move(unload_length * mix_multiplier, (FILAMENT_CHANGE_UNLOAD_FEEDRATE) * mix_multiplier); #if FILAMENT_CHANGE_FAST_LOAD_ACCEL > 0 planner.settings.retract_acceleration = saved_acceleration; @@ -447,14 +447,14 @@ bool pause_print(const float retract, const xyz_pos_t &park_point, const bool sh print_job_timer.pause(); // Save current position - resume_position = current_position; + resume_position = motion.position; // Will the nozzle be parking? - const bool do_park = !axes_should_home(); + const bool do_park = !motion.axes_should_home(); #if ENABLED(POWER_LOSS_RECOVERY) // Save PLR info in case the power goes out while parked - const float park_raise = do_park ? nozzle.park_mode_0_height(park_point.z) - current_position.z : POWER_LOSS_ZRAISE; + const float park_raise = do_park ? nozzle.park_mode_0_height(park_point.z) - motion.position.z : POWER_LOSS_ZRAISE; if (was_sd_printing && recovery.enabled) recovery.save(true, park_raise, do_park); #endif @@ -466,7 +466,7 @@ bool pause_print(const float retract, const xyz_pos_t &park_point, const bool sh #endif // Initial retract before move to filament change position - if (retract && thermalManager.hotEnoughToExtrude(active_extruder)) { + if (retract && thermalManager.hotEnoughToExtrude(motion.extruder)) { DEBUG_ECHOLNPGM("... retract:", retract); #if ENABLED(AUTO_BED_LEVELING_UBL) @@ -474,7 +474,7 @@ bool pause_print(const float retract, const xyz_pos_t &park_point, const bool sh set_bed_leveling_enabled(false); // turn off leveling #endif - unscaled_e_move(retract, PAUSE_PARK_RETRACT_FEEDRATE); + motion.unscaled_e_move(retract, PAUSE_PARK_RETRACT_FEEDRATE); TERN_(AUTO_BED_LEVELING_UBL, set_bed_leveling_enabled(leveling_was_enabled)); // restore leveling } @@ -484,7 +484,7 @@ bool pause_print(const float retract, const xyz_pos_t &park_point, const bool sh if (!do_park) LCD_MESSAGE(MSG_PARK_FAILED); #if ENABLED(DUAL_X_CARRIAGE) - const int8_t saved_ext = active_extruder; + const int8_t saved_ext = motion.extruder; const bool saved_ext_dup_mode = extruder_duplication_enabled; set_duplication_enabled(false, DXC_ext); #endif @@ -544,7 +544,7 @@ void wait_for_confirmation(const bool is_reload/*=false*/, const int8_t max_beep HOTEND_LOOP() thermalManager.heater_idle[e].start(nozzle_timeout); #if ENABLED(DUAL_X_CARRIAGE) - const int8_t saved_ext = active_extruder; + const int8_t saved_ext = motion.extruder; const bool saved_ext_dup_mode = extruder_duplication_enabled; set_duplication_enabled(false, DXC_ext); #endif @@ -662,7 +662,7 @@ void resume_print( SERIAL_ECHOLNPGM( "start of resume_print()\ndual_x_carriage_mode:", dual_x_carriage_mode, "\nextruder_duplication_enabled:", extruder_duplication_enabled, - "\nactive_extruder:", active_extruder, + "\nactive_extruder:", motion.extruder, "\n" ); //*/ @@ -676,15 +676,15 @@ void resume_print( thermalManager.reset_hotend_idle_timer(e); } - if (targetTemp > thermalManager.degTargetHotend(active_extruder)) - thermalManager.setTargetHotend(targetTemp, active_extruder); + if (targetTemp > thermalManager.degTargetHotend(motion.extruder)) + thermalManager.setTargetHotend(targetTemp, motion.extruder); // Load the new filament load_filament(slow_load_length, fast_load_length, purge_length, max_beep_count, show_lcd, nozzle_timed_out, PAUSE_MODE_SAME DXC_PASS); if (targetTemp > 0) { - thermalManager.setTargetHotend(targetTemp, active_extruder); - thermalManager.wait_for_hotend(active_extruder, false); + thermalManager.setTargetHotend(targetTemp, motion.extruder); + thermalManager.wait_for_hotend(motion.extruder, false); } ui.pause_show_message(PAUSE_MESSAGE_RESUME); @@ -693,16 +693,16 @@ void resume_print( ensure_safe_temperature(DISABLED(BELTPRINTER)); // Retract to prevent oozing - unscaled_e_move(-(PAUSE_PARK_RETRACT_LENGTH), feedRate_t(PAUSE_PARK_RETRACT_FEEDRATE)); + motion.unscaled_e_move(-(PAUSE_PARK_RETRACT_LENGTH), feedRate_t(PAUSE_PARK_RETRACT_FEEDRATE)); - if (!axes_should_home()) { + if (!motion.axes_should_home()) { // Move XY back to saved position - destination.set(resume_position.x, resume_position.y, current_position.z, current_position.e); - prepare_internal_move_to_destination(NOZZLE_PARK_XY_FEEDRATE); + motion.destination.set(resume_position.x, resume_position.y, motion.position.z, motion.position.e); + motion.prepare_internal_move_to_destination(NOZZLE_PARK_XY_FEEDRATE); // Move Z back to saved position - destination.z = resume_position.z; - prepare_internal_move_to_destination(NOZZLE_PARK_Z_FEEDRATE); + motion.destination.z = resume_position.z; + motion.prepare_internal_move_to_destination(NOZZLE_PARK_Z_FEEDRATE); } #if ENABLED(AUTO_BED_LEVELING_UBL) @@ -711,27 +711,27 @@ void resume_print( #endif // Unretract - unscaled_e_move(PAUSE_PARK_RETRACT_LENGTH, feedRate_t(PAUSE_PARK_RETRACT_FEEDRATE)); + motion.unscaled_e_move(PAUSE_PARK_RETRACT_LENGTH, feedRate_t(PAUSE_PARK_RETRACT_FEEDRATE)); TERN_(AUTO_BED_LEVELING_UBL, set_bed_leveling_enabled(leveling_was_enabled)); // restore leveling // Intelligent resuming #if ENABLED(FWRETRACT) // If retracted before goto pause - if (fwretract.retracted[active_extruder]) - unscaled_e_move(-fwretract.settings.retract_length, fwretract.settings.retract_feedrate_mm_s); + if (fwretract.retracted[motion.extruder]) + motion.unscaled_e_move(-fwretract.settings.retract_length, fwretract.settings.retract_feedrate_mm_s); #endif // If resume_position is negative - if (resume_position.e < 0) unscaled_e_move(resume_position.e, feedRate_t(PAUSE_PARK_RETRACT_FEEDRATE)); + if (resume_position.e < 0) motion.unscaled_e_move(resume_position.e, feedRate_t(PAUSE_PARK_RETRACT_FEEDRATE)); #ifdef ADVANCED_PAUSE_RESUME_PRIME if (ADVANCED_PAUSE_RESUME_PRIME != 0) - unscaled_e_move(ADVANCED_PAUSE_RESUME_PRIME, feedRate_t(ADVANCED_PAUSE_PURGE_FEEDRATE)); + motion.unscaled_e_move(ADVANCED_PAUSE_RESUME_PRIME, feedRate_t(ADVANCED_PAUSE_PURGE_FEEDRATE)); #endif // Now all extrusion positions are resumed and ready to be confirmed // Set extruder to saved position - planner.set_e_position_mm((destination.e = current_position.e = resume_position.e)); + planner.set_e_position_mm((motion.destination.e = motion.position.e = resume_position.e)); ui.pause_show_message(PAUSE_MESSAGE_STATUS); #if ENABLED(SOVOL_SV06_RTS) diff --git a/Marlin/src/feature/powerloss.cpp b/Marlin/src/feature/powerloss.cpp index 0dd19808bc..1620b0bb2e 100644 --- a/Marlin/src/feature/powerloss.cpp +++ b/Marlin/src/feature/powerloss.cpp @@ -200,7 +200,7 @@ void PrintJobRecovery::save(const bool force/*=false*/, const float zraise/*=POW || ELAPSED(ms, next_save_ms) #endif // Save if Z is above the last-saved position by some minimum height - || current_position.z > info.current_position.z + POWER_LOSS_MIN_Z_CHANGE + || motion.position.z > info.current_position.z + POWER_LOSS_MIN_Z_CHANGE #endif ) { @@ -216,8 +216,8 @@ void PrintJobRecovery::save(const bool force/*=false*/, const float zraise/*=POW // Machine state // info.sdpos and info.current_position are pre-filled from the Stepper ISR - info.feedrate = uint16_t(MMS_TO_MMM(feedrate_mm_s)); - info.feedrate_percentage = feedrate_percentage; + info.feedrate = uint16_t(MMS_TO_MMM(motion.feedrate_mm_s)); + info.feedrate_percentage = motion.feedrate_percentage; COPY(info.flow_percentage, planner.flow_percentage); info.zraise = zraise; @@ -225,16 +225,16 @@ void PrintJobRecovery::save(const bool force/*=false*/, const float zraise/*=POW TERN_(CANCEL_OBJECTS, info.cancel_state = cancelable.state); TERN_(GCODE_REPEAT_MARKERS, info.stored_repeat = repeat); - TERN_(HAS_HOME_OFFSET, info.home_offset = home_offset); - TERN_(HAS_WORKSPACE_OFFSET, info.workspace_offset = workspace_offset); - E_TERN_(info.active_extruder = active_extruder); + TERN_(HAS_HOME_OFFSET, info.home_offset = motion.home_offset); + TERN_(HAS_WORKSPACE_OFFSET, info.workspace_offset = motion.workspace_offset); + E_TERN_(info.extruder = motion.extruder); #if HAS_VOLUMETRIC_EXTRUSION info.flag.volumetric_enabled = parser.volumetric_enabled; #if HAS_MULTI_EXTRUDER COPY(info.filament_size, planner.filament_size); #else - if (parser.volumetric_enabled) info.filament_size[0] = planner.filament_size[active_extruder]; + if (parser.volumetric_enabled) info.filament_size[0] = planner.filament_size[motion.extruder]; #endif #endif @@ -285,10 +285,10 @@ void PrintJobRecovery::save(const bool force/*=false*/, const float zraise/*=POW #if POWER_LOSS_RETRACT_LEN // Retract filament now - const uint16_t old_flow = planner.flow_percentage[active_extruder]; - planner.set_flow(active_extruder, 100); + const uint16_t old_flow = planner.flow_percentage[motion.extruder]; + planner.set_flow(motion.extruder, 100); gcode.process_subcommands_now(F("G1F3000E-" STRINGIFY(POWER_LOSS_RETRACT_LEN))); - planner.set_flow(active_extruder, old_flow); + planner.set_flow(motion.extruder, old_flow); #endif #if POWER_LOSS_ZRAISE @@ -327,7 +327,7 @@ void PrintJobRecovery::save(const bool force/*=false*/, const float zraise/*=POW #if POWER_LOSS_ZRAISE // Get the limited Z-raise to do now or on resume - const float zraise = _MAX(0, _MIN(current_position.z + POWER_LOSS_ZRAISE, Z_MAX_POS - 1) - current_position.z); + const float zraise = _MAX(0, _MIN(motion.position.z + POWER_LOSS_ZRAISE, Z_MAX_POS - 1) - motion.position.z); #else constexpr float zraise = 0; #endif @@ -344,15 +344,15 @@ void PrintJobRecovery::save(const bool force/*=false*/, const float zraise/*=POW #if ENABLED(BACKUP_POWER_SUPPLY) // Do a hard-stop of the steppers (with possibly a loud thud) - quickstop_stepper(); + motion.quickstop_stepper(); // With backup power a retract and raise can be done now retract_and_lift(zraise); #endif if (TERN0(DEBUG_POWER_LOSS_RECOVERY, simulated)) { card.fileHasFinished(); - current_position.reset(); - sync_plan_position(); + motion.position.reset(); + motion.sync_plan_position(); } else marlin.kill(GET_TEXT_F(MSG_OUTAGE_RECOVERY)); @@ -489,8 +489,8 @@ void PrintJobRecovery::resume() { PROCESS_SUBCOMMANDS_NOW(TS(F("G1F1000X"), p_float_t(p.x, 3), 'Y', p_float_t(p.y, 3), F("\nG28HZ"))); #endif - // Mark all axes as having been homed (no effect on current_position) - set_all_homed(); + // Mark all axes as having been homed (no effect on motion.position) + motion.set_all_homed(); #if HAS_LEVELING // Restore Z fade and possibly re-enable bed leveling compensation. @@ -516,7 +516,7 @@ void PrintJobRecovery::resume() { EXTRUDER_LOOP() PROCESS_SUBCOMMANDS_NOW(TS(F("M200T"), e, F("D"), p_float_t(info.filament_size[e], 3))); if (!info.flag.volumetric_enabled) - PROCESS_SUBCOMMANDS_NOW(TS(F("M200D0T"), info.active_extruder)); + PROCESS_SUBCOMMANDS_NOW(TS(F("M200D0T"), info.extruder)); #else if (info.flag.volumetric_enabled) PROCESS_SUBCOMMANDS_NOW(TS(F("M200D"), p_float_t(info.filament_size[0], 3))); @@ -536,7 +536,7 @@ void PrintJobRecovery::resume() { // Restore the previously active tool (with no_move) #if HAS_MULTI_EXTRUDER || HAS_MULTI_HOTEND - PROCESS_SUBCOMMANDS_NOW(TS('T', info.active_extruder, 'S')); + PROCESS_SUBCOMMANDS_NOW(TS('T', info.extruder, 'S')); #endif // Restore print cooling fan speeds @@ -586,7 +586,7 @@ void PrintJobRecovery::resume() { // Restore the feedrate and percentage PROCESS_SUBCOMMANDS_NOW(TS(F("G1F"), info.feedrate)); - feedrate_percentage = info.feedrate_percentage; + motion.feedrate_percentage = info.feedrate_percentage; // Flowrate percentage EXTRUDER_LOOP() planner.set_flow(e, info.flow_percentage[e]); @@ -600,8 +600,8 @@ void PrintJobRecovery::resume() { #endif TERN_(GCODE_REPEAT_MARKERS, repeat = info.stored_repeat); - TERN_(HAS_HOME_OFFSET, home_offset = info.home_offset); - TERN_(HAS_WORKSPACE_OFFSET, workspace_offset = info.workspace_offset); + TERN_(HAS_HOME_OFFSET, motion.home_offset = info.home_offset); + TERN_(HAS_WORKSPACE_OFFSET, motion.workspace_offset = info.workspace_offset); // Relative axis modes gcode.axis_relative = info.axis_relative; @@ -625,7 +625,7 @@ void PrintJobRecovery::resume() { DEBUG_ECHOLN(prefix, F(" Job Recovery Info...\nvalid_head:"), info.valid_head, F(" valid_foot:"), info.valid_foot); if (info.valid_head) { if (info.valid_head == info.valid_foot) { - DEBUG_ECHOPGM("current_position: "); + DEBUG_ECHOPGM("curr.position: "); LOOP_LOGICAL_AXES(i) { if (i) DEBUG_CHAR(','); DEBUG_ECHO(info.current_position[i]); @@ -671,7 +671,7 @@ void PrintJobRecovery::resume() { #endif #if HAS_MULTI_EXTRUDER - DEBUG_ECHOLNPGM("active_extruder: ", info.active_extruder); + DEBUG_ECHOLNPGM("extruder: ", info.extruder); #endif #if HAS_VOLUMETRIC_EXTRUSION diff --git a/Marlin/src/feature/powerloss.h b/Marlin/src/feature/powerloss.h index bfa5b4717f..df17f956ed 100644 --- a/Marlin/src/feature/powerloss.h +++ b/Marlin/src/feature/powerloss.h @@ -85,7 +85,7 @@ typedef struct { xyz_pos_t workspace_offset; #endif #if HAS_MULTI_EXTRUDER - uint8_t active_extruder; + uint8_t extruder; #endif #if HAS_VOLUMETRIC_EXTRUSION diff --git a/Marlin/src/feature/runout.h b/Marlin/src/feature/runout.h index 7881af4e38..dec89c3791 100644 --- a/Marlin/src/feature/runout.h +++ b/Marlin/src/feature/runout.h @@ -154,12 +154,12 @@ class TFilamentMonitor : public FilamentMonitorBase { uint8_t extruder = 0; if (ran_out) while (!runout_flags.test(extruder)) extruder++; #else - const bool ran_out = runout_flags[active_extruder]; // suppress non active extruders - uint8_t extruder = active_extruder; + const bool ran_out = runout_flags[motion.extruder]; // suppress non active extruders + uint8_t extruder = motion.extruder; #endif #else const bool ran_out = bool(runout_flags); - uint8_t extruder = active_extruder; + uint8_t extruder = motion.extruder; #endif if (!ran_out) return; diff --git a/Marlin/src/feature/solenoid.cpp b/Marlin/src/feature/solenoid.cpp index cc4522e30a..33799c5ffb 100644 --- a/Marlin/src/feature/solenoid.cpp +++ b/Marlin/src/feature/solenoid.cpp @@ -26,7 +26,7 @@ #include "solenoid.h" -#include "../module/motion.h" // for active_extruder +#include "../module/motion.h" // for motion.extruder #include "../module/tool_change.h" // for parking_extruder_set_parked // Used primarily with MANUAL_SOLENOID_CONTROL @@ -38,7 +38,7 @@ static void set_solenoid(const uint8_t num, const uint8_t state) { } #if ENABLED(PARKING_EXTRUDER) - if (state == LOW && active_extruder == num) // If active extruder's solenoid is disabled, carriage is considered parked + if (state == LOW && motion.extruder == num) // If active extruder's solenoid is disabled, carriage is considered parked parking_extruder_set_parked(true); #endif } diff --git a/Marlin/src/feature/tramming.cpp b/Marlin/src/feature/tramming.cpp index 3721c5eb81..cd49ed90b3 100644 --- a/Marlin/src/feature/tramming.cpp +++ b/Marlin/src/feature/tramming.cpp @@ -41,7 +41,7 @@ PGM_P const tramming_point_name[] PROGMEM = { REPLIST_1(_NR_TRAM_NAMES, _TRAM_NA void move_to_tramming_wait_pos() { constexpr xyz_pos_t wait_pos = ASSISTED_TRAMMING_WAIT_POSITION; if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Moving away"); - do_blocking_move_to(wait_pos, XY_PROBE_FEEDRATE_MM_S); + motion.blocking_move(wait_pos, XY_PROBE_FEEDRATE_MM_S); } #endif diff --git a/Marlin/src/gcode/bedlevel/G26.cpp b/Marlin/src/gcode/bedlevel/G26.cpp index 899498faae..dab99c300c 100644 --- a/Marlin/src/gcode/bedlevel/G26.cpp +++ b/Marlin/src/gcode/bedlevel/G26.cpp @@ -174,25 +174,25 @@ void move_to(const float rx, const float ry, const float z, const float e_delta) const xy_pos_t dest = { rx, ry }; - const bool has_xy_component = dest != current_position, // Check if X or Y is involved in the movement. + const bool has_xy_component = dest != motion.position, // Check if X or Y is involved in the movement. has_e_component = e_delta != 0.0; if (z != last_z) { last_z = z; - destination.set(current_position.x, current_position.y, z, current_position.e); + motion.destination.set(motion.position.x, motion.position.y, z, motion.position.e); const feedRate_t fr_mm_s = planner.settings.max_feedrate_mm_s[Z_AXIS] * 0.5f; // Use half of the Z_AXIS max feed rate - prepare_internal_move_to_destination(fr_mm_s); + motion.prepare_internal_move_to_destination(fr_mm_s); } // If X or Y in combination with E is involved do a 'normal' move. // If X or Y with no E is involved do a 'fast' move // Otherwise retract/recover/hop. - destination = dest; - destination.e += e_delta; + motion.destination = dest; + motion.destination.e += e_delta; const feedRate_t fr_mm_s = has_xy_component ? (has_e_component ? feedRate_t(G26_XY_FEEDRATE) : feedRate_t(G26_XY_FEEDRATE_TRAVEL)) : planner.settings.max_feedrate_mm_s[E_AXIS] * 0.666f; - prepare_internal_move_to_destination(fr_mm_s); + motion.prepare_internal_move_to_destination(fr_mm_s); } void move_to(const xyz_pos_t &where, const float de) { move_to(where.x, where.y, where.z, de); } @@ -229,8 +229,8 @@ typedef struct { // TODO: Parameterize the Z lift with a define void retract_lift_move(const xyz_pos_t &s) { - retract_filament(destination); - move_to(current_position.x, current_position.y, current_position.z + 0.5f, 0.0f); // Z lift to minimize scraping + retract_filament(motion.destination); + move_to(motion.position.x, motion.position.y, motion.position.z + 0.5f, 0.0f); // Z lift to minimize scraping move_to(s.x, s.y, s.z + 0.5f, 0.0f); // Get to the starting point with no extrusion while lifted } @@ -259,7 +259,7 @@ typedef struct { void print_line_from_here_to_there(const xyz_pos_t &s, const xyz_pos_t &e) { // Distances to the start / end of the line - xy_float_t svec = current_position - s, evec = current_position - e; + xy_float_t svec = motion.position - s, evec = motion.position - e; const float dist_start = HYPOT2(svec.x, svec.y), dist_end = HYPOT2(evec.x, evec.y), @@ -279,7 +279,7 @@ typedef struct { const float e_pos_delta = line_length * g26_e_axis_feedrate * extrusion_multiplier; - recover_filament(destination); + recover_filament(motion.destination); move_to(e, e_pos_delta); // Get to the ending point with an appropriate amount of extrusion } @@ -306,7 +306,7 @@ typedef struct { LIMIT(e.x, X_MIN_POS + 1, X_MAX_POS - 1); #endif - if (position_is_reachable(s) && position_is_reachable(e)) + if (motion.can_reach(s) && motion.can_reach(e)) print_line_from_here_to_there(s, e); } } @@ -341,10 +341,10 @@ typedef struct { // Start heating the active nozzle LCD_MESSAGE_MAX(MSG_G26_HEATING_NOZZLE); ui.quick_feedback(); - thermalManager.setTargetHotend(hotend_temp, active_extruder); + thermalManager.setTargetHotend(hotend_temp, motion.extruder); // Wait for the temperature to stabilize - if (!thermalManager.wait_for_hotend(active_extruder, true OPTARG(G26_CLICK_CAN_CANCEL, true))) + if (!thermalManager.wait_for_hotend(motion.extruder, true OPTARG(G26_CLICK_CAN_CANCEL, true))) return G26_ERR; ui.reset_status(); @@ -369,13 +369,13 @@ typedef struct { LCD_MESSAGE_MAX(MSG_G26_MANUAL_PRIME); ui.chirp(); - destination = current_position; + motion.destination = motion.position; - recover_filament(destination); // Make sure G26 doesn't think the filament is retracted(). + recover_filament(motion.destination); // Make sure G26 doesn't think the filament is retracted(). while (!ui.button_pressed()) { ui.chirp(); - destination.e += 0.25; + motion.destination.e += 0.25; #if ENABLED(PREVENT_LENGTHY_EXTRUDE) Total_Prime += 0.25; if (Total_Prime >= EXTRUDE_MAXLENGTH) { @@ -383,8 +383,8 @@ typedef struct { return G26_ERR; } #endif - prepare_internal_move_to_destination(fr_slow_e); - destination = current_position; + motion.prepare_internal_move_to_destination(fr_slow_e); + motion.destination = motion.position; planner.synchronize(); // Without this synchronize, the purge is more consistent, // but because the planner has a buffer, we won't be able // to stop as quickly. So we put up with the less smooth @@ -402,11 +402,11 @@ typedef struct { { LCD_MESSAGE_MAX(MSG_G26_FIXED_LENGTH); ui.quick_feedback(); - destination = current_position; - destination.e += prime_length; - prepare_internal_move_to_destination(fr_slow_e); - destination.e -= prime_length; - retract_filament(destination); + motion.destination = motion.position; + motion.destination.e += prime_length; + motion.prepare_internal_move_to_destination(fr_slow_e); + motion.destination.e -= prime_length; + retract_filament(motion.destination); } return G26_OK; @@ -500,7 +500,7 @@ void GcodeSuite::G26() { // Don't allow Mesh Validation without homing first, // or if the parameter parsing did not go OK, abort - if (homing_needed_error()) return; + if (motion.homing_needed_error()) return; #if HAS_TOOLCHANGE // Change the tool first, if specified @@ -616,7 +616,7 @@ void GcodeSuite::G26() { // If any preset or temperature was specified if (noztemp) { - if (!WITHIN(noztemp, 165, thermalManager.hotend_max_target(active_extruder))) { + if (!WITHIN(noztemp, 165, thermalManager.hotend_max_target(motion.extruder))) { SERIAL_ECHOLNPGM(GCODE_ERR_MSG("Specified nozzle temperature not plausible.")); return; } @@ -647,10 +647,10 @@ void GcodeSuite::G26() { return; } - // Set a position with 'X' and/or 'Y'. Default: current_position - g26.xy_pos.set(parser.seenval('X') ? RAW_X_POSITION(parser.value_linear_units()) : current_position.x, - parser.seenval('Y') ? RAW_Y_POSITION(parser.value_linear_units()) : current_position.y); - if (!position_is_reachable(g26.xy_pos)) { + // Set a position with 'X' and/or 'Y'. Default: motion.position + g26.xy_pos.set(parser.seenval('X') ? motion.raw_x(parser.value_linear_units()) : motion.position.x, + parser.seenval('Y') ? motion.raw_y(parser.value_linear_units()) : motion.position.y); + if (!motion.can_reach(g26.xy_pos)) { SERIAL_ECHOLNPGM(GCODE_ERR_MSG("Specified X,Y coordinate out of bounds.")); return; } @@ -660,7 +660,7 @@ void GcodeSuite::G26() { */ set_bed_leveling_enabled(!parser.seen_test('D')); - do_z_clearance(Z_CLEARANCE_BETWEEN_PROBES); + motion.do_z_clearance(Z_CLEARANCE_BETWEEN_PROBES); #if HAS_VOLUMETRIC_EXTRUSION bool volumetric_was_enabled = parser.volumetric_enabled; @@ -670,8 +670,7 @@ void GcodeSuite::G26() { if (g26.turn_on_heaters() != G26_OK) goto LEAVE; - current_position.e = 0.0; - sync_plan_position_e(); + motion.set_and_sync_e(0.0f); if (g26.prime_flag && g26.prime_nozzle() != G26_OK) goto LEAVE; @@ -688,10 +687,10 @@ void GcodeSuite::G26() { circle_flags.reset(); // Move nozzle to the specified height for the first layer - destination = current_position; - destination.z = g26.layer_height; - move_to(destination, 0.0); - move_to(destination, g26.ooze_amount); + motion.destination = motion.position; + motion.destination.z = g26.layer_height; + move_to(motion.destination, 0.0); + move_to(motion.destination, g26.ooze_amount); TERN_(HAS_MARLINUI_MENU, ui.capture()); @@ -719,14 +718,14 @@ void GcodeSuite::G26() { TERN_(EXTENSIBLE_UI, ExtUI::onMeshUpdate(location.pos, ExtUI::G26_START)); do { // Find the nearest confluence - location = g26.find_closest_circle_to_print(g26.continue_with_closest ? xy_pos_t(current_position) : g26.xy_pos); + location = g26.find_closest_circle_to_print(g26.continue_with_closest ? xy_pos_t(motion.position) : g26.xy_pos); if (location.valid()) { TERN_(EXTENSIBLE_UI, ExtUI::onMeshUpdate(location.pos, ExtUI::G26_POINT_START)); const xy_pos_t circle = { bedlevel.get_mesh_x(location.pos.a), bedlevel.get_mesh_y(location.pos.b) }; // If this mesh location is outside the printable radius, skip it. - if (!position_is_reachable(circle)) continue; + if (!motion.can_reach(circle)) continue; // Determine where to start and end the circle, // which is always drawn counter-clockwise. @@ -767,11 +766,11 @@ void GcodeSuite::G26() { } const ab_float_t arc_offset = circle - s; - const xy_float_t dist = current_position - s; // Distance from the start of the actual circle + const xy_float_t dist = motion.position - s; // Distance from the start of the actual circle const float dist_start = HYPOT2(dist.x, dist.y); const xyze_pos_t endpoint = { e.x, e.y, g26.layer_height, - current_position.e + (arc_length * g26_e_axis_feedrate * g26.extrusion_multiplier) + motion.position.e + (arc_length * g26_e_axis_feedrate * g26.extrusion_multiplier) }; if (dist_start > 2.0) { @@ -782,11 +781,11 @@ void GcodeSuite::G26() { s.z = g26.layer_height; move_to(s, 0.0); // Get to the starting point with no extrusion / un-Z lift - g26.recover_filament(destination); + g26.recover_filament(motion.destination); - { REMEMBER(fr, feedrate_mm_s, PLANNER_XY_FEEDRATE_MM_S * 0.1f); + { REMEMBER(fr, motion.feedrate_mm_s, PLANNER_XY_FEEDRATE_MM_S * 0.1f); plan_arc(endpoint, arc_offset, false, 0); // Draw a counter-clockwise arc - destination = current_position; + motion.destination = motion.position; } if (TERN0(HAS_MARLINUI_MENU, user_canceled())) goto LEAVE; // Check if the user wants to stop the Mesh Validation @@ -820,7 +819,7 @@ void GcodeSuite::G26() { #if IS_KINEMATIC // Check to make sure this segment is entirely on the bed, skip if not. - if (!position_is_reachable(p) || !position_is_reachable(q)) continue; + if (!motion.can_reach(p) || !motion.can_reach(q)) continue; #elif HAS_ENDSTOPS LIMIT(p.x, X_MIN_POS + 1, X_MAX_POS - 1); // Prevent hitting the endstops LIMIT(p.y, Y_MIN_POS + 1, Y_MAX_POS - 1); @@ -851,9 +850,9 @@ void GcodeSuite::G26() { LCD_MESSAGE_MIN(MSG_G26_LEAVING); TERN_(EXTENSIBLE_UI, ExtUI::onMeshUpdate(location, ExtUI::G26_FINISH)); - g26.retract_filament(destination); - destination.z = Z_CLEARANCE_BETWEEN_PROBES; - move_to(destination, 0); // Raise the nozzle + g26.retract_filament(motion.destination); + motion.destination.z = Z_CLEARANCE_BETWEEN_PROBES; + move_to(motion.destination, 0); // Raise the nozzle #if HAS_VOLUMETRIC_EXTRUSION parser.volumetric_enabled = volumetric_was_enabled; @@ -864,7 +863,7 @@ void GcodeSuite::G26() { if (!g26.keep_heaters_on) { TERN_(HAS_HEATED_BED, thermalManager.setTargetBed(0)); - thermalManager.setTargetHotend(active_extruder, 0); + thermalManager.setTargetHotend(motion.extruder, 0); } } diff --git a/Marlin/src/gcode/bedlevel/G35.cpp b/Marlin/src/gcode/bedlevel/G35.cpp index b3c56b49b3..0c9c4651e3 100644 --- a/Marlin/src/gcode/bedlevel/G35.cpp +++ b/Marlin/src/gcode/bedlevel/G35.cpp @@ -87,7 +87,7 @@ void GcodeSuite::G35() { TERN_(HAS_DUPLICATION_MODE, set_duplication_enabled(false)); // Home only Z axis when X and Y is trusted, otherwise all axes, if needed before this procedure - if (!all_axes_trusted()) process_subcommands_now(F("G28Z")); + if (!motion.all_axes_trusted()) process_subcommands_now(F("G28Z")); bool err_break = false; @@ -153,7 +153,7 @@ void GcodeSuite::G35() { move_to_tramming_wait_pos(); // After this operation the Z position needs correction - set_axis_never_homed(Z_AXIS); + motion.set_axis_never_homed(Z_AXIS); } #endif // ASSISTED_TRAMMING diff --git a/Marlin/src/gcode/bedlevel/G42.cpp b/Marlin/src/gcode/bedlevel/G42.cpp index 4b9b028419..dec0ee2b5f 100644 --- a/Marlin/src/gcode/bedlevel/G42.cpp +++ b/Marlin/src/gcode/bedlevel/G42.cpp @@ -54,16 +54,16 @@ void GcodeSuite::G42() { return; } - // Move to current_position, as modified by I, J, P parameters - destination = current_position; + // Move to motion.position, as modified by I, J, P parameters + motion.destination = motion.position; - if (hasI) destination.x = bedlevel.get_mesh_x(ix); - if (hasJ) destination.y = bedlevel.get_mesh_y(iy); + if (hasI) motion.destination.x = bedlevel.get_mesh_x(ix); + if (hasJ) motion.destination.y = bedlevel.get_mesh_y(iy); #if HAS_PROBE_XY_OFFSET if (parser.seen_test('P')) { - if (hasI) destination.x -= probe.offset_xy.x; - if (hasJ) destination.y -= probe.offset_xy.y; + if (hasI) motion.destination.x -= probe.offset_xy.x; + if (hasJ) motion.destination.y -= probe.offset_xy.y; } #endif @@ -72,9 +72,9 @@ void GcodeSuite::G42() { // SCARA kinematic has "safe" XY raw moves #if IS_SCARA - prepare_internal_fast_move_to_destination(fr_mm_s); + motion.prepare_internal_fast_move_to_destination(fr_mm_s); #else - prepare_internal_move_to_destination(fr_mm_s); + motion.prepare_internal_move_to_destination(fr_mm_s); #endif } diff --git a/Marlin/src/gcode/bedlevel/M420.cpp b/Marlin/src/gcode/bedlevel/M420.cpp index 05fa98e459..680d99fe46 100644 --- a/Marlin/src/gcode/bedlevel/M420.cpp +++ b/Marlin/src/gcode/bedlevel/M420.cpp @@ -90,7 +90,7 @@ void GcodeSuite::M420() { } #endif - xyz_pos_t oldpos = current_position; + xyz_pos_t oldpos = motion.position; // If disabling leveling do it right away // (Don't disable for just M420 or M420 V) @@ -240,8 +240,8 @@ void GcodeSuite::M420() { #endif // Report change in position - if (oldpos != current_position) - report_current_position(); + if (oldpos != motion.position) + motion.report_position(); } void GcodeSuite::M420_report(const bool forReplay/*=true*/) { diff --git a/Marlin/src/gcode/bedlevel/abl/G29.cpp b/Marlin/src/gcode/bedlevel/abl/G29.cpp index 800d51dac6..7cc821408c 100644 --- a/Marlin/src/gcode/bedlevel/abl/G29.cpp +++ b/Marlin/src/gcode/bedlevel/abl/G29.cpp @@ -84,7 +84,7 @@ */ static void pre_g29_return(const bool retry, const bool did) { if (!retry) { - TERN_(FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate(M_IDLE, false)); + TERN_(FULL_REPORT_TO_HOST_FEATURE, motion.set_and_report_grblstate(M_IDLE, false)); } #if DISABLED(G29_RETRY_AND_RECOVER) if (!retry || did) { @@ -259,7 +259,7 @@ G29_TYPE GcodeSuite::G29() { process_subcommands_now(TERN(CAN_SET_LEVELING_AFTER_G28, F("G28L0"), FPSTR(G28_STR))); // Don't allow auto-leveling without homing first - if (homing_needed_error()) G29_RETURN(false, false); + if (motion.homing_needed_error()) G29_RETURN(false, false); // 3-point leveling gets points from the probe class #if ENABLED(AUTO_BED_LEVELING_3POINT) @@ -273,7 +273,7 @@ G29_TYPE GcodeSuite::G29() { #endif // Set and report "probing" state to host - TERN_(FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate(M_PROBE, false)); + TERN_(FULL_REPORT_TO_HOST_FEATURE, motion.set_and_report_grblstate(M_PROBE, false)); #if DISABLED(PROBE_MANUALLY) // Potentially disable Fixed-Time Motion for probing @@ -307,14 +307,14 @@ G29_TYPE GcodeSuite::G29() { G29_RETURN(false, false); } - const float rz = parser.seenval('Z') ? RAW_Z_POSITION(parser.value_linear_units()) : current_position.z; + const float rz = parser.seenval('Z') ? motion.raw_z(parser.value_linear_units()) : motion.position.z; if (!WITHIN(rz, -10, 10)) { SERIAL_ERROR_MSG("Bad Z value"); G29_RETURN(false, false); } - const float rx = RAW_X_POSITION(parser.linearval('X', NAN)), - ry = RAW_Y_POSITION(parser.linearval('Y', NAN)); + const float rx = motion.raw_x(parser.linearval('X', NAN)), + ry = motion.raw_y(parser.linearval('Y', NAN)); int8_t i = parser.byteval('I', -1), j = parser.byteval('J', -1); #pragma GCC diagnostic push @@ -337,7 +337,7 @@ G29_TYPE GcodeSuite::G29() { TERN_(EXTENSIBLE_UI, ExtUI::onMeshUpdate(i, j, rz)); if (abl.reenable) { set_bed_leveling_enabled(true); - report_current_position(); + motion.report_position(); } } G29_RETURN(false, false); @@ -448,7 +448,7 @@ G29_TYPE GcodeSuite::G29() { TERN_(EXTENSIBLE_UI, ExtUI::onLevelingStart()); if (!faux) { - remember_feedrate_scaling_off(); + motion.remember_feedrate_scaling_off(); #if ENABLED(PREHEAT_BEFORE_LEVELING) #if ENABLED(SOVOL_SV06_RTS) @@ -465,7 +465,7 @@ G29_TYPE GcodeSuite::G29() { // Position bed horizontally and Z probe vertically. #if HAS_SAFE_BED_LEVELING - xyze_pos_t safe_position = current_position; + xyze_pos_t safe_position = motion.position; #ifdef SAFE_BED_LEVELING_START_X safe_position.x = SAFE_BED_LEVELING_START_X; #endif @@ -494,7 +494,7 @@ G29_TYPE GcodeSuite::G29() { safe_position.w = SAFE_BED_LEVELING_START_W; #endif - do_blocking_move_to(safe_position); + motion.blocking_move(safe_position); #endif // HAS_SAFE_BED_LEVELING // Disable auto bed leveling during G29. @@ -503,7 +503,7 @@ G29_TYPE GcodeSuite::G29() { // Deploy certain probes before starting probing #if ENABLED(BLTOUCH) || ALL(HAS_Z_SERVO_PROBE, Z_SERVO_INTERMEDIATE_STOW) - do_z_clearance(Z_CLEARANCE_DEPLOY_PROBE); + motion.do_z_clearance(Z_CLEARANCE_DEPLOY_PROBE); #elif HAS_BED_PROBE if (probe.deploy()) { // (returns true on deploy failure) set_bed_leveling_enabled(abl.reenable); @@ -534,7 +534,7 @@ G29_TYPE GcodeSuite::G29() { // Abort current G29 procedure, go back to idle state if (seenA && g29_in_progress) { SERIAL_ECHOLNPGM("Manual G29 aborted"); - SET_SOFT_ENDSTOP_LOOSE(false); + motion.set_soft_endstop_loose(false); set_bed_leveling_enabled(abl.reenable); g29_in_progress = false; TERN_(LCD_BED_LEVELING, ui.wait_for_move = false); @@ -554,9 +554,9 @@ G29_TYPE GcodeSuite::G29() { if (abl.abl_probe_index == 0) { // For the initial G29 S2 save software endstop state - SET_SOFT_ENDSTOP_LOOSE(true); + motion.set_soft_endstop_loose(true); // Move close to the bed before the first point - do_blocking_move_to_z(0); + motion.blocking_move_z(0); } else { @@ -566,7 +566,7 @@ G29_TYPE GcodeSuite::G29() { // For G29 after adjusting Z. // Save the previous Z before going to the next point - abl.measured_z = current_position.z; + abl.measured_z = motion.position.z; #if ENABLED(AUTO_BED_LEVELING_LINEAR) @@ -615,7 +615,7 @@ G29_TYPE GcodeSuite::G29() { TERN_(AUTO_BED_LEVELING_LINEAR, abl.indexIntoAB[abl.meshCount.x][abl.meshCount.y] = abl.abl_probe_index); // Keep looping till a reachable point is found - if (position_is_reachable(abl.probePos)) break; + if (motion.can_reach(abl.probePos)) break; ++abl.abl_probe_index; } @@ -624,14 +624,14 @@ G29_TYPE GcodeSuite::G29() { _manual_goto_xy(abl.probePos); // Can be used here too! // Disable software endstops to allow manual adjustment // If G29 is not completed, they will not be re-enabled - SET_SOFT_ENDSTOP_LOOSE(true); + motion.set_soft_endstop_loose(true); G29_RETURN(false, true); } else { // Leveling done! Fall through to G29 finishing code below SERIAL_ECHOLNPGM("Grid probing done."); // Re-enable software endstops, if needed - SET_SOFT_ENDSTOP_LOOSE(false); + motion.set_soft_endstop_loose(false); } #elif ENABLED(AUTO_BED_LEVELING_3POINT) @@ -642,7 +642,7 @@ G29_TYPE GcodeSuite::G29() { _manual_goto_xy(abl.probePos); // Disable software endstops to allow manual adjustment // If G29 is not completed, they will not be re-enabled - SET_SOFT_ENDSTOP_LOOSE(true); + motion.set_soft_endstop_loose(true); G29_RETURN(false, true); } else { @@ -650,7 +650,7 @@ G29_TYPE GcodeSuite::G29() { SERIAL_ECHOLNPGM("3-point probing done."); // Re-enable software endstops, if needed - SET_SOFT_ENDSTOP_LOOSE(false); + motion.set_soft_endstop_loose(false); if (!abl.dryrun) { vector_3 planeNormal = vector_3::cross(points[0] - points[1], points[2] - points[1]).get_normal(); @@ -731,9 +731,9 @@ G29_TYPE GcodeSuite::G29() { // Put a G1 move into the buffer // TODO: Instead of G1, we can just add the move directly to the planner... // { - // destination = current_position; destination = abl.probePos; - // REMEMBER(fr, feedrate_mm_s, XY_PROBE_FEEDRATE_MM_S); - // prepare_line_to_destination(); + // motion.destination = motion.position; motion.destination = abl.probePos; + // REMEMBER(fr, motion.feedrate_mm_s, XY_PROBE_FEEDRATE_MM_S); + // motion.prepare_line_to_destination(); // } sprintf_P(tmp_1, PSTR("G1X%d.%d Y%d.%d F%d"), int(abl.probePos.x), int(abl.probePos.x * 10) % 10, @@ -764,7 +764,7 @@ G29_TYPE GcodeSuite::G29() { //if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM_P(axis == Y_AXIS ? PSTR("Y=") : PSTR("X=", pos); safe_delay(4); - abl.measured_z = current_position.z - bdl.read(); + abl.measured_z = motion.position.z - bdl.read(); if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPGM("x_cur ", planner.get_axis_position_mm(X_AXIS), " z ", abl.measured_z); #else // !BD_SENSOR_PROBE_NO_STOP @@ -857,7 +857,7 @@ G29_TYPE GcodeSuite::G29() { * return or loop before this point. */ - if (DEBUGGING(LEVELING)) DEBUG_POS("> probing complete", current_position); + if (DEBUGGING(LEVELING)) DEBUG_POS("> probing complete", motion.position); #if ENABLED(PROBE_MANUALLY) g29_in_progress = false; @@ -969,24 +969,24 @@ G29_TYPE GcodeSuite::G29() { // Correct the current XYZ position based on the tilted plane. // - if (DEBUGGING(LEVELING)) DEBUG_POS("G29 uncorrected XYZ", current_position); + if (DEBUGGING(LEVELING)) DEBUG_POS("G29 uncorrected XYZ", motion.position); - xyze_pos_t converted = current_position; + xyze_pos_t converted = motion.position; planner.force_unapply_leveling(converted); // use conversion machinery // Use the last measured distance to the bed, if possible - if ( NEAR(current_position.x, abl.probePos.x - probe.offset_xy.x) - && NEAR(current_position.y, abl.probePos.y - probe.offset_xy.y) + if ( NEAR(motion.position.x, abl.probePos.x - probe.offset_xy.x) + && NEAR(motion.position.y, abl.probePos.y - probe.offset_xy.y) ) { - const float simple_z = current_position.z - abl.measured_z; + const float simple_z = motion.position.z - abl.measured_z; if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Probed Z", simple_z, " Matrix Z", converted.z, " Discrepancy ", simple_z - converted.z); converted.z = simple_z; } - // The rotated XY and corrected Z are now current_position - current_position = converted; + // The rotated XY and corrected Z are now motion.position + motion.position = converted; - if (DEBUGGING(LEVELING)) DEBUG_POS("G29 corrected XYZ", current_position); + if (DEBUGGING(LEVELING)) DEBUG_POS("G29 corrected XYZ", motion.position); abl.reenable = true; } @@ -994,7 +994,7 @@ G29_TYPE GcodeSuite::G29() { // Auto Bed Leveling is complete! Enable if possible. if (abl.reenable) { planner.leveling_active = true; - sync_plan_position(); + motion.sync_plan_position(); } #elif ENABLED(AUTO_BED_LEVELING_BILINEAR) @@ -1007,7 +1007,7 @@ G29_TYPE GcodeSuite::G29() { } // !isnan(abl.measured_z) // Restore state after probing - if (!faux) restore_feedrate_and_scaling(); + if (!faux) motion.restore_feedrate_and_scaling(); TERN_(HAS_BED_PROBE, probe.move_z_after_probing()); @@ -1021,7 +1021,7 @@ G29_TYPE GcodeSuite::G29() { probe.use_probing_tool(false); - report_current_position(); + motion.report_position(); G29_RETURN(isnan(abl.measured_z), true); } diff --git a/Marlin/src/gcode/bedlevel/mbl/G29.cpp b/Marlin/src/gcode/bedlevel/mbl/G29.cpp index a08ecc327d..b8087f9ec2 100644 --- a/Marlin/src/gcode/bedlevel/mbl/G29.cpp +++ b/Marlin/src/gcode/bedlevel/mbl/G29.cpp @@ -89,7 +89,7 @@ void GcodeSuite::G29() { return; } - TERN_(FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate(M_PROBE)); + TERN_(FULL_REPORT_TO_HOST_FEATURE, motion.set_and_report_grblstate(M_PROBE)); int8_t ix, iy; ix = iy = 0; @@ -114,7 +114,7 @@ void GcodeSuite::G29() { // Position bed horizontally and Z probe vertically. #if HAS_SAFE_BED_LEVELING - xyze_pos_t safe_position = current_position; + xyze_pos_t safe_position = motion.position; #ifdef SAFE_BED_LEVELING_START_X safe_position.x = SAFE_BED_LEVELING_START_X; #endif @@ -143,7 +143,7 @@ void GcodeSuite::G29() { safe_position.w = SAFE_BED_LEVELING_START_W; #endif - do_blocking_move_to(safe_position); + motion.blocking_move(safe_position); #endif // HAS_SAFE_BED_LEVELING queue.inject(F("G29S2")); @@ -162,7 +162,7 @@ void GcodeSuite::G29() { // For each G29 S2... if (mbl_probe_index == 0) { // Move close to the bed before the first point - do_blocking_move_to_z( + motion.blocking_move_z( #ifdef MANUAL_PROBE_START_Z MANUAL_PROBE_START_Z #else @@ -172,28 +172,28 @@ void GcodeSuite::G29() { } else { // Save Z for the previous mesh position - bedlevel.set_zigzag_z(mbl_probe_index - 1, current_position.z); - TERN_(EXTENSIBLE_UI, ExtUI::onMeshUpdate(ix, iy, current_position.z)); - SET_SOFT_ENDSTOP_LOOSE(false); + bedlevel.set_zigzag_z(mbl_probe_index - 1, motion.position.z); + TERN_(EXTENSIBLE_UI, ExtUI::onMeshUpdate(ix, iy, motion.position.z)); + motion.set_soft_endstop_loose(false); } // If there's another point to sample, move there with optional lift. if (mbl_probe_index < GRID_MAX_POINTS) { // Disable software endstops to allow manual adjustment // If G29 is left hanging without completion they won't be re-enabled! - SET_SOFT_ENDSTOP_LOOSE(true); + motion.set_soft_endstop_loose(true); bedlevel.zigzag(mbl_probe_index++, ix, iy); _manual_goto_xy({ bedlevel.index_to_xpos[ix], bedlevel.index_to_ypos[iy] }); } else { // Move to the after probing position - current_position.z = ( + motion.position.z = ( #ifdef Z_AFTER_PROBING Z_AFTER_PROBING #else Z_CLEARANCE_BETWEEN_MANUAL_PROBES #endif ); - line_to_current_position(); + motion.goto_current_position(); planner.synchronize(); // After recording the last point, activate home and activate @@ -206,8 +206,8 @@ void GcodeSuite::G29() { set_bed_leveling_enabled(true); #if ENABLED(MESH_G28_REST_ORIGIN) - current_position.z = 0; - line_to_current_position(homing_feedrate(Z_AXIS)); + motion.position.z = 0; + motion.goto_current_position(motion.homing_feedrate(Z_AXIS)); planner.synchronize(); #endif @@ -263,9 +263,9 @@ void GcodeSuite::G29() { if (mbl_probe_index > 0) TERN_(HAS_STATUS_MESSAGE, ui.status_printf(0, F(S_FMT " %i/%i"), GET_TEXT(MSG_PROBING_POINT), _MIN(mbl_probe_index, GRID_MAX_POINTS), int(GRID_MAX_POINTS))); } - report_current_position(); + motion.report_position(); - TERN_(FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate(M_IDLE)); + TERN_(FULL_REPORT_TO_HOST_FEATURE, motion.set_and_report_grblstate(M_IDLE)); } #endif // MESH_BED_LEVELING diff --git a/Marlin/src/gcode/bedlevel/mbl/M421.cpp b/Marlin/src/gcode/bedlevel/mbl/M421.cpp index e23683d55f..aa5bf3a391 100644 --- a/Marlin/src/gcode/bedlevel/mbl/M421.cpp +++ b/Marlin/src/gcode/bedlevel/mbl/M421.cpp @@ -43,9 +43,9 @@ */ void GcodeSuite::M421() { const bool hasX = parser.seen('X'), hasI = parser.seen('I'); - const int8_t ix = hasI ? parser.value_int() : hasX ? bedlevel.probe_index_x(RAW_X_POSITION(parser.value_linear_units())) : -1; + const int8_t ix = hasI ? parser.value_int() : hasX ? bedlevel.probe_index_x(motion.raw_x(parser.value_linear_units())) : -1; const bool hasY = parser.seen('Y'), hasJ = parser.seen('J'); - const int8_t iy = hasJ ? parser.value_int() : hasY ? bedlevel.probe_index_y(RAW_Y_POSITION(parser.value_linear_units())) : -1; + const int8_t iy = hasJ ? parser.value_int() : hasY ? bedlevel.probe_index_y(motion.raw_y(parser.value_linear_units())) : -1; const bool hasZ = parser.seen('Z'), hasQ = !hasZ && parser.seen('Q'); if (int(hasI && hasJ) + int(hasX && hasY) != 1 || !(hasZ || hasQ)) diff --git a/Marlin/src/gcode/bedlevel/ubl/G29.cpp b/Marlin/src/gcode/bedlevel/ubl/G29.cpp index 90deab3d2e..aaac7f145b 100644 --- a/Marlin/src/gcode/bedlevel/ubl/G29.cpp +++ b/Marlin/src/gcode/bedlevel/ubl/G29.cpp @@ -37,11 +37,11 @@ void GcodeSuite::G29() { - TERN_(FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate(M_PROBE)); + TERN_(FULL_REPORT_TO_HOST_FEATURE, motion.set_and_report_grblstate(M_PROBE)); bedlevel.G29(); - TERN_(FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate(M_IDLE)); + TERN_(FULL_REPORT_TO_HOST_FEATURE, motion.set_and_report_grblstate(M_IDLE)); } #endif // AUTO_BED_LEVELING_UBL diff --git a/Marlin/src/gcode/bedlevel/ubl/M421.cpp b/Marlin/src/gcode/bedlevel/ubl/M421.cpp index 99ba3ce19b..fab13e4d84 100644 --- a/Marlin/src/gcode/bedlevel/ubl/M421.cpp +++ b/Marlin/src/gcode/bedlevel/ubl/M421.cpp @@ -54,7 +54,7 @@ void GcodeSuite::M421() { hasZ = parser.seen('Z'), hasQ = !hasZ && parser.seen('Q'); - if (hasC) ij = bedlevel.find_closest_mesh_point_of_type(CLOSEST, current_position); + if (hasC) ij = bedlevel.find_closest_mesh_point_of_type(CLOSEST, motion.position); // Test for bad parameter combinations if (int(hasC) + int(hasI && hasJ) != 1 || !(hasZ || hasQ || hasN)) diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index fe0a3a792e..97aa17c3f0 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -78,13 +78,13 @@ static void quick_home_xy() { // Pretend the current position is 0,0 - current_position.set(0.0, 0.0); - sync_plan_position(); + motion.position.set(0.0, 0.0); + motion.sync_plan_position(); - const int x_axis_home_dir = TOOL_X_HOME_DIR(active_extruder); + const int x_axis_home_dir = TOOL_X_HOME_DIR(motion.extruder); // Use a higher diagonal feedrate so axes move at homing speed - const float minfr = _MIN(homing_feedrate(X_AXIS), homing_feedrate(Y_AXIS)), + const float minfr = _MIN(motion.homing_feedrate(X_AXIS), motion.homing_feedrate(Y_AXIS)), fr_mm_s = HYPOT(minfr, minfr); // Set homing current to X and Y axis if defined @@ -105,11 +105,11 @@ }; #endif - do_blocking_move_to_xy(1.5 * max_length(X_AXIS) * x_axis_home_dir, 1.5 * max_length(Y_AXIS) * Y_HOME_DIR, fr_mm_s); + motion.blocking_move_xy(1.5 * max_length(X_AXIS) * x_axis_home_dir, 1.5 * max_length(Y_AXIS) * Y_HOME_DIR, fr_mm_s); endstops.validate_homing_move(); - current_position.set(0.0, 0.0); + motion.position.set(0.0, 0.0); TERN_(X_HAS_HOME_CURRENT, restore_homing_current(X_AXIS)); #if Y_HAS_HOME_CURRENT && NONE(CORE_IS_XY, MARKFORGED_XY, MARKFORGED_YX) @@ -132,33 +132,33 @@ DEBUG_SECTION(log_G28, "home_z_safely", DEBUGGING(LEVELING)); // Disallow Z homing if X or Y homing is needed - if (homing_needed_error(_BV(X_AXIS) | _BV(Y_AXIS))) return; + if (motion.homing_needed_error(_BV(X_AXIS) | _BV(Y_AXIS))) return; // Potentially disable Fixed-Time Motion for homing TERN_(FT_MOTION, FTM_DISABLE_IN_SCOPE()); - sync_plan_position(); + motion.sync_plan_position(); /** * Move the Z probe (or just the nozzle) to the safe homing point * (Z is already at the right height) */ constexpr xy_float_t safe_homing_xy = { Z_SAFE_HOMING_X_POINT, Z_SAFE_HOMING_Y_POINT }; - destination.set(safe_homing_xy, current_position.z); + motion.destination.set(safe_homing_xy, motion.position.z); - TERN_(HOMING_Z_WITH_PROBE, destination -= probe.offset_xy); + TERN_(HOMING_Z_WITH_PROBE, motion.destination -= probe.offset_xy); - if (position_is_reachable(destination)) { + if (motion.can_reach(motion.destination)) { - if (DEBUGGING(LEVELING)) DEBUG_POS("home_z_safely", destination); + if (DEBUGGING(LEVELING)) DEBUG_POS("home_z_safely", motion.destination); // Free the active extruder for movement TERN_(DUAL_X_CARRIAGE, idex_set_parked(false)); TERN_(SENSORLESS_HOMING, safe_delay(500)); // Short delay needed to settle - do_blocking_move_to_xy(destination); - homeaxis(Z_AXIS); + motion.blocking_move_xy(motion.destination); + motion.homeaxis(Z_AXIS); } else { LCD_MESSAGE(MSG_ZPROBE_OUT); @@ -227,10 +227,10 @@ void GcodeSuite::G28() { #if ENABLED(MARLIN_DEV_MODE) if (parser.seen_test('S')) { - LOOP_NUM_AXES(a) set_axis_is_at_home((AxisEnum)a); - sync_plan_position(); + LOOP_NUM_AXES(a) motion.set_axis_is_at_home((AxisEnum)a); + motion.sync_plan_position(); SERIAL_ECHOLNPGM("Simulated Homing"); - report_current_position(); + motion.report_position(); return; } #endif @@ -243,14 +243,14 @@ void GcodeSuite::G28() { #endif // Home (O)nly if position is unknown - if (!axes_should_home() && parser.seen_test('O')) { + if (!motion.axes_should_home() && parser.seen_test('O')) { if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("> homing not needed, skip"); return; } #if ENABLED(FULL_REPORT_TO_HOST_FEATURE) - const M_StateEnum old_grblstate = M_State_grbl; - set_and_report_grblstate(M_HOMING); + const M_StateEnum old_grblstate = motion.M_State_grbl; + motion.set_and_report_grblstate(M_HOMING); #endif TERN_(DWIN_CREALITY_LCD, dwinHomingStart()); @@ -268,7 +268,7 @@ void GcodeSuite::G28() { DualXMode IDEX_saved_mode = dual_x_carriage_mode; #endif - SET_SOFT_ENDSTOP_LOOSE(false); // Reset a leftover 'loose' motion state + motion.set_soft_endstop_loose(false); // Reset a leftover 'loose' motion state // Disable the leveling matrix before homing #if CAN_SET_LEVELING_AFTER_G28 @@ -294,7 +294,7 @@ void GcodeSuite::G28() { // Always home with tool 0 active #if HAS_MULTI_HOTEND #if DISABLED(DELTA) || ENABLED(DELTA_HOME_TO_SAFE_ZONE) - const uint8_t old_tool_index = active_extruder; + const uint8_t old_tool_index = motion.extruder; #endif // PARKING_EXTRUDER homing requires different handling of movement / solenoid activation, depending on the side of homing #if ENABLED(PARKING_EXTRUDER) @@ -306,7 +306,7 @@ void GcodeSuite::G28() { TERN_(HAS_DUPLICATION_MODE, set_duplication_enabled(false)); - remember_feedrate_scaling_off(); + motion.remember_feedrate_scaling_off(); endstops.enable(true); // Enable endstops for next homing move @@ -330,7 +330,7 @@ void GcodeSuite::G28() { #else // !DELTA && !AXEL_TPARA - #define _UNSAFE(A) TERN0(Z_SAFE_HOMING, homeZZ && axis_should_home(_AXIS(A))) + #define _UNSAFE(A) TERN0(Z_SAFE_HOMING, homeZZ && motion.axis_should_home(_AXIS(A))) const bool homeZZ = TERN0(HAS_Z_AXIS, parser.seen_test('Z')), NUM_AXIS_LIST_( // Other axes should be homed before Z safe-homing @@ -367,7 +367,7 @@ void GcodeSuite::G28() { // Z may home first, e.g., when homing away from the bed. // This is also permitted when homing with a Z endstop. - if (TERN0(HOME_Z_FIRST, doZ)) homeaxis(Z_AXIS); + if (TERN0(HOME_Z_FIRST, doZ)) motion.homeaxis(Z_AXIS); // 'R' to specify a specific raise. 'R0' indicates no raise, e.g., for recovery.resume // When 'R0' is used, there should already be adequate clearance, e.g., from homing Z to max. @@ -386,15 +386,15 @@ void GcodeSuite::G28() { bool with_probe = ENABLED(HOMING_Z_WITH_PROBE); // Raise above the current Z (which should be synced in the planner) // The "height" for Z is a coordinate. But if Z is not trusted/homed make it relative. - if (seenR || !(z_min_trusted || axis_should_home(Z_AXIS))) { - z_homing_height += current_position.z; + if (seenR || !(motion.z_min_trusted || motion.axis_should_home(Z_AXIS))) { + z_homing_height += motion.position.z; with_probe = false; } if (may_skate) { // Apply Z clearance before doing any lateral motion if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Raise Z before homing:"); - do_z_clearance(z_homing_height, with_probe); + motion.do_z_clearance(z_homing_height, with_probe); } } @@ -409,7 +409,7 @@ void GcodeSuite::G28() { #if HAS_Y_AXIS // Home Y (before X) if (ENABLED(HOME_Y_BEFORE_X) && (doY || TERN0(CODEPENDENT_XY_HOMING, doX))) - homeaxis(Y_AXIS); + motion.homeaxis(Y_AXIS); #endif // Home X @@ -419,22 +419,22 @@ void GcodeSuite::G28() { #if ENABLED(DUAL_X_CARRIAGE) // Always home the 2nd (right) extruder first - active_extruder = 1; - homeaxis(X_AXIS); + motion.extruder = 1; + motion.homeaxis(X_AXIS); // Remember this extruder's position for later tool change - inactive_extruder_x = current_position.x; + inactive_extruder_x = motion.position.x; // Home the 1st (left) extruder - active_extruder = 0; - homeaxis(X_AXIS); + motion.extruder = 0; + motion.homeaxis(X_AXIS); // Consider the active extruder to be in its "parked" position idex_set_parked(); #else - homeaxis(X_AXIS); + motion.homeaxis(X_AXIS); #endif } @@ -442,17 +442,17 @@ void GcodeSuite::G28() { #if ALL(FOAMCUTTER_XYUV, HAS_I_AXIS) // Home I (after X) - if (doI) homeaxis(I_AXIS); + if (doI) motion.homeaxis(I_AXIS); #endif #if HAS_Y_AXIS // Home Y (after X) - if (DISABLED(HOME_Y_BEFORE_X) && doY) homeaxis(Y_AXIS); + if (DISABLED(HOME_Y_BEFORE_X) && doY) motion.homeaxis(Y_AXIS); #endif #if ALL(FOAMCUTTER_XYUV, HAS_J_AXIS) // Home J (after Y) - if (doJ) homeaxis(J_AXIS); + if (doJ) motion.homeaxis(J_AXIS); #endif TERN_(IMPROVE_HOMING_RELIABILITY, end_slow_homing(saved_motion_state)); @@ -460,7 +460,7 @@ void GcodeSuite::G28() { #if ENABLED(FOAMCUTTER_XYUV) // Skip homing of unused Z axis for foamcutters - if (doZ) set_axis_is_at_home(Z_AXIS); + if (doZ) motion.set_axis_is_at_home(Z_AXIS); #elif HAS_Z_AXIS @@ -478,9 +478,9 @@ void GcodeSuite::G28() { if (!parser.seen_test('H')) home_z_safely(); else - homeaxis(Z_AXIS); + motion.homeaxis(Z_AXIS); #else - homeaxis(Z_AXIS); + motion.homeaxis(Z_AXIS); #endif #if ANY(Z_HOME_TO_MIN, ALLOW_Z_AFTER_HOMING) @@ -490,17 +490,17 @@ void GcodeSuite::G28() { #endif SECONDARY_AXIS_CODE( - if (doI) homeaxis(I_AXIS), - if (doJ) homeaxis(J_AXIS), - if (doK) homeaxis(K_AXIS), - if (doU) homeaxis(U_AXIS), - if (doV) homeaxis(V_AXIS), - if (doW) homeaxis(W_AXIS) + if (doI) motion.homeaxis(I_AXIS), + if (doJ) motion.homeaxis(J_AXIS), + if (doK) motion.homeaxis(K_AXIS), + if (doU) motion.homeaxis(U_AXIS), + if (doV) motion.homeaxis(V_AXIS), + if (doW) motion.homeaxis(W_AXIS) ); #endif // HAS_Z_AXIS - sync_plan_position(); + motion.sync_plan_position(); #endif @@ -517,15 +517,15 @@ void GcodeSuite::G28() { TERN_(IMPROVE_HOMING_RELIABILITY, saved_motion_state = begin_slow_homing()); // Always home the 2nd (right) extruder first - active_extruder = 1; - homeaxis(X_AXIS); + motion.extruder = 1; + motion.homeaxis(X_AXIS); // Remember this extruder's position for later tool change - inactive_extruder_x = current_position.x; + inactive_extruder_x = motion.position.x; // Home the 1st (left) extruder - active_extruder = 0; - homeaxis(X_AXIS); + motion.extruder = 0; + motion.homeaxis(X_AXIS); // Consider the active extruder to be parked idex_set_parked(); @@ -544,13 +544,13 @@ void GcodeSuite::G28() { TERN_(SPI_ENDSTOPS, endstops.clear_endstop_state()); // Move to a height where we can use the full xy-area - TERN_(DELTA_HOME_TO_SAFE_ZONE, do_blocking_move_to_z(delta_clip_start_height)); + TERN_(DELTA_HOME_TO_SAFE_ZONE, motion.blocking_move_z(delta_clip_start_height)); #if HAS_Z_AXIS // Move to the configured Z only if Z was homed to MIN, because machines that // home to MAX historically expect 'G28 Z' to be safe to use at the end of a // print, and do_move_after_z_homing is not very nuanced. - if (finalRaiseZ) do_move_after_z_homing(); + if (finalRaiseZ) motion.do_move_after_z_homing(); #endif TERN_(CAN_SET_LEVELING_AFTER_G28, if (leveling_restore_state) set_bed_leveling_enabled()); @@ -561,11 +561,11 @@ void GcodeSuite::G28() { #endif #ifdef XY_AFTER_HOMING - if (!axes_should_home(_BV(X_AXIS) | _BV(Y_AXIS))) - do_blocking_move_to(xy_pos_t(XY_AFTER_HOMING)); + if (!motion.axes_should_home(_BV(X_AXIS) | _BV(Y_AXIS))) + motion.blocking_move(xy_pos_t(XY_AFTER_HOMING)); #endif - restore_feedrate_and_scaling(); + motion.restore_feedrate_and_scaling(); if (ENABLED(NANODLP_Z_SYNC) && (ENABLED(NANODLP_ALL_AXIS) || TERN0(HAS_Z_AXIS, doZ))) SERIAL_ECHOLNPGM(STR_Z_MOVE_COMP); @@ -578,9 +578,9 @@ void GcodeSuite::G28() { TERN_(DWIN_CREALITY_LCD, dwinHomingDone()); TERN_(EXTENSIBLE_UI, ExtUI::onHomingDone()); - report_current_position(); + motion.report_position(); - TERN_(FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate(old_grblstate)); + TERN_(FULL_REPORT_TO_HOST_FEATURE, motion.set_and_report_grblstate(old_grblstate)); #ifdef EVENT_GCODE_AFTER_HOMING gcode.process_subcommands_now(F(EVENT_GCODE_AFTER_HOMING)); diff --git a/Marlin/src/gcode/calibrate/G33.cpp b/Marlin/src/gcode/calibrate/G33.cpp index 0a8dd459ca..f3ad5cebea 100644 --- a/Marlin/src/gcode/calibrate/G33.cpp +++ b/Marlin/src/gcode/calibrate/G33.cpp @@ -73,7 +73,7 @@ void ac_setup(const bool reset_bed) { TERN_(HAS_BED_PROBE, probe.use_probing_tool()); planner.synchronize(); - remember_feedrate_scaling_off(); + motion.remember_feedrate_scaling_off(); #if HAS_LEVELING if (reset_bed) reset_bed_level(); // After full calibration bed-level data is no longer valid @@ -81,9 +81,9 @@ void ac_setup(const bool reset_bed) { } void ac_cleanup() { - TERN_(DELTA_HOME_TO_SAFE_ZONE, do_blocking_move_to_z(delta_clip_start_height)); + TERN_(DELTA_HOME_TO_SAFE_ZONE, motion.blocking_move_z(delta_clip_start_height)); TERN_(HAS_BED_PROBE, probe.stow()); - restore_feedrate_and_scaling(); + motion.restore_feedrate_and_scaling(); TERN_(HAS_BED_PROBE, probe.use_probing_tool(false)); } @@ -247,7 +247,7 @@ static bool probe_calibration_points(float z_pt[NPP + 1], const int8_t probe_poi LOOP_CAL_RAD(rad) z_pt[rad] /= _7P_STEP / steps; - do_blocking_move_to_xy(0.0f, 0.0f); + motion.blocking_move_xy(0.0f, 0.0f); } } return true; @@ -268,7 +268,7 @@ static void reverse_kinematics_probe_points(float z_pt[NPP + 1], abc_float_t mm_ r = (rad == CEN ? 0.0f : dcr); pos.set(cos(a) * r, sin(a) * r, z_pt[rad]); inverse_kinematics(pos); - mm_at_pt_axis[rad] = delta; + mm_at_pt_axis[rad] = motion.delta; } } @@ -387,7 +387,7 @@ static float auto_tune_a(const float dcr) { */ void GcodeSuite::G33() { - TERN_(FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate(M_PROBE)); + TERN_(FULL_REPORT_TO_HOST_FEATURE, motion.set_and_report_grblstate(M_PROBE)); const int8_t probe_points = parser.intval('P', DELTA_CALIBRATION_DEFAULT_POINTS); if (!WITHIN(probe_points, 0, 10)) { @@ -677,7 +677,7 @@ void GcodeSuite::G33() { ac_cleanup(); - TERN_(FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate(M_IDLE)); + TERN_(FULL_REPORT_TO_HOST_FEATURE, motion.set_and_report_grblstate(M_IDLE)); #if HAS_DELTA_SENSORLESS_PROBING probe.test_sensitivity = { true, true, true }; #endif diff --git a/Marlin/src/gcode/calibrate/G34.cpp b/Marlin/src/gcode/calibrate/G34.cpp index 504dcd1c6f..a8d5eef9d6 100644 --- a/Marlin/src/gcode/calibrate/G34.cpp +++ b/Marlin/src/gcode/calibrate/G34.cpp @@ -61,11 +61,11 @@ void GcodeSuite::G34() { // Home before the alignment procedure - home_if_needed(); + motion.home_if_needed(); TERN_(HAS_LEVELING, TEMPORARY_BED_LEVELING_STATE(false)); - SET_SOFT_ENDSTOP_LOOSE(true); + motion.set_soft_endstop_loose(true); TemporaryGlobalEndstopsState unlock_z(false); #ifdef GANTRY_CALIBRATION_COMMANDS_PRE @@ -77,7 +77,7 @@ void GcodeSuite::G34() { // Move XY to safe position if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Parking XY"); const xy_pos_t safe_pos = GANTRY_CALIBRATION_SAFE_POSITION; - do_blocking_move_to_xy(safe_pos, MMM_TO_MMS(GANTRY_CALIBRATION_XY_PARK_FEEDRATE)); + motion.blocking_move_xy(safe_pos, MMM_TO_MMS(GANTRY_CALIBRATION_XY_PARK_FEEDRATE)); #endif const float move_distance = parser.intval('Z', GANTRY_CALIBRATION_EXTRA_HEIGHT), @@ -86,7 +86,7 @@ void GcodeSuite::G34() { // Move Z to pounce position if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Setting Z Pounce"); - do_blocking_move_to_z(zpounce, homing_feedrate(Z_AXIS)); + motion.blocking_move_z(zpounce, motion.homing_feedrate(Z_AXIS)); // Store current motor settings, then apply reduced value @@ -133,7 +133,7 @@ void GcodeSuite::G34() { // Do Final Z move to adjust if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Final Z Move"); - do_blocking_move_to_z(zgrind, MMM_TO_MMS(GANTRY_CALIBRATION_FEEDRATE)); + motion.blocking_move_z(zgrind, MMM_TO_MMS(GANTRY_CALIBRATION_FEEDRATE)); #if _REDUCE_CURRENT // Reset current to original values @@ -157,14 +157,14 @@ void GcodeSuite::G34() { // Back off end plate, back to normal motion range if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Z Backoff"); - do_blocking_move_to_z(zpounce, MMM_TO_MMS(GANTRY_CALIBRATION_FEEDRATE)); + motion.blocking_move_z(zpounce, MMM_TO_MMS(GANTRY_CALIBRATION_FEEDRATE)); #ifdef GANTRY_CALIBRATION_COMMANDS_POST if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Running Post Commands"); process_subcommands_now(F(GANTRY_CALIBRATION_COMMANDS_POST)); #endif - SET_SOFT_ENDSTOP_LOOSE(false); + motion.set_soft_endstop_loose(false); } #endif // MECHANICAL_GANTRY_CALIBRATION diff --git a/Marlin/src/gcode/calibrate/G34_M422.cpp b/Marlin/src/gcode/calibrate/G34_M422.cpp index 6c367ad882..a4544db1fb 100644 --- a/Marlin/src/gcode/calibrate/G34_M422.cpp +++ b/Marlin/src/gcode/calibrate/G34_M422.cpp @@ -167,7 +167,7 @@ void GcodeSuite::G34() { )); // Home before the alignment procedure - home_if_needed(); + motion.home_if_needed(); #if !HAS_Z_STEPPER_ALIGN_STEPPER_XY float last_z_align_move[NUM_Z_STEPPERS] = ARRAY_N_1(NUM_Z_STEPPERS, 10000.0f); @@ -217,7 +217,7 @@ void GcodeSuite::G34() { // Probe a Z height for each stepper. // Probing sanity check is disabled, as it would trigger even in normal cases because - // current_position.z has been manually altered in the "dirty trick" above. + // motion.position.z has been manually altered in the "dirty trick" above. const float minz = (Z_PROBE_LOW_POINT) - (z_probe * 0.5f); @@ -228,7 +228,7 @@ void GcodeSuite::G34() { } const float z_probed_height = probe.probe_at_point( - DIFF_TERN(HAS_HOME_OFFSET, ppos, xy_pos_t(home_offset)), // xy + DIFF_TERN(HAS_HOME_OFFSET, ppos, xy_pos_t(motion.home_offset)), // xy raise_after, // raise_after (DEBUGGING(LEVELING) || DEBUGGING(INFO)) ? 3 : 0, // verbose_level true, false, // probe_relative, sanity_check @@ -396,7 +396,7 @@ void GcodeSuite::G34() { #endif // Do a move to correct part of the misalignment for the current stepper - do_blocking_move_to_z(amplification * z_align_move + current_position.z); + motion.blocking_move_z(amplification * z_align_move + motion.position.z); } // for (zstepper) // Back to normal stepper operations @@ -440,8 +440,8 @@ void GcodeSuite::G34() { ); if (!err_break) - current_position.z -= z_measured_min - (Z_TWEEN_SAFE_CLEARANCE + zoffs); // We shouldn't want to subtract the clearance from here right? (Depends if we added it further up) - sync_plan_position(); + motion.position.z -= z_measured_min - (Z_TWEEN_SAFE_CLEARANCE + zoffs); // We shouldn't want to subtract the clearance from here right? (Depends if we added it further up) + motion.sync_plan_position(); #endif #ifdef EVENT_GCODE_AFTER_G34 diff --git a/Marlin/src/gcode/calibrate/G425.cpp b/Marlin/src/gcode/calibrate/G425.cpp index 883d7b4b6f..177d99a05a 100644 --- a/Marlin/src/gcode/calibrate/G425.cpp +++ b/Marlin/src/gcode/calibrate/G425.cpp @@ -145,7 +145,7 @@ struct measurements_t { #endif inline void calibration_move() { - do_blocking_move_to((xyz_pos_t)current_position, MMM_TO_MMS(CALIBRATION_FEEDRATE_TRAVEL)); + motion.blocking_move((xyz_pos_t)motion.position, MMM_TO_MMS(CALIBRATION_FEEDRATE_TRAVEL)); } /** @@ -156,17 +156,17 @@ inline void calibration_move() { */ inline void park_above_object(measurements_t &m, const float uncertainty) { // Move to safe distance above calibration object - current_position.z = m.obj_center.z + dimensions.z / 2 + uncertainty; + motion.position.z = m.obj_center.z + dimensions.z / 2 + uncertainty; calibration_move(); // Move to center of calibration object in XY - current_position = xy_pos_t(m.obj_center); + motion.position = xy_pos_t(m.obj_center); calibration_move(); } #if HAS_MULTI_HOTEND inline void set_nozzle(measurements_t &m, const uint8_t extruder) { - if (extruder != active_extruder) { + if (extruder != motion.extruder) { park_above_object(m, CALIBRATION_MEASUREMENT_UNKNOWN); tool_change(extruder); } @@ -196,15 +196,15 @@ float measuring_movement(const AxisEnum axis, const int dir, const bool stop_sta const feedRate_t mms = fast ? MMM_TO_MMS(CALIBRATION_FEEDRATE_FAST) : MMM_TO_MMS(CALIBRATION_FEEDRATE_SLOW); const float limit = fast ? 50 : 5; - destination = current_position; - destination[axis] += dir * limit; + motion.destination = motion.position; + motion.destination[axis] += dir * limit; endstops.enable_calibration_probe(true, stop_state); - do_blocking_move_to((xyz_pos_t)destination, mms); + motion.blocking_move((xyz_pos_t)motion.destination, mms); endstops.enable_calibration_probe(false); endstops.hit_on_purpose(); - set_current_from_steppers_for_axis(axis); - sync_plan_position(); - return current_position[axis]; + motion.set_current_from_steppers_for_axis(axis); + motion.sync_plan_position(); + return motion.position[axis]; } /** @@ -221,7 +221,7 @@ inline float measure(const AxisEnum axis, const int dir, const bool stop_state, const bool fast = uncertainty == CALIBRATION_MEASUREMENT_UNKNOWN; // Save the current position of the specified axis - const float start_pos = current_position[axis]; + const float start_pos = motion.position[axis]; // Take a measurement. Only the specified axis will be affected. const float measured_pos = measuring_movement(axis, dir, stop_state, fast); @@ -233,9 +233,9 @@ inline float measure(const AxisEnum axis, const int dir, const bool stop_state, } // Move back to the starting position - destination = current_position; - destination[axis] = start_pos; - do_blocking_move_to((xyz_pos_t)destination, MMM_TO_MMS(CALIBRATION_FEEDRATE_TRAVEL)); + motion.destination = motion.position; + motion.destination[axis] = start_pos; + motion.blocking_move((xyz_pos_t)motion.destination, MMM_TO_MMS(CALIBRATION_FEEDRATE_TRAVEL)); return measured_pos; } @@ -297,7 +297,7 @@ inline void probe_side(measurements_t &m, const float uncertainty, const side_t if (probe_top_at_edge) { #if AXIS_CAN_CALIBRATE(Z) // Probe top nearest the side we are probing - current_position[axis] = m.obj_center[axis] + (-dir) * (dimensions[axis] / 2 - m.nozzle_outer_dimension[axis]); + motion.position[axis] = m.obj_center[axis] + (-dir) * (dimensions[axis] / 2 - m.nozzle_outer_dimension[axis]); calibration_move(); m.obj_side[TOP] = measure(Z_AXIS, -1, true, &m.backlash[TOP], uncertainty); m.obj_center.z = m.obj_side[TOP] - dimensions.z / 2; @@ -306,11 +306,11 @@ inline void probe_side(measurements_t &m, const float uncertainty, const side_t if ((AXIS_CAN_CALIBRATE(X) && axis == X_AXIS) || (AXIS_CAN_CALIBRATE(Y) && axis == Y_AXIS)) { // Move to safe distance to the side of the calibration object - current_position[axis] = m.obj_center[axis] + (-dir) * (dimensions[axis] / 2 + m.nozzle_outer_dimension[axis] / 2 + uncertainty); + motion.position[axis] = m.obj_center[axis] + (-dir) * (dimensions[axis] / 2 + m.nozzle_outer_dimension[axis] / 2 + uncertainty); calibration_move(); // Plunge below the side of the calibration object and measure - current_position.z = m.obj_side[TOP] - (CALIBRATION_NOZZLE_TIP_HEIGHT) * 0.7f; + motion.position.z = m.obj_side[TOP] - (CALIBRATION_NOZZLE_TIP_HEIGHT) * 0.7f; calibration_move(); const float measurement = measure(axis, dir, true, &m.backlash[side], uncertainty); m.obj_center[axis] = measurement + dir * (dimensions[axis] / 2 + m.nozzle_outer_dimension[axis] / 2); @@ -522,7 +522,7 @@ inline void probe_sides(measurements_t &m, const float uncertainty) { inline void report_measured_positional_error(const measurements_t &m) { SERIAL_CHAR('T'); - SERIAL_ECHO(active_extruder); + SERIAL_ECHO(motion.extruder); SERIAL_ECHOLNPGM(" Positional Error:"); #if HAS_X_CENTER && AXIS_CAN_CALIBRATE(X) SERIAL_ECHOLNPGM_P(SP_X_STR, m.pos_error.x); @@ -673,14 +673,14 @@ inline void calibrate_backlash(measurements_t &m, const float uncertainty) { AXIS_CAN_CALIBRATE(I) * 3, AXIS_CAN_CALIBRATE(J) * 3, AXIS_CAN_CALIBRATE(K) * 3, AXIS_CAN_CALIBRATE(U) * 3, AXIS_CAN_CALIBRATE(V) * 3, AXIS_CAN_CALIBRATE(W) * 3 ); - current_position += move; calibration_move(); - current_position -= move; calibration_move(); + motion.position += move; calibration_move(); + motion.position -= move; calibration_move(); } #endif } inline void update_measurements(measurements_t &m, const AxisEnum axis) { - current_position[axis] += m.pos_error[axis]; + motion.position[axis] += m.pos_error[axis]; m.obj_center[axis] = true_center[axis]; m.pos_error[axis] = 0; } @@ -726,7 +726,7 @@ inline void calibrate_toolhead(measurements_t &m, const float uncertainty, const TERN_(HAS_V_CENTER, update_measurements(m, V_AXIS)); TERN_(HAS_W_CENTER, update_measurements(m, W_AXIS)); - sync_plan_position(); + motion.sync_plan_position(); } /** @@ -779,7 +779,7 @@ inline void calibrate_all() { // Do a slow and precise calibration of the toolheads calibrate_all_toolheads(m, CALIBRATION_MEASUREMENT_UNCERTAIN); - current_position.x = X_CENTER; + motion.position.x = X_CENTER; calibration_move(); // Park nozzle away from calibration object } @@ -799,10 +799,10 @@ void GcodeSuite::G425() { process_subcommands_now(F(CALIBRATION_SCRIPT_PRE)); #endif - if (homing_needed_error()) return; + if (motion.homing_needed_error()) return; TEMPORARY_BED_LEVELING_STATE(false); - SET_SOFT_ENDSTOP_LOOSE(true); + motion.set_soft_endstop_loose(true); measurements_t m; const float uncertainty = parser.floatval('U', CALIBRATION_MEASUREMENT_UNCERTAIN); @@ -810,7 +810,7 @@ void GcodeSuite::G425() { if (parser.seen_test('B')) calibrate_backlash(m, uncertainty); else if (parser.seen_test('T')) - calibrate_toolhead(m, uncertainty, parser.intval('T', active_extruder)); + calibrate_toolhead(m, uncertainty, parser.intval('T', motion.extruder)); #if ENABLED(CALIBRATION_REPORTING) else if (parser.seen('V')) { probe_sides(m, uncertainty); @@ -829,7 +829,7 @@ void GcodeSuite::G425() { else calibrate_all(); - SET_SOFT_ENDSTOP_LOOSE(false); + motion.set_soft_endstop_loose(false); #ifdef CALIBRATION_SCRIPT_POST process_subcommands_now(F(CALIBRATION_SCRIPT_POST)); diff --git a/Marlin/src/gcode/calibrate/G76_M871.cpp b/Marlin/src/gcode/calibrate/G76_M871.cpp index 35f7ac3174..d3fd166257 100644 --- a/Marlin/src/gcode/calibrate/G76_M871.cpp +++ b/Marlin/src/gcode/calibrate/G76_M871.cpp @@ -100,7 +100,7 @@ const millis_t ms = millis(); if (ELAPSED(ms, ntr)) { ntr = ms + 1000; - thermalManager.print_heater_states(active_extruder); + thermalManager.print_heater_states(motion.extruder); } return (timeout && ELAPSED(ms, timeout)); }; @@ -150,7 +150,7 @@ if (do_bed_cal || do_probe_cal) { // Ensure park position is reachable - bool reachable = position_is_reachable(parkpos) || WITHIN(parkpos.z, Z_MIN_POS - fslop, Z_MAX_POS + fslop); + bool reachable = motion.can_reach(parkpos) || WITHIN(parkpos.z, Z_MIN_POS - fslop, Z_MAX_POS + fslop); if (!reachable) SERIAL_ECHOLNPGM("!Park"); else { @@ -167,7 +167,7 @@ process_subcommands_now(FPSTR(G28_STR)); } - remember_feedrate_scaling_off(); + motion.remember_feedrate_scaling_off(); /****************************************** * Calibrate bed temperature offsets @@ -198,7 +198,7 @@ report_targets(target_bed, target_probe); // Park nozzle - do_blocking_move_to(parkpos); + motion.blocking_move(parkpos); // Wait for heatbed to reach target temp and probe to cool below target temp if (wait_for_temps(target_bed, target_probe, next_temp_report, millis() + MIN_TO_MS(15))) { @@ -207,7 +207,7 @@ } // Move the nozzle to the probing point and wait for the probe to reach target temp - do_blocking_move_to(noz_pos_xyz); + motion.blocking_move(noz_pos_xyz); say_waiting_for_probe_heating(); SERIAL_EOL(); while (thermalManager.wholeDegProbe() < target_probe) @@ -239,7 +239,7 @@ if (do_probe_cal) { // Park nozzle - do_blocking_move_to(parkpos); + motion.blocking_move(parkpos); // Initialize temperatures const celsius_t target_bed = BED_MAX_TARGET; @@ -258,7 +258,7 @@ bool timeout = false; for (uint8_t idx = 0; idx <= PTC_PROBE_COUNT; idx++) { // Move probe to probing point and wait for it to reach target temperature - do_blocking_move_to(noz_pos_xyz); + motion.blocking_move(noz_pos_xyz); say_waiting_for_probe_heating(); SERIAL_ECHOLNPGM(" Bed:", target_bed, " Probe:", target_probe); @@ -291,7 +291,7 @@ ptc.print_offsets(); } // do_probe_cal - restore_feedrate_and_scaling(); + motion.restore_feedrate_and_scaling(); } #endif // PTC_PROBE && PTC_BED diff --git a/Marlin/src/gcode/calibrate/M48.cpp b/Marlin/src/gcode/calibrate/M48.cpp index 0c4355f5b1..fbcb5354f8 100644 --- a/Marlin/src/gcode/calibrate/M48.cpp +++ b/Marlin/src/gcode/calibrate/M48.cpp @@ -58,7 +58,7 @@ void GcodeSuite::M48() { - if (homing_needed_error()) return; + if (motion.homing_needed_error()) return; const int8_t verbose_level = parser.byteval('V', 1); if (!WITHIN(verbose_level, 0, 4)) { @@ -76,8 +76,8 @@ void GcodeSuite::M48() { // Test at the current position by default, overridden by X and Y const xy_pos_t test_position = { - parser.linearval('X', current_position.x + probe.offset_xy.x), // If no X use the probe's current X position - parser.linearval('Y', current_position.y + probe.offset_xy.y) // If no Y, ditto + parser.linearval('X', motion.position.x + probe.offset_xy.x), // If no X use the probe's current X position + parser.linearval('Y', motion.position.y + probe.offset_xy.y) // If no Y, ditto }; if (!probe.can_reach(test_position)) { @@ -115,7 +115,7 @@ void GcodeSuite::M48() { TERN_(HAS_PTC, ptc.set_enabled(parser.boolval('C', true))); // Work with reasonable feedrates - remember_feedrate_scaling_off(); + motion.remember_feedrate_scaling_off(); // Working variables float mean = 0.0, // The average of all points so far, used to calculate deviation @@ -216,7 +216,7 @@ void GcodeSuite::M48() { if (verbose_level > 3) SERIAL_ECHOLN(F("Going to: X"), next_pos.x, FPSTR(SP_Y_STR), next_pos.y); - do_blocking_move_to_xy(next_pos); + motion.blocking_move_xy(next_pos); } // n_legs loop } // n_legs @@ -277,7 +277,7 @@ void GcodeSuite::M48() { #endif } - restore_feedrate_and_scaling(); + motion.restore_feedrate_and_scaling(); // Re-enable bed level correction if it had been on TERN_(HAS_LEVELING, set_bed_leveling_enabled(was_enabled)); @@ -285,7 +285,7 @@ void GcodeSuite::M48() { // Re-enable probe temperature correction TERN_(HAS_PTC, ptc.set_enabled(true)); - report_current_position(); + motion.report_position(); } #endif // Z_MIN_PROBE_REPEATABILITY_TEST diff --git a/Marlin/src/gcode/calibrate/M665.cpp b/Marlin/src/gcode/calibrate/M665.cpp index 5409ff4232..ac2be7652f 100644 --- a/Marlin/src/gcode/calibrate/M665.cpp +++ b/Marlin/src/gcode/calibrate/M665.cpp @@ -106,13 +106,13 @@ #if HAS_SCARA_OFFSET - if (parser.seenval('Z')) scara_home_offset.z = parser.value_linear_units(); + if (parser.seenval('Z')) motion.scara_home_offset.z = parser.value_linear_units(); const bool hasA = parser.seenval('A'), hasP = parser.seenval('P'), hasX = parser.seenval('X'); const uint8_t sumAPX = hasA + hasP + hasX; if (sumAPX) { if (sumAPX == 1) - scara_home_offset.a = parser.value_float(); + motion.scara_home_offset.a = parser.value_float(); else { SERIAL_ERROR_MSG("Only one of A, P, or X is allowed."); return; @@ -123,7 +123,7 @@ const uint8_t sumBTY = hasB + hasT + hasY; if (sumBTY) { if (sumBTY == 1) - scara_home_offset.b = parser.value_float(); + motion.scara_home_offset.b = parser.value_float(); else { SERIAL_ERROR_MSG("Only one of B, T, or Y is allowed."); return; @@ -140,9 +140,9 @@ SERIAL_ECHOLNPGM_P( PSTR(" M665 S"), segments_per_second #if HAS_SCARA_OFFSET - , SP_P_STR, scara_home_offset.a - , SP_T_STR, scara_home_offset.b - , SP_Z_STR, LINEAR_UNIT(scara_home_offset.z) + , SP_P_STR, motion.scara_home_offset.a + , SP_T_STR, motion.scara_home_offset.b + , SP_Z_STR, LINEAR_UNIT(motion.scara_home_offset.z) #endif ); } diff --git a/Marlin/src/gcode/calibrate/M852.cpp b/Marlin/src/gcode/calibrate/M852.cpp index 7cd9aaf718..726aedefd8 100644 --- a/Marlin/src/gcode/calibrate/M852.cpp +++ b/Marlin/src/gcode/calibrate/M852.cpp @@ -89,9 +89,9 @@ void GcodeSuite::M852() { // When skew is changed the current position changes if (setval) { - set_current_from_steppers_for_axis(ALL_AXES_ENUM); - sync_plan_position(); - report_current_position(); + motion.set_current_from_steppers_for_axis(ALL_AXES_ENUM); + motion.sync_plan_position(); + motion.report_position(); } } diff --git a/Marlin/src/gcode/config/M210.cpp b/Marlin/src/gcode/config/M210.cpp index 41dbd73db4..0f1ecddec0 100644 --- a/Marlin/src/gcode/config/M210.cpp +++ b/Marlin/src/gcode/config/M210.cpp @@ -48,15 +48,15 @@ void GcodeSuite::M210() { return M210_report(); NUM_AXIS_CODE( - if (parser.floatval(AXIS1_PARAM) > 0) homing_feedrate_mm_m.x = parser.value_axis_units(X_AXIS), - if (parser.floatval(AXIS2_PARAM) > 0) homing_feedrate_mm_m.y = parser.value_axis_units(Y_AXIS), - if (parser.floatval(AXIS3_PARAM) > 0) homing_feedrate_mm_m.z = parser.value_axis_units(Z_AXIS), - if (parser.floatval(AXIS4_PARAM) > 0) homing_feedrate_mm_m.i = parser.value_axis_units(I_AXIS), - if (parser.floatval(AXIS5_PARAM) > 0) homing_feedrate_mm_m.j = parser.value_axis_units(J_AXIS), - if (parser.floatval(AXIS6_PARAM) > 0) homing_feedrate_mm_m.k = parser.value_axis_units(K_AXIS), - if (parser.floatval(AXIS7_PARAM) > 0) homing_feedrate_mm_m.u = parser.value_axis_units(U_AXIS), - if (parser.floatval(AXIS8_PARAM) > 0) homing_feedrate_mm_m.v = parser.value_axis_units(V_AXIS), - if (parser.floatval(AXIS9_PARAM) > 0) homing_feedrate_mm_m.w = parser.value_axis_units(W_AXIS) + if (parser.floatval(AXIS1_PARAM) > 0) motion.homing_feedrate_mm_m.x = parser.value_axis_units(X_AXIS), + if (parser.floatval(AXIS2_PARAM) > 0) motion.homing_feedrate_mm_m.y = parser.value_axis_units(Y_AXIS), + if (parser.floatval(AXIS3_PARAM) > 0) motion.homing_feedrate_mm_m.z = parser.value_axis_units(Z_AXIS), + if (parser.floatval(AXIS4_PARAM) > 0) motion.homing_feedrate_mm_m.i = parser.value_axis_units(I_AXIS), + if (parser.floatval(AXIS5_PARAM) > 0) motion.homing_feedrate_mm_m.j = parser.value_axis_units(J_AXIS), + if (parser.floatval(AXIS6_PARAM) > 0) motion.homing_feedrate_mm_m.k = parser.value_axis_units(K_AXIS), + if (parser.floatval(AXIS7_PARAM) > 0) motion.homing_feedrate_mm_m.u = parser.value_axis_units(U_AXIS), + if (parser.floatval(AXIS8_PARAM) > 0) motion.homing_feedrate_mm_m.v = parser.value_axis_units(V_AXIS), + if (parser.floatval(AXIS9_PARAM) > 0) motion.homing_feedrate_mm_m.w = parser.value_axis_units(W_AXIS) ); } @@ -67,15 +67,15 @@ void GcodeSuite::M210_report(const bool forReplay/*=true*/) { SERIAL_ECHOPGM(" M210"); SERIAL_ECHOLNPGM_P(NUM_AXIS_PAIRED_LIST( - SP_X_STR, X_AXIS_UNIT(homing_feedrate_mm_m.x), - SP_Y_STR, Y_AXIS_UNIT(homing_feedrate_mm_m.y), - SP_Z_STR, Z_AXIS_UNIT(homing_feedrate_mm_m.z), - SP_I_STR, I_AXIS_UNIT(homing_feedrate_mm_m.i), - SP_J_STR, J_AXIS_UNIT(homing_feedrate_mm_m.j), - SP_K_STR, K_AXIS_UNIT(homing_feedrate_mm_m.k), - SP_U_STR, U_AXIS_UNIT(homing_feedrate_mm_m.u), - SP_V_STR, V_AXIS_UNIT(homing_feedrate_mm_m.v), - SP_W_STR, W_AXIS_UNIT(homing_feedrate_mm_m.w) + SP_X_STR, X_AXIS_UNIT(motion.homing_feedrate_mm_m.x), + SP_Y_STR, Y_AXIS_UNIT(motion.homing_feedrate_mm_m.y), + SP_Z_STR, Z_AXIS_UNIT(motion.homing_feedrate_mm_m.z), + SP_I_STR, I_AXIS_UNIT(motion.homing_feedrate_mm_m.i), + SP_J_STR, J_AXIS_UNIT(motion.homing_feedrate_mm_m.j), + SP_K_STR, K_AXIS_UNIT(motion.homing_feedrate_mm_m.k), + SP_U_STR, U_AXIS_UNIT(motion.homing_feedrate_mm_m.u), + SP_V_STR, V_AXIS_UNIT(motion.homing_feedrate_mm_m.v), + SP_W_STR, W_AXIS_UNIT(motion.homing_feedrate_mm_m.w) )); } diff --git a/Marlin/src/gcode/config/M217.cpp b/Marlin/src/gcode/config/M217.cpp index df275c2d31..d05bb37b51 100644 --- a/Marlin/src/gcode/config/M217.cpp +++ b/Marlin/src/gcode/config/M217.cpp @@ -31,7 +31,7 @@ #endif #if ENABLED(TOOLCHANGE_MIGRATION_FEATURE) - #include "../../module/motion.h" // for active_extruder + #include "../../module/motion.h" // for motion.extruder #endif /** @@ -133,7 +133,7 @@ void GcodeSuite::M217() { const int16_t lval = parser.value_int(); if (WITHIN(lval, 0, EXTRUDERS - 1)) { migration.last = lval; - migration.automode = (active_extruder < migration.last); + migration.automode = (motion.extruder < migration.last); } } @@ -143,7 +143,7 @@ void GcodeSuite::M217() { if (parser.seen('T')) { // Migrate now if (parser.has_value()) { const int16_t tval = parser.value_int(); - if (WITHIN(tval, 0, EXTRUDERS - 1) && tval != active_extruder) { + if (WITHIN(tval, 0, EXTRUDERS - 1) && tval != motion.extruder) { migration.target = tval + 1; extruder_migration(); migration.target = 0; // disable diff --git a/Marlin/src/gcode/config/M218.cpp b/Marlin/src/gcode/config/M218.cpp index 7d167e502d..69bb89d74c 100644 --- a/Marlin/src/gcode/config/M218.cpp +++ b/Marlin/src/gcode/config/M218.cpp @@ -57,8 +57,8 @@ void GcodeSuite::M218() { #endif #if ENABLED(DELTA) - if (target_extruder == active_extruder) - do_blocking_move_to_xy(current_position, planner.settings.max_feedrate_mm_s[X_AXIS]); + if (target_extruder == motion.extruder) + motion.blocking_move_xy(motion.position, planner.settings.max_feedrate_mm_s[X_AXIS]); #endif } diff --git a/Marlin/src/gcode/config/M220.cpp b/Marlin/src/gcode/config/M220.cpp index 0d1e204800..6229cc2261 100644 --- a/Marlin/src/gcode/config/M220.cpp +++ b/Marlin/src/gcode/config/M220.cpp @@ -36,14 +36,14 @@ */ void GcodeSuite::M220() { if (!parser.seen_any()) { - SERIAL_ECHOLNPGM("FR:", feedrate_percentage, "%"); + SERIAL_ECHOLNPGM("FR:", motion.feedrate_percentage, "%"); return; } static int16_t backup_feedrate_percentage = 100; - const int16_t now_feedrate_perc = feedrate_percentage; - if (parser.seen_test('R')) feedrate_percentage = backup_feedrate_percentage; + const int16_t now_feedrate_perc = motion.feedrate_percentage; + if (parser.seen_test('R')) motion.feedrate_percentage = backup_feedrate_percentage; if (parser.seen_test('B')) backup_feedrate_percentage = now_feedrate_perc; - if (parser.seenval('S')) feedrate_percentage = parser.value_int(); + if (parser.seenval('S')) motion.feedrate_percentage = parser.value_int(); } diff --git a/Marlin/src/gcode/config/M92.cpp b/Marlin/src/gcode/config/M92.cpp index 48c3c5f2f0..a043074585 100644 --- a/Marlin/src/gcode/config/M92.cpp +++ b/Marlin/src/gcode/config/M92.cpp @@ -57,7 +57,7 @@ void GcodeSuite::M92() { planner.settings.axis_steps_per_mm[i] = parser.value_per_axis_units((AxisEnum)i); else { #if HAS_EXTRUDERS - const float value = parser.value_per_axis_units((AxisEnum)(E_AXIS_N(target_extruder))); + const float value = parser.value_per_axis_units(AxisEnum(E_AXIS_N(target_extruder))); if (value < 20) { float factor = planner.settings.axis_steps_per_mm[E_AXIS_N(target_extruder)] / value; // increase e constants if M92 E14 is given for netfab. #if ALL(CLASSIC_JERK, HAS_CLASSIC_E_JERK) diff --git a/Marlin/src/gcode/control/M108_M112_M410.cpp b/Marlin/src/gcode/control/M108_M112_M410.cpp index e2ca9b2247..dc7213b98e 100644 --- a/Marlin/src/gcode/control/M108_M112_M410.cpp +++ b/Marlin/src/gcode/control/M108_M112_M410.cpp @@ -45,5 +45,5 @@ void GcodeSuite::M112() { * will be out of sync with the stepper position after this. */ void GcodeSuite::M410() { - quickstop_stepper(); + motion.quickstop_stepper(); } diff --git a/Marlin/src/gcode/control/M211.cpp b/Marlin/src/gcode/control/M211.cpp index e51a9d5297..07d849c0f2 100644 --- a/Marlin/src/gcode/control/M211.cpp +++ b/Marlin/src/gcode/control/M211.cpp @@ -34,7 +34,7 @@ */ void GcodeSuite::M211() { if (parser.seen('S')) - soft_endstop._enabled = parser.value_bool(); + motion.soft_endstop._enabled = parser.value_bool(); else M211_report(); } @@ -43,11 +43,11 @@ void GcodeSuite::M211_report(const bool forReplay/*=true*/) { TERN_(MARLIN_SMALL_BUILD, return); report_heading_etc(forReplay, F(STR_SOFT_ENDSTOPS)); - SERIAL_ECHOLNPGM(" M211 S", AS_DIGIT(soft_endstop._enabled), " ; ", ON_OFF(soft_endstop._enabled)); + SERIAL_ECHOLNPGM(" M211 S", AS_DIGIT(motion.soft_endstop._enabled), " ; ", ON_OFF(motion.soft_endstop._enabled)); report_echo_start(forReplay); - const xyz_pos_t l_soft_min = soft_endstop.min.asLogical(), - l_soft_max = soft_endstop.max.asLogical(); + const xyz_pos_t l_soft_min = motion.soft_endstop.min.asLogical(), + l_soft_max = motion.soft_endstop.max.asLogical(); print_xyz(l_soft_min, F(STR_SOFT_MIN), F(" ")); print_xyz(l_soft_max, F(STR_SOFT_MAX)); } diff --git a/Marlin/src/gcode/control/M380_M381.cpp b/Marlin/src/gcode/control/M380_M381.cpp index 20d24484ed..9b8de3eccf 100644 --- a/Marlin/src/gcode/control/M380_M381.cpp +++ b/Marlin/src/gcode/control/M380_M381.cpp @@ -35,9 +35,9 @@ */ void GcodeSuite::M380() { #if ENABLED(MANUAL_SOLENOID_CONTROL) - enable_solenoid(parser.intval('S', active_extruder)); + enable_solenoid(parser.intval('S', motion.extruder)); #else - enable_solenoid(active_extruder); + enable_solenoid(motion.extruder); #endif } @@ -47,7 +47,7 @@ void GcodeSuite::M380() { */ void GcodeSuite::M381() { #if ENABLED(MANUAL_SOLENOID_CONTROL) - disable_solenoid(parser.intval('S', active_extruder)); + disable_solenoid(parser.intval('S', motion.extruder)); #else disable_all_solenoids(); #endif diff --git a/Marlin/src/gcode/control/M605.cpp b/Marlin/src/gcode/control/M605.cpp index bf5549262d..f5d514bd3f 100644 --- a/Marlin/src/gcode/control/M605.cpp +++ b/Marlin/src/gcode/control/M605.cpp @@ -80,7 +80,7 @@ if (parser.seenval('X')) duplicate_extruder_x_offset = _MAX(parser.value_linear_units(), (X2_MIN_POS) - (X1_MIN_POS)); if (parser.seenval('R')) duplicate_extruder_temp_offset = parser.value_celsius_diff(); // Always switch back to tool 0 - if (active_extruder != 0) tool_change(0); + if (motion.extruder != 0) tool_change(0); break; case DXC_MIRRORED_MODE: { @@ -93,9 +93,9 @@ idex_set_mirrored_mode(true); // Do a small 'jog' motion in the X axis - xyze_pos_t dest = current_position; dest.x -= 0.1f; + xyze_pos_t dest = motion.position; dest.x -= 0.1f; for (uint8_t i = 2; --i;) { - planner.buffer_line(dest, feedrate_mm_s, 0); + planner.buffer_line(dest, motion.feedrate_mm_s, 0); dest.x += 0.1f; } } return; @@ -126,10 +126,10 @@ case DXC_DUPLICATION_MODE: DEBUG_ECHOPGM("DUPLICATION"); break; case DXC_MIRRORED_MODE: DEBUG_ECHOPGM("MIRRORED"); break; } - DEBUG_ECHOPGM("\nActive Ext: ", active_extruder); + DEBUG_ECHOPGM("\nActive Ext: ", motion.extruder); if (!active_extruder_parked) DEBUG_ECHOPGM(" NOT ", F(" parked.")); DEBUG_ECHOLNPGM( - "\nactive_extruder_x_pos: ", current_position.x, + "\nactive_extruder_x_pos: ", motion.position.x, "\ninactive_extruder_x: ", inactive_extruder_x, "\nextruder_duplication_enabled: ", extruder_duplication_enabled, "\nduplicate_extruder_x_offset: ", duplicate_extruder_x_offset, diff --git a/Marlin/src/gcode/control/T.cpp b/Marlin/src/gcode/control/T.cpp index d5affa37e2..75f7adea2d 100644 --- a/Marlin/src/gcode/control/T.cpp +++ b/Marlin/src/gcode/control/T.cpp @@ -58,7 +58,7 @@ void GcodeSuite::T(const int8_t tool_index) { #if HAS_MULTI_EXTRUDER // For 'T' with no parameter report the current tool. if (parser.string_arg && *parser.string_arg == '*') { - SERIAL_ECHOLNPGM(STR_ACTIVE_EXTRUDER, active_extruder); + SERIAL_ECHOLNPGM(STR_ACTIVE_EXTRUDER, motion.extruder); return; } #endif @@ -84,7 +84,7 @@ void GcodeSuite::T(const int8_t tool_index) { tool_change(tool_index #if HAS_MULTI_EXTRUDER , parser.boolval('S') - || TERN(PARKING_EXTRUDER, false, tool_index == active_extruder) // For PARKING_EXTRUDER motion is decided in tool_change() + || TERN(PARKING_EXTRUDER, false, tool_index == motion.extruder) // For PARKING_EXTRUDER motion is decided in tool_change() #endif ); } diff --git a/Marlin/src/gcode/feature/advance/M900.cpp b/Marlin/src/gcode/feature/advance/M900.cpp index 7631cd0e8c..617bb57916 100644 --- a/Marlin/src/gcode/feature/advance/M900.cpp +++ b/Marlin/src/gcode/feature/advance/M900.cpp @@ -58,7 +58,7 @@ void GcodeSuite::M900() { constexpr uint8_t tool_index = 0; UNUSED(tool_index); #else - const uint8_t tool_index = parser.intval('T', active_extruder); + const uint8_t tool_index = parser.intval('T', motion.extruder); if (tool_index >= EXTRUDERS) { echo_value_oor('T', false); return; diff --git a/Marlin/src/gcode/feature/camera/M240.cpp b/Marlin/src/gcode/feature/camera/M240.cpp index 191a827ff4..7ce0a1934c 100644 --- a/Marlin/src/gcode/feature/camera/M240.cpp +++ b/Marlin/src/gcode/feature/camera/M240.cpp @@ -25,7 +25,7 @@ #if ENABLED(PHOTO_GCODE) #include "../../gcode.h" -#include "../../../module/motion.h" // for active_extruder and current_position +#include "../../../module/motion.h" // for motion.extruder and motion.position #if PIN_EXISTS(CHDK) millis_t chdk_timeout; // = 0 @@ -44,8 +44,8 @@ #ifdef PHOTO_RETRACT_MM inline void e_move_m240(const float length, const feedRate_t fr_mm_s) { - if (length && thermalManager.hotEnoughToExtrude(active_extruder)) - unscaled_e_move(length, fr_mm_s); + if (length && thermalManager.hotEnoughToExtrude(motion.extruder)) + motion.unscaled_e_move(length, fr_mm_s); } #endif @@ -122,14 +122,14 @@ void GcodeSuite::M240() { #ifdef PHOTO_POSITION - if (homing_needed_error()) return; + if (motion.homing_needed_error()) return; const xyz_pos_t old_pos = NUM_AXIS_ARRAY( - current_position.x + parser.linearval('A'), - current_position.y + parser.linearval('B'), - current_position.z, - current_position.i, current_position.j, current_position.k, - current_position.u, current_position.v, current_position.w + motion.position.x + parser.linearval('A'), + motion.position.y + parser.linearval('B'), + motion.position.z, + motion.position.i, motion.position.j, motion.position.k, + motion.position.u, motion.position.v, motion.position.w ); #ifdef PHOTO_RETRACT_MM @@ -143,24 +143,24 @@ void GcodeSuite::M240() { constexpr xyz_pos_t photo_position = PHOTO_POSITION; xyz_pos_t raw = { - parser.seenval('X') ? RAW_X_POSITION(parser.value_linear_units()) : photo_position.x, - parser.seenval('Y') ? RAW_Y_POSITION(parser.value_linear_units()) : photo_position.y, - (parser.seenval('Z') ? parser.value_linear_units() : photo_position.z) + current_position.z + parser.seenval('X') ? motion.raw_x(parser.value_linear_units()) : photo_position.x, + parser.seenval('Y') ? motion.raw_y(parser.value_linear_units()) : photo_position.y, + (parser.seenval('Z') ? parser.value_linear_units() : photo_position.z) + motion.position.z }; - apply_motion_limits(raw); - do_blocking_move_to(raw, fr_mm_s); + motion.apply_limits(raw); + motion.blocking_move(raw, fr_mm_s); #ifdef PHOTO_SWITCH_POSITION constexpr xy_pos_t photo_switch_position = PHOTO_SWITCH_POSITION; const xy_pos_t sraw = { - parser.seenval('I') ? RAW_X_POSITION(parser.value_linear_units()) : photo_switch_position.x, - parser.seenval('J') ? RAW_Y_POSITION(parser.value_linear_units()) : photo_switch_position.y + parser.seenval('I') ? motion.raw_x(parser.value_linear_units()) : photo_switch_position.x, + parser.seenval('J') ? motion.raw_y(parser.value_linear_units()) : photo_switch_position.y }; - do_blocking_move_to_xy(sraw, get_homing_bump_feedrate(X_AXIS)); + motion.blocking_move_xy(sraw, motion.get_homing_bump_feedrate(X_AXIS)); #if PHOTO_SWITCH_MS > 0 safe_delay(parser.intval('D', PHOTO_SWITCH_MS)); #endif - do_blocking_move_to(raw); + motion.blocking_move(raw); #endif #endif @@ -183,7 +183,7 @@ void GcodeSuite::M240() { const millis_t timeout = millis() + parser.intval('P', PHOTO_DELAY_MS); while (PENDING(millis(), timeout)) marlin.idle(); #endif - do_blocking_move_to(old_pos, fr_mm_s); + motion.blocking_move(old_pos, fr_mm_s); #ifdef PHOTO_RETRACT_MM e_move_m240(rval, sval); #endif diff --git a/Marlin/src/gcode/feature/clean/G12.cpp b/Marlin/src/gcode/feature/clean/G12.cpp index a5e312f8fd..2e8d784207 100644 --- a/Marlin/src/gcode/feature/clean/G12.cpp +++ b/Marlin/src/gcode/feature/clean/G12.cpp @@ -48,7 +48,7 @@ void GcodeSuite::G12() { // Don't allow nozzle cleaning without homing first constexpr main_axes_bits_t clean_axis_mask = main_axes_mask & ~TERN0(NOZZLE_CLEAN_NO_Z, Z_AXIS) & ~TERN0(NOZZLE_CLEAN_NO_Y, Y_AXIS); - if (homing_needed_error(clean_axis_mask)) return; + if (motion.homing_needed_error(clean_axis_mask)) return; #ifdef WIPE_SEQUENCE_COMMANDS if (!parser.seen_any()) { @@ -79,11 +79,11 @@ void GcodeSuite::G12() { TEMPORARY_BED_LEVELING_STATE(!TEST(cleans, Z_AXIS) && planner.leveling_active); #endif - SET_SOFT_ENDSTOP_LOOSE(!parser.boolval('E')); + motion.set_soft_endstop_loose(!parser.boolval('E')); nozzle.clean(pattern, strokes, radius, objects, cleans); - SET_SOFT_ENDSTOP_LOOSE(false); + motion.set_soft_endstop_loose(false); } #endif // NOZZLE_CLEAN_FEATURE diff --git a/Marlin/src/gcode/feature/mixing/M166.cpp b/Marlin/src/gcode/feature/mixing/M166.cpp index d3741f5931..9d717de7f5 100644 --- a/Marlin/src/gcode/feature/mixing/M166.cpp +++ b/Marlin/src/gcode/feature/mixing/M166.cpp @@ -92,8 +92,8 @@ void GcodeSuite::M166() { SERIAL_ECHOPGM(" ; Current Z"); #if ENABLED(DELTA) - get_cartesian_from_steppers(); - SERIAL_ECHO(cartes.z); + motion.get_cartesian_from_steppers(); + SERIAL_ECHO(motion.cartes.z); #else SERIAL_ECHO(planner.get_axis_position_mm(Z_AXIS)); #endif diff --git a/Marlin/src/gcode/feature/pause/G27.cpp b/Marlin/src/gcode/feature/pause/G27.cpp index 1fe6a490ea..9fdff6ccc3 100644 --- a/Marlin/src/gcode/feature/pause/G27.cpp +++ b/Marlin/src/gcode/feature/pause/G27.cpp @@ -43,7 +43,7 @@ */ void GcodeSuite::G27() { // Don't allow nozzle parking without homing first - if (homing_needed_error()) return; + if (motion.homing_needed_error()) return; const int16_t pval = parser.intval('P'); if (WITHIN(pval, 0, 4)) { nozzle.park(pval); diff --git a/Marlin/src/gcode/feature/pause/G60_G61.cpp b/Marlin/src/gcode/feature/pause/G60_G61.cpp index 8a24433cdb..ca2dc7d5f2 100644 --- a/Marlin/src/gcode/feature/pause/G60_G61.cpp +++ b/Marlin/src/gcode/feature/pause/G60_G61.cpp @@ -99,7 +99,7 @@ void GcodeSuite::G60() { } // G60 S - stored_position[slot] = current_position; + stored_position[slot] = motion.position; did_save_position.set(slot); report_stored_position(slot); } @@ -130,7 +130,7 @@ void GcodeSuite::G61(int8_t slot/*=-1*/) { if (slot < 0) slot = parser.byteval('S'); - #define SYNC_E(E) planner.set_e_position_mm(current_position.e = (E)) + #define SYNC_E(E) planner.set_e_position_mm(motion.position.e = (E)) if (SAVED_POSITIONS < 256 && slot >= SAVED_POSITIONS) { SERIAL_ERROR_MSG(STR_INVALID_POS_SLOT STRINGIFY(SAVED_POSITIONS)); @@ -141,9 +141,9 @@ void GcodeSuite::G61(int8_t slot/*=-1*/) { if (!did_save_position[slot]) return; // Apply any given feedrate over 0.0 - REMEMBER(saved, feedrate_mm_s); + REMEMBER(saved, motion.feedrate_mm_s); const float fr = parser.linearval('F'); - if (fr > 0.0) feedrate_mm_s = MMM_TO_MMS(fr); + if (fr > 0.0) motion.feedrate_mm_s = MMM_TO_MMS(fr); // No XYZ...E parameters, move to stored position @@ -153,10 +153,10 @@ void GcodeSuite::G61(int8_t slot/*=-1*/) { if (!parser.seen_axis()) { DEBUG_ECHOLNPGM(STR_RESTORING_POSITION, slot, " (all axes)"); // Move to the saved position, all axes except E - do_blocking_move_to(stored_position[slot], feedrate_mm_s); + motion.blocking_move(stored_position[slot], motion.feedrate_mm_s); // Just set E to the saved position without moving it TERN_(HAS_EXTRUDERS, SYNC_E(stored_position[slot].e)); - report_current_position(); + motion.report_position(); return; } @@ -165,14 +165,14 @@ void GcodeSuite::G61(int8_t slot/*=-1*/) { DEBUG_ECHOPGM(STR_RESTORING_POSITION " S", slot); if (parser.seen(STR_AXES_MAIN)) { - destination = current_position; + motion.destination = motion.position; LOOP_NUM_AXES(i) { if (parser.seen(AXIS_CHAR(i))) { - destination[i] = stored_position[slot][i] + parser.value_axis_units((AxisEnum)i); - DEBUG_ECHO(C(' '), C(AXIS_CHAR(i)), p_float_t(destination[i], 2)); + motion.destination[i] = stored_position[slot][i] + parser.value_axis_units((AxisEnum)i); + DEBUG_ECHO(C(' '), C(AXIS_CHAR(i)), p_float_t(motion.destination[i], 2)); } } - prepare_line_to_destination(); + motion.prepare_line_to_destination(); } #if HAS_EXTRUDERS @@ -185,7 +185,7 @@ void GcodeSuite::G61(int8_t slot/*=-1*/) { DEBUG_EOL(); - report_current_position(); + motion.report_position(); } #endif // SAVED_POSITIONS diff --git a/Marlin/src/gcode/feature/pause/M125.cpp b/Marlin/src/gcode/feature/pause/M125.cpp index 75611760f1..5ec7b3e01b 100644 --- a/Marlin/src/gcode/feature/pause/M125.cpp +++ b/Marlin/src/gcode/feature/pause/M125.cpp @@ -68,15 +68,15 @@ void GcodeSuite::M125() { // Move to filament change position or given position NUM_AXIS_CODE( - if (parser.seenval('X')) park_point.x = RAW_X_POSITION(parser.linearval('X')), - if (parser.seenval('Y')) park_point.y = RAW_Y_POSITION(parser.linearval('Y')), + if (parser.seenval('X')) park_point.x = motion.raw_x(parser.linearval('X')), + if (parser.seenval('Y')) park_point.y = motion.raw_y(parser.linearval('Y')), NOOP, - if (parser.seenval(AXIS4_NAME)) park_point.i = RAW_I_POSITION(parser.linearval(AXIS4_NAME)), - if (parser.seenval(AXIS5_NAME)) park_point.j = RAW_J_POSITION(parser.linearval(AXIS5_NAME)), - if (parser.seenval(AXIS6_NAME)) park_point.k = RAW_K_POSITION(parser.linearval(AXIS6_NAME)), - if (parser.seenval(AXIS7_NAME)) park_point.u = RAW_U_POSITION(parser.linearval(AXIS7_NAME)), - if (parser.seenval(AXIS8_NAME)) park_point.v = RAW_V_POSITION(parser.linearval(AXIS8_NAME)), - if (parser.seenval(AXIS9_NAME)) park_point.w = RAW_W_POSITION(parser.linearval(AXIS9_NAME)) + if (parser.seenval(AXIS4_NAME)) park_point.i = motion.raw_i(parser.linearval(AXIS4_NAME)), + if (parser.seenval(AXIS5_NAME)) park_point.j = motion.raw_j(parser.linearval(AXIS5_NAME)), + if (parser.seenval(AXIS6_NAME)) park_point.k = motion.raw_k(parser.linearval(AXIS6_NAME)), + if (parser.seenval(AXIS7_NAME)) park_point.u = motion.raw_u(parser.linearval(AXIS7_NAME)), + if (parser.seenval(AXIS8_NAME)) park_point.v = motion.raw_v(parser.linearval(AXIS8_NAME)), + if (parser.seenval(AXIS9_NAME)) park_point.w = motion.raw_w(parser.linearval(AXIS9_NAME)) ); // Lift Z axis @@ -85,7 +85,7 @@ void GcodeSuite::M125() { #endif #if HAS_HOTEND_OFFSET && NONE(DUAL_X_CARRIAGE, DELTA) - park_point += hotend_offset[active_extruder]; + park_point += hotend_offset[motion.extruder]; #endif const bool sd_printing = card.isStillPrinting(); diff --git a/Marlin/src/gcode/feature/pause/M600.cpp b/Marlin/src/gcode/feature/pause/M600.cpp index 294836fbba..774c96e9f6 100644 --- a/Marlin/src/gcode/feature/pause/M600.cpp +++ b/Marlin/src/gcode/feature/pause/M600.cpp @@ -94,7 +94,7 @@ void GcodeSuite::M600() { MIXER_STEPPER_LOOP(i) mixer.set_collector(i, i == uint8_t(eindex) ? 1.0 : 0.0); mixer.normalize(); - const int8_t target_extruder = active_extruder; + const int8_t target_extruder = motion.extruder; #else const int8_t target_extruder = get_target_extruder_from_command(); if (target_extruder < 0) return; @@ -108,7 +108,7 @@ void GcodeSuite::M600() { if (idex_is_duplicating()) DXC_ext = (READ(FIL_RUNOUT2_PIN) == FIL_RUNOUT2_STATE) ? 1 : 0; #else - DXC_ext = active_extruder; + DXC_ext = motion.extruder; #endif } #endif @@ -122,12 +122,12 @@ void GcodeSuite::M600() { TERN_(SOVOL_SV06_RTS, rts.gotoPage(ID_ChangeWait_L, ID_ChangeWait_D)); //given the context it seems this likely should have been pages 6 & 61 // If needed, home before parking for filament change - TERN_(HOME_BEFORE_FILAMENT_CHANGE, home_if_needed(true)); + TERN_(HOME_BEFORE_FILAMENT_CHANGE, motion.home_if_needed(true)); #if HAS_MULTI_EXTRUDER // Change toolhead if specified - const uint8_t active_extruder_before_filament_change = active_extruder; - if (active_extruder != target_extruder && TERN1(DUAL_X_CARRIAGE, !idex_is_duplicating())) + const uint8_t active_extruder_before_filament_change = motion.extruder; + if (motion.extruder != target_extruder && TERN1(DUAL_X_CARRIAGE, !idex_is_duplicating())) tool_change(target_extruder); #endif @@ -150,12 +150,12 @@ void GcodeSuite::M600() { ); #if HAS_HOTEND_OFFSET && NONE(DUAL_X_CARRIAGE, DELTA) - park_point += hotend_offset[active_extruder]; + park_point += hotend_offset[motion.extruder]; #endif // Unload filament // For MMU2, when enabled, reset retract value so it doesn't mess with MMU filament handling - const float unload_length = standardM600 ? -ABS(parser.axisunitsval('U', E_AXIS, fc_settings[active_extruder].unload_length)) : 0.5f; + const float unload_length = standardM600 ? -ABS(parser.axisunitsval('U', E_AXIS, fc_settings[motion.extruder].unload_length)) : 0.5f; const int beep_count = parser.intval('B', -1 #ifdef FILAMENT_CHANGE_ALERT_BEEPS @@ -168,7 +168,7 @@ void GcodeSuite::M600() { wait_for_confirmation(true, beep_count DXC_PASS); resume_print( FILAMENT_CHANGE_SLOW_LOAD_LENGTH, - ABS(parser.axisunitsval('L', E_AXIS, fc_settings[active_extruder].load_length)), + ABS(parser.axisunitsval('L', E_AXIS, fc_settings[motion.extruder].load_length)), ADVANCED_PAUSE_PURGE_LENGTH, beep_count, parser.celsiusval('R'), @@ -188,7 +188,7 @@ void GcodeSuite::M600() { #if HAS_MULTI_EXTRUDER // Restore toolhead if it was changed - if (active_extruder_before_filament_change != active_extruder) + if (active_extruder_before_filament_change != motion.extruder) tool_change(active_extruder_before_filament_change); #endif diff --git a/Marlin/src/gcode/feature/pause/M701_M702.cpp b/Marlin/src/gcode/feature/pause/M701_M702.cpp index dcdc1c9cbc..b7f5a47bae 100644 --- a/Marlin/src/gcode/feature/pause/M701_M702.cpp +++ b/Marlin/src/gcode/feature/pause/M701_M702.cpp @@ -59,7 +59,7 @@ void GcodeSuite::M701() { xyz_pos_t park_point = NOZZLE_PARK_POINT; // Don't raise Z if the machine isn't homed - if (TERN0(NO_MOTION_BEFORE_HOMING, axes_should_home())) park_point.z = 0; + if (TERN0(NO_MOTION_BEFORE_HOMING, motion.axes_should_home())) park_point.z = 0; #if ENABLED(MIXING_EXTRUDER) const int8_t eindex = get_target_e_stepper_from_command(); @@ -71,7 +71,7 @@ void GcodeSuite::M701() { MIXER_STEPPER_LOOP(i) mixer.set_collector(i, i == uint8_t(eindex) ? 1.0 : 0.0); mixer.normalize(); - const int8_t target_extruder = active_extruder; + const int8_t target_extruder = motion.extruder; #else const int8_t target_extruder = get_target_extruder_from_command(); if (target_extruder < 0) return; @@ -85,21 +85,21 @@ void GcodeSuite::M701() { #if HAS_MULTI_EXTRUDER && (HAS_PRUSA_MMU1 || !HAS_MMU) // Change toolhead if specified - uint8_t active_extruder_before_filament_change = active_extruder; - if (active_extruder != target_extruder) + uint8_t active_extruder_before_filament_change = motion.extruder; + if (motion.extruder != target_extruder) tool_change(target_extruder); #endif auto move_z_by = [](const float zdist) { if (zdist) { - destination = current_position; - destination.z += zdist; - prepare_internal_move_to_destination(NOZZLE_PARK_Z_FEEDRATE); + motion.destination = motion.position; + motion.destination.z += zdist; + motion.prepare_internal_move_to_destination(NOZZLE_PARK_Z_FEEDRATE); } }; // Raise the Z axis (with max limit) - const float park_raise = _MIN(park_point.z, (Z_MAX_POS) - current_position.z); + const float park_raise = _MIN(park_point.z, (Z_MAX_POS) - motion.position.z); move_z_by(park_raise); // Load filament @@ -111,7 +111,7 @@ void GcodeSuite::M701() { constexpr float purge_length = ADVANCED_PAUSE_PURGE_LENGTH, slow_load_length = FILAMENT_CHANGE_SLOW_LOAD_LENGTH; const float fast_load_length = ABS(parser.seenval('L') ? parser.value_axis_units(E_AXIS) - : fc_settings[active_extruder].load_length); + : fc_settings[motion.extruder].load_length); load_filament( slow_load_length, fast_load_length, purge_length, FILAMENT_CHANGE_ALERT_BEEPS, @@ -127,7 +127,7 @@ void GcodeSuite::M701() { #if HAS_MULTI_EXTRUDER && (HAS_PRUSA_MMU1 || !HAS_MMU) // Restore toolhead if it was changed - if (active_extruder_before_filament_change != active_extruder) + if (active_extruder_before_filament_change != motion.extruder) tool_change(active_extruder_before_filament_change); #endif @@ -152,7 +152,7 @@ void GcodeSuite::M702() { xyz_pos_t park_point = NOZZLE_PARK_POINT; // Don't raise Z if the machine isn't homed - if (TERN0(NO_MOTION_BEFORE_HOMING, axes_should_home())) park_point.z = 0; + if (TERN0(NO_MOTION_BEFORE_HOMING, motion.axes_should_home())) park_point.z = 0; #if ENABLED(MIXING_EXTRUDER) const uint8_t old_mixing_tool = mixer.get_current_vtool(); @@ -176,7 +176,7 @@ void GcodeSuite::M702() { mixer.normalize(); } - const int8_t target_extruder = active_extruder; + const int8_t target_extruder = motion.extruder; #else const int8_t target_extruder = get_target_extruder_from_command(); if (target_extruder < 0) return; @@ -190,14 +190,14 @@ void GcodeSuite::M702() { #if HAS_MULTI_EXTRUDER && (HAS_PRUSA_MMU1 || !HAS_MMU) // Change toolhead if specified - uint8_t active_extruder_before_filament_change = active_extruder; - if (active_extruder != target_extruder) + uint8_t active_extruder_before_filament_change = motion.extruder; + if (motion.extruder != target_extruder) tool_change(target_extruder); #endif // Lift Z axis if (park_point.z > 0) - do_blocking_move_to_z(_MIN(current_position.z + park_point.z, Z_MAX_POS), feedRate_t(NOZZLE_PARK_Z_FEEDRATE)); + motion.blocking_move_z(_MIN(motion.position.z + park_point.z, Z_MAX_POS), feedRate_t(NOZZLE_PARK_Z_FEEDRATE)); // Unload filament #if HAS_PRUSA_MMU3 @@ -208,7 +208,7 @@ void GcodeSuite::M702() { #if ALL(HAS_MULTI_EXTRUDER, FILAMENT_UNLOAD_ALL_EXTRUDERS) if (!parser.seenval('T')) { HOTEND_LOOP() { - if (e != active_extruder) tool_change(e); + if (e != motion.extruder) tool_change(e); unload_filament(-fc_settings[e].unload_length, true, PAUSE_MODE_UNLOAD_FILAMENT); } } @@ -229,11 +229,11 @@ void GcodeSuite::M702() { // Restore Z axis if (park_point.z > 0) - do_blocking_move_to_z(_MAX(current_position.z - park_point.z, 0), feedRate_t(NOZZLE_PARK_Z_FEEDRATE)); + motion.blocking_move_z(_MAX(motion.position.z - park_point.z, 0), feedRate_t(NOZZLE_PARK_Z_FEEDRATE)); #if HAS_MULTI_EXTRUDER && (HAS_PRUSA_MMU1 || !HAS_MMU) // Restore toolhead if it was changed - if (active_extruder_before_filament_change != active_extruder) + if (active_extruder_before_filament_change != motion.extruder) tool_change(active_extruder_before_filament_change); #endif diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp index 10a6f3d65b..e84b367e7a 100644 --- a/Marlin/src/gcode/gcode.cpp +++ b/Marlin/src/gcode/gcode.cpp @@ -126,7 +126,7 @@ void GcodeSuite::say_units() { } /** - * Get the target extruder from the T parameter or the active_extruder + * Get the target extruder from the T parameter or the motion.extruder * Return -1 if the T parameter is out of range */ int8_t GcodeSuite::get_target_extruder_from_command() { @@ -137,7 +137,7 @@ int8_t GcodeSuite::get_target_extruder_from_command() { SERIAL_ECHOLN(C('M'), parser.codenum, F(" " STR_INVALID_EXTRUDER " "), e); return -1; } - return active_extruder; + return motion.extruder; } /** @@ -181,22 +181,22 @@ void GcodeSuite::get_destination_from_command() { if ( (seen[i] = parser.seenval(AXIS_CHAR(i))) ) { const float v = parser.value_axis_units((AxisEnum)i); if (skip_move) - destination[i] = current_position[i]; + motion.destination[i] = motion.position[i]; else - destination[i] = axis_is_relative((AxisEnum)i) ? current_position[i] + v : LOGICAL_TO_NATIVE(v, i); + motion.destination[i] = axis_is_relative((AxisEnum)i) ? motion.position[i] + v : motion.logical_to_native(v, (AxisEnum)i); } else - destination[i] = current_position[i]; + motion.destination[i] = motion.position[i]; } #if HAS_EXTRUDERS // Get new E position, whether absolute or relative if ( (seen.e = parser.seenval('E')) ) { const float v = parser.value_axis_units(E_AXIS); - destination.e = axis_is_relative(E_AXIS) ? current_position.e + v : v; + motion.destination.e = axis_is_relative(E_AXIS) ? motion.position.e + v : v; } else - destination.e = current_position.e; + motion.destination.e = motion.position.e; #endif #if ENABLED(POWER_LOSS_RECOVERY) && !PIN_EXISTS(POWER_LOSS) @@ -207,14 +207,14 @@ void GcodeSuite::get_destination_from_command() { if (parser.floatval('F') > 0) { const float fr_mm_min = parser.value_linear_units(); - feedrate_mm_s = MMM_TO_MMS(fr_mm_min); + motion.feedrate_mm_s = MMM_TO_MMS(fr_mm_min); // Update the cutter feed rate for use by M4 I set inline moves. TERN_(LASER_FEATURE, cutter.feedrate_mm_m = fr_mm_min); } #if ALL(PRINTCOUNTER, HAS_EXTRUDERS) if (!DEBUGGING(DRYRUN) && !skip_move) - print_job_timer.incFilamentUsed(destination.e - current_position.e); + print_job_timer.incFilamentUsed(motion.destination.e - motion.position.e); #endif // Get ABCDHI mixing factors @@ -904,7 +904,7 @@ void GcodeSuite::process_parsed_command(bool no_ok/*=false*/) { #endif #if HAS_HOME_OFFSET - case 428: M428(); break; // M428: Apply current_position to home_offset + case 428: M428(); break; // M428: Apply position to home_offset #endif #if HAS_POWER_MONITOR @@ -1273,15 +1273,15 @@ void GcodeSuite::process_subcommands_now(char * gcode) { case IN_HANDLER: case IN_PROCESS: SERIAL_ECHO_MSG(STR_BUSY_PROCESSING); - TERN_(FULL_REPORT_TO_HOST_FEATURE, report_current_position_moving()); + TERN_(FULL_REPORT_TO_HOST_FEATURE, motion.report_position_moving()); break; case PAUSED_FOR_USER: SERIAL_ECHO_MSG(STR_BUSY_PAUSED_FOR_USER); - TERN_(FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate(M_HOLD)); + TERN_(FULL_REPORT_TO_HOST_FEATURE, motion.set_and_report_grblstate(M_HOLD)); break; case PAUSED_FOR_INPUT: SERIAL_ECHO_MSG(STR_BUSY_PAUSED_FOR_INPUT); - TERN_(FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate(M_HOLD)); + TERN_(FULL_REPORT_TO_HOST_FEATURE, motion.set_and_report_grblstate(M_HOLD)); break; default: break; diff --git a/Marlin/src/gcode/gcode.h b/Marlin/src/gcode/gcode.h index 378a1a73f4..d80305fb75 100644 --- a/Marlin/src/gcode/gcode.h +++ b/Marlin/src/gcode/gcode.h @@ -247,7 +247,7 @@ * M421 - Set a single Z coordinate in the Mesh Leveling grid. X Y Z (Requires MESH_BED_LEVELING, AUTO_BED_LEVELING_BILINEAR, or AUTO_BED_LEVELING_UBL) * M422 - Set Z Stepper automatic alignment position using probe. X Y A (Requires Z_STEPPER_AUTO_ALIGN) * M425 - Enable/Disable and tune backlash correction. (Requires BACKLASH_COMPENSATION and BACKLASH_GCODE) - * M428 - Set the home_offset based on the current_position. Nearest edge applies. (Disabled by NO_WORKSPACE_OFFSETS or DELTA) + * M428 - Set the home_offset based on the position. Nearest edge applies. (Disabled by NO_WORKSPACE_OFFSETS or DELTA) * M430 - Read the system current, voltage, and power (Requires POWER_MONITOR_CURRENT, POWER_MONITOR_VOLTAGE, or POWER_MONITOR_FIXED_VOLTAGE) * M485 - Send RS485 packets (Requires RS485_SERIAL_PORT) * M486 - Identify and cancel objects. (Requires CANCEL_OBJECTS) diff --git a/Marlin/src/gcode/geometry/G53-G59.cpp b/Marlin/src/gcode/geometry/G53-G59.cpp index 017b54a084..1539ab61b5 100644 --- a/Marlin/src/gcode/geometry/G53-G59.cpp +++ b/Marlin/src/gcode/geometry/G53-G59.cpp @@ -37,7 +37,7 @@ bool GcodeSuite::select_coordinate_system(const int8_t _new) { xyz_float_t new_offset{0}; if (WITHIN(_new, 0, MAX_COORDINATE_SYSTEMS - 1)) new_offset = coordinate_system[_new]; - workspace_offset = new_offset; + motion.workspace_offset = new_offset; return true; } @@ -55,7 +55,7 @@ void GcodeSuite::G53() { select_coordinate_system(-1); // Always remove workspace offsets #ifdef DEBUG_M53 SERIAL_ECHOLNPGM("Go to native space"); - report_current_position(); + motion.report_position(); #endif if (parser.chain()) { // Command to chain? @@ -63,7 +63,7 @@ void GcodeSuite::G53() { select_coordinate_system(old_system); #ifdef DEBUG_M53 SERIAL_ECHOLNPGM("Go back to workspace ", old_system); - report_current_position(); + motion.report_position(); #endif } } @@ -81,7 +81,7 @@ void G54_59(uint8_t subcode=0) { const int8_t _space = parser.codenum - 54 + subcode; if (gcode.select_coordinate_system(_space)) { SERIAL_ECHOLNPGM("Select workspace ", _space); - report_current_position(); + motion.report_position(); } } void GcodeSuite::G54() { G54_59(); } diff --git a/Marlin/src/gcode/geometry/G92.cpp b/Marlin/src/gcode/geometry/G92.cpp index cfdff51eba..6b4b2bb32b 100644 --- a/Marlin/src/gcode/geometry/G92.cpp +++ b/Marlin/src/gcode/geometry/G92.cpp @@ -59,16 +59,16 @@ void GcodeSuite::G92() { #endif switch (subcode_G92) { - default: return; // Ignore unknown G92.x + default: return; // Ignore unknown G92.x #if ENABLED(CNC_COORDINATE_SYSTEMS) && !IS_SCARA - case 1: // G92.1 - Zero the Workspace Offset - workspace_offset.reset(); + case 1: // G92.1 - Zero the Workspace Offset + motion.workspace_offset.reset(); break; #endif #if ANY(POWER_LOSS_RECOVERY, HAS_ROTATIONAL_AXES) - case 9: // G92.9 - Set Current Position directly (like Marlin 1.0) + case 9: // G92.9 - Set Current Position directly (like Marlin 1.0) LOOP_LOGICAL_AXES(i) { if (parser.seenval(AXIS_CHAR(i))) { if (TERN1(HAS_EXTRUDERS, i != E_AXIS)) @@ -76,7 +76,7 @@ void GcodeSuite::G92() { else { TERN_(HAS_EXTRUDERS, sync_E = true); } - current_position[i] = parser.value_axis_units((AxisEnum)i); + motion.position[i] = parser.value_axis_units((AxisEnum)i); } } break; @@ -86,17 +86,17 @@ void GcodeSuite::G92() { LOOP_LOGICAL_AXES(i) { if (parser.seenval(AXIS_CHAR(i))) { const float l = parser.value_axis_units((AxisEnum)i), // Given axis coordinate value, converted to millimeters - v = TERN0(HAS_EXTRUDERS, i == E_AXIS) ? l : LOGICAL_TO_NATIVE(l, i), // Axis position in NATIVE space (applying the existing offset) - d = v - current_position[i]; // How much is the current axis position altered by? + v = TERN0(HAS_EXTRUDERS, i == E_AXIS) ? l : motion.logical_to_native(l, (AxisEnum)i), // Axis position in NATIVE space (applying the existing offset) + d = v - motion.position[i]; // How much is the current axis position altered by? if (!NEAR_ZERO(d)) { #if HAS_WORKSPACE_OFFSET && NONE(IS_SCARA, POLARGRAPH) // When using workspaces... if (TERN1(HAS_EXTRUDERS, i != E_AXIS)) { - workspace_offset[i] += d; // ...most axes offset the workspace... + motion.workspace_offset[i] += d; // ...most axes offset the workspace... } else { #if HAS_EXTRUDERS sync_E = true; - current_position.e = v; // ...but E is set directly + motion.position.e = v; // ...but E is set directly #endif } #else // Without workspaces... @@ -105,7 +105,7 @@ void GcodeSuite::G92() { else { TERN_(HAS_EXTRUDERS, sync_E = true); } - current_position[i] = v; // ...set Current Position directly (like Marlin 1.0) + motion.position[i] = v; // ...set Current Position directly (like Marlin 1.0) #endif } } @@ -116,13 +116,13 @@ void GcodeSuite::G92() { #if ENABLED(CNC_COORDINATE_SYSTEMS) // Apply Workspace Offset to the active coordinate system if (WITHIN(active_coordinate_system, 0, MAX_COORDINATE_SYSTEMS - 1)) - coordinate_system[active_coordinate_system] = workspace_offset; + coordinate_system[active_coordinate_system] = motion.workspace_offset; #endif - if (sync_XYZE) sync_plan_position(); + if (sync_XYZE) motion.sync_plan_position(); #if HAS_EXTRUDERS - else if (sync_E) sync_plan_position_e(); + else if (sync_E) motion.sync_plan_position_e(); #endif - IF_DISABLED(DIRECT_STEPPING, report_current_position()); + IF_DISABLED(DIRECT_STEPPING, motion.report_position()); } diff --git a/Marlin/src/gcode/geometry/M206_M428.cpp b/Marlin/src/gcode/geometry/M206_M428.cpp index 17bd2b1ff6..80771fb60c 100644 --- a/Marlin/src/gcode/geometry/M206_M428.cpp +++ b/Marlin/src/gcode/geometry/M206_M428.cpp @@ -37,13 +37,13 @@ void GcodeSuite::M206() { if (!parser.seen_any()) return M206_report(); LOOP_NUM_AXES(a) - if (parser.seenval(AXIS_CHAR(a))) set_home_offset((AxisEnum)a, parser.value_axis_units((AxisEnum)a)); + if (parser.seenval(AXIS_CHAR(a))) motion.set_home_offset((AxisEnum)a, parser.value_axis_units((AxisEnum)a)); #if ENABLED(MORGAN_SCARA) - if (parser.seenval('T')) set_home_offset(A_AXIS, parser.value_float()); // Theta - if (parser.seenval('P')) set_home_offset(B_AXIS, parser.value_float()); // Psi + if (parser.seenval('T')) motion.set_home_offset(A_AXIS, parser.value_float()); // Theta + if (parser.seenval('P')) motion.set_home_offset(B_AXIS, parser.value_float()); // Psi #endif - report_current_position(); + motion.report_position(); } void GcodeSuite::M206_report(const bool forReplay/*=true*/) { @@ -52,24 +52,24 @@ void GcodeSuite::M206_report(const bool forReplay/*=true*/) { report_heading_etc(forReplay, F(STR_HOME_OFFSET)); #if IS_CARTESIAN SERIAL_ECHOLNPGM_P(NUM_AXIS_PAIRED_LIST( - PSTR(" M206 X"), LINEAR_UNIT(home_offset.x), - SP_Y_STR, LINEAR_UNIT(home_offset.y), - SP_Z_STR, LINEAR_UNIT(home_offset.z), - SP_I_STR, I_AXIS_UNIT(home_offset.i), - SP_J_STR, J_AXIS_UNIT(home_offset.j), - SP_K_STR, K_AXIS_UNIT(home_offset.k), - SP_U_STR, U_AXIS_UNIT(home_offset.u), - SP_V_STR, V_AXIS_UNIT(home_offset.v), - SP_W_STR, W_AXIS_UNIT(home_offset.w) + PSTR(" M206 X"), LINEAR_UNIT(motion.home_offset.x), + SP_Y_STR, LINEAR_UNIT(motion.home_offset.y), + SP_Z_STR, LINEAR_UNIT(motion.home_offset.z), + SP_I_STR, I_AXIS_UNIT(motion.home_offset.i), + SP_J_STR, J_AXIS_UNIT(motion.home_offset.j), + SP_K_STR, K_AXIS_UNIT(motion.home_offset.k), + SP_U_STR, U_AXIS_UNIT(motion.home_offset.u), + SP_V_STR, V_AXIS_UNIT(motion.home_offset.v), + SP_W_STR, W_AXIS_UNIT(motion.home_offset.w) )); #else - SERIAL_ECHOLNPGM_P(PSTR(" M206 Z"), LINEAR_UNIT(home_offset.z)); + SERIAL_ECHOLNPGM_P(PSTR(" M206 Z"), LINEAR_UNIT(motion.home_offset.z)); #endif } /** * M428: Set home_offset based on the distance between the - * current_position and the nearest "reference point." + * current position and the nearest "reference point." * If an axis is past center its endstop position * is the reference-point. Otherwise it uses 0. This allows * the Z offset to be set near the bed when using a max endstop. @@ -79,13 +79,13 @@ void GcodeSuite::M206_report(const bool forReplay/*=true*/) { * Use M206 to set these values directly. */ void GcodeSuite::M428() { - if (homing_needed_error()) return; + if (motion.homing_needed_error()) return; xyz_float_t diff; LOOP_NUM_AXES(i) { - diff[i] = base_home_pos((AxisEnum)i) - current_position[i]; + diff[i] = base_home_pos((AxisEnum)i) - motion.position[i]; if (!WITHIN(diff[i], -20, 20) && home_dir((AxisEnum)i) > 0) - diff[i] = -current_position[i]; + diff[i] = -motion.position[i]; if (!WITHIN(diff[i], -20, 20)) { SERIAL_ERROR_MSG(STR_ERR_M428_TOO_FAR); LCD_ALERTMESSAGE(MSG_ERR_M428_TOO_FAR); @@ -94,8 +94,8 @@ void GcodeSuite::M428() { } } - LOOP_NUM_AXES(i) set_home_offset((AxisEnum)i, diff[i]); - report_current_position(); + LOOP_NUM_AXES(i) motion.set_home_offset((AxisEnum)i, diff[i]); + motion.report_position(); LCD_MESSAGE(MSG_HOME_OFFSETS_APPLIED); OKAY_BUZZ(); } diff --git a/Marlin/src/gcode/host/M114.cpp b/Marlin/src/gcode/host/M114.cpp index 35e618e6f2..6ae2c14502 100644 --- a/Marlin/src/gcode/host/M114.cpp +++ b/Marlin/src/gcode/host/M114.cpp @@ -39,20 +39,21 @@ inline void report_linear_axis_pos(const xyze_pos_t &pos) { report_all_axis_pos(pos, 3); } void report_linear_axis_pos(const xyz_pos_t &pos, const uint8_t precision=3) { - LOOP_NUM_AXES(a) SERIAL_ECHO(FPSTR(pgm_read_ptr(&SP_AXIS_LBL[a])), p_float_t(pos[a], precision)); + LOOP_NUM_AXES(a) + SERIAL_ECHO(FPSTR(pgm_read_ptr(&SP_AXIS_LBL[a])), p_float_t(pos[a], precision)); SERIAL_EOL(); } void report_current_position_detail() { // Position as sent by G-code SERIAL_ECHOPGM("\nLogical:"); - report_linear_axis_pos(current_position.asLogical()); + report_linear_axis_pos(motion.position.asLogical()); // Cartesian position in native machine space SERIAL_ECHOPGM("Raw: "); - report_linear_axis_pos(current_position); + report_linear_axis_pos(motion.position); - xyze_pos_t leveled = current_position; + xyze_pos_t leveled = motion.position; #if HAS_LEVELING // Current position with leveling applied @@ -71,7 +72,7 @@ // Kinematics applied to the leveled position SERIAL_ECHOPGM(TERN(POLAR, "Polar", TERN(IS_SCARA, "SCARA", "Delta")) "K: " ); inverse_kinematics(leveled); // writes delta[] - report_linear_axis_pos(delta); + report_linear_axis_pos(motion.delta); #endif planner.synchronize(); @@ -92,10 +93,10 @@ #endif SERIAL_ECHOPGM("FromStp:"); - get_cartesian_from_steppers(); // Writes 'cartes' (with forward kinematics) + motion.get_cartesian_from_steppers(); // Writes 'motion.cartes' (with forward kinematics) xyze_pos_t from_steppers = LOGICAL_AXIS_ARRAY( planner.get_axis_position_mm(E_AXIS), - cartes.x, cartes.y, cartes.z, + motion.cartes.x, motion.cartes.y, motion.cartes.z, planner.get_axis_position_mm(I_AXIS), planner.get_axis_position_mm(J_AXIS), planner.get_axis_position_mm(K_AXIS), @@ -109,7 +110,7 @@ SERIAL_ECHOPGM("Diff: "); report_all_axis_pos(diff); - TERN_(FULL_REPORT_TO_HOST_FEATURE, report_current_grblstate_moving()); + TERN_(FULL_REPORT_TO_HOST_FEATURE, motion.report_current_grblstate_moving()); } #endif // M114_DETAIL @@ -133,7 +134,7 @@ void GcodeSuite::M114() { #if ENABLED(M114_DETAIL) if (parser.seen_test('D')) { IF_DISABLED(M114_LEGACY, planner.synchronize()); - report_current_position(); + motion.report_position(); report_current_position_detail(); return; } @@ -145,10 +146,10 @@ void GcodeSuite::M114() { #endif #endif - TERN_(M114_REALTIME, if (parser.seen_test('R')) return report_real_position()); + TERN_(M114_REALTIME, if (parser.seen_test('R')) return motion.report_position_real()); TERN_(M114_LEGACY, planner.synchronize()); - report_current_position_projected(); + motion.report_position_projected(); - TERN_(FULL_REPORT_TO_HOST_FEATURE, report_current_grblstate_moving()); + TERN_(FULL_REPORT_TO_HOST_FEATURE, motion.report_current_grblstate_moving()); } diff --git a/Marlin/src/gcode/host/M115.cpp b/Marlin/src/gcode/host/M115.cpp index 19d0ae9b63..0e059e6584 100644 --- a/Marlin/src/gcode/host/M115.cpp +++ b/Marlin/src/gcode/host/M115.cpp @@ -254,8 +254,8 @@ void GcodeSuite::M115() { dmin = NUM_AXIS_ARRAY(X_MIN_POS, Y_MIN_POS, Z_MIN_POS, I_MIN_POS, J_MIN_POS, K_MIN_POS, U_MIN_POS, V_MIN_POS, W_MIN_POS), dmax = NUM_AXIS_ARRAY(X_MAX_POS, Y_MAX_POS, Z_MAX_POS, I_MAX_POS, J_MAX_POS, K_MAX_POS, U_MAX_POS, V_MAX_POS, W_MAX_POS); xyz_pos_t cmin = bmin, cmax = bmax; - apply_motion_limits(cmin); - apply_motion_limits(cmax); + motion.apply_limits(cmin); + motion.apply_limits(cmax); const xyz_pos_t lmin = dmin.asLogical(), lmax = dmax.asLogical(), wmin = cmin.asLogical(), wmax = cmax.asLogical(); diff --git a/Marlin/src/gcode/host/M154.cpp b/Marlin/src/gcode/host/M154.cpp index 156e6b69b6..daba03b10a 100644 --- a/Marlin/src/gcode/host/M154.cpp +++ b/Marlin/src/gcode/host/M154.cpp @@ -33,7 +33,7 @@ void GcodeSuite::M154() { if (parser.seenval('S')) - position_auto_reporter.set_interval(parser.value_byte()); + motion.position_auto_reporter.set_interval(parser.value_byte()); } diff --git a/Marlin/src/gcode/host/M360.cpp b/Marlin/src/gcode/host/M360.cpp index d5f54a81a1..0792595ec5 100644 --- a/Marlin/src/gcode/host/M360.cpp +++ b/Marlin/src/gcode/host/M360.cpp @@ -171,8 +171,8 @@ void GcodeSuite::M360() { const xyz_pos_t dmin = NUM_AXIS_ARRAY(X_MIN_POS, Y_MIN_POS, Z_MIN_POS, I_MIN_POS, J_MIN_POS, K_MIN_POS, U_MIN_POS, V_MIN_POS, W_MIN_POS), dmax = NUM_AXIS_ARRAY(X_MAX_POS, Y_MAX_POS, Z_MAX_POS, I_MAX_POS, J_MAX_POS, K_MAX_POS, U_MAX_POS, V_MAX_POS, W_MAX_POS); xyz_pos_t cmin = dmin, cmax = dmax; - apply_motion_limits(cmin); - apply_motion_limits(cmax); + motion.apply_limits(cmin); + motion.apply_limits(cmax); const xyz_pos_t wmin = cmin.asLogical(), wmax = cmax.asLogical(); PGMSTR(MIN_STR, "Min"); diff --git a/Marlin/src/gcode/motion/G0_G1.cpp b/Marlin/src/gcode/motion/G0_G1.cpp index b489b659ae..f2386841ca 100644 --- a/Marlin/src/gcode/motion/G0_G1.cpp +++ b/Marlin/src/gcode/motion/G0_G1.cpp @@ -39,8 +39,6 @@ #include "../../lcd/sovol_rts/sovol_rts.h" #endif -extern xyze_pos_t destination; - #if ENABLED(VARIABLE_G0_FEEDRATE) feedRate_t fast_move_feedrate = MMM_TO_MMS(G0_FEEDRATE); #endif @@ -51,27 +49,27 @@ extern xyze_pos_t destination; void GcodeSuite::G0_G1(TERN_(HAS_FAST_MOVES, const bool fast_move/*=false*/)) { if (!MOTION_CONDITIONS) return; - TERN_(FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate(M_RUNNING)); + TERN_(FULL_REPORT_TO_HOST_FEATURE, motion.set_and_report_grblstate(M_RUNNING)); #ifdef G0_FEEDRATE feedRate_t old_feedrate; #if ENABLED(VARIABLE_G0_FEEDRATE) if (fast_move) { - old_feedrate = feedrate_mm_s; // Back up the (old) motion mode feedrate - feedrate_mm_s = fast_move_feedrate; // Get G0 feedrate from last usage + old_feedrate = motion.feedrate_mm_s; // Back up the (old) motion mode feedrate + motion.feedrate_mm_s = fast_move_feedrate; // Get G0 feedrate from last usage } #endif #endif - get_destination_from_command(); // Get X Y [Z[I[J[K]]]] [E] F (and set cutter power) + get_destination_from_command(); // Get X Y [Z[I[J[K]]]] [E] F (and set cutter power) #ifdef G0_FEEDRATE if (fast_move) { #if ENABLED(VARIABLE_G0_FEEDRATE) - fast_move_feedrate = feedrate_mm_s; // Save feedrate for the next G0 + fast_move_feedrate = motion.feedrate_mm_s; // Save feedrate for the next G0 #else - old_feedrate = feedrate_mm_s; // Back up the (new) motion mode feedrate - feedrate_mm_s = MMM_TO_MMS(G0_FEEDRATE); // Get the fixed G0 feedrate + old_feedrate = motion.feedrate_mm_s; // Back up the (new) motion mode feedrate + motion.feedrate_mm_s = MMM_TO_MMS(G0_FEEDRATE); // Get the fixed G0 feedrate #endif } #endif @@ -83,12 +81,11 @@ void GcodeSuite::G0_G1(TERN_(HAS_FAST_MOVES, const bool fast_move/*=false*/)) { if (fwretract.autoretract_enabled && parser.seen_test('E') && !parser.seen(STR_AXES_MAIN) ) { - const float echange = destination.e - current_position.e; + const float echange = motion.destination.e - motion.position.e; // Is this a retract or recover move? - if (WITHIN(ABS(echange), MIN_AUTORETRACT, MAX_AUTORETRACT) && fwretract.retracted[active_extruder] == (echange > 0.0)) { - current_position.e = destination.e; // Hide a G1-based retract/recover from calculations - sync_plan_position_e(); // AND from the planner - fwretract.retract(echange < 0.0); // Firmware-based retract/recover (double-retract ignored) + if (WITHIN(ABS(echange), MIN_AUTORETRACT, MAX_AUTORETRACT) && fwretract.retracted[motion.extruder] == (echange > 0.0f)) { + motion.set_and_sync_e(motion.destination.e); // Hide a G1-based retract/recover from calculations AND from the planner + fwretract.retract(echange < 0.0f); // Firmware-based retract/recover (double-retract ignored) return; } } @@ -97,14 +94,14 @@ void GcodeSuite::G0_G1(TERN_(HAS_FAST_MOVES, const bool fast_move/*=false*/)) { #endif // FWRETRACT #if ANY(IS_SCARA, POLAR) - fast_move ? prepare_fast_move_to_destination() : prepare_line_to_destination(); + fast_move ? motion.prepare_fast_move_to_destination() : motion.prepare_line_to_destination(); #else - prepare_line_to_destination(); + motion.prepare_line_to_destination(); #endif #ifdef G0_FEEDRATE // Restore the motion mode feedrate - if (fast_move) feedrate_mm_s = old_feedrate; + if (fast_move) motion.feedrate_mm_s = old_feedrate; #endif #if ENABLED(NANODLP_Z_SYNC) @@ -117,9 +114,9 @@ void GcodeSuite::G0_G1(TERN_(HAS_FAST_MOVES, const bool fast_move/*=false*/)) { planner.synchronize(); SERIAL_ECHOLNPGM(STR_Z_MOVE_COMP); } - TERN_(FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate(M_IDLE)); + TERN_(FULL_REPORT_TO_HOST_FEATURE, motion.set_and_report_grblstate(M_IDLE)); #else - TERN_(FULL_REPORT_TO_HOST_FEATURE, report_current_grblstate_moving()); + TERN_(FULL_REPORT_TO_HOST_FEATURE, motion.report_current_grblstate_moving()); #endif TERN_(SOVOL_SV06_RTS, RTS_PauseMoveAxisPage()); diff --git a/Marlin/src/gcode/motion/G2_G3.cpp b/Marlin/src/gcode/motion/G2_G3.cpp index 9c5dd27f0f..a885c3a17b 100644 --- a/Marlin/src/gcode/motion/G2_G3.cpp +++ b/Marlin/src/gcode/motion/G2_G3.cpp @@ -51,7 +51,7 @@ */ void plan_arc( const xyze_pos_t &cart, // Destination position - const ab_float_t &offset, // Center of rotation relative to current_position + const ab_float_t &offset, // Center of rotation relative to motion.position const bool clockwise, // Clockwise? const uint8_t circles // Take the scenic route ) { @@ -71,22 +71,22 @@ void plan_arc( ab_float_t rvec = -offset; const float radius = HYPOT(rvec.a, rvec.b), - center_P = current_position[axis_p] - rvec.a, - center_Q = current_position[axis_q] - rvec.b, + center_P = motion.position[axis_p] - rvec.a, + center_Q = motion.position[axis_q] - rvec.b, rt_X = cart[axis_p] - center_P, rt_Y = cart[axis_q] - center_Q; // Starting position of the move for all non-arc axes // i.e., only one of X, Y, or Z, plus the rest. ARC_LIJKUVWE_CODE( - float start_L = current_position[axis_l], - float start_I = current_position.i, - float start_J = current_position.j, - float start_K = current_position.k, - float start_U = current_position.u, - float start_V = current_position.v, - float start_W = current_position.w, - float start_E = current_position.e + float start_L = motion.position[axis_l], + float start_I = motion.position.i, + float start_J = motion.position.j, + float start_K = motion.position.k, + float start_U = motion.position.u, + float start_V = motion.position.v, + float start_W = motion.position.w, + float start_E = motion.position.e ); // Angle of rotation between position and target from the circle center. @@ -96,7 +96,7 @@ void plan_arc( uint16_t min_segments = 1; // Do a full circle if starting and ending positions are "identical" - if (NEAR(current_position[axis_p], cart[axis_p]) && NEAR(current_position[axis_q], cart[axis_q])) { + if (NEAR(motion.position[axis_p], cart[axis_p]) && NEAR(motion.position[axis_q], cart[axis_q])) { // Preserve direction for circles angular_travel = clockwise ? -RADIANS(360) : RADIANS(360); abs_angular_travel = RADIANS(360); @@ -150,7 +150,7 @@ void plan_arc( const float per_circle_E = travel_E * part_per_circle // E movement per circle ); - xyze_pos_t temp_position = current_position; + xyze_pos_t temp_position = motion.position; for (uint16_t n = circles; n--;) { ARC_LIJKUVWE_CODE( // Destination Linear Axes temp_position[axis_l] += per_circle_L, // Linear X, Y, or Z @@ -167,14 +167,14 @@ void plan_arc( // Get starting coordinates for the remainder from the current position ARC_LIJKUVWE_CODE( - start_L = current_position[axis_l], - start_I = current_position.i, - start_J = current_position.j, - start_K = current_position.k, - start_U = current_position.u, - start_V = current_position.v, - start_W = current_position.w, - start_E = current_position.e + start_L = motion.position[axis_l], + start_I = motion.position.i, + start_J = motion.position.j, + start_K = motion.position.k, + start_U = motion.position.u, + start_V = motion.position.v, + start_W = motion.position.w, + start_E = motion.position.e ); // Update travel distance for the remainder @@ -212,7 +212,7 @@ void plan_arc( } // Feedrate for the move, scaled by the feedrate multiplier - const feedRate_t scaled_fr_mm_s = MMS_SCALED(feedrate_mm_s); + const feedRate_t scaled_fr_mm_s = motion.mms_scaled(); // Get the ideal segment length for the move based on settings const float ideal_segment_mm = ( @@ -361,7 +361,7 @@ void plan_arc( raw.e = start_E + per_segment_E * i ); - apply_motion_limits(raw); + motion.apply_limits(raw); #if HAS_LEVELING && !PLANNER_LEVELING planner.apply_leveling(raw); @@ -371,7 +371,7 @@ void plan_arc( const float arc_mm_remaining = flat_mm - segment_mm * i; hints.safe_exit_speed_sqr = _MIN(limiting_speed_sqr, 2 * limiting_accel * arc_mm_remaining); - if (!planner.buffer_line(raw, scaled_fr_mm_s, active_extruder, hints)) + if (!planner.buffer_line(raw, scaled_fr_mm_s, motion.extruder, hints)) break; hints.curve_radius = radius; @@ -381,7 +381,7 @@ void plan_arc( // Ensure last segment arrives at target location. raw = cart; - apply_motion_limits(raw); + motion.apply_limits(raw); #if HAS_LEVELING && !PLANNER_LEVELING planner.apply_leveling(raw); @@ -389,9 +389,9 @@ void plan_arc( hints.curve_radius = 0; hints.safe_exit_speed_sqr = 0.0f; - planner.buffer_line(raw, scaled_fr_mm_s, active_extruder, hints); + planner.buffer_line(raw, scaled_fr_mm_s, motion.extruder, hints); - current_position = cart; + motion.position = cart; } // plan_arc @@ -425,22 +425,22 @@ void plan_arc( void GcodeSuite::G2_G3(const bool clockwise) { if (!MOTION_CONDITIONS) return; - TERN_(FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate(M_RUNNING)); + TERN_(FULL_REPORT_TO_HOST_FEATURE, motion.set_and_report_grblstate(M_RUNNING)); #if ENABLED(SF_ARC_FIX) - const bool relative_mode_backup = relative_mode; - relative_mode = true; + const bool relative_mode_backup = motion.relative_mode; + motion.relative_mode = true; #endif get_destination_from_command(); // Get X Y [Z[I[J[K...]]]] [E] F (and set cutter power) - TERN_(SF_ARC_FIX, relative_mode = relative_mode_backup); + TERN_(SF_ARC_FIX, motion.relative_mode = relative_mode_backup); ab_float_t arc_offset = { 0, 0 }; if (parser.seenval('R')) { const float r = parser.value_linear_units(); if (r) { - const xy_pos_t p1 = current_position, p2 = destination; + const xy_pos_t p1 = motion.position, p2 = motion.destination; if (p1 != p2) { const xy_pos_t d2 = (p2 - p1) * 0.5f; // XY vector to midpoint of move from current const float e = clockwise ^ (r < 0) ? -1 : 1, // clockwise -1/1, counterclockwise 1/-1 @@ -480,13 +480,13 @@ void GcodeSuite::G2_G3(const bool clockwise) { #endif // Send the arc to the planner - plan_arc(destination, arc_offset, clockwise, circles_to_do); + plan_arc(motion.destination, arc_offset, clockwise, circles_to_do); reset_stepper_timeout(); } else SERIAL_ERROR_MSG(STR_ERR_ARC_ARGS); - TERN_(FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate(M_IDLE)); + TERN_(FULL_REPORT_TO_HOST_FEATURE, motion.set_and_report_grblstate(M_IDLE)); } #endif // ARC_SUPPORT diff --git a/Marlin/src/gcode/motion/G5.cpp b/Marlin/src/gcode/motion/G5.cpp index 64aafffba2..227ea0792e 100644 --- a/Marlin/src/gcode/motion/G5.cpp +++ b/Marlin/src/gcode/motion/G5.cpp @@ -60,8 +60,8 @@ void GcodeSuite::G5() { { parser.linearval('P'), parser.linearval('Q') } }; - cubic_b_spline(current_position, destination, offsets, MMS_SCALED(feedrate_mm_s), active_extruder); - current_position = destination; + cubic_b_spline(motion.position, motion.destination, offsets, motion.mms_scaled(), motion.extruder); + motion.position = motion.destination; } #endif // BEZIER_CURVE_SUPPORT diff --git a/Marlin/src/gcode/motion/M290.cpp b/Marlin/src/gcode/motion/M290.cpp index 039f48381a..e65478b059 100644 --- a/Marlin/src/gcode/motion/M290.cpp +++ b/Marlin/src/gcode/motion/M290.cpp @@ -36,14 +36,14 @@ #if ENABLED(BABYSTEP_ZPROBE_OFFSET) FORCE_INLINE void mod_probe_offset(const float offs) { - if (TERN1(BABYSTEP_HOTEND_Z_OFFSET, active_extruder == 0)) { + if (TERN1(BABYSTEP_HOTEND_Z_OFFSET, motion.extruder == 0)) { probe.offset.z += offs; SERIAL_ECHO_MSG(STR_PROBE_OFFSET " " STR_Z, probe.offset.z); } else { #if ENABLED(BABYSTEP_HOTEND_Z_OFFSET) - hotend_offset[active_extruder].z -= offs; - SERIAL_ECHO_MSG(STR_PROBE_OFFSET STR_Z ": ", hotend_offset[active_extruder].z); + hotend_offset[motion.extruder].z -= offs; + SERIAL_ECHO_MSG(STR_PROBE_OFFSET STR_Z ": ", hotend_offset[motion.extruder].z); #endif } } @@ -93,15 +93,15 @@ void GcodeSuite::M290() { #if ENABLED(BABYSTEP_HOTEND_Z_OFFSET) { SERIAL_ECHOLNPGM_P( - PSTR("Hotend "), active_extruder + PSTR("Hotend "), motion.extruder #if ENABLED(BABYSTEP_XY) - , PSTR("Offset X"), hotend_offset[active_extruder].x - , SP_Y_STR, hotend_offset[active_extruder].y + , PSTR("Offset X"), hotend_offset[motion.extruder].x + , SP_Y_STR, hotend_offset[motion.extruder].y , SP_Z_STR #else , PSTR("Offset Z") #endif - , hotend_offset[active_extruder].z + , hotend_offset[motion.extruder].z ); } #endif diff --git a/Marlin/src/gcode/probe/G30.cpp b/Marlin/src/gcode/probe/G30.cpp index 463a4cd836..0119ed16b8 100644 --- a/Marlin/src/gcode/probe/G30.cpp +++ b/Marlin/src/gcode/probe/G30.cpp @@ -54,12 +54,12 @@ */ void GcodeSuite::G30() { - xy_pos_t probepos = current_position; + xy_pos_t probepos = motion.position; const bool seenX = parser.seenval('X'); - if (seenX) probepos.x = RAW_X_POSITION(parser.value_linear_units()); + if (seenX) probepos.x = motion.raw_x(parser.value_linear_units()); const bool seenY = parser.seenval('Y'); - if (seenY) probepos.y = RAW_Y_POSITION(parser.value_linear_units()); + if (seenY) probepos.y = motion.raw_y(parser.value_linear_units()); probe.use_probing_tool(); @@ -69,7 +69,7 @@ void GcodeSuite::G30() { TERN_(HAS_LEVELING, set_bed_leveling_enabled(false)); // Disable feedrate scaling so movement speeds are correct - remember_feedrate_scaling_off(); + motion.remember_feedrate_scaling_off(); // With VERBOSE_SINGLE_PROBE home only if needed TERN_(VERBOSE_SINGLE_PROBE, process_subcommands_now(F("G28O"))); @@ -102,15 +102,15 @@ void GcodeSuite::G30() { } // Restore feedrate scaling - restore_feedrate_and_scaling(); + motion.restore_feedrate_and_scaling(); // Move the nozzle to the position of the probe - do_blocking_move_to(probepos); + motion.blocking_move(probepos); if (raise_after == PROBE_PT_STOW) probe.move_z_after_probing(); - report_current_position(); + motion.report_position(); } else { SERIAL_ECHOLN(GET_EN_TEXT_F(MSG_ZPROBE_OUT)); diff --git a/Marlin/src/gcode/probe/G38.cpp b/Marlin/src/gcode/probe/G38.cpp index cd10b7295d..2bd8e10052 100644 --- a/Marlin/src/gcode/probe/G38.cpp +++ b/Marlin/src/gcode/probe/G38.cpp @@ -36,12 +36,12 @@ probe_target_t G38_move{0}; inline void G38_single_probe(const uint8_t move_value) { endstops.enable(true); G38_move.type = move_value; - prepare_line_to_destination(); + motion.prepare_line_to_destination(); planner.synchronize(); G38_move.type = 0; endstops.hit_on_purpose(); - set_current_from_steppers_for_axis(ALL_AXES_ENUM); - sync_plan_position(); + motion.set_current_from_steppers_for_axis(ALL_AXES_ENUM); + motion.sync_plan_position(); } /** @@ -59,7 +59,7 @@ FORCE_INLINE bool G38_run_probe() { // Get direction of move and retract xyz_float_t retract_mm; LOOP_NUM_AXES(i) { - const float dist = destination[i] - current_position[i]; + const float dist = motion.destination[i] - motion.position[i]; retract_mm[i] = ABS(dist) < G38_MINIMUM_MOVE ? 0 : home_bump_mm((AxisEnum)i) * (dist > 0 ? -1 : 1); } #endif @@ -84,15 +84,15 @@ FORCE_INLINE bool G38_run_probe() { #if MULTIPLE_PROBING > 1 // Move away by the retract distance - destination = current_position + retract_mm; + motion.destination = motion.position + retract_mm; endstops.enable(false); - prepare_line_to_destination(); + motion.prepare_line_to_destination(); planner.synchronize(); - REMEMBER(fr, feedrate_mm_s, feedrate_mm_s * 0.25); + REMEMBER(fr, motion.feedrate_mm_s, motion.feedrate_mm_s * 0.25); // Bump the target more slowly - destination -= retract_mm * 2; + motion.destination -= retract_mm * 2; G38_single_probe(move_value); #endif @@ -118,20 +118,20 @@ void GcodeSuite::G38(const int8_t subcode) { // Get X Y Z E F get_destination_from_command(); - remember_feedrate_scaling_off(); + motion.remember_feedrate_scaling_off(); const bool error_on_fail = TERN(G38_PROBE_AWAY, !TEST(subcode, 0), subcode == 2); // If any axis has enough movement, do the move LOOP_NUM_AXES(i) - if (ABS(destination[i] - current_position[i]) >= G38_MINIMUM_MOVE) { - if (!parser.seenval('F')) feedrate_mm_s = homing_feedrate((AxisEnum)i); + if (ABS(motion.destination[i] - motion.position[i]) >= G38_MINIMUM_MOVE) { + if (!parser.seenval('F')) motion.feedrate_mm_s = motion.homing_feedrate((AxisEnum)i); // If G38.2 fails throw an error if (!G38_run_probe() && error_on_fail) SERIAL_ERROR_MSG("Failed to reach target"); break; } - restore_feedrate_and_scaling(); + motion.restore_feedrate_and_scaling(); } #endif // G38_PROBE_TARGET diff --git a/Marlin/src/gcode/probe/M401_M402.cpp b/Marlin/src/gcode/probe/M401_M402.cpp index a2a1caa01d..305ddc2fa2 100644 --- a/Marlin/src/gcode/probe/M401_M402.cpp +++ b/Marlin/src/gcode/probe/M401_M402.cpp @@ -54,7 +54,7 @@ void GcodeSuite::M401() { probe.deploy(parser.boolval('R')); TERN_(PROBE_TARE, probe.tare()); - report_current_position(); + motion.report_position(); } void GcodeSuite::M401_report(const bool forReplay/*=true*/) { @@ -75,9 +75,9 @@ void GcodeSuite::M401_report(const bool forReplay/*=true*/) { void GcodeSuite::M402() { probe.stow(parser.boolval('R')); #ifdef Z_AFTER_PROBING - do_z_clearance(Z_AFTER_PROBING); + motion.do_z_clearance(Z_AFTER_PROBING); #endif - report_current_position(); + motion.report_position(); } #endif // HAS_BED_PROBE diff --git a/Marlin/src/gcode/probe/M951.cpp b/Marlin/src/gcode/probe/M951.cpp index 15d3d47af0..1a9127f88b 100644 --- a/Marlin/src/gcode/probe/M951.cpp +++ b/Marlin/src/gcode/probe/M951.cpp @@ -46,7 +46,7 @@ void mpe_settings_init() { mpe_settings.parking_xpos[0] = pex[0]; // M951 L mpe_settings.parking_xpos[1] = pex[1]; // M951 R mpe_settings.grab_distance = PARKING_EXTRUDER_GRAB_DISTANCE; // M951 I - TERN_(HAS_HOME_OFFSET, set_home_offset(X_AXIS, -mpe_settings.grab_distance)); + TERN_(HAS_HOME_OFFSET, motion.set_home_offset(X_AXIS, -mpe_settings.grab_distance)); mpe_settings.slow_feedrate = MMM_TO_MMS(MPE_SLOW_SPEED); // M951 J mpe_settings.fast_feedrate = MMM_TO_MMS(MPE_FAST_SPEED); // M951 H mpe_settings.travel_distance = MPE_TRAVEL_DISTANCE; // M951 D @@ -74,7 +74,7 @@ void GcodeSuite::M951() { if (parser.seenval('R')) mpe_settings.parking_xpos[1] = parser.value_linear_units(); if (parser.seenval('I')) { mpe_settings.grab_distance = parser.value_linear_units(); - TERN_(HAS_HOME_OFFSET, set_home_offset(X_AXIS, -mpe_settings.grab_distance)); + TERN_(HAS_HOME_OFFSET, motion.set_home_offset(X_AXIS, -mpe_settings.grab_distance)); } if (parser.seenval('J')) mpe_settings.slow_feedrate = MMM_TO_MMS(parser.value_linear_units()); if (parser.seenval('H')) mpe_settings.fast_feedrate = MMM_TO_MMS(parser.value_linear_units()); diff --git a/Marlin/src/gcode/queue.cpp b/Marlin/src/gcode/queue.cpp index 0014ca44a5..68e5e868b4 100644 --- a/Marlin/src/gcode/queue.cpp +++ b/Marlin/src/gcode/queue.cpp @@ -539,7 +539,7 @@ void GCodeQueue::get_serial_commands() { if (command[0] == 'M') switch (command[3]) { case '8': if (command[2] == '0' && command[1] == '1') { marlin.end_waiting(); } break; case '2': if (command[2] == '1' && command[1] == '1') marlin.kill(FPSTR(M112_KILL_STR), nullptr, true); break; - case '0': if (command[1] == '4' && command[2] == '1') quickstop_stepper(); break; + case '0': if (command[1] == '4' && command[2] == '1') motion.quickstop_stepper(); break; } #if NO_TIMEOUTS > 0 diff --git a/Marlin/src/gcode/scara/M360-M364.cpp b/Marlin/src/gcode/scara/M360-M364.cpp index ad142a09ba..0fcfde3f50 100644 --- a/Marlin/src/gcode/scara/M360-M364.cpp +++ b/Marlin/src/gcode/scara/M360-M364.cpp @@ -31,7 +31,7 @@ inline bool SCARA_move_to_cal(const uint8_t delta_a, const uint8_t delta_b) { if (marlin.isRunning()) { forward_kinematics(delta_a, delta_b); - do_blocking_move_to_xy(cartes); + motion.blocking_move_xy(motion.cartes); return true; } return false; diff --git a/Marlin/src/gcode/temp/M104_M109.cpp b/Marlin/src/gcode/temp/M104_M109.cpp index d27ff75d39..79da98abff 100644 --- a/Marlin/src/gcode/temp/M104_M109.cpp +++ b/Marlin/src/gcode/temp/M104_M109.cpp @@ -106,7 +106,7 @@ void GcodeSuite::M104_M109(const bool isM109) { if (got_temp) { #if ENABLED(SINGLENOZZLE_STANDBY_TEMP) thermalManager.singlenozzle_temp[target_extruder] = temp; - if (target_extruder != active_extruder) return; + if (target_extruder != motion.extruder) return; #endif thermalManager.setTargetHotend(temp, target_extruder); diff --git a/Marlin/src/gcode/temp/M106_M107.cpp b/Marlin/src/gcode/temp/M106_M107.cpp index dc0c3d6b27..6d163ce648 100644 --- a/Marlin/src/gcode/temp/M106_M107.cpp +++ b/Marlin/src/gcode/temp/M106_M107.cpp @@ -37,10 +37,10 @@ #endif #if ENABLED(SINGLENOZZLE) - #define _ALT_P active_extruder + #define _ALT_P motion.extruder #define _CNT_P EXTRUDERS #else - #define _ALT_P _MIN(active_extruder, FAN_COUNT - 1) + #define _ALT_P _MIN(motion.extruder, FAN_COUNT - 1) #define _CNT_P FAN_COUNT #endif @@ -71,7 +71,7 @@ void GcodeSuite::M106() { } #endif - const uint16_t dspeed = parser.seen_test('A') ? thermalManager.fan_speed[active_extruder] : 255; + const uint16_t dspeed = parser.seen_test('A') ? thermalManager.fan_speed[motion.extruder] : 255; uint16_t speed = dspeed; diff --git a/Marlin/src/gcode/temp/M306.cpp b/Marlin/src/gcode/temp/M306.cpp index 7e79581f2b..c129bdd512 100644 --- a/Marlin/src/gcode/temp/M306.cpp +++ b/Marlin/src/gcode/temp/M306.cpp @@ -49,7 +49,7 @@ */ void GcodeSuite::M306() { - const uint8_t e = E_TERN0(parser.intval('E', active_extruder)); + const uint8_t e = E_TERN0(parser.intval('E', motion.extruder)); if (e >= (EXTRUDERS)) { SERIAL_ECHOLNPGM("?(E)xtruder index out of range (0-", (EXTRUDERS) - 1, ")."); return; diff --git a/Marlin/src/inc/Conditionals-5-post.h b/Marlin/src/inc/Conditionals-5-post.h index 55cd16c8d7..05e036c774 100644 --- a/Marlin/src/inc/Conditionals-5-post.h +++ b/Marlin/src/inc/Conditionals-5-post.h @@ -3250,7 +3250,7 @@ #define ENDSTOPPULLUP_ZMIN_PROBE #endif #ifndef XY_PROBE_FEEDRATE - #define XY_PROBE_FEEDRATE ((homing_feedrate_mm_m.x + homing_feedrate_mm_m.y) / 2) + #define XY_PROBE_FEEDRATE ((motion.homing_feedrate_mm_m.x + motion.homing_feedrate_mm_m.y) / 2) #endif #ifndef NOZZLE_TO_PROBE_OFFSET #define NOZZLE_TO_PROBE_OFFSET { 0, 0, 0 } diff --git a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp index 81063d5e2e..e586fcc27f 100644 --- a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp +++ b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp @@ -584,9 +584,9 @@ FORCE_INLINE void _draw_axis_value(const AxisEnum axis, const char *value, const lcd_put_lchar('X' + uint8_t(axis)); if (blink) lcd_put_u8str(value); - else if (axis_should_home(axis)) + else if (motion.axis_should_home(axis)) while (const char c = *value++) lcd_put_lchar(c <= '.' ? c : '?'); - else if (NONE(HOME_AFTER_DEACTIVATE, DISABLE_REDUCED_ACCURACY_WARNING) && !axis_is_trusted(axis)) + else if (NONE(HOME_AFTER_DEACTIVATE, DISABLE_REDUCED_ACCURACY_WARNING) && !motion.axis_is_trusted(axis)) lcd_put_u8str(TERN0(HAS_Z_AXIS, axis == Z_AXIS) ? F(" ") : F(" ")); else lcd_put_u8str(value); @@ -1077,14 +1077,14 @@ void MarlinUI::draw_status_screen() { if (show_e_total) { #if ENABLED(LCD_SHOW_E_TOTAL) char tmp[20]; - const uint8_t escale = e_move_accumulator >= 100000.0f ? 10 : 1; // After 100m switch to cm - sprintf_P(tmp, PSTR("E %ld%cm "), uint32_t(_MAX(e_move_accumulator, 0.0f)) / escale, escale == 10 ? 'c' : 'm'); // 1234567mm + const uint8_t escale = motion.e_move_accumulator >= 100000.0f ? 10 : 1; // After 100m switch to cm + sprintf_P(tmp, PSTR("E %ld%cm "), uint32_t(_MAX(motion.e_move_accumulator, 0.0f)) / escale, escale == 10 ? 'c' : 'm'); // 1234567mm lcd_put_u8str(tmp); #endif } else { #if HAS_X_AXIS - const xy_pos_t lpos = current_position.asLogical(); + const xy_pos_t lpos = motion.position.asLogical(); _draw_axis_value(X_AXIS, ftostr4sign(lpos.x), blink); #endif #if HAS_Y_AXIS @@ -1101,7 +1101,7 @@ void MarlinUI::draw_status_screen() { #if HAS_Z_AXIS lcd_moveto(LCD_WIDTH - 8, 1); - _draw_axis_value(Z_AXIS, ftostr52sp(LOGICAL_Z_POSITION(current_position.z)), blink); + _draw_axis_value(Z_AXIS, ftostr52sp(motion.logical_z(motion.position.z)), blink); #if HAS_LEVELING && !HAS_HEATED_BED lcd_put_lchar(planner.leveling_active || blink ? '_' : ' '); #endif @@ -1114,7 +1114,7 @@ void MarlinUI::draw_status_screen() { #if LCD_HEIGHT > 3 lcd_put_lchar(0, 2, LCD_STR_FEEDRATE[0]); - lcd_put_u8str(i16tostr3rj(feedrate_percentage)); + lcd_put_u8str(i16tostr3rj(motion.feedrate_percentage)); lcd_put_u8str(F("%")); #if LCD_WIDTH >= 20 @@ -1168,7 +1168,7 @@ void MarlinUI::draw_status_screen() { // #if HAS_Z_AXIS lcd_moveto(LCD_WIDTH - 9, 0); - _draw_axis_value(Z_AXIS, ftostr52sp(LOGICAL_Z_POSITION(current_position.z)), blink); + _draw_axis_value(Z_AXIS, ftostr52sp(motion.logical_z(motion.position.z)), blink); #endif #if HAS_LEVELING && (HAS_MULTI_HOTEND || !HAS_HEATED_BED) @@ -1188,7 +1188,7 @@ void MarlinUI::draw_status_screen() { #endif lcd_put_lchar(LCD_WIDTH - 9, 1, LCD_STR_FEEDRATE[0]); - lcd_put_u8str(i16tostr3rj(feedrate_percentage)); + lcd_put_u8str(i16tostr3rj(motion.feedrate_percentage)); lcd_put_u8str(F("%")); // ========== Line 3 ========== @@ -1223,20 +1223,20 @@ void MarlinUI::draw_status_screen() { // X Coordinate // lcd_moveto(0, 0); - _draw_axis_value(X_AXIS, ftostr52sp(LOGICAL_X_POSITION(current_position.x)), blink); + _draw_axis_value(X_AXIS, ftostr52sp(motion.logical_x(motion.position.x)), blink); // // Y Coordinate // lcd_moveto(LCD_WIDTH - 9, 0); - _draw_axis_value(Y_AXIS, ftostr52sp(LOGICAL_Y_POSITION(current_position.y)), blink); + _draw_axis_value(Y_AXIS, ftostr52sp(motion.logical_y(motion.position.y)), blink); // ========== Line 2 ========== lcd_moveto(0, 1); - _draw_axis_value(Z_AXIS, ftostr52sp(LOGICAL_Z_POSITION(current_position.z)), blink); + _draw_axis_value(Z_AXIS, ftostr52sp(motion.logical_z(motion.position.z)), blink); lcd_moveto(LCD_WIDTH - 9, 1); - _draw_axis_value(I_AXIS, ftostr52sp(LOGICAL_I_POSITION(current_position.i)), blink); + _draw_axis_value(I_AXIS, ftostr52sp(motion.logical_i(motion.position.i)), blink); // ========== Line 3 ========== lcd_moveto(0, 2); @@ -1521,9 +1521,9 @@ void MarlinUI::draw_status_screen() { * Show X and Y positions */ _XLABEL(_PLOT_X, 0); - lcd_put_u8str(ftostr52(LOGICAL_X_POSITION(bedlevel.get_mesh_x(x_plot)))); + lcd_put_u8str(ftostr52(motion.logical_x(bedlevel.get_mesh_x(x_plot)))); _YLABEL(_LCD_W_POS, 0); - lcd_put_u8str(ftostr52(LOGICAL_Y_POSITION(bedlevel.get_mesh_y(y_plot)))); + lcd_put_u8str(ftostr52(motion.logical_y(bedlevel.get_mesh_y(y_plot)))); lcd_moveto(_PLOT_X, 0); @@ -1726,9 +1726,9 @@ void MarlinUI::draw_status_screen() { * Show all values at right of screen */ _XLABEL(_LCD_W_POS, 1); - lcd_put_u8str(ftostr52(LOGICAL_X_POSITION(bedlevel.get_mesh_x(x_plot)))); + lcd_put_u8str(ftostr52(motion.logical_x(bedlevel.get_mesh_x(x_plot)))); _YLABEL(_LCD_W_POS, 2); - lcd_put_u8str(ftostr52(LOGICAL_Y_POSITION(bedlevel.get_mesh_y(y_plot)))); + lcd_put_u8str(ftostr52(motion.logical_y(bedlevel.get_mesh_y(y_plot)))); /** * Show the location value diff --git a/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp b/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp index cdb18a74b7..e12339e5b1 100644 --- a/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp +++ b/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp @@ -429,9 +429,9 @@ FORCE_INLINE void _draw_axis_value(const AxisEnum axis, const char *value, const lcd.write('X' + uint8_t(axis)); if (blink) lcd.print(value); - else if (axis_should_home(axis)) + else if (motion.axis_should_home(axis)) while (const char c = *value++) lcd.write(c <= '.' ? c : '?'); - else if (NONE(HOME_AFTER_DEACTIVATE, DISABLE_REDUCED_ACCURACY_WARNING) && !axis_is_trusted(axis)) + else if (NONE(HOME_AFTER_DEACTIVATE, DISABLE_REDUCED_ACCURACY_WARNING) && !motion.axis_is_trusted(axis)) lcd_put_u8str(axis == Z_AXIS ? F(" ") : F(" ")); else lcd_put_u8str(value); @@ -816,7 +816,7 @@ void MarlinUI::draw_status_screen() { #if NUM_AXES lcd_moveto(0, 0); - const xyz_pos_t lpos = current_position.asLogical(); + const xyz_pos_t lpos = motion.position.asLogical(); _draw_axis_value(X_AXIS, ftostr4sign(lpos.x), blink); #if HAS_Y_AXIS lcd.write(' '); _draw_axis_value(Y_AXIS, ftostr4sign(lpos.y), blink); @@ -835,7 +835,7 @@ void MarlinUI::draw_status_screen() { // lcd_moveto(0, 1); - lcd_put_u8str(F("FR")); lcd.print(i16tostr3rj(feedrate_percentage)); lcd.write('%'); + lcd_put_u8str(F("FR")); lcd.print(i16tostr3rj(motion.feedrate_percentage)); lcd.write('%'); ui.rotate_progress(); // UNTESTED!!! // @@ -1126,9 +1126,9 @@ void MarlinUI::draw_status_screen() { // Show all values lcd_moveto(_LCD_W_POS, 1); lcd_put_u8str(F("X:")); - lcd.print(ftostr52(LOGICAL_X_POSITION(pgm_read_float(&bedlevel._mesh_index_to_xpos[x_plot])))); + lcd.print(ftostr52(motion.logical_x(pgm_read_float(&bedlevel._mesh_index_to_xpos[x_plot])))); lcd_moveto(_LCD_W_POS, 2); lcd_put_u8str(F("Y:")); - lcd.print(ftostr52(LOGICAL_Y_POSITION(pgm_read_float(&bedlevel._mesh_index_to_ypos[y_plot])))); + lcd.print(ftostr52(motion.logical_y(pgm_read_float(&bedlevel._mesh_index_to_ypos[y_plot])))); // Show the location value lcd_moveto(_LCD_W_POS, 3); lcd_put_u8str(F("Z:")); diff --git a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp index 7fd3052772..e27636a9d8 100644 --- a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp +++ b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp @@ -311,20 +311,20 @@ FORCE_INLINE void _draw_centered_temp(const celsius_t temp, const uint8_t tx, co const bool draw_partial = isHeat && tall < BAR_TALL; if (draw_partial) { const uint8_t ph = STATUS_HEATERS_HEIGHT - 1 - tall; - u8g.drawBitmapP(hx, STATUS_HEATERS_Y, bw, ph, HOTEND_BITMAP(TERN(HAS_MMU, active_extruder, heater_id), false)); - u8g.drawBitmapP(hx, STATUS_HEATERS_Y + ph, bw, tall + 1, HOTEND_BITMAP(TERN(HAS_MMU, active_extruder, heater_id), true) + ph * bw); + u8g.drawBitmapP(hx, STATUS_HEATERS_Y, bw, ph, HOTEND_BITMAP(TERN(HAS_MMU, motion.extruder, heater_id), false)); + u8g.drawBitmapP(hx, STATUS_HEATERS_Y + ph, bw, tall + 1, HOTEND_BITMAP(TERN(HAS_MMU, motion.extruder, heater_id), true) + ph * bw); } #else constexpr bool draw_partial = false; #endif if (!draw_partial) - u8g.drawBitmapP(hx, STATUS_HEATERS_Y, bw, STATUS_HEATERS_HEIGHT, HOTEND_BITMAP(TERN(HAS_MMU, active_extruder, heater_id), isHeat)); + u8g.drawBitmapP(hx, STATUS_HEATERS_Y, bw, STATUS_HEATERS_HEIGHT, HOTEND_BITMAP(TERN(HAS_MMU, motion.extruder, heater_id), isHeat)); } // PAGE_CONTAINS #if HAS_MULTI_EXTRUDER && NONE(SLIM_LCD_MENUS, STATUS_HOTEND_NUMBERLESS, SINGLENOZZLE) - if (active_extruder == heater_id) + if (motion.extruder == heater_id) u8g.drawBitmapP(_MAX(0, STATUS_HOTEND_X(heater_id) - 6), STATUS_HEATERS_Y + 3, 1, 5, status_active_extruder_indicator_bmp); #endif @@ -472,9 +472,9 @@ FORCE_INLINE void _draw_axis_value(const AxisEnum axis, const char *value, const if (blink) lcd_put_u8str(value); - else if (axis_should_home(axis)) + else if (motion.axis_should_home(axis)) while (const char c = *value++) lcd_put_lchar(c <= '.' ? c : '?'); - else if (NONE(HOME_AFTER_DEACTIVATE, DISABLE_REDUCED_ACCURACY_WARNING) && !axis_is_trusted(axis)) + else if (NONE(HOME_AFTER_DEACTIVATE, DISABLE_REDUCED_ACCURACY_WARNING) && !motion.axis_is_trusted(axis)) lcd_put_u8str(TERN0(HAS_Z_AXIS, axis == Z_AXIS) ? F(" ") : F(" ")); else lcd_put_u8str(value); @@ -573,14 +573,14 @@ void MarlinUI::draw_status_screen() { #endif #if NUM_AXES - const xyz_pos_t lpos = current_position.asLogical(); + const xyz_pos_t lpos = motion.position.asLogical(); const bool is_inch = parser.using_inch_units(); #endif if (show_e_total) { #if ENABLED(LCD_SHOW_E_TOTAL) - const uint8_t escale = e_move_accumulator >= 100000.0f ? 10 : 1; // After 100m switch to cm - sprintf_P(xstring, PSTR("%ld%cm"), uint32_t(_MAX(e_move_accumulator, 0.0f)) / escale, escale == 10 ? 'c' : 'm'); // 1234567mm + const uint8_t escale = motion.e_move_accumulator >= 100000.0f ? 10 : 1; // After 100m switch to cm + sprintf_P(xstring, PSTR("%ld%cm"), uint32_t(_MAX(motion.e_move_accumulator, 0.0f)) / escale, escale == 10 ? 'c' : 'm'); // 1234567mm #endif } else { @@ -898,9 +898,9 @@ void MarlinUI::draw_status_screen() { set_font(FONT_STATUSMENU); #if ENABLED(ULTIPANEL_FLOWPERCENT) - lcd_put_u8str(12, EXTRAS_2_BASELINE, i16tostr3rj(planner.flow_percentage[active_extruder])); + lcd_put_u8str(12, EXTRAS_2_BASELINE, i16tostr3rj(planner.flow_percentage[motion.extruder])); #else - lcd_put_u8str(12, EXTRAS_2_BASELINE, i16tostr3rj(feedrate_percentage)); + lcd_put_u8str(12, EXTRAS_2_BASELINE, i16tostr3rj(motion.feedrate_percentage)); #endif lcd_put_u8str(F("%")); diff --git a/Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp b/Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp index ac7941f844..9daba7dd8f 100644 --- a/Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp +++ b/Marlin/src/lcd/dogm/status_screen_lite_ST7920.cpp @@ -614,8 +614,8 @@ void ST7920_Lite_Status_Screen::draw_position(const xyze_pos_t &pos, const bool if (TERN0(LCD_SHOW_E_TOTAL, marlin.printingIsActive())) { #if ENABLED(LCD_SHOW_E_TOTAL) char tmp[15]; - const uint8_t escale = e_move_accumulator >= 100000.0f ? 10 : 1; // After 100m switch to cm - sprintf_P(tmp, PSTR("E%-7ld%cm "), uint32_t(_MAX(e_move_accumulator, 0.0f)) / escale, escale == 10 ? 'c' : 'm'); // 1234567mm + const uint8_t escale = motion.e_move_accumulator >= 100000.0f ? 10 : 1; // After 100m switch to cm + sprintf_P(tmp, PSTR("E%-7ld%cm "), uint32_t(_MAX(motion.e_move_accumulator, 0.0f)) / escale, escale == 10 ? 'c' : 'm'); // 1234567mm write_str(tmp); #endif } @@ -636,7 +636,7 @@ bool ST7920_Lite_Status_Screen::indicators_changed() { // because the actual temps fluctuate so by updating // them only during blinks we gain a bit of stability. const bool blink = ui.get_blink(); - const uint16_t feedrate_perc = feedrate_percentage; + const uint16_t feedrate_perc = motion.feedrate_percentage; const uint16_t fs = thermalManager.scaledFanSpeed(0); const celsius_t extruder_1_target = thermalManager.degTargetHotend(0); #if HAS_MULTI_HOTEND @@ -802,7 +802,7 @@ bool ST7920_Lite_Status_Screen::indicators_changed() { void ST7920_Lite_Status_Screen::update_indicators(const bool forceUpdate) { if (forceUpdate || indicators_changed()) { const bool blink = ui.get_blink(); - const uint16_t feedrate_perc = feedrate_percentage; + const uint16_t feedrate_perc = motion.feedrate_percentage; const celsius_t extruder_1_temp = thermalManager.wholeDegHotend(0), extruder_1_target = thermalManager.degTargetHotend(0); #if HAS_MULTI_HOTEND @@ -836,7 +836,7 @@ void ST7920_Lite_Status_Screen::update_indicators(const bool forceUpdate) { } bool ST7920_Lite_Status_Screen::position_changed() { - const xyz_pos_t pos = current_position; + const xyz_pos_t pos = motion.position; const uint8_t checksum = uint8_t(pos.x) ^ uint8_t(pos.y) ^ uint8_t(pos.z); static uint8_t last_checksum = 0, changed = last_checksum != checksum; if (changed) last_checksum = checksum; @@ -906,7 +906,7 @@ void ST7920_Lite_Status_Screen::update_status_or_position(bool forceUpdate) { } if (countdown == 0 && (forceUpdate || position_changed() || TERN(DISABLE_REDUCED_ACCURACY_WARNING, 0, blink_changed()))) - draw_position(current_position, TERN(DISABLE_REDUCED_ACCURACY_WARNING, 1, all_axes_trusted())); + draw_position(motion.position, TERN(DISABLE_REDUCED_ACCURACY_WARNING, 1, motion.all_axes_trusted())); #endif } diff --git a/Marlin/src/lcd/dwin/creality/dwin.cpp b/Marlin/src/lcd/dwin/creality/dwin.cpp index 875dfd5fd1..1874c69a0a 100644 --- a/Marlin/src/lcd/dwin/creality/dwin.cpp +++ b/Marlin/src/lcd/dwin/creality/dwin.cpp @@ -972,7 +972,7 @@ void drawTuneMenu() { if (select_tune.now != CASE_BACK) drawMenuCursor(select_tune.now); drawMenuLine(TUNE_CASE_SPEED, ICON_Speed); - drawEditInteger3(TUNE_CASE_SPEED, feedrate_percentage); + drawEditInteger3(TUNE_CASE_SPEED, motion.feedrate_percentage); #if HAS_HOTEND drawMenuLine(TUNE_CASE_TEMP, ICON_HotendTemp); @@ -1267,7 +1267,7 @@ void gotoMainMenu() { void hmiPlanMove(const feedRate_t fr_mm_s) { if (!planner.is_full()) { planner.synchronize(); - planner.buffer_line(current_position, fr_mm_s); + planner.buffer_line(motion.position, fr_mm_s); dwinUpdateLCD(); } } @@ -1289,10 +1289,10 @@ void hmiMoveDone(const AxisEnum axis) { return hmiMoveDone(X_AXIS); } LIMIT(hmiValues.moveScaled.x, (X_MIN_POS) * MINUNITMULT, (X_MAX_POS) * MINUNITMULT); - current_position.x = hmiValues.moveScaled.x / MINUNITMULT; + motion.position.x = hmiValues.moveScaled.x / MINUNITMULT; drawEditFloat3(1, hmiValues.moveScaled.x, true); dwinUpdateLCD(); - hmiPlanMove(homing_feedrate(X_AXIS)); + hmiPlanMove(motion.homing_feedrate(X_AXIS)); } #endif @@ -1307,10 +1307,10 @@ void hmiMoveDone(const AxisEnum axis) { return hmiMoveDone(Y_AXIS); } LIMIT(hmiValues.moveScaled.y, (Y_MIN_POS) * MINUNITMULT, (Y_MAX_POS) * MINUNITMULT); - current_position.y = hmiValues.moveScaled.y / MINUNITMULT; + motion.position.y = hmiValues.moveScaled.y / MINUNITMULT; drawEditFloat3(2, hmiValues.moveScaled.y, true); dwinUpdateLCD(); - hmiPlanMove(homing_feedrate(Y_AXIS)); + hmiPlanMove(motion.homing_feedrate(Y_AXIS)); } #endif @@ -1325,10 +1325,10 @@ void hmiMoveDone(const AxisEnum axis) { return hmiMoveDone(Z_AXIS); } LIMIT(hmiValues.moveScaled.z, (Z_MIN_POS) * MINUNITMULT, (Z_MAX_POS) * MINUNITMULT); - current_position.z = hmiValues.moveScaled.z / MINUNITMULT; + motion.position.z = hmiValues.moveScaled.z / MINUNITMULT; drawEditFloat3(3, hmiValues.moveScaled.z, true); dwinUpdateLCD(); - hmiPlanMove(homing_feedrate(Z_AXIS)); + hmiPlanMove(motion.homing_feedrate(Z_AXIS)); } #endif @@ -1345,7 +1345,7 @@ void hmiMoveDone(const AxisEnum axis) { return hmiMoveDone(E_AXIS); } LIMIT(hmiValues.moveScaled.e, last_E_scaled - (EXTRUDE_MAXLENGTH) * MINUNITMULT, last_E_scaled + (EXTRUDE_MAXLENGTH) * MINUNITMULT); - current_position.e = hmiValues.moveScaled.e / MINUNITMULT; + motion.position.e = hmiValues.moveScaled.e / MINUNITMULT; drawEditSignedFloat3(4, hmiValues.moveScaled.e, true); dwinUpdateLCD(); hmiPlanMove(MMM_TO_MMS(FEEDRATE_E)); @@ -1544,7 +1544,7 @@ void hmiPrintSpeed() { if (applyEncoder(encoder_diffState, hmiValues.printSpeed)) { checkkey = ID_Tune; encoderRate.enabled = false; - feedrate_percentage = hmiValues.printSpeed; + motion.feedrate_percentage = hmiValues.printSpeed; drawEditInteger3(select_tune.now + MROWS - index_tune, hmiValues.printSpeed); return; } @@ -1659,12 +1659,12 @@ void hmiMaxAccelerationXYZE() { // Draw X, Y, Z and blink if in an un-homed or un-trusted state void _update_axis_value(const AxisEnum axis, const uint16_t x, const uint16_t y, const bool blink, const bool force) { - const bool draw_qmark = axis_should_home(axis), - draw_empty = NONE(HOME_AFTER_DEACTIVATE, DISABLE_REDUCED_ACCURACY_WARNING) && !draw_qmark && !axis_is_trusted(axis); + const bool draw_qmark = motion.axis_should_home(axis), + draw_empty = NONE(HOME_AFTER_DEACTIVATE, DISABLE_REDUCED_ACCURACY_WARNING) && !draw_qmark && !motion.axis_is_trusted(axis); // Check for a position change static xyz_pos_t oldpos = { -1, -1, -1 }; - const float p = current_position[axis]; + const float p = motion.position[axis]; const bool changed = oldpos[axis] != p; if (changed) oldpos[axis] = p; @@ -1768,8 +1768,8 @@ void updateVariable() { #endif static int16_t _feedrate = 0; - if (_feedrate != feedrate_percentage) { - _feedrate = feedrate_percentage; + if (_feedrate != motion.feedrate_percentage) { + _feedrate = motion.feedrate_percentage; drawStatInt(116 + 2 * STAT_CHR_W, 384, _feedrate); } @@ -2021,7 +2021,7 @@ void drawStatusArea(const bool with_update) { #endif dwinIconShow(ICON, ICON_Speed, 113, 383); - drawStatInt(116 + 2 * STAT_CHR_W, 384, feedrate_percentage); + drawStatInt(116 + 2 * STAT_CHR_W, 384, motion.feedrate_percentage); dwinDrawString(false, DWIN_FONT_STAT, COLOR_WHITE, COLOR_BG_BLACK, 116 + 5 * STAT_CHR_W + 2, 384, F("%")); #if HAS_FAN @@ -2730,11 +2730,11 @@ void hmiPrepare() { select_axis.reset(); drawMoveMenu(); - drawEditFloat3(1, current_position.x * MINUNITMULT); - drawEditFloat3(2, current_position.y * MINUNITMULT); - drawEditFloat3(3, current_position.z * MINUNITMULT); + drawEditFloat3(1, motion.position.x * MINUNITMULT); + drawEditFloat3(2, motion.position.y * MINUNITMULT); + drawEditFloat3(3, motion.position.z * MINUNITMULT); #if HAS_HOTEND - hmiValues.moveScaled.e = current_position.e * MINUNITMULT; + hmiValues.moveScaled.e = motion.position.e * MINUNITMULT; drawEditSignedFloat3(4, hmiValues.moveScaled.e); #endif break; @@ -2990,7 +2990,7 @@ void hmiAxisMove() { if (hmiFlag.cold_flag) { if (encoder_diffState == ENCODER_DIFF_ENTER) { hmiFlag.cold_flag = false; - hmiValues.moveScaled.e = current_position.e * MINUNITMULT; + hmiValues.moveScaled.e = motion.position.e * MINUNITMULT; drawMoveMenu(); XYZ_CODE( drawEditFloat3(1, hmiValues.moveScaled.x), @@ -3023,7 +3023,7 @@ void hmiAxisMove() { #if HAS_X_AXIS case 1: // X axis move checkkey = ID_MoveX; - hmiValues.moveScaled.x = current_position.x * MINUNITMULT; + hmiValues.moveScaled.x = motion.position.x * MINUNITMULT; drawEditFloat3(1, hmiValues.moveScaled.x, true); encoderRate.enabled = true; break; @@ -3031,7 +3031,7 @@ void hmiAxisMove() { #if HAS_Y_AXIS case 2: // Y axis move checkkey = ID_MoveY; - hmiValues.moveScaled.y = current_position.y * MINUNITMULT; + hmiValues.moveScaled.y = motion.position.y * MINUNITMULT; drawEditFloat3(2, hmiValues.moveScaled.y, true); encoderRate.enabled = true; break; @@ -3039,7 +3039,7 @@ void hmiAxisMove() { #if HAS_Z_AXIS case 3: // Z axis move checkkey = ID_MoveZ; - hmiValues.moveScaled.z = current_position.z * MINUNITMULT; + hmiValues.moveScaled.z = motion.position.z * MINUNITMULT; drawEditFloat3(3, hmiValues.moveScaled.z, true); encoderRate.enabled = true; break; @@ -3055,7 +3055,7 @@ void hmiAxisMove() { } #endif checkkey = ID_Extruder; - hmiValues.moveScaled.e = current_position.e * MINUNITMULT; + hmiValues.moveScaled.e = motion.position.e * MINUNITMULT; drawEditSignedFloat3(4, hmiValues.moveScaled.e, true); encoderRate.enabled = true; break; @@ -3595,9 +3595,9 @@ void hmiAdvSet() { case ADVSET_CASE_HOMEOFF: checkkey = ID_HomeOff; select_item.reset(); - hmiValues.homeOffsScaled.x = home_offset.x * 10; - hmiValues.homeOffsScaled.y = home_offset.y * 10; - hmiValues.homeOffsScaled.z = home_offset.z * 10; + hmiValues.homeOffsScaled.x = motion.home_offset.x * 10; + hmiValues.homeOffsScaled.y = motion.home_offset.y * 10; + hmiValues.homeOffsScaled.z = motion.home_offset.z * 10; drawHomeOffMenu(); break; #endif @@ -3685,7 +3685,7 @@ void hmiAdvSet() { if (applyEncoder(encoder_diffState, posScaled)) { checkkey = ID_HomeOff; encoderRate.enabled = false; - set_home_offset(axis, posScaled / 10); + motion.set_home_offset(axis, posScaled / 10); drawEditSignedFloat3(select_item.now, posScaled); return; } @@ -3808,7 +3808,7 @@ void hmiTune() { break; case TUNE_CASE_SPEED: // Print speed checkkey = ID_PrintSpeed; - hmiValues.printSpeed = feedrate_percentage; + hmiValues.printSpeed = motion.feedrate_percentage; drawEditInteger3(TUNE_CASE_SPEED + MROWS - index_tune, hmiValues.printSpeed, true); encoderRate.enabled = true; break; @@ -4190,7 +4190,7 @@ void eachMomentUpdate() { } else if (dwin_abort_flag && !hmiFlag.home_flag) { // Print Stop dwin_abort_flag = false; - hmiValues.printSpeed = feedrate_percentage = 100; + hmiValues.printSpeed = motion.feedrate_percentage = 100; dwin_zoffset = BABY_Z_VAR; select_page.set(0); gotoMainMenu(); @@ -4326,7 +4326,7 @@ void dwinHomingDone() { drawPrepareMenu(); } else if (checkkey == ID_BackMain) { - hmiValues.printSpeed = feedrate_percentage = 100; + hmiValues.printSpeed = motion.feedrate_percentage = 100; planner.finish_and_disable(); gotoMainMenu(); } diff --git a/Marlin/src/lcd/dwin/jyersui/dwin.cpp b/Marlin/src/lcd/dwin/jyersui/dwin.cpp index 3ffdc4ab89..0c55f3d16d 100644 --- a/Marlin/src/lcd/dwin/jyersui/dwin.cpp +++ b/Marlin/src/lcd/dwin/jyersui/dwin.cpp @@ -306,7 +306,7 @@ private: #endif void manualValueUpdate(const bool reset=false) { - const float zval = reset ? 0.0f : current_position.z; + const float zval = reset ? 0.0f : motion.position.z; queue.inject(TS(F("M421I"), mesh_x, F("J"), mesh_y, F("Z"), p_float_t(zval, 3))); planner.synchronize(); } @@ -314,17 +314,17 @@ private: void manual_mesh_move(const bool zmove=false) { if (zmove) { planner.synchronize(); - current_position.z = goto_mesh_value ? bedlevel.z_values[mesh_x][mesh_y] : Z_CLEARANCE_BETWEEN_PROBES; - planner.buffer_line(current_position, homing_feedrate(Z_AXIS), active_extruder); + motion.position.z = goto_mesh_value ? bedlevel.z_values[mesh_x][mesh_y] : Z_CLEARANCE_BETWEEN_PROBES; + planner.buffer_line(motion.position, motion.homing_feedrate(Z_AXIS), motion.extruder); planner.synchronize(); } else { jyersDWIN.popupHandler(Popup_MoveWait); - gcode.process_subcommands_now(TS(F("G0F300Z"), p_float_t(current_position.z, 3))); + gcode.process_subcommands_now(TS(F("G0F300Z"), p_float_t(motion.position.z, 3))); gcode.process_subcommands_now(TS(F("G42 F4000 I"), mesh_x, 'J', mesh_y)); planner.synchronize(); - current_position.z = goto_mesh_value ? bedlevel.z_values[mesh_x][mesh_y] : Z_CLEARANCE_BETWEEN_PROBES; - planner.buffer_line(current_position, homing_feedrate(Z_AXIS), active_extruder); + motion.position.z = goto_mesh_value ? bedlevel.z_values[mesh_x][mesh_y] : Z_CLEARANCE_BETWEEN_PROBES; + planner.buffer_line(motion.position, motion.homing_feedrate(Z_AXIS), motion.extruder); planner.synchronize(); jyersDWIN.redrawMenu(); } @@ -875,16 +875,16 @@ void JyersDWIN::drawStatusArea(const bool icons/*=false*/) { dwinIconShow(ICON, ICON_Speed, 113, 383); dwinDrawString(false, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, COLOR_WHITE), COLOR_BG_BLACK, 116 + 5 * STAT_CHR_W + 2, 384, F("%")); } - if (feedrate_percentage != feedrate) { - feedrate = feedrate_percentage; - dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, COLOR_WHITE), COLOR_BG_BLACK, 3, 116 + 2 * STAT_CHR_W, 384, feedrate_percentage); + if (motion.feedrate_percentage != feedrate) { + feedrate = motion.feedrate_percentage; + dwinDrawIntValue(true, true, 0, DWIN_FONT_STAT, getColor(eeprom_settings.status_area_text, COLOR_WHITE), COLOR_BG_BLACK, 3, 116 + 2 * STAT_CHR_W, 384, motion.feedrate_percentage); } static float x = -1, y = -1, z = -1; static bool update_x = false, update_y = false, update_z = false; - update_x = (current_position.x != x || axis_should_home(X_AXIS) || update_x); - update_y = (current_position.y != y || axis_should_home(Y_AXIS) || update_y); - update_z = (current_position.z != z || axis_should_home(Z_AXIS) || update_z); + update_x = (motion.position.x != x || motion.axis_should_home(X_AXIS) || update_x); + update_y = (motion.position.y != y || motion.axis_should_home(Y_AXIS) || update_y); + update_z = (motion.position.z != z || motion.axis_should_home(Z_AXIS) || update_z); if (icons) { x = y = z = -1; dwinDrawLine(getColor(eeprom_settings.coordinates_split_line, COLOR_LINE, true), 16, 450, 256, 450); @@ -893,25 +893,25 @@ void JyersDWIN::drawStatusArea(const bool icons/*=false*/) { dwinIconShow(ICON, ICON_MaxSpeedZ, 180, 456); } if (update_x) { - x = current_position.x; - if ((update_x = axis_should_home(X_AXIS) && ui.get_blink())) + x = motion.position.x; + if ((update_x = motion.axis_should_home(X_AXIS) && ui.get_blink())) dwinDrawString(true, DWIN_FONT_MENU, getColor(eeprom_settings.coordinates_text, COLOR_WHITE), COLOR_BG_BLACK, 35, 459, F(" -?- ")); else - dwinDrawFloatValue(true, true, 0, DWIN_FONT_MENU, getColor(eeprom_settings.coordinates_text, COLOR_WHITE), COLOR_BG_BLACK, 3, 1, 35, 459, current_position.x); + dwinDrawFloatValue(true, true, 0, DWIN_FONT_MENU, getColor(eeprom_settings.coordinates_text, COLOR_WHITE), COLOR_BG_BLACK, 3, 1, 35, 459, motion.position.x); } if (update_y) { - y = current_position.y; - if ((update_y = axis_should_home(Y_AXIS) && ui.get_blink())) + y = motion.position.y; + if ((update_y = motion.axis_should_home(Y_AXIS) && ui.get_blink())) dwinDrawString(true, DWIN_FONT_MENU, getColor(eeprom_settings.coordinates_text, COLOR_WHITE), COLOR_BG_BLACK, 120, 459, F(" -?- ")); else - dwinDrawFloatValue(true, true, 0, DWIN_FONT_MENU, getColor(eeprom_settings.coordinates_text, COLOR_WHITE), COLOR_BG_BLACK, 3, 1, 120, 459, current_position.y); + dwinDrawFloatValue(true, true, 0, DWIN_FONT_MENU, getColor(eeprom_settings.coordinates_text, COLOR_WHITE), COLOR_BG_BLACK, 3, 1, 120, 459, motion.position.y); } if (update_z) { - z = current_position.z; - if ((update_z = axis_should_home(Z_AXIS) && ui.get_blink())) + z = motion.position.z; + if ((update_z = motion.axis_should_home(Z_AXIS) && ui.get_blink())) dwinDrawString(true, DWIN_FONT_MENU, getColor(eeprom_settings.coordinates_text, COLOR_WHITE), COLOR_BG_BLACK, 205, 459, F(" -?- ")); else - dwinDrawFloatValue(true, true, 0, DWIN_FONT_MENU, getColor(eeprom_settings.coordinates_text, COLOR_WHITE), COLOR_BG_BLACK, 3, 2, 205, 459, current_position.z >= 0 ? current_position.z : 0); + dwinDrawFloatValue(true, true, 0, DWIN_FONT_MENU, getColor(eeprom_settings.coordinates_text, COLOR_WHITE), COLOR_BG_BLACK, 3, 2, 205, 459, motion.position.z >= 0 ? motion.position.z : 0); } dwinUpdateLCD(); } @@ -1089,7 +1089,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra if (draw) drawMenuItem(row, ICON_PrintSize, F("Manual Leveling"), nullptr, true); else { - if (axes_should_home()) { + if (motion.axes_should_home()) { popupHandler(Popup_Home); gcode.home_all_axes(true); } @@ -1277,35 +1277,35 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra case MOVE_X: if (draw) { drawMenuItem(row, ICON_MoveX, GET_TEXT_F(MSG_MOVE_X)); - drawFloat(current_position.x, row, false); + drawFloat(motion.position.x, row, false); } else - modifyValue(current_position.x, X_MIN_POS, X_MAX_POS, 10); + modifyValue(motion.position.x, X_MIN_POS, X_MAX_POS, 10); break; case MOVE_Y: if (draw) { drawMenuItem(row, ICON_MoveY, GET_TEXT_F(MSG_MOVE_Y)); - drawFloat(current_position.y, row); + drawFloat(motion.position.y, row); } else - modifyValue(current_position.y, Y_MIN_POS, Y_MAX_POS, 10); + modifyValue(motion.position.y, Y_MIN_POS, Y_MAX_POS, 10); break; case MOVE_Z: if (draw) { drawMenuItem(row, ICON_MoveZ, GET_TEXT_F(MSG_MOVE_Z)); - drawFloat(current_position.z, row); + drawFloat(motion.position.z, row); } else - modifyValue(current_position.z, Z_MIN_POS, Z_MAX_POS, 10); + modifyValue(motion.position.z, Z_MIN_POS, Z_MAX_POS, 10); break; #if HAS_HOTEND case MOVE_E: if (draw) { drawMenuItem(row, ICON_Extruder, GET_TEXT_F(MSG_MOVE_E)); - current_position.e = 0; - sync_plan_position(); - drawFloat(current_position.e, row); + motion.position.e = 0; + motion.sync_plan_position(); + drawFloat(motion.position.e, row); } else { if (thermalManager.targetTooColdToExtrude(0)) { @@ -1317,9 +1317,9 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra thermalManager.wait_for_hotend(0); redrawMenu(); } - current_position.e = 0; - sync_plan_position(); - modifyValue(current_position.e, -500, 500, 10); + motion.position.e = 0; + motion.sync_plan_position(); + modifyValue(motion.position.e, -500, 500, 10); } } break; @@ -1589,7 +1589,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra } else { if (!liveadjust) { - if (axes_should_home()) { + if (motion.axes_should_home()) { popupHandler(Popup_Home); gcode.home_all_axes(true); } @@ -2249,7 +2249,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra drawMenuItem(row, ICON_HotendTemp, GET_TEXT_F(MSG_PID_AUTOTUNE)); else { popupHandler(Popup_MPCWait); - thermalManager.MPC_autotune(active_extruder, Temperature::MPCTuningType::AUTO); + thermalManager.MPC_autotune(motion.extruder, Temperature::MPCTuningType::AUTO); redrawMenu(); } break; @@ -2416,18 +2416,18 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra case HOMEOFFSETS_XOFFSET: if (draw) { drawMenuItem(row, ICON_StepX, GET_TEXT_F(MSG_HOME_OFFSET_X)); - drawFloat(home_offset.x, row, false, 100); + drawFloat(motion.home_offset.x, row, false, 100); } else - modifyValue(home_offset.x, -MAX_XY_OFFSET, MAX_XY_OFFSET, 100); + modifyValue(motion.home_offset.x, -MAX_XY_OFFSET, MAX_XY_OFFSET, 100); break; case HOMEOFFSETS_YOFFSET: if (draw) { drawMenuItem(row, ICON_StepY, GET_TEXT_F(MSG_HOME_OFFSET_Y)); - drawFloat(home_offset.y, row, false, 100); + drawFloat(motion.home_offset.y, row, false, 100); } else - modifyValue(home_offset.y, -MAX_XY_OFFSET, MAX_XY_OFFSET, 100); + modifyValue(motion.home_offset.y, -MAX_XY_OFFSET, MAX_XY_OFFSET, 100); break; } break; @@ -3287,7 +3287,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra break; } #endif - if (axes_should_home()) { + if (motion.axes_should_home()) { popupHandler(Popup_Home); gcode.home_all_axes(true); } @@ -3567,8 +3567,8 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y] += 0.01; queue.inject(F("M290 Z0.01")); planner.synchronize(); - current_position.z += 0.01f; - sync_plan_position(); + motion.position.z += 0.01f; + motion.sync_plan_position(); drawFloat(bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y], row - 1, false, 100); } break; @@ -3579,8 +3579,8 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y] -= 0.01; queue.inject(F("M290 Z-0.01")); planner.synchronize(); - current_position.z -= 0.01f; - sync_plan_position(); + motion.position.z -= 0.01f; + motion.sync_plan_position(); drawFloat(bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y], row - 2, false, 100); } break; @@ -3591,7 +3591,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra } else { FLIP(mesh_conf.goto_mesh_value); - current_position.z = 0; + motion.position.z = 0; mesh_conf.manual_mesh_move(true); drawCheckbox(row, mesh_conf.goto_mesh_value); } @@ -3686,8 +3686,8 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y] += 0.01; queue.inject(F("M290 Z0.01")); planner.synchronize(); - current_position.z += 0.01f; - sync_plan_position(); + motion.position.z += 0.01f; + motion.sync_plan_position(); drawFloat(bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y], row - 1, false, 100); } break; @@ -3698,8 +3698,8 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y] -= 0.01; queue.inject(F("M290 Z-0.01")); planner.synchronize(); - current_position.z -= 0.01f; - sync_plan_position(); + motion.position.z -= 0.01f; + motion.sync_plan_position(); drawFloat(bedlevel.z_values[mesh_conf.mesh_x][mesh_conf.mesh_y], row - 2, false, 100); } break; @@ -3753,32 +3753,32 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra case MMESH_OFFSET: if (draw) { drawMenuItem(row, ICON_SetZOffset, F("Z Position")); - current_position.z = MANUAL_PROBE_START_Z; - drawFloat(current_position.z, row, false, 100); + motion.position.z = MANUAL_PROBE_START_Z; + drawFloat(motion.position.z, row, false, 100); } else - modifyValue(current_position.z, MIN_Z_OFFSET, MAX_Z_OFFSET, 100); + modifyValue(motion.position.z, MIN_Z_OFFSET, MAX_Z_OFFSET, 100); break; case MMESH_UP: if (draw) drawMenuItem(row, ICON_Axis, F("+0.01mm Up")); - else if (current_position.z < MAX_Z_OFFSET) { + else if (motion.position.z < MAX_Z_OFFSET) { gcode.process_subcommands_now(F("M290 Z0.01")); planner.synchronize(); - current_position.z += 0.01f; - sync_plan_position(); - drawFloat(current_position.z, row - 1, false, 100); + motion.position.z += 0.01f; + motion.sync_plan_position(); + drawFloat(motion.position.z, row - 1, false, 100); } break; case MMESH_DOWN: if (draw) drawMenuItem(row, ICON_AxisD, F("-0.01mm Down")); - else if (current_position.z > MIN_Z_OFFSET) { + else if (motion.position.z > MIN_Z_OFFSET) { gcode.process_subcommands_now(F("M290 Z-0.01")); planner.synchronize(); - current_position.z -= 0.01f; - sync_plan_position(); - drawFloat(current_position.z, row - 2, false, 100); + motion.position.z -= 0.01f; + motion.sync_plan_position(); + drawFloat(motion.position.z, row - 2, false, 100); } break; case MMESH_OLD: @@ -3797,11 +3797,11 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra drawFloat(currval, row, false, 100); } else if (!isnan(currval)) { - current_position.z = currval; + motion.position.z = currval; planner.synchronize(); - planner.buffer_line(current_position, homing_feedrate(Z_AXIS), active_extruder); + planner.buffer_line(motion.position, motion.homing_feedrate(Z_AXIS), motion.extruder); planner.synchronize(); - drawFloat(current_position.z, row - 3, false, 100); + drawFloat(motion.position.z, row - 3, false, 100); } break; } @@ -3837,10 +3837,10 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra case TUNE_SPEED: if (draw) { drawMenuItem(row, ICON_Speed, GET_TEXT_F(MSG_SPEED)); - drawFloat(feedrate_percentage, row, false, 1); + drawFloat(motion.feedrate_percentage, row, false, 1); } else - modifyValue(feedrate_percentage, MIN_PRINT_SPEED, MAX_PRINT_SPEED, 1); + modifyValue(motion.feedrate_percentage, MIN_PRINT_SPEED, MAX_PRINT_SPEED, 1); break; #if HAS_HOTEND @@ -4414,10 +4414,10 @@ void JyersDWIN::valueControl() { dwinUpdateLCD(); if (active_menu == ID_ZOffset && liveadjust) { planner.synchronize(); - current_position.z += (tempvalue / valueunit - zoffsetvalue); - planner.buffer_line(current_position, homing_feedrate(Z_AXIS), active_extruder); - current_position.z = 0; - sync_plan_position(); + motion.position.z += (tempvalue / valueunit - zoffsetvalue); + planner.buffer_line(motion.position, motion.homing_feedrate(Z_AXIS), motion.extruder); + motion.position.z = 0; + motion.sync_plan_position(); } else if (active_menu == ID_Tune && selection == TUNE_ZOFFSET) { gcode.process_subcommands_now(TS(F("M290Z"), p_float_t((tempvalue / valueunit - zoffsetvalue), 3))); @@ -4437,12 +4437,12 @@ void JyersDWIN::valueControl() { switch (active_menu) { case ID_Move: planner.synchronize(); - planner.buffer_line(current_position, manual_feedrate_mm_s[selection - 1], active_extruder); + planner.buffer_line(motion.position, manual_feedrate_mm_s[selection - 1], motion.extruder); break; #if HAS_MESH case ID_ManualMesh: planner.synchronize(); - planner.buffer_line(current_position, homing_feedrate(Z_AXIS), active_extruder); + planner.buffer_line(motion.position, motion.homing_feedrate(Z_AXIS), motion.extruder); planner.synchronize(); break; case ID_UBLMesh: mesh_conf.manual_mesh_move(true); break; @@ -4457,7 +4457,7 @@ void JyersDWIN::valueControl() { dwinUpdateLCD(); if (active_menu == ID_Move && livemove) { *(float*)valuepointer = tempvalue / valueunit; - planner.buffer_line(current_position, manual_feedrate_mm_s[selection - 1], active_extruder); + planner.buffer_line(motion.position, manual_feedrate_mm_s[selection - 1], motion.extruder); } } @@ -4703,7 +4703,7 @@ void JyersDWIN::popupControl() { #if HAS_BED_PROBE case Popup_ManualProbing: if (selection == 0) { - const float dif = probe.probe_at_point(current_position.x, current_position.y, PROBE_PT_STOW, 0, false) - corner_avg; + const float dif = probe.probe_at_point(motion.position.x, motion.position.y, PROBE_PT_STOW, 0, false) - corner_avg; updateStatus(TS(F("Corner is "), p_float_t(abs(dif), 3), "mm ", dif > 0 ? F("high") : F("low"))); } else { @@ -5005,7 +5005,7 @@ void JyersDWIN::screenUpdate() { #if HAS_BED_PROBE probe.offset.z = zoffsetvalue; #else - set_home_offset(Z_AXIS, -zoffsetvalue); + motion.set_home_offset(Z_AXIS, -zoffsetvalue); #endif } @@ -5013,8 +5013,8 @@ void JyersDWIN::screenUpdate() { if (probe.offset.z != lastzoffset) zoffsetvalue = lastzoffset = probe.offset.z; #else - if (-home_offset.z != lastzoffset) - zoffsetvalue = lastzoffset = -home_offset.z; + if (-motion.home_offset.z != lastzoffset) + zoffsetvalue = lastzoffset = -motion.home_offset.z; #endif #endif // HAS_ZOFFSET_ITEM @@ -5152,7 +5152,7 @@ void MarlinUI::init_lcd() { void MarlinUI::clear_lcd() {} #if ENABLED(ADVANCED_PAUSE_FEATURE) - void MarlinUI::pause_show_message(const PauseMessage message, const PauseMode mode/*=PAUSE_MODE_SAME*/, const uint8_t extruder/*=active_extruder*/) { + void MarlinUI::pause_show_message(const PauseMessage message, const PauseMode mode/*=PAUSE_MODE_SAME*/, const uint8_t extruder/*=motion.extruder*/) { if (mode != PAUSE_MODE_SAME) pause_mode = mode; switch (message) { case PAUSE_MESSAGE_INSERT: jyersDWIN.confirmHandler(Popup_FilInsert); break; diff --git a/Marlin/src/lcd/dwin/marlinui/ui_status_480x272.cpp b/Marlin/src/lcd/dwin/marlinui/ui_status_480x272.cpp index dbeb02dc67..43e9f2805c 100644 --- a/Marlin/src/lcd/dwin/marlinui/ui_status_480x272.cpp +++ b/Marlin/src/lcd/dwin/marlinui/ui_status_480x272.cpp @@ -85,9 +85,9 @@ void _draw_axis_value(const AxisEnum axis, const char *value, const bool blink, dwin_string.set(); if (blink) dwin_string.add(value); - else if (!TEST(axes_homed, axis)) + else if (!motion.axis_was_homed(axis)) while (const char c = *value++) dwin_string.add(c <= '.' ? c : '?'); - else if (NONE(HOME_AFTER_DEACTIVATE, DISABLE_REDUCED_ACCURACY_WARNING) && !TEST(axes_trusted, axis)) + else if (NONE(HOME_AFTER_DEACTIVATE, DISABLE_REDUCED_ACCURACY_WARNING) && !TEST(motion.axes_trusted, axis)) dwin_string.add(TERN1(DWIN_MARLINUI_PORTRAIT, axis == Z_AXIS) ? PSTR(" ") : PSTR(" ")); else dwin_string.add(value); @@ -307,12 +307,12 @@ void MarlinUI::draw_status_screen() { #endif // Axis values - const xyz_pos_t lpos = current_position.asLogical(); + const xyz_pos_t lpos = motion.position.asLogical(); const bool show_e_total = TERN1(HAS_X_AXIS, TERN0(LCD_SHOW_E_TOTAL, marlin.printingIsActive())); constexpr int16_t cpy = TERN(DWIN_MARLINUI_PORTRAIT, 195, 117); if (show_e_total) { - TERN_(LCD_SHOW_E_TOTAL, _draw_e_value(e_move_accumulator, TERN(DWIN_MARLINUI_PORTRAIT, 6, 75), cpy)); + TERN_(LCD_SHOW_E_TOTAL, _draw_e_value(motion.e_move_accumulator, TERN(DWIN_MARLINUI_PORTRAIT, 6, 75), cpy)); } else { XY_CODE( @@ -324,9 +324,9 @@ void MarlinUI::draw_status_screen() { // Feedrate static uint16_t old_fp = 0; - if (!ui.did_first_redraw || old_fp != feedrate_percentage) { - old_fp = feedrate_percentage; - _draw_feedrate_status(i16tostr3rj(feedrate_percentage), + if (!ui.did_first_redraw || old_fp != motion.feedrate_percentage) { + old_fp = motion.feedrate_percentage; + _draw_feedrate_status(i16tostr3rj(motion.feedrate_percentage), #if ENABLED(DWIN_MARLINUI_PORTRAIT) 5, 290 #else diff --git a/Marlin/src/lcd/dwin/proui/bedlevel_tools.cpp b/Marlin/src/lcd/dwin/proui/bedlevel_tools.cpp index 4621ce6653..91a991d29f 100644 --- a/Marlin/src/lcd/dwin/proui/bedlevel_tools.cpp +++ b/Marlin/src/lcd/dwin/proui/bedlevel_tools.cpp @@ -117,7 +117,7 @@ bool drawing_mesh = false; #endif void BedLevelTools::manualValueUpdate(const uint8_t mesh_x, const uint8_t mesh_y, const bool reset/*=false*/) { - const float zval = reset ? 0.0f : current_position.z; + const float zval = reset ? 0.0f : motion.position.z; queue.inject(TS(F("M421I"), mesh_x, F("J"), mesh_y, F("Z"), p_float_t(zval, 3))); planner.synchronize(); } @@ -131,8 +131,8 @@ void BedLevelTools::manualMove(const uint8_t mesh_x, const uint8_t mesh_y, bool gcode.process_subcommands_now(TS(F("G42 F4000 I"), mesh_x, F(" J"), mesh_y)); } planner.synchronize(); - current_position.z = goto_mesh_value ? bedlevel.z_values[mesh_x][mesh_y] : Z_CLEARANCE_BETWEEN_PROBES; - planner.buffer_line(current_position, homing_feedrate(Z_AXIS), active_extruder); + motion.position.z = goto_mesh_value ? bedlevel.z_values[mesh_x][mesh_y] : Z_CLEARANCE_BETWEEN_PROBES; + planner.buffer_line(motion.position, motion.homing_feedrate(Z_AXIS), motion.extruder); planner.synchronize(); if (!zmove) hmiReturnScreen(); } diff --git a/Marlin/src/lcd/dwin/proui/dwin.cpp b/Marlin/src/lcd/dwin/proui/dwin.cpp index 9d404b3690..8684020e17 100644 --- a/Marlin/src/lcd/dwin/proui/dwin.cpp +++ b/Marlin/src/lcd/dwin/proui/dwin.cpp @@ -697,8 +697,8 @@ void gotoMainMenu() { // Draw X, Y, Z and blink if in an un-homed or un-trusted state void _update_axis_value(const AxisEnum axis, const uint16_t x, const uint16_t y, const bool force) { - const bool draw_qmark = axis_should_home(axis), - draw_empty = NONE(HOME_AFTER_DEACTIVATE, DISABLE_REDUCED_ACCURACY_WARNING) && !draw_qmark && !axis_is_trusted(axis); + const bool draw_qmark = motion.axis_should_home(axis), + draw_empty = NONE(HOME_AFTER_DEACTIVATE, DISABLE_REDUCED_ACCURACY_WARNING) && !draw_qmark && !motion.axis_is_trusted(axis); // Check for a position change static xyz_pos_t oldpos = { -1, -1, -1 }; @@ -707,7 +707,7 @@ void _update_axis_value(const AxisEnum axis, const uint16_t x, const uint16_t y, #if ALL(IS_FULL_CARTESIAN, SHOW_REAL_POS) planner.get_axis_position_mm(axis) #else - current_position[axis] + motion.position[axis] #endif ); @@ -759,18 +759,18 @@ void _drawFeedrate() { #if ENABLED(SHOW_SPEED_IND) int16_t _value; if (blink) { - _value = feedrate_percentage; + _value = motion.feedrate_percentage; DWINUI::drawString(DWIN_FONT_STAT, hmiData.colorIndicator, hmiData.colorBackground, 116 + 4 * STAT_CHR_W + 2, 384, F(" %")); } else { - _value = CEIL(MMS_SCALED(feedrate_mm_s)); + _value = CEIL(motion.mms_scaled()); dwinDrawBox(1, hmiData.colorBackground, 116 + 5 * STAT_CHR_W + 2, 384, 20, 20); } DWINUI::drawInt(DWIN_FONT_STAT, hmiData.colorIndicator, hmiData.colorBackground, 3, 116 + 2 * STAT_CHR_W, 384, _value); #else static int16_t _feedrate = 100; - if (_feedrate != feedrate_percentage) { - _feedrate = feedrate_percentage; + if (_feedrate != motion.feedrate_percentage) { + _feedrate = motion.feedrate_percentage; DWINUI::drawInt(DWIN_FONT_STAT, hmiData.colorIndicator, hmiData.colorBackground, 3, 116 + 2 * STAT_CHR_W, 384, _feedrate); } #endif @@ -1091,7 +1091,7 @@ void dwinDrawDashboard() { #endif DWINUI::drawIcon(ICON_Speed, 113, 383); - DWINUI::drawInt(DWIN_FONT_STAT, hmiData.colorIndicator, hmiData.colorBackground, 3, 116 + 2 * STAT_CHR_W, 384, feedrate_percentage); + DWINUI::drawInt(DWIN_FONT_STAT, hmiData.colorIndicator, hmiData.colorBackground, 3, 116 + 2 * STAT_CHR_W, 384, motion.feedrate_percentage); IF_DISABLED(SHOW_SPEED_IND, DWINUI::drawString(DWIN_FONT_STAT, hmiData.colorIndicator, hmiData.colorBackground, 116 + 5 * STAT_CHR_W + 2, 384, F("%"))); #if HAS_FAN @@ -1839,7 +1839,7 @@ void dwinPrintAborted() { #if ENABLED(NOZZLE_PARK_FEATURE) F("G27") #else - TS(F("G0Z"), float(_MIN(current_position.z + (Z_POST_CLEARANCE), Z_MAX_POS)), F("\nG0F2000Y"), Y_MAX_POS) + TS(F("G0Z"), float(_MIN(motion.position.z + (Z_POST_CLEARANCE), Z_MAX_POS)), F("\nG0F2000Y"), Y_MAX_POS) #endif ); } @@ -1915,7 +1915,7 @@ void dwinCopySettingsFrom(const char * const buff) { if (hmiData.colorText == hmiData.colorBackground) dwinSetColorDefaults(); DWINUI::setColors(hmiData.colorText, hmiData.colorBackground, hmiData.colorStatusBg); TERN_(PREVENT_COLD_EXTRUSION, applyExtMinT()); - feedrate_percentage = 100; + motion.feedrate_percentage = 100; TERN_(BAUD_RATE_GCODE, hmiSetBaudRate()); #if ALL(LED_CONTROL_MENU, HAS_COLOR_LEDS) leds.set_color( @@ -2234,7 +2234,7 @@ void axisMove(AxisEnum axis) { } #endif planner.synchronize(); - if (!planner.is_full()) planner.buffer_line(current_position, manual_feedrate_mm_s[axis]); + if (!planner.is_full()) planner.buffer_line(motion.position, manual_feedrate_mm_s[axis]); } void liveMove() { if (!enableLiveMove) return; @@ -2259,8 +2259,8 @@ void setMoveZ() { hmiValue.axis = Z_AXIS; setPFloatOnClick(Z_MIN_POS, Z_MAX_POS, #if HAS_HOTEND void setMoveE() { - const float e_min = current_position.e - (EXTRUDE_MAXLENGTH), - e_max = current_position.e + (EXTRUDE_MAXLENGTH); + const float e_min = motion.position.e - (EXTRUDE_MAXLENGTH), + e_max = motion.position.e + (EXTRUDE_MAXLENGTH); hmiValue.axis = E_AXIS; setPFloatOnClick(e_min, e_max, UNITFDIGITS, applyMove, liveMove); } #endif @@ -2337,7 +2337,7 @@ void setMoveZ() { hmiValue.axis = Z_AXIS; setPFloatOnClick(Z_MIN_POS, Z_MAX_POS, #endif #if HAS_HOME_OFFSET - void applyHomeOffset() { set_home_offset(hmiValue.axis, menuData.value / MINUNITMULT); } + void applyHomeOffset() { motion.set_home_offset(hmiValue.axis, menuData.value / MINUNITMULT); } void setHomeOffsetX() { hmiValue.axis = X_AXIS; setPFloatOnClick(-50, 50, UNITFDIGITS, applyHomeOffset); } void setHomeOffsetY() { hmiValue.axis = Y_AXIS; setPFloatOnClick(-50, 50, UNITFDIGITS, applyHomeOffset); } void setHomeOffsetZ() { hmiValue.axis = Z_AXIS; setPFloatOnClick( -2, 2, UNITFDIGITS, applyHomeOffset); } @@ -2619,7 +2619,7 @@ void setFlow() { setPIntOnClick(FLOW_EDIT_MIN, FLOW_EDIT_MAX, []{ planner.refres *menuData.floatPtr = menuData.value / POW(10, MESH_Z_FDIGITS); if (!planner.is_full()) { planner.synchronize(); - planner.buffer_line(current_position, manual_feedrate_mm_s[Z_AXIS]); + planner.buffer_line(motion.position, manual_feedrate_mm_s[Z_AXIS]); } } void setMMeshMoveZ() { setPFloatOnClick(-1, 1, MESH_Z_FDIGITS, planner.synchronize, liveMeshMoveZ); } @@ -2721,21 +2721,21 @@ void applyMaxAccel() { planner.set_max_acceleration(hmiValue.axis, menuData.valu #if ENABLED(EDITABLE_HOMING_FEEDRATE) void updateHomingFR(AxisEnum axis, feedRate_t value) { switch (axis) { - case X_AXIS: homing_feedrate_mm_m.x = value; break; - case Y_AXIS: homing_feedrate_mm_m.y = value; break; - case Z_AXIS: homing_feedrate_mm_m.z = value; break; + case X_AXIS: motion.homing_feedrate_mm_m.x = value; break; + case Y_AXIS: motion.homing_feedrate_mm_m.y = value; break; + case Z_AXIS: motion.homing_feedrate_mm_m.z = value; break; default: break; } } void applyHomingFR() { updateHomingFR(hmiValue.axis, menuData.value); } #if HAS_X_AXIS - void setHomingX() { hmiValue.axis = X_AXIS; setIntOnClick(min_homing_edit_values.x, max_homing_edit_values.x, homing_feedrate_mm_m.x, applyHomingFR); } + void setHomingX() { hmiValue.axis = X_AXIS; setIntOnClick(min_homing_edit_values.x, max_homing_edit_values.x, motion.homing_feedrate_mm_m.x, applyHomingFR); } #endif #if HAS_Y_AXIS - void setHomingY() { hmiValue.axis = Y_AXIS; setIntOnClick(min_homing_edit_values.y, max_homing_edit_values.y, homing_feedrate_mm_m.x, applyHomingFR); } + void setHomingY() { hmiValue.axis = Y_AXIS; setIntOnClick(min_homing_edit_values.y, max_homing_edit_values.y, motion.homing_feedrate_mm_m.x, applyHomingFR); } #endif #if HAS_Z_AXIS - void setHomingZ() { hmiValue.axis = Z_AXIS; setIntOnClick(min_homing_edit_values.z, max_homing_edit_values.z, homing_feedrate_mm_m.x, applyHomingFR); } + void setHomingZ() { hmiValue.axis = Z_AXIS; setIntOnClick(min_homing_edit_values.z, max_homing_edit_values.z, motion.homing_feedrate_mm_m.x, applyHomingFR); } #endif #endif @@ -3357,21 +3357,21 @@ void drawMoveMenu() { BACK_ITEM(drawPrepareMenu); EDIT_ITEM(ICON_Axis, MSG_LIVE_MOVE, onDrawChkbMenu, setLiveMove, &enableLiveMove); #if HAS_X_AXIS - EDIT_ITEM(ICON_MoveX, MSG_MOVE_X, onDrawMoveX, setMoveX, ¤t_position.x); + EDIT_ITEM(ICON_MoveX, MSG_MOVE_X, onDrawMoveX, setMoveX, &motion.position.x); #endif #if HAS_Y_AXIS - EDIT_ITEM(ICON_MoveY, MSG_MOVE_Y, onDrawMoveY, setMoveY, ¤t_position.y); + EDIT_ITEM(ICON_MoveY, MSG_MOVE_Y, onDrawMoveY, setMoveY, &motion.position.y); #endif #if HAS_Z_AXIS - EDIT_ITEM(ICON_MoveZ, MSG_MOVE_Z, onDrawMoveZ, setMoveZ, ¤t_position.z); + EDIT_ITEM(ICON_MoveZ, MSG_MOVE_Z, onDrawMoveZ, setMoveZ, &motion.position.z); #endif #if HAS_HOTEND gcode.process_subcommands_now(F("G92E0")); // Reset extruder position - EDIT_ITEM(ICON_Extruder, MSG_MOVE_E, onDrawMoveE, setMoveE, ¤t_position.e); + EDIT_ITEM(ICON_Extruder, MSG_MOVE_E, onDrawMoveE, setMoveE, &motion.position.e); #endif } updateMenu(moveMenu); - if (!all_axes_trusted()) LCD_MESSAGE_F("WARNING: Current position unknown. Home axes."); + if (!motion.all_axes_trusted()) LCD_MESSAGE_F("WARNING: Current position unknown. Home axes."); } #if HAS_HOME_OFFSET @@ -3382,13 +3382,13 @@ void drawMoveMenu() { if (SET_MENU(homeOffsetMenu, MSG_SET_HOME_OFFSETS, items)) { BACK_ITEM(drawAdvancedSettingsMenu); #if HAS_X_AXIS - EDIT_ITEM(ICON_HomeOffsetX, MSG_HOME_OFFSET_X, onDrawPFloatMenu, setHomeOffsetX, &home_offset.x); + EDIT_ITEM(ICON_HomeOffsetX, MSG_HOME_OFFSET_X, onDrawPFloatMenu, setHomeOffsetX, &motion.home_offset.x); #endif #if HAS_Y_AXIS - EDIT_ITEM(ICON_HomeOffsetY, MSG_HOME_OFFSET_Y, onDrawPFloatMenu, setHomeOffsetY, &home_offset.y); + EDIT_ITEM(ICON_HomeOffsetY, MSG_HOME_OFFSET_Y, onDrawPFloatMenu, setHomeOffsetY, &motion.home_offset.y); #endif #if HAS_Z_AXIS - EDIT_ITEM(ICON_HomeOffsetZ, MSG_HOME_OFFSET_Z, onDrawPFloatMenu, setHomeOffsetZ, &home_offset.z); + EDIT_ITEM(ICON_HomeOffsetZ, MSG_HOME_OFFSET_Z, onDrawPFloatMenu, setHomeOffsetZ, &motion.home_offset.z); #endif } updateMenu(homeOffsetMenu); @@ -3529,7 +3529,7 @@ void drawTuneMenu() { checkkey = ID_Menu; if (SET_MENU_R(tuneMenu, selrect({73, 2, 28, 12}), MSG_TUNE, items)) { BACK_ITEM(gotoPrintProcess); - EDIT_ITEM(ICON_Speed, MSG_SPEED, onDrawSpeedItem, setSpeed, &feedrate_percentage); + EDIT_ITEM(ICON_Speed, MSG_SPEED, onDrawSpeedItem, setSpeed, &motion.feedrate_percentage); EDIT_ITEM(ICON_Flow, MSG_FLOW, onDrawPIntMenu, setFlow, &planner.flow_percentage[0]); #if HAS_HOTEND hotendTargetItem = EDIT_ITEM(ICON_HotendTemp, MSG_UBL_SET_TEMP_HOTEND, onDrawHotendTemp, setHotendTemp, &thermalManager.temp_hotend[0].target); @@ -3721,7 +3721,7 @@ void drawMotionMenu() { #if ENABLED(ADAPTIVE_STEP_SMOOTHING_TOGGLE) EDIT_ITEM(ICON_UBLActive, MSG_STEP_SMOOTHING, onDrawChkbMenu, toggleAdaptiveStepSmoothing, &stepper.adaptive_step_smoothing_enabled); #endif - EDIT_ITEM(ICON_Speed, MSG_SPEED, onDrawSpeedItem, setSpeed, &feedrate_percentage); + EDIT_ITEM(ICON_Speed, MSG_SPEED, onDrawSpeedItem, setSpeed, &motion.feedrate_percentage); EDIT_ITEM(ICON_Flow, MSG_FLOW, onDrawPIntMenu, setFlow, &planner.flow_percentage[0]); } updateMenu(motionMenu); @@ -3775,7 +3775,7 @@ void drawFilamentManMenu() { if (SET_MENU(manualMeshMenu, MSG_UBL_MANUAL_MESH, items)) { BACK_ITEM(drawPrepareMenu); MENU_ITEM(ICON_ManualMesh, MSG_LEVEL_BED, onDrawMenuItem, manualMeshStart); - mMeshMoveZItem = EDIT_ITEM(ICON_Zoffset, MSG_MOVE_Z, onDrawMMeshMoveZ, setMMeshMoveZ, ¤t_position.z); + mMeshMoveZItem = EDIT_ITEM(ICON_Zoffset, MSG_MOVE_Z, onDrawMMeshMoveZ, setMMeshMoveZ, &motion.position.z); MENU_ITEM(ICON_Axis, MSG_UBL_CONTINUE_MESH, onDrawMenuItem, manualMeshContinue); MENU_ITEM(ICON_MeshViewer, MSG_MESH_VIEW, onDrawSubMenu, dwinMeshViewer); #if USE_GRID_MESHVIEWER @@ -3945,15 +3945,15 @@ void drawMaxAccelMenu() { if (SET_MENU(homingFRMenu, MSG_HOMING_FEEDRATE, items)) { BACK_ITEM(drawMotionMenu); #if HAS_X_AXIS - uint16_t xhome = static_cast(homing_feedrate_mm_m.x); + uint16_t xhome = static_cast(motion.homing_feedrate_mm_m.x); EDIT_ITEM(ICON_MaxSpeedJerkX, MSG_HOMING_FEEDRATE_X, onDrawPIntMenu, setHomingX, &xhome); #endif #if HAS_Y_AXIS - uint16_t yhome = static_cast(homing_feedrate_mm_m.y); + uint16_t yhome = static_cast(motion.homing_feedrate_mm_m.y); EDIT_ITEM(ICON_MaxSpeedJerkY, MSG_HOMING_FEEDRATE_Y, onDrawPIntMenu, setHomingY, &yhome); #endif #if HAS_Z_AXIS - uint16_t zhome = static_cast(homing_feedrate_mm_m.z); + uint16_t zhome = static_cast(motion.homing_feedrate_mm_m.z); EDIT_ITEM(ICON_MaxSpeedJerkZ, MSG_HOMING_FEEDRATE_Z, onDrawPIntMenu, setHomingZ, &zhome); #endif } @@ -4072,7 +4072,7 @@ void drawMaxAccelMenu() { MPC_t &mpc = thermalManager.temp_hotend[0].mpc; BACK_ITEM(drawAdvancedSettingsMenu); #if ENABLED(MPC_AUTOTUNE_MENU) - MENU_ITEM(ICON_MPCNozzle, MSG_MPC_AUTOTUNE, onDrawMenuItem, []{ thermalManager.MPC_autotune(active_extruder, Temperature::MPCTuningType::AUTO); }); + MENU_ITEM(ICON_MPCNozzle, MSG_MPC_AUTOTUNE, onDrawMenuItem, []{ thermalManager.MPC_autotune(motion.extruder, Temperature::MPCTuningType::AUTO); }); #endif #if ENABLED(MPC_EDIT_MENU) EDIT_ITEM(ICON_MPCHeater, MSG_MPC_POWER, onDrawPFloatMenu, setHeaterPower, &mpc.heater_power); @@ -4250,7 +4250,7 @@ void drawMaxAccelMenu() { EDIT_ITEM(ICON_Zoffset, MSG_BABYSTEP_PROBE_Z, onDrawPFloat2Menu, setZOffset, &BABY_Z_VAR); } updateMenu(zOffsetWizMenu); - if (!axis_is_trusted(Z_AXIS)) LCD_MESSAGE_F("WARNING: Z position unknown, move Z to home"); + if (!motion.axis_is_trusted(Z_AXIS)) LCD_MESSAGE_F("WARNING: Z position unknown, move Z to home"); } #endif diff --git a/Marlin/src/lcd/dwin/proui/proui_extui.cpp b/Marlin/src/lcd/dwin/proui/proui_extui.cpp index 9f19d354ad..4aec61f0fb 100644 --- a/Marlin/src/lcd/dwin/proui/proui_extui.cpp +++ b/Marlin/src/lcd/dwin/proui/proui_extui.cpp @@ -107,7 +107,7 @@ namespace ExtUI { void onStatusChanged(const char * const) { dwinCheckStatusMessage(); } #if ENABLED(ADVANCED_PAUSE_FEATURE) - void onPauseMode(const PauseMessage message, const PauseMode mode/*=PAUSE_MODE_SAME*/, const uint8_t extruder/*=active_extruder*/) { + void onPauseMode(const PauseMessage message, const PauseMode mode/*=PAUSE_MODE_SAME*/, const uint8_t extruder/*=motion.extruder*/) { if (mode != PAUSE_MODE_SAME) pause_mode = mode; switch (message) { case PAUSE_MESSAGE_PARKING: dwinPopupPause(GET_TEXT_F(MSG_PAUSE_PRINT_PARKING)); break; // M125 @@ -238,7 +238,7 @@ namespace ExtUI { void onSteppersDisabled() {} void onSteppersEnabled() {} void onAxisDisabled(const axis_t axis) { - set_axis_untrusted((AxisEnum)axis); // MRISCOC workaround: https://github.com/MarlinFirmware/Marlin/issues/23095 + motion.set_axis_untrusted((AxisEnum)axis); // MRISCOC workaround: https://github.com/MarlinFirmware/Marlin/issues/23095 } void onAxisEnabled(const axis_t) {} diff --git a/Marlin/src/lcd/extui/anycubic_chiron/chiron_extui.cpp b/Marlin/src/lcd/extui/anycubic_chiron/chiron_extui.cpp index 966ff905d4..127d454a9a 100644 --- a/Marlin/src/lcd/extui/anycubic_chiron/chiron_extui.cpp +++ b/Marlin/src/lcd/extui/anycubic_chiron/chiron_extui.cpp @@ -81,7 +81,7 @@ namespace ExtUI { void onPauseMode( const PauseMessage message, const PauseMode mode/*=PAUSE_MODE_SAME*/, - const uint8_t extruder/*=active_extruder*/ + const uint8_t extruder/*=motion.extruder*/ ) { stdOnPauseMode(message, mode, extruder); } diff --git a/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_extui.cpp b/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_extui.cpp index 26be48f2ff..022d38fc9e 100644 --- a/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_extui.cpp +++ b/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_extui.cpp @@ -69,7 +69,7 @@ namespace ExtUI { void onPauseMode( const PauseMessage message, const PauseMode mode/*=PAUSE_MODE_SAME*/, - const uint8_t extruder/*=active_extruder*/ + const uint8_t extruder/*=motion.extruder*/ ) { stdOnPauseMode(message, mode, extruder); } diff --git a/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp b/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp index bc212bf42c..fb8f8dcd01 100644 --- a/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp +++ b/Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp @@ -710,7 +710,7 @@ void AnycubicTFT::getCommandFromTFT() { case 19: // A19 stop stepper drivers - sent on stop extrude command and on turn motors off command if (!isPrinting()) { - quickstop_stepper(); + motion.quickstop_stepper(); stepper.disable_all_steppers(); } @@ -719,9 +719,9 @@ void AnycubicTFT::getCommandFromTFT() { case 20: // A20 read printing speed if (codeSeen('S')) - feedrate_percentage = constrain(codeValue(), 40, 999); + motion.feedrate_percentage = constrain(codeValue(), 40, 999); else - SEND_PGM_VAL("A20V ", feedrate_percentage); + SEND_PGM_VAL("A20V ", motion.feedrate_percentage); break; case 21: // A21 all home diff --git a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp index 5678cb3d3f..5d6be5a20a 100644 --- a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp +++ b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp @@ -1047,7 +1047,7 @@ namespace Anycubic { else if (control_index == TXT_PRINT_SPEED_TARGET || control_index == TXT_ADJUST_SPEED) { // print speed control_value = (uint16_t(data_buf[4]) << 8) | uint16_t(data_buf[5]); const uint16_t feedrate = constrain(uint16_t(control_value), 40, 999); - //feedrate_percentage=constrain(control_value,40,999); + //motion.feedrate_percentage = constrain(control_value, 40, 999); sendTxtToTFT(MString<6>(feedrate), TXT_PRINT_SPEED); sendValueToTFT(feedrate, TXT_PRINT_SPEED_NOW); sendValueToTFT(feedrate, TXT_PRINT_SPEED_TARGET); diff --git a/Marlin/src/lcd/extui/anycubic_vyper/vyper_extui.cpp b/Marlin/src/lcd/extui/anycubic_vyper/vyper_extui.cpp index 5342991320..5983916d45 100644 --- a/Marlin/src/lcd/extui/anycubic_vyper/vyper_extui.cpp +++ b/Marlin/src/lcd/extui/anycubic_vyper/vyper_extui.cpp @@ -81,7 +81,7 @@ namespace ExtUI { void onPauseMode( const PauseMessage message, const PauseMode mode/*=PAUSE_MODE_SAME*/, - const uint8_t extruder/*=active_extruder*/ + const uint8_t extruder/*=motion.extruder*/ ) { stdOnPauseMode(message, mode, extruder); } diff --git a/Marlin/src/lcd/extui/dgus/dgus_extui.cpp b/Marlin/src/lcd/extui/dgus/dgus_extui.cpp index 59a4599df6..76253afb47 100644 --- a/Marlin/src/lcd/extui/dgus/dgus_extui.cpp +++ b/Marlin/src/lcd/extui/dgus/dgus_extui.cpp @@ -95,7 +95,7 @@ namespace ExtUI { void onPauseMode( const PauseMessage message, const PauseMode mode/*=PAUSE_MODE_SAME*/, - const uint8_t extruder/*=active_extruder*/ + const uint8_t extruder/*=motion.extruder*/ ) { stdOnPauseMode(message, mode, extruder); } diff --git a/Marlin/src/lcd/extui/dgus/fysetc/DGUSDisplayDef.cpp b/Marlin/src/lcd/extui/dgus/fysetc/DGUSDisplayDef.cpp index 9ec98779c8..948828014c 100644 --- a/Marlin/src/lcd/extui/dgus/fysetc/DGUSDisplayDef.cpp +++ b/Marlin/src/lcd/extui/dgus/fysetc/DGUSDisplayDef.cpp @@ -362,7 +362,7 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = { VPHELPER(VP_T_E0_Is, &thermalManager.temp_hotend[0].celsius, nullptr, screen.sendFloatAsLongValueToDisplay<0>), VPHELPER(VP_T_E0_Set, &thermalManager.temp_hotend[0].target, screen.handleTemperatureChanged, screen.sendWordValueToDisplay), VPHELPER(VP_Flowrate_E0, &planner.flow_percentage[0], screen.handleFlowRateChanged, screen.sendWordValueToDisplay), - VPHELPER(VP_EPos, &destination.e, nullptr, screen.sendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_EPos, &motion.destination.e, nullptr, screen.sendFloatAsLongValueToDisplay<2>), VPHELPER(VP_MOVE_E0, nullptr, screen.handleManualExtrude, nullptr), VPHELPER(VP_E0_CONTROL, &thermalManager.temp_hotend[0].target, screen.handleHeaterControl, nullptr), VPHELPER(VP_E0_STATUS, &thermalManager.temp_hotend[0].target, nullptr, screen.sendHeaterStatusToDisplay), @@ -421,12 +421,12 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = { #endif // Feedrate - VPHELPER(VP_Feedrate_Percentage, &feedrate_percentage, screen.setValueDirectly, screen.sendWordValueToDisplay), + VPHELPER(VP_Feedrate_Percentage, &motion.feedrate_percentage, screen.setValueDirectly, screen.sendWordValueToDisplay), // Position Data - VPHELPER(VP_XPos, ¤t_position.x, nullptr, screen.sendFloatAsLongValueToDisplay<2>), - VPHELPER(VP_YPos, ¤t_position.y, nullptr, screen.sendFloatAsLongValueToDisplay<2>), - VPHELPER(VP_ZPos, ¤t_position.z, nullptr, screen.sendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_XPos, &motion.position.x, nullptr, screen.sendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_YPos, &motion.position.y, nullptr, screen.sendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_ZPos, &motion.position.z, nullptr, screen.sendFloatAsLongValueToDisplay<2>), // Print Progress VPHELPER(VP_PrintProgress_Percentage, nullptr, nullptr, screen.sendPrintProgressToDisplay), diff --git a/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp index 2cf8193c74..2bbc2414e2 100644 --- a/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/fysetc/DGUSScreenHandler.cpp @@ -199,10 +199,10 @@ void DGUSScreenHandler::handleManualMove(DGUS_VP_Variable &var, void *val_ptr) { } else { // movement - bool old_relative_mode = relative_mode; - if (!relative_mode) queue.enqueue_now(F("G91")); + const bool old_relative_mode = motion.relative_mode; + if (!old_relative_mode) queue.enqueue_now(F("G91")); char buf[32]; // G1 X9999.99 F12345 - const uint16_t backup_speed = MMS_TO_MMM(feedrate_mm_s); + const uint16_t backup_speed = MMS_TO_MMM(motion.feedrate_mm_s); char sign[] = "\0"; int16_t value = movevalue / 100; if (movevalue < 0) { value *= -1; sign[0] = '-'; } diff --git a/Marlin/src/lcd/extui/dgus/hiprecy/DGUSDisplayDef.cpp b/Marlin/src/lcd/extui/dgus/hiprecy/DGUSDisplayDef.cpp index db0ebbc903..6d8ad3a95d 100644 --- a/Marlin/src/lcd/extui/dgus/hiprecy/DGUSDisplayDef.cpp +++ b/Marlin/src/lcd/extui/dgus/hiprecy/DGUSDisplayDef.cpp @@ -359,7 +359,7 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = { VPHELPER(VP_T_E0_Is, &thermalManager.temp_hotend[0].celsius, nullptr, screen.sendFloatAsLongValueToDisplay<0>), VPHELPER(VP_T_E0_Set, &thermalManager.temp_hotend[0].target, screen.handleTemperatureChanged, screen.sendWordValueToDisplay), VPHELPER(VP_Flowrate_E0, &planner.flow_percentage[0], screen.handleFlowRateChanged, screen.sendWordValueToDisplay), - VPHELPER(VP_EPos, &destination.e, nullptr, screen.sendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_EPos, &motion.destination.e, nullptr, screen.sendFloatAsLongValueToDisplay<2>), VPHELPER(VP_MOVE_E0, nullptr, screen.handleManualExtrude, nullptr), VPHELPER(VP_E0_CONTROL, &thermalManager.temp_hotend[0].target, screen.handleHeaterControl, nullptr), VPHELPER(VP_E0_STATUS, &thermalManager.temp_hotend[0].target, nullptr, screen.sendHeaterStatusToDisplay), @@ -414,12 +414,12 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = { #endif // Feedrate - VPHELPER(VP_Feedrate_Percentage, &feedrate_percentage, screen.setValueDirectly, screen.sendWordValueToDisplay), + VPHELPER(VP_Feedrate_Percentage, &motion.feedrate_percentage, screen.setValueDirectly, screen.sendWordValueToDisplay), // Position Data - VPHELPER(VP_XPos, ¤t_position.x, nullptr, screen.sendFloatAsLongValueToDisplay<2>), - VPHELPER(VP_YPos, ¤t_position.y, nullptr, screen.sendFloatAsLongValueToDisplay<2>), - VPHELPER(VP_ZPos, ¤t_position.z, nullptr, screen.sendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_XPos, &motion.position.x, nullptr, screen.sendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_YPos, &motion.position.y, nullptr, screen.sendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_ZPos, &motion.position.z, nullptr, screen.sendFloatAsLongValueToDisplay<2>), // Print Progress VPHELPER(VP_PrintProgress_Percentage, nullptr, nullptr, screen.sendPrintProgressToDisplay), diff --git a/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.cpp index f718ee16af..03de8b268d 100644 --- a/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/hiprecy/DGUSScreenHandler.cpp @@ -201,10 +201,10 @@ void DGUSScreenHandler::handleManualMove(DGUS_VP_Variable &var, void *val_ptr) { } else { // movement - const bool old_relative_mode = relative_mode; - if (!relative_mode) queue.enqueue_now(F("G91")); + const bool old_relative_mode = motion.relative_mode; + if (!old_relative_mode) queue.enqueue_now(F("G91")); char buf[32]; // G1 X9999.99 F12345 - const uint16_t backup_speed = MMS_TO_MMM(feedrate_mm_s); + const uint16_t backup_speed = MMS_TO_MMM(motion.feedrate_mm_s); char sign[] = "\0"; int16_t value = movevalue / 100; if (movevalue < 0) { value *= -1; sign[0] = '-'; } diff --git a/Marlin/src/lcd/extui/dgus/mks/DGUSDisplayDef.cpp b/Marlin/src/lcd/extui/dgus/mks/DGUSDisplayDef.cpp index b108dab0a0..e2f43efa21 100644 --- a/Marlin/src/lcd/extui/dgus/mks/DGUSDisplayDef.cpp +++ b/Marlin/src/lcd/extui/dgus/mks/DGUSDisplayDef.cpp @@ -81,23 +81,23 @@ constexpr feedRate_t park_speed_xy = TERN(NOZZLE_PARK_FEATURE, NOZZLE_PARK_XY_FE void MKS_pause_print_move() { queue.exhaust(); - position_before_pause = current_position; + position_before_pause = motion.position; // Save the current position, the raise amount, and 'already raised' TERN_(POWER_LOSS_RECOVERY, if (recovery.enabled) recovery.save(true, mks_park_pos.z, true)); - destination.z = _MIN(current_position.z + mks_park_pos.z, Z_MAX_POS); - prepare_internal_move_to_destination(park_speed_z); + motion.destination.z = _MIN(motion.position.z + mks_park_pos.z, Z_MAX_POS); + motion.prepare_internal_move_to_destination(park_speed_z); - destination.set(X_MIN_POS + mks_park_pos.x, Y_MIN_POS + mks_park_pos.y); - prepare_internal_move_to_destination(park_speed_xy); + motion.destination.set(X_MIN_POS + mks_park_pos.x, Y_MIN_POS + mks_park_pos.y); + motion.prepare_internal_move_to_destination(park_speed_xy); } void MKS_resume_print_move() { - destination.set(position_before_pause.x, position_before_pause.y); - prepare_internal_move_to_destination(park_speed_xy); - destination.z = position_before_pause.z; - prepare_internal_move_to_destination(park_speed_z); + motion.destination.set(position_before_pause.x, position_before_pause.y); + motion.prepare_internal_move_to_destination(park_speed_xy); + motion.destination.z = position_before_pause.z; + motion.prepare_internal_move_to_destination(park_speed_z); TERN_(POWER_LOSS_RECOVERY, if (recovery.enabled) recovery.save(true)); } @@ -471,7 +471,7 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = { VPHELPER(VP_T_E0_Is, &thermalManager.temp_hotend[0].celsius, nullptr, screen.sendFloatAsLongValueToDisplay<0>), VPHELPER(VP_T_E0_Set, &thermalManager.temp_hotend[0].target, screen.handleTemperatureChanged, screen.sendWordValueToDisplay), VPHELPER(VP_Flowrate_E0, &planner.flow_percentage[0], screen.handleFlowRateChanged, screen.sendWordValueToDisplay), - VPHELPER(VP_EPos, &destination.e, nullptr, screen.sendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_EPos, &motion.destination.e, nullptr, screen.sendFloatAsLongValueToDisplay<2>), VPHELPER(VP_MOVE_E0, nullptr, screen.handleManualExtrude, nullptr), VPHELPER(VP_E0_CONTROL, &thermalManager.temp_hotend[0].target, screen.handleHeaterControl, nullptr), VPHELPER(VP_E0_STATUS, &thermalManager.temp_hotend[0].target, nullptr, screen.sendHeaterStatusToDisplay), @@ -542,12 +542,12 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = { #endif // Feedrate - VPHELPER(VP_Feedrate_Percentage, &feedrate_percentage, screen.setValueDirectly, screen.sendWordValueToDisplay), + VPHELPER(VP_Feedrate_Percentage, &motion.feedrate_percentage, screen.setValueDirectly, screen.sendWordValueToDisplay), // Position Data - VPHELPER(VP_XPos, ¤t_position.x, nullptr, screen.sendFloatAsLongValueToDisplay<2>), - VPHELPER(VP_YPos, ¤t_position.y, nullptr, screen.sendFloatAsLongValueToDisplay<2>), - VPHELPER(VP_ZPos, ¤t_position.z, nullptr, screen.sendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_XPos, &motion.position.x, nullptr, screen.sendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_YPos, &motion.position.y, nullptr, screen.sendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_ZPos, &motion.position.z, nullptr, screen.sendFloatAsLongValueToDisplay<2>), // Level Point Set VPHELPER(VP_Level_Point_One_X, &mks_corner_offsets[0].x, screen.handleChangeLevelPoint, screen.sendWordValueToDisplay), diff --git a/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp index bd774f7523..7f43acf4f6 100644 --- a/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/mks/DGUSScreenHandler.cpp @@ -94,7 +94,7 @@ void DGUSScreenHandlerMKS::sendFanToDisplay(DGUS_VP_Variable &var) { } void DGUSScreenHandlerMKS::sendBabyStepToDisplay(DGUS_VP_Variable &var) { - float value = current_position.z; + float value = motion.position.z; value *= 100; //cpow(10, 2); dgus.writeVariable(VP_SD_Print_Baby, (uint16_t)value); } @@ -449,7 +449,7 @@ void DGUSScreenHandlerMKS::levelControl(DGUS_VP_Variable &var, void *val_ptr) { break; case 1: - soft_endstop._enabled = true; + motion.soft_endstop._enabled = true; gotoScreen(MKSLCD_SCREEM_TOOL); break; @@ -480,7 +480,7 @@ void DGUSScreenHandlerMKS::meshLevel(DGUS_VP_Variable &var, void *val_ptr) { integer = offset; // get int Deci = (offset * 10) % 10; Deci2 = (offset * 100) % 10; - soft_endstop._enabled = false; + motion.soft_endstop._enabled = false; queue.enqueue_now(F("G91")); snprintf_P(cmd_buf, 30, PSTR("G1 Z%d.%d%d"), integer, Deci, Deci2); queue.enqueue_one_now(cmd_buf); @@ -492,7 +492,7 @@ void DGUSScreenHandlerMKS::meshLevel(DGUS_VP_Variable &var, void *val_ptr) { integer = offset; // get int Deci = (offset * 10) % 10; Deci2 = (offset * 100) % 10; - soft_endstop._enabled = false; + motion.soft_endstop._enabled = false; queue.enqueue_now(F("G91")); snprintf_P(cmd_buf, 30, PSTR("G1 Z-%d.%d%d"), integer, Deci, Deci2); queue.enqueue_one_now(cmd_buf); @@ -549,7 +549,7 @@ void DGUSScreenHandlerMKS::meshLevel(DGUS_VP_Variable &var, void *val_ptr) { } else if (mesh_point_count == 0) { mesh_point_count = GRID_MAX_POINTS; - soft_endstop._enabled = true; + motion.soft_endstop._enabled = true; settings.save(); gotoScreen(MKSLCD_SCREEM_TOOL); } @@ -769,8 +769,8 @@ void DGUSScreenHandler::handleManualMove(DGUS_VP_Variable &var, void *val_ptr) { } // Movement - const bool old_relative_mode = relative_mode; - if (!relative_mode) queue.enqueue_now(F("G91")); + const bool old_relative_mode = motion.relative_mode; + if (!old_relative_mode) queue.enqueue_now(F("G91")); // TODO: Use MString / TS() ... diff --git a/Marlin/src/lcd/extui/dgus/origin/DGUSDisplayDef.cpp b/Marlin/src/lcd/extui/dgus/origin/DGUSDisplayDef.cpp index 2cb7bd6f83..90ed84b01e 100644 --- a/Marlin/src/lcd/extui/dgus/origin/DGUSDisplayDef.cpp +++ b/Marlin/src/lcd/extui/dgus/origin/DGUSDisplayDef.cpp @@ -165,7 +165,7 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = { VPHELPER(VP_T_E0_Is, &thermalManager.temp_hotend[0].celsius, nullptr, screen.sendFloatAsLongValueToDisplay<0>), VPHELPER(VP_T_E0_Set, &thermalManager.temp_hotend[0].target, screen.handleTemperatureChanged, &screen.sendWordValueToDisplay), VPHELPER(VP_Flowrate_E0, nullptr, screen.handleFlowRateChanged, screen.sendWordValueToDisplay), - VPHELPER(VP_EPos, &destination.e, nullptr, screen.sendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_EPos, &motion.destination.e, nullptr, screen.sendFloatAsLongValueToDisplay<2>), VPHELPER(VP_MOVE_E0, nullptr, screen.handleManualExtrude, nullptr), VPHELPER(VP_E0_CONTROL, &thermalManager.temp_hotend[0].target, screen.handleHeaterControl, nullptr), VPHELPER(VP_E0_STATUS, &thermalManager.temp_hotend[0].target, nullptr, screen.sendHeaterStatusToDisplay), @@ -222,12 +222,12 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = { #endif // Feedrate - VPHELPER(VP_Feedrate_Percentage, &feedrate_percentage, screen.setValueDirectly, screen.sendWordValueToDisplay), + VPHELPER(VP_Feedrate_Percentage, &motion.feedrate_percentage, screen.setValueDirectly, screen.sendWordValueToDisplay), // Position Data - VPHELPER(VP_XPos, ¤t_position.x, nullptr, screen.sendFloatAsLongValueToDisplay<2>), - VPHELPER(VP_YPos, ¤t_position.y, nullptr, screen.sendFloatAsLongValueToDisplay<2>), - VPHELPER(VP_ZPos, ¤t_position.z, nullptr, screen.sendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_XPos, &motion.position.x, nullptr, screen.sendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_YPos, &motion.position.y, nullptr, screen.sendFloatAsLongValueToDisplay<2>), + VPHELPER(VP_ZPos, &motion.position.z, nullptr, screen.sendFloatAsLongValueToDisplay<2>), // Print Progress VPHELPER(VP_PrintProgress_Percentage, nullptr, nullptr, screen.sendPrintProgressToDisplay), diff --git a/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.cpp b/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.cpp index f577047e3a..7f52f959f1 100644 --- a/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.cpp +++ b/Marlin/src/lcd/extui/dgus/origin/DGUSScreenHandler.cpp @@ -201,10 +201,10 @@ void DGUSScreenHandler::handleManualMove(DGUS_VP_Variable &var, void *val_ptr) { } else { // movement - const bool old_relative_mode = relative_mode; - if (!relative_mode) queue.enqueue_now(F("G91")); + const bool old_relative_mode = motion.relative_mode; + if (!old_relative_mode) queue.enqueue_now(F("G91")); char buf[32]; // G1 X9999.99 F12345 - const uint16_t backup_speed = MMS_TO_MMM(feedrate_mm_s); + const uint16_t backup_speed = MMS_TO_MMM(motion.feedrate_mm_s); char sign[] = "\0"; int16_t value = movevalue / 100; if (movevalue < 0) { value *= -1; sign[0] = '-'; } diff --git a/Marlin/src/lcd/extui/dgus_e3s1pro/dgus_e3s1pro_extui.cpp b/Marlin/src/lcd/extui/dgus_e3s1pro/dgus_e3s1pro_extui.cpp index 07b7e9e94c..135f4d844a 100644 --- a/Marlin/src/lcd/extui/dgus_e3s1pro/dgus_e3s1pro_extui.cpp +++ b/Marlin/src/lcd/extui/dgus_e3s1pro/dgus_e3s1pro_extui.cpp @@ -99,7 +99,7 @@ namespace ExtUI { void onPauseMode( const PauseMessage message, const PauseMode mode/*=PAUSE_MODE_SAME*/, - const uint8_t extruder/*=active_extruder*/ + const uint8_t extruder/*=motion.extruder*/ ) { stdOnPauseMode(message, mode, extruder); } diff --git a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_VPList.cpp b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_VPList.cpp index 172cf98fe6..68a48e47f4 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_VPList.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/definition/DGUS_VPList.cpp @@ -188,7 +188,7 @@ const struct DGUS_VP vp_list[] PROGMEM = { VP_HELPER_TX(DGUS_Addr::STATUS_Icons, &DGUSTxHandler::statusIcons), VP_HELPER_TX_AUTO(DGUS_Addr::ADJUST_Feedrate, - &feedrate_percentage, + &motion.feedrate_percentage, &DGUSTxHandler::extraToInteger), VP_HELPER_TX_AUTO(DGUS_Addr::ADJUST_Flowrate_CUR, nullptr, @@ -255,13 +255,13 @@ const struct DGUS_VP vp_list[] PROGMEM = { &DGUSTxHandler::extraToInteger), VP_HELPER_TX_AUTO(DGUS_Addr::MOVE_CurrentX, - ¤t_position.x, + &motion.position.x, (&DGUSTxHandler::extraToFixedPoint)), VP_HELPER_TX_AUTO(DGUS_Addr::MOVE_CurrentY, - ¤t_position.y, + &motion.position.y, (&DGUSTxHandler::extraToFixedPoint)), VP_HELPER_TX_AUTO(DGUS_Addr::MOVE_CurrentZ, - ¤t_position.z, + &motion.position.z, (&DGUSTxHandler::extraToFixedPoint)), VP_HELPER_TX_EXTRA(DGUS_Addr::MOVE_StepIcons, &DGUSScreenHandler::move_steps, diff --git a/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp b/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp index 2b7afa76d4..d969e58c84 100644 --- a/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp +++ b/Marlin/src/lcd/extui/dgus_reloaded/dgus_reloaded_extui.cpp @@ -94,7 +94,7 @@ namespace ExtUI { void onPauseMode( const PauseMessage message, const PauseMode mode/*=PAUSE_MODE_SAME*/, - const uint8_t extruder/*=active_extruder*/ + const uint8_t extruder/*=motion.extruder*/ ) { stdOnPauseMode(message, mode, extruder); } diff --git a/Marlin/src/lcd/extui/example/example.cpp b/Marlin/src/lcd/extui/example/example.cpp index 177ce156d5..4057609fc4 100644 --- a/Marlin/src/lcd/extui/example/example.cpp +++ b/Marlin/src/lcd/extui/example/example.cpp @@ -74,7 +74,7 @@ namespace ExtUI { void onPauseMode( const PauseMessage message, const PauseMode mode/*=PAUSE_MODE_SAME*/, - const uint8_t extruder/*=active_extruder*/ + const uint8_t extruder/*=motion.extruder*/ ) { stdOnPauseMode(message, mode, extruder); } diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/load_chocolate.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/load_chocolate.cpp index 03d47cf73a..9ad6c02f79 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/load_chocolate.cpp +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/load_chocolate.cpp @@ -129,12 +129,12 @@ bool LoadChocolateScreen::onTouchEnd(uint8_t tag) { return true; } -void LoadChocolateScreen::setManualFeedrateAndIncrement(float feedrate_mm_s, float &increment_mm) { +void LoadChocolateScreen::setManualFeedrateAndIncrement(float fr_mm_s, float &increment_mm) { // Compute increment so feedrate so that the tool lags the adjuster when it is // being held down, this allows enough margin for the planner to // connect segments and even out the motion. - ExtUI::setFeedrate_mm_s(feedrate_mm_s); - increment_mm = feedrate_mm_s / ((TOUCH_REPEATS_PER_SECOND) * 0.80f); + ExtUI::setFeedrate_mm_s(fr_mm_s); + increment_mm = fr_mm_s / ((TOUCH_REPEATS_PER_SECOND) * 0.80f); } bool LoadChocolateScreen::onTouchHeld(uint8_t tag) { diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/load_chocolate.h b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/load_chocolate.h index 426669775d..dbdfd3f409 100644 --- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/load_chocolate.h +++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/load_chocolate.h @@ -37,7 +37,7 @@ class LoadChocolateScreen : public BaseScreen, public CachedScreenmks_obj_id) { case ID_C_ADD: if (!editingFlowrate) - feedrate_percentage = _MIN(MAX_EXT_SPEED_PERCENT, feedrate_percentage + uiCfg.stepPrintSpeed); + motion.feedrate_percentage = _MIN(MAX_EXT_SPEED_PERCENT, motion.feedrate_percentage + uiCfg.stepPrintSpeed); else { const int16_t new_flow = _MIN(MAX_EXT_SPEED_PERCENT, planner.flow_percentage[0] + uiCfg.stepPrintSpeed); planner.set_flow(0, new_flow); @@ -62,7 +62,7 @@ static void event_handler(lv_obj_t *obj, lv_event_t event) { break; case ID_C_DEC: if (!editingFlowrate) - feedrate_percentage = _MAX(MIN_EXT_SPEED_PERCENT, feedrate_percentage - uiCfg.stepPrintSpeed); + motion.feedrate_percentage = _MAX(MIN_EXT_SPEED_PERCENT, motion.feedrate_percentage - uiCfg.stepPrintSpeed); else { const int16_t new_flow = _MAX(MIN_EXT_SPEED_PERCENT, planner.flow_percentage[0] - uiCfg.stepPrintSpeed); planner.set_flow(0, new_flow); @@ -165,7 +165,7 @@ void disp_print_speed() { } else { lbl = speed_menu.move_speed; - val = feedrate_percentage; + val = motion.feedrate_percentage; } strcpy(public_buf_l, lbl); strcat_P(public_buf_l, PSTR(": ")); diff --git a/Marlin/src/lcd/extui/mks_ui/draw_dialog.cpp b/Marlin/src/lcd/extui/mks_ui/draw_dialog.cpp index 596c78c6aa..372cffd399 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_dialog.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_dialog.cpp @@ -101,7 +101,7 @@ static void btn_ok_event_cb(lv_obj_t *btn, lv_event_t event) { } card.openFileRead(cur_name); if (card.isFileOpen()) { - feedrate_percentage = 100; + motion.feedrate_percentage = 100; TERN_(HAS_EXTRUDERS, planner.set_flow(0, 100)); E_TERN_(planner.set_flow(1, 100)); card.startOrResumeFilePrinting(); diff --git a/Marlin/src/lcd/extui/mks_ui/draw_filament_change.cpp b/Marlin/src/lcd/extui/mks_ui/draw_filament_change.cpp index 26ed471a3a..4ed2363a78 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_filament_change.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_filament_change.cpp @@ -96,9 +96,9 @@ static void event_handler(lv_obj_t *obj, lv_event_t event) { if (uiCfg.print_state != IDLE && uiCfg.print_state != REPRINTED) gcode.process_subcommands_now(uiCfg.extruderIndexBak == 1 ? F("T1") : F("T0")); #endif - feedrate_mm_s = (float)uiCfg.moveSpeed_bak; + motion.feedrate_mm_s = (float)uiCfg.moveSpeed_bak; if (uiCfg.print_state == PAUSED) - planner.set_e_position_mm((destination.e = current_position.e = uiCfg.current_e_position_bak)); + planner.set_e_position_mm((motion.destination.e = motion.position.e = uiCfg.current_e_position_bak)); thermalManager.setTargetHotend(uiCfg.hotendTargetTempBak, uiCfg.extruderIndex); goto_previous_ui(); diff --git a/Marlin/src/lcd/extui/mks_ui/draw_move_motor.cpp b/Marlin/src/lcd/extui/mks_ui/draw_move_motor.cpp index 84959c15a1..557910f782 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_move_motor.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_move_motor.cpp @@ -89,9 +89,9 @@ static void event_handler(lv_obj_t *obj, lv_event_t event) { void refresh_pos(lv_task_t *) { switch (cur_label) { - case 'X': cur_pos = current_position.x; break; - case 'Y': cur_pos = current_position.y; break; - case 'Z': cur_pos = current_position.z; break; + case 'X': cur_pos = motion.position.x; break; + case 'Y': cur_pos = motion.position.y; break; + case 'Z': cur_pos = motion.position.z; break; default: return; } disp_cur_pos(); diff --git a/Marlin/src/lcd/extui/mks_ui/draw_operation.cpp b/Marlin/src/lcd/extui/mks_ui/draw_operation.cpp index 14b655e09c..6952e80f8d 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_operation.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_operation.cpp @@ -67,7 +67,7 @@ static void event_handler(lv_obj_t *obj, lv_event_t event) { break; case ID_O_FILAMENT: #if HAS_MULTI_EXTRUDER - uiCfg.extruderIndexBak = active_extruder; + uiCfg.extruderIndexBak = motion.extruder; #endif if (uiCfg.print_state == WORKING) { #if HAS_MEDIA @@ -76,8 +76,8 @@ static void event_handler(lv_obj_t *obj, lv_event_t event) { uiCfg.print_state = PAUSING; #endif } - uiCfg.moveSpeed_bak = (uint16_t)feedrate_mm_s; - uiCfg.hotendTargetTempBak = thermalManager.degTargetHotend(active_extruder); + uiCfg.moveSpeed_bak = (uint16_t)motion.feedrate_mm_s; + uiCfg.hotendTargetTempBak = thermalManager.degTargetHotend(motion.extruder); lv_clear_operation(); lv_draw_filament_change(); break; diff --git a/Marlin/src/lcd/extui/mks_ui/draw_printing.cpp b/Marlin/src/lcd/extui/mks_ui/draw_printing.cpp index 5c13eeaa01..d13c040dbc 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_printing.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_printing.cpp @@ -254,7 +254,7 @@ void disp_print_time() { } void disp_fan_Zpos() { - dtostrf(current_position.z, 1, 3, public_buf_l); + dtostrf(motion.position.z, 1, 3, public_buf_l); lv_label_set_text(labelZpos, public_buf_l); } diff --git a/Marlin/src/lcd/extui/mks_ui/draw_ui.cpp b/Marlin/src/lcd/extui/mks_ui/draw_ui.cpp index b3ae273a48..e9ed1078c4 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_ui.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_ui.cpp @@ -649,7 +649,7 @@ char *creat_title_text() { card.openFileRead(cur_name); if (card.isFileOpen()) { - feedrate_percentage = 100; + motion.feedrate_percentage = 100; TERN_(HAS_EXTRUDERS, planner.set_flow(0, 100)); E_TERN_(planner.set_flow(1, 100)); card.startOrResumeFilePrinting(); diff --git a/Marlin/src/lcd/extui/mks_ui/draw_z_offset_wizard.cpp b/Marlin/src/lcd/extui/mks_ui/draw_z_offset_wizard.cpp index 7f4f12b930..6ca78aab20 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_z_offset_wizard.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_z_offset_wizard.cpp @@ -82,7 +82,7 @@ static void event_handler(lv_obj_t *obj, lv_event_t event) { if (do_inject) { sprintf_P(public_buf_l, PSTR("G91\nG1 %c%s F%d\nG90"), cur_label, dtostrf(dist, 1, 3, str_1), uiCfg.moveSpeed); queue.inject(public_buf_l); - //calculated_z_offset = probe.offset.z + current_position.z - z_offset_ref; + //calculated_z_offset = probe.offset.z + motion.position.z - z_offset_ref; disp_cur_wizard_pos(); } @@ -97,23 +97,23 @@ static void event_handler(lv_obj_t *obj, lv_event_t event) { disp_move_wizard_dist(); break; case ID_M_SAVE: - current_position.z = z_offset_ref; // Set Z to z_offset_ref, as we can expect it is at probe height + motion.position.z = z_offset_ref; // Set Z to z_offset_ref, as we can expect it is at probe height probe.offset.z = calculated_z_offset; - sync_plan_position(); - do_z_post_clearance(); + motion.sync_plan_position(); + motion.do_z_post_clearance(); hal.watchdog_refresh(); draw_return_ui(); return; case ID_M_RETURN: probe.offset.z = z_offset_backup; - SET_SOFT_ENDSTOP_LOOSE(false); + motion.set_soft_endstop_loose(false); TERN_(HAS_LEVELING, set_bed_leveling_enabled(mks_leveling_was_active)); // On cancel the Z position needs correction #if HOMING_Z_WITH_PROBE && defined(PROBE_OFFSET_WIZARD_START_Z) - set_axis_never_homed(Z_AXIS); + motion.set_axis_never_homed(Z_AXIS); queue.inject(F("G28Z")); #else - do_z_post_clearance(); + motion.do_z_post_clearance(); #endif hal.watchdog_refresh(); draw_return_ui(); @@ -125,8 +125,8 @@ static void event_handler(lv_obj_t *obj, lv_event_t event) { void refresh_wizard_pos(lv_task_t *) { switch (cur_label) { case 'Z': - cur_pos = current_position.z; - calculated_z_offset = probe.offset.z + current_position.z - z_offset_ref; + cur_pos = motion.position.z; + calculated_z_offset = probe.offset.z + motion.position.z - z_offset_ref; cur_OffsetPos = calculated_z_offset; break; default: return; @@ -136,7 +136,7 @@ void refresh_wizard_pos(lv_task_t *) { void lv_draw_z_offset_wizard() { - set_all_unhomed(); + motion.set_all_unhomed(); // Store probe.offset.z for Case: Cancel z_offset_backup = probe.offset.z; @@ -154,7 +154,7 @@ void lv_draw_z_offset_wizard() { queue.inject(F("G28")); z_offset_ref = 0; // Set Z Value for Wizard Position to 0 - calculated_z_offset = probe.offset.z + current_position.z - z_offset_ref; + calculated_z_offset = probe.offset.z + motion.position.z - z_offset_ref; cur_OffsetPos = calculated_z_offset; scr = lv_screen_create(Z_OFFSET_WIZARD_UI, machine_menu.LevelingZoffsetTitle); diff --git a/Marlin/src/lcd/extui/mks_ui/printer_operation.cpp b/Marlin/src/lcd/extui/mks_ui/printer_operation.cpp index 9999aa4843..f4d7a5f913 100644 --- a/Marlin/src/lcd/extui/mks_ui/printer_operation.cpp +++ b/Marlin/src/lcd/extui/mks_ui/printer_operation.cpp @@ -61,9 +61,9 @@ void printer_state_polling() { gcode.process_subcommands_now(F("M25")); // save the position - uiCfg.current_x_position_bak = current_position.x; - uiCfg.current_y_position_bak = current_position.y; - uiCfg.current_z_position_bak = current_position.z; + uiCfg.current_x_position_bak = motion.position.x; + uiCfg.current_y_position_bak = motion.position.y; + uiCfg.current_z_position_bak = motion.position.z; if (gCfgItems.pausePosZ != (float)-1) { sprintf_P(public_buf_l, PSTR("G91\nG1 Z%s\nG90"), dtostrf(gCfgItems.pausePosZ, 1, 1, str_1)); @@ -74,7 +74,7 @@ void printer_state_polling() { gcode.process_subcommands_now(public_buf_l); } uiCfg.print_state = PAUSED; - uiCfg.current_e_position_bak = current_position.e; + uiCfg.current_e_position_bak = motion.position.e; gCfgItems.pause_reprint = true; update_spi_flash(); diff --git a/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp b/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp index 8ba81a6f2e..0b7765ea16 100644 --- a/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp +++ b/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp @@ -1069,8 +1069,8 @@ static void wifi_gcode_exec(uint8_t * const cmd_line) { } card.openFileRead(cur_name); if (card.isFileOpen()) { - //saved_feedrate_percentage = feedrate_percentage; - feedrate_percentage = 100; + //saved_feedrate_percentage = motion.feedrate_percentage; + motion.feedrate_percentage = 100; TERN_(HAS_EXTRUDERS, planner.set_flow(0, 100)); E_TERN_(planner.set_flow(1, 100)); card.startOrResumeFilePrinting(); @@ -2099,7 +2099,7 @@ void get_wifi_commands() { // Process critical commands early if (strcmp_P(command, PSTR("M108")) == 0) marlin.end_waiting(); if (strcmp_P(command, PSTR("M112")) == 0) marlin.kill(FPSTR(M112_KILL_STR), nullptr, true); - if (strcmp_P(command, PSTR("M410")) == 0) quickstop_stepper(); + if (strcmp_P(command, PSTR("M410")) == 0) motion.quickstop_stepper(); #endif // Add the command to the queue diff --git a/Marlin/src/lcd/extui/nextion/nextion_extui.cpp b/Marlin/src/lcd/extui/nextion/nextion_extui.cpp index 7beecfecbf..eab0e02cd8 100644 --- a/Marlin/src/lcd/extui/nextion/nextion_extui.cpp +++ b/Marlin/src/lcd/extui/nextion/nextion_extui.cpp @@ -67,7 +67,7 @@ namespace ExtUI { void onPauseMode( const PauseMessage message, const PauseMode mode/*=PAUSE_MODE_SAME*/, - const uint8_t extruder/*=active_extruder*/ + const uint8_t extruder/*=motion.extruder*/ ) { stdOnPauseMode(message, mode, extruder); } diff --git a/Marlin/src/lcd/extui/ui_api.cpp b/Marlin/src/lcd/extui/ui_api.cpp index ded9b80227..d13d6b4d38 100644 --- a/Marlin/src/lcd/extui/ui_api.cpp +++ b/Marlin/src/lcd/extui/ui_api.cpp @@ -189,7 +189,7 @@ namespace ExtUI { // Marlin by GCODE routines, but should remain untouched // during manual jogging, allowing us to reuse the space // for our direction vector. - destination = dir; + motion.destination = dir; flags.jogging = !NEAR_ZERO(dir.x) || !NEAR_ZERO(dir.y) || !NEAR_ZERO(dir.z); } @@ -198,7 +198,7 @@ namespace ExtUI { if (flags.jogging) { #define OUT_OF_RANGE(VALUE) (VALUE < -1.0f || VALUE > 1.0f) - if (OUT_OF_RANGE(destination.x) || OUT_OF_RANGE(destination.y) || OUT_OF_RANGE(destination.z)) { + if (OUT_OF_RANGE(motion.destination.x) || OUT_OF_RANGE(motion.destination.y) || OUT_OF_RANGE(motion.destination.z)) { // If destination on any axis is out of range, it // probably means the UI forgot to stop jogging and // ran GCODE that wrote a position to destination. @@ -206,7 +206,7 @@ namespace ExtUI { flags.jogging = false; return; } - norm_jog = destination; + norm_jog = motion.destination; } } #endif @@ -326,13 +326,13 @@ namespace ExtUI { // High level axis and extruder positions // float getAxisPosition_mm(const axis_t axis) { - return current_position[axis]; + return motion.position[axis]; } float getAxisPosition_mm(const extruder_t extruder) { const extruder_t old_tool = getActiveTool(); setActiveTool(extruder, true); - const float epos = TERN0(JOYSTICK, flags.jogging) ? destination.e : current_position.e; + const float epos = TERN0(JOYSTICK, flags.jogging) ? motion.destination.e : motion.position.e; setActiveTool(old_tool, true); return epos; } @@ -340,26 +340,26 @@ namespace ExtUI { void setAxisPosition_mm(const float position, const axis_t axis, const feedRate_t feedrate/*=0*/) { // Get motion limit from software endstops, if any float min, max; - soft_endstop.get_manual_axis_limits((AxisEnum)axis, min, max); + motion.soft_endstop.get_manual_axis_limits((AxisEnum)axis, min, max); // Delta limits XY based on the current offset from center // This assumes the center is 0,0 #if ENABLED(DELTA) if (axis != Z) { - max = SQRT(FLOAT_SQ(PRINTABLE_RADIUS) - sq(current_position[Y - axis])); // (Y - axis) == the other axis + max = SQRT(FLOAT_SQ(PRINTABLE_RADIUS) - sq(motion.position[Y - axis])); // (Y - axis) == the other axis min = -max; } #endif - current_position[axis] = constrain(position, min, max); - line_to_current_position(feedrate ?: manual_feedrate_mm_s[axis]); + motion.position[axis] = constrain(position, min, max); + motion.goto_current_position(feedrate ?: manual_feedrate_mm_s[axis]); } void setAxisPosition_mm(const float position, const extruder_t extruder, const feedRate_t feedrate/*=0*/) { setActiveTool(extruder, true); - current_position.e = position; - line_to_current_position(feedrate ?: manual_feedrate_mm_s.e); + motion.position.e = position; + motion.goto_current_position(feedrate ?: manual_feedrate_mm_s.e); } // @@ -368,8 +368,8 @@ namespace ExtUI { void setActiveTool(const extruder_t extruder, bool no_move) { #if HAS_MULTI_EXTRUDER const uint8_t e = extruder - E0; - if (e != active_extruder) tool_change(e, no_move); - active_extruder = e; + if (e != motion.extruder) tool_change(e, no_move); + motion.extruder = e; #else UNUSED(extruder); UNUSED(no_move); @@ -384,7 +384,7 @@ namespace ExtUI { } } - extruder_t getActiveTool() { return getTool(active_extruder); } + extruder_t getActiveTool() { return getTool(motion.extruder); } // // Moving axes and extruders @@ -397,9 +397,9 @@ namespace ExtUI { bool canMove(const axis_t axis) { switch (axis) { #if ANY(IS_KINEMATIC, NO_MOTION_BEFORE_HOMING) - OPTCODE(HAS_X_AXIS, case X: return !axis_should_home(X_AXIS)) - OPTCODE(HAS_Y_AXIS, case Y: return !axis_should_home(Y_AXIS)) - OPTCODE(HAS_Z_AXIS, case Z: return !axis_should_home(Z_AXIS)) + OPTCODE(HAS_X_AXIS, case X: return !motion.axis_should_home(X_AXIS)) + OPTCODE(HAS_Y_AXIS, case Y: return !motion.axis_should_home(Y_AXIS)) + OPTCODE(HAS_Z_AXIS, case Z: return !motion.axis_should_home(Z_AXIS)) #else case X: case Y: case Z: return true; #endif @@ -427,8 +427,8 @@ namespace ExtUI { // #if HAS_SOFTWARE_ENDSTOPS - bool getSoftEndstopState() { return soft_endstop._enabled; } - void setSoftEndstopState(const bool value) { soft_endstop._enabled = value; } + bool getSoftEndstopState() { return motion.soft_endstop._enabled; } + void setSoftEndstopState(const bool value) { motion.soft_endstop._enabled = value; } #endif // @@ -700,14 +700,14 @@ namespace ExtUI { #endif #endif - feedRate_t getFeedrate_mm_s() { return feedrate_mm_s; } + feedRate_t getFeedrate_mm_s() { return motion.feedrate_mm_s; } int16_t getFlow_percent(const extruder_t extr) { return planner.flow_percentage[extr]; } feedRate_t getMinFeedrate_mm_s() { return planner.settings.min_feedrate_mm_s; } feedRate_t getMinTravelFeedrate_mm_s() { return planner.settings.min_travel_feedrate_mm_s; } float getPrintingAcceleration_mm_s2() { return planner.settings.acceleration; } float getRetractAcceleration_mm_s2() { return planner.settings.retract_acceleration; } float getTravelAcceleration_mm_s2() { return planner.settings.travel_acceleration; } - void setFeedrate_mm_s(const feedRate_t fr) { feedrate_mm_s = fr; } + void setFeedrate_mm_s(const feedRate_t fr) { motion.feedrate_mm_s = fr; } void setFlow_percent(const int16_t flow, const extruder_t extr) { planner.set_flow(extr, flow); } void setMinFeedrate_mm_s(const feedRate_t fr) { planner.settings.min_feedrate_mm_s = fr; } void setMinTravelFeedrate_mm_s(const feedRate_t fr) { planner.settings.min_travel_feedrate_mm_s = fr; } @@ -752,7 +752,7 @@ namespace ExtUI { #if ENABLED(BABYSTEP_ZPROBE_OFFSET) // Make it so babystepping in Z adjusts the Z probe offset. - if (axis == Z && TERN1(HAS_MULTI_EXTRUDER, (linked_nozzles || active_extruder == 0))) + if (axis == Z && TERN1(HAS_MULTI_EXTRUDER, (linked_nozzles || motion.extruder == 0))) probe.offset.z += mm; #endif @@ -764,7 +764,7 @@ namespace ExtUI { */ if (!linked_nozzles) { HOTEND_LOOP() - if (e != active_extruder) + if (e != motion.extruder) hotend_offset[e][axis] += mm; TERN_(HAS_X_AXIS, normalizeNozzleOffset(X)); @@ -882,21 +882,21 @@ namespace ExtUI { void moveToMeshPoint(const xy_uint8_t &pos, const float z) { #if ANY(MESH_BED_LEVELING, AUTO_BED_LEVELING_UBL) - REMEMBER(fr, feedrate_mm_s); + REMEMBER(fr, motion.feedrate_mm_s); const float x_target = MESH_MIN_X + pos.x * (MESH_X_DIST), y_target = MESH_MIN_Y + pos.y * (MESH_Y_DIST); - if (x_target != current_position.x || y_target != current_position.y) { + if (x_target != motion.position.x || y_target != motion.position.y) { // If moving across bed, raise nozzle to safe height over bed - feedrate_mm_s = z_probe_fast_mm_s; - destination.set(current_position.x, current_position.y, Z_CLEARANCE_BETWEEN_PROBES); - prepare_line_to_destination(); - if (XY_PROBE_FEEDRATE_MM_S) feedrate_mm_s = XY_PROBE_FEEDRATE_MM_S; - destination.set(x_target, y_target); - prepare_line_to_destination(); + motion.feedrate_mm_s = z_probe_fast_mm_s; + motion.destination.set(motion.position.x, motion.position.y, Z_CLEARANCE_BETWEEN_PROBES); + motion.prepare_line_to_destination(); + if (XY_PROBE_FEEDRATE_MM_S) motion.feedrate_mm_s = XY_PROBE_FEEDRATE_MM_S; + motion.destination.set(x_target, y_target); + motion.prepare_line_to_destination(); } - feedrate_mm_s = z_probe_fast_mm_s; - destination.z = z; - prepare_line_to_destination(); + motion.feedrate_mm_s = z_probe_fast_mm_s; + motion.destination.z = z; + motion.prepare_line_to_destination(); #else UNUSED(pos); UNUSED(z); @@ -924,7 +924,7 @@ namespace ExtUI { } #endif - float getFeedrate_percent() { return feedrate_percentage; } + float getFeedrate_percent() { return motion.feedrate_percentage; } #if ENABLED(PIDTEMP) float getPID_Kp(const extruder_t tool) { return thermalManager.temp_hotend[tool].pid.p(); } @@ -959,10 +959,10 @@ namespace ExtUI { bool commandsInQueue() { return (planner.has_blocks_queued() || queue.has_commands_queued()); } - bool isAxisPositionKnown(const axis_t axis) { return axis_is_trusted((AxisEnum)axis); } - bool isAxisPositionKnown(const extruder_t) { return axis_is_trusted(E_AXIS); } - bool isPositionKnown() { return all_axes_trusted(); } - bool isMachineHomed() { return all_axes_homed(); } + bool isAxisPositionKnown(const axis_t axis) { return motion.axis_is_trusted((AxisEnum)axis); } + bool isAxisPositionKnown(const extruder_t) { return motion.axis_is_trusted(E_AXIS); } + bool isPositionKnown() { return motion.all_axes_trusted(); } + bool isMachineHomed() { return motion.all_axes_homed(); } PGM_P getFirmwareName_str() { static PGMSTR(firmware_name, "Marlin " SHORT_BUILD_VERSION); @@ -1016,7 +1016,7 @@ namespace ExtUI { #endif } - void setFeedrate_percent(const float value) { feedrate_percentage = constrain(value, 10, 500); } + void setFeedrate_percent(const float value) { motion.feedrate_percentage = constrain(value, 10, 500); } void coolDown() { thermalManager.cooldown(); } @@ -1034,7 +1034,7 @@ namespace ExtUI { void stdOnPauseMode( const PauseMessage message, const PauseMode mode/*=PAUSE_MODE_SAME*/, - const uint8_t extruder/*=active_extruder*/ + const uint8_t extruder/*=motion.extruder*/ ) { if (mode != PAUSE_MODE_SAME) pause_mode = mode; pauseModeStatus = message; @@ -1191,7 +1191,7 @@ namespace ExtUI { void MarlinUI::pause_show_message( const PauseMessage message, const PauseMode mode/*=PAUSE_MODE_SAME*/, - const uint8_t extruder/*=active_extruder*/ + const uint8_t extruder/*=motion.extruder*/ ) { ExtUI::onPauseMode(message, mode, extruder); } diff --git a/Marlin/src/lcd/extui/ui_api.h b/Marlin/src/lcd/extui/ui_api.h index 134bf62960..f09d90be0c 100644 --- a/Marlin/src/lcd/extui/ui_api.h +++ b/Marlin/src/lcd/extui/ui_api.h @@ -534,8 +534,8 @@ namespace ExtUI { #if ENABLED(ADVANCED_PAUSE_FEATURE) // Standard stdOnPauseMode sets pauseModeStatus and calls onUserConfirmRequired extern PauseMessage pauseModeStatus; - void stdOnPauseMode(const PauseMessage message, const PauseMode mode=PAUSE_MODE_SAME, const uint8_t extruder=active_extruder); - void onPauseMode(const PauseMessage message, const PauseMode mode=PAUSE_MODE_SAME, const uint8_t extruder=active_extruder); + void stdOnPauseMode(const PauseMessage message, const PauseMode mode=PAUSE_MODE_SAME, const uint8_t extruder=motion.extruder); + void onPauseMode(const PauseMessage message, const PauseMode mode=PAUSE_MODE_SAME, const uint8_t extruder=motion.extruder); #endif void onStatusChanged_P(PGM_P const msg); diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp index 0c5a0b83a7..f475b52efc 100644 --- a/Marlin/src/lcd/marlinui.cpp +++ b/Marlin/src/lcd/marlinui.cpp @@ -171,7 +171,7 @@ constexpr uint8_t epps = ENCODER_PULSES_PER_STEP; return FPSTR((PGM_P)pgm_read_ptr(&preheat_labels[m])); } - void MarlinUI::apply_preheat(const uint8_t m, const uint8_t pmask, const uint8_t e/*=active_extruder*/) { + void MarlinUI::apply_preheat(const uint8_t m, const uint8_t pmask, const uint8_t e/*=motion.extruder*/) { const preheat_t &pre = material_preset[m]; TERN_(HAS_HOTEND, if (TEST(pmask, PT_HOTEND)) thermalManager.setTargetHotend(pre.hotend_temp, e)); TERN_(HAS_HEATED_BED, if (TEST(pmask, PT_BED)) thermalManager.setTargetBed(pre.bed_temp)); @@ -593,7 +593,7 @@ void MarlinUI::init() { else if (!keypad_debounce) { keypad_debounce = 2; - const bool homed = all_axes_homed(); + const bool homed = motion.all_axes_homed(); #if HAS_MARLINUI_MENU @@ -710,7 +710,7 @@ void MarlinUI::init() { #if ENABLED(ULTIPANEL_FEEDMULTIPLY) - const int16_t old_frm = feedrate_percentage; + const int16_t old_frm = motion.feedrate_percentage; int16_t new_frm = old_frm + int16_t(encoderPosition); // Dead zone at 100% feedrate @@ -728,7 +728,7 @@ void MarlinUI::init() { LIMIT(new_frm, SPEED_EDIT_MIN, SPEED_EDIT_MAX); if (old_frm != new_frm) { - feedrate_percentage = new_frm; + motion.feedrate_percentage = new_frm; encoderPosition = 0; #if ALL(HAS_SOUND, BEEP_ON_FEEDRATE_CHANGE) static millis_t next_beep; @@ -744,7 +744,7 @@ void MarlinUI::init() { #elif ENABLED(ULTIPANEL_FLOWPERCENT) - const int16_t old_fp = planner.flow_percentage[active_extruder]; + const int16_t old_fp = planner.flow_percentage[motion.extruder]; int16_t new_fp = old_fp + int16_t(encoderPosition); // Dead zone at 100% flow percentage @@ -762,7 +762,7 @@ void MarlinUI::init() { LIMIT(new_fp, FLOW_EDIT_MIN, FLOW_EDIT_MAX); if (old_fp != new_fp) { - planner.set_flow(active_extruder, new_fp); + planner.set_flow(motion.extruder, new_fp); encoderPosition = 0; } @@ -834,13 +834,13 @@ void MarlinUI::init() { /** * If a manual move has been posted and its time has arrived, and if the planner - * has a space for it, then add a linear move to current_position the planner. + * has a space for it, then add a linear move to motion.position the planner. * * If any manual move needs to be interrupted, make sure to force a manual move - * by setting manual_move.start_time to millis() after updating current_position. + * by setting manual_move.start_time to millis() after updating motion.position. * * To post a manual move: - * - Update current_position to the new place you want to go. + * - Update motion.position to the new place you want to go. * - Set manual_move.axis to an axis like X_AXIS. Use ALL_AXES_ENUM for diagonal moves. * - Set manual_move.start_time to a point in the future (in ms) when the move should be done. * @@ -867,18 +867,18 @@ void MarlinUI::init() { #if IS_KINEMATIC #if HAS_MULTI_EXTRUDER - REMEMBER(ae, active_extruder); + REMEMBER(ae, motion.extruder); #if MULTI_E_MANUAL - if (axis == E_AXIS) active_extruder = e_index; + if (axis == E_AXIS) motion.extruder = e_index; #endif #endif // Apply a linear offset to a single axis if (axis == ALL_AXES_ENUM) - destination = all_axes_destination; + motion.destination = all_axes_destination; else if (axis <= LOGICAL_AXES) { - destination = current_position; - destination[axis] += offset; + motion.destination = motion.position; + motion.destination[axis] += offset; } // Reset for the next move @@ -890,14 +890,14 @@ void MarlinUI::init() { // previous invocation is being blocked. Modifications to offset shouldn't be made while // processing is true or the planner will get out of sync. processing = true; - prepare_internal_move_to_destination(fr); // will set current_position from destination + motion.prepare_internal_move_to_destination(fr); // will set motion.position from destination processing = false; #else - // For Cartesian / Core motion simply move to the current_position - planner.buffer_line(current_position, fr, - TERN_(MULTI_E_MANUAL, axis == E_AXIS ? e_index :) active_extruder + // For Cartesian / Core motion simply move to the motion.position + planner.buffer_line(motion.position, fr, + TERN_(MULTI_E_MANUAL, axis == E_AXIS ? e_index :) motion.extruder ); //SERIAL_ECHOLNPGM("Add planner.move with Axis ", C(AXIS_CHAR(axis)), " at FR ", fr_mm_s); @@ -908,10 +908,10 @@ void MarlinUI::init() { } // - // Tell ui.update() to start a move to current_position after a short delay. + // Tell ui.update() to start a move to motion.position after a short delay. // void ManualMove::soon(const AxisEnum move_axis - OPTARG(MULTI_E_MANUAL, const int8_t eindex/*=active_extruder*/) + OPTARG(MULTI_E_MANUAL, const int8_t eindex/*=motion.extruder*/) ) { TERN_(MULTI_E_MANUAL, if (move_axis == E_AXIS) e_index = eindex); start_time = millis() + (menu_scale < 0.99f ? 0UL : 250UL); // delay for bigger moves diff --git a/Marlin/src/lcd/marlinui.h b/Marlin/src/lcd/marlinui.h index 8ec25ab5c6..23665ce243 100644 --- a/Marlin/src/lcd/marlinui.h +++ b/Marlin/src/lcd/marlinui.h @@ -155,27 +155,32 @@ typedef bool (*statusResetFunc_t)(); #if ENABLED(MANUAL_E_MOVES_RELATIVE) static float e_origin; #endif + template static void set_destination(const T& dest) { #if IS_KINEMATIC // Moves are segmented, so the entire move is not submitted at once. // Using a separate variable prevents corrupting the in-progress move. - all_axes_destination = current_position; + all_axes_destination = motion.position; all_axes_destination.set(dest); #else // Moves are submitted as single line to the planner using buffer_line. - current_position.set(dest); + motion.position.set(dest); #endif } + static float axis_value(const AxisEnum axis) { - return NATIVE_TO_LOGICAL(processing ? destination[axis] : SUM_TERN(IS_KINEMATIC, current_position[axis], offset), axis); + return motion.native_to_logical( + processing ? motion.destination[axis] : SUM_TERN(IS_KINEMATIC, motion.position[axis], offset), + axis + ); } static bool apply_diff(const AxisEnum axis, const float diff, const float min, const float max) { #if IS_KINEMATIC float &valref = offset; - const float rmin = min - current_position[axis], rmax = max - current_position[axis]; + const float rmin = min - motion.position[axis], rmax = max - motion.position[axis]; #else - float &valref = current_position[axis]; + float &valref = motion.position[axis]; const float rmin = min, rmax = max; #endif valref += diff; @@ -189,7 +194,7 @@ typedef bool (*statusResetFunc_t)(); static bool constexpr processing = false; #endif static void task(); - static void soon(const AxisEnum move_axis OPTARG(MULTI_E_MANUAL, const int8_t eindex=active_extruder)); + static void soon(const AxisEnum move_axis OPTARG(MULTI_E_MANUAL, const int8_t eindex=motion.extruder)); }; void lcd_move_axis(const AxisEnum); @@ -658,13 +663,13 @@ public: static preheat_t material_preset[PREHEAT_COUNT]; static void reset_material_presets(); static FSTR_P get_preheat_label(const uint8_t m); - static void apply_preheat(const uint8_t m, const uint8_t pmask, const uint8_t e=active_extruder); + static void apply_preheat(const uint8_t m, const uint8_t pmask, const uint8_t e=motion.extruder); static void preheat_set_fan(const uint8_t m) { TERN_(HAS_FAN, apply_preheat(m, _BV(PT_FAN))); } - static void preheat_hotend(const uint8_t m, const uint8_t e=active_extruder) { TERN_(HAS_HOTEND, apply_preheat(m, _BV(PT_HOTEND), e)); } - static void preheat_hotend_and_fan(const uint8_t m, const uint8_t e=active_extruder) { preheat_hotend(m, e); preheat_set_fan(m); } + static void preheat_hotend(const uint8_t m, const uint8_t e=motion.extruder) { TERN_(HAS_HOTEND, apply_preheat(m, _BV(PT_HOTEND), e)); } + static void preheat_hotend_and_fan(const uint8_t m, const uint8_t e=motion.extruder) { preheat_hotend(m, e); preheat_set_fan(m); } static void preheat_bed(const uint8_t m) { TERN_(HAS_HEATED_BED, apply_preheat(m, _BV(PT_BED))); } static void preheat_chamber(const uint8_t m) { TERN_(HAS_HEATED_CHAMBER, apply_preheat(m, _BV(PT_CHAMBER))); } - static void preheat_all(const uint8_t m, const uint8_t e=active_extruder) { apply_preheat(m, PT_ALL, e); } + static void preheat_all(const uint8_t m, const uint8_t e=motion.extruder) { apply_preheat(m, PT_ALL, e); } #endif /** @@ -774,7 +779,7 @@ public: #endif #if ENABLED(ADVANCED_PAUSE_FEATURE) && ANY(HAS_MARLINUI_MENU, EXTENSIBLE_UI, DWIN_CREALITY_LCD_JYERSUI) - static void pause_show_message(const PauseMessage message, const PauseMode mode=PAUSE_MODE_SAME, const uint8_t extruder=active_extruder); + static void pause_show_message(const PauseMessage message, const PauseMode mode=PAUSE_MODE_SAME, const uint8_t extruder=motion.extruder); #else static void _pause_show_message() {} #define pause_show_message(...) _pause_show_message() diff --git a/Marlin/src/lcd/menu/menu.cpp b/Marlin/src/lcd/menu/menu.cpp index a9ddd978e7..c329382e45 100644 --- a/Marlin/src/lcd/menu/menu.cpp +++ b/Marlin/src/lcd/menu/menu.cpp @@ -296,8 +296,8 @@ void scroll_screen(const uint8_t limit, const bool is_menu) { #if HAS_LINE_TO_Z void line_to_z(const float z) { - current_position.z = z; - line_to_current_position(manual_feedrate_mm_s.z); + motion.position.z = z; + motion.goto_current_position(manual_feedrate_mm_s.z); } #endif @@ -309,7 +309,7 @@ void scroll_screen(const uint8_t limit, const bool is_menu) { void lcd_babystep_zoffset() { if (ui.use_click()) return ui.goto_previous_screen_no_defer(); ui.defer_status_screen(); - const bool do_probe = DISABLED(BABYSTEP_HOTEND_Z_OFFSET) || active_extruder == 0; + const bool do_probe = DISABLED(BABYSTEP_HOTEND_Z_OFFSET) || motion.extruder == 0; if (ui.encoderPosition) { const int16_t babystep_increment = int16_t(ui.encoderPosition) * (BABYSTEP_SIZE_Z); ui.encoderPosition = 0; @@ -317,7 +317,7 @@ void scroll_screen(const uint8_t limit, const bool is_menu) { const float diff = planner.mm_per_step[Z_AXIS] * babystep_increment, new_probe_offset = probe.offset.z + diff, new_offs = TERN(BABYSTEP_HOTEND_Z_OFFSET - , do_probe ? new_probe_offset : hotend_offset[active_extruder].z - diff + , do_probe ? new_probe_offset : hotend_offset[motion.extruder].z - diff , new_probe_offset ); if (WITHIN(new_offs, PROBE_OFFSET_ZMIN, PROBE_OFFSET_ZMAX)) { @@ -327,7 +327,7 @@ void scroll_screen(const uint8_t limit, const bool is_menu) { if (do_probe) probe.offset.z = new_offs; else - TERN(BABYSTEP_HOTEND_Z_OFFSET, hotend_offset[active_extruder].z = new_offs, NOOP); + TERN(BABYSTEP_HOTEND_Z_OFFSET, hotend_offset[motion.extruder].z = new_offs, NOOP); ui.refresh(LCDVIEW_CALL_REDRAW_NEXT); } @@ -339,7 +339,7 @@ void scroll_screen(const uint8_t limit, const bool is_menu) { } else { #if ENABLED(BABYSTEP_HOTEND_Z_OFFSET) - MenuEditItemBase::draw_edit_screen(GET_TEXT_F(MSG_HOTEND_OFFSET_Z), ftostr54sign(hotend_offset[active_extruder].z)); + MenuEditItemBase::draw_edit_screen(GET_TEXT_F(MSG_HOTEND_OFFSET_Z), ftostr54sign(hotend_offset[motion.extruder].z)); #endif } } diff --git a/Marlin/src/lcd/menu/menu_advanced.cpp b/Marlin/src/lcd/menu/menu_advanced.cpp index 94e3ee41b2..6c97d50e56 100644 --- a/Marlin/src/lcd/menu/menu_advanced.cpp +++ b/Marlin/src/lcd/menu/menu_advanced.cpp @@ -146,7 +146,7 @@ void menu_backlash(); EDIT_ITEM(bool, MSG_VOLUMETRIC_ENABLED, &parser.volumetric_enabled, planner.calculate_volumetric_multipliers); #if ENABLED(VOLUMETRIC_EXTRUDER_LIMIT) - EDIT_ITEM_FAST(float42_52, MSG_VOLUMETRIC_LIMIT, &planner.volumetric_extruder_limit[active_extruder], 0.0f, float(VOLUMETRIC_EXTRUDER_LIMIT_MAX), planner.calculate_volumetric_extruder_limits); + EDIT_ITEM_FAST(float42_52, MSG_VOLUMETRIC_LIMIT, &planner.volumetric_extruder_limit[motion.extruder], 0.0f, float(VOLUMETRIC_EXTRUDER_LIMIT_MAX), planner.calculate_volumetric_extruder_limits); #if HAS_MULTI_EXTRUDER EXTRUDER_LOOP() EDIT_ITEM_FAST_N(float42_52, e, MSG_VOLUMETRIC_LIMIT_E, &planner.volumetric_extruder_limit[e], 0.0f, float(VOLUMETRIC_EXTRUDER_LIMIT_MAX), planner.calculate_volumetric_extruder_limits); @@ -154,7 +154,7 @@ void menu_backlash(); #endif if (parser.volumetric_enabled) { - EDIT_ITEM_FAST(float43, MSG_FILAMENT_DIAM, &planner.filament_size[active_extruder], 1.5f, 3.25f, planner.calculate_volumetric_multipliers); + EDIT_ITEM_FAST(float43, MSG_FILAMENT_DIAM, &planner.filament_size[motion.extruder], 1.5f, 3.25f, planner.calculate_volumetric_multipliers); #if HAS_MULTI_EXTRUDER EXTRUDER_LOOP() EDIT_ITEM_FAST_N(float43, e, MSG_FILAMENT_DIAM_E, &planner.filament_size[e], 1.5f, 3.25f, planner.calculate_volumetric_multipliers); @@ -165,13 +165,13 @@ void menu_backlash(); #if ENABLED(CONFIGURE_FILAMENT_CHANGE) constexpr float extrude_maxlength = TERN(PREVENT_LENGTHY_EXTRUDE, EXTRUDE_MAXLENGTH, 999); - EDIT_ITEM_FAST(float4, MSG_FILAMENT_UNLOAD, &fc_settings[active_extruder].unload_length, 0, extrude_maxlength); + EDIT_ITEM_FAST(float4, MSG_FILAMENT_UNLOAD, &fc_settings[motion.extruder].unload_length, 0, extrude_maxlength); #if HAS_MULTI_EXTRUDER EXTRUDER_LOOP() EDIT_ITEM_FAST_N(float4, e, MSG_FILAMENTUNLOAD_E, &fc_settings[e].unload_length, 0, extrude_maxlength); #endif - EDIT_ITEM_FAST(float4, MSG_FILAMENT_LOAD, &fc_settings[active_extruder].load_length, 0, extrude_maxlength); + EDIT_ITEM_FAST(float4, MSG_FILAMENT_LOAD, &fc_settings[motion.extruder].load_length, 0, extrude_maxlength); #if HAS_MULTI_EXTRUDER EXTRUDER_LOOP() EDIT_ITEM_FAST_N(float4, e, MSG_FILAMENTLOAD_E, &fc_settings[e].load_length, 0, extrude_maxlength); @@ -494,7 +494,7 @@ void menu_backlash(); EDIT_ITEM_FAST_N(float5, a, MSG_VMAX_N, &planner.settings.max_feedrate_mm_s[a], 1, max_fr_edit_scaled[a]); #if E_STEPPERS - EDIT_ITEM_FAST_N(float5, E_AXIS, MSG_VMAX_N, &planner.settings.max_feedrate_mm_s[E_AXIS_N(active_extruder)], 1, max_fr_edit_scaled.e); + EDIT_ITEM_FAST_N(float5, E_AXIS, MSG_VMAX_N, &planner.settings.max_feedrate_mm_s[E_AXIS_N(motion.extruder)], 1, max_fr_edit_scaled.e); #endif #if ENABLED(DISTINCT_E_FACTORS) for (uint8_t n = 0; n < E_STEPPERS; ++n) @@ -557,7 +557,7 @@ void menu_backlash(); #if HAS_EXTRUDERS // M204 R Retract Acceleration - EDIT_ITEM_FAST(float5, MSG_A_RETRACT, &planner.settings.retract_acceleration, 100, planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(active_extruder)]); + EDIT_ITEM_FAST(float5, MSG_A_RETRACT, &planner.settings.retract_acceleration, 100, planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(motion.extruder)]); #endif // M204 T Travel Acceleration @@ -571,10 +571,10 @@ void menu_backlash(); ); #if ENABLED(DISTINCT_E_FACTORS) - 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.refresh_acceleration_rates(); }); + EDIT_ITEM_FAST(long5_25, MSG_AMAX_E, &planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(motion.extruder)], 100, max_accel_edit_scaled.e, []{ planner.refresh_acceleration_rates(); }); for (uint8_t n = 0; n < E_STEPPERS; ++n) EDIT_ITEM_FAST_N(long5_25, n, MSG_AMAX_EN, &planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(n)], 100, max_accel_edit_scaled.e, []{ - if (MenuItemBase::itemIndex == active_extruder) + if (MenuItemBase::itemIndex == motion.extruder) planner.refresh_acceleration_rates(); }); #elif E_STEPPERS @@ -668,7 +668,7 @@ void menu_backlash(); for (uint8_t n = 0; n < E_STEPPERS; ++n) EDIT_ITEM_FAST_N(float72, n, MSG_EN_STEPS, &planner.settings.axis_steps_per_mm[E_AXIS_N(n)], 5, 9999, []{ const uint8_t e = MenuItemBase::itemIndex; - if (e == active_extruder) + if (e == motion.extruder) planner.refresh_positioning(); else planner.mm_per_step[E_AXIS_N(e)] = 1.0f / planner.settings.axis_steps_per_mm[E_AXIS_N(e)]; diff --git a/Marlin/src/lcd/menu/menu_bed_tramming.cpp b/Marlin/src/lcd/menu/menu_bed_tramming.cpp index b96dd5b07d..4056b16dd9 100644 --- a/Marlin/src/lcd/menu/menu_bed_tramming.cpp +++ b/Marlin/src/lcd/menu/menu_bed_tramming.cpp @@ -144,12 +144,12 @@ static void _lcd_goto_next_corner() { } } - float z = _MIN(current_position.z + (BED_TRAMMING_Z_HOP), Z_MAX_POS); + float z = _MIN(motion.position.z + (BED_TRAMMING_Z_HOP), Z_MAX_POS); #if ALL(BED_TRAMMING_USE_PROBE, BLTOUCH) z += bltouch.z_extra_clearance(); #endif line_to_z(z); - do_blocking_move_to_xy(DIFF_TERN(BED_TRAMMING_USE_PROBE, corner_point, probe.offset_xy), manual_feedrate_mm_s.x); + motion.blocking_move_xy(DIFF_TERN(BED_TRAMMING_USE_PROBE, corner_point, probe.offset_xy), manual_feedrate_mm_s.x); #if DISABLED(BED_TRAMMING_USE_PROBE) line_to_z(BED_TRAMMING_HEIGHT); if (++bed_corner >= available_points) bed_corner = 0; @@ -232,25 +232,25 @@ static void _lcd_goto_next_corner() { // Probe down and return 'true' if the probe triggered bool _lcd_bed_tramming_probe(const bool verify=false) { - if (verify) do_z_clearance_by(BED_TRAMMING_Z_HOP); // Do clearance if needed + if (verify) motion.do_z_clearance_by(BED_TRAMMING_Z_HOP); // Do clearance if needed TERN_(BLTOUCH, if (!bltouch.high_speed_mode) bltouch.deploy()); // Deploy in LOW SPEED MODE on every probe action - do_blocking_move_to_z(last_z - BED_TRAMMING_PROBE_TOLERANCE, z_probe_slow_mm_s); // Move down to lower tolerance + motion.blocking_move_z(last_z - BED_TRAMMING_PROBE_TOLERANCE, z_probe_slow_mm_s); // Move down to lower tolerance if (TEST(endstops.trigger_state(), Z_MIN_PROBE)) { // Probe triggered? endstops.hit_on_purpose(); - set_current_from_steppers_for_axis(Z_AXIS); - sync_plan_position(); + motion.set_current_from_steppers_for_axis(Z_AXIS); + motion.sync_plan_position(); TERN_(BLTOUCH, if (!bltouch.high_speed_mode) bltouch.stow()); // Stow in LOW SPEED MODE on every trigger // Triggered outside tolerance range? - if (ABS(current_position.z - last_z) > BED_TRAMMING_PROBE_TOLERANCE) { - last_z = current_position.z; // Above tolerance. Set a new Z for subsequent corners. - good_points = 0; // ...and start over + if (ABS(motion.position.z - last_z) > BED_TRAMMING_PROBE_TOLERANCE) { + last_z = motion.position.z; // Above tolerance. Set a new Z for subsequent corners. + good_points = 0; // ...and start over } // Raise the probe after the last point to give clearance for stow if (TERN0(NEEDS_PROBE_DEPLOY, good_points == nr_edge_points - 1)) - do_z_clearance(BED_TRAMMING_Z_HOP); + motion.do_z_clearance(BED_TRAMMING_Z_HOP); return true; // Triggered } @@ -314,7 +314,7 @@ static void _lcd_goto_next_corner() { if (bltouch.high_speed_mode) { // In HIGH SPEED MODE do stow and clearance at the very end bltouch.stow(); - do_z_clearance(BED_TRAMMING_Z_HOP); + motion.do_z_clearance(BED_TRAMMING_Z_HOP); } #endif @@ -325,7 +325,7 @@ static void _lcd_goto_next_corner() { #endif // BED_TRAMMING_USE_PROBE void _lcd_bed_tramming_homing() { - if (!all_axes_homed() && TERN1(NEEDS_PROBE_DEPLOY, probe.deploy())) return; + if (!motion.all_axes_homed() && TERN1(NEEDS_PROBE_DEPLOY, probe.deploy())) return; #if HAS_LEVELING // Disable leveling so the planner won't mess with us menu_leveling_was_active = planner.leveling_active; @@ -380,11 +380,11 @@ void _lcd_bed_tramming_homing() { void _lcd_bed_tramming() { TERN_(BED_TRAMMING_USE_PROBE, tramming_done = false); ui.defer_status_screen(); - set_all_unhomed(); + motion.set_all_unhomed(); queue.inject(TERN(CAN_SET_LEVELING_AFTER_G28, F("G28L0"), FPSTR(G28_STR))); ui.goto_screen([]{ _lcd_draw_homing(); - if (!all_axes_homed()) return; + if (!motion.all_axes_homed()) return; TERN(NEEDS_PROBE_DEPLOY, deploy_probe(), ui.goto_screen(_lcd_bed_tramming_homing)); }); } diff --git a/Marlin/src/lcd/menu/menu_configuration.cpp b/Marlin/src/lcd/menu/menu_configuration.cpp index cf1a5996f0..13bcb0706f 100644 --- a/Marlin/src/lcd/menu/menu_configuration.cpp +++ b/Marlin/src/lcd/menu/menu_configuration.cpp @@ -196,7 +196,7 @@ void menu_advanced_settings(); #if ENABLED(TOOLCHANGE_MIGRATION_FEATURE) - #include "../../module/motion.h" // for active_extruder + #include "../../module/motion.h" // for motion.extruder #include "../../gcode/queue.h" void menu_toolchange_migration() { @@ -211,7 +211,7 @@ void menu_advanced_settings(); // Migrate to a chosen extruder EXTRUDER_LOOP() { - if (e != active_extruder) { + if (e != motion.extruder) { ACTION_ITEM_N_F(e, msg_migrate, []{ char cmd[12]; sprintf_P(cmd, PSTR("M217 T%i"), int(MenuItemBase::itemIndex)); @@ -232,9 +232,9 @@ void menu_advanced_settings(); void menu_tool_offsets() { auto _recalc_offsets = []{ - if (active_extruder && all_axes_trusted()) { // For the 2nd extruder re-home so the next tool-change gets the new offsets. + if (motion.extruder && motion.all_axes_trusted()) { // For the 2nd extruder re-home so the next tool-change gets the new offsets. queue.inject_P(G28_STR); // In future, we can babystep the 2nd extruder (if active), making homing unnecessary. - active_extruder = 0; + motion.extruder = 0; } }; @@ -277,7 +277,7 @@ void menu_advanced_settings(); #if ENABLED(DUAL_X_CARRIAGE) void menu_idex() { - const bool need_g28 = axes_should_home(_BV(Y_AXIS)|_BV(Z_AXIS)); + const bool need_g28 = motion.axes_should_home(_BV(Y_AXIS)|_BV(Z_AXIS)); START_MENU(); BACK_ITEM(MSG_CONFIGURATION); @@ -410,17 +410,17 @@ void menu_advanced_settings(); #if ENABLED(MENUS_ALLOW_INCH_UNITS) #define _EDIT_HOMING_FR(A) do{ \ - const float minfr = MMS_TO_MMM(planner.settings.min_feedrate_mm_s); \ - const float maxfr = MMS_TO_MMM(planner.settings.max_feedrate_mm_s[_AXIS(A)]); \ - editable.decimal = A##_AXIS_UNIT(homing_feedrate_mm_m.A); \ + const float minfr = MMS_TO_MMM(planner.settings.min_feedrate_mm_s), \ + maxfr = MMS_TO_MMM(planner.settings.max_feedrate_mm_s[_AXIS(A)]); \ + editable.decimal = A##_AXIS_UNIT(motion.homing_feedrate_mm_m.A); \ EDIT_ITEM_FAST_N(float5, _AXIS(A), MSG_HOMING_FEEDRATE_N, &editable.decimal, \ A##_AXIS_UNIT(minfr), A##_AXIS_UNIT(maxfr), []{ \ - homing_feedrate_mm_m.A = parser.axis_value_to_mm(_AXIS(A), editable.decimal); \ + motion.homing_feedrate_mm_m.A = parser.axis_value_to_mm(_AXIS(A), editable.decimal); \ }); \ }while(0); #else #define _EDIT_HOMING_FR(A) \ - EDIT_ITEM_FAST_N(float5, _AXIS(A), MSG_HOMING_FEEDRATE_N, &homing_feedrate_mm_m.A, MMS_TO_MMM(planner.settings.min_feedrate_mm_s), MMS_TO_MMM(planner.settings.max_feedrate_mm_s[_AXIS(A)])); + EDIT_ITEM_FAST_N(float5, _AXIS(A), MSG_HOMING_FEEDRATE_N, &motion.homing_feedrate_mm_m.A, MMS_TO_MMM(planner.settings.min_feedrate_mm_s), MMS_TO_MMM(planner.settings.max_feedrate_mm_s[_AXIS(A)])); #endif MAIN_AXIS_MAP(_EDIT_HOMING_FR); diff --git a/Marlin/src/lcd/menu/menu_delta_calibrate.cpp b/Marlin/src/lcd/menu/menu_delta_calibrate.cpp index a0e60bae26..3d56a1ed17 100644 --- a/Marlin/src/lcd/menu/menu_delta_calibrate.cpp +++ b/Marlin/src/lcd/menu/menu_delta_calibrate.cpp @@ -45,7 +45,7 @@ void _man_probe_pt(const xy_pos_t &xy) { if (!ui.wait_for_move) { ui.wait_for_move = true; - do_blocking_move_to_xy_z(xy, Z_CLEARANCE_BETWEEN_PROBES); + motion.blocking_move_xy_z(xy, Z_CLEARANCE_BETWEEN_PROBES); ui.wait_for_move = false; ui.synchronize(); ui.manual_move.menu_scale = _MAX(PROBE_MANUALLY_STEP, MIN_STEPS_PER_SEGMENT / planner.settings.axis_steps_per_mm[0]); // Use first axis as for delta XYZ should always match @@ -69,7 +69,7 @@ void _man_probe_pt(const xy_pos_t &xy) { TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_DELTA_CALIBRATION_IN_PROGRESS))); TERN_(HAS_RESUME_CONTINUE, marlin.wait_for_user_response()); ui.goto_previous_screen_no_defer(); - return current_position.z; + return motion.position.z; } #endif @@ -80,7 +80,7 @@ void _man_probe_pt(const xy_pos_t &xy) { void _lcd_calibrate_homing() { _lcd_draw_homing(); - if (all_axes_homed()) ui.goto_previous_screen(); + if (motion.all_axes_homed()) ui.goto_previous_screen(); } void _lcd_delta_calibrate_home() { @@ -125,7 +125,7 @@ void lcd_delta_settings() { void menu_delta_calibrate() { #if ENABLED(DELTA_CALIBRATION_MENU) - const bool all_homed = all_axes_homed(); // Acquire ahead of loop + const bool all_homed = motion.all_axes_homed(); // Acquire ahead of loop #endif START_MENU(); diff --git a/Marlin/src/lcd/menu/menu_filament.cpp b/Marlin/src/lcd/menu/menu_filament.cpp index d2d6342185..495b545e21 100644 --- a/Marlin/src/lcd/menu/menu_filament.cpp +++ b/Marlin/src/lcd/menu/menu_filament.cpp @@ -131,7 +131,7 @@ void menu_change_filament() { // Change filament #if E_STEPPERS == 1 FSTR_P const fmsg = GET_TEXT_F(MSG_FILAMENTCHANGE); - if (thermalManager.targetTooColdToExtrude(active_extruder)) + if (thermalManager.targetTooColdToExtrude(motion.extruder)) SUBMENU_F(fmsg, []{ _menu_temp_filament_op(PAUSE_MODE_CHANGE_FILAMENT, 0); }); else GCODES_ITEM_F(fmsg, F("M600 B0")); @@ -156,7 +156,7 @@ void menu_change_filament() { // Load filament #if E_STEPPERS == 1 FSTR_P const msg_load = GET_TEXT_F(MSG_FILAMENTLOAD); - if (thermalManager.targetTooColdToExtrude(active_extruder)) + if (thermalManager.targetTooColdToExtrude(motion.extruder)) SUBMENU_F(msg_load, []{ _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 0); }); else GCODES_ITEM_F(msg_load, F("M701")); @@ -178,7 +178,7 @@ void menu_change_filament() { // Unload filament #if E_STEPPERS == 1 FSTR_P const msg_unload = GET_TEXT_F(MSG_FILAMENTUNLOAD); - if (thermalManager.targetTooColdToExtrude(active_extruder)) + if (thermalManager.targetTooColdToExtrude(motion.extruder)) SUBMENU_F(msg_unload, []{ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 0); }); else GCODES_ITEM_F(msg_unload, F("M702")); @@ -209,7 +209,7 @@ void menu_change_filament() { #else - if (thermalManager.targetHotEnoughToExtrude(active_extruder)) + if (thermalManager.targetHotEnoughToExtrude(motion.extruder)) queue.inject(F("M600B0")); else ui.goto_screen([]{ _menu_temp_filament_op(PAUSE_MODE_CHANGE_FILAMENT, 0); }); @@ -328,7 +328,7 @@ FORCE_INLINE screenFunc_t ap_message_screen(const PauseMessage message) { void MarlinUI::pause_show_message( const PauseMessage message, const PauseMode mode/*=PAUSE_MODE_SAME*/, - const uint8_t extruder/*=active_extruder*/ + const uint8_t extruder/*=motion.extruder*/ ) { if (mode != PAUSE_MODE_SAME) pause_mode = mode; hotend_status_extruder = extruder; diff --git a/Marlin/src/lcd/menu/menu_item.h b/Marlin/src/lcd/menu/menu_item.h index 8b23ab1b9c..280eb126fc 100644 --- a/Marlin/src/lcd/menu/menu_item.h +++ b/Marlin/src/lcd/menu/menu_item.h @@ -283,9 +283,9 @@ class MenuItem_bool : public MenuEditItemBase { * MenuItem_function::action(flabel, lcd_sdcard_pause) * MenuItem_function::draw(sel, row, flabel, lcd_sdcard_pause) * - * EDIT_ITEM(int3, MSG_SPEED, &feedrate_percentage, SPEED_EDIT_MIN, SPEED_EDIT_MAX) - * MenuItem_int3::action(flabel, &feedrate_percentage, SPEED_EDIT_MIN, SPEED_EDIT_MAX) - * MenuItem_int3::draw(sel, row, flabel, &feedrate_percentage, SPEED_EDIT_MIN, SPEED_EDIT_MAX) + * EDIT_ITEM(int3, MSG_SPEED, &motion.feedrate_percentage, SPEED_EDIT_MIN, SPEED_EDIT_MAX) + * MenuItem_int3::action(flabel, &motion.feedrate_percentage, SPEED_EDIT_MIN, SPEED_EDIT_MAX) + * MenuItem_int3::draw(sel, row, flabel, &motion.feedrate_percentage, SPEED_EDIT_MIN, SPEED_EDIT_MAX) * * Variants use standard suffixes. N:Number Index, S:C-string for substitution, F:F-string label, f:F-string for substitution * _MENU_ITEM_F(TYPE, V...) Item with optional data diff --git a/Marlin/src/lcd/menu/menu_motion.cpp b/Marlin/src/lcd/menu/menu_motion.cpp index 59172a4787..3a825afc0d 100644 --- a/Marlin/src/lcd/menu/menu_motion.cpp +++ b/Marlin/src/lcd/menu/menu_motion.cpp @@ -55,13 +55,13 @@ void lcd_move_axis(const AxisEnum axis) { if (ui.encoderPosition && !ui.manual_move.processing) { // Get motion limit from software endstops, if any float min, max; - soft_endstop.get_manual_axis_limits(axis, min, max); + motion.soft_endstop.get_manual_axis_limits(axis, min, max); // Delta limits XY based on the current offset from center // This assumes the center is 0,0 #if ENABLED(DELTA) if (axis != Z_AXIS) { - max = SQRT(FLOAT_SQ(PRINTABLE_RADIUS) - sq(current_position[Y_AXIS - axis])); // (Y_AXIS - axis) == the other axis + max = SQRT(FLOAT_SQ(PRINTABLE_RADIUS) - sq(motion.position[Y_AXIS - axis])); // (Y_AXIS - axis) == the other axis min = -max; } #endif @@ -87,12 +87,12 @@ void lcd_move_axis(const AxisEnum axis) { #if E_MANUAL - static void lcd_move_e(TERN_(MULTI_E_MANUAL, const int8_t eindex=active_extruder)) { + static void lcd_move_e(TERN_(MULTI_E_MANUAL, const int8_t eindex=motion.extruder)) { if (ui.use_click()) return ui.goto_previous_screen_no_defer(); if (ui.encoderPosition) { if (!ui.manual_move.processing) { const float diff = float(int32_t(ui.encoderPosition)) * ui.manual_move.menu_scale; - TERN(IS_KINEMATIC, ui.manual_move.offset, current_position.e) += diff; + TERN(IS_KINEMATIC, ui.manual_move.offset, motion.position.e) += diff; ui.manual_move.soon(E_AXIS OPTARG(MULTI_E_MANUAL, eindex)); ui.refresh(LCDVIEW_REDRAW_NOW); } @@ -102,7 +102,7 @@ void lcd_move_axis(const AxisEnum axis) { TERN_(MULTI_E_MANUAL, MenuItemBase::init(eindex)); MenuEditItemBase::draw_edit_screen( GET_TEXT_F(TERN(MULTI_E_MANUAL, MSG_MOVE_EN, MSG_MOVE_E)), - ftostr41sign(current_position.e + ftostr41sign(motion.position.e PLUS_TERN0(IS_KINEMATIC, ui.manual_move.offset) MINUS_TERN0(MANUAL_E_MOVES_RELATIVE, ui.manual_move.e_origin) ) @@ -136,14 +136,14 @@ void _goto_manual_move(const float scale) { thermalManager.set_menu_cold_override(true); } -void _menu_move_distance(const AxisEnum axis, const screenFunc_t func, const int8_t eindex=active_extruder) { +void _menu_move_distance(const AxisEnum axis, const screenFunc_t func, const int8_t eindex=motion.extruder) { ui.manual_move.screen_ptr = func; START_MENU(); if (LCD_HEIGHT >= 4) { if (axis < NUM_AXES) STATIC_ITEM_N(axis, MSG_MOVE_N, SS_DEFAULT|SS_INVERT); else { - TERN_(MANUAL_E_MOVES_RELATIVE, ui.manual_move.e_origin = current_position.e); + TERN_(MANUAL_E_MOVES_RELATIVE, ui.manual_move.e_origin = motion.position.e); STATIC_ITEM_N(eindex, MSG_MOVE_EN, SS_DEFAULT|SS_INVERT); } } @@ -193,7 +193,7 @@ void _menu_move_distance(const AxisEnum axis, const screenFunc_t func, const int } inline void _menu_move_distance_e_maybe() { - if (thermalManager.tooColdToExtrude(active_extruder)) { + if (thermalManager.tooColdToExtrude(motion.extruder)) { ui.goto_screen([]{ MenuItem_confirm::select_screen( GET_TEXT_F(MSG_BUTTON_PROCEED), GET_TEXT_F(MSG_BACK), @@ -213,12 +213,12 @@ void menu_move() { BACK_ITEM(MSG_MOTION); #if ALL(HAS_SOFTWARE_ENDSTOPS, SOFT_ENDSTOPS_MENU_ITEM) - EDIT_ITEM(bool, MSG_LCD_SOFT_ENDSTOPS, &soft_endstop._enabled); + EDIT_ITEM(bool, MSG_LCD_SOFT_ENDSTOPS, &motion.soft_endstop._enabled); #endif // Move submenu for each axis - if (NONE(IS_KINEMATIC, NO_MOTION_BEFORE_HOMING) || all_axes_homed()) { - if (TERN1(DELTA, current_position.z <= delta_clip_start_height)) { + if (NONE(IS_KINEMATIC, NO_MOTION_BEFORE_HOMING) || motion.all_axes_homed()) { + if (TERN1(DELTA, motion.position.z <= delta_clip_start_height)) { #if HAS_X_AXIS SUBMENU_N(X_AXIS, MSG_MOVE_N, []{ _menu_move_distance(X_AXIS, []{ lcd_move_axis(X_AXIS); }); }); #endif @@ -242,7 +242,7 @@ void menu_move() { #if ANY(HAS_SWITCHING_EXTRUDER, HAS_SWITCHING_NOZZLE, MAGNETIC_SWITCHING_TOOLHEAD) #if EXTRUDERS >= 4 - switch (active_extruder) { + switch (motion.extruder) { case 0: GCODES_ITEM_N(1, MSG_SELECT_E, F("T1")); break; case 1: GCODES_ITEM_N(0, MSG_SELECT_E, F("T0")); break; case 2: GCODES_ITEM_N(3, MSG_SELECT_E, F("T3")); break; @@ -253,15 +253,15 @@ void menu_move() { #endif } #elif EXTRUDERS == 3 - if (active_extruder < 2) - GCODES_ITEM_N(1 - active_extruder, MSG_SELECT_E, active_extruder ? F("T0") : F("T1")); + if (motion.extruder < 2) + GCODES_ITEM_N(1 - motion.extruder, MSG_SELECT_E, motion.extruder ? F("T0") : F("T1")); #else - GCODES_ITEM_N(1 - active_extruder, MSG_SELECT_E, active_extruder ? F("T0") : F("T1")); + GCODES_ITEM_N(1 - motion.extruder, MSG_SELECT_E, motion.extruder ? F("T0") : F("T1")); #endif #elif ENABLED(DUAL_X_CARRIAGE) - GCODES_ITEM_N(1 - active_extruder, MSG_SELECT_E, active_extruder ? F("T0") : F("T1")); + GCODES_ITEM_N(1 - motion.extruder, MSG_SELECT_E, motion.extruder ? F("T0") : F("T1")); #endif @@ -628,7 +628,7 @@ void menu_motion() { // // Move Axis // - if (TERN1(DELTA, all_axes_homed())) + if (TERN1(DELTA, motion.all_axes_homed())) SUBMENU(MSG_MOVE_AXIS, menu_move); // diff --git a/Marlin/src/lcd/menu/menu_probe_level.cpp b/Marlin/src/lcd/menu/menu_probe_level.cpp index ba806d665f..db248c8d59 100644 --- a/Marlin/src/lcd/menu/menu_probe_level.cpp +++ b/Marlin/src/lcd/menu/menu_probe_level.cpp @@ -124,7 +124,7 @@ // Encoder knob or keypad buttons adjust the Z position // if (ui.encoderPosition) { - const float z = current_position.z + float(int32_t(ui.encoderPosition)) * (MESH_EDIT_Z_STEP); + const float z = motion.position.z + float(int32_t(ui.encoderPosition)) * (MESH_EDIT_Z_STEP); line_to_z(constrain(z, -(LCD_PROBE_Z_RANGE) * 0.5f, (LCD_PROBE_Z_RANGE) * 0.5f)); ui.refresh(LCDVIEW_CALL_REDRAW_NEXT); ui.encoderPosition = 0; @@ -134,7 +134,7 @@ // Draw on first display, then only on Z change // if (ui.should_draw()) { - const float v = current_position.z; + const float v = motion.position.z; MenuEditItemBase::draw_edit_screen(GET_TEXT_F(MSG_MOVE_Z), ftostr43sign(v + (v < 0 ? -0.0001f : 0.0001f), '+')); } } @@ -190,7 +190,7 @@ // void _lcd_level_bed_homing() { _lcd_draw_homing(); - if (all_axes_homed()) ui.goto_screen(_lcd_level_bed_homing_done); + if (motion.all_axes_homed()) ui.goto_screen(_lcd_level_bed_homing_done); } #if ENABLED(PROBE_MANUALLY) @@ -202,7 +202,7 @@ // void _lcd_level_bed_continue() { ui.defer_status_screen(); - set_all_unhomed(); + motion.set_all_unhomed(); ui.goto_screen(_lcd_level_bed_homing); queue.inject_P(G28_STR); } @@ -212,8 +212,8 @@ #if ENABLED(MESH_EDIT_MENU) inline void refresh_planner() { - set_current_from_steppers_for_axis(ALL_AXES_ENUM); - sync_plan_position(); + motion.set_current_from_steppers_for_axis(ALL_AXES_ENUM); + motion.sync_plan_position(); } void menu_edit_mesh() { @@ -242,12 +242,12 @@ void menu_probe_level() { const bool can_babystep_z = TERN0(BABYSTEP_ZPROBE_OFFSET, babystep.can_babystep(Z_AXIS)); #if HAS_LEVELING - const bool is_homed = all_axes_homed(), + const bool is_homed = motion.all_axes_homed(), is_valid = leveling_is_valid(); #endif #if NONE(PROBE_MANUALLY, MESH_BED_LEVELING) - const bool is_trusted = all_axes_trusted(); + const bool is_trusted = motion.all_axes_trusted(); #endif START_MENU(); diff --git a/Marlin/src/lcd/menu/menu_probe_offset.cpp b/Marlin/src/lcd/menu/menu_probe_offset.cpp index e959c687ed..745d46230e 100644 --- a/Marlin/src/lcd/menu/menu_probe_offset.cpp +++ b/Marlin/src/lcd/menu/menu_probe_offset.cpp @@ -47,7 +47,7 @@ float z_offset_backup, calculated_z_offset, z_offset_ref; // "Done" - Set the offset, re-enable leveling, go back to the previous screen. void set_offset_and_go_back(const float z) { probe.offset.z = z; - SET_SOFT_ENDSTOP_LOOSE(false); + motion.set_soft_endstop_loose(false); TERN_(HAS_LEVELING, set_bed_leveling_enabled(menu_leveling_was_active)); ui.goto_previous_screen_no_defer(); } @@ -58,12 +58,12 @@ void set_offset_and_go_back(const float z) { */ void probe_offset_wizard_menu() { START_MENU(); - calculated_z_offset = probe.offset.z + current_position.z - z_offset_ref; + calculated_z_offset = probe.offset.z + motion.position.z - z_offset_ref; if (LCD_HEIGHT >= 4) STATIC_ITEM(MSG_MOVE_NOZZLE_TO_BED, SS_CENTER|SS_INVERT); - STATIC_ITEM_F(F("Z"), SS_CENTER, ftostr42_52(current_position.z)); + STATIC_ITEM_F(F("Z"), SS_CENTER, ftostr42_52(motion.position.z)); STATIC_ITEM_N(Z_AXIS, MSG_ZPROBE_OFFSET_N, SS_FULL, ftostr42_52(calculated_z_offset)); SUBMENU_S(F("1.0"), MSG_MOVE_N_MM, []{ _goto_manual_move_z( 1.0f); }); @@ -74,19 +74,19 @@ void probe_offset_wizard_menu() { ACTION_ITEM(MSG_BUTTON_DONE, []{ set_offset_and_go_back(calculated_z_offset); - current_position.z = z_offset_ref; // Set Z to z_offset_ref, as we can expect it is at probe height - sync_plan_position(); - do_z_post_clearance(); + motion.position.z = z_offset_ref; // Set Z to z_offset_ref, as we can expect it is at probe height + motion.sync_plan_position(); + motion.do_z_post_clearance(); }); ACTION_ITEM(MSG_BUTTON_CANCEL, []{ set_offset_and_go_back(z_offset_backup); // On cancel the Z position needs correction #if HOMING_Z_WITH_PROBE && defined(PROBE_OFFSET_WIZARD_START_Z) - set_axis_never_homed(Z_AXIS); + motion.set_axis_never_homed(Z_AXIS); queue.inject(F("G28Z")); #else - do_z_post_clearance(); + motion.do_z_post_clearance(); #endif }); @@ -129,12 +129,12 @@ void prepare_for_probe_offset_wizard() { // Move Nozzle to Probing/Homing Position ui.wait_for_move = true; - current_position += probe.offset_xy; - line_to_current_position(XY_PROBE_FEEDRATE_MM_S); + motion.position += probe.offset_xy; + motion.goto_current_position(XY_PROBE_FEEDRATE_MM_S); ui.synchronize(GET_TEXT_F(MSG_PROBE_WIZARD_MOVING)); ui.wait_for_move = false; - SET_SOFT_ENDSTOP_LOOSE(true); // Disable soft endstops for free Z movement + motion.set_soft_endstop_loose(true); // Disable soft endstops for free Z movement // Go to Calibration Menu ui.goto_screen(probe_offset_wizard_menu); @@ -145,7 +145,7 @@ void prepare_for_probe_offset_wizard() { // When homing is completed go to prepare_for_probe_offset_wizard(). void goto_probe_offset_wizard() { ui.defer_status_screen(); - set_all_unhomed(); + motion.set_all_unhomed(); // Store probe.offset.z for Case: Cancel z_offset_backup = probe.offset.z; @@ -166,7 +166,7 @@ void goto_probe_offset_wizard() { // Show "Homing XYZ" display until homing completes ui.goto_screen([]{ _lcd_draw_homing(); - if (all_axes_homed()) { + if (motion.all_axes_homed()) { z_offset_ref = 0; // Set Z Value for Wizard Position to 0 ui.goto_screen(prepare_for_probe_offset_wizard); ui.defer_status_screen(); diff --git a/Marlin/src/lcd/menu/menu_tramming_wizard.cpp b/Marlin/src/lcd/menu/menu_tramming_wizard.cpp index e0f88ea1bb..e3b32bc51b 100644 --- a/Marlin/src/lcd/menu/menu_tramming_wizard.cpp +++ b/Marlin/src/lcd/menu/menu_tramming_wizard.cpp @@ -100,12 +100,12 @@ void goto_tramming_wizard() { reference_index = -1; // Inject G28, wait for homing to complete, - set_all_unhomed(); + motion.set_all_unhomed(); queue.inject(TERN(CAN_SET_LEVELING_AFTER_G28, F("G28L0"), FPSTR(G28_STR))); ui.goto_screen([]{ _lcd_draw_homing(); - if (all_axes_homed()) + if (motion.all_axes_homed()) ui.goto_screen(tramming_wizard_menu); }); } diff --git a/Marlin/src/lcd/menu/menu_tune.cpp b/Marlin/src/lcd/menu/menu_tune.cpp index 856ae5a5f4..da1bf8eb69 100644 --- a/Marlin/src/lcd/menu/menu_tune.cpp +++ b/Marlin/src/lcd/menu/menu_tune.cpp @@ -111,7 +111,7 @@ void menu_tune() { // // Speed: // - EDIT_ITEM(int3, MSG_SPEED, &feedrate_percentage, SPEED_EDIT_MIN, SPEED_EDIT_MAX); + EDIT_ITEM(int3, MSG_SPEED, &motion.feedrate_percentage, SPEED_EDIT_MIN, SPEED_EDIT_MAX); // // Manual bed leveling, Bed Z: @@ -206,7 +206,7 @@ void menu_tune() { // Flow: // #if HAS_EXTRUDERS - EDIT_ITEM(int3, MSG_FLOW, &planner.flow_percentage[active_extruder], FLOW_EDIT_MIN, FLOW_EDIT_MAX, []{ planner.refresh_e_factor(active_extruder); }); + EDIT_ITEM(int3, MSG_FLOW, &planner.flow_percentage[motion.extruder], FLOW_EDIT_MIN, FLOW_EDIT_MAX, []{ planner.refresh_e_factor(motion.extruder); }); // Flow En: #if HAS_MULTI_EXTRUDER EXTRUDER_LOOP() diff --git a/Marlin/src/lcd/menu/menu_ubl.cpp b/Marlin/src/lcd/menu/menu_ubl.cpp index 3b14950ee0..0fac4420e2 100644 --- a/Marlin/src/lcd/menu/menu_ubl.cpp +++ b/Marlin/src/lcd/menu/menu_ubl.cpp @@ -398,13 +398,13 @@ void ubl_map_move_to_xy() { const xy_pos_t xy = { bedlevel.get_mesh_x(x_plot), bedlevel.get_mesh_y(y_plot) }; // Some printers have unreachable areas in the mesh. Skip the move if unreachable. - if (!position_is_reachable(xy)) return; + if (!motion.can_reach(xy)) return; #if ENABLED(DELTA) - if (current_position.z > delta_clip_start_height) { // Make sure the delta has fully free motion - destination = current_position; - destination.z = delta_clip_start_height; - prepare_internal_fast_move_to_destination(homing_feedrate(Z_AXIS)); // Set current_position from destination + if (motion.position.z > delta_clip_start_height) { // Make sure the delta has fully free motion + motion.destination = motion.position; + motion.destination.z = delta_clip_start_height; + motion.prepare_internal_fast_move_to_destination(motion.homing_feedrate(Z_AXIS)); // Set motion.position from destination } #endif @@ -455,7 +455,7 @@ void ubl_map_screen() { // Validate if needed #if IS_KINEMATIC const xy_pos_t xy = { bedlevel.get_mesh_x(x), bedlevel.get_mesh_y(y) }; - if (position_is_reachable(xy)) break; // Found a valid point + if (motion.can_reach(xy)) break; // Found a valid point ui.encoderPosition += step_dir; // Test the next point #endif } while (ENABLED(IS_KINEMATIC)); @@ -494,7 +494,7 @@ void ubl_map_screen() { void _ubl_map_screen_homing() { ui.defer_status_screen(); _lcd_draw_homing(); - if (all_axes_homed()) { + if (motion.all_axes_homed()) { bedlevel.lcd_map_control = true; // Return to the map screen after editing Z ui.goto_screen(ubl_map_screen, grid_index(x_plot, y_plot)); // Pre-set the encoder value ui.manual_move.menu_scale = 0; // Immediate move @@ -508,8 +508,8 @@ void _ubl_map_screen_homing() { */ void _ubl_goto_map_screen() { if (planner.has_blocks_queued()) return; // The ACTION_ITEM will do nothing - if (!all_axes_trusted()) { - set_all_unhomed(); + if (!motion.all_axes_trusted()) { + motion.set_all_unhomed(); queue.inject_P(G28_STR); } ui.goto_screen(_ubl_map_screen_homing); // Go to the "Homing" screen diff --git a/Marlin/src/lcd/menu/menu_x_twist.cpp b/Marlin/src/lcd/menu/menu_x_twist.cpp index d6d55965ec..37f795b7eb 100644 --- a/Marlin/src/lcd/menu/menu_x_twist.cpp +++ b/Marlin/src/lcd/menu/menu_x_twist.cpp @@ -52,7 +52,7 @@ void xatc_wizard_done() { if (!ui.wait_for_move) { xatc.print_points(); set_bed_leveling_enabled(menu_leveling_was_active); - SET_SOFT_ENDSTOP_LOOSE(false); + motion.set_soft_endstop_loose(false); ui.goto_screen(menu_advanced_settings); } if (ui.should_draw()) @@ -83,7 +83,7 @@ void xatc_wizard_update_z_offset() { // void xatc_wizard_set_offset_and_go_to_next_point() { // Set Z-offset at probed point - xatc.z_offset[manual_probe_index++] = probe.offset.z + current_position.z - measured_z; + xatc.z_offset[manual_probe_index++] = probe.offset.z + motion.position.z - measured_z; // Go to next point ui.goto_screen(xatc_wizard_goto_next_point); } @@ -93,12 +93,12 @@ void xatc_wizard_set_offset_and_go_to_next_point() { // void xatc_wizard_menu() { START_MENU(); - float calculated_z_offset = probe.offset.z + current_position.z - measured_z; + float calculated_z_offset = probe.offset.z + motion.position.z - measured_z; if (LCD_HEIGHT >= 4) STATIC_ITEM(MSG_MOVE_NOZZLE_TO_BED, SS_CENTER|SS_INVERT); - STATIC_ITEM_F(F("Z="), SS_CENTER, ftostr42_52(current_position.z)); + STATIC_ITEM_F(F("Z="), SS_CENTER, ftostr42_52(motion.position.z)); STATIC_ITEM_N(Z_AXIS, MSG_ZPROBE_OFFSET_N, SS_LEFT, ftostr42_52(calculated_z_offset)); SUBMENU_S(F("1.0"), MSG_MOVE_N_MM, []{ _goto_manual_move_z( 1.0f); }); @@ -139,14 +139,14 @@ void xatc_wizard_goto_next_point() { ui.goto_screen(xatc_wizard_moving); // Deploy certain probes before starting probing - TERN_(BLTOUCH, do_z_clearance(Z_CLEARANCE_DEPLOY_PROBE)); + TERN_(BLTOUCH, motion.do_z_clearance(Z_CLEARANCE_DEPLOY_PROBE)); xatc.set_enabled(false); measured_z = probe.probe_at_point(x, XATC_Y_POSITION, PROBE_PT_STOW); xatc.set_enabled(true); - current_position += probe.offset_xy; - current_position.z = (XATC_START_Z) - probe.offset.z + measured_z; - line_to_current_position(XY_PROBE_FEEDRATE_MM_S); + motion.position += probe.offset_xy; + motion.position.z = (XATC_START_Z) - probe.offset.z + measured_z; + motion.goto_current_position(XY_PROBE_FEEDRATE_MM_S); ui.wait_for_move = false; } else @@ -183,7 +183,7 @@ void xatc_wizard_homing_done() { if (ui.use_click()) { xatc.reset(); - SET_SOFT_ENDSTOP_LOOSE(true); // Disable soft endstops for free Z movement + motion.set_soft_endstop_loose(true); // Disable soft endstops for free Z movement ui.goto_screen(xatc_wizard_goto_next_point); } @@ -194,7 +194,7 @@ void xatc_wizard_homing_done() { // void xatc_wizard_homing() { _lcd_draw_homing(); - if (all_axes_homed()) + if (motion.all_axes_homed()) ui.goto_screen(xatc_wizard_homing_done); } @@ -210,7 +210,7 @@ void xatc_wizard_continue() { // Home all axes ui.defer_status_screen(); - set_all_unhomed(); + motion.set_all_unhomed(); ui.goto_screen(xatc_wizard_homing); queue.inject_P(G28_STR); } diff --git a/Marlin/src/lcd/sovol_rts/sovol_rts.cpp b/Marlin/src/lcd/sovol_rts/sovol_rts.cpp index 153db1bf6d..99815e3fcc 100644 --- a/Marlin/src/lcd/sovol_rts/sovol_rts.cpp +++ b/Marlin/src/lcd/sovol_rts/sovol_rts.cpp @@ -124,7 +124,7 @@ int16_t fan_speed; inline void RTS_line_to_current(const AxisEnum axis) { if (!planner.is_full()) - planner.buffer_line(current_position, MMM_TO_MMS(manual_feedrate_mm_m[axis]), active_extruder); + planner.buffer_line(motion.position, MMM_TO_MMS(manual_feedrate_mm_m[axis]), motion.extruder); } RTS::RTS() { @@ -271,8 +271,8 @@ void RTS::init() { TERN_(HAS_HOTEND, last_target_temperature[0] = thermalManager.degTargetHotend(0)); TERN_(HAS_HEATED_BED, last_target_temperature_bed = thermalManager.degTargetBed()); - feedrate_percentage = 100; - sendData(feedrate_percentage, PRINT_SPEED_RATE_VP); + motion.feedrate_percentage = 100; + sendData(motion.feedrate_percentage, PRINT_SPEED_RATE_VP); /***************turn off motor*****************/ sendData(1, MOTOR_FREE_ICON_VP); @@ -577,7 +577,7 @@ void RTS::handleData() { else if (recdat.data[0] == 2) { // Complete printing waitway = 7; card.flag.abort_sd_printing = true; - quickstop_stepper(); + motion.quickstop_stepper(); print_job_timer.reset(); queue.clear(); sendData(0, MOTOR_FREE_ICON_VP); @@ -652,8 +652,8 @@ void RTS::handleData() { break; case PrintSpeedKey: // Set the print speed - feedrate_percentage = recdat.data[0]; - sendData(feedrate_percentage, PRINT_SPEED_RATE_VP); + motion.feedrate_percentage = recdat.data[0]; + sendData(motion.feedrate_percentage, PRINT_SPEED_RATE_VP); break; case StopPrintKey: // Stop printing @@ -753,8 +753,8 @@ void RTS::handleData() { sendData(cardRec.display_filename[cardRec.recordcount], PRINT_FILE_TEXT_VP); delay(2); TERN_(BABYSTEPPING, sendData(0, AUTO_BED_LEVEL_ZOFFSET_VP)); - feedrate_percentage = 100; - sendData(feedrate_percentage, PRINT_SPEED_RATE_VP); + motion.feedrate_percentage = 100; + sendData(motion.feedrate_percentage, PRINT_SPEED_RATE_VP); zprobe_zoffset = last_zoffset; sendData(probe.offset.z * 100, AUTO_BED_LEVEL_ZOFFSET_VP); poweroff_continue = true; @@ -886,9 +886,9 @@ void RTS::handleData() { case 3: // Go to Move Axis AxisUnitMode = 1; - TERN_(HAS_X_AXIS, sendData(current_position.x * 10.0f, AXIS_X_COORD_VP)); - TERN_(HAS_Y_AXIS, sendData(current_position.y * 10.0f, AXIS_Y_COORD_VP)); - TERN_(HAS_Z_AXIS, sendData(current_position.z * 10.0f, AXIS_Z_COORD_VP)); + TERN_(HAS_X_AXIS, sendData(motion.position.x * 10.0f, AXIS_X_COORD_VP)); + TERN_(HAS_Y_AXIS, sendData(motion.position.y * 10.0f, AXIS_Y_COORD_VP)); + TERN_(HAS_Z_AXIS, sendData(motion.position.z * 10.0f, AXIS_Z_COORD_VP)); gotoPage(ID_Move10_L, ID_Move10_D); break; @@ -947,10 +947,10 @@ void RTS::handleData() { #if HAS_X_AXIS case XaxismoveKey: { waitway = 4; - current_position.x = float(recdat.data[0] >= 32768 ? recdat.data[0] - 65536 : recdat.data[0]) * 0.1f; - LIMIT(current_position.x, X_MIN_POS, X_MAX_POS); + motion.position.x = float(recdat.data[0] >= 32768 ? recdat.data[0] - 65536 : recdat.data[0]) * 0.1f; + LIMIT(motion.position.x, X_MIN_POS, X_MAX_POS); RTS_line_to_current(X_AXIS); - sendData(current_position.x * 10.0f, AXIS_X_COORD_VP); + sendData(motion.position.x * 10.0f, AXIS_X_COORD_VP); sendData(0, MOTOR_FREE_ICON_VP); waitway = 0; } break; @@ -959,10 +959,10 @@ void RTS::handleData() { #if HAS_Y_AXIS case YaxismoveKey: { waitway = 4; - current_position.y = float(recdat.data[0]) * 0.1f; - LIMIT(current_position.y, Y_MIN_POS, Y_MAX_POS); + motion.position.y = float(recdat.data[0]) * 0.1f; + LIMIT(motion.position.y, Y_MIN_POS, Y_MAX_POS); RTS_line_to_current(Y_AXIS); - sendData(current_position.y * 10.0f, AXIS_Y_COORD_VP); + sendData(motion.position.y * 10.0f, AXIS_Y_COORD_VP); sendData(0, MOTOR_FREE_ICON_VP); waitway = 0; } break; @@ -971,10 +971,10 @@ void RTS::handleData() { #if HAS_Z_AXIS case ZaxismoveKey: { waitway = 4; - current_position.z = float(recdat.data[0]) * 0.1f; - LIMIT(current_position.z, Z_MIN_POS, Z_MAX_POS); + motion.position.z = float(recdat.data[0]) * 0.1f; + LIMIT(motion.position.z, Z_MIN_POS, Z_MAX_POS); RTS_line_to_current(Z_AXIS); - sendData(current_position.z * 10.0f, AXIS_Z_COORD_VP); + sendData(motion.position.z * 10.0f, AXIS_Z_COORD_VP); sendData(0, MOTOR_FREE_ICON_VP); waitway = 0; } break; @@ -985,7 +985,7 @@ void RTS::handleData() { case 1: if (planner.has_blocks_queued()) break; if (TERN0(CHECKFILAMENT, runout.filament_ran_out)) gotoPage(ID_NoFilament_L, ID_NoFilament_D); - current_position.e -= filament_load_0; + motion.position.e -= filament_load_0; if (thermalManager.degHotend(0) < change_filament_temp_0 - 5) { sendData(int16_t(change_filament_temp_0), CHANGE_FILAMENT0_TEMP_VP); @@ -1000,7 +1000,7 @@ void RTS::handleData() { case 2: if (planner.has_blocks_queued()) break; if (TERN0(CHECKFILAMENT, runout.filament_ran_out)) gotoPage(ID_NoFilament_L, ID_NoFilament_D); - current_position.e += filament_load_0; + motion.position.e += filament_load_0; if (thermalManager.degHotend(0) < change_filament_temp_0 - 5) { sendData(int16_t(change_filament_temp_0), CHANGE_FILAMENT0_TEMP_VP); @@ -1077,7 +1077,7 @@ void RTS::handleData() { sdcard_pause_check = true; zprobe_zoffset = probe.offset.z; sendData(probe.offset.z * 100, AUTO_BED_LEVEL_ZOFFSET_VP); - sendData(feedrate_percentage, PRINT_SPEED_RATE_VP); + sendData(motion.feedrate_percentage, PRINT_SPEED_RATE_VP); print_state = 2; break; @@ -1087,7 +1087,7 @@ void RTS::handleData() { poweroff_continue = false; sdcard_pause_check = true; queue.clear(); - quickstop_stepper(); + motion.quickstop_stepper(); print_job_timer.abort(); thermalManager.disable_all_heaters(); print_job_timer.reset(); @@ -1160,8 +1160,8 @@ void RTS::handleData() { TERN_(BABYSTEPPING, sendData(0, AUTO_BED_LEVEL_ZOFFSET_VP)); - feedrate_percentage = 100; - sendData(feedrate_percentage, PRINT_SPEED_RATE_VP); + motion.feedrate_percentage = 100; + sendData(motion.feedrate_percentage, PRINT_SPEED_RATE_VP); #if HAS_BED_PROBE zprobe_zoffset = last_zoffset; sendData(probe.offset.z * 100, AUTO_BED_LEVEL_ZOFFSET_VP); @@ -1504,7 +1504,7 @@ void RTS::handleData() { TERN_(HAS_BED_PROBE, sendData(probe.offset.z * 100.0f, AUTO_BED_LEVEL_ZOFFSET_VP)); - sendData(feedrate_percentage, PRINT_SPEED_RATE_VP); + sendData(motion.feedrate_percentage, PRINT_SPEED_RATE_VP); updateTempE0(); updateTempBed(); @@ -1621,7 +1621,7 @@ void RTS::onIdle() { queue.enqueue_now(F("G0 F3000 X0 Y0\nM18 S0")); } - TERN_(HAS_Z_AXIS, sendData(current_position.z * 10.0f, AXIS_Z_COORD_VP)); + TERN_(HAS_Z_AXIS, sendData(motion.position.z * 10.0f, AXIS_Z_COORD_VP)); #if HAS_HOTEND if (last_target_temperature[0] != thermalManager.degTargetHotend(0)) { @@ -1736,9 +1736,9 @@ void RTS_MoveAxisHoming() { waitway = 0; } - TERN_(HAS_X_AXIS, rts.sendData(current_position.x * 10.0f, AXIS_X_COORD_VP)); - TERN_(HAS_Y_AXIS, rts.sendData(current_position.y * 10.0f, AXIS_Y_COORD_VP)); - TERN_(HAS_Z_AXIS, rts.sendData(current_position.z * 10.0f, AXIS_Z_COORD_VP)); + TERN_(HAS_X_AXIS, rts.sendData(motion.position.x * 10.0f, AXIS_X_COORD_VP)); + TERN_(HAS_Y_AXIS, rts.sendData(motion.position.y * 10.0f, AXIS_Y_COORD_VP)); + TERN_(HAS_Z_AXIS, rts.sendData(motion.position.z * 10.0f, AXIS_Z_COORD_VP)); } #endif // SOVOL_SV06_RTS diff --git a/Marlin/src/lcd/tft/touch.cpp b/Marlin/src/lcd/tft/touch.cpp index 661a013323..62619d90b3 100644 --- a/Marlin/src/lcd/tft/touch.cpp +++ b/Marlin/src/lcd/tft/touch.cpp @@ -273,7 +273,7 @@ void Touch::touch(touch_control_t * const control) { case FEEDRATE: ui.clear_for_drawing(); - MenuItem_int3::action(GET_TEXT_F(MSG_SPEED), &feedrate_percentage, SPEED_EDIT_MIN, SPEED_EDIT_MAX); + MenuItem_int3::action(GET_TEXT_F(MSG_SPEED), &motion.feedrate_percentage, SPEED_EDIT_MIN, SPEED_EDIT_MAX); break; #if HAS_EXTRUDERS diff --git a/Marlin/src/lcd/tft/ui_color_ui.cpp b/Marlin/src/lcd/tft/ui_color_ui.cpp index 53b3b0d068..b6871a6a16 100644 --- a/Marlin/src/lcd/tft/ui_color_ui.cpp +++ b/Marlin/src/lcd/tft/ui_color_ui.cpp @@ -263,26 +263,26 @@ void MarlinUI::draw_status_screen() { #if HAS_X_AXIS && defined(X_MARK_X) && defined(X_MARK_Y) && defined(X_VALUE_X) && defined(X_VALUE_Y) tft.add_text(X_MARK_X, X_MARK_Y, COLOR_AXIS_HOMED, "X"); - const bool nhx = axis_should_home(X_AXIS); - tft_string.set(blink && nhx ? "?" : ftostr4sign(LOGICAL_X_POSITION(current_position.x))); + const bool nhx = motion.axis_should_home(X_AXIS); + tft_string.set(blink && nhx ? "?" : ftostr4sign(motion.logical_x(motion.position.x))); tft.add_text(X_VALUE_X, X_VALUE_Y, nhx ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); #endif #if HAS_Y_AXIS && defined(Y_MARK_X) && defined(Y_MARK_Y) && defined(Y_VALUE_X) && defined(Y_VALUE_Y) tft.add_text(Y_MARK_X, Y_MARK_Y, COLOR_AXIS_HOMED, "Y"); - const bool nhy = axis_should_home(Y_AXIS); - tft_string.set(blink && nhy ? "?" : ftostr4sign(LOGICAL_Y_POSITION(current_position.y))); + const bool nhy = motion.axis_should_home(Y_AXIS); + tft_string.set(blink && nhy ? "?" : ftostr4sign(motion.logical_y(motion.position.y))); tft.add_text(Y_VALUE_X, Y_VALUE_Y, nhy ? COLOR_AXIS_NOT_HOMED : COLOR_AXIS_HOMED, tft_string); #endif #if HAS_Z_AXIS && defined(Z_MARK_X) && defined(Z_MARK_Y) && defined(Z_VALUE_X) && defined(Z_VALUE_Y) && defined(Z_VALUE_OFFSET) tft.add_text(Z_MARK_X, Z_MARK_Y, COLOR_AXIS_HOMED, "Z"); uint16_t offset = Z_VALUE_OFFSET; - const bool nhz = axis_should_home(Z_AXIS); + const bool nhz = motion.axis_should_home(Z_AXIS); if (blink && nhz) tft_string.set('?'); else { - const float z = LOGICAL_Z_POSITION(current_position.z); + const float z = motion.logical_z(motion.position.z); tft_string.set(ftostr52sp((int16_t)z)); tft_string.rtrim(); offset += tft_string.width(); @@ -296,8 +296,8 @@ void MarlinUI::draw_status_screen() { #if ENABLED(LCD_SHOW_E_TOTAL) && defined(E_MARK_X) && defined(E_MARK_Y) && defined(E_VALUE_X) && defined(E_VALUE_Y) tft.add_text(E_MARK_X, E_MARK_Y, COLOR_AXIS_HOMED, "E"); if (marlin.printingIsActive()) { - const uint8_t escale = e_move_accumulator >= 10000.0f ? 10 : 1; // After 10m switch to cm to fit into 4 digits output of ftostr4sign() - tft_string.set(ftostr4sign(e_move_accumulator / escale)); + const uint8_t escale = motion.e_move_accumulator >= 10000.0f ? 10 : 1; // After 10m switch to cm to fit into 4 digits output of ftostr4sign() + tft_string.set(ftostr4sign(motion.e_move_accumulator / escale)); const uint16_t e_value_x = E_VALUE_X; tft_string.add(escale == 10 ? " cm" : " mm"); tft.add_text(e_value_x, E_VALUE_Y, COLOR_AXIS_HOMED, tft_string); @@ -311,9 +311,9 @@ void MarlinUI::draw_status_screen() { // Feed rate tft.canvas(FEEDRATE_X, FEEDRATE_Y, FEEDRATE_W, FEEDRATE_H); tft.set_background(COLOR_BACKGROUND); - uint16_t color = feedrate_percentage == 100 ? COLOR_RATE_100 : COLOR_RATE_ALTERED; + uint16_t color = motion.feedrate_percentage == 100 ? COLOR_RATE_100 : COLOR_RATE_ALTERED; tft.add_image(0, 0, imgFeedRate, color); - tft_string.set(i16tostr3rj(feedrate_percentage)); + tft_string.set(i16tostr3rj(motion.feedrate_percentage)); tft_string.add('%'); tft.add_text(36, tft_string.vcenter(30), color, tft_string); TERN_(TOUCH_SCREEN, touch.add_control(FEEDRATE, FEEDRATE_X, FEEDRATE_Y, FEEDRATE_W, FEEDRATE_H)); @@ -324,10 +324,10 @@ void MarlinUI::draw_status_screen() { tft.set_background(COLOR_BACKGROUND); color = planner.flow_percentage[0] == 100 ? COLOR_RATE_100 : COLOR_RATE_ALTERED; tft.add_image(FLOWRATE_ICON_X, FLOWRATE_ICON_X, imgFlowRate, color); - tft_string.set(i16tostr3rj(planner.flow_percentage[active_extruder])); + tft_string.set(i16tostr3rj(planner.flow_percentage[motion.extruder])); tft_string.add('%'); tft.add_text(FLOWRATE_TEXT_X, FLOWRATE_TEXT_Y, color, tft_string); - TERN_(TOUCH_SCREEN, touch.add_control(FLOWRATE, FLOWRATE_X, FLOWRATE_Y, FLOWRATE_W, FLOWRATE_H, active_extruder)); + TERN_(TOUCH_SCREEN, touch.add_control(FLOWRATE, FLOWRATE_X, FLOWRATE_Y, FLOWRATE_W, FLOWRATE_H, motion.extruder)); #endif #if ENABLED(TOUCH_SCREEN) @@ -422,13 +422,13 @@ void MenuEditItemBase::draw_edit_screen(FSTR_P const ftpl, const char * const va tft_string.set(X_LBL); tft.add_text(UBL_X_LABEL_X, MENU_TEXT_Y, COLOR_MENU_TEXT, tft_string); - tft_string.set(ftostr52(LOGICAL_X_POSITION(current_position.x))); + tft_string.set(ftostr52(motion.logical_x(motion.position.x))); tft_string.trim(); tft.add_text(UBL_X_TEXT_X, MENU_TEXT_Y, COLOR_MENU_VALUE, tft_string); tft_string.set(Y_LBL); tft.add_text(UBL_Y_LABEL_X, MENU_TEXT_Y, COLOR_MENU_TEXT, tft_string); - tft_string.set(ftostr52(LOGICAL_X_POSITION(current_position.y))); + tft_string.set(ftostr52(motion.logical_x(motion.position.y))); tft_string.trim(); tft.add_text(UBL_Y_TEXT_X, MENU_TEXT_Y, COLOR_MENU_VALUE, tft_string); } @@ -530,7 +530,7 @@ void MenuItem_confirm::draw_select_screen(FSTR_P const yes, FSTR_P const no, con for (uint16_t x = 0; x < (GRID_MAX_POINTS_X); x++) for (uint16_t y = 0; y < (GRID_MAX_POINTS_Y); y++) - if (position_is_reachable({ bedlevel.get_mesh_x(x), bedlevel.get_mesh_y(y) })) + if (motion.can_reach({ bedlevel.get_mesh_x(x), bedlevel.get_mesh_y(y) })) tft.add_bar(1 + (x * 2 + 1) * (UBL_GRID_W - 4) / (GRID_MAX_POINTS_X) / 2, UBL_GRID_H - 3 - ((y * 2 + 1) * (UBL_GRID_H - 4) / (GRID_MAX_POINTS_Y) / 2), 2, 2, COLOR_UBL); tft.add_rectangle((x_plot * 2 + 1) * (UBL_GRID_W - 4) / (GRID_MAX_POINTS_X) / 2 - 1, UBL_GRID_H - 5 - ((y_plot * 2 + 1) * (UBL_GRID_H - 4) / (GRID_MAX_POINTS_Y) / 2), 6, 6, COLOR_UBL); diff --git a/Marlin/src/lcd/tft/ui_common.cpp b/Marlin/src/lcd/tft/ui_common.cpp index b16b3e80a0..9113aafdad 100644 --- a/Marlin/src/lcd/tft/ui_common.cpp +++ b/Marlin/src/lcd/tft/ui_common.cpp @@ -82,11 +82,11 @@ void moveAxis(const AxisEnum axis, const int8_t direction) { diff = 0; const int16_t babystep_increment = direction * BABYSTEP_SIZE_Z; - const bool do_probe = DISABLED(BABYSTEP_HOTEND_Z_OFFSET) || active_extruder == 0; + const bool do_probe = DISABLED(BABYSTEP_HOTEND_Z_OFFSET) || motion.extruder == 0; const float bsDiff = planner.mm_per_step[Z_AXIS] * babystep_increment, new_probe_offset = probe.offset.z + bsDiff, new_offs = TERN(BABYSTEP_HOTEND_Z_OFFSET - , do_probe ? new_probe_offset : hotend_offset[active_extruder].z - bsDiff + , do_probe ? new_probe_offset : hotend_offset[motion.extruder].z - bsDiff , new_probe_offset ); if (WITHIN(new_offs, PROBE_OFFSET_ZMIN, PROBE_OFFSET_ZMAX)) { @@ -94,7 +94,7 @@ void moveAxis(const AxisEnum axis, const int8_t direction) { if (do_probe) probe.offset.z = new_offs; else - TERN(BABYSTEP_HOTEND_Z_OFFSET, hotend_offset[active_extruder].z = new_offs, NOOP); + TERN(BABYSTEP_HOTEND_Z_OFFSET, hotend_offset[motion.extruder].z = new_offs, NOOP); drawMessage_P(NUL_STR); // Clear the error } else @@ -104,12 +104,12 @@ void moveAxis(const AxisEnum axis, const int8_t direction) { // Only change probe.offset.z probe.offset.z += diff; - if (direction < 0 && current_position.z < PROBE_OFFSET_ZMIN) { - current_position.z = PROBE_OFFSET_ZMIN; + if (direction < 0 && motion.position.z < PROBE_OFFSET_ZMIN) { + motion.position.z = PROBE_OFFSET_ZMIN; drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); } - else if (direction > 0 && current_position.z > PROBE_OFFSET_ZMAX) { - current_position.z = PROBE_OFFSET_ZMAX; + else if (direction > 0 && motion.position.z > PROBE_OFFSET_ZMAX) { + motion.position.z = PROBE_OFFSET_ZMAX; drawMessage(GET_TEXT_F(MSG_LCD_SOFT_ENDSTOPS)); } else @@ -123,13 +123,13 @@ void moveAxis(const AxisEnum axis, const int8_t direction) { if (diff && !ui.manual_move.processing) { // Get motion limit from software endstops, if any float min, max; - soft_endstop.get_manual_axis_limits(axis, min, max); + motion.soft_endstop.get_manual_axis_limits(axis, min, max); // Delta limits XY based on the current offset from center // This assumes the center is 0,0 #if ENABLED(DELTA) if (axis != Z_AXIS && TERN1(HAS_EXTRUDERS, axis != E_AXIS)) { - max = SQRT(FLOAT_SQ(PRINTABLE_RADIUS) - sq(current_position[Y_AXIS - axis])); // (Y_AXIS - axis) == the other axis + max = SQRT(FLOAT_SQ(PRINTABLE_RADIUS) - sq(motion.position[Y_AXIS - axis])); // (Y_AXIS - axis) == the other axis min = -max; } #endif diff --git a/Marlin/src/libs/nozzle.cpp b/Marlin/src/libs/nozzle.cpp index bfe51ed97a..7c1acee656 100644 --- a/Marlin/src/libs/nozzle.cpp +++ b/Marlin/src/libs/nozzle.cpp @@ -47,30 +47,30 @@ Nozzle nozzle; */ void Nozzle::stroke(const xyz_pos_t &start, const xyz_pos_t &end, const uint8_t strokes) { #if ENABLED(NOZZLE_CLEAN_GOBACK) - const xyz_pos_t oldpos = current_position; + const xyz_pos_t oldpos = motion.position; #endif // Move Z (and XY) to the starting point, if needed #if DISABLED(NOZZLE_CLEAN_NO_Z) - do_blocking_move_to(start); + motion.blocking_move(start); #endif // Run the stroke pattern for (uint8_t i = 0; i <= strokes; ++i) { #if ENABLED(NOZZLE_CLEAN_NO_Y) if (i & 1) - do_blocking_move_to_x(end.x); + motion.blocking_move_x(end.x); else - do_blocking_move_to_x(start.x); + motion.blocking_move_x(start.x); #else if (i & 1) - do_blocking_move_to_xy(end); + motion.blocking_move_xy(end); else - do_blocking_move_to_xy(start); + motion.blocking_move_xy(start); #endif } - TERN_(NOZZLE_CLEAN_GOBACK, do_blocking_move_to(oldpos)); + TERN_(NOZZLE_CLEAN_GOBACK, motion.blocking_move(oldpos)); } #endif @@ -89,13 +89,13 @@ Nozzle nozzle; if (!diff.x || !diff.y) return; #if ENABLED(NOZZLE_CLEAN_GOBACK) - const xyz_pos_t back = current_position; + const xyz_pos_t back = motion.position; #endif #if ENABLED(NOZZLE_CLEAN_NO_Z) - do_blocking_move_to_xy(start); + motion.blocking_move_xy(start); #else - do_blocking_move_to(start); + motion.blocking_move(start); #endif const uint8_t zigs = objects << 1; @@ -106,20 +106,20 @@ Nozzle nozzle; for (int8_t i = 0; i < zigs; i++) { side = (i & 1) ? &end : &start; if (horiz) - do_blocking_move_to_xy(start.x + i * P, side->y); + motion.blocking_move_xy(start.x + i * P, side->y); else - do_blocking_move_to_xy(side->x, start.y + i * P); + motion.blocking_move_xy(side->x, start.y + i * P); } for (int8_t i = zigs; i >= 0; i--) { side = (i & 1) ? &end : &start; if (horiz) - do_blocking_move_to_xy(start.x + i * P, side->y); + motion.blocking_move_xy(start.x + i * P, side->y); else - do_blocking_move_to_xy(side->x, start.y + i * P); + motion.blocking_move_xy(side->x, start.y + i * P); } } - TERN_(NOZZLE_CLEAN_GOBACK, do_blocking_move_to(back)); + TERN_(NOZZLE_CLEAN_GOBACK, motion.blocking_move(back)); } #endif @@ -136,21 +136,21 @@ Nozzle nozzle; if (strokes == 0) return; #if ENABLED(NOZZLE_CLEAN_GOBACK) - const xyz_pos_t back = current_position; + const xyz_pos_t back = motion.position; #endif - TERN(NOZZLE_CLEAN_NO_Z, do_blocking_move_to_xy, do_blocking_move_to)(start); + motion.TERN(NOZZLE_CLEAN_NO_Z, blocking_move_xy, blocking_move)(start); for (uint8_t s = 0; s < strokes; ++s) for (uint8_t i = 0; i < NOZZLE_CLEAN_CIRCLE_FN; ++i) - do_blocking_move_to_xy( + motion.blocking_move_xy( middle.x + sin((RADIANS(360) / NOZZLE_CLEAN_CIRCLE_FN) * i) * radius, middle.y + cos((RADIANS(360) / NOZZLE_CLEAN_CIRCLE_FN) * i) * radius ); // Let's be safe - do_blocking_move_to_xy(start); + motion.blocking_move_xy(start); - TERN_(NOZZLE_CLEAN_GOBACK, do_blocking_move_to(back)); + TERN_(NOZZLE_CLEAN_GOBACK, motion.blocking_move(back)); } #endif @@ -167,7 +167,7 @@ Nozzle nozzle; xyz_pos_t middle[HOTENDS] = NOZZLE_CLEAN_CIRCLE_MIDDLE; #endif - const uint8_t arrPos = ANY(SINGLENOZZLE, MIXING_EXTRUDER) ? 0 : active_extruder; + const uint8_t arrPos = ANY(SINGLENOZZLE, MIXING_EXTRUDER) ? 0 : motion.extruder; switch (pattern) { #if DISABLED(NOZZLE_CLEAN_PATTERN_LINE) @@ -197,16 +197,16 @@ Nozzle nozzle; #if HAS_SOFTWARE_ENDSTOPS #define LIMIT_AXIS(A) do{ \ - LIMIT( start[arrPos].A, soft_endstop.min.A, soft_endstop.max.A); \ - LIMIT( end[arrPos].A, soft_endstop.min.A, soft_endstop.max.A); \ - TERN_(NOZZLE_CLEAN_PATTERN_CIRCLE, LIMIT(middle[arrPos].A, soft_endstop.min.A, soft_endstop.max.A)); \ + LIMIT( start[arrPos].A, motion.soft_endstop.min.A, motion.soft_endstop.max.A); \ + LIMIT( end[arrPos].A, motion.soft_endstop.min.A, motion.soft_endstop.max.A); \ + TERN_(NOZZLE_CLEAN_PATTERN_CIRCLE, LIMIT(middle[arrPos].A, motion.soft_endstop.min.A, motion.soft_endstop.max.A)); \ }while(0) - if (soft_endstop.enabled()) { + if (motion.soft_endstop.enabled()) { LIMIT_AXIS(x); LIMIT_AXIS(y); LIMIT_AXIS(z); #if ENABLED(NOZZLE_CLEAN_PATTERN_CIRCLE) - if (pattern == 2 && !(WITHIN(middle[arrPos].x, soft_endstop.min.x + radius, soft_endstop.max.x - radius) - && WITHIN(middle[arrPos].y, soft_endstop.min.y + radius, soft_endstop.max.y - radius)) + if (pattern == 2 && !(WITHIN(middle[arrPos].x, motion.soft_endstop.min.x + radius, motion.soft_endstop.max.x - radius) + && WITHIN(middle[arrPos].y, motion.soft_endstop.min.y + radius, motion.soft_endstop.max.y - radius)) ) { SERIAL_ECHOLNPGM("Warning: Radius Out of Range"); return; } @@ -222,10 +222,10 @@ Nozzle nozzle; #endif if (TERN1(NOZZLE_CLEAN_PATTERN_CIRCLE, pattern != 2)) { - if (!TEST(cleans, X_AXIS)) start[arrPos].x = end[arrPos].x = current_position.x; - if (!TEST(cleans, Y_AXIS)) start[arrPos].y = end[arrPos].y = current_position.y; + if (!TEST(cleans, X_AXIS)) start[arrPos].x = end[arrPos].x = motion.position.x; + if (!TEST(cleans, Y_AXIS)) start[arrPos].y = end[arrPos].y = motion.position.y; } - if (!TEST(cleans, Z_AXIS)) start[arrPos].z = end[arrPos].z = current_position.z; + if (!TEST(cleans, Z_AXIS)) start[arrPos].z = end[arrPos].z = motion.position.z; switch (pattern) { // no default clause as pattern is already validated #if ENABLED(NOZZLE_CLEAN_PATTERN_LINE) @@ -252,7 +252,7 @@ Nozzle nozzle; #ifdef NOZZLE_PARK_Z_RAISE_MIN NOZZLE_PARK_Z_RAISE_MIN + // Minimum raise... #endif - current_position.z // ...over current position + motion.position.z // ...over current position ) ); } @@ -264,15 +264,15 @@ Nozzle nozzle; switch (z_action) { case 1: // Go to Z-park height - do_blocking_move_to_z(park.z, fr_z); + motion.blocking_move_z(park.z, fr_z); break; case 2: // Raise by Z-park height - do_blocking_move_to_z(_MIN(current_position.z + park.z, Z_MAX_POS), fr_z); + motion.blocking_move_z(_MIN(motion.position.z + park.z, Z_MAX_POS), fr_z); break; case 3: { // Raise by NOZZLE_PARK_Z_RAISE_MIN, bypass XY-park position - do_blocking_move_to_z(park_mode_0_height(0), fr_z); + motion.blocking_move_z(park_mode_0_height(0), fr_z); goto SKIP_XY_MOVE; } break; @@ -280,7 +280,7 @@ Nozzle nozzle; break; default: // Raise by NOZZLE_PARK_Z_RAISE_MIN, use park.z as a minimum height - do_blocking_move_to_z(park_mode_0_height(park.z), fr_z); + motion.blocking_move_z(park_mode_0_height(park.z), fr_z); break; } #endif // HAS_Z_AXIS @@ -291,18 +291,18 @@ Nozzle nozzle; #endif constexpr feedRate_t fr_xy = NOZZLE_PARK_XY_FEEDRATE; switch (NOZZLE_PARK_MOVE) { - case 0: do_blocking_move_to_xy(park, fr_xy); break; - case 1: do_blocking_move_to_x(park.x, fr_xy); break; - case 2: do_blocking_move_to_y(park.y, fr_xy); break; - case 3: do_blocking_move_to_x(park.x, fr_xy); - do_blocking_move_to_y(park.y, fr_xy); break; - case 4: do_blocking_move_to_y(park.y, fr_xy); - do_blocking_move_to_x(park.x, fr_xy); break; + case 0: motion.blocking_move_xy(park, fr_xy); break; + case 1: motion.blocking_move_x(park.x, fr_xy); break; + case 2: motion.blocking_move_y(park.y, fr_xy); break; + case 3: motion.blocking_move_x(park.x, fr_xy); + motion.blocking_move_y(park.y, fr_xy); break; + case 4: motion.blocking_move_y(park.y, fr_xy); + motion.blocking_move_x(park.x, fr_xy); break; } } SKIP_XY_MOVE: - report_current_position(); + motion.report_position(); } #endif // NOZZLE_PARK_FEATURE diff --git a/Marlin/src/module/delta.cpp b/Marlin/src/module/delta.cpp index d211c3a133..b9e70f5e5a 100644 --- a/Marlin/src/module/delta.cpp +++ b/Marlin/src/module/delta.cpp @@ -64,7 +64,7 @@ float delta_safe_distance_from_top(); void refresh_delta_clip_start_height() { delta_clip_start_height = TERN(HAS_SOFTWARE_ENDSTOPS, - soft_endstop.max.z, + motion.soft_endstop.max.z, DIFF_TERN(HAS_BED_PROBE, delta_height, probe.offset.z) ) - delta_safe_distance_from_top(); } @@ -84,8 +84,8 @@ void recalc_delta_settings() { delta_diagonal_rod_2_tower.set(sq(delta_diagonal_rod + delta_diagonal_rod_trim.a), sq(delta_diagonal_rod + delta_diagonal_rod_trim.b), sq(delta_diagonal_rod + delta_diagonal_rod_trim.c)); - update_software_endstops(Z_AXIS); - set_all_unhomed(); + motion.update_software_endstops(Z_AXIS); + motion.set_all_unhomed(); } /** @@ -106,14 +106,14 @@ void recalc_delta_settings() { #define DELTA_DEBUG(VAR) do { \ SERIAL_ECHOLNPGM_P(PSTR("Cartesian X"), VAR.x, SP_Y_STR, VAR.y, SP_Z_STR, VAR.z); \ - SERIAL_ECHOLNPGM_P(PSTR("Delta A"), delta.a, SP_B_STR, delta.b, SP_C_STR, delta.c); \ + SERIAL_ECHOLNPGM_P(PSTR("Delta A"), motion.delta.a, SP_B_STR, motion.delta.b, SP_C_STR, motion.delta.c); \ }while(0) void inverse_kinematics(const xyz_pos_t &raw) { #if HAS_HOTEND_OFFSET // Delta hotend offsets must be applied in Cartesian space with no "spoofing" - xyz_pos_t pos = { raw.x - hotend_offset[active_extruder].x, - raw.y - hotend_offset[active_extruder].y, + xyz_pos_t pos = { raw.x - hotend_offset[motion.extruder].x, + raw.y - hotend_offset[motion.extruder].y, raw.z }; DELTA_IK(pos); //DELTA_DEBUG(pos); @@ -130,10 +130,10 @@ void inverse_kinematics(const xyz_pos_t &raw) { float delta_safe_distance_from_top() { xyz_pos_t cartesian{0}; inverse_kinematics(cartesian); - const float centered_extent = delta.a; + const float centered_extent = motion.delta.a; cartesian.y = PRINTABLE_RADIUS; inverse_kinematics(cartesian); - return ABS(centered_extent - delta.a); + return ABS(centered_extent - motion.delta.a); } /** @@ -159,7 +159,7 @@ float delta_safe_distance_from_top() { * based on a Java function from "Delta Robot Kinematics V3" * by Steve Graves * - * The result is stored in the cartes[] array. + * The result is stored in the motion.cartes[] array. */ void forward_kinematics(const float z1, const float z2, const float z3) { // Create a vector in old coordinates along x axis of new coordinate @@ -207,9 +207,9 @@ void forward_kinematics(const float z1, const float z2, const float z3) { // Start from the origin of the old coordinates and add vectors in the // old coords that represent the Xnew, Ynew and Znew to find the point // in the old system. - cartes.set(delta_tower[A_AXIS].x + ex[0] * Xnew + ey[0] * Ynew - ez[0] * Znew, - delta_tower[A_AXIS].y + ex[1] * Xnew + ey[1] * Ynew - ez[1] * Znew, - z1 + ex[2] * Xnew + ey[2] * Ynew - ez[2] * Znew); + motion.cartes.set(delta_tower[A_AXIS].x + ex[0] * Xnew + ey[0] * Ynew - ez[0] * Znew, + delta_tower[A_AXIS].y + ex[1] * Xnew + ey[1] * Ynew - ez[1] * Znew, + z1 + ex[2] * Xnew + ey[2] * Ynew - ez[2] * Znew); } /** @@ -220,9 +220,9 @@ void home_delta() { DEBUG_SECTION(log_home_delta, "home_delta", DEBUGGING(LEVELING)); // Init the current position of all carriages to 0,0,0 - current_position.reset(); - destination.reset(); - sync_plan_position(); + motion.position.reset(); + motion.destination.reset(); + motion.sync_plan_position(); // Disable stealthChop if used. Enable diag1 pin on driver. #if ENABLED(SENSORLESS_HOMING) @@ -244,8 +244,8 @@ void home_delta() { TERN_(HAS_HOMING_CURRENT, set_homing_current(Z_AXIS)); // Move all carriages together linearly until an endstop is hit. - current_position.z = DIFF_TERN(HAS_BED_PROBE, delta_height + 10, probe.offset.z); - line_to_current_position(homing_feedrate(Z_AXIS)); + motion.position.z = DIFF_TERN(HAS_BED_PROBE, delta_height + 10, probe.offset.z); + motion.goto_current_position(motion.homing_feedrate(Z_AXIS)); planner.synchronize(); TERN_(HAS_DELTA_SENSORLESS_PROBING, endstops.report_states()); @@ -272,23 +272,23 @@ void home_delta() { // At least one carriage has reached the top. // Now re-home each carriage separately. - homeaxis(A_AXIS); - homeaxis(B_AXIS); - homeaxis(C_AXIS); + motion.homeaxis(A_AXIS); + motion.homeaxis(B_AXIS); + motion.homeaxis(C_AXIS); // Set all carriages to their home positions // Do this here all at once for Delta, because // XYZ isn't ABC. Applying this per-tower would // give the impression that they are the same. - LOOP_ABC(i) set_axis_is_at_home((AxisEnum)i); + LOOP_ABC(i) motion.set_axis_is_at_home((AxisEnum)i); - sync_plan_position(); + motion.sync_plan_position(); #if DISABLED(DELTA_HOME_TO_SAFE_ZONE) && defined(HOMING_BACKOFF_POST_MM) constexpr xyz_float_t endstop_backoff = HOMING_BACKOFF_POST_MM; if (endstop_backoff.z) { - current_position.z -= ABS(endstop_backoff.z) * Z_HOME_DIR; - line_to_current_position(homing_feedrate(Z_AXIS)); + motion.position.z -= ABS(endstop_backoff.z) * Z_HOME_DIR; + motion.goto_current_position(motion.homing_feedrate(Z_AXIS)); } #endif } diff --git a/Marlin/src/module/delta.h b/Marlin/src/module/delta.h index 92e647d6d9..3aa5d1b51c 100644 --- a/Marlin/src/module/delta.h +++ b/Marlin/src/module/delta.h @@ -79,7 +79,7 @@ void recalc_delta_settings(); ) \ ) -#define DELTA_IK(V) delta.set(DELTA_Z(V, A_AXIS), DELTA_Z(V, B_AXIS), DELTA_Z(V, C_AXIS)) +#define DELTA_IK(V) motion.delta.set(DELTA_Z(V, A_AXIS), DELTA_Z(V, B_AXIS), DELTA_Z(V, C_AXIS)) void inverse_kinematics(const xyz_pos_t &raw); @@ -114,7 +114,7 @@ void refresh_delta_clip_start_height(); * based on a Java function from "Delta Robot Kinematics V3" * by Steve Graves * - * The result is stored in the cartes[] array. + * The result is stored in the motion.cartes[] array. */ void forward_kinematics(const float z1, const float z2, const float z3); diff --git a/Marlin/src/module/endstops.cpp b/Marlin/src/module/endstops.cpp index 5269d942ad..2967a8af1d 100644 --- a/Marlin/src/module/endstops.cpp +++ b/Marlin/src/module/endstops.cpp @@ -364,7 +364,7 @@ void Endstops::event_handler() { #if ENABLED(SD_ABORT_ON_ENDSTOP_HIT) if (planner.abort_on_endstop_hit) { card.abortFilePrintNow(); - quickstop_stepper(); + motion.quickstop_stepper(); thermalManager.disable_all_heaters(); #ifdef SD_ABORT_ON_ENDSTOP_HIT_GCODE queue.clear(); diff --git a/Marlin/src/module/ft_motion.cpp b/Marlin/src/module/ft_motion.cpp index 45e7b9c93e..7042c0346c 100644 --- a/Marlin/src/module/ft_motion.cpp +++ b/Marlin/src/module/ft_motion.cpp @@ -688,7 +688,7 @@ void FTMotion::fill_stepper_plan_buffer() { // Start Resonance Testing void FTMotion::start_resonance_test() { - home_if_needed(); // Ensure known axes first + motion.home_if_needed(); // Ensure known axes first ftm_resonance_test_params_t &p = rtg.rt_params; @@ -697,10 +697,10 @@ void FTMotion::fill_stepper_plan_buffer() { p.accel_per_hz = 15.0f; // Always move to the center of the bed - do_blocking_move_to_xy(X_CENTER, Y_CENTER, Z_CLEARANCE_FOR_HOMING); + motion.blocking_move_xy(X_CENTER, Y_CENTER, Z_CLEARANCE_FOR_HOMING); // Start test at the current position with the configured time-step - rtg.start(current_position, FTM_TS); + rtg.start(motion.position, FTM_TS); } #endif // FTM_RESONANCE_TEST diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index 8a92482d82..326b65a2c6 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -38,10 +38,6 @@ #include "../lcd/marlinui.h" #endif -#if ENABLED(POLAR) - #include "polar.h" -#endif - #if HAS_BED_PROBE #include "probe.h" #endif @@ -77,12 +73,21 @@ #include "../feature/bedlevel/bdl/bdl.h" #endif +Motion motion; + // Relative Mode. Enable with G91, disable with G90. -bool relative_mode; // = false +bool Motion::relative_mode; // = false + +// The active extruder (tool). Set with T command. +#if HAS_MULTI_EXTRUDER + uint8_t Motion::extruder = 0; // = 0 +#else + constexpr uint8_t Motion::extruder; +#endif #if HAS_Z_AXIS - // If Z has been powered on trust that the real Z is >= current_position.z - bool z_min_trusted; // = false + // If Z has been powered on trust that the real Z is >= motion.position.z + bool Motion::z_min_trusted; // = false #endif // Warn for unexpected TPARA home position @@ -101,10 +106,10 @@ bool relative_mode; // = false /** * Cartesian Current Position * Used to track the native machine position as moves are queued. - * Used by 'line_to_current_position' to do a move after changing it. + * Used by 'goto_current_position' to do a move after changing it. * Used by 'sync_plan_position' to update 'planner.position'. */ -xyze_pos_t current_position = LOGICAL_AXIS_ARRAY(0, +xyze_pos_t Motion::position = LOGICAL_AXIS_ARRAY(0, X_HOME_POS, Y_HOME_POS, #ifdef Z_IDLE_HEIGHT Z_IDLE_HEIGHT @@ -120,15 +125,13 @@ xyze_pos_t current_position = LOGICAL_AXIS_ARRAY(0, * and expected by functions like 'prepare_line_to_destination'. * G-codes can set destination using 'get_destination_from_command' */ -xyze_pos_t destination; // {0} +xyze_pos_t Motion::destination; // {0} -// The active extruder (tool). Set with T command. -#if HAS_MULTI_EXTRUDER - uint8_t active_extruder = 0; // = 0 -#endif +// Scratch space for a cartesian result +xyz_pos_t Motion::cartes; #if ENABLED(LCD_SHOW_E_TOTAL) - float e_move_accumulator; // = 0 + float Motion::e_move_accumulator; // = 0 #endif // Extruder offsets @@ -153,21 +156,21 @@ xyze_pos_t destination; // {0} #ifndef DEFAULT_FEEDRATE_MM_M #define DEFAULT_FEEDRATE_MM_M 4000 #endif -feedRate_t feedrate_mm_s = MMM_TO_MMS(DEFAULT_FEEDRATE_MM_M); -int16_t feedrate_percentage = 100; -#if ENABLED(EDITABLE_HOMING_FEEDRATE) - xyz_feedrate_t homing_feedrate_mm_m = HOMING_FEEDRATE_MM_M; -#endif +feedRate_t Motion::feedrate_mm_s = MMM_TO_MMS(DEFAULT_FEEDRATE_MM_M); +int16_t Motion::feedrate_percentage = 100; -// Cartesian conversion result goes here: -xyz_pos_t cartes; +#if ENABLED(EDITABLE_HOMING_FEEDRATE) + xyz_feedrate_t Motion::homing_feedrate_mm_m = HOMING_FEEDRATE_MM_M; +#else + constexpr xyz_feedrate_t Motion::homing_feedrate_mm_m; +#endif #if IS_KINEMATIC - abce_pos_t delta; + abce_pos_t Motion::delta; #if HAS_SCARA_OFFSET - abc_pos_t scara_home_offset; + abc_pos_t Motion::scara_home_offset; #endif // If it does not have software endstops, use the printable radius #if HAS_SOFTWARE_ENDSTOPS @@ -183,7 +186,7 @@ xyz_pos_t cartes; delta_max_radius_2 = sq(float(PRINTABLE_RADIUS)); #endif -#endif +#endif // IS_KINEMATIC /** * The workspace can be offset by some commands, or @@ -192,12 +195,12 @@ xyz_pos_t cartes; #if HAS_HOME_OFFSET // This offset is added to the configured home position. // Set by M206, M428, or menu item. Saved to EEPROM. - xyz_pos_t home_offset{0}; + xyz_pos_t Motion::home_offset{0}; #endif #if HAS_WORKSPACE_OFFSET // The above two are combined to save on computes - xyz_pos_t workspace_offset{0}; + xyz_pos_t Motion::workspace_offset{0}; #endif #if ABL_USES_GRID @@ -229,7 +232,7 @@ inline void report_logical_position(const xyze_pos_t &rpos) { // Report the real current position according to the steppers. // Forward kinematics and un-leveling are applied. -void report_real_position() { +void Motion::report_position_real() { get_cartesian_from_steppers(); xyze_pos_t npos = LOGICAL_AXIS_ARRAY( planner.get_axis_position_mm(E_AXIS), @@ -245,8 +248,8 @@ void report_real_position() { } // Report the logical current position according to the most recent G-code command -void report_current_position() { - report_logical_position(current_position); +void Motion::report_position() { + report_logical_position(position); report_more_positions(); } @@ -256,8 +259,8 @@ void report_current_position() { * suitable for debugging kinematics and leveling while avoiding planner sync that * definitively interrupts the printing flow. */ -void report_current_position_projected() { - report_logical_position(current_position); +void Motion::report_position_projected() { + report_logical_position(position); stepper.report_a_position(planner.position); } @@ -590,27 +593,27 @@ void report_current_position_projected() { #endif // HAS_HOMING_CURRENT #if ENABLED(AUTO_REPORT_POSITION) - AutoReporter position_auto_reporter; + AutoReporter Motion::position_auto_reporter; #endif #if ENABLED(REALTIME_REPORTING_COMMANDS) - M_StateEnum M_State_grbl = M_INIT; + M_StateEnum Motion::M_State_grbl = M_INIT; /** * Output the current grbl compatible state to serial while moving */ - void report_current_grblstate_moving() { SERIAL_ECHOLNPGM("S_XYZ:", int(M_State_grbl)); } + void Motion::report_current_grblstate_moving() { SERIAL_ECHOLNPGM("S_XYZ:", int(M_State_grbl)); } /** * Output the current position (processed) to serial while moving */ - void report_current_position_moving() { + void Motion::report_position_moving() { get_cartesian_from_steppers(); const xyz_pos_t lpos = cartes.asLogical(); SERIAL_ECHOPGM_P(LOGICAL_AXIS_PAIRED_LIST( - SP_E_LBL, current_position.e, + SP_E_LBL, position.e, X_LBL, lpos.x, SP_Y_LBL, lpos.y, SP_Z_LBL, lpos.z, SP_I_LBL, lpos.i, SP_J_LBL, lpos.j, SP_K_LBL, lpos.k, SP_U_LBL, lpos.u, SP_V_LBL, lpos.v, SP_W_LBL, lpos.w @@ -623,7 +626,7 @@ void report_current_position_projected() { /** * Set a Grbl-compatible state from the current marlin.state */ - M_StateEnum grbl_state_for_marlin_state() { + M_StateEnum Motion::grbl_state_for_marlin_state() { switch (marlin.state) { case MF_INITIALIZING: return M_INIT; case MF_SD_COMPLETE: return M_ALARM; @@ -640,7 +643,7 @@ void report_current_position_projected() { #if IS_KINEMATIC - bool position_is_reachable(const float rx, const float ry, const float inset/*=0.0f*/) { + bool Motion::can_reach(const float rx, const float ry, const float inset/*=0*/) { bool can_reach; @@ -693,10 +696,10 @@ void report_current_position_projected() { #else // CARTESIAN // Return true if the given position is within the machine bounds. - bool position_is_reachable(XY_LIST(const float rx, const float ry)) { + bool Motion::can_reach(XY_LIST(const float rx, const float ry)) { if (TERN0(HAS_Y_AXIS, !COORDINATE_OKAY(ry, Y_MIN_POS - fslop, Y_MAX_POS + fslop))) return false; #if ENABLED(DUAL_X_CARRIAGE) - if (active_extruder) + if (extruder) return COORDINATE_OKAY(rx, X2_MIN_POS - fslop, X2_MAX_POS + fslop); else return COORDINATE_OKAY(rx, X1_MIN_POS - fslop, X1_MAX_POS + fslop); @@ -708,7 +711,7 @@ void report_current_position_projected() { #endif // CARTESIAN -void home_if_needed(const bool keeplev/*=false*/) { +void Motion::home_if_needed(const bool keeplev/*=false*/) { if (!all_axes_trusted()) gcode.home_all_axes(keeplev); } @@ -716,7 +719,7 @@ void home_if_needed(const bool keeplev/*=false*/) { * Run out the planner buffer and re-sync the current * position from the last-updated stepper positions. */ -void quickstop_stepper() { +void Motion::quickstop_stepper() { planner.quick_stop(); planner.synchronize(); set_current_from_steppers_for_axis(ALL_AXES_ENUM); @@ -725,12 +728,12 @@ void quickstop_stepper() { #if ENABLED(REALTIME_REPORTING_COMMANDS) - void quickpause_stepper() { + void Motion::quickpause_stepper() { planner.quick_pause(); //planner.synchronize(); } - void quickresume_stepper() { + void Motion::quickresume_stepper() { planner.quick_resume(); //planner.synchronize(); } @@ -738,18 +741,18 @@ void quickstop_stepper() { #endif /** - * Set the planner/stepper positions directly from current_position with + * Set the planner/stepper positions directly from the current position with * no kinematic translation. Used for homing axes and cartesian/core syncing. */ -void sync_plan_position() { - if (DEBUGGING(LEVELING)) DEBUG_POS("sync_plan_position", current_position); - planner.set_position_mm(current_position); - //SERIAL_ECHOLNPGM("Sync_plan_position: ", current_position.x, ", ", current_position.y, ", ", current_position.z); +void Motion::sync_plan_position() { + if (DEBUGGING(LEVELING)) DEBUG_POS("sync_plan_position", position); + planner.set_position_mm(motion.position); + //SERIAL_ECHOLNPGM("Sync_plan_position: ", position.x, ", ", position.y, ", ", position.z); //SERIAL_EOL(); } #if HAS_EXTRUDERS - void sync_plan_position_e() { planner.set_e_position_mm(current_position.e); } + void Motion::sync_plan_position_e() { planner.set_e_position_mm(position.e); } #endif /** @@ -759,9 +762,9 @@ void sync_plan_position() { * The result is in the current coordinate space with * leveling applied. The coordinates need to be run through * unapply_leveling to obtain the "ideal" coordinates - * suitable for current_position, etc. + * suitable for motion.position, etc. */ -void get_cartesian_from_steppers() { +void Motion::get_cartesian_from_steppers() { #if ENABLED(DELTA) forward_kinematics(planner.get_axis_positions_mm()); #elif IS_SCARA @@ -789,17 +792,17 @@ void get_cartesian_from_steppers() { } /** - * Set the current_position for an axis based on + * Set position for an axis based on * the stepper positions, removing any leveling that * may have been applied. * * To prevent small shifts in axis position always call * sync_plan_position after updating axes with this. * - * To keep hosts in sync, always call report_current_position - * after updating the current_position. + * To keep hosts in sync, always call report_position + * after updating the position. */ -void set_current_from_steppers_for_axis(const AxisEnum axis) { +void Motion::set_current_from_steppers_for_axis(const AxisEnum axis) { get_cartesian_from_steppers(); xyze_pos_t pos = cartes; @@ -808,24 +811,24 @@ void set_current_from_steppers_for_axis(const AxisEnum axis) { TERN_(HAS_POSITION_MODIFIERS, planner.unapply_modifiers(pos, true)); if (axis == ALL_AXES_ENUM) - current_position = pos; + position = pos; else - current_position[axis] = pos[axis]; + position[axis] = pos[axis]; } /** * Move the planner to the current position from wherever it last moved * (or from wherever it has been told it is located). */ -void line_to_current_position(const feedRate_t fr_mm_s/*=feedrate_mm_s*/) { - planner.buffer_line(current_position, fr_mm_s); +void Motion::goto_current_position(const feedRate_t fr_mm_s/*=feedrate_mm_s*/) { + planner.buffer_line(position, fr_mm_s); } #if HAS_EXTRUDERS - void unscaled_e_move(const float length, const feedRate_t fr_mm_s) { + void Motion::unscaled_e_move(const float length, const feedRate_t fr_mm_s) { TERN_(HAS_FILAMENT_SENSOR, runout.reset()); - current_position.e += length / planner.e_factor[active_extruder]; - line_to_current_position(fr_mm_s); + position.e += length / planner.e_factor[extruder]; + goto_current_position(fr_mm_s); planner.synchronize(); } #endif @@ -833,9 +836,9 @@ void line_to_current_position(const feedRate_t fr_mm_s/*=feedrate_mm_s*/) { #if IS_KINEMATIC /** - * Buffer a fast move without interpolation. Set current_position to destination + * Buffer a fast move without interpolation. Set position to destination */ - void prepare_fast_move_to_destination(const feedRate_t scaled_fr_mm_s/*=MMS_SCALED(feedrate_mm_s)*/) { + void Motion::prepare_fast_move_to_destination(const feedRate_t scaled_fr_mm_s/*=mms_scaled()*/) { if (DEBUGGING(LEVELING)) DEBUG_POS("prepare_fast_move_to_destination", destination); //SERIAL_ECHOLNPGM("Prepare fast move to destination: ", destination.x , ",", destination.y, ",", destination.z, "," , destination.e); @@ -845,12 +848,12 @@ void line_to_current_position(const feedRate_t fr_mm_s/*=feedrate_mm_s*/) { // UBL segmented line will do Z-only moves in single segment bedlevel.line_to_destination_segmented(scaled_fr_mm_s); #else - if (current_position == destination) return; + if (position == destination) return; planner.buffer_line(destination, scaled_fr_mm_s); #endif - current_position = destination; + position = destination; } #endif // IS_KINEMATIC @@ -860,12 +863,12 @@ void line_to_current_position(const feedRate_t fr_mm_s/*=feedrate_mm_s*/) { * - Move at normal speed regardless of feedrate percentage. * - Extrude the specified length regardless of flow percentage. */ -void _internal_move_to_destination(const feedRate_t fr_mm_s/*=0.0f*/ +void Motion::_goto_destination_internal(const feedRate_t fr_mm_s/*=0.0f*/ OPTARG(IS_KINEMATIC, const bool is_fast/*=false*/) ) { REMEMBER(fr, feedrate_mm_s); REMEMBER(pct, feedrate_percentage, 100); - TERN_(HAS_EXTRUDERS, REMEMBER(fac, planner.e_factor[active_extruder], 1.0f)); + TERN_(HAS_EXTRUDERS, REMEMBER(fac, planner.e_factor[extruder], 1.0f)); if (fr_mm_s) feedrate_mm_s = fr_mm_s; if (TERN0(IS_KINEMATIC, is_fast)) @@ -876,10 +879,10 @@ void _internal_move_to_destination(const feedRate_t fr_mm_s/*=0.0f*/ #if SECONDARY_AXES - void secondary_axis_moves(SECONDARY_AXIS_ARGS_LC(const float), const feedRate_t fr_mm_s) { + void Motion::secondary_axis_moves(SECONDARY_AXIS_ARGS_LC(const float), const feedRate_t fr_mm_s) { auto move_one = [&](const AxisEnum a, const float p) { const feedRate_t fr = fr_mm_s ?: homing_feedrate(a); - current_position[a] = p; line_to_current_position(fr); + position[a] = p; goto_current_position(fr); }; SECONDARY_AXIS_CODE( move_one(I_AXIS, i), move_one(J_AXIS, j), move_one(K_AXIS, k), @@ -890,7 +893,7 @@ void _internal_move_to_destination(const feedRate_t fr_mm_s/*=0.0f*/ #endif /** - * Plan a move to (X, Y, Z, [I, [J, [K...]]]) and set the current_position + * Plan a move to (X, Y, Z, [I, [J, [K...]]]) and set the position * Plan a move to (X, Y, Z, [I, [J, [K...]]]) with separation of Z from other components. * * - If Z is moving up, the Z move is done before XY, etc. @@ -898,8 +901,8 @@ void _internal_move_to_destination(const feedRate_t fr_mm_s/*=0.0f*/ * - Delta may lower Z first to get into the free motion zone. * - Before returning, wait for the planner buffer to empty. */ -void do_blocking_move_to(NUM_AXIS_ARGS_(const float) const feedRate_t fr_mm_s/*=0.0f*/) { - DEBUG_SECTION(log_move, "do_blocking_move_to", DEBUGGING(LEVELING)); +void Motion::blocking_move(NUM_AXIS_ARGS_(const float) const feedRate_t fr_mm_s/*=0.0f*/) { + DEBUG_SECTION(log_move, "blocking_move", DEBUGGING(LEVELING)); #if NUM_AXES if (DEBUGGING(LEVELING)) DEBUG_XYZ("> ", NUM_AXIS_ARGS_LC()); #endif @@ -912,48 +915,46 @@ void do_blocking_move_to(NUM_AXIS_ARGS_(const float) const feedRate_t fr_mm_s/*= #if IS_KINEMATIC && DISABLED(POLARGRAPH) // kinematic machines are expected to home to a point 1.5x their range? never reachable. - if (!position_is_reachable(x, y)) return; - destination = current_position; // sync destination at the start + if (!can_reach(x, y)) return; + destination = position; // sync destination at the start #endif #if ENABLED(DELTA) REMEMBER(fr, feedrate_mm_s, xy_feedrate); - if (DEBUGGING(LEVELING)) DEBUG_POS("destination = current_position", destination); + if (DEBUGGING(LEVELING)) DEBUG_POS("destination = position", destination); // when in the danger zone - if (current_position.z > delta_clip_start_height) { - if (z > delta_clip_start_height) { // staying in the danger zone - destination.set(x, y, z); // move directly (uninterpolated) - prepare_internal_fast_move_to_destination(); // set current_position from destination - if (DEBUGGING(LEVELING)) DEBUG_POS("danger zone move", current_position); + if (position.z > delta_clip_start_height) { + if (z > delta_clip_start_height) { // Staying in the danger zone + destination.set(x, y, z); // Move directly (uninterpolated) + prepare_internal_fast_move_to_destination(); // Set position from destination + if (DEBUGGING(LEVELING)) DEBUG_POS("danger zone move", position); return; } destination.z = delta_clip_start_height; - prepare_internal_fast_move_to_destination(); // set current_position from destination - if (DEBUGGING(LEVELING)) DEBUG_POS("zone border move", current_position); + prepare_internal_fast_move_to_destination(); // Set position from destination + if (DEBUGGING(LEVELING)) DEBUG_POS("zone border move", position); } - if (z > current_position.z) { // raising? + if (z > position.z) { // Raising? destination.z = z; - prepare_internal_fast_move_to_destination(z_feedrate); // set current_position from destination - if (DEBUGGING(LEVELING)) DEBUG_POS("z raise move", current_position); + prepare_internal_fast_move_to_destination(z_feedrate); // Set position from destination + if (DEBUGGING(LEVELING)) DEBUG_POS("z raise move", position); } destination.set(x, y); - prepare_internal_move_to_destination(); // set current_position from destination - if (DEBUGGING(LEVELING)) DEBUG_POS("xy move", current_position); + prepare_internal_move_to_destination(); // Set position from destination + if (DEBUGGING(LEVELING)) DEBUG_POS("xy move", position); - if (z < current_position.z) { // lowering? + if (z < position.z) { // Lowering? destination.z = z; - prepare_internal_fast_move_to_destination(z_feedrate); // set current_position from destination - if (DEBUGGING(LEVELING)) DEBUG_POS("z lower move", current_position); + prepare_internal_fast_move_to_destination(z_feedrate); // Set position from destination + if (DEBUGGING(LEVELING)) DEBUG_POS("z lower move", position); } - #if SECONDARY_AXES - secondary_axis_moves(SECONDARY_AXIS_LIST(i, j, k, u, v, w), fr_mm_s); - #endif + TERN_(SECONDARY_AXES, secondary_axis_moves(SECONDARY_AXIS_NAMES_LC, fr_mm_s)); #elif IS_SCARA @@ -962,9 +963,7 @@ void do_blocking_move_to(NUM_AXIS_ARGS_(const float) const feedRate_t fr_mm_s/*= destination.set(x, y); prepare_internal_fast_move_to_destination(xy_feedrate); - #if SECONDARY_AXES - secondary_axis_moves(SECONDARY_AXIS_LIST(i, j, k, u, v, w), fr_mm_s); - #endif + TERN_(SECONDARY_AXES, secondary_axis_moves(SECONDARY_AXIS_NAMES_LC, fr_mm_s)); // If Z needs to lower, do it after moving XY if (destination.z > z) { destination.z = z; prepare_internal_fast_move_to_destination(z_feedrate); } @@ -972,18 +971,16 @@ void do_blocking_move_to(NUM_AXIS_ARGS_(const float) const feedRate_t fr_mm_s/*= #else #if HAS_Z_AXIS // If Z needs to raise, do it before moving XY - if (current_position.z < z) { current_position.z = z; line_to_current_position(z_feedrate); } + if (position.z < z) { position.z = z; goto_current_position(z_feedrate); } #endif - current_position.set(XY_LIST(x, y)); line_to_current_position(xy_feedrate); + position.set(XY_LIST(x, y)); goto_current_position(xy_feedrate); - #if SECONDARY_AXES - secondary_axis_moves(SECONDARY_AXIS_LIST(i, j, k, u, v, w), fr_mm_s); - #endif + TERN_(SECONDARY_AXES, secondary_axis_moves(SECONDARY_AXIS_NAMES_LC, fr_mm_s)); #if HAS_Z_AXIS // If Z needs to lower, do it after moving XY - if (current_position.z > z) { current_position.z = z; line_to_current_position(z_feedrate); } + if (position.z > z) { position.z = z; goto_current_position(z_feedrate); } #endif #endif @@ -991,64 +988,62 @@ void do_blocking_move_to(NUM_AXIS_ARGS_(const float) const feedRate_t fr_mm_s/*= planner.synchronize(); } -void do_blocking_move_to(const xy_pos_t &raw, const feedRate_t fr_mm_s/*=0.0f*/) { - do_blocking_move_to(NUM_AXIS_LIST_(raw.x, raw.y, current_position.z, - current_position.i, current_position.j, current_position.k, - current_position.u, current_position.v, current_position.w) fr_mm_s); -} -void do_blocking_move_to(const xyz_pos_t &raw, const feedRate_t fr_mm_s/*=0.0f*/) { - do_blocking_move_to(NUM_AXIS_ELEM_(raw) fr_mm_s); -} -void do_blocking_move_to(const xyze_pos_t &raw, const feedRate_t fr_mm_s/*=0.0f*/) { - do_blocking_move_to(NUM_AXIS_ELEM_(raw) fr_mm_s); +void Motion::blocking_move(const xy_pos_t &raw, const feedRate_t fr_mm_s/*=0.0f*/) { + blocking_move( + NUM_AXIS_LIST_(raw.x, raw.y, position.z, + position.i, position.j, position.k, + position.u, position.v, position.w) + fr_mm_s + ); } #if HAS_X_AXIS - void do_blocking_move_to_x(const float rx, const feedRate_t fr_mm_s/*=0.0*/) { - if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("do_blocking_move_to_x(", rx, ", ", fr_mm_s, ")"); - do_blocking_move_to( - NUM_AXIS_LIST_(rx, current_position.y, current_position.z, - current_position.i, current_position.j, current_position.k, - current_position.u, current_position.v, current_position.w) + void Motion::blocking_move_x(const float rx, const feedRate_t fr_mm_s/*=0.0*/) { + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("blocking_move_x(", rx, ", ", fr_mm_s, ")"); + blocking_move( + NUM_AXIS_LIST_(rx, position.y, position.z, + position.i, position.j, position.k, + position.u, position.v, position.w) fr_mm_s ); } #endif #if HAS_Y_AXIS - void do_blocking_move_to_y(const float ry, const feedRate_t fr_mm_s/*=0.0*/) { - if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("do_blocking_move_to_y(", ry, ", ", fr_mm_s, ")"); - do_blocking_move_to( - NUM_AXIS_LIST_(current_position.x, ry, current_position.z, - current_position.i, current_position.j, current_position.k, - current_position.u, current_position.v, current_position.w) + void Motion::blocking_move_y(const float ry, const feedRate_t fr_mm_s/*=0.0*/) { + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("blocking_move_y(", ry, ", ", fr_mm_s, ")"); + blocking_move( + NUM_AXIS_LIST_(position.x, ry, position.z, + position.i, position.j, position.k, + position.u, position.v, position.w) fr_mm_s ); } - void do_blocking_move_to_xy(const float rx, const float ry, const feedRate_t fr_mm_s/*=0.0*/) { - if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("do_blocking_move_to_xy(", rx, ", ", ry, ", ", fr_mm_s, ")"); - do_blocking_move_to( - NUM_AXIS_LIST_(rx, ry, current_position.z, - current_position.i, current_position.j, current_position.k, - current_position.u, current_position.v, current_position.w) + void Motion::blocking_move_xy(const float rx, const float ry, const feedRate_t fr_mm_s/*=0.0*/) { + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("blocking_move_xy(", rx, ", ", ry, ", ", fr_mm_s, ")"); + blocking_move( + NUM_AXIS_LIST_(rx, ry, position.z, + position.i, position.j, position.k, + position.u, position.v, position.w) fr_mm_s ); } - void do_blocking_move_to_xy(const xy_pos_t &raw, const feedRate_t fr_mm_s/*=0.0f*/) { - do_blocking_move_to_xy(raw.x, raw.y, fr_mm_s); + void Motion::blocking_move_xy(const xy_pos_t &raw, const feedRate_t fr_mm_s/*=0.0f*/) { + blocking_move_xy(raw.x, raw.y, fr_mm_s); } #endif #if HAS_Z_AXIS - void do_blocking_move_to_z(const float rz, const feedRate_t fr_mm_s/*=0.0*/) { - if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("do_blocking_move_to_z(", rz, ", ", fr_mm_s, ")"); - do_blocking_move_to_xy_z(current_position, rz, fr_mm_s); + + void Motion::blocking_move_z(const float rz, const feedRate_t fr_mm_s/*=0.0*/) { + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("blocking_move_z(", rz, ", ", fr_mm_s, ")"); + blocking_move_xy_z(position, rz, fr_mm_s); } - void do_blocking_move_to_xy_z(const xy_pos_t &raw, const float z, const feedRate_t fr_mm_s/*=0.0f*/) { - do_blocking_move_to( + void Motion::blocking_move_xy_z(const xy_pos_t &raw, const float z, const feedRate_t fr_mm_s/*=0.0f*/) { + blocking_move( NUM_AXIS_LIST_(raw.x, raw.y, z, - current_position.i, current_position.j, current_position.k, - current_position.u, current_position.v, current_position.w) + position.i, position.j, position.k, + position.u, position.v, position.w) fr_mm_s ); } @@ -1060,24 +1055,24 @@ void do_blocking_move_to(const xyze_pos_t &raw, const feedRate_t fr_mm_s/*=0.0f* * - If lowering is not allowed then skip a downward move * - Execute the move at the probing (or homing) feedrate */ - void do_z_clearance(const float zclear, const bool with_probe/*=true*/, const bool lower_allowed/*=false*/) { + void Motion::do_z_clearance(const float zclear, const bool with_probe/*=true*/, const bool lower_allowed/*=false*/) { UNUSED(with_probe); float zdest = zclear; TERN_(HAS_BED_PROBE, if (with_probe && probe.offset.z < 0) zdest -= probe.offset.z); NOMORE(zdest, Z_MAX_POS); - if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("do_z_clearance(", zclear, " [", current_position.z, " to ", zdest, "], ", lower_allowed, ")"); - if ((!lower_allowed && zdest < current_position.z) || zdest == current_position.z) return; - do_blocking_move_to_z(zdest, TERN(HAS_BED_PROBE, z_probe_fast_mm_s, homing_feedrate(Z_AXIS))); + if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("do_z_clearance(", zclear, " [", position.z, " to ", zdest, "], ", lower_allowed, ")"); + if ((!lower_allowed && zdest < position.z) || zdest == position.z) return; + blocking_move_z(zdest, TERN(HAS_BED_PROBE, z_probe_fast_mm_s, homing_feedrate(Z_AXIS))); } - void do_z_clearance_by(const float zclear) { + void Motion::do_z_clearance_by(const float zclear) { if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("do_z_clearance_by(", zclear, ")"); - do_z_clearance(current_position.z + zclear, false); + do_z_clearance(position.z + zclear, false); } /** * Move Z to Z_POST_CLEARANCE, * The axis is allowed to move down. */ - void do_move_after_z_homing() { + void Motion::do_move_after_z_homing() { DEBUG_SECTION(mzah, "do_move_after_z_homing", DEBUGGING(LEVELING)); #ifdef Z_POST_CLEARANCE do_z_clearance( @@ -1089,77 +1084,91 @@ void do_blocking_move_to(const xyze_pos_t &raw, const feedRate_t fr_mm_s/*=0.0f* probe.move_z_after_probing(); #endif } + + #if ALL(DWIN_LCD_PROUI, INDIVIDUAL_AXIS_HOMING_SUBMENU, MESH_BED_LEVELING) + #include "../lcd/e3v2/proui/dwin.h" // for Z_POST_CLEARANCE + #endif + #ifndef Z_POST_CLEARANCE // May be set by proui/dwin.h :-P + #ifdef Z_AFTER_HOMING + #define Z_POST_CLEARANCE Z_AFTER_HOMING + #else + #define Z_POST_CLEARANCE Z_CLEARANCE_FOR_HOMING + #endif + #endif + + void Motion::do_z_post_clearance() { do_z_clearance(Z_POST_CLEARANCE); } + #endif // HAS_Z_AXIS #if HAS_I_AXIS - void do_blocking_move_to_xyz_i(const xyze_pos_t &raw, const float i, const feedRate_t fr_mm_s/*=0.0f*/) { - do_blocking_move_to( + void Motion::blocking_move_xyz_i(const xyze_pos_t &raw, const float i, const feedRate_t fr_mm_s/*=0.0f*/) { + blocking_move( NUM_AXIS_LIST_(raw.x, raw.y, raw.z, i, raw.j, raw.k, raw.u, raw.v, raw.w) fr_mm_s ); } - void do_blocking_move_to_i(const float ri, const feedRate_t fr_mm_s/*=0.0*/) { - do_blocking_move_to_xyz_i(current_position, ri, fr_mm_s); + void Motion::blocking_move_i(const float ri, const feedRate_t fr_mm_s/*=0.0*/) { + blocking_move_xyz_i(position, ri, fr_mm_s); } #endif #if HAS_J_AXIS - void do_blocking_move_to_xyzi_j(const xyze_pos_t &raw, const float j, const feedRate_t fr_mm_s/*=0.0f*/) { - do_blocking_move_to( + void Motion::blocking_move_xyzi_j(const xyze_pos_t &raw, const float j, const feedRate_t fr_mm_s/*=0.0f*/) { + blocking_move( NUM_AXIS_LIST_(raw.x, raw.y, raw.z, raw.i, j, raw.k, raw.u, raw.v, raw.w) fr_mm_s ); } - void do_blocking_move_to_j(const float rj, const feedRate_t fr_mm_s/*=0.0*/) { - do_blocking_move_to_xyzi_j(current_position, rj, fr_mm_s); + void Motion::blocking_move_j(const float rj, const feedRate_t fr_mm_s/*=0.0*/) { + blocking_move_xyzi_j(position, rj, fr_mm_s); } #endif #if HAS_K_AXIS - void do_blocking_move_to_xyzij_k(const xyze_pos_t &raw, const float k, const feedRate_t fr_mm_s/*=0.0f*/) { - do_blocking_move_to( + void Motion::blocking_move_xyzij_k(const xyze_pos_t &raw, const float k, const feedRate_t fr_mm_s/*=0.0f*/) { + blocking_move( NUM_AXIS_LIST_(raw.x, raw.y, raw.z, raw.i, raw.j, k, raw.u, raw.v, raw.w) fr_mm_s ); } - void do_blocking_move_to_k(const float rk, const feedRate_t fr_mm_s/*=0.0*/) { - do_blocking_move_to_xyzij_k(current_position, rk, fr_mm_s); + void Motion::blocking_move_k(const float rk, const feedRate_t fr_mm_s/*=0.0*/) { + blocking_move_xyzij_k(position, rk, fr_mm_s); } #endif #if HAS_U_AXIS - void do_blocking_move_to_xyzijk_u(const xyze_pos_t &raw, const float u, const feedRate_t fr_mm_s/*=0.0f*/) { - do_blocking_move_to( + void Motion::blocking_move_xyzijk_u(const xyze_pos_t &raw, const float u, const feedRate_t fr_mm_s/*=0.0f*/) { + blocking_move( NUM_AXIS_LIST_(raw.x, raw.y, raw.z, raw.i, raw.j, raw.k, u, raw.v, raw.w) fr_mm_s ); } - void do_blocking_move_to_u(const float ru, const feedRate_t fr_mm_s/*=0.0*/) { - do_blocking_move_to_xyzijk_u(current_position, ru, fr_mm_s); + void Motion::blocking_move_u(const float ru, const feedRate_t fr_mm_s/*=0.0*/) { + blocking_move_xyzijk_u(position, ru, fr_mm_s); } #endif #if HAS_V_AXIS - void do_blocking_move_to_xyzijku_v(const xyze_pos_t &raw, const float v, const feedRate_t fr_mm_s/*=0.0f*/) { - do_blocking_move_to( + void Motion::blocking_move_xyzijku_v(const xyze_pos_t &raw, const float v, const feedRate_t fr_mm_s/*=0.0f*/) { + blocking_move( NUM_AXIS_LIST_(raw.x, raw.y, raw.z, raw.i, raw.j, raw.k, raw.u, v, raw.w) fr_mm_s ); } - void do_blocking_move_to_v(const float rv, const feedRate_t fr_mm_s/*=0.0*/) { - do_blocking_move_to_xyzijku_v(current_position, rv, fr_mm_s); + void Motion::blocking_move_v(const float rv, const feedRate_t fr_mm_s/*=0.0*/) { + blocking_move_xyzijku_v(position, rv, fr_mm_s); } #endif #if HAS_W_AXIS - void do_blocking_move_to_xyzijkuv_w(const xyze_pos_t &raw, const float w, const feedRate_t fr_mm_s/*=0.0f*/) { - do_blocking_move_to( + void Motion::blocking_move_xyzijkuv_w(const xyze_pos_t &raw, const float w, const feedRate_t fr_mm_s/*=0.0f*/) { + blocking_move( NUM_AXIS_LIST_(raw.x, raw.y, raw.z, raw.i, raw.j, raw.k, raw.u, raw.v, w) fr_mm_s ); } - void do_blocking_move_to_w(const float rw, const feedRate_t fr_mm_s/*=0.0*/) { - do_blocking_move_to_xyzijkuv_w(current_position, rw, fr_mm_s); + void Motion::blocking_move_w(const float rw, const feedRate_t fr_mm_s/*=0.0*/) { + blocking_move_xyzijkuv_w(position, rw, fr_mm_s); } #endif @@ -1169,13 +1178,13 @@ void do_blocking_move_to(const xyze_pos_t &raw, const feedRate_t fr_mm_s/*=0.0f* // static float saved_feedrate_mm_s; static int16_t saved_feedrate_percentage; -void remember_feedrate_scaling_off() { +void Motion::remember_feedrate_scaling_off() { if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("remember_feedrate_scaling_off: fr=", feedrate_mm_s, " ", feedrate_percentage, "%"); saved_feedrate_mm_s = feedrate_mm_s; saved_feedrate_percentage = feedrate_percentage; feedrate_percentage = 100; } -void restore_feedrate_and_scaling() { +void Motion::restore_feedrate_and_scaling() { feedrate_mm_s = saved_feedrate_mm_s; feedrate_percentage = saved_feedrate_percentage; if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("restore_feedrate_and_scaling: fr=", feedrate_mm_s, " ", feedrate_percentage, "%"); @@ -1186,7 +1195,7 @@ void restore_feedrate_and_scaling() { // Software Endstops are based on the configured limits. #define _AMIN(A) A##_MIN_POS #define _AMAX(A) A##_MAX_POS - soft_endstops_t soft_endstop = { + Motion::soft_endstops_t Motion::soft_endstop = { true, false, { MAPLIST(_AMIN, MAIN_AXIS_NAMES) }, { MAPLIST(_AMAX, MAIN_AXIS_NAMES) }, @@ -1201,7 +1210,7 @@ void restore_feedrate_and_scaling() { * the software endstop positions must be refreshed to remain * at the same positions relative to the machine. */ - void update_software_endstops(const AxisEnum axis + void Motion::update_software_endstops(const AxisEnum axis OPTARG(HAS_HOTEND_OFFSET, const uint8_t old_tool_index/*=0*/, const uint8_t new_tool_index/*=0*/) ) { @@ -1255,7 +1264,7 @@ void restore_feedrate_and_scaling() { // retain the same physical limit when other tools are selected. if (new_tool_index == old_tool_index || axis == Z_AXIS) { // The Z axis is "special" and shouldn't be modified - const float offs = (axis == Z_AXIS) ? 0 : hotend_offset[active_extruder][axis]; + const float offs = (axis == Z_AXIS) ? 0 : hotend_offset[extruder][axis]; soft_endstop.min[axis] = base_min_pos(axis) + offs; soft_endstop.max[axis] = base_max_pos(axis) + offs; } @@ -1282,7 +1291,7 @@ void restore_feedrate_and_scaling() { * For DELTA/SCARA the XY constraint is based on the smallest * radius within the set software endstops. */ - void apply_motion_limits(xyz_pos_t &target) { + void Motion::apply_limits(xyz_pos_t &target) { //SERIAL_ECHOLNPGM("Motion limits in: ", target.x, ", ", target.y, ", ", target.z); //SERIAL_EOL(); @@ -1294,7 +1303,7 @@ void restore_feedrate_and_scaling() { #if ALL(HAS_HOTEND_OFFSET, DELTA) // The effector center position will be the target minus the hotend offset. - const xy_pos_t offs = hotend_offset[active_extruder]; + const xy_pos_t offs = hotend_offset[extruder]; #elif ENABLED(POLARGRAPH) // POLARGRAPH uses draw_area_* below... #elif ENABLED(POLAR) @@ -1419,7 +1428,7 @@ void restore_feedrate_and_scaling() { #else // !HAS_SOFTWARE_ENDSTOPS - soft_endstops_t soft_endstop; + Motion::soft_endstops_t Motion::soft_endstop; #endif // !HAS_SOFTWARE_ENDSTOPS @@ -1435,7 +1444,7 @@ FORCE_INLINE void segment_idle(millis_t &next_idle_ms) { /** * Get distance from displacements along axes and, if required, update move type. */ -float get_move_distance(const xyze_pos_t &diff OPTARG(HAS_ROTATIONAL_AXES, bool &is_cartesian_move)) { +float Motion::get_move_distance(const xyze_pos_t &diff OPTARG(HAS_ROTATIONAL_AXES, bool &is_cartesian_move)) { #if NUM_AXES if (NUM_AXIS_NONE(diff.x, diff.y, 0, diff.i, diff.j, diff.k, diff.u, diff.v, diff.w)) @@ -1556,28 +1565,28 @@ float get_move_distance(const xyze_pos_t &diff OPTARG(HAS_ROTATIONAL_AXES, bool * the bedlevel.line_to_destination_segmented method replaces this. * * For Auto Bed Leveling (Bilinear) with SEGMENT_LEVELED_MOVES - * this is replaced by segmented_line_to_destination below. + * this is replaced by goto_destination_segmented below. */ - inline bool line_to_destination_kinematic() { + bool Motion::goto_destination_kinematic() { // Get the top feedrate of the move in the XY plane - const float scaled_fr_mm_s = MMS_SCALED(feedrate_mm_s); + const float scaled_fr_mm_s = mms_scaled(); - const xyze_float_t diff = destination - current_position; + const xyze_float_t diff = destination - position; //SERIAL_ECHOLNPGM("Destination: ", destination.x, " , ", destination.y, " , ", destination.z, " , ", destination.e); - //SERIAL_ECHOLNPGM("Current pos: ", current_position.x, " , ", current_position.y, " , ", current_position.z, " , ", current_position.e); + //SERIAL_ECHOLNPGM("Current pos: ", position.x, " , ", position.y, " , ", position.z, " , ", position.e); //SERIAL_ECHOLNPGM("Difference : ", diff.x, " , ", diff.y, " , ", diff.z, " , ", diff.e); // For TPARA always split up the move, then skip next code // For DELTA/SCARA if the move is only in Z/E don't split up the move if (TERN0(AXEL_TPARA, !diff.x && !diff.y)) { planner.buffer_line(destination, scaled_fr_mm_s); - return false; // caller will update current_position + return false; // caller will update position } // Fail if attempting move outside printable radius - if (!position_is_reachable(destination)) return true; + if (!can_reach(destination)) return true; // Get the linear distance in XYZ #if HAS_ROTATIONAL_AXES @@ -1632,21 +1641,21 @@ float get_move_distance(const xyze_pos_t &diff OPTARG(HAS_ROTATIONAL_AXES, bool //*/ // Get the current position as starting point - xyze_pos_t raw = current_position; + xyze_pos_t raw = position; // Calculate and execute the segments millis_t next_idle_ms = millis() + 200UL; while (--segments) { segment_idle(next_idle_ms); raw += segment_distance; - if (!planner.buffer_line(raw, scaled_fr_mm_s, active_extruder, hints)) + if (!planner.buffer_line(raw, scaled_fr_mm_s, extruder, hints)) break; } // Ensure last segment arrives at target location. - planner.buffer_line(destination, scaled_fr_mm_s, active_extruder, hints); + planner.buffer_line(destination, scaled_fr_mm_s, extruder, hints); - return false; // caller will update current_position + return false; // caller will update position } #else // !IS_KINEMATIC @@ -1660,9 +1669,9 @@ float get_move_distance(const xyze_pos_t &diff OPTARG(HAS_ROTATIONAL_AXES, bool * small incremental moves. This allows the planner to * apply more detailed bed leveling to the full move. */ - inline void segmented_line_to_destination(const feedRate_t fr_mm_s, const float segment_size=LEVELED_SEGMENT_LENGTH) { + void Motion::goto_destination_segmented(const feedRate_t fr_mm_s, const float segment_size/*=LEVELED_SEGMENT_LENGTH*/) { - const xyze_float_t diff = destination - current_position; + const xyze_float_t diff = destination - position; // If the move is only in Z/E don't split up the move if (!diff.x && !diff.y) { @@ -1701,20 +1710,20 @@ float get_move_distance(const xyze_pos_t &diff OPTARG(HAS_ROTATIONAL_AXES, bool //SERIAL_ECHOLNPGM(" segment_mm=", hints.millimeters); // Get the raw current position as starting point - xyze_pos_t raw = current_position; + xyze_pos_t raw = position; // Calculate and execute the segments millis_t next_idle_ms = millis() + 200UL; while (--segments) { segment_idle(next_idle_ms); raw += segment_distance; - if (!planner.buffer_line(raw, fr_mm_s, active_extruder, hints)) + if (!planner.buffer_line(raw, fr_mm_s, extruder, hints)) break; } // Since segment_distance is only approximate, // the final move must be to the exact destination. - planner.buffer_line(destination, fr_mm_s, active_extruder, hints); + planner.buffer_line(destination, fr_mm_s, extruder, hints); } #endif // SEGMENT_LEVELED_MOVES && !AUTO_BED_LEVELING_UBL @@ -1725,28 +1734,28 @@ float get_move_distance(const xyze_pos_t &diff OPTARG(HAS_ROTATIONAL_AXES, bool * When a mesh-based leveling system is active, moves are segmented * according to the configuration of the leveling system. * - * Return true if 'current_position' was set to 'destination' + * Return true if 'position' was set to 'destination' */ - inline bool line_to_destination_cartesian() { - const float scaled_fr_mm_s = MMS_SCALED(feedrate_mm_s); + bool Motion::goto_destination_cartesian() { + const float scaled_fr_mm_s = mms_scaled(); #if HAS_MESH if (planner.leveling_active && planner.leveling_active_at_z(destination.z)) { #if ENABLED(AUTO_BED_LEVELING_UBL) #if UBL_SEGMENTED return bedlevel.line_to_destination_segmented(scaled_fr_mm_s); #else - bedlevel.line_to_destination_cartesian(scaled_fr_mm_s, active_extruder); // UBL's motion routine needs to know about + bedlevel.line_to_destination_cartesian(scaled_fr_mm_s, extruder); // UBL's motion routine needs to know about return true; // all moves, including Z-only moves. #endif #elif ENABLED(SEGMENT_LEVELED_MOVES) - segmented_line_to_destination(scaled_fr_mm_s); - return false; // caller will update current_position + goto_destination_segmented(scaled_fr_mm_s); + return false; // caller will update position #else /** * For MBL and ABL-BILINEAR only segment moves when X or Y are involved. * Otherwise fall through to do a direct single move. */ - if (xy_pos_t(current_position) != xy_pos_t(destination)) { + if (xy_pos_t(position) != xy_pos_t(destination)) { #if ENABLED(MESH_BED_LEVELING) bedlevel.line_to_destination(scaled_fr_mm_s); #elif ENABLED(AUTO_BED_LEVELING_BILINEAR) @@ -1759,7 +1768,7 @@ float get_move_distance(const xyze_pos_t &diff OPTARG(HAS_ROTATIONAL_AXES, bool #endif // HAS_MESH planner.buffer_line(destination, scaled_fr_mm_s); - return false; // caller will update current_position + return false; // caller will update position } #endif // !IS_KINEMATIC @@ -1801,20 +1810,20 @@ float get_move_distance(const xyze_pos_t &diff OPTARG(HAS_ROTATIONAL_AXES, bool void set_duplication_enabled(const bool dupe, const int8_t tool_index/*=-1*/) { extruder_duplication_enabled = dupe; - if (tool_index >= 0) active_extruder = tool_index; + if (tool_index >= 0) motion.extruder = tool_index; stepper.apply_directions(); } void idex_set_parked(const bool park/*=true*/) { delayed_move_time = 0; active_extruder_parked = park; - if (park) raised_parked_position = current_position; // Remember current raised toolhead position for use by unpark + if (park) raised_parked_position = motion.position; // Remember current raised toolhead position for use by unpark } /** * Prepare a linear move in a dual X axis setup * - * Return true if current_position[] was set to destination[] + * Return true if position[] was set to destination[] */ inline bool dual_x_carriage_unpark() { if (active_extruder_parked) { @@ -1823,13 +1832,13 @@ float get_move_distance(const xyze_pos_t &diff OPTARG(HAS_ROTATIONAL_AXES, bool case DXC_FULL_CONTROL_MODE: break; case DXC_AUTO_PARK_MODE: { - if (current_position.e == destination.e) { + if (motion.position.e == motion.destination.e) { // This is a travel move (with no extrusion) // Skip it, but keep track of the current position // (so it can be used as the start of the next non-travel move) if (delayed_move_time != UINT32_MAX) { - current_position = destination; - NOLESS(raised_parked_position.z, destination.z); + motion.position = motion.destination; + NOLESS(raised_parked_position.z, motion.destination.z); delayed_move_time = millis() + 1000UL; return true; } @@ -1839,13 +1848,13 @@ float get_move_distance(const xyze_pos_t &diff OPTARG(HAS_ROTATIONAL_AXES, bool // const feedRate_t fr_zfast = planner.settings.max_feedrate_mm_s[Z_AXIS]; // 1. Move to the raised parked XYZ. Presumably the tool is already at XY. - xyze_pos_t raised = raised_parked_position; raised.e = current_position.e; + xyze_pos_t raised = raised_parked_position; raised.e = motion.position.e; if (planner.buffer_line(raised, fr_zfast)) { // 2. Move to the current native XY and raised Z. Presumably this is a null move. - xyze_pos_t curpos = current_position; curpos.z = raised_parked_position.z; + xyze_pos_t curpos = motion.position; curpos.z = raised_parked_position.z; if (planner.buffer_line(curpos, PLANNER_XY_FEEDRATE_MM_S)) { // 3. Lower Z back down - line_to_current_position(fr_zfast); + motion.goto_current_position(fr_zfast); } } stepper.apply_directions(); @@ -1856,11 +1865,11 @@ float get_move_distance(const xyze_pos_t &diff OPTARG(HAS_ROTATIONAL_AXES, bool case DXC_MIRRORED_MODE: case DXC_DUPLICATION_MODE: - if (active_extruder == 0) { + if (motion.extruder == 0) { set_duplication_enabled(false); // Clear stale duplication state // Restore planner to parked head (T1) X position - float x0_pos = current_position.x; - xyze_pos_t pos_now = current_position; + float x0_pos = motion.position.x; + xyze_pos_t pos_now = motion.position; pos_now.x = inactive_extruder_x; planner.set_position_mm(pos_now); @@ -1876,7 +1885,7 @@ float get_move_distance(const xyze_pos_t &diff OPTARG(HAS_ROTATIONAL_AXES, bool if (!planner.buffer_line(new_pos, planner.settings.max_feedrate_mm_s[X_AXIS], 1)) break; planner.synchronize(); - sync_plan_position(); // Extra sync for good measure + motion.sync_plan_position(); // Extra sync for good measure set_duplication_enabled(true); // Enable Duplication idex_set_parked(false); // No longer parked if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("set_duplication_enabled(true)\nidex_set_parked(false)"); @@ -1896,25 +1905,25 @@ float get_move_distance(const xyze_pos_t &diff OPTARG(HAS_ROTATIONAL_AXES, bool * This may result in several calls to planner.buffer_line to * do smaller moves for DELTA, SCARA, mesh moves, etc. * - * Make sure current_position.e and destination.e are good + * Make sure position.e and destination.e are good * before calling or cold/lengthy extrusion may get missed. * - * Before exit, current_position is set to destination. + * Before exit, position is set to destination. */ -void prepare_line_to_destination() { - apply_motion_limits(destination); +void Motion::prepare_line_to_destination() { + apply_limits(destination); //SERIAL_ECHOLNPGM(">TPARA Prepare line to destination: ", destination.x , " , ", destination.y, " , ", destination.z, " , " , destination.e); //SERIAL_EOL(); #if ANY(PREVENT_COLD_EXTRUSION, PREVENT_LENGTHY_EXTRUDE) - if (!DEBUGGING(DRYRUN) && destination.e != current_position.e) { - bool ignore_e = thermalManager.tooColdToExtrude(active_extruder); + if (!DEBUGGING(DRYRUN) && destination.e != position.e) { + bool ignore_e = thermalManager.tooColdToExtrude(extruder); if (ignore_e) SERIAL_ECHO_MSG(STR_ERR_COLD_EXTRUDE_STOP); #if ENABLED(PREVENT_LENGTHY_EXTRUDE) - const float e_delta = ABS(destination.e - current_position.e) * planner.e_factor[active_extruder]; + const float e_delta = ABS(destination.e - position.e) * planner.e_factor[extruder]; if (e_delta > (EXTRUDE_MAXLENGTH)) { #if ENABLED(MIXING_EXTRUDER) float collector[MIXING_STEPPERS]; @@ -1934,7 +1943,7 @@ void prepare_line_to_destination() { #endif if (ignore_e) { - current_position.e = destination.e; // Behave as if the E move really took place + position.e = destination.e; // Behave as if the E move really took place planner.set_e_position_mm(destination.e); // Prevent the planner from complaining too } } @@ -1946,25 +1955,29 @@ void prepare_line_to_destination() { if ( #if UBL_SEGMENTED #if IS_KINEMATIC // UBL using Kinematic / Cartesian cases as a workaround for now. - bedlevel.line_to_destination_segmented(MMS_SCALED(feedrate_mm_s)) + bedlevel.line_to_destination_segmented(mms_scaled()) #else - line_to_destination_cartesian() + goto_destination_cartesian() #endif #elif IS_KINEMATIC - line_to_destination_kinematic() + goto_destination_kinematic() #else - line_to_destination_cartesian() + goto_destination_cartesian() #endif ) return; - current_position = destination; + position = destination; } #if HAS_ENDSTOPS + main_axes_bits_t Motion::axes_homed, Motion::axes_trusted; // = 0 +#else + constexpr main_axes_bits_t Motion::axes_homed, Motion::axes_trusted; +#endif - main_axes_bits_t axes_homed, axes_trusted; // = 0 +#if HAS_ENDSTOPS - main_axes_bits_t axes_should_home(main_axes_bits_t axis_bits/*=main_axes_mask*/) { + main_axes_bits_t Motion::axes_should_home(main_axes_bits_t axis_bits/*=main_axes_mask*/) { auto set_should = [](main_axes_bits_t &b, AxisEnum a) { if (TEST(b, a) && TERN(HOME_AFTER_DEACTIVATE, axis_is_trusted, axis_was_homed)(a)) CBI(b, a); @@ -1978,7 +1991,7 @@ void prepare_line_to_destination() { return axis_bits; } - bool homing_needed_error(main_axes_bits_t axis_bits/*=main_axes_mask*/) { + bool Motion::homing_needed_error(main_axes_bits_t axis_bits/*=main_axes_mask*/) { if (!(axis_bits &= axes_should_home(axis_bits))) return false; char all_axes[] = STR_AXES_MAIN, need[NUM_AXES + 1]; @@ -1998,7 +2011,7 @@ void prepare_line_to_destination() { /** * Homing bump feedrate (mm/s) */ - feedRate_t get_homing_bump_feedrate(const AxisEnum axis) { + feedRate_t Motion::get_homing_bump_feedrate(const AxisEnum axis) { #if HOMING_Z_WITH_PROBE if (axis == Z_AXIS) return z_probe_slow_mm_s; #endif @@ -2206,7 +2219,7 @@ void prepare_line_to_destination() { /** * Home an individual linear axis */ - void do_homing_move(const AxisEnum axis, const float distance, const feedRate_t fr_mm_s=0.0, const bool final_approach=true) { + void Motion::do_homing_move(const AxisEnum axis, const float distance, const feedRate_t fr_mm_s/*=0.0*/, const bool final_approach/*=true*/) { DEBUG_SECTION(log_move, "do_homing_move", DEBUGGING(LEVELING)); const feedRate_t home_fr_mm_s = fr_mm_s ?: homing_feedrate(axis); @@ -2222,7 +2235,7 @@ void prepare_line_to_destination() { // Only do some things when moving towards an endstop const int8_t axis_home_dir = TERN0(DUAL_X_CARRIAGE, axis == X_AXIS) - ? TOOL_X_HOME_DIR(active_extruder) : home_dir(axis); + ? TOOL_X_HOME_DIR(extruder) : home_dir(axis); const bool is_home_dir = (axis_home_dir > 0) == (distance > 0); #if ENABLED(SENSORLESS_HOMING) @@ -2239,7 +2252,7 @@ void prepare_line_to_destination() { #if ALL(HAS_HOTEND, WAIT_FOR_HOTEND) // Wait for the hotend to heat back up between probing points - thermalManager.wait_for_hotend_heating(active_extruder); + thermalManager.wait_for_hotend_heating(extruder); #endif TERN_(HAS_QUIET_PROBING, if (final_approach) probe.set_devices_paused_for_probing(true)); @@ -2256,10 +2269,10 @@ void prepare_line_to_destination() { #if ANY(MORGAN_SCARA, MP_SCARA) // Tell the planner the axis is at 0 - current_position[axis] = 0; + position[axis] = 0; sync_plan_position(); - current_position[axis] = distance; - line_to_current_position(home_fr_mm_s); + position[axis] = distance; + goto_current_position(home_fr_mm_s); #else // Get the ABC or XYZ positions in mm abce_pos_t target = planner.get_axis_positions_mm(); @@ -2273,7 +2286,7 @@ void prepare_line_to_destination() { // Set delta/cartesian axes directly target[axis] = distance; // The move will be towards the endstop - planner.buffer_segment(target OPTARG(HAS_DIST_MM_ARG, cart_dist_mm), home_fr_mm_s, active_extruder); + planner.buffer_segment(target OPTARG(HAS_DIST_MM_ARG, cart_dist_mm), home_fr_mm_s, extruder); #endif planner.synchronize(); @@ -2301,7 +2314,7 @@ void prepare_line_to_destination() { * that has no endstops. Such machines should always be considered to be in a "known" and * "trusted" position). */ - void set_axis_never_homed(const AxisEnum axis) { + void Motion::set_axis_never_homed(const AxisEnum axis) { if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM(">>> set_axis_never_homed(", C(AXIS_CHAR(axis)), ")"); set_axis_untrusted(axis); @@ -2450,7 +2463,7 @@ void prepare_line_to_destination() { * before updating the current position. */ - void homeaxis(const AxisEnum axis) { + void Motion::homeaxis(const AxisEnum axis) { #if ANY(MORGAN_SCARA, MP_SCARA) // Only Z homing (with probe) is permitted @@ -2464,7 +2477,7 @@ void prepare_line_to_destination() { if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM(">>> homeaxis(", C(AXIS_CHAR(axis)), ")"); const int axis_home_dir = TERN0(DUAL_X_CARRIAGE, axis == X_AXIS) - ? TOOL_X_HOME_DIR(active_extruder) : home_dir(axis); + ? TOOL_X_HOME_DIR(extruder) : home_dir(axis); // // Homing Z with a probe? Raise Z (maybe) and deploy the Z probe. @@ -2755,9 +2768,9 @@ void prepare_line_to_destination() { set_axis_is_at_home(axis); sync_plan_position(); - destination[axis] = current_position[axis]; + destination[axis] = position[axis]; - if (DEBUGGING(LEVELING)) DEBUG_POS("> AFTER set_axis_is_at_home", current_position); + if (DEBUGGING(LEVELING)) DEBUG_POS("> AFTER set_axis_is_at_home", position); #endif @@ -2771,8 +2784,8 @@ void prepare_line_to_destination() { #if DISABLED(DELTA) && defined(HOMING_BACKOFF_POST_MM) const xyz_float_t endstop_backoff = HOMING_BACKOFF_POST_MM; if (endstop_backoff[axis]) { - current_position[axis] -= ABS(endstop_backoff[axis]) * axis_home_dir; - line_to_current_position(TERN_(HOMING_Z_WITH_PROBE, (axis == Z_AXIS) ? z_probe_fast_mm_s :) homing_feedrate(axis)); + position[axis] -= ABS(endstop_backoff[axis]) * axis_home_dir; + goto_current_position(TERN_(HOMING_Z_WITH_PROBE, (axis == Z_AXIS) ? z_probe_fast_mm_s :) homing_feedrate(axis)); #if ENABLED(SENSORLESS_HOMING) planner.synchronize(); @@ -2808,30 +2821,30 @@ void prepare_line_to_destination() { * individual axis has been homed. * * DELTA should wait until all homing is done before setting the XYZ - * current_position to home, because homing is a single operation. + * position to home, because homing is a single operation. * In the case where the axis positions are trusted and previously * homed, DELTA could home to X or Y individually by moving either one * to the center. However, homing Z always homes XY and Z. * * SCARA should wait until all XY homing is done before setting the XY - * current_position to home, because neither X nor Y is at home until + * position to home, because neither X nor Y is at home until * both are at home. Z can however be homed individually. * * TPARA should wait until all YZ homing is done before setting the YZ - * current_position to home, because neither Y nor Z is at home until + * motion.position to home, because neither Y nor Z is at home until * both are at home. X can however be homed individually. * * Callers must sync the planner position after calling this! */ -void set_axis_is_at_home(const AxisEnum axis) { +void Motion::set_axis_is_at_home(const AxisEnum axis) { if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM(">>> set_axis_is_at_home(", C(AXIS_CHAR(axis)), ")"); set_axis_trusted(axis); set_axis_homed(axis); #if ENABLED(DUAL_X_CARRIAGE) - if (axis == X_AXIS && (active_extruder == 1 || dual_x_carriage_mode == DXC_DUPLICATION_MODE)) { - current_position.x = SUM_TERN(HAS_HOME_OFFSET, x_home_pos(active_extruder), home_offset.x); + if (axis == X_AXIS && (extruder == 1 || dual_x_carriage_mode == DXC_DUPLICATION_MODE)) { + position.x = SUM_TERN(HAS_HOME_OFFSET, x_home_pos(extruder), home_offset.x); return; } #endif @@ -2839,9 +2852,9 @@ void set_axis_is_at_home(const AxisEnum axis) { #if ANY(MORGAN_SCARA, AXEL_TPARA) scara_set_axis_is_at_home(axis); #elif ENABLED(DELTA) - current_position[axis] = (axis == Z_AXIS) ? DIFF_TERN(HAS_BED_PROBE, delta_height, probe.offset.z) : base_home_pos(axis); + position[axis] = (axis == Z_AXIS) ? DIFF_TERN(HAS_BED_PROBE, delta_height, probe.offset.z) : base_home_pos(axis); #else - current_position[axis] = SUM_TERN(HAS_HOME_OFFSET, base_home_pos(axis), home_offset[axis]); + position[axis] = SUM_TERN(HAS_HOME_OFFSET, base_home_pos(axis), home_offset[axis]); #endif /** @@ -2852,9 +2865,9 @@ void set_axis_is_at_home(const AxisEnum axis) { #if HOMING_Z_WITH_PROBE #if ENABLED(BD_SENSOR) safe_delay(100); - current_position.z = bdl.read(); + position.z = bdl.read(); #else - current_position.z -= probe.offset.z; + position.z -= probe.offset.z; #endif if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("*** Z homed with PROBE" TERN_(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN, " (Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)") " ***\n> (M851 Z", probe.offset.z, ")"); #else @@ -2873,16 +2886,8 @@ void set_axis_is_at_home(const AxisEnum axis) { #if HAS_HOME_OFFSET DEBUG_ECHOLNPGM("> home_offset[", C(AXIS_CHAR(axis)), "] = ", home_offset[axis]); #endif - DEBUG_POS("", current_position); + DEBUG_POS("", position); DEBUG_ECHOLNPGM("<<< set_axis_is_at_home(", C(AXIS_CHAR(axis)), ")"); } -} -#if HAS_HOME_OFFSET - /** - * Set the home offset for an axis. - */ - void set_home_offset(const AxisEnum axis, const float v) { - home_offset[axis] = v; - } -#endif +} // set_axis_is_at_home() diff --git a/Marlin/src/module/motion.h b/Marlin/src/module/motion.h index 8050e66448..4389821231 100644 --- a/Marlin/src/module/motion.h +++ b/Marlin/src/module/motion.h @@ -30,9 +30,9 @@ #include "../inc/MarlinConfig.h" -#if ALL(DWIN_LCD_PROUI, INDIVIDUAL_AXIS_HOMING_SUBMENU, MESH_BED_LEVELING) - #include "../lcd/dwin/proui/dwin.h" // for Z_POST_CLEARANCE -#endif +//#if ALL(DWIN_LCD_PROUI, INDIVIDUAL_AXIS_HOMING_SUBMENU, MESH_BED_LEVELING) +// #include "../lcd/dwin/proui/dwin.h" // for Z_POST_CLEARANCE +//#endif #if IS_SCARA #include "scara.h" @@ -40,22 +40,487 @@ #include "polar.h" #endif +#if ENABLED(AUTO_REPORT_POSITION) + #include "../libs/autoreport.h" +#endif + // Error margin to work around float imprecision constexpr float fslop = 0.0001; -extern bool relative_mode; - -extern xyze_pos_t current_position, // High-level current tool position - destination; // Destination for a move - -// Scratch space for a cartesian result -extern xyz_pos_t cartes; - -// Until kinematics.cpp is created, declare this here -#if IS_KINEMATIC - extern abce_pos_t delta; +#if ENABLED(REALTIME_REPORTING_COMMANDS) + #define HAS_GRBL_STATE 1 + /** + * Machine states for GRBL or TinyG + */ + enum M_StateEnum : uint8_t { + M_INIT = 0, // 0 machine is initializing + M_RESET, // 1 machine is ready for use + M_ALARM, // 2 machine is in alarm state (soft shut down) + M_IDLE, // 3 program stop or no more blocks (M0, M1, M60) + M_END, // 4 program end via M2, M30 + M_RUNNING, // 5 motion is running + M_HOLD, // 6 motion is holding + M_PROBE, // 7 probe cycle active + M_CYCLING, // 8 machine is running (cycling) + M_HOMING, // 9 machine is homing + M_JOGGING, // 10 machine is jogging + M_ERROR // 11 machine is in hard alarm state (shut down) + }; #endif +/** + * Homing and Trusted Axes + */ +typedef bits_t(NUM_AXES) main_axes_bits_t; +constexpr main_axes_bits_t main_axes_mask = _BV(NUM_AXES) - 1; + +class Motion { +public: + static bool relative_mode; // Relative Mode - G90/G91 + + #if HAS_MULTI_EXTRUDER + static uint8_t extruder; // Selected extruder (tool) - T + #else + static constexpr uint8_t extruder = 0; + #endif + + static xyze_pos_t position, // High-level current tool position + destination; // Destination for a move + + static feedRate_t feedrate_mm_s; // Feedrate for G-moves, set by the most recent G-move + + // Feedrate scaling is applied to all G0/G1, G2/G3, and G5 moves + static int16_t feedrate_percentage; + static feedRate_t mms_scaled(const feedRate_t f=feedrate_mm_s) { + return f * 0.01f * feedrate_percentage; + } + + #if IS_KINEMATIC + static abce_pos_t delta; // Scratch space for a kinematic result + #endif + #if HAS_SCARA_OFFSET + static abc_pos_t scara_home_offset; // A and B angular offsets, Z mm offset + #endif + + #if ENABLED(LCD_SHOW_E_TOTAL) + static float e_move_accumulator; + #endif + + static xyz_pos_t cartes; // Scratch space for a cartesian result + static void get_cartesian_from_steppers(); + static void set_current_from_steppers_for_axis(const AxisEnum axis); + + static void report_position(); + static void report_position_real(); + static void report_position_projected(); + + #if ENABLED(AUTO_REPORT_POSITION) + struct PositionReport { + static void report() { + TERN(AUTO_REPORT_REAL_POSITION, report_position_real(), report_position_projected()); + } + }; + static AutoReporter position_auto_reporter; + #endif + + /** + * Set the planner/stepper positions directly from motion.position with + * no kinematic translation. Used for homing axes and cartesian/core syncing. + */ + static void sync_plan_position(); + #if HAS_EXTRUDERS + static void sync_plan_position_e(); + static void set_and_sync_e(const float epos) { + position.e = epos; + sync_plan_position_e(); + } + #endif + + // + // Homing and Trusted Axes + // + + /** + * Feed rates are often configured with mm/m + * but the planner and stepper like mm/s units. + */ + #if ENABLED(EDITABLE_HOMING_FEEDRATE) + static xyz_feedrate_t homing_feedrate_mm_m; + #else + static constexpr xyz_feedrate_t homing_feedrate_mm_m = HOMING_FEEDRATE_MM_M; + #endif + + FORCE_INLINE static feedRate_t homing_feedrate(const AxisEnum a) { + float v = TERN0(HAS_Z_AXIS, homing_feedrate_mm_m.z); + #if DISABLED(DELTA) + NUM_AXIS_CODE( + if (a == X_AXIS) v = homing_feedrate_mm_m.x, + else if (a == Y_AXIS) v = homing_feedrate_mm_m.y, + else if (a == Z_AXIS) v = homing_feedrate_mm_m.z, + else if (a == I_AXIS) v = homing_feedrate_mm_m.i, + else if (a == J_AXIS) v = homing_feedrate_mm_m.j, + else if (a == K_AXIS) v = homing_feedrate_mm_m.k, + else if (a == U_AXIS) v = homing_feedrate_mm_m.u, + else if (a == V_AXIS) v = homing_feedrate_mm_m.v, + else if (a == W_AXIS) v = homing_feedrate_mm_m.w + ); + #endif + return MMM_TO_MMS(v); + } + + static feedRate_t get_homing_bump_feedrate(const AxisEnum axis); + + #if HAS_HOME_OFFSET + static xyz_pos_t home_offset; + static void set_home_offset(const AxisEnum axis, const float v) { home_offset[axis] = v; } + #endif + + // + // Workspace offsets + // + + #if HAS_WORKSPACE_OFFSET + static xyz_pos_t workspace_offset; + static float native_to_logical(const float f, const AxisEnum a) { return f + workspace_offset[a]; } + static float logical_to_native(const float f, const AxisEnum a) { return f - workspace_offset[a]; } + FORCE_INLINE static void toLogical(xy_pos_t &raw) { raw += workspace_offset; } + FORCE_INLINE static void toLogical(xyz_pos_t &raw) { raw += workspace_offset; } + FORCE_INLINE static void toLogical(xyze_pos_t &raw) { raw += workspace_offset; } + FORCE_INLINE static void toNative(xy_pos_t &raw) { raw -= workspace_offset; } + FORCE_INLINE static void toNative(xyz_pos_t &raw) { raw -= workspace_offset; } + FORCE_INLINE static void toNative(xyze_pos_t &raw) { raw -= workspace_offset; } + #else + static float native_to_logical(const float f, const AxisEnum) { return f; } + static float logical_to_native(const float f, const AxisEnum) { return f; } + FORCE_INLINE static void toLogical(xy_pos_t&) {} + FORCE_INLINE static void toLogical(xyz_pos_t&) {} + FORCE_INLINE static void toLogical(xyze_pos_t&) {} + FORCE_INLINE static void toNative(xy_pos_t&) {} + FORCE_INLINE static void toNative(xyz_pos_t&) {} + FORCE_INLINE static void toNative(xyze_pos_t&) {} + #endif + #if HAS_X_AXIS + static float logical_x(const float f) { return native_to_logical(f, X_AXIS); } + static float raw_x(const float f) { return logical_to_native(f, X_AXIS); } + #endif + #if HAS_Y_AXIS + static float logical_y(const float f) { return native_to_logical(f, Y_AXIS); } + static float raw_y(const float f) { return logical_to_native(f, Y_AXIS); } + #endif + #if HAS_Z_AXIS + static float logical_z(const float f) { return native_to_logical(f, Z_AXIS); } + static float raw_z(const float f) { return logical_to_native(f, Z_AXIS); } + #endif + #if HAS_I_AXIS + static float logical_i(const float f) { return native_to_logical(f, I_AXIS); } + static float raw_i(const float f) { return logical_to_native(f, I_AXIS); } + #endif + #if HAS_J_AXIS + static float logical_j(const float f) { return native_to_logical(f, J_AXIS); } + static float raw_j(const float f) { return logical_to_native(f, J_AXIS); } + #endif + #if HAS_K_AXIS + static float logical_k(const float f) { return native_to_logical(f, K_AXIS); } + static float raw_k(const float f) { return logical_to_native(f, K_AXIS); } + #endif + #if HAS_U_AXIS + static float logical_u(const float f) { return native_to_logical(f, U_AXIS); } + static float raw_u(const float f) { return logical_to_native(f, U_AXIS); } + #endif + #if HAS_V_AXIS + static float logical_v(const float f) { return native_to_logical(f, V_AXIS); } + static float raw_v(const float f) { return logical_to_native(f, V_AXIS); } + #endif + #if HAS_W_AXIS + static float logical_w(const float f) { return native_to_logical(f, W_AXIS); } + static float raw_w(const float f) { return logical_to_native(f, W_AXIS); } + #endif + + #if HAS_Z_AXIS + static bool z_min_trusted; // If Z has been powered on trust that the real Z is >= motion.position.z + #endif + static void set_axis_is_at_home(const AxisEnum axis); + + /** + * axes_homed + * Flags that each linear axis was homed. + * XYZ on cartesian, ABC on delta, ABZ on SCARA. + * + * axes_trusted + * Flags that the position is trusted in each linear axis. Set when homed. + * Cleared whenever a stepper powers off, potentially losing its position. + */ + #if HAS_ENDSTOPS + static main_axes_bits_t axes_homed, axes_trusted; + static void homeaxis(const AxisEnum axis); + static void set_axis_never_homed(const AxisEnum axis); + static main_axes_bits_t axes_should_home(main_axes_bits_t axes_mask=main_axes_mask); + static bool homing_needed_error(main_axes_bits_t axes_mask=main_axes_mask); + #else + static constexpr main_axes_bits_t axes_homed = main_axes_mask, axes_trusted = main_axes_mask; // Zero-endstop machines are always homed and trusted + static void homeaxis(const AxisEnum axis) {} + static void set_axis_never_homed(const AxisEnum) {} + static main_axes_bits_t axes_should_home(main_axes_bits_t=main_axes_mask) { return 0; } + static bool homing_needed_error(main_axes_bits_t=main_axes_mask) { return false; } + #endif + + static void set_axis_unhomed(const AxisEnum axis) { TERN_(HAS_ENDSTOPS, CBI(axes_homed, axis)); } + static void set_axis_untrusted(const AxisEnum axis) { TERN_(HAS_ENDSTOPS, CBI(axes_trusted, axis)); } + static void set_all_unhomed() { TERN_(HAS_ENDSTOPS, axes_homed = axes_trusted = 0); } + static void set_axis_homed(const AxisEnum axis) { TERN_(HAS_ENDSTOPS, SBI(axes_homed, axis)); } + static void set_axis_trusted(const AxisEnum axis) { TERN_(HAS_ENDSTOPS, SBI(axes_trusted, axis)); } + static void set_all_homed() { TERN_(HAS_ENDSTOPS, axes_homed = axes_trusted = main_axes_mask); } + + static bool axis_was_homed(const AxisEnum axis) { return TEST(axes_homed, axis); } + static bool axis_is_trusted(const AxisEnum axis) { return TEST(axes_trusted, axis); } + static bool axis_should_home(const AxisEnum axis) { return axes_should_home(_BV(axis)) != 0; } + static bool no_axes_homed() { return !axes_homed; } + static bool all_axes_homed() { return main_axes_mask == (axes_homed & main_axes_mask); } + static bool homing_needed() { return !all_axes_homed(); } + static bool all_axes_trusted() { return main_axes_mask == (axes_trusted & main_axes_mask); } + + static void home_if_needed(const bool keeplev=false); + + // + // Software Endstops + // + + #if HAS_SOFTWARE_ENDSTOPS + + typedef struct { + bool _enabled, _loose; + bool enabled() { return _enabled && !_loose; } + + xyz_pos_t min, max; + void get_manual_axis_limits(const AxisEnum axis, float &amin, float &amax) { + amin = -100000; amax = 100000; // "No limits" + #if HAS_SOFTWARE_ENDSTOPS + if (enabled()) switch (axis) { + #if HAS_X_AXIS + case X_AXIS: TERN_(MIN_SOFTWARE_ENDSTOP_X, amin = min.x); TERN_(MAX_SOFTWARE_ENDSTOP_X, amax = max.x); break; + #endif + #if HAS_Y_AXIS + case Y_AXIS: TERN_(MIN_SOFTWARE_ENDSTOP_Y, amin = min.y); TERN_(MAX_SOFTWARE_ENDSTOP_Y, amax = max.y); break; + #endif + #if HAS_Z_AXIS + case Z_AXIS: TERN_(MIN_SOFTWARE_ENDSTOP_Z, amin = min.z); TERN_(MAX_SOFTWARE_ENDSTOP_Z, amax = max.z); break; + #endif + #if HAS_I_AXIS + case I_AXIS: TERN_(MIN_SOFTWARE_ENDSTOP_I, amin = min.i); TERN_(MIN_SOFTWARE_ENDSTOP_I, amax = max.i); break; + #endif + #if HAS_J_AXIS + case J_AXIS: TERN_(MIN_SOFTWARE_ENDSTOP_J, amin = min.j); TERN_(MIN_SOFTWARE_ENDSTOP_J, amax = max.j); break; + #endif + #if HAS_K_AXIS + case K_AXIS: TERN_(MIN_SOFTWARE_ENDSTOP_K, amin = min.k); TERN_(MIN_SOFTWARE_ENDSTOP_K, amax = max.k); break; + #endif + #if HAS_U_AXIS + case U_AXIS: TERN_(MIN_SOFTWARE_ENDSTOP_U, amin = min.u); TERN_(MIN_SOFTWARE_ENDSTOP_U, amax = max.u); break; + #endif + #if HAS_V_AXIS + case V_AXIS: TERN_(MIN_SOFTWARE_ENDSTOP_V, amin = min.v); TERN_(MIN_SOFTWARE_ENDSTOP_V, amax = max.v); break; + #endif + #if HAS_W_AXIS + case W_AXIS: TERN_(MIN_SOFTWARE_ENDSTOP_W, amin = min.w); TERN_(MIN_SOFTWARE_ENDSTOP_W, amax = max.w); break; + #endif + default: break; + } + #endif + } + } soft_endstops_t; + + #else // !HAS_SOFTWARE_ENDSTOPS + + typedef struct { + bool enabled() { return false; } + void get_manual_axis_limits(const AxisEnum axis, float &amin, float &amax) { + // No limits + amin = position[axis] - 1000; + amax = position[axis] + 1000; + } + } soft_endstops_t; + + #endif // !HAS_SOFTWARE_ENDSTOPS + + static soft_endstops_t soft_endstop; + + #if HAS_SOFTWARE_ENDSTOPS + static void apply_limits(xyz_pos_t &target); + static void update_software_endstops(const AxisEnum axis + #if HAS_HOTEND_OFFSET + , const uint8_t old_tool_index=0, const uint8_t new_tool_index=0 + #endif + ); + static void set_soft_endstop_loose(const bool loose) { soft_endstop._loose = loose; } + #else + static void apply_limits(xyz_pos_t&) {} + static void update_software_endstops(...) {} + static void set_soft_endstop_loose(...) {} + #endif + + // + // Reachability Tests + // + #if IS_KINEMATIC + + // Return true if the given point is within the printable area + static bool can_reach(const float rx, const float ry, const float inset=0); + + static bool can_reach(const xy_pos_t &pos, const float inset=0) { + return can_reach(pos.x, pos.y, inset); + } + + #else + + // Return true if the given position is within the machine bounds. + static bool can_reach(XY_LIST(const float rx, const float ry)); + static bool can_reach(const xy_pos_t &pos) { + return can_reach(XY_LIST(pos.x, pos.y)); + } + + #endif + + // Hard Stop with potential step loss, used in rare situations + static void quickstop_stepper(); + + // Get the linear distance over multiple axes + static float get_move_distance(const xyze_pos_t &diff OPTARG(HAS_ROTATIONAL_AXES, bool &is_cartesian_move)); + + // Internal and procedural moves should run without feedrate scaling + static void remember_feedrate_scaling_off(); + static void restore_feedrate_and_scaling(); + + /** + * Move the planner to the current position from wherever it last moved + * (or from wherever it has been told it is located). + */ + static void goto_current_position(const feedRate_t fr_mm_s=feedrate_mm_s); + + #if HAS_EXTRUDERS + static void unscaled_e_move(const float length, const feedRate_t fr_mm_s); + #endif + + static void prepare_line_to_destination(); + + static void prepare_internal_move_to_destination(const feedRate_t fr_mm_s=0.0f) { + _goto_destination_internal(fr_mm_s); + } + + #if IS_KINEMATIC + static void prepare_fast_move_to_destination(const feedRate_t scaled_fr_mm_s=mms_scaled()); + + static void prepare_internal_fast_move_to_destination(const feedRate_t fr_mm_s=0.0f) { + _goto_destination_internal(fr_mm_s, true); + } + #endif + + // + // Blocking Move for internal procedures + // + + static void blocking_move(NUM_AXIS_ARGS_(const float) const feedRate_t fr_mm_s=0.0f); + static void blocking_move(const xy_pos_t &raw, const feedRate_t fr_mm_s=0.0f); + static void blocking_move(const xyz_pos_t &raw, const feedRate_t fr_mm_s=0.0f) { blocking_move(NUM_AXIS_ELEM_(raw) fr_mm_s); } + static void blocking_move(const xyze_pos_t &raw, const feedRate_t fr_mm_s=0.0f) { blocking_move(NUM_AXIS_ELEM_(raw) fr_mm_s); } + + #if HAS_X_AXIS + static void blocking_move_x(const float rx, const feedRate_t fr_mm_s=0.0f); + #endif + #if HAS_Y_AXIS + static void blocking_move_y(const float ry, const feedRate_t fr_mm_s=0.0f); + #endif + #if HAS_Z_AXIS + static void blocking_move_z(const float rz, const feedRate_t fr_mm_s=0.0f); + #endif + #if HAS_I_AXIS + static void blocking_move_i(const float ri, const feedRate_t fr_mm_s=0.0f); + static void blocking_move_xyz_i(const xyze_pos_t &raw, const float i, const feedRate_t fr_mm_s=0.0f); + #endif + #if HAS_J_AXIS + static void blocking_move_j(const float rj, const feedRate_t fr_mm_s=0.0f); + static void blocking_move_xyzi_j(const xyze_pos_t &raw, const float j, const feedRate_t fr_mm_s=0.0f); + #endif + #if HAS_K_AXIS + static void blocking_move_k(const float rk, const feedRate_t fr_mm_s=0.0f); + static void blocking_move_xyzij_k(const xyze_pos_t &raw, const float k, const feedRate_t fr_mm_s=0.0f); + #endif + #if HAS_U_AXIS + static void blocking_move_u(const float ru, const feedRate_t fr_mm_s=0.0f); + static void blocking_move_xyzijk_u(const xyze_pos_t &raw, const float u, const feedRate_t fr_mm_s=0.0f); + #endif + #if HAS_V_AXIS + static void blocking_move_v(const float rv, const feedRate_t fr_mm_s=0.0f); + static void blocking_move_xyzijku_v(const xyze_pos_t &raw, const float v, const feedRate_t fr_mm_s=0.0f); + #endif + #if HAS_W_AXIS + static void blocking_move_w(const float rw, const feedRate_t fr_mm_s=0.0f); + static void blocking_move_xyzijkuv_w(const xyze_pos_t &raw, const float w, const feedRate_t fr_mm_s=0.0f); + #endif + + #if HAS_Y_AXIS + static void blocking_move_xy(const float rx, const float ry, const feedRate_t fr_mm_s=0.0f); + static void blocking_move_xy(const xy_pos_t &raw, const feedRate_t fr_mm_s=0.0f); + static void blocking_move_xy(const xyz_pos_t &raw, const feedRate_t fr_mm_s=0.0f) { blocking_move_xy(xy_pos_t(raw), fr_mm_s); } + static void blocking_move_xy(const xyze_pos_t &raw, const feedRate_t fr_mm_s=0.0f) { blocking_move_xy(xy_pos_t(raw), fr_mm_s); } + #endif + + #if HAS_Z_AXIS + static void blocking_move_xy_z(const xy_pos_t &raw, const float z, const feedRate_t fr_mm_s=0.0f); + static void blocking_move_xy_z(const xyz_pos_t &raw, const float z, const feedRate_t fr_mm_s=0.0f) { blocking_move_xy_z(xy_pos_t(raw), z, fr_mm_s); } + static void blocking_move_xy_z(const xyze_pos_t &raw, const float z, const feedRate_t fr_mm_s=0.0f) { blocking_move_xy_z(xy_pos_t(raw), z, fr_mm_s); } + #endif + + static void do_homing_move(const AxisEnum axis, const float distance, const feedRate_t fr_mm_s=0.0, const bool final_approach=true); + + #if HAS_Z_AXIS + static void do_z_clearance(const float zclear, const bool with_probe=true, const bool lower_allowed=false); + static void do_z_clearance_by(const float zclear); + static void do_z_post_clearance(); + static void do_move_after_z_homing(); + #else + static void do_z_clearance(float, bool=true, bool=false) {} + static void do_z_clearance_by(float) {} + #endif + + // + // Realtime Reporting + // + + #if ENABLED(REALTIME_REPORTING_COMMANDS) + static M_StateEnum M_State_grbl; + M_StateEnum grbl_state_for_marlin_state(); + static void report_current_grblstate_moving(); + static void report_position_moving(); + + #if ENABLED(FULL_REPORT_TO_HOST_FEATURE) + static void set_and_report_grblstate(const M_StateEnum state, const bool force=true) { + if (force || M_State_grbl != state) { + M_State_grbl = state; + report_current_grblstate_moving(); + } + } + #endif + + static void quickpause_stepper(); + static void quickresume_stepper(); + #endif // REALTIME_REPORTING_COMMANDS + +private: + #if SECONDARY_AXES + static void secondary_axis_moves(SECONDARY_AXIS_ARGS_LC(const float), const feedRate_t fr_mm_s); + #endif + #if IS_KINEMATIC + static bool goto_destination_kinematic(); + #else + static bool goto_destination_cartesian(); + #if ENABLED(SEGMENT_LEVELED_MOVES) && DISABLED(AUTO_BED_LEVELING_UBL) + static void goto_destination_segmented(const feedRate_t fr_mm_s, const float segment_size=LEVELED_SEGMENT_LENGTH); + #endif + #endif + static void _goto_destination_internal(const feedRate_t fr_mm_s=0.0f OPTARG(IS_KINEMATIC, const bool is_fast=false)); + +}; // class Motion + // Determine XY_PROBE_FEEDRATE_MM_S - The feedrate used between Probe Points #if ABL_USES_GRID // ABL LINEAR and BILINEAR use 'G29 S' value, or MMM_TO_MMS(XY_PROBE_FEEDRATE) @@ -74,58 +539,6 @@ extern xyz_pos_t cartes; constexpr feedRate_t z_probe_fast_mm_s = MMM_TO_MMS(Z_PROBE_FEEDRATE_FAST); #endif -/** - * Feed rates are often configured with mm/m - * but the planner and stepper like mm/s units. - */ -#if ENABLED(EDITABLE_HOMING_FEEDRATE) - extern xyz_feedrate_t homing_feedrate_mm_m; -#else - constexpr xyz_feedrate_t homing_feedrate_mm_m = HOMING_FEEDRATE_MM_M; -#endif - -FORCE_INLINE feedRate_t homing_feedrate(const AxisEnum a) { - float v = TERN0(HAS_Z_AXIS, homing_feedrate_mm_m.z); - #if DISABLED(DELTA) - NUM_AXIS_CODE( - if (a == X_AXIS) v = homing_feedrate_mm_m.x, - else if (a == Y_AXIS) v = homing_feedrate_mm_m.y, - else if (a == Z_AXIS) v = homing_feedrate_mm_m.z, - else if (a == I_AXIS) v = homing_feedrate_mm_m.i, - else if (a == J_AXIS) v = homing_feedrate_mm_m.j, - else if (a == K_AXIS) v = homing_feedrate_mm_m.k, - else if (a == U_AXIS) v = homing_feedrate_mm_m.u, - else if (a == V_AXIS) v = homing_feedrate_mm_m.v, - else if (a == W_AXIS) v = homing_feedrate_mm_m.w - ); - #endif - return MMM_TO_MMS(v); -} - -feedRate_t get_homing_bump_feedrate(const AxisEnum axis); - -/** - * The default feedrate for many moves, set by the most recent move - */ -extern feedRate_t feedrate_mm_s; - -/** - * Feedrate scaling is applied to all G0/G1, G2/G3, and G5 moves - */ -extern int16_t feedrate_percentage; -#define MMS_SCALED(V) ((V) * 0.01f * feedrate_percentage) - -// The active extruder (tool). Set with T command. -#if HAS_MULTI_EXTRUDER - extern uint8_t active_extruder; -#else - constexpr uint8_t active_extruder = 0; -#endif - -#if ENABLED(LCD_SHOW_E_TOTAL) - extern float e_move_accumulator; -#endif - #ifdef __IMXRT1062__ #define DEFS_PROGMEM #else @@ -167,419 +580,13 @@ inline float home_bump_mm(const AxisEnum axis) { constexpr xyz_pos_t hotend_offset[1] = { { TERN_(HAS_X_AXIS, 0) } }; #endif -#if HAS_SOFTWARE_ENDSTOPS - - typedef struct { - bool _enabled, _loose; - bool enabled() { return _enabled && !_loose; } - - xyz_pos_t min, max; - void get_manual_axis_limits(const AxisEnum axis, float &amin, float &amax) { - amin = -100000; amax = 100000; // "No limits" - #if HAS_SOFTWARE_ENDSTOPS - if (enabled()) switch (axis) { - #if HAS_X_AXIS - case X_AXIS: - TERN_(MIN_SOFTWARE_ENDSTOP_X, amin = min.x); - TERN_(MAX_SOFTWARE_ENDSTOP_X, amax = max.x); - break; - #endif - #if HAS_Y_AXIS - case Y_AXIS: - TERN_(MIN_SOFTWARE_ENDSTOP_Y, amin = min.y); - TERN_(MAX_SOFTWARE_ENDSTOP_Y, amax = max.y); - break; - #endif - #if HAS_Z_AXIS - case Z_AXIS: - TERN_(MIN_SOFTWARE_ENDSTOP_Z, amin = min.z); - TERN_(MAX_SOFTWARE_ENDSTOP_Z, amax = max.z); - break; - #endif - #if HAS_I_AXIS - case I_AXIS: - TERN_(MIN_SOFTWARE_ENDSTOP_I, amin = min.i); - TERN_(MIN_SOFTWARE_ENDSTOP_I, amax = max.i); - break; - #endif - #if HAS_J_AXIS - case J_AXIS: - TERN_(MIN_SOFTWARE_ENDSTOP_J, amin = min.j); - TERN_(MIN_SOFTWARE_ENDSTOP_J, amax = max.j); - break; - #endif - #if HAS_K_AXIS - case K_AXIS: - TERN_(MIN_SOFTWARE_ENDSTOP_K, amin = min.k); - TERN_(MIN_SOFTWARE_ENDSTOP_K, amax = max.k); - break; - #endif - #if HAS_U_AXIS - case U_AXIS: - TERN_(MIN_SOFTWARE_ENDSTOP_U, amin = min.u); - TERN_(MIN_SOFTWARE_ENDSTOP_U, amax = max.u); - break; - #endif - #if HAS_V_AXIS - case V_AXIS: - TERN_(MIN_SOFTWARE_ENDSTOP_V, amin = min.v); - TERN_(MIN_SOFTWARE_ENDSTOP_V, amax = max.v); - break; - #endif - #if HAS_W_AXIS - case W_AXIS: - TERN_(MIN_SOFTWARE_ENDSTOP_W, amin = min.w); - TERN_(MIN_SOFTWARE_ENDSTOP_W, amax = max.w); - break; - #endif - default: break; - } - #endif - } - } soft_endstops_t; - - extern soft_endstops_t soft_endstop; - void apply_motion_limits(xyz_pos_t &target); - void update_software_endstops(const AxisEnum axis - #if HAS_HOTEND_OFFSET - , const uint8_t old_tool_index=0, const uint8_t new_tool_index=0 - #endif - ); - #define SET_SOFT_ENDSTOP_LOOSE(loose) (soft_endstop._loose = loose) - -#else // !HAS_SOFTWARE_ENDSTOPS - - typedef struct { - bool enabled() { return false; } - void get_manual_axis_limits(const AxisEnum axis, float &amin, float &amax) { - // No limits - amin = current_position[axis] - 1000; - amax = current_position[axis] + 1000; - } - } soft_endstops_t; - extern soft_endstops_t soft_endstop; - #define apply_motion_limits(V) NOOP - #define update_software_endstops(...) NOOP - #define SET_SOFT_ENDSTOP_LOOSE(V) NOOP - -#endif // !HAS_SOFTWARE_ENDSTOPS - -void report_real_position(); -void report_current_position(); -void report_current_position_projected(); - -#if ENABLED(AUTO_REPORT_POSITION) - #include "../libs/autoreport.h" - struct PositionReport { static void report() { - TERN(AUTO_REPORT_REAL_POSITION, report_real_position(), report_current_position_projected()); - } }; - extern AutoReporter position_auto_reporter; -#endif - -#if ENABLED(REALTIME_REPORTING_COMMANDS) - #define HAS_GRBL_STATE 1 - /** - * Machine states for GRBL or TinyG - */ - enum M_StateEnum : uint8_t { - M_INIT = 0, // 0 machine is initializing - M_RESET, // 1 machine is ready for use - M_ALARM, // 2 machine is in alarm state (soft shut down) - M_IDLE, // 3 program stop or no more blocks (M0, M1, M60) - M_END, // 4 program end via M2, M30 - M_RUNNING, // 5 motion is running - M_HOLD, // 6 motion is holding - M_PROBE, // 7 probe cycle active - M_CYCLING, // 8 machine is running (cycling) - M_HOMING, // 9 machine is homing - M_JOGGING, // 10 machine is jogging - M_ERROR // 11 machine is in hard alarm state (shut down) - }; - extern M_StateEnum M_State_grbl; - M_StateEnum grbl_state_for_marlin_state(); - void report_current_grblstate_moving(); - void report_current_position_moving(); - - #if ENABLED(FULL_REPORT_TO_HOST_FEATURE) - inline void set_and_report_grblstate(const M_StateEnum state, const bool force=true) { - if (force || M_State_grbl != state) { - M_State_grbl = state; - report_current_grblstate_moving(); - } - } - #endif - - void quickpause_stepper(); - void quickresume_stepper(); -#endif // REALTIME_REPORTING_COMMANDS - -float get_move_distance(const xyze_pos_t &diff OPTARG(HAS_ROTATIONAL_AXES, bool &is_cartesian_move)); - -void get_cartesian_from_steppers(); -void set_current_from_steppers_for_axis(const AxisEnum axis); - -void quickstop_stepper(); - -/** - * Set the planner/stepper positions directly from current_position with - * no kinematic translation. Used for homing axes and cartesian/core syncing. - */ -void sync_plan_position(); - -#if HAS_EXTRUDERS - void sync_plan_position_e(); -#endif - -/** - * Move the planner to the current position from wherever it last moved - * (or from wherever it has been told it is located). - */ -void line_to_current_position(const feedRate_t fr_mm_s=feedrate_mm_s); - -#if HAS_EXTRUDERS - void unscaled_e_move(const float length, const feedRate_t fr_mm_s); -#endif - -void prepare_line_to_destination(); - -void _internal_move_to_destination(const feedRate_t fr_mm_s=0.0f OPTARG(IS_KINEMATIC, const bool is_fast=false)); - -inline void prepare_internal_move_to_destination(const feedRate_t fr_mm_s=0.0f) { - _internal_move_to_destination(fr_mm_s); -} - -#if IS_KINEMATIC - void prepare_fast_move_to_destination(const feedRate_t scaled_fr_mm_s=MMS_SCALED(feedrate_mm_s)); - - inline void prepare_internal_fast_move_to_destination(const feedRate_t fr_mm_s=0.0f) { - _internal_move_to_destination(fr_mm_s, true); - } -#endif - -/** - * Blocking movement and shorthand functions - */ -void do_blocking_move_to(NUM_AXIS_ARGS_(const float) const feedRate_t fr_mm_s=0.0f); -void do_blocking_move_to(const xy_pos_t &raw, const feedRate_t fr_mm_s=0.0f); -void do_blocking_move_to(const xyz_pos_t &raw, const feedRate_t fr_mm_s=0.0f); -void do_blocking_move_to(const xyze_pos_t &raw, const feedRate_t fr_mm_s=0.0f); - -#if HAS_X_AXIS - void do_blocking_move_to_x(const float rx, const feedRate_t fr_mm_s=0.0f); -#endif -#if HAS_Y_AXIS - void do_blocking_move_to_y(const float ry, const feedRate_t fr_mm_s=0.0f); -#endif -#if HAS_Z_AXIS - void do_blocking_move_to_z(const float rz, const feedRate_t fr_mm_s=0.0f); -#endif -#if HAS_I_AXIS - void do_blocking_move_to_i(const float ri, const feedRate_t fr_mm_s=0.0f); - void do_blocking_move_to_xyz_i(const xyze_pos_t &raw, const float i, const feedRate_t fr_mm_s=0.0f); -#endif -#if HAS_J_AXIS - void do_blocking_move_to_j(const float rj, const feedRate_t fr_mm_s=0.0f); - void do_blocking_move_to_xyzi_j(const xyze_pos_t &raw, const float j, const feedRate_t fr_mm_s=0.0f); -#endif -#if HAS_K_AXIS - void do_blocking_move_to_k(const float rk, const feedRate_t fr_mm_s=0.0f); - void do_blocking_move_to_xyzij_k(const xyze_pos_t &raw, const float k, const feedRate_t fr_mm_s=0.0f); -#endif -#if HAS_U_AXIS - void do_blocking_move_to_u(const float ru, const feedRate_t fr_mm_s=0.0f); - void do_blocking_move_to_xyzijk_u(const xyze_pos_t &raw, const float u, const feedRate_t fr_mm_s=0.0f); -#endif -#if HAS_V_AXIS - void do_blocking_move_to_v(const float rv, const feedRate_t fr_mm_s=0.0f); - void do_blocking_move_to_xyzijku_v(const xyze_pos_t &raw, const float v, const feedRate_t fr_mm_s=0.0f); -#endif -#if HAS_W_AXIS - void do_blocking_move_to_w(const float rw, const feedRate_t fr_mm_s=0.0f); - void do_blocking_move_to_xyzijkuv_w(const xyze_pos_t &raw, const float w, const feedRate_t fr_mm_s=0.0f); -#endif - -#if HAS_Y_AXIS - void do_blocking_move_to_xy(const float rx, const float ry, const feedRate_t fr_mm_s=0.0f); - void do_blocking_move_to_xy(const xy_pos_t &raw, const feedRate_t fr_mm_s=0.0f); - FORCE_INLINE void do_blocking_move_to_xy(const xyz_pos_t &raw, const feedRate_t fr_mm_s=0.0f) { do_blocking_move_to_xy(xy_pos_t(raw), fr_mm_s); } - FORCE_INLINE void do_blocking_move_to_xy(const xyze_pos_t &raw, const feedRate_t fr_mm_s=0.0f) { do_blocking_move_to_xy(xy_pos_t(raw), fr_mm_s); } -#endif - -#if HAS_Z_AXIS - void do_blocking_move_to_xy_z(const xy_pos_t &raw, const float z, const feedRate_t fr_mm_s=0.0f); - FORCE_INLINE void do_blocking_move_to_xy_z(const xyz_pos_t &raw, const float z, const feedRate_t fr_mm_s=0.0f) { do_blocking_move_to_xy_z(xy_pos_t(raw), z, fr_mm_s); } - FORCE_INLINE void do_blocking_move_to_xy_z(const xyze_pos_t &raw, const float z, const feedRate_t fr_mm_s=0.0f) { do_blocking_move_to_xy_z(xy_pos_t(raw), z, fr_mm_s); } -#endif - -void remember_feedrate_scaling_off(); -void restore_feedrate_and_scaling(); - -#if HAS_Z_AXIS - #ifndef Z_POST_CLEARANCE // May be set by proui/dwin.h :-P - #ifdef Z_AFTER_HOMING - #define Z_POST_CLEARANCE Z_AFTER_HOMING - #else - #define Z_POST_CLEARANCE Z_CLEARANCE_FOR_HOMING - #endif - #endif - void do_z_clearance(const float zclear, const bool with_probe=true, const bool lower_allowed=false); - void do_z_clearance_by(const float zclear); - void do_move_after_z_homing(); - inline void do_z_post_clearance() { do_z_clearance(Z_POST_CLEARANCE); } -#else - inline void do_z_clearance(float, bool=true, bool=false) {} - inline void do_z_clearance_by(float) {} -#endif - -/** - * Homing and Trusted Axes - */ -typedef bits_t(NUM_AXES) main_axes_bits_t; -constexpr main_axes_bits_t main_axes_mask = _BV(NUM_AXES) - 1; - -#if HAS_Z_AXIS - extern bool z_min_trusted; // If Z has been powered on trust that the real Z is >= current_position.z -#endif - -void set_axis_is_at_home(const AxisEnum axis); - -#if HAS_ENDSTOPS - /** - * axes_homed - * Flags that each linear axis was homed. - * XYZ on cartesian, ABC on delta, ABZ on SCARA. - * - * axes_trusted - * Flags that the position is trusted in each linear axis. Set when homed. - * Cleared whenever a stepper powers off, potentially losing its position. - */ - extern main_axes_bits_t axes_homed, axes_trusted; - void homeaxis(const AxisEnum axis); - void set_axis_never_homed(const AxisEnum axis); - main_axes_bits_t axes_should_home(main_axes_bits_t axes_mask=main_axes_mask); - bool homing_needed_error(main_axes_bits_t axes_mask=main_axes_mask); -#else - constexpr main_axes_bits_t axes_homed = main_axes_mask, axes_trusted = main_axes_mask; // Zero-endstop machines are always homed and trusted - inline void homeaxis(const AxisEnum axis) {} - inline void set_axis_never_homed(const AxisEnum) {} - inline main_axes_bits_t axes_should_home(main_axes_bits_t=main_axes_mask) { return 0; } - inline bool homing_needed_error(main_axes_bits_t=main_axes_mask) { return false; } -#endif - -inline void set_axis_unhomed(const AxisEnum axis) { TERN_(HAS_ENDSTOPS, CBI(axes_homed, axis)); } -inline void set_axis_untrusted(const AxisEnum axis) { TERN_(HAS_ENDSTOPS, CBI(axes_trusted, axis)); } -inline void set_all_unhomed() { TERN_(HAS_ENDSTOPS, axes_homed = axes_trusted = 0); } -inline void set_axis_homed(const AxisEnum axis) { TERN_(HAS_ENDSTOPS, SBI(axes_homed, axis)); } -inline void set_axis_trusted(const AxisEnum axis) { TERN_(HAS_ENDSTOPS, SBI(axes_trusted, axis)); } -inline void set_all_homed() { TERN_(HAS_ENDSTOPS, axes_homed = axes_trusted = main_axes_mask); } - -inline bool axis_was_homed(const AxisEnum axis) { return TEST(axes_homed, axis); } -inline bool axis_is_trusted(const AxisEnum axis) { return TEST(axes_trusted, axis); } -inline bool axis_should_home(const AxisEnum axis) { return axes_should_home(_BV(axis)) != 0; } -inline bool no_axes_homed() { return !axes_homed; } -inline bool all_axes_homed() { return main_axes_mask == (axes_homed & main_axes_mask); } -inline bool homing_needed() { return !all_axes_homed(); } -inline bool all_axes_trusted() { return main_axes_mask == (axes_trusted & main_axes_mask); } - -void home_if_needed(const bool keeplev=false); - #if ENABLED(NO_MOTION_BEFORE_HOMING) #define MOTION_CONDITIONS (marlin.isRunning() && !homing_needed_error()) #else #define MOTION_CONDITIONS marlin.isRunning() #endif -#define BABYSTEP_ALLOWED() ((ENABLED(BABYSTEP_WITHOUT_HOMING) || all_axes_trusted()) && (ENABLED(BABYSTEP_ALWAYS_AVAILABLE) || marlin.printer_busy())) - -#if HAS_HOME_OFFSET - extern xyz_pos_t home_offset; -#endif - -/** - * Workspace offsets - */ -#if HAS_WORKSPACE_OFFSET - extern xyz_pos_t workspace_offset; - #define NATIVE_TO_LOGICAL(POS, AXIS) ((POS) + workspace_offset[AXIS]) - #define LOGICAL_TO_NATIVE(POS, AXIS) ((POS) - workspace_offset[AXIS]) - FORCE_INLINE void toLogical(xy_pos_t &raw) { raw += workspace_offset; } - FORCE_INLINE void toLogical(xyz_pos_t &raw) { raw += workspace_offset; } - FORCE_INLINE void toLogical(xyze_pos_t &raw) { raw += workspace_offset; } - FORCE_INLINE void toNative(xy_pos_t &raw) { raw -= workspace_offset; } - FORCE_INLINE void toNative(xyz_pos_t &raw) { raw -= workspace_offset; } - FORCE_INLINE void toNative(xyze_pos_t &raw) { raw -= workspace_offset; } -#else - #define NATIVE_TO_LOGICAL(POS, AXIS) (POS) - #define LOGICAL_TO_NATIVE(POS, AXIS) (POS) - FORCE_INLINE void toLogical(xy_pos_t&) {} - FORCE_INLINE void toLogical(xyz_pos_t&) {} - FORCE_INLINE void toLogical(xyze_pos_t&) {} - FORCE_INLINE void toNative(xy_pos_t&) {} - FORCE_INLINE void toNative(xyz_pos_t&) {} - FORCE_INLINE void toNative(xyze_pos_t&) {} -#endif -#if HAS_X_AXIS - #define LOGICAL_X_POSITION(POS) NATIVE_TO_LOGICAL(POS, X_AXIS) - #define RAW_X_POSITION(POS) LOGICAL_TO_NATIVE(POS, X_AXIS) -#endif -#if HAS_Y_AXIS - #define LOGICAL_Y_POSITION(POS) NATIVE_TO_LOGICAL(POS, Y_AXIS) - #define RAW_Y_POSITION(POS) LOGICAL_TO_NATIVE(POS, Y_AXIS) -#endif -#if HAS_Z_AXIS - #define LOGICAL_Z_POSITION(POS) NATIVE_TO_LOGICAL(POS, Z_AXIS) - #define RAW_Z_POSITION(POS) LOGICAL_TO_NATIVE(POS, Z_AXIS) -#endif -#if HAS_I_AXIS - #define LOGICAL_I_POSITION(POS) NATIVE_TO_LOGICAL(POS, I_AXIS) - #define RAW_I_POSITION(POS) LOGICAL_TO_NATIVE(POS, I_AXIS) -#endif -#if HAS_J_AXIS - #define LOGICAL_J_POSITION(POS) NATIVE_TO_LOGICAL(POS, J_AXIS) - #define RAW_J_POSITION(POS) LOGICAL_TO_NATIVE(POS, J_AXIS) -#endif -#if HAS_K_AXIS - #define LOGICAL_K_POSITION(POS) NATIVE_TO_LOGICAL(POS, K_AXIS) - #define RAW_K_POSITION(POS) LOGICAL_TO_NATIVE(POS, K_AXIS) -#endif -#if HAS_U_AXIS - #define LOGICAL_U_POSITION(POS) NATIVE_TO_LOGICAL(POS, U_AXIS) - #define RAW_U_POSITION(POS) LOGICAL_TO_NATIVE(POS, U_AXIS) -#endif -#if HAS_V_AXIS - #define LOGICAL_V_POSITION(POS) NATIVE_TO_LOGICAL(POS, V_AXIS) - #define RAW_V_POSITION(POS) LOGICAL_TO_NATIVE(POS, V_AXIS) -#endif -#if HAS_W_AXIS - #define LOGICAL_W_POSITION(POS) NATIVE_TO_LOGICAL(POS, W_AXIS) - #define RAW_W_POSITION(POS) LOGICAL_TO_NATIVE(POS, W_AXIS) -#endif - -/** - * position_is_reachable family of functions - */ -#if IS_KINEMATIC // (DELTA or SCARA) - - #if HAS_SCARA_OFFSET - extern abc_pos_t scara_home_offset; // A and B angular offsets, Z mm offset - #endif - - // Return true if the given point is within the printable area - bool position_is_reachable(const float rx, const float ry, const float inset=0.0f); - - inline bool position_is_reachable(const xy_pos_t &pos, const float inset=0.0f) { - return position_is_reachable(pos.x, pos.y, inset); - } - -#else - - // Return true if the given position is within the machine bounds. - bool position_is_reachable(XY_LIST(const float rx, const float ry)); - inline bool position_is_reachable(const xy_pos_t &pos) { - return position_is_reachable(XY_LIST(pos.x, pos.y)); - } - -#endif +#define BABYSTEP_ALLOWED() ((ENABLED(BABYSTEP_WITHOUT_HOMING) || motion.all_axes_trusted()) && (ENABLED(BABYSTEP_ALWAYS_AVAILABLE) || marlin.printer_busy())) /** * Duplication mode @@ -631,10 +638,6 @@ void home_if_needed(const bool keeplev=false); #endif -#if HAS_HOME_OFFSET - void set_home_offset(const AxisEnum axis, const float v); -#endif - // // Trinamic Stepper Drivers // @@ -648,3 +651,13 @@ void home_if_needed(const bool keeplev=false); void set_homing_current(const AxisEnum axis); void restore_homing_current(const AxisEnum axis); #endif + +extern Motion motion; + +// External conversion methods (motion.h) +inline void toLogical(xy_pos_t &raw) { motion.toLogical(raw); } +inline void toLogical(xyz_pos_t &raw) { motion.toLogical(raw); } +inline void toLogical(xyze_pos_t &raw) { motion.toLogical(raw); } +inline void toNative(xy_pos_t &lpos) { motion.toNative(lpos); } +inline void toNative(xyz_pos_t &lpos) { motion.toNative(lpos); } +inline void toNative(xyze_pos_t &lpos) { motion.toNative(lpos); } diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp index 89f34e5e1b..ad727ce21f 100644 --- a/Marlin/src/module/planner.cpp +++ b/Marlin/src/module/planner.cpp @@ -1546,12 +1546,12 @@ void Planner::check_axes_activity() { */ void Planner::apply_retract(float &rz, float &e) { rz += fwretract.current_hop; - e -= fwretract.current_retract[active_extruder]; + e -= fwretract.current_retract[motion.extruder]; } void Planner::unapply_retract(float &rz, float &e) { rz -= fwretract.current_hop; - e += fwretract.current_retract[active_extruder]; + e += fwretract.current_retract[motion.extruder]; } #endif @@ -1598,12 +1598,12 @@ void Planner::quick_stop() { // Don't empty buffers or queues const bool did_suspend = stepper.suspend(); if (did_suspend) - TERN_(FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate(M_HOLD)); + TERN_(FULL_REPORT_TO_HOST_FEATURE, motion.set_and_report_grblstate(M_HOLD)); } // Resume if suspended void Planner::quick_resume() { - TERN_(FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate(grbl_state_for_marlin_state())); + TERN_(FULL_REPORT_TO_HOST_FEATURE, motion.set_and_report_grblstate(motion.grbl_state_for_marlin_state())); stepper.wake_up(); } @@ -2017,7 +2017,7 @@ bool Planner::_populate_block( TERN_(HAS_REAL_Z, dist_mm.real.z = dz); TERN_(HAS_EXTRUDERS, dist_mm.e = esteps_float * mm_per_step[E_AXIS_N(extruder)]); - TERN_(LCD_SHOW_E_TOTAL, e_move_accumulator += dist_mm.e); + TERN_(LCD_SHOW_E_TOTAL, motion.e_move_accumulator += dist_mm.e); TERN_(FT_MOTION, block->ext_distance_mm = dist_mm); // Store the distance for all axes in mm for this block @@ -2043,7 +2043,7 @@ bool Planner::_populate_block( dist_mm.u, dist_mm.v, dist_mm.w ); - block->millimeters = get_move_distance(displacement OPTARG(HAS_ROTATIONAL_AXES, cartesian_move)); + block->millimeters = motion.get_move_distance(displacement OPTARG(HAS_ROTATIONAL_AXES, cartesian_move)); } /** @@ -2822,7 +2822,7 @@ void Planner::buffer_sync_block(const BlockFlagBit sync_flag/*=BLOCK_BIT_SYNC_PO * @param abce Target position in mm and/or degrees * @param cart_dist_mm The pre-calculated move lengths for all axes, in mm * @param fr_mm_s (Target) speed of the move - * @param extruder Optional target extruder (otherwise active_extruder) + * @param extruder Optional target extruder (otherwise motion.extruder) * @param hints Optional parameters to aid planner calculations * * @return false if no segment was queued due to cleaning, cold extrusion, full queue, etc. @@ -2830,7 +2830,7 @@ void Planner::buffer_sync_block(const BlockFlagBit sync_flag/*=BLOCK_BIT_SYNC_PO bool Planner::buffer_segment(const abce_pos_t &abce OPTARG(HAS_DIST_MM_ARG, const xyze_float_t &cart_dist_mm) , const feedRate_t fr_mm_s - , const uint8_t extruder/*=active_extruder*/ + , const uint8_t extruder/*=motion.extruder*/ , const PlannerHints &hints/*=PlannerHints()*/ ) { @@ -2951,11 +2951,11 @@ bool Planner::buffer_segment(const abce_pos_t &abce * * @param cart Target position in mm or degrees * @param fr_mm_s (Target) speed of the move (mm/s) - * @param extruder Optional target extruder (otherwise active_extruder) + * @param extruder Optional target extruder (otherwise motion.extruder) * @param hints Optional parameters to aid planner calculations */ bool Planner::buffer_line(const xyze_pos_t &cart, const feedRate_t fr_mm_s - , const uint8_t extruder/*=active_extruder*/ + , const uint8_t extruder/*=motion.extruder*/ , const PlannerHints &hints/*=PlannerHints()*/ ) { xyze_pos_t machine = cart; @@ -2984,7 +2984,7 @@ bool Planner::buffer_line(const xyze_pos_t &cart, const feedRate_t fr_mm_s // Provide known Cartesian length in the hints structure PlannerHints ph = hints; if (!hints.millimeters) - ph.millimeters = get_move_distance(xyze_pos_t(cart_dist_mm) OPTARG(HAS_ROTATIONAL_AXES, ph.cartesian_move)); + ph.millimeters = motion.get_move_distance(xyze_pos_t(cart_dist_mm) OPTARG(HAS_ROTATIONAL_AXES, ph.cartesian_move)); #if DISABLED(FEEDRATE_SCALING) @@ -2995,7 +2995,7 @@ bool Planner::buffer_line(const xyze_pos_t &cart, const feedRate_t fr_mm_s // For SCARA scale the feedrate from mm/s to degrees/s // i.e., Complete the angular vector in the given time. const float duration_recip = hints.inv_duration ?: fr_mm_s / ph.millimeters; - const xyz_pos_t diff = delta - position_float; + const xyz_pos_t diff = motion.delta - position_float; const feedRate_t feedrate = diff.magnitude() * duration_recip; #elif ENABLED(POLAR) @@ -3023,9 +3023,9 @@ bool Planner::buffer_line(const xyze_pos_t &cart, const feedRate_t fr_mm_s * This shouldn't be a problem for cutting/milling operations. */ feedRate_t calculated_feedrate = fr_mm_s; - const xyz_pos_t diff = delta - position_float; + const xyz_pos_t diff = motion.delta - position_float; if (!NEAR_ZERO(diff.b)) { - if (delta.a <= POLAR_FAST_RADIUS) + if (motion.delta.a <= POLAR_FAST_RADIUS) calculated_feedrate = settings.max_feedrate_mm_s[Y_AXIS]; else { // Normalized vector of movement @@ -3034,7 +3034,7 @@ bool Planner::buffer_line(const xyze_pos_t &cart, const feedRate_t fr_mm_s normalizedTheta = 1.0f - (ABS(diffTheta > 90.0f ? 180.0f - diffTheta : diffTheta) / 90.0f); // Normalized position along the radius - const float radiusRatio = (PRINTABLE_RADIUS) / delta.a; + const float radiusRatio = (PRINTABLE_RADIUS) / motion.delta.a; calculated_feedrate += (fr_mm_s * radiusRatio * normalizedTheta); } } @@ -3042,8 +3042,8 @@ bool Planner::buffer_line(const xyze_pos_t &cart, const feedRate_t fr_mm_s #endif // POLAR && FEEDRATE_SCALING - TERN_(HAS_EXTRUDERS, delta.e = machine.e); - if (buffer_segment(delta OPTARG(HAS_DIST_MM_ARG, cart_dist_mm), feedrate, extruder, ph)) { + TERN_(HAS_EXTRUDERS, motion.delta.e = machine.e); + if (buffer_segment(motion.delta OPTARG(HAS_DIST_MM_ARG, cart_dist_mm), feedrate, extruder, ph)) { position_cart = cart; return true; } @@ -3122,11 +3122,11 @@ void Planner::set_machine_position_mm(const abce_pos_t &abce) { // When FT Motion is enabled, call synchronize() here instead of generating a sync block if (TERN0(FT_MOTION, ftMotion.cfg.active)) synchronize(); - TERN_(DISTINCT_E_FACTORS, last_extruder = active_extruder); + TERN_(DISTINCT_E_FACTORS, last_extruder = motion.extruder); TERN_(HAS_POSITION_FLOAT, position_float = abce); position.set( LOGICAL_AXIS_LIST( - LROUND(abce.e * settings.axis_steps_per_mm[E_AXIS_N(active_extruder)]), + LROUND(abce.e * settings.axis_steps_per_mm[E_AXIS_N(motion.extruder)]), LROUND(abce.a * settings.axis_steps_per_mm[A_AXIS]), LROUND(abce.b * settings.axis_steps_per_mm[B_AXIS]), LROUND(abce.c * settings.axis_steps_per_mm[C_AXIS]), @@ -3169,8 +3169,8 @@ void Planner::set_position_mm(const xyze_pos_t &xyze) { #if IS_KINEMATIC position_cart = xyze; inverse_kinematics(machine); - TERN_(HAS_EXTRUDERS, delta.e = machine.e); - set_machine_position_mm(delta); + TERN_(HAS_EXTRUDERS, motion.delta.e = machine.e); + set_machine_position_mm(motion.delta); #else set_machine_position_mm(machine); #endif @@ -3182,11 +3182,11 @@ void Planner::set_position_mm(const xyze_pos_t &xyze) { * Special setter for planner E position (also setting E stepper position). */ void Planner::set_e_position_mm(const float e) { - const uint8_t axis_index = E_AXIS_N(active_extruder); - TERN_(DISTINCT_E_FACTORS, last_extruder = active_extruder); + const uint8_t axis_index = E_AXIS_N(motion.extruder); + TERN_(DISTINCT_E_FACTORS, last_extruder = motion.extruder); // Unapply the current retraction before (immediately) setting the planner position - const float e_new = DIFF_TERN(FWRETRACT, e, fwretract.current_retract[active_extruder]); + const float e_new = DIFF_TERN(FWRETRACT, e, fwretract.current_retract[motion.extruder]); position.e = LROUND(settings.axis_steps_per_mm[axis_index] * e_new); TERN_(HAS_POSITION_FLOAT, position_float.e = e_new); TERN_(IS_KINEMATIC, TERN_(HAS_EXTRUDERS, position_cart.e = e)); @@ -3206,7 +3206,7 @@ void Planner::refresh_acceleration_rates() { uint32_t highest_rate = 1; LOOP_DISTINCT_AXES(i) { max_acceleration_steps_per_s2[i] = settings.max_acceleration_mm_per_s2[i] * settings.axis_steps_per_mm[i]; - if (TERN1(DISTINCT_E_FACTORS, i < E_AXIS || i == E_AXIS_N(active_extruder))) + if (TERN1(DISTINCT_E_FACTORS, i < E_AXIS || i == E_AXIS_N(motion.extruder))) NOLESS(highest_rate, max_acceleration_steps_per_s2[i]); } acceleration_long_cutoff = UINT32_MAX / highest_rate; @@ -3225,7 +3225,7 @@ void Planner::refresh_positioning() { stepper.nle.q30.B = _BV32(30) * (stepper.nle.settings.coeff.B * mm_per_step[E_AXIS_N(0)]); #endif #endif - set_position_mm(current_position); + set_position_mm(motion.position); refresh_acceleration_rates(); } diff --git a/Marlin/src/module/planner.h b/Marlin/src/module/planner.h index 46def85427..a9d4c37afa 100644 --- a/Marlin/src/module/planner.h +++ b/Marlin/src/module/planner.h @@ -580,19 +580,19 @@ class Planner { #if HAS_LIN_ADVANCE_K static float extruder_advance_K[DISTINCT_E]; - static void set_advance_k(const float k, const uint8_t e=active_extruder) { + static void set_advance_k(const float k, const uint8_t e=motion.extruder) { UNUSED(e); extruder_advance_K[E_INDEX_N(e)] = k; TERN_(SMOOTH_LIN_ADVANCE, extruder_advance_K_q27[E_INDEX_N(e)] = k * _BV32(27)); } - static float get_advance_k(const uint8_t e=active_extruder) { + static float get_advance_k(const uint8_t e=motion.extruder) { UNUSED(e); return extruder_advance_K[E_INDEX_N(e)]; } #endif #if ENABLED(SMOOTH_LIN_ADVANCE) - static uint32_t get_advance_k_q27(const uint8_t e=active_extruder) { + static uint32_t get_advance_k_q27(const uint8_t e=motion.extruder) { UNUSED(e); return extruder_advance_K_q27[E_INDEX_N(e)]; } @@ -1003,7 +1003,7 @@ class Planner { * @param abce Target position in mm and/or degrees * @param cart_dist_mm The pre-calculated move lengths for all axes, in mm * @param fr_mm_s (Target) speed of the move - * @param extruder Optional target extruder (otherwise active_extruder) + * @param extruder Optional target extruder (otherwise motion.extruder) * @param hints Optional parameters to aid planner calculations * * @return false if no segment was queued due to cleaning, cold extrusion, full queue, etc... @@ -1011,7 +1011,7 @@ class Planner { static bool buffer_segment(const abce_pos_t &abce OPTARG(HAS_DIST_MM_ARG, const xyze_float_t &cart_dist_mm) , const feedRate_t fr_mm_s - , const uint8_t extruder=active_extruder + , const uint8_t extruder=motion.extruder , const PlannerHints &hints=PlannerHints() ); @@ -1024,13 +1024,13 @@ class Planner { * * @param cart Target position in mm or degrees * @param fr_mm_s (Target) speed of the move (mm/s) - * @param extruder Optional target extruder (otherwise active_extruder) + * @param extruder Optional target extruder (otherwise motion.extruder) * @param hints Optional parameters to aid planner calculations * * @return false if no segment was queued due to cleaning, cold extrusion, full queue, etc... */ static bool buffer_line(const xyze_pos_t &cart, const feedRate_t fr_mm_s - , const uint8_t extruder=active_extruder + , const uint8_t extruder=motion.extruder , const PlannerHints &hints=PlannerHints() ); @@ -1200,7 +1200,7 @@ class Planner { #if IS_KINEMATIC // Allow do_homing_move to access internal functions, such as buffer_segment. - friend void do_homing_move(const AxisEnum, const float, const feedRate_t, const bool); + friend void Motion::do_homing_move(const AxisEnum, const float, const feedRate_t, const bool); #endif #if HAS_JUNCTION_DEVIATION diff --git a/Marlin/src/module/planner_bezier.cpp b/Marlin/src/module/planner_bezier.cpp index bcf92f7e51..4647d095ea 100644 --- a/Marlin/src/module/planner_bezier.cpp +++ b/Marlin/src/module/planner_bezier.cpp @@ -195,7 +195,7 @@ void cubic_b_spline( interp(position.v, target.v, t), // FIXME. Wrong, since t is not linear in the distance. interp(position.w, target.w, t) // FIXME. Wrong, since t is not linear in the distance. ); - apply_motion_limits(new_bez); + motion.apply_limits(new_bez); bez_target = new_bez; #if HAS_LEVELING && !PLANNER_LEVELING @@ -205,7 +205,7 @@ void cubic_b_spline( const xyze_pos_t &pos = bez_target; #endif - if (!planner.buffer_line(pos, scaled_fr_mm_s, active_extruder, hints)) + if (!planner.buffer_line(pos, scaled_fr_mm_s, motion.extruder, hints)) break; } } diff --git a/Marlin/src/module/polar.cpp b/Marlin/src/module/polar.cpp index fb35ae9f58..523c4f9cfd 100644 --- a/Marlin/src/module/polar.cpp +++ b/Marlin/src/module/polar.cpp @@ -58,8 +58,10 @@ void forward_kinematics(const float r, const float theta) { const float absTheta = absoluteAngle(theta); float radius = r; if (polar_center_offset > 0.0) radius = SQRT( ABS( sq(r) - sq(-polar_center_offset) ) ); - cartes.x = cos(RADIANS(absTheta))*radius; - cartes.y = sin(RADIANS(absTheta))*radius; + motion.cartes.set( + cos(RADIANS(absTheta)) * radius, + sin(RADIANS(absTheta)) * radius + ); } void inverse_kinematics(const xyz_pos_t &raw) { @@ -89,7 +91,7 @@ void inverse_kinematics(const xyz_pos_t &raw) { current_polar_theta = theta; - delta.set(r, theta, raw.z); + motion.delta.set(r, theta, raw.z); } void polar_report_positions() { diff --git a/Marlin/src/module/polargraph.cpp b/Marlin/src/module/polargraph.cpp index 10e596efed..7d702ce361 100644 --- a/Marlin/src/module/polargraph.cpp +++ b/Marlin/src/module/polargraph.cpp @@ -42,7 +42,7 @@ xy_pos_t draw_area_min, draw_area_max; void inverse_kinematics(const xyz_pos_t &raw) { const float x1 = raw.x - draw_area_min.x, x2 = draw_area_max.x - raw.x, y = raw.y - draw_area_max.y; - delta.set(HYPOT(x1, y), HYPOT(x2, y) OPTARG(HAS_Z_AXIS, raw.z)); + motion.delta.set(HYPOT(x1, y), HYPOT(x2, y) OPTARG(HAS_Z_AXIS, raw.z)); } #endif // POLARGRAPH diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index 3a8bb2b6c6..2f80a7044f 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -129,7 +129,7 @@ xyz_pos_t Probe::offset; // Initialized by settings.load if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("dock_sled(", stow, ")"); // Dock sled a bit closer to ensure proper capturing - do_blocking_move_to_x(X_MAX_POS + SLED_DOCKING_OFFSET - ((stow) ? 1 : 0)); + motion.blocking_move_x(X_MAX_POS + SLED_DOCKING_OFFSET - ((stow) ? 1 : 0)); #if HAS_SOLENOID_1 && DISABLED(EXT_SOLENOID) WRITE(SOL1_PIN, !stow); // switch solenoid @@ -145,7 +145,7 @@ xyz_pos_t Probe::offset; // Initialized by settings.load WRITE(MAGLEV_TRIGGER_PIN, LOW); } - inline void maglev_idle() { do_z_clearance(10); } + inline void maglev_idle() { motion.do_z_clearance(10); } #elif ENABLED(TOUCH_MI_PROBE) @@ -172,21 +172,21 @@ xyz_pos_t Probe::offset; // Initialized by settings.load ui.goto_screen(prev_screen); #elif defined(TOUCH_MI_DEPLOY_XPOS) && defined(TOUCH_MI_DEPLOY_YPOS) - do_blocking_move_to_xy(TOUCH_MI_DEPLOY_XPOS, TOUCH_MI_DEPLOY_YPOS); + motion.blocking_move_xy(TOUCH_MI_DEPLOY_XPOS, TOUCH_MI_DEPLOY_YPOS); #elif defined(TOUCH_MI_DEPLOY_XPOS) - do_blocking_move_to_x(TOUCH_MI_DEPLOY_XPOS); + motion.blocking_move_x(TOUCH_MI_DEPLOY_XPOS); #elif defined(TOUCH_MI_DEPLOY_YPOS) - do_blocking_move_to_y(TOUCH_MI_DEPLOY_YPOS); + motion.blocking_move_y(TOUCH_MI_DEPLOY_YPOS); #endif } // Move down to the bed to stow the probe // TODO: Handle cases where it would be a bad idea to move down. inline void run_stow_moves() { - const float oldz = current_position.z; + const float oldz = motion.position.z; endstops.enable_z_probe(false); - do_blocking_move_to_z(TOUCH_MI_RETRACT_Z, homing_feedrate(Z_AXIS)); - do_blocking_move_to_z(oldz, homing_feedrate(Z_AXIS)); + motion.blocking_move_z(TOUCH_MI_RETRACT_Z, motion.homing_feedrate(Z_AXIS)); + motion.blocking_move_z(oldz, motion.homing_feedrate(Z_AXIS)); } #elif ENABLED(Z_PROBE_ALLEN_KEY) @@ -197,35 +197,35 @@ xyz_pos_t Probe::offset; // Initialized by settings.load #define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE 0.0f #endif constexpr xyz_pos_t deploy_1 = Z_PROBE_ALLEN_KEY_DEPLOY_1; - do_blocking_move_to(deploy_1, MMM_TO_MMS(Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE)); + motion.blocking_move(deploy_1, MMM_TO_MMS(Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE)); #endif #ifdef Z_PROBE_ALLEN_KEY_DEPLOY_2 #ifndef Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE #define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE 0.0f #endif constexpr xyz_pos_t deploy_2 = Z_PROBE_ALLEN_KEY_DEPLOY_2; - do_blocking_move_to(deploy_2, MMM_TO_MMS(Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE)); + motion.blocking_move(deploy_2, MMM_TO_MMS(Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE)); #endif #ifdef Z_PROBE_ALLEN_KEY_DEPLOY_3 #ifndef Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE #define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE 0.0f #endif constexpr xyz_pos_t deploy_3 = Z_PROBE_ALLEN_KEY_DEPLOY_3; - do_blocking_move_to(deploy_3, MMM_TO_MMS(Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE)); + motion.blocking_move(deploy_3, MMM_TO_MMS(Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE)); #endif #ifdef Z_PROBE_ALLEN_KEY_DEPLOY_4 #ifndef Z_PROBE_ALLEN_KEY_DEPLOY_4_FEEDRATE #define Z_PROBE_ALLEN_KEY_DEPLOY_4_FEEDRATE 0.0f #endif constexpr xyz_pos_t deploy_4 = Z_PROBE_ALLEN_KEY_DEPLOY_4; - do_blocking_move_to(deploy_4, MMM_TO_MMS(Z_PROBE_ALLEN_KEY_DEPLOY_4_FEEDRATE)); + motion.blocking_move(deploy_4, MMM_TO_MMS(Z_PROBE_ALLEN_KEY_DEPLOY_4_FEEDRATE)); #endif #ifdef Z_PROBE_ALLEN_KEY_DEPLOY_5 #ifndef Z_PROBE_ALLEN_KEY_DEPLOY_5_FEEDRATE #define Z_PROBE_ALLEN_KEY_DEPLOY_5_FEEDRATE 0.0f #endif constexpr xyz_pos_t deploy_5 = Z_PROBE_ALLEN_KEY_DEPLOY_5; - do_blocking_move_to(deploy_5, MMM_TO_MMS(Z_PROBE_ALLEN_KEY_DEPLOY_5_FEEDRATE)); + motion.blocking_move(deploy_5, MMM_TO_MMS(Z_PROBE_ALLEN_KEY_DEPLOY_5_FEEDRATE)); #endif } @@ -235,35 +235,35 @@ xyz_pos_t Probe::offset; // Initialized by settings.load #define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE 0.0f #endif constexpr xyz_pos_t stow_1 = Z_PROBE_ALLEN_KEY_STOW_1; - do_blocking_move_to(stow_1, MMM_TO_MMS(Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE)); + motion.blocking_move(stow_1, MMM_TO_MMS(Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE)); #endif #ifdef Z_PROBE_ALLEN_KEY_STOW_2 #ifndef Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE #define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE 0.0f #endif constexpr xyz_pos_t stow_2 = Z_PROBE_ALLEN_KEY_STOW_2; - do_blocking_move_to(stow_2, MMM_TO_MMS(Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE)); + motion.blocking_move(stow_2, MMM_TO_MMS(Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE)); #endif #ifdef Z_PROBE_ALLEN_KEY_STOW_3 #ifndef Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE #define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE 0.0f #endif constexpr xyz_pos_t stow_3 = Z_PROBE_ALLEN_KEY_STOW_3; - do_blocking_move_to(stow_3, MMM_TO_MMS(Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE)); + motion.blocking_move(stow_3, MMM_TO_MMS(Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE)); #endif #ifdef Z_PROBE_ALLEN_KEY_STOW_4 #ifndef Z_PROBE_ALLEN_KEY_STOW_4_FEEDRATE #define Z_PROBE_ALLEN_KEY_STOW_4_FEEDRATE 0.0f #endif constexpr xyz_pos_t stow_4 = Z_PROBE_ALLEN_KEY_STOW_4; - do_blocking_move_to(stow_4, MMM_TO_MMS(Z_PROBE_ALLEN_KEY_STOW_4_FEEDRATE)); + motion.blocking_move(stow_4, MMM_TO_MMS(Z_PROBE_ALLEN_KEY_STOW_4_FEEDRATE)); #endif #ifdef Z_PROBE_ALLEN_KEY_STOW_5 #ifndef Z_PROBE_ALLEN_KEY_STOW_5_FEEDRATE #define Z_PROBE_ALLEN_KEY_STOW_5_FEEDRATE 0.0f #endif constexpr xyz_pos_t stow_5 = Z_PROBE_ALLEN_KEY_STOW_5; - do_blocking_move_to(stow_5, MMM_TO_MMS(Z_PROBE_ALLEN_KEY_STOW_5_FEEDRATE)); + motion.blocking_move(stow_5, MMM_TO_MMS(Z_PROBE_ALLEN_KEY_STOW_5_FEEDRATE)); #endif } @@ -274,30 +274,30 @@ xyz_pos_t Probe::offset; // Initialized by settings.load inline void run_deploy_moves() { #ifdef MAG_MOUNTED_PRE_DEPLOY constexpr mag_probe_move_t pre_deploy = MAG_MOUNTED_PRE_DEPLOY; - do_blocking_move_to(pre_deploy.where, MMM_TO_MMS(pre_deploy.fr_mm_min)); + motion.blocking_move(pre_deploy.where, MMM_TO_MMS(pre_deploy.fr_mm_min)); #endif #if HAS_MAG_MOUNTED_SERVO_PROBE servo[MAG_MOUNTED_PROBE_SERVO_NR].move(servo_angles[MAG_MOUNTED_PROBE_SERVO_NR][0]); #endif #ifdef MAG_MOUNTED_DEPLOY_1 constexpr mag_probe_move_t deploy_1 = MAG_MOUNTED_DEPLOY_1; - do_blocking_move_to(deploy_1.where, MMM_TO_MMS(deploy_1.fr_mm_min)); + motion.blocking_move(deploy_1.where, MMM_TO_MMS(deploy_1.fr_mm_min)); #endif #ifdef MAG_MOUNTED_DEPLOY_2 constexpr mag_probe_move_t deploy_2 = MAG_MOUNTED_DEPLOY_2; - do_blocking_move_to(deploy_2.where, MMM_TO_MMS(deploy_2.fr_mm_min)); + motion.blocking_move(deploy_2.where, MMM_TO_MMS(deploy_2.fr_mm_min)); #endif #ifdef MAG_MOUNTED_DEPLOY_3 constexpr mag_probe_move_t deploy_3 = MAG_MOUNTED_DEPLOY_3; - do_blocking_move_to(deploy_3.where, MMM_TO_MMS(deploy_3.fr_mm_min)); + motion.blocking_move(deploy_3.where, MMM_TO_MMS(deploy_3.fr_mm_min)); #endif #ifdef MAG_MOUNTED_DEPLOY_4 constexpr mag_probe_move_t deploy_4 = MAG_MOUNTED_DEPLOY_4; - do_blocking_move_to(deploy_4.where, MMM_TO_MMS(deploy_4.fr_mm_min)); + motion.blocking_move(deploy_4.where, MMM_TO_MMS(deploy_4.fr_mm_min)); #endif #ifdef MAG_MOUNTED_DEPLOY_5 constexpr mag_probe_move_t deploy_5 = MAG_MOUNTED_DEPLOY_5; - do_blocking_move_to(deploy_5.where, MMM_TO_MMS(deploy_5.fr_mm_min)); + motion.blocking_move(deploy_5.where, MMM_TO_MMS(deploy_5.fr_mm_min)); #endif #if HAS_MAG_MOUNTED_SERVO_PROBE servo[MAG_MOUNTED_PROBE_SERVO_NR].move(servo_angles[MAG_MOUNTED_PROBE_SERVO_NR][1]); @@ -307,30 +307,30 @@ xyz_pos_t Probe::offset; // Initialized by settings.load inline void run_stow_moves() { #ifdef MAG_MOUNTED_PRE_STOW constexpr mag_probe_move_t pre_stow = MAG_MOUNTED_PRE_STOW; - do_blocking_move_to(pre_stow.where, MMM_TO_MMS(pre_stow.fr_mm_min)); + motion.blocking_move(pre_stow.where, MMM_TO_MMS(pre_stow.fr_mm_min)); #endif #if HAS_MAG_MOUNTED_SERVO_PROBE servo[MAG_MOUNTED_PROBE_SERVO_NR].move(servo_angles[MAG_MOUNTED_PROBE_SERVO_NR][0]); #endif #ifdef MAG_MOUNTED_STOW_1 constexpr mag_probe_move_t stow_1 = MAG_MOUNTED_STOW_1; - do_blocking_move_to(stow_1.where, MMM_TO_MMS(stow_1.fr_mm_min)); + motion.blocking_move(stow_1.where, MMM_TO_MMS(stow_1.fr_mm_min)); #endif #ifdef MAG_MOUNTED_STOW_2 constexpr mag_probe_move_t stow_2 = MAG_MOUNTED_STOW_2; - do_blocking_move_to(stow_2.where, MMM_TO_MMS(stow_2.fr_mm_min)); + motion.blocking_move(stow_2.where, MMM_TO_MMS(stow_2.fr_mm_min)); #endif #ifdef MAG_MOUNTED_STOW_3 constexpr mag_probe_move_t stow_3 = MAG_MOUNTED_STOW_3; - do_blocking_move_to(stow_3.where, MMM_TO_MMS(stow_3.fr_mm_min)); + motion.blocking_move(stow_3.where, MMM_TO_MMS(stow_3.fr_mm_min)); #endif #ifdef MAG_MOUNTED_STOW_4 constexpr mag_probe_move_t stow_4 = MAG_MOUNTED_STOW_4; - do_blocking_move_to(stow_4.where, MMM_TO_MMS(stow_4.fr_mm_min)); + motion.blocking_move(stow_4.where, MMM_TO_MMS(stow_4.fr_mm_min)); #endif #ifdef MAG_MOUNTED_STOW_5 constexpr mag_probe_move_t stow_5 = MAG_MOUNTED_STOW_5; - do_blocking_move_to(stow_5.where, MMM_TO_MMS(stow_5.fr_mm_min)); + motion.blocking_move(stow_5.where, MMM_TO_MMS(stow_5.fr_mm_min)); #endif #if HAS_MAG_MOUNTED_SERVO_PROBE servo[MAG_MOUNTED_PROBE_SERVO_NR].move(servo_angles[MAG_MOUNTED_PROBE_SERVO_NR][1]); @@ -356,14 +356,14 @@ xyz_pos_t Probe::offset; // Initialized by settings.load #if ENABLED(PROBING_STEPPERS_OFF) static main_axes_bits_t old_trusted; if (dopause) { - old_trusted = axes_trusted; + old_trusted = motion.axes_trusted; stepper.disable_axis(X_AXIS); stepper.disable_axis(Y_AXIS); } else { if (TEST(old_trusted, X_AXIS)) stepper.enable_axis(X_AXIS); if (TEST(old_trusted, Y_AXIS)) stepper.enable_axis(Y_AXIS); - axes_trusted = old_trusted; + motion.axes_trusted = old_trusted; } #endif if (dopause) safe_delay(_MAX(DELAY_BEFORE_PROBING, 25)); @@ -450,7 +450,7 @@ FORCE_INLINE void probe_specific_action(const bool deploy) { #elif ENABLED(RACK_AND_PINION_PROBE) - do_blocking_move_to_x(deploy ? Z_PROBE_DEPLOY_X : Z_PROBE_RETRACT_X); + motion.blocking_move_x(deploy ? Z_PROBE_DEPLOY_X : Z_PROBE_RETRACT_X); #elif DISABLED(PAUSE_BEFORE_DEPLOY_STOW) @@ -536,7 +536,7 @@ void Probe::probe_error_stop() { */ bool Probe::set_deployed(const bool deploy, const bool no_return/*=false*/) { if (DEBUGGING(LEVELING)) { - DEBUG_POS("Probe::set_deployed", current_position); + DEBUG_POS("Probe::set_deployed", motion.position); DEBUG_ECHOLNPGM("deploy=", deploy, " no_return=", no_return); } @@ -552,19 +552,19 @@ bool Probe::set_deployed(const bool deploy, const bool no_return/*=false*/) { #endif if (z_raise_wanted) { - const float zdest = DIFF_TERN(HAS_HOTEND_OFFSET, Z_CLEARANCE_DEPLOY_PROBE, hotend_offset[active_extruder].z); + const float zdest = DIFF_TERN(HAS_HOTEND_OFFSET, Z_CLEARANCE_DEPLOY_PROBE, hotend_offset[motion.extruder].z); if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Raise Z to ", zdest); - do_z_clearance(zdest); + motion.do_z_clearance(zdest); } #if ANY(Z_PROBE_SLED, Z_PROBE_ALLEN_KEY) - if (homing_needed_error(TERN_(Z_PROBE_SLED, _BV(X_AXIS)))) { + if (motion.homing_needed_error(TERN_(Z_PROBE_SLED, _BV(X_AXIS)))) { probe_error_stop(); return true; } #endif - const xy_pos_t old_xy = current_position; // Remember location before probe deployment + const xy_pos_t old_xy = motion.position; // Remember location before probe deployment #if ENABLED(PROBE_TRIGGERED_WHEN_STOWED_TEST) @@ -594,7 +594,7 @@ bool Probe::set_deployed(const bool deploy, const bool no_return/*=false*/) { // TODO: Consider skipping this for things like M401, G34, etc. TERN_(PREHEAT_BEFORE_PROBING, if (deploy) preheat_for_probing(PROBING_NOZZLE_TEMP, PROBING_BED_TEMP)); - if (!no_return) do_blocking_move_to(old_xy); // Return to the original location unless handled externally + if (!no_return) motion.blocking_move(old_xy); // Return to the original location unless handled externally endstops.enable_z_probe(deploy); @@ -610,7 +610,7 @@ bool Probe::set_deployed(const bool deploy, const bool no_return/*=false*/) { * @return true to indicate an error * * @details Used by run_z_probe to get each bed Z height measurement. - * Sets current_position.z to the height where the probe triggered + * Sets motion.position.z to the height where the probe triggered * (according to the Z stepper count). The float Z is propagated * back to the planner.position to preempt any rounding error. * @@ -624,7 +624,7 @@ bool Probe::probe_down_to_z(const float z, const feedRate_t fr_mm_s) { #endif #if ALL(HAS_TEMP_HOTEND, WAIT_FOR_HOTEND) - thermalManager.wait_for_hotend_heating(active_extruder); + thermalManager.wait_for_hotend_heating(motion.extruder); #endif #if ENABLED(BLTOUCH) @@ -665,7 +665,7 @@ bool Probe::probe_down_to_z(const float z, const feedRate_t fr_mm_s) { TERN_(HAS_QUIET_PROBING, set_devices_paused_for_probing(true)); // Move down until the probe is triggered - do_blocking_move_to_z(z, fr_mm_s); + motion.blocking_move_z(z, fr_mm_s); // Check to see if the probe was triggered const bool probe_triggered = ( @@ -718,10 +718,10 @@ bool Probe::probe_down_to_z(const float z, const feedRate_t fr_mm_s) { endstops.hit_on_purpose(); // Get Z where the steppers were interrupted - set_current_from_steppers_for_axis(Z_AXIS); + motion.set_current_from_steppers_for_axis(Z_AXIS); // Tell the planner where we actually are - sync_plan_position(); + motion.sync_plan_position(); return !probe_triggered; } @@ -767,7 +767,7 @@ bool Probe::probe_down_to_z(const float z, const feedRate_t fr_mm_s) { * @brief Probe at the current XY (possibly more than once) to find the bed Z. * * @details Used by probe_at_point to get the bed Z height at the current XY. - * Leaves current_position.z at the height where the probe triggered. + * Leaves motion.position.z at the height where the probe triggered. * * @param sanity_check Flag to compare the probe result with the expected result * based on the probe Z offset. If the result is too far away @@ -780,7 +780,7 @@ bool Probe::probe_down_to_z(const float z, const feedRate_t fr_mm_s) { float Probe::run_z_probe(const bool sanity_check/*=true*/, const float z_min_point/*=Z_PROBE_LOW_POINT*/, const float z_clearance/*=Z_TWEEN_SAFE_CLEARANCE*/) { DEBUG_SECTION(log_probe, "Probe::run_z_probe", DEBUGGING(LEVELING)); - const float zoffs = SUM_TERN(HAS_HOTEND_OFFSET, -offset.z, hotend_offset[active_extruder].z); + const float zoffs = SUM_TERN(HAS_HOTEND_OFFSET, -offset.z, hotend_offset[motion.extruder].z); auto try_to_probe = [&](PGM_P const plbl, const float z_probe_low_point, const feedRate_t fr_mm_s, const bool scheck) -> bool { constexpr float error_tolerance = Z_PROBE_ERROR_TOLERANCE; @@ -794,7 +794,7 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/, const float z_min_poi // Do a first probe at the fast speed const bool probe_fail = probe_down_to_z(z_probe_low_point, fr_mm_s), // No probe trigger? - early_fail = (scheck && current_position.z > zoffs + error_tolerance); // Probe triggered too high? + early_fail = (scheck && motion.position.z > zoffs + error_tolerance); // Probe triggered too high? #if ENABLED(DEBUG_LEVELING_FEATURE) if (DEBUGGING(LEVELING) && (probe_fail || early_fail)) { DEBUG_ECHOPGM(" Probe fail! - "); @@ -809,7 +809,7 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/, const float z_min_poi // Stop the probe before it goes too low to prevent damage. // For known Z probe below the expected trigger point, otherwise -10mm lower. - const float z_probe_low_point = zoffs + z_min_point -float((!axis_is_trusted(Z_AXIS)) * 10); + const float z_probe_low_point = zoffs + z_min_point -float((!motion.axis_is_trusted(Z_AXIS)) * 10); if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Probe Low Point: ", z_probe_low_point); // Double-probing does a fast probe followed by a slow probe @@ -821,21 +821,21 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/, const float z_min_poi // Do a first probe at the fast speed if (try_to_probe(PSTR("FAST"), z_probe_low_point, z_probe_fast_mm_s, sanity_check)) return NAN; - const float z1 = DIFF_TERN(HAS_DELTA_SENSORLESS_PROBING, current_position.z, largest_sensorless_adj); + const float z1 = DIFF_TERN(HAS_DELTA_SENSORLESS_PROBING, motion.position.z, largest_sensorless_adj); if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("1st Probe Z:", z1); // Raise to give the probe clearance - do_z_clearance(z1 + (Z_CLEARANCE_MULTI_PROBE), false); + motion.do_z_clearance(z1 + (Z_CLEARANCE_MULTI_PROBE), false); #elif Z_PROBE_FEEDRATE_FAST != Z_PROBE_FEEDRATE_SLOW // If the nozzle is well over the travel height then // move down quickly before doing the slow probe const float z = (Z_CLEARANCE_DEPLOY_PROBE) + 5.0f + _MAX(zoffs, 0.0f); - if (current_position.z > z) { + if (motion.position.z > z) { // Probe down fast. If the probe never triggered, raise for probe clearance if (!probe_down_to_z(z, z_probe_fast_mm_s)) - do_z_clearance(z_clearance); + motion.do_z_clearance(z_clearance); } #endif @@ -863,7 +863,7 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/, const float z_min_poi TERN_(MEASURE_BACKLASH_WHEN_PROBING, backlash.measure_with_probe()); - const float z = DIFF_TERN(HAS_DELTA_SENSORLESS_PROBING, current_position.z, largest_sensorless_adj); + const float z = DIFF_TERN(HAS_DELTA_SENSORLESS_PROBING, motion.position.z, largest_sensorless_adj); #if EXTRA_PROBING > 0 // Insert Z measurement into probes[]. Keep it sorted ascending. @@ -886,7 +886,7 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/, const float z_min_poi #if EXTRA_PROBING > 0 < TOTAL_PROBING - 1 #endif - ) do_z_clearance(z + (Z_CLEARANCE_MULTI_PROBE), false); + ) motion.do_z_clearance(z + (Z_CLEARANCE_MULTI_PROBE), false); #endif } @@ -914,7 +914,7 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/, const float z_min_poi #elif TOTAL_PROBING == 2 - const float z2 = DIFF_TERN(HAS_DELTA_SENSORLESS_PROBING, current_position.z, largest_sensorless_adj); + const float z2 = DIFF_TERN(HAS_DELTA_SENSORLESS_PROBING, motion.position.z, largest_sensorless_adj); if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("2nd Probe Z:", z2, " Discrepancy:", z1 - z2); @@ -924,11 +924,11 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/, const float z_min_poi #else // Return the single probe result - const float measured_z = current_position.z; + const float measured_z = motion.position.z; #endif - return DIFF_TERN(HAS_HOTEND_OFFSET, measured_z, hotend_offset[active_extruder].z); + return DIFF_TERN(HAS_HOTEND_OFFSET, measured_z, hotend_offset[motion.extruder].z); } #if DO_TOOLCHANGE_FOR_PROBING @@ -945,9 +945,9 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/, const float z_min_poi static bool old_state = false; if (probing == old_state) return; old_state = probing; - if (probing) old_tool = active_extruder; + if (probing) old_tool = motion.extruder; const uint8_t tool = probing ? PROBING_TOOL : old_tool; - if (tool != active_extruder) + if (tool != motion.extruder) tool_change(tool, ENABLED(PROBE_TOOLCHANGE_NO_MOVE)); } @@ -982,22 +982,22 @@ float Probe::probe_at_point( if (DEBUGGING(LEVELING)) { DEBUG_ECHOLNPGM( - "...(", LOGICAL_X_POSITION(rx), ", ", LOGICAL_Y_POSITION(ry), + "...(", motion.logical_x(rx), ", ", motion.logical_y(ry), ", ", raise_after == PROBE_PT_RAISE ? "raise" : raise_after == PROBE_PT_LAST_STOW ? "stow (last)" : raise_after == PROBE_PT_STOW ? "stow" : "none", ", ", verbose_level, ", ", probe_relative ? "probe" : "nozzle", "_relative)" ); - DEBUG_POS("", current_position); + DEBUG_POS("", motion.position); } // Use a safe Z height for the XY move - const float safe_z = _MAX(current_position.z, z_clearance); + const float safe_z = _MAX(motion.position.z, z_clearance); - // On delta keep Z below clip height or do_blocking_move_to will abort + // On delta keep Z below clip height or motion.blocking_move will abort xyz_pos_t npos = NUM_AXIS_ARRAY( rx, ry, TERN(DELTA, _MIN(delta_clip_start_height, safe_z), safe_z), - current_position.i, current_position.j, current_position.k, - current_position.u, current_position.v, current_position.w + motion.position.i, motion.position.j, motion.position.k, + motion.position.u, motion.position.v, motion.position.w ); if (!can_reach(npos, probe_relative)) { if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Not Reachable"); @@ -1007,12 +1007,12 @@ float Probe::probe_at_point( if (DEBUGGING(LEVELING)) DEBUG_ECHOPGM("Move to probe"); if (probe_relative) { // Get the nozzle position, adjust for active hotend if not 0 if (DEBUGGING(LEVELING)) DEBUG_ECHOPGM("-relative"); - npos -= DIFF_TERN(HAS_HOTEND_OFFSET, offset_xy, xy_pos_t(hotend_offset[active_extruder])); + npos -= DIFF_TERN(HAS_HOTEND_OFFSET, offset_xy, xy_pos_t(hotend_offset[motion.extruder])); } if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM(" point"); // Move the probe to the starting XYZ - do_blocking_move_to(npos, feedRate_t(XY_PROBE_FEEDRATE_MM_S)); + motion.blocking_move(npos, feedRate_t(XY_PROBE_FEEDRATE_MM_S)); // Change Z motor current to homing current TERN_(PROBING_USE_CURRENT_HOME, set_homing_current(Z_AXIS)); @@ -1023,7 +1023,7 @@ float Probe::probe_at_point( safe_delay(4); - measured_z = current_position.z - bdl.read(); // Difference between Z-home-relative Z and sensor reading + measured_z = motion.position.z - bdl.read(); // Difference between Z-home-relative Z and sensor reading #else // !BD_SENSOR @@ -1043,9 +1043,9 @@ float Probe::probe_at_point( default: break; case PROBE_PT_RAISE: if (raise_after_is_rel) - do_z_clearance_by(z_clearance); + motion.do_z_clearance_by(z_clearance); else - do_z_clearance(z_clearance); + motion.do_z_clearance(z_clearance); break; case PROBE_PT_STOW: case PROBE_PT_LAST_STOW: if (stow()) measured_z = NAN; // Error on stow? @@ -1069,7 +1069,7 @@ float Probe::probe_at_point( TERN_(HAS_PTC, ptc.apply_compensation(measured_z)); TERN_(X_AXIS_TWIST_COMPENSATION, measured_z += xatc.compensation(npos + offset_xy)); if (verbose_level > 2 || DEBUGGING(LEVELING)) - SERIAL_ECHOLNPGM("Bed X: ", LOGICAL_X_POSITION(rx), " Y: ", LOGICAL_Y_POSITION(ry), " Z: ", measured_z); + SERIAL_ECHOLNPGM("Bed X: ", motion.logical_x(rx), " y: ", motion.logical_y(ry), " Z: ", measured_z); } #endif // !BD_SENSOR diff --git a/Marlin/src/module/probe.h b/Marlin/src/module/probe.h index d0f0ada34c..521b028592 100644 --- a/Marlin/src/module/probe.h +++ b/Marlin/src/module/probe.h @@ -111,18 +111,18 @@ public: // Note: This won't work on SCARA since the probe offset rotates with the arm. static bool can_reach(const float rx, const float ry, const bool probe_relative=true) { if (probe_relative) { - return position_is_reachable(rx - offset_xy.x, ry - offset_xy.y) // The nozzle can go where it needs to go? - && position_is_reachable(rx, ry, PROBING_MARGIN); // Can the probe also go near there? + return motion.can_reach(rx - offset_xy.x, ry - offset_xy.y) // The nozzle can go where it needs to go? + && motion.can_reach(rx, ry, PROBING_MARGIN); // Can the probe also go near there? } else { - return position_is_reachable(rx, ry) - && position_is_reachable(rx + offset_xy.x, ry + offset_xy.y, PROBING_MARGIN); + return motion.can_reach(rx, ry) + && motion.can_reach(rx + offset_xy.x, ry + offset_xy.y, PROBING_MARGIN); } } #else static bool can_reach(const float rx, const float ry, const bool=true) { - return position_is_reachable(rx, ry) - && position_is_reachable(rx, ry, PROBING_MARGIN); + return motion.can_reach(rx, ry) + && motion.can_reach(rx, ry, PROBING_MARGIN); } #endif @@ -163,14 +163,14 @@ public: */ static bool can_reach(const float rx, const float ry, const bool probe_relative=true) { if (probe_relative) { - return position_is_reachable(rx - offset_xy.x, ry - offset_xy.y) + return motion.can_reach(rx - offset_xy.x, ry - offset_xy.y) && COORDINATE_OKAY(rx, min_x() - fslop, max_x() + fslop) && COORDINATE_OKAY(ry, min_y() - fslop, max_y() + fslop) && obstacle_check(rx, ry) && obstacle_check(rx - offset_xy.x, ry - offset_xy.y); } else { - return position_is_reachable(rx, ry) + return motion.can_reach(rx, ry) && COORDINATE_OKAY(rx + offset_xy.x, min_x() - fslop, max_x() + fslop) && COORDINATE_OKAY(ry + offset_xy.y, min_y() - fslop, max_y() + fslop) && obstacle_check(rx, ry) @@ -211,7 +211,7 @@ public: static bool set_deployed(const bool, const bool=false) { return false; } - static bool can_reach(const float rx, const float ry, const bool=true) { return position_is_reachable(XY_LIST(rx, ry)); } + static bool can_reach(const float rx, const float ry, const bool=true) { return motion.can_reach(XY_LIST(rx, ry)); } #endif // !HAS_BED_PROBE @@ -220,7 +220,7 @@ public: static void move_z_after_probing() { DEBUG_SECTION(mzah, "move_z_after_probing", DEBUGGING(LEVELING)); #ifdef Z_AFTER_PROBING - do_z_clearance(Z_AFTER_PROBING, true, true); // Move down still permitted + motion.do_z_clearance(Z_AFTER_PROBING, true, true); // Move down still permitted #endif } @@ -288,10 +288,10 @@ public: ); } - static float min_x() { return _min_x() TERN_(NOZZLE_AS_PROBE, TERN_(HAS_HOME_OFFSET, - home_offset.x)); } - static float max_x() { return _max_x() TERN_(NOZZLE_AS_PROBE, TERN_(HAS_HOME_OFFSET, - home_offset.x)); } - static float min_y() { return _min_y() TERN_(NOZZLE_AS_PROBE, TERN_(HAS_HOME_OFFSET, - home_offset.y)); } - static float max_y() { return _max_y() TERN_(NOZZLE_AS_PROBE, TERN_(HAS_HOME_OFFSET, - home_offset.y)); } + static float min_x() { return _min_x() TERN_(NOZZLE_AS_PROBE, TERN_(HAS_HOME_OFFSET, - motion.home_offset.x)); } + static float max_x() { return _max_x() TERN_(NOZZLE_AS_PROBE, TERN_(HAS_HOME_OFFSET, - motion.home_offset.x)); } + static float min_y() { return _min_y() TERN_(NOZZLE_AS_PROBE, TERN_(HAS_HOME_OFFSET, - motion.home_offset.y)); } + static float max_y() { return _max_y() TERN_(NOZZLE_AS_PROBE, TERN_(HAS_HOME_OFFSET, - motion.home_offset.y)); } // constexpr helpers used in build-time static_asserts, relying on default probe offsets. class build_time { diff --git a/Marlin/src/module/scara.cpp b/Marlin/src/module/scara.cpp index 7d1f9ce2ca..abe21b87b4 100644 --- a/Marlin/src/module/scara.cpp +++ b/Marlin/src/module/scara.cpp @@ -53,8 +53,8 @@ float segments_per_second = DEFAULT_SEGMENTS_PER_SECOND; b_sin = sin(RADIANS(SUM_TERN(MP_SCARA, b, a))) * L2, b_cos = cos(RADIANS(SUM_TERN(MP_SCARA, b, a))) * L2; - cartes.x = a_cos + b_cos + scara_offset.x; // theta - cartes.y = a_sin + b_sin + scara_offset.y; // phi + motion.cartes.x = a_cos + b_cos + scara_offset.x; // theta + motion.cartes.y = a_sin + b_sin + scara_offset.y; // phi /* DEBUG_ECHOLNPGM( @@ -65,7 +65,7 @@ float segments_per_second = DEFAULT_SEGMENTS_PER_SECOND; " b_sin=", b_sin, " b_cos=", b_cos ); - DEBUG_ECHOLNPGM(" cartes (X,Y) = "(cartes.x, ", ", cartes.y, ")"); + DEBUG_ECHOLNPGM(" cartes (X,Y) = "(motion.cartes.x, ", ", motion.cartes.y, ")"); //*/ } @@ -75,23 +75,23 @@ float segments_per_second = DEFAULT_SEGMENTS_PER_SECOND; void scara_set_axis_is_at_home(const AxisEnum axis) { if (axis == Z_AXIS) - current_position.z = Z_HOME_POS; + motion.position.z = Z_HOME_POS; else { // MORGAN_SCARA uses a Cartesian XY home position xyz_pos_t homeposition = { X_HOME_POS, Y_HOME_POS, Z_HOME_POS }; //DEBUG_ECHOLNPGM_P(PSTR("homeposition X"), homeposition.x, SP_Y_LBL, homeposition.y); - delta = homeposition; - forward_kinematics(delta.a, delta.b); - current_position[axis] = cartes[axis]; + motion.delta = homeposition; + forward_kinematics(motion.delta.a, motion.delta.b); + motion.position[axis] = motion.cartes[axis]; - //DEBUG_ECHOLNPGM_P(PSTR("Cartesian X"), current_position.x, SP_Y_LBL, current_position.y); - update_software_endstops(axis); + //DEBUG_ECHOLNPGM_P(PSTR("Cartesian X"), motion.position.x, SP_Y_LBL, motion.position.y); + motion.update_software_endstops(axis); } } /** - * Morgan SCARA Inverse Kinematics. Results are stored in 'delta'. + * Morgan SCARA Inverse Kinematics. Results are stored in 'motion.delta'. * * See https://reprap.org/forum/read.php?185,283327 * @@ -126,11 +126,11 @@ float segments_per_second = DEFAULT_SEGMENTS_PER_SECOND; // Angle of Arm2 PSI = ATAN2(S2, C2); - delta.set(DEGREES(THETA), DEGREES(SUM_TERN(MORGAN_SCARA, PSI, THETA)), raw.z); + motion.delta.set(DEGREES(THETA), DEGREES(SUM_TERN(MORGAN_SCARA, PSI, THETA)), raw.z); /* DEBUG_POS("SCARA IK", raw); - DEBUG_POS("SCARA IK", delta); + DEBUG_POS("SCARA IK", motion.delta); DEBUG_ECHOLNPGM(" SCARA (x,y) ", sx, ",", sy, " C2=", C2, " S2=", S2, " Theta=", THETA, " Psi=", PSI); //*/ } @@ -139,7 +139,7 @@ float segments_per_second = DEFAULT_SEGMENTS_PER_SECOND; void scara_set_axis_is_at_home(const AxisEnum axis) { if (axis == Z_AXIS) - current_position.z = Z_HOME_POS; + motion.position.z = Z_HOME_POS; else { // MP_SCARA uses arm angles for AB home position #ifndef SCARA_OFFSET_THETA1 @@ -152,11 +152,11 @@ float segments_per_second = DEFAULT_SEGMENTS_PER_SECOND; //DEBUG_ECHOLNPGM("homeposition A:", homeposition.a, " B:", homeposition.b); inverse_kinematics(homeposition); - forward_kinematics(delta.a, delta.b); - current_position[axis] = cartes[axis]; + forward_kinematics(motion.delta.a, motion.delta.b); + motion.position[axis] = motion.cartes[axis]; - //DEBUG_ECHOLNPGM_P(PSTR("Cartesian X"), current_position.x, SP_Y_LBL, current_position.y); - update_software_endstops(axis); + //DEBUG_ECHOLNPGM_P(PSTR("Cartesian X"), motion.position.x, SP_Y_LBL, motion.position.y); + motion.update_software_endstops(axis); } } @@ -166,11 +166,11 @@ float segments_per_second = DEFAULT_SEGMENTS_PER_SECOND; THETA1 = THETA3 + ACOS((sq(c) + sq(L1) - sq(L2)) / (2.0f * c * L1)), THETA2 = THETA3 - ACOS((sq(c) + sq(L2) - sq(L1)) / (2.0f * c * L2)); - delta.set(DEGREES(THETA1), DEGREES(THETA2), raw.z); + motion.delta.set(DEGREES(THETA1), DEGREES(THETA2), raw.z); /* DEBUG_POS("SCARA IK", raw); - DEBUG_POS("SCARA IK", delta); + DEBUG_POS("SCARA IK", motion.delta); SERIAL_ECHOLNPGM(" SCARA (x,y) ", x, ",", y," Theta1=", THETA1, " Theta2=", THETA2); //*/ } @@ -238,32 +238,32 @@ float segments_per_second = DEFAULT_SEGMENTS_PER_SECOND; /** * Set an axis' current position to its home position (after homing). * - * TPARA must wait for YZ homing before setting current_position.Y/Z to home. + * TPARA must wait for YZ homing before setting motion.position.Y/Z to home. * Neither Y nor Z is home until both are at home. */ void scara_set_axis_is_at_home(const AxisEnum axis) { // Home position should be arm end position -+ offsets (+ tool offset - workspace offset), measured at home robot position - xyz_pos_t homeposition = { X_HOME_POS , Y_HOME_POS , Z_HOME_POS }; + xyz_pos_t homeposition = { X_HOME_POS, Y_HOME_POS, Z_HOME_POS }; //SERIAL_ECHOLNPGM("TPARA Set axis is at home: ", C(iaxis_codes[axis])); //SERIAL_XYZ("Home: ", homeposition); - //SERIAL_XYZ("Pos before IK: ", current_position); - //SERIAL_ECHOLNPGM("Angles Before: Theta: ", delta.a, " Phi: ", delta.b, " Psi: ", delta.c); + //SERIAL_XYZ("Pos before IK: ", motion.position); + //SERIAL_ECHOLNPGM("Angles Before: Theta: ", motion.delta.a, " Phi: ", motion.delta.b, " Psi: ", motion.delta.c); inverse_kinematics(homeposition); - //SERIAL_ECHOLNPGM("Angles After IK: Theta: ", delta.a, " Phi: ", delta.b, " Psi: ", delta.c); + //SERIAL_ECHOLNPGM("Angles After IK: Theta: ", motion.delta.a, " Phi: ", motion.delta.b, " Psi: ", motion.delta.c); - forward_kinematics(delta.a, delta.b, delta.c); - current_position[axis] = cartes[axis]; + forward_kinematics(motion.delta.a, motion.delta.b, motion.delta.c); + motion.position[axis] = motion.cartes[axis]; - //SERIAL_XYZ("'current' after FK: ", current_position); - //SERIAL_XYZ("'cartes' after FK: ", cartes); + //SERIAL_XYZ("'position' after FK: ", motion.position); + //SERIAL_XYZ("'cartes' after FK: ", motion.cartes); - update_software_endstops(axis); + motion.update_software_endstops(axis); - //SERIAL_ECHOLNPGM("Final Angles: Theta: ", delta.a, " Phi: ", delta.b, " Psi: ", delta.c); - //SERIAL_XYZ("Final Pos: ", current_position); + //SERIAL_ECHOLNPGM("Final Angles: Theta: ", motion.delta.a, " Phi: ", motion.delta.b, " Psi: ", motion.delta.c); + //SERIAL_XYZ("Final Pos: ", motion.position); //SERIAL_XYZ("Robot Offsets Shoulder:", robot_shoulder_offset); //SERIAL_XYZ("Robot Offsets Tool:", tool_offset); //SERIAL_XYZ("Robot Offsets Workspace:", robot_workspace_offset); @@ -279,27 +279,28 @@ float segments_per_second = DEFAULT_SEGMENTS_PER_SECOND; rho2 = L1_2 + L2_2 - 2.0f * L1 * L2 * cos(RADIANS(w)); const xyz_pos_t calculated_fk = xyz_pos_t({ x, y, SQRT(rho2 - sq(x) - sq(y)) }) ; - cartes = calculated_fk + robot_shoulder_offset + tool_offset - robot_workspace_offset; + motion.cartes = calculated_fk + robot_shoulder_offset + tool_offset - robot_workspace_offset; //SERIAL_ECHOPGM("TPARA FK Theta:", a, " Phi: ", b, " Psi: ", c); //SERIAL_ECHOPGM(" Calculated X':", calculated_fk.x, " Y':", calculated_fk.y, " Z':", calculated_fk.z); - //SERIAL_XYZ(" Workspace", cartes); + //SERIAL_XYZ(" Workspace", motion.cartes); + //SERIAL_EOL(); } // Home YZ together, then X (or all at once). Based on quick_home_xy & home_delta void home_TPARA() { // First Init the current position of all carriages to 0,0,0 - current_position.reset(); - destination.reset(); - sync_plan_position(); + motion.position.reset(); + motion.destination.reset(); + motion.sync_plan_position(); - //SERIAL_ECHOLNPGM("Reset and sync position to the assumed start position of the robot" ); + //SERIAL_ECHOLNPGM("Reset and sync position to the assumed start position of the robot"); // Set the assumed start position of the robot for homing, so it home ZY axis at same time preserving the B and C motor angle constexpr xyz_pos_t init_w_offset = apply_T_W_offset(xyz_pos_t({ L2, 0, 0 })); - current_position.set(init_w_offset.x, init_w_offset.y, init_w_offset.z); - destination.set(init_w_offset.x, init_w_offset.y, init_w_offset.z); - sync_plan_position(); + motion.position.set(init_w_offset.x, init_w_offset.y, init_w_offset.z); + motion.destination.set(init_w_offset.x, init_w_offset.y, init_w_offset.z); + motion.sync_plan_position(); // Disable stealthChop if used. Enable diag1 pin on driver. #if ENABLED(SENSORLESS_HOMING) @@ -320,9 +321,9 @@ float segments_per_second = DEFAULT_SEGMENTS_PER_SECOND; // Move to home, should move Z, Y, then X. Move X to near 0 (to avoid div by zero // and sign/angle stability around 0 for trigonometric functions), Y to 0 and Z to max_length constexpr xyz_pos_t homing_pos_dir = apply_T_W_offset(xyz_pos_t({ 1, 0, Z_MAX_LENGTH })); - current_position.set(homing_pos_dir.x, homing_pos_dir.y, homing_pos_dir.z); + motion.position.set(homing_pos_dir.x, homing_pos_dir.y, homing_pos_dir.z); - line_to_current_position(homing_feedrate(Z_AXIS)); + motion.goto_current_position(motion.homing_feedrate(Z_AXIS)); planner.synchronize(); // Restore the homing current for all motors @@ -339,21 +340,21 @@ float segments_per_second = DEFAULT_SEGMENTS_PER_SECOND; // At least one motor has reached its endstop. // Now re-home each motor separately. - TERN_(HOME_Z_FIRST, homeaxis(C_AXIS)); - homeaxis(TERN(HOME_Y_BEFORE_X, B_AXIS, A_AXIS)); - homeaxis(TERN(HOME_Y_BEFORE_X, A_AXIS, B_AXIS)); - IF_DISABLED(HOME_Z_FIRST, homeaxis(C_AXIS)); + TERN_(HOME_Z_FIRST, motion.homeaxis(C_AXIS)); + motion.homeaxis(TERN(HOME_Y_BEFORE_X, B_AXIS, A_AXIS)); + motion.homeaxis(TERN(HOME_Y_BEFORE_X, A_AXIS, B_AXIS)); + IF_DISABLED(HOME_Z_FIRST, motion.homeaxis(C_AXIS)); - //SERIAL_ECHOLNPGM("current_position After Homeaxis: ", current_position.x, ", ", current_position.y, ", ", current_position.z); + //SERIAL_XYZ("Position after homeaxis: ", motion.position); // Set all carriages to their home positions // Do this here all at once for Delta, because // XYZ isn't ABC. Applying this per-tower would // give the impression that they are the same. - LOOP_NUM_AXES(i) set_axis_is_at_home((AxisEnum)i); + LOOP_NUM_AXES(i) motion.set_axis_is_at_home((AxisEnum)i); //SERIAL_ECHOLNPGM("Sync_plan_position after home"); - sync_plan_position(); + motion.sync_plan_position(); } void inverse_kinematics(const xyz_pos_t &raw) { @@ -386,7 +387,7 @@ float segments_per_second = DEFAULT_SEGMENTS_PER_SECOND; // Elbow motor angle measured from horizontal, same reference frame as shoulder angle (r+) PSI = PHI + GAMMA; - delta.set(DEGREES(THETA), DEGREES(PHI), DEGREES(PSI)); + motion.delta.set(DEGREES(THETA), DEGREES(PHI), DEGREES(PSI)); //SERIAL_ECHOLNPGM(" TPARA IK raw(x,y,z) ", raw.x, ",", raw.y, ",", raw.z, " Robot pos(x,y,z) ", tpos.x, ",", tpos.y, ",", tpos.z + robot_shoulder_offset.z, " Rho^2=", RHO_2, " Theta=", DEGREES(THETA), " Phi=", DEGREES(PHI), " Psi=", DEGREES(PSI), " Gamma=", DEGREES(GAMMA)); } diff --git a/Marlin/src/module/settings.cpp b/Marlin/src/module/settings.cpp index 56c93bbcfc..455407105c 100644 --- a/Marlin/src/module/settings.cpp +++ b/Marlin/src/module/settings.cpp @@ -728,7 +728,7 @@ uint16_t MarlinSettings::datasize() { return sizeof(SettingsData); } #endif void MarlinSettings::postprocess() { - xyze_pos_t oldpos = current_position; + xyze_pos_t oldpos = motion.position; // steps per s2 needs to be updated to agree with units per s2 planner.refresh_acceleration_rates(); @@ -747,7 +747,7 @@ void MarlinSettings::postprocess() { #endif // Software endstops depend on home_offset - LOOP_NUM_AXES(i) update_software_endstops((AxisEnum)i); + LOOP_NUM_AXES(i) motion.update_software_endstops((AxisEnum)i); TERN_(ENABLE_LEVELING_FADE_HEIGHT, set_z_fade_height(new_z_fade_height, false)); // false = no report @@ -764,12 +764,12 @@ void MarlinSettings::postprocess() { TERN_(EXTENSIBLE_UI, ExtUI::onPostprocessSettings()); // Refresh mm_per_step with the reciprocal of axis_steps_per_mm - // and init stepper.count[], planner.position[] with current_position + // and init stepper.count[], planner.position[] with motion.position planner.refresh_positioning(); // Various factors can change the current position - if (oldpos != current_position) - report_current_position(); + if (oldpos != motion.position) + motion.report_position(); // Moved as last update due to interference with NeoPixel init TERN_(HAS_LCD_CONTRAST, ui.refresh_contrast()); @@ -942,14 +942,13 @@ void MarlinSettings::postprocess() { #if NUM_AXES { _FIELD_TEST(home_offset); - #if HAS_SCARA_OFFSET - EEPROM_WRITE(scara_home_offset); + EEPROM_WRITE(motion.scara_home_offset); + #elif HAS_HOME_OFFSET + EEPROM_WRITE(motion.home_offset); #else - #if !HAS_HOME_OFFSET - const xyz_pos_t home_offset{0}; - #endif - EEPROM_WRITE(home_offset); + const xyz_pos_t _home_offset{0}; + EEPROM_WRITE(_home_offset); #endif } #endif // NUM_AXES @@ -1388,7 +1387,7 @@ void MarlinSettings::postprocess() { // #if ENABLED(EDITABLE_HOMING_FEEDRATE) _FIELD_TEST(homing_feedrate_mm_m); - EEPROM_WRITE(homing_feedrate_mm_m); + EEPROM_WRITE(motion.homing_feedrate_mm_m); #endif // @@ -2014,14 +2013,13 @@ void MarlinSettings::postprocess() { #if NUM_AXES { _FIELD_TEST(home_offset); - #if HAS_SCARA_OFFSET - EEPROM_READ(scara_home_offset); + EEPROM_READ(motion.scara_home_offset); + #elif HAS_HOME_OFFSET + EEPROM_READ(motion.home_offset); #else - #if !HAS_HOME_OFFSET - xyz_pos_t home_offset; - #endif - EEPROM_READ(home_offset); + const xyz_pos_t _home_offset{0}; + EEPROM_READ(_home_offset); #endif } #endif // NUM_AXES @@ -2483,7 +2481,7 @@ void MarlinSettings::postprocess() { // #if ENABLED(EDITABLE_HOMING_FEEDRATE) _FIELD_TEST(homing_feedrate_mm_m); - EEPROM_READ(homing_feedrate_mm_m); + EEPROM_READ(motion.homing_feedrate_mm_m); #endif // @@ -3367,9 +3365,9 @@ void MarlinSettings::reset() { // Home Offset // #if HAS_SCARA_OFFSET - scara_home_offset.reset(); + motion.scara_home_offset.reset(); #elif HAS_HOME_OFFSET - home_offset.reset(); + motion.home_offset.reset(); #endif // @@ -3600,7 +3598,7 @@ void MarlinSettings::reset() { // // Homing Feedrate // - TERN_(EDITABLE_HOMING_FEEDRATE, homing_feedrate_mm_m = xyz_feedrate_t(HOMING_FEEDRATE_MM_M)); + TERN_(EDITABLE_HOMING_FEEDRATE, motion.homing_feedrate_mm_m = xyz_feedrate_t(HOMING_FEEDRATE_MM_M)); // // TMC Homing Current diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index bc049a3492..701d3f09b5 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -3104,7 +3104,7 @@ void Stepper::isr() { hal_timer_t Stepper::smooth_lin_adv_isr() { int32_t target_adv_steps = 0; if (current_block) { - const uint32_t stepper_ticks = extruder_advance_tau_ticks[E_INDEX_N(active_extruder)] + curr_timer_tick; + const uint32_t stepper_ticks = extruder_advance_tau_ticks[E_INDEX_N(motion.extruder)] + curr_timer_tick; target_adv_steps = MULT_Q(27, smooth_lin_adv_lookahead(stepper_ticks), planner.get_advance_k_q27()); } else { @@ -3119,7 +3119,7 @@ void Stepper::isr() { for (uint8_t i = 0; i < SMOOTH_LIN_ADV_EXP_ORDER; i++) { // Approximate Gaussian smoothing via higher order exponential smoothing - smoothed_vals[i] += MULT_Q(30, la_step_rate - smoothed_vals[i], extruder_advance_alpha_q30[E_INDEX_N(active_extruder)]); + smoothed_vals[i] += MULT_Q(30, la_step_rate - smoothed_vals[i], extruder_advance_alpha_q30[E_INDEX_N(motion.extruder)]); la_step_rate = smoothed_vals[i]; } diff --git a/Marlin/src/module/stepper.h b/Marlin/src/module/stepper.h index 18ab27ab3a..95d5eeb0df 100644 --- a/Marlin/src/module/stepper.h +++ b/Marlin/src/module/stepper.h @@ -409,7 +409,7 @@ class Stepper { #if ENABLED(SMOOTH_LIN_ADVANCE) static float extruder_advance_tau[DISTINCT_E]; // Smoothing time; also the lookahead time of the smoother - static void set_advance_tau(const float tau, const uint8_t e=active_extruder) { + static void set_advance_tau(const float tau, const uint8_t e=motion.extruder) { const uint8_t i = E_INDEX_N(e); extruder_advance_tau[i] = tau; extruder_advance_tau_ticks[i] = tau * STEPPER_TIMER_RATE; @@ -417,7 +417,7 @@ class Stepper { const float alpha_float = 1.0f - expf(-float(SMOOTH_LIN_ADV_INTERVAL) * (SMOOTH_LIN_ADV_EXP_ORDER) / extruder_advance_tau_ticks[i]); extruder_advance_alpha_q30[i] = int32_t(alpha_float * _BV32(30)); } - static float get_advance_tau(const uint8_t e=active_extruder) { + static float get_advance_tau(const uint8_t e=motion.extruder) { return extruder_advance_tau[E_INDEX_N(e)]; } #endif @@ -729,15 +729,15 @@ class Stepper { } static void mark_axis_enabled(const AxisEnum axis E_OPTARG(const uint8_t eindex=0)) { SBI(axis_enabled.bits, INDEX_OF_AXIS(axis, eindex)); - TERN_(HAS_Z_AXIS, if (axis == Z_AXIS) z_min_trusted = true); + TERN_(HAS_Z_AXIS, if (axis == Z_AXIS) motion.z_min_trusted = true); // TODO: DELTA should have "Z" state affect all (ABC) motors and treat "XY" on/off as meaningless } static void mark_axis_disabled(const AxisEnum axis E_OPTARG(const uint8_t eindex=0)) { CBI(axis_enabled.bits, INDEX_OF_AXIS(axis, eindex)); #if HAS_Z_AXIS if (TERN0(Z_CAN_FALL_DOWN, axis == Z_AXIS)) { - z_min_trusted = false; - current_position.z = 0; + motion.z_min_trusted = false; + motion.position.z = 0; } #endif // TODO: DELTA should have "Z" state affect all (ABC) motors and treat "XY" on/off as meaningless diff --git a/Marlin/src/module/stepper/indirection.h b/Marlin/src/module/stepper/indirection.h index f2004c88dd..ea162b4949 100644 --- a/Marlin/src/module/stepper/indirection.h +++ b/Marlin/src/module/stepper/indirection.h @@ -62,7 +62,7 @@ * ENABLE_AXIS_Q() DISABLE_AXIS_Q() * * E-Axis Stepper Control (0..n) - * For these macros the E index indicates a logical extruder (e.g., active_extruder). + * For these macros the E index indicates a logical extruder (e.g., motion.extruder). * * E_STEP_WRITE(E,V) FWD_E_DIR(E) REV_E_DIR(E) * @@ -998,7 +998,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #if HAS_X_AXIS #define ENABLE_AXIS_X() if (SHOULD_ENABLE(x)) { ENABLE_STEPPER_X(); ENABLE_STEPPER_X2(); AFTER_CHANGE(x, true); } - #define DISABLE_AXIS_X() if (SHOULD_DISABLE(x)) { DISABLE_STEPPER_X(); DISABLE_STEPPER_X2(); AFTER_CHANGE(x, false); set_axis_untrusted(X_AXIS); } + #define DISABLE_AXIS_X() if (SHOULD_DISABLE(x)) { DISABLE_STEPPER_X(); DISABLE_STEPPER_X2(); AFTER_CHANGE(x, false); motion.set_axis_untrusted(X_AXIS); } #else #define ENABLE_AXIS_X() NOOP #define DISABLE_AXIS_X() NOOP @@ -1006,7 +1006,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #if HAS_Y_AXIS #define ENABLE_AXIS_Y() if (SHOULD_ENABLE(y)) { ENABLE_STEPPER_Y(); ENABLE_STEPPER_Y2(); AFTER_CHANGE(y, true); } - #define DISABLE_AXIS_Y() if (SHOULD_DISABLE(y)) { DISABLE_STEPPER_Y(); DISABLE_STEPPER_Y2(); AFTER_CHANGE(y, false); set_axis_untrusted(Y_AXIS); } + #define DISABLE_AXIS_Y() if (SHOULD_DISABLE(y)) { DISABLE_STEPPER_Y(); DISABLE_STEPPER_Y2(); AFTER_CHANGE(y, false); motion.set_axis_untrusted(Y_AXIS); } #else #define ENABLE_AXIS_Y() NOOP #define DISABLE_AXIS_Y() NOOP @@ -1014,35 +1014,35 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #if HAS_Z_AXIS #define ENABLE_AXIS_Z() if (SHOULD_ENABLE(z)) { ENABLE_STEPPER_Z(); ENABLE_STEPPER_Z2(); ENABLE_STEPPER_Z3(); ENABLE_STEPPER_Z4(); AFTER_CHANGE(z, true); } - #define DISABLE_AXIS_Z() if (SHOULD_DISABLE(z)) { DISABLE_STEPPER_Z(); DISABLE_STEPPER_Z2(); DISABLE_STEPPER_Z3(); DISABLE_STEPPER_Z4(); AFTER_CHANGE(z, false); set_axis_untrusted(Z_AXIS); Z_RESET(); TERN_(BD_SENSOR, bdl.config_state = BDS_IDLE); } + #define DISABLE_AXIS_Z() if (SHOULD_DISABLE(z)) { DISABLE_STEPPER_Z(); DISABLE_STEPPER_Z2(); DISABLE_STEPPER_Z3(); DISABLE_STEPPER_Z4(); AFTER_CHANGE(z, false); motion.set_axis_untrusted(Z_AXIS); Z_RESET(); TERN_(BD_SENSOR, bdl.config_state = BDS_IDLE); } #else #define ENABLE_AXIS_Z() NOOP #define DISABLE_AXIS_Z() NOOP #endif #ifdef Z_IDLE_HEIGHT - #define Z_RESET() do{ current_position.z = Z_IDLE_HEIGHT; sync_plan_position(); }while(0) + #define Z_RESET() do{ motion.position.z = Z_IDLE_HEIGHT; motion.sync_plan_position(); }while(0) #else #define Z_RESET() #endif #if HAS_I_AXIS #define ENABLE_AXIS_I() if (SHOULD_ENABLE(i)) { ENABLE_STEPPER_I(); AFTER_CHANGE(i, true); } - #define DISABLE_AXIS_I() if (SHOULD_DISABLE(i)) { DISABLE_STEPPER_I(); AFTER_CHANGE(i, false); set_axis_untrusted(I_AXIS); } + #define DISABLE_AXIS_I() if (SHOULD_DISABLE(i)) { DISABLE_STEPPER_I(); AFTER_CHANGE(i, false); motion.set_axis_untrusted(I_AXIS); } #else #define ENABLE_AXIS_I() NOOP #define DISABLE_AXIS_I() NOOP #endif #if HAS_J_AXIS #define ENABLE_AXIS_J() if (SHOULD_ENABLE(j)) { ENABLE_STEPPER_J(); AFTER_CHANGE(j, true); } - #define DISABLE_AXIS_J() if (SHOULD_DISABLE(j)) { DISABLE_STEPPER_J(); AFTER_CHANGE(j, false); set_axis_untrusted(J_AXIS); } + #define DISABLE_AXIS_J() if (SHOULD_DISABLE(j)) { DISABLE_STEPPER_J(); AFTER_CHANGE(j, false); motion.set_axis_untrusted(J_AXIS); } #else #define ENABLE_AXIS_J() NOOP #define DISABLE_AXIS_J() NOOP #endif #if HAS_K_AXIS #define ENABLE_AXIS_K() if (SHOULD_ENABLE(k)) { ENABLE_STEPPER_K(); AFTER_CHANGE(k, true); } - #define DISABLE_AXIS_K() if (SHOULD_DISABLE(k)) { DISABLE_STEPPER_K(); AFTER_CHANGE(k, false); set_axis_untrusted(K_AXIS); } + #define DISABLE_AXIS_K() if (SHOULD_DISABLE(k)) { DISABLE_STEPPER_K(); AFTER_CHANGE(k, false); motion.set_axis_untrusted(K_AXIS); } #else #define ENABLE_AXIS_K() NOOP #define DISABLE_AXIS_K() NOOP @@ -1050,21 +1050,21 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #if HAS_U_AXIS #define ENABLE_AXIS_U() if (SHOULD_ENABLE(u)) { ENABLE_STEPPER_U(); AFTER_CHANGE(u, true); } - #define DISABLE_AXIS_U() if (SHOULD_DISABLE(u)) { DISABLE_STEPPER_U(); AFTER_CHANGE(u, false); set_axis_untrusted(U_AXIS); } + #define DISABLE_AXIS_U() if (SHOULD_DISABLE(u)) { DISABLE_STEPPER_U(); AFTER_CHANGE(u, false); motion.set_axis_untrusted(U_AXIS); } #else #define ENABLE_AXIS_U() NOOP #define DISABLE_AXIS_U() NOOP #endif #if HAS_V_AXIS #define ENABLE_AXIS_V() if (SHOULD_ENABLE(v)) { ENABLE_STEPPER_V(); AFTER_CHANGE(v, true); } - #define DISABLE_AXIS_V() if (SHOULD_DISABLE(v)) { DISABLE_STEPPER_V(); AFTER_CHANGE(v, false); set_axis_untrusted(V_AXIS); } + #define DISABLE_AXIS_V() if (SHOULD_DISABLE(v)) { DISABLE_STEPPER_V(); AFTER_CHANGE(v, false); motion.set_axis_untrusted(V_AXIS); } #else #define ENABLE_AXIS_V() NOOP #define DISABLE_AXIS_V() NOOP #endif #if HAS_W_AXIS #define ENABLE_AXIS_W() if (SHOULD_ENABLE(w)) { ENABLE_STEPPER_W(); AFTER_CHANGE(w, true); } - #define DISABLE_AXIS_W() if (SHOULD_DISABLE(w)) { DISABLE_STEPPER_W(); AFTER_CHANGE(w, false); set_axis_untrusted(W_AXIS); } + #define DISABLE_AXIS_W() if (SHOULD_DISABLE(w)) { DISABLE_STEPPER_W(); AFTER_CHANGE(w, false); motion.set_axis_untrusted(W_AXIS); } #else #define ENABLE_AXIS_W() NOOP #define DISABLE_AXIS_W() NOOP diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index a4744c2bad..89b35b6b34 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -481,7 +481,7 @@ PGMSTR(str_t_heating_failed, STR_T_HEATING_FAILED); NOMORE(speed, 255U); #if ENABLED(SINGLENOZZLE_STANDBY_FAN) - if (fan != active_extruder) { + if (fan != motion.extruder) { if (fan < EXTRUDERS) singlenozzle_fan_speed[fan] = speed; return; } @@ -934,7 +934,7 @@ void Temperature::factory_reset() { // Report heater states every 2 seconds if (ELAPSED(ms, next_temp_ms)) { #if HAS_TEMP_SENSOR - print_heater_states(heater_id < 0 ? active_extruder : (int8_t)heater_id); + print_heater_states(heater_id < 0 ? motion.extruder : (int8_t)heater_id); SERIAL_EOL(); #endif next_temp_ms = ms + 2000UL; @@ -1068,7 +1068,7 @@ void Temperature::factory_reset() { planner.sync_fan_speeds(fan_speed); #endif - do_z_clearance(MPC_TUNING_END_Z, false); + motion.do_z_clearance(MPC_TUNING_END_Z, false); #ifdef EVENT_GCODE_AFTER_MPC_TUNE gcode.process_subcommands_now(F(EVENT_GCODE_AFTER_MPC_TUNE)); @@ -1297,7 +1297,7 @@ void Temperature::factory_reset() { set_fan_speed(TERN(SINGLEFAN, 0, e), 255); planner.sync_fan_speeds(fan_speed); #endif - do_blocking_move_to(xyz_pos_t(MPC_TUNING_POS)); + motion.blocking_move(xyz_pos_t(MPC_TUNING_POS)); // Determine ambient temperature. SERIAL_ECHOLNPGM(STR_MPC_COOLING_TO_AMBIENT); @@ -1569,7 +1569,7 @@ inline void loud_kill(FSTR_P const lcd_msg, const heater_id_t heater_id) { buzzer.on(); #endif #if ENABLED(NOZZLE_PARK_FEATURE) - if (!homing_needed_error()) { + if (!motion.homing_needed_error()) { nozzle.park(0); planner.synchronize(); } @@ -1727,7 +1727,7 @@ void Temperature::mintemp_error(const heater_id_t heater_id OPTARG(ERR_INCLUDE_T #if ENABLED(PID_EXTRUSION_SCALING) out += tempinfo.pid.get_extrusion_scale_output( - extr == active_extruder, stepper.position(E_AXIS), planner.mm_per_step[E_AXIS], thermalManager.lpq_len + extr == motion.extruder, stepper.position(E_AXIS), planner.mm_per_step[E_AXIS], thermalManager.lpq_len ); #endif @@ -1781,7 +1781,7 @@ void Temperature::mintemp_error(const heater_id_t heater_id OPTARG(ERR_INCLUDE_T const float pid_output = is_idling ? 0 : hotend_pid[ee].get_pid_output(ee); #if ENABLED(PID_DEBUG) - if (ee == active_extruder) + if (ee == motion.extruder) hotend_pid[ee].debug(temp_hotend[ee].celsius, pid_output, F("E"), ee); #endif @@ -1799,7 +1799,7 @@ void Temperature::mintemp_error(const heater_id_t heater_id OPTARG(ERR_INCLUDE_T #if HOTENDS == 1 constexpr bool this_hotend = true; #else - const bool this_hotend = (ee == active_extruder); + const bool this_hotend = (ee == motion.extruder); #endif float ambient_xfer_coeff = mpc.ambient_xfer_coeff_fan0; @@ -4538,7 +4538,7 @@ void Temperature::isr() { AutoReporter Temperature::auto_reporter; void Temperature::AutoReportTemp::report() { if (marlin.is_heating()) return; - print_heater_states(active_extruder OPTARG(HAS_TEMP_REDUNDANT, ENABLED(AUTO_REPORT_REDUNDANT))); + print_heater_states(motion.extruder OPTARG(HAS_TEMP_REDUNDANT, ENABLED(AUTO_REPORT_REDUNDANT))); SERIAL_EOL(); } #endif @@ -4714,7 +4714,7 @@ void Temperature::isr() { #if ENABLED(AUTOTEMP) void Temperature::_autotemp_update_from_hotend() { - TERN_(AUTOTEMP_PROPORTIONAL, autotemp.update(degTargetHotend(active_extruder))); + TERN_(AUTOTEMP_PROPORTIONAL, autotemp.update(degTargetHotend(motion.extruder))); } /** @@ -4750,7 +4750,7 @@ void Temperature::isr() { */ void Temperature::autotemp_task() { if (!autotemp.enabled) return; - if (degTargetHotend(active_extruder) < autotemp.cfg.min - 2) return; // Below the min? + if (degTargetHotend(motion.extruder) < autotemp.cfg.min - 2) return; // Below the min? // Get a highest target proportion greater than zero float high = planner.get_high_e_speed(); @@ -4758,7 +4758,7 @@ void Temperature::isr() { // Calculate a new target, with weighted correction for a drop float t = autotemp.calculate(high); - _setTargetHotend(t, active_extruder); + _setTargetHotend(t, motion.extruder); } #endif // AUTOTEMP @@ -4811,7 +4811,7 @@ void Temperature::isr() { now = millis(); if (ELAPSED(now, next_temp_ms)) { //Print Temp Reading every 1 second while heating up. next_temp_ms = now + 1000UL; - print_heater_states(active_extruder); + print_heater_states(motion.extruder); #if TEMP_BED_RESIDENCY_TIME > 0 SString<20> s(F(" W:")); if (residency_start_ms) @@ -4924,7 +4924,7 @@ void Temperature::isr() { millis_t now = millis(); if (!next_temp_ms || ELAPSED(now, next_temp_ms)) { next_temp_ms = now + 10000UL; - print_heater_states(active_extruder); + print_heater_states(motion.extruder); SERIAL_EOL(); } @@ -5008,7 +5008,7 @@ void Temperature::isr() { now = millis(); if (ELAPSED(now, next_temp_ms)) { // Print Temp Reading every 1 second while heating up. next_temp_ms = now + 1000UL; - print_heater_states(active_extruder); + print_heater_states(motion.extruder); #if TEMP_CHAMBER_RESIDENCY_TIME > 0 SString<20> s(F(" W:")); if (residency_start_ms) @@ -5109,7 +5109,7 @@ void Temperature::isr() { now = millis(); if (ELAPSED(now, next_temp_ms)) { // Print Temp Reading every 1 second while heating up. next_temp_ms = now + 1000UL; - print_heater_states(active_extruder); + print_heater_states(motion.extruder); #if TEMP_COOLER_RESIDENCY_TIME > 0 SString<20> s(F(" W:")); if (residency_start_ms) diff --git a/Marlin/src/module/tool_change.cpp b/Marlin/src/module/tool_change.cpp index 93abeb7468..94e83983d9 100644 --- a/Marlin/src/module/tool_change.cpp +++ b/Marlin/src/module/tool_change.cpp @@ -150,7 +150,7 @@ // Move to position routines void _line_to_current(const AxisEnum fr_axis, const float fscale=1) { - line_to_current_position(planner.settings.max_feedrate_mm_s[fr_axis] * fscale); + motion.goto_current_position(planner.settings.max_feedrate_mm_s[fr_axis] * fscale); } void slow_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0.2f); } void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0.5f); } @@ -169,11 +169,11 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. inline void magnetic_parking_extruder_tool_change(const uint8_t new_tool) { - const float oldx = current_position.x, + const float oldx = motion.position.x, grabpos = mpe_settings.parking_xpos[new_tool] + (new_tool ? mpe_settings.grab_distance : -mpe_settings.grab_distance), - offsetcompensation = TERN0(HAS_HOTEND_OFFSET, hotend_offset[active_extruder].x * mpe_settings.compensation_factor); + offsetcompensation = TERN0(HAS_HOTEND_OFFSET, hotend_offset[motion.extruder].x * mpe_settings.compensation_factor); - if (homing_needed_error(_BV(X_AXIS))) return; + if (motion.homing_needed_error(_BV(X_AXIS))) return; /** * Z Lift and Nozzle Offset shift ar defined in caller method to work equal with any Multi Hotend realization @@ -189,22 +189,22 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. // STEP 1 - current_position.x = mpe_settings.parking_xpos[new_tool] + offsetcompensation; + motion.position.x = mpe_settings.parking_xpos[new_tool] + offsetcompensation; DEBUG_ECHOPGM("(1) Move extruder ", new_tool); - DEBUG_POS(" to new extruder ParkPos", current_position); + DEBUG_POS(" to new extruder ParkPos", motion.position); - planner.buffer_line(current_position, mpe_settings.fast_feedrate, new_tool); + planner.buffer_line(motion.position, mpe_settings.fast_feedrate, new_tool); planner.synchronize(); // STEP 2 - current_position.x = grabpos + offsetcompensation; + motion.position.x = grabpos + offsetcompensation; DEBUG_ECHOPGM("(2) Couple extruder ", new_tool); - DEBUG_POS(" to new extruder GrabPos", current_position); + DEBUG_POS(" to new extruder GrabPos", motion.position); - planner.buffer_line(current_position, mpe_settings.slow_feedrate, new_tool); + planner.buffer_line(motion.position, mpe_settings.slow_feedrate, new_tool); planner.synchronize(); // Delay before moving tool, to allow magnetic coupling @@ -212,42 +212,42 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. // STEP 3 - current_position.x = mpe_settings.parking_xpos[new_tool] + offsetcompensation; + motion.position.x = mpe_settings.parking_xpos[new_tool] + offsetcompensation; DEBUG_ECHOPGM("(3) Move extruder ", new_tool); - DEBUG_POS(" back to new extruder ParkPos", current_position); + DEBUG_POS(" back to new extruder ParkPos", motion.position); - planner.buffer_line(current_position, mpe_settings.slow_feedrate, new_tool); + planner.buffer_line(motion.position, mpe_settings.slow_feedrate, new_tool); planner.synchronize(); // STEP 4 - current_position.x = mpe_settings.parking_xpos[active_extruder] + (active_extruder == 0 ? MPE_TRAVEL_DISTANCE : -MPE_TRAVEL_DISTANCE) + offsetcompensation; + motion.position.x = mpe_settings.parking_xpos[motion.extruder] + (motion.extruder == 0 ? MPE_TRAVEL_DISTANCE : -MPE_TRAVEL_DISTANCE) + offsetcompensation; DEBUG_ECHOPGM("(4) Move extruder ", new_tool); - DEBUG_POS(" close to old extruder ParkPos", current_position); + DEBUG_POS(" close to old extruder ParkPos", motion.position); - planner.buffer_line(current_position, mpe_settings.fast_feedrate, new_tool); + planner.buffer_line(motion.position, mpe_settings.fast_feedrate, new_tool); planner.synchronize(); // STEP 5 - current_position.x = mpe_settings.parking_xpos[active_extruder] + offsetcompensation; + motion.position.x = mpe_settings.parking_xpos[motion.extruder] + offsetcompensation; DEBUG_ECHOPGM("(5) Park extruder ", new_tool); - DEBUG_POS(" at old extruder ParkPos", current_position); + DEBUG_POS(" at old extruder ParkPos", motion.position); - planner.buffer_line(current_position, mpe_settings.slow_feedrate, new_tool); + planner.buffer_line(motion.position, mpe_settings.slow_feedrate, new_tool); planner.synchronize(); // STEP 6 - current_position.x = oldx; + motion.position.x = oldx; DEBUG_ECHOPGM("(6) Move extruder ", new_tool); - DEBUG_POS(" to starting position", current_position); + DEBUG_POS(" to starting position", motion.position); - planner.buffer_line(current_position, mpe_settings.fast_feedrate, new_tool); + planner.buffer_line(motion.position, mpe_settings.fast_feedrate, new_tool); planner.synchronize(); DEBUG_ECHOLNPGM("Autopark done."); @@ -295,7 +295,7 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. constexpr float parkingposx[] = PARKING_EXTRUDER_PARKING_X; #if HAS_HOTEND_OFFSET - const float x_offset = hotend_offset[active_extruder].x; + const float x_offset = hotend_offset[motion.extruder].x; #else constexpr float x_offset = 0; #endif @@ -314,14 +314,14 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. // STEP 1 - DEBUG_POS("Start PE Tool-Change", current_position); + DEBUG_POS("Start PE Tool-Change", motion.position); - // Don't park the active_extruder unless unparked + // Don't park the motion.extruder unless unparked if (!extruder_parked) { - current_position.x = parkingposx[active_extruder] + x_offset; + motion.position.x = parkingposx[motion.extruder] + x_offset; - DEBUG_ECHOLNPGM("(1) Park extruder ", active_extruder); - DEBUG_POS("Moving ParkPos", current_position); + DEBUG_ECHOLNPGM("(1) Park extruder ", motion.extruder); + DEBUG_POS("Moving ParkPos", motion.position); fast_line_to_current(X_AXIS); @@ -329,14 +329,14 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. planner.synchronize(); DEBUG_ECHOLNPGM("(2) Disengage magnet"); - pe_solenoid_magnet_off(active_extruder); + pe_solenoid_magnet_off(motion.extruder); // STEP 3 - current_position.x += active_extruder ? -10 : 10; // move 10mm away from parked extruder + motion.position.x += motion.extruder ? -10 : 10; // move 10mm away from parked extruder DEBUG_ECHOLNPGM("(3) Move near new extruder"); - DEBUG_POS("Move away from parked extruder", current_position); + DEBUG_POS("Move away from parked extruder", motion.position); fast_line_to_current(X_AXIS); } @@ -347,37 +347,37 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. DEBUG_ECHOLNPGM("(4) Engage magnetic field"); // Just save power for inverted magnets - TERN_(PARKING_EXTRUDER_SOLENOIDS_INVERT, pe_solenoid_magnet_on(active_extruder)); + TERN_(PARKING_EXTRUDER_SOLENOIDS_INVERT, pe_solenoid_magnet_on(motion.extruder)); pe_solenoid_magnet_on(new_tool); // STEP 5 - current_position.x = grabpos + (new_tool ? -10 : 10); + motion.position.x = grabpos + (new_tool ? -10 : 10); fast_line_to_current(X_AXIS); - current_position.x = grabpos; + motion.position.x = grabpos; DEBUG_SYNCHRONIZE(); - DEBUG_POS("(5) Unpark extruder", current_position); + DEBUG_POS("(5) Unpark extruder", motion.position); slow_line_to_current(X_AXIS); // STEP 6 - current_position.x = DIFF_TERN(HAS_HOTEND_OFFSET, midpos, hotend_offset[new_tool].x); + motion.position.x = DIFF_TERN(HAS_HOTEND_OFFSET, midpos, hotend_offset[new_tool].x); DEBUG_SYNCHRONIZE(); - DEBUG_POS("(6) Move midway between hotends", current_position); + DEBUG_POS("(6) Move midway between hotends", motion.position); fast_line_to_current(X_AXIS); planner.synchronize(); // Always sync the final move - DEBUG_POS("PE Tool-Change done.", current_position); + DEBUG_POS("PE Tool-Change done.", motion.position); parking_extruder_set_parked(false); } else if (do_solenoid_activation) { // Deactivate current extruder solenoid - pe_solenoid_set_pin_state(active_extruder, !PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE); + pe_solenoid_set_pin_state(motion.extruder, !PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE); // Engage new extruder magnetic field pe_solenoid_set_pin_state(new_tool, PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE); } @@ -501,10 +501,10 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. if (no_move) return; constexpr float toolheadposx[] = SWITCHING_TOOLHEAD_X_POS; - const float placexpos = toolheadposx[active_extruder], + const float placexpos = toolheadposx[motion.extruder], grabxpos = toolheadposx[new_tool]; - (void)check_tool_sensor_stats(active_extruder, true); + (void)check_tool_sensor_stats(motion.extruder, true); /** * 1. Move to switch position of current toolhead @@ -515,19 +515,19 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. // 1. Move to switch position of current toolhead - DEBUG_POS("Start ST Tool-Change", current_position); + DEBUG_POS("Start ST Tool-Change", motion.position); - current_position.x = placexpos; + motion.position.x = placexpos; - DEBUG_ECHOLNPGM("(1) Place old tool ", active_extruder); - DEBUG_POS("Move X SwitchPos", current_position); + DEBUG_ECHOLNPGM("(1) Place old tool ", motion.extruder); + DEBUG_POS("Move X SwitchPos", motion.position); fast_line_to_current(X_AXIS); - current_position.y = SWITCHING_TOOLHEAD_Y_POS - (SWITCHING_TOOLHEAD_Y_SECURITY); + motion.position.y = SWITCHING_TOOLHEAD_Y_POS - (SWITCHING_TOOLHEAD_Y_SECURITY); DEBUG_SYNCHRONIZE(); - DEBUG_POS("Move Y SwitchPos + Security", current_position); + DEBUG_POS("Move Y SwitchPos + Security", motion.position); slow_line_to_current(Y_AXIS); @@ -539,44 +539,44 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. switching_toolhead_lock(false); safe_delay(500); - current_position.y = SWITCHING_TOOLHEAD_Y_POS; - DEBUG_POS("Move Y SwitchPos", current_position); + motion.position.y = SWITCHING_TOOLHEAD_Y_POS; + DEBUG_POS("Move Y SwitchPos", motion.position); slow_line_to_current(Y_AXIS); // Wait for move to complete, then another 0.2s planner.synchronize(); safe_delay(200); - current_position.y -= SWITCHING_TOOLHEAD_Y_CLEAR; - DEBUG_POS("Move back Y clear", current_position); + motion.position.y -= SWITCHING_TOOLHEAD_Y_CLEAR; + DEBUG_POS("Move back Y clear", motion.position); slow_line_to_current(Y_AXIS); // move away from docked toolhead - (void)check_tool_sensor_stats(active_extruder); + (void)check_tool_sensor_stats(motion.extruder); // 3. Move to the new toolhead - current_position.x = grabxpos; + motion.position.x = grabxpos; DEBUG_SYNCHRONIZE(); DEBUG_ECHOLNPGM("(3) Move to new toolhead position"); - DEBUG_POS("Move to new toolhead X", current_position); + DEBUG_POS("Move to new toolhead X", motion.position); fast_line_to_current(X_AXIS); - current_position.y = SWITCHING_TOOLHEAD_Y_POS - (SWITCHING_TOOLHEAD_Y_SECURITY); + motion.position.y = SWITCHING_TOOLHEAD_Y_POS - (SWITCHING_TOOLHEAD_Y_SECURITY); DEBUG_SYNCHRONIZE(); - DEBUG_POS("Move Y SwitchPos + Security", current_position); + DEBUG_POS("Move Y SwitchPos + Security", motion.position); slow_line_to_current(Y_AXIS); // 4. Grab and lock the new toolhead - current_position.y = SWITCHING_TOOLHEAD_Y_POS; + motion.position.y = SWITCHING_TOOLHEAD_Y_POS; DEBUG_SYNCHRONIZE(); DEBUG_ECHOLNPGM("(4) Grab and lock new toolhead"); - DEBUG_POS("Move Y SwitchPos", current_position); + DEBUG_POS("Move Y SwitchPos", motion.position); slow_line_to_current(Y_AXIS); @@ -589,14 +589,14 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. switching_toolhead_lock(true); safe_delay(500); - current_position.y -= SWITCHING_TOOLHEAD_Y_CLEAR; - DEBUG_POS("Move back Y clear", current_position); + motion.position.y -= SWITCHING_TOOLHEAD_Y_CLEAR; + DEBUG_POS("Move back Y clear", motion.position); slow_line_to_current(Y_AXIS); // Move away from docked toolhead planner.synchronize(); // Always sync the final move (void)check_tool_sensor_stats(new_tool, true, true); - DEBUG_POS("ST Tool-Change done.", current_position); + DEBUG_POS("ST Tool-Change done.", motion.position); } #elif ENABLED(MAGNETIC_SWITCHING_TOOLHEAD) @@ -607,8 +607,8 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. constexpr float toolheadposx[] = SWITCHING_TOOLHEAD_X_POS, toolheadclearx[] = SWITCHING_TOOLHEAD_X_SECURITY; - const float placexpos = toolheadposx[active_extruder], - placexclear = toolheadclearx[active_extruder], + const float placexpos = toolheadposx[motion.extruder], + placexclear = toolheadclearx[motion.extruder], grabxpos = toolheadposx[new_tool], grabxclear = toolheadclearx[new_tool]; @@ -619,61 +619,61 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. * 4. Grab the new toolhead and move to security position */ - DEBUG_POS("Start MST Tool-Change", current_position); + DEBUG_POS("Start MST Tool-Change", motion.position); // 1. Move to switch position current toolhead - current_position.y = SWITCHING_TOOLHEAD_Y_POS + SWITCHING_TOOLHEAD_Y_CLEAR; + motion.position.y = SWITCHING_TOOLHEAD_Y_POS + SWITCHING_TOOLHEAD_Y_CLEAR; - SERIAL_ECHOLNPGM("(1) Place old tool ", active_extruder); - DEBUG_POS("Move Y SwitchPos + Security", current_position); + SERIAL_ECHOLNPGM("(1) Place old tool ", motion.extruder); + DEBUG_POS("Move Y SwitchPos + Security", motion.position); fast_line_to_current(Y_AXIS); - current_position.x = placexclear; + motion.position.x = placexclear; DEBUG_SYNCHRONIZE(); - DEBUG_POS("Move X SwitchPos + Security", current_position); + DEBUG_POS("Move X SwitchPos + Security", motion.position); fast_line_to_current(X_AXIS); - current_position.y = SWITCHING_TOOLHEAD_Y_POS; + motion.position.y = SWITCHING_TOOLHEAD_Y_POS; DEBUG_SYNCHRONIZE(); - DEBUG_POS("Move Y SwitchPos", current_position); + DEBUG_POS("Move Y SwitchPos", motion.position); fast_line_to_current(Y_AXIS); - current_position.x = placexpos; + motion.position.x = placexpos; DEBUG_SYNCHRONIZE(); - DEBUG_POS("Move X SwitchPos", current_position); + DEBUG_POS("Move X SwitchPos", motion.position); - line_to_current_position(planner.settings.max_feedrate_mm_s[X_AXIS] * 0.25f); + motion.goto_current_position(planner.settings.max_feedrate_mm_s[X_AXIS] * 0.25f); // 2. Release and place toolhead in the dock DEBUG_SYNCHRONIZE(); DEBUG_ECHOLNPGM("(2) Release and Place Toolhead"); - current_position.y = SWITCHING_TOOLHEAD_Y_POS + SWITCHING_TOOLHEAD_Y_RELEASE; - DEBUG_POS("Move Y SwitchPos + Release", current_position); - line_to_current_position(planner.settings.max_feedrate_mm_s[Y_AXIS] * 0.1f); + motion.position.y = SWITCHING_TOOLHEAD_Y_POS + SWITCHING_TOOLHEAD_Y_RELEASE; + DEBUG_POS("Move Y SwitchPos + Release", motion.position); + motion.goto_current_position(planner.settings.max_feedrate_mm_s[Y_AXIS] * 0.1f); - current_position.y = SWITCHING_TOOLHEAD_Y_POS + SWITCHING_TOOLHEAD_Y_SECURITY; + motion.position.y = SWITCHING_TOOLHEAD_Y_POS + SWITCHING_TOOLHEAD_Y_SECURITY; DEBUG_SYNCHRONIZE(); - DEBUG_POS("Move Y SwitchPos + Security", current_position); + DEBUG_POS("Move Y SwitchPos + Security", motion.position); - line_to_current_position(planner.settings.max_feedrate_mm_s[Y_AXIS]); + motion.goto_current_position(planner.settings.max_feedrate_mm_s[Y_AXIS]); // 3. Move to new toolhead position DEBUG_SYNCHRONIZE(); DEBUG_ECHOLNPGM("(3) Move to new toolhead position"); - current_position.x = grabxpos; - DEBUG_POS("Move to new toolhead X", current_position); + motion.position.x = grabxpos; + DEBUG_POS("Move to new toolhead X", motion.position); fast_line_to_current(X_AXIS); // 4. Grab the new toolhead and move to security position @@ -681,43 +681,43 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. DEBUG_SYNCHRONIZE(); DEBUG_ECHOLNPGM("(4) Grab new toolhead, move to security position"); - current_position.y = SWITCHING_TOOLHEAD_Y_POS + SWITCHING_TOOLHEAD_Y_RELEASE; - DEBUG_POS("Move Y SwitchPos + Release", current_position); - line_to_current_position(planner.settings.max_feedrate_mm_s[Y_AXIS]); + motion.position.y = SWITCHING_TOOLHEAD_Y_POS + SWITCHING_TOOLHEAD_Y_RELEASE; + DEBUG_POS("Move Y SwitchPos + Release", motion.position); + motion.goto_current_position(planner.settings.max_feedrate_mm_s[Y_AXIS]); - current_position.y = SWITCHING_TOOLHEAD_Y_POS; + motion.position.y = SWITCHING_TOOLHEAD_Y_POS; DEBUG_SYNCHRONIZE(); - DEBUG_POS("Move Y SwitchPos", current_position); + DEBUG_POS("Move Y SwitchPos", motion.position); _line_to_current(Y_AXIS, 0.2f); #if ENABLED(PRIME_BEFORE_REMOVE) && (SWITCHING_TOOLHEAD_PRIME_MM || SWITCHING_TOOLHEAD_RETRACT_MM) #if SWITCHING_TOOLHEAD_PRIME_MM - current_position.e += SWITCHING_TOOLHEAD_PRIME_MM; - planner.buffer_line(current_position, MMM_TO_MMS(SWITCHING_TOOLHEAD_PRIME_FEEDRATE), new_tool); + motion.position.e += SWITCHING_TOOLHEAD_PRIME_MM; + planner.buffer_line(motion.position, MMM_TO_MMS(SWITCHING_TOOLHEAD_PRIME_FEEDRATE), new_tool); #endif #if SWITCHING_TOOLHEAD_RETRACT_MM - current_position.e -= SWITCHING_TOOLHEAD_RETRACT_MM; - planner.buffer_line(current_position, MMM_TO_MMS(SWITCHING_TOOLHEAD_RETRACT_FEEDRATE), new_tool); + motion.position.e -= SWITCHING_TOOLHEAD_RETRACT_MM; + planner.buffer_line(motion.position, MMM_TO_MMS(SWITCHING_TOOLHEAD_RETRACT_FEEDRATE), new_tool); #endif #else planner.synchronize(); safe_delay(100); // Give switch time to settle #endif - current_position.x = grabxclear; - DEBUG_POS("Move to new toolhead X + Security", current_position); + motion.position.x = grabxclear; + DEBUG_POS("Move to new toolhead X + Security", motion.position); _line_to_current(X_AXIS, 0.1f); planner.synchronize(); safe_delay(100); // Give switch time to settle - current_position.y += SWITCHING_TOOLHEAD_Y_CLEAR; - DEBUG_POS("Move back Y clear", current_position); + motion.position.y += SWITCHING_TOOLHEAD_Y_CLEAR; + DEBUG_POS("Move back Y clear", motion.position); fast_line_to_current(Y_AXIS); // move away from docked toolhead planner.synchronize(); // Always sync last tool-change move - DEBUG_POS("MST Tool-Change done.", current_position); + DEBUG_POS("MST Tool-Change done.", motion.position); } #elif ENABLED(ELECTROMAGNETIC_SWITCHING_TOOLHEAD) @@ -730,9 +730,9 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. if (no_move) return; constexpr float toolheadposx[] = SWITCHING_TOOLHEAD_X_POS; - const float placexpos = toolheadposx[active_extruder], + const float placexpos = toolheadposx[motion.extruder], grabxpos = toolheadposx[new_tool]; - const xyz_pos_t &hoffs = hotend_offset[active_extruder]; + const xyz_pos_t &hoffs = hotend_offset[motion.extruder]; /** * 1. Raise Z-Axis to give enough clearance @@ -746,31 +746,31 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. * 9. Apply Z hotend offset to current position */ - DEBUG_POS("Start EMST Tool-Change", current_position); + DEBUG_POS("Start EMST Tool-Change", motion.position); // 1. Raise Z-Axis to give enough clearance - current_position.z += SWITCHING_TOOLHEAD_Z_HOP; - DEBUG_POS("(1) Raise Z-Axis ", current_position); + motion.position.z += SWITCHING_TOOLHEAD_Z_HOP; + DEBUG_POS("(1) Raise Z-Axis ", motion.position); fast_line_to_current(Z_AXIS); // 2. Move to position near active extruder parking DEBUG_SYNCHRONIZE(); - DEBUG_ECHOLNPGM("(2) Move near active extruder parking", active_extruder); - DEBUG_POS("Moving ParkPos", current_position); + DEBUG_ECHOLNPGM("(2) Move near active extruder parking", motion.extruder); + DEBUG_POS("Moving ParkPos", motion.position); - current_position.set(hoffs.x + placexpos, + motion.position.set(hoffs.x + placexpos, hoffs.y + SWITCHING_TOOLHEAD_Y_POS + SWITCHING_TOOLHEAD_Y_CLEAR); fast_line_to_current(X_AXIS); // 3. Move gently to park position of active extruder DEBUG_SYNCHRONIZE(); - SERIAL_ECHOLNPGM("(3) Move gently to park position of active extruder", active_extruder); - DEBUG_POS("Moving ParkPos", current_position); + SERIAL_ECHOLNPGM("(3) Move gently to park position of active extruder", motion.extruder); + DEBUG_POS("Moving ParkPos", motion.position); - current_position.y -= SWITCHING_TOOLHEAD_Y_CLEAR; + motion.position.y -= SWITCHING_TOOLHEAD_Y_CLEAR; slow_line_to_current(Y_AXIS); // 4. Disengage magnetic field, wait for delay @@ -782,17 +782,17 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. // 5. Leave extruder and move to position near new extruder parking DEBUG_ECHOLNPGM("(5) Move near new extruder parking"); - DEBUG_POS("Moving ParkPos", current_position); + DEBUG_POS("Moving ParkPos", motion.position); - current_position.y += SWITCHING_TOOLHEAD_Y_CLEAR; + motion.position.y += SWITCHING_TOOLHEAD_Y_CLEAR; slow_line_to_current(Y_AXIS); - current_position.set(hoffs.x + grabxpos, + motion.position.set(hoffs.x + grabxpos, hoffs.y + SWITCHING_TOOLHEAD_Y_POS + SWITCHING_TOOLHEAD_Y_CLEAR); fast_line_to_current(X_AXIS); // 6. Move gently to park position of new extruder - current_position.y -= SWITCHING_TOOLHEAD_Y_CLEAR; + motion.position.y -= SWITCHING_TOOLHEAD_Y_CLEAR; if (DEBUGGING(LEVELING)) { planner.synchronize(); DEBUG_ECHOLNPGM("(6) Move near new extruder"); @@ -807,17 +807,17 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. // 8. Unpark extruder - current_position.y += SWITCHING_TOOLHEAD_Y_CLEAR; + motion.position.y += SWITCHING_TOOLHEAD_Y_CLEAR; DEBUG_ECHOLNPGM("(8) Unpark extruder"); slow_line_to_current(X_AXIS); planner.synchronize(); // Always sync the final move // 9. Apply Z hotend offset to current position - DEBUG_POS("(9) Applying Z-offset", current_position); - current_position.z += hoffs.z - hotend_offset[new_tool].z; + DEBUG_POS("(9) Applying Z-offset", motion.position); + motion.position.z += hoffs.z - hotend_offset[new_tool].z; - DEBUG_POS("EMST Tool-Change done.", current_position); + DEBUG_POS("EMST Tool-Change done.", motion.position); } #endif // ELECTROMAGNETIC_SWITCHING_TOOLHEAD @@ -850,33 +850,33 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. } // Get the home position of the currently-active tool - const float xhome = x_home_pos(active_extruder); + const float xhome = x_home_pos(motion.extruder); if (dual_x_carriage_mode == DXC_AUTO_PARK_MODE // If Auto-Park mode is enabled && marlin.isRunning() && !no_move // ...and movement is permitted - && (delayed_move_time || current_position.x != xhome) // ...and delayed_move_time is set OR not "already parked"... + && (delayed_move_time || motion.position.x != xhome) // ...and delayed_move_time is set OR not "already parked"... ) { DEBUG_ECHOLNPGM("MoveX to ", xhome); - current_position.x = xhome; - line_to_current_position(planner.settings.max_feedrate_mm_s[X_AXIS]); // Park the current head + motion.position.x = xhome; + motion.goto_current_position(planner.settings.max_feedrate_mm_s[X_AXIS]); // Park the current head planner.synchronize(); } - // Activate the new extruder ahead of calling set_axis_is_at_home! - active_extruder = new_tool; + // Activate the new extruder ahead of calling motion.set_axis_is_at_home! + motion.extruder = new_tool; // This function resets the max/min values - the current position may be overwritten below. - set_axis_is_at_home(X_AXIS); + motion.set_axis_is_at_home(X_AXIS); - DEBUG_POS("New Extruder", current_position); + DEBUG_POS("New Extruder", motion.position); switch (dual_x_carriage_mode) { case DXC_FULL_CONTROL_MODE: // New current position is the position of the activated extruder - current_position.x = inactive_extruder_x; - // Save the inactive extruder's position (from the old current_position) - inactive_extruder_x = destination.x; - DEBUG_ECHOLNPGM("DXC Full Control curr.x=", current_position.x, " dest.x=", destination.x); + motion.position.x = inactive_extruder_x; + // Save the inactive extruder's position (from the old motion.position) + inactive_extruder_x = motion.destination.x; + DEBUG_ECHOLNPGM("DXC Full Control curr.x=", motion.position.x, " dest.x=", motion.destination.x); break; case DXC_AUTO_PARK_MODE: idex_set_parked(); @@ -889,7 +889,7 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. stepper.apply_directions(); DEBUG_ECHOLNPGM("Active extruder parked: ", active_extruder_parked ? "yes" : "no"); - DEBUG_POS("New extruder (parked)", current_position); + DEBUG_POS("New extruder (parked)", motion.position); } #endif // DUAL_X_CARRIAGE @@ -935,20 +935,18 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. /** * Cutting recovery -- Recover from cutting retraction that occurs at the end of nozzle priming * - * If the active_extruder is up to temp (!too_cold): + * If the motion.extruder is up to temp (!too_cold): * Extrude filament distance = toolchange_settings.extra_resume + toolchange_settings.wipe_retract - * current_position.e = e; - * sync_plan_position_e(); + * set_and_sync_e(e); */ void extruder_cutting_recover(const float e) { - if (too_cold(active_extruder)) return; + if (too_cold(motion.extruder)) return; const float dist = toolchange_settings.extra_resume + toolchange_settings.wipe_retract; DEBUG_ECHOLNPGM("Performing Cutting Recover | Distance: ", dist, " | Speed: ", MMM_TO_MMS(toolchange_settings.unretract_speed), "mm/s"); - unscaled_e_move(dist, MMM_TO_MMS(toolchange_settings.unretract_speed)); + motion.unscaled_e_move(dist, MMM_TO_MMS(toolchange_settings.unretract_speed)); DEBUG_ECHOLNPGM("Set E position: ", e); - current_position.e = e; - sync_plan_position_e(); // Resume new E Position + motion.set_and_sync_e(e); // Resume new E Position } /** @@ -960,27 +958,27 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. * If cooling fan is enabled, calls filament_swap_cooling(); */ void extruder_prime() { - if (too_cold(active_extruder)) { + if (too_cold(motion.extruder)) { DEBUG_ECHOLNPGM("Priming Aborted - Nozzle Too Cold!"); return; // Extruder too cold to prime } feedRate_t fr_mm_s = MMM_TO_MMS(toolchange_settings.unretract_speed); // Set default speed for unretract - const float resume_current_e = current_position.e; + const float resume_current_e = motion.position.e; #if ENABLED(TOOLCHANGE_FS_SLOW_FIRST_PRIME) /** * Perform first unretract movement at the slower Prime_Speed to avoid breakage on first prime */ static Flags extruder_did_first_prime; // Extruders first priming status - if (!extruder_did_first_prime[active_extruder]) { - extruder_did_first_prime.set(active_extruder); // Log first prime complete + if (!extruder_did_first_prime[motion.extruder]) { + extruder_did_first_prime.set(motion.extruder); // Log first prime complete // new nozzle - prime at user-specified speed. const feedRate_t prime_mm_s = MMM_TO_MMS(toolchange_settings.prime_speed); - DEBUG_ECHOLNPGM("First time priming T", active_extruder, ", reducing speed from ", fr_mm_s, " to ", prime_mm_s, "mm/s"); + DEBUG_ECHOLNPGM("First time priming T", motion.extruder, ", reducing speed from ", fr_mm_s, " to ", prime_mm_s, "mm/s"); fr_mm_s = prime_mm_s; - unscaled_e_move(0, fr_mm_s); // Init planner with 0 length move + motion.unscaled_e_move(0, fr_mm_s); // Init planner with 0 length move } #endif @@ -988,12 +986,12 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. if (toolchange_settings.extra_prime >= 0) { // Positive extra_prime value // - Return filament at speed (fr_mm_s) then extra_prime at prime speed - DEBUG_ECHOLNPGM("Loading Filament for T", active_extruder, " | Distance: ", toolchange_settings.swap_length, " | Speed: ", fr_mm_s, "mm/s"); - unscaled_e_move(toolchange_settings.swap_length, fr_mm_s); // Prime (Unretract) filament by extruding equal to Swap Length (Unretract) + DEBUG_ECHOLNPGM("Loading Filament for T", motion.extruder, " | Distance: ", toolchange_settings.swap_length, " | Speed: ", fr_mm_s, "mm/s"); + motion.unscaled_e_move(toolchange_settings.swap_length, fr_mm_s); // Prime (Unretract) filament by extruding equal to Swap Length (Unretract) if (toolchange_settings.extra_prime > 0) { - DEBUG_ECHOLNPGM("Performing Extra Priming for T", active_extruder, " | Distance: ", toolchange_settings.extra_prime, " | Speed: ", MMM_TO_MMS(toolchange_settings.prime_speed), "mm/s"); - unscaled_e_move(toolchange_settings.extra_prime, MMM_TO_MMS(toolchange_settings.prime_speed)); // Extra Prime Distance + DEBUG_ECHOLNPGM("Performing Extra Priming for T", motion.extruder, " | Distance: ", toolchange_settings.extra_prime, " | Speed: ", MMM_TO_MMS(toolchange_settings.prime_speed), "mm/s"); + motion.unscaled_e_move(toolchange_settings.extra_prime, MMM_TO_MMS(toolchange_settings.prime_speed)); // Extra Prime Distance } } else { @@ -1001,21 +999,20 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. // - Unretract distance (swap length) is reduced by the value of extra_prime const float eswap = toolchange_settings.swap_length + toolchange_settings.extra_prime; DEBUG_ECHOLNPGM("Negative ExtraPrime value - Swap Return Length has been reduced from ", toolchange_settings.swap_length, " to ", eswap); - DEBUG_ECHOLNPGM("Loading Filament for T", active_extruder, " | Distance: ", eswap, " | Speed: ", fr_mm_s, "mm/s"); - unscaled_e_move(eswap, fr_mm_s); + DEBUG_ECHOLNPGM("Loading Filament for T", motion.extruder, " | Distance: ", eswap, " | Speed: ", fr_mm_s, "mm/s"); + motion.unscaled_e_move(eswap, fr_mm_s); } - extruder_was_primed.set(active_extruder); // Log that this extruder has been primed + extruder_was_primed.set(motion.extruder); // Log that this extruder has been primed // Cutting retraction #if TOOLCHANGE_FS_WIPE_RETRACT DEBUG_ECHOLNPGM("Performing Cutting Retraction | Distance: ", -toolchange_settings.wipe_retract, " | Speed: ", MMM_TO_MMS(toolchange_settings.retract_speed), "mm/s"); - unscaled_e_move(-toolchange_settings.wipe_retract, MMM_TO_MMS(toolchange_settings.retract_speed)); + motion.unscaled_e_move(-toolchange_settings.wipe_retract, MMM_TO_MMS(toolchange_settings.retract_speed)); #endif // Leave E unchanged when priming - current_position.e = resume_current_e; - sync_plan_position_e(); + motion.set_and_sync_e(resume_current_e); // Cool down with fan filament_swap_cooling(); @@ -1029,10 +1026,10 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. DEBUG_SECTION(tcp, "tool_change_prime", true); - if (!too_cold(active_extruder)) { - destination = current_position; // Remember the old position + if (!too_cold(motion.extruder)) { + motion.destination = motion.position; // Remember the old position - const bool ok = TERN0(TOOLCHANGE_PARK, all_axes_homed() && toolchange_settings.enable_park); + const bool ok = TERN0(TOOLCHANGE_PARK, motion.all_axes_homed() && toolchange_settings.enable_park); #if HAS_FAN && TOOLCHANGE_FS_FAN >= 0 // Store and stop fan. Restored on any exit. @@ -1042,8 +1039,8 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. // Z raise if (ok) { // Do a small lift to avoid the workpiece in the move back (below) - current_position.z += toolchange_settings.z_raise; - TERN_(HAS_SOFTWARE_ENDSTOPS, NOMORE(current_position.z, soft_endstop.max.z)); + motion.position.z += toolchange_settings.z_raise; + TERN_(HAS_SOFTWARE_ENDSTOPS, NOMORE(motion.position.z, motion.soft_endstop.max.z)); fast_line_to_current(Z_AXIS); planner.synchronize(); } @@ -1051,19 +1048,19 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. // Park #if ENABLED(TOOLCHANGE_PARK) if (ok) { - IF_DISABLED(TOOLCHANGE_PARK_Y_ONLY, current_position.x = toolchange_settings.change_point.x); - IF_DISABLED(TOOLCHANGE_PARK_X_ONLY, current_position.y = toolchange_settings.change_point.y); + IF_DISABLED(TOOLCHANGE_PARK_Y_ONLY, motion.position.x = toolchange_settings.change_point.x); + IF_DISABLED(TOOLCHANGE_PARK_X_ONLY, motion.position.y = toolchange_settings.change_point.y); #if NONE(TOOLCHANGE_PARK_X_ONLY, TOOLCHANGE_PARK_Y_ONLY) SECONDARY_AXIS_CODE( - current_position.i = toolchange_settings.change_point.i, - current_position.j = toolchange_settings.change_point.j, - current_position.k = toolchange_settings.change_point.k, - current_position.u = toolchange_settings.change_point.u, - current_position.v = toolchange_settings.change_point.v, - current_position.w = toolchange_settings.change_point.w + motion.position.i = toolchange_settings.change_point.i, + motion.position.j = toolchange_settings.change_point.j, + motion.position.k = toolchange_settings.change_point.k, + motion.position.u = toolchange_settings.change_point.u, + motion.position.v = toolchange_settings.change_point.v, + motion.position.w = toolchange_settings.change_point.w ); #endif - planner.buffer_line(current_position, MMM_TO_MMS(TOOLCHANGE_PARK_XY_FEEDRATE), active_extruder); + planner.buffer_line(motion.position, MMM_TO_MMS(TOOLCHANGE_PARK_XY_FEEDRATE), motion.extruder); planner.synchronize(); } #endif @@ -1075,29 +1072,29 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. #if ENABLED(TOOLCHANGE_PARK) if (ok) { #if ENABLED(TOOLCHANGE_NO_RETURN) - destination.x = current_position.x; - destination.y = current_position.y; + motion.destination.x = motion.position.x; + motion.destination.y = motion.position.y; #endif - do_blocking_move_to_xy(destination, MMM_TO_MMS(TOOLCHANGE_PARK_XY_FEEDRATE)); - do_blocking_move_to_z(destination.z, planner.settings.max_feedrate_mm_s[Z_AXIS]); + motion.blocking_move_xy(motion.destination, MMM_TO_MMS(TOOLCHANGE_PARK_XY_FEEDRATE)); + motion.blocking_move_z(motion.destination.z, planner.settings.max_feedrate_mm_s[Z_AXIS]); planner.synchronize(); } #endif // Clone previous position - extruder_cutting_recover(destination.e); // Cutting recover + extruder_cutting_recover(motion.destination.e); // Cutting recover // Retract if previously retracted #if ENABLED(FWRETRACT) - if (fwretract.retracted[active_extruder]) - unscaled_e_move(-fwretract.settings.retract_length, fwretract.settings.retract_feedrate_mm_s); + if (fwretract.retracted[motion.extruder]) + motion.unscaled_e_move(-fwretract.settings.retract_length, fwretract.settings.retract_feedrate_mm_s); #endif // If resume_position is negative - if (current_position.e < 0) unscaled_e_move(current_position.e, MMM_TO_MMS(toolchange_settings.retract_speed)); + if (motion.position.e < 0) motion.unscaled_e_move(motion.position.e, MMM_TO_MMS(toolchange_settings.retract_speed)); planner.synchronize(); - planner.set_e_position_mm(current_position.e); // Extruder primed and ready + planner.set_e_position_mm(motion.position.e); // Extruder primed and ready } } @@ -1109,7 +1106,7 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0. */ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { - if (TERN0(MAGNETIC_SWITCHING_TOOLHEAD, new_tool == active_extruder)) + if (TERN0(MAGNETIC_SWITCHING_TOOLHEAD, new_tool == motion.extruder)) return; #if ENABLED(MIXING_EXTRUDER) @@ -1160,7 +1157,7 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { if (new_tool >= EXTRUDERS) return invalid_extruder_error(new_tool); - if (!no_move && homing_needed()) { + if (!no_move && motion.homing_needed()) { no_move = true; DEBUG_ECHOLNPGM("No move (not homed)"); } @@ -1173,7 +1170,7 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { constexpr bool idex_full_control = false; #endif - const uint8_t old_tool = active_extruder; + const uint8_t old_tool = motion.extruder; const bool can_move_away = !no_move && !idex_full_control; #if ENABLED(AUTO_BED_LEVELING_UBL) @@ -1190,7 +1187,7 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { #endif if (new_tool != old_tool || TERN0(PARKING_EXTRUDER, extruder_parked)) { // PARKING_EXTRUDER may need to attach old_tool when homing - destination = current_position; + motion.destination = motion.position; #if ALL(TOOLCHANGE_FILAMENT_SWAP, HAS_FAN) && TOOLCHANGE_FS_FAN >= 0 // Store and stop fan. Restored on any exit. @@ -1201,8 +1198,8 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { #if ENABLED(TOOLCHANGE_ZRAISE_BEFORE_RETRACT) && !HAS_SWITCHING_NOZZLE if (can_move_away && TERN1(TOOLCHANGE_PARK, toolchange_settings.enable_park)) { // Do a small lift to avoid the workpiece in the move back (below) - current_position.z += toolchange_settings.z_raise; - TERN_(HAS_SOFTWARE_ENDSTOPS, NOMORE(current_position.z, soft_endstop.max.z)); + motion.position.z += toolchange_settings.z_raise; + TERN_(HAS_SOFTWARE_ENDSTOPS, NOMORE(motion.position.z, motion.soft_endstop.max.z)); fast_line_to_current(Z_AXIS); planner.synchronize(); } @@ -1214,18 +1211,18 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { if (should_swap) { if (too_cold(old_tool)) { // If SingleNozzle setup is too cold, unable to perform tool_change. - if (ENABLED(SINGLENOZZLE)) { active_extruder = new_tool; return; } + if (ENABLED(SINGLENOZZLE)) { motion.extruder = new_tool; return; } } else if (extruder_was_primed[old_tool]) { // Retract the old extruder if it was previously primed // To-Do: Should SingleNozzle always retract? DEBUG_ECHOLNPGM("Retracting Filament for T", old_tool, ". | Distance: ", toolchange_settings.swap_length, " | Speed: ", MMM_TO_MMS(toolchange_settings.retract_speed), "mm/s"); - unscaled_e_move(-toolchange_settings.swap_length, MMM_TO_MMS(toolchange_settings.retract_speed)); + motion.unscaled_e_move(-toolchange_settings.swap_length, MMM_TO_MMS(toolchange_settings.retract_speed)); } } #endif - REMEMBER(fr, feedrate_mm_s, XY_PROBE_FEEDRATE_MM_S); + REMEMBER(fr, motion.feedrate_mm_s, XY_PROBE_FEEDRATE_MM_S); #if HAS_SOFTWARE_ENDSTOPS #if HAS_HOTEND_OFFSET @@ -1233,18 +1230,18 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { #else #define _EXT_ARGS #endif - update_software_endstops(X_AXIS _EXT_ARGS); + motion.update_software_endstops(X_AXIS _EXT_ARGS); #if DISABLED(DUAL_X_CARRIAGE) - update_software_endstops(Y_AXIS _EXT_ARGS); - update_software_endstops(Z_AXIS _EXT_ARGS); + motion.update_software_endstops(Y_AXIS _EXT_ARGS); + motion.update_software_endstops(Z_AXIS _EXT_ARGS); #endif #endif #if NONE(TOOLCHANGE_ZRAISE_BEFORE_RETRACT, HAS_SWITCHING_NOZZLE) if (can_move_away && TERN1(TOOLCHANGE_PARK, toolchange_settings.enable_park)) { // Do a small lift to avoid the workpiece in the move back (below) - current_position.z += toolchange_settings.z_raise; - TERN_(HAS_SOFTWARE_ENDSTOPS, NOMORE(current_position.z, soft_endstop.max.z)); + motion.position.z += toolchange_settings.z_raise; + TERN_(HAS_SOFTWARE_ENDSTOPS, NOMORE(motion.position.z, motion.soft_endstop.max.z)); fast_line_to_current(Z_AXIS); } #endif @@ -1252,19 +1249,19 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { // Toolchange park #if ENABLED(TOOLCHANGE_PARK) && !HAS_SWITCHING_NOZZLE if (can_move_away && toolchange_settings.enable_park) { - IF_DISABLED(TOOLCHANGE_PARK_Y_ONLY, current_position.x = toolchange_settings.change_point.x); - IF_DISABLED(TOOLCHANGE_PARK_X_ONLY, current_position.y = toolchange_settings.change_point.y); + IF_DISABLED(TOOLCHANGE_PARK_Y_ONLY, motion.position.x = toolchange_settings.change_point.x); + IF_DISABLED(TOOLCHANGE_PARK_X_ONLY, motion.position.y = toolchange_settings.change_point.y); #if NONE(TOOLCHANGE_PARK_X_ONLY, TOOLCHANGE_PARK_Y_ONLY) SECONDARY_AXIS_CODE( - current_position.i = toolchange_settings.change_point.i, - current_position.j = toolchange_settings.change_point.j, - current_position.k = toolchange_settings.change_point.k, - current_position.u = toolchange_settings.change_point.u, - current_position.v = toolchange_settings.change_point.v, - current_position.w = toolchange_settings.change_point.w + motion.position.i = toolchange_settings.change_point.i, + motion.position.j = toolchange_settings.change_point.j, + motion.position.k = toolchange_settings.change_point.k, + motion.position.u = toolchange_settings.change_point.u, + motion.position.v = toolchange_settings.change_point.v, + motion.position.w = toolchange_settings.change_point.w ); #endif - planner.buffer_line(current_position, MMM_TO_MMS(TOOLCHANGE_PARK_XY_FEEDRATE), old_tool); + planner.buffer_line(motion.position, MMM_TO_MMS(TOOLCHANGE_PARK_XY_FEEDRATE), old_tool); planner.synchronize(); } #endif @@ -1293,11 +1290,11 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { // SWITCHING_NOZZLE_TWO_SERVOS, as both nozzles will lift instead. TERN_(SWITCHING_NOZZLE_TWO_SERVOS, raise_nozzle(old_tool)); if (!no_move) { - const float newz = current_position.z + _MAX(-diff.z, 0.0); + const float newz = motion.position.z + _MAX(-diff.z, 0.0); // Check if Z has space to compensate at least z_offset, and if not, just abort now - const float maxz = _MIN(TERN(HAS_SOFTWARE_ENDSTOPS, soft_endstop.max.z, Z_MAX_POS), Z_MAX_POS); + const float maxz = _MIN(TERN(HAS_SOFTWARE_ENDSTOPS, motion.soft_endstop.max.z, Z_MAX_POS), Z_MAX_POS); if (newz > maxz) return; - current_position.z = _MIN(newz + toolchange_settings.z_raise, maxz); + motion.position.z = _MIN(newz + toolchange_settings.z_raise, maxz); fast_line_to_current(Z_AXIS); } #if SWITCHING_NOZZLE_TWO_SERVOS // Switching Nozzle with two servos @@ -1307,27 +1304,27 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { #endif #elif ANY(MECHANICAL_SWITCHING_EXTRUDER, MECHANICAL_SWITCHING_NOZZLE) if (!no_move) { - current_position.z = _MIN(current_position.z + toolchange_settings.z_raise, _MIN(TERN(HAS_SOFTWARE_ENDSTOPS, soft_endstop.max.z, Z_MAX_POS), Z_MAX_POS)); + motion.position.z = _MIN(motion.position.z + toolchange_settings.z_raise, _MIN(TERN(HAS_SOFTWARE_ENDSTOPS, motion.soft_endstop.max.z, Z_MAX_POS), Z_MAX_POS)); fast_line_to_current(Z_AXIS); } #endif - IF_DISABLED(DUAL_X_CARRIAGE, active_extruder = new_tool); // Set the new active extruder + IF_DISABLED(DUAL_X_CARRIAGE, motion.extruder = new_tool); // Set the new active extruder TERN_(TOOL_SENSOR, tool_sensor_disabled = false); - (void)check_tool_sensor_stats(active_extruder, true); + (void)check_tool_sensor_stats(motion.extruder, true); // The newly-selected extruder XYZ is actually at... DEBUG_ECHOLNPGM("Offset Tool XYZ by { ", diff.x, ", ", diff.y, ", ", diff.z, " }"); - current_position += diff; + motion.position += diff; // Tell the planner the new "current position" - sync_plan_position(); + motion.sync_plan_position(); #if ENABLED(DELTA) - //LOOP_NUM_AXES(i) update_software_endstops(i); // or modify the constrain function - const bool safe_to_move = current_position.z < delta_clip_start_height - 1; + //LOOP_NUM_AXES(i) motion.update_software_endstops(i); // or modify the constrain function + const bool safe_to_move = motion.position.z < delta_clip_start_height - 1; #else constexpr bool safe_to_move = true; #endif @@ -1341,20 +1338,20 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { #endif #if ENABLED(TOOLCHANGE_FILAMENT_SWAP) - if (should_swap && !too_cold(active_extruder)) + if (should_swap && !too_cold(motion.extruder)) extruder_prime(); // Prime selected Extruder #endif // Prevent a move outside physical bounds #if ENABLED(MAGNETIC_SWITCHING_TOOLHEAD) // If the original position is within tool store area, go to X origin at once - if (destination.y < SWITCHING_TOOLHEAD_Y_POS + SWITCHING_TOOLHEAD_Y_CLEAR) { - current_position.x = X_MIN_POS; - planner.buffer_line(current_position, planner.settings.max_feedrate_mm_s[X_AXIS], new_tool); + if (motion.destination.y < SWITCHING_TOOLHEAD_Y_POS + SWITCHING_TOOLHEAD_Y_CLEAR) { + motion.position.x = X_MIN_POS; + planner.buffer_line(motion.position, planner.settings.max_feedrate_mm_s[X_AXIS], new_tool); planner.synchronize(); } #else - apply_motion_limits(destination); + motion.apply_limits(motion.destination); #endif // Should the nozzle move back to the old position? @@ -1364,27 +1361,27 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { DEBUG_ECHOLNPGM("Move back Z only"); if (TERN1(TOOLCHANGE_PARK, toolchange_settings.enable_park)) - do_blocking_move_to_z(destination.z, planner.settings.max_feedrate_mm_s[Z_AXIS]); + motion.blocking_move_z(motion.destination.z, planner.settings.max_feedrate_mm_s[Z_AXIS]); #else // Move back to the original (or adjusted) position - DEBUG_POS("Move back", destination); + DEBUG_POS("Move back", motion.destination); #if ENABLED(TOOLCHANGE_PARK) - if (toolchange_settings.enable_park) do_blocking_move_to_xy_z(destination, destination.z, MMM_TO_MMS(TOOLCHANGE_PARK_XY_FEEDRATE)); + if (toolchange_settings.enable_park) motion.blocking_move_xy_z(motion.destination, motion.destination.z, MMM_TO_MMS(TOOLCHANGE_PARK_XY_FEEDRATE)); #else - do_blocking_move_to_xy(destination, planner.settings.max_feedrate_mm_s[X_AXIS]* 0.5f); + motion.blocking_move_xy(motion.destination, planner.settings.max_feedrate_mm_s[X_AXIS]* 0.5f); // If using MECHANICAL_SWITCHING extruder/nozzle, set HOTEND_OFFSET in Z axis after running EVENT_GCODE_TOOLCHANGE below. #if NONE(MECHANICAL_SWITCHING_EXTRUDER, MECHANICAL_SWITCHING_NOZZLE) - do_blocking_move_to_z(destination.z, planner.settings.max_feedrate_mm_s[Z_AXIS]); + motion.blocking_move_z(motion.destination.z, planner.settings.max_feedrate_mm_s[Z_AXIS]); SECONDARY_AXIS_CODE( - do_blocking_move_to_i(destination.i, planner.settings.max_feedrate_mm_s[I_AXIS]), - do_blocking_move_to_j(destination.j, planner.settings.max_feedrate_mm_s[J_AXIS]), - do_blocking_move_to_k(destination.k, planner.settings.max_feedrate_mm_s[K_AXIS]), - do_blocking_move_to_u(destination.u, planner.settings.max_feedrate_mm_s[U_AXIS]), - do_blocking_move_to_v(destination.v, planner.settings.max_feedrate_mm_s[V_AXIS]), - do_blocking_move_to_w(destination.w, planner.settings.max_feedrate_mm_s[W_AXIS]) + motion.blocking_move_i(motion.destination.i, planner.settings.max_feedrate_mm_s[I_AXIS]), + motion.blocking_move_j(motion.destination.j, planner.settings.max_feedrate_mm_s[J_AXIS]), + motion.blocking_move_k(motion.destination.k, planner.settings.max_feedrate_mm_s[K_AXIS]), + motion.blocking_move_u(motion.destination.u, planner.settings.max_feedrate_mm_s[U_AXIS]), + motion.blocking_move_v(motion.destination.v, planner.settings.max_feedrate_mm_s[V_AXIS]), + motion.blocking_move_w(motion.destination.w, planner.settings.max_feedrate_mm_s[W_AXIS]) ); #endif #endif @@ -1395,7 +1392,7 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { else DEBUG_ECHOLNPGM("Move back skipped"); #if ENABLED(TOOLCHANGE_FILAMENT_SWAP) - if (should_swap && !too_cold(active_extruder)) { + if (should_swap && !too_cold(motion.extruder)) { extruder_cutting_recover(0); // New extruder primed and set to 0 // Restart Fan @@ -1411,7 +1408,7 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { #if HAS_SWITCHING_NOZZLE // Move back down. (Including when the new tool is higher.) if (!should_move) - do_blocking_move_to_z(destination.z, planner.settings.max_feedrate_mm_s[Z_AXIS]); + motion.blocking_move_z(motion.destination.z, planner.settings.max_feedrate_mm_s[Z_AXIS]); #endif } // (new_tool != old_tool) @@ -1426,7 +1423,7 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { #if ENABLED(EXT_SOLENOID) && DISABLED(PARKING_EXTRUDER) disable_all_solenoids(); - enable_solenoid(active_extruder); + enable_solenoid(motion.extruder); #endif #if HAS_PRUSA_MMU1 @@ -1436,10 +1433,10 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { #if DO_SWITCH_EXTRUDER planner.synchronize(); - move_extruder_servo(active_extruder); + move_extruder_servo(motion.extruder); #endif - TERN_(HAS_FANMUX, fanmux_switch(active_extruder)); + TERN_(HAS_FANMUX, fanmux_switch(motion.extruder)); if (ENABLED(EVENT_GCODE_TOOLCHANGE_ALWAYS_RUN) || !no_move) { @@ -1448,11 +1445,11 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { // Shift the workspace to make custom moves relative to T0. xyz_pos_t old_workspace_offset; if (new_tool > 0) { - old_workspace_offset = workspace_offset; + old_workspace_offset = motion.workspace_offset; const xyz_pos_t &he = hotend_offset[new_tool]; - TERN_(TC_GCODE_USE_GLOBAL_X, workspace_offset.x -= he.x); - TERN_(TC_GCODE_USE_GLOBAL_Y, workspace_offset.y -= he.y); - TERN_(TC_GCODE_USE_GLOBAL_Z, workspace_offset.z -= he.z); + TERN_(TC_GCODE_USE_GLOBAL_X, motion.workspace_offset.x -= he.x); + TERN_(TC_GCODE_USE_GLOBAL_Y, motion.workspace_offset.y -= he.y); + TERN_(TC_GCODE_USE_GLOBAL_Z, motion.workspace_offset.z -= he.z); } #endif @@ -1485,7 +1482,7 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { } #if ANY(TC_GCODE_USE_GLOBAL_X, TC_GCODE_USE_GLOBAL_Y, TC_GCODE_USE_GLOBAL_Z) - if (new_tool > 0) workspace_offset = old_workspace_offset; + if (new_tool > 0) motion.workspace_offset = old_workspace_offset; #endif // If using MECHANICAL_SWITCHING extruder/nozzle, set HOTEND_OFFSET in Z axis after running EVENT_GCODE_TOOLCHANGE @@ -1500,12 +1497,12 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { if (!no_move) { // Move to new hotend Z offset and reverse Z_RAISE - do_blocking_move_to_z( + motion.blocking_move_z( _MIN( - _MAX((destination.z - diff.z) - toolchange_settings.z_raise, - _MAX(TERN(HAS_SOFTWARE_ENDSTOPS, soft_endstop.min.z, Z_MIN_POS), Z_MIN_POS) + _MAX((motion.destination.z - diff.z) - toolchange_settings.z_raise, + _MAX(TERN(HAS_SOFTWARE_ENDSTOPS, motion.soft_endstop.min.z, Z_MIN_POS), Z_MIN_POS) ), - _MIN(TERN(HAS_SOFTWARE_ENDSTOPS, soft_endstop.max.z, Z_MAX_POS), Z_MAX_POS)), + _MIN(TERN(HAS_SOFTWARE_ENDSTOPS, motion.soft_endstop.max.z, Z_MAX_POS), Z_MAX_POS)), planner.settings.max_feedrate_mm_s[Z_AXIS] ); } @@ -1518,7 +1515,7 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { } // !no_move - SERIAL_ECHOLNPGM(STR_ACTIVE_EXTRUDER, active_extruder); + SERIAL_ECHOLNPGM(STR_ACTIVE_EXTRUDER, motion.extruder); #endif // HAS_MULTI_EXTRUDER } @@ -1530,33 +1527,33 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { bool extruder_migration() { - if (thermalManager.targetTooColdToExtrude(active_extruder)) { + if (thermalManager.targetTooColdToExtrude(motion.extruder)) { DEBUG_ECHOLNPGM("Migration Source Too Cold"); return false; } // No auto-migration or specified target? - if (!migration.target && active_extruder >= migration.last) { + if (!migration.target && motion.extruder >= migration.last) { DEBUG_ECHO_MSG("No Migration Target"); - DEBUG_ECHO_MSG("Target: ", migration.target, " Last: ", migration.last, " Active: ", active_extruder); + DEBUG_ECHO_MSG("Target: ", migration.target, " Last: ", migration.last, " Active: ", motion.extruder); migration.automode = false; return false; } // Migrate to a target or the next extruder - uint8_t migration_extruder = active_extruder; + uint8_t migration_extruder = motion.extruder; if (migration.target) { DEBUG_ECHOLNPGM("Migration using fixed target"); // Specified target ok? const int16_t t = migration.target - 1; - if (t != active_extruder) migration_extruder = t; + if (t != motion.extruder) migration_extruder = t; } else if (migration.automode && migration_extruder < migration.last && migration_extruder < EXTRUDERS - 1) migration_extruder++; - if (migration_extruder == active_extruder) { + if (migration_extruder == motion.extruder) { DEBUG_ECHOLNPGM("Migration source matches active"); return false; } @@ -1568,26 +1565,26 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { planner.synchronize(); // Remember position before migration - const float resume_current_e = current_position.e; + const float resume_current_e = motion.position.e; // Migrate the flow - planner.set_flow(migration_extruder, planner.flow_percentage[active_extruder]); + planner.set_flow(migration_extruder, planner.flow_percentage[motion.extruder]); // Migrate the retracted state #if ENABLED(FWRETRACT) - fwretract.retracted.set(migration_extruder, fwretract.retracted[active_extruder]); + fwretract.retracted.set(migration_extruder, fwretract.retracted[motion.extruder]); #endif // Migrate the temperature to the new hotend #if HAS_MULTI_HOTEND - thermalManager.setTargetHotend(thermalManager.degTargetHotend(active_extruder), migration_extruder); + thermalManager.setTargetHotend(thermalManager.degTargetHotend(motion.extruder), migration_extruder); TERN_(AUTOTEMP, thermalManager.autotemp_update()); thermalManager.set_heating_message(0); - thermalManager.wait_for_hotend(active_extruder); + thermalManager.wait_for_hotend(motion.extruder); #endif // Migrate Linear Advance K factor to the new extruder - TERN_(HAS_LIN_ADVANCE_K, planner.set_advance_k(planner.get_advance_k(migration_extruder), active_extruder)); + TERN_(HAS_LIN_ADVANCE_K, planner.set_advance_k(planner.get_advance_k(migration_extruder), motion.extruder)); // Temporary migration toolchange_settings restored on exit. i.e., before next tool_change(). #if defined(MIGRATION_FS_EXTRA_PRIME) \ @@ -1622,23 +1619,23 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) { // Retract if previously retracted #if ENABLED(FWRETRACT) - if (fwretract.retracted[active_extruder]) - unscaled_e_move(-fwretract.settings.retract_length, fwretract.settings.retract_feedrate_mm_s); + if (fwretract.retracted[motion.extruder]) + motion.unscaled_e_move(-fwretract.settings.retract_length, fwretract.settings.retract_feedrate_mm_s); #endif // If resume_position is negative - if (resume_current_e < 0) unscaled_e_move(resume_current_e, MMM_TO_MMS(toolchange_settings.retract_speed)); + if (resume_current_e < 0) motion.unscaled_e_move(resume_current_e, MMM_TO_MMS(toolchange_settings.retract_speed)); // If no available extruder - if (EXTRUDERS < 2 || active_extruder >= EXTRUDERS - 2 || active_extruder == migration.last) + if (EXTRUDERS < 2 || motion.extruder >= EXTRUDERS - 2 || motion.extruder == migration.last) migration.automode = false; migration.in_progress = false; - current_position.e = resume_current_e; + motion.position.e = resume_current_e; planner.synchronize(); - planner.set_e_position_mm(current_position.e); // New extruder primed and ready + planner.set_e_position_mm(motion.position.e); // New extruder primed and ready DEBUG_ECHOLNPGM("Migration Complete"); return true; From ab9e452d40ce6ac1b245082ed30605a05c71c5d4 Mon Sep 17 00:00:00 2001 From: thinkyhead Date: Wed, 11 Feb 2026 00:48:18 +0000 Subject: [PATCH 38/38] [cron] Bump distribution date (2026-02-11) --- Marlin/Version.h | 2 +- Marlin/src/inc/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Version.h b/Marlin/Version.h index de43e449a2..016f480a8b 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2026-02-10" +//#define STRING_DISTRIBUTION_DATE "2026-02-11" /** * The protocol for communication to the host. Protocol indicates communication diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 6d2a859aee..3a1689dda5 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2026-02-10" + #define STRING_DISTRIBUTION_DATE "2026-02-11" #endif /**