Browse Source

Merge remote-tracking branch 'upstream/MK3' into MK3_PAT9125_I2C

Yuri D'Elia 3 years ago
parent
commit
31b3ad0613
84 changed files with 16793 additions and 16375 deletions
  1. 3 3
      Firmware/Configuration.h
  2. 18 2
      Firmware/Configuration_adv.h
  3. 10 15
      Firmware/Dcodes.cpp
  4. 7 13
      Firmware/Marlin.h
  5. 2 2
      Firmware/MarlinSerial.cpp
  6. 462 290
      Firmware/Marlin_main.cpp
  7. 4 1
      Firmware/Sd2Card.cpp
  8. 2 2
      Firmware/Timer.h
  9. 1 1
      Firmware/adc.c
  10. 4 4
      Firmware/backlight.cpp
  11. 4 4
      Firmware/bootapp.c
  12. 29 14
      Firmware/cardreader.cpp
  13. 2 2
      Firmware/cardreader.h
  14. 17 7
      Firmware/cmdqueue.cpp
  15. 4 3
      Firmware/cmdqueue.h
  16. 4 0
      Firmware/eeprom.cpp
  17. 15 58
      Firmware/eeprom.h
  18. 11 19
      Firmware/fastio.h
  19. 1 0
      Firmware/first_lay_cal.cpp
  20. 15 17
      Firmware/fsensor.cpp
  21. 0 1
      Firmware/heatbed_pwm.cpp
  22. 0 374
      Firmware/io_atmega2560.h
  23. 1 1
      Firmware/la10compat.cpp
  24. 3 3
      Firmware/language.c
  25. 1 3
      Firmware/language.h
  26. 7 1
      Firmware/lcd.cpp
  27. 4 1
      Firmware/lcd.h
  28. 90 0
      Firmware/macros.h
  29. 8 3
      Firmware/menu.cpp
  30. 2 1
      Firmware/menu.h
  31. 19 10
      Firmware/mesh_bed_calibration.cpp
  32. 24 4
      Firmware/messages.c
  33. 21 0
      Firmware/messages.h
  34. 38 40
      Firmware/mmu.cpp
  35. 2 0
      Firmware/pins_Einsy_1_0.h
  36. 45 1
      Firmware/sm4.c
  37. 1 0
      Firmware/sm4.h
  38. 183 110
      Firmware/stepper.cpp
  39. 29 29
      Firmware/swi2c.c
  40. 16 5
      Firmware/temperature.cpp
  41. 0 3
      Firmware/timer02.c
  42. 45 19
      Firmware/tmc2130.cpp
  43. 12 0
      Firmware/tmc2130.h
  44. 3 2
      Firmware/tone04.c
  45. 4 3
      Firmware/uart2.c
  46. 481 748
      Firmware/ultralcd.cpp
  47. 5 2
      Firmware/ultralcd.h
  48. 4 4
      Firmware/util.cpp
  49. 1 0
      Firmware/util.h
  50. 4 0
      Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h
  51. 3 0
      Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h
  52. 6 0
      Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h
  53. 6 0
      Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h
  54. 6 0
      Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h
  55. 6 0
      Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h
  56. 7 3
      Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h
  57. 7 3
      Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h
  58. 4 4
      Firmware/w25x20cl.c
  59. 633 460
      Firmware/xyzcal.cpp
  60. 0 14
      Firmware/xyzcal.h
  61. 259 65
      PF-build.sh
  62. 14 11
      README.md
  63. 2 2
      lang/lang-build.sh
  64. 0 0
      lang/lang-check.py
  65. 41 35
      lang/lang_en.txt
  66. 46 38
      lang/lang_en_cz.txt
  67. 49 41
      lang/lang_en_de.txt
  68. 48 40
      lang/lang_en_es.txt
  69. 46 38
      lang/lang_en_fr.txt
  70. 47 39
      lang/lang_en_it.txt
  71. 47 39
      lang/lang_en_pl.txt
  72. 389 379
      lang/po/Firmware.pot
  73. 390 380
      lang/po/Firmware_cs.po
  74. 393 383
      lang/po/Firmware_de.po
  75. 392 382
      lang/po/Firmware_es.po
  76. 390 380
      lang/po/Firmware_fr.po
  77. 391 381
      lang/po/Firmware_it.po
  78. 391 381
      lang/po/Firmware_pl.po
  79. 1852 1842
      lang/po/new/cs.po
  80. 1852 1842
      lang/po/new/de.po
  81. 1852 1842
      lang/po/new/es.po
  82. 1852 1842
      lang/po/new/fr.po
  83. 1852 1842
      lang/po/new/it.po
  84. 1852 1842
      lang/po/new/pl.po

+ 3 - 3
Firmware/Configuration.h

@@ -16,8 +16,8 @@ extern uint16_t nPrinterType;
 extern PGM_P sPrinterName;
 
 // Firmware version
-#define FW_VERSION "3.9.0"
-#define FW_COMMIT_NR 3421
+#define FW_VERSION "3.9.3"
+#define FW_COMMIT_NR 3556
 // FW_VERSION_UNKNOWN means this is an unofficial build.
 // The firmware should only be checked into github with this symbol.
 #define FW_DEV_VERSION FW_VERSION_UNKNOWN
@@ -552,7 +552,7 @@ enum CalibrationStatus
 // Try to maintain a minimum distance from the bed even when Z is
 // unknown when doing the following operations
 #define MIN_Z_FOR_LOAD    50
-#define MIN_Z_FOR_UNLOAD  20
+#define MIN_Z_FOR_UNLOAD  50
 #define MIN_Z_FOR_PREHEAT 10
 
 #include "Configuration_adv.h"

+ 18 - 2
Firmware/Configuration_adv.h

@@ -62,8 +62,19 @@
 // before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu)
 #define FAN_KICKSTART_TIME 800
 
-
-
+/**
+ * Auto-report all at once with M155 S<seconds> C[bitmask] with single timer
+ * 
+ * bit 0 = Auto-report temperatures
+ * bit 1 = Auto-report fans
+ * bit 2 = Auto-report position
+ * bit 3 = free
+ * bit 4 = free
+ * bit 5 = free
+ * bit 6 = free
+ * bit 7 = free
+*/
+#define AUTO_REPORT
 
 //===========================================================================
 //=============================Mechanical Settings===========================
@@ -376,6 +387,11 @@ const unsigned int dropsegments=5; //everything with less than this number of st
   #endif
 #endif
 
+/**
+ * Include capabilities in M115 output
+ */
+#define EXTENDED_CAPABILITIES_REPORT
+
 //===========================================================================
 //=============================  Define Defines  ============================
 //===========================================================================

+ 10 - 15
Firmware/Dcodes.cpp

@@ -1,5 +1,5 @@
 #include "Dcodes.h"
-//#include "Marlin.h"
+#include "Marlin.h"
 #include "Configuration.h"
 #include "language.h"
 #include "cmdqueue.h"
@@ -204,7 +204,7 @@ extern float axis_steps_per_unit[NUM_AXIS];
     */
 void dcode__1()
 {
-	printf_P(PSTR("D-1 - Endless loop\n"));
+	DBG(_N("D-1 - Endless loop\n"));
 //	cli();
 	while (1);
 }
@@ -226,9 +226,7 @@ void dcode_0()
 	LOG("D0 - Reset\n");
 	if (code_seen('B')) //bootloader
 	{
-		cli();
-		wdt_enable(WDTO_15MS);
-		while(1);
+		softReset();
 	}
 	else //reset
 	{
@@ -252,8 +250,7 @@ void dcode_1()
 	cli();
 	for (int i = 0; i < 8192; i++)
 		eeprom_write_byte((unsigned char*)i, (unsigned char)0xff);
-	wdt_enable(WDTO_15MS);
-	while(1);
+	softReset();
 }
 
     /*!
@@ -383,7 +380,7 @@ void dcode_4()
    */
 void dcode_5()
 {
-	printf_P(PSTR("D5 - Read/Write FLASH\n"));
+	puts_P(PSTR("D5 - Read/Write FLASH"));
 	uint32_t address = 0x0000; //default 0x0000
 	uint16_t count = 0x0400; //default 0x0400 (1kb block)
 	if (code_seen('A')) // Address (0x00000-0x3ffff)
@@ -420,8 +417,7 @@ void dcode_5()
 		boot_dst_addr = (uint32_t)address;
 		boot_src_addr = (uint32_t)(&data);
 		bootapp_print_vars();
-		wdt_enable(WDTO_15MS);
-		while(1);
+		softReset();
 	}
 	while (count)
 	{
@@ -467,8 +463,7 @@ void dcode_7()
 	boot_copy_size = (uint16_t)0xc00;
 	boot_src_addr = (uint32_t)0x0003e400;
 	boot_dst_addr = (uint32_t)0x0003f400;
-	wdt_enable(WDTO_15MS);
-	while(1);
+	softReset();
 */
 }
 
@@ -486,7 +481,7 @@ void dcode_7()
     */
 void dcode_8()
 {
-	printf_P(PSTR("D8 - Read/Write PINDA\n"));
+	puts_P(PSTR("D8 - Read/Write PINDA"));
 	uint8_t cal_status = calibration_status_pinda();
 	float temp_pinda = current_temperature_pinda;
 	float offset_z = temp_compensation_pinda_thermistor_offset(temp_pinda);
@@ -592,7 +587,7 @@ uint16_t dcode_9_ADC_val(uint8_t i)
 
 void dcode_9()
 {
-	printf_P(PSTR("D9 - Read/Write ADC\n"));
+	puts_P(PSTR("D9 - Read/Write ADC"));
 	if ((strchr_pointer[1+1] == '?') || (strchr_pointer[1+1] == 0))
 	{
 		for (uint8_t i = 0; i < ADC_CHAN_CNT; i++)
@@ -789,7 +784,7 @@ extern void st_synchronize();
 	*/
 void dcode_2130()
 {
-	printf_P(PSTR("D2130 - TMC2130\n"));
+	puts_P(PSTR("D2130 - TMC2130"));
 	uint8_t axis = 0xff;
 	switch (strchr_pointer[1+4])
 	{

+ 7 - 13
Firmware/Marlin.h

@@ -4,7 +4,7 @@
 #ifndef MARLIN_H
 #define MARLIN_H
 
-#define  FORCE_INLINE __attribute__((always_inline)) inline
+#include "macros.h"
 
 #include <math.h>
 #include <stdio.h>
@@ -116,7 +116,6 @@ void serial_echopair_P(const char *s_P, unsigned long v);
 void serialprintPGM(const char *str);
 
 bool is_buffer_empty();
-void get_command();
 void process_commands();
 void ramming();
 
@@ -241,23 +240,12 @@ void Stop();
 bool IsStopped();
 void finishAndDisableSteppers();
 
-//put an ASCII command at the end of the current buffer.
-void enquecommand(const char *cmd, bool from_progmem = false);
-
 //put an ASCII command at the end of the current buffer, read from flash
 #define enquecommand_P(cmd) enquecommand(cmd, true)
 
-//put an ASCII command at the begin of the current buffer
-void enquecommand_front(const char *cmd, bool from_progmem = false);
-
 //put an ASCII command at the begin of the current buffer, read from flash
 #define enquecommand_front_P(cmd) enquecommand_front(cmd, true)
 
-void repeatcommand_front();
-
-// Remove all lines from the command queue.
-void cmdqueue_reset();
-
 void prepare_arc_move(char isclockwise);
 void clamp_to_software_endstops(float target[3]);
 void refresh_cmd_timeout(void);
@@ -301,6 +289,7 @@ extern float min_pos[3];
 extern float max_pos[3];
 extern bool axis_known_position[3];
 extern int fanSpeed;
+extern uint8_t newFanSpeed;
 extern int8_t lcd_change_fil_state;
 extern float default_retraction;
 
@@ -492,6 +481,9 @@ void force_high_power_mode(bool start_high_power_section);
 
 bool gcode_M45(bool onlyZ, int8_t verbosity_level);
 void gcode_M114();
+#if (defined(FANCHECK) && (((defined(TACH_0) && (TACH_0 >-1)) || (defined(TACH_1) && (TACH_1 > -1)))))
+void gcode_M123();
+#endif //FANCHECK and TACH_0 and TACH_1
 void gcode_M701();
 
 #define UVLO !(PINE & (1<<4))
@@ -507,4 +499,6 @@ void load_filament_final_feed();
 void marlin_wait_for_click();
 void raise_z_above(float target, bool plan=true);
 
+extern "C" void softReset();
+
 #endif

+ 2 - 2
Firmware/MarlinSerial.cpp

@@ -255,7 +255,7 @@ void MarlinSerial::print(double n, int digits)
 
 void MarlinSerial::println(void)
 {
-  print('\r');
+  // print('\r');
   print('\n');  
 }
 
@@ -359,7 +359,7 @@ void MarlinSerial::printFloat(double number, uint8_t digits)
 
   // Print the decimal point, but only if there are digits beyond
   if (digits > 0)
-    print("."); 
+    print('.'); 
 
   // Extract digits from the remainder one at a time
   while (digits-- > 0)

+ 462 - 290
Firmware/Marlin_main.cpp

@@ -47,7 +47,9 @@
 #include "Configuration.h"
 #include "Marlin.h"
 #include "config.h"
-  
+
+#include "macros.h"
+
 #ifdef ENABLE_AUTO_BED_LEVELING
 #include "vector_3.h"
   #ifdef AUTO_BED_LEVELING_GRID
@@ -132,12 +134,6 @@
 #include "sound.h"
 
 #include "cmdqueue.h"
-#include "io_atmega2560.h"
-
-// Macros for bit masks
-#define BIT(b) (1<<(b))
-#define TEST(n,b) (((n)&BIT(b))!=0)
-#define SET_BIT(n,b,value) (n) ^= ((-value)^(n)) & (BIT(b))
 
 //Macro for print fan speed
 #define FAN_PULSE_WIDTH_LIMIT ((fanSpeed > 100) ? 3 : 4) //time in ms
@@ -269,6 +265,7 @@ float extruder_offset[NUM_EXTRUDER_OFFSETS][EXTRUDERS] = {
 
 uint8_t active_extruder = 0;
 int fanSpeed=0;
+uint8_t newFanSpeed = 0;
 
 #ifdef FWRETRACT
   bool retracted[EXTRUDERS]={false
@@ -306,6 +303,7 @@ uint8_t host_keepalive_interval = HOST_KEEPALIVE_INTERVAL;
 
 const char errormagic[] PROGMEM = "Error:";
 const char echomagic[] PROGMEM = "echo:";
+const char G28W0[] PROGMEM = "G28 W0";
 
 bool no_response = false;
 uint8_t important_status;
@@ -388,6 +386,59 @@ static int saved_fanSpeed = 0; //!< Print fan speed
 
 static int saved_feedmultiply_mm = 100;
 
+class AutoReportFeatures {
+    union {
+          struct {
+            uint8_t temp : 1; //Temperature flag
+            uint8_t fans : 1; //Fans flag
+            uint8_t pos: 1;   //Position flag
+            uint8_t ar4 : 1;  //Unused
+            uint8_t ar5 : 1;  //Unused
+            uint8_t ar6 : 1;  //Unused
+            uint8_t ar7 : 1;  //Unused
+          } __attribute__((packed)) bits;
+          uint8_t byte;
+        } arFunctionsActive;
+    uint8_t auto_report_period;
+public:
+    LongTimer auto_report_timer;
+    AutoReportFeatures():auto_report_period(0){ 
+#if defined(AUTO_REPORT)
+        arFunctionsActive.byte = 0xff; 
+#else
+        arFunctionsActive.byte = 0;
+#endif //AUTO_REPORT
+    }
+    
+    inline bool Temp()const { return arFunctionsActive.bits.temp != 0; }
+    inline void SetTemp(uint8_t v){ arFunctionsActive.bits.temp = v; }
+
+    inline bool Fans()const { return arFunctionsActive.bits.fans != 0; }
+    inline void SetFans(uint8_t v){ arFunctionsActive.bits.fans = v; }
+
+    inline bool Pos()const { return arFunctionsActive.bits.pos != 0; }
+    inline void SetPos(uint8_t v){ arFunctionsActive.bits.pos = v; }
+    
+    inline void SetMask(uint8_t mask){ arFunctionsActive.byte = mask; }
+    
+    /// sets the autoreporting timer's period
+    /// setting it to zero stops the timer
+    void SetPeriod(uint8_t p){
+        auto_report_period = p;
+        if (auto_report_period != 0){
+          auto_report_timer.start();
+        } else{
+          auto_report_timer.stop();
+        }
+    }
+    
+    inline void TimerStart() { auto_report_timer.start(); }
+    inline bool TimerRunning()const { return auto_report_timer.running(); }
+    inline bool TimerExpired() { return auto_report_timer.expired(auto_report_period * 1000ul); }
+};
+
+AutoReportFeatures autoReportFeatures;
+
 //===========================================================================
 //=============================Routines======================================
 //===========================================================================
@@ -397,6 +448,7 @@ static bool setTargetedHotend(int code, uint8_t &extruder);
 static void print_time_remaining_init();
 static void wait_for_heater(long codenum, uint8_t extruder);
 static void gcode_G28(bool home_x_axis, bool home_y_axis, bool home_z_axis);
+static void gcode_M105(uint8_t extruder);
 static void temp_compensation_start();
 static void temp_compensation_apply();
 
@@ -624,7 +676,7 @@ void crashdet_cancel()
 		lcd_print_stop();
 	}else if(saved_printing_type == PRINTING_TYPE_USB){
 		SERIAL_ECHOLNRPGM(MSG_OCTOPRINT_CANCEL); //for Octoprint: works the same as clicking "Abort" button in Octoprint GUI
-		SERIAL_PROTOCOLLNRPGM(MSG_OK);
+		cmdqueue_reset();
 	}
 }
 
@@ -643,6 +695,12 @@ void failstats_reset_print()
 #endif
 }
 
+void softReset()
+{
+    cli();
+    wdt_enable(WDTO_15MS);
+    while(1);
+}
 
 
 #ifdef MESH_BED_LEVELING
@@ -701,10 +759,8 @@ static void factory_reset(char level)
             // Force the "Follow calibration flow" message at the next boot up.
             calibration_status_store(CALIBRATION_STATUS_Z_CALIBRATION);
 			eeprom_write_byte((uint8_t*)EEPROM_WIZARD_ACTIVE, 1); //run wizard
-            farm_no = 0;
 			farm_mode = false;
 			eeprom_update_byte((uint8_t*)EEPROM_FARM_MODE, farm_mode);
-            EEPROM_save_B(EEPROM_FARM_NUMBER, &farm_no);
 
             eeprom_update_dword((uint32_t *)EEPROM_TOTALTIME, 0);
             eeprom_update_dword((uint32_t *)EEPROM_FILAMENTUSED, 0);
@@ -757,6 +813,7 @@ static void factory_reset(char level)
 				}
 
 			}
+			softReset();
 
 
 			break;
@@ -865,7 +922,7 @@ static void check_if_fw_is_on_right_printer(){
 
     #ifdef PAT9125
       //will return 1 only if IR can detect filament in bondtech extruder so this may fail even when we have IR sensor
-      const uint8_t ir_detected = !(PIN_GET(IR_SENSOR_PIN));
+      const uint8_t ir_detected = !READ(IR_SENSOR_PIN);
       if (ir_detected){
         lcd_show_fullscreen_message_and_wait_P(_i("MK3 firmware detected on MK3S printer"));}////c=20 r=3
     #endif //PAT9125
@@ -953,10 +1010,10 @@ uint8_t lang_xflash_enum_codes(uint16_t* codes)
 		w25x20cl_rd_data(addr, (uint8_t*)&header, sizeof(lang_table_header_t));
 		if (header.magic != LANG_MAGIC)
 		{
-			printf_P(_n("NG!\n"));
+			puts_P(_n("NG!"));
 			break;
 		}
-		printf_P(_n("OK\n"));
+		puts_P(_n("OK"));
 		printf_P(_n(" _lt_magic        = 0x%08lx %S\n"), header.magic, (header.magic==LANG_MAGIC)?_n("OK"):_n("NA"));
 		printf_P(_n(" _lt_size         = 0x%04x (%d)\n"), header.size, header.size);
 		printf_P(_n(" _lt_count        = 0x%04x (%d)\n"), header.count, header.count);
@@ -1035,16 +1092,16 @@ void setup()
 	setup_powerhold();
 
 	farm_mode = eeprom_read_byte((uint8_t*)EEPROM_FARM_MODE); 
-	EEPROM_read_B(EEPROM_FARM_NUMBER, &farm_no);
-	if ((farm_mode == 0xFF && farm_no == 0) || ((uint16_t)farm_no == 0xFFFF)) 
+	if (farm_mode == 0xFF) 
 		farm_mode = false; //if farm_mode has not been stored to eeprom yet and farm number is set to zero or EEPROM is fresh, deactivate farm mode
-	if ((uint16_t)farm_no == 0xFFFF) farm_no = 0;
 	if (farm_mode)
 	{
 		no_response = true; //we need confirmation by recieving PRUSA thx
 		important_status = 8;
 		prusa_statistics(8);
+#ifdef HAS_SECOND_SERIAL_PORT
 		selectedSerialPort = 1;
+#endif //HAS_SECOND_SERIAL_PORT
 		MYSERIAL.begin(BAUDRATE);
 #ifdef TMC2130
 		//increased extruder current (PFW363)
@@ -1066,7 +1123,7 @@ void setup()
 		SERIAL_PROTOCOLLNPGM("start");
 #endif
 	SERIAL_ECHO_START;
-	printf_P(PSTR(" " FW_VERSION_FULL "\n"));
+	puts_P(PSTR(" " FW_VERSION_FULL));
 
 	//SERIAL_ECHOPAIR("Active sheet before:", static_cast<unsigned long int>(eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet))));
 
@@ -1156,12 +1213,12 @@ void setup()
 		printf_P(_n("_SEC_LANG_TABLE checksum = %04x\n"), sum);
 		sum = (sum >> 8) | ((sum & 0xff) << 8); //swap bytes
 		if (sum == header.checksum)
-			printf_P(_n("Checksum OK\n"), sum);
+			puts_P(_n("Checksum OK"), sum);
 		else
-			printf_P(_n("Checksum NG\n"), sum);
+			puts_P(_n("Checksum NG"), sum);
 	}
 	else
-		printf_P(_n("lang_get_header failed!\n"));
+		puts_P(_n("lang_get_header failed!"));
 
 #if 0
 		for (uint16_t i = 0; i < 1024*10; i++)
@@ -1241,7 +1298,7 @@ void setup()
 	else
 	{
 	    w25x20cl_err_msg();
-	    printf_P(_n("W25X20CL not responding.\n"));
+	    puts_P(_n("W25X20CL not responding."));
 	}
 #ifdef EXTRUDER_ALTFAN_DETECT
 	SERIAL_ECHORPGM(_n("Extruder fan type: "));
@@ -1354,9 +1411,7 @@ void setup()
 #endif
 
 	farm_mode = eeprom_read_byte((uint8_t*)EEPROM_FARM_MODE);
-	EEPROM_read_B(EEPROM_FARM_NUMBER, &farm_no);
-	if ((farm_mode == 0xFF && farm_no == 0) || (farm_no == static_cast<int>(0xFFFF))) farm_mode = false; //if farm_mode has not been stored to eeprom yet and farm number is set to zero or EEPROM is fresh, deactivate farm mode
-	if (farm_no == static_cast<int>(0xFFFF)) farm_no = 0;
+	if (farm_mode == 0xFF) farm_mode = false; //if farm_mode has not been stored to eeprom yet and farm number is set to zero or EEPROM is fresh, deactivate farm mode
 	if (farm_mode)
 	{
 		prusa_statistics(8);
@@ -1713,6 +1768,28 @@ void host_keepalive() {
 #endif //HOST_KEEPALIVE_FEATURE
   if (farm_mode) return;
   long ms = _millis();
+
+#if defined(AUTO_REPORT)
+  {
+    if (autoReportFeatures.TimerExpired())
+    {
+      if(autoReportFeatures.Temp()){
+        gcode_M105(active_extruder);
+      }
+      if(autoReportFeatures.Pos()){
+        gcode_M114();
+      }
+ #if defined(AUTO_REPORT) && (defined(FANCHECK) && (((defined(TACH_0) && (TACH_0 >-1)) || (defined(TACH_1) && (TACH_1 > -1)))))      
+      if(autoReportFeatures.Fans()){
+        gcode_M123();
+      }
+#endif //AUTO_REPORT and (FANCHECK and TACH_0 or TACH_1)
+     autoReportFeatures.TimerStart();
+    }
+  }
+#endif //AUTO_REPORT
+
+
   if (host_keepalive_interval && busy_state != NOT_BUSY) {
     if ((ms - prev_busy_signal_ms) < (long)(1000L * host_keepalive_interval)) return;
      switch (busy_state) {
@@ -2098,7 +2175,7 @@ bool check_commands() {
 	
 		while (buflen)
 		{
-		if ((code_seen("M84")) || (code_seen("M 84"))) end_command_found = true;
+		if ((code_seen_P(PSTR("M84"))) || (code_seen_P(PSTR("M 84")))) end_command_found = true;
 		if (!cmdbuffer_front_already_processed)
 			 cmdqueue_pop_front();
 		cmdbuffer_front_already_processed = false;
@@ -2516,6 +2593,95 @@ void force_high_power_mode(bool start_high_power_section) {
 }
 #endif //TMC2130
 
+void gcode_M105(uint8_t extruder)
+{
+#if defined(TEMP_0_PIN) && TEMP_0_PIN > -1
+    SERIAL_PROTOCOLPGM("T:");
+    SERIAL_PROTOCOL_F(degHotend(extruder),1);
+    SERIAL_PROTOCOLPGM(" /");
+    SERIAL_PROTOCOL_F(degTargetHotend(extruder),1);
+#if defined(TEMP_BED_PIN) && TEMP_BED_PIN > -1
+    SERIAL_PROTOCOLPGM(" B:");
+    SERIAL_PROTOCOL_F(degBed(),1);
+    SERIAL_PROTOCOLPGM(" /");
+    SERIAL_PROTOCOL_F(degTargetBed(),1);
+#endif //TEMP_BED_PIN
+    for (int8_t cur_extruder = 0; cur_extruder < EXTRUDERS; ++cur_extruder) {
+        SERIAL_PROTOCOLPGM(" T");
+        SERIAL_PROTOCOL(cur_extruder);
+        SERIAL_PROTOCOL(':');
+        SERIAL_PROTOCOL_F(degHotend(cur_extruder),1);
+        SERIAL_PROTOCOLPGM(" /");
+        SERIAL_PROTOCOL_F(degTargetHotend(cur_extruder),1);
+    }
+#else
+    SERIAL_ERROR_START;
+    SERIAL_ERRORLNRPGM(_i("No thermistors - no temperature"));////MSG_ERR_NO_THERMISTORS
+#endif
+
+    SERIAL_PROTOCOLPGM(" @:");
+#ifdef EXTRUDER_WATTS
+    SERIAL_PROTOCOL((EXTRUDER_WATTS * getHeaterPower(tmp_extruder))/127);
+    SERIAL_PROTOCOLPGM("W");
+#else
+    SERIAL_PROTOCOL(getHeaterPower(extruder));
+#endif
+
+    SERIAL_PROTOCOLPGM(" B@:");
+#ifdef BED_WATTS
+    SERIAL_PROTOCOL((BED_WATTS * getHeaterPower(-1))/127);
+    SERIAL_PROTOCOLPGM("W");
+#else
+    SERIAL_PROTOCOL(getHeaterPower(-1));
+#endif
+
+#ifdef PINDA_THERMISTOR
+    SERIAL_PROTOCOLPGM(" P:");
+    SERIAL_PROTOCOL_F(current_temperature_pinda,1);
+#endif //PINDA_THERMISTOR
+
+#ifdef AMBIENT_THERMISTOR
+    SERIAL_PROTOCOLPGM(" A:");
+    SERIAL_PROTOCOL_F(current_temperature_ambient,1);
+#endif //AMBIENT_THERMISTOR
+
+
+#ifdef SHOW_TEMP_ADC_VALUES
+    {
+        float raw = 0.0;
+#if defined(TEMP_BED_PIN) && TEMP_BED_PIN > -1
+        SERIAL_PROTOCOLPGM("    ADC B:");
+        SERIAL_PROTOCOL_F(degBed(),1);
+        SERIAL_PROTOCOLPGM("C->");
+        raw = rawBedTemp();
+        SERIAL_PROTOCOL_F(raw/OVERSAMPLENR,5);
+        SERIAL_PROTOCOLPGM(" Rb->");
+        SERIAL_PROTOCOL_F(100 * (1 + (PtA * (raw/OVERSAMPLENR)) + (PtB * sq((raw/OVERSAMPLENR)))), 5);
+        SERIAL_PROTOCOLPGM(" Rxb->");
+        SERIAL_PROTOCOL_F(raw, 5);
+#endif
+        for (int8_t cur_extruder = 0; cur_extruder < EXTRUDERS; ++cur_extruder) {
+            SERIAL_PROTOCOLPGM("  T");
+            SERIAL_PROTOCOL(cur_extruder);
+            SERIAL_PROTOCOLPGM(":");
+            SERIAL_PROTOCOL_F(degHotend(cur_extruder),1);
+            SERIAL_PROTOCOLPGM("C->");
+            raw = rawHotendTemp(cur_extruder);
+            SERIAL_PROTOCOL_F(raw/OVERSAMPLENR,5);
+            SERIAL_PROTOCOLPGM(" Rt");
+            SERIAL_PROTOCOL(cur_extruder);
+            SERIAL_PROTOCOLPGM("->");
+            SERIAL_PROTOCOL_F(100 * (1 + (PtA * (raw/OVERSAMPLENR)) + (PtB * sq((raw/OVERSAMPLENR)))), 5);
+            SERIAL_PROTOCOLPGM(" Rx");
+            SERIAL_PROTOCOL(cur_extruder);
+            SERIAL_PROTOCOLPGM("->");
+            SERIAL_PROTOCOL_F(raw, 5);
+        }
+    }
+#endif
+    SERIAL_PROTOCOLLN();
+}
+
 #ifdef TMC2130
 static void gcode_G28(bool home_x_axis, long home_x_value, bool home_y_axis, long home_y_value, bool home_z_axis, long home_z_value, bool calib, bool without_mbl)
 #else
@@ -3046,8 +3212,15 @@ void gcode_M114()
 	SERIAL_PROTOCOLPGM(" E:");
 	SERIAL_PROTOCOL(float(st_get_position(E_AXIS)) / cs.axis_steps_per_unit[E_AXIS]);
 
-	SERIAL_PROTOCOLLN("");
+	SERIAL_PROTOCOLLN();
+}
+
+#if (defined(FANCHECK) && (((defined(TACH_0) && (TACH_0 >-1)) || (defined(TACH_1) && (TACH_1 > -1)))))
+void gcode_M123()
+{
+  printf_P(_N("E0:%d RPM PRN1:%d RPM E0@:%u PRN1@:%d\n"), 60*fan_speed[active_extruder], 60*fan_speed[1], newFanSpeed, fanSpeed);
 }
+#endif //FANCHECK and TACH_0 or TACH_1
 
 //! extracted code to compute z_shift for M600 in case of filament change operation 
 //! requested from fsensors.
@@ -3130,8 +3303,7 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float
         if (lcd_change_fil_state == 0)
         {
 			lcd_clear();
-			lcd_set_cursor(0, 2);
-			lcd_puts_P(_T(MSG_PLEASE_WAIT));
+			lcd_puts_at_P(0, 2, _T(MSG_PLEASE_WAIT));
 			current_position[X_AXIS] -= 100;
 			plan_buffer_line_curposXYZE(FILAMENTCHANGE_XYFEED);
 			st_synchronize();
@@ -3147,8 +3319,7 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float
             if (saved_printing) {
 
                 lcd_clear();
-                lcd_set_cursor(0, 2);
-                lcd_puts_P(_T(MSG_PLEASE_WAIT));
+                lcd_puts_at_P(0, 2, _T(MSG_PLEASE_WAIT));
 
                 mmu_command(MmuCmd::R0);
                 manage_response(false, false);
@@ -3279,37 +3450,24 @@ void gcode_M701()
  */
 static void gcode_PRUSA_SN()
 {
-    if (farm_mode) {
-        selectedSerialPort = 0;
-        putchar(';');
-        putchar('S');
-        int numbersRead = 0;
-        ShortTimer timeout;
-        timeout.start();
-
-        while (numbersRead < 19) {
-            while (MSerial.available() > 0) {
-                uint8_t serial_char = MSerial.read();
-                selectedSerialPort = 1;
-                putchar(serial_char);
-                numbersRead++;
-                selectedSerialPort = 0;
-            }
-            if (timeout.expired(100u)) break;
-        }
-        selectedSerialPort = 1;
-        putchar('\n');
-#if 0
-        for (int b = 0; b < 3; b++) {
-            _tone(BEEPER, 110);
-            _delay(50);
-            _noTone(BEEPER);
-            _delay(50);
+    uint8_t selectedSerialPort_bak = selectedSerialPort;
+    char SN[20];
+    selectedSerialPort = 0;
+    SERIAL_ECHOLNRPGM(PSTR(";S"));
+    uint8_t numbersRead = 0;
+    ShortTimer timeout;
+    timeout.start();
+
+    while (numbersRead < (sizeof(SN) - 1)) {
+        if (MSerial.available() > 0) {
+            SN[numbersRead] = MSerial.read();
+            numbersRead++;
         }
-#endif
-    } else {
-        puts_P(_N("Not in farm mode."));
+        if (timeout.expired(100u)) break;
     }
+    SN[numbersRead] = 0;
+    selectedSerialPort = selectedSerialPort_bak;
+    SERIAL_ECHOLN(SN);
 }
 //! Detection of faulty RAMBo 1.1b boards equipped with bigger capacitors
 //! at the TACH_1 pin, which causes bad detection of print fan speed.
@@ -3403,6 +3561,25 @@ static void gcode_G92()
     }
 }
 
+#ifdef EXTENDED_CAPABILITIES_REPORT
+
+static void cap_line(const char* name, bool ena = false) {
+    printf_P(PSTR("Cap:%S:%c\n"), name, (char)ena + '0');
+}
+
+static void extended_capabilities_report()
+{
+    // AUTOREPORT_TEMP (M155)
+    cap_line(PSTR("AUTOREPORT_TEMP"), ENABLED(AUTO_REPORT));
+#if (defined(FANCHECK) && (((defined(TACH_0) && (TACH_0 >-1)) || (defined(TACH_1) && (TACH_1 > -1)))))
+    // AUTOREPORT_FANS (M123)
+    cap_line(PSTR("AUTOREPORT_FANS"), ENABLED(AUTO_REPORT));
+#endif //FANCHECK and TACH_0 or TACH_1
+    // AUTOREPORT_POSITION (M114)
+    cap_line(PSTR("AUTOREPORT_POSITION"), ENABLED(AUTO_REPORT));
+    //@todo Update RepRap cap
+}
+#endif //EXTENDED_CAPABILITIES_REPORT
 
 #ifdef BACKLASH_X
 extern uint8_t st_backlash_x;
@@ -3490,12 +3667,14 @@ extern uint8_t st_backlash_y;
 //!@n M115 - Capabilities string
 //!@n M117 - display message
 //!@n M119 - Output Endstop status to serial port
+//!@n M123 - Tachometer value
 //!@n M126 - Solenoid Air Valve Open (BariCUDA support by jmil)
 //!@n M127 - Solenoid Air Valve Closed (BariCUDA vent to atmospheric pressure by jmil)
 //!@n M128 - EtoP Open (BariCUDA EtoP = electricity to air pressure transducer by jmil)
 //!@n M129 - EtoP Closed (BariCUDA EtoP = electricity to air pressure transducer by jmil)
 //!@n M140 - Set bed target temp
 //!@n M150 - Set BlinkM Color Output R: Red<0-255> U(!): Green<0-255> B: Blue<0-255> over i2c, G for green does not work.
+//!@n M155 - Automatically send temperatures, fan speeds, position
 //!@n M190 - Sxxx Wait for bed current temp to reach target temp. Waits only when heating
 //!          Rxxx Wait for bed current temp to reach target temp. Waits when heating and cooling
 //!@n M200 D<millimeters>- set filament diameter and set E axis units to cubic millimeters (use S0 to set back to millimeters).
@@ -3561,14 +3740,12 @@ There are reasons why some G Codes aren't in numerical order.
 void process_commands()
 {
 #ifdef FANCHECK
-    if(fan_check_error){
-        if(fan_check_error == EFCE_DETECTED){
-            fan_check_error = EFCE_REPORTED;
-            // SERIAL_PROTOCOLLNRPGM(MSG_OCTOPRINT_PAUSED);
-            lcd_pause_print();
-        } // otherwise it has already been reported, so just ignore further processing
-        return; //ignore usb stream. It is reenabled by selecting resume from the lcd.
-    }
+	if(fan_check_error == EFCE_DETECTED){
+		fan_check_error = EFCE_REPORTED;
+		// SERIAL_PROTOCOLLNRPGM(MSG_OCTOPRINT_PAUSED);
+		lcd_pause_print();
+		cmdqueue_serial_disabled = true;
+	}
 #endif
 
 	if (!buflen) return; //empty command
@@ -3618,7 +3795,7 @@ void process_commands()
     - TMC_SET_STEP
     - TMC_SET_CHOP
  */
-  if (code_seen("M117")) { //moved to highest priority place to be able to to print strings which includes "G", "PRUSA" and "^"
+  if (code_seen_P(PSTR("M117"))) { //moved to highest priority place to be able to to print strings which includes "G", "PRUSA" and "^"
 	  starpos = (strchr(strchr_pointer + 5, '*'));
 	  if (starpos != NULL)
 		  *(starpos) = '\0';
@@ -3631,7 +3808,7 @@ void process_commands()
 
     // ### CRASH_DETECTED - TMC2130
     // ---------------------------------
-	  if(code_seen("CRASH_DETECTED"))
+	  if(code_seen_P(PSTR("CRASH_DETECTED")))
 	  {
 		  uint8_t mask = 0;
 		  if (code_seen('X')) mask |= X_AXIS_MASK;
@@ -3641,12 +3818,12 @@ void process_commands()
 
     // ### CRASH_RECOVER - TMC2130
     // ----------------------------------
-	  else if(code_seen("CRASH_RECOVER"))
+	  else if(code_seen_P(PSTR("CRASH_RECOVER")))
 		  crashdet_recover();
 
     // ### CRASH_CANCEL - TMC2130
     // ----------------------------------
-	  else if(code_seen("CRASH_CANCEL"))
+	  else if(code_seen_P(PSTR("CRASH_CANCEL")))
 		  crashdet_cancel();
 	}
 	else if (strncmp_P(CMDBUFFER_CURRENT_STRING, PSTR("TMC_"), 4) == 0)
@@ -3732,7 +3909,7 @@ void process_commands()
 	}
 #endif //BACKLASH_Y
 #endif //TMC2130
-  else if(code_seen("PRUSA")){ 
+  else if(code_seen_P(PSTR("PRUSA"))){ 
     /*!
     ---------------------------------------------------------------------------------
     ### PRUSA - Internal command set <a href="https://reprap.org/wiki/G-code#G98:_Activate_farm_mode">G98: Activate farm mode - Notes</a>
@@ -3765,58 +3942,43 @@ void process_commands()
     */
 
 
-		if (code_seen("Ping")) {  // PRUSA Ping
+		if (code_seen_P(PSTR("Ping"))) {  // PRUSA Ping
 			if (farm_mode) {
 				PingTime = _millis();
-				//MYSERIAL.print(farm_no); MYSERIAL.println(": OK");
 			}	  
 		}
-		else if (code_seen("PRN")) { // PRUSA PRN
+		else if (code_seen_P(PSTR("PRN"))) { // PRUSA PRN
 		  printf_P(_N("%d"), status_number);
 
-        } else if( code_seen("FANPINTST") ){
+        } else if( code_seen_P(PSTR("FANPINTST"))){
             gcode_PRUSA_BadRAMBoFanTest();
-        }else if (code_seen("FAN")) { // PRUSA FAN
+        }else if (code_seen_P(PSTR("FAN"))) { // PRUSA FAN
 			printf_P(_N("E0:%d RPM\nPRN0:%d RPM\n"), 60*fan_speed[0], 60*fan_speed[1]);
-		}else if (code_seen("fn")) { // PRUSA fn
-		  if (farm_mode) {
-			printf_P(_N("%d"), farm_no);
-		  }
-		  else {
-			  puts_P(_N("Not in farm mode."));
-		  }
-		  
 		}
-		else if (code_seen("thx")) // PRUSA thx
+		else if (code_seen_P(PSTR("thx"))) // PRUSA thx
 		{
 			no_response = false;
 		}	
-		else if (code_seen("uvlo")) // PRUSA uvlo
+		else if (code_seen_P(PSTR("uvlo"))) // PRUSA uvlo
 		{
                eeprom_update_byte((uint8_t*)EEPROM_UVLO,0); 
                enquecommand_P(PSTR("M24")); 
 		}	
-		else if (code_seen("MMURES")) // PRUSA MMURES
+		else if (code_seen_P(PSTR("MMURES"))) // PRUSA MMURES
 		{
 			mmu_reset();
 		}
-		else if (code_seen("RESET")) { // PRUSA RESET
-            // careful!
-            if (farm_mode) {
-#if (defined(WATCHDOG) && (MOTHERBOARD == BOARD_EINSY_1_0a))
-                boot_app_magic = BOOT_APP_MAGIC;
-                boot_app_flags = BOOT_APP_FLG_RUN;
-				wdt_enable(WDTO_15MS);
-				cli();
-				while(1);
-#else //WATCHDOG
-                asm volatile("jmp 0x3E000");
-#endif //WATCHDOG
-            }
-            else {
-                MYSERIAL.println("Not in farm mode.");
-            }
-		}else if (code_seen("fv")) { // PRUSA fv
+		else if (code_seen_P(PSTR("RESET"))) { // PRUSA RESET
+#ifdef WATCHDOG
+#if defined(W25X20CL) && defined(BOOTAPP)
+            boot_app_magic = BOOT_APP_MAGIC;
+            boot_app_flags = BOOT_APP_FLG_RUN;
+#endif //defined(W25X20CL) && defined(BOOTAPP)
+            softReset();
+#elif defined(BOOTAPP) //this is a safety precaution. This is because the new bootloader turns off the heaters, but the old one doesn't. The watchdog should be used most of the time.
+            asm volatile("jmp 0x3E000");
+#endif
+		}else if (code_seen_P("fv")) { // PRUSA fv
         // get file version
         #ifdef SDSUPPORT
         card.openFile(strchr_pointer + 3,true);
@@ -3831,38 +3993,38 @@ void process_commands()
 
         #endif // SDSUPPORT
 
-    } else if (code_seen("M28")) { // PRUSA M28
+    } else if (code_seen_P(PSTR("M28"))) { // PRUSA M28
         trace();
         prusa_sd_card_upload = true;
         card.openFile(strchr_pointer+4,false);
 
-	} else if (code_seen("SN")) { // PRUSA SN
+	} else if (code_seen_P(PSTR("SN"))) { // PRUSA SN
         gcode_PRUSA_SN();
 
-	} else if(code_seen("Fir")){ // PRUSA Fir
+	} else if(code_seen_P(PSTR("Fir"))){ // PRUSA Fir
 
       SERIAL_PROTOCOLLN(FW_VERSION_FULL);
 
-    } else if(code_seen("Rev")){ // PRUSA Rev
+    } else if(code_seen_P(PSTR("Rev"))){ // PRUSA Rev
 
       SERIAL_PROTOCOLLN(FILAMENT_SIZE "-" ELECTRONICS "-" NOZZLE_TYPE );
 
-    } else if(code_seen("Lang")) { // PRUSA Lang
+    } else if(code_seen_P(PSTR("Lang"))) { // PRUSA Lang
 	  lang_reset();
 
-	} else if(code_seen("Lz")) { // PRUSA Lz
+	} else if(code_seen_P(PSTR("Lz"))) { // PRUSA Lz
       eeprom_update_word(reinterpret_cast<uint16_t *>(&(EEPROM_Sheets_base->s[(eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet)))].z_offset)),0);
 
-	} else if(code_seen("Beat")) { // PRUSA Beat
+	} else if(code_seen_P(PSTR("Beat"))) { // PRUSA Beat
         // Kick farm link timer
         kicktime = _millis();
 
-    } else if(code_seen("FR")) { // PRUSA FR
+    } else if(code_seen_P(PSTR("FR"))) { // PRUSA FR
         // Factory full reset
         factory_reset(0);
-    } else if(code_seen("MBL")) { // PRUSA MBL
+    } else if(code_seen_P(PSTR("MBL"))) { // PRUSA MBL
         // Change the MBL status without changing the logical Z position.
-        if(code_seen("V")) {
+        if(code_seen('V')) {
             bool value = code_value_short();
             st_synchronize();
             if(value != mbl.active) {
@@ -3887,14 +4049,14 @@ eeprom_update_byte((uint8_t*)EEPROM_CHECK_MODE,0xFF);
 eeprom_update_byte((uint8_t*)EEPROM_NOZZLE_DIAMETER,0xFF);
 eeprom_update_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM,0xFFFF);
 */
-    } else if (code_seen("nozzle")) { // PRUSA nozzle
+    } else if (code_seen_P(PSTR("nozzle"))) { // PRUSA nozzle
           uint16_t nDiameter;
           if(code_seen('D'))
                {
                nDiameter=(uint16_t)(code_value()*1000.0+0.5); // [,um]
                nozzle_diameter_check(nDiameter);
                }
-          else if(code_seen("set") && farm_mode)
+          else if(code_seen_P(PSTR("set")) && farm_mode)
                {
                strchr_pointer++;                  // skip 1st char (~ 's')
                strchr_pointer++;                  // skip 2nd char (~ 'e')
@@ -4276,6 +4438,14 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
       #endif //FWRETRACT
     
 
+    /*!
+	### G21 - Sets Units to Millimters <a href="https://reprap.org/wiki/G-code#G21:_Set_Units_to_Millimeters">G21: Set Units to Millimeters</a>
+	Units are in millimeters. Prusa doesn't support inches.
+    */
+    case 21: 
+      break; //Doing nothing. This is just to prevent serial UNKOWN warnings.
+    
+
     /*!
     ### G28 - Home all Axes one at a time <a href="https://reprap.org/wiki/G-code#G28:_Move_to_Origin_.28Home.29">G28: Move to Origin (Home)</a>
     Using `G28` without any parameters will perfom homing of all axes AND mesh bed leveling, while `G28 W` will just home all axes (no mesh bed leveling).
@@ -4560,7 +4730,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
   The Original i3 Prusa MK2/s uses PINDAv1 and this calibration improves the temperature drift, but not as good as the PINDAv2.
 
   superPINDA sensor has internal temperature compensation and no thermistor output. There is no point of doing temperature calibration in such case.
-  If PINDA_THERMISTOR and DETECT_SUPERPINDA is defined during compilation, calibration is skipped with serial message "No PINDA thermistor".
+  If PINDA_THERMISTOR and SUPERPINDA_SUPPORT is defined during compilation, calibration is skipped with serial message "No PINDA thermistor".
   This can be caused also if PINDA thermistor connection is broken or PINDA temperature is lower than PINDA_MINTEMP.
 
   #### Example
@@ -4596,7 +4766,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
             // Push the commands to the front of the message queue in the reverse order!
             // There shall be always enough space reserved for these commands.
             repeatcommand_front(); // repeat G76 with all its parameters
-            enquecommand_front_P((PSTR("G28 W0")));
+            enquecommand_front_P(G28W0);
             break;
         }
         lcd_show_fullscreen_message_and_wait_P(_i("Stable ambient temperature 21-26C is needed a rigid stand is required."));////MSG_TEMP_CAL_WARNING c=20 r=4
@@ -4737,7 +4907,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 			// Push the commands to the front of the message queue in the reverse order!
 			// There shall be always enough space reserved for these commands.
 			repeatcommand_front(); // repeat G76 with all its parameters
-			enquecommand_front_P((PSTR("G28 W0")));
+			enquecommand_front_P(G28W0);
 			break;
 		}
 		puts_P(_N("PINDA probe calibration start"));
@@ -4886,7 +5056,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 			// Push the commands to the front of the message queue in the reverse order!
 			// There shall be always enough space reserved for these commands.
 			repeatcommand_front(); // repeat G80 with all its parameters
-			enquecommand_front_P((PSTR("G28 W0")));
+			enquecommand_front_P(G28W0);
 			break;
 		} 
 		
@@ -4919,7 +5089,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 			temp_compensation_start();
 			run = true;
 			repeatcommand_front(); // repeat G80 with all its parameters
-			enquecommand_front_P((PSTR("G28 W0")));
+			enquecommand_front_P(G28W0);
 			break;
 		}
         run = false;
@@ -5047,12 +5217,12 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 					break;
 				}
 				if (MESH_HOME_Z_SEARCH - current_position[Z_AXIS] < 0.1f) {
-					printf_P(PSTR("Bed leveling failed. Sensor disconnected or cable broken.\n"));
+					puts_P(PSTR("Bed leveling failed. Sensor disconnected or cable broken."));
 					break;
 				}
 			}
 			if (has_z && fabs(z0 - current_position[Z_AXIS]) > Z_CALIBRATION_THRESHOLD) { //if we have data from z calibration, max. allowed difference is 1mm for each point
-				printf_P(PSTR("Bed leveling failed. Sensor triggered too high.\n"));
+				puts_P(PSTR("Bed leveling failed. Sensor triggered too high."));
 				break;
 			}
 			#ifdef SUPPORT_VERBOSITY
@@ -5435,10 +5605,9 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 		farm_mode = 1;
 		PingTime = _millis();
 		eeprom_update_byte((unsigned char *)EEPROM_FARM_MODE, farm_mode);
-		EEPROM_save_B(EEPROM_FARM_NUMBER, &farm_no);
-          SilentModeMenu = SILENT_MODE_OFF;
-          eeprom_update_byte((unsigned char *)EEPROM_SILENT, SilentModeMenu);
-          fCheckModeInit();                       // alternatively invoke printer reset
+		SilentModeMenu = SILENT_MODE_OFF;
+		eeprom_update_byte((unsigned char *)EEPROM_SILENT, SilentModeMenu);
+		fCheckModeInit();                       // alternatively invoke printer reset
 		break;
 
     /*! ### G99 - Deactivate farm mode <a href="https://reprap.org/wiki/G-code#G99:_Deactivate_farm_mode">G99: Deactivate farm mode</a>
@@ -5553,10 +5722,16 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 
     /*!
 	### M20 - SD Card file list <a href="https://reprap.org/wiki/G-code#M20:_List_SD_card">M20: List SD card</a>
+    #### Usage
+    
+        M20 [ L ]
+    #### Parameters
+    - `L` - Reports ling filenames instead of just short filenames. Requires host software parsing.
     */
     case 20:
+      KEEPALIVE_STATE(NOT_BUSY); // do not send busy messages during listing. Inhibits the output of manage_heater()
       SERIAL_PROTOCOLLNRPGM(_N("Begin file list"));////MSG_BEGIN_FILE_LIST
-      card.ls();
+      card.ls(code_seen('L'));
       SERIAL_PROTOCOLLNRPGM(_N("End file list"));////MSG_END_FILE_LIST
       break;
 
@@ -5853,28 +6028,29 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
     /*!
 	### M46 - Show the assigned IP address <a href="https://reprap.org/wiki/G-code#M46:_Show_the_assigned_IP_address">M46: Show the assigned IP address.</a>
     */
-    /*
-     case 46:
+    case 46:
     {
         // M46: Prusa3D: Show the assigned IP address.
-        uint8_t ip[4];
-        bool hasIP = card.ToshibaFlashAir_GetIP(ip);
-        if (hasIP) {
-            SERIAL_ECHOPGM("Toshiba FlashAir current IP: ");
-            SERIAL_ECHO(int(ip[0]));
-            SERIAL_ECHOPGM(".");
-            SERIAL_ECHO(int(ip[1]));
-            SERIAL_ECHOPGM(".");
-            SERIAL_ECHO(int(ip[2]));
-            SERIAL_ECHOPGM(".");
-            SERIAL_ECHO(int(ip[3]));
-            SERIAL_ECHOLNPGM("");
+        if (card.ToshibaFlashAir_isEnabled()) {
+            uint8_t ip[4];
+            if (card.ToshibaFlashAir_GetIP(ip)) {
+                // SERIAL_PROTOCOLPGM("Toshiba FlashAir current IP: ");
+                SERIAL_PROTOCOL(uint8_t(ip[0]));
+                SERIAL_PROTOCOL('.');
+                SERIAL_PROTOCOL(uint8_t(ip[1]));
+                SERIAL_PROTOCOL('.');
+                SERIAL_PROTOCOL(uint8_t(ip[2]));
+                SERIAL_PROTOCOL('.');
+                SERIAL_PROTOCOL(uint8_t(ip[3]));
+                SERIAL_PROTOCOLLN();
+            } else {
+                SERIAL_PROTOCOLPGM("?Toshiba FlashAir GetIP failed\n");          
+            }
         } else {
-            SERIAL_ECHOLNPGM("Toshiba FlashAir GetIP failed");          
+            SERIAL_PROTOCOLLNPGM("n/a");          
         }
         break;
     }
-    */
 
     /*!
 	### M47 - Show end stops dialog on the display <a href="https://reprap.org/wiki/G-code#M47:_Show_end_stops_dialog_on_the_display">M47: Show end stops dialog on the display</a>
@@ -6273,96 +6449,53 @@ Sigma_Exit:
       uint8_t extruder;
       if(setTargetedHotend(105, extruder)){
         break;
-        }
-      #if defined(TEMP_0_PIN) && TEMP_0_PIN > -1
-        SERIAL_PROTOCOLPGM("ok T:");
-        SERIAL_PROTOCOL_F(degHotend(extruder),1);
-        SERIAL_PROTOCOLPGM(" /");
-        SERIAL_PROTOCOL_F(degTargetHotend(extruder),1);
-        #if defined(TEMP_BED_PIN) && TEMP_BED_PIN > -1
-          SERIAL_PROTOCOLPGM(" B:");
-          SERIAL_PROTOCOL_F(degBed(),1);
-          SERIAL_PROTOCOLPGM(" /");
-          SERIAL_PROTOCOL_F(degTargetBed(),1);
-        #endif //TEMP_BED_PIN
-        for (int8_t cur_extruder = 0; cur_extruder < EXTRUDERS; ++cur_extruder) {
-          SERIAL_PROTOCOLPGM(" T");
-          SERIAL_PROTOCOL(cur_extruder);
-          SERIAL_PROTOCOL(':');
-          SERIAL_PROTOCOL_F(degHotend(cur_extruder),1);
-          SERIAL_PROTOCOLPGM(" /");
-          SERIAL_PROTOCOL_F(degTargetHotend(cur_extruder),1);
-        }
-      #else
-        SERIAL_ERROR_START;
-        SERIAL_ERRORLNRPGM(_i("No thermistors - no temperature"));////MSG_ERR_NO_THERMISTORS
-      #endif
-
-        SERIAL_PROTOCOLPGM(" @:");
-      #ifdef EXTRUDER_WATTS
-        SERIAL_PROTOCOL((EXTRUDER_WATTS * getHeaterPower(tmp_extruder))/127);
-        SERIAL_PROTOCOLPGM("W");
-      #else
-        SERIAL_PROTOCOL(getHeaterPower(extruder));
-      #endif
-
-        SERIAL_PROTOCOLPGM(" B@:");
-      #ifdef BED_WATTS
-        SERIAL_PROTOCOL((BED_WATTS * getHeaterPower(-1))/127);
-        SERIAL_PROTOCOLPGM("W");
-      #else
-        SERIAL_PROTOCOL(getHeaterPower(-1));
-      #endif
-
-#ifdef PINDA_THERMISTOR
-		SERIAL_PROTOCOLPGM(" P:");
-		SERIAL_PROTOCOL_F(current_temperature_pinda,1);
-#endif //PINDA_THERMISTOR
-
-#ifdef AMBIENT_THERMISTOR
-		SERIAL_PROTOCOLPGM(" A:");
-		SERIAL_PROTOCOL_F(current_temperature_ambient,1);
-#endif //AMBIENT_THERMISTOR
-
-
-        #ifdef SHOW_TEMP_ADC_VALUES
-          {float raw = 0.0;
-
-          #if defined(TEMP_BED_PIN) && TEMP_BED_PIN > -1
-            SERIAL_PROTOCOLPGM("    ADC B:");
-            SERIAL_PROTOCOL_F(degBed(),1);
-            SERIAL_PROTOCOLPGM("C->");
-            raw = rawBedTemp();
-            SERIAL_PROTOCOL_F(raw/OVERSAMPLENR,5);
-            SERIAL_PROTOCOLPGM(" Rb->");
-            SERIAL_PROTOCOL_F(100 * (1 + (PtA * (raw/OVERSAMPLENR)) + (PtB * sq((raw/OVERSAMPLENR)))), 5);
-            SERIAL_PROTOCOLPGM(" Rxb->");
-            SERIAL_PROTOCOL_F(raw, 5);
-          #endif
-          for (int8_t cur_extruder = 0; cur_extruder < EXTRUDERS; ++cur_extruder) {
-            SERIAL_PROTOCOLPGM("  T");
-            SERIAL_PROTOCOL(cur_extruder);
-            SERIAL_PROTOCOLPGM(":");
-            SERIAL_PROTOCOL_F(degHotend(cur_extruder),1);
-            SERIAL_PROTOCOLPGM("C->");
-            raw = rawHotendTemp(cur_extruder);
-            SERIAL_PROTOCOL_F(raw/OVERSAMPLENR,5);
-            SERIAL_PROTOCOLPGM(" Rt");
-            SERIAL_PROTOCOL(cur_extruder);
-            SERIAL_PROTOCOLPGM("->");
-            SERIAL_PROTOCOL_F(100 * (1 + (PtA * (raw/OVERSAMPLENR)) + (PtB * sq((raw/OVERSAMPLENR)))), 5);
-            SERIAL_PROTOCOLPGM(" Rx");
-            SERIAL_PROTOCOL(cur_extruder);
-            SERIAL_PROTOCOLPGM("->");
-            SERIAL_PROTOCOL_F(raw, 5);
-          }}
-        #endif
-		SERIAL_PROTOCOLLN("");
-		KEEPALIVE_STATE(NOT_BUSY);
-      return;
+      }
+      
+      SERIAL_PROTOCOLPGM("ok ");
+      gcode_M105(extruder);
+      
+      cmdqueue_pop_front(); //prevent an ok after the command since this command uses an ok at the beginning.
+      
       break;
     }
 
+#if defined(AUTO_REPORT)
+    /*!
+	### M155 - Automatically send status <a href="https://reprap.org/wiki/G-code#M155:_Automatically_send_temperatures">M155: Automatically send temperatures</a>
+	#### Usage
+	
+		M155 [ S ] [ C ]
+	
+	#### Parameters
+	
+	- `S` - Set autoreporting interval in seconds. 0 to disable. Maximum: 255
+	- `C` - Activate auto-report function (bit mask). Default is temperature.
+
+          bit 0 = Auto-report temperatures
+          bit 1 = Auto-report fans
+          bit 2 = Auto-report position
+          bit 3 = free
+          bit 4 = free
+          bit 5 = free
+          bit 6 = free
+          bit 7 = free
+     */
+    //!@todo update RepRap Gcode wiki
+    //!@todo Should be temperature always? Octoprint doesn't switch to M105 if M155 timer is set
+    case 155:
+    {
+        if (code_seen('S')){
+            autoReportFeatures.SetPeriod( code_value_uint8() );
+        }
+        if (code_seen('C')){
+            autoReportFeatures.SetMask(code_value());
+        } else{
+            autoReportFeatures.SetMask(1); //Backwards compability to host systems like Octoprint to send only temp if paramerter `C`isn't used.
+        }
+   }
+    break;
+#endif //AUTO_REPORT
+
     /*!
 	### M109 - Wait for extruder temperature <a href="https://reprap.org/wiki/G-code#M109:_Set_Extruder_Temperature_and_Wait">M109: Set Extruder Temperature and Wait</a>
     #### Usage
@@ -6475,7 +6608,7 @@ Sigma_Exit:
 				  SERIAL_PROTOCOL((int)active_extruder);
 				  SERIAL_PROTOCOLPGM(" B:");
 				  SERIAL_PROTOCOL_F(degBed(), 1);
-				  SERIAL_PROTOCOLLN("");
+				  SERIAL_PROTOCOLLN();
 			  }
 				  codenum = _millis();
 			  
@@ -6745,7 +6878,7 @@ Sigma_Exit:
 		else {
 			SERIAL_ECHO_START;
 			SERIAL_ECHOPAIR("M113 S", (unsigned long)host_keepalive_interval);
-			SERIAL_PROTOCOLLN("");
+			SERIAL_PROTOCOLLN();
 		}
 		break;
 
@@ -6795,6 +6928,9 @@ Sigma_Exit:
           SERIAL_ECHOPGM(STRINGIFY(EXTRUDERS)); 
           SERIAL_ECHOPGM(" UUID:"); 
           SERIAL_ECHOLNPGM(MACHINE_UUID);
+#ifdef EXTENDED_CAPABILITIES_REPORT
+          extended_capabilities_report();
+#endif //EXTENDED_CAPABILITIES_REPORT
       }
       break;
 
@@ -6836,7 +6972,7 @@ Sigma_Exit:
     */
     case 119:
     SERIAL_PROTOCOLRPGM(_N("Reporting endstop status"));////MSG_M119_REPORT
-    SERIAL_PROTOCOLLN("");
+    SERIAL_PROTOCOLLN();
       #if defined(X_MIN_PIN) && X_MIN_PIN > -1
         SERIAL_PROTOCOLRPGM(_n("x_min: "));////MSG_X_MIN
         if(READ(X_MIN_PIN)^X_MIN_ENDSTOP_INVERTING){
@@ -6844,7 +6980,7 @@ Sigma_Exit:
         }else{
           SERIAL_PROTOCOLRPGM(MSG_ENDSTOP_OPEN);
         }
-        SERIAL_PROTOCOLLN("");
+        SERIAL_PROTOCOLLN();
       #endif
       #if defined(X_MAX_PIN) && X_MAX_PIN > -1
         SERIAL_PROTOCOLRPGM(_n("x_max: "));////MSG_X_MAX
@@ -6853,7 +6989,7 @@ Sigma_Exit:
         }else{
           SERIAL_PROTOCOLRPGM(MSG_ENDSTOP_OPEN);
         }
-        SERIAL_PROTOCOLLN("");
+        SERIAL_PROTOCOLLN();
       #endif
       #if defined(Y_MIN_PIN) && Y_MIN_PIN > -1
         SERIAL_PROTOCOLRPGM(_n("y_min: "));////MSG_Y_MIN
@@ -6862,7 +6998,7 @@ Sigma_Exit:
         }else{
           SERIAL_PROTOCOLRPGM(MSG_ENDSTOP_OPEN);
         }
-        SERIAL_PROTOCOLLN("");
+        SERIAL_PROTOCOLLN();
       #endif
       #if defined(Y_MAX_PIN) && Y_MAX_PIN > -1
         SERIAL_PROTOCOLRPGM(_n("y_max: "));////MSG_Y_MAX
@@ -6871,7 +7007,7 @@ Sigma_Exit:
         }else{
           SERIAL_PROTOCOLRPGM(MSG_ENDSTOP_OPEN);
         }
-        SERIAL_PROTOCOLLN("");
+        SERIAL_PROTOCOLLN();
       #endif
       #if defined(Z_MIN_PIN) && Z_MIN_PIN > -1
         SERIAL_PROTOCOLRPGM(MSG_Z_MIN);
@@ -6880,7 +7016,7 @@ Sigma_Exit:
         }else{
           SERIAL_PROTOCOLRPGM(MSG_ENDSTOP_OPEN);
         }
-        SERIAL_PROTOCOLLN("");
+        SERIAL_PROTOCOLLN();
       #endif
       #if defined(Z_MAX_PIN) && Z_MAX_PIN > -1
         SERIAL_PROTOCOLRPGM(MSG_Z_MAX);
@@ -6889,11 +7025,34 @@ Sigma_Exit:
         }else{
           SERIAL_PROTOCOLRPGM(MSG_ENDSTOP_OPEN);
         }
-        SERIAL_PROTOCOLLN("");
+        SERIAL_PROTOCOLLN();
       #endif
       break;
       //!@todo update for all axes, use for loop
+
+#if (defined(FANCHECK) && (((defined(TACH_0) && (TACH_0 >-1)) || (defined(TACH_1) && (TACH_1 > -1)))))
+    /*!
+	### M123 - Tachometer value <a href="https://www.reprap.org/wiki/G-code#M123:_Tachometer_value_.28RepRap.29">M123: Tachometer value</a>
+  This command is used to report fan speeds and fan pwm values.
+  #### Usage
     
+        M123
+
+    - E0:     - Hotend fan speed in RPM
+    - PRN1:   - Part cooling fans speed in RPM
+    - E0@:    - Hotend fan PWM value
+    - PRN1@:  -Part cooling fan PWM value
+
+  _Example:_
+
+    E0:3240 RPM PRN1:4560 RPM E0@:255 PRN1@:255
+
+    */
+   //!@todo Update RepRap Gcode wiki
+    case 123:
+    gcode_M123();
+    break;
+#endif //FANCHECK and TACH_0 and TACH_1
 
     #ifdef BLINKM
     /*!
@@ -7014,7 +7173,7 @@ Sigma_Exit:
     For each axis individually.
     */
     case 203: // M203 max feedrate mm/sec
-		for (int8_t i = 0; i < NUM_AXIS; i++)
+		for (uint8_t i = 0; i < NUM_AXIS; i++)
 		{
 			if (code_seen(axis_codes[i]))
 			{
@@ -7135,7 +7294,7 @@ Sigma_Exit:
     - `Z` - Z axis offset
 	*/
     case 206:
-      for(int8_t i=0; i < 3; i++)
+      for(uint8_t i=0; i < 3; i++)
       {
         if(code_seen(axis_codes[i])) cs.add_homing[i] = code_value();
       }
@@ -7293,17 +7452,26 @@ Sigma_Exit:
     */
     case 220: // M220 S<factor in percent>- set speed factor override percentage
     {
-      if (code_seen('B')) //backup current speed factor
-      {
-        saved_feedmultiply_mm = feedmultiply;
-      }
-      if(code_seen('S'))
-      {		
-        feedmultiply = code_value() ;
-      }
-      if (code_seen('R')) { //restore previous feedmultiply
-        feedmultiply = saved_feedmultiply_mm;
-      }
+        bool codesWereSeen = false;
+        if (code_seen('B')) //backup current speed factor
+        {
+            saved_feedmultiply_mm = feedmultiply;
+            codesWereSeen = true;
+        }
+        if (code_seen('S'))
+        {
+            feedmultiply = code_value();
+            codesWereSeen = true;
+        }
+        if (code_seen('R')) //restore previous feedmultiply
+        {
+            feedmultiply = saved_feedmultiply_mm;
+            codesWereSeen = true;
+        }
+        if (!codesWereSeen)
+        {
+            printf_P(PSTR("%i%%\n"), feedmultiply);
+        }
     }
     break;
 
@@ -7319,23 +7487,26 @@ Sigma_Exit:
     */
     case 221: // M221 S<factor in percent>- set extrude factor override percentage
     {
-      if(code_seen('S'))
-      {
-        int tmp_code = code_value();
-        if (code_seen('T'))
+        if (code_seen('S'))
         {
-          uint8_t extruder;
-          if(setTargetedHotend(221, extruder)){
-            break;
-          }
-          extruder_multiply[extruder] = tmp_code;
+            int tmp_code = code_value();
+            if (code_seen('T'))
+            {
+                uint8_t extruder;
+                if (setTargetedHotend(221, extruder))
+                    break;
+                extruder_multiply[extruder] = tmp_code;
+            }
+            else
+            {
+                extrudemultiply = tmp_code ;
+            }
         }
         else
         {
-          extrudemultiply = tmp_code ;
+            printf_P(PSTR("%i%%\n"), extrudemultiply);
         }
-      }
-      calculate_extruder_multipliers();
+        calculate_extruder_multipliers();
     }
     break;
 
@@ -7446,7 +7617,7 @@ Sigma_Exit:
           SERIAL_PROTOCOL(servo_index);
           SERIAL_PROTOCOL(": ");
           SERIAL_PROTOCOL(servos[servo_index].read());
-          SERIAL_PROTOCOLLN("");
+          SERIAL_PROTOCOLLN();
         }
       }
       break;
@@ -7522,7 +7693,7 @@ Sigma_Exit:
         //Kc does not have scaling applied above, or in resetting defaults
         SERIAL_PROTOCOL(Kc);
         #endif
-        SERIAL_PROTOCOLLN("");
+        SERIAL_PROTOCOLLN();
       }
       break;
     #endif //PIDTEMP
@@ -7555,7 +7726,7 @@ Sigma_Exit:
         SERIAL_PROTOCOL(unscalePID_i(cs.bedKi));
         SERIAL_PROTOCOL(" d:");
         SERIAL_PROTOCOL(unscalePID_d(cs.bedKd));
-        SERIAL_PROTOCOLLN("");
+        SERIAL_PROTOCOLLN();
       }
       break;
     #endif //PIDTEMP
@@ -7778,7 +7949,7 @@ Sigma_Exit:
           cs.zprobe_zoffset = -value; // compare w/ line 278 of ConfigurationStore.cpp
           SERIAL_ECHO_START;
           SERIAL_ECHOLNRPGM(CAT4(MSG_ZPROBE_ZOFFSET, " ", MSG_OK,PSTR("")));
-          SERIAL_PROTOCOLLN("");
+          SERIAL_PROTOCOLLN();
         }
         else
         {
@@ -7788,7 +7959,7 @@ Sigma_Exit:
           SERIAL_ECHO(Z_PROBE_OFFSET_RANGE_MIN);
           SERIAL_ECHORPGM(MSG_Z_MAX);
           SERIAL_ECHO(Z_PROBE_OFFSET_RANGE_MAX);
-          SERIAL_PROTOCOLLN("");
+          SERIAL_PROTOCOLLN();
         }
       }
       else
@@ -7796,7 +7967,7 @@ Sigma_Exit:
           SERIAL_ECHO_START;
           SERIAL_ECHOLNRPGM(CAT2(MSG_ZPROBE_ZOFFSET, PSTR(" : ")));
           SERIAL_ECHO(-cs.zprobe_zoffset);
-          SERIAL_PROTOCOLLN("");
+          SERIAL_PROTOCOLLN();
       }
       break;
     }
@@ -7885,7 +8056,7 @@ Sigma_Exit:
           #endif
         }
 
-		if (mmu_enabled && code_seen("AUTO"))
+		if (mmu_enabled && code_seen_P(PSTR("AUTO")))
 			automatic = true;
 
 		gcode_M600(automatic, x_position, y_position, z_shift, e_shift_init, e_shift_late);
@@ -7909,6 +8080,7 @@ Sigma_Exit:
         if (!isPrintPaused)
         {
             st_synchronize();
+            ClearToSend(); //send OK even before the command finishes executing because we want to make sure it is not skipped because of cmdqueue_pop_front();
             cmdqueue_pop_front(); //trick because we want skip this command (M601) after restore
             lcd_pause_print();
         }
@@ -7958,7 +8130,7 @@ Sigma_Exit:
 
 		SERIAL_PROTOCOLPGM("Wait for PINDA target temperature:");
 		SERIAL_PROTOCOL(set_target_pinda);
-		SERIAL_PROTOCOLLN("");
+		SERIAL_PROTOCOLLN();
 
 		codenum = _millis();
 		cancel_heatup = false;
@@ -8017,7 +8189,7 @@ Sigma_Exit:
 				SERIAL_PROTOCOL(usteps);
 				SERIAL_PROTOCOLPGM(", ");
 				SERIAL_PROTOCOL(mm * 1000);
-				SERIAL_PROTOCOLLN("");
+				SERIAL_PROTOCOLLN();
 			}
 		}
 		else if (code_seen('!')) { // ! - Set factory default values
@@ -8060,7 +8232,7 @@ Sigma_Exit:
 						SERIAL_PROTOCOL(usteps);
 						SERIAL_PROTOCOLPGM(", ");
 						SERIAL_PROTOCOL(mm * 1000);
-						SERIAL_PROTOCOLLN("");
+						SERIAL_PROTOCOLLN();
 					}
 				}
 			}
@@ -8151,7 +8323,7 @@ Sigma_Exit:
                     if(code_seen('P'))
                          fw_version_check(++strchr_pointer);
                     else if(code_seen('Q'))
-                         SERIAL_PROTOCOLLN(FW_VERSION);
+                         SERIAL_PROTOCOLLNRPGM(FW_VERSION_STR_P());
                     break;
                case ClPrintChecking::_Gcode:      // ~ .5
                     if(code_seen('P'))
@@ -8595,6 +8767,8 @@ Sigma_Exit:
   */
   else if(code_seen('T'))
   {
+      static const char duplicate_Tcode_ignored[] PROGMEM = "Duplicate T-code ignored.";
+      
       int index;
       bool load_to_nozzle = false;
       for (index = 1; *(strchr_pointer + index) == ' ' || *(strchr_pointer + index) == '\t'; index++);
@@ -8610,7 +8784,7 @@ Sigma_Exit:
 			tmp_extruder = choose_menu_P(_T(MSG_CHOOSE_FILAMENT), _T(MSG_FILAMENT));
 			if ((tmp_extruder == mmu_extruder) && mmu_fil_loaded) //dont execute the same T-code twice in a row
 			{
-				printf_P(PSTR("Duplicate T-code ignored.\n"));
+				puts_P(duplicate_Tcode_ignored);
 			}
 			else
 			{
@@ -8655,7 +8829,7 @@ Sigma_Exit:
           {
               if ((tmp_extruder == mmu_extruder) && mmu_fil_loaded) //dont execute the same T-code twice in a row
               {
-                  printf_P(PSTR("Duplicate T-code ignored.\n"));
+                  puts_P(duplicate_Tcode_ignored);
               }
 			  else
 			  {
@@ -9123,8 +9297,8 @@ void FlushSerialRequestResend()
 // Execution of a command from a SD card will not be confirmed.
 void ClearToSend()
 {
-    previous_millis_cmd = _millis();
-	if ((CMDBUFFER_CURRENT_TYPE == CMDBUFFER_CURRENT_TYPE_USB) || (CMDBUFFER_CURRENT_TYPE == CMDBUFFER_CURRENT_TYPE_USB_WITH_LINENR)) 
+	previous_millis_cmd = _millis();
+	if (buflen && ((CMDBUFFER_CURRENT_TYPE == CMDBUFFER_CURRENT_TYPE_USB) || (CMDBUFFER_CURRENT_TYPE == CMDBUFFER_CURRENT_TYPE_USB_WITH_LINENR)))
 		SERIAL_PROTOCOLLNRPGM(MSG_OK);
 }
 
@@ -9489,7 +9663,7 @@ static uint16_t nFSCheckCount=0;
 		bInhibitFlag=bInhibitFlag||bMenuFSDetect; // Settings::HWsetup::FSdetect menu active
 #endif // IR_SENSOR_ANALOG
 #endif // IR_SENSOR
-		if ((mcode_in_progress != 600) && (eFilamentAction != FilamentAction::AutoLoad) && (!bInhibitFlag)) //M600 not in progress, preHeat @ autoLoad menu not active, Support::ExtruderInfo/SensorInfo menu not active
+		if ((mcode_in_progress != 600) && (eFilamentAction != FilamentAction::AutoLoad) && (!bInhibitFlag) && (menu_menu != lcd_move_e)) //M600 not in progress, preHeat @ autoLoad menu not active, Support::ExtruderInfo/SensorInfo menu not active
 		{
 			if (!moves_planned() && !IS_SD_PRINTING && !is_usb_printing && (lcd_commands_type != LcdCommands::Layer1Cal) && ! eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE))
 			{
@@ -9958,7 +10132,7 @@ static void wait_for_heater(long codenum, uint8_t extruder) {
 				}
 			}
 #else
-				SERIAL_PROTOCOLLN("");
+				SERIAL_PROTOCOLLN();
 #endif
 				codenum = _millis();
 		}
@@ -10265,7 +10439,7 @@ void bed_analysis(float x_dimension, float y_dimension, int x_points_num, int y_
 		// There shall be always enough space reserved for these commands.
 		repeatcommand_front(); // repeat G80 with all its parameters
 		
-		enquecommand_front_P((PSTR("G28 W0")));
+		enquecommand_front_P(G28W0);
 		enquecommand_front_P((PSTR("G1 Z5")));
 		return;
 	}
@@ -10490,9 +10664,9 @@ float temp_comp_interpolation(float inp_temperature) {
 #ifdef PINDA_THERMISTOR
 		constexpr int start_compensating_temp = 35;
 		temp_C[i] = start_compensating_temp + i * 5; //temperature in degrees C
-#ifdef DETECT_SUPERPINDA
-		static_assert(start_compensating_temp >= PINDA_MINTEMP, "Temperature compensation start point is lower than PINDA_MINTEMP.");
-#endif //DETECT_SUPERPINDA
+#ifdef SUPERPINDA_SUPPORT
+    static_assert(start_compensating_temp >= PINDA_MINTEMP, "Temperature compensation start point is lower than PINDA_MINTEMP.");
+#endif //SUPERPINDA_SUPPORT
 #else
 		temp_C[i] = 50 + i * 10; //temperature in C
 #endif
@@ -10581,7 +10755,7 @@ void serialecho_temperatures() {
 	SERIAL_PROTOCOL((int)active_extruder);
 	SERIAL_PROTOCOLPGM(" B:");
 	SERIAL_PROTOCOL_F(degBed(), 1);
-	SERIAL_PROTOCOLLN("");
+	SERIAL_PROTOCOLLN();
 }
 
 #ifdef UVLO_SUPPORT
@@ -11375,7 +11549,6 @@ void restore_print_from_ram_and_continue(float e_move)
 		//not sd printing nor usb printing
 	}
 
-	SERIAL_PROTOCOLLNRPGM(MSG_OK); //dummy response because of octoprint is waiting for this
 	lcd_setstatuspgm(_T(WELCOME_MSG));
     saved_printing_type = PRINTING_TYPE_NONE;
 	saved_printing = false;
@@ -11709,7 +11882,6 @@ void disable_force_z()
 #endif // TMC2130
 }
 
-
 void enable_force_z()
 {
 if(bEnableForce_z)

+ 4 - 1
Firmware/Sd2Card.cpp

@@ -767,6 +767,9 @@ uint8_t Sd2Card::waitStartBlock(void) {
 
 // Toshiba FlashAir support, copied from 
 // https://flashair-developers.com/en/documents/tutorials/arduino/
+// However, the official website was closed in September 2019.
+// There is an archived website (written in Japanese).
+// https://flashair-developers.github.io/website/docs/tutorials/arduino/2.html
 
 //------------------------------------------------------------------------------
 /** Perform Extention Read. */
@@ -774,7 +777,7 @@ uint8_t Sd2Card::readExt(uint32_t arg, uint8_t* dst, uint16_t count) {
   uint16_t i;
 
   // send command and argument.
-  if (cardCommand(CMD48, arg)) {
+  if (cardCommand(CMD48, arg) && cardCommand(CMD17, arg)) { // CMD48 for W-03, CMD17 for W-04
     error(SD_CARD_ERROR_CMD48);
     goto fail;
   }

+ 2 - 2
Firmware/Timer.h

@@ -20,10 +20,10 @@ public:
     Timer();
     void start();
     void stop(){m_isRunning = false;}
-    bool running(){return m_isRunning;}
+    bool running()const {return m_isRunning;}
     bool expired(T msPeriod);
 protected:
-    T started(){return m_started;}
+    T started()const {return m_started;}
 private:
     bool m_isRunning;
     T m_started;

+ 1 - 1
Firmware/adc.c

@@ -19,7 +19,7 @@ uint16_t adc_sim_mask;
 
 void adc_init(void)
 {
-	printf_P(PSTR("adc_init\n"));
+	puts_P(PSTR("adc_init"));
 	adc_sim_mask = 0x00;
 	ADCSRA |= (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
 	ADMUX |= (1 << REFS0);

+ 4 - 4
Firmware/backlight.cpp

@@ -1,10 +1,10 @@
 //backlight.cpp
 
 #include "backlight.h"
+#include "macros.h"
 #include <avr/eeprom.h>
 #include <Arduino.h>
 #include "eeprom.h"
-#include "Marlin.h"
 #include "pins.h"
 #include "fastio.h"
 #include "Timer.h"
@@ -111,10 +111,10 @@ void backlight_init()
 
 #else //LCD_BL_PIN
 
-void force_bl_on(__attribute__((unused)) bool section_start) {}
+void force_bl_on(bool) {}
 void backlight_update() {}
 void backlight_init() {}
 void backlight_save() {}
-void backlight_wake(__attribute__((unused)) const uint8_t flashNo) {}
+void backlight_wake(const uint8_t) {}
 
-#endif //LCD_BL_PIN
+#endif //LCD_BL_PIN

+ 4 - 4
Firmware/bootapp.c

@@ -9,6 +9,8 @@
 extern FILE _uartout;
 #define uartout (&_uartout)
 
+extern void softReset();
+
 void bootapp_print_vars(void)
 {
 	fprintf_P(uartout, PSTR("boot_src_addr  =0x%08lx\n"), boot_src_addr);
@@ -39,8 +41,7 @@ void bootapp_ram2flash(uint16_t rptr, uint16_t fptr, uint16_t size)
 	boot_src_addr = (uint32_t)rptr;
 	boot_dst_addr = (uint32_t)fptr;
 	bootapp_print_vars();
-	wdt_enable(WDTO_15MS);
-	while(1);
+	softReset();
 }
 
 void bootapp_reboot_user0(uint8_t reserved)
@@ -50,6 +51,5 @@ void bootapp_reboot_user0(uint8_t reserved)
 	boot_app_flags = BOOT_APP_FLG_USER0;
 	boot_reserved = reserved;
 	bootapp_print_vars();
-	wdt_enable(WDTO_15MS);
-	while(1);
+	softReset();
 }

+ 29 - 14
Firmware/cardreader.cpp

@@ -1,4 +1,5 @@
 #include "Marlin.h"
+#include "cmdqueue.h"
 #include "cardreader.h"
 #include "ultralcd.h"
 #include "stepper.h"
@@ -61,9 +62,10 @@ char *createFilename(char *buffer,const dir_t &p) //buffer>12characters
 
 /**
 +* Dive into a folder and recurse depth-first to perform a pre-set operation lsAction:
-+*   LS_Count       - Add +1 to nrFiles for every file within the parent
-+*   LS_GetFilename - Get the filename of the file indexed by nrFiles
-+*   LS_SerialPrint - Print the full path and size of each file to serial output
++*   LS_Count           - Add +1 to nrFiles for every file within the parent
++*   LS_GetFilename     - Get the filename of the file indexed by nrFiles
++*   LS_SerialPrint     - Print the full path and size of each file to serial output
++*   LS_SerialPrint_LFN - Print the full path, long filename and size of each file to serial output
 +*/
 
 void CardReader::lsDive(const char *prepend, SdFile parent, const char * const match/*=NULL*/) {
@@ -89,9 +91,13 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m
 				// Serial.print(path);
 				// Get a new directory object using the full path
 				// and dive recursively into it.
+				
+				if (lsAction == LS_SerialPrint_LFN)
+					printf_P(PSTR("DIR_ENTER: %s \"%s\"\n"), path, longFilename[0] ? longFilename : lfilename);
+				
 				SdFile dir;
 				if (!dir.open(parent, lfilename, O_READ)) {
-					if (lsAction == LS_SerialPrint) {
+					if (lsAction == LS_SerialPrint || lsAction == LS_SerialPrint_LFN) {
 						//SERIAL_ECHO_START();
 						//SERIAL_ECHOPGM(_i("Cannot open subdir"));////MSG_SD_CANT_OPEN_SUBDIR
 						//SERIAL_ECHOLN(lfilename);
@@ -99,6 +105,9 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m
 				}
 				lsDive(path, dir);
 				// close() is done automatically by destructor of SdFile
+				
+				if (lsAction == LS_SerialPrint_LFN)
+					puts_P(PSTR("DIR_EXIT"));
 			}
 			else {
 				uint8_t pn0 = p.name[0];
@@ -113,12 +122,18 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m
 						nrFiles++;
 						break;
 					
+					case LS_SerialPrint_LFN:
 					case LS_SerialPrint:
 						createFilename(filename, p);
 						SERIAL_PROTOCOL(prepend);
 						SERIAL_PROTOCOL(filename);
 						MYSERIAL.write(' ');
+						
+						if (lsAction == LS_SerialPrint_LFN)
+							printf_P(PSTR("\"%s\" "), LONGEST_FILENAME);
+						
 						SERIAL_PROTOCOLLN(p.fileSize);
+						manage_heater();
 						break;
 				
 					case LS_GetFilename:
@@ -159,9 +174,9 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m
 		} // while readDir
 }
 
-void CardReader::ls() 
+void CardReader::ls(bool printLFN)
 {
-  lsAction=LS_SerialPrint;
+  lsAction = printLFN ? LS_SerialPrint_LFN : LS_SerialPrint;
   //if(lsAction==LS_Count)
   //nrFiles=0;
 
@@ -243,6 +258,8 @@ void CardReader::release()
 {
   sdprinting = false;
   cardOK = false;
+  SERIAL_ECHO_START;
+  SERIAL_ECHOLNRPGM(_n("SD card released"));////MSG_SD_CARD_RELEASED
 }
 
 void CardReader::startFileprint()
@@ -424,7 +441,7 @@ void CardReader::openFile(const char* name,bool read, bool replace_current/*=tru
       SERIAL_PROTOCOLLNRPGM(_N("File selected"));////MSG_SD_FILE_SELECTED
       getfilename(0, fname);
       lcd_setstatus(longFilename[0] ? longFilename : fname);
-      lcd_setstatus("SD-PRINTING         ");
+      lcd_setstatuspgm(PSTR("SD-PRINTING"));
     }
     else
     {
@@ -475,7 +492,7 @@ void CardReader::removeFile(const char* name)
     {
       SERIAL_PROTOCOLPGM("Deletion failed, File: ");
       SERIAL_PROTOCOL(fname);
-      SERIAL_PROTOCOLLNPGM(".");
+      SERIAL_PROTOCOLLN('.');
     }
   
 }
@@ -496,7 +513,7 @@ void CardReader::getStatus()
           SERIAL_PROTOCOLLNPGM("Print saved");
       }
       else {
-          SERIAL_PROTOCOLLN(longFilename);
+          SERIAL_PROTOCOLLN(LONGEST_FILENAME);
           SERIAL_PROTOCOLRPGM(_N("SD printing byte "));////MSG_SD_PRINTING_BYTE
           SERIAL_PROTOCOL(sdpos);
           SERIAL_PROTOCOL('/');
@@ -543,7 +560,7 @@ void CardReader::write_command_no_newline(char *buf)
   {
     SERIAL_ERROR_START;
     SERIAL_ERRORLNRPGM(MSG_SD_ERR_WRITE_TO_FILE);
-    MYSERIAL.println("An error while writing to the SD Card.");
+    SERIAL_PROTOCOLLNPGM("An error while writing to the SD Card.");
   }
 }
 
@@ -870,8 +887,7 @@ void CardReader::presort() {
 				for (int column = 0; column < 20; column++) {
 					if (column < (percent / 5))
 					{
-						lcd_set_cursor(column, 2);
-						lcd_print('\x01'); //simple progress bar
+						lcd_putc_at(column, 2, '\x01'); //simple progress bar
 					}
 				}
 				counter++;
@@ -949,8 +965,7 @@ void CardReader::presort() {
 #if !SDSORT_USES_RAM //show progresss bar only if slow sorting method is used
 	for (int column = 0; column <= 19; column++)
 	{
-		lcd_set_cursor(column, 2);
-		lcd_print('\x01'); //simple progress bar
+		lcd_putc_at(column, 2, '\x01'); //simple progress bar
 	}
 	_delay(300);
 	lcd_set_degree();

+ 2 - 2
Firmware/cardreader.h

@@ -6,7 +6,7 @@
 #define MAX_DIR_DEPTH 10
 
 #include "SdFile.h"
-enum LsAction {LS_SerialPrint,LS_Count,LS_GetFilename};
+enum LsAction {LS_SerialPrint,LS_SerialPrint_LFN,LS_Count,LS_GetFilename};
 class CardReader
 {
 public:
@@ -38,7 +38,7 @@ public:
   uint16_t getWorkDirDepth();
   
 
-  void ls();
+  void ls(bool printLFN);
   void chdir(const char * relpath);
   void updir();
   void setroot();

+ 17 - 7
Firmware/cmdqueue.cpp

@@ -18,6 +18,10 @@ int buflen = 0;
 // Therefore don't remove the command from the queue in the loop() function.
 bool cmdbuffer_front_already_processed = false;
 
+// Used for temporarely preventing accidental adding of Serial commands to the queue.
+// For now only check_file and the fancheck pause use this.
+bool cmdqueue_serial_disabled = false;
+
 int serial_count = 0;  //index of character read from serial line
 boolean comment_mode = false;
 char *strchr_pointer; // just a pointer to find chars in the command string like X, Y, Z, E, etc
@@ -91,14 +95,19 @@ bool cmdqueue_pop_front()
 
 void cmdqueue_reset()
 {
-    bufindr = 0;
-    bufindw = 0;
-    buflen = 0;
+	while (buflen)
+	{
+		// printf_P(PSTR("dumping: \"%s\" of type %hu\n"), cmdbuffer+bufindr+CMDHDRSIZE, CMDBUFFER_CURRENT_TYPE);
+		ClearToSend();
+		cmdqueue_pop_front();
+	}
+	bufindr = 0;
+	bufindw = 0;
 
 	//commands are removed from command queue after process_command() function is finished
 	//reseting command queue and enqueing new commands during some (usually long running) command processing would cause that new commands are immediately removed from queue (or damaged)
 	//this will ensure that all new commands which are enqueued after cmdqueue reset, will be always executed
-    cmdbuffer_front_already_processed = true; 
+	cmdbuffer_front_already_processed = true; 
 }
 
 // How long a string could be pushed to the front of the command queue?
@@ -390,7 +399,7 @@ void get_command()
 	}
 
   // start of serial line processing loop
-  while ((MYSERIAL.available() > 0 && !saved_printing) || (MYSERIAL.available() > 0 && isPrintPaused)) {  //is print is saved (crash detection or filament detection), dont process data from serial line
+  while (((MYSERIAL.available() > 0 && !saved_printing) || (MYSERIAL.available() > 0 && isPrintPaused)) && !cmdqueue_serial_disabled) {  //is print is saved (crash detection or filament detection), dont process data from serial line
 	
     char serial_char = MYSERIAL.read();
 /*    if (selectedSerialPort == 1)
@@ -582,8 +591,6 @@ void get_command()
        ((serial_char == '#' || serial_char == ':') && comment_mode == false) ||
        serial_count >= (MAX_CMD_SIZE - 1) || n==-1)
     {
-      if(card.eof()) break;
-
       if(serial_char=='#')
         stop_buffering=true;
 
@@ -631,6 +638,9 @@ void get_command()
 
       comment_mode = false; //for new command
       serial_count = 0; //clear buffer
+    
+      if(card.eof()) break;
+    
       // The following line will reserve buffer space if available.
       if (! cmdqueue_could_enqueue_back(MAX_CMD_SIZE-1, true))
           return;

+ 4 - 3
Firmware/cmdqueue.h

@@ -35,6 +35,7 @@ extern char cmdbuffer[BUFSIZE * (MAX_CMD_SIZE + 1) + CMDBUFFER_RESERVE_FRONT];
 extern size_t bufindr;
 extern int buflen;
 extern bool cmdbuffer_front_already_processed;
+extern bool cmdqueue_serial_disabled;
 
 // Type of a command, which is to be executed right now.
 #define CMDBUFFER_CURRENT_TYPE   (cmdbuffer[bufindr])
@@ -65,8 +66,8 @@ extern void cmdqueue_dump_to_serial_single_line(int nr, const char *p);
 extern void cmdqueue_dump_to_serial();
 #endif /* CMDBUFFER_DEBUG */
 extern bool cmd_buffer_empty();
-extern void enquecommand(const char *cmd, bool from_progmem);
-extern void enquecommand_front(const char *cmd, bool from_progmem);
+extern void enquecommand(const char *cmd, bool from_progmem = false);
+extern void enquecommand_front(const char *cmd, bool from_progmem = false);
 extern void repeatcommand_front();
 extern bool is_buffer_empty();
 extern void get_command();
@@ -74,7 +75,7 @@ extern uint16_t cmdqueue_calc_sd_length();
 
 // Return True if a character was found
 static inline bool    code_seen(char code) { return (strchr_pointer = strchr(CMDBUFFER_CURRENT_STRING, code)) != NULL; }
-static inline bool    code_seen(const char *code) { return (strchr_pointer = strstr(CMDBUFFER_CURRENT_STRING, code)) != NULL; }
+static inline bool    code_seen_P(const char *code_PROGMEM) { return (strchr_pointer = strstr_P(CMDBUFFER_CURRENT_STRING, code_PROGMEM)) != NULL; }
 static inline float   code_value()      { return strtod(strchr_pointer+1, NULL);}
 static inline long    code_value_long()    { return strtol(strchr_pointer+1, NULL, 10); }
 static inline int16_t code_value_short()   { return int16_t(strtol(strchr_pointer+1, NULL, 10)); };

+ 4 - 0
Firmware/eeprom.cpp

@@ -93,6 +93,10 @@ void eeprom_init()
         eeprom_switch_to_next_sheet();
     }
     check_babystep();
+
+#ifdef PINDA_TEMP_COMP
+if (eeprom_read_byte((uint8_t*)EEPROM_PINDA_TEMP_COMPENSATION) == 0xff) eeprom_update_byte((uint8_t *)EEPROM_PINDA_TEMP_COMPENSATION, 0);
+#endif //PINDA_TEMP_COMP
 }
 
 //! @brief Get default sheet name for index

+ 15 - 58
Firmware/eeprom.h

@@ -98,19 +98,9 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
 | 0x0FF1h 4081		| uint32	| EEPROM_FILAMENTUSED					| ???			| 00 00 00 00h 0 __S/P__| Filament used in meters							| ??? 			| D3 Ax0ff1 C4
 | 0x0FEDh 4077		| uint32	| EEPROM_TOTALTIME						| ???			| 00 00 00 00h 0 __S/P__| Total print time									| ??? 			| D3 Ax0fed C4
 | 0x0FE5h 4069		| float		| EEPROM_BED_CALIBRATION_CENTER			| ???			| ff ff ff ffh			| ???											 	| ??? 			| D3 Ax0fe5 C8
-| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
 | 0x0FDDh 4061		| float		| EEPROM_BED_CALIBRATION_VEC_X			| ???			| ff ff ff ffh			| ???											 	| ??? 			| D3 Ax0fdd C8
-| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^	
 | 0x0FD5h 4053		| float		| EEPROM_BED_CALIBRATION_VEC_Y			| ???			| ff ff ff ffh			| ???											 	| ??? 			| D3 Ax0fd5 C8
-| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
 | 0x0FC5h 4037		| int16		| EEPROM_BED_CALIBRATION_Z_JITTER		| ???			| ff ffh 65535			| ???											 	| ??? 			| D3 Ax0fc5 C16
-| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^	
-| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
-| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
-| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
-| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
-| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
-| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
 | 0x0FC4h 4036		| bool		| EEPROM_FARM_MODE						| 00h 0			| ffh 255 		__P__	| Prusa farm mode: __off__							| G99 			| D3 Ax0fc4 C1
 | ^					| ^			| ^										| 01h 1			| ^						| Prusa farm mode: __on__							| G98			| ^
 | 0x0FC3h 4035		| free		| _EEPROM_FREE_NR1_						| ???			| ffh 255				| _Free EEPROM space_								| _free space_	| D3 Ax0fc3 C1
@@ -129,10 +119,6 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
 | ^					| ^			| ^										| 01h 1			| ^						| Toshiba Air: __on__								| ^ 			| ^	
 | 0x0FBAh 4026		| uchar		| EEPROM_PRINT_FLAG						| ???			| ???					| _unsued_											| ??? 			| D3 Ax0fba C1
 | 0x0FB0h 4016		| int16		| EEPROM_PROBE_TEMP_SHIFT				| ???			| ???					| ???												| ??? 			| D3 Ax0fb0 C10
-| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
-| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
-| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
-| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
 | 0x0FAFh 4015		| bool		| EEPROM_TEMP_CAL_ACTIVE				| 00h 0			| 00h 0					| PINDA Temp cal.: __inactive__						| LCD menu		| D3 Ax0faf C1
 | ^					| ^			| ^										| ffh 255		| ^						| PINDA Temp cal.: __active__						| ^ 			| ^
 | 0x0FA7h 4007		| uint32	| EEPROM_BOWDEN_LENGTH					| ???			| ff 00 00 00h			| Bowden length										| ??? 			| D3 Ax0fae C8
@@ -143,16 +129,8 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
 | ^					| ^			| ^										| 01h 1			| ^						| Power Panic flag: __active__						| ^ 			| ^
 | ^					| ^			| ^										| 02h 2			| ^						| Power Panic flag: __???__							| ^ 			| ^
 | 0x0F9Dh 3997		| float		| EEPROM_UVLO_CURRENT_POSITION			| ???			| ffh 255				| Power Panic position 								| ??? 			| D3 Ax0f9d C8
-| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
 | 0x0F95h 3989		| char		| EEPROM_FILENAME						| ???			| ffh 255				| Power Panic Filename 								| ??? 			| D3 Ax0f95 C8
-| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
-| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
-| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
-| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
-| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
-| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
-| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
-| 0x0F91h 39851		| uint32	| EEPROM_FILE_POSITION					| ???			| ff ff ff ffh			| Power Panic File Position							| ??? 			| D3 Ax0f91 C4
+| 0x0F91h 3985		| uint32	| EEPROM_FILE_POSITION					| ???			| ff ff ff ffh			| Power Panic File Position							| ??? 			| D3 Ax0f91 C4
 | 0x0F8Dh 3981		| float		| EEPROM_UVLO_CURRENT_POSITION_Z		| ???			| ff ff ff ffh			| Power Panic Z Position	 						| ^ 			| D3 Ax0f8d C4
 | 0x0F8Ch 3980		| ???		| EEPROM_UVLO_UNUSED_001				| ??? 			| ffh 255				| Power Panic _unused_								| ^ 			| D3 Ax0f8c C1
 | 0x0F8Bh 3979		| uint8		| EEPROM_UVLO_TARGET_BED				| ???			| ffh 255				| Power Panic Bed temperature						| ^ 			| D3 Ax0f8b C1
@@ -161,14 +139,6 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
 | 0x0F87h 3975		| uint8		| EEPROM_FAN_CHECK_ENABLED				| 00h 0			| ???					| Fan Check __disabled__							| LCD menu		| D3 Ax0f87 C1
 | ^					| ^			| ^										| 01h 1			| ffh 255				| Fan Check __enabled__ 							| ^ 			| ^
 | 0x0F75h 3957		| uint16	| EEPROM_UVLO_MESH_BED_LEVELING			| ???			| ff ffh 65535			| Power Panic Mesh Bed Leveling						| ???			| D3 Ax0f75 C18 
-| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
-| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
-| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
-| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
-| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
-| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
-| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
-| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
 | 0x0F73h 3955		| uint16	| EEPROM_UVLO_Z_MICROSTEPS				| ???			| ff ffh 65535			| Power Panic Z microsteps							| ???			| D3 Ax0f73 C2 
 | 0x0F72h 3954		| uint8		| EEPROM_UVLO_E_ABS						| ???			| ffh 255				| Power Panic ??? position							| ???			| D3 Ax0f72 C1
 | 0x0F6Eh 3950		| foat		| EEPROM_UVLO_CURRENT_POSITION_E		| ???			| ff ff ff ffh			| Power Panic E position							| ???			| D3 Ax0f6e C4
@@ -203,7 +173,7 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
 | 0x0F01h 3841		| uint16	| EEPROM_FERROR_COUNT_TOT				| 0000-fffe		| ff ffh		__S/P__	| Total filament sensor errors 						| ???			| D3 Ax0f01 C2
 | 0x0EFFh 3839		| uint16	| EEPROM_POWER_COUNT_TOT				| 0000-fffe		| ff ffh		__S/P__	| Total power failures		  						| ???			| D3 Ax0eff C2
 | 0x0EFEh 3838		| uint8		| EEPROM_TMC2130_HOME_X_ORIGIN			| ???			| ffh 255				| ???						  						| ???			| D3 Ax0efe C1
-| 0x0EFDh 3837		| uint8		| EEPROM	MC2130_HOME_X_BSTEPS			| ???			| ffh 255			| ???						  						| ???			| D3 Ax0efd C1
+| 0x0EFDh 3837		| uint8		| EEPROM	MC2130_HOME_X_BSTEPS		| ???			| ffh 255		    	| ???						  						| ???			| D3 Ax0efd C1
 | 0x0EFCh 3836		| uint8		| EEPROM_TMC2130_HOME_X_FSTEPS			| ???			| ffh 255				| ???						  						| ???			| D3 Ax0efc C1
 | 0x0EFBh 3835		| uint8		| EEPROM_TMC2130_HOME_Y_ORIGIN			| ???			| ffh 255				| ???						  						| ???			| D3 Ax0efb C1
 | 0x0EFAh 3834		| uint8		| EEPROM_TMC2130_HOME_Y_BSTEPS			| ???			| ffh 255				| ???						  						| ???			| D3 Ax0efa C1
@@ -257,28 +227,6 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
 | ^					| ^			| ^										| 01h 1			| ^						| MMU2/s cutter: __enabled__						| ^				| ^
 | ^					| ^			| ^										| 02h 2			| ^						| MMU2/s cutter: __always__							| ^				| ^
 | 0x0DAE 3502		| uint16	| EEPROM_UVLO_MESH_BED_LEVELING_FULL	| ???			| ff ffh 65535			| Power panic Mesh bed leveling points 				| ???			| D3 Ax0dae C288
-| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
-| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
-| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
-| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
-| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
-| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
-| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
-| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
-| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
-| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
-| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
-| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
-| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
-| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
-| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
-| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
-| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
-| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
-| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
-| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
-| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
-| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
 | 0x0DAD 3501		| uint8		| EEPROM_MBL_TYPE						| ???			| ffh 255				| Mesh bed leveling precision 		_unused atm_	| ???			| D3 Ax0dad C1
 | 0x0DAC 3500		| bool		| EEPROM_MBL_MAGNET_ELIMINATION			| 01h 1			| ffh 255				| Mesh bed leveling does: __ignores__ magnets		| LCD menu		| D3 Ax0dac C1
 | ^					| ^			| ^										| 00h 0			| ^						| Mesh bed leveling does: __NOT ignores__ magnets	| ^				| ^
@@ -294,9 +242,11 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
 | ^					| ^			| ^										| 00h 0			| ^						| Check mode for nozzle is: __none__				| ^				| ^
 | 0x0DA7 3495		| uint8		| EEPROM_NOZZLE_DIAMETER				| 28h 40		| ffh 255				| Nozzle diameter is: __40 or 0.40mm__				| LCD menu		| D3 Ax0da7 C1
 | ^					| ^			| ^										| 3ch 60		| ^						| Nozzle diameter is: __60 or 0.60mm__				| ^				| ^
+| ^					| ^			| ^										| 3ch 80		| ^						| Nozzle diameter is: __80 or 0.80mm__				| ^				| ^
 | ^					| ^			| ^										| 19h 25		| ^						| Nozzle diameter is: __25 or 0.25mm__				| ^				| ^
 | 0x0DA5 3493		| uint16	| EEPROM_NOZZLE_DIAMETER_uM				| 9001h			| ff ffh 65535			| Nozzle diameter is: __400um__						| LCD menu		| D3 Ax0da5 C2
 | ^					| ^			| ^										| 5802h			| ^						| Nozzle diameter is: __600um__						| ^				| ^
+| ^					| ^			| ^										| 2003h			| ^						| Nozzle diameter is: __800um__						| ^				| ^
 | ^					| ^			| ^										| fa00h			| ^						| Nozzle diameter is: __250um__						| ^				| ^
 | 0x0DA4 3492		| uint8		| EEPROM_CHECK_MODEL					| 01h 1			| ffh 255				| Check mode for printer model is: __warn__			| LCD menu		| D3 Ax0da4 C1
 | ^					| ^			| ^										| 02h 0			| ^						| Check mode for printer model is: __strict__		| ^				| ^
@@ -359,8 +309,15 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
 | ^					| ^			| ^										| 00h 0			| ^						| LCD backlight mode: __Dim__						| ^				| ^
 | 0x0D30 3376		| uint16	| EEPROM_BACKLIGHT_TIMEOUT				| 01 00 - ff ff | 0a 00h 65535			| LCD backlight timeout: __10__ seconds				| LCD menu		| D3 Ax0d30 C2
 | 0x0D2C 3372		| float		| EEPROM_UVLO_LA_K						| ???			| ff ff ff ffh			| Power panic saved Linear Advanced K value			| ???			| D3 Ax0d2c C4
-| 0x0D2B 3371		| uint8		| EEPROM_ALTFAN_OVERRIDE				| 0-1			| 00h 0					| ALTFAN override									| LCD menu		| D3 Ax0d2b C1
-| 0x0D2A 3370		| uint8		| EEPROM_EXPERIMENTAL_VISIBILITY		| 0-1			| 00h 0					| Experimental menu visibility						| LCD menu		| D3 Ax0d2a C1
+| 0x0D2B 3371		| uint8		| EEPROM_ALTFAN_OVERRIDE				| ffh 255		| ffh 255				| ALTFAN override unknown state						| LCD menu		| D3 Ax0d2b C1
+| ^					| ^			| ^										| 00h 0			| ^						| ALTFAN override deactivated						| ^				| ^
+| ^					| ^			| ^										| 01h 1			| ^						| ALTFAN override activated 						| ^				| ^
+| 0x0D2A 3370		| uint8		| EEPROM_EXPERIMENTAL_VISIBILITY		| ffh 255		| ffh 255				| Experimental menu visibility unknown state		| LCD menu		| D3 Ax0d2a C1
+| ^					| ^			| ^										| 00h 0			| ^						| Experimental menu visibility hidden				| ^				| ^
+| ^					| ^			| ^										| 01h 1			| ^						| Experimental menu visibility visible				| ^				| ^
+| 0x0D29 3369		| uint8		| EEPROM_PINDA_TEMP_COMPENSATION   		| ffh 255		| ffh 255				| PINDA temp compensation unknown state	            | LCD menu		| D3 Ax0d29 C1
+| ^					| ^			| ^										| 00h 0			| ^						| PINDA has no temp compensation PINDA v1/2    		| ^				| ^
+| ^					| ^			| ^										| 01h 1			| ^						| PINDA has temp compensation aka SuperPINDA       	| ^				| ^
 
   
 | Address begin		| Bit/Type 	| Name 									| Valid values	| Default/FactoryReset	| Description 										| Gcode/Function| Debug code
@@ -565,9 +522,9 @@ static Sheets * const EEPROM_Sheets_base = (Sheets*)(EEPROM_SHEETS_BASE);
 
 #define EEPROM_ALTFAN_OVERRIDE (EEPROM_UVLO_LA_K-1) //uint8
 #define EEPROM_EXPERIMENTAL_VISIBILITY (EEPROM_ALTFAN_OVERRIDE-1) //uint8
-
+#define EEPROM_PINDA_TEMP_COMPENSATION (EEPROM_EXPERIMENTAL_VISIBILITY-1) //uint8
 //This is supposed to point to last item to allow EEPROM overrun check. Please update when adding new items.
-#define EEPROM_LAST_ITEM EEPROM_EXPERIMENTAL_VISIBILITY
+#define EEPROM_LAST_ITEM EEPROM_PINDA_TEMP_COMPENSATION
 // !!!!!
 // !!!!! this is end of EEPROM section ... all updates MUST BE inserted before this mark !!!!!
 // !!!!!

+ 11 - 19
Firmware/fastio.h

@@ -7,15 +7,7 @@
 #define	_FASTIO_ARDUINO_H
 
 #include <avr/io.h>
-
-/*
-  utility functions
-*/
-
-#ifndef MASK
-/// MASKING- returns \f$2^PIN\f$
-#define MASK(PIN)  (1 << PIN)
-#endif
+#include "macros.h"
 
 #ifndef CRITICAL_SECTION_START
   #define CRITICAL_SECTION_START  unsigned char _sreg = SREG; cli();
@@ -30,20 +22,20 @@
 */
 
 /// Read a pin
-#define _READ(IO) ((bool)(DIO ## IO ## _RPORT & MASK(DIO ## IO ## _PIN)))
+#define _READ(IO) ((bool)(DIO ## IO ## _RPORT & _BV(DIO ## IO ## _PIN)))
 /// write to a pin
 // On some boards pins > 0x100 are used. These are not converted to atomic actions. An critical section is needed.
 
-#define _WRITE_NC(IO, v)  do { if (v) {DIO ##  IO ## _WPORT |= MASK(DIO ## IO ## _PIN); } else {DIO ##  IO ## _WPORT &= ~MASK(DIO ## IO ## _PIN); }; } while (0)
+#define _WRITE_NC(IO, v)  do { if (v) {DIO ##  IO ## _WPORT |= _BV(DIO ## IO ## _PIN); } else {DIO ##  IO ## _WPORT &= ~_BV(DIO ## IO ## _PIN); }; } while (0)
 
 #define _WRITE_C(IO, v)   do { if (v) { \
                                          CRITICAL_SECTION_START; \
-                                         {DIO ##  IO ## _WPORT |= MASK(DIO ## IO ## _PIN); }\
+                                         {DIO ##  IO ## _WPORT |= _BV(DIO ## IO ## _PIN); }\
                                          CRITICAL_SECTION_END; \
                                        }\
                                        else {\
                                          CRITICAL_SECTION_START; \
-                                         {DIO ##  IO ## _WPORT &= ~MASK(DIO ## IO ## _PIN); }\
+                                         {DIO ##  IO ## _WPORT &= ~_BV(DIO ## IO ## _PIN); }\
                                          CRITICAL_SECTION_END; \
                                        }\
                                      }\
@@ -52,20 +44,20 @@
 #define _WRITE(IO, v)  do {  if (&(DIO ##  IO ## _RPORT) >= (uint8_t *)0x100) {_WRITE_C(IO, v); } else {_WRITE_NC(IO, v); }; } while (0)
 
 /// toggle a pin
-#define _TOGGLE(IO)  do {DIO ##  IO ## _RPORT = MASK(DIO ## IO ## _PIN); } while (0)
+#define _TOGGLE(IO)  do {DIO ##  IO ## _RPORT = _BV(DIO ## IO ## _PIN); } while (0)
 
 /// set pin as input
-#define	_SET_INPUT(IO) do {DIO ##  IO ## _DDR &= ~MASK(DIO ## IO ## _PIN); } while (0)
+#define	_SET_INPUT(IO) do {DIO ##  IO ## _DDR &= ~_BV(DIO ## IO ## _PIN); } while (0)
 /// set pin as output
-#define	_SET_OUTPUT(IO) do {DIO ##  IO ## _DDR |=  MASK(DIO ## IO ## _PIN); } while (0)
+#define	_SET_OUTPUT(IO) do {DIO ##  IO ## _DDR |=  _BV(DIO ## IO ## _PIN); } while (0)
 
 /// check if pin is an input
-#define	_GET_INPUT(IO)  ((DIO ## IO ## _DDR & MASK(DIO ## IO ## _PIN)) == 0)
+#define	_GET_INPUT(IO)  ((DIO ## IO ## _DDR & _BV(DIO ## IO ## _PIN)) == 0)
 /// check if pin is an output
-#define	_GET_OUTPUT(IO)  ((DIO ## IO ## _DDR & MASK(DIO ## IO ## _PIN)) != 0)
+#define	_GET_OUTPUT(IO)  ((DIO ## IO ## _DDR & _BV(DIO ## IO ## _PIN)) != 0)
 
 /// check if pin is an timer
-#define	_GET_TIMER(IO)  ((DIO ## IO ## _PWM)
+#define	_GET_TIMER(IO)  (DIO ## IO ## _PWM)
 
 //  why double up on these macros? see http://gcc.gnu.org/onlinedocs/cpp/Stringification.html
 

+ 1 - 0
Firmware/first_lay_cal.cpp

@@ -7,6 +7,7 @@
 #include "Configuration_prusa.h"
 #include "language.h"
 #include "Marlin.h"
+#include "cmdqueue.h"
 #include "mmu.h"
 #include <avr/pgmspace.h>
 

+ 15 - 17
Firmware/fsensor.cpp

@@ -6,7 +6,6 @@
 #include <avr/pgmspace.h>
 #include "pat9125.h"
 #include "stepper.h"
-#include "io_atmega2560.h"
 #include "cmdqueue.h"
 #include "ultralcd.h"
 #include "mmu.h"
@@ -130,7 +129,7 @@ unsigned long nIRsensorLastTime;
 
 void fsensor_stop_and_save_print(void)
 {
-    printf_P(PSTR("fsensor_stop_and_save_print\n"));
+    puts_P(PSTR("fsensor_stop_and_save_print"));
     stop_and_save_print_to_ram(0, 0);
     fsensor_watch_runout = false;
 }
@@ -153,7 +152,7 @@ void fsensor_set_axis_steps_per_unit(float u)
 
 void fsensor_restore_print_and_continue(void)
 {
-    printf_P(PSTR("fsensor_restore_print_and_continue\n"));
+    puts_P(PSTR("fsensor_restore_print_and_continue"));
     fsensor_watch_runout = true;
 #ifdef PAT9125
     fsensor_reset_err_cnt();
@@ -165,7 +164,7 @@ void fsensor_restore_print_and_continue(void)
 // allowing new instructions to be inserted in the middle
 void fsensor_checkpoint_print(void)
 {
-    printf_P(PSTR("fsensor_checkpoint_print\n"));
+    puts_P(PSTR("fsensor_checkpoint_print"));
     stop_and_save_print_to_ram(0, 0);
     restore_print_from_ram_and_continue(0);
 }
@@ -317,7 +316,7 @@ void fsensor_autoload_check_start(void)
 		printf_P(ERRMSG_PAT9125_NOT_RESP, 3);
 		return;
 	}
-	puts_P(_N("fsensor_autoload_check_start - autoload ENABLED\n"));
+	puts_P(_N("fsensor_autoload_check_start - autoload ENABLED"));
 	fsensor_autoload_y = pat9125_y; //save current y value
 	fsensor_autoload_c = 0; //reset number of changes counter
 	fsensor_autoload_sum = 0;
@@ -335,7 +334,7 @@ void fsensor_autoload_check_stop(void)
 	if (!fsensor_autoload_enabled) return;
 //	puts_P(_N("fsensor_autoload_check_stop 2\n"));
 	if (!fsensor_watch_autoload) return;
-	puts_P(_N("fsensor_autoload_check_stop - autoload DISABLED\n"));
+	puts_P(_N("fsensor_autoload_check_stop - autoload DISABLED"));
 	fsensor_autoload_sum = 0;
 	fsensor_watch_autoload = false;
 	fsensor_watch_runout = true;
@@ -415,7 +414,7 @@ void fsensor_oq_meassure_start(uint8_t skip)
 {
 	if (!fsensor_enabled) return;
 	if (!fsensor_oq_meassure_enabled) return;
-	printf_P(PSTR("fsensor_oq_meassure_start\n"));
+	puts_P(PSTR("fsensor_oq_meassure_start"));
 	fsensor_oq_skipchunk = skip;
 	fsensor_oq_samples = 0;
 	fsensor_oq_st_sum = 0;
@@ -448,7 +447,7 @@ bool fsensor_oq_result(void)
 {
 	if (!fsensor_enabled) return true;
 	if (!fsensor_oq_meassure_enabled) return true;
-	printf_P(_N("fsensor_oq_result\n"));
+	puts_P(_N("fsensor_oq_result"));
 	bool res_er_sum = (fsensor_oq_er_sum <= FSENSOR_OQ_MAX_ES);
 	printf_P(_N(" er_sum = %u %S\n"), fsensor_oq_er_sum, (res_er_sum?_OK:_NG));
 	bool res_er_max = (fsensor_oq_er_max <= FSENSOR_OQ_MAX_EM);
@@ -608,9 +607,8 @@ void fsensor_st_block_chunk(int cnt)
 	if (!fsensor_enabled) return;
 	fsensor_st_cnt += cnt;
 
-    // !!! bit toggling (PINxn <- 1) (for PinChangeInterrupt) does not work for some MCU pins
-    if (PIN_GET(FSENSOR_INT_PIN)) {PIN_VAL(FSENSOR_INT_PIN, LOW);}
-    else {PIN_VAL(FSENSOR_INT_PIN, HIGH);}
+	// !!! bit toggling (PINxn <- 1) (for PinChangeInterrupt) does not work for some MCU pins
+	WRITE(FSENSOR_INT_PIN, !READ(FSENSOR_INT_PIN));
 }
 #endif //PAT9125
 
@@ -618,7 +616,7 @@ void fsensor_st_block_chunk(int cnt)
 //! Common code for enqueing M600 and supplemental codes into the command queue.
 //! Used both for the IR sensor and the PAT9125
 void fsensor_enque_M600(){
-	printf_P(PSTR("fsensor_update - M600\n"));
+	puts_P(PSTR("fsensor_update - M600"));
 	eeprom_update_byte((uint8_t*)EEPROM_FERROR_COUNT, eeprom_read_byte((uint8_t*)EEPROM_FERROR_COUNT) + 1);
 	eeprom_update_word((uint16_t*)EEPROM_FERROR_COUNT_TOT, eeprom_read_word((uint16_t*)EEPROM_FERROR_COUNT_TOT) + 1);
 	enquecommand_front_P((PSTR("M600")));
@@ -672,7 +670,7 @@ void fsensor_update(void)
                 fsensor_softfail_ccnt = 0;
             if (!err && fsensor_softfail_ccnt <= FSENSOR_SOFTERR_CMAX)
             {
-                printf_P(PSTR("fsensor_err_cnt = 0\n"));
+                puts_P(PSTR("fsensor_err_cnt = 0"));
                 ++fsensor_softfail;
                 ++fsensor_softfail_ccnt;
                 fsensor_softfail_last = now;
@@ -759,19 +757,19 @@ bool fsensor_IR_check(){
         /// Or the user is so creative so that he can hold a piece of fillament in the hole in such a genius way,
         /// that the IR fsensor reading is within 1.5 and 3V ... this would have been highly unusual
         /// and would have been considered more like a sabotage than normal printer operation
-        printf_P(PSTR("fsensor in forbidden range 1.5-3V - check sensor\n"));
+        puts_P(PSTR("fsensor in forbidden range 1.5-3V - check sensor"));
         return false; 
     }
     if( oFsensorPCB == ClFsensorPCB::_Rev04 ){
         /// newer IR sensor cannot normally produce 4.6-5V, this is considered a failure/bad mount
         if( IRsensor_Hopen_TRESHOLD <= current_voltage_raw_IR && current_voltage_raw_IR <= IRsensor_VMax_TRESHOLD ){
-            printf_P(PSTR("fsensor v0.4 in fault range 4.6-5V - unconnected\n"));
+            puts_P(PSTR("fsensor v0.4 in fault range 4.6-5V - unconnected"));
             return false;
         }
         /// newer IR sensor cannot normally produce 0-0.3V, this is considered a failure 
 #if 0	//Disabled as it has to be decided if we gonna use this or not.
         if( IRsensor_Hopen_TRESHOLD <= current_voltage_raw_IR && current_voltage_raw_IR <= IRsensor_VMax_TRESHOLD ){
-            printf_P(PSTR("fsensor v0.4 in fault range 0.0-0.3V - wrong IR sensor\n"));
+            puts_P(PSTR("fsensor v0.4 in fault range 0.0-0.3V - wrong IR sensor"));
             return false;
         }
 #endif
@@ -779,7 +777,7 @@ bool fsensor_IR_check(){
     /// If IR sensor is "uknown state" and filament is not loaded > 1.5V return false
 #if 0
     if( (oFsensorPCB == ClFsensorPCB::_Undef) && ( current_voltage_raw_IR > IRsensor_Lmax_TRESHOLD ) ){
-        printf_P(PSTR("Unknown IR sensor version and no filament loaded detected.\n"));
+        puts_P(PSTR("Unknown IR sensor version and no filament loaded detected."));
         return false;
     }
 #endif

+ 0 - 1
Firmware/heatbed_pwm.cpp

@@ -1,6 +1,5 @@
 #include <avr/io.h>
 #include <avr/interrupt.h>
-#include "io_atmega2560.h"
 
 // All this is about silencing the heat bed, as it behaves like a loudspeaker.
 // Basically, we want the PWM heating switched at 30Hz (or so) which is a well ballanced

+ 0 - 374
Firmware/io_atmega2560.h

@@ -1,374 +0,0 @@
-//io_atmega2560.h
-#ifndef _IO_ATMEGA2560
-#define _IO_ATMEGA2560
-
-
-#define __PIN_P0  PINE
-#define __PIN_P1  PINE
-#define __PIN_P2  PINE
-#define __PIN_P3  PINE
-#define __PIN_P4  PING
-#define __PIN_P5  PINE
-#define __PIN_P6  PINH
-#define __PIN_P7  PINH
-#define __PIN_P8  PINH
-#define __PIN_P9  PINH
-#define __PIN_P10 PINB
-#define __PIN_P11 PINB
-#define __PIN_P12 PINB
-#define __PIN_P13 PINB
-#define __PIN_P14 PINJ
-#define __PIN_P15 PINJ
-#define __PIN_P16 PINH
-#define __PIN_P17 PINH
-#define __PIN_P18 PIND
-#define __PIN_P19 PIND
-#define __PIN_P20 PIND
-#define __PIN_P21 PIND
-#define __PIN_P22 PINA
-#define __PIN_P23 PINA
-#define __PIN_P24 PINA
-#define __PIN_P25 PINA
-#define __PIN_P26 PINA
-#define __PIN_P27 PINA
-#define __PIN_P28 PINA
-#define __PIN_P29 PINA
-#define __PIN_P30 PINC
-#define __PIN_P31 PINC
-#define __PIN_P32 PINC
-#define __PIN_P33 PINC
-#define __PIN_P34 PINC
-#define __PIN_P35 PINC
-#define __PIN_P36 PINC
-#define __PIN_P37 PINC
-#define __PIN_P38 PIND
-#define __PIN_P39 PING
-#define __PIN_P40 PING
-#define __PIN_P41 PING
-#define __PIN_P42 PINL
-#define __PIN_P43 PINL
-#define __PIN_P44 PINL
-#define __PIN_P45 PINL
-#define __PIN_P46 PINL
-#define __PIN_P47 PINL
-#define __PIN_P48 PINL
-#define __PIN_P49 PINL
-#define __PIN_P50 PINB
-#define __PIN_P51 PINB
-#define __PIN_P52 PINB
-#define __PIN_P53 PINB
-#define __PIN_P54 PINF
-#define __PIN_P55 PINF
-#define __PIN_P56 PINF
-#define __PIN_P57 PINF
-#define __PIN_P58 PINF
-#define __PIN_P59 PINF
-#define __PIN_P60 PINF
-#define __PIN_P61 PINF
-#define __PIN_P62 PINK
-#define __PIN_P63 PINK
-#define __PIN_P64 PINK
-#define __PIN_P65 PINK
-#define __PIN_P66 PINK
-#define __PIN_P67 PINK
-#define __PIN_P68 PINK
-#define __PIN_P69 PINK
-#define __PIN_P70 PING
-#define __PIN_P71 PING
-#define __PIN_P72 PINJ
-#define __PIN_P73 PINJ
-#define __PIN_P74 PINJ
-#define __PIN_P75 PINJ
-#define __PIN_P76 PINJ
-#define __PIN_P77 PINJ
-#define __PIN_P78 PINE
-#define __PIN_P79 PINE
-#define __PIN_P80 PINE
-#define __PIN_P81 PIND
-#define __PIN_P82 PIND
-#define __PIN_P83 PIND
-#define __PIN_P84 PINH
-#define __PIN_P85 PINH
-
-#define __PORT_P0  PORTE
-#define __PORT_P1  PORTE
-#define __PORT_P2  PORTE
-#define __PORT_P3  PORTE
-#define __PORT_P4  PORTG
-#define __PORT_P5  PORTE
-#define __PORT_P6  PORTH
-#define __PORT_P7  PORTH
-#define __PORT_P8  PORTH
-#define __PORT_P9  PORTH
-#define __PORT_P10 PORTB
-#define __PORT_P11 PORTB
-#define __PORT_P12 PORTB
-#define __PORT_P13 PORTB
-#define __PORT_P14 PORTJ
-#define __PORT_P15 PORTJ
-#define __PORT_P16 PORTH
-#define __PORT_P17 PORTH
-#define __PORT_P18 PORTD
-#define __PORT_P19 PORTD
-#define __PORT_P20 PORTD
-#define __PORT_P21 PORTD
-#define __PORT_P22 PORTA
-#define __PORT_P23 PORTA
-#define __PORT_P24 PORTA
-#define __PORT_P25 PORTA
-#define __PORT_P26 PORTA
-#define __PORT_P27 PORTA
-#define __PORT_P28 PORTA
-#define __PORT_P29 PORTA
-#define __PORT_P30 PORTC
-#define __PORT_P31 PORTC
-#define __PORT_P32 PORTC
-#define __PORT_P33 PORTC
-#define __PORT_P34 PORTC
-#define __PORT_P35 PORTC
-#define __PORT_P36 PORTC
-#define __PORT_P37 PORTC
-#define __PORT_P38 PORTD
-#define __PORT_P39 PORTG
-#define __PORT_P40 PORTG
-#define __PORT_P41 PORTG
-#define __PORT_P42 PORTL
-#define __PORT_P43 PORTL
-#define __PORT_P44 PORTL
-#define __PORT_P45 PORTL
-#define __PORT_P46 PORTL
-#define __PORT_P47 PORTL
-#define __PORT_P48 PORTL
-#define __PORT_P49 PORTL
-#define __PORT_P50 PORTB
-#define __PORT_P51 PORTB
-#define __PORT_P52 PORTB
-#define __PORT_P53 PORTB
-#define __PORT_P54 PORTF
-#define __PORT_P55 PORTF
-#define __PORT_P56 PORTF
-#define __PORT_P57 PORTF
-#define __PORT_P58 PORTF
-#define __PORT_P59 PORTF
-#define __PORT_P60 PORTF
-#define __PORT_P61 PORTF
-#define __PORT_P62 PORTK
-#define __PORT_P63 PORTK
-#define __PORT_P64 PORTK
-#define __PORT_P65 PORTK
-#define __PORT_P66 PORTK
-#define __PORT_P67 PORTK
-#define __PORT_P68 PORTK
-#define __PORT_P69 PORTK
-#define __PORT_P70 PORTG
-#define __PORT_P71 PORTG
-#define __PORT_P72 PORTJ
-#define __PORT_P73 PORTJ
-#define __PORT_P74 PORTJ
-#define __PORT_P75 PORTJ
-#define __PORT_P76 PORTJ
-#define __PORT_P77 PORTJ
-#define __PORT_P78 PORTE
-#define __PORT_P79 PORTE
-#define __PORT_P80 PORTE
-#define __PORT_P81 PORTD
-#define __PORT_P82 PORTD
-#define __PORT_P83 PORTD
-#define __PORT_P84 PORTH
-#define __PORT_P85 PORTH
-
-#define __DDR_P0  DDRE
-#define __DDR_P1  DDRE
-#define __DDR_P2  DDRE
-#define __DDR_P3  DDRE
-#define __DDR_P4  DDRG
-#define __DDR_P5  DDRE
-#define __DDR_P6  DDRH
-#define __DDR_P7  DDRH
-#define __DDR_P8  DDRH
-#define __DDR_P9  DDRH
-#define __DDR_P10 DDRB
-#define __DDR_P11 DDRB
-#define __DDR_P12 DDRB
-#define __DDR_P13 DDRB
-#define __DDR_P14 DDRJ
-#define __DDR_P15 DDRJ
-#define __DDR_P16 DDRH
-#define __DDR_P17 DDRH
-#define __DDR_P18 DDRD
-#define __DDR_P19 DDRD
-#define __DDR_P20 DDRD
-#define __DDR_P21 DDRD
-#define __DDR_P22 DDRA
-#define __DDR_P23 DDRA
-#define __DDR_P24 DDRA
-#define __DDR_P25 DDRA
-#define __DDR_P26 DDRA
-#define __DDR_P27 DDRA
-#define __DDR_P28 DDRA
-#define __DDR_P29 DDRA
-#define __DDR_P30 DDRC
-#define __DDR_P31 DDRC
-#define __DDR_P32 DDRC
-#define __DDR_P33 DDRC
-#define __DDR_P34 DDRC
-#define __DDR_P35 DDRC
-#define __DDR_P36 DDRC
-#define __DDR_P37 DDRC
-#define __DDR_P38 DDRD
-#define __DDR_P39 DDRG
-#define __DDR_P40 DDRG
-#define __DDR_P41 DDRG
-#define __DDR_P42 DDRL
-#define __DDR_P43 DDRL
-#define __DDR_P44 DDRL
-#define __DDR_P45 DDRL
-#define __DDR_P46 DDRL
-#define __DDR_P47 DDRL
-#define __DDR_P48 DDRL
-#define __DDR_P49 DDRL
-#define __DDR_P50 DDRB
-#define __DDR_P51 DDRB
-#define __DDR_P52 DDRB
-#define __DDR_P53 DDRB
-#define __DDR_P54 DDRF
-#define __DDR_P55 DDRF
-#define __DDR_P56 DDRF
-#define __DDR_P57 DDRF
-#define __DDR_P58 DDRF
-#define __DDR_P59 DDRF
-#define __DDR_P60 DDRF
-#define __DDR_P61 DDRF
-#define __DDR_P62 DDRK
-#define __DDR_P63 DDRK
-#define __DDR_P64 DDRK
-#define __DDR_P65 DDRK
-#define __DDR_P66 DDRK
-#define __DDR_P67 DDRK
-#define __DDR_P68 DDRK
-#define __DDR_P69 DDRK
-#define __DDR_P70 DDRG
-#define __DDR_P71 DDRG
-#define __DDR_P72 DDRJ
-#define __DDR_P73 DDRJ
-#define __DDR_P74 DDRJ
-#define __DDR_P75 DDRJ
-#define __DDR_P76 DDRJ
-#define __DDR_P77 DDRJ
-#define __DDR_P78 DDRE
-#define __DDR_P79 DDRE
-#define __DDR_P80 DDRE
-#define __DDR_P81 DDRD
-#define __DDR_P82 DDRD
-#define __DDR_P83 DDRD
-#define __DDR_P84 DDRH
-#define __DDR_P85 DDRH
-
-#define __BIT_P0  0
-#define __BIT_P1  1
-#define __BIT_P2  4
-#define __BIT_P3  5
-#define __BIT_P4  5
-#define __BIT_P5  3
-#define __BIT_P6  3
-#define __BIT_P7  4
-#define __BIT_P8  5
-#define __BIT_P9  6
-#define __BIT_P10 4
-#define __BIT_P11 5
-#define __BIT_P12 6
-#define __BIT_P13 7
-#define __BIT_P14 1
-#define __BIT_P15 0
-#define __BIT_P16 0
-#define __BIT_P17 1
-#define __BIT_P18 3
-#define __BIT_P19 2
-#define __BIT_P20 1
-#define __BIT_P21 0
-#define __BIT_P22 0
-#define __BIT_P23 1
-#define __BIT_P24 2
-#define __BIT_P25 3
-#define __BIT_P26 4
-#define __BIT_P27 5
-#define __BIT_P28 6
-#define __BIT_P29 7
-#define __BIT_P30 7
-#define __BIT_P31 6
-#define __BIT_P32 5
-#define __BIT_P33 4
-#define __BIT_P34 3
-#define __BIT_P35 2
-#define __BIT_P36 1
-#define __BIT_P37 0
-#define __BIT_P38 7
-#define __BIT_P39 2
-#define __BIT_P40 1
-#define __BIT_P41 0
-#define __BIT_P42 7
-#define __BIT_P43 6
-#define __BIT_P44 5
-#define __BIT_P45 4
-#define __BIT_P46 3
-#define __BIT_P47 2
-#define __BIT_P48 1
-#define __BIT_P49 0
-#define __BIT_P50 3
-#define __BIT_P51 2
-#define __BIT_P52 1
-#define __BIT_P53 0
-#define __BIT_P54 0
-#define __BIT_P55 1
-#define __BIT_P56 2
-#define __BIT_P57 3
-#define __BIT_P58 4
-#define __BIT_P59 5
-#define __BIT_P60 6
-#define __BIT_P61 7
-#define __BIT_P62 0
-#define __BIT_P63 1
-#define __BIT_P64 2
-#define __BIT_P65 3
-#define __BIT_P66 4
-#define __BIT_P67 5
-#define __BIT_P68 6
-#define __BIT_P69 7
-#define __BIT_P70 4
-#define __BIT_P71 3
-#define __BIT_P72 2
-#define __BIT_P73 3
-#define __BIT_P74 7
-#define __BIT_P75 4
-#define __BIT_P76 5
-#define __BIT_P77 6
-#define __BIT_P78 2
-#define __BIT_P79 6
-#define __BIT_P80 7
-#define __BIT_P81 4
-#define __BIT_P82 5
-#define __BIT_P83 6
-#define __BIT_P84 2
-#define __BIT_P85 7
-
-#define __BIT(pin) __BIT_P##pin
-#define __MSK(pin) (1 << __BIT(pin))
-
-#define __PIN(pin) __PIN_P##pin
-#define __PORT(pin) __PORT_P##pin
-#define __DDR(pin) __DDR_P##pin
-
-#define PIN(pin) __PIN(pin)
-#define PORT(pin) __PORT(pin)
-#define DDR(pin) __DDR(pin)
-
-#define PIN_INP(pin) DDR(pin) &= ~__MSK(pin)
-#define PIN_OUT(pin) DDR(pin) |= __MSK(pin)
-#define PIN_CLR(pin) PORT(pin) &= ~__MSK(pin)
-#define PIN_SET(pin) PORT(pin) |= __MSK(pin)
-#define PIN_VAL(pin, val) if (val) PIN_SET(pin); else PIN_CLR(pin);
-#define PIN_GET(pin) (PIN(pin) & __MSK(pin))
-#define PIN_INQ(pin) (PORT(pin) & __MSK(pin))
-
-
-#endif //_IO_ATMEGA2560

+ 1 - 1
Firmware/la10compat.cpp

@@ -38,7 +38,7 @@ void la10c_mode_change(LA10C_MODE mode)
 // Approximate a LA10 value to a LA15 equivalent.
 static float la10c_convert(float k)
 {
-    float new_K = k * 0.004 - 0.05;
+    float new_K = k * 0.002 - 0.01;
     return new_K < 0? 0:
            new_K > (LA_K_MAX - FLT_EPSILON)? (LA_K_MAX - FLT_EPSILON):
            new_K;

+ 3 - 3
Firmware/language.c

@@ -17,10 +17,10 @@ uint8_t lang_selected = 0;
 
 #if (LANG_MODE == 0) //primary language only
 
-uint8_t lang_select(__attribute__((unused)) uint8_t lang) { return 0; }
+uint8_t lang_select(_UNUSED uint8_t lang) { return 0; }
 uint8_t lang_get_count() { return 1; }
-uint16_t lang_get_code(__attribute__((unused)) uint8_t lang) { return LANG_CODE_EN; }
-const char* lang_get_name_by_code(__attribute__((unused)) uint16_t code) { return _n("English"); }
+uint16_t lang_get_code(_UNUSED uint8_t lang) { return LANG_CODE_EN; }
+const char* lang_get_name_by_code(_UNUSED uint16_t code) { return _n("English"); }
 void lang_reset(void) { }
 uint8_t lang_is_selected(void) { return 1; }
 

+ 1 - 3
Firmware/language.h

@@ -5,6 +5,7 @@
 
 
 #include "config.h"
+#include "macros.h"
 #include <inttypes.h>
 #ifdef DEBUG_SEC_LANG
     #include <stdio.h>
@@ -22,9 +23,6 @@
 
 #define MSG_FW_VERSION                   "Firmware"
 
-#define STRINGIFY_(n) #n
-#define STRINGIFY(n) STRINGIFY_(n)
-
 #if (LANG_MODE == 0) //primary language only
 #define PROGMEM_I2 __attribute__((section(".progmem0")))
 #define PROGMEM_I1 __attribute__((section(".progmem1")))

+ 7 - 1
Firmware/lcd.cpp

@@ -486,11 +486,17 @@ void lcd_escape_write(uint8_t chr)
 #endif //VT100
 
 
-int lcd_putc(int c)
+int lcd_putc(char c)
 {
 	return fputc(c, lcdout);
 }
 
+int lcd_putc_at(uint8_t c, uint8_t r, char ch)
+{
+	lcd_set_cursor(c, r);
+	return fputc(ch, lcdout);
+}
+
 int lcd_puts_P(const char* str)
 {
 	return fputs_P(str, lcdout);

+ 4 - 1
Firmware/lcd.h

@@ -40,7 +40,10 @@ extern void lcd_set_cursor(uint8_t col, uint8_t row);
 extern void lcd_createChar_P(uint8_t, const uint8_t*);
 
 
-extern int lcd_putc(int c);
+// char c is non-standard, however it saves 1B on stack
+extern int lcd_putc(char c);
+extern int lcd_putc_at(uint8_t c, uint8_t r, char ch);
+
 extern int lcd_puts_P(const char* str);
 extern int lcd_puts_at_P(uint8_t c, uint8_t r, const char* str);
 extern int lcd_printf_P(const char* format, ...);

+ 90 - 0
Firmware/macros.h

@@ -0,0 +1,90 @@
+#ifndef MACROS_H
+#define MACROS_H
+
+#include <avr/interrupt.h> //for cli() and sei()
+
+#define  FORCE_INLINE __attribute__((always_inline)) inline
+#define _UNUSED __attribute__((unused))
+
+#ifndef CRITICAL_SECTION_START
+  #define CRITICAL_SECTION_START  unsigned char _sreg = SREG; cli();
+  #define CRITICAL_SECTION_END    SREG = _sreg;
+#endif //CRITICAL_SECTION_START
+
+// Macros to make a string from a macro
+#define STRINGIFY_(M) #M
+#define STRINGIFY(M) STRINGIFY_(M)
+
+// Macros for bit masks
+#undef _BV
+#define _BV(n) (1<<(n))
+#define TEST(n,b) (!!((n)&_BV(b)))
+#define SET_BIT_TO(N,B,TF) do{ if (TF) SBI(N,B); else CBI(N,B); }while(0)
+
+#ifndef SBI
+  #define SBI(A,B) (A |= (1 << (B)))
+#endif
+
+#ifndef CBI
+  #define CBI(A,B) (A &= ~(1 << (B)))
+#endif
+
+#define TBI(N,B) (N ^= _BV(B))
+
+
+// Macros to chain up to 12 conditions
+#define _DO_1(W,C,A)       (_##W##_1(A))
+#define _DO_2(W,C,A,B)     (_##W##_1(A) C _##W##_1(B))
+#define _DO_3(W,C,A,V...)  (_##W##_1(A) C _DO_2(W,C,V))
+#define _DO_4(W,C,A,V...)  (_##W##_1(A) C _DO_3(W,C,V))
+#define _DO_5(W,C,A,V...)  (_##W##_1(A) C _DO_4(W,C,V))
+#define _DO_6(W,C,A,V...)  (_##W##_1(A) C _DO_5(W,C,V))
+#define _DO_7(W,C,A,V...)  (_##W##_1(A) C _DO_6(W,C,V))
+#define _DO_8(W,C,A,V...)  (_##W##_1(A) C _DO_7(W,C,V))
+#define _DO_9(W,C,A,V...)  (_##W##_1(A) C _DO_8(W,C,V))
+#define _DO_10(W,C,A,V...) (_##W##_1(A) C _DO_9(W,C,V))
+#define _DO_11(W,C,A,V...) (_##W##_1(A) C _DO_10(W,C,V))
+#define _DO_12(W,C,A,V...) (_##W##_1(A) C _DO_11(W,C,V))
+#define __DO_N(W,C,N,V...) _DO_##N(W,C,V)
+#define _DO_N(W,C,N,V...)  __DO_N(W,C,N,V)
+#define DO(W,C,V...)       _DO_N(W,C,NUM_ARGS(V),V)
+
+// Macros to support option testing
+#define _CAT(a,V...) a##V
+#define CAT(a,V...) _CAT(a,V)
+
+#define _ISENA_     ~,1
+#define _ISENA_1    ~,1
+#define _ISENA_0x1  ~,1
+#define _ISENA_true ~,1
+#define _ISENA(V...)        IS_PROBE(V)
+
+#define _ENA_1(O)           _ISENA(CAT(_IS,CAT(ENA_, O)))
+#define _DIS_1(O)           NOT(_ENA_1(O))
+#define ENABLED(V...)       DO(ENA,&&,V)
+#define DISABLED(V...)      DO(DIS,&&,V)
+
+#define TERN(O,A,B)         _TERN(_ENA_1(O),B,A)    // OPTION converted to '0' or '1'
+#define TERN0(O,A)          _TERN(_ENA_1(O),0,A)    // OPTION converted to A or '0'
+#define TERN1(O,A)          _TERN(_ENA_1(O),1,A)    // OPTION converted to A or '1'
+#define TERN_(O,A)          _TERN(_ENA_1(O),,A)     // OPTION converted to A or '<nul>'
+#define _TERN(E,V...)       __TERN(_CAT(T_,E),V)    // Prepend 'T_' to get 'T_0' or 'T_1'
+#define __TERN(T,V...)      ___TERN(_CAT(_NO,T),V)  // Prepend '_NO' to get '_NOT_0' or '_NOT_1'
+#define ___TERN(P,V...)     THIRD(P,V)              // If first argument has a comma, A. Else B.
+
+
+// Use NUM_ARGS(__VA_ARGS__) to get the number of variadic arguments
+#define _NUM_ARGS(_,Z,Y,X,W,V,U,T,S,R,Q,P,O,N,M,L,K,J,I,H,G,F,E,D,C,B,A,OUT,...) OUT
+#define NUM_ARGS(V...) _NUM_ARGS(0,V,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0)
+
+//
+// Primitives supporting precompiler REPEAT
+//
+#define FIRST(a,...)     a
+#define SECOND(a,b,...)  b
+#define THIRD(a,b,c,...) c
+
+#define IS_PROBE(V...) SECOND(V, 0)     // Get the second item passed, or 0
+#define NOT(x) IS_PROBE(_CAT(_NOT_, x)) // NOT('0') gets '1'. Anything else gets '0'.
+
+#endif //MACROS_H

+ 8 - 3
Firmware/menu.cpp

@@ -8,6 +8,7 @@
 #include "lcd.h"
 #include "Configuration.h"
 #include "Marlin.h"
+#include "cmdqueue.h"
 #include "ultralcd.h"
 #include "language.h"
 #include "static_assert.h"
@@ -48,6 +49,7 @@ void menu_goto(menu_func_t menu, const uint32_t encoder, const bool feedback, bo
 	{
 		menu_menu = menu;
 		lcd_encoder = encoder;
+		menu_top = 0; //reset menu view. Needed if menu_back() is called from deep inside a menu, such as Support
 		asm("sei");
 		if (reset_menu_state)
 		{
@@ -250,8 +252,7 @@ static void menu_draw_item_puts_P(char type_char, const char* str, char num)
     lcd_set_cursor(0, menu_row);
     lcd_printf_P(PSTR("%c%-.16S "), menu_selection_mark(), str);
     lcd_putc(num);
-    lcd_set_cursor(19, menu_row);
-    lcd_putc(type_char);
+    lcd_putc_at(19, menu_row, type_char);
 }
 
 /*
@@ -310,7 +311,7 @@ uint8_t menu_item_submenu_E(const Sheet &sheet, menu_func_t submenu)
     return 0;
 }
 
-uint8_t menu_item_function_E(const Sheet &sheet, menu_func_t func)
+uint8_t __attribute__((noinline)) menu_item_function_E(const Sheet &sheet, menu_func_t func)
 {
     if (menu_item == menu_line)
     {
@@ -344,6 +345,10 @@ uint8_t menu_item_back_P(const char* str)
 	return 0;
 }
 
+bool __attribute__((noinline)) menu_item_leave(){
+    return ((menu_item == menu_line) && menu_clicked && (lcd_encoder == menu_item)) || menu_leaving;
+}
+
 uint8_t menu_item_function_P(const char* str, menu_func_t func)
 {
 	if (menu_item == menu_line)

+ 2 - 1
Firmware/menu.h

@@ -112,7 +112,8 @@ extern uint8_t menu_item_function_E(const Sheet &sheet, menu_func_t func);
 extern uint8_t menu_item_back_P(const char* str);
 
 // leaving menu - this condition must be immediately before MENU_ITEM_BACK_P
-#define ON_MENU_LEAVE(func) do { if (((menu_item == menu_line) && menu_clicked && (lcd_encoder == menu_item)) || menu_leaving){ func } } while (0)
+#define ON_MENU_LEAVE(func) do { if (menu_item_leave()){ func } } while (0)
+extern bool menu_item_leave();
 
 #define MENU_ITEM_FUNCTION_P(str, func) do { if (menu_item_function_P(str, func)) return; } while (0)
 extern uint8_t menu_item_function_P(const char* str, menu_func_t func);

+ 19 - 10
Firmware/mesh_bed_calibration.cpp

@@ -12,6 +12,8 @@
 #include "tmc2130.h"
 #endif //TMC2130
 
+#define DBG(args...) printf_P(args)
+
 uint8_t world2machine_correction_mode;
 float   world2machine_rotation_and_skew[2][2];
 float   world2machine_rotation_and_skew_inv[2][2];
@@ -369,7 +371,9 @@ BedSkewOffsetDetectionResultType calculate_machine_skew_and_offset_LS(
     BedSkewOffsetDetectionResultType result = BED_SKEW_OFFSET_DETECTION_PERFECT;
     {
         angleDiff = fabs(a2 - a1);
-		eeprom_update_float((float*)(EEPROM_XYZ_CAL_SKEW), angleDiff); //storing xyz cal. skew to be able to show in support menu later 
+        /// XY skew and Y-bed skew
+        DBG(_n("Measured skews: %f %f\n"), degrees(a2 - a1), degrees(a2));
+        eeprom_update_float((float *)(EEPROM_XYZ_CAL_SKEW), angleDiff); //storing xyz cal. skew to be able to show in support menu later
         if (angleDiff > bed_skew_angle_mild)
             result = (angleDiff > bed_skew_angle_extreme) ?
                 BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME :
@@ -1380,7 +1384,7 @@ inline bool find_bed_induction_sensor_point_xy(int verbosity_level)
 
 		//        go_xyz(current_position[X_AXIS], current_position[Y_AXIS], MESH_HOME_Z_SEARCH, homing_feedrate[Z_AXIS]/60);
 		go_xyz(x0, y0, current_position[Z_AXIS], feedrate);
-		// Continously lower the Z axis.
+		// Continuously lower the Z axis.
 		endstops_hit_on_purpose();
 		enable_z_endstop(true);
 		while (current_position[Z_AXIS] > -10.f) {
@@ -2271,7 +2275,7 @@ BedSkewOffsetDetectionResultType find_bed_offset_and_skew(int8_t verbosity_level
 		/*}
 		else {
 			// if first iteration failed, count corrected point coordinates as initial
-			// Use the coorrected coordinate, which is a result of find_bed_offset_and_skew().
+			// Use the corrected coordinate, which is a result of find_bed_offset_and_skew().
 			
 			current_position[X_AXIS] = vec_x[0] * pgm_read_float(bed_ref_points_4 + k * 2) + vec_y[0] * pgm_read_float(bed_ref_points_4 + k * 2 + 1) + cntr[0];
 			current_position[Y_AXIS] = vec_x[1] * pgm_read_float(bed_ref_points_4 + k * 2) + vec_y[1] * pgm_read_float(bed_ref_points_4 + k * 2 + 1) + cntr[1];
@@ -2375,8 +2379,9 @@ BedSkewOffsetDetectionResultType find_bed_offset_and_skew(int8_t verbosity_level
 				delay_keep_alive(3000);
 			}
 			#endif // SUPPORT_VERBOSITY
-		}
-		delay_keep_alive(0); //manage_heater, reset watchdog, manage inactivity
+        }
+        DBG(_n("All 4 calibration points found.\n"));
+        delay_keep_alive(0); //manage_heater, reset watchdog, manage inactivity
 		
 		#ifdef SUPPORT_VERBOSITY
 		if (verbosity_level >= 20) {
@@ -2386,7 +2391,7 @@ BedSkewOffsetDetectionResultType find_bed_offset_and_skew(int8_t verbosity_level
 				// Don't let the manage_inactivity() function remove power from the motors.
 				refresh_cmd_timeout();
 				// Go to the measurement point.
-				// Use the coorrected coordinate, which is a result of find_bed_offset_and_skew().
+				// Use the corrected coordinate, which is a result of find_bed_offset_and_skew().
 				current_position[X_AXIS] = pts[mesh_point * 2];
 				current_position[Y_AXIS] = pts[mesh_point * 2 + 1];
 				go_to_current(homing_feedrate[X_AXIS] / 60);
@@ -2406,6 +2411,7 @@ BedSkewOffsetDetectionResultType find_bed_offset_and_skew(int8_t verbosity_level
 		delay_keep_alive(0); //manage_heater, reset watchdog, manage inactivity
 		
 		if (result >= 0) {
+            DBG(_n("Calibration success.\n"));
 			world2machine_update(vec_x, vec_y, cntr);
 #if 1
 			// Fearlessly store the calibration values into the eeprom.
@@ -2450,7 +2456,7 @@ BedSkewOffsetDetectionResultType find_bed_offset_and_skew(int8_t verbosity_level
 					// Don't let the manage_inactivity() function remove power from the motors.
 					refresh_cmd_timeout();
 					// Go to the measurement point.
-					// Use the coorrected coordinate, which is a result of find_bed_offset_and_skew().
+					// Use the corrected coordinate, which is a result of find_bed_offset_and_skew().
 					uint8_t ix = mesh_point % MESH_MEAS_NUM_X_POINTS; // from 0 to MESH_NUM_X_POINTS - 1
 					uint8_t iy = mesh_point / MESH_MEAS_NUM_X_POINTS;
 					if (iy & 1) ix = (MESH_MEAS_NUM_X_POINTS - 1) - ix;
@@ -2462,9 +2468,12 @@ BedSkewOffsetDetectionResultType find_bed_offset_and_skew(int8_t verbosity_level
 			}
 			#endif // SUPPORT_VERBOSITY
 			return result;
-		}		
-		if (result == BED_SKEW_OFFSET_DETECTION_FITTING_FAILED && too_far_mask == 2) return result; //if fitting failed and front center point is out of reach, terminate calibration and inform user
-		iteration++;
+		}
+        if (result == BED_SKEW_OFFSET_DETECTION_FITTING_FAILED && too_far_mask == 2){
+            DBG(_n("Fitting failed => calibration failed.\n"));
+            return result; //if fitting failed and front center point is out of reach, terminate calibration and inform user
+        }
+        iteration++;
 	}
 	return result;    
 }

+ 24 - 4
Firmware/messages.c

@@ -16,17 +16,24 @@ const char MSG_BED_DONE[] PROGMEM_I1 = ISTR("Bed done"); ////
 const char MSG_BED_HEATING[] PROGMEM_I1 = ISTR("Bed Heating"); ////
 const char MSG_BED_LEVELING_FAILED_POINT_LOW[] PROGMEM_I1 = ISTR("Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."); ////c=20 r=5
 const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED[] PROGMEM_I1 = ISTR("XYZ calibration failed. Please consult the manual."); ////c=20 r=8
+const char MSG_BELT_STATUS[] PROGMEM_I1 = ISTR("Belt Status");////c=18
 const char MSG_CALIBRATE_Z_AUTO[] PROGMEM_I1 = ISTR("Calibrating Z"); ////c=20 r=2
 const char MSG_CARD_MENU[] PROGMEM_I1 = ISTR("Print from SD"); ////
+const char MSG_CHECKING_X[] PROGMEM_I1 = ISTR("Checking X axis"); ////c=20
+const char MSG_CHECKING_Y[] PROGMEM_I1 = ISTR("Checking Y axis"); ////c=20
 const char MSG_CONFIRM_NOZZLE_CLEAN[] PROGMEM_I1 = ISTR("Please clean the nozzle for calibration. Click when done."); ////c=20 r=8
 const char MSG_COOLDOWN[] PROGMEM_I1 = ISTR("Cooldown"); ////
+const char MSG_CRASH[] PROGMEM_I1 = ISTR("Crash"); ////c=7
 const char MSG_CRASH_DETECTED[] PROGMEM_I1 = ISTR("Crash detected."); ////c=20 r=1
 const char MSG_CRASHDETECT[] PROGMEM_I1 = ISTR("Crash det."); ////c=13
 const char MSG_ERROR[] PROGMEM_I1 = ISTR("ERROR:"); ////
-const char MSG_EXTRUDER[] PROGMEM_I1 = ISTR("Extruder"); ////c=17 r=1
+const char MSG_EXTRUDER[] PROGMEM_I1 = ISTR("Extruder"); ////c=17
+const char MSG_FANS_CHECK[] PROGMEM_I1 = ISTR("Fans check"); ////c=13
+const char MSG_FIL_RUNOUTS[] PROGMEM_I1 = ISTR("Fil. runouts"); ////c=14
 const char MSG_FILAMENT[] PROGMEM_I1 = ISTR("Filament"); ////c=17 r=1
 const char MSG_FAN_SPEED[] PROGMEM_I1 = ISTR("Fan speed"); ////c=14
 const char MSG_FILAMENT_CLEAN[] PROGMEM_I1 = ISTR("Filament extruding & with correct color?"); ////c=20 r=2
+const char MSG_FILAMENT_LOADED[] PROGMEM_I1 = ISTR("Is filament loaded?"); ////c=20 r=2
 const char MSG_FILAMENT_LOADING_T0[] PROGMEM_I1 = ISTR("Insert filament into extruder 1. Click when done."); ////c=20 r=4
 const char MSG_FILAMENT_LOADING_T1[] PROGMEM_I1 = ISTR("Insert filament into extruder 2. Click when done."); ////c=20 r=4
 const char MSG_FILAMENT_LOADING_T2[] PROGMEM_I1 = ISTR("Insert filament into extruder 3. Click when done."); ////c=20 r=4
@@ -44,6 +51,8 @@ const char MSG_HEATING_COMPLETE[] PROGMEM_I1 = ISTR("Heating done."); ////c=20
 const char MSG_HOMEYZ[] PROGMEM_I1 = ISTR("Calibrate Z"); ////
 const char MSG_CHOOSE_EXTRUDER[] PROGMEM_I1 = ISTR("Choose extruder:"); ////c=20 r=1
 const char MSG_CHOOSE_FILAMENT[] PROGMEM_I1 = ISTR("Choose filament:"); ////c=20 r=1
+const char MSG_LAST_PRINT[] PROGMEM_I1 = ISTR("Last print"); ////c=18
+const char MSG_LAST_PRINT_FAILURES[] PROGMEM_I1 = ISTR("Last print failures"); ////c=20
 const char MSG_LOAD_FILAMENT[] PROGMEM_I1 = ISTR("Load filament"); //// Number 1 to 5 is added behind text e.g. "Load filament 1" c=16
 const char MSG_LOADING_FILAMENT[] PROGMEM_I1 = ISTR("Loading filament"); ////c=20
 const char MSG_EJECT_FILAMENT[] PROGMEM_I1 = ISTR("Eject filament"); //// Number 1 to 5 is added behind text e.g. "Eject filament 1" c=16
@@ -52,22 +61,28 @@ const char MSG_M117_V2_CALIBRATION[] PROGMEM_I1 = ISTR("M117 First layer cal.");
 const char MSG_MAIN[] PROGMEM_I1 = ISTR("Main"); ////
 const char MSG_BACK[] PROGMEM_I1 = ISTR("Back"); ////
 const char MSG_SHEET[] PROGMEM_I1 = ISTR("Sheet"); ////c=10
+const char MSG_STEEL_SHEETS[] PROGMEM_I1 = ISTR("Steel sheets"); ////c=18
 const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1[] PROGMEM_I1 = ISTR("Measuring reference height of calibration point"); ////c=60
 const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2[] PROGMEM_I1 = ISTR(" of 9"); ////c=14
 const char MSG_MENU_CALIBRATION[] PROGMEM_I1 = ISTR("Calibration"); ////
+const char MSG_MMU_FAILS[] PROGMEM_I1 = ISTR("MMU fails"); ////c=14
+const char MSG_MMU_LOAD_FAILS[] PROGMEM_I1 = ISTR("MMU load fails"); ////c=14
 const char MSG_NO[] PROGMEM_I1 = ISTR("No"); ////
 const char MSG_NOZZLE[] PROGMEM_I1 = ISTR("Nozzle"); ////
 const char MSG_PAPER[] PROGMEM_I1 = ISTR("Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."); ////c=20 r=10
 const char MSG_PLACE_STEEL_SHEET[] PROGMEM_I1 = ISTR("Please place steel sheet on heatbed."); ////c=20 r=4
 const char MSG_PLEASE_WAIT[] PROGMEM_I1 = ISTR("Please wait"); ////c=20
+const char MSG_POWER_FAILURES[] PROGMEM_I1 = ISTR("Power failures"); ////c=14
 const char MSG_PREHEAT_NOZZLE[] PROGMEM_I1 = ISTR("Preheat the nozzle!"); ////c=20
 const char MSG_PRESS_TO_UNLOAD[] PROGMEM_I1 = ISTR("Please press the knob to unload filament"); ////c=20 r=4
 const char MSG_PRINT_ABORTED[] PROGMEM_I1 = ISTR("Print aborted"); ////c=20
 const char MSG_PULL_OUT_FILAMENT[] PROGMEM_I1 = ISTR("Please pull out filament immediately"); ////c=20 r=4
 const char MSG_RECOVER_PRINT[] PROGMEM_I1 = ISTR("Blackout occurred. Recover print?"); ////c=20 r=2
 const char MSG_REFRESH[] PROGMEM_I1 = ISTR("\xF8" "Refresh"); ////
-const char MSG_RESUMING_PRINT[] PROGMEM_I1 = ISTR("Resuming print"); ////
 const char MSG_REMOVE_STEEL_SHEET[] PROGMEM_I1 = ISTR("Please remove steel sheet from heatbed."); ////c=20 r=4
+const char MSG_RESET[] PROGMEM_I1 = ISTR("Reset"); ////c=14
+const char MSG_RESUME_PRINT[] PROGMEM_I1 = ISTR("Resume print"); ////c=18
+const char MSG_RESUMING_PRINT[] PROGMEM_I1 = ISTR("Resuming print"); ////
 const char MSG_SELFTEST_COOLING_FAN[] PROGMEM_I1 = ISTR("Front print fan?"); ////c=20
 const char MSG_SELFTEST_EXTRUDER_FAN[] PROGMEM_I1 = ISTR("Left hotend fan?"); ////c=20
 const char MSG_SELFTEST_FAILED[] PROGMEM_I1 = ISTR("Selftest failed  "); ////c=20
@@ -80,7 +95,9 @@ const char MSG_SELFTEST_MOTOR[] PROGMEM_I1 = ISTR("Motor"); ////
 const char MSG_SELFTEST_FILAMENT_SENSOR[] PROGMEM_I1 = ISTR("Filament sensor"); ////c=17
 const char MSG_SELFTEST_WIRINGERROR[] PROGMEM_I1 = ISTR("Wiring error"); ////
 const char MSG_SETTINGS[] PROGMEM_I1 = ISTR("Settings"); ////
-const char MSG_HW_SETUP[] PROGMEM_I1 = ISTR("HW Setup"); ////
+const char MSG_TOTAL[] PROGMEM_I1 = ISTR("Total"); ////c=6
+const char MSG_TOTAL_FAILURES[] PROGMEM_I1 = ISTR("Total failures"); ////c=20
+const char MSG_HW_SETUP[] PROGMEM_I1 = ISTR("HW Setup"); ////c=18
 const char MSG_MODE[] PROGMEM_I1 = ISTR("Mode"); ////
 const char MSG_HIGH_POWER[] PROGMEM_I1 = ISTR("High power"); ////
 const char MSG_AUTO_POWER[] PROGMEM_I1 = ISTR("Auto power"); ////
@@ -113,6 +130,8 @@ const char MSG_STRICT[] PROGMEM_I1 = ISTR("Strict"); ////
 const char MSG_MODEL[] PROGMEM_I1 = ISTR("Model"); ////
 const char MSG_FIRMWARE[] PROGMEM_I1 = ISTR("Firmware"); ////
 const char MSG_GCODE[] PROGMEM_I1 = ISTR("Gcode"); ////
+const char MSG_GCODE_DIFF_PRINTER_CONTINUE[] PROGMEM_I1 = ISTR("G-code sliced for a different printer type. Continue?"); ////c=20 r=5
+const char MSG_GCODE_DIFF_PRINTER_CANCELLED[] PROGMEM_I1 =ISTR("G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."); ////c=20 r=6
 const char MSG_NOZZLE_DIAMETER[] PROGMEM_I1 = ISTR("Nozzle d."); ////
 const char MSG_MMU_MODE[] PROGMEM_I1 = ISTR("MMU Mode"); ////
 const char MSG_SD_CARD[] PROGMEM_I1 = ISTR("SD card"); ////
@@ -126,6 +145,7 @@ const char MSG_SOUND_LOUD[] PROGMEM_I1 = ISTR("Loud"); ////
 const char MSG_SOUND_ONCE[] PROGMEM_I1 = ISTR("Once"); ////
 const char MSG_SOUND_BLIND[] PROGMEM_I1 = ISTR("Assist"); ////
 const char MSG_MESH[] PROGMEM_I1 = ISTR("Mesh"); ////
+const char MSG_MESH_BED_LEVELING[] PROGMEM_I1 = ISTR("Mesh Bed Leveling"); ////c=18
 const char MSG_Z_PROBE_NR[] PROGMEM_I1 = ISTR("Z-probe nr."); ////
 const char MSG_MAGNETS_COMP[] PROGMEM_I1 = ISTR("Magnets comp."); ////
 const char MSG_FS_ACTION[] PROGMEM_I1 = ISTR("FS Action"); ////c=10
@@ -176,4 +196,4 @@ const char MSG_FANCHECK_PRINT[] PROGMEM_N1 = "Err: PRINT FAN ERROR"; ////c=20
 const char MSG_M112_KILL[] PROGMEM_N1 = "M112 called. Emergency Stop."; ////c=20
 const char MSG_ADVANCE_K[] PROGMEM_N1 = "Advance K:"; ////c=13
 const char MSG_POWERPANIC_DETECTED[] PROGMEM_N1 = "POWER PANIC DETECTED"; ////c=20
-
+const char MSG_LCD_STATUS_CHANGED[] PROGMEM_N1 = "LCD status changed";

+ 21 - 0
Firmware/messages.h

@@ -17,17 +17,24 @@ extern const char MSG_BED_DONE[];
 extern const char MSG_BED_HEATING[];
 extern const char MSG_BED_LEVELING_FAILED_POINT_LOW[];
 extern const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED[];
+extern const char MSG_BELT_STATUS[];
 extern const char MSG_CALIBRATE_Z_AUTO[];
 extern const char MSG_CARD_MENU[];
+extern const char MSG_CHECKING_X[];
+extern const char MSG_CHECKING_Y[];
 extern const char MSG_CONFIRM_NOZZLE_CLEAN[];
 extern const char MSG_COOLDOWN[];
+extern const char MSG_CRASH[];
 extern const char MSG_CRASH_DETECTED[];
 extern const char MSG_CRASHDETECT[];
 extern const char MSG_ERROR[];
 extern const char MSG_EXTRUDER[];
+extern const char MSG_FANS_CHECK[];
+extern const char MSG_FIL_RUNOUTS[];
 extern const char MSG_FILAMENT[];
 extern const char MSG_FAN_SPEED[];
 extern const char MSG_FILAMENT_CLEAN[];
+extern const char MSG_FILAMENT_LOADED[];
 extern const char MSG_FILAMENT_LOADING_T0[];
 extern const char MSG_FILAMENT_LOADING_T1[];
 extern const char MSG_FILAMENT_LOADING_T2[];
@@ -45,20 +52,26 @@ extern const char MSG_HEATING_COMPLETE[];
 extern const char MSG_HOMEYZ[];
 extern const char MSG_CHOOSE_EXTRUDER[];
 extern const char MSG_CHOOSE_FILAMENT[];
+extern const char MSG_LAST_PRINT[];
+extern const char MSG_LAST_PRINT_FAILURES[];
 extern const char MSG_LOAD_FILAMENT[];
 extern const char MSG_LOADING_FILAMENT[];
 extern const char MSG_M117_V2_CALIBRATION[];
 extern const char MSG_MAIN[];
 extern const char MSG_BACK[];
 extern const char MSG_SHEET[];
+extern const char MSG_STEEL_SHEETS[];
 extern const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1[];
 extern const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2[];
 extern const char MSG_MENU_CALIBRATION[];
+extern const char MSG_MMU_FAILS[];
+extern const char MSG_MMU_LOAD_FAILS[];
 extern const char MSG_NO[];
 extern const char MSG_NOZZLE[];
 extern const char MSG_PAPER[];
 extern const char MSG_PLACE_STEEL_SHEET[];
 extern const char MSG_PLEASE_WAIT[];
+extern const char MSG_POWER_FAILURES[];
 extern const char MSG_PREHEAT_NOZZLE[];
 extern const char MSG_PRESS_TO_UNLOAD[];
 extern const char MSG_PRINT_ABORTED[];
@@ -66,6 +79,8 @@ extern const char MSG_PULL_OUT_FILAMENT[];
 extern const char MSG_RECOVER_PRINT[];
 extern const char MSG_REFRESH[];
 extern const char MSG_REMOVE_STEEL_SHEET[];
+extern const char MSG_RESET[];
+extern const char MSG_RESUME_PRINT[];
 extern const char MSG_RESUMING_PRINT[];
 extern const char MSG_SD_WORKDIR_FAIL[];
 extern const char MSG_SELFTEST_COOLING_FAN[];
@@ -80,6 +95,8 @@ extern const char MSG_SELFTEST_MOTOR[];
 extern const char MSG_SELFTEST_FILAMENT_SENSOR[];
 extern const char MSG_SELFTEST_WIRINGERROR[];
 extern const char MSG_SETTINGS[];
+extern const char MSG_TOTAL[];
+extern const char MSG_TOTAL_FAILURES[];
 extern const char MSG_HW_SETUP[];
 extern const char MSG_MODE[];
 extern const char MSG_HIGH_POWER[];
@@ -113,6 +130,8 @@ extern const char MSG_STRICT[];
 extern const char MSG_MODEL[];
 extern const char MSG_FIRMWARE[];
 extern const char MSG_GCODE[];
+extern const char MSG_GCODE_DIFF_PRINTER_CONTINUE[];
+extern const char MSG_GCODE_DIFF_PRINTER_CANCELLED[];
 extern const char MSG_NOZZLE_DIAMETER[];
 extern const char MSG_MMU_MODE[];
 extern const char MSG_SD_CARD[];
@@ -126,6 +145,7 @@ extern const char MSG_SOUND_LOUD[];
 extern const char MSG_SOUND_ONCE[];
 extern const char MSG_SOUND_BLIND[];
 extern const char MSG_MESH[];
+extern const char MSG_MESH_BED_LEVELING[];
 extern const char MSG_Z_PROBE_NR[];
 extern const char MSG_MAGNETS_COMP[];
 extern const char MSG_FS_ACTION[];
@@ -176,6 +196,7 @@ extern const char MSG_FANCHECK_PRINT[];
 extern const char MSG_M112_KILL[];
 extern const char MSG_ADVANCE_K[];
 extern const char MSG_POWERPANIC_DETECTED[];
+extern const char MSG_LCD_STATUS_CHANGED[];
 
 #if defined(__cplusplus)
 }

+ 38 - 40
Firmware/mmu.cpp

@@ -9,12 +9,14 @@
 #include "Configuration_prusa.h"
 #include "fsensor.h"
 #include "cardreader.h"
+#include "cmdqueue.h"
 #include "ultralcd.h"
 #include "sound.h"
 #include "printers.h"
 #include <avr/pgmspace.h>
-#include "io_atmega2560.h"
 #include "AutoDeplete.h"
+#include "fastio.h"
+#include "pins.h"
 //-//
 #include "util.h"
 
@@ -28,9 +30,6 @@
 #define MMU_P0_TIMEOUT 3000ul //timeout for P0 command: 3seconds
 #define MMU_MAX_RESEND_ATTEMPTS 2
 
-#ifdef MMU_HWRESET
-#define MMU_RST_PIN 76
-#endif //MMU_HWRESET
 
 namespace
 {
@@ -156,8 +155,8 @@ void mmu_init(void)
 	_delay_ms(10);                             //wait 10ms for sure
 	mmu_reset();                               //reset mmu (HW or SW), do not wait for response
 	mmu_state = S::Init;
-	PIN_INP(IR_SENSOR_PIN); //input mode
-	PIN_SET(IR_SENSOR_PIN); //pullup
+	SET_INPUT(IR_SENSOR_PIN); //input mode
+	WRITE(IR_SENSOR_PIN, 1); //pullup
 }
 
 //if IR_SENSOR defined, always returns true
@@ -170,7 +169,7 @@ bool check_for_ir_sensor()
 
 	bool detected = false;
 	//if IR_SENSOR_PIN input is low and pat9125sensor is not present we detected idler sensor
-	if ((PIN_GET(IR_SENSOR_PIN) == 0) 
+	if ((READ(IR_SENSOR_PIN) == 0) 
 #ifdef PAT9125
 		&& fsensor_not_responding
 #endif //PAT9125
@@ -363,7 +362,7 @@ void mmu_loop(void)
 	case S::GetFinda: //response to command P0
         if (mmu_idl_sens)
         {
-            if (PIN_GET(IR_SENSOR_PIN) == 0 && mmu_loading_flag)
+            if (READ(IR_SENSOR_PIN) == 0 && mmu_loading_flag)
             {
 #ifdef MMU_DEBUG
                 printf_P(PSTR("MMU <= 'A'\n"));
@@ -406,7 +405,7 @@ void mmu_loop(void)
 	case S::WaitCmd: //response to mmu commands
         if (mmu_idl_sens)
         {
-            if (PIN_GET(IR_SENSOR_PIN) == 0 && mmu_loading_flag)
+            if (READ(IR_SENSOR_PIN) == 0 && mmu_loading_flag)
             {
                 DEBUG_PRINTF_P(PSTR("MMU <= 'A'\n"));
                 mmu_puts_P(PSTR("A\n")); //send 'abort' request
@@ -568,11 +567,11 @@ bool can_extrude()
 static void get_response_print_info(uint8_t move) {
 	printf_P(PSTR("mmu_get_response - begin move: "), move);
 	switch (move) {
-		case MMU_LOAD_MOVE: printf_P(PSTR("load\n")); break;
-		case MMU_UNLOAD_MOVE: printf_P(PSTR("unload\n")); break;
-		case MMU_TCODE_MOVE: printf_P(PSTR("T-code\n")); break;
-		case MMU_NO_MOVE: printf_P(PSTR("no move\n")); break;
-		default: printf_P(PSTR("error: unknown move\n")); break;
+		case MMU_LOAD_MOVE: puts_P(PSTR("load")); break;
+		case MMU_UNLOAD_MOVE: puts_P(PSTR("unload")); break;
+		case MMU_TCODE_MOVE: puts_P(PSTR("T-code")); break;
+		case MMU_NO_MOVE: puts_P(PSTR("no move")); break;
+		default: puts_P(PSTR("error: unknown move")); break;
 	}
 }
 
@@ -596,14 +595,14 @@ bool mmu_get_response(uint8_t move)
 			    mmu_loading_flag = true;
 				if (can_extrude()) mmu_load_step();
 				//don't rely on "ok" signal from mmu unit; if filament detected by idler sensor during loading stop loading movements to prevent infinite loading
-				if (PIN_GET(IR_SENSOR_PIN) == 0) move = MMU_NO_MOVE;
+				if (READ(IR_SENSOR_PIN) == 0) move = MMU_NO_MOVE;
 				break;
 			case MMU_UNLOAD_MOVE:
-				if (PIN_GET(IR_SENSOR_PIN) == 0) //filament is still detected by idler sensor, printer helps with unlading 
+				if (READ(IR_SENSOR_PIN) == 0) //filament is still detected by idler sensor, printer helps with unlading 
 				{
 				    if (can_extrude())
 				    {
-                        printf_P(PSTR("Unload 1\n"));
+                        puts_P(PSTR("Unload 1"));
                         current_position[E_AXIS] = current_position[E_AXIS] - MMU_LOAD_FEEDRATE * MMU_LOAD_TIME_MS*0.001;
                         plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE);
                         st_synchronize();
@@ -611,17 +610,17 @@ bool mmu_get_response(uint8_t move)
 				}
 				else //filament was unloaded from idler, no additional movements needed 
 				{ 
-					printf_P(PSTR("Unloading finished 1\n"));
+					puts_P(PSTR("Unloading finished 1"));
 					disable_e0(); //turn off E-stepper to prevent overheating and alow filament pull-out if necessary
 					move = MMU_NO_MOVE;
 				}
 				break;
 			case MMU_TCODE_MOVE: //first do unload and then continue with infinite loading movements
-				if (PIN_GET(IR_SENSOR_PIN) == 0) //filament detected by idler sensor, we must unload first 
+				if (READ(IR_SENSOR_PIN) == 0) //filament detected by idler sensor, we must unload first 
 				{
                     if (can_extrude())
                     {
-                        printf_P(PSTR("Unload 2\n"));
+                        puts_P(PSTR("Unload 2"));
                         current_position[E_AXIS] = current_position[E_AXIS] - MMU_LOAD_FEEDRATE * MMU_LOAD_TIME_MS*0.001;
                         plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE);
                         st_synchronize();
@@ -629,7 +628,7 @@ bool mmu_get_response(uint8_t move)
 				}
 				else //delay to allow mmu unit to pull out filament from bondtech gears and then start with infinite loading 
 				{ 
-					printf_P(PSTR("Unloading finished 2\n"));
+					puts_P(PSTR("Unloading finished 2"));
 					disable_e0(); //turn off E-stepper to prevent overheating and alow filament pull-out if necessary
 					delay_keep_alive(MMU_LOAD_TIME_MS);
 					move = MMU_LOAD_MOVE;
@@ -690,7 +689,7 @@ void manage_response(bool move_axes, bool turn_off_nozzle, uint8_t move)
 				  }
 				  st_synchronize();
 				  mmu_print_saved = true;
-				  printf_P(PSTR("MMU not responding\n"));
+				  puts_P(PSTR("MMU not responding"));
 				  KEEPALIVE_STATE(PAUSED_FOR_USER);
 				  hotend_temp_bckp = degTargetHotend(active_extruder);
 				  if (move_axes) {
@@ -747,7 +746,7 @@ void manage_response(bool move_axes, bool turn_off_nozzle, uint8_t move)
 			  }
 		  }
 		  else if (mmu_print_saved) {
-			  printf_P(PSTR("MMU starts responding\n"));
+			  puts_P(PSTR("MMU starts responding"));
 			  KEEPALIVE_STATE(IN_HANDLER);
 			  mmu_loading_flag = false;
 			  if (turn_off_nozzle) 
@@ -879,8 +878,8 @@ void mmu_M600_load_filament(bool automatic, float nozzle_temp)
     }
     lcd_update_enable(false);
     lcd_clear();
-    lcd_set_cursor(0, 1); lcd_puts_P(_T(MSG_LOADING_FILAMENT));
-    lcd_print(" ");
+    lcd_puts_at_P(0, 1, _T(MSG_LOADING_FILAMENT));
+    lcd_print(' ');
     lcd_print(tmp_extruder + 1);
     snmm_filaments_used |= (1 << tmp_extruder); //for stop print
 
@@ -992,10 +991,10 @@ void extr_adj(uint8_t extruder) //loading filament for SNMM
 	
 	lcd_update_enable(false);
 	lcd_clear();
-	lcd_set_cursor(0, 1); lcd_puts_P(_T(MSG_LOADING_FILAMENT));
+	lcd_puts_at_P(0, 1, _T(MSG_LOADING_FILAMENT));
 	//if(strlen(_T(MSG_LOADING_FILAMENT))>18) lcd.setCursor(0, 1);
 	//else lcd.print(" ");
-	lcd_print(" ");
+	lcd_print(' ');
 	lcd_print(extruder + 1);
 
 	// get response
@@ -1035,7 +1034,7 @@ void extr_adj(uint8_t extruder) //loading filament for SNMM
 	lcd_clear();
 	lcd_set_cursor(0, 0); lcd_puts_P(_T(MSG_LOADING_FILAMENT));
 	if(strlen(_T(MSG_LOADING_FILAMENT))>18) lcd_set_cursor(0, 1);
-	else lcd_print(" ");
+	else lcd_print(' ');
 	lcd_print(mmu_extruder + 1);
 	lcd_set_cursor(0, 2); lcd_puts_P(_T(MSG_PLEASE_WAIT));
 	st_synchronize();
@@ -1082,9 +1081,9 @@ void mmu_filament_ramming()
 void extr_unload_view()
 {
     lcd_clear();
-    lcd_set_cursor(0, 1); lcd_puts_P(_T(MSG_UNLOADING_FILAMENT));
-    lcd_print(" ");
-    if (mmu_extruder == MMU_FILAMENT_UNKNOWN) lcd_print(" ");
+    lcd_puts_at_P(0, 1, _T(MSG_UNLOADING_FILAMENT));
+    lcd_print(' ');
+    if (mmu_extruder == MMU_FILAMENT_UNKNOWN) lcd_print(' ');
     else lcd_print(mmu_extruder + 1);
 }
 
@@ -1116,7 +1115,7 @@ void extr_unload()
 		lcd_display_message_fullscreen_P(PSTR(""));
 		max_feedrate[E_AXIS] = 50;
 		lcd_set_cursor(0, 0); lcd_puts_P(_T(MSG_UNLOADING_FILAMENT));
-		lcd_print(" ");
+		lcd_print(' ');
 		lcd_print(mmu_extruder + 1);
 		lcd_set_cursor(0, 2); lcd_puts_P(_T(MSG_PLEASE_WAIT));
 		if (current_position[Z_AXIS] < 15) {
@@ -1350,9 +1349,8 @@ void lcd_mmu_load_to_nozzle(uint8_t filament_nr)
         tmp_extruder = filament_nr;
         lcd_update_enable(false);
         lcd_clear();
-        lcd_set_cursor(0, 1);
-        lcd_puts_P(_T(MSG_LOADING_FILAMENT));
-        lcd_print(" ");
+        lcd_puts_at_P(0, 1, _T(MSG_LOADING_FILAMENT));
+        lcd_print(' ');
         lcd_print(tmp_extruder + 1);
         mmu_command(MmuCmd::T0 + tmp_extruder);
         manage_response(true, true, MMU_TCODE_MOVE);
@@ -1385,8 +1383,8 @@ void mmu_cut_filament(uint8_t filament_nr)
     {
         LcdUpdateDisabler disableLcdUpdate;
         lcd_clear();
-        lcd_set_cursor(0, 1); lcd_puts_P(_i("Cutting filament")); //// c=18
-        lcd_print(" ");
+        lcd_puts_at_P(0, 1, _i("Cutting filament")); //// c=18
+        lcd_print(' ');
         lcd_print(filament_nr + 1);
         mmu_filament_ramming();
         mmu_command(MmuCmd::K0 + filament_nr);
@@ -1413,7 +1411,7 @@ bFilamentAction=false;                            // NOT in "mmu_fil_eject_menu(
 			{
 			    LcdUpdateDisabler disableLcdUpdate;
                 lcd_clear();
-                lcd_set_cursor(0, 1); lcd_puts_P(_i("Ejecting filament"));
+                lcd_puts_at_P(0, 1, _i("Ejecting filament"));
                 mmu_filament_ramming();
                 mmu_command(MmuCmd::E0 + filament);
                 manage_response(false, false, MMU_UNLOAD_MOVE);
@@ -1460,7 +1458,7 @@ static bool can_load()
         current_position[E_AXIS] -= e_increment;
         plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE);
         st_synchronize();
-        if(0 == PIN_GET(IR_SENSOR_PIN))
+        if(0 == READ(IR_SENSOR_PIN))
         {
             ++filament_detected_count;
             DEBUG_PUTCHAR('O');
@@ -1491,7 +1489,7 @@ static bool load_more()
 {
     for (uint8_t i = 0; i < MMU_IDLER_SENSOR_ATTEMPTS_NR; i++)
     {
-        if (PIN_GET(IR_SENSOR_PIN) == 0) return true;
+        if (READ(IR_SENSOR_PIN) == 0) return true;
         DEBUG_PRINTF_P(PSTR("Additional load attempt nr. %d\n"), i);
         mmu_command(MmuCmd::C0);
         manage_response(true, true, MMU_LOAD_MOVE);

+ 2 - 0
Firmware/pins_Einsy_1_0.h

@@ -115,6 +115,8 @@
 
 #define IR_SENSOR_PIN 62 //idler sensor @PK0 (digital pin 62/A8)
 
+#define MMU_RST_PIN 76
+
 // Support for an 8 bit logic analyzer, for example the Saleae.
 // Channels 0-2 are fast, they could generate 2.667Mhz waveform with a software loop.
 #define LOGIC_ANALYZER_CH0		X_MIN_PIN		// PB6

+ 45 - 1
Firmware/sm4.c

@@ -129,11 +129,15 @@ void sm4_set_dir_bits(uint8_t dir_bits)
 void sm4_do_step(uint8_t axes_mask)
 {
 #if ((MOTHERBOARD == BOARD_RAMBO_MINI_1_0) || (MOTHERBOARD == BOARD_RAMBO_MINI_1_3) || (MOTHERBOARD == BOARD_EINSY_1_0a))
+#ifdef TMC2130_DEDGE_STEPPING
+	PINC = (axes_mask & 0x0f); // toggle step signals by mask
+#else
     register uint8_t portC = PORTC & 0xf0;
 	PORTC = portC | (axes_mask & 0x0f); //set step signals by mask
 	asm("nop");
 	PORTC = portC; //set step signals to zero
 	asm("nop");
+#endif
 #endif //((MOTHERBOARD == BOARD_RAMBO_MINI_1_0) || (MOTHERBOARD == BOARD_RAMBO_MINI_1_3) || (MOTHERBOARD == BOARD_EINSY_1_0a))
 }
 
@@ -173,7 +177,7 @@ uint16_t sm4_line_xyze_ui(uint16_t dx, uint16_t dy, uint16_t dz, uint16_t de)
 		}
 		if (ce <= de)
 		{
-			sm |= 4;
+			sm |= 8;
 			ce += dd;
 			e++;
 		}
@@ -191,5 +195,45 @@ uint16_t sm4_line_xyze_ui(uint16_t dx, uint16_t dy, uint16_t dz, uint16_t de)
 	return nd;
 }
 
+uint16_t sm4_line_xyz_ui(uint16_t dx, uint16_t dy, uint16_t dz){
+	uint16_t dd = (uint16_t)(sqrt((float)(((uint32_t)dx)*dx + ((uint32_t)dy*dy) + ((uint32_t)dz*dz))) + 0.5);
+	uint16_t nd = dd;
+	uint16_t cx = dd;
+	uint16_t cy = dd;
+	uint16_t cz = dd;
+	uint16_t x = 0;
+	uint16_t y = 0;
+	uint16_t z = 0;
+	while (nd){
+		if (sm4_stop_cb && (*sm4_stop_cb)()) break;
+		uint8_t sm = 0; //step mask
+		if (cx <= dx){
+			sm |= 1;
+			cx += dd;
+			x++;
+		}
+		if (cy <= dy){
+			sm |= 2;
+			cy += dd;
+			y++;
+		}
+		if (cz <= dz){
+			sm |= 4;
+			cz += dd;
+			z++;
+		}
+		cx -= dx;
+		cy -= dy;
+		cz -= dz;
+		sm4_do_step(sm);
+		uint16_t delay = SM4_DEFDELAY;
+		if (sm4_calc_delay_cb) delay = (*sm4_calc_delay_cb)(nd, dd);
+		if (delay) delayMicroseconds(delay);
+		nd--;
+	}
+	if (sm4_update_pos_cb)
+		(*sm4_update_pos_cb)(x, y, z, 0);
+	return nd;
+}
 
 #endif //NEW_XYZCAL

+ 1 - 0
Firmware/sm4.h

@@ -48,6 +48,7 @@ extern void sm4_do_step(uint8_t axes_mask);
 
 // xyze linear-interpolated relative move, returns remaining diagonal steps (>0 means stoped)
 extern uint16_t sm4_line_xyze_ui(uint16_t dx, uint16_t dy, uint16_t dz, uint16_t de);
+extern uint16_t sm4_line_xyz_ui(uint16_t dx, uint16_t dy, uint16_t dz);
 
 
 #if defined(__cplusplus)

+ 183 - 110
Firmware/stepper.cpp

@@ -48,6 +48,62 @@ int fsensor_counter; //counter for e-steps
 uint16_t SP_min = 0x21FF;
 #endif //DEBUG_STACK_MONITOR
 
+
+/*
+ * Stepping macros
+ */
+#define _STEP_PIN_X_AXIS X_STEP_PIN
+#define _STEP_PIN_Y_AXIS Y_STEP_PIN
+#define _STEP_PIN_Z_AXIS Z_STEP_PIN
+#define _STEP_PIN_E_AXIS E0_STEP_PIN
+
+#ifdef DEBUG_XSTEP_DUP_PIN
+#define _STEP_PIN_X_DUP_AXIS DEBUG_XSTEP_DUP_PIN
+#endif
+#ifdef DEBUG_YSTEP_DUP_PIN
+#define _STEP_PIN_Y_DUP_AXIS DEBUG_YSTEP_DUP_PIN
+#endif
+#ifdef Y_DUAL_STEPPER_DRIVERS
+#error Y_DUAL_STEPPER_DRIVERS not fully implemented
+#define _STEP_PIN_Y2_AXIS Y2_STEP_PIN
+#endif
+#ifdef Z_DUAL_STEPPER_DRIVERS
+#error Z_DUAL_STEPPER_DRIVERS not fully implemented
+#define _STEP_PIN_Z2_AXIS Z2_STEP_PIN
+#endif
+
+#ifdef TMC2130
+#define STEPPER_MINIMUM_PULSE TMC2130_MINIMUM_PULSE
+#define STEPPER_SET_DIR_DELAY TMC2130_SET_DIR_DELAY
+#define STEPPER_MINIMUM_DELAY TMC2130_MINIMUM_DELAY
+#else
+#define STEPPER_MINIMUM_PULSE 2
+#define STEPPER_SET_DIR_DELAY 100
+#define STEPPER_MINIMUM_DELAY delayMicroseconds(STEPPER_MINIMUM_PULSE)
+#endif
+
+#ifdef TMC2130_DEDGE_STEPPING
+static_assert(TMC2130_MINIMUM_DELAY 1, // this will fail to compile when non-empty
+              "DEDGE implies/requires an empty TMC2130_MINIMUM_DELAY");
+#define STEP_NC_HI(axis) TOGGLE(_STEP_PIN_##axis)
+#define STEP_NC_LO(axis) //NOP
+#else
+
+#define _STEP_HI_X_AXIS  !INVERT_X_STEP_PIN
+#define _STEP_LO_X_AXIS  INVERT_X_STEP_PIN
+#define _STEP_HI_Y_AXIS  !INVERT_Y_STEP_PIN
+#define _STEP_LO_Y_AXIS  INVERT_Y_STEP_PIN
+#define _STEP_HI_Z_AXIS  !INVERT_Z_STEP_PIN
+#define _STEP_LO_Z_AXIS  INVERT_Z_STEP_PIN
+#define _STEP_HI_E_AXIS  !INVERT_E_STEP_PIN
+#define _STEP_LO_E_AXIS  INVERT_E_STEP_PIN
+
+#define STEP_NC_HI(axis) WRITE_NC(_STEP_PIN_##axis, _STEP_HI_##axis)
+#define STEP_NC_LO(axis) WRITE_NC(_STEP_PIN_##axis, _STEP_LO_##axis)
+
+#endif //TMC2130_DEDGE_STEPPING
+
+
 //===========================================================================
 //=============================public variables  ============================
 //===========================================================================
@@ -296,13 +352,13 @@ FORCE_INLINE void stepper_next_block()
 				WRITE_NC(X_DIR_PIN, INVERT_X_DIR);
 			else
 				WRITE_NC(X_DIR_PIN, !INVERT_X_DIR);
-			_delay_us(100);
+			delayMicroseconds(STEPPER_SET_DIR_DELAY);
 			for (uint8_t i = 0; i < st_backlash_x; i++)
 			{
-				WRITE_NC(X_STEP_PIN, !INVERT_X_STEP_PIN);
-				_delay_us(100);
-				WRITE_NC(X_STEP_PIN, INVERT_X_STEP_PIN);
-				_delay_us(900);
+				STEP_NC_HI(X_AXIS);
+				STEPPER_MINIMUM_DELAY;
+				STEP_NC_LO(X_AXIS);
+				_delay_us(900); // hard-coded jerk! *bad*
 			}
 		}
 		last_dir_bits &= ~1;
@@ -319,13 +375,13 @@ FORCE_INLINE void stepper_next_block()
 				WRITE_NC(Y_DIR_PIN, INVERT_Y_DIR);
 			else
 				WRITE_NC(Y_DIR_PIN, !INVERT_Y_DIR);
-			_delay_us(100);
+			delayMicroseconds(STEPPER_SET_DIR_DELAY);
 			for (uint8_t i = 0; i < st_backlash_y; i++)
 			{
-				WRITE_NC(Y_STEP_PIN, !INVERT_Y_STEP_PIN);
-				_delay_us(100);
-				WRITE_NC(Y_STEP_PIN, INVERT_Y_STEP_PIN);
-				_delay_us(900);
+				STEP_NC_HI(Y_AXIS);
+				STEPPER_MINIMUM_DELAY;
+				STEP_NC_LO(Y_AXIS);
+				_delay_us(900); // hard-coded jerk! *bad*
 			}
 		}
 		last_dir_bits &= ~2;
@@ -603,44 +659,44 @@ FORCE_INLINE void stepper_tick_lowres()
     // Step in X axis
     counter_x.lo += current_block->steps_x.lo;
     if (counter_x.lo > 0) {
-      WRITE_NC(X_STEP_PIN, !INVERT_X_STEP_PIN);
+      STEP_NC_HI(X_AXIS);
 #ifdef DEBUG_XSTEP_DUP_PIN
-      WRITE_NC(DEBUG_XSTEP_DUP_PIN,!INVERT_X_STEP_PIN);
+      STEP_NC_HI(X_DUP_AXIS);
 #endif //DEBUG_XSTEP_DUP_PIN
       counter_x.lo -= current_block->step_event_count.lo;
       count_position[X_AXIS]+=count_direction[X_AXIS];
-      WRITE_NC(X_STEP_PIN, INVERT_X_STEP_PIN);
+      STEP_NC_LO(X_AXIS);
 #ifdef DEBUG_XSTEP_DUP_PIN
-      WRITE_NC(DEBUG_XSTEP_DUP_PIN,INVERT_X_STEP_PIN);
+      STEP_NC_LO(X_DUP_AXIS);
 #endif //DEBUG_XSTEP_DUP_PIN
     }
     // Step in Y axis
     counter_y.lo += current_block->steps_y.lo;
     if (counter_y.lo > 0) {
-      WRITE_NC(Y_STEP_PIN, !INVERT_Y_STEP_PIN);
+      STEP_NC_HI(Y_AXIS);
 #ifdef DEBUG_YSTEP_DUP_PIN
-      WRITE_NC(DEBUG_YSTEP_DUP_PIN,!INVERT_Y_STEP_PIN);
+      STEP_NC_HI(Y_DUP_AXIS);
 #endif //DEBUG_YSTEP_DUP_PIN
       counter_y.lo -= current_block->step_event_count.lo;
       count_position[Y_AXIS]+=count_direction[Y_AXIS];
-      WRITE_NC(Y_STEP_PIN, INVERT_Y_STEP_PIN);
+      STEP_NC_LO(Y_AXIS);
 #ifdef DEBUG_YSTEP_DUP_PIN
-      WRITE_NC(DEBUG_YSTEP_DUP_PIN,INVERT_Y_STEP_PIN);
+      STEP_NC_LO(Y_DUP_AXIS);
 #endif //DEBUG_YSTEP_DUP_PIN    
     }
     // Step in Z axis
     counter_z.lo += current_block->steps_z.lo;
     if (counter_z.lo > 0) {
-      WRITE_NC(Z_STEP_PIN, !INVERT_Z_STEP_PIN);
+      STEP_NC_HI(Z_AXIS);
       counter_z.lo -= current_block->step_event_count.lo;
       count_position[Z_AXIS]+=count_direction[Z_AXIS];
-      WRITE_NC(Z_STEP_PIN, INVERT_Z_STEP_PIN);
+      STEP_NC_LO(Z_AXIS);
     }
     // Step in E axis
     counter_e.lo += current_block->steps_e.lo;
     if (counter_e.lo > 0) {
 #ifndef LIN_ADVANCE
-      WRITE(E0_STEP_PIN, !INVERT_E_STEP_PIN);
+      STEP_NC_HI(E_AXIS);
 #endif /* LIN_ADVANCE */
       counter_e.lo -= current_block->step_event_count.lo;
       count_position[E_AXIS] += count_direction[E_AXIS];
@@ -650,7 +706,7 @@ FORCE_INLINE void stepper_tick_lowres()
 	#ifdef FILAMENT_SENSOR
 	  fsensor_counter += count_direction[E_AXIS];
 	#endif //FILAMENT_SENSOR
-      WRITE(E0_STEP_PIN, INVERT_E_STEP_PIN);
+      STEP_NC_LO(E_AXIS);
 #endif
     }
     if(++ step_events_completed.lo >= current_block->step_event_count.lo)
@@ -665,44 +721,44 @@ FORCE_INLINE void stepper_tick_highres()
     // Step in X axis
     counter_x.wide += current_block->steps_x.wide;
     if (counter_x.wide > 0) {
-      WRITE_NC(X_STEP_PIN, !INVERT_X_STEP_PIN);
+      STEP_NC_HI(X_AXIS);
 #ifdef DEBUG_XSTEP_DUP_PIN
-      WRITE_NC(DEBUG_XSTEP_DUP_PIN,!INVERT_X_STEP_PIN);
+      STEP_NC_HI(X_DUP_AXIS);
 #endif //DEBUG_XSTEP_DUP_PIN
       counter_x.wide -= current_block->step_event_count.wide;
       count_position[X_AXIS]+=count_direction[X_AXIS];   
-      WRITE_NC(X_STEP_PIN, INVERT_X_STEP_PIN);
+      STEP_NC_LO(X_AXIS);
 #ifdef DEBUG_XSTEP_DUP_PIN
-      WRITE_NC(DEBUG_XSTEP_DUP_PIN,INVERT_X_STEP_PIN);
+      STEP_NC_LO(X_DUP_AXIS);
 #endif //DEBUG_XSTEP_DUP_PIN
     }
     // Step in Y axis
     counter_y.wide += current_block->steps_y.wide;
     if (counter_y.wide > 0) {
-      WRITE_NC(Y_STEP_PIN, !INVERT_Y_STEP_PIN);
+      STEP_NC_HI(Y_AXIS);
 #ifdef DEBUG_YSTEP_DUP_PIN
-      WRITE_NC(DEBUG_YSTEP_DUP_PIN,!INVERT_Y_STEP_PIN);
+      STEP_NC_HI(Y_DUP_AXIS);
 #endif //DEBUG_YSTEP_DUP_PIN
       counter_y.wide -= current_block->step_event_count.wide;
       count_position[Y_AXIS]+=count_direction[Y_AXIS];
-      WRITE_NC(Y_STEP_PIN, INVERT_Y_STEP_PIN);
+      STEP_NC_LO(Y_AXIS);
 #ifdef DEBUG_YSTEP_DUP_PIN
-      WRITE_NC(DEBUG_YSTEP_DUP_PIN,INVERT_Y_STEP_PIN);
+      STEP_NC_LO(Y_DUP_AXIS);
 #endif //DEBUG_YSTEP_DUP_PIN    
     }
     // Step in Z axis
     counter_z.wide += current_block->steps_z.wide;
     if (counter_z.wide > 0) {
-      WRITE_NC(Z_STEP_PIN, !INVERT_Z_STEP_PIN);
+      STEP_NC_HI(Z_AXIS);
       counter_z.wide -= current_block->step_event_count.wide;
       count_position[Z_AXIS]+=count_direction[Z_AXIS];
-      WRITE_NC(Z_STEP_PIN, INVERT_Z_STEP_PIN);
+      STEP_NC_LO(Z_AXIS);
     }
     // Step in E axis
     counter_e.wide += current_block->steps_e.wide;
     if (counter_e.wide > 0) {
 #ifndef LIN_ADVANCE
-      WRITE(E0_STEP_PIN, !INVERT_E_STEP_PIN);
+      STEP_NC_HI(E_AXIS);
 #endif /* LIN_ADVANCE */
       counter_e.wide -= current_block->step_event_count.wide;
       count_position[E_AXIS]+=count_direction[E_AXIS];
@@ -712,7 +768,7 @@ FORCE_INLINE void stepper_tick_highres()
     #ifdef FILAMENT_SENSOR
       fsensor_counter += count_direction[E_AXIS];
     #endif //FILAMENT_SENSOR
-      WRITE(E0_STEP_PIN, INVERT_E_STEP_PIN);
+      STEP_NC_LO(E_AXIS);
 #endif
     }
     if(++ step_events_completed.wide >= current_block->step_event_count.wide)
@@ -1014,9 +1070,9 @@ FORCE_INLINE void advance_isr_scheduler() {
         bool rev = (e_steps < 0);
         do
         {
-            WRITE_NC(E0_STEP_PIN, !INVERT_E_STEP_PIN);
+            STEP_NC_HI(E_AXIS);
             e_steps += (rev? 1: -1);
-            WRITE_NC(E0_STEP_PIN, INVERT_E_STEP_PIN);
+            STEP_NC_LO(E_AXIS);
 #if defined(FILAMENT_SENSOR) && defined(PAT9125)
             fsensor_counter += (rev? -1: 1);
 #endif
@@ -1389,89 +1445,106 @@ void quickStop()
 #ifdef BABYSTEPPING
 void babystep(const uint8_t axis,const bool direction)
 {
-  //MUST ONLY BE CALLED BY A ISR, it depends on that no other ISR interrupts this
-    //store initial pin states
-  switch(axis)
-  {
-  case X_AXIS:
-  {
-    enable_x();   
-    uint8_t old_x_dir_pin= READ(X_DIR_PIN);  //if dualzstepper, both point to same direction.
-   
-    //setup new step
-    WRITE(X_DIR_PIN,(INVERT_X_DIR)^direction);
-    
-    //perform step 
-    WRITE(X_STEP_PIN, !INVERT_X_STEP_PIN); 
+    // MUST ONLY BE CALLED BY A ISR as stepper pins are manipulated directly.
+    // note: when switching direction no delay is inserted at the end when the
+    //       original is restored. We assume enough time passes as the function
+    //       returns and the stepper is manipulated again (to avoid dead times)
+    switch(axis)
+    {
+    case X_AXIS:
+    {
+        enable_x();
+        uint8_t old_x_dir_pin = READ(X_DIR_PIN);  //if dualzstepper, both point to same direction.
+        uint8_t new_x_dir_pin = (INVERT_X_DIR)^direction;
+
+        //setup new step
+        if (new_x_dir_pin != old_x_dir_pin) {
+            WRITE_NC(X_DIR_PIN, new_x_dir_pin);
+            delayMicroseconds(STEPPER_SET_DIR_DELAY);
+        }
+
+        //perform step
+        STEP_NC_HI(X_AXIS);
 #ifdef DEBUG_XSTEP_DUP_PIN
-    WRITE(DEBUG_XSTEP_DUP_PIN,!INVERT_X_STEP_PIN);
-#endif //DEBUG_XSTEP_DUP_PIN
-    delayMicroseconds(1);
-    WRITE(X_STEP_PIN, INVERT_X_STEP_PIN);
+        STEP_NC_HI(X_DUP_AXIS);
+#endif
+        STEPPER_MINIMUM_DELAY;
+        STEP_NC_LO(X_AXIS);
 #ifdef DEBUG_XSTEP_DUP_PIN
-    WRITE(DEBUG_XSTEP_DUP_PIN,INVERT_X_STEP_PIN);
-#endif //DEBUG_XSTEP_DUP_PIN
+        STEP_NC_LO(X_DUP_AXIS);
+#endif
 
-    //get old pin state back.
-    WRITE(X_DIR_PIN,old_x_dir_pin);
-  }
-  break;
-  case Y_AXIS:
-  {
-    enable_y();   
-    uint8_t old_y_dir_pin= READ(Y_DIR_PIN);  //if dualzstepper, both point to same direction.
-   
-    //setup new step
-    WRITE(Y_DIR_PIN,(INVERT_Y_DIR)^direction);
-    
-    //perform step 
-    WRITE(Y_STEP_PIN, !INVERT_Y_STEP_PIN); 
+        //get old pin state back.
+        WRITE_NC(X_DIR_PIN, old_x_dir_pin);
+    }
+    break;
+
+    case Y_AXIS:
+    {
+        enable_y();
+        uint8_t old_y_dir_pin = READ(Y_DIR_PIN);  //if dualzstepper, both point to same direction.
+        uint8_t new_y_dir_pin = (INVERT_Y_DIR)^direction;
+
+        //setup new step
+        if (new_y_dir_pin != old_y_dir_pin) {
+            WRITE_NC(Y_DIR_PIN, new_y_dir_pin);
+            delayMicroseconds(STEPPER_SET_DIR_DELAY);
+        }
+
+        //perform step
+        STEP_NC_HI(Y_AXIS);
 #ifdef DEBUG_YSTEP_DUP_PIN
-    WRITE(DEBUG_YSTEP_DUP_PIN,!INVERT_Y_STEP_PIN);
-#endif //DEBUG_YSTEP_DUP_PIN
-    delayMicroseconds(1);
-    WRITE(Y_STEP_PIN, INVERT_Y_STEP_PIN);
+        STEP_NC_HI(Y_DUP_AXIS);
+#endif
+        STEPPER_MINIMUM_DELAY;
+        STEP_NC_LO(Y_AXIS);
 #ifdef DEBUG_YSTEP_DUP_PIN
-    WRITE(DEBUG_YSTEP_DUP_PIN,INVERT_Y_STEP_PIN);
-#endif //DEBUG_YSTEP_DUP_PIN
+        STEP_NC_LO(Y_DUP_AXIS);
+#endif
 
-    //get old pin state back.
-    WRITE(Y_DIR_PIN,old_y_dir_pin);
+        //get old pin state back.
+        WRITE_NC(Y_DIR_PIN, old_y_dir_pin);
+    }
+    break;
 
-  }
-  break;
- 
-  case Z_AXIS:
-  {
-    enable_z();
-    uint8_t old_z_dir_pin= READ(Z_DIR_PIN);  //if dualzstepper, both point to same direction.
-    //setup new step
-    WRITE(Z_DIR_PIN,(INVERT_Z_DIR)^direction^BABYSTEP_INVERT_Z);
-    #ifdef Z_DUAL_STEPPER_DRIVERS
-      WRITE(Z2_DIR_PIN,(INVERT_Z_DIR)^direction^BABYSTEP_INVERT_Z);
-    #endif
-    //perform step 
-    WRITE(Z_STEP_PIN, !INVERT_Z_STEP_PIN); 
-    #ifdef Z_DUAL_STEPPER_DRIVERS
-      WRITE(Z2_STEP_PIN, !INVERT_Z_STEP_PIN);
-    #endif
-    delayMicroseconds(1);
-    WRITE(Z_STEP_PIN, INVERT_Z_STEP_PIN);
-    #ifdef Z_DUAL_STEPPER_DRIVERS
-      WRITE(Z2_STEP_PIN, INVERT_Z_STEP_PIN);
-    #endif
+    case Z_AXIS:
+    {
+        enable_z();
+        uint8_t old_z_dir_pin = READ(Z_DIR_PIN);  //if dualzstepper, both point to same direction.
+        uint8_t new_z_dir_pin = (INVERT_Z_DIR)^direction^BABYSTEP_INVERT_Z;
+
+        //setup new step
+        if (new_z_dir_pin != old_z_dir_pin) {
+            WRITE_NC(Z_DIR_PIN, new_z_dir_pin);
+#ifdef Z_DUAL_STEPPER_DRIVERS
+            WRITE_NC(Z2_DIR_PIN, new_z_dir_pin);
+#endif
+            delayMicroseconds(STEPPER_SET_DIR_DELAY);
+        }
 
-    //get old pin state back.
-    WRITE(Z_DIR_PIN,old_z_dir_pin);
-    #ifdef Z_DUAL_STEPPER_DRIVERS
-      WRITE(Z2_DIR_PIN,old_z_dir_pin);
-    #endif
+        //perform step
+        STEP_NC_HI(Z_AXIS);
+#ifdef Z_DUAL_STEPPER_DRIVERS
+        STEP_NC_HI(Z2_AXIS);
+#endif
+        STEPPER_MINIMUM_DELAY;
+        STEP_NC_LO(Z_AXIS);
+#ifdef Z_DUAL_STEPPER_DRIVERS
+        STEP_NC_LO(Z2_AXIS);
+#endif
 
-  }
-  break;
- 
-  default:    break;
-  }
+        //get old pin state back.
+        if (new_z_dir_pin != old_z_dir_pin) {
+            WRITE_NC(Z_DIR_PIN, old_z_dir_pin);
+#ifdef Z_DUAL_STEPPER_DRIVERS
+            WRITE_NC(Z2_DIR_PIN, old_z_dir_pin);
+#endif
+        }
+    }
+    break;
+
+    default: break;
+    }
 }
 #endif //BABYSTEPPING
 

+ 29 - 29
Firmware/swi2c.c

@@ -3,9 +3,10 @@
 #include <avr/io.h>
 #include <util/delay.h>
 #include <avr/pgmspace.h>
+#include "stdbool.h"
 #include "Configuration_prusa.h"
 #include "pins.h"
-#include "io_atmega2560.h"
+#include "fastio.h"
 
 #ifdef SWI2C_SCL
 
@@ -22,75 +23,75 @@ void __delay(void)
 
 void swi2c_init(void)
 {
-	PIN_OUT(SWI2C_SDA);
-	PIN_OUT(SWI2C_SCL);
-	PIN_SET(SWI2C_SDA);
-	PIN_SET(SWI2C_SCL);
+	WRITE(SWI2C_SDA, 1);
+	WRITE(SWI2C_SCL, 1);
+	SET_OUTPUT(SWI2C_SDA);
+	SET_OUTPUT(SWI2C_SCL);
 	uint8_t i; for (i = 0; i < 100; i++)
 		__delay();
 }
 
 void swi2c_start(void)
 {
-	PIN_CLR(SWI2C_SDA);
+	WRITE(SWI2C_SDA, 0);
 	__delay();
-	PIN_CLR(SWI2C_SCL);
+	WRITE(SWI2C_SCL, 0);
 	__delay();
 }
 
 void swi2c_stop(void)
 {
-	PIN_SET(SWI2C_SCL);
+	WRITE(SWI2C_SCL, 1);
 	__delay();
-	PIN_SET(SWI2C_SDA);
+	WRITE(SWI2C_SDA, 1);
 	__delay();
 }
 
 void swi2c_ack(void)
 {
-	PIN_CLR(SWI2C_SDA);
+	WRITE(SWI2C_SDA, 0);
 	__delay();
-	PIN_SET(SWI2C_SCL);
+	WRITE(SWI2C_SCL, 1);
 	__delay();
-	PIN_CLR(SWI2C_SCL);
+	WRITE(SWI2C_SCL, 0);
 	__delay();
 }
 
 uint8_t swi2c_wait_ack()
 {
-	PIN_INP(SWI2C_SDA);
+	SET_INPUT(SWI2C_SDA);
 	__delay();
-//	PIN_SET(SWI2C_SDA);
+//	WRITE(SWI2C_SDA, 1);
 	__delay();
-	PIN_SET(SWI2C_SCL);
+	WRITE(SWI2C_SCL, 1);
 //	__delay();
 	uint8_t ack = 0;
 	uint16_t ackto = SWI2C_TMO;
-	while (!(ack = (PIN_GET(SWI2C_SDA)?0:1)) && ackto--) __delay();
-	PIN_CLR(SWI2C_SCL);
+	while (!(ack = (!READ(SWI2C_SDA))) && ackto--) __delay();
+	WRITE(SWI2C_SCL, 0);
 	__delay();
-	PIN_OUT(SWI2C_SDA);
+	SET_OUTPUT(SWI2C_SDA);
 	__delay();
-	PIN_CLR(SWI2C_SDA);
+	WRITE(SWI2C_SDA, 0);
 	__delay();
 	return ack;
 }
 
 uint8_t swi2c_read(void)
 {
-	PIN_SET(SWI2C_SDA);
+	WRITE(SWI2C_SDA, 1);
 	__delay();
-	PIN_INP(SWI2C_SDA);
+	SET_INPUT(SWI2C_SDA);
 	uint8_t data = 0;
 	int8_t bit; for (bit = 7; bit >= 0; bit--)
 	{
-		PIN_SET(SWI2C_SCL);
+		WRITE(SWI2C_SCL, 1);
 		__delay();
-		data |= (PIN_GET(SWI2C_SDA)?1:0) << bit;
-		PIN_CLR(SWI2C_SCL);
+		data |= (READ(SWI2C_SDA)) << bit;
+		WRITE(SWI2C_SCL, 0);
 		__delay();
 	}
-	PIN_OUT(SWI2C_SDA);
+	SET_OUTPUT(SWI2C_SDA);
 	return data;
 }
 
@@ -98,12 +99,11 @@ void swi2c_write(uint8_t data)
 {
 	int8_t bit; for (bit = 7; bit >= 0; bit--)
 	{
-		if (data & (1 << bit)) PIN_SET(SWI2C_SDA);
-		else PIN_CLR(SWI2C_SDA);
+		WRITE(SWI2C_SDA, data & _BV(bit));
 		__delay();
-		PIN_SET(SWI2C_SCL);
+		WRITE(SWI2C_SCL, 1);
 		__delay();
-		PIN_CLR(SWI2C_SCL);
+		WRITE(SWI2C_SCL, 0);
 		__delay();
 	}
 }

+ 16 - 5
Firmware/temperature.cpp

@@ -30,6 +30,7 @@
 
 
 #include "Marlin.h"
+#include "cmdqueue.h"
 #include "ultralcd.h"
 #include "sound.h"
 #include "temperature.h"
@@ -238,7 +239,7 @@ bool extruder_altfan_detect()
 	uint8_t overrideVal = eeprom_read_byte((uint8_t *)EEPROM_ALTFAN_OVERRIDE);
 	if (overrideVal == EEPROM_EMPTY_VALUE)
 	{
-		overrideVal = 0;
+		overrideVal = (calibration_status() == CALIBRATION_STATUS_CALIBRATED) ? 1 : 0;
 		eeprom_update_byte((uint8_t *)EEPROM_ALTFAN_OVERRIDE, overrideVal);
 	}
 	altfanStatus.altfanOverride = overrideVal;
@@ -521,7 +522,7 @@ void setExtruderAutoFanState(uint8_t state)
 	//the fan to either On or Off during certain tests/errors.
 
 	fanState = state;
-	uint8_t newFanSpeed = 0;
+	newFanSpeed = 0;
 	if (fanState & 0x01)
 	{
 #ifdef EXTRUDER_ALTFAN_DETECT
@@ -632,7 +633,6 @@ void fanSpeedError(unsigned char _fan) {
 		fanSpeedErrorBeep(PSTR("Print fan speed is lower than expected"), MSG_FANCHECK_PRINT);
 		break;
 	}
-    // SERIAL_PROTOCOLLNRPGM(MSG_OK); //This ok messes things up with octoprint.
 }
 #endif //(defined(TACH_0) && TACH_0 >-1) || (defined(TACH_1) && TACH_1 > -1)
 
@@ -2325,11 +2325,22 @@ float unscalePID_d(float d)
 //!
 //! @retval true firmware should do temperature compensation and allow calibration
 //! @retval false PINDA thermistor is not detected, disable temperature compensation and calibration
+//! @retval true/false when forced via LCD menu Settings->HW Setup->SuperPINDA
 //!
 bool has_temperature_compensation()
 {
-#ifdef DETECT_SUPERPINDA
-    return (current_temperature_pinda >= PINDA_MINTEMP) ? true : false;
+#ifdef SUPERPINDA_SUPPORT
+#ifdef PINDA_TEMP_COMP
+   	uint8_t pinda_temp_compensation = eeprom_read_byte((uint8_t*)EEPROM_PINDA_TEMP_COMPENSATION);
+    if (pinda_temp_compensation == EEPROM_EMPTY_VALUE) //Unkown PINDA temp compenstation, so check it.
+      {
+#endif //PINDA_TEMP_COMP
+        return (current_temperature_pinda >= PINDA_MINTEMP) ? true : false;
+#ifdef PINDA_TEMP_COMP
+      }
+    else if (pinda_temp_compensation == 0) return true; //Overwritten via LCD menu SuperPINDA [No]
+    else return false; //Overwritten via LCD menu SuperPINDA [YES]
+#endif //PINDA_TEMP_COMP
 #else
     return true;
 #endif

+ 0 - 3
Firmware/timer02.c

@@ -9,9 +9,6 @@
 
 #include <avr/io.h>
 #include <avr/interrupt.h>
-#include "io_atmega2560.h"
-
-#define BEEPER              84
 
 void timer0_init(void)
 {

+ 45 - 19
Firmware/tmc2130.cpp

@@ -428,6 +428,11 @@ void tmc2130_check_overtemp()
 void tmc2130_setup_chopper(uint8_t axis, uint8_t mres, uint8_t current_h, uint8_t current_r)
 {
 	uint8_t intpol = (mres != 0); // intpol to 256 only if microsteps aren't 256
+#ifdef TMC2130_DEDGE_STEPPING
+	uint8_t dedge = 1;
+#else
+	uint8_t dedge = 0;
+#endif
 	uint8_t toff = tmc2130_chopper_config[axis].toff; // toff = 3 (fchop = 27.778kHz)
 	uint8_t hstrt = tmc2130_chopper_config[axis].hstr; //initial 4, modified to 5
 	uint8_t hend = tmc2130_chopper_config[axis].hend; //original value = 1
@@ -437,6 +442,9 @@ void tmc2130_setup_chopper(uint8_t axis, uint8_t mres, uint8_t current_h, uint8_
 	uint8_t tbl = tmc2130_chopper_config[axis].tbl; //blanking time, original value = 2
 	if (axis == E_AXIS)
 	{
+#if defined(TMC2130_INTPOL_E) && (TMC2130_INTPOL_E == 0)
+        intpol = 0;
+#endif
 #ifdef TMC2130_CNSTOFF_E
 		// fd = 0 (slow decay only)
 		hstrt = 0; //fd0..2
@@ -447,16 +455,26 @@ void tmc2130_setup_chopper(uint8_t axis, uint8_t mres, uint8_t current_h, uint8_
 //		toff = TMC2130_TOFF_E; // toff = 3-5
 //		rndtf = 1;
 	}
+#if defined(TMC2130_INTPOL_XY) && (TMC2130_INTPOL_XY == 0)
+    else if (axis == X_AXIS || axis == Y_AXIS) {
+        intpol = 0;
+    }
+#endif
+#if defined(TMC2130_INTPOL_Z) && (TMC2130_INTPOL_Z == 0)
+    else if (axis == Z_AXIS) {
+        intpol = 0;
+    }
+#endif
 //	DBG(_n("tmc2130_setup_chopper(axis=%hhd, mres=%hhd, curh=%hhd, curr=%hhd\n"), axis, mres, current_h, current_r);
 //	DBG(_n(" toff=%hhd, hstr=%hhd, hend=%hhd, tbl=%hhd\n"), toff, hstrt, hend, tbl);
 	if (current_r <= 31)
 	{
-		tmc2130_wr_CHOPCONF(axis, toff, hstrt, hend, fd3, 0, rndtf, chm, tbl, 1, 0, 0, 0, mres, intpol, 0, 0);
+		tmc2130_wr_CHOPCONF(axis, toff, hstrt, hend, fd3, 0, rndtf, chm, tbl, 1, 0, 0, 0, mres, intpol, dedge, 0);
 		tmc2130_wr(axis, TMC2130_REG_IHOLD_IRUN, 0x000f0000 | ((current_r & 0x1f) << 8) | (current_h & 0x1f));
 	}
 	else
 	{
-		tmc2130_wr_CHOPCONF(axis, toff, hstrt, hend, fd3, 0, rndtf, chm, tbl, 0, 0, 0, 0, mres, intpol, 0, 0);
+		tmc2130_wr_CHOPCONF(axis, toff, hstrt, hend, fd3, 0, rndtf, chm, tbl, 0, 0, 0, 0, mres, intpol, dedge, 0);
 		tmc2130_wr(axis, TMC2130_REG_IHOLD_IRUN, 0x000f0000 | (((current_r >> 1) & 0x1f) << 8) | ((current_h >> 1) & 0x1f));
 	}
 }
@@ -678,25 +696,32 @@ static uint8_t tmc2130_rx(uint8_t axis, uint8_t addr, uint32_t* rval)
 #define _GET_PWR_Z      (READ(Z_ENABLE_PIN) == Z_ENABLE_ON)
 #define _GET_PWR_E      (READ(E0_ENABLE_PIN) == E_ENABLE_ON)
 
-#define _SET_PWR_X(ena) { WRITE(X_ENABLE_PIN, ena?X_ENABLE_ON:!X_ENABLE_ON); asm("nop"); }
-#define _SET_PWR_Y(ena) { WRITE(Y_ENABLE_PIN, ena?Y_ENABLE_ON:!Y_ENABLE_ON); asm("nop"); }
-#define _SET_PWR_Z(ena) { WRITE(Z_ENABLE_PIN, ena?Z_ENABLE_ON:!Z_ENABLE_ON); asm("nop"); }
-#define _SET_PWR_E(ena) { WRITE(E0_ENABLE_PIN, ena?E_ENABLE_ON:!E_ENABLE_ON); asm("nop"); }
+#define _SET_PWR_X(ena) WRITE(X_ENABLE_PIN, ena?X_ENABLE_ON:!X_ENABLE_ON)
+#define _SET_PWR_Y(ena) WRITE(Y_ENABLE_PIN, ena?Y_ENABLE_ON:!Y_ENABLE_ON)
+#define _SET_PWR_Z(ena) WRITE(Z_ENABLE_PIN, ena?Z_ENABLE_ON:!Z_ENABLE_ON)
+#define _SET_PWR_E(ena) WRITE(E0_ENABLE_PIN, ena?E_ENABLE_ON:!E_ENABLE_ON)
 
 #define _GET_DIR_X      (READ(X_DIR_PIN) == INVERT_X_DIR)
 #define _GET_DIR_Y      (READ(Y_DIR_PIN) == INVERT_Y_DIR)
 #define _GET_DIR_Z      (READ(Z_DIR_PIN) == INVERT_Z_DIR)
 #define _GET_DIR_E      (READ(E0_DIR_PIN) == INVERT_E0_DIR)
 
-#define _SET_DIR_X(dir) { WRITE(X_DIR_PIN, dir?INVERT_X_DIR:!INVERT_X_DIR); asm("nop"); }
-#define _SET_DIR_Y(dir) { WRITE(Y_DIR_PIN, dir?INVERT_Y_DIR:!INVERT_Y_DIR); asm("nop"); }
-#define _SET_DIR_Z(dir) { WRITE(Z_DIR_PIN, dir?INVERT_Z_DIR:!INVERT_Z_DIR); asm("nop"); }
-#define _SET_DIR_E(dir) { WRITE(E0_DIR_PIN, dir?INVERT_E0_DIR:!INVERT_E0_DIR); asm("nop"); }
+#define _SET_DIR_X(dir) WRITE(X_DIR_PIN, dir?INVERT_X_DIR:!INVERT_X_DIR)
+#define _SET_DIR_Y(dir) WRITE(Y_DIR_PIN, dir?INVERT_Y_DIR:!INVERT_Y_DIR)
+#define _SET_DIR_Z(dir) WRITE(Z_DIR_PIN, dir?INVERT_Z_DIR:!INVERT_Z_DIR)
+#define _SET_DIR_E(dir) WRITE(E0_DIR_PIN, dir?INVERT_E0_DIR:!INVERT_E0_DIR)
 
-#define _DO_STEP_X      { WRITE(X_STEP_PIN, !INVERT_X_STEP_PIN); asm("nop"); WRITE(X_STEP_PIN, INVERT_X_STEP_PIN); asm("nop"); }
-#define _DO_STEP_Y      { WRITE(Y_STEP_PIN, !INVERT_Y_STEP_PIN); asm("nop"); WRITE(Y_STEP_PIN, INVERT_Y_STEP_PIN); asm("nop"); }
-#define _DO_STEP_Z      { WRITE(Z_STEP_PIN, !INVERT_Z_STEP_PIN); asm("nop"); WRITE(Z_STEP_PIN, INVERT_Z_STEP_PIN); asm("nop"); }
-#define _DO_STEP_E      { WRITE(E0_STEP_PIN, !INVERT_E_STEP_PIN); asm("nop"); WRITE(E0_STEP_PIN, INVERT_E_STEP_PIN); asm("nop"); }
+#ifdef TMC2130_DEDGE_STEPPING
+#define _DO_STEP_X      TOGGLE(X_STEP_PIN)
+#define _DO_STEP_Y      TOGGLE(Y_STEP_PIN)
+#define _DO_STEP_Z      TOGGLE(Z_STEP_PIN)
+#define _DO_STEP_E      TOGGLE(E0_STEP_PIN)
+#else
+#define _DO_STEP_X      { WRITE(X_STEP_PIN, !INVERT_X_STEP_PIN); TMC2130_MINIMUM_DELAY; WRITE(X_STEP_PIN, INVERT_X_STEP_PIN); }
+#define _DO_STEP_Y      { WRITE(Y_STEP_PIN, !INVERT_Y_STEP_PIN); TMC2130_MINIMUM_DELAY; WRITE(Y_STEP_PIN, INVERT_Y_STEP_PIN); }
+#define _DO_STEP_Z      { WRITE(Z_STEP_PIN, !INVERT_Z_STEP_PIN); TMC2130_MINIMUM_DELAY; WRITE(Z_STEP_PIN, INVERT_Z_STEP_PIN); }
+#define _DO_STEP_E      { WRITE(E0_STEP_PIN, !INVERT_E_STEP_PIN); TMC2130_MINIMUM_DELAY; WRITE(E0_STEP_PIN, INVERT_E_STEP_PIN); }
+#endif
 
 
 uint16_t tmc2130_get_res(uint8_t axis)
@@ -737,6 +762,7 @@ void tmc2130_set_pwr(uint8_t axis, uint8_t pwr)
 	case Z_AXIS: _SET_PWR_Z(pwr); break;
 	case E_AXIS: _SET_PWR_E(pwr); break;
 	}
+    delayMicroseconds(TMC2130_SET_PWR_DELAY);
 }
 
 uint8_t tmc2130_get_inv(uint8_t axis)
@@ -773,6 +799,7 @@ void tmc2130_set_dir(uint8_t axis, uint8_t dir)
 	case Z_AXIS: _SET_DIR_Z(dir); break;
 	case E_AXIS: _SET_DIR_E(dir); break;
 	}
+    delayMicroseconds(TMC2130_SET_DIR_DELAY);
 }
 
 void tmc2130_do_step(uint8_t axis)
@@ -788,8 +815,8 @@ void tmc2130_do_step(uint8_t axis)
 
 void tmc2130_do_steps(uint8_t axis, uint16_t steps, uint8_t dir, uint16_t delay_us)
 {
-	tmc2130_set_dir(axis, dir);
-	delayMicroseconds(100);
+    if (tmc2130_get_dir(axis) != dir)
+        tmc2130_set_dir(axis, dir);
 	while (steps--)
 	{
 		tmc2130_do_step(axis);
@@ -820,7 +847,6 @@ void tmc2130_goto_step(uint8_t axis, uint8_t step, uint8_t dir, uint16_t delay_u
 		cnt = steps;
 	}
 	tmc2130_set_dir(axis, dir);
-	delayMicroseconds(100);
 	mscnt = tmc2130_rd_MSCNT(axis);
 	while ((cnt--) && ((mscnt >> shift) != step))
 	{
@@ -996,11 +1022,11 @@ bool tmc2130_home_calibrate(uint8_t axis)
 	uint8_t val[16];
 	homeaxis(axis, 16, step);
 	bubblesort_uint8(step, 16, 0);
-	printf_P(PSTR("sorted samples:\n"));
+	puts_P(PSTR("sorted samples:"));
 	for (uint8_t i = 0; i < 16; i++)
 		printf_P(PSTR(" i=%2d step=%2d\n"), i, step[i]);
 	uint8_t cl = clusterize_uint8(step, 16, cnt, val, 1);
-	printf_P(PSTR("clusters:\n"));
+	puts_P(PSTR("clusters:"));
 	for (uint8_t i = 0; i < cl; i++)
 		printf_P(PSTR(" i=%2d cnt=%2d val=%2d\n"), i, cnt[i], val[i]);
 	bubblesort_uint8(cnt, cl, val);

+ 12 - 0
Firmware/tmc2130.h

@@ -29,6 +29,18 @@ extern uint8_t tmc2130_sg_homing_axes_mask;
 #define TMC2130_WAVE_FAC1000_MAX 200
 #define TMC2130_WAVE_FAC1000_STP   1
 
+#define TMC2130_MINIMUM_PULSE 0   // minimum pulse width in uS
+#define TMC2130_SET_DIR_DELAY 20  // minimum delay after setting direction in uS
+#define TMC2130_SET_PWR_DELAY 0   // minimum delay after changing pwr mode in uS
+
+#ifdef TMC2130_DEDGE_STEPPING
+#define TMC2130_MINIMUM_DELAY //NOP
+#elif TMC2130_MINIMUM_PULSE == 0
+#define TMC2130_MINIMUM_DELAY asm("nop")
+#else
+#define TMC2130_MINIMUM_DELAY delayMicroseconds(TMC2130_MINIMUM_PULSE)
+#endif
+
 extern uint8_t tmc2130_home_enabled;
 extern uint8_t tmc2130_home_origin[2];
 extern uint8_t tmc2130_home_bsteps[2];

+ 3 - 2
Firmware/tone04.c

@@ -9,6 +9,7 @@
 
 #include "pins.h"
 #include "fastio.h"
+#include "macros.h"
 
 void timer4_init(void)
 {
@@ -70,7 +71,7 @@ ISR(TIMER4_OVF_vect)
 	WRITE(BEEPER, 0);
 }
 
-void tone4(__attribute__((unused)) uint8_t _pin, uint16_t frequency)
+void tone4(_UNUSED uint8_t _pin, uint16_t frequency)
 {
 	//this ocr and prescalarbits calculation is taken from the Arduino core and simplified for one type of timer only
 	uint8_t prescalarbits = 0b001;
@@ -96,7 +97,7 @@ void tone4(__attribute__((unused)) uint8_t _pin, uint16_t frequency)
 	CRITICAL_SECTION_END;
 }
 
-void noTone4(__attribute__((unused)) uint8_t _pin)
+void noTone4(_UNUSED uint8_t _pin)
 {
 	CRITICAL_SECTION_START;
 	// Revert prescaler to CLK/1024

+ 4 - 3
Firmware/uart2.c

@@ -4,6 +4,7 @@
 #include <avr/interrupt.h>
 #include <avr/pgmspace.h>
 #include "rbuf.h"
+#include "macros.h"
 
 #define UART2_BAUD 115200
 #define UART_BAUD_SELECT(baudRate,xtalCpu) (((float)(xtalCpu))/(((float)(baudRate))*8.0)-1.0+0.5)
@@ -16,7 +17,7 @@ uint8_t uart2_ibuf[14] = {0, 0};
 FILE _uart2io = {0};
 
 
-int uart2_putchar(char c, FILE *stream __attribute__((unused)))
+int uart2_putchar(char c, _UNUSED FILE *stream)
 {
 	while (!uart2_txready);
 	UDR2 = c; // transmit byte
@@ -25,7 +26,7 @@ int uart2_putchar(char c, FILE *stream __attribute__((unused)))
 	return 0;
 }
 
-int uart2_getchar(FILE *stream __attribute__((unused)))
+int uart2_getchar(_UNUSED FILE *stream)
 {
 	if (rbuf_empty(uart2_ibuf)) return -1;
 	return rbuf_get(uart2_ibuf);
@@ -78,7 +79,7 @@ ISR(USART2_RX_vect)
 	if (rbuf_put(uart2_ibuf, UDR2) < 0) // put received byte to buffer
 	{ //rx buffer full
 		//uart2_rx_clr(); //for sure, clear input buffer
-		printf_P(PSTR("USART2 rx Full!!!\n"));
+		puts_P(PSTR("USART2 rx Full!!!"));
 	}
 }
 

+ 481 - 748
Firmware/ultralcd.cpp

@@ -44,7 +44,6 @@
 #include "mmu.h"
 
 #include "static_assert.h"
-#include "io_atmega2560.h"
 #include "first_lay_cal.h"
 
 #include "fsensor.h"
@@ -90,7 +89,6 @@ unsigned int custom_message_state = 0;
 
 bool isPrintPaused = false;
 uint8_t farm_mode = 0;
-int farm_no = 0;
 int farm_timer = 8;
 uint8_t farm_status = 0;
 bool printer_connected = true;
@@ -138,7 +136,6 @@ static void prusa_stat_farm_number();
 static void prusa_stat_diameter();
 static void prusa_stat_temperatures();
 static void prusa_stat_printinfo();
-static void lcd_farm_no();
 static void lcd_menu_xyz_y_min();
 static void lcd_menu_xyz_skew();
 static void lcd_menu_xyz_offset();
@@ -342,11 +339,9 @@ static void lcd_implementation_drawmenu_sdfile_selected(uint8_t row, const char*
     uint8_t n = LCD_WIDTH - 1;
 
     for(uint_least8_t g = 0; g<4;g++){
-      lcd_set_cursor(0, g);
-    lcd_print(' ');
+      lcd_putc_at(0, g, ' ');
     }
-    lcd_set_cursor(0, row);
-    lcd_print('>');
+    lcd_putc_at(0, row, '>');
 
     if (longFilename[0] == '\0')
     {
@@ -385,20 +380,17 @@ static void lcd_implementation_drawmenu_sdfile_selected(uint8_t row, const char*
         }
     }
     if(c!='\0'){
-      lcd_set_cursor(i, row);
-        lcd_print(c);
+        lcd_putc_at(i, row, c);
         i++;
     }
     n=n-i+1;
-    while(n--)
-        lcd_print(' ');
+    lcd_space(n);
 }
 static void lcd_implementation_drawmenu_sdfile(uint8_t row, const char* filename, char* longFilename)
 {
     char c;
     uint8_t n = LCD_WIDTH - 1;
-    lcd_set_cursor(0, row);
-    lcd_print(' ');
+    lcd_putc_at(0, row, ' ');
     if (longFilename[0] != '\0')
     {
         filename = longFilename;
@@ -410,15 +402,13 @@ static void lcd_implementation_drawmenu_sdfile(uint8_t row, const char* filename
         filename++;
         n--;
     }
-    while(n--)
-        lcd_print(' ');
+    lcd_space(n);
 }
 static void lcd_implementation_drawmenu_sddirectory_selected(uint8_t row, const char* filename, char* longFilename)
 {
     char c;
     uint8_t n = LCD_WIDTH - 2;
-    lcd_set_cursor(0, row);
-    lcd_print('>');
+    lcd_putc_at(0, row, '>');
     lcd_print(LCD_STR_FOLDER[0]);
     if (longFilename[0] != '\0')
     {
@@ -431,15 +421,13 @@ static void lcd_implementation_drawmenu_sddirectory_selected(uint8_t row, const
         filename++;
         n--;
     }
-    while(n--)
-        lcd_print(' ');
+    lcd_space(n);
 }
 static void lcd_implementation_drawmenu_sddirectory(uint8_t row, const char* filename, char* longFilename)
 {
     char c;
     uint8_t n = LCD_WIDTH - 2;
-    lcd_set_cursor(0, row);
-    lcd_print(' ');
+    lcd_putc_at(0, row, ' ');
     lcd_print(LCD_STR_FOLDER[0]);
     if (longFilename[0] != '\0')
     {
@@ -452,8 +440,7 @@ static void lcd_implementation_drawmenu_sddirectory(uint8_t row, const char* fil
         filename++;
         n--;
     }
-    while(n--)
-        lcd_print(' ');
+    lcd_space(n);
 }
 
 
@@ -672,39 +659,7 @@ void lcdui_print_extruder(void)
 // Print farm number (5 chars total)
 void lcdui_print_farm(void)
 {
-	int chars = lcd_printf_P(_N(" F0  "));
-//	lcd_space(5 - chars);
-/*
-	// Farm number display
-	if (farm_mode)
-	{
-		lcd_set_cursor(6, 2);
-		lcd_puts_P(PSTR(" F"));
-		lcd_print(farm_no);
-		lcd_puts_P(PSTR("  "));
-        
-        // Beat display
-        lcd_set_cursor(LCD_WIDTH - 1, 0);
-        if ( (_millis() - kicktime) < 60000 ) {
-        
-            lcd_puts_P(PSTR("L"));
-        
-        }else{
-            lcd_puts_P(PSTR(" "));
-        }
-        
-	}
-	else {
-#ifdef SNMM
-		lcd_puts_P(PSTR(" E"));
-		lcd_print(get_ext_nr() + 1);
-
-#else
-		lcd_set_cursor(LCD_WIDTH - 8 - 2, 2);
-		lcd_puts_P(PSTR(" "));
-#endif
-	}
-*/
+	lcd_printf_P(_N(" FRM "));
 }
 
 #ifdef CMD_DIAGNOSTICS
@@ -714,7 +669,7 @@ void lcdui_print_cmd_diag(void)
 	lcd_set_cursor(LCD_WIDTH - 8 -1, 2);
 	lcd_puts_P(PSTR("      C"));
 	lcd_print(buflen);	// number of commands in cmd buffer
-	if (buflen < 9) lcd_puts_P(" ");
+	if (buflen < 9) lcd_print(' ');
 }
 #endif //CMD_DIAGNOSTICS
 
@@ -769,32 +724,27 @@ void lcdui_print_status_line(void)
 			heating_status_counter = 0;
 		}
 		lcd_set_cursor(7, 3);
-		lcd_puts_P(PSTR("             "));
+		lcd_space(13);
 
 		for (unsigned int dots = 0; dots < heating_status_counter; dots++)
 		{
-			lcd_set_cursor(7 + dots, 3);
-			lcd_print('.');
+			lcd_putc_at(7 + dots, 3, '.');
 		}
 		switch (heating_status)
 		{
 		case 1:
-			lcd_set_cursor(0, 3);
-			lcd_puts_P(_T(MSG_HEATING));
+			lcd_puts_at_P(0, 3, _T(MSG_HEATING));
 			break;
 		case 2:
-			lcd_set_cursor(0, 3);
-			lcd_puts_P(_T(MSG_HEATING_COMPLETE));
+			lcd_puts_at_P(0, 3, _T(MSG_HEATING_COMPLETE));
 			heating_status = 0;
 			heating_status_counter = 0;
 			break;
 		case 3:
-			lcd_set_cursor(0, 3);
-			lcd_puts_P(_T(MSG_BED_HEATING));
+			lcd_puts_at_P(0, 3, _T(MSG_BED_HEATING));
 			break;
 		case 4:
-			lcd_set_cursor(0, 3);
-			lcd_puts_P(_T(MSG_BED_DONE));
+			lcd_puts_at_P(0, 3, _T(MSG_BED_DONE));
 			heating_status = 0;
 			heating_status_counter = 0;
 			break;
@@ -843,9 +793,8 @@ void lcdui_print_status_line(void)
 			if (custom_message_state > 10)
 			{
 				lcd_set_cursor(0, 3);
-				lcd_puts_P(PSTR("                    "));
-				lcd_set_cursor(0, 3);
-				lcd_puts_P(_T(MSG_CALIBRATE_Z_AUTO));
+				lcd_space(20);
+				lcd_puts_at_P(0, 3, _T(MSG_CALIBRATE_Z_AUTO));
 				lcd_puts_P(PSTR(" : "));
 				lcd_print(custom_message_state-10);
 			}
@@ -860,9 +809,8 @@ void lcdui_print_status_line(void)
 				if (custom_message_state > 3 && custom_message_state <= 10 )
 				{
 					lcd_set_cursor(0, 3);
-					lcd_puts_P(PSTR("                   "));
-					lcd_set_cursor(0, 3);
-					lcd_puts_P(_i("Calibration done"));////MSG_HOMEYZ_DONE
+					lcd_space(19);
+					lcd_puts_at_P(0, 3, _i("Calibration done"));////MSG_HOMEYZ_DONE
 					custom_message_state--;
 				}
 			}
@@ -892,8 +840,7 @@ void lcdui_print_status_line(void)
 			}
 			break;
 		case CustomMsg::TempCompPreheat: // temp compensation preheat
-			lcd_set_cursor(0, 3);
-			lcd_puts_P(_i("PINDA Heating"));////MSG_PINDA_PREHEAT c=20 r=1
+			lcd_puts_at_P(0, 3, _i("PINDA Heating"));////MSG_PINDA_PREHEAT c=20 r=1
 			if (custom_message_state <= PINDA_HEAT_T)
 			{
 				lcd_puts_P(PSTR(": "));
@@ -1001,6 +948,36 @@ void lcd_status_screen()                          // NOT static due to using ins
 		}
 	}
 
+#ifdef ULTIPANEL_FEEDMULTIPLY
+	// Dead zone at 100% feedrate
+	if ((feedmultiply < 100 && (feedmultiply + int(lcd_encoder)) > 100) ||
+		(feedmultiply > 100 && (feedmultiply + int(lcd_encoder)) < 100))
+	{
+		lcd_encoder = 0;
+		feedmultiply = 100;
+	}
+	if (feedmultiply == 100 && int(lcd_encoder) > ENCODER_FEEDRATE_DEADZONE)
+	{
+		feedmultiply += int(lcd_encoder) - ENCODER_FEEDRATE_DEADZONE;
+		lcd_encoder = 0;
+	}
+	else if (feedmultiply == 100 && int(lcd_encoder) < -ENCODER_FEEDRATE_DEADZONE)
+	{
+		feedmultiply += int(lcd_encoder) + ENCODER_FEEDRATE_DEADZONE;
+		lcd_encoder = 0;
+	}
+	else if (feedmultiply != 100)
+	{
+		feedmultiply += int(lcd_encoder);
+		lcd_encoder = 0;
+	}
+#endif //ULTIPANEL_FEEDMULTIPLY
+
+	if (feedmultiply < 10)
+		feedmultiply = 10;
+	else if (feedmultiply > 999)
+		feedmultiply = 999;
+
 	if (lcd_status_update_delay)
 		lcd_status_update_delay--;
 	else
@@ -1077,36 +1054,6 @@ void lcd_status_screen()                          // NOT static due to using ins
 		menu_submenu(lcd_main_menu);
 		lcd_refresh(); // to maybe revive the LCD if static electricity killed it.
 	}
-
-#ifdef ULTIPANEL_FEEDMULTIPLY
-	// Dead zone at 100% feedrate
-	if ((feedmultiply < 100 && (feedmultiply + int(lcd_encoder)) > 100) ||
-		(feedmultiply > 100 && (feedmultiply + int(lcd_encoder)) < 100))
-	{
-		lcd_encoder = 0;
-		feedmultiply = 100;
-	}
-	if (feedmultiply == 100 && int(lcd_encoder) > ENCODER_FEEDRATE_DEADZONE)
-	{
-		feedmultiply += int(lcd_encoder) - ENCODER_FEEDRATE_DEADZONE;
-		lcd_encoder = 0;
-	}
-	else if (feedmultiply == 100 && int(lcd_encoder) < -ENCODER_FEEDRATE_DEADZONE)
-	{
-		feedmultiply += int(lcd_encoder) + ENCODER_FEEDRATE_DEADZONE;
-		lcd_encoder = 0;
-	}
-	else if (feedmultiply != 100)
-	{
-		feedmultiply += int(lcd_encoder);
-		lcd_encoder = 0;
-	}
-#endif //ULTIPANEL_FEEDMULTIPLY
-
-	if (feedmultiply < 10)
-		feedmultiply = 10;
-	else if (feedmultiply > 999)
-		feedmultiply = 999;
 }
 
 void lcd_commands()
@@ -1487,7 +1434,6 @@ void lcd_commands()
 
 		if (lcd_commands_step == 1 && !blocks_queued())
 		{
-			lcd_confirm_print();
 			lcd_commands_step = 0;
 			lcd_commands_type = LcdCommands::Idle;
 		}
@@ -1583,6 +1529,7 @@ void lcd_return_to_status()
 //! @brief Pause print, disable nozzle heater, move to park position
 void lcd_pause_print()
 {
+    SERIAL_PROTOCOLLNRPGM(MSG_OCTOPRINT_PAUSED); //pause for octoprint
     stop_and_save_print_to_ram(0.0, -default_retraction);
     lcd_return_to_status();
     isPrintPaused = true;
@@ -1590,7 +1537,6 @@ void lcd_pause_print()
     {
         lcd_commands_type = LcdCommands::LongPause;
     }
-	SERIAL_PROTOCOLLNRPGM(MSG_OCTOPRINT_PAUSED); //pause for octoprint
 }
 
 
@@ -1692,8 +1638,8 @@ void lcd_menu_extruder_info()                     // NOT static due to using ins
 //! @code{.unparsed}
 //! |01234567890123456789|
 //! | Main               |	c=18 r=1
-//! | Last print         |	c=18 r=1
-//! | Total              |	c=18 r=1
+//! | Last print         |	MSG_LAST_PRINT c=18
+//! | Total              |	MSG_TOTAL c=6
 //! |                    |
 //! ----------------------
 //! @endcode
@@ -1701,8 +1647,8 @@ static void lcd_menu_fails_stats_mmu()
 {
 	MENU_BEGIN();
 	MENU_ITEM_BACK_P(_T(MSG_MAIN));
-	MENU_ITEM_SUBMENU_P(_i("Last print"), lcd_menu_fails_stats_mmu_print); ////c=18 r=1
-	MENU_ITEM_SUBMENU_P(_i("Total"), lcd_menu_fails_stats_mmu_total); ////c=18 r=1
+	MENU_ITEM_SUBMENU_P(_T(MSG_LAST_PRINT), lcd_menu_fails_stats_mmu_print);
+	MENU_ITEM_SUBMENU_P(_T(MSG_TOTAL), lcd_menu_fails_stats_mmu_total); ////c=18 r=1
 	MENU_END();
 }
 
@@ -1710,9 +1656,9 @@ static void lcd_menu_fails_stats_mmu()
 //!
 //! @code{.unparsed}
 //! |01234567890123456789|
-//! |Last print failures |	c=20 r=1
-//! | MMU fails:      000|	c=14 r=1
-//! | MMU load fails: 000|	c=14 r=1
+//! |Last print failures |	MSG_LAST_PRINT_FAILURES c=20
+//! | MMU fails:      000|	MSG_MMU_FAILS c=14
+//! | MMU load fails: 000|	MSG_MMU_LOAD_FAILS c=14
 //! |                    |
 //! ----------------------
 //! @endcode
@@ -1724,9 +1670,9 @@ static void lcd_menu_fails_stats_mmu_print()
     uint16_t load_fails = eeprom_read_byte((uint8_t*)EEPROM_MMU_LOAD_FAIL);
     lcd_home();
     lcd_printf_P(PSTR("%S\n" " %-16.16S%-3d\n" " %-16.16S%-3d"), 
-        _i("Last print failures"), ////c=20 r=1
-        _i("MMU fails"), fails, ////c=14 r=1
-        _i("MMU load fails"), load_fails); ////c=14 r=1
+        _T(MSG_LAST_PRINT_FAILURES), ////c=20
+        _T(MSG_MMU_FAILS), fails, ////c=14
+        _T(MSG_MMU_LOAD_FAILS), load_fails); ////c=14
     menu_back_if_clicked_fb();
 }
 
@@ -1734,9 +1680,9 @@ static void lcd_menu_fails_stats_mmu_print()
 //!
 //! @code{.unparsed}
 //! |01234567890123456789|
-//! |Total failures      |	c=20 r=1
-//! | MMU fails:      000|	c=14 r=1
-//! | MMU load fails: 000|	c=14 r=1
+//! |Total failures      |	MSG_TOTAL_FAILURES c=20
+//! | MMU fails:      000|	MSG_MMU_FAILS c=14
+//! | MMU load fails: 000|	MSG_MMU_LOAD_FAILS c=14
 //! | MMU power fails:000|	c=14 r=1
 //! ----------------------
 //! @endcode
@@ -1749,9 +1695,9 @@ static void lcd_menu_fails_stats_mmu_total()
     uint16_t load_fails = eeprom_read_byte((uint8_t*)EEPROM_MMU_LOAD_FAIL_TOT);
     lcd_home();
     lcd_printf_P(PSTR("%S\n" " %-16.16S%-3d\n" " %-16.16S%-3d\n" " %-16.16S%-3d"), 
-        _i("Total failures"), ////c=20 r=1
-        _i("MMU fails"), fails, ////c=14 r=1
-        _i("MMU load fails"), load_fails, ////c=14 r=1
+        _T(MSG_TOTAL_FAILURES), ////c=20
+        _T(MSG_MMU_FAILS), fails, ////c=14
+        _T(MSG_MMU_LOAD_FAILS), load_fails, ////c=14
         _i("MMU power fails"), mmu_power_failures); ////c=14 r=1
     menu_back_if_clicked_fb();
 }
@@ -1763,10 +1709,10 @@ static const char failStatsFmt[] PROGMEM = "%S\n" " %-16.16S%-3d\n" " %-16.16S%-
 //!
 //! @code{.unparsed}
 //! |01234567890123456789|
-//! |Total failures      |	c=20 r=1
-//! | Power failures: 000|	c=14 r=1
-//! | Filam. runouts: 000|	c=14 r=1
-//! | Crash   X:000 Y:000|	c=7 r=1
+//! |Total failures      |	MSG_TOTAL_FAILURES c=20
+//! | Power failures: 000|	MSG_POWER_FAILURES c=14
+//! | Fil. runouts  : 000|	MSG_FIL_RUNOUTS c=14
+//! | Crash   X:000 Y:000|	MSG_CRASH c=7
 //! ----------------------
 //! @endcode
 //! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations.
@@ -1779,10 +1725,10 @@ static void lcd_menu_fails_stats_total()
     uint16_t crashY = eeprom_read_word((uint16_t*)EEPROM_CRASH_COUNT_Y_TOT);
     lcd_home();
     lcd_printf_P(failStatsFmt, 
-        _i("Total failures"),   ////c=20 r=1
-        _i("Power failures"), power,   ////c=14 r=1
-        _i("Filam. runouts"), filam,   ////c=14 r=1
-        _i("Crash"), crashX, crashY);  ////c=7 r=1
+        _T(MSG_TOTAL_FAILURES),   ////c=20
+        _T(MSG_POWER_FAILURES), power,   ////c=14
+        _T(MSG_FIL_RUNOUTS), filam,   ////c=14
+        _T(MSG_CRASH), crashX, crashY);  ////c=7
     menu_back_if_clicked_fb();
 }
 
@@ -1790,10 +1736,10 @@ static void lcd_menu_fails_stats_total()
 //!
 //! @code{.unparsed}
 //! |01234567890123456789|
-//! |Last print failures |	c=20 r=1
-//! | Power failures  000|	c=14 r=1
-//! | Filam. runouts  000|	c=14 r=1
-//! | Crash   X:000 Y:000|	c=7 r=1
+//! |Last print failures |	MSG_LAST_PRINT_FAILURES c=20
+//! | Power failures  000|	MSG_POWER_FAILURES c=14
+//! | Fil. runouts    000|	MSG_FIL_RUNOUTS c=14
+//! | Crash   X:000 Y:000|	MSG_CRASH c=7
 //! ----------------------
 //! @endcode
 //! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations.
@@ -1807,20 +1753,20 @@ static void lcd_menu_fails_stats_print()
     lcd_home();
 #ifndef PAT9125
     lcd_printf_P(failStatsFmt,
-        _i("Last print failures"),  ////c=20 r=1
-        _i("Power failures"), power,  ////c=14 r=1
-        _i("Filam. runouts"), filam,  ////c=14 r=1
-        _i("Crash"), crashX, crashY);  ////c=7 r=1
+        _T(MSG_LAST_PRINT_FAILURES),  ////c=20
+        _T(MSG_POWER_FAILURES), power,  ////c=14
+        _T(MSG_FIL_RUNOUTS), filam,  ////c=14
+        _T(MSG_CRASH), crashX, crashY);  ////c=7
 #else
     // On the MK3 include detailed PAT9125 statistics about soft failures
     lcd_printf_P(PSTR("%S\n"
                       " %-16.16S%-3d\n"
                       " %-7.7S H %-3d S %-3d\n"
                       " %-7.7S X %-3d Y %-3d"),
-                 _i("Last print failures"), ////c=20 r=1
-                 _i("Power failures"), power, ////c=14 r=1
+                 _T(MSG_LAST_PRINT_FAILURES), ////c=20
+                 _T(MSG_POWER_FAILURES), power, ////c=14
                  _i("Runouts"), filam, fsensor_softfail, //c=7
-                 _i("Crash"), crashX, crashY);  ////c=7 r=1
+                 _T(MSG_CRASH), crashX, crashY);  ////c=7
 #endif
     menu_back_if_clicked_fb();
 }
@@ -1834,8 +1780,8 @@ static void lcd_menu_fails_stats_print()
 //! @code{.unparsed}
 //! |01234567890123456789|
 //! | Main               |	c=18 r=1
-//! | Last print         |	c=18 r=1
-//! | Total              |	c=18 r=1
+//! | Last print         |	MSG_LAST_PRINT c=18
+//! | Total              |	MSG_TOTAL c=6
 //! |                    |
 //! ----------------------
 //! @endcode
@@ -1844,8 +1790,8 @@ static void lcd_menu_fails_stats()
 {
 	MENU_BEGIN();
 	MENU_ITEM_BACK_P(_T(MSG_MAIN));
-	MENU_ITEM_SUBMENU_P(_i("Last print"), lcd_menu_fails_stats_print);  ////c=18 r=1
-	MENU_ITEM_SUBMENU_P(_i("Total"), lcd_menu_fails_stats_total);  ////c=18 r=1
+	MENU_ITEM_SUBMENU_P(_T(MSG_LAST_PRINT), lcd_menu_fails_stats_print);  ////c=18 r=1
+	MENU_ITEM_SUBMENU_P(_T(MSG_TOTAL), lcd_menu_fails_stats_total);  ////c=18 r=1
 	MENU_END();
 }
 
@@ -1860,10 +1806,10 @@ static const char failStatsFmt[] PROGMEM = "%S\n" " %-16.16S%-3d\n" "%S\n" " %-1
 //! Example screen:
 //! @code{.unparsed}
 //! |01234567890123456789|
-//! |Last print failures |	c=20 r=1
-//! | Filam. runouts  000|	c=14 r=1
-//! |Total failures      |	c=20 r=1
-//! | Filam. runouts  000|	c=14 r=1
+//! |Last print failures |	MSG_LAST_PRINT_FAILURES c=20
+//! | Fil.   runouts  000|	MSG_FIL_RUNOUTS c=14
+//! |Total failures      |	MSG_TOTAL_FAILURES c=20
+//! | Fil. runouts    000|	MSG_FIL_RUNOUTS c=14
 //! ----------------------
 //! @endcode
 //! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations.
@@ -1874,10 +1820,10 @@ static void lcd_menu_fails_stats()
     uint16_t filamentTotal = eeprom_read_word((uint16_t*)EEPROM_FERROR_COUNT_TOT);
 	lcd_home();
 	lcd_printf_P(failStatsFmt, 
-        _i("Last print failures"),   ////c=20 r=1
-        _i("Filam. runouts"), filamentLast,   ////c=14 r=1
-        _i("Total failures"),  ////c=20 r=1
-        _i("Filam. runouts"), filamentTotal);   ////c=14 r=1
+        _T(MSG_LAST_PRINT_FAILURES),   ////c=20
+        _T(MSG_FIL_RUNOUTS), filamentLast,   ////c=14
+        _T(MSG_TOTAL_FAILURES),  ////c=20
+        _T(MSG_FIL_RUNOUTS), filamentTotal);   ////c=14
 
 	menu_back_if_clicked();
 }
@@ -2006,7 +1952,7 @@ static void lcd_menu_voltages()
 static void lcd_menu_belt_status()
 {
 	lcd_home();
-    lcd_printf_P(PSTR("%S\n" " X %d\n" " Y %d"), _i("Belt status"), eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_X)), eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_Y)));
+    lcd_printf_P(PSTR("%S\n" " X %d\n" " Y %d"), _T(MSG_BELT_STATUS), eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_X)), eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_Y)));
     menu_back_if_clicked();
 }
 #endif //TMC2130
@@ -2084,7 +2030,7 @@ static void lcd_preheat_menu()
 //! If TMC2130 defined
 //! 
 //! 	@code{.unparsed}
-//! 	| Belt status        |	MSG_MENU_BELT_STATUS
+//! 	| Belt status        |	MSG_BELT_STATUS
 //! @endcode
 //! 
 //! @code{.unparsed}
@@ -2096,9 +2042,6 @@ static void lcd_preheat_menu()
 //! 	@code{.unparsed}
 //! 	| Voltages           |	MSG_MENU_VOLTAGES
 //! 	@endcode
-//!
-//!
-//! 	| Experimental       |	c=18
 //! 
 //! 
 //! If DEBUG_BUILD is defined
@@ -2111,12 +2054,11 @@ static void lcd_preheat_menu()
 static void lcd_support_menu()
 {
 	typedef struct
-	{	// 23bytes total
+	{	// 22bytes total
 		int8_t status;                 // 1byte
 		bool is_flash_air;             // 1byte
 		uint8_t ip[4];                 // 4bytes
 		char ip_str[3*4+3+1];          // 16bytes
-		uint8_t experimental_menu_visibility; // 1byte
 	} _menu_data_t;
     static_assert(sizeof(menu_data)>= sizeof(_menu_data_t),"_menu_data_t doesn't fit into menu_data");
 	_menu_data_t* _md = (_menu_data_t*)&(menu_data[0]);
@@ -2125,19 +2067,14 @@ static void lcd_support_menu()
         // Menu was entered or SD card status has changed (plugged in or removed).
         // Initialize its status.
         _md->status = 1;
-        _md->is_flash_air = card.ToshibaFlashAir_isEnabled() && card.ToshibaFlashAir_GetIP(_md->ip);
-        if (_md->is_flash_air)
+        _md->is_flash_air = card.ToshibaFlashAir_isEnabled();
+        if (_md->is_flash_air) {
+            card.ToshibaFlashAir_GetIP(_md->ip); // ip[4] filled with 0 if it failed
+            // Prepare IP string from ip[4]
             sprintf_P(_md->ip_str, PSTR("%d.%d.%d.%d"), 
                 _md->ip[0], _md->ip[1], 
                 _md->ip[2], _md->ip[3]);
-        
-        _md->experimental_menu_visibility = eeprom_read_byte((uint8_t *)EEPROM_EXPERIMENTAL_VISIBILITY);
-        if (_md->experimental_menu_visibility == EEPROM_EMPTY_VALUE)
-        {
-            _md->experimental_menu_visibility = 0;
-            eeprom_update_byte((uint8_t *)EEPROM_EXPERIMENTAL_VISIBILITY, _md->experimental_menu_visibility);
         }
-        
     } else if (_md->is_flash_air && 
         _md->ip[0] == 0 && _md->ip[1] == 0 && 
         _md->ip[2] == 0 && _md->ip[3] == 0 &&
@@ -2203,7 +2140,11 @@ static void lcd_support_menu()
   if (_md->is_flash_air) {
       MENU_ITEM_BACK_P(STR_SEPARATOR);
       MENU_ITEM_BACK_P(PSTR("FlashAir IP Addr:"));  //c=18 r=1
-///!      MENU_ITEM(back_RAM, _md->ip_str, 0);
+      MENU_ITEM_BACK_P(PSTR(" "));
+      if (((menu_item - 1) == menu_line) && lcd_draw_update) {
+          lcd_set_cursor(2, menu_row);
+          lcd_printf_P(PSTR("%s"), _md->ip_str);
+      }
   }
 
   #ifndef MK1BP
@@ -2213,7 +2154,7 @@ static void lcd_support_menu()
   MENU_ITEM_SUBMENU_P(_i("Sensor info"), lcd_menu_show_sensors_state);////MSG_INFO_SENSORS c=18 r=1
 
 #ifdef TMC2130
-  MENU_ITEM_SUBMENU_P(_i("Belt status"), lcd_menu_belt_status);////MSG_MENU_BELT_STATUS c=18
+  MENU_ITEM_SUBMENU_P(_T(MSG_BELT_STATUS), lcd_menu_belt_status);////MSG_BELT_STATUS c=18
 #endif //TMC2130
     
   MENU_ITEM_SUBMENU_P(_i("Temperatures"), lcd_menu_temperatures);////MSG_MENU_TEMPERATURES c=18 r=1
@@ -2222,11 +2163,6 @@ static void lcd_support_menu()
   MENU_ITEM_SUBMENU_P(_i("Voltages"), lcd_menu_voltages);////MSG_MENU_VOLTAGES c=18 r=1
 #endif //defined VOLT_BED_PIN || defined VOLT_PWR_PIN
 
-  if (_md->experimental_menu_visibility)
-  {
-    MENU_ITEM_SUBMENU_P(PSTR("Experimental"), lcd_experimental_menu);////MSG_MENU_EXPERIMENTAL c=18
-  }
-
 
 #ifdef DEBUG_BUILD
   MENU_ITEM_SUBMENU_P(PSTR("Debug"), lcd_menu_debug);////c=18 r=1
@@ -2292,8 +2228,7 @@ uint8_t nLevel;
 
 lcd_set_cursor(0,0);
 lcdui_print_temp(LCD_STR_THERMOMETER[0],(int)degHotend(0),(int)degTargetHotend(0));
-lcd_set_cursor(0,2);
-lcd_puts_P(_i("Press the knob"));                 ////MSG_ c=20 r=1
+lcd_puts_at_P(0,2, _i("Press the knob"));                 ////MSG_ c=20 r=1
 lcd_set_cursor(0,3);
 switch(eFilamentAction)
      {
@@ -2429,7 +2364,7 @@ void mFilamentItem(uint16_t nTemp, uint16_t nTempBed)
         case FilamentAction::None:
         case FilamentAction::Preheat:
         case FilamentAction::Lay1Cal:
-
+            // handled earlier
             break;
         }
         if (bFilamentWaitingFlag) Sound_MakeSound(e_SOUND_TYPE_StandardPrompt);
@@ -2437,34 +2372,44 @@ void mFilamentItem(uint16_t nTemp, uint16_t nTempBed)
     }
     else
     {
-        bFilamentWaitingFlag = true;
         lcd_set_cursor(0, 0);
         lcdui_print_temp(LCD_STR_THERMOMETER[0], (int) degHotend(0), (int) degTargetHotend(0));
-        lcd_set_cursor(0, 1);
-        switch (eFilamentAction)
+
+        if (!bFilamentWaitingFlag)
         {
-        case FilamentAction::Load:
-        case FilamentAction::AutoLoad:
-        case FilamentAction::MmuLoad:
-            lcd_puts_P(_i("Preheating to load")); ////MSG_ c=20
-            break;
-        case FilamentAction::UnLoad:
-        case FilamentAction::MmuUnLoad:
-            lcd_puts_P(_i("Preheating to unload")); ////MSG_ c=20
-            break;
-        case FilamentAction::MmuEject:
-            lcd_puts_P(_i("Preheating to eject")); ////MSG_ c=20
-            break;
-        case FilamentAction::MmuCut:
-            lcd_puts_P(_i("Preheating to cut")); ////MSG_ c=20
-            break;
-        case FilamentAction::None:
-        case FilamentAction::Preheat:
-        case FilamentAction::Lay1Cal:
-            break;
+            // First run after the filament preheat selection:
+            // setup the fixed LCD parts and raise Z as we wait
+            bFilamentWaitingFlag = true;
+
+            lcd_set_cursor(0, 1);
+            switch (eFilamentAction)
+            {
+            case FilamentAction::Load:
+            case FilamentAction::AutoLoad:
+            case FilamentAction::MmuLoad:
+                lcd_puts_P(_i("Preheating to load")); ////MSG_ c=20
+                raise_z_above(MIN_Z_FOR_LOAD);
+                break;
+            case FilamentAction::UnLoad:
+            case FilamentAction::MmuUnLoad:
+                lcd_puts_P(_i("Preheating to unload")); ////MSG_ c=20
+                raise_z_above(MIN_Z_FOR_UNLOAD);
+                break;
+            case FilamentAction::MmuEject:
+                lcd_puts_P(_i("Preheating to eject")); ////MSG_ c=20
+                break;
+            case FilamentAction::MmuCut:
+                lcd_puts_P(_i("Preheating to cut")); ////MSG_ c=20
+                break;
+            case FilamentAction::None:
+            case FilamentAction::Preheat:
+            case FilamentAction::Lay1Cal:
+                // handled earlier
+                break;
+            }
+            lcd_puts_at_P(0, 3, _i(">Cancel"));                   ////MSG_ c=20 r=1
         }
-        lcd_set_cursor(0, 3);
-        lcd_puts_P(_i(">Cancel"));                   ////MSG_ c=20 r=1
+
         if (lcd_clicked())
         {
             bFilamentWaitingFlag = false;
@@ -2544,6 +2489,12 @@ static void mFilamentItem_FLEX()
     mFilamentItem(FLEX_PREHEAT_HOTEND_TEMP, FLEX_PREHEAT_HPB_TEMP);
 }
 
+static void mFilamentItem_PVB()
+{
+    bFilamentPreheatState = false;
+    mFilamentItem(PVB_PREHEAT_HOTEND_TEMP, PVB_PREHEAT_HPB_TEMP);
+}
+
 void mFilamentBack()
 {
     menu_back();
@@ -2580,6 +2531,7 @@ void lcd_generic_preheat_menu()
         MENU_ITEM_SUBMENU_P(PSTR("PET  -  " STRINGIFY(PET_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(PET_PREHEAT_HPB_TEMP)),mFilamentItem_PET);
         MENU_ITEM_SUBMENU_P(PSTR("ASA  -  " STRINGIFY(ASA_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(ASA_PREHEAT_HPB_TEMP)),mFilamentItem_ASA);
         MENU_ITEM_SUBMENU_P(PSTR("PC   -  " STRINGIFY(PC_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(PC_PREHEAT_HPB_TEMP)),mFilamentItem_PC);
+        MENU_ITEM_SUBMENU_P(PSTR("PVB  -  " STRINGIFY(PVB_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(PVB_PREHEAT_HPB_TEMP)),mFilamentItem_PVB);
         MENU_ITEM_SUBMENU_P(PSTR("ABS  -  " STRINGIFY(ABS_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(ABS_PREHEAT_HPB_TEMP)),mFilamentItem_ABS);
         MENU_ITEM_SUBMENU_P(PSTR("HIPS -  " STRINGIFY(HIPS_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(HIPS_PREHEAT_HPB_TEMP)),mFilamentItem_HIPS);
         MENU_ITEM_SUBMENU_P(PSTR("PP   -  " STRINGIFY(PP_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(PP_PREHEAT_HPB_TEMP)),mFilamentItem_PP);
@@ -2619,8 +2571,7 @@ void lcd_wait_interact() {
   lcd_puts_P(_i("Insert filament"));////MSG_INSERT_FILAMENT c=20
 #endif
   if (!fsensor_autoload_enabled) {
-	  lcd_set_cursor(0, 2);
-	  lcd_puts_P(_i("and press the knob"));////MSG_PRESS c=20 r=2
+	  lcd_puts_at_P(0, 2, _i("and press the knob"));////MSG_PRESS c=20 r=2
   }
 }
 
@@ -2629,9 +2580,7 @@ void lcd_change_success() {
 
   lcd_clear();
 
-  lcd_set_cursor(0, 2);
-
-  lcd_puts_P(_i("Change success!"));////MSG_CHANGE_SUCCESS
+  lcd_puts_at_P(0, 2, _i("Change success!"));////MSG_CHANGE_SUCCESS
 
 
 }
@@ -2639,8 +2588,7 @@ void lcd_change_success() {
 static void lcd_loading_progress_bar(uint16_t loading_time_ms) { 
 
 	for (uint_least8_t i = 0; i < 20; i++) {
-		lcd_set_cursor(i, 3);
-		lcd_print(".");
+		lcd_putc_at(i, 3, '.');
 		//loading_time_ms/20 delay
 		for (uint_least8_t j = 0; j < 5; j++) {
 			delay_keep_alive(loading_time_ms / 100);
@@ -2654,11 +2602,8 @@ void lcd_loading_color() {
 
   lcd_clear();
 
-  lcd_set_cursor(0, 0);
-
-  lcd_puts_P(_i("Loading color"));////MSG_LOADING_COLOR
-  lcd_set_cursor(0, 2);
-  lcd_puts_P(_T(MSG_PLEASE_WAIT));
+  lcd_puts_at_P(0, 0, _i("Loading color"));////MSG_LOADING_COLOR
+  lcd_puts_at_P(0, 2, _T(MSG_PLEASE_WAIT));
   lcd_loading_progress_bar((FILAMENTCHANGE_FINALFEED * 1000ul) / FILAMENTCHANGE_EFEED_FINAL); //show progress bar during filament loading slow sequence
 }
 
@@ -2668,16 +2613,13 @@ void lcd_loading_filament() {
 
   lcd_clear();
 
-  lcd_set_cursor(0, 0);
-
-  lcd_puts_P(_T(MSG_LOADING_FILAMENT));
-  lcd_set_cursor(0, 2);
-  lcd_puts_P(_T(MSG_PLEASE_WAIT));
+  lcd_puts_at_P(0, 0, _T(MSG_LOADING_FILAMENT));
+  lcd_puts_at_P(0, 2, _T(MSG_PLEASE_WAIT));
 #ifdef SNMM
   for (int i = 0; i < 20; i++) {
 
     lcd_set_cursor(i, 3);
-    lcd_print(".");
+    lcd_print('.');
     for (int j = 0; j < 10 ; j++) {
       manage_heater();
       manage_inactivity(true);
@@ -2706,26 +2648,11 @@ void lcd_alright() {
 
   lcd_clear();
 
-  lcd_set_cursor(0, 0);
-
-  lcd_puts_P(_i("Changed correctly?"));////MSG_CORRECTLY c=20
-
-  lcd_set_cursor(1, 1);
-
-  lcd_puts_P(_T(MSG_YES));
-
-  lcd_set_cursor(1, 2);
-
-  lcd_puts_P(_i("Filament not loaded"));////MSG_NOT_LOADED c=19
-
-
-  lcd_set_cursor(1, 3);
-  lcd_puts_P(_i("Color not correct"));////MSG_NOT_COLOR
-
-
-  lcd_set_cursor(0, 1);
-
-  lcd_print(">");
+  lcd_puts_at_P(0, 0, _i("Changed correctly?"));////MSG_CORRECTLY c=20
+  lcd_puts_at_P(1, 1, _T(MSG_YES));
+  lcd_puts_at_P(1, 2, _i("Filament not loaded"));////MSG_NOT_LOADED c=19
+  lcd_puts_at_P(1, 3, _i("Color not correct"));////MSG_NOT_COLOR
+  lcd_putc_at(0, 1, '>');
 
 
   enc_dif = lcd_encoder_diff;
@@ -2755,14 +2682,8 @@ void lcd_alright() {
           cursor_pos = 1;
 					Sound_MakeSound(e_SOUND_TYPE_BlindAlert);
         }
-        lcd_set_cursor(0, 1);
-        lcd_print(" ");
-        lcd_set_cursor(0, 2);
-        lcd_print(" ");
-        lcd_set_cursor(0, 3);
-        lcd_print(" ");
-        lcd_set_cursor(0, cursor_pos);
-        lcd_print(">");
+        lcd_puts_at_P(0, 1, PSTR(" \n \n "));
+        lcd_putc_at(0, cursor_pos, '>');
         enc_dif = lcd_encoder_diff;
 				Sound_MakeSound(e_SOUND_TYPE_EncoderMove);
         _delay(100);
@@ -2791,10 +2712,8 @@ void lcd_alright() {
 void show_preheat_nozzle_warning()
 {	
     lcd_clear();
-    lcd_set_cursor(0, 0);
-    lcd_puts_P(_T(MSG_ERROR));
-    lcd_set_cursor(0, 2);
-    lcd_puts_P(_T(MSG_PREHEAT_NOZZLE));
+    lcd_puts_at_P(0, 0, _T(MSG_ERROR));
+    lcd_puts_at_P(0, 2, _T(MSG_PREHEAT_NOZZLE));
     _delay(2000);
     lcd_clear();
 }
@@ -2947,7 +2866,7 @@ static void _lcd_move(const char *name, int axis, int min, int max)
 }
 
 
-static void lcd_move_e()
+void lcd_move_e()
 {
 	if (degHotend0() > EXTRUDE_MINTEMP)
 	{
@@ -3055,8 +2974,7 @@ static void lcd_menu_xyz_skew()
 		lcd_printf_P(_N("%3.2f\x01"), _deg(angleDiff));
 	}
 	else{
-		lcd_set_cursor(15,0);
-		lcd_puts_P(_T(MSG_NA));
+		lcd_puts_at_P(15,0, _T(MSG_NA));
 	}
     if (lcd_clicked())
         menu_goto(lcd_menu_xyz_offset, 0, true, true);
@@ -3074,8 +2992,7 @@ static void lcd_menu_xyz_skew()
 //! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations.
 static void lcd_menu_xyz_offset()
 {
-    lcd_set_cursor(0,0);
-    lcd_puts_P(_i("[0;0] point offset"));////MSG_MEASURED_OFFSET
+    lcd_puts_at_P(0, 0, _i("[0;0] point offset"));////MSG_MEASURED_OFFSET
     lcd_puts_at_P(0, 1, separator);
     lcd_puts_at_P(0, 2, PSTR("X"));  ////c=10 r=1
     lcd_puts_at_P(0, 3, PSTR("Y"));  ////c=10 r=1
@@ -3279,7 +3196,7 @@ void lcd_adjust_bed(void)
     MENU_ITEM_EDIT_int3_P(_i("Right side[um]"), &_md->right, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);////MSG_BED_CORRECTION_RIGHT c=14 r=1
     MENU_ITEM_EDIT_int3_P(_i("Front side[um]"), &_md->front, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);////MSG_BED_CORRECTION_FRONT c=14 r=1
     MENU_ITEM_EDIT_int3_P(_i("Rear side [um]"),  &_md->rear,  -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);////MSG_BED_CORRECTION_REAR c=14 r=1
-    MENU_ITEM_FUNCTION_P(_i("Reset"), lcd_adjust_bed_reset);////MSG_BED_CORRECTION_RESET
+    MENU_ITEM_FUNCTION_P(_T(MSG_RESET), lcd_adjust_bed_reset);////MSG_RESET c=14
     MENU_END();
 }
 
@@ -3296,8 +3213,7 @@ void lcd_adjust_bed(void)
 void pid_extruder()
 {
 	lcd_clear();
-	lcd_set_cursor(1, 0);
-	lcd_puts_P(_i("Set temperature:"));////MSG_SET_TEMPERATURE c=19 r=1
+	lcd_puts_at_P(1, 0, _i("Set temperature:"));////MSG_SET_TEMPERATURE c=19 r=1
 	pid_temp += int(lcd_encoder);
 	if (pid_temp > HEATER_0_MAXTEMP) pid_temp = HEATER_0_MAXTEMP;
 	if (pid_temp < HEATER_0_MINTEMP) pid_temp = HEATER_0_MINTEMP;
@@ -3332,7 +3248,7 @@ void lcd_adjust_z() {
 
   lcd_set_cursor(0, 1);
 
-  lcd_print(">");
+  lcd_print('>');
 
 
   enc_dif = lcd_encoder_diff;
@@ -3361,11 +3277,11 @@ void lcd_adjust_z() {
           cursor_pos = 1;
         }
         lcd_set_cursor(0, 1);
-        lcd_print(" ");
+        lcd_print(' ');
         lcd_set_cursor(0, 2);
-        lcd_print(" ");
+        lcd_print(' ');
         lcd_set_cursor(0, cursor_pos);
-        lcd_print(">");
+        lcd_print('>');
         enc_dif = lcd_encoder_diff;
         _delay(100);
       }
@@ -3411,7 +3327,7 @@ bool lcd_wait_for_pinda(float temp) {
 		lcd_set_cursor(0, 4);
 		lcd_print(LCD_STR_THERMOMETER[0]);
 		lcd_print(ftostr3(current_temperature_pinda));
-		lcd_print("/");
+		lcd_print('/');
 		lcd_print(ftostr3(temp));
 		lcd_print(LCD_STR_DEGREE);
 		delay_keep_alive(1000);
@@ -3433,7 +3349,7 @@ void lcd_wait_for_heater() {
 		lcd_set_cursor(0, 4);
 		lcd_print(LCD_STR_THERMOMETER[0]);
 		lcd_print(ftostr3(degHotend(active_extruder)));
-		lcd_print("/");
+		lcd_print('/');
 		lcd_print(ftostr3(degTargetHotend(active_extruder)));
 		lcd_print(LCD_STR_DEGREE);
 }
@@ -3752,16 +3668,14 @@ int8_t lcd_show_multiscreen_message_two_choices_and_wait_P(const char *msg, bool
 				if (msg_next == NULL) {
 					lcd_set_cursor(0, 3);
 					if (enc_dif < lcd_encoder_diff && yes) {
-						lcd_puts_P((PSTR(" ")));
-						lcd_set_cursor(7, 3);
-						lcd_puts_P((PSTR(">")));
+						lcd_print(' ');
+						lcd_putc_at(7, 3, '>');
 						yes = false;
 						Sound_MakeSound(e_SOUND_TYPE_EncoderMove);
 					}
 					else if (enc_dif > lcd_encoder_diff && !yes) {
-						lcd_puts_P((PSTR(">")));
-						lcd_set_cursor(7, 3);
-						lcd_puts_P((PSTR(" ")));
+						lcd_print('>');
+						lcd_putc_at(7, 3, ' ');
 						yes = true;
 						Sound_MakeSound(e_SOUND_TYPE_EncoderMove);
 					}
@@ -3790,13 +3704,11 @@ int8_t lcd_show_multiscreen_message_two_choices_and_wait_P(const char *msg, bool
 		}
 		if (msg_next == NULL) {
 			lcd_set_cursor(0, 3);
-			if (yes) lcd_puts_P(PSTR(">"));
-			lcd_set_cursor(1, 3);
-			lcd_puts_P(first_choice);
+			if (yes) lcd_print('>');
+			lcd_puts_at_P(1, 3, first_choice);
 			lcd_set_cursor(7, 3);
-			if (!yes) lcd_puts_P(PSTR(">"));
-			lcd_set_cursor(8, 3);
-			lcd_puts_P(second_choice);
+			if (!yes) lcd_print('>');
+			lcd_puts_at_P(8, 3, second_choice);
 		}
 	}
 }
@@ -3814,17 +3726,13 @@ int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow
 	lcd_display_message_fullscreen_P(msg);
 	
 	if (default_yes) {
-		lcd_set_cursor(0, 2);
-		lcd_puts_P(PSTR(">"));
+		lcd_putc_at(0, 2, '>');
 		lcd_puts_P(_T(MSG_YES));
-		lcd_set_cursor(1, 3);
-		lcd_puts_P(_T(MSG_NO));
+		lcd_puts_at_P(1, 3, _T(MSG_NO));
 	}
 	else {
-		lcd_set_cursor(1, 2);
-		lcd_puts_P(_T(MSG_YES));
-		lcd_set_cursor(0, 3);
-		lcd_puts_P(PSTR(">"));
+		lcd_puts_at_P(1, 2, _T(MSG_YES));
+		lcd_putc_at(0, 3, '>');
 		lcd_puts_P(_T(MSG_NO));
 	}
 	int8_t retval = default_yes ? true : false;
@@ -3845,17 +3753,15 @@ int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow
 		if (abs(enc_dif - lcd_encoder_diff) > 4) {
 			lcd_set_cursor(0, 2);
 				if (enc_dif < lcd_encoder_diff && retval) {
-					lcd_puts_P((PSTR(" ")));
-					lcd_set_cursor(0, 3);
-					lcd_puts_P((PSTR(">")));
+					lcd_print(' ');
+					lcd_putc_at(0, 3, '>');
 					retval = 0;
 					Sound_MakeSound(e_SOUND_TYPE_EncoderMove);
 
 				}
 				else if (enc_dif > lcd_encoder_diff && !retval) {
-					lcd_puts_P((PSTR(">")));
-					lcd_set_cursor(0, 3);
-					lcd_puts_P((PSTR(" ")));
+					lcd_print('>');
+					lcd_putc_at(0, 3, ' ');
 					retval = 1;
 					Sound_MakeSound(e_SOUND_TYPE_EncoderMove);
 				}
@@ -3951,14 +3857,10 @@ void lcd_temp_cal_show_result(bool result) {
 }
 
 static void lcd_show_end_stops() {
-	lcd_set_cursor(0, 0);
-	lcd_puts_P((PSTR("End stops diag")));
-	lcd_set_cursor(0, 1);
-	lcd_puts_P((READ(X_MIN_PIN) ^ (bool)X_MIN_ENDSTOP_INVERTING) ? (PSTR("X1")) : (PSTR("X0")));
-	lcd_set_cursor(0, 2);
-	lcd_puts_P((READ(Y_MIN_PIN) ^ (bool)Y_MIN_ENDSTOP_INVERTING) ? (PSTR("Y1")) : (PSTR("Y0")));
-	lcd_set_cursor(0, 3);
-	lcd_puts_P((READ(Z_MIN_PIN) ^ (bool)Z_MIN_ENDSTOP_INVERTING) ? (PSTR("Z1")) : (PSTR("Z0")));
+	lcd_puts_at_P(0, 0, (PSTR("End stops diag")));
+	lcd_puts_at_P(0, 1, (READ(X_MIN_PIN) ^ (bool)X_MIN_ENDSTOP_INVERTING) ? (PSTR("X1")) : (PSTR("X0")));
+	lcd_puts_at_P(0, 2, (READ(Y_MIN_PIN) ^ (bool)Y_MIN_ENDSTOP_INVERTING) ? (PSTR("Y1")) : (PSTR("Y0")));
+	lcd_puts_at_P(0, 3, (READ(Z_MIN_PIN) ^ (bool)Z_MIN_ENDSTOP_INVERTING) ? (PSTR("Z1")) : (PSTR("Z0")));
 }
 
 #ifndef TMC2130
@@ -4015,7 +3917,7 @@ static void lcd_show_sensors_state()
 		finda_state = mmu_finda;
 	}
 	if (ir_sensor_detected) {
-		idler_state = !PIN_GET(IR_SENSOR_PIN);
+		idler_state = !READ(IR_SENSOR_PIN);
 	}
 	lcd_puts_at_P(0, 0, _i("Sensor state"));
 	lcd_puts_at_P(1, 1, _i("PINDA:"));
@@ -4043,7 +3945,7 @@ void lcd_menu_show_sensors_state()                // NOT static due to using ins
 }
 
 void prusa_statistics_err(char c){
-	SERIAL_ECHO("{[ERR:");
+	SERIAL_ECHOPGM("{[ERR:");
 	SERIAL_ECHO(c);
 	SERIAL_ECHO(']');
 	prusa_stat_farm_number();
@@ -4128,7 +4030,7 @@ void prusa_statistics(int _message, uint8_t _fil_nr) {
 		return;
 		break;
 	case 4:		// print succesfull
-		SERIAL_ECHO("{[RES:1][FIL:");
+		SERIAL_ECHOPGM("{[RES:1][FIL:");
 		MYSERIAL.print(int(_fil_nr));
 		SERIAL_ECHO(']');
 		prusa_stat_printerstatus(status_number);
@@ -4136,7 +4038,7 @@ void prusa_statistics(int _message, uint8_t _fil_nr) {
 		farm_timer = 2;
 		break;
 	case 5:		// print not succesfull
-		SERIAL_ECHO("{[RES:0][FIL:");
+		SERIAL_ECHOPGM("{[RES:0][FIL:");
 		MYSERIAL.print(int(_fil_nr));
 		SERIAL_ECHO(']');
 		prusa_stat_printerstatus(status_number);
@@ -4144,22 +4046,21 @@ void prusa_statistics(int _message, uint8_t _fil_nr) {
 		farm_timer = 2;
 		break;
 	case 6:		// print done
-		SERIAL_ECHO("{[PRN:8]");
+		SERIAL_ECHOPGM("{[PRN:8]");
 		prusa_stat_farm_number();
 		status_number = 8;
 		farm_timer = 2;
 		break;
 	case 7:		// print done - stopped
-		SERIAL_ECHO("{[PRN:9]");
+		SERIAL_ECHOPGM("{[PRN:9]");
 		prusa_stat_farm_number();
 		status_number = 9;
 		farm_timer = 2;
 		break;
 	case 8:		// printer started
-		SERIAL_ECHO("{[PRN:0][PFN:");
+		SERIAL_ECHOPGM("{[PRN:0]");
+		prusa_stat_farm_number();
 		status_number = 0;
-		SERIAL_ECHO(farm_no);
-		SERIAL_ECHO(']');
 		farm_timer = 2;
 		break;
 	case 20:		// echo farm no
@@ -4175,7 +4076,7 @@ void prusa_statistics(int _message, uint8_t _fil_nr) {
 		prusa_stat_printerstatus(status_number);
 		break;
     case 22: // waiting for filament change
-        SERIAL_ECHO("{[PRN:5]");
+        SERIAL_ECHOPGM("{[PRN:5]");
 		prusa_stat_farm_number();
 		status_number = 5;
         break;
@@ -4194,12 +4095,9 @@ void prusa_statistics(int _message, uint8_t _fil_nr) {
 		break;
 
     case 99:		// heartbeat
-        SERIAL_ECHO("{[PRN:99]");
+        SERIAL_ECHOPGM("{[PRN:99]");
         prusa_stat_temperatures();
-		SERIAL_ECHO("[PFN:");
-		SERIAL_ECHO(farm_no);
-		SERIAL_ECHO(']');
-            
+		prusa_stat_farm_number();
         break;
 	}
 	SERIAL_ECHOLN('}');	
@@ -4208,47 +4106,45 @@ void prusa_statistics(int _message, uint8_t _fil_nr) {
 
 static void prusa_stat_printerstatus(int _status)
 {
-	SERIAL_ECHO("[PRN:");
+	SERIAL_ECHOPGM("[PRN:");
 	SERIAL_ECHO(_status);
 	SERIAL_ECHO(']');
 }
 
 static void prusa_stat_farm_number() {
-	SERIAL_ECHO("[PFN:");
-	SERIAL_ECHO(farm_no);
-	SERIAL_ECHO(']');
+	SERIAL_ECHOPGM("[PFN:0]");
 }
 
 static void prusa_stat_diameter() {
-	SERIAL_ECHO("[DIA:");
+	SERIAL_ECHOPGM("[DIA:");
 	SERIAL_ECHO(eeprom_read_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM));
 	SERIAL_ECHO(']');
 }
 
 static void prusa_stat_temperatures()
 {
-	SERIAL_ECHO("[ST0:");
+	SERIAL_ECHOPGM("[ST0:");
 	SERIAL_ECHO(target_temperature[0]);
-	SERIAL_ECHO("][STB:");
+	SERIAL_ECHOPGM("][STB:");
 	SERIAL_ECHO(target_temperature_bed);
-	SERIAL_ECHO("][AT0:");
+	SERIAL_ECHOPGM("][AT0:");
 	SERIAL_ECHO(current_temperature[0]);
-	SERIAL_ECHO("][ATB:");
+	SERIAL_ECHOPGM("][ATB:");
 	SERIAL_ECHO(current_temperature_bed);
 	SERIAL_ECHO(']');
 }
 
 static void prusa_stat_printinfo()
 {
-	SERIAL_ECHO("[TFU:");
+	SERIAL_ECHOPGM("[TFU:");
 	SERIAL_ECHO(total_filament_used);
-	SERIAL_ECHO("][PCD:");
+	SERIAL_ECHOPGM("][PCD:");
 	SERIAL_ECHO(itostr3(card.percentDone()));
-	SERIAL_ECHO("][FEM:");
+	SERIAL_ECHOPGM("][FEM:");
 	SERIAL_ECHO(itostr3(feedmultiply));
-	SERIAL_ECHO("][FNM:");
+	SERIAL_ECHOPGM("][FNM:");
 	SERIAL_ECHO(longFilenameOLD);
-	SERIAL_ECHO("][TIM:");
+	SERIAL_ECHOPGM("][TIM:");
 	if (starttime != 0)
 	{
 		SERIAL_ECHO(_millis() / 1000 - starttime / 1000);
@@ -4257,8 +4153,8 @@ static void prusa_stat_printinfo()
 	{
 		SERIAL_ECHO(0);
 	}
-	SERIAL_ECHO("][FWR:");
-	SERIAL_ECHO(FW_VERSION);
+	SERIAL_ECHOPGM("][FWR:");
+	SERIAL_ECHORPGM(FW_VERSION_STR_P());
 	SERIAL_ECHO(']');
      prusa_stat_diameter();
 }
@@ -4281,23 +4177,23 @@ void lcd_pick_babystep(){
     
     lcd_set_cursor(3, 2);
     
-    lcd_print("1");
+    lcd_print('1');
     
     lcd_set_cursor(3, 3);
     
-    lcd_print("2");
+    lcd_print('2');
     
     lcd_set_cursor(12, 2);
     
-    lcd_print("3");
+    lcd_print('3');
     
     lcd_set_cursor(12, 3);
     
-    lcd_print("4");
+    lcd_print('4');
     
     lcd_set_cursor(1, 2);
     
-    lcd_print(">");
+    lcd_print('>');
     
     
     enc_dif = lcd_encoder_diff;
@@ -4328,20 +4224,20 @@ void lcd_pick_babystep(){
 
                 
                 lcd_set_cursor(1, 2);
-                lcd_print(" ");
+                lcd_print(' ');
                 lcd_set_cursor(1, 3);
-                lcd_print(" ");
+                lcd_print(' ');
                 lcd_set_cursor(10, 2);
-                lcd_print(" ");
+                lcd_print(' ');
                 lcd_set_cursor(10, 3);
-                lcd_print(" ");
+                lcd_print(' ');
                 
                 if (cursor_pos < 3) {
                     lcd_set_cursor(1, cursor_pos+1);
-                    lcd_print(">");
+                    lcd_print('>');
                 }else{
                     lcd_set_cursor(10, cursor_pos-1);
-                    lcd_print(">");
+                    lcd_print('>');
                 }
                 
    
@@ -4373,7 +4269,7 @@ void lcd_move_menu_axis()
 	MENU_ITEM_SUBMENU_P(_i("Move X"), lcd_move_x);////MSG_MOVE_X
 	MENU_ITEM_SUBMENU_P(_i("Move Y"), lcd_move_y);////MSG_MOVE_Y
 	MENU_ITEM_SUBMENU_P(_i("Move Z"), lcd_move_z);////MSG_MOVE_Z
-	MENU_ITEM_SUBMENU_P(_i("Extruder"), lcd_move_e);////MSG_MOVE_E
+	MENU_ITEM_SUBMENU_P(_T(MSG_EXTRUDER), lcd_move_e);////MSG_EXTRUDER
 	MENU_END();
 }
 
@@ -4844,7 +4740,7 @@ void lcd_v2_calibration()
 	    }
 	    else
 	    {
-	        loaded = lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Is filament loaded?"), false, true);////MSG_PLA_FILAMENT_LOADED c=20 r=2
+	        loaded = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_FILAMENT_LOADED), false, true);
 	        lcd_update_enabled = true;
 
 	    }
@@ -5097,10 +4993,10 @@ void lcd_wizard(WizState state)
 			setTargetBed(PLA_PREHEAT_HPB_TEMP);
 			if (mmu_enabled)
 			{
-			    wizard_event = lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Is filament loaded?"), true);////c=20 r=2
+			    wizard_event = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_FILAMENT_LOADED), true);
 			} else
 			{
-			    wizard_event = lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Is filament loaded?"), true);////MSG_WIZARD_FILAMENT_LOADED c=20 r=2
+			    wizard_event = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_FILAMENT_LOADED), true);
 			}
 			if (wizard_event) state = S::Lay1CalCold;
 			else
@@ -5499,30 +5395,31 @@ do\
 }\
 while (0)
 
-static void lcd_nozzle_diameter_set(void)
-{
-uint16_t nDiameter;
-
-switch(oNozzleDiameter)
-     {
-     case ClNozzleDiameter::_Diameter_250:
-          oNozzleDiameter=ClNozzleDiameter::_Diameter_400;
-          nDiameter=400;
-          break;
-     case ClNozzleDiameter::_Diameter_400:
-          oNozzleDiameter=ClNozzleDiameter::_Diameter_600;
-          nDiameter=600;
-          break;
-     case ClNozzleDiameter::_Diameter_600:
-          oNozzleDiameter=ClNozzleDiameter::_Diameter_250;
-          nDiameter=250;
-          break;
-     default:
-          oNozzleDiameter=ClNozzleDiameter::_Diameter_400;
-          nDiameter=400;
-     }
-eeprom_update_byte((uint8_t*)EEPROM_NOZZLE_DIAMETER,(uint8_t)oNozzleDiameter);
-eeprom_update_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM,nDiameter);
+static void lcd_nozzle_diameter_cycle(void) {
+    uint16_t nDiameter;
+    switch(oNozzleDiameter){
+    case ClNozzleDiameter::_Diameter_250:
+        oNozzleDiameter=ClNozzleDiameter::_Diameter_400;
+        nDiameter=400;
+        break;
+    case ClNozzleDiameter::_Diameter_400:
+        oNozzleDiameter=ClNozzleDiameter::_Diameter_600;
+        nDiameter=600;
+        break;
+    case ClNozzleDiameter::_Diameter_600:
+        oNozzleDiameter=ClNozzleDiameter::_Diameter_800;
+        nDiameter=800;
+        break;
+    case ClNozzleDiameter::_Diameter_800:
+        oNozzleDiameter=ClNozzleDiameter::_Diameter_250;
+        nDiameter=250;
+        break;
+    default:
+        oNozzleDiameter=ClNozzleDiameter::_Diameter_400;
+        nDiameter=400;
+    }
+    eeprom_update_byte((uint8_t*)EEPROM_NOZZLE_DIAMETER,(uint8_t)oNozzleDiameter);
+    eeprom_update_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM,nDiameter);
 }
 
 #define SETTINGS_NOZZLE \
@@ -5534,9 +5431,10 @@ do\
         case ClNozzleDiameter::_Diameter_250: fNozzleDiam = 0.25f; break;\
         case ClNozzleDiameter::_Diameter_400: fNozzleDiam = 0.4f; break;\
         case ClNozzleDiameter::_Diameter_600: fNozzleDiam = 0.6f; break;\
+        case ClNozzleDiameter::_Diameter_800: fNozzleDiam = 0.8f; break;\
         default: fNozzleDiam = 0.4f; break;\
     }\
-    MENU_ITEM_TOGGLE(_T(MSG_NOZZLE_DIAMETER), ftostr12ns(fNozzleDiam), lcd_nozzle_diameter_set);\
+    MENU_ITEM_TOGGLE(_T(MSG_NOZZLE_DIAMETER), ftostr12ns(fNozzleDiam), lcd_nozzle_diameter_cycle);\
 }\
 while (0)
 
@@ -5716,7 +5614,7 @@ static void select_sheet_menu()
 static void sheets_menu()
 {
     MENU_BEGIN();
-    MENU_ITEM_BACK_P(_i("HW Setup"));
+    MENU_ITEM_BACK_P(_T(MSG_HW_SETUP));
     MENU_ITEM_SUBMENU_E(EEPROM_Sheets_base->s[0], select_sheet_menu<0>);
     MENU_ITEM_SUBMENU_E(EEPROM_Sheets_base->s[1], select_sheet_menu<1>);
     MENU_ITEM_SUBMENU_E(EEPROM_Sheets_base->s[2], select_sheet_menu<2>);
@@ -5730,10 +5628,30 @@ static void sheets_menu()
 
 void lcd_hw_setup_menu(void)                      // can not be "static"
 {
+    typedef struct
+    {// 2bytes total
+        int8_t status;
+        uint8_t experimental_menu_visibility;
+    } _menu_data_t;
+    static_assert(sizeof(menu_data)>= sizeof(_menu_data_t),"_menu_data_t doesn't fit into menu_data");
+    _menu_data_t* _md = (_menu_data_t*)&(menu_data[0]);
+
+    if (_md->status == 0 || lcd_draw_update)
+    {
+        _md->status = 1;
+        _md->experimental_menu_visibility = eeprom_read_byte((uint8_t *)EEPROM_EXPERIMENTAL_VISIBILITY);
+        if (_md->experimental_menu_visibility == EEPROM_EMPTY_VALUE)
+        {
+            _md->experimental_menu_visibility = 0;
+            eeprom_update_byte((uint8_t *)EEPROM_EXPERIMENTAL_VISIBILITY, _md->experimental_menu_visibility);
+        }
+    }
+
+
     MENU_BEGIN();
     MENU_ITEM_BACK_P(_T(bSettings?MSG_SETTINGS:MSG_BACK)); // i.e. default menu-item / menu-item after checking mismatch
 
-    MENU_ITEM_SUBMENU_P(_i("Steel sheets"), sheets_menu); ////MSG_STEEL_SHEETS c=18
+    MENU_ITEM_SUBMENU_P(_T(MSG_STEEL_SHEETS), sheets_menu);
     SETTINGS_NOZZLE;
     MENU_ITEM_SUBMENU_P(_i("Checks"), lcd_checking_menu);
 
@@ -5743,6 +5661,21 @@ void lcd_hw_setup_menu(void)                      // can not be "static"
     //! @todo Don't forget to remove this as soon Fsensor Detection works with mmu
     if(!mmu_enabled) MENU_ITEM_FUNCTION_P(PSTR("Fsensor Detection"), lcd_detect_IRsensor);
 #endif //IR_SENSOR_ANALOG
+
+    if (_md->experimental_menu_visibility)
+    {
+        MENU_ITEM_SUBMENU_P(PSTR("Experimental"), lcd_experimental_menu);////MSG_MENU_EXPERIMENTAL c=18
+    }
+
+#ifdef PINDA_TEMP_COMP
+	//! The SuperPINDA is detected when the PINDA temp is below its defined limit.
+	//! This works well on the EINSY board but not on the miniRAMBo board as
+	//! as a disconnected SuperPINDA will show higher temps compared to an EINSY board.
+	//! 
+	//! This menu allows the user to en-/disable the SuperPINDA manualy
+	MENU_ITEM_TOGGLE_P(_N("SuperPINDA"), eeprom_read_byte((uint8_t *)EEPROM_PINDA_TEMP_COMPENSATION) ? _T(MSG_YES) : _T(MSG_NO), lcd_pinda_temp_compensation_toggle);
+#endif //PINDA_TEMP_COMP
+
     MENU_END();
 }
 
@@ -5764,19 +5697,19 @@ static void lcd_settings_menu()
 
 	SETTINGS_CUTTER;
 
-	MENU_ITEM_TOGGLE_P(_i("Fans check"), fans_check_enabled ? _T(MSG_ON) : _T(MSG_OFF), lcd_set_fan_check);
+	MENU_ITEM_TOGGLE_P(_T(MSG_FANS_CHECK), fans_check_enabled ? _T(MSG_ON) : _T(MSG_OFF), lcd_set_fan_check);
 
 	SETTINGS_SILENT_MODE;
 
     if(!farm_mode)
     {
         bSettings=true;                              // flag ('fake parameter') for 'lcd_hw_setup_menu()' function
-        MENU_ITEM_SUBMENU_P(_i("HW Setup"), lcd_hw_setup_menu);////MSG_HW_SETUP
+        MENU_ITEM_SUBMENU_P(_T(MSG_HW_SETUP), lcd_hw_setup_menu);
     }
     
 	SETTINGS_MMU_MODE;
 
-	MENU_ITEM_SUBMENU_P(_i("Mesh bed leveling"), lcd_mesh_bed_leveling_settings);////MSG_MBL_SETTINGS c=18 r=1
+	MENU_ITEM_SUBMENU_P(_T(MSG_MESH_BED_LEVELING), lcd_mesh_bed_leveling_settings);
 
 #if defined (TMC2130) && defined (LINEARITY_CORRECTION)
     MENU_ITEM_SUBMENU_P(_i("Lin. correction"), lcd_settings_linearity_correction_menu);
@@ -5809,7 +5742,6 @@ static void lcd_settings_menu()
 
 	if (farm_mode)
 	{
-		MENU_ITEM_SUBMENU_P(PSTR("Farm number"), lcd_farm_no);
 		MENU_ITEM_FUNCTION_P(PSTR("Disable farm mode"), lcd_disable_farm_mode);
 	}
 
@@ -5872,7 +5804,7 @@ static void lcd_calibration_menu()
 	//MENU_ITEM_FUNCTION_P(_i("Calibrate E"), lcd_calibrate_extruder);////MSG_CALIBRATE_E c=20 r=1
 #endif
     // "Mesh Bed Leveling"
-    MENU_ITEM_SUBMENU_P(_i("Mesh Bed Leveling"), lcd_mesh_bedleveling);////MSG_MESH_BED_LEVELING
+    MENU_ITEM_SUBMENU_P(_T(MSG_MESH_BED_LEVELING), lcd_mesh_bedleveling);
 	
 #endif //MK1BP
 
@@ -5902,11 +5834,9 @@ void bowden_menu() {
 	int enc_dif = lcd_encoder_diff;
 	int cursor_pos = 0;
 	lcd_clear();
-	lcd_set_cursor(0, 0);
-	lcd_print(">");
+	lcd_putc_at(0, 0, '>');
 	for (uint_least8_t i = 0; i < 4; i++) {
-		lcd_set_cursor(1, i);
-		lcd_print("Extruder ");
+		lcd_puts_at_P(1, i, PSTR("Extruder "));
 		lcd_print(i);
 		lcd_print(": ");
 		EEPROM_read_B(EEPROM_BOWDEN_LENGTH + i * 2, &bowden_length[i]);
@@ -5940,16 +5870,8 @@ void bowden_menu() {
 					Sound_MakeSound(e_SOUND_TYPE_BlindAlert);
 				}
 
-				lcd_set_cursor(0, 0);
-				lcd_print(" ");
-				lcd_set_cursor(0, 1);
-				lcd_print(" ");
-				lcd_set_cursor(0, 2);
-				lcd_print(" ");
-				lcd_set_cursor(0, 3);
-				lcd_print(" ");
-				lcd_set_cursor(0, cursor_pos);
-				lcd_print(">");
+				lcd_puts_at_P(0, 0, PSTR(" \n \n \n "));
+				lcd_putc_at(0, cursor_pos, '>');
 				Sound_MakeSound(e_SOUND_TYPE_EncoderMove);
 				enc_dif = lcd_encoder_diff;
 				_delay(100);
@@ -5963,8 +5885,7 @@ void bowden_menu() {
 				manage_heater();
 				manage_inactivity(true);
 
-				lcd_set_cursor(1, 1);
-				lcd_print("Extruder ");
+				lcd_puts_at_P(1, 1, PSTR("Extruder "));
 				lcd_print(cursor_pos);
 				lcd_print(": ");
 				lcd_set_cursor(13, 1);
@@ -5993,11 +5914,9 @@ void bowden_menu() {
 						lcd_update_enable(true);
 						lcd_clear();
 						enc_dif = lcd_encoder_diff;
-						lcd_set_cursor(0, cursor_pos);
-						lcd_print(">");
+						lcd_putc_at(0, cursor_pos, '>');
 						for (uint_least8_t i = 0; i < 4; i++) {
-							lcd_set_cursor(1, i);
-							lcd_print("Extruder ");
+							lcd_puts_at_P(1, i, PSTR("Extruder "));
 							lcd_print(i);
 							lcd_print(": ");
 							EEPROM_read_B(EEPROM_BOWDEN_LENGTH + i * 2, &bowden_length[i]);
@@ -6017,8 +5936,8 @@ void bowden_menu() {
 
 static char snmm_stop_print_menu() { //menu for choosing which filaments will be unloaded in stop print
 	lcd_clear();
-	lcd_puts_at_P(0,0,_T(MSG_UNLOAD_FILAMENT)); lcd_print(":");
-	lcd_set_cursor(0, 1); lcd_print(">");
+	lcd_puts_at_P(0,0,_T(MSG_UNLOAD_FILAMENT)); lcd_print(':');
+	lcd_set_cursor(0, 1); lcd_print('>');
 	lcd_puts_at_P(1,2,_i("Used during print"));////MSG_USED c=19 r=1
 	lcd_puts_at_P(1,3,_i("Current"));////MSG_CURRENT c=19 r=1
 	char cursor_pos = 1;
@@ -6042,14 +5961,9 @@ static char snmm_stop_print_menu() { //menu for choosing which filaments will be
 					Sound_MakeSound(e_SOUND_TYPE_BlindAlert);
 				}	
 
-				lcd_set_cursor(0, 1);
-				lcd_print(" ");
-				lcd_set_cursor(0, 2);
-				lcd_print(" ");
-				lcd_set_cursor(0, 3);
-				lcd_print(" ");
+				lcd_puts_at_P(0, 1, PSTR(" \n \n "));
 				lcd_set_cursor(0, cursor_pos);
-				lcd_print(">");
+				lcd_print('>');
 				enc_dif = lcd_encoder_diff;
 				Sound_MakeSound(e_SOUND_TYPE_EncoderMove);
 				_delay(100);
@@ -6152,14 +6066,8 @@ uint8_t choose_menu_P(const char *header, const char *item, const char *last_ite
 
         if (last_item&&last_visible) lcd_puts_at_P(1, 3, last_item);
 
-        lcd_set_cursor(0, 1);
-        lcd_print(" ");
-        lcd_set_cursor(0, 2);
-        lcd_print(" ");
-        lcd_set_cursor(0, 3);
-        lcd_print(" ");
-        lcd_set_cursor(0, cursor_pos);
-        lcd_print(">");
+        lcd_puts_at_P(0, 1, PSTR(" \n \n "));
+        lcd_putc_at(0, cursor_pos, '>');
         _delay(100);
 
 		if (lcd_clicked())
@@ -6173,34 +6081,31 @@ uint8_t choose_menu_P(const char *header, const char *item, const char *last_ite
 }
 
 char reset_menu() {
+    const uint8_t items_no =
 #ifdef SNMM
-	int items_no = 5;
+        5;
 #else
-	int items_no = 4;
+        4;
 #endif
-	static int first = 0;
-	int enc_dif = 0;
+    static int8_t first = 0;
+    int8_t enc_dif = 0;
 	char cursor_pos = 0;
-	const char *item [items_no];
-	
-	item[0] = "Language";
-	item[1] = "Statistics";
-	item[2] = "Shipping prep";
-	item[3] = "All Data";
-#ifdef SNMM
-	item[4] = "Bowden length";
-#endif // SNMM
 
+    const char *const item[items_no] PROGMEM = {PSTR("Language"), PSTR("Statistics"), PSTR("Shipping prep"), PSTR("All Data")
+#ifdef SNMM
+    , PSTR("Bowden length")
+#endif
+    };
+	
 	enc_dif = lcd_encoder_diff;
 	lcd_clear();
 	lcd_set_cursor(0, 0);
-	lcd_print(">");
+    lcd_putc('>');
 	lcd_consume_click();
 	while (1) {		
 
 		for (uint_least8_t i = 0; i < 4; i++) {
-			lcd_set_cursor(1, i);
-			lcd_print(item[first + i]);
+			lcd_puts_at_P(1, i, item[first + i]);
 		}
 
 		manage_heater();
@@ -6234,16 +6139,9 @@ char reset_menu() {
 						lcd_clear();
 					}
 				}
-				lcd_set_cursor(0, 0);
-				lcd_print(" ");
-				lcd_set_cursor(0, 1);
-				lcd_print(" ");
-				lcd_set_cursor(0, 2);
-				lcd_print(" ");
-				lcd_set_cursor(0, 3);
-				lcd_print(" ");
+				lcd_puts_at_P(0, 0, PSTR(" \n \n \n "));
 				lcd_set_cursor(0, cursor_pos);
-				lcd_print(">");
+				lcd_putc('>');
 				Sound_MakeSound(e_SOUND_TYPE_EncoderMove);
 				enc_dif = lcd_encoder_diff;
 				_delay(100);
@@ -6441,74 +6339,6 @@ void unload_filament()
 
 }
 
-static void lcd_farm_no()
-{
-	char step = 0;
-	int enc_dif = 0;
-	int _farmno = farm_no;
-	int _ret = 0;
-	lcd_clear();
-
-	lcd_set_cursor(0, 0);
-	lcd_print("Farm no");
-
-	do
-	{
-
-		if (abs((enc_dif - lcd_encoder_diff)) > 2) {
-			if (enc_dif > lcd_encoder_diff) {
-				switch (step) {
-				case(0): if (_farmno >= 100) _farmno -= 100; break;
-				case(1): if (_farmno % 100 >= 10) _farmno -= 10; break;
-				case(2): if (_farmno % 10 >= 1) _farmno--; break;
-				default: break;
-				}
-			}
-
-			if (enc_dif < lcd_encoder_diff) {
-				switch (step) {
-				case(0): if (_farmno < 900) _farmno += 100; break;
-				case(1): if (_farmno % 100 < 90) _farmno += 10; break;
-				case(2): if (_farmno % 10 <= 8)_farmno++; break;
-				default: break;
-				}
-			}
-			enc_dif = 0;
-			lcd_encoder_diff = 0;
-		}
-
-		lcd_set_cursor(0, 2);
-		if (_farmno < 100) lcd_print("0");
-		if (_farmno < 10) lcd_print("0");
-		lcd_print(_farmno);
-		lcd_print("  ");
-		lcd_set_cursor(0, 3);
-		lcd_print("   ");
-
-
-		lcd_set_cursor(step, 3);
-		lcd_print("^");
-		_delay(100);
-
-		if (lcd_clicked())
-		{
-			_delay(200);
-			step++;
-			if(step == 3) {
-				_ret = 1;
-				farm_no = _farmno;
-				EEPROM_save_B(EEPROM_FARM_NUMBER, &farm_no);
-				prusa_statistics(20);
-				lcd_return_to_status();
-			}
-		}
-
-		manage_heater();
-	} while (_ret == 0);
-
-}
-
-
 unsigned char lcd_choose_color() {
 	//function returns index of currently chosen item
 	//following part can be modified from 2 to 255 items:
@@ -6524,8 +6354,7 @@ unsigned char lcd_choose_color() {
 	unsigned char cursor_pos = 1;
 	enc_dif = lcd_encoder_diff;
 	lcd_clear();
-	lcd_set_cursor(0, 1);
-	lcd_print(">");
+	lcd_putc_at(0, 1, '>');
 
 	active_rows = items_no < 3 ? items_no : 3;
 	lcd_consume_click();
@@ -6566,14 +6395,10 @@ unsigned char lcd_choose_color() {
 						lcd_clear();
 					}
 				}
-				lcd_set_cursor(0, 1);
-				lcd_print(" ");
-				lcd_set_cursor(0, 2);
-				lcd_print(" ");
-				lcd_set_cursor(0, 3);
-				lcd_print(" ");
-				lcd_set_cursor(0, cursor_pos);
-				lcd_print(">");
+				lcd_putc_at(0, 1, ' ');
+				lcd_putc_at(0, 2, ' ');
+				lcd_putc_at(0, 3, ' ');
+				lcd_putc_at(0, cursor_pos, '>');
 				Sound_MakeSound(e_SOUND_TYPE_EncoderMove);
 				enc_dif = lcd_encoder_diff;
 				_delay(100);
@@ -6593,85 +6418,6 @@ unsigned char lcd_choose_color() {
 
 }
 
-void lcd_confirm_print()
-{
-	uint8_t filament_type;
-	int enc_dif = 0;
-	int cursor_pos = 1;
-	int _ret = 0;
-	int _t = 0;
-
-	enc_dif = lcd_encoder_diff;
-	lcd_clear();
-
-	lcd_set_cursor(0, 0);
-	lcd_print("Print ok ?");
-
-	do
-	{
-		if (abs(enc_dif - lcd_encoder_diff) > 12) {
-			if (enc_dif > lcd_encoder_diff) {
-				cursor_pos--;
-			}
-
-			if (enc_dif < lcd_encoder_diff) {
-				cursor_pos++;
-			}
-			enc_dif = lcd_encoder_diff;
-		}
-
-		if (cursor_pos > 2) { cursor_pos = 2; }
-		if (cursor_pos < 1) { cursor_pos = 1; }
-
-		lcd_set_cursor(0, 2); lcd_print("          ");
-		lcd_set_cursor(0, 3); lcd_print("          ");
-		lcd_set_cursor(2, 2);
-		lcd_puts_P(_T(MSG_YES));
-		lcd_set_cursor(2, 3);
-		lcd_puts_P(_T(MSG_NO));
-		lcd_set_cursor(0, 1 + cursor_pos);
-		lcd_print(">");
-		_delay(100);
-
-		_t = _t + 1;
-		if (_t>100)
-		{
-			prusa_statistics(99);
-			_t = 0;
-		}
-		if (lcd_clicked())
-		{
-               filament_type = FARM_FILAMENT_COLOR_NONE;
-			if (cursor_pos == 1)
-			{
-				_ret = 1;
-//				filament_type = lcd_choose_color();
-				prusa_statistics(4, filament_type);
-				no_response = true; //we need confirmation by recieving PRUSA thx
-				important_status = 4;
-				saved_filament_type = filament_type;
-				NcTime = _millis();
-			}
-			if (cursor_pos == 2)
-			{
-				_ret = 2;
-//				filament_type = lcd_choose_color();
-				prusa_statistics(5, filament_type);
-				no_response = true; //we need confirmation by recieving PRUSA thx
-				important_status = 5;				
-				saved_filament_type = filament_type;
-				NcTime = _millis();
-			}
-		}
-
-		manage_heater();
-		manage_inactivity();
-		proc_commands();
-
-	} while (_ret == 0);
-
-}
-
 #include "w25x20cl.h"
 
 #ifdef LCD_TEST
@@ -6731,6 +6477,7 @@ void lcd_resume_print()
     lcd_return_to_status();
     lcd_reset_alert_level(); //for fan speed error
     if (fan_error_selftest()) return; //abort if error persists
+    cmdqueue_serial_disabled = false;
 
     lcd_setstatuspgm(_T(MSG_FINISHING_MOVEMENTS));
     st_synchronize();
@@ -6823,7 +6570,7 @@ static void activate_calibrate_sheet()
 static void lcd_sheet_menu()
 {
     MENU_BEGIN();
-    MENU_ITEM_BACK_P(_i("Steel sheets")); ////MSG_STEEL_SHEETS c=18
+    MENU_ITEM_BACK_P(_T(MSG_STEEL_SHEETS));
 
 	if(eeprom_is_sheet_initialized(selected_sheet)){
 	    MENU_ITEM_SUBMENU_P(_i("Select"), change_sheet); //// c=18
@@ -6834,7 +6581,7 @@ static void lcd_sheet_menu()
         MENU_ITEM_SUBMENU_P(_T(MSG_V2_CALIBRATION), activate_calibrate_sheet);////MSG_V2_CALIBRATION c=18
     }
     MENU_ITEM_SUBMENU_P(_i("Rename"), lcd_rename_sheet_menu); //// c=18
-	MENU_ITEM_FUNCTION_P(_i("Reset"), lcd_reset_sheet); //// c=18
+	MENU_ITEM_FUNCTION_P(_T(MSG_RESET), lcd_reset_sheet); ////MSG_RESET c=14
 
     MENU_END();
 }
@@ -6866,6 +6613,8 @@ static void lcd_main_menu()
 	MENU_ITEM_SUBMENU_P(_T(MSG_BABYSTEP_Z), lcd_babystep_z);//8
   }
 
+  if (farm_mode)
+     MENU_ITEM_FUNCTION_P(_T(MSG_FILAMENTCHANGE), lcd_colorprint_change);//8
 
   if ( moves_planned() || IS_SD_PRINTING || is_usb_printing || (lcd_commands_type == LcdCommands::Layer1Cal))
   {
@@ -6880,9 +6629,9 @@ static void lcd_main_menu()
   {
 #ifdef FANCHECK
       if((fan_check_error == EFCE_FIXED) || (fan_check_error == EFCE_OK))
-          MENU_ITEM_SUBMENU_P(_i("Resume print"), lcd_resume_print);////MSG_RESUME_PRINT
+          MENU_ITEM_SUBMENU_P(_T(MSG_RESUME_PRINT), lcd_resume_print);////MSG_RESUME_PRINT c=18
 #else
-      MENU_ITEM_SUBMENU_P(_i("Resume print"), lcd_resume_print);////MSG_RESUME_PRINT
+      MENU_ITEM_SUBMENU_P(_T(MSG_RESUME_PRINT), lcd_resume_print);////MSG_RESUME_PRINT c=18
 #endif
   }
 
@@ -6900,9 +6649,9 @@ static void lcd_main_menu()
 			{
 				#ifdef FANCHECK
 					if((fan_check_error == EFCE_FIXED) || (fan_check_error == EFCE_OK))
-						MENU_ITEM_SUBMENU_P(_i("Resume print"), lcd_resume_print);////MSG_RESUME_PRINT
+						MENU_ITEM_SUBMENU_P(_T(MSG_RESUME_PRINT), lcd_resume_print);////MSG_RESUME_PRINT c=18
 				#else
-					MENU_ITEM_SUBMENU_P(_i("Resume print"), lcd_resume_print);////MSG_RESUME_PRINT
+					MENU_ITEM_SUBMENU_P(_T(MSG_RESUME_PRINT), lcd_resume_print);////MSG_RESUME_PRINT c=18
 				#endif
 
 			}
@@ -6951,14 +6700,7 @@ static void lcd_main_menu()
   }
 
 
-  if (IS_SD_PRINTING || is_usb_printing || (lcd_commands_type == LcdCommands::Layer1Cal))
-  {
-	  if (farm_mode)
-	  {
-		  MENU_ITEM_SUBMENU_P(PSTR("Farm number"), lcd_farm_no);
-	  }
-  } 
-  else 
+  if ( ! ( IS_SD_PRINTING || is_usb_printing || (lcd_commands_type == LcdCommands::Layer1Cal) ) )
   {
 	if (mmu_enabled)
 	{
@@ -6967,9 +6709,9 @@ static void lcd_main_menu()
 //-//          MENU_ITEM_FUNCTION_P(_T(MSG_UNLOAD_FILAMENT), extr_unload);
 //bFilamentFirstRun=true;
           MENU_ITEM_SUBMENU_P(_T(MSG_UNLOAD_FILAMENT), mmu_unload_filament);
-		MENU_ITEM_SUBMENU_P(_i("Eject filament"), mmu_fil_eject_menu);
+		MENU_ITEM_SUBMENU_P(_T(MSG_EJECT_FILAMENT), mmu_fil_eject_menu);
 #ifdef  MMU_HAS_CUTTER
-        MENU_ITEM_SUBMENU_P(_i("Cut filament"), mmu_cut_filament_menu);
+        MENU_ITEM_SUBMENU_P(_T(MSG_CUT_FILAMENT), mmu_cut_filament_menu);
 #endif //MMU_HAS_CUTTER
 	}
 	else
@@ -7149,7 +6891,8 @@ static void lcd_tune_menu()
 	MENU_ITEM_EDIT_advance_K();//7
 #endif
 #ifdef FILAMENTCHANGEENABLE
-	MENU_ITEM_FUNCTION_P(_T(MSG_FILAMENTCHANGE), lcd_colorprint_change);//8
+    if (!farm_mode)
+        MENU_ITEM_FUNCTION_P(_T(MSG_FILAMENTCHANGE), lcd_colorprint_change);//8
 #endif
 
 #ifdef FILAMENT_SENSOR
@@ -7177,7 +6920,7 @@ static void lcd_tune_menu()
 
      if(farm_mode)
      {
-       MENU_ITEM_TOGGLE_P(_i("Fans check"), fans_check_enabled ? _T(MSG_ON) : _T(MSG_OFF), lcd_set_fan_check);
+       MENU_ITEM_TOGGLE_P(_T(MSG_FANS_CHECK), fans_check_enabled ? _T(MSG_ON) : _T(MSG_OFF), lcd_set_fan_check);
      }
 
 #ifdef TMC2130
@@ -7343,6 +7086,7 @@ void lcd_print_stop()
     if (!card.sdprinting) {
         SERIAL_ECHOLNRPGM(MSG_OCTOPRINT_CANCEL);   // for Octoprint
     }
+    cmdqueue_serial_disabled = false; //for when canceling a print with a fancheck
 
     CRITICAL_SECTION_START;
 
@@ -7402,20 +7146,16 @@ void lcd_print_stop()
 void lcd_sdcard_stop()
 {
 
-	lcd_set_cursor(0, 0);
-	lcd_puts_P(_T(MSG_STOP_PRINT));
-	lcd_set_cursor(2, 2);
-	lcd_puts_P(_T(MSG_NO));
-	lcd_set_cursor(2, 3);
-	lcd_puts_P(_T(MSG_YES));
-	lcd_set_cursor(0, 2); lcd_print(" ");
-	lcd_set_cursor(0, 3); lcd_print(" ");
+	lcd_puts_at_P(0, 0, _T(MSG_STOP_PRINT));
+	lcd_puts_at_P(2, 2, _T(MSG_NO));
+	lcd_puts_at_P(2, 3, _T(MSG_YES));
+	lcd_putc_at(0, 2, ' ');
+	lcd_putc_at(0, 3, ' ');
 
 	if ((int32_t)lcd_encoder > 2) { lcd_encoder = 2; }
 	if ((int32_t)lcd_encoder < 1) { lcd_encoder = 1; }
 	
-	lcd_set_cursor(0, 1 + lcd_encoder);
-	lcd_print(">");
+	lcd_putc_at(0, 1 + lcd_encoder, '>');
 
 	if (lcd_clicked())
 	{
@@ -7501,7 +7241,7 @@ void lcd_belttest()
     
     uint16_t   X = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_X));
     uint16_t   Y = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_Y));
-	lcd_printf_P(_i("Checking X axis  ")); // share message with selftest
+	lcd_printf_P(_T(MSG_CHECKING_X));
 	lcd_set_cursor(0,1), lcd_printf_P(PSTR("X: %u -> ..."),X);
     KEEPALIVE_STATE(IN_HANDLER);
     
@@ -7510,7 +7250,7 @@ void lcd_belttest()
     if (lcd_selfcheck_axis_sg(X_AXIS)){
 		X = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_X));
 		lcd_set_cursor(10,1), lcd_printf_P(PSTR("%u"),X); // Show new X value next to old one.
-        lcd_puts_at_P(0,2,_i("Checking Y axis  "));
+        lcd_puts_at_P(0,2,_T(MSG_CHECKING_Y));
 		lcd_set_cursor(0,3), lcd_printf_P(PSTR("Y: %u -> ..."),Y);
 		if (lcd_selfcheck_axis_sg(Y_AXIS))
 		{
@@ -7573,7 +7313,7 @@ static void lcd_detect_IRsensor(){
         lcd_show_fullscreen_message_and_wait_P(_i("Please unload the filament first, then repeat this action."));
         return;
     } else {
-        lcd_show_fullscreen_message_and_wait_P(_i("Please check the IR sensor connections and filament is unloaded."));
+        lcd_show_fullscreen_message_and_wait_P(_i("Please check the IR sensor connection, unload filament if present."));
         bAction = lcd_selftest_IRsensor(true);
     }
     if(bAction){
@@ -7613,7 +7353,7 @@ bool lcd_selftest()
 #endif //IR_SENSOR_ANALOG
 	lcd_wait_for_cool_down();
 	lcd_clear();
-	lcd_set_cursor(0, 0); lcd_puts_P(_i("Self test start  "));////MSG_SELFTEST_START c=20
+	lcd_puts_at_P(0, 0, _i("Self test start  "));////MSG_SELFTEST_START c=20
 	#ifdef TMC2130
 	  FORCE_HIGH_POWER_START;
 	#endif // TMC2130
@@ -8287,106 +8027,79 @@ static void lcd_selftest_error(TestError testError, const char *_error_1, const
 
 	lcd_clear();
 
-	lcd_set_cursor(0, 0);
-	lcd_puts_P(_i("Selftest error !"));////MSG_SELFTEST_ERROR
-	lcd_set_cursor(0, 1);
-	lcd_puts_P(_i("Please check :"));////MSG_SELFTEST_PLEASECHECK
+	lcd_puts_at_P(0, 0, _i("Selftest error !"));////MSG_SELFTEST_ERROR
+	lcd_puts_at_P(0, 1, _i("Please check :"));////MSG_SELFTEST_PLEASECHECK
 
 	switch (testError)
 	{
 	case TestError::Heater:
-		lcd_set_cursor(0, 2);
-		lcd_puts_P(_i("Heater/Thermistor"));////MSG_SELFTEST_HEATERTHERMISTOR
-		lcd_set_cursor(0, 3);
-		lcd_puts_P(_i("Not connected"));////MSG_SELFTEST_NOTCONNECTED
+		lcd_puts_at_P(0, 2, _i("Heater/Thermistor"));////MSG_SELFTEST_HEATERTHERMISTOR
+		lcd_puts_at_P(0, 3, _i("Not connected"));////MSG_SELFTEST_NOTCONNECTED
 		break;
 	case TestError::Bed:
-		lcd_set_cursor(0, 2);
-		lcd_puts_P(_i("Bed / Heater"));////MSG_SELFTEST_BEDHEATER
-		lcd_set_cursor(0, 3);
-		lcd_puts_P(_T(MSG_SELFTEST_WIRINGERROR));
+		lcd_puts_at_P(0, 2, _i("Bed / Heater"));////MSG_SELFTEST_BEDHEATER
+		lcd_puts_at_P(0, 3, _T(MSG_SELFTEST_WIRINGERROR));
 		break;
 	case TestError::Endstops:
-		lcd_set_cursor(0, 2);
-		lcd_puts_P(_i("Endstops"));////MSG_SELFTEST_ENDSTOPS
-		lcd_set_cursor(0, 3);
-		lcd_puts_P(_T(MSG_SELFTEST_WIRINGERROR));
+		lcd_puts_at_P(0, 2, _i("Endstops"));////MSG_SELFTEST_ENDSTOPS
+		lcd_puts_at_P(0, 3, _T(MSG_SELFTEST_WIRINGERROR));
 		lcd_set_cursor(17, 3);
 		lcd_print(_error_1);
 		break;
 	case TestError::Motor:
-		lcd_set_cursor(0, 2);
-		lcd_puts_P(_T(MSG_SELFTEST_MOTOR));
+		lcd_puts_at_P(0, 2, _T(MSG_SELFTEST_MOTOR));
 		lcd_set_cursor(18, 2);
 		lcd_print(_error_1);
-		lcd_set_cursor(0, 3);
-		lcd_puts_P(_i("Endstop"));////MSG_SELFTEST_ENDSTOP
+		lcd_puts_at_P(0, 3, _i("Endstop"));////MSG_SELFTEST_ENDSTOP
 		lcd_set_cursor(18, 3);
 		lcd_print(_error_2);
 		break;
 	case TestError::Endstop:
-		lcd_set_cursor(0, 2);
-		lcd_puts_P(_i("Endstop not hit"));////MSG_SELFTEST_ENDSTOP_NOTHIT c=20
-		lcd_set_cursor(0, 3);
-		lcd_puts_P(_T(MSG_SELFTEST_MOTOR));
+		lcd_puts_at_P(0, 2, _i("Endstop not hit"));////MSG_SELFTEST_ENDSTOP_NOTHIT c=20
+		lcd_puts_at_P(0, 3, _T(MSG_SELFTEST_MOTOR));
 		lcd_set_cursor(18, 3);
 		lcd_print(_error_1);
 		break;
 	case TestError::PrintFan:
-		lcd_set_cursor(0, 2);
-		lcd_puts_P(_T(MSG_SELFTEST_COOLING_FAN));
-		lcd_set_cursor(0, 3);
-		lcd_puts_P(_T(MSG_SELFTEST_WIRINGERROR));
+		lcd_puts_at_P(0, 2, _T(MSG_SELFTEST_COOLING_FAN));
+		lcd_puts_at_P(0, 3, _T(MSG_SELFTEST_WIRINGERROR));
 		lcd_set_cursor(18, 3);
 		lcd_print(_error_1);
 		break;
 	case TestError::ExtruderFan:
-		lcd_set_cursor(0, 2);
-		lcd_puts_P(_T(MSG_SELFTEST_EXTRUDER_FAN));
-		lcd_set_cursor(0, 3);
-		lcd_puts_P(_T(MSG_SELFTEST_WIRINGERROR));
+		lcd_puts_at_P(0, 2, _T(MSG_SELFTEST_EXTRUDER_FAN));
+		lcd_puts_at_P(0, 3, _T(MSG_SELFTEST_WIRINGERROR));
 		lcd_set_cursor(18, 3);
 		lcd_print(_error_1);
 		break;
 	case TestError::Pulley:
-		lcd_set_cursor(0, 2);
-		lcd_puts_P(_i("Loose pulley"));////MSG_LOOSE_PULLEY c=20 r=1
-		lcd_set_cursor(0, 3);
-		lcd_puts_P(_T(MSG_SELFTEST_MOTOR));
+		lcd_puts_at_P(0, 2, _i("Loose pulley"));////MSG_LOOSE_PULLEY c=20 r=1
+		lcd_puts_at_P(0, 3, _T(MSG_SELFTEST_MOTOR));
 		lcd_set_cursor(18, 3);
 		lcd_print(_error_1);
 		break;
 	case TestError::Axis:
-		lcd_set_cursor(0, 2);
-		lcd_puts_P(_i("Axis length"));////MSG_SELFTEST_AXIS_LENGTH
-		lcd_set_cursor(0, 3);
-		lcd_puts_P(_i("Axis"));////MSG_SELFTEST_AXIS
+		lcd_puts_at_P(0, 2, _i("Axis length"));////MSG_SELFTEST_AXIS_LENGTH
+		lcd_puts_at_P(0, 3, _i("Axis"));////MSG_SELFTEST_AXIS
 		lcd_set_cursor(18, 3);
 		lcd_print(_error_1);
 		break;
 	case TestError::SwappedFan:
-		lcd_set_cursor(0, 2);
-		lcd_puts_P(_i("Front/left fans"));////MSG_SELFTEST_FANS
-		lcd_set_cursor(0, 3);
-		lcd_puts_P(_i("Swapped"));////MSG_SELFTEST_SWAPPED
+		lcd_puts_at_P(0, 2, _i("Front/left fans"));////MSG_SELFTEST_FANS
+		lcd_puts_at_P(0, 3, _i("Swapped"));////MSG_SELFTEST_SWAPPED
 		lcd_set_cursor(18, 3);
 		lcd_print(_error_1);
 		break;
 	case TestError::WiringFsensor:
-		lcd_set_cursor(0, 2);
-		lcd_puts_P(_T(MSG_SELFTEST_FILAMENT_SENSOR));
-		lcd_set_cursor(0, 3);
-		lcd_puts_P(_T(MSG_SELFTEST_WIRINGERROR));
+		lcd_puts_at_P(0, 2, _T(MSG_SELFTEST_FILAMENT_SENSOR));
+		lcd_puts_at_P(0, 3, _T(MSG_SELFTEST_WIRINGERROR));
 		break;
 	case TestError::TriggeringFsensor:
-          lcd_set_cursor(0, 2);
-          lcd_puts_P(_T(MSG_SELFTEST_FILAMENT_SENSOR));
-          lcd_set_cursor(0, 3);
-          lcd_puts_P(_i("False triggering"));////c=20
+          lcd_puts_at_P(0, 2, _T(MSG_SELFTEST_FILAMENT_SENSOR));
+          lcd_puts_at_P(0, 3, _i("False triggering"));////c=20
           break;
 	case TestError::FsensorLevel:
-          lcd_set_cursor(0, 2);
-          lcd_puts_P(_T(MSG_SELFTEST_FILAMENT_SENSOR));
+          lcd_puts_at_P(0, 2, _T(MSG_SELFTEST_FILAMENT_SENSOR));
           lcd_set_cursor(0, 3);
           lcd_printf_P(_i("%s level expected"),_error_1);////c=20
           break;
@@ -8465,7 +8178,7 @@ static bool selftest_irsensor()
         mmu_load_step(false);
         while (blocks_queued())
         {
-            if (PIN_GET(IR_SENSOR_PIN) == 0)
+            if (READ(IR_SENSOR_PIN) == 0)
             {
                 lcd_selftest_error(TestError::TriggeringFsensor, "", "");
                 return false;
@@ -8495,22 +8208,18 @@ static bool lcd_selftest_manual_fan_check(int _fan, bool check_opposite,
 	bool _result = check_opposite;
 	lcd_clear();
 
-	lcd_set_cursor(0, 0); lcd_puts_P(_T(MSG_SELFTEST_FAN));
+	lcd_puts_at_P(0, 0, _T(MSG_SELFTEST_FAN));
 
 	switch (_fan)
 	{
 	case 0:
 		// extruder cooling fan
-		lcd_set_cursor(0, 1);
-		if(check_opposite == true) lcd_puts_P(_T(MSG_SELFTEST_COOLING_FAN)); 
-		else lcd_puts_P(_T(MSG_SELFTEST_EXTRUDER_FAN));
+		lcd_puts_at_P(0, 1, check_opposite ? _T(MSG_SELFTEST_COOLING_FAN) : _T(MSG_SELFTEST_EXTRUDER_FAN));
 		setExtruderAutoFanState(3);
 		break;
 	case 1:
 		// object cooling fan
-		lcd_set_cursor(0, 1);
-		if (check_opposite == true) lcd_puts_P(_T(MSG_SELFTEST_EXTRUDER_FAN));
-		else lcd_puts_P(_T(MSG_SELFTEST_COOLING_FAN));
+		lcd_puts_at_P(0, 1, check_opposite ? _T(MSG_SELFTEST_EXTRUDER_FAN) : _T(MSG_SELFTEST_COOLING_FAN));
 		SET_OUTPUT(FAN_PIN);
 #ifdef FAN_SOFT_PWM
 		fanSpeedSoftPwm = 255;
@@ -8522,9 +8231,9 @@ static bool lcd_selftest_manual_fan_check(int _fan, bool check_opposite,
 	}
 	_delay(500);
 
-	lcd_set_cursor(1, 2); lcd_puts_P(_T(MSG_SELFTEST_FAN_YES));
-	lcd_set_cursor(0, 3); lcd_print(">");
-	lcd_set_cursor(1, 3); lcd_puts_P(_T(MSG_SELFTEST_FAN_NO));
+	lcd_puts_at_P(1, 2, _T(MSG_SELFTEST_FAN_YES));
+	lcd_putc_at(0, 3, '>');
+	lcd_puts_at_P(1, 3, _T(MSG_SELFTEST_FAN_NO));
 
 	int8_t enc_dif = int(_default)*3;
 
@@ -8536,18 +8245,18 @@ static bool lcd_selftest_manual_fan_check(int _fan, bool check_opposite,
 		if (abs((enc_dif - lcd_encoder_diff)) > 2) {
 			if (enc_dif > lcd_encoder_diff) {
 				_result = !check_opposite;
-				lcd_set_cursor(0, 2); lcd_print(">");
-				lcd_set_cursor(1, 2); lcd_puts_P(_T(MSG_SELFTEST_FAN_YES));
-				lcd_set_cursor(0, 3); lcd_print(" ");
-				lcd_set_cursor(1, 3); lcd_puts_P(_T(MSG_SELFTEST_FAN_NO));
+				lcd_putc_at(0, 2, '>');
+				lcd_puts_at_P(1, 2, _T(MSG_SELFTEST_FAN_YES));
+				lcd_putc_at(0, 3, ' ');
+				lcd_puts_at_P(1, 3, _T(MSG_SELFTEST_FAN_NO));
 			}
 
 			if (enc_dif < lcd_encoder_diff) {
 				_result = check_opposite;
-				lcd_set_cursor(0, 2); lcd_print(" ");
-				lcd_set_cursor(1, 2); lcd_puts_P(_T(MSG_SELFTEST_FAN_YES));
-				lcd_set_cursor(0, 3); lcd_print(">");
-				lcd_set_cursor(1, 3); lcd_puts_P(_T(MSG_SELFTEST_FAN_NO));
+				lcd_putc_at(0, 2, ' ');
+				lcd_puts_at_P(1, 2, _T(MSG_SELFTEST_FAN_YES));
+				lcd_putc_at(0, 3, '>');
+				lcd_puts_at_P(1, 3, _T(MSG_SELFTEST_FAN_NO));
 			}
 			enc_dif = 0;
 			lcd_encoder_diff = 0;
@@ -8588,9 +8297,9 @@ static FanCheck lcd_selftest_fan_auto(int _fan)
 		setExtruderAutoFanState(0); //extruder fan
 		manage_heater();			//count average fan speed from 2s delay and turn off fans
 
-		printf_P(PSTR("Test 1:\n"));
-		printf_P(PSTR("Print fan speed: %d \n"), fan_speed[1]);
-		printf_P(PSTR("Extr fan speed: %d \n"), fan_speed[0]);
+		puts_P(PSTR("Test 1:"));
+		printf_P(PSTR("Print fan speed: %d\n"), fan_speed[1]);
+		printf_P(PSTR("Extr fan speed: %d\n"), fan_speed[0]);
 
 		if (fan_speed[0] < 20) { // < 1200 RPM would mean either a faulty Noctua or Altfan
 			return FanCheck::ExtruderFan;
@@ -8614,11 +8323,9 @@ static FanCheck lcd_selftest_fan_auto(int _fan)
 #endif //FAN_SOFT_PWM
 		for (uint8_t i = 0; i < 5; i++) {
 			delay_keep_alive(1000);
-			lcd_set_cursor(18, 3);
-			lcd_print("-");
+			lcd_putc_at(18, 3, '-');
 			delay_keep_alive(1000);
-			lcd_set_cursor(18, 3);
-			lcd_print("|");
+			lcd_putc_at(18, 3, '|');
 		}
 		fanSpeed = 0;
 
@@ -8628,9 +8335,9 @@ static FanCheck lcd_selftest_fan_auto(int _fan)
 		manage_heater();			//turn off fan
 		manage_inactivity(true);	//to turn off print fan
 #endif //FAN_SOFT_PWM
-		printf_P(PSTR("Test 2:\n"));
-		printf_P(PSTR("Print fan speed: %d \n"), fan_speed[1]);
-		printf_P(PSTR("Extr fan speed: %d \n"), fan_speed[0]);
+		puts_P(PSTR("Test 2:"));
+		printf_P(PSTR("Print fan speed: %d\n"), fan_speed[1]);
+		printf_P(PSTR("Extr fan speed: %d\n"), fan_speed[0]);
 		if (!fan_speed[1]) {
 			return FanCheck::PrintFan;
 		}
@@ -8641,11 +8348,9 @@ static FanCheck lcd_selftest_fan_auto(int _fan)
 
 		for (uint8_t i = 0; i < 5; i++) {
 			delay_keep_alive(1000);
-			lcd_set_cursor(18, 3);
-			lcd_print("-");
+			lcd_putc_at(18, 3, '-');
 			delay_keep_alive(1000);
-			lcd_set_cursor(18, 3);
-			lcd_print("|");
+			lcd_putc_at(18, 3, '|');
 		}
 		fanSpeed = 0;
 
@@ -8683,8 +8388,8 @@ static int lcd_selftest_screen(TestScreen screen, int _progress, int _progress_s
 	if (screen == TestScreen::PrintFan) lcd_puts_P(_T(MSG_SELFTEST_FAN));
 	if (screen == TestScreen::FansOk) lcd_puts_P(_T(MSG_SELFTEST_FAN));
 	if (screen == TestScreen::EndStops) lcd_puts_P(_i("Checking endstops"));////MSG_SELFTEST_CHECK_ENDSTOPS c=20
-	if (screen == TestScreen::AxisX) lcd_puts_P(_i("Checking X axis  "));////MSG_SELFTEST_CHECK_X c=20
-	if (screen == TestScreen::AxisY) lcd_puts_P(_i("Checking Y axis  "));////MSG_SELFTEST_CHECK_Y c=20
+	if (screen == TestScreen::AxisX) lcd_puts_P(_T(MSG_CHECKING_X));
+	if (screen == TestScreen::AxisY) lcd_puts_P(_T(MSG_CHECKING_Y));
 	if (screen == TestScreen::AxisZ) lcd_puts_P(_i("Checking Z axis  "));////MSG_SELFTEST_CHECK_Z c=20
 	if (screen == TestScreen::Bed) lcd_puts_P(_T(MSG_SELFTEST_CHECK_BED));
 	if (screen == TestScreen::Hotend
@@ -8695,8 +8400,7 @@ static int lcd_selftest_screen(TestScreen screen, int _progress, int _progress_s
 	if (screen == TestScreen::Failed) lcd_puts_P(_T(MSG_SELFTEST_FAILED));
 	if (screen == TestScreen::Home) lcd_puts_P(_i("Calibrating home"));////c=20 r=1
 
-	lcd_set_cursor(0, 1);
-	lcd_puts_P(separator);
+	lcd_puts_at_P(0, 1, separator);
 	if ((screen >= TestScreen::ExtruderFan) && (screen <= TestScreen::FansOk))
 	{
 		//SERIAL_ECHOLNPGM("Fan test");
@@ -8719,19 +8423,19 @@ static int lcd_selftest_screen(TestScreen screen, int _progress, int _progress_s
 		//SERIAL_ECHOLNPGM("Other tests");
 
 		TestScreen _step_block = TestScreen::AxisX;
-		lcd_selftest_screen_step(2, 2, ((screen == _step_block) ? 1 : (screen < _step_block) ? 0 : 2), "X", _indicator);
+		lcd_selftest_screen_step(2, 2, ((screen == _step_block) ? 1 : (screen < _step_block) ? 0 : 2), PSTR("X"), _indicator);
 
 		_step_block = TestScreen::AxisY;
-		lcd_selftest_screen_step(2, 8, ((screen == _step_block) ? 1 : (screen < _step_block) ? 0 : 2), "Y", _indicator);
+		lcd_selftest_screen_step(2, 8, ((screen == _step_block) ? 1 : (screen < _step_block) ? 0 : 2), PSTR("Y"), _indicator);
 
 		_step_block = TestScreen::AxisZ;
-		lcd_selftest_screen_step(2, 14, ((screen == _step_block) ? 1 : (screen < _step_block) ? 0 : 2), "Z", _indicator);
+		lcd_selftest_screen_step(2, 14, ((screen == _step_block) ? 1 : (screen < _step_block) ? 0 : 2), PSTR("Z"), _indicator);
 
 		_step_block = TestScreen::Bed;
-		lcd_selftest_screen_step(3, 0, ((screen == _step_block) ? 1 : (screen < _step_block) ? 0 : 2), "Bed", _indicator);
+		lcd_selftest_screen_step(3, 0, ((screen == _step_block) ? 1 : (screen < _step_block) ? 0 : 2), PSTR("Bed"), _indicator);
 
 		_step_block = TestScreen::Hotend;
-		lcd_selftest_screen_step(3, 9, ((screen == _step_block) ? 1 : (screen < _step_block) ? 0 : 2), "Hotend", _indicator);
+		lcd_selftest_screen_step(3, 9, ((screen == _step_block) ? 1 : (screen < _step_block) ? 0 : 2), PSTR("Hotend"), _indicator);
 	}
 
 	if (_delay > 0) delay_keep_alive(_delay);
@@ -8740,28 +8444,26 @@ static int lcd_selftest_screen(TestScreen screen, int _progress, int _progress_s
 	return (_progress >= _progress_scale * 2) ? 0 : _progress;
 }
 
-static void lcd_selftest_screen_step(int _row, int _col, int _state, const char *_name, const char *_indicator)
+static void lcd_selftest_screen_step(int _row, int _col, int _state, const char *_name_PROGMEM, const char *_indicator)
 {
 	lcd_set_cursor(_col, _row);
+    uint8_t strlenNameP = strlen_P(_name_PROGMEM);
 
 	switch (_state)
 	{
 	case 1:
-		lcd_print(_name);
-		lcd_set_cursor(_col + strlen(_name), _row);
-		lcd_print(":");
-		lcd_set_cursor(_col + strlen(_name) + 1, _row);
+		lcd_puts_P(_name_PROGMEM);
+		lcd_putc_at(_col + strlenNameP, _row, ':');
+		lcd_set_cursor(_col + strlenNameP + 1, _row);
 		lcd_print(_indicator);
 		break;
 	case 2:
-		lcd_print(_name);
-		lcd_set_cursor(_col + strlen(_name), _row);
-		lcd_print(":");
-		lcd_set_cursor(_col + strlen(_name) + 1, _row);
-		lcd_print("OK");
+		lcd_puts_P(_name_PROGMEM);
+		lcd_putc_at(_col + strlenNameP, _row, ':');
+		lcd_puts_at_P(_col + strlenNameP + 1, _row, PSTR("OK"));
 		break;
 	default:
-		lcd_print(_name);
+		lcd_puts_P(_name_PROGMEM);
 	}
 }
 
@@ -8772,26 +8474,42 @@ static void lcd_selftest_screen_step(int _row, int _col, int _state, const char
 
 static bool check_file(const char* filename) {
 	if (farm_mode) return true;
-	bool result = false;
-	uint32_t filesize;
 	card.openFile((char*)filename, true);
-	filesize = card.getFileSize();
+	bool result = false;
+	const uint32_t filesize = card.getFileSize();
+	uint32_t startPos = 0;
+	const uint16_t bytesToCheck = min(END_FILE_SECTION, filesize);
+	uint8_t blocksPrinted = 0;
 	if (filesize > END_FILE_SECTION) {
-		card.setIndex(filesize - END_FILE_SECTION);
-		
+		startPos = filesize - END_FILE_SECTION;
+		card.setIndex(startPos);
 	}
-	
-		while (!card.eof() && !result) {
+	cmdqueue_reset();
+	cmdqueue_serial_disabled = true;
+
+	lcd_clear();
+	lcd_puts_at_P(0, 1, _i("Checking file"));////c=20 r=1
+	lcd_set_cursor(0, 2);
+	while (!card.eof() && !result) {
+		for (; blocksPrinted < (((card.get_sdpos() - startPos) * LCD_WIDTH) / bytesToCheck); blocksPrinted++)
+			lcd_print('\xFF'); //simple progress bar
+
 		card.sdprinting = true;
 		get_command();
 		result = check_commands();
-		
 	}
+
+	for (; blocksPrinted < LCD_WIDTH; blocksPrinted++)
+		lcd_print('\xFF'); //simple progress bar
+	_delay(100); //for the user to see the end of the progress bar.
+
+	
+	cmdqueue_serial_disabled = false;
 	card.printingHasFinished();
+
 	strncpy_P(lcd_status_message, _T(WELCOME_MSG), LCD_WIDTH);
 	lcd_finishstatus();
 	return result;
-	
 }
 
 static void menu_action_sdfile(const char* filename)
@@ -8959,6 +8677,7 @@ void lcd_ignore_click(bool b)
 }
 
 void lcd_finishstatus() {
+  SERIAL_PROTOCOLLNRPGM(MSG_LCD_STATUS_CHANGED);
   int len = strlen(lcd_status_message);
   if (len > 0) {
     while (len < LCD_WIDTH) {
@@ -9225,3 +8944,17 @@ void lcd_experimental_menu()
 
     MENU_END();
 }
+
+#ifdef PINDA_TEMP_COMP
+void lcd_pinda_temp_compensation_toggle()
+{
+	uint8_t pinda_temp_compensation = eeprom_read_byte((uint8_t*)EEPROM_PINDA_TEMP_COMPENSATION);
+	if (pinda_temp_compensation == EEPROM_EMPTY_VALUE) // On MK2.5/S the EEPROM_EMPTY_VALUE will be set to 0 during eeprom_init.
+		pinda_temp_compensation = 1;                   // But for MK3/S it should be 1 so SuperPINDA is "active"
+	else
+		pinda_temp_compensation = !pinda_temp_compensation;
+	eeprom_update_byte((uint8_t*)EEPROM_PINDA_TEMP_COMPENSATION, pinda_temp_compensation);
+	SERIAL_ECHOLNPGM("SuperPINDA:");
+	SERIAL_ECHOLN(pinda_temp_compensation);
+}
+#endif //PINDA_TEMP_COMP

+ 5 - 2
Firmware/ultralcd.h

@@ -47,7 +47,6 @@ void lcd_pause_print();
 void lcd_resume_print();
 void lcd_print_stop();
 void prusa_statistics(int _message, uint8_t _col_nr = 0);
-void lcd_confirm_print();
 unsigned char lcd_choose_color();
 void lcd_load_filament_color_check();
 //void lcd_mylang();
@@ -127,7 +126,6 @@ extern CustomMsg custom_message_type;
 extern unsigned int custom_message_state;
 
 extern uint8_t farm_mode;
-extern int farm_no;
 extern int farm_timer;
 extern uint8_t farm_status;
 
@@ -207,6 +205,7 @@ void lcd_farm_sdcard_menu_w();
 
 void lcd_wait_for_heater();
 void lcd_wait_for_cool_down();
+void lcd_move_e(); // NOT static due to usage in Marlin_main
 void lcd_extr_cal_reset();
 
 void lcd_temp_cal_show_result(bool result);
@@ -262,4 +261,8 @@ void lcd_wizard(WizState state);
 extern void lcd_experimental_toggle();
 extern void lcd_experimental_menu();
 
+#ifdef PINDA_TEMP_COMP
+extern void lcd_pinda_temp_compensation_toggle();
+#endif //PINDA_TEMP_COMP
+
 #endif //ULTRALCD_H

+ 4 - 4
Firmware/util.cpp

@@ -428,13 +428,13 @@ switch(oCheckModel)
      {
      case ClCheckModel::_Warn:
 //          lcd_show_fullscreen_message_and_wait_P(_i("Printer model differs from the G-code. Continue?"));
-lcd_display_message_fullscreen_P(_i("G-code sliced for a different printer type. Continue?"));
+lcd_display_message_fullscreen_P(_T(MSG_GCODE_DIFF_PRINTER_CONTINUE));
 lcd_wait_for_click_delay(MSG_PRINT_CHECKING_FAILED_TIMEOUT);
 //???custom_message_type=CUSTOM_MSG_TYPE_STATUS; // display / status-line recovery
 lcd_update_enable(true);           // display / status-line recovery
           break;
      case ClCheckModel::_Strict:
-          lcd_show_fullscreen_message_and_wait_P(_i("G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."));
+          lcd_show_fullscreen_message_and_wait_P(_T(MSG_GCODE_DIFF_PRINTER_CANCELLED));
           lcd_print_stop();
           break;
      case ClCheckModel::_None:
@@ -577,13 +577,13 @@ switch(oCheckModel)
      {
      case ClCheckModel::_Warn:
 //          lcd_show_fullscreen_message_and_wait_P(_i("Printer model differs from the G-code. Continue?"));
-lcd_display_message_fullscreen_P(_i("G-code sliced for a different printer type. Continue?"));
+lcd_display_message_fullscreen_P(_T(MSG_GCODE_DIFF_PRINTER_CONTINUE));
 lcd_wait_for_click_delay(MSG_PRINT_CHECKING_FAILED_TIMEOUT);
 //???custom_message_type=CUSTOM_MSG_TYPE_STATUS; // display / status-line recovery
 lcd_update_enable(true);           // display / status-line recovery
           break;
      case ClCheckModel::_Strict:
-          lcd_show_fullscreen_message_and_wait_P(_i("G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."));
+          lcd_show_fullscreen_message_and_wait_P(_T(MSG_GCODE_DIFF_PRINTER_CANCELLED));
           lcd_print_stop();
           break;
      case ClCheckModel::_None:

+ 1 - 0
Firmware/util.h

@@ -51,6 +51,7 @@ enum class ClNozzleDiameter:uint_least8_t
     _Diameter_250=25,
     _Diameter_400=40,
     _Diameter_600=60,
+    _Diameter_800=80,
     _Diameter_Undef=EEPROM_EMPTY_VALUE
 };
 

+ 4 - 0
Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h

@@ -326,6 +326,10 @@ PREHEAT SETTINGS
 #define PLA_PREHEAT_HPB_TEMP 55
 #define PLA_PREHEAT_FAN_SPEED 0
 
+#define PVB_PREHEAT_HOTEND_TEMP 215
+#define PVB_PREHEAT_HPB_TEMP 75
+#define PVB_PREHEAT_FAN_SPEED 0
+
 #define ASA_PREHEAT_HOTEND_TEMP 260
 #define ASA_PREHEAT_HPB_TEMP 105
 #define ASA_PREHEAT_FAN_SPEED 0

+ 3 - 0
Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h

@@ -323,6 +323,9 @@ PREHEAT SETTINGS
 #define PLA_PREHEAT_HOTEND_TEMP 215
 #define PLA_PREHEAT_HPB_TEMP 55
 
+#define PVB_PREHEAT_HOTEND_TEMP 215
+#define PVB_PREHEAT_HPB_TEMP 75
+
 #define ASA_PREHEAT_HOTEND_TEMP 260
 #define ASA_PREHEAT_HPB_TEMP 105
 

+ 6 - 0
Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h

@@ -175,6 +175,9 @@
 #if BED_MINTEMP_DELAY>USHRT_MAX
 #error "Check maximal allowed value @ ShortTimer (see BED_MINTEMP_DELAY definition)"
 #endif
+#define SUPERPINDA_SUPPORT
+#define PINDA_MINTEMP 30 //The miniRAMBo thermistor readings below 30°C aren't very accurate
+#define PINDA_TEMP_COMP //Used to enable SuperPINDA toggle menu/function
 
 // Maxtemps
 #if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP)
@@ -381,6 +384,9 @@
 #define PLA_PREHEAT_HOTEND_TEMP 215
 #define PLA_PREHEAT_HPB_TEMP 60
 
+#define PVB_PREHEAT_HOTEND_TEMP 215
+#define PVB_PREHEAT_HPB_TEMP 75
+
 #define ASA_PREHEAT_HOTEND_TEMP 260
 #define ASA_PREHEAT_HPB_TEMP 105
 

+ 6 - 0
Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h

@@ -176,6 +176,9 @@
 #if BED_MINTEMP_DELAY>USHRT_MAX
 #error "Check maximal allowed value @ ShortTimer (see BED_MINTEMP_DELAY definition)"
 #endif
+#define SUPERPINDA_SUPPORT
+#define PINDA_MINTEMP 30 //The miniRAMBo thermistor readings below 30°C aren't very accurate
+#define PINDA_TEMP_COMP //Used to enable SuperPINDA toggle menu/function
 
 // Maxtemps
 #if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP)
@@ -382,6 +385,9 @@
 #define PLA_PREHEAT_HOTEND_TEMP 215
 #define PLA_PREHEAT_HPB_TEMP 60
 
+#define PVB_PREHEAT_HOTEND_TEMP 215
+#define PVB_PREHEAT_HPB_TEMP 75
+
 #define ASA_PREHEAT_HOTEND_TEMP 260
 #define ASA_PREHEAT_HPB_TEMP 105
 

+ 6 - 0
Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h

@@ -175,6 +175,9 @@
 #if BED_MINTEMP_DELAY>USHRT_MAX
 #error "Check maximal allowed value @ ShortTimer (see BED_MINTEMP_DELAY definition)"
 #endif
+#define SUPERPINDA_SUPPORT
+#define PINDA_MINTEMP 30 //The miniRAMBo thermistor readings below 30°C aren't very accurate
+#define PINDA_TEMP_COMP //Used to enable SuperPINDA toggle menu/function
 
 // Maxtemps
 #if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP)
@@ -381,6 +384,9 @@
 #define PLA_PREHEAT_HOTEND_TEMP 215
 #define PLA_PREHEAT_HPB_TEMP 60
 
+#define PVB_PREHEAT_HOTEND_TEMP 215
+#define PVB_PREHEAT_HPB_TEMP 75
+
 #define ASA_PREHEAT_HOTEND_TEMP 260
 #define ASA_PREHEAT_HPB_TEMP 105
 

+ 6 - 0
Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h

@@ -176,6 +176,9 @@
 #if BED_MINTEMP_DELAY>USHRT_MAX
 #error "Check maximal allowed value @ ShortTimer (see BED_MINTEMP_DELAY definition)"
 #endif
+#define SUPERPINDA_SUPPORT
+#define PINDA_MINTEMP 30 //The miniRAMBo thermistor readings below 30°C aren't very accurate
+#define PINDA_TEMP_COMP //Used to enable SuperPINDA toggle menu/function
 
 // Maxtemps
 #if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP)
@@ -382,6 +385,9 @@
 #define PLA_PREHEAT_HOTEND_TEMP 215
 #define PLA_PREHEAT_HPB_TEMP 60
 
+#define PVB_PREHEAT_HOTEND_TEMP 215
+#define PVB_PREHEAT_HPB_TEMP 75
+
 #define ASA_PREHEAT_HOTEND_TEMP 260
 #define ASA_PREHEAT_HPB_TEMP 105
 

+ 7 - 3
Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h

@@ -266,9 +266,9 @@
 #define TMC2130_CURRENTS_H {16, 20, 35, 30}  // default holding currents for all axes
 #define TMC2130_CURRENTS_R {16, 20, 35, 30}  // default running currents for all axes
 #define TMC2130_CURRENTS_R_HOME {8, 10, 20, 18}  // homing running currents for all axes
-// #define TMC2130_UNLOAD_CURRENT_R 12			 // lower current for M600 to protect filament sensor - Unused
 
 #define TMC2130_STEALTH_Z
+#define TMC2130_DEDGE_STEPPING
 
 //#define TMC2130_SERVICE_CODES_M910_M918
 
@@ -294,8 +294,9 @@
 #if BED_MINTEMP_DELAY>USHRT_MAX
 #error "Check maximal allowed value @ ShortTimer (see BED_MINTEMP_DELAY definition)"
 #endif
-#define DETECT_SUPERPINDA
-#define PINDA_MINTEMP BED_MINTEMP
+#define SUPERPINDA_SUPPORT
+#define PINDA_MINTEMP 10
+//#define PINDA_TEMP_COMP //Used to enable SuperPINDA toggle menu/function
 #define AMBIENT_MINTEMP -30
 
 // Maxtemps
@@ -497,6 +498,9 @@
 #define PLA_PREHEAT_HOTEND_TEMP 215
 #define PLA_PREHEAT_HPB_TEMP 60
 
+#define PVB_PREHEAT_HOTEND_TEMP 215
+#define PVB_PREHEAT_HPB_TEMP 75
+
 #define ASA_PREHEAT_HOTEND_TEMP 260
 #define ASA_PREHEAT_HPB_TEMP 105
 

+ 7 - 3
Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h

@@ -268,9 +268,9 @@
 #define TMC2130_CURRENTS_H {16, 20, 35, 30}  // default holding currents for all axes
 #define TMC2130_CURRENTS_R {16, 20, 35, 30}  // default running currents for all axes
 #define TMC2130_CURRENTS_R_HOME {8, 10, 20, 18}  // homing running currents for all axes
-// #define TMC2130_UNLOAD_CURRENT_R 12			 // lower current for M600 to protect filament sensor - Unused
 
 #define TMC2130_STEALTH_Z
+#define TMC2130_DEDGE_STEPPING
 
 //#define TMC2130_SERVICE_CODES_M910_M918
 
@@ -296,8 +296,9 @@
 #if BED_MINTEMP_DELAY>USHRT_MAX
 #error "Check maximal allowed value @ ShortTimer (see BED_MINTEMP_DELAY definition)"
 #endif
-#define DETECT_SUPERPINDA
-#define PINDA_MINTEMP BED_MINTEMP
+#define SUPERPINDA_SUPPORT
+#define PINDA_MINTEMP 10
+//#define PINDA_TEMP_COMP //Used to enable SuperPINDA toggle menu/function
 #define AMBIENT_MINTEMP -30
 
 // Maxtemps
@@ -501,6 +502,9 @@
 #define PLA_PREHEAT_HOTEND_TEMP 215
 #define PLA_PREHEAT_HPB_TEMP 60
 
+#define PVB_PREHEAT_HOTEND_TEMP 215
+#define PVB_PREHEAT_HPB_TEMP 75
+
 #define ASA_PREHEAT_HOTEND_TEMP 260
 #define ASA_PREHEAT_HPB_TEMP 105
 

+ 4 - 4
Firmware/w25x20cl.c

@@ -3,8 +3,8 @@
 #include "w25x20cl.h"
 #include <avr/io.h>
 #include <avr/pgmspace.h>
-#include "io_atmega2560.h"
 #include "spi.h"
+#include "fastio.h"
 
 #define _MFRID             0xEF
 #define _DEVID             0x11
@@ -31,8 +31,8 @@
 #define _CMD_JEDEC_ID      0x9f
 #define _CMD_RD_UID        0x4b
 
-#define _CS_LOW()  PORT(W25X20CL_PIN_CS) &= ~__MSK(W25X20CL_PIN_CS)
-#define _CS_HIGH() PORT(W25X20CL_PIN_CS) |= __MSK(W25X20CL_PIN_CS)
+#define _CS_LOW() WRITE(W25X20CL_PIN_CS, 0)
+#define _CS_HIGH() WRITE(W25X20CL_PIN_CS, 1)
 
 //#define _SPI_TX swspi_tx
 //#define _SPI_RX swspi_rx
@@ -45,8 +45,8 @@ int w25x20cl_mfrid_devid(void);
 
 int8_t w25x20cl_init(void)
 {
-	PIN_OUT(W25X20CL_PIN_CS);
 	_CS_HIGH();
+	SET_OUTPUT(W25X20CL_PIN_CS);
 	W25X20CL_SPI_ENTER();
 	if (!w25x20cl_mfrid_devid()) return 0;
 	return 1;

+ 633 - 460
Firmware/xyzcal.cpp

@@ -9,7 +9,6 @@
 #include "temperature.h"
 #include "sm4.h"
 
-
 #define XYZCAL_PINDA_HYST_MIN 20  //50um
 #define XYZCAL_PINDA_HYST_MAX 100 //250um
 #define XYZCAL_PINDA_HYST_DIF 5   //12.5um
@@ -19,6 +18,8 @@
 
 #define _PINDA ((READ(Z_MIN_PIN) != Z_MIN_ENDSTOP_INVERTING)?1:0)
 
+static const char endl[2] PROGMEM = "\n";
+
 #define DBG(args...) printf_P(args)
 //#define DBG(args...)
 #ifndef _n
@@ -30,13 +31,109 @@
 #define _Z ((int16_t)count_position[Z_AXIS])
 #define _E ((int16_t)count_position[E_AXIS])
 
-#define _PI 3.14159265F
+#define _X_ (count_position[X_AXIS])
+#define _Y_ (count_position[Y_AXIS])
+#define _Z_ (count_position[Z_AXIS])
+#define _E_ (count_position[E_AXIS])
+
+#ifndef M_PI
+const constexpr float M_PI = 3.1415926535897932384626433832795f;
+#endif
+
+const constexpr uint8_t X_PLUS = 0;
+const constexpr uint8_t X_MINUS = 1;
+const constexpr uint8_t Y_PLUS = 0;
+const constexpr uint8_t Y_MINUS = 1;
+const constexpr uint8_t Z_PLUS = 0;
+const constexpr uint8_t Z_MINUS = 1;
+
+const constexpr uint8_t X_PLUS_MASK = 0;
+const constexpr uint8_t X_MINUS_MASK = X_AXIS_MASK;
+const constexpr uint8_t Y_PLUS_MASK = 0;
+const constexpr uint8_t Y_MINUS_MASK = Y_AXIS_MASK;
+const constexpr uint8_t Z_PLUS_MASK = 0;
+const constexpr uint8_t Z_MINUS_MASK = Z_AXIS_MASK;
+
+/// Max. jerk in PrusaSlicer, 10000 = 1 mm/s
+const constexpr uint16_t MAX_DELAY = 10000;
+const constexpr float MIN_SPEED = 0.01f / (MAX_DELAY * 0.000001f);
+/// 200 = 50 mm/s
+const constexpr uint16_t Z_MIN_DELAY = 200;
+const constexpr uint16_t Z_ACCEL = 1000;
+
+/// \returns positive value always
+#define ABS(a) \
+    ({ __typeof__ (a) _a = (a); \
+    _a >= 0 ? _a : (-_a); })
+
+/// \returns maximum of the two
+#define MAX(a, b) \
+    ({ __typeof__ (a) _a = (a); \
+    __typeof__ (b) _b = (b); \
+    _a >= _b ? _a : _b; })
+
+/// \returns minimum of the two
+#define MIN(a, b) \
+    ({ __typeof__ (a) _a = (a); \
+    __typeof__ (b) _b = (b); \
+    _a <= _b ? _a : _b; })
+
+/// swap values
+#define SWAP(a, b) \
+    ({ __typeof__ (a) c = (a); \
+        a = (b); \
+        b = c; })
+
+/// Saturates value
+/// \returns min if value is less than min
+/// \returns max if value is more than min
+/// \returns value otherwise
+#define CLAMP(value, min, max) \
+    ({ __typeof__ (value) a_ = (value); \
+		__typeof__ (min) min_ = (min); \
+		__typeof__ (max) max_ = (max); \
+        ( a_ < min_ ? min_ : (a_ <= max_ ? a_ : max_)); })
+
+/// \returns square of the value
+#define SQR(a) \
+    ({ __typeof__ (a) a_ = (a); \
+        (a_ * a_); })
+
+/// position types
+typedef int16_t pos_i16_t;
+typedef long pos_i32_t;
+typedef float pos_mm_t;
+typedef int16_t usteps_t;
 
 uint8_t check_pinda_0();
 uint8_t check_pinda_1();
 void xyzcal_update_pos(uint16_t dx, uint16_t dy, uint16_t dz, uint16_t de);
 uint16_t xyzcal_calc_delay(uint16_t nd, uint16_t dd);
 
+uint8_t round_to_u8(float f){
+	return (uint8_t)(f + .5f);
+}
+
+uint16_t round_to_u16(float f){
+	return (uint16_t)(f + .5f);
+}
+
+int16_t round_to_i16(float f){
+	return (int16_t)(f + .5f);
+}
+
+/// converts millimeters to integer position
+pos_i16_t mm_2_pos(pos_mm_t mm){
+	return (pos_i16_t)(0.5f + mm * 100);
+}
+
+/// converts integer position to millimeters
+pos_mm_t pos_2_mm(pos_i16_t pos){
+	return pos * 0.01f;
+}
+pos_mm_t pos_2_mm(float pos){
+	return pos * 0.01f;
+}
 
 void xyzcal_meassure_enter(void)
 {
@@ -142,6 +239,10 @@ uint16_t xyzcal_calc_delay(uint16_t, uint16_t)
 }
 #endif //SM4_ACCEL_TEST
 
+/// Moves printer to absolute position [x,y,z] defined in integer position system
+/// check_pinda == 0: ordinary move
+/// check_pinda == 1: stop when PINDA triggered
+/// check_pinda == -1: stop when PINDA untriggered
 bool xyzcal_lineXYZ_to(int16_t x, int16_t y, int16_t z, uint16_t delay_us, int8_t check_pinda)
 {
 //	DBG(_n("xyzcal_lineXYZ_to x=%d y=%d z=%d  check=%d\n"), x, y, z, check_pinda);
@@ -152,17 +253,21 @@ bool xyzcal_lineXYZ_to(int16_t x, int16_t y, int16_t z, uint16_t delay_us, int8_
 	sm4_set_dir_bits(xyzcal_dm);
 	sm4_stop_cb = check_pinda?((check_pinda<0)?check_pinda_0:check_pinda_1):0;
 	xyzcal_sm4_delay = delay_us;
-//	uint32_t u = _micros();
-	bool ret = sm4_line_xyze_ui(abs(x), abs(y), abs(z), 0)?true:false;
-//	u = _micros() - u;
+	//	uint32_t u = _micros();
+	bool ret = sm4_line_xyz_ui(abs(x), abs(y), abs(z)) ? true : false;
+	//	u = _micros() - u;
 	return ret;
 }
 
+/// Moves printer to absolute position [x,y,z] defined in millimeters
+bool xyzcal_lineXYZ_to_float(pos_mm_t x, pos_mm_t y, pos_mm_t z, uint16_t delay_us, int8_t check_pinda){
+	return xyzcal_lineXYZ_to(mm_2_pos(x), mm_2_pos(y), mm_2_pos(z), delay_us, check_pinda);
+}
+
 bool xyzcal_spiral2(int16_t cx, int16_t cy, int16_t z0, int16_t dz, int16_t radius, int16_t rotation, uint16_t delay_us, int8_t check_pinda, uint16_t* pad)
 {
 	bool ret = false;
 	float r = 0; //radius
-	uint8_t n = 0; //point number
 	uint16_t ad = 0; //angle [deg]
 	float ar; //angle [rad]
 	uint8_t dad = 0; //delta angle [deg]
@@ -171,7 +276,14 @@ bool xyzcal_spiral2(int16_t cx, int16_t cy, int16_t z0, int16_t dz, int16_t radi
 	uint8_t k = 720 / (dad_max - dad_min); //delta calculation constant
 	ad = 0;
 	if (pad) ad = *pad % 720;
+	
+    //@size=214
 	DBG(_n("xyzcal_spiral2 cx=%d cy=%d z0=%d dz=%d radius=%d ad=%d\n"), cx, cy, z0, dz, radius, ad);
+	// lcd_set_cursor(0, 4);
+	// char text[10];
+	// snprintf(text, 10, "%4d", z0);
+	// lcd_print(text);
+
 	for (; ad < 720; ad++)
 	{
 		if (radius > 0)
@@ -184,11 +296,9 @@ bool xyzcal_spiral2(int16_t cx, int16_t cy, int16_t z0, int16_t dz, int16_t radi
 			dad = dad_max - ((719 - ad) / k);
 			r = (float)(((uint32_t)(719 - ad)) * (-radius)) / 720;
 		}
-		ar = (ad + rotation)* (float)_PI / 180;
-		float _cos = cos(ar);
-		float _sin = sin(ar);
-		int x = (int)(cx + (_cos * r));
-		int y = (int)(cy + (_sin * r));
+		ar = radians(ad + rotation);
+		int x = (int)(cx + (cos(ar) * r));
+		int y = (int)(cy + (sin(ar) * r));
 		int z = (int)(z0 - ((float)((int32_t)dz * ad) / 720));
 		if (xyzcal_lineXYZ_to(x, y, z, delay_us, check_pinda))
 		{
@@ -196,10 +306,13 @@ bool xyzcal_spiral2(int16_t cx, int16_t cy, int16_t z0, int16_t dz, int16_t radi
 			ret = true;
 			break;
 		}
-		n++;
 		ad += dad;
 	}
 	if (pad) *pad = ad;
+	// if(ret){
+	// 	lcd_set_cursor(0, 4);
+	// 	lcd_print("         ");
+	// }
 	return ret;
 }
 
@@ -208,6 +321,7 @@ bool xyzcal_spiral8(int16_t cx, int16_t cy, int16_t z0, int16_t dz, int16_t radi
 	bool ret = false;
 	uint16_t ad = 0;
 	if (pad) ad = *pad;
+    //@size=274
 	DBG(_n("xyzcal_spiral8 cx=%d cy=%d z0=%d dz=%d radius=%d ad=%d\n"), cx, cy, z0, dz, radius, ad);
 	if (!ret && (ad < 720))
 		if ((ret = xyzcal_spiral2(cx, cy, z0 - 0*dz, dz, radius, 0, delay_us, check_pinda, &ad)) != 0)
@@ -275,540 +389,599 @@ int8_t xyzcal_meassure_pinda_hysterezis(int16_t min_z, int16_t max_z, uint16_t d
 }
 #endif //XYZCAL_MEASSURE_PINDA_HYSTEREZIS
 
+void print_hysteresis(int16_t min_z, int16_t max_z, int16_t step){
+	int16_t delay_us = 600;
+	int16_t trigger = 0;
+	int16_t untrigger = 0;
+	DBG(_n("Hysteresis\n"));
 
-void xyzcal_scan_pixels_32x32(int16_t cx, int16_t cy, int16_t min_z, int16_t max_z, uint16_t delay_us, uint8_t* pixels)
-{
-	DBG(_n("xyzcal_scan_pixels_32x32 cx=%d cy=%d min_z=%d max_z=%d\n"), cx, cy, min_z, max_z);
-//	xyzcal_lineXYZ_to(cx - 1024, cy - 1024, max_z, 2*delay_us, 0);
-//	xyzcal_lineXYZ_to(cx, cy, max_z, delay_us, 0);
-	int16_t z = (int16_t)count_position[2];
-	xyzcal_lineXYZ_to(cx, cy, z, 2*delay_us, 0);
-	for (uint8_t r = 0; r < 32; r++)
-	{
-//		int8_t _pinda = _PINDA;
-		xyzcal_lineXYZ_to((r&1)?(cx+1024):(cx-1024), cy - 1024 + r*64, z, 2*delay_us, 0);
+	xyzcal_lineXYZ_to(_X, _Y, min_z, delay_us, 0);
+
+	for (int16_t z = min_z; z <= max_z; z += step){
+		xyzcal_lineXYZ_to(_X, _Y, z, delay_us, -1);
+		untrigger = _Z;
+		xyzcal_lineXYZ_to(_X, _Y, z, delay_us, 0);
 		xyzcal_lineXYZ_to(_X, _Y, min_z, delay_us, 1);
-		xyzcal_lineXYZ_to(_X, _Y, max_z, delay_us, -1);
-		z = (int16_t)count_position[2];
-		sm4_set_dir(X_AXIS, (r&1)?1:0);
-		for (uint8_t c = 0; c < 32; c++)
-		{
-			uint16_t sum = 0;
-			int16_t z_sum = 0;
-			for (uint8_t i = 0; i < 64; i++)
-			{
-				int8_t pinda = _PINDA;
-				int16_t pix = z - min_z;
-				pix += (pinda)?23:-24;
-				if (pix < 0) pix = 0;
-				if (pix > 255) pix = 255;
-				sum += pix;
-				z_sum += z;
-//				if (_pinda != pinda)
-//				{
-//					if (pinda)
-//						DBG(_n("!1 x=%d z=%d\n"), c*64+i, z+23);
-//					else
-//						DBG(_n("!0 x=%d z=%d\n"), c*64+i, z-24);
-//				}
-				sm4_set_dir(Z_AXIS, !pinda);
-				if (!pinda)
-				{
-					if (z > min_z)
-					{
-						sm4_do_step(Z_AXIS_MASK);
-						z--;
-					}
-				}
-				else
-				{
-					if (z < max_z)
-					{
-						sm4_do_step(Z_AXIS_MASK);
-						z++;
-					}
-				}
-				sm4_do_step(X_AXIS_MASK);
-				delayMicroseconds(600);
-//				_pinda = pinda;
-			}
-			sum >>= 6; //div 64
-			if (z_sum < 0)
-			{
-				z_sum = -z_sum;
-				z_sum >>= 6; //div 64
-				z_sum = -z_sum;
-			}
-			else
-				z_sum >>= 6; //div 64
-			if (pixels) pixels[((uint16_t)r<<5) + ((r&1)?(31-c):c)] = sum;
-//			DBG(_n("c=%d r=%d l=%d z=%d\n"), c, r, sum, z_sum);
-			count_position[0] += (r&1)?-64:64;
-			count_position[2] = z;
-		}
-		if (pixels)
-			for (uint8_t c = 0; c < 32; c++)
-				DBG(_n("%02x"), pixels[((uint16_t)r<<5) + c]);
-		DBG(_n("\n"));
+		trigger = _Z;
+		//xyzcal_lineXYZ_to(_X, _Y, min_z, delay_us, 0);
+
+        //@size=114
+		DBG(_n("min, trigger, untrigger, max: [%d %d %d %d]\n"), _Z, trigger, untrigger, z);
 	}
-//	xyzcal_lineXYZ_to(cx, cy, z, 2*delay_us, 0);
 }
 
-void xyzcal_histo_pixels_32x32(uint8_t* pixels, uint16_t* histo)
-{
-	for (uint8_t l = 0; l < 16; l++)
-		histo[l] = 0;
-	for (uint8_t r = 0; r < 32; r++)
-		for (uint8_t c = 0; c < 32; c++)
-		{
-			uint8_t pix = pixels[((uint16_t)r<<5) + c];
-			histo[pix >> 4]++;
-		}
-	for (uint8_t l = 0; l < 16; l++)
-		DBG(_n(" %2d %d\n"), l, histo[l]);
+void update_position_1_step(uint8_t axis, uint8_t dir){
+	if (axis & X_AXIS_MASK)
+		_X_ += dir & X_AXIS_MASK ? -1 : 1;
+	if (axis & Y_AXIS_MASK)
+		_Y_ += dir & Y_AXIS_MASK ? -1 : 1;
+	if (axis & Z_AXIS_MASK)
+		_Z_ += dir & Z_AXIS_MASK ? -1 : 1;
 }
 
-void xyzcal_adjust_pixels(uint8_t* pixels, uint16_t* histo)
-{
-	uint8_t l;
-	uint16_t max_c = histo[1];
-	uint8_t max_l = 1;
-	for (l = 1; l < 16; l++)
-	{
-		uint16_t c = histo[l];
-		if (c > max_c)
-		{
-			max_c = c;
-			max_l = l;
-		}
+void set_axes_dir(uint8_t axes, uint8_t dir){
+	if (axes & X_AXIS_MASK)
+		sm4_set_dir(X_AXIS, dir & X_AXIS_MASK);
+	if (axes & Y_AXIS_MASK)
+		sm4_set_dir(Y_AXIS, dir & Y_AXIS_MASK);
+	if (axes & Z_AXIS_MASK)
+		sm4_set_dir(Z_AXIS, dir & Z_AXIS_MASK);
+}
+
+/// Accelerate up to max.speed (defined by @min_delay_us)
+/// does not update global positions
+void accelerate_1_step(uint8_t axes, int16_t acc, uint16_t &delay_us, uint16_t min_delay_us){
+	sm4_do_step(axes);
+
+	/// keep max speed (avoid extra computation)
+	if (acc > 0 && delay_us == min_delay_us){
+		delayMicroseconds(delay_us);
+		return;
 	}
-	DBG(_n("max_c=%2d max_l=%d\n"), max_c, max_l);
-	for (l = 14; l > 8; l--)
-		if (histo[l] >= 10)
-			break;
-	uint8_t pix_min = 0;
-	uint8_t pix_max = l << 4;
-	if (histo[0] < (32*32 - 144))
-	{
-		pix_min = (max_l << 4) / 2;
+
+	// v1 = v0 + a * t
+	// 0.01 = length of a step
+	const float t0 = delay_us * 0.000001f;
+	const float v1 = (0.01f / t0 + acc * t0);
+	uint16_t t1;
+	if (v1 <= 0.16f){ ///< slowest speed convertible to uint16_t delay
+		t1 = MAX_DELAY; ///< already too slow so it wants to move back
+	} else {
+		/// don't exceed max.speed
+		t1 = MAX(min_delay_us, round_to_u16(0.01f / v1 * 1000000.f));
 	}
-	uint8_t pix_dif = pix_max - pix_min;
-	DBG(_n(" min=%d max=%d dif=%d\n"), pix_min, pix_max, pix_dif);
-	for (int16_t i = 0; i < 32*32; i++)
-	{
-		uint16_t pix = pixels[i];
-		if (pix > pix_min) pix -= pix_min;
-		else pix = 0;
-		pix <<= 8;
-		pix /= pix_dif;
-//		if (pix < 0) pix = 0;
-		if (pix > 255) pix = 255;
-		pixels[i] = (uint8_t)pix;
+
+	/// make sure delay has changed a bit at least
+	if (t1 == delay_us && acc != 0){
+		if (acc > 0)
+			t1--;
+		else
+			t1++;
 	}
-	for (uint8_t r = 0; r < 32; r++)
-	{
-		for (uint8_t c = 0; c < 32; c++)
-			DBG(_n("%02x"), pixels[((uint16_t)r<<5) + c]);
-		DBG(_n("\n"));
+	
+	//DBG(_n("%d "), t1);
+
+	delayMicroseconds(t1);
+	delay_us = t1;
+}
+
+/// Goes defined number of steps while accelerating
+/// updates global positions
+void accelerate(uint8_t axes, uint8_t dir, int16_t acc, uint16_t &delay_us, uint16_t min_delay_us, uint16_t steps){
+	set_axes_dir(axes, dir);
+	while (steps--){
+		accelerate_1_step(axes, acc, delay_us, min_delay_us);
+		update_position_1_step(axes, dir);
 	}
 }
 
-/*
-void xyzcal_draw_pattern_12x12_in_32x32(uint8_t* pattern, uint32_t* pixels, int w, int h, uint8_t x, uint8_t y, uint32_t and, uint32_t or)
-{
-	for (int i = 0; i < 8; i++)
-		for (int j = 0; j < 8; j++)
-		{
-			int idx = (x + j) + w * (y + i);
-			if (pattern[i] & (1 << j))
-			{
-				pixels[idx] &= and;
-				pixels[idx] |= or;
+/// keeps speed and then it decelerates to a complete stop (if possible)
+/// it goes defined number of steps
+/// returns after each step
+/// \returns true if step was done
+/// does not update global positions
+bool go_and_stop_1_step(uint8_t axes, int16_t dec, uint16_t &delay_us, uint16_t &steps){
+	if (steps <= 0 || dec <= 0)
+		return false;
+
+	/// deceleration distance in steps, s = 1/2 v^2 / a
+	uint16_t s = round_to_u16(100 * 0.5f * SQR(0.01f) / (SQR((float)delay_us) * dec));
+	if (steps > s){
+		/// go steady
+		sm4_do_step(axes);
+		delayMicroseconds(delay_us);
+	} else {
+		/// decelerate
+		accelerate_1_step(axes, -dec, delay_us, delay_us);
+	}
+	--steps;
+	return true;
+}
+
+/// \param dir sets direction of movement
+/// updates global positions
+void go_and_stop(uint8_t axes, uint8_t dir, int16_t dec, uint16_t &delay_us, uint16_t steps){
+	set_axes_dir(axes, dir);
+	while (go_and_stop_1_step(axes, dec, delay_us, steps)){
+		update_position_1_step(axes, dir);
+	}
+}
+
+/// goes all the way to stop
+/// \returns steps done
+/// updates global positions
+void stop_smoothly(uint8_t axes, uint8_t dir, int16_t dec, uint16_t &delay_us){
+	if (dec <= 0)
+		return;
+	set_axes_dir(axes, dir);
+	while (delay_us < MAX_DELAY){
+		accelerate_1_step(axes, -dec, delay_us, delay_us);
+		update_position_1_step(axes, dir);
+	}
+}
+
+void go_start_stop(uint8_t axes, uint8_t dir, int16_t acc, uint16_t min_delay_us, uint16_t steps){
+	if (steps == 0)
+		return;
+	uint16_t current_delay_us = MAX_DELAY;
+	const uint16_t half = steps / 2;
+	accelerate(axes, dir, acc, current_delay_us, min_delay_us, half);
+	go_and_stop(axes, dir, -acc, current_delay_us, steps - half);
+}
+
+/// moves X, Y, Z one after each other
+/// starts and ends at 0 speed
+void go_manhattan(int16_t x, int16_t y, int16_t z, int16_t acc, uint16_t min_delay_us){
+	int32_t length;
+
+	// DBG(_n("x %d -> %d, "), x, _X);
+	length = x - _X;
+	go_start_stop(X_AXIS_MASK, length < 0 ? X_MINUS_MASK : X_PLUS_MASK, acc, min_delay_us, ABS(length));
+
+	// DBG(_n("y %d -> %d, "), y, _Y);
+	length = y - _Y;
+	go_start_stop(Y_AXIS_MASK, length < 0 ? Y_MINUS_MASK : Y_PLUS_MASK, acc, min_delay_us, ABS(length));
+
+	// DBG(_n("z %d -> %d\n"), z, _Z);
+	length = z - _Z;
+	go_start_stop(Z_AXIS_MASK, length < 0 ? Z_MINUS_MASK : Z_PLUS_MASK, acc, min_delay_us, ABS(length));
+	// DBG(_n("\n"));
+}
+
+void xyzcal_scan_pixels_32x32_Zhop(int16_t cx, int16_t cy, int16_t min_z, int16_t max_z, uint16_t delay_us, uint8_t *pixels){
+	if (!pixels)
+		return;
+	int16_t z_trig;
+	uint16_t line_buffer[32];
+	uint16_t current_delay_us = MAX_DELAY; ///< defines current speed
+	int16_t start_z;
+	uint16_t steps_to_go;
+
+	DBG(_n("Scan countdown: "));
+
+	for (uint8_t r = 0; r < 32; r++){ ///< Y axis
+		for (uint8_t d = 0; d < 2; ++d){
+			go_manhattan((d & 1) ? (cx + 992) : (cx - 992), cy - 992 + r * 64, _Z, Z_ACCEL, Z_MIN_DELAY);
+			xyzcal_lineXYZ_to((d & 1) ? (cx + 992) : (cx - 992), cy - 992 + r * 64, _Z, delay_us, 0);
+			sm4_set_dir(X_AXIS, d);
+            //@size=242
+			DBG(_n("%d\n"), 64 - (r * 2 + d)); ///< to keep OctoPrint connection alive
+
+			for (uint8_t c = 0; c < 32; c++){ ///< X axis
+				/// move to the next point and move Z up diagonally (if needed)
+				current_delay_us = MAX_DELAY;
+				const int16_t end_x = ((d & 1) ? 1 : -1) * (64 * (16 - c) - 32) + cx;
+				const int16_t length_x = ABS(end_x - _X);
+				const int16_t half_x = length_x / 2;
+				/// don't go up if PINDA not triggered (optimization)
+				const bool up = _PINDA;
+				const uint8_t axes = up ? X_AXIS_MASK | Z_AXIS_MASK : X_AXIS_MASK;
+				const uint8_t dir = Z_PLUS_MASK | (d & 1 ? X_MINUS_MASK : X_PLUS_MASK);
+
+				accelerate(axes, dir, Z_ACCEL, current_delay_us, Z_MIN_DELAY, half_x);
+				go_and_stop(axes, dir, Z_ACCEL, current_delay_us, length_x - half_x);
+				
+				
+				z_trig = min_z;
+
+				/// move up to un-trigger (surpress hysteresis)
+				sm4_set_dir(Z_AXIS, Z_PLUS);
+				/// speed up from stop, go half the way
+				current_delay_us = MAX_DELAY;
+				for (start_z = _Z; _Z < (max_z + start_z) / 2; ++_Z_){
+					if (!_PINDA){
+						break;
+					}
+					accelerate_1_step(Z_AXIS_MASK, Z_ACCEL, current_delay_us, Z_MIN_DELAY);
+				}
+
+				if (_PINDA){
+					steps_to_go = MAX(0, max_z - _Z);
+					while (_PINDA && _Z < max_z){
+						go_and_stop_1_step(Z_AXIS_MASK, Z_ACCEL, current_delay_us, steps_to_go);
+						++_Z_;
+					}
+				}
+				stop_smoothly(Z_AXIS_MASK, Z_PLUS_MASK, Z_ACCEL, current_delay_us);
+
+				/// move down to trigger
+				sm4_set_dir(Z_AXIS, Z_MINUS);
+				/// speed up
+				current_delay_us = MAX_DELAY;
+				for (start_z = _Z; _Z > (min_z + start_z) / 2; --_Z_){
+					if (_PINDA){
+						z_trig = _Z;
+						break;
+					}
+					accelerate_1_step(Z_AXIS_MASK, Z_ACCEL, current_delay_us, Z_MIN_DELAY);
+				}
+				/// slow down
+				if (!_PINDA){
+					steps_to_go = MAX(0, _Z - min_z);
+					while (!_PINDA && _Z > min_z){
+						go_and_stop_1_step(Z_AXIS_MASK, Z_ACCEL, current_delay_us, steps_to_go);
+						--_Z_;
+					}
+					z_trig = _Z;
+				}
+				/// slow down to stop but not lower than min_z
+				while (_Z > min_z && current_delay_us < MAX_DELAY){
+					accelerate_1_step(Z_AXIS_MASK, -Z_ACCEL, current_delay_us, Z_MIN_DELAY);
+					--_Z_;
+				}
+
+				if (d == 0){
+					line_buffer[c] = (uint16_t)(z_trig - min_z);
+				} else {
+					/// !!! data reversed in X
+					// DBG(_n("%04x"), ((uint32_t)line_buffer[31 - c] + (z_trig - min_z)) / 2);
+					/// save average of both directions (filters effect of hysteresis)
+					pixels[(uint16_t)r * 32 + (31 - c)] = (uint8_t)MIN((uint32_t)255, ((uint32_t)line_buffer[31 - c] + (z_trig - min_z)) / 2);
+				}
 			}
 		}
+	}
+	DBG(endl);
 }
-*/
 
-int16_t xyzcal_match_pattern_12x12_in_32x32(uint16_t* pattern, uint8_t* pixels, uint8_t c, uint8_t r)
-{
+/// Returns rate of match
+/// max match = 132, min match = 0
+uint8_t xyzcal_match_pattern_12x12_in_32x32(uint16_t* pattern, uint8_t* pixels, uint8_t c, uint8_t r){
 	uint8_t thr = 16;
-	int16_t match = 0;
-	for (uint8_t i = 0; i < 12; i++)
-		for (uint8_t j = 0; j < 12; j++)
-		{
-			if (((i == 0) || (i == 11)) && ((j < 2) || (j >= 10))) continue; //skip corners
+	uint8_t match = 0;
+	for (uint8_t i = 0; i < 12; ++i){
+		for (uint8_t j = 0; j < 12; ++j){
+			/// skip corners (3 pixels in each)
+			if (((i == 0) || (i == 11)) && ((j < 2) || (j >= 10))) continue;
 			if (((j == 0) || (j == 11)) && ((i < 2) || (i >= 10))) continue;
-			uint16_t idx = (c + j) + 32 * (r + i);
-			uint8_t val = pixels[idx];
-			if (pattern[i] & (1 << j))
-			{
-				if (val > thr) match ++;
-				else match --;
-			}
-			else
-			{
-				if (val <= thr) match ++;
-				else match --;
-			}
+			const uint16_t idx = (c + j) + 32 * ((uint16_t)r + i);
+			const bool high_pix = pixels[idx] > thr;
+			const bool high_pat = pattern[i] & (1 << j);
+			if (high_pix == high_pat)
+				match++;
 		}
+	}
 	return match;
 }
 
-int16_t xyzcal_find_pattern_12x12_in_32x32(uint8_t* pixels, uint16_t* pattern, uint8_t* pc, uint8_t* pr)
-{
+/// Searches for best match of pattern by shifting it
+/// Returns rate of match and the best location
+/// max match = 132, min match = 0
+uint8_t xyzcal_find_pattern_12x12_in_32x32(uint8_t* pixels, uint16_t* pattern, uint8_t* pc, uint8_t* pr){
+	if (!pixels || !pattern || !pc || !pr)
+		return -1;
 	uint8_t max_c = 0;
 	uint8_t max_r = 0;
-	int16_t max_match = 0;
-	for (uint8_t r = 0; r < (32 - 12); r++)
-		for (uint8_t c = 0; c < (32 - 12); c++)
-		{
-			int16_t match = xyzcal_match_pattern_12x12_in_32x32(pattern, pixels, c, r);
-			if (max_match < match)
-			{
+	uint8_t max_match = 0;
+
+	// DBG(_n("Matching:\n"));
+	/// pixel precision
+	for (uint8_t r = 0; r < (32 - 12); ++r){
+		for (uint8_t c = 0; c < (32 - 12); ++c){
+			const uint8_t match = xyzcal_match_pattern_12x12_in_32x32(pattern, pixels, c, r);
+			if (max_match < match){
 				max_c = c;
 				max_r = r;
 				max_match = match;
 			}
+			// DBG(_n("%d "), match);
 		}
-	DBG(_n("max_c=%d max_r=%d max_match=%d\n"), max_c, max_r, max_match);
-	if (pc) *pc = max_c;
-	if (pr) *pr = max_r;
+		// DBG(_n("\n"));
+	}
+    //@size=278
+	DBG(_n("Pattern center [%f %f], match %f%%\n"), max_c + 5.5f, max_r + 5.5f, max_match / 1.32f);
+
+	*pc = max_c;
+	*pr = max_r;
 	return max_match;
 }
 
-#define MAX_DIAMETR 600
-#define XYZCAL_FIND_CENTER_DIAGONAL
+const uint16_t xyzcal_point_pattern_10[12] PROGMEM = {0x000, 0x0f0, 0x1f8, 0x3fc, 0x7fe, 0x7fe, 0x7fe, 0x7fe, 0x3fc, 0x1f8, 0x0f0, 0x000};
+const uint16_t xyzcal_point_pattern_08[12] PROGMEM = {0x000, 0x000, 0x0f0, 0x1f8, 0x3fc, 0x3fc, 0x3fc, 0x3fc, 0x1f8, 0x0f0, 0x000, 0x000};
 
-int8_t xyzcal_find_point_center2(uint16_t delay_us)
+bool xyzcal_searchZ(void)
 {
-	printf_P(PSTR("xyzcal_find_point_center2\n"));
+    //@size=118
+	DBG(_n("xyzcal_searchZ x=%ld y=%ld z=%ld\n"), count_position[X_AXIS], count_position[Y_AXIS], count_position[Z_AXIS]);
 	int16_t x0 = _X;
 	int16_t y0 = _Y;
 	int16_t z0 = _Z;
-	printf_P(PSTR(" x0=%d\n"), x0);
-	printf_P(PSTR(" y0=%d\n"), y0);
-	printf_P(PSTR(" z0=%d\n"), z0);
-
-	xyzcal_lineXYZ_to(_X, _Y, z0 + 400, 500, -1);
-	xyzcal_lineXYZ_to(_X, _Y, z0 - 400, 500, 1);
-	xyzcal_lineXYZ_to(_X, _Y, z0 + 400, 500, -1);
-	xyzcal_lineXYZ_to(_X, _Y, z0 - 400, 500, 1);
-
-	z0 = _Z - 20;
-	xyzcal_lineXYZ_to(_X, _Y, z0, 500, 0);
-
-//	xyzcal_lineXYZ_to(x0, y0, z0 - 100, 500, 1);
-//	z0 = _Z;
-//	printf_P(PSTR("  z0=%d\n"), z0);
-//	xyzcal_lineXYZ_to(x0, y0, z0 + 100, 500, -1);
-//	z0 += _Z;
-//	z0 /= 2;
-	printf_P(PSTR("   z0=%d\n"), z0);
-//	xyzcal_lineXYZ_to(x0, y0, z0 - 100, 500, 1);
-//	z0 = _Z - 10;
-
-	int8_t ret = 1;
-
-#ifdef XYZCAL_FIND_CENTER_DIAGONAL
-	int32_t xc = 0;
-	int32_t yc = 0;
-	int16_t ad = 45;
-	for (; ad < 360; ad += 90)
+//	int16_t min_z = -6000;
+//	int16_t dz = 100;
+	int16_t z = z0;
+	while (z > -2300) //-6mm + 0.25mm
 	{
-		float ar = (float)ad * _PI / 180;
-		int16_t x = x0 + MAX_DIAMETR * cos(ar);
-		int16_t y = y0 + MAX_DIAMETR * sin(ar);
-		if (!xyzcal_lineXYZ_to(x, y, z0, delay_us, -1))
+		uint16_t ad = 0;
+		if (xyzcal_spiral8(x0, y0, z, 100, 900, 320, 1, &ad)) //dz=100 radius=900 delay=400
 		{
-			printf_P(PSTR("ERROR ad=%d\n"), ad);
-			ret = 0;
-			break;
+			int16_t x_on = _X;
+			int16_t y_on = _Y;
+			int16_t z_on = _Z;
+			//@size=82
+            DBG(_n(" ON-SIGNAL at x=%d y=%d z=%d ad=%d\n"), x_on, y_on, z_on, ad);
+			return true;
 		}
-		xc += _X;
-		yc += _Y;
-		xyzcal_lineXYZ_to(x0, y0, z0, delay_us, 0);
-	}
-	if (ret)
-	{
-		printf_P(PSTR("OK\n"), ad);
-		x0 = xc / 4;
-		y0 = yc / 4;
-		printf_P(PSTR(" x0=%d\n"), x0);
-		printf_P(PSTR(" y0=%d\n"), y0);
+		z -= 400;
 	}
+    //@size=138
+	DBG(_n("xyzcal_searchZ no signal\n x=%ld y=%ld z=%ld\n"), count_position[X_AXIS], count_position[Y_AXIS], count_position[Z_AXIS]);
+	return false;
+}
 
-#else //XYZCAL_FIND_CENTER_DIAGONAL
-	xyzcal_lineXYZ_to(x0 - MAX_DIAMETR, y0, z0, delay_us, -1);
-	int16_t dx1 = x0 - _X;
-	if (dx1 >= MAX_DIAMETR)
-	{
-		printf_P(PSTR("!!! dx1 = %d\n"), dx1);
-		return 0;
-	}
-	xyzcal_lineXYZ_to(x0, y0, z0, delay_us, 0);
-	xyzcal_lineXYZ_to(x0 + MAX_DIAMETR, y0, z0, delay_us, -1);
-	int16_t dx2 = _X - x0;
-	if (dx2 >= MAX_DIAMETR)
-	{
-		printf_P(PSTR("!!! dx2 = %d\n"), dx2);
-		return 0;
-	}
-	xyzcal_lineXYZ_to(x0, y0, z0, delay_us, 0);
-	xyzcal_lineXYZ_to(x0 , y0 - MAX_DIAMETR, z0, delay_us, -1);
-	int16_t dy1 = y0 - _Y;
-	if (dy1 >= MAX_DIAMETR)
-	{
-		printf_P(PSTR("!!! dy1 = %d\n"), dy1);
+/// returns value of any location within data
+/// uses bilinear interpolation
+float get_value(uint8_t * matrix_32x32, float c, float r){
+	if (c <= 0 || r <= 0 || c >= 31 || r >= 31)
 		return 0;
-	}
-	xyzcal_lineXYZ_to(x0, y0, z0, delay_us, 0);
-	xyzcal_lineXYZ_to(x0, y0 + MAX_DIAMETR, z0, delay_us, -1);
-	int16_t dy2 = _Y - y0;
-	if (dy2 >= MAX_DIAMETR)
-	{
-		printf_P(PSTR("!!! dy2 = %d\n"), dy2);
-		return 0;
-	}
-	printf_P(PSTR("dx1=%d\n"), dx1);
-	printf_P(PSTR("dx2=%d\n"), dx2);
-	printf_P(PSTR("dy1=%d\n"), dy1);
-	printf_P(PSTR("dy2=%d\n"), dy2);
-
-	x0 += (dx2 - dx1) / 2;
-	y0 += (dy2 - dy1) / 2;
 
-	printf_P(PSTR(" x0=%d\n"), x0);
-	printf_P(PSTR(" y0=%d\n"), y0);
+	/// calculate weights of nearby points
+	const float wc1 = c - floor(c);
+	const float wr1 = r - floor(r);
+	const float wc0 = 1 - wc1;
+	const float wr0 = 1 - wr1;
+
+	const float w00 = wc0 * wr0;
+	const float w01 = wc0 * wr1;
+	const float w10 = wc1 * wr0;
+	const float w11 = wc1 * wr1;
+
+	const uint16_t c0 = c;
+	const uint16_t c1 = c0 + 1;
+	const uint16_t r0 = r;
+	const uint16_t r1 = r0 + 1;
+
+	const uint16_t idx00 = c0 + 32 * r0;
+	const uint16_t idx01 = c0 + 32 * r1;
+	const uint16_t idx10 = c1 + 32 * r0;
+	const uint16_t idx11 = c1 + 32 * r1;
+
+	/// bilinear resampling
+	return w00 * matrix_32x32[idx00] + w01 * matrix_32x32[idx01] + w10 * matrix_32x32[idx10] + w11 * matrix_32x32[idx11];
+}
 
-#endif //XYZCAL_FIND_CENTER_DIAGONAL
+const constexpr float m_infinity = -1000.f;
 
-	xyzcal_lineXYZ_to(x0, y0, z0, delay_us, 0);
+/// replaces the highest number by m_infinity
+void remove_highest(float *points, const uint8_t num_points){
+	if (num_points <= 0)
+		return;
 
-	return ret;
+	float max = points[0];
+	uint8_t max_i = 0;
+	for (uint8_t i = 0; i < num_points; ++i){
+		if (max < points[i]){
+			max = points[i];
+			max_i = i;
+		}
+	}
+	points[max_i] = m_infinity;
 }
 
-#ifdef XYZCAL_FIND_POINT_CENTER
-int8_t xyzcal_find_point_center(int16_t x0, int16_t y0, int16_t z0, int16_t min_z, int16_t max_z, uint16_t delay_us, uint8_t turns)
-{
-	uint8_t n;
-	uint16_t ad;
-	float ar;
-	float _cos;
-	float _sin;
-	int16_t r_min = 0;
-	int16_t r_max = 0;
-	int16_t x_min = 0;
-	int16_t x_max = 0;
-	int16_t y_min = 0;
-	int16_t y_max = 0;
-	int16_t r = 10;
-	int16_t x = x0;
-	int16_t y = y0;
-	int16_t z = z0;
-	int8_t _pinda = _PINDA;
-	for (n = 0; n < turns; n++)
-	{
-		uint32_t r_sum = 0;
-		for (ad = 0; ad < 720; ad++)
-		{
-			ar = ad * _PI / 360;
-			_cos = cos(ar);
-			_sin = sin(ar);
-			x = x0 + (int)(_cos * r);
-			y = y0 + (int)(_sin * r);
-			xyzcal_lineXYZ_to(x, y, z, 1000, 0);
-			int8_t pinda = _PINDA;
-			if (pinda)
-				r += 1;
-			else
-			{
-				r -= 1;
-				ad--;
-				r_sum -= r;
-			}
-			if (ad == 0)
-			{
-				x_min = x0;
-				x_max = x0;
-				y_min = y0;
-				y_max = y0;
-				r_min = r;
-				r_max = r;
-			}
-			else if (pinda)
-			{
-				if (x_min > x) x_min = (2*x + x_min) / 3;
-				if (x_max < x) x_max = (2*x + x_max) / 3;
-				if (y_min > y) y_min = (2*y + y_min) / 3;
-				if (y_max < y) y_max = (2*y + y_max) / 3;
-/*				if (x_min > x) x_min = x;
-				if (x_max < x) x_max = x;
-				if (y_min > y) y_min = y;
-				if (y_max < y) y_max = y;*/
-				if (r_min > r) r_min = r;
-				if (r_max < r) r_max = r;
-			}
-			r_sum += r;
-/*			if (_pinda != pinda)
-			{
-				if (pinda)
-					DBG(_n("!1 x=%d y=%d\n"), x, y);
-				else
-					DBG(_n("!0 x=%d y=%d\n"), x, y);
-			}*/
-			_pinda = pinda;
-//			DBG(_n("x=%d y=%d rx=%d ry=%d\n"), x, y, rx, ry);
+/// return the highest number in the list
+float highest(float *points, const uint8_t num_points){
+	if (num_points <= 0)
+		return 0;
+
+	float max = points[0];
+	for (uint8_t i = 0; i < num_points; ++i){
+		if (max < points[i]){
+			max = points[i];
 		}
-		DBG(_n("x_min=%d x_max=%d y_min=%d y_max=%d r_min=%d r_max=%d r_avg=%d\n"), x_min, x_max, y_min, y_max, r_min, r_max, r_sum / 720);
-		if ((n > 2) && (n & 1))
-		{
-			x0 += (x_min + x_max);
-			y0 += (y_min + y_max);
-			x0 /= 3;
-			y0 /= 3;
-			int rx = (x_max - x_min) / 2;
-			int ry = (y_max - y_min) / 2;
-			r = (rx + ry) / 3;//(rx < ry)?rx:ry;
-			DBG(_n("x0=%d y0=%d r=%d\n"), x0, y0, r);
+	}
+	return max;
+}
+
+/// slow bubble sort but short
+void sort(float *points, const uint8_t num_points){
+	/// one direction bubble sort
+	for (uint8_t i = 0; i < num_points; ++i){
+		for (uint8_t j = 0; j < num_points - i - 1; ++j){
+			if (points[j] > points[j + 1])
+				SWAP(points[j], points[j + 1]);
 		}
 	}
-	xyzcal_lineXYZ_to(x0, y0, z, 200, 0);
+	
+	// DBG(_n("Sorted: "));
+	// for (uint8_t i = 0; i < num_points; ++i)
+	// 	DBG(_n("%f "), points[i]);
+	// DBG(_n("\n"));
 }
-#endif //XYZCAL_FIND_POINT_CENTER
 
 
-uint8_t xyzcal_xycoords2point(int16_t x, int16_t y)
-{
-	uint8_t ix = (x > 10000)?1:0;
-	uint8_t iy = (y > 10000)?1:0;
-	return iy?(3-ix):ix;
+/// sort array and returns median value
+/// don't send empty array or nullptr
+float median(float *points, const uint8_t num_points){
+	sort(points, num_points);
+	return points[num_points / 2];
 }
 
-//MK3
-#if ((MOTHERBOARD == BOARD_EINSY_1_0a))
-const int16_t xyzcal_point_xcoords[4] PROGMEM = {1200, 22000, 22000, 1200};
-const int16_t xyzcal_point_ycoords[4] PROGMEM = {600, 600, 19800, 19800};
-#endif //((MOTHERBOARD == BOARD_EINSY_1_0a))
+float __attribute__ ((noinline)) CLAMP_median(float *shifts, uint8_t blocks, float norm){
+    const constexpr float max_change = 0.5f; ///< avoids too fast changes (avoid oscillation)
+    return CLAMP( median(shifts, blocks) * norm, -max_change, max_change);
+}
 
-//MK2.5
-#if ((MOTHERBOARD == BOARD_RAMBO_MINI_1_0) || (MOTHERBOARD == BOARD_RAMBO_MINI_1_3))
-const int16_t xyzcal_point_xcoords[4] PROGMEM = {1200, 22000, 22000, 1200};
-const int16_t xyzcal_point_ycoords[4] PROGMEM = {700, 700, 19800, 19800};
-#endif //((MOTHERBOARD == BOARD_RAMBO_MINI_1_0) || (MOTHERBOARD == BOARD_RAMBO_MINI_1_3))
+/// Searches for circle iteratively
+/// Uses points on the perimeter. If point is high it pushes circle out of the center (shift or change of radius),
+/// otherwise to the center.
+/// Algorithm is stopped after fixed number of iterations. Move is limited to 0.5 px per iteration.
+void dynamic_circle(uint8_t *matrix_32x32, float &x, float &y, float &r, uint8_t iterations){
+	/// circle of 10.5 diameter has 33 in circumference, don't go much above
+	const constexpr uint8_t num_points = 33;
+	const float pi_2_div_num_points = 2 * M_PI / num_points;
+	const constexpr uint8_t target_z = 32; ///< target z height of the circle
+	const uint8_t blocks = num_points;
+	float shifts_x[blocks];
+	float shifts_y[blocks];	
+	float shifts_r[blocks];	
+
+	// DBG(_n(" [%f, %f][%f] start circle\n"), x, y, r);
+
+	for (int8_t i = iterations; i > 0; --i){
+	
+        //@size=128B
+		DBG(_n(" [%f, %f][%f] circle\n"), x, y, r);
+
+		/// read points on the circle
+		for (uint8_t p = 0; p < num_points; ++p){
+			const float angle = p * pi_2_div_num_points;
+			const float height = get_value(matrix_32x32, r * cos(angle) + x, r * sin(angle) + y) - target_z;
+			// DBG(_n("%f "), point);
+
+			shifts_x[p] = cos(angle) * height;
+			shifts_y[p] = sin(angle) * height;
+			shifts_r[p] = height;
+		}
+		// DBG(_n(" points\n"));
 
-const uint16_t xyzcal_point_pattern[12] PROGMEM = {0x000, 0x0f0, 0x1f8, 0x3fc, 0x7fe, 0x7fe, 0x7fe, 0x7fe, 0x3fc, 0x1f8, 0x0f0, 0x000};
+		const float reducer = 32.f; ///< reduces speed of convergency to avoid oscillation
+		const float norm = 1.f / reducer;
+//		x += CLAMP(median(shifts_x, blocks) * norm, -max_change, max_change);
+//		y += CLAMP(median(shifts_y, blocks) * norm, -max_change, max_change);
+//		r += CLAMP(median(shifts_r, blocks) * norm * .5f, -max_change, max_change);
+        //104B down
+        x += CLAMP_median(shifts_x, blocks, norm);
+        y += CLAMP_median(shifts_y, blocks, norm);
+        r += CLAMP_median(shifts_r, blocks, norm * .5f);
 
-bool xyzcal_searchZ(void)
-{
-	DBG(_n("xyzcal_searchZ x=%ld y=%ld z=%ld\n"), count_position[X_AXIS], count_position[Y_AXIS], count_position[Z_AXIS]);
-	int16_t x0 = _X;
-	int16_t y0 = _Y;
-	int16_t z0 = _Z;
-//	int16_t min_z = -6000;
-//	int16_t dz = 100;
-	int16_t z = z0;
-	while (z > -2300) //-6mm + 0.25mm
-	{
-		uint16_t ad = 0;
-		if (xyzcal_spiral8(x0, y0, z, 100, 900, 320, 1, &ad)) //dz=100 radius=900 delay=400
-		{
-			int16_t x_on = _X;
-			int16_t y_on = _Y;
-			int16_t z_on = _Z;
-			DBG(_n(" ON-SIGNAL at x=%d y=%d z=%d ad=%d\n"), x_on, y_on, z_on, ad);
-			return true;
+		r = MAX(2, r);
+
+	}
+    //@size=118
+	DBG(_n(" [%f, %f][%f] final circle\n"), x, y, r);
+}
+
+/// Prints matrix in hex to debug output (serial line)
+void print_image(const uint8_t *matrix_32x32){
+	for (uint8_t y = 0; y < 32; ++y){
+		const uint16_t idx_y = y * 32;
+		for (uint8_t x = 0; x < 32; ++x){
+			DBG(_n("%02x"), matrix_32x32[idx_y + x]);
 		}
-		z -= 400;
+		DBG(endl);
 	}
-	DBG(_n("xyzcal_searchZ no signal\n x=%ld y=%ld z=%ld\n"), count_position[X_AXIS], count_position[Y_AXIS], count_position[Z_AXIS]);
-	return false;
+	DBG(endl);
 }
 
-bool xyzcal_scan_and_process(void)
-{
+/// Takes two patterns and searches them in matrix32
+/// \returns best match
+uint8_t find_patterns(uint8_t *matrix32, uint16_t *pattern08, uint16_t *pattern10, uint8_t &col, uint8_t &row){
+	uint8_t c08 = 0;
+	uint8_t r08 = 0;
+	uint8_t match08 = 0;
+	uint8_t c10 = 0;
+	uint8_t r10 = 0;
+	uint8_t match10 = 0;
+
+	match08 = xyzcal_find_pattern_12x12_in_32x32(matrix32, pattern08, &c08, &r08);
+	match10 = xyzcal_find_pattern_12x12_in_32x32(matrix32, pattern10, &c10, &r10);
+
+	if (match08 > match10){
+		col = c08;
+		row = r08;
+		return match08;
+	}
+	
+	col = c10;
+	row = r10;
+	return match10;
+}
+
+/// scans area around the current head location and
+/// searches for the center of the calibration pin
+bool xyzcal_scan_and_process(void){
+    //@size=44
 	DBG(_n("sizeof(block_buffer)=%d\n"), sizeof(block_t)*BLOCK_BUFFER_SIZE);
-//	DBG(_n("sizeof(pixels)=%d\n"), 32*32);
-//	DBG(_n("sizeof(histo)=%d\n"), 2*16);
-//	DBG(_n("sizeof(pattern)=%d\n"), 2*12);
-	DBG(_n("sizeof(total)=%d\n"), 32*32+2*16+2*12);
 	bool ret = false;
 	int16_t x = _X;
 	int16_t y = _Y;
-	int16_t z = _Z;
+	const int16_t z = _Z;
 
-	uint8_t* pixels = (uint8_t*)block_buffer;
-	xyzcal_scan_pixels_32x32(x, y, z - 72, 2400, 200, pixels);
+	uint8_t *matrix32 = (uint8_t *)block_buffer;
+	uint16_t *pattern08 = (uint16_t *)(matrix32 + 32 * 32);
+	uint16_t *pattern10 = (uint16_t *)(pattern08 + 12);
 
-	uint16_t* histo = (uint16_t*)(pixels + 32*32);
-	xyzcal_histo_pixels_32x32(pixels, histo);
+	for (uint8_t i = 0; i < 12; i++){
+		pattern08[i] = pgm_read_word((uint16_t*)(xyzcal_point_pattern_08 + i));
+		pattern10[i] = pgm_read_word((uint16_t*)(xyzcal_point_pattern_10 + i));
+	}
 
-	xyzcal_adjust_pixels(pixels, histo);
+	xyzcal_scan_pixels_32x32_Zhop(x, y, z, 2400, 200, matrix32);
+	print_image(matrix32);
+
+	/// SEARCH FOR BINARY CIRCLE
+	uint8_t uc = 0;
+	uint8_t ur = 0;
+
+	/// max match = 132, 1/2 good = 66, 2/3 good = 88
+	if (find_patterns(matrix32, pattern08, pattern10, uc, ur) >= 88){
+		/// find precise circle
+		/// move to the center of the pattern (+5.5)
+		float xf = uc + 5.5f;
+		float yf = ur + 5.5f;
+		float radius = 4.5f; ///< default radius
+		constexpr const uint8_t iterations = 20;
+		dynamic_circle(matrix32, xf, yf, radius, iterations);
+		if (fabs(xf - (uc + 5.5f)) > 3 || fabs(yf - (ur + 5.5f)) > 3 || fabs(radius - 5) > 3){
+			//@size=88
+            DBG(_n(" [%f %f][%f] mm divergence\n"), xf - (uc + 5.5f), yf - (ur + 5.5f), radius - 5);
+			/// dynamic algorithm diverged, use original position instead
+			xf = uc + 5.5f;
+			yf = ur + 5.5f;
+		}
 
-	uint16_t* pattern = (uint16_t*)(histo + 2*16);
-	for (uint8_t i = 0; i < 12; i++)
-	{
-		pattern[i] = pgm_read_word((uint16_t*)(xyzcal_point_pattern + i));
-//		DBG(_n(" pattern[%d]=%d\n"), i, pattern[i]);
-	}
-	uint8_t c = 0;
-	uint8_t r = 0;
-	if (xyzcal_find_pattern_12x12_in_32x32(pixels, pattern, &c, &r) > 66) //total pixels=144, corner=12 (1/2 = 66)
-	{
-		DBG(_n(" pattern found at %d %d\n"), c, r);
-		c += 6;
-		r += 6;
-		x += ((int16_t)c - 16) << 6;
-		y += ((int16_t)r - 16) << 6;
-		DBG(_n(" x=%d y=%d z=%d\n"), x, y, z);
+		/// move to the center of area and convert to position
+		xf = (float)x + (xf - 15.5f) * 64;
+		yf = (float)y + (yf - 15.5f) * 64;
+		//@size=114
+        DBG(_n(" [%f %f] mm pattern center\n"), pos_2_mm(xf), pos_2_mm(yf));
+		x = round_to_i16(xf);
+		y = round_to_i16(yf);
 		xyzcal_lineXYZ_to(x, y, z, 200, 0);
 		ret = true;
 	}
+
+	/// wipe buffer
 	for (uint16_t i = 0; i < sizeof(block_t)*BLOCK_BUFFER_SIZE; i++)
-		pixels[i] = 0;
+		matrix32[i] = 0;
 	return ret;
 }
 
-bool xyzcal_find_bed_induction_sensor_point_xy(void)
-{
-	DBG(_n("xyzcal_find_bed_induction_sensor_point_xy x=%ld y=%ld z=%ld\n"), count_position[X_AXIS], count_position[Y_AXIS], count_position[Z_AXIS]);
+bool xyzcal_find_bed_induction_sensor_point_xy(void){
 	bool ret = false;
+
+    //@size=258
+    DBG(_n("xyzcal_find_bed_induction_sensor_point_xy x=%ld y=%ld z=%ld\n"), count_position[X_AXIS], count_position[Y_AXIS], count_position[Z_AXIS]);
 	st_synchronize();
-	int16_t x = _X;
-	int16_t y = _Y;
-	int16_t z = _Z;
-	uint8_t point = xyzcal_xycoords2point(x, y);
-	x = pgm_read_word((uint16_t*)(xyzcal_point_xcoords + point));
-	y = pgm_read_word((uint16_t*)(xyzcal_point_ycoords + point));
-	DBG(_n("point=%d x=%d y=%d z=%d\n"), point, x, y, z);
+	///< magic constant, lowers min_z after searchZ to obtain more dense data in scan
+	const pos_i16_t lower_z = 72; 
+
 	xyzcal_meassure_enter();
-	xyzcal_lineXYZ_to(x, y, z, 200, 0);
-	if (xyzcal_searchZ())
-	{
-		int16_t z = _Z;
-		xyzcal_lineXYZ_to(x, y, z, 200, 0);
-		if (xyzcal_scan_and_process())
-		{
-			if (xyzcal_find_point_center2(500))
-			{
-				uint32_t x_avg = 0;
-				uint32_t y_avg = 0;
-				uint8_t n; for (n = 0; n < 4; n++)
-				{
-					if (!xyzcal_find_point_center2(1000)) break;
-					x_avg += _X;
-					y_avg += _Y;	
-				}
-				if (n == 4)
-				{
-					xyzcal_lineXYZ_to(x_avg >> 2, y_avg >> 2, _Z, 200, 0);
-					ret = true;
-				}
-			}
-		}
+	if (xyzcal_searchZ()){
+		xyzcal_lineXYZ_to(_X, _Y, _Z - lower_z, 200, 0);
+		ret = xyzcal_scan_and_process();
 	}
 	xyzcal_meassure_leave();
 	return ret;
 }
 
-
 #endif //NEW_XYZCAL

+ 0 - 14
Firmware/xyzcal.h

@@ -17,20 +17,6 @@ extern bool xyzcal_spiral8(int16_t cx, int16_t cy, int16_t z0, int16_t dz, int16
 
 //extern int8_t xyzcal_meassure_pinda_hysterezis(int16_t min_z, int16_t max_z, uint16_t delay_us, uint8_t samples);
 
-extern void xyzcal_scan_pixels_32x32(int16_t cx, int16_t cy, int16_t min_z, int16_t max_z, uint16_t delay_us, uint8_t* pixels);
-
-extern void xyzcal_histo_pixels_32x32(uint8_t* pixels, uint16_t* histo);
-
-extern void xyzcal_adjust_pixels(uint8_t* pixels, uint16_t* histo);
-
-extern int16_t xyzcal_match_pattern_12x12_in_32x32(uint16_t* pattern, uint8_t* pixels, uint8_t x, uint8_t y);
-
-extern int16_t xyzcal_find_pattern_12x12_in_32x32(uint8_t* pixels, uint16_t* pattern, uint8_t* pc, uint8_t* pr);
-
-extern int8_t xyzcal_find_point_center2(uint16_t delay_us);
-
-//extern int8_t xyzcal_find_point_center(int16_t x0, int16_t y0, int16_t z0, int16_t min_z, int16_t max_z, uint16_t delay_us, uint8_t turns);
-
 extern bool xyzcal_searchZ(void);
 
 extern bool xyzcal_scan_and_process(void);

+ 259 - 65
PF-build.sh

@@ -15,7 +15,7 @@
 # 3. Install zip with 'apt-get install zip'
 # 4. Install python3 with 'apt-get install python3'
 # 5. Add command 'ln -sf /usr/bin/python3.5 /usr/bin/python' to link python3 to python.
-#    Donnot istall 'python' as python 2.x has end of life see https://pythonclock.org/
+#    Do not install 'python' as python 2.x has end of life see https://pythonclock.org/
 # 6. Add at top of ~/.bashrc following lines by using 'sudo nano ~/.bashrc'
 #
 #    export OS="Linux"
@@ -37,7 +37,7 @@
 # 2. Another great tool to compare your custom mod and stock firmware is WinMerge http://winmerge.org/downloads/?lang=en
 # 
 # Example for MK3: open git bash and change to your Firmware directory 
-# <username>@<machinename> MINGW64 /<drive>/path
+# <username>@<machine name> MINGW64 /<drive>/path
 # bash build.sh 1_75mm_MK3-EINSy10a-E3Dv6full
 #
 # Example for MK25: open git bash and change to your directory 
@@ -56,15 +56,15 @@
 #   Some may argue that this is only used by a script, BUT as soon someone accidentally or on purpose starts Arduino IDE
 #   it will use the default Arduino IDE folders and so can corrupt the build environment.
 #
-# Version: 1.0.6-Build_18
+# Version: 1.0.6-Build_36
 # Change log:
 # 12 Jan 2019, 3d-gussner, Fixed "compiler.c.elf.flags=-w -Os -Wl,-u,vfprintf -lprintf_flt -lm -Wl,--gc-sections" in 'platform.txt'
 # 16 Jan 2019, 3d-gussner, Build_2, Added development check to modify 'Configuration.h' to prevent unwanted LCD messages that Firmware is unknown
 # 17 Jan 2019, 3d-gussner, Build_3, Check for OS Windows or Linux and use the right build environment
 # 10 Feb 2019, ropaha, Pull Request, Select variant from list while using build.sh
 # 10 Feb 2019, ropaha, change FW_DEV_VERSION automatically depending on FW_VERSION RC/BETA/ALPHA
-# 10 Feb 2019, 3d-gussner, 1st tests with english only 
-# 10 Feb 2019, ropaha, added compiling of all variants and english only
+# 10 Feb 2019, 3d-gussner, 1st tests with English only 
+# 10 Feb 2019, ropaha, added compiling of all variants and English only
 # 10 Feb 2019, 3d-gussner, Set OUTPUT_FOLDER for hex files
 # 11 Feb 2019, 3d-gussner/ropaha, Minor changes and fixes
 # 11 Feb 2019, 3d-gussner, Ready for RC
@@ -80,50 +80,63 @@
 #                                              Configuration_prusa.h
 #                                              language build files
 #                                              multi language firmware files exist and clean them up
-# 15 Feb 2019, 3d-gussner, Fixed selction GOLD/UNKNOWN DEV_STATUS for ALL variants builds, so you have to choose only once
+# 15 Feb 2019, 3d-gussner, Fixed selection GOLD/UNKNOWN DEV_STATUS for ALL variants builds, so you have to choose only once
 # 15 Feb 2019, 3d-gussner, Added some colored output
 # 15 Feb 2019, 3d-gussner, troubleshooting and minor fixes
 # 16 Feb 2019, 3d-gussner, Script can be run using arguments
 #                          $1 = variant, example "1_75mm_MK3-EINSy10a-E3Dv6full.h" at this moment it is not possible to use ALL
-#                          $2 = multi language OR english only [ALL/EN_ONLY]
+#                          $2 = multi language OR English only [ALL/EN_ONLY]
 #                          $3 = development status [GOLD/RC/BETA/ALPHA/DEVEL/DEBUG]
 #                          If one argument is wrong a list of valid one will be shown
-# 13 Mar 2019, 3d-gussner, MKbel updated the linux build environment to version 1.0.2 with an Fix maximum firmware flash size.
+# 13 Mar 2019, 3d-gussner, MKbel updated the Linux build environment to version 1.0.2 with an Fix maximum firmware flash size.
 #                          So did I
 # 11 Jul 2019, deliopoulos,Updated to v1.0.6 as Prusa needs a new board definition for Firmware 3.8.x86_64
-#						   - Splitted the Download of Windows Arduino IDE 1.8.5 and Prusa specific part
+#						   - Split the Download of Windows Arduino IDE 1.8.5 and Prusa specific part
 #                            --> less download volume needed and saves some time
 #
-# 13 Jul 2019, deliopoulos,Splitting of Ardunio IDE and Prusa parts also for Linux64
+# 13 Jul 2019, deliopoulos,Splitting of Arduino IDE and Prusa parts also for Linux64
 # 13 Jul 2019, 3d-gussner, Added Linux 32-bit version (untested yet)
 #                          MacOS could be added in future if needs
 # 14 Jul 2019, 3d-gussner, Update preferences and make it really portable
-# 15 Jul 2019, 3d-gussner, New PF-build-env gihub branch
-# 16 Jul 2019, 3d-gussner, New Arduino_boards github fork
+# 15 Jul 2019, 3d-gussner, New PF-build-env GitHub branch
+# 16 Jul 2019, 3d-gussner, New Arduino_boards GitHub fork
 # 17 Jul 2019, 3d-gussner, Final tests under Windows 10 and Linux Subsystem for Windows   
 # 18 Jul 2019, 3d-gussner, Added python check
 # 18 Jul 2019, deliopoulos, No need more for changing 'platform.txt' file as it comes with the Arduino Boards.
 # 18 Jul 2019, deliopoulos, Modified 'PF_BUILD_FILE_URL' to use 'BUILD_ENV' variable
-# 22 Jul 2019, 3d-gussner, Modiffied checks to check folder and/or installation output exists.
+# 22 Jul 2019, 3d-gussner, Modified checks to check folder and/or installation output exists.
 # 22 Jul 2019, 3d-gussner, Added check if Arduino IDE 1.8.5 boards have been updated
 # 22 Jul 2019, 3d-gussner, Changed exit numbers 1-13 for prepare build env 21-28 for prepare compiling 31-36 compiling
-# 22 Jul 2019, 3d-gussner, Changed BOARD_URL to DRracers respository after he pulled my PR https://github.com/DRracer/Arduino_Boards/pull/1
+# 22 Jul 2019, 3d-gussner, Changed BOARD_URL to DRracers repository after he pulled my PR https://github.com/DRracer/Arduino_Boards/pull/1
 # 23 Jul 2019, 3d-gussner, Changed Build-env path to "PF-build-dl" as requested in PR https://github.com/prusa3d/Prusa-Firmware/pull/2028
 #                          Changed Hex-files folder to PF-build-hex as requested in PR
 # 23 Jul 2019, 3d-gussner, Added Finding OS version routine so supporting new OS should get easier
 # 26 Jul 2019, 3d-gussner, Change JSON repository to prusa3d after PR https://github.com/prusa3d/Arduino_Boards/pull/1 was merged
-# 23 Sep 2019, 3d-gussner, Prepare PF-build.sh for comming Prusa3d/Arduino_Boards version 1.0.2 Pull Request
-# 17 Oct 2019, 3d-gussner, Changed folder and check file names to have seperated build enviroments depening on Arduino IDE version and
+# 23 Sep 2019, 3d-gussner, Prepare PF-build.sh for coming Prusa3d/Arduino_Boards version 1.0.2 Pull Request
+# 17 Oct 2019, 3d-gussner, Changed folder and check file names to have separated build environments depending on Arduino IDE version and
 #                          board-versions.
 # 15 Dec 2019, 3d-gussner, Prepare for switch to Prusa3d/PF-build-env repository
-# 15 Dec 2019, 3d-gussner, Fix Audrino user preferences for the chosen board.
+# 15 Dec 2019, 3d-gussner, Fix Arduino user preferences for the chosen board.
 # 17 Dec 2019, 3d-gussner, Fix "timer0_fract = 0" warning by using Arduino_boards v1.0.3
 # 28 Apr 2020, 3d-gussner, Added RC3 detection
 # 03 May 2020, deliopoulos, Accept all RCx as RC versions
 # 05 May 2020, 3d-gussner, Make a copy of `not_tran.txt`and `not_used.txt` as `not_tran_$VARIANT.txt`and `not_used_$VARIANT.txt`
-#                          After compiling All multilanguage vairants it makes it easier to find missing or unused transltions.
+#                          After compiling All multi-language variants it makes it easier to find missing or unused translations.
 # 12 May 2020, DRracer   , Cleanup double MK2/s MK25/s `not_tran` and `not_used` files
 # 13 May 2020, leptun    , If cleanup files do not exist don't try to.
+# 01 Oct 2020, 3d-gussner, Bug fix if using argument EN_ONLY. Thank to @leptun for pointing out.
+#                          Change Build number to script commits 'git rev-list --count HEAD PF-build.sh'
+# 02 Oct 2020, 3d-gussner, Add UNKNOWN as argument option
+# 05 Oct 2020, 3d-gussner, Disable pause and warnings using command line with all needed arguments
+#                          Install needed apps under linux if needed.
+#                          Clean PF-Firmware build when changing git branch
+# 02 Nov 2020, 3d-gussner, Check for "gawk" on Linux
+#                          Add argument to change build number automatically to current commit or define own number
+#                          Update exit numbers 1-13 for prepare build env 21-29 for prepare compiling 30-36 compiling
+# 08 Jan 2021, 3d-gussner, Comment out 'sudo' auto installation
+#                          Add '-?' '-h' help option
+# 27 Jan 2021, 3d-gussner, Add `-c`, `-p` and `-n` options
+
 #### Start check if OSTYPE is supported
 OS_FOUND=$( command -v uname)
 
@@ -198,13 +211,14 @@ if ! type zip > /dev/null; then
 	elif [ $TARGET_OS == "linux" ]; then
 		echo "$(tput setaf 1)Missing 'zip' which is important to run this script"
 		echo "install it with the command $(tput setaf 2)'sudo apt-get install zip'$(tput sgr0)"
+		#sudo apt-get update && apt-get install zip
 		exit 3
 	fi
 fi
 # Check python ... needed during language build
 if ! type python > /dev/null; then
 	if [ $TARGET_OS == "windows" ]; then
-		echo "$(tput setaf 1)Missing 'python' which is important to run this script"
+		echo "$(tput setaf 1)Missing 'python3' which is important to run this script"
 		exit 4
 	elif [ $TARGET_OS == "linux" ]; then
 		echo "$(tput setaf 1)Missing 'python' which is important to run this script"
@@ -212,6 +226,17 @@ if ! type python > /dev/null; then
 		echo "install it with the command $(tput setaf 2)'sudo apt-get install python3'."
 		echo "Check which version of Python3 has been installed using 'ls /usr/bin/python3*'"
 		echo "Use 'sudo ln -sf /usr/bin/python3.x /usr/bin/python' (where 'x' is your version number) to make it default.$(tput sgr0)"
+		#sudo apt-get update && apt-get install python3 && ln -sf /usr/bin/python3 /usr/bin/python
+		exit 4
+	fi
+fi
+
+# Check gawk ... needed during language build
+if ! type gawk > /dev/null; then
+	if [ $TARGET_OS == "linux" ]; then
+		echo "$(tput setaf 1)Missing 'gawk' which is important to run this script"
+		echo "install it with the command $(tput setaf 2)'sudo apt-get install gawk'."
+		#sudo apt-get update && apt-get install gawk
 		exit 4
 	fi
 fi
@@ -241,7 +266,7 @@ echo "Script path :" $SCRIPT_PATH
 echo "OS          :" $OS
 echo "OS type     :" $TARGET_OS
 echo ""
-echo "Ardunio IDE :" $ARDUINO_ENV
+echo "Arduino IDE :" $ARDUINO_ENV
 echo "Build env   :" $BUILD_ENV
 echo "Board       :" $BOARD
 echo "Package name:" $BOARD_PACKAGE_NAME
@@ -422,8 +447,73 @@ fi
 #### Start 
 cd $SCRIPT_PATH
 
-# First argument defines which variant of the Prusa Firmware will be compiled 
-if [ -z "$1" ] ; then
+# Check if git is available
+if type git > /dev/null; then
+	git_available="1"
+fi
+
+while getopts v:l:d:b:o:c:p:n:?h flag
+	do
+	    case "${flag}" in
+	        v) variant_flag=${OPTARG};;
+	        l) language_flag=${OPTARG};;
+	        d) devel_flag=${OPTARG};;
+			b) build_flag=${OPTARG};;
+			o) output_flag=${OPTARG};;
+			c) clean_flag=${OPTARG};;
+			p) prusa_flag=${OPTARG};;
+			n) new_build_flag=${OPTARG};;
+			?) help_flag=1;;
+			h) help_flag=1;;
+	    esac
+	done
+#echo "variant_flag: $variant_flag";
+#echo "language_flag: $language_flag";
+#echo "devel_flag: $devel_flag";
+#echo "build_flag: $build_flag";
+#echo "output_flag: $output_flag";
+#echo "help_flag: $help_flag"
+#echo "clean_flag: $clean_flag"
+#echo "prusa_flag: $prusa_flag"
+#echo "new_build_flag: $new_build_flag"
+
+#
+# '?' 'h' argument usage and help
+if [ "$help_flag" == "1" ] ; then
+echo "***************************************"
+echo "* PF-build.sh Version: 1.0.6-Build_33 *"
+echo "***************************************"
+echo "Arguments:"
+echo "$(tput setaf 2)-v$(tput sgr0) Variant '$(tput setaf 2)All$(tput sgr0)' or variant file name"
+echo "$(tput setaf 2)-l$(tput sgr0) Languages '$(tput setaf 2)ALL$(tput sgr0)' for multi language or '$(tput setaf 2)EN_ONLY$(tput sgr0)' for English only"
+echo "$(tput setaf 2)-d$(tput sgr0) Devel build '$(tput setaf 2)GOLD$(tput sgr0)', '$(tput setaf 2)RC$(tput sgr0)', '$(tput setaf 2)BETA$(tput sgr0)', '$(tput setaf 2)ALPHA$(tput sgr0)', '$(tput setaf 2)DEBUG$(tput sgr0)', '$(tput setaf 2)DEVEL$(tput sgr0)' and '$(tput setaf 2)UNKNOWN$(tput sgr0)'"
+echo "$(tput setaf 2)-b$(tput sgr0) Build/commit number '$(tput setaf 2)Auto$(tput sgr0)' needs git or a number"
+echo "$(tput setaf 2)-o$(tput sgr0) Output '$(tput setaf 2)1$(tput sgr0)' force or '$(tput setaf 2)0$(tput sgr0)' block output and delays"
+echo "$(tput setaf 2)-c$(tput sgr0) Do not clean up lang build'$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes"
+echo "$(tput setaf 2)-p$(tput sgr0) Keep Configuration_prusa.h '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes"
+echo "$(tput setaf 2)-n$(tput sgr0) New fresh build '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes"
+echo "$(tput setaf 2)-?$(tput sgr0) Help"
+echo "$(tput setaf 2)-h$(tput sgr0) Help"
+echo 
+echo "Brief USAGE:"
+echo "  $(tput setaf 2)./PF-build.sh$(tput sgr0)  [-v] [-l] [-d] [-b] [-o] [-c] [-p] [-n]"
+echo
+echo "Example:"
+echo "  $(tput setaf 2)./PF-build.sh -v All -l ALL -d GOLD$(tput sgr0)"
+echo "  Will build all variants as multi language and final GOLD version"
+echo
+echo "  $(tput setaf 2) ./PF-build.sh -v 1_75mm_MK3S-EINSy10a-E3Dv6full.h -b Auto -l ALL -d GOLD -o 1 -c 1 -p 1 -n 1$(tput sgr0)"
+echo "  Will build MK3S multi language final GOLD firmware "
+echo "  with current commit count number and output extra information,"
+echo "  not delete lang build temporary files, keep Configuration_prusa.h and build with new fresh build folder."
+echo
+exit 
+
+fi
+
+#
+# '-v' argument defines which variant of the Prusa Firmware will be compiled 
+if [ -z "$variant_flag" ] ; then
 	# Select which variant of the Prusa Firmware will be compiled, like
 	PS3="Select a variant: "
 	while IFS= read -r -d $'\0' f; do
@@ -443,7 +533,7 @@ if [ -z "$1" ] ; then
 				;;
 			"Quit")
 				echo "You chose to stop"
-					exit
+					exit 20
 					;;
 			*)
 				echo "$(tput setaf 1)This is not a valid variant$(tput sgr0)"
@@ -451,21 +541,28 @@ if [ -z "$1" ] ; then
 		esac
 	done
 else
-	if [ -f "$SCRIPT_PATH/Firmware/variants/$1" ] ; then 
-		VARIANTS=$1
+	if [ -f "$SCRIPT_PATH/Firmware/variants/$variant_flag" ] ; then 
+		VARIANTS=$variant_flag
+	elif [ "$variant_flag" == "All" ] ; then
+		while IFS= read -r -d $'\0' f; do
+			options[i++]="$f"
+		done < <(find Firmware/variants/ -maxdepth 1 -type f -name "*.h" -print0 )
+		VARIANT="All"
+		VARIANTS=${options[*]}
 	else
-		echo "$(tput setaf 1)$1 could not be found in Firmware/variants please choose a valid one$(tput setaf 2)"
+		echo "$(tput setaf 1)Argument $variant_flag could not be found in Firmware/variants please choose a valid one.$(tput sgr0)"
+		echo "Only $(tput setaf 2)'All'$(tput sgr0) and file names below are allowed as variant '-v' argument.$(tput setaf 2)"
 		ls -1 $SCRIPT_PATH/Firmware/variants/*.h | xargs -n1 basename
 		echo "$(tput sgr0)"
 		exit 21
 	fi
 fi
 
-#Second argument defines if it is an english only version. Known values EN_ONLY / ALL
+#'-l' argument defines if it is an English only version. Known values EN_ONLY / ALL
 #Check default language mode
 MULTI_LANGUAGE_CHECK=$(grep --max-count=1 "^#define LANG_MODE *" $SCRIPT_PATH/Firmware/config.h|sed -e's/  */ /g'|cut -d ' ' -f3)
 
-if [ -z "$2" ] ; then
+if [ -z "$language_flag" ] ; then
 	PS3="Select a language: "
 	echo
 	echo "Which lang-build do you want?"
@@ -473,12 +570,10 @@ if [ -z "$2" ] ; then
 		case $yn in
 			"Multi languages")
 				LANGUAGES="ALL"
-				sed -i -- "s/^#define LANG_MODE *0/#define LANG_MODE              1/g" $SCRIPT_PATH/Firmware/config.h
 				break
 				;;
 			"English only") 
 				LANGUAGES="EN_ONLY"
-				sed -i -- "s/^#define LANG_MODE *1/#define LANG_MODE              0/g" $SCRIPT_PATH/Firmware/config.h
 				break
 				;;
 			*)
@@ -487,47 +582,106 @@ if [ -z "$2" ] ; then
 		esac
 	done
 else
-	if [[ "$2" == "ALL" || "$2" == "EN_ONLY" ]] ; then
-		LANGUAGES=$2
+	if [[ "$language_flag" == "ALL" || "$language_flag" == "EN_ONLY" ]] ; then
+		LANGUAGES=$language_flag
 	else
 		echo "$(tput setaf 1)Language argument is wrong!$(tput sgr0)"
-		echo "Only $(tput setaf 2)'ALL'$(tput sgr0) or $(tput setaf 2)'EN_ONLY'$(tput sgr0) are allowed as 2nd argument!"
+		echo "Only $(tput setaf 2)'ALL'$(tput sgr0) or $(tput setaf 2)'EN_ONLY'$(tput sgr0) are allowed as language '-l' argument!"
 		exit 22
 	fi
 fi
-#Check if DEV_STATUS is selected via argument 3
-if [ ! -z "$3" ] ; then
-	if [[ "$3" == "GOLD" || "$3" == "RC" || "$3" == "BETA" || "$3" == "ALPHA" || "$3" == "DEVEL" || "$3" == "DEBUG" ]] ; then
-		DEV_STATUS_SELECTED=$3
+#Check if DEV_STATUS is selected via argument '-d'
+if [ ! -z "$devel_flag" ] ; then
+	if [[ "$devel_flag" == "GOLD" || "$devel_flag" == "RC" || "$devel_flag" == "BETA" || "$devel_flag" == "ALPHA" || "$devel_flag" == "DEVEL" || "$devel_flag" == "DEBUG" || "$devel_flag" == "UNKNOWN" ]] ; then
+		DEV_STATUS_SELECTED=$devel_flag
 	else
 		echo "$(tput setaf 1)Development argument is wrong!$(tput sgr0)"
-		echo "Only $(tput setaf 2)'GOLD', 'RC', 'BETA', 'ALPHA', 'DEVEL' or 'DEBUG'$(tput sgr0) are allowed as 3rd argument!$(tput sgr0)"
+		echo "Only $(tput setaf 2)'GOLD', 'RC', 'BETA', 'ALPHA', 'DEVEL', 'DEBUG' or 'UNKNOWN' $(tput sgr0) are allowed as devel '-d' argument!$(tput sgr0)"
 		exit 23
 	fi
 fi
 
+#Check if Build is selected via argument '-b'
+if [ ! -z "$build_flag" ] ; then
+	if [[ "$build_flag" == "Auto" && "$git_available" == "1" ]] ; then
+		echo "Build changed to $build_flag"
+		BUILD=$(git rev-list --count HEAD)
+	elif [[ $build_flag =~ ^[0-9]+$ ]] ; then
+		BUILD=$build_flag
+	else
+		echo "$(tput setaf 1)Build number argument is wrong!$(tput sgr0)"
+		echo "Only $(tput setaf 2)'Auto' (git needed) or numbers $(tput sgr0) are allowed as build '-b' argument!$(tput sgr0)"
+		exit 24
+
+	fi
+	echo "New Build number is: $BUILD"
+fi
+
+# check if script has been started with arguments 
+if [[ "$#" -eq  "0" || "$output_flag" == 1 ]] ; then
+	OUTPUT=1
+else
+	OUTPUT=0
+fi
+#echo "Output is:" $OUTPUT
+
+#Check git branch has changed
+if [ ! -z "git_available" ]; then
+	BRANCH=""
+	CLEAN_PF_FW_BUILD=0
+else
+	BRANCH=$(git branch --show-current)
+	echo "Current branch is:" $BRANCH
+	if [ ! -f "$SCRIPT_PATH/../PF-build.branch" ]; then
+		echo "$BRANCH" >| $SCRIPT_PATH/../PF-build.branch
+		echo "created PF-build.branch file"
+	else
+		PRE_BRANCH=$(cat "$SCRIPT_PATH/../PF-build.branch")
+		echo "Previous branch was:" $PRE_BRANCH
+		if [ ! "$BRANCH" == "$PRE_BRANCH" ] ; then
+			CLEAN_PF_FW_BUILD=1
+			echo "$BRANCH" >| $SCRIPT_PATH/../PF-build.branch
+		fi
+	fi
+fi
+
 #Set BUILD_ENV_PATH
-cd ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor || exit 24
+cd ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor || exit 25
 BUILD_ENV_PATH="$( pwd -P )"
 
 cd ../..
 
 #Checkif BUILD_PATH exists and if not creates it
 if [ ! -d "Prusa-Firmware-build" ]; then
-    mkdir Prusa-Firmware-build  || exit 25
+    mkdir Prusa-Firmware-build  || exit 26
 fi
 
 #Set the BUILD_PATH for Arduino IDE
-cd Prusa-Firmware-build || exit 26
+cd Prusa-Firmware-build || exit 27
 BUILD_PATH="$( pwd -P )"
 
+#Check git branch has changed
+if [ "$CLEAN_PF_FW_BUILD" == "1" ]; then
+	read -t 10 -p "Branch changed, cleaning Prusa-Firmware-build folder"
+	rm -r *
+else
+	echo "Nothing to clean up"
+fi
+
 for v in ${VARIANTS[*]}
 do
 	VARIANT=$(basename "$v" ".h")
 	# Find firmware version in Configuration.h file and use it to generate the hex filename
 	FW=$(grep --max-count=1 "\bFW_VERSION\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/  */ /g'|cut -d '"' -f2|sed 's/\.//g')
-	# Find build version in Configuration.h file and use it to generate the hex filename
-	BUILD=$(grep --max-count=1 "\bFW_COMMIT_NR\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/  */ /g'|cut -d ' ' -f3)
+	if [ -z "$BUILD" ] ; then	
+		# Find build version in Configuration.h file and use it to generate the hex filename
+		BUILD=$(grep --max-count=1 "\bFW_COMMIT_NR\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/  */ /g'|cut -d ' ' -f3)
+	else
+		# Find and replace build version in Configuration.h file
+		BUILD_ORG=$(grep --max-count=1 "\bFW_COMMIT_NR\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/  */ /g'|cut -d ' ' -f3)
+		echo "Original build number: $BUILD_ORG"
+		sed -i -- "s/^#define FW_COMMIT_NR.*/#define FW_COMMIT_NR $BUILD/g" $SCRIPT_PATH/Firmware/Configuration.h
+	fi
 	# Check if the motherboard is an EINSY and if so only one hex file will generated
 	MOTHERBOARD=$(grep --max-count=1 "\bMOTHERBOARD\b" $SCRIPT_PATH/Firmware/variants/$VARIANT.h | sed -e's/  */ /g' |cut -d ' ' -f3)
 	# Check development status
@@ -571,7 +725,7 @@ do
 	fi
 	#Prepare hex files folders
 	if [ ! -d "$SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD" ]; then
-		mkdir -p $SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD || exit 27
+		mkdir -p $SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD || exit 28
 	fi
 	OUTPUT_FOLDER="PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD"
 	
@@ -580,18 +734,24 @@ do
 		echo ""
 		ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex | xargs -n1 basename
 		echo "$(tput setaf 6)This hex file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)"
-		read -t 10 -p "Press Enter to continue..."
+		if [ $OUTPUT == "1" ] ; then
+			read -t 10 -p "Press Enter to continue..."
+		fi
 	elif [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex"  &&  "$LANGUAGES" == "EN_ONLY" ]]; then
 		echo ""
 		ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex | xargs -n1 basename
 		echo "$(tput setaf 6)This hex file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)"
-		read -t 10 -p "Press Enter to continue..."
+		if [ $OUTPUT == "1" ] ; then
+			read -t 10 -p "Press Enter to continue..."
+		fi
 	fi
 	if [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip"  &&  "$LANGUAGES" == "ALL" ]]; then
 		echo ""
 		ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip | xargs -n1 basename
 		echo "$(tput setaf 6)This zip file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)"
-		read -t 10 -p "Press Enter to continue..."
+		if [ $OUTPUT == "1" ] ; then
+			read -t 10 -p "Press Enter to continue..."
+		fi
 	fi
 	
 	#List some useful data
@@ -608,11 +768,13 @@ do
 
 	#Prepare Firmware to be compiled by copying variant as Configuration_prusa.h
 	if [ ! -f "$SCRIPT_PATH/Firmware/Configuration_prusa.h" ]; then
-		cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 28
+		cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 29
 	else
 		echo "$(tput setaf 6)Configuration_prusa.h already exist it will be overwritten in 10 seconds by the chosen variant.$(tput sgr 0)"
-		read -t 10 -p "Press Enter to continue..."
-		cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 28
+		if [ $OUTPUT == "1" ] ; then
+			read -t 10 -p "Press Enter to continue..."
+		fi
+		cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 29
 	fi
 
 	#Prepare Configuration.h to use the correct FW_DEV_VERSION to prevent LCD messages when connecting with OctoPrint
@@ -621,14 +783,16 @@ do
 	# set FW_REPOSITORY
 	sed -i -- 's/#define FW_REPOSITORY "Unknown"/#define FW_REPOSITORY "Prusa3d"/g' $SCRIPT_PATH/Firmware/Configuration.h
 
-	#Prepare english only or multilanguage version to be build
-	if [ $LANGUAGES == "ALL" ]; then
+	#Prepare English only or multi-language version to be build
+	if [ $LANGUAGES == "EN_ONLY" ]; then
 		echo " "
-		echo "Multi-language firmware will be built"
+		echo "English only language firmware will be built"
+		sed -i -- "s/^#define LANG_MODE *1/#define LANG_MODE              0/g" $SCRIPT_PATH/Firmware/config.h
 		echo " "
 	else
 		echo " "
-		echo "English only language firmware will be built"
+		echo "Multi-language firmware will be built"
+		sed -i -- "s/^#define LANG_MODE *0/#define LANG_MODE              1/g" $SCRIPT_PATH/Firmware/config.h
 		echo " "
 	fi
 		
@@ -651,9 +815,17 @@ do
 
 	echo "Start to build Prusa Firmware ..."
 	echo "Using variant $VARIANT$(tput setaf 3)"
-	sleep 2
+	if [ $OUTPUT == "1" ] ; then
+		sleep 2
+	fi
+
+	#New fresh PF-Firmware-build
+	if [ "$new_build_flag" == "1" ]; then
+		rm -r -f $BUILD_PATH/* || exit 36
+	fi
+
 	#$BUILD_ENV_PATH/arduino-builder -dump-prefs -debug-level 10 -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 14
-	$BUILD_ENV_PATH/arduino-builder -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 14
+	$BUILD_ENV_PATH/arduino-builder -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 30
 	echo "$(tput sgr 0)"
 
 	if [ $LANGUAGES ==  "ALL" ]; then
@@ -661,7 +833,9 @@ do
 
 		echo "Building multi language firmware" $MULTI_LANGUAGE_CHECK
 		echo "$(tput sgr 0)"
-		sleep 2
+		if [ $OUTPUT == "1" ] ; then
+			sleep 2
+		fi
 		cd $SCRIPT_PATH/lang
 		echo "$(tput setaf 3)"
 		./config.sh || exit 31
@@ -670,7 +844,9 @@ do
 		if [ -f "lang_en.tmp" ]; then
 			echo ""
 			echo "$(tput setaf 6)Previous lang build files already exist these will be cleaned up in 10 seconds.$(tput sgr 0)"
-			read -t 10 -p "Press Enter to continue..."
+			if [ $OUTPUT == "1" ] ; then
+				read -t 10 -p "Press Enter to continue..."
+			fi
 			echo "$(tput setaf 3)"
 			./lang-clean.sh
 			echo "$(tput sgr 0)"
@@ -678,7 +854,9 @@ do
 		if [ -f "progmem.out" ]; then
 			echo ""
 			echo "$(tput setaf 6)Previous firmware build files already exist these will be cleaned up in 10 seconds.$(tput sgr 0)"
-			read -t 10 -p "Press Enter to continue..."
+			if [ $OUTPUT == "1" ] ; then
+				read -t 10 -p "Press Enter to continue..."
+			fi
 			echo "$(tput setaf 3)"
 			./fw-clean.sh
 			echo "$(tput sgr 0)"
@@ -713,17 +891,21 @@ do
 			fi
 		fi
 		# Cleanup after build
-		echo "$(tput setaf 3)"
-		./fw-clean.sh || exit 34
-		./lang-clean.sh || exit 35
-		echo "$(tput sgr 0)"
+		if [[ -z "$clean_flag" || "$clean_flag" == "0" ]]; then
+			echo "$(tput setaf 3)"
+			./fw-clean.sh || exit 34
+			./lang-clean.sh || exit 35
+			echo "$(tput sgr 0)"
+		fi
 	else
 		echo "$(tput setaf 2)Copying English only firmware to PF-build-hex folder$(tput sgr 0)"
 		cp -f $BUILD_PATH/Firmware.ino.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex || exit 34
 	fi
 
 	# Cleanup Firmware
-	rm $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 36
+	if [[ -z "$prusa_flag" || "$prusa_flag" == "0" ]]; then
+		rm $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 36
+	fi
 	if find $SCRIPT_PATH/lang/ -name '*RAMBo10a*.txt' -printf 1 -quit | grep -q 1
 	then
 		rm $SCRIPT_PATH/lang/*RAMBo10a*.txt
@@ -740,13 +922,25 @@ do
 	then
 		rm $SCRIPT_PATH/lang/not_used.txt
 	fi
+
+	#New fresh PF-Firmware-build
+	if [ "$new_build_flag" == "1" ]; then
+		rm -r -f $BUILD_PATH/* || exit 36
+	fi
+
+	# Restore files to previous state
 	sed -i -- "s/^#define FW_DEV_VERSION FW_VERSION_$DEV_STATUS/#define FW_DEV_VERSION FW_VERSION_UNKNOWN/g" $SCRIPT_PATH/Firmware/Configuration.h
 	sed -i -- 's/^#define FW_REPOSITORY "Prusa3d"/#define FW_REPOSITORY "Unknown"/g' $SCRIPT_PATH/Firmware/Configuration.h
+	if [ ! -z "$BUILD_ORG" ] ; then
+		sed -i -- "s/^#define FW_COMMIT_NR.*/#define FW_COMMIT_NR $BUILD_ORG/g" $SCRIPT_PATH/Firmware/Configuration.h
+	fi
 	echo $MULTI_LANGUAGE_CHECK
 	#sed -i -- "s/^#define LANG_MODE * /#define LANG_MODE              $MULTI_LANGUAGE_CHECK/g" $SCRIPT_PATH/Firmware/config.h
 	sed -i -- "s/^#define LANG_MODE *1/#define LANG_MODE              ${MULTI_LANGUAGE_CHECK}/g" $SCRIPT_PATH/Firmware/config.h
 	sed -i -- "s/^#define LANG_MODE *0/#define LANG_MODE              ${MULTI_LANGUAGE_CHECK}/g" $SCRIPT_PATH/Firmware/config.h
-	sleep 5
+	if [ $OUTPUT == "1" ] ; then
+		sleep 5
+	fi
 done
 
 # Switch to hex path and list build files

+ 14 - 11
README.md

@@ -73,7 +73,7 @@ _Note: Multi language build is not supported._
 
 **c.** Modify compiler flags in `platform.txt` file
      
-* The platform.txt file can be found in Arduino instalation directory, or after Arduino has been updated at: `"C:\Users\(user)\AppData\Local\Arduino15\packages\arduino\hardware\avr\(version)"` If you can locate the file in both places, file from user profile is probably used.
+* The platform.txt file can be found in Arduino installation directory, or after Arduino has been updated at: `"C:\Users\(user)\AppData\Local\Arduino15\packages\arduino\hardware\avr\(version)"` If you can locate the file in both places, file from user profile is probably used.
        
 * Add `"-Wl,-u,vfprintf -lprintf_flt -lm"` to `"compiler.c.elf.flags="` before existing flag "-Wl,--gc-sections"  
 
@@ -111,10 +111,13 @@ _notes: Script and instructions contributed by 3d-gussner. Use at your own risk.
 - follow the Microsoft guide https://docs.microsoft.com/en-us/windows/wsl/install-win10
   You can also use the 'prepare_winbuild.ps1' powershell script with Administrator rights
 - Tested versions are at this moment
-  - Ubuntu other may different
+  - Ubuntu and Debian, other may different
   - After the installation and reboot please open your Ubuntu bash and do following steps
-  - run command `apt-get update`
-  - to install zip run `apt-get install zip`
+  - run command `sudo apt-get update`
+  - run command `sudo apt-get upgrade`
+  - to install zip run `sudo apt-get install zip`
+  - to install dos2unix run `sudo apt-get install dos2unix`
+  - run `dos2unix PF-build.sh` to convert the windows line endings to unix line endings
   - add few lines at the top of `~/.bashrc` by running `sudo nano ~/.bashrc`
 	
 	export OS="Linux"
@@ -122,11 +125,11 @@ _notes: Script and instructions contributed by 3d-gussner. Use at your own risk.
 	export GPG_TTY=$(tty)
 	
 	use `CRTL-X` to close nano and confirm to write the new entries
-  - restart Ubuntu bash
-Now your Ubuntu subsystem is ready to use the automatic `PF-build.sh` script and compile your firmware correctly
+  - restart Ubuntu/Debian bash
+  - Now your Ubuntu/Debian subsystem is ready to use the automatic `PF-build.sh` script and compile your firmware correctly
 
-#### Some Tips for Ubuntu
-- Linux is case sensetive so please don't forget to use capital letters where needed, like changing to a directory
+#### Some Tips for Ubuntu and Debian
+- Linux is case sensitive so please don't forget to use capital letters where needed, like changing to a directory
 - To change the path to your Prusa-Firmware location you downloaded and unzipped
   - Example: You files are under `C:\Users\<your-username>\Downloads\Prusa-Firmware-MK3`
   - use under Ubuntu the following command `cd /mnt/c/Users/<your-username>/Downloads/Prusa-Firmware-MK3`
@@ -137,7 +140,7 @@ Now your Ubuntu subsystem is ready to use the automatic `PF-build.sh` script and
 - If your Windows isn't in English the Paths may look different
   Example in other languages
   - English `/mnt/c/Users/<your-username>/Downloads/Prusa-Firmware-MK3` will be on a German Windows`/mnt/c/Anwender/<your-username>/Downloads/Prusa-Firmware-MK3`
-#### Compile Prusa-firmware with Ubuntu Linux subsystem installed
+#### Compile Prusa-firmware with Ubuntu/Debian Linux subsystem installed
 - open Ubuntu bash
 - change to your source code folder (case sensitive)
 - run `./PF-build.sh`
@@ -206,7 +209,7 @@ or visit https://prusa3d.github.io/Prusa-Firmware-Doc for doxygen generated outp
 # 5. FAQ
 Q:I built firmware using Arduino and I see "?" instead of numbers in printer user interface.
 
-A:Step 1.c was ommited or you updated Arduino and now platform.txt located somewhere in your user profile is used.
+A:Step 1.c was omitted or you updated Arduino and now platform.txt located somewhere in your user profile is used.
 
 Q:I built firmware using Arduino and printer now speaks Klingon (nonsense characters and symbols are displayed @^#$&*°;~ÿ)
 
@@ -218,4 +221,4 @@ A:Our production builds are 99.9% equivalent to https://github.com/prusa3d/Prusa
 
 Q:Why are build instructions for Arduino mess.
 
-Y:We are too lazy to ship proper board definition for Arduino. We plan to swich to cmake + ninja to be inherently multiplatform, easily integrate build tools, suport more IDEs, get 10 times shorter build times and be able to update compiler whenewer we want.
+Y:We are too lazy to ship proper board definition for Arduino. We plan to switch to cmake + ninja to be inherently multiplatform, easily integrate build tools, suport more IDEs, get 10 times shorter build times and be able to update compiler whenever we want.

+ 2 - 2
lang/lang-build.sh

@@ -5,7 +5,7 @@
 #
 # Input files:
 #  lang_en.txt or lang_en_xx.txt
-#  
+#
 # Output files:
 #  lang_xx.bin
 #
@@ -82,7 +82,7 @@ generate_binary()
  rm -f lang_$1.dat
  LNG=$1
  #check lang dictionary
- /usr/bin/env python lang-check.py $1 --no-warning
+ ./lang-check.py $1 --no-warning
  #create lang_xx.tmp - different processing for 'en' language
  if [ "$1" = "en" ]; then
   #remove comments and empty lines

+ 0 - 0
lang/lang-check.py


+ 41 - 35
lang/lang_en.txt

@@ -1,12 +1,21 @@
 #
 "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
 
-#MSG_03_OR_OLDER c=18
+#MSG_IR_03_OR_OLDER c=18
 " 0.3 or older"
 
-#MSG_04_OR_NEWER c=18
+# c=18
+"FS v0.3 or older"
+
+#MSG_IR_04_OR_NEWER c=18
 " 0.4 or newer"
 
+# c=18
+"FS v0.4 or newer"
+
+#MSG_IR_UNKNOWN c=18
+"unknown state"
+
 #MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
 " of 4"
 
@@ -94,7 +103,7 @@
 #MSG_BED
 "Bed"
 
-#MSG_MENU_BELT_STATUS c=18
+#MSG_BELT_STATUS c=18
 "Belt status"
 
 #MSG_RECOVER_PRINT c=20 r=2
@@ -154,7 +163,7 @@
 #
 "Crash detected. Resume print?"
 
-#
+#MSG_CRASH c=7
 "Crash"
 
 #MSG_CURRENT c=19 r=1
@@ -178,7 +187,7 @@
 #MSG_EXTRUDER_CORRECTION c=13
 "E-correct:"
 
-#MSG_EJECT_FILAMENT c=17 r=1
+#MSG_EJECT_FILAMENT c=16
 "Eject filament"
 
 #MSG_EJECTING_FILAMENT c=20 r=1
@@ -220,7 +229,7 @@
 #MSG_INFO_EXTRUDER c=18
 "Extruder info"
 
-#MSG_MOVE_E
+#MSG_EXTRUDER c=17
 "Extruder"
 
 #
@@ -238,14 +247,14 @@
 #MSG_SELFTEST_FAN c=20
 "Fan test"
 
-#MSG_FANS_CHECK
+#MSG_FANS_CHECK c=13
 "Fans check"
 
 #MSG_FSENSOR
 "Fil. sensor"
 
-# c=14
-"Filam. runouts"
+#MSG_FIL_RUNOUTS c=14
+"Fil. runouts  "
 
 #MSG_FILAMENT_CLEAN c=20 r=2
 "Filament extruding & with correct color?"
@@ -265,9 +274,6 @@
 #MSG_FS_ACTION c=10
 "FS Action"
 
-# c=18
-"FS v0.4 or newer"
-
 #MSG_FILE_INCOMPLETE c=20 r=3
 "File incomplete. Continue anyway?"
 
@@ -337,14 +343,14 @@
 #MSG_SELFTEST_CHECK_FSENSOR c=20
 "Checking sensors "
 
-#MSG_SELFTEST_CHECK_X c=20
-"Checking X axis  "
+#MSG_CHECKING_X c=20
+"Checking X axis"
 
-#MSG_SELFTEST_CHECK_Y c=20
-"Checking Y axis  "
+#MSG_CHECKING_Y c=20
+"Checking Y axis"
 
 #MSG_SELFTEST_CHECK_Z c=20
-"Checking Z axis  "
+"Checking Z axis"
 
 #MSG_CHOOSE_EXTRUDER c=20 r=1
 "Choose extruder:"
@@ -367,19 +373,19 @@
 #MSG_INSERT_FILAMENT c=20
 "Insert filament"
 
-#MSG_WIZARD_FILAMENT_LOADED c=20 r=2
+#MSG_FILAMENT_LOADED c=20 r=2
 "Is filament loaded?"
 
 #MSG_STEEL_SHEET_CHECK c=20 r=2
 "Is steel sheet on heatbed?"
 
-#
+#MSG_LAST_PRINT_FAILURES c=20
 "Last print failures"
 
 #
 "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
 
-#
+#MSG_LAST_PRINT c=18
 "Last print"
 
 #MSG_SELFTEST_EXTRUDER_FAN c=20
@@ -430,7 +436,7 @@
 #MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
 "Measuring reference height of calibration point"
 
-#MSG_MESH_BED_LEVELING
+#MSG_MESH_BED_LEVELING c=18
 "Mesh Bed Leveling"
 
 #MSG_MMU_OK_RESUMING_POSITION c=20 r=4
@@ -442,13 +448,13 @@
 #
 "Measured skew"
 
-#
+#MSG_MMU_FAILS c=14
 "MMU fails"
 
 #
 "MMU load failed     "
 
-#
+#MSG_MMU_LOAD_FAILS c=14
 "MMU load fails"
 
 #MSG_MMU_OK_RESUMING c=20 r=4
@@ -619,7 +625,7 @@
 #MSG_FS_PAUSE c=5
 "Pause"
 
-#
+#MSG_POWER_FAILURES c=14
 "Power failures"
 
 #MSG_PRINT_ABORTED c=20
@@ -670,6 +676,9 @@
 # c=20 r=4
 "Please unload the filament first, then repeat this action."
 
+# c=20 r=4
+"Please check the IR sensor connection, unload filament if present."
+
 #MSG_RECOVERING_PRINT c=20
 "Recovering print    "
 
@@ -682,10 +691,10 @@
 #MSG_CALIBRATE_BED_RESET
 "Reset XYZ calibr."
 
-#MSG_BED_CORRECTION_RESET
+#MSG_RESET c=14
 "Reset"
 
-#MSG_RESUME_PRINT
+#MSG_RESUME_PRINT c=18
 "Resume print"
 
 #MSG_RESUMING_PRINT c=20
@@ -862,7 +871,7 @@
 #
 "Unload"
 
-#
+#MSG_TOTAL_FAILURES c=20
 "Total failures"
 
 #
@@ -877,7 +886,7 @@
 #MSG_UNLOADING_FILAMENT c=20 r=1
 "Unloading filament"
 
-#
+#MSG_TOTAL c=6
 "Total"
 
 #MSG_USED c=19 r=1
@@ -1003,7 +1012,7 @@
 #MSG_WARN
 "Warn"
 
-#
+#MSG_HW_SETUP c=18
 "HW Setup"
 
 #
@@ -1015,9 +1024,6 @@
 #MSG_MESH
 "Mesh"
 
-#
-"Mesh bed leveling"
-
 #
 "MK3S firmware detected on MK3 printer"
 
@@ -1039,10 +1045,10 @@
 #
 "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
 
-#
+#MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5
 "G-code sliced for a different printer type. Continue?"
 
-#
+#MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=6
 "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
 
 #
@@ -1084,7 +1090,7 @@
 #MSG_SOUND_BLIND
 "Assist"
 
-# c=18
+#MSG_STEEL_SHEET c=18
 "Steel sheets"
 
 #MSG_Z_CORRECTION c=13

+ 46 - 38
lang/lang_en_cz.txt

@@ -2,14 +2,26 @@
 "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
 "[%.7s]Doladeni Z\x0auz nastaveno, pouzit\x0anebo reset od nuly?\x0a%cPokracovat%cReset"
 
-#MSG_03_OR_OLDER c=18
+#MSG_IR_03_OR_OLDER c=18
 " 0.3 or older"
 " 0.3 nebo starsi"
 
-#MSG_04_OR_NEWER c=18
+# c=18
+"FS v0.3 or older"
+"FS 0.3 nebo starsi"
+
+#MSG_IR_04_OR_NEWER c=18
 " 0.4 or newer"
 " 0.4 nebo novejsi"
 
+# c=18
+"FS v0.4 or newer"
+"FS 0.4 a novejsi"
+
+#MSG_IR_UNKNOWN c=18
+"unknown state"
+"neznamy stav"
+
 #MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
 " of 4"
 " z 4"
@@ -126,7 +138,7 @@
 "Bed"
 "Podlozka"
 
-#MSG_MENU_BELT_STATUS c=18
+#MSG_BELT_STATUS c=18
 "Belt status"
 "Stav remenu"
 
@@ -206,7 +218,7 @@
 "Crash detected. Resume print?"
 "Detekovan naraz. Obnovit tisk?"
 
-#
+#MSG_CRASH c=7
 "Crash"
 "Naraz"
 
@@ -238,9 +250,9 @@
 "E-correct:"
 "Korekce E:"
 
-#MSG_EJECT_FILAMENT c=17 r=1
+#MSG_EJECT_FILAMENT c=16
 "Eject filament"
-"Vysunout filament"
+"Vysunout fil."
 
 #MSG_EJECTING_FILAMENT c=20 r=1
 "Ejecting filament"
@@ -294,7 +306,7 @@
 "Extruder info"
 "\x00"
 
-#MSG_MOVE_E
+#MSG_EXTRUDER c=17
 "Extruder"
 "\x00"
 
@@ -318,7 +330,7 @@
 "Fan test"
 "Test ventilatoru"
 
-#MSG_FANS_CHECK
+#MSG_FANS_CHECK c=13
 "Fans check"
 "Kontr. vent."
 
@@ -326,8 +338,8 @@
 "Fil. sensor"
 "Fil. senzor"
 
-# c=14
-"Filam. runouts"
+#MSG_FIL_RUNOUTS c=14
+"Fil. runouts  "
 "Vypadky filam."
 
 #MSG_FILAMENT_CLEAN c=20 r=2
@@ -354,10 +366,6 @@
 "FS Action"
 "FS reakce"
 
-# c=18
-"FS v0.4 or newer"
-"FS v0.4 a novejsi"
-
 #MSG_FILE_INCOMPLETE c=20 r=3
 "File incomplete. Continue anyway?"
 "Soubor nekompletni. Pokracovat?"
@@ -450,16 +458,16 @@
 "Checking sensors "
 "Kontrola senzoru"
 
-#MSG_SELFTEST_CHECK_X c=20
-"Checking X axis  "
+#MSG_CHECKING_X c=20
+"Checking X axis"
 "Kontrola osy X"
 
-#MSG_SELFTEST_CHECK_Y c=20
-"Checking Y axis  "
+#MSG_CHECKING_Y c=20
+"Checking Y axis"
 "Kontrola osy Y"
 
 #MSG_SELFTEST_CHECK_Z c=20
-"Checking Z axis  "
+"Checking Z axis"
 "Kontrola osy Z"
 
 #MSG_CHOOSE_EXTRUDER c=20 r=1
@@ -490,7 +498,7 @@
 "Insert filament"
 "Vlozte filament"
 
-#MSG_WIZARD_FILAMENT_LOADED c=20 r=2
+#MSG_FILAMENT_LOADED c=20 r=2
 "Is filament loaded?"
 "Je filament zaveden?"
 
@@ -498,7 +506,7 @@
 "Is steel sheet on heatbed?"
 "Je tiskovy plat na podlozce?"
 
-#
+#MSG_LAST_PRINT_FAILURES c=20
 "Last print failures"
 "Selhani posl. tisku"
 
@@ -506,7 +514,7 @@
 "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
 "Mate-li vice tiskovych platu, kalibrujte je v menu Nastaveni - HW nastaveni - Tiskove platy"
 
-#
+#MSG_LAST_PRINT c=18
 "Last print"
 "Posledni tisk"
 
@@ -574,7 +582,7 @@
 "Measuring reference height of calibration point"
 "Merim referencni vysku kalibracniho bodu"
 
-#MSG_MESH_BED_LEVELING
+#MSG_MESH_BED_LEVELING c=18
 "Mesh Bed Leveling"
 "\x00"
 
@@ -590,7 +598,7 @@
 "Measured skew"
 "Merene zkoseni"
 
-#
+#MSG_MMU_FAILS c=14
 "MMU fails"
 "Selhani MMU"
 
@@ -598,7 +606,7 @@
 "MMU load failed     "
 "Zavedeni MMU selhalo"
 
-#
+#MSG_MMU_LOAD_FAILS c=14
 "MMU load fails"
 "MMU selhani zavadeni"
 
@@ -826,7 +834,7 @@
 "Pause"
 "\x00"
 
-#
+#MSG_POWER_FAILURES c=14
 "Power failures"
 "Vypadky proudu"
 
@@ -894,6 +902,10 @@
 "Please unload the filament first, then repeat this action."
 "Prosim vyjmete filament a zopakujte tuto akci"
 
+# c=20 r=4
+"Please check the IR sensor connection, unload filament if present."
+"Prosim zkontrolujte zapojeni IR senzoru a vyjmuty filament"
+
 #MSG_RECOVERING_PRINT c=20
 "Recovering print    "
 "Obnovovani tisku    "
@@ -910,11 +922,11 @@
 "Reset XYZ calibr."
 "Reset XYZ kalibr."
 
-#MSG_BED_CORRECTION_RESET
+#MSG_RESET c=14
 "Reset"
 "\x00"
 
-#MSG_RESUME_PRINT
+#MSG_RESUME_PRINT c=18
 "Resume print"
 "Pokracovat"
 
@@ -1150,7 +1162,7 @@
 "Unload"
 "Vysunout"
 
-#
+#MSG_TOTAL_FAILURES c=20
 "Total failures"
 "Celkem selhani"
 
@@ -1170,7 +1182,7 @@
 "Unloading filament"
 "Vysouvam filament"
 
-#
+#MSG_TOTAL c=6
 "Total"
 "Celkem"
 
@@ -1338,7 +1350,7 @@
 "Warn"
 "Varovat"
 
-#
+#MSG_HW_SETUP c=18
 "HW Setup"
 "HW nastaveni"
 
@@ -1354,10 +1366,6 @@
 "Mesh"
 "\x00"
 
-#
-"Mesh bed leveling"
-"Mesh Bed Leveling"
-
 #
 "MK3S firmware detected on MK3 printer"
 "MK3S firmware detekovan na tiskarne MK3"
@@ -1386,11 +1394,11 @@
 "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
 "\x00"
 
-#
+#MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5
 "G-code sliced for a different printer type. Continue?"
 "G-code je pripraven pro jiny typ tiskarny. Pokracovat?"
 
-#
+#MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=6
 "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
 "G-code je pripraven pro jiny typ tiskarny. Prosim preslicujte model znovu. Tisk zrusen."
 
@@ -1446,7 +1454,7 @@
 "Assist"
 "Asist."
 
-# c=18
+#MSG_STEEL_SHEET c=18
 "Steel sheets"
 "Tiskove platy"
 

+ 49 - 41
lang/lang_en_de.txt

@@ -2,14 +2,26 @@
 "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
 "[%.7s]Z Einstell.\x0aWert gesetzt,weiter\x0aoder mit 0 beginnen?\x0a%cWeiter%cNeu beginnen"
 
-#MSG_03_OR_OLDER c=18
+#MSG_IR_03_OR_OLDER c=18
 " 0.3 or older"
 " 0.3 oder aelter"
 
-#MSG_04_OR_NEWER c=18
+# c=18
+"FS v0.3 or older"
+"FS 0.3 oder aelter"
+
+#MSG_IR_04_OR_NEWER c=18
 " 0.4 or newer"
 " 0.4 oder neuer"
 
+# c=18
+"FS v0.4 or newer"
+"FS 0.4 oder neuer"
+
+#MSG_IR_UNKNOWN c=18
+"unknown state"
+"Status unbekannt"
+
 #MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
 " of 4"
 " von 4"
@@ -126,7 +138,7 @@
 "Bed"
 "Bett"
 
-#MSG_MENU_BELT_STATUS c=18
+#MSG_BELT_STATUS c=18
 "Belt status"
 "Gurtstatus"
 
@@ -206,7 +218,7 @@
 "Crash detected. Resume print?"
 "Crash erkannt. Druck fortfuehren?"
 
-#
+#MSG_CRASH c=7
 "Crash"
 "\x00"
 
@@ -238,7 +250,7 @@
 "E-correct:"
 "E-Korrektur:"
 
-#MSG_EJECT_FILAMENT c=17 r=1
+#MSG_EJECT_FILAMENT c=16
 "Eject filament"
 "Filamentauswurf"
 
@@ -294,7 +306,7 @@
 "Extruder info"
 "Extruder Info"
 
-#MSG_MOVE_E
+#MSG_EXTRUDER c=17
 "Extruder"
 "\x00"
 
@@ -318,7 +330,7 @@
 "Fan test"
 "Lueftertest"
 
-#MSG_FANS_CHECK
+#MSG_FANS_CHECK c=13
 "Fans check"
 "Luefter Chk."
 
@@ -326,9 +338,9 @@
 "Fil. sensor"
 "Fil. Sensor"
 
-# c=14
-"Filam. runouts"
-"Filam. Maengel"
+#MSG_FIL_RUNOUTS c=14
+"Fil. runouts  "
+"Fil. Maengel  "
 
 #MSG_FILAMENT_CLEAN c=20 r=2
 "Filament extruding & with correct color?"
@@ -354,10 +366,6 @@
 "FS Action"
 "FS Aktion"
 
-# c=18
-"FS v0.4 or newer"
-"FS v0.4 oder neuer"
-
 #MSG_FILE_INCOMPLETE c=20 r=3
 "File incomplete. Continue anyway?"
 "Datei unvollstaendig Trotzdem fortfahren?"
@@ -450,17 +458,17 @@
 "Checking sensors "
 "Pruefe Sensoren "
 
-#MSG_SELFTEST_CHECK_X c=20
-"Checking X axis  "
-"Pruefe X Achse "
+#MSG_CHECKING_X c=20
+"Checking X axis"
+"Pruefe X Achse"
 
-#MSG_SELFTEST_CHECK_Y c=20
-"Checking Y axis  "
-"Pruefe Y Achse "
+#MSG_CHECKING_Y c=20
+"Checking Y axis"
+"Pruefe Y Achse"
 
 #MSG_SELFTEST_CHECK_Z c=20
-"Checking Z axis  "
-"Pruefe Z Achse "
+"Checking Z axis"
+"Pruefe Z Achse"
 
 #MSG_CHOOSE_EXTRUDER c=20 r=1
 "Choose extruder:"
@@ -490,7 +498,7 @@
 "Insert filament"
 "Filament einlegen"
 
-#MSG_WIZARD_FILAMENT_LOADED c=20 r=2
+#MSG_FILAMENT_LOADED c=20 r=2
 "Is filament loaded?"
 "Ist das Filament geladen?"
 
@@ -498,7 +506,7 @@
 "Is steel sheet on heatbed?"
 "Liegt das Stahlblech auf dem Heizbett?"
 
-#
+#MSG_LAST_PRINT_FAILURES c=20
 "Last print failures"
 "Letzte Druckfehler"
 
@@ -506,7 +514,7 @@
 "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
 "Wenn Sie zusaetzliche Stahlbleche haben, kalibrieren Sie deren Voreinstellungen unter Einstellungen - HW Setup - Stahlbleche."
 
-#
+#MSG_LAST_PRINT c=18
 "Last print"
 "Letzter Druck"
 
@@ -574,7 +582,7 @@
 "Measuring reference height of calibration point"
 "Messen der Referenzhoehe des Kalibrierpunktes"
 
-#MSG_MESH_BED_LEVELING
+#MSG_MESH_BED_LEVELING c=18
 "Mesh Bed Leveling"
 "MeshBett Ausgleich"
 
@@ -590,7 +598,7 @@
 "Measured skew"
 "Schraeglauf"
 
-#
+#MSG_MMU_FAILS c=14
 "MMU fails"
 "MMU Fehler"
 
@@ -598,7 +606,7 @@
 "MMU load failed     "
 "MMU Ladefehler"
 
-#
+#MSG_MMU_LOAD_FAILS c=14
 "MMU load fails"
 "MMU Ladefehler"
 
@@ -826,7 +834,7 @@
 "Pause"
 "\x00"
 
-#
+#MSG_POWER_FAILURES c=14
 "Power failures"
 "Netzfehler"
 
@@ -894,6 +902,10 @@
 "Please unload the filament first, then repeat this action."
 "Bitte entladen Sie erst das Filament und versuchen Sie es nochmal."
 
+# c=20 r=4
+"Please check the IR sensor connection, unload filament if present."
+"Bitte IR Sensor Verbindungen ueber- pruefen und Filament entladen ist."
+
 #MSG_RECOVERING_PRINT c=20
 "Recovering print    "
 "Druck wiederherst   "
@@ -910,11 +922,11 @@
 "Reset XYZ calibr."
 "Reset XYZ Kalibr."
 
-#MSG_BED_CORRECTION_RESET
+#MSG_RESET c=14
 "Reset"
 "Ruecksetzen"
 
-#MSG_RESUME_PRINT
+#MSG_RESUME_PRINT c=18
 "Resume print"
 "Druck fortsetzen"
 
@@ -1150,7 +1162,7 @@
 "Unload"
 "Entladen"
 
-#
+#MSG_TOTAL_FAILURES c=20
 "Total failures"
 "Gesamte Fehler"
 
@@ -1170,7 +1182,7 @@
 "Unloading filament"
 "Filament auswerfen"
 
-#
+#MSG_TOTAL c=6
 "Total"
 "Gesamt"
 
@@ -1338,7 +1350,7 @@
 "Warn"
 "Warnen"
 
-#
+#MSG_HW_SETUP c=18
 "HW Setup"
 "HW Einstellungen"
 
@@ -1354,10 +1366,6 @@
 "Mesh"
 "Gitter"
 
-#
-"Mesh bed leveling"
-"MeshBett Ausgleich"
-
 #
 "MK3S firmware detected on MK3 printer"
 "MK3S-Firmware auf MK3-Drucker erkannt"
@@ -1386,11 +1394,11 @@
 "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
 "G-Code ist fuer einen anderen Level geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen."
 
-#
+#MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5
 "G-code sliced for a different printer type. Continue?"
 "G-Code ist fuer einen anderen Drucker geslict. Fortfahren?"
 
-#
+#MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=6
 "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
 "G-Code ist fuer einen anderen Drucker geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen."
 
@@ -1446,7 +1454,7 @@
 "Assist"
 "\x00"
 
-# c=18
+#MSG_STEEL_SHEET c=18
 "Steel sheets"
 "Stahlbleche"
 

+ 48 - 40
lang/lang_en_es.txt

@@ -2,14 +2,26 @@
 "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
 "[%.7s]Ajuste Z\x0aAjustado, continuar\x0ao empezar de nuevo?\x0a%cContinuar%cRepetir"
 
-#MSG_03_OR_OLDER c=18
+#MSG_IR_03_OR_OLDER c=18
 " 0.3 or older"
 " 0.3 o mayor"
 
-#MSG_04_OR_NEWER c=18
+# c=18
+"FS v0.3 or older"
+"FS 0.3 o mayor"
+
+#MSG_IR_04_OR_NEWER c=18
 " 0.4 or newer"
 " 0.4 o mas nueva"
 
+# c=18
+"FS v0.4 or newer"
+"FS 0.4 o mas nueva"
+
+#MSG_IR_UNKNOWN c=18
+"unknown state"
+"estado desconocido"
+
 #MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
 " of 4"
 " de 4"
@@ -126,7 +138,7 @@
 "Bed"
 "Base"
 
-#MSG_MENU_BELT_STATUS c=18
+#MSG_BELT_STATUS c=18
 "Belt status"
 "Estado de correa"
 
@@ -206,7 +218,7 @@
 "Crash detected. Resume print?"
 "Choque detectado. Continuar impresion?"
 
-#
+#MSG_CRASH c=7
 "Crash"
 "Choque"
 
@@ -238,7 +250,7 @@
 "E-correct:"
 "Corregir-E:"
 
-#MSG_EJECT_FILAMENT c=17 r=1
+#MSG_EJECT_FILAMENT c=16
 "Eject filament"
 "Expulsar fil."
 
@@ -294,7 +306,7 @@
 "Extruder info"
 "Info. del extrusor"
 
-#MSG_MOVE_E
+#MSG_EXTRUDER c=17
 "Extruder"
 "Extruir"
 
@@ -318,7 +330,7 @@
 "Fan test"
 "Test ventiladores"
 
-#MSG_FANS_CHECK
+#MSG_FANS_CHECK c=13
 "Fans check"
 "Comprob.vent"
 
@@ -326,9 +338,9 @@
 "Fil. sensor"
 "Sensor Fil."
 
-# c=14
-"Filam. runouts"
-"Filam. acabado"
+#MSG_FIL_RUNOUTS c=14
+"Fil. runouts  "
+"Fil. acabado  "
 
 #MSG_FILAMENT_CLEAN c=20 r=2
 "Filament extruding & with correct color?"
@@ -354,10 +366,6 @@
 "FS Action"
 "FS accion"
 
-# c=18
-"FS v0.4 or newer"
-"FS v0.4 o +nueva"
-
 #MSG_FILE_INCOMPLETE c=20 r=3
 "File incomplete. Continue anyway?"
 "Archivo incompleto. ?Continuar de todos modos?"
@@ -450,16 +458,16 @@
 "Checking sensors "
 "Comprobando sensores"
 
-#MSG_SELFTEST_CHECK_X c=20
-"Checking X axis  "
+#MSG_CHECKING_X c=20
+"Checking X axis"
 "Control sensor X"
 
-#MSG_SELFTEST_CHECK_Y c=20
-"Checking Y axis  "
+#MSG_CHECKING_Y c=20
+"Checking Y axis"
 "Control sensor Y"
 
 #MSG_SELFTEST_CHECK_Z c=20
-"Checking Z axis  "
+"Checking Z axis"
 "Control sensor Z"
 
 #MSG_CHOOSE_EXTRUDER c=20 r=1
@@ -490,7 +498,7 @@
 "Insert filament"
 "Introducir filamento"
 
-#MSG_WIZARD_FILAMENT_LOADED c=20 r=2
+#MSG_FILAMENT_LOADED c=20 r=2
 "Is filament loaded?"
 "Esta el filamento cargado?"
 
@@ -498,15 +506,15 @@
 "Is steel sheet on heatbed?"
 "?Esta colocada la lamina sobre la base"
 
-#
+#MSG_LAST_PRINT_FAILURES c=20
 "Last print failures"
-"Ultimas impresiones fallidas"
+"Ultimos imp. fallos"
 
 #
 "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
 "Si tienes planchas de acero adicionales, calibra sus ajustes en Ajustes - Ajustes HW - Planchas acero."
 
-#
+#MSG_LAST_PRINT c=18
 "Last print"
 "Ultima impresion"
 
@@ -574,9 +582,9 @@
 "Measuring reference height of calibration point"
 "Midiendo altura del punto de calibracion"
 
-#MSG_MESH_BED_LEVELING
+#MSG_MESH_BED_LEVELING c=18
 "Mesh Bed Leveling"
-"Nivelacion Mesh Level"
+"Nivela. Mesh Level"
 
 #MSG_MMU_OK_RESUMING_POSITION c=20 r=4
 "MMU OK. Resuming position..."
@@ -590,7 +598,7 @@
 "Measured skew"
 "Desviacion med:"
 
-#
+#MSG_MMU_FAILS c=14
 "MMU fails"
 "Fallos MMU"
 
@@ -598,7 +606,7 @@
 "MMU load failed     "
 "Carga MMU fallida"
 
-#
+#MSG_MMU_LOAD_FAILS c=14
 "MMU load fails"
 "Carga MMU falla"
 
@@ -826,7 +834,7 @@
 "Pause"
 "Pausa"
 
-#
+#MSG_POWER_FAILURES c=14
 "Power failures"
 "Cortes de energia"
 
@@ -894,6 +902,10 @@
 "Please unload the filament first, then repeat this action."
 "Primero descargue el filamento, luego repita esta accion."
 
+# c=20 r=4
+"Please check the IR sensor connection, unload filament if present."
+"Por favor comprueba la conexion del IR sensor y filamento esta descargado."
+
 #MSG_RECOVERING_PRINT c=20
 "Recovering print    "
 "Recuper. impresion  "
@@ -910,11 +922,11 @@
 "Reset XYZ calibr."
 "\x00"
 
-#MSG_BED_CORRECTION_RESET
+#MSG_RESET c=14
 "Reset"
 "\x00"
 
-#MSG_RESUME_PRINT
+#MSG_RESUME_PRINT c=18
 "Resume print"
 "Reanudar impres."
 
@@ -1150,7 +1162,7 @@
 "Unload"
 "Descargar"
 
-#
+#MSG_TOTAL_FAILURES c=20
 "Total failures"
 "Fallos totales"
 
@@ -1170,7 +1182,7 @@
 "Unloading filament"
 "Soltando filamento"
 
-#
+#MSG_TOTAL c=6
 "Total"
 "\x00"
 
@@ -1338,7 +1350,7 @@
 "Warn"
 "Aviso"
 
-#
+#MSG_HW_SETUP c=18
 "HW Setup"
 "Configuracion HW"
 
@@ -1354,10 +1366,6 @@
 "Mesh"
 "Malla"
 
-#
-"Mesh bed leveling"
-"Nivelacion Malla Base"
-
 #
 "MK3S firmware detected on MK3 printer"
 "Firmware MK3S detectado en impresora MK3"
@@ -1386,11 +1394,11 @@
 "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
 "Codigo G laminado para un nivel diferente. Por favor relamina el modelo de nuevo. Impresion cancelada."
 
-#
+#MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5
 "G-code sliced for a different printer type. Continue?"
 "Codigo G laminado para un tipo de impresora diferente. ?Continuar?"
 
-#
+#MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=6
 "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
 "Codigo G laminado para una impresora diferente. Por favor relamina el modelo de nuevo. Impresion cancelada."
 
@@ -1446,7 +1454,7 @@
 "Assist"
 "Asistido"
 
-# c=18
+#MSG_STEEL_SHEET c=18
 "Steel sheets"
 "Lamina de acero"
 

+ 46 - 38
lang/lang_en_fr.txt

@@ -2,14 +2,26 @@
 "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
 "[%.7s]Ajust. du Z\x0aValeur enreg, contin\x0aou depart a zero?\x0a%cContinuer%cReset"
 
-#MSG_03_OR_OLDER c=18
+#MSG_IR_03_OR_OLDER c=18
 " 0.3 or older"
 " 0.3 ou +ancien"
 
-#MSG_04_OR_NEWER c=18
+# c=18
+"FS v0.3 or older"
+"FS v0.3 ou +ancien"
+
+#MSG_IR_04_OR_NEWER c=18
 " 0.4 or newer"
 " 0.4 ou +recent"
 
+# c=18
+"FS v0.4 or newer"
+"FS v0.4 ou +recent"
+
+#MSG_IR_UNKNOWN c=18
+"unknown state"
+"Etat inconnu"
+
 #MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
 " of 4"
 " de 4"
@@ -126,7 +138,7 @@
 "Bed"
 "Lit"
 
-#MSG_MENU_BELT_STATUS c=18
+#MSG_BELT_STATUS c=18
 "Belt status"
 "Statut courroie"
 
@@ -206,7 +218,7 @@
 "Crash detected. Resume print?"
 "Crash detecte. Poursuivre l'impression?"
 
-#
+#MSG_CRASH c=7
 "Crash"
 "\x00"
 
@@ -238,7 +250,7 @@
 "E-correct:"
 "Correct-E:"
 
-#MSG_EJECT_FILAMENT c=17 r=1
+#MSG_EJECT_FILAMENT c=16
 "Eject filament"
 "Remonter le fil."
 
@@ -294,7 +306,7 @@
 "Extruder info"
 "Infos extrudeur"
 
-#MSG_MOVE_E
+#MSG_EXTRUDER c=17
 "Extruder"
 "Extrudeur"
 
@@ -318,7 +330,7 @@
 "Fan test"
 "Test du ventilateur"
 
-#MSG_FANS_CHECK
+#MSG_FANS_CHECK c=13
 "Fans check"
 "Verif vent."
 
@@ -326,9 +338,9 @@
 "Fil. sensor"
 "Capteur Fil."
 
-# c=14
-"Filam. runouts"
-"Fins filament"
+#MSG_FIL_RUNOUTS c=14
+"Fil. runouts  "
+"Fins filament "
 
 #MSG_FILAMENT_CLEAN c=20 r=2
 "Filament extruding & with correct color?"
@@ -354,10 +366,6 @@
 "FS Action"
 "\x00"
 
-# c=18
-"FS v0.4 or newer"
-"FS v0.4 ou +recent"
-
 #MSG_FILE_INCOMPLETE c=20 r=3
 "File incomplete. Continue anyway?"
 "Fichier incomplet. Continuer qd meme?"
@@ -450,16 +458,16 @@
 "Checking sensors "
 "Verif. des capteurs"
 
-#MSG_SELFTEST_CHECK_X c=20
-"Checking X axis  "
+#MSG_CHECKING_X c=20
+"Checking X axis"
 "Verification axe X"
 
-#MSG_SELFTEST_CHECK_Y c=20
-"Checking Y axis  "
+#MSG_CHECKING_Y c=20
+"Checking Y axis"
 "Verification axe Y"
 
 #MSG_SELFTEST_CHECK_Z c=20
-"Checking Z axis  "
+"Checking Z axis"
 "Verification axe Z"
 
 #MSG_CHOOSE_EXTRUDER c=20 r=1
@@ -490,7 +498,7 @@
 "Insert filament"
 "Inserez le filament"
 
-#MSG_WIZARD_FILAMENT_LOADED c=20 r=2
+#MSG_FILAMENT_LOADED c=20 r=2
 "Is filament loaded?"
 "Fil. est-il charge?"
 
@@ -498,7 +506,7 @@
 "Is steel sheet on heatbed?"
 "Est la plaque sur le plat. chauffant?"
 
-#
+#MSG_LAST_PRINT_FAILURES c=20
 "Last print failures"
 "Echecs derniere imp."
 
@@ -506,7 +514,7 @@
 "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
 "Si vous avez d'autres feuilles d'acier,  calibrez leurs pre-reglages dans Reglages - Config HW - Plaque en acier."
 
-#
+#MSG_LAST_PRINT c=18
 "Last print"
 "Derniere impres."
 
@@ -574,7 +582,7 @@
 "Measuring reference height of calibration point"
 "Je mesure la hauteur de reference du point de calibrage"
 
-#MSG_MESH_BED_LEVELING
+#MSG_MESH_BED_LEVELING c=18
 "Mesh Bed Leveling"
 "\x00"
 
@@ -590,7 +598,7 @@
 "Measured skew"
 "Deviat.mesuree"
 
-#
+#MSG_MMU_FAILS c=14
 "MMU fails"
 "Echecs MMU"
 
@@ -598,7 +606,7 @@
 "MMU load failed     "
 "Echec chargement MMU"
 
-#
+#MSG_MMU_LOAD_FAILS c=14
 "MMU load fails"
 "Echecs charg. MMU"
 
@@ -826,7 +834,7 @@
 "Pause"
 "\x00"
 
-#
+#MSG_POWER_FAILURES c=14
 "Power failures"
 "Coup.de courant"
 
@@ -894,6 +902,10 @@
 "Please unload the filament first, then repeat this action."
 "SVP, dechargez le filament et reessayez."
 
+# c=20 r=4
+"Please check the IR sensor connection, unload filament if present."
+"SVP, verifiez la connexion du capteur IR et decharge le filament."
+
 #MSG_RECOVERING_PRINT c=20
 "Recovering print    "
 "Recup. impression   "
@@ -910,11 +922,11 @@
 "Reset XYZ calibr."
 "Reinit. calib. XYZ"
 
-#MSG_BED_CORRECTION_RESET
+#MSG_RESET c=14
 "Reset"
 "Reinitialiser"
 
-#MSG_RESUME_PRINT
+#MSG_RESUME_PRINT c=18
 "Resume print"
 "Reprendre impression"
 
@@ -1150,7 +1162,7 @@
 "Unload"
 "Decharger"
 
-#
+#MSG_TOTAL_FAILURES c=20
 "Total failures"
 "Total des echecs"
 
@@ -1170,7 +1182,7 @@
 "Unloading filament"
 "Dechargement fil."
 
-#
+#MSG_TOTAL c=6
 "Total"
 "Totale"
 
@@ -1338,7 +1350,7 @@
 "Warn"
 "Avert"
 
-#
+#MSG_HW_SETUP c=18
 "HW Setup"
 "Config HW"
 
@@ -1354,10 +1366,6 @@
 "Mesh"
 "\x00"
 
-#
-"Mesh bed leveling"
-"\x00"
-
 #
 "MK3S firmware detected on MK3 printer"
 "Firmware MK3S detecte sur imprimante MK3"
@@ -1386,11 +1394,11 @@
 "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
 "Le G-code a ete prepare pour un niveau different. Veuillez decouper le modele a nouveau. L'impression a ete annulee."
 
-#
+#MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5
 "G-code sliced for a different printer type. Continue?"
 "Le G-code a ete prepare pour une autre version de l'imprimante. Continuer?"
 
-#
+#MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=6
 "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
 "Le G-code a ete prepare pour une autre version de l'imprimante. Veuillez decouper le modele a nouveau. L'impression a ete annulee."
 
@@ -1446,7 +1454,7 @@
 "Assist"
 "\x00"
 
-# c=18
+#MSG_STEEL_SHEET c=18
 "Steel sheets"
 "Plaques en acier"
 

+ 47 - 39
lang/lang_en_it.txt

@@ -6,10 +6,22 @@
 " 0.3 or older"
 " 0.3 o inferiore"
 
-#MSG_04_OR_NEWER c=18
+# c=18
+"FS v0.3 or older"
+"FS 0.3 o inferiore"
+
+#MSG_IR_04_OR_NEWER c=18
 " 0.4 or newer"
 " 0.4 o superiore"
 
+# c=18
+"FS v0.4 or newer"
+"FS 0.4 o superiore"
+
+#MSG_IR_UNKNOWN c=18
+"unknown state"
+"stato sconosciuto"
+
 #MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
 " of 4"
 " su 4"
@@ -126,7 +138,7 @@
 "Bed"
 "Piano"
 
-#MSG_MENU_BELT_STATUS c=18
+#MSG_BELT_STATUS c=18
 "Belt status"
 "Stato cinghie"
 
@@ -206,7 +218,7 @@
 "Crash detected. Resume print?"
 "Scontro rilevato. Riprendere la stampa?"
 
-#
+#MSG_CRASH c=7
 "Crash"
 "Impatto"
 
@@ -238,9 +250,9 @@
 "E-correct:"
 "Correzione-E:"
 
-#MSG_EJECT_FILAMENT c=17 r=1
+#MSG_EJECT_FILAMENT c=16
 "Eject filament"
-"Espelli filamento"
+"Espelli fil."
 
 #MSG_EJECTING_FILAMENT c=20 r=1
 "Ejecting filament"
@@ -294,7 +306,7 @@
 "Extruder info"
 "Info estrusore"
 
-#MSG_MOVE_E
+#MSG_EXTRUDER c=17
 "Extruder"
 "Estrusore"
 
@@ -318,7 +330,7 @@
 "Fan test"
 "Test ventola"
 
-#MSG_FANS_CHECK
+#MSG_FANS_CHECK c=13
 "Fans check"
 "Control.vent"
 
@@ -326,9 +338,9 @@
 "Fil. sensor"
 "Sensore fil."
 
-# c=14
-"Filam. runouts"
-"Fil. esauriti"
+#MSG_FIL_RUNOUTS c=14
+"Fil. runouts  "
+"Fil. esauriti "
 
 #MSG_FILAMENT_CLEAN c=20 r=2
 "Filament extruding & with correct color?"
@@ -354,10 +366,6 @@
 "FS Action"
 "Azione FS"
 
-# c=18
-"FS v0.4 or newer"
-"FS 0.4 o superiore"
-
 #MSG_FILE_INCOMPLETE c=20 r=3
 "File incomplete. Continue anyway?"
 "File incompleto. Continuare comunque?"
@@ -450,16 +458,16 @@
 "Checking sensors "
 "Controllo sensori"
 
-#MSG_SELFTEST_CHECK_X c=20
-"Checking X axis  "
+#MSG_CHECKING_X c=20
+"Checking X axis"
 "Verifica asse X"
 
-#MSG_SELFTEST_CHECK_Y c=20
-"Checking Y axis  "
+#MSG_CHECKING_Y c=20
+"Checking Y axis"
 "Verifica asse Y"
 
 #MSG_SELFTEST_CHECK_Z c=20
-"Checking Z axis  "
+"Checking Z axis"
 "Verifica asse Z"
 
 #MSG_CHOOSE_EXTRUDER c=20 r=1
@@ -490,7 +498,7 @@
 "Insert filament"
 "Inserire filamento"
 
-#MSG_WIZARD_FILAMENT_LOADED c=20 r=2
+#MSG_FILAMENT_LOADED c=20 r=2
 "Is filament loaded?"
 "Il filamento e' stato caricato?"
 
@@ -498,15 +506,15 @@
 "Is steel sheet on heatbed?"
 "Piastra d'acciaio su piano riscaldato?"
 
-#
+#MSG_LAST_PRINT_FAILURES c=20
 "Last print failures"
-"Fallimenti ultima stampa"
+"Errori ultima stampa"
 
 #
 "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
 "Se hai piastre d'acciaio aggiuntive, calibra i preset in Impostazioni - Setup HW - Piastre in Acciaio."
 
-#
+#MSG_LAST_PRINT c=18
 "Last print"
 "Ultima stampa"
 
@@ -574,7 +582,7 @@
 "Measuring reference height of calibration point"
 "Misura altezza di rif. del punto di calib."
 
-#MSG_MESH_BED_LEVELING
+#MSG_MESH_BED_LEVELING c=18
 "Mesh Bed Leveling"
 "Liv. grilia piano"
 
@@ -590,7 +598,7 @@
 "Measured skew"
 "Deviazione mis"
 
-#
+#MSG_MMU_FAILS c=14
 "MMU fails"
 "Fallimenti MMU"
 
@@ -598,7 +606,7 @@
 "MMU load failed     "
 "Caricamento MMU fallito"
 
-#
+#MSG_MMU_LOAD_FAILS c=14
 "MMU load fails"
 "Caricamenti MMU falliti"
 
@@ -826,7 +834,7 @@
 "Pause"
 "Pausa"
 
-#
+#MSG_POWER_FAILURES c=14
 "Power failures"
 "Mancanza corrente"
 
@@ -894,6 +902,10 @@
 "Please unload the filament first, then repeat this action."
 "Scaricare prima il filamento, poi ripetere l'operazione."
 
+# c=20 r=4
+"Please check the IR sensor connection, unload filament if present."
+"Controllare il collegamento al sensore e rimuovere il filamento."
+
 #MSG_RECOVERING_PRINT c=20
 "Recovering print    "
 "Recupero stampa     "
@@ -910,11 +922,11 @@
 "Reset XYZ calibr."
 "Reset calibrazione XYZ."
 
-#MSG_BED_CORRECTION_RESET
+#MSG_RESET c=14
 "Reset"
 "\x00"
 
-#MSG_RESUME_PRINT
+#MSG_RESUME_PRINT c=18
 "Resume print"
 "Riprendi stampa"
 
@@ -1150,7 +1162,7 @@
 "Unload"
 "Scarica"
 
-#
+#MSG_TOTAL_FAILURES c=20
 "Total failures"
 "Totale fallimenti"
 
@@ -1170,7 +1182,7 @@
 "Unloading filament"
 "Scaricando filamento"
 
-#
+#MSG_TOTAL c=6
 "Total"
 "Totale"
 
@@ -1338,7 +1350,7 @@
 "Warn"
 "Avviso"
 
-#
+#MSG_HW_SETUP c=18
 "HW Setup"
 "Impostazioni HW"
 
@@ -1354,10 +1366,6 @@
 "Mesh"
 "Griglia"
 
-#
-"Mesh bed leveling"
-"Liv. griglia piano"
-
 #
 "MK3S firmware detected on MK3 printer"
 "Firmware MK3S rilevato su stampante MK3"
@@ -1386,11 +1394,11 @@
 "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
 "G-code processato per un livello diverso. Per favore esegui nuovamente lo slice del modello. Stampa annullata."
 
-#
+#MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5
 "G-code sliced for a different printer type. Continue?"
 "G-code processato per una stampante diversa. Continuare?"
 
-#
+#MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=6
 "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
 "G-code processato per una stampante diversa. Per favore esegui nuovamente lo slice del modello. Stampa annullata."
 
@@ -1446,7 +1454,7 @@
 "Assist"
 "Assist."
 
-# c=18
+#MSG_STEEL_SHEET c=18
 "Steel sheets"
 "Piani d'acciaio"
 

+ 47 - 39
lang/lang_en_pl.txt

@@ -2,14 +2,26 @@
 "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
 "[%.7s]Live Adj. Z\x0austaw., kontynuowac\x0aczy zaczac od 0?\x0a%cKontynuuj%cReset"
 
-#MSG_03_OR_OLDER c=18
+#MSG_IR_03_OR_OLDER c=18
 " 0.3 or older"
 " 0.3 lub starszy"
 
-#MSG_04_OR_NEWER c=18
+# c=18
+"FS v0.3 or older"
+"FS 0.3 lub starszy"
+
+#MSG_IR_04_OR_NEWER c=18
 " 0.4 or newer"
 " 0.4 lub nowszy"
 
+# c=18
+"FS v0.4 or newer"
+"FS 0.4 lub nowszy"
+
+#MSG_IR_UNKNOWN c=18
+"unknown state"
+"Stan nieznany"
+
 #MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
 " of 4"
 " z 4"
@@ -126,7 +138,7 @@
 "Bed"
 "Stol"
 
-#MSG_MENU_BELT_STATUS c=18
+#MSG_BELT_STATUS c=18
 "Belt status"
 "Stan paskow"
 
@@ -206,9 +218,9 @@
 "Crash detected. Resume print?"
 "Wykryto zderzenie. Wznowic druk?"
 
-#
+#MSG_CRASH c=7
 "Crash"
-"Zderzenie"
+"Zderzen"
 
 #MSG_CURRENT c=19 r=1
 "Current"
@@ -238,7 +250,7 @@
 "E-correct:"
 "Korekcja-E:"
 
-#MSG_EJECT_FILAMENT c=17 r=1
+#MSG_EJECT_FILAMENT c=16
 "Eject filament"
 "Wysun filament"
 
@@ -294,7 +306,7 @@
 "Extruder info"
 "Ekstruder - info"
 
-#MSG_MOVE_E
+#MSG_EXTRUDER c=17
 "Extruder"
 "Ekstruder"
 
@@ -318,7 +330,7 @@
 "Fan test"
 "Test wentylatora"
 
-#MSG_FANS_CHECK
+#MSG_FANS_CHECK c=13
 "Fans check"
 "Sprawd.went."
 
@@ -326,8 +338,8 @@
 "Fil. sensor"
 "Czuj. filam."
 
-# c=14
-"Filam. runouts"
+#MSG_FIL_RUNOUTS c=14
+"Fil. runouts  "
 "Konc.filamentu"
 
 #MSG_FILAMENT_CLEAN c=20 r=2
@@ -354,10 +366,6 @@
 "FS Action"
 "Akcja FS"
 
-# c=18
-"FS v0.4 or newer"
-"FS v0.4 lub nowszy"
-
 #MSG_FILE_INCOMPLETE c=20 r=3
 "File incomplete. Continue anyway?"
 "Plik niekompletny. Kontynowac?"
@@ -450,16 +458,16 @@
 "Checking sensors "
 "Kontrola czujnikow"
 
-#MSG_SELFTEST_CHECK_X c=20
-"Checking X axis  "
+#MSG_CHECKING_X c=20
+"Checking X axis"
 "Kontrola osi X"
 
-#MSG_SELFTEST_CHECK_Y c=20
-"Checking Y axis  "
+#MSG_CHECKING_Y c=20
+"Checking Y axis"
 "Kontrola osi Y"
 
 #MSG_SELFTEST_CHECK_Z c=20
-"Checking Z axis  "
+"Checking Z axis"
 "Kontrola osi Z"
 
 #MSG_CHOOSE_EXTRUDER c=20 r=1
@@ -490,7 +498,7 @@
 "Insert filament"
 "Wprowadz filament"
 
-#MSG_WIZARD_FILAMENT_LOADED c=20 r=2
+#MSG_FILAMENT_LOADED c=20 r=2
 "Is filament loaded?"
 "Filament jest zaladowany?"
 
@@ -498,7 +506,7 @@
 "Is steel sheet on heatbed?"
 "Czy plyta stal. jest na podgrzew. stole?"
 
-#
+#MSG_LAST_PRINT_FAILURES c=20
 "Last print failures"
 "Ostatnie bledy druku"
 
@@ -506,7 +514,7 @@
 "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
 "Jesli masz dodatkowe plyty stalowe, to skalibruj ich ustawienia w menu Ustawienia - Ustawienia HW - Plyty stalowe."
 
-#
+#MSG_LAST_PRINT c=18
 "Last print"
 "Ost. wydruk"
 
@@ -574,9 +582,9 @@
 "Measuring reference height of calibration point"
 "Okreslam wysokosc odniesienia punktu kalibracyjnego"
 
-#MSG_MESH_BED_LEVELING
+#MSG_MESH_BED_LEVELING c=18
 "Mesh Bed Leveling"
-"Poziomowanie stolu wg siatki"
+"Poziomowanie stolu"
 
 #MSG_MMU_OK_RESUMING_POSITION c=20 r=4
 "MMU OK. Resuming position..."
@@ -590,7 +598,7 @@
 "Measured skew"
 "Zmierzony skos"
 
-#
+#MSG_MMU_FAILS c=14
 "MMU fails"
 "Bledy MMU"
 
@@ -598,7 +606,7 @@
 "MMU load failed     "
 "Blad ladowania MMU"
 
-#
+#MSG_MMU_LOAD_FAILS c=14
 "MMU load fails"
 "Bledy ladow. MMU"
 
@@ -826,7 +834,7 @@
 "Pause"
 "Pauza"
 
-#
+#MSG_POWER_FAILURES c=14
 "Power failures"
 "Zaniki zasilania"
 
@@ -894,6 +902,10 @@
 "Please unload the filament first, then repeat this action."
 "Najpierw rozladuj filament, nastepnie powtorz czynnosc."
 
+# c=20 r=4
+"Please check the IR sensor connection, unload filament if present."
+"Sprawdz polaczenie czujnika IR, rozladuj filament, jesli zaladowany."
+
 #MSG_RECOVERING_PRINT c=20
 "Recovering print    "
 "Wznawianie wydruku  "
@@ -910,11 +922,11 @@
 "Reset XYZ calibr."
 "Reset kalibr. XYZ"
 
-#MSG_BED_CORRECTION_RESET
+#MSG_RESET c=14
 "Reset"
 "\x00"
 
-#MSG_RESUME_PRINT
+#MSG_RESUME_PRINT c=18
 "Resume print"
 "Wznowic wydruk"
 
@@ -1150,7 +1162,7 @@
 "Unload"
 "Rozladuj"
 
-#
+#MSG_TOTAL_FAILURES c=20
 "Total failures"
 "Suma bledow"
 
@@ -1170,7 +1182,7 @@
 "Unloading filament"
 "Rozladowuje filament"
 
-#
+#MSG_TOTAL c=6
 "Total"
 "Suma"
 
@@ -1338,7 +1350,7 @@
 "Warn"
 "Ostrzez"
 
-#
+#MSG_HW_SETUP c=18
 "HW Setup"
 "Ustawienia HW"
 
@@ -1354,10 +1366,6 @@
 "Mesh"
 "Siatka"
 
-#
-"Mesh bed leveling"
-"Poziomowanie stolu"
-
 #
 "MK3S firmware detected on MK3 printer"
 "Wykryto firmware MK3S w drukarce MK3"
@@ -1386,11 +1394,11 @@
 "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
 "G-code pociety na innym poziomie. Potnij model ponownie. Druk anulowany."
 
-#
+#MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5
 "G-code sliced for a different printer type. Continue?"
 "G-code pociety dla innej drukarki. Kontynuowac?"
 
-#
+#MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=6
 "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
 "G-code pociety dla drukarki innego typu. Potnij model ponownie. Druk anulowany."
 
@@ -1446,7 +1454,7 @@
 "Assist"
 "Asyst."
 
-# c=18
+#MSG_STEEL_SHEET c=18
 "Steel sheets"
 "Plyty stalowe"
 

+ 389 - 379
lang/po/Firmware.pot

@@ -7,8 +7,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Language: en\n"
 "Project-Id-Version: Prusa-Firmware\n"
-"POT-Creation-Date: Wed May 13 17:40:37 CEST 2020\n"
-"PO-Revision-Date: Wed May 13 17:40:37 CEST 2020\n"
+"POT-Creation-Date: Di 26. Jan 11:03:54 CET 2021\n"
+"PO-Revision-Date: Di 26. Jan 11:03:54 CET 2021\n"
 "Language-Team: \n"
 "X-Generator: Poedit 2.0.7\n"
 "X-Poedit-SourceCharset: UTF-8\n"
@@ -20,28 +20,43 @@ msgstr ""
 msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
 msgstr ""
 
-# MSG_03_OR_OLDER c=18
-#: messages.c:144
+# MSG_IR_03_OR_OLDER c=18
+#: messages.c:164
 msgid " 0.3 or older"
 msgstr ""
 
-# MSG_04_OR_NEWER c=18
-#: messages.c:143
+#  c=18
+#: Marlin_main.cpp:9626
+msgid "FS v0.3 or older"
+msgstr ""
+
+# MSG_IR_04_OR_NEWER c=18
+#: messages.c:163
 msgid " 0.4 or newer"
 msgstr ""
 
+#  c=18
+#: Marlin_main.cpp:9625
+msgid "FS v0.4 or newer"
+msgstr ""
+
+# MSG_IR_UNKNOWN c=18
+#: messages.c:165
+msgid "unknown state"
+msgstr ""
+
 # MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
-#: messages.c:36
+#: messages.c:43
 msgid " of 4"
 msgstr ""
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:56
+#: messages.c:66
 msgid " of 9"
 msgstr ""
 
 # MSG_MEASURED_OFFSET
-#: ultralcd.cpp:3064
+#: ultralcd.cpp:2988
 msgid "[0;0] point offset"
 msgstr ""
 
@@ -56,47 +71,47 @@ msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2460
+#: ultralcd.cpp:2410
 msgid ">Cancel"
 msgstr ""
 
 # MSG_BABYSTEPPING_Z c=15
-#: ultralcd.cpp:3184
+#: ultralcd.cpp:3108
 msgid "Adjusting Z:"
 msgstr ""
 
 # MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:8677
+#: ultralcd.cpp:8390
 msgid "All correct      "
 msgstr ""
 
 # MSG_WIZARD_DONE c=20 r=8
-#: messages.c:99
+#: messages.c:116
 msgid "All is done. Happy printing!"
 msgstr ""
 
 # 
-#: ultralcd.cpp:1956
+#: ultralcd.cpp:1902
 msgid "Ambient"
 msgstr ""
 
 # MSG_AUTO c=6
-#: messages.c:140
+#: messages.c:160
 msgid "Auto"
 msgstr ""
 
 # MSG_PRESS c=20 r=2
-#: ultralcd.cpp:2609
+#: ultralcd.cpp:2567
 msgid "and press the knob"
 msgstr ""
 
 # MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3506
+#: ultralcd.cpp:3429
 msgid "Are left and right Z~carriages all up?"
 msgstr ""
 
 # MSG_AUTO_DEPLETE c=17 r=1
-#: messages.c:108
+#: messages.c:125
 msgid "SpoolJoin"
 msgstr ""
 
@@ -106,32 +121,32 @@ msgid "Auto home"
 msgstr ""
 
 # MSG_AUTOLOAD_FILAMENT c=18
-#: ultralcd.cpp:6961
+#: ultralcd.cpp:6716
 msgid "AutoLoad filament"
 msgstr ""
 
 # MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4445
+#: ultralcd.cpp:4346
 msgid "Autoloading filament available only when filament sensor is turned on..."
 msgstr ""
 
 # MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2804
+#: ultralcd.cpp:2730
 msgid "Autoloading filament is active, just press the knob and insert filament..."
 msgstr ""
 
 # MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:8325
+#: ultralcd.cpp:8073
 msgid "Axis length"
 msgstr ""
 
 # MSG_SELFTEST_AXIS
-#: ultralcd.cpp:8327
+#: ultralcd.cpp:8074
 msgid "Axis"
 msgstr ""
 
 # MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:8269
+#: ultralcd.cpp:8031
 msgid "Bed / Heater"
 msgstr ""
 
@@ -146,12 +161,12 @@ msgid "Bed Heating"
 msgstr ""
 
 # MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5861
+#: ultralcd.cpp:5802
 msgid "Bed level correct"
 msgstr ""
 
 # MSG_BELTTEST c=17
-#: ultralcd.cpp:5841
+#: ultralcd.cpp:5782
 msgid "Belt test        "
 msgstr ""
 
@@ -161,12 +176,12 @@ msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for
 msgstr ""
 
 # MSG_BRIGHT c=6
-#: messages.c:138
+#: messages.c:158
 msgid "Bright"
 msgstr ""
 
 # MSG_BRIGHTNESS c=18
-#: messages.c:134
+#: messages.c:154
 msgid "Brightness"
 msgstr ""
 
@@ -175,123 +190,123 @@ msgstr ""
 msgid "Bed"
 msgstr ""
 
-# MSG_MENU_BELT_STATUS c=18
-#: ultralcd.cpp:2009
+# MSG_BELT_STATUS c=18
+#: 
 msgid "Belt status"
 msgstr ""
 
 # MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:67
+#: messages.c:80
 msgid "Blackout occurred. Recover print?"
 msgstr ""
 
 # 
-#: ultralcd.cpp:8679
+#: ultralcd.cpp:8392
 msgid "Calibrating home"
 msgstr ""
 
 # MSG_CALIBRATE_BED
-#: ultralcd.cpp:5850
+#: ultralcd.cpp:5791
 msgid "Calibrate XYZ"
 msgstr ""
 
 # MSG_HOMEYZ
-#: messages.c:44
+#: messages.c:51
 msgid "Calibrate Z"
 msgstr ""
 
 # MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4637
+#: ultralcd.cpp:4538
 msgid "Calibrate"
 msgstr ""
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3469
+#: ultralcd.cpp:3392
 msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr ""
 
 # MSG_CALIBRATE_Z_AUTO c=20 r=2
-#: messages.c:19
+#: messages.c:20
 msgid "Calibrating Z"
 msgstr ""
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3469
+#: ultralcd.cpp:3392
 msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr ""
 
 # MSG_HOMEYZ_DONE
-#: ultralcd.cpp:865
+#: ultralcd.cpp:813
 msgid "Calibration done"
 msgstr ""
 
 # MSG_MENU_CALIBRATION
-#: messages.c:57
+#: messages.c:67
 msgid "Calibration"
 msgstr ""
 
 # 
-#: ultralcd.cpp:4815
+#: ultralcd.cpp:4716
 msgid "Cancel"
 msgstr ""
 
 # MSG_SD_REMOVED
-#: ultralcd.cpp:9090
+#: ultralcd.cpp:8842
 msgid "Card removed"
 msgstr ""
 
 # MSG_NOT_COLOR
-#: ultralcd.cpp:2709
+#: ultralcd.cpp:2647
 msgid "Color not correct"
 msgstr ""
 
 # MSG_COOLDOWN
-#: messages.c:22
+#: messages.c:25
 msgid "Cooldown"
 msgstr ""
 
 # 
-#: ultralcd.cpp:4570
+#: ultralcd.cpp:4471
 msgid "Copy selected language?"
 msgstr ""
 
 # MSG_CRASHDETECT c=13
-#: messages.c:24
+#: messages.c:28
 msgid "Crash det."
 msgstr ""
 
 # 
-#: ultralcd.cpp:4950
+#: ultralcd.cpp:4851
 msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
 msgstr ""
 
 # MSG_CRASH_DETECTED c=20 r=1
-#: messages.c:23
+#: messages.c:27
 msgid "Crash detected."
 msgstr ""
 
 # 
-#: Marlin_main.cpp:607
+#: Marlin_main.cpp:657
 msgid "Crash detected. Resume print?"
 msgstr ""
 
-# 
-#: ultralcd.cpp:1785
+# MSG_CRASH c=7
+#: messages.c:26
 msgid "Crash"
 msgstr ""
 
 # MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:6002
+#: ultralcd.cpp:5933
 msgid "Current"
 msgstr ""
 
 # MSG_DATE c=17 r=1
-#: ultralcd.cpp:2163
+#: ultralcd.cpp:2112
 msgid "Date:"
 msgstr ""
 
 # MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5743
+#: ultralcd.cpp:5683
 msgid "Disable steppers"
 msgstr ""
 
@@ -301,377 +316,372 @@ msgid "Distance between tip of the nozzle and the bed surface has not been set y
 msgstr ""
 
 # MSG_FS_CONTINUE c=5
-#: messages.c:132
+#: messages.c:152
 msgid "Cont."
 msgstr ""
 
 # MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:5125
+#: ultralcd.cpp:5026
 msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
 msgstr ""
 
 # MSG_EXTRUDER_CORRECTION c=13
-#: ultralcd.cpp:5194
+#: ultralcd.cpp:5095
 msgid "E-correct:"
 msgstr ""
 
-# MSG_EJECT_FILAMENT c=17 r=1
-#: messages.c:49
+# MSG_EJECT_FILAMENT c=16
+#: messages.c:58
 msgid "Eject filament"
 msgstr ""
 
 # MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1416
+#: mmu.cpp:1414
 msgid "Ejecting filament"
 msgstr ""
 
 # MSG_SELFTEST_ENDSTOP_NOTHIT c=20
-#: ultralcd.cpp:8293
+#: ultralcd.cpp:8049
 msgid "Endstop not hit"
 msgstr ""
 
 # MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:8287
+#: ultralcd.cpp:8044
 msgid "Endstop"
 msgstr ""
 
 # MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:8275
+#: ultralcd.cpp:8035
 msgid "Endstops"
 msgstr ""
 
 # MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6998
+#: ultralcd.cpp:6753
 msgid "Error - static memory has been overwritten"
 msgstr ""
 
 # MSG_CUT_FILAMENT c=16
-#: messages.c:50
+#: messages.c:59
 msgid "Cut filament"
 msgstr ""
 
 # MSG_CUTTER c=9
-#: messages.c:109
+#: messages.c:126
 msgid "Cutter"
 msgstr ""
 
 #  c=18
-#: mmu.cpp:1388
+#: mmu.cpp:1386
 msgid "Cutting filament"
 msgstr ""
 
 # MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4458
+#: ultralcd.cpp:4359
 msgid "ERROR: Filament sensor is not responding, please check connection."
 msgstr ""
 
 # MSG_DIM c=6
-#: messages.c:139
+#: messages.c:159
 msgid "Dim"
 msgstr ""
 
 # MSG_ERROR
-#: messages.c:25
+#: messages.c:29
 msgid "ERROR:"
 msgstr ""
 
 # MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:8686
+#: ultralcd.cpp:8398
 msgid "Extruder fan:"
 msgstr ""
 
 # MSG_INFO_EXTRUDER c=18
-#: ultralcd.cpp:2211
+#: ultralcd.cpp:2153
 msgid "Extruder info"
 msgstr ""
 
-# MSG_MOVE_E
-#: messages.c:26
+# MSG_EXTRUDER c=17
+#: messages.c:30
 msgid "Extruder"
 msgstr ""
 
 # 
-#: ultralcd.cpp:6985
+#: ultralcd.cpp:6740
 msgid "Fail stats MMU"
 msgstr ""
 
 # MSG_FSENSOR_AUTOLOAD c=13
-#: messages.c:40
+#: messages.c:47
 msgid "F. autoload"
 msgstr ""
 
 # 
-#: ultralcd.cpp:6982
+#: ultralcd.cpp:6737
 msgid "Fail stats"
 msgstr ""
 
 # MSG_FAN_SPEED c=14
-#: messages.c:28
+#: messages.c:34
 msgid "Fan speed"
 msgstr ""
 
 # MSG_SELFTEST_FAN c=20
-#: messages.c:74
+#: messages.c:89
 msgid "Fan test"
 msgstr ""
 
-# MSG_FANS_CHECK
-#: ultralcd.cpp:5751
+# MSG_FANS_CHECK c=13
+#: messages.c:31
 msgid "Fans check"
 msgstr ""
 
 # MSG_FSENSOR
-#: messages.c:41
+#: messages.c:48
 msgid "Fil. sensor"
 msgstr ""
 
-#  c=14
-#: ultralcd.cpp:1784
-msgid "Filam. runouts"
+# MSG_FIL_RUNOUTS c=14
+#: 
+msgid "Fil. runouts  "
 msgstr ""
 
 # MSG_FILAMENT_CLEAN c=20 r=2
-#: messages.c:29
+#: messages.c:35
 msgid "Filament extruding & with correct color?"
 msgstr ""
 
 # MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2705
+#: ultralcd.cpp:2646
 msgid "Filament not loaded"
 msgstr ""
 
 # MSG_FILAMENT_SENSOR c=20
-#: messages.c:80
+#: messages.c:95
 msgid "Filament sensor"
 msgstr ""
 
 # MSG_FILAMENT_USED c=19
-#: ultralcd.cpp:2869
+#: ultralcd.cpp:2795
 msgid "Filament used"
 msgstr ""
 
 # MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2870
+#: ultralcd.cpp:2796
 msgid "Print time"
 msgstr ""
 
 # MSG_FS_ACTION c=10
-#: messages.c:131
+#: messages.c:151
 msgid "FS Action"
 msgstr ""
 
-#  c=18
-#: Marlin_main.cpp:9512
-msgid "FS v0.4 or newer"
-msgstr ""
-
 # MSG_FILE_INCOMPLETE c=20 r=3
-#: ultralcd.cpp:8814
+#: ultralcd.cpp:8540
 msgid "File incomplete. Continue anyway?"
 msgstr ""
 
 # MSG_FINISHING_MOVEMENTS c=20
-#: messages.c:37
+#: messages.c:44
 msgid "Finishing movements"
 msgstr ""
 
 # MSG_V2_CALIBRATION c=18
-#: messages.c:103
+#: messages.c:120
 msgid "First layer cal."
 msgstr ""
 
 # MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:5046
+#: ultralcd.cpp:4947
 msgid "First, I will run the selftest to check most common assembly problems."
 msgstr ""
 
 # 
-#: mmu.cpp:727
+#: mmu.cpp:726
 msgid "Fix the issue and then press button on MMU unit."
 msgstr ""
 
 # MSG_FLOW
-#: ultralcd.cpp:7125
+#: ultralcd.cpp:6880
 msgid "Flow"
 msgstr ""
 
 # MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2156
+#: ultralcd.cpp:2105
 msgid "forum.prusa3d.com"
 msgstr ""
 
 # MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:71
+#: messages.c:86
 msgid "Front print fan?"
 msgstr ""
 
 # MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3266
+#: ultralcd.cpp:3190
 msgid "Front side[um]"
 msgstr ""
 
 # MSG_SELFTEST_FANS
-#: ultralcd.cpp:8333
+#: ultralcd.cpp:8079
 msgid "Front/left fans"
 msgstr ""
 
 # MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:8263
+#: ultralcd.cpp:8027
 msgid "Heater/Thermistor"
 msgstr ""
 
 # MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:9440
+#: Marlin_main.cpp:9616
 msgid "Heating disabled by safety timer."
 msgstr ""
 
 # MSG_HEATING_COMPLETE c=20
-#: messages.c:43
+#: messages.c:50
 msgid "Heating done."
 msgstr ""
 
 # MSG_HEATING
-#: messages.c:42
+#: messages.c:49
 msgid "Heating"
 msgstr ""
 
 # MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:5025
+#: ultralcd.cpp:4926
 msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
 msgstr ""
 
 # MSG_PRUSA3D_HOWTO
-#: ultralcd.cpp:2157
+#: ultralcd.cpp:2106
 msgid "howto.prusa3d.com"
 msgstr ""
 
 # MSG_FILAMENTCHANGE
-#: messages.c:34
+#: messages.c:41
 msgid "Change filament"
 msgstr ""
 
 # MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2620
+#: ultralcd.cpp:2576
 msgid "Change success!"
 msgstr ""
 
 # MSG_CORRECTLY c=20
-#: ultralcd.cpp:2697
+#: ultralcd.cpp:2644
 msgid "Changed correctly?"
 msgstr ""
 
 # MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:77
+#: messages.c:92
 msgid "Checking bed     "
 msgstr ""
 
 # MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:8668
+#: ultralcd.cpp:8381
 msgid "Checking endstops"
 msgstr ""
 
 # MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:8674
+#: ultralcd.cpp:8387
 msgid "Checking hotend  "
 msgstr ""
 
 # MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:78
+#: messages.c:93
 msgid "Checking sensors "
 msgstr ""
 
-# MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:7482
-msgid "Checking X axis  "
+# MSG_CHECKING_X c=20
+#: messages.c:22
+msgid "Checking X axis"
 msgstr ""
 
-# MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:7491
-msgid "Checking Y axis  "
+# MSG_CHECKING_Y c=20
+#: messages.c:23
+msgid "Checking Y axis"
 msgstr ""
 
 # MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:8671
-msgid "Checking Z axis  "
+#: 
+msgid "Checking Z axis"
 msgstr ""
 
 # MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:45
+#: messages.c:52
 msgid "Choose extruder:"
 msgstr ""
 
 # MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:46
+#: messages.c:53
 msgid "Choose filament:"
 msgstr ""
 
 # MSG_FILAMENT c=17 r=1
-#: messages.c:27
+#: messages.c:33
 msgid "Filament"
 msgstr ""
 
 # MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:5055
+#: ultralcd.cpp:4956
 msgid "I will run xyz calibration now. It will take approx. 12 mins."
 msgstr ""
 
 # MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:5063
+#: ultralcd.cpp:4964
 msgid "I will run z calibration now."
 msgstr ""
 
 # MSG_WATCH
-#: messages.c:97
+#: messages.c:114
 msgid "Info screen"
 msgstr ""
 
 # MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2605
+#: ultralcd.cpp:2564
 msgid "Insert filament"
 msgstr ""
 
-# MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4835
+# MSG_FILAMENT_LOADED c=20 r=2
+#: messages.c:36
 msgid "Is filament loaded?"
 msgstr ""
 
 # MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:90
+#: messages.c:107
 msgid "Is steel sheet on heatbed?"
 msgstr ""
 
-# 
-#: ultralcd.cpp:1727
+# MSG_LAST_PRINT_FAILURES c=20
+#: messages.c:55
 msgid "Last print failures"
 msgstr ""
 
 # 
-#: ultralcd.cpp:5133
+#: ultralcd.cpp:5034
 msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
 msgstr ""
 
-# 
-#: ultralcd.cpp:1704
+# MSG_LAST_PRINT c=18
+#: messages.c:54
 msgid "Last print"
 msgstr ""
 
 # MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:72
+#: messages.c:87
 msgid "Left hotend fan?"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2993
+#: ultralcd.cpp:2919
 msgid "Left"
 msgstr ""
 
 # MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3264
+#: ultralcd.cpp:3188
 msgid "Left side [um]"
 msgstr ""
 
 # 
-#: ultralcd.cpp:5766
+#: ultralcd.cpp:5706
 msgid "Lin. correction"
 msgstr ""
 
@@ -681,197 +691,197 @@ msgid "Live adjust Z"
 msgstr ""
 
 #  c=20 r=6
-#: ultralcd.cpp:7527
+#: ultralcd.cpp:7280
 msgid "Insert the filament (do not load it) into the extruder and then press the knob."
 msgstr ""
 
 # MSG_LOAD_FILAMENT c=17
-#: messages.c:47
+#: messages.c:56
 msgid "Load filament"
 msgstr ""
 
 # MSG_LOADING_COLOR
-#: ultralcd.cpp:2645
+#: ultralcd.cpp:2598
 msgid "Loading color"
 msgstr ""
 
 # MSG_LOADING_FILAMENT c=20
-#: messages.c:48
+#: messages.c:57
 msgid "Loading filament"
 msgstr ""
 
 # MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:8317
+#: ultralcd.cpp:8067
 msgid "Loose pulley"
 msgstr ""
 
 # 
-#: ultralcd.cpp:6944
+#: ultralcd.cpp:6699
 msgid "Load to nozzle"
 msgstr ""
 
 # MSG_M117_V2_CALIBRATION c=25
-#: messages.c:51
+#: messages.c:60
 msgid "M117 First layer cal."
 msgstr ""
 
 # MSG_MAIN
-#: messages.c:52
+#: messages.c:61
 msgid "Main"
 msgstr ""
 
 # MSG_BL_HIGH c=12
-#: messages.c:135
+#: messages.c:155
 msgid "Level Bright"
 msgstr ""
 
 # MSG_BL_LOW c=12
-#: messages.c:136
+#: messages.c:156
 msgid "Level Dimmed"
 msgstr ""
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:55
+#: messages.c:65
 msgid "Measuring reference height of calibration point"
 msgstr ""
 
-# MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5856
+# MSG_MESH_BED_LEVELING c=18
+#: messages.c:148
 msgid "Mesh Bed Leveling"
 msgstr ""
 
 # MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:765
+#: mmu.cpp:764
 msgid "MMU OK. Resuming position..."
 msgstr ""
 
 # MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:758
+#: mmu.cpp:757
 msgid "MMU OK. Resuming temperature..."
 msgstr ""
 
 # 
-#: ultralcd.cpp:3034
+#: ultralcd.cpp:2960
 msgid "Measured skew"
 msgstr ""
 
-# 
-#: ultralcd.cpp:1728
+# MSG_MMU_FAILS c=14
+#: messages.c:68
 msgid "MMU fails"
 msgstr ""
 
 # 
-#: mmu.cpp:1588
+#: mmu.cpp:1586
 msgid "MMU load failed     "
 msgstr ""
 
-# 
-#: ultralcd.cpp:1729
+# MSG_MMU_LOAD_FAILS c=14
+#: messages.c:69
 msgid "MMU load fails"
 msgstr ""
 
 # MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:776
+#: mmu.cpp:775
 msgid "MMU OK. Resuming..."
 msgstr ""
 
 # MSG_MODE
-#: messages.c:84
+#: messages.c:101
 msgid "Mode"
 msgstr ""
 
 #  c=20 r=3
-#: Marlin_main.cpp:879
+#: Marlin_main.cpp:934
 msgid "MK3 firmware detected on MK3S printer"
 msgstr ""
 
 # MSG_NORMAL
-#: messages.c:88
+#: messages.c:105
 msgid "Normal"
 msgstr ""
 
 # MSG_SILENT
-#: messages.c:87
+#: messages.c:104
 msgid "Silent"
 msgstr ""
 
 # 
-#: mmu.cpp:722
+#: mmu.cpp:721
 msgid "MMU needs user attention."
 msgstr ""
 
 # 
-#: ultralcd.cpp:1755
+#: ultralcd.cpp:1701
 msgid "MMU power fails"
 msgstr ""
 
 # MSG_STEALTH
-#: messages.c:89
+#: messages.c:106
 msgid "Stealth"
 msgstr ""
 
 # MSG_AUTO_POWER
-#: messages.c:86
+#: messages.c:103
 msgid "Auto power"
 msgstr ""
 
 # MSG_HIGH_POWER
-#: messages.c:85
+#: messages.c:102
 msgid "High power"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2186
+#: ultralcd.cpp:2124
 msgid "MMU2 connected"
 msgstr ""
 
 # MSG_SELFTEST_MOTOR
-#: messages.c:79
+#: messages.c:94
 msgid "Motor"
 msgstr ""
 
 # MSG_MOVE_AXIS
-#: ultralcd.cpp:5741
+#: ultralcd.cpp:5681
 msgid "Move axis"
 msgstr ""
 
 # MSG_MOVE_X
-#: ultralcd.cpp:4361
+#: ultralcd.cpp:4262
 msgid "Move X"
 msgstr ""
 
 # MSG_MOVE_Y
-#: ultralcd.cpp:4362
+#: ultralcd.cpp:4263
 msgid "Move Y"
 msgstr ""
 
 # MSG_MOVE_Z
-#: ultralcd.cpp:4363
+#: ultralcd.cpp:4264
 msgid "Move Z"
 msgstr ""
 
 # MSG_NO_MOVE
-#: Marlin_main.cpp:5541
+#: Marlin_main.cpp:5719
 msgid "No move."
 msgstr ""
 
 # MSG_NO_CARD
-#: ultralcd.cpp:6911
+#: ultralcd.cpp:6673
 msgid "No SD card"
 msgstr ""
 
 # MSG_NA
-#: messages.c:107
+#: messages.c:124
 msgid "N/A"
 msgstr ""
 
 # MSG_NO
-#: messages.c:58
+#: messages.c:70
 msgid "No"
 msgstr ""
 
 # MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:8265
+#: ultralcd.cpp:8028
 msgid "Not connected"
 msgstr ""
 
@@ -881,157 +891,157 @@ msgid "New firmware version available:"
 msgstr ""
 
 # MSG_SELFTEST_FAN_NO c=19
-#: messages.c:75
+#: messages.c:90
 msgid "Not spinning"
 msgstr ""
 
 # MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4946
+#: ultralcd.cpp:4847
 msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
 msgstr ""
 
 # MSG_WIZARD_WILL_PREHEAT c=20 r=4
-#: ultralcd.cpp:5071
+#: ultralcd.cpp:4972
 msgid "Now I will preheat nozzle for PLA."
 msgstr ""
 
 # MSG_NOZZLE
-#: messages.c:59
+#: messages.c:71
 msgid "Nozzle"
 msgstr ""
 
 # MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
-#: Marlin_main.cpp:1518
+#: Marlin_main.cpp:1581
 msgid "Old settings found. Default PID, Esteps etc. will be set."
 msgstr ""
 
 # 
-#: ultralcd.cpp:5062
+#: ultralcd.cpp:4963
 msgid "Now remove the test print from steel sheet."
 msgstr ""
 
 # 
-#: ultralcd.cpp:1654
+#: ultralcd.cpp:1600
 msgid "Nozzle FAN"
 msgstr ""
 
 # MSG_PAUSE_PRINT
-#: ultralcd.cpp:6875
+#: ultralcd.cpp:6637
 msgid "Pause print"
 msgstr ""
 
 # MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1539
+#: ultralcd.cpp:1485
 msgid "PID cal.           "
 msgstr ""
 
 # MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1545
+#: ultralcd.cpp:1491
 msgid "PID cal. finished"
 msgstr ""
 
 # MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5862
+#: ultralcd.cpp:5803
 msgid "PID calibration"
 msgstr ""
 
 # MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:896
+#: ultralcd.cpp:843
 msgid "PINDA Heating"
 msgstr ""
 
 # MSG_PAPER c=20 r=10
-#: messages.c:60
+#: messages.c:72
 msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
 msgstr ""
 
 # MSG_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:5128
+#: ultralcd.cpp:5029
 msgid "Please clean heatbed and then press the knob."
 msgstr ""
 
 # MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
-#: messages.c:21
+#: messages.c:24
 msgid "Please clean the nozzle for calibration. Click when done."
 msgstr ""
 
 # MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:8257
+#: ultralcd.cpp:8022
 msgid "Please check :"
 msgstr ""
 
 # MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:98
+#: messages.c:115
 msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
 msgstr ""
 
 # MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3138
+#: Marlin_main.cpp:3317
 msgid "Please open idler and remove filament manually."
 msgstr ""
 
 # MSG_PLACE_STEEL_SHEET c=20 r=4
-#: messages.c:61
+#: messages.c:73
 msgid "Please place steel sheet on heatbed."
 msgstr ""
 
 # MSG_PRESS_TO_UNLOAD c=20 r=4
-#: messages.c:64
+#: messages.c:77
 msgid "Please press the knob to unload filament"
 msgstr ""
 
 # MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:66
+#: messages.c:79
 msgid "Please pull out filament immediately"
 msgstr ""
 
 # MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1422
+#: mmu.cpp:1420
 msgid "Please remove filament and then press the knob."
 msgstr ""
 
 # MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:70
+#: messages.c:82
 msgid "Please remove steel sheet from heatbed."
 msgstr ""
 
 # MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4583
+#: Marlin_main.cpp:4766
 msgid "Please run XYZ calibration first."
 msgstr ""
 
 # MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1341
+#: mmu.cpp:1340
 msgid "Please update firmware in your MMU2. Waiting for reset."
 msgstr ""
 
 # MSG_PLEASE_WAIT c=20
-#: messages.c:62
+#: messages.c:74
 msgid "Please wait"
 msgstr ""
 
 # 
-#: ultralcd.cpp:5061
+#: ultralcd.cpp:4962
 msgid "Please remove shipping helpers first."
 msgstr ""
 
 # MSG_PREHEAT_NOZZLE c=20
-#: messages.c:63
+#: messages.c:76
 msgid "Preheat the nozzle!"
 msgstr ""
 
 # MSG_PREHEAT
-#: ultralcd.cpp:6853
+#: ultralcd.cpp:6615
 msgid "Preheat"
 msgstr ""
 
 # MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:100
+#: messages.c:117
 msgid "Preheating nozzle. Please wait."
 msgstr ""
 
 #  c=14
-#: ultralcd.cpp:1959
+#: ultralcd.cpp:1905
 msgid "PINDA"
 msgstr ""
 
@@ -1041,107 +1051,112 @@ msgid "Please upgrade."
 msgstr ""
 
 # MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:11526
+#: Marlin_main.cpp:11718
 msgid "Press knob to preheat nozzle and continue."
 msgstr ""
 
 # MSG_FS_PAUSE c=5
-#: fsensor.cpp:710
+#: fsensor.cpp:728
 msgid "Pause"
 msgstr ""
 
-# 
-#: ultralcd.cpp:1783
+# MSG_POWER_FAILURES c=14
+#: messages.c:75
 msgid "Power failures"
 msgstr ""
 
 # MSG_PRINT_ABORTED c=20
-#: messages.c:65
+#: messages.c:78
 msgid "Print aborted"
 msgstr ""
 
 #  c=20
-#: ultralcd.cpp:2442
+#: ultralcd.cpp:2390
 msgid "Preheating to load"
 msgstr ""
 
 #  c=20
-#: ultralcd.cpp:2446
+#: ultralcd.cpp:2395
 msgid "Preheating to unload"
 msgstr ""
 
 # MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:8689
+#: ultralcd.cpp:8401
 msgid "Print fan:"
 msgstr ""
 
 # MSG_CARD_MENU
-#: messages.c:20
+#: messages.c:21
 msgid "Print from SD"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2289
+#: ultralcd.cpp:2231
 msgid "Press the knob"
 msgstr ""
 
 # MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1118
+#: ultralcd.cpp:1065
 msgid "Print paused"
 msgstr ""
 
 # 
-#: mmu.cpp:726
+#: mmu.cpp:725
 msgid "Press the knob to resume nozzle temperature."
 msgstr ""
 
 # MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
-#: messages.c:38
+#: messages.c:45
 msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
 msgstr ""
 
 # 
-#: ultralcd.cpp:1655
+#: ultralcd.cpp:1601
 msgid "Print FAN"
 msgstr ""
 
 # 
-#: ultralcd.cpp:4926
+#: ultralcd.cpp:4827
 msgid "Please insert filament into the extruder, then press the knob to load it."
 msgstr ""
 
 # 
-#: ultralcd.cpp:4921
+#: ultralcd.cpp:4822
 msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
 msgstr ""
 
 # 
-#: ultralcd.cpp:4843
+#: ultralcd.cpp:4744
 msgid "Please load filament first."
 msgstr ""
 
 # MSG_PRUSA3D
-#: ultralcd.cpp:2155
+#: ultralcd.cpp:2104
 msgid "prusa3d.com"
 msgstr ""
 
 # MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3267
+#: ultralcd.cpp:3191
 msgid "Rear side [um]"
 msgstr ""
 
 #  c=20 r=4
-#: ultralcd.cpp:7549
+#: ultralcd.cpp:7304
 msgid "Please unload the filament first, then repeat this action."
 msgstr ""
 
+#  c=20 r=4
+#: ultralcd.cpp:7307
+msgid "Please check the IR sensor connection, unload filament if present."
+msgstr ""
+
 # MSG_RECOVERING_PRINT c=20
-#: Marlin_main.cpp:10883
+#: Marlin_main.cpp:11076
 msgid "Recovering print    "
 msgstr ""
 
 # MSG_REMOVE_OLD_FILAMENT c=20 r=5
-#: mmu.cpp:833
+#: mmu.cpp:832
 msgid "Remove old filament and press the knob to start loading new filament."
 msgstr ""
 
@@ -1151,102 +1166,102 @@ msgid "Prusa i3 MK3S OK."
 msgstr ""
 
 # MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5867
+#: ultralcd.cpp:5808
 msgid "Reset XYZ calibr."
 msgstr ""
 
-# MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3268
+# MSG_RESET c=14
+#: messages.c:83
 msgid "Reset"
 msgstr ""
 
-# MSG_RESUME_PRINT
-#: ultralcd.cpp:6861
+# MSG_RESUME_PRINT c=18
+#: messages.c:84
 msgid "Resume print"
 msgstr ""
 
 # MSG_RESUMING_PRINT c=20
-#: messages.c:69
+#: messages.c:85
 msgid "Resuming print"
 msgstr ""
 
 # MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3265
+#: ultralcd.cpp:3189
 msgid "Right side[um]"
 msgstr ""
 
 # MSG_RPI_PORT
-#: messages.c:123
+#: messages.c:142
 msgid "RPi port"
 msgstr ""
 
 # MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4864
+#: ultralcd.cpp:4765
 msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
 msgstr ""
 
 # MSG_SD_CARD
-#: messages.c:118
+#: messages.c:137
 msgid "SD card"
 msgstr ""
 
 # MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
-#: messages.c:119
+#: messages.c:138
 msgid "FlashAir"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2994
+#: ultralcd.cpp:2920
 msgid "Right"
 msgstr ""
 
 # MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: messages.c:35
+#: messages.c:42
 msgid "Searching bed calibration point"
 msgstr ""
 
 # MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5779
+#: ultralcd.cpp:5721
 msgid "Select language"
 msgstr ""
 
 # MSG_SELFTEST_OK
-#: ultralcd.cpp:7812
+#: ultralcd.cpp:7579
 msgid "Self test OK"
 msgstr ""
 
 # MSG_SELFTEST_START c=20
-#: ultralcd.cpp:7582
+#: ultralcd.cpp:7347
 msgid "Self test start  "
 msgstr ""
 
 # MSG_SELFTEST
-#: ultralcd.cpp:5843
+#: ultralcd.cpp:5784
 msgid "Selftest         "
 msgstr ""
 
 # MSG_SELFTEST_ERROR
-#: ultralcd.cpp:8255
+#: ultralcd.cpp:8021
 msgid "Selftest error !"
 msgstr ""
 
 # MSG_SELFTEST_FAILED c=20
-#: messages.c:73
+#: messages.c:88
 msgid "Selftest failed  "
 msgstr ""
 
 # MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1550
+#: Marlin_main.cpp:1613
 msgid "Selftest will be run to calibrate accurate sensorless rehoming."
 msgstr ""
 
 # 
-#: ultralcd.cpp:5102
+#: ultralcd.cpp:5003
 msgid "Select nozzle preheat temperature which matches your material."
 msgstr ""
 
 # MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3286
+#: ultralcd.cpp:3209
 msgid "Set temperature:"
 msgstr ""
 
@@ -1266,187 +1281,187 @@ msgid "Prusa i3 MK3 OK."
 msgstr ""
 
 # MSG_SETTINGS
-#: messages.c:82
+#: messages.c:97
 msgid "Settings"
 msgstr ""
 
 # MSG_SHOW_END_STOPS c=18
-#: ultralcd.cpp:5864
+#: ultralcd.cpp:5805
 msgid "Show end stops"
 msgstr ""
 
 # 
-#: ultralcd.cpp:4008
+#: ultralcd.cpp:3915
 msgid "Sensor state"
 msgstr ""
 
 # MSG_FILE_CNT c=20 r=6
-#: cardreader.cpp:738
+#: cardreader.cpp:739
 msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
 msgstr ""
 
 # MSG_SORT
-#: messages.c:120
+#: messages.c:139
 msgid "Sort"
 msgstr ""
 
 # MSG_NONE
-#: messages.c:110
+#: messages.c:127
 msgid "None"
 msgstr ""
 
 # MSG_SORT_TIME
-#: messages.c:121
+#: messages.c:140
 msgid "Time"
 msgstr ""
 
 # 
-#: ultralcd.cpp:3037
+#: ultralcd.cpp:2963
 msgid "Severe skew:"
 msgstr ""
 
 # MSG_SORT_ALPHA
-#: messages.c:122
+#: messages.c:141
 msgid "Alphabet"
 msgstr ""
 
 # MSG_SORTING c=20 r=1
-#: cardreader.cpp:745
+#: cardreader.cpp:746
 msgid "Sorting files"
 msgstr ""
 
 # MSG_SOUND_LOUD
-#: messages.c:125
+#: messages.c:144
 msgid "Loud"
 msgstr ""
 
 # 
-#: ultralcd.cpp:3036
+#: ultralcd.cpp:2962
 msgid "Slight skew:"
 msgstr ""
 
 # MSG_SOUND
-#: messages.c:124
+#: messages.c:143
 msgid "Sound"
 msgstr ""
 
 #  c=7
-#: ultralcd.cpp:1822
+#: ultralcd.cpp:1768
 msgid "Runouts"
 msgstr ""
 
 # 
-#: Marlin_main.cpp:5101
+#: Marlin_main.cpp:5280
 msgid "Some problem encountered, Z-leveling enforced ..."
 msgstr ""
 
 # MSG_SOUND_ONCE
-#: messages.c:126
+#: messages.c:145
 msgid "Once"
 msgstr ""
 
 # MSG_SPEED
-#: ultralcd.cpp:7119
+#: ultralcd.cpp:6874
 msgid "Speed"
 msgstr ""
 
 # MSG_SELFTEST_FAN_YES c=19
-#: messages.c:76
+#: messages.c:91
 msgid "Spinning"
 msgstr ""
 
 # MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4596
+#: Marlin_main.cpp:4779
 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
 msgstr ""
 
 # MSG_STATISTICS
-#: ultralcd.cpp:6978
+#: ultralcd.cpp:6733
 msgid "Statistics  "
 msgstr ""
 
 # MSG_STOP_PRINT
-#: messages.c:91
+#: messages.c:108
 msgid "Stop print"
 msgstr ""
 
 # MSG_STOPPED
-#: messages.c:92
+#: messages.c:109
 msgid "STOPPED. "
 msgstr ""
 
 # MSG_SUPPORT
-#: ultralcd.cpp:6987
+#: ultralcd.cpp:6742
 msgid "Support"
 msgstr ""
 
 # MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:8335
+#: ultralcd.cpp:8080
 msgid "Swapped"
 msgstr ""
 
 # 
-#: ultralcd.cpp:4814
+#: ultralcd.cpp:4715
 msgid "Select filament:"
 msgstr ""
 
 # MSG_TEMP_CALIBRATION c=14
-#: messages.c:93
+#: messages.c:110
 msgid "Temp. cal."
 msgstr ""
 
 # 
-#: ultralcd.cpp:4955
+#: ultralcd.cpp:4856
 msgid "Select temperature which matches your material."
 msgstr ""
 
 # MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5873
+#: ultralcd.cpp:5816
 msgid "Temp. calibration"
 msgstr ""
 
 # MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3933
+#: ultralcd.cpp:3845
 msgid "Temperature calibration failed"
 msgstr ""
 
 # MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:94
+#: messages.c:111
 msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
 msgstr ""
 
 #  c=20 r=3
-#: ultralcd.cpp:7554
+#: ultralcd.cpp:7311
 msgid "Sensor verified, remove the filament now."
 msgstr ""
 
 # MSG_TEMPERATURE
-#: ultralcd.cpp:5739
+#: ultralcd.cpp:5679
 msgid "Temperature"
 msgstr ""
 
 # MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2218
+#: ultralcd.cpp:2160
 msgid "Temperatures"
 msgstr ""
 
 # MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
-#: messages.c:39
+#: messages.c:46
 msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
 msgstr ""
 
 # 
-#: ultralcd.cpp:2891
+#: ultralcd.cpp:2817
 msgid "Total filament"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2892
+#: ultralcd.cpp:2818
 msgid "Total print time"
 msgstr ""
 
 # MSG_TUNE
-#: ultralcd.cpp:6850
+#: ultralcd.cpp:6612
 msgid "Tune"
 msgstr ""
 
@@ -1455,63 +1470,63 @@ msgstr ""
 msgid "Unload"
 msgstr ""
 
-# 
-#: ultralcd.cpp:1752
+# MSG_TOTAL_FAILURES c=20
+#: messages.c:99
 msgid "Total failures"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2296
+#: ultralcd.cpp:2238
 msgid "to load filament"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2300
+#: ultralcd.cpp:2242
 msgid "to unload filament"
 msgstr ""
 
 # MSG_UNLOAD_FILAMENT c=17
-#: messages.c:95
+#: messages.c:112
 msgid "Unload filament"
 msgstr ""
 
 # MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:96
+#: messages.c:113
 msgid "Unloading filament"
 msgstr ""
 
-# 
-#: ultralcd.cpp:1705
+# MSG_TOTAL c=6
+#: messages.c:98
 msgid "Total"
 msgstr ""
 
 # MSG_USED c=19 r=1
-#: ultralcd.cpp:6001
+#: ultralcd.cpp:5932
 msgid "Used during print"
 msgstr ""
 
 # MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2221
+#: ultralcd.cpp:2163
 msgid "Voltages"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2194
+#: ultralcd.cpp:2132
 msgid "unknown"
 msgstr ""
 
 # MSG_USERWAIT
-#: Marlin_main.cpp:5511
+#: Marlin_main.cpp:5689
 msgid "Wait for user..."
 msgstr ""
 
 # MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3434
+#: ultralcd.cpp:3357
 msgid "Waiting for nozzle and bed cooling"
 msgstr ""
 
 # MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3395
+#: ultralcd.cpp:3318
 msgid "Waiting for PINDA probe cooling"
 msgstr ""
 
@@ -1521,37 +1536,37 @@ msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU t
 msgstr ""
 
 # MSG_CHANGED_BOTH c=20 r=4
-#: Marlin_main.cpp:1510
+#: Marlin_main.cpp:1573
 msgid "Warning: both printer type and motherboard type changed."
 msgstr ""
 
 # MSG_CHANGED_MOTHERBOARD c=20 r=4
-#: Marlin_main.cpp:1502
+#: Marlin_main.cpp:1565
 msgid "Warning: motherboard type changed."
 msgstr ""
 
 # MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1506
+#: Marlin_main.cpp:1569
 msgid "Warning: printer type changed."
 msgstr ""
 
 # MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3128
+#: Marlin_main.cpp:3308
 msgid "Was filament unload successful?"
 msgstr ""
 
 # MSG_SELFTEST_WIRINGERROR
-#: messages.c:81
+#: messages.c:96
 msgid "Wiring error"
 msgstr ""
 
 # MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5834
+#: ultralcd.cpp:5775
 msgid "Wizard"
 msgstr ""
 
 # MSG_XYZ_DETAILS c=18
-#: ultralcd.cpp:2210
+#: ultralcd.cpp:2152
 msgid "XYZ cal. details"
 msgstr ""
 
@@ -1561,182 +1576,177 @@ msgid "XYZ calibration failed. Please consult the manual."
 msgstr ""
 
 # MSG_YES
-#: messages.c:102
+#: messages.c:119
 msgid "Yes"
 msgstr ""
 
 # MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:101
+#: messages.c:118
 msgid "You can always resume the Wizard from Calibration -> Wizard."
 msgstr ""
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
-#: ultralcd.cpp:3904
+#: ultralcd.cpp:3817
 msgid "XYZ calibration all right. Skew will be corrected automatically."
 msgstr ""
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
-#: ultralcd.cpp:3901
+#: ultralcd.cpp:3814
 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
 msgstr ""
 
 # MSG_TIMEOUT c=12
-#: messages.c:137
+#: messages.c:157
 msgid "Timeout"
 msgstr ""
 
 # MSG_X_CORRECTION c=13
-#: ultralcd.cpp:5190
+#: ultralcd.cpp:5091
 msgid "X-correct:"
 msgstr ""
 
 # MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3898
+#: ultralcd.cpp:3811
 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
 msgstr ""
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
-#: ultralcd.cpp:3882
+#: ultralcd.cpp:3795
 msgid "XYZ calibration compromised. Front calibration points not reachable."
 msgstr ""
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3885
+#: ultralcd.cpp:3798
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr ""
 
 # MSG_LOAD_ALL c=17
-#: ultralcd.cpp:6261
+#: ultralcd.cpp:6171
 msgid "Load all"
 msgstr ""
 
 # 
-#: ultralcd.cpp:3864
+#: ultralcd.cpp:3777
 msgid "XYZ calibration failed. Bed calibration point was not found."
 msgstr ""
 
 # 
-#: ultralcd.cpp:3870
+#: ultralcd.cpp:3783
 msgid "XYZ calibration failed. Front calibration points not reachable."
 msgstr ""
 
 # 
-#: ultralcd.cpp:3873
+#: ultralcd.cpp:3786
 msgid "XYZ calibration failed. Right front calibration point not reachable."
 msgstr ""
 
 # 
-#: ultralcd.cpp:2991
+#: ultralcd.cpp:2917
 msgid "Y distance from min"
 msgstr ""
 
 # 
-#: ultralcd.cpp:4958
+#: ultralcd.cpp:4859
 msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
 msgstr ""
 
 #  c=20 r=5
-#: ultralcd.cpp:7558
+#: ultralcd.cpp:7315
 msgid "Verification failed, remove the filament and try again."
 msgstr ""
 
 # MSG_Y_CORRECTION c=13
-#: ultralcd.cpp:5191
+#: ultralcd.cpp:5092
 msgid "Y-correct:"
 msgstr ""
 
 # MSG_OFF
-#: messages.c:105
+#: messages.c:122
 msgid "Off"
 msgstr ""
 
 # MSG_ON
-#: messages.c:106
+#: messages.c:123
 msgid "On"
 msgstr ""
 
 # 
-#: messages.c:53
+#: messages.c:62
 msgid "Back"
 msgstr ""
 
 # 
-#: ultralcd.cpp:5724
+#: ultralcd.cpp:5647
 msgid "Checks"
 msgstr ""
 
 # 
-#: ultralcd.cpp:8349
+#: ultralcd.cpp:8090
 msgid "False triggering"
 msgstr ""
 
 # 
-#: ultralcd.cpp:4013
+#: ultralcd.cpp:3920
 msgid "FINDA:"
 msgstr ""
 
 # MSG_FIRMWARE
-#: language.h:23
+#: language.h:24
 msgid "Firmware"
 msgstr ""
 
 # MSG_STRICT
-#: messages.c:112
+#: messages.c:129
 msgid "Strict"
 msgstr ""
 
 # MSG_WARN
-#: messages.c:111
+#: messages.c:128
 msgid "Warn"
 msgstr ""
 
-# 
-#: messages.c:83
+# MSG_HW_SETUP c=18
+#: messages.c:100
 msgid "HW Setup"
 msgstr ""
 
 # 
-#: ultralcd.cpp:4017
+#: ultralcd.cpp:3924
 msgid "IR:"
 msgstr ""
 
 # MSG_MAGNETS_COMP
-#: messages.c:130
+#: messages.c:150
 msgid "Magnets comp."
 msgstr ""
 
 # MSG_MESH
-#: messages.c:128
+#: messages.c:147
 msgid "Mesh"
 msgstr ""
 
 # 
-#: ultralcd.cpp:5763
-msgid "Mesh bed leveling"
-msgstr ""
-
-# 
-#: Marlin_main.cpp:872
+#: Marlin_main.cpp:927
 msgid "MK3S firmware detected on MK3 printer"
 msgstr ""
 
 # MSG_MMU_MODE
-#: messages.c:117
+#: messages.c:136
 msgid "MMU Mode"
 msgstr ""
 
 # 
-#: ultralcd.cpp:4494
+#: ultralcd.cpp:4395
 msgid "Mode change in progress ..."
 msgstr ""
 
 # MSG_MODEL
-#: messages.c:113
+#: messages.c:130
 msgid "Model"
 msgstr ""
 
 # MSG_NOZZLE_DIAMETER
-#: messages.c:116
+#: messages.c:135
 msgid "Nozzle d."
 msgstr ""
 
@@ -1750,13 +1760,13 @@ msgstr ""
 msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
 msgstr ""
 
-# 
-#: util.cpp:431
+# MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5
+#: messages.c:133
 msgid "G-code sliced for a different printer type. Continue?"
 msgstr ""
 
-# 
-#: util.cpp:437
+# MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=6
+#: messages.c:134
 msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
 msgstr ""
 
@@ -1771,17 +1781,17 @@ msgid "G-code sliced for a newer firmware. Please update the firmware. Print can
 msgstr ""
 
 # 
-#: ultralcd.cpp:4009
+#: ultralcd.cpp:3916
 msgid "PINDA:"
 msgstr ""
 
 #  c=20
-#: ultralcd.cpp:2452
+#: ultralcd.cpp:2402
 msgid "Preheating to cut"
 msgstr ""
 
 #  c=20
-#: ultralcd.cpp:2449
+#: ultralcd.cpp:2399
 msgid "Preheating to eject"
 msgstr ""
 
@@ -1796,47 +1806,47 @@ msgid "Printer nozzle diameter differs from the G-code. Please check the value i
 msgstr ""
 
 #  c=20
-#: ultralcd.cpp:8355
+#: ultralcd.cpp:8095
 msgid "%s level expected"
 msgstr ""
 
 # 
-#: ultralcd.cpp:6814
+#: ultralcd.cpp:6574
 msgid "Rename"
 msgstr ""
 
 # 
-#: ultralcd.cpp:6807
+#: ultralcd.cpp:6567
 msgid "Select"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2212
+#: ultralcd.cpp:2154
 msgid "Sensor info"
 msgstr ""
 
 # MSG_SHEET c=10
-#: messages.c:54
+#: messages.c:63
 msgid "Sheet"
 msgstr ""
 
 # MSG_SOUND_BLIND
-#: messages.c:127
+#: messages.c:146
 msgid "Assist"
 msgstr ""
 
-#  c=18
-#: ultralcd.cpp:5722
+# MSG_STEEL_SHEET c=18
+#: messages.c:64
 msgid "Steel sheets"
 msgstr ""
 
 # MSG_Z_CORRECTION c=13
-#: ultralcd.cpp:5192
+#: ultralcd.cpp:5093
 msgid "Z-correct:"
 msgstr ""
 
 # MSG_Z_PROBE_NR
-#: messages.c:129
+#: messages.c:149
 msgid "Z-probe nr."
 msgstr ""
 

+ 390 - 380
lang/po/Firmware_cs.po

@@ -7,8 +7,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Language: cs\n"
 "Project-Id-Version: Prusa-Firmware\n"
-"POT-Creation-Date: Wed May 13 17:41:02 CEST 2020\n"
-"PO-Revision-Date: Wed May 13 17:41:02 CEST 2020\n"
+"POT-Creation-Date: Di 26. Jan 11:03:57 CET 2021\n"
+"PO-Revision-Date: Di 26. Jan 11:03:57 CET 2021\n"
 "Language-Team: \n"
 "X-Generator: Poedit 2.0.7\n"
 "X-Poedit-SourceCharset: UTF-8\n"
@@ -20,28 +20,43 @@ msgstr ""
 msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
 msgstr "[%.7s]Doladeni Z\x0auz nastaveno, pouzit\x0anebo reset od nuly?\x0a%cPokracovat%cReset"
 
-# MSG_03_OR_OLDER c=18
-#: messages.c:144
+# MSG_IR_03_OR_OLDER c=18
+#: messages.c:164
 msgid " 0.3 or older"
 msgstr " 0.3 nebo starsi"
 
-# MSG_04_OR_NEWER c=18
-#: messages.c:143
+#  c=18
+#: Marlin_main.cpp:9626
+msgid "FS v0.3 or older"
+msgstr "FS 0.3 nebo starsi"
+
+# MSG_IR_04_OR_NEWER c=18
+#: messages.c:163
 msgid " 0.4 or newer"
 msgstr " 0.4 nebo novejsi"
 
+#  c=18
+#: Marlin_main.cpp:9625
+msgid "FS v0.4 or newer"
+msgstr "FS 0.4 a novejsi"
+
+# MSG_IR_UNKNOWN c=18
+#: messages.c:165
+msgid "unknown state"
+msgstr "neznamy stav"
+
 # MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
-#: messages.c:36
+#: messages.c:43
 msgid " of 4"
 msgstr " z 4"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:56
+#: messages.c:66
 msgid " of 9"
 msgstr " z 9"
 
 # MSG_MEASURED_OFFSET
-#: ultralcd.cpp:3064
+#: ultralcd.cpp:2988
 msgid "[0;0] point offset"
 msgstr "[0;0] odsazeni bodu"
 
@@ -56,47 +71,47 @@ msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
 msgstr "POZOR:\x0aCrash detekce\x0adeaktivovana ve\x0aStealth modu"
 
 # 
-#: ultralcd.cpp:2460
+#: ultralcd.cpp:2410
 msgid ">Cancel"
 msgstr ">Zrusit"
 
 # MSG_BABYSTEPPING_Z c=15
-#: ultralcd.cpp:3184
+#: ultralcd.cpp:3108
 msgid "Adjusting Z:"
 msgstr "Doladeni Z:"
 
 # MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:8677
+#: ultralcd.cpp:8390
 msgid "All correct      "
 msgstr "Vse OK "
 
 # MSG_WIZARD_DONE c=20 r=8
-#: messages.c:99
+#: messages.c:116
 msgid "All is done. Happy printing!"
 msgstr "Vse je hotovo."
 
 # 
-#: ultralcd.cpp:1956
+#: ultralcd.cpp:1902
 msgid "Ambient"
 msgstr "Okoli"
 
 # MSG_AUTO c=6
-#: messages.c:140
+#: messages.c:160
 msgid "Auto"
 msgstr ""
 
 # MSG_PRESS c=20 r=2
-#: ultralcd.cpp:2609
+#: ultralcd.cpp:2567
 msgid "and press the knob"
 msgstr "a stisknete tlacitko"
 
 # MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3506
+#: ultralcd.cpp:3429
 msgid "Are left and right Z~carriages all up?"
 msgstr "Dojely oba Z voziky k~hornimu dorazu?"
 
 # MSG_AUTO_DEPLETE c=17 r=1
-#: messages.c:108
+#: messages.c:125
 msgid "SpoolJoin"
 msgstr ""
 
@@ -106,32 +121,32 @@ msgid "Auto home"
 msgstr ""
 
 # MSG_AUTOLOAD_FILAMENT c=18
-#: ultralcd.cpp:6961
+#: ultralcd.cpp:6716
 msgid "AutoLoad filament"
 msgstr "AutoZavedeni fil."
 
 # MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4445
+#: ultralcd.cpp:4346
 msgid "Autoloading filament available only when filament sensor is turned on..."
 msgstr "Automaticke zavadeni filamentu je mozne pouze pri zapnutem filament senzoru..."
 
 # MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2804
+#: ultralcd.cpp:2730
 msgid "Autoloading filament is active, just press the knob and insert filament..."
 msgstr "Automaticke zavadeni filamentu aktivni, stisknete tlacitko a vlozte filament..."
 
 # MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:8325
+#: ultralcd.cpp:8073
 msgid "Axis length"
 msgstr "Delka osy"
 
 # MSG_SELFTEST_AXIS
-#: ultralcd.cpp:8327
+#: ultralcd.cpp:8074
 msgid "Axis"
 msgstr "Osa"
 
 # MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:8269
+#: ultralcd.cpp:8031
 msgid "Bed / Heater"
 msgstr "Podlozka / Topeni"
 
@@ -146,12 +161,12 @@ msgid "Bed Heating"
 msgstr "Zahrivani bedu"
 
 # MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5861
+#: ultralcd.cpp:5802
 msgid "Bed level correct"
 msgstr "Korekce podlozky"
 
 # MSG_BELTTEST c=17
-#: ultralcd.cpp:5841
+#: ultralcd.cpp:5782
 msgid "Belt test        "
 msgstr "Test remenu      "
 
@@ -161,12 +176,12 @@ msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for
 msgstr "Kalibrace Z selhala. Sensor nesepnul. Znecistena tryska? Cekam na reset."
 
 # MSG_BRIGHT c=6
-#: messages.c:138
+#: messages.c:158
 msgid "Bright"
 msgstr "Jasny"
 
 # MSG_BRIGHTNESS c=18
-#: messages.c:134
+#: messages.c:154
 msgid "Brightness"
 msgstr "Podsviceni"
 
@@ -175,123 +190,123 @@ msgstr "Podsviceni"
 msgid "Bed"
 msgstr "Podlozka"
 
-# MSG_MENU_BELT_STATUS c=18
-#: ultralcd.cpp:2009
+# MSG_BELT_STATUS c=18
+#: 
 msgid "Belt status"
 msgstr "Stav remenu"
 
 # MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:67
+#: messages.c:80
 msgid "Blackout occurred. Recover print?"
 msgstr "Detekovan vypadek proudu.Obnovit tisk?"
 
 # 
-#: ultralcd.cpp:8679
+#: ultralcd.cpp:8392
 msgid "Calibrating home"
 msgstr "Kalibruji vychozi poz."
 
 # MSG_CALIBRATE_BED
-#: ultralcd.cpp:5850
+#: ultralcd.cpp:5791
 msgid "Calibrate XYZ"
 msgstr "Kalibrace XYZ"
 
 # MSG_HOMEYZ
-#: messages.c:44
+#: messages.c:51
 msgid "Calibrate Z"
 msgstr "Kalibrovat Z"
 
 # MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4637
+#: ultralcd.cpp:4538
 msgid "Calibrate"
 msgstr "Zkalibrovat"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3469
+#: ultralcd.cpp:3392
 msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr "Kalibrace XYZ. Otacenim tlacitka posunte Z osu az k~hornimu dorazu. Potvrdte tlacitkem."
 
 # MSG_CALIBRATE_Z_AUTO c=20 r=2
-#: messages.c:19
+#: messages.c:20
 msgid "Calibrating Z"
 msgstr "Kalibruji Z"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3469
+#: ultralcd.cpp:3392
 msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr "Kalibrace Z. Otacenim tlacitka posunte Z osu az k~hornimu dorazu. Potvrdte tlacitkem."
 
 # MSG_HOMEYZ_DONE
-#: ultralcd.cpp:865
+#: ultralcd.cpp:813
 msgid "Calibration done"
 msgstr "Kalibrace OK"
 
 # MSG_MENU_CALIBRATION
-#: messages.c:57
+#: messages.c:67
 msgid "Calibration"
 msgstr "Kalibrace"
 
 # 
-#: ultralcd.cpp:4815
+#: ultralcd.cpp:4716
 msgid "Cancel"
 msgstr "Zrusit"
 
 # MSG_SD_REMOVED
-#: ultralcd.cpp:9090
+#: ultralcd.cpp:8842
 msgid "Card removed"
 msgstr "Karta vyjmuta"
 
 # MSG_NOT_COLOR
-#: ultralcd.cpp:2709
+#: ultralcd.cpp:2647
 msgid "Color not correct"
 msgstr "Barva neni cista"
 
 # MSG_COOLDOWN
-#: messages.c:22
+#: messages.c:25
 msgid "Cooldown"
 msgstr "Zchladit"
 
 # 
-#: ultralcd.cpp:4570
+#: ultralcd.cpp:4471
 msgid "Copy selected language?"
 msgstr "Kopirovat vybrany jazyk?"
 
 # MSG_CRASHDETECT c=13
-#: messages.c:24
+#: messages.c:28
 msgid "Crash det."
 msgstr ""
 
 # 
-#: ultralcd.cpp:4950
+#: ultralcd.cpp:4851
 msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
 msgstr "Zvolte filament pro kalibraci prvni vrstvy z nasledujiciho menu"
 
 # MSG_CRASH_DETECTED c=20 r=1
-#: messages.c:23
+#: messages.c:27
 msgid "Crash detected."
 msgstr "Detekovan naraz."
 
 # 
-#: Marlin_main.cpp:607
+#: Marlin_main.cpp:657
 msgid "Crash detected. Resume print?"
 msgstr "Detekovan naraz. Obnovit tisk?"
 
-# 
-#: ultralcd.cpp:1785
+# MSG_CRASH c=7
+#: messages.c:26
 msgid "Crash"
 msgstr "Naraz"
 
 # MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:6002
+#: ultralcd.cpp:5933
 msgid "Current"
 msgstr "Pouze aktualni"
 
 # MSG_DATE c=17 r=1
-#: ultralcd.cpp:2163
+#: ultralcd.cpp:2112
 msgid "Date:"
 msgstr "Datum:"
 
 # MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5743
+#: ultralcd.cpp:5683
 msgid "Disable steppers"
 msgstr "Vypnout motory"
 
@@ -301,377 +316,372 @@ msgid "Distance between tip of the nozzle and the bed surface has not been set y
 msgstr "Neni zkalibrovana vzdalenost trysky od tiskove podlozky. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Nastaveni prvni vrstvy."
 
 # MSG_FS_CONTINUE c=5
-#: messages.c:132
+#: messages.c:152
 msgid "Cont."
 msgstr "Pokr."
 
 # MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:5125
+#: ultralcd.cpp:5026
 msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
 msgstr "Chcete opakovat posledni krok a pozmenit vzdalenost mezi tryskou a podlozkou?"
 
 # MSG_EXTRUDER_CORRECTION c=13
-#: ultralcd.cpp:5194
+#: ultralcd.cpp:5095
 msgid "E-correct:"
 msgstr "Korekce E:"
 
-# MSG_EJECT_FILAMENT c=17 r=1
-#: messages.c:49
+# MSG_EJECT_FILAMENT c=16
+#: messages.c:58
 msgid "Eject filament"
-msgstr "Vysunout filament"
+msgstr "Vysunout fil."
 
 # MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1416
+#: mmu.cpp:1414
 msgid "Ejecting filament"
 msgstr "Vysouvam filament"
 
 # MSG_SELFTEST_ENDSTOP_NOTHIT c=20
-#: ultralcd.cpp:8293
+#: ultralcd.cpp:8049
 msgid "Endstop not hit"
 msgstr "Kon. spinac nesepnut"
 
 # MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:8287
+#: ultralcd.cpp:8044
 msgid "Endstop"
 msgstr "Koncovy spinac"
 
 # MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:8275
+#: ultralcd.cpp:8035
 msgid "Endstops"
 msgstr "Konc. spinace"
 
 # MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6998
+#: ultralcd.cpp:6753
 msgid "Error - static memory has been overwritten"
 msgstr "Chyba - Doslo k prepisu staticke pameti!"
 
 # MSG_CUT_FILAMENT c=16
-#: messages.c:50
+#: messages.c:59
 msgid "Cut filament"
 msgstr "Ustrihnout"
 
 # MSG_CUTTER c=9
-#: messages.c:109
+#: messages.c:126
 msgid "Cutter"
 msgstr "Strihani"
 
 #  c=18
-#: mmu.cpp:1388
+#: mmu.cpp:1386
 msgid "Cutting filament"
 msgstr "Strihani filamentu"
 
 # MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4458
+#: ultralcd.cpp:4359
 msgid "ERROR: Filament sensor is not responding, please check connection."
 msgstr "CHYBA: Filament senzor nereaguje, zkontrolujte prosim zapojeni."
 
 # MSG_DIM c=6
-#: messages.c:139
+#: messages.c:159
 msgid "Dim"
 msgstr "Temny"
 
 # MSG_ERROR
-#: messages.c:25
+#: messages.c:29
 msgid "ERROR:"
 msgstr "CHYBA:"
 
 # MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:8686
+#: ultralcd.cpp:8398
 msgid "Extruder fan:"
 msgstr "Levy vent.:"
 
 # MSG_INFO_EXTRUDER c=18
-#: ultralcd.cpp:2211
+#: ultralcd.cpp:2153
 msgid "Extruder info"
 msgstr ""
 
-# MSG_MOVE_E
-#: messages.c:26
+# MSG_EXTRUDER c=17
+#: messages.c:30
 msgid "Extruder"
 msgstr ""
 
 # 
-#: ultralcd.cpp:6985
+#: ultralcd.cpp:6740
 msgid "Fail stats MMU"
 msgstr "Selhani MMU"
 
 # MSG_FSENSOR_AUTOLOAD c=13
-#: messages.c:40
+#: messages.c:47
 msgid "F. autoload"
 msgstr "F. autozav."
 
 # 
-#: ultralcd.cpp:6982
+#: ultralcd.cpp:6737
 msgid "Fail stats"
 msgstr "Selhani"
 
 # MSG_FAN_SPEED c=14
-#: messages.c:28
+#: messages.c:34
 msgid "Fan speed"
 msgstr "Rychlost vent."
 
 # MSG_SELFTEST_FAN c=20
-#: messages.c:74
+#: messages.c:89
 msgid "Fan test"
 msgstr "Test ventilatoru"
 
-# MSG_FANS_CHECK
-#: ultralcd.cpp:5751
+# MSG_FANS_CHECK c=13
+#: messages.c:31
 msgid "Fans check"
 msgstr "Kontr. vent."
 
 # MSG_FSENSOR
-#: messages.c:41
+#: messages.c:48
 msgid "Fil. sensor"
 msgstr "Fil. senzor"
 
-#  c=14
-#: ultralcd.cpp:1784
-msgid "Filam. runouts"
+# MSG_FIL_RUNOUTS c=14
+#: 
+msgid "Fil. runouts  "
 msgstr "Vypadky filam."
 
 # MSG_FILAMENT_CLEAN c=20 r=2
-#: messages.c:29
+#: messages.c:35
 msgid "Filament extruding & with correct color?"
 msgstr "Filament vytlacen a spravne barvy?"
 
 # MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2705
+#: ultralcd.cpp:2646
 msgid "Filament not loaded"
 msgstr "Filament nezaveden"
 
 # MSG_FILAMENT_SENSOR c=20
-#: messages.c:80
+#: messages.c:95
 msgid "Filament sensor"
 msgstr "Senzor filamentu"
 
 # MSG_FILAMENT_USED c=19
-#: ultralcd.cpp:2869
+#: ultralcd.cpp:2795
 msgid "Filament used"
 msgstr "Spotrebovano filam."
 
 # MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2870
+#: ultralcd.cpp:2796
 msgid "Print time"
 msgstr "Cas tisku"
 
 # MSG_FS_ACTION c=10
-#: messages.c:131
+#: messages.c:151
 msgid "FS Action"
 msgstr "FS reakce"
 
-#  c=18
-#: Marlin_main.cpp:9512
-msgid "FS v0.4 or newer"
-msgstr "FS v0.4 a novejsi"
-
 # MSG_FILE_INCOMPLETE c=20 r=3
-#: ultralcd.cpp:8814
+#: ultralcd.cpp:8540
 msgid "File incomplete. Continue anyway?"
 msgstr "Soubor nekompletni. Pokracovat?"
 
 # MSG_FINISHING_MOVEMENTS c=20
-#: messages.c:37
+#: messages.c:44
 msgid "Finishing movements"
 msgstr "Dokoncovani pohybu"
 
 # MSG_V2_CALIBRATION c=18
-#: messages.c:103
+#: messages.c:120
 msgid "First layer cal."
 msgstr "Kal. prvni vrstvy"
 
 # MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:5046
+#: ultralcd.cpp:4947
 msgid "First, I will run the selftest to check most common assembly problems."
 msgstr "Nejdriv pomoci selftestu zkontoluji nejcastejsi chyby vznikajici pri sestaveni tiskarny."
 
 # 
-#: mmu.cpp:727
+#: mmu.cpp:726
 msgid "Fix the issue and then press button on MMU unit."
 msgstr "Opravte chybu a pote stisknete tlacitko na jednotce MMU."
 
 # MSG_FLOW
-#: ultralcd.cpp:7125
+#: ultralcd.cpp:6880
 msgid "Flow"
 msgstr "Prutok"
 
 # MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2156
+#: ultralcd.cpp:2105
 msgid "forum.prusa3d.com"
 msgstr ""
 
 # MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:71
+#: messages.c:86
 msgid "Front print fan?"
 msgstr "Predni tiskovy vent?"
 
 # MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3266
+#: ultralcd.cpp:3190
 msgid "Front side[um]"
 msgstr "Vpredu [um]"
 
 # MSG_SELFTEST_FANS
-#: ultralcd.cpp:8333
+#: ultralcd.cpp:8079
 msgid "Front/left fans"
 msgstr "Predni/levy vent."
 
 # MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:8263
+#: ultralcd.cpp:8027
 msgid "Heater/Thermistor"
 msgstr "Topeni/Termistor"
 
 # MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:9440
+#: Marlin_main.cpp:9616
 msgid "Heating disabled by safety timer."
 msgstr "Zahrivani preruseno bezpecnostnim casovacem."
 
 # MSG_HEATING_COMPLETE c=20
-#: messages.c:43
+#: messages.c:50
 msgid "Heating done."
 msgstr "Zahrivani OK."
 
 # MSG_HEATING
-#: messages.c:42
+#: messages.c:49
 msgid "Heating"
 msgstr "Zahrivani"
 
 # MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:5025
+#: ultralcd.cpp:4926
 msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
 msgstr "Dobry den, jsem vase tiskarna Original Prusa i3. Chcete abych Vas provedla kalibracnim procesem?"
 
 # MSG_PRUSA3D_HOWTO
-#: ultralcd.cpp:2157
+#: ultralcd.cpp:2106
 msgid "howto.prusa3d.com"
 msgstr ""
 
 # MSG_FILAMENTCHANGE
-#: messages.c:34
+#: messages.c:41
 msgid "Change filament"
 msgstr "Vymenit filament"
 
 # MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2620
+#: ultralcd.cpp:2576
 msgid "Change success!"
 msgstr "Zmena uspesna!"
 
 # MSG_CORRECTLY c=20
-#: ultralcd.cpp:2697
+#: ultralcd.cpp:2644
 msgid "Changed correctly?"
 msgstr "Vymena ok?"
 
 # MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:77
+#: messages.c:92
 msgid "Checking bed     "
 msgstr "Kontrola podlozky"
 
 # MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:8668
+#: ultralcd.cpp:8381
 msgid "Checking endstops"
 msgstr "Kontrola endstopu"
 
 # MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:8674
+#: ultralcd.cpp:8387
 msgid "Checking hotend  "
 msgstr "Kontrola hotend "
 
 # MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:78
+#: messages.c:93
 msgid "Checking sensors "
 msgstr "Kontrola senzoru"
 
-# MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:7482
-msgid "Checking X axis  "
+# MSG_CHECKING_X c=20
+#: messages.c:22
+msgid "Checking X axis"
 msgstr "Kontrola osy X"
 
-# MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:7491
-msgid "Checking Y axis  "
+# MSG_CHECKING_Y c=20
+#: messages.c:23
+msgid "Checking Y axis"
 msgstr "Kontrola osy Y"
 
 # MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:8671
-msgid "Checking Z axis  "
+#: 
+msgid "Checking Z axis"
 msgstr "Kontrola osy Z"
 
 # MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:45
+#: messages.c:52
 msgid "Choose extruder:"
 msgstr "Vyberte extruder:"
 
 # MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:46
+#: messages.c:53
 msgid "Choose filament:"
 msgstr "Vyber filament:"
 
 # MSG_FILAMENT c=17 r=1
-#: messages.c:27
+#: messages.c:33
 msgid "Filament"
 msgstr ""
 
 # MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:5055
+#: ultralcd.cpp:4956
 msgid "I will run xyz calibration now. It will take approx. 12 mins."
 msgstr "Nyni provedu xyz kalibraci. Zabere to priblizne 12 min."
 
 # MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:5063
+#: ultralcd.cpp:4964
 msgid "I will run z calibration now."
 msgstr "Nyni provedu z kalibraci."
 
 # MSG_WATCH
-#: messages.c:97
+#: messages.c:114
 msgid "Info screen"
 msgstr "Informace"
 
 # MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2605
+#: ultralcd.cpp:2564
 msgid "Insert filament"
 msgstr "Vlozte filament"
 
-# MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4835
+# MSG_FILAMENT_LOADED c=20 r=2
+#: messages.c:36
 msgid "Is filament loaded?"
 msgstr "Je filament zaveden?"
 
 # MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:90
+#: messages.c:107
 msgid "Is steel sheet on heatbed?"
 msgstr "Je tiskovy plat na podlozce?"
 
-# 
-#: ultralcd.cpp:1727
+# MSG_LAST_PRINT_FAILURES c=20
+#: messages.c:55
 msgid "Last print failures"
 msgstr "Selhani posl. tisku"
 
 # 
-#: ultralcd.cpp:5133
+#: ultralcd.cpp:5034
 msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
 msgstr "Mate-li vice tiskovych platu, kalibrujte je v menu Nastaveni - HW nastaveni - Tiskove platy"
 
-# 
-#: ultralcd.cpp:1704
+# MSG_LAST_PRINT c=18
+#: messages.c:54
 msgid "Last print"
 msgstr "Posledni tisk"
 
 # MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:72
+#: messages.c:87
 msgid "Left hotend fan?"
 msgstr "Levy vent na trysce?"
 
 # 
-#: ultralcd.cpp:2993
+#: ultralcd.cpp:2919
 msgid "Left"
 msgstr "Vlevo"
 
 # MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3264
+#: ultralcd.cpp:3188
 msgid "Left side [um]"
 msgstr "Vlevo [um]"
 
 # 
-#: ultralcd.cpp:5766
+#: ultralcd.cpp:5706
 msgid "Lin. correction"
 msgstr "Korekce lin."
 
@@ -681,197 +691,197 @@ msgid "Live adjust Z"
 msgstr "Doladeni osy Z"
 
 #  c=20 r=6
-#: ultralcd.cpp:7527
+#: ultralcd.cpp:7280
 msgid "Insert the filament (do not load it) into the extruder and then press the knob."
 msgstr "Vlozte filament (nezavadejte) do extruderu a stisknete tlacitko"
 
 # MSG_LOAD_FILAMENT c=17
-#: messages.c:47
+#: messages.c:56
 msgid "Load filament"
 msgstr "Zavest filament"
 
 # MSG_LOADING_COLOR
-#: ultralcd.cpp:2645
+#: ultralcd.cpp:2598
 msgid "Loading color"
 msgstr "Cisteni barvy"
 
 # MSG_LOADING_FILAMENT c=20
-#: messages.c:48
+#: messages.c:57
 msgid "Loading filament"
 msgstr "Zavadeni filamentu"
 
 # MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:8317
+#: ultralcd.cpp:8067
 msgid "Loose pulley"
 msgstr "Uvolnena remenicka"
 
 # 
-#: ultralcd.cpp:6944
+#: ultralcd.cpp:6699
 msgid "Load to nozzle"
 msgstr "Zavest do trysky"
 
 # MSG_M117_V2_CALIBRATION c=25
-#: messages.c:51
+#: messages.c:60
 msgid "M117 First layer cal."
 msgstr "M117 Kal. prvni vrstvy"
 
 # MSG_MAIN
-#: messages.c:52
+#: messages.c:61
 msgid "Main"
 msgstr "Hlavni nabidka"
 
 # MSG_BL_HIGH c=12
-#: messages.c:135
+#: messages.c:155
 msgid "Level Bright"
 msgstr ""
 
 # MSG_BL_LOW c=12
-#: messages.c:136
+#: messages.c:156
 msgid "Level Dimmed"
 msgstr ""
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:55
+#: messages.c:65
 msgid "Measuring reference height of calibration point"
 msgstr "Merim referencni vysku kalibracniho bodu"
 
-# MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5856
+# MSG_MESH_BED_LEVELING c=18
+#: messages.c:148
 msgid "Mesh Bed Leveling"
 msgstr ""
 
 # MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:765
+#: mmu.cpp:764
 msgid "MMU OK. Resuming position..."
 msgstr "MMU OK. Pokracuji v tisku..."
 
 # MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:758
+#: mmu.cpp:757
 msgid "MMU OK. Resuming temperature..."
 msgstr "MMU OK. Pokracuji v nahrivani..."
 
 # 
-#: ultralcd.cpp:3034
+#: ultralcd.cpp:2960
 msgid "Measured skew"
 msgstr "Merene zkoseni"
 
-# 
-#: ultralcd.cpp:1728
+# MSG_MMU_FAILS c=14
+#: messages.c:68
 msgid "MMU fails"
 msgstr "Selhani MMU"
 
 # 
-#: mmu.cpp:1588
+#: mmu.cpp:1586
 msgid "MMU load failed     "
 msgstr "Zavedeni MMU selhalo"
 
-# 
-#: ultralcd.cpp:1729
+# MSG_MMU_LOAD_FAILS c=14
+#: messages.c:69
 msgid "MMU load fails"
 msgstr "MMU selhani zavadeni"
 
 # MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:776
+#: mmu.cpp:775
 msgid "MMU OK. Resuming..."
 msgstr "MMU OK. Pokracuji..."
 
 # MSG_MODE
-#: messages.c:84
+#: messages.c:101
 msgid "Mode"
 msgstr "Mod"
 
 #  c=20 r=3
-#: Marlin_main.cpp:879
+#: Marlin_main.cpp:934
 msgid "MK3 firmware detected on MK3S printer"
 msgstr ""
 
 # MSG_NORMAL
-#: messages.c:88
+#: messages.c:105
 msgid "Normal"
 msgstr ""
 
 # MSG_SILENT
-#: messages.c:87
+#: messages.c:104
 msgid "Silent"
 msgstr "Tichy"
 
 # 
-#: mmu.cpp:722
+#: mmu.cpp:721
 msgid "MMU needs user attention."
 msgstr "MMU potrebuje zasah uzivatele."
 
 # 
-#: ultralcd.cpp:1755
+#: ultralcd.cpp:1701
 msgid "MMU power fails"
 msgstr "MMU vypadky proudu"
 
 # MSG_STEALTH
-#: messages.c:89
+#: messages.c:106
 msgid "Stealth"
 msgstr "Tichy"
 
 # MSG_AUTO_POWER
-#: messages.c:86
+#: messages.c:103
 msgid "Auto power"
 msgstr "Automaticky"
 
 # MSG_HIGH_POWER
-#: messages.c:85
+#: messages.c:102
 msgid "High power"
 msgstr "Vys. vykon"
 
 # 
-#: ultralcd.cpp:2186
+#: ultralcd.cpp:2124
 msgid "MMU2 connected"
 msgstr "MMU2 pripojeno"
 
 # MSG_SELFTEST_MOTOR
-#: messages.c:79
+#: messages.c:94
 msgid "Motor"
 msgstr ""
 
 # MSG_MOVE_AXIS
-#: ultralcd.cpp:5741
+#: ultralcd.cpp:5681
 msgid "Move axis"
 msgstr "Posunout osu"
 
 # MSG_MOVE_X
-#: ultralcd.cpp:4361
+#: ultralcd.cpp:4262
 msgid "Move X"
 msgstr "Posunout X"
 
 # MSG_MOVE_Y
-#: ultralcd.cpp:4362
+#: ultralcd.cpp:4263
 msgid "Move Y"
 msgstr "Posunout Y"
 
 # MSG_MOVE_Z
-#: ultralcd.cpp:4363
+#: ultralcd.cpp:4264
 msgid "Move Z"
 msgstr "Posunout Z"
 
 # MSG_NO_MOVE
-#: Marlin_main.cpp:5541
+#: Marlin_main.cpp:5719
 msgid "No move."
 msgstr "Bez pohybu."
 
 # MSG_NO_CARD
-#: ultralcd.cpp:6911
+#: ultralcd.cpp:6673
 msgid "No SD card"
 msgstr "Zadna SD karta"
 
 # MSG_NA
-#: messages.c:107
+#: messages.c:124
 msgid "N/A"
 msgstr ""
 
 # MSG_NO
-#: messages.c:58
+#: messages.c:70
 msgid "No"
 msgstr "Ne"
 
 # MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:8265
+#: ultralcd.cpp:8028
 msgid "Not connected"
 msgstr "Nezapojeno "
 
@@ -881,157 +891,157 @@ msgid "New firmware version available:"
 msgstr "Vysla nova verze firmware:"
 
 # MSG_SELFTEST_FAN_NO c=19
-#: messages.c:75
+#: messages.c:90
 msgid "Not spinning"
 msgstr "Netoci se"
 
 # MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4946
+#: ultralcd.cpp:4847
 msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
 msgstr "Nyni zkalibruji vzdalenost mezi koncem trysky a povrchem podlozky."
 
 # MSG_WIZARD_WILL_PREHEAT c=20 r=4
-#: ultralcd.cpp:5071
+#: ultralcd.cpp:4972
 msgid "Now I will preheat nozzle for PLA."
 msgstr "Nyni predehreji trysku pro PLA."
 
 # MSG_NOZZLE
-#: messages.c:59
+#: messages.c:71
 msgid "Nozzle"
 msgstr "Tryska"
 
 # MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
-#: Marlin_main.cpp:1518
+#: Marlin_main.cpp:1581
 msgid "Old settings found. Default PID, Esteps etc. will be set."
 msgstr "Neplatne hodnoty nastaveni. Bude pouzito vychozi PID, Esteps atd."
 
 # 
-#: ultralcd.cpp:5062
+#: ultralcd.cpp:4963
 msgid "Now remove the test print from steel sheet."
 msgstr "Nyni odstrante testovaci vytisk z tiskoveho platu."
 
 # 
-#: ultralcd.cpp:1654
+#: ultralcd.cpp:1600
 msgid "Nozzle FAN"
 msgstr "Vent. trysky"
 
 # MSG_PAUSE_PRINT
-#: ultralcd.cpp:6875
+#: ultralcd.cpp:6637
 msgid "Pause print"
 msgstr "Pozastavit tisk"
 
 # MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1539
+#: ultralcd.cpp:1485
 msgid "PID cal.           "
 msgstr "PID kal. "
 
 # MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1545
+#: ultralcd.cpp:1491
 msgid "PID cal. finished"
 msgstr "PID kal. ukoncena"
 
 # MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5862
+#: ultralcd.cpp:5803
 msgid "PID calibration"
 msgstr "PID kalibrace"
 
 # MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:896
+#: ultralcd.cpp:843
 msgid "PINDA Heating"
 msgstr "Nahrivani PINDA"
 
 # MSG_PAPER c=20 r=10
-#: messages.c:60
+#: messages.c:72
 msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
 msgstr "Umistete list papiru na podlozku a udrzujte jej pod tryskou behem mereni prvnich 4 bodu. Pokud tryska zachyti papir, okamzite vypnete tiskarnu."
 
 # MSG_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:5128
+#: ultralcd.cpp:5029
 msgid "Please clean heatbed and then press the knob."
 msgstr "Prosim ocistete podlozku a stisknete tlacitko."
 
 # MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
-#: messages.c:21
+#: messages.c:24
 msgid "Please clean the nozzle for calibration. Click when done."
 msgstr "Pro uspesnou kalibraci ocistete prosim tiskovou trysku. Potvrdte tlacitkem."
 
 # MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:8257
+#: ultralcd.cpp:8022
 msgid "Please check :"
 msgstr "Zkontrolujte :"
 
 # MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:98
+#: messages.c:115
 msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
 msgstr "Prosim nahlednete do prirucky 3D tiskare a opravte problem. Pote obnovte Pruvodce restartovanim tiskarny."
 
 # MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3138
+#: Marlin_main.cpp:3317
 msgid "Please open idler and remove filament manually."
 msgstr "Prosim otevrete idler a manualne odstrante filament."
 
 # MSG_PLACE_STEEL_SHEET c=20 r=4
-#: messages.c:61
+#: messages.c:73
 msgid "Please place steel sheet on heatbed."
 msgstr "Umistete prosim tiskovy plat na podlozku"
 
 # MSG_PRESS_TO_UNLOAD c=20 r=4
-#: messages.c:64
+#: messages.c:77
 msgid "Please press the knob to unload filament"
 msgstr "Pro vysunuti filamentu stisknete prosim tlacitko"
 
 # MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:66
+#: messages.c:79
 msgid "Please pull out filament immediately"
 msgstr "Prosim vyjmete urychlene filament"
 
 # MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1422
+#: mmu.cpp:1420
 msgid "Please remove filament and then press the knob."
 msgstr "Prosim vyjmete filament a pote stisknete tlacitko."
 
 # MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:70
+#: messages.c:82
 msgid "Please remove steel sheet from heatbed."
 msgstr "Odstrante prosim tiskovy plat z podlozky."
 
 # MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4583
+#: Marlin_main.cpp:4766
 msgid "Please run XYZ calibration first."
 msgstr "Nejprve spustte kalibraci XYZ."
 
 # MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1341
+#: mmu.cpp:1340
 msgid "Please update firmware in your MMU2. Waiting for reset."
 msgstr "Prosim aktualizujte firmware ve vasi MMU2 jednotce. Cekam na reset."
 
 # MSG_PLEASE_WAIT c=20
-#: messages.c:62
+#: messages.c:74
 msgid "Please wait"
 msgstr "Prosim cekejte"
 
 # 
-#: ultralcd.cpp:5061
+#: ultralcd.cpp:4962
 msgid "Please remove shipping helpers first."
 msgstr "Nejprve prosim sundejte transportni soucastky."
 
 # MSG_PREHEAT_NOZZLE c=20
-#: messages.c:63
+#: messages.c:76
 msgid "Preheat the nozzle!"
 msgstr "Predehrejte trysku!"
 
 # MSG_PREHEAT
-#: ultralcd.cpp:6853
+#: ultralcd.cpp:6615
 msgid "Preheat"
 msgstr "Predehrev"
 
 # MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:100
+#: messages.c:117
 msgid "Preheating nozzle. Please wait."
 msgstr "Predehrev trysky. Prosim cekejte."
 
 #  c=14
-#: ultralcd.cpp:1959
+#: ultralcd.cpp:1905
 msgid "PINDA"
 msgstr ""
 
@@ -1041,107 +1051,112 @@ msgid "Please upgrade."
 msgstr "Prosim aktualizujte."
 
 # MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:11526
+#: Marlin_main.cpp:11718
 msgid "Press knob to preheat nozzle and continue."
 msgstr "Pro nahrati trysky a pokracovani stisknete tlacitko."
 
 # MSG_FS_PAUSE c=5
-#: fsensor.cpp:710
+#: fsensor.cpp:728
 msgid "Pause"
 msgstr ""
 
-# 
-#: ultralcd.cpp:1783
+# MSG_POWER_FAILURES c=14
+#: messages.c:75
 msgid "Power failures"
 msgstr "Vypadky proudu"
 
 # MSG_PRINT_ABORTED c=20
-#: messages.c:65
+#: messages.c:78
 msgid "Print aborted"
 msgstr "Tisk prerusen"
 
 #  c=20
-#: ultralcd.cpp:2442
+#: ultralcd.cpp:2390
 msgid "Preheating to load"
 msgstr "Predehrev k zavedeni"
 
 #  c=20
-#: ultralcd.cpp:2446
+#: ultralcd.cpp:2395
 msgid "Preheating to unload"
 msgstr "Predehrev k vyjmuti"
 
 # MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:8689
+#: ultralcd.cpp:8401
 msgid "Print fan:"
 msgstr "Tiskovy vent.:"
 
 # MSG_CARD_MENU
-#: messages.c:20
+#: messages.c:21
 msgid "Print from SD"
 msgstr "Tisk z SD"
 
 # 
-#: ultralcd.cpp:2289
+#: ultralcd.cpp:2231
 msgid "Press the knob"
 msgstr "Stisknete hl. tlacitko"
 
 # MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1118
+#: ultralcd.cpp:1065
 msgid "Print paused"
 msgstr "Tisk pozastaven"
 
 # 
-#: mmu.cpp:726
+#: mmu.cpp:725
 msgid "Press the knob to resume nozzle temperature."
 msgstr "Pro pokracovani nahrivani trysky stisknete tlacitko."
 
 # MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
-#: messages.c:38
+#: messages.c:45
 msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
 msgstr "Tiskarna nebyla jeste zkalibrovana. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Postup kalibrace."
 
 # 
-#: ultralcd.cpp:1655
+#: ultralcd.cpp:1601
 msgid "Print FAN"
 msgstr "Tiskovy vent."
 
 # 
-#: ultralcd.cpp:4926
+#: ultralcd.cpp:4827
 msgid "Please insert filament into the extruder, then press the knob to load it."
 msgstr "Prosim vlozte filament do extruderu a stisknete tlacitko k jeho zavedeni"
 
 # 
-#: ultralcd.cpp:4921
+#: ultralcd.cpp:4822
 msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
 msgstr "Prosim vlozte filament do prvni trubicky MMU a stisknete tlacitko k jeho zavedeni"
 
 # 
-#: ultralcd.cpp:4843
+#: ultralcd.cpp:4744
 msgid "Please load filament first."
 msgstr "Prosim nejdriv zavedte filament"
 
 # MSG_PRUSA3D
-#: ultralcd.cpp:2155
+#: ultralcd.cpp:2104
 msgid "prusa3d.com"
 msgstr ""
 
 # MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3267
+#: ultralcd.cpp:3191
 msgid "Rear side [um]"
 msgstr "Vzadu [um]"
 
 #  c=20 r=4
-#: ultralcd.cpp:7549
+#: ultralcd.cpp:7304
 msgid "Please unload the filament first, then repeat this action."
 msgstr "Prosim vyjmete filament a zopakujte tuto akci"
 
+#  c=20 r=4
+#: ultralcd.cpp:7307
+msgid "Please check the IR sensor connection, unload filament if present."
+msgstr "Prosim zkontrolujte zapojeni IR senzoru a vyjmuty filament"
+
 # MSG_RECOVERING_PRINT c=20
-#: Marlin_main.cpp:10883
+#: Marlin_main.cpp:11076
 msgid "Recovering print    "
 msgstr "Obnovovani tisku    "
 
 # MSG_REMOVE_OLD_FILAMENT c=20 r=5
-#: mmu.cpp:833
+#: mmu.cpp:832
 msgid "Remove old filament and press the knob to start loading new filament."
 msgstr "Vyjmete stary filament a stisknete tlacitko pro zavedeni noveho."
 
@@ -1151,102 +1166,102 @@ msgid "Prusa i3 MK3S OK."
 msgstr ""
 
 # MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5867
+#: ultralcd.cpp:5808
 msgid "Reset XYZ calibr."
 msgstr "Reset XYZ kalibr."
 
-# MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3268
+# MSG_RESET c=14
+#: messages.c:83
 msgid "Reset"
 msgstr ""
 
-# MSG_RESUME_PRINT
-#: ultralcd.cpp:6861
+# MSG_RESUME_PRINT c=18
+#: messages.c:84
 msgid "Resume print"
 msgstr "Pokracovat"
 
 # MSG_RESUMING_PRINT c=20
-#: messages.c:69
+#: messages.c:85
 msgid "Resuming print"
 msgstr "Obnoveni tisku"
 
 # MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3265
+#: ultralcd.cpp:3189
 msgid "Right side[um]"
 msgstr "Vpravo [um]"
 
 # MSG_RPI_PORT
-#: messages.c:123
+#: messages.c:142
 msgid "RPi port"
 msgstr ""
 
 # MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4864
+#: ultralcd.cpp:4765
 msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
 msgstr "Spusteni Pruvodce vymaze ulozene vysledky vsech kalibraci a spusti kalibracni proces od zacatku. Pokracovat?"
 
 # MSG_SD_CARD
-#: messages.c:118
+#: messages.c:137
 msgid "SD card"
 msgstr ""
 
 # MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
-#: messages.c:119
+#: messages.c:138
 msgid "FlashAir"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2994
+#: ultralcd.cpp:2920
 msgid "Right"
 msgstr "Vpravo"
 
 # MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: messages.c:35
+#: messages.c:42
 msgid "Searching bed calibration point"
 msgstr "Hledam kalibracni bod podlozky"
 
 # MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5779
+#: ultralcd.cpp:5721
 msgid "Select language"
 msgstr "Vyber jazyka"
 
 # MSG_SELFTEST_OK
-#: ultralcd.cpp:7812
+#: ultralcd.cpp:7579
 msgid "Self test OK"
 msgstr ""
 
 # MSG_SELFTEST_START c=20
-#: ultralcd.cpp:7582
+#: ultralcd.cpp:7347
 msgid "Self test start  "
 msgstr "Self test start "
 
 # MSG_SELFTEST
-#: ultralcd.cpp:5843
+#: ultralcd.cpp:5784
 msgid "Selftest         "
 msgstr "Selftest "
 
 # MSG_SELFTEST_ERROR
-#: ultralcd.cpp:8255
+#: ultralcd.cpp:8021
 msgid "Selftest error !"
 msgstr "Chyba Selftestu!"
 
 # MSG_SELFTEST_FAILED c=20
-#: messages.c:73
+#: messages.c:88
 msgid "Selftest failed  "
 msgstr "Selftest selhal "
 
 # MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1550
+#: Marlin_main.cpp:1613
 msgid "Selftest will be run to calibrate accurate sensorless rehoming."
 msgstr "Pro kalibraci presneho rehomovani bude nyni spusten selftest."
 
 # 
-#: ultralcd.cpp:5102
+#: ultralcd.cpp:5003
 msgid "Select nozzle preheat temperature which matches your material."
 msgstr "Vyberte teplotu predehrati trysky ktera odpovida vasemu materialu."
 
 # MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3286
+#: ultralcd.cpp:3209
 msgid "Set temperature:"
 msgstr "Nastavte teplotu:"
 
@@ -1266,187 +1281,187 @@ msgid "Prusa i3 MK3 OK."
 msgstr ""
 
 # MSG_SETTINGS
-#: messages.c:82
+#: messages.c:97
 msgid "Settings"
 msgstr "Nastaveni"
 
 # MSG_SHOW_END_STOPS c=18
-#: ultralcd.cpp:5864
+#: ultralcd.cpp:5805
 msgid "Show end stops"
 msgstr "Stav konc. spin."
 
 # 
-#: ultralcd.cpp:4008
+#: ultralcd.cpp:3915
 msgid "Sensor state"
 msgstr "Stav senzoru"
 
 # MSG_FILE_CNT c=20 r=6
-#: cardreader.cpp:738
+#: cardreader.cpp:739
 msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
 msgstr "Nektere soubory nebudou setrideny. Maximalni pocet souboru ve slozce pro setrideni je 100."
 
 # MSG_SORT
-#: messages.c:120
+#: messages.c:139
 msgid "Sort"
 msgstr "Trideni"
 
 # MSG_NONE
-#: messages.c:110
+#: messages.c:127
 msgid "None"
 msgstr "Zadne"
 
 # MSG_SORT_TIME
-#: messages.c:121
+#: messages.c:140
 msgid "Time"
 msgstr "Cas"
 
 # 
-#: ultralcd.cpp:3037
+#: ultralcd.cpp:2963
 msgid "Severe skew:"
 msgstr "Tezke zkoseni:"
 
 # MSG_SORT_ALPHA
-#: messages.c:122
+#: messages.c:141
 msgid "Alphabet"
 msgstr "Abeceda"
 
 # MSG_SORTING c=20 r=1
-#: cardreader.cpp:745
+#: cardreader.cpp:746
 msgid "Sorting files"
 msgstr "Trideni souboru"
 
 # MSG_SOUND_LOUD
-#: messages.c:125
+#: messages.c:144
 msgid "Loud"
 msgstr "Hlasity"
 
 # 
-#: ultralcd.cpp:3036
+#: ultralcd.cpp:2962
 msgid "Slight skew:"
 msgstr "Lehke zkoseni:"
 
 # MSG_SOUND
-#: messages.c:124
+#: messages.c:143
 msgid "Sound"
 msgstr "Zvuk"
 
 #  c=7
-#: ultralcd.cpp:1822
+#: ultralcd.cpp:1768
 msgid "Runouts"
 msgstr ""
 
 # 
-#: Marlin_main.cpp:5101
+#: Marlin_main.cpp:5280
 msgid "Some problem encountered, Z-leveling enforced ..."
 msgstr "Vyskytl se problem, srovnavam osu Z ..."
 
 # MSG_SOUND_ONCE
-#: messages.c:126
+#: messages.c:145
 msgid "Once"
 msgstr "Jednou"
 
 # MSG_SPEED
-#: ultralcd.cpp:7119
+#: ultralcd.cpp:6874
 msgid "Speed"
 msgstr "Rychlost"
 
 # MSG_SELFTEST_FAN_YES c=19
-#: messages.c:76
+#: messages.c:91
 msgid "Spinning"
 msgstr "Toci se"
 
 # MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4596
+#: Marlin_main.cpp:4779
 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
 msgstr "Je vyzadovana stabilni pokojova teplota 21-26C a pevna podlozka."
 
 # MSG_STATISTICS
-#: ultralcd.cpp:6978
+#: ultralcd.cpp:6733
 msgid "Statistics  "
 msgstr "Statistika "
 
 # MSG_STOP_PRINT
-#: messages.c:91
+#: messages.c:108
 msgid "Stop print"
 msgstr "Zastavit tisk"
 
 # MSG_STOPPED
-#: messages.c:92
+#: messages.c:109
 msgid "STOPPED. "
 msgstr "ZASTAVENO."
 
 # MSG_SUPPORT
-#: ultralcd.cpp:6987
+#: ultralcd.cpp:6742
 msgid "Support"
 msgstr "Podpora"
 
 # MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:8335
+#: ultralcd.cpp:8080
 msgid "Swapped"
 msgstr "Prohozene"
 
 # 
-#: ultralcd.cpp:4814
+#: ultralcd.cpp:4715
 msgid "Select filament:"
 msgstr "Zvolte filament:"
 
 # MSG_TEMP_CALIBRATION c=14
-#: messages.c:93
+#: messages.c:110
 msgid "Temp. cal."
 msgstr "Tepl. kal."
 
 # 
-#: ultralcd.cpp:4955
+#: ultralcd.cpp:4856
 msgid "Select temperature which matches your material."
 msgstr "Zvolte teplotu, ktera odpovida vasemu materialu."
 
 # MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5873
+#: ultralcd.cpp:5816
 msgid "Temp. calibration"
 msgstr "Teplot. kalibrace"
 
 # MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3933
+#: ultralcd.cpp:3845
 msgid "Temperature calibration failed"
 msgstr "Teplotni kalibrace selhala"
 
 # MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:94
+#: messages.c:111
 msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
 msgstr "Teplotni kalibrace dokoncena a je nyni aktivni. Teplotni kalibraci je mozno deaktivovat v menu Nastaveni->Tepl. kal."
 
 #  c=20 r=3
-#: ultralcd.cpp:7554
+#: ultralcd.cpp:7311
 msgid "Sensor verified, remove the filament now."
 msgstr "Senzor overen, vyjmete filament."
 
 # MSG_TEMPERATURE
-#: ultralcd.cpp:5739
+#: ultralcd.cpp:5679
 msgid "Temperature"
 msgstr "Teplota"
 
 # MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2218
+#: ultralcd.cpp:2160
 msgid "Temperatures"
 msgstr "Teploty"
 
 # MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
-#: messages.c:39
+#: messages.c:46
 msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
 msgstr "Je potreba kalibrovat osu Z. Prosim postupujte dle prirucky, kapitola Zaciname, sekce Postup kalibrace."
 
 # 
-#: ultralcd.cpp:2891
+#: ultralcd.cpp:2817
 msgid "Total filament"
 msgstr "Filament celkem"
 
 # 
-#: ultralcd.cpp:2892
+#: ultralcd.cpp:2818
 msgid "Total print time"
 msgstr "Celkovy cas tisku"
 
 # MSG_TUNE
-#: ultralcd.cpp:6850
+#: ultralcd.cpp:6612
 msgid "Tune"
 msgstr "Ladit"
 
@@ -1455,63 +1470,63 @@ msgstr "Ladit"
 msgid "Unload"
 msgstr "Vysunout"
 
-# 
-#: ultralcd.cpp:1752
+# MSG_TOTAL_FAILURES c=20
+#: messages.c:99
 msgid "Total failures"
 msgstr "Celkem selhani"
 
 # 
-#: ultralcd.cpp:2296
+#: ultralcd.cpp:2238
 msgid "to load filament"
 msgstr "k zavedeni filamentu"
 
 # 
-#: ultralcd.cpp:2300
+#: ultralcd.cpp:2242
 msgid "to unload filament"
 msgstr "k vyjmuti filamentu"
 
 # MSG_UNLOAD_FILAMENT c=17
-#: messages.c:95
+#: messages.c:112
 msgid "Unload filament"
 msgstr "Vyjmout filament"
 
 # MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:96
+#: messages.c:113
 msgid "Unloading filament"
 msgstr "Vysouvam filament"
 
-# 
-#: ultralcd.cpp:1705
+# MSG_TOTAL c=6
+#: messages.c:98
 msgid "Total"
 msgstr "Celkem"
 
 # MSG_USED c=19 r=1
-#: ultralcd.cpp:6001
+#: ultralcd.cpp:5932
 msgid "Used during print"
 msgstr "Pouzite behem tisku"
 
 # MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2221
+#: ultralcd.cpp:2163
 msgid "Voltages"
 msgstr "Napeti"
 
 # 
-#: ultralcd.cpp:2194
+#: ultralcd.cpp:2132
 msgid "unknown"
 msgstr "neznamy"
 
 # MSG_USERWAIT
-#: Marlin_main.cpp:5511
+#: Marlin_main.cpp:5689
 msgid "Wait for user..."
 msgstr "Ceka se na uzivatele..."
 
 # MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3434
+#: ultralcd.cpp:3357
 msgid "Waiting for nozzle and bed cooling"
 msgstr "Cekani na zchladnuti trysky a podlozky."
 
 # MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3395
+#: ultralcd.cpp:3318
 msgid "Waiting for PINDA probe cooling"
 msgstr "Cekani na zchladnuti PINDA"
 
@@ -1521,37 +1536,37 @@ msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU t
 msgstr "Pouzijte vyjmout pro odstraneni filamentu 1 pokud presahuje z PTFE trubicky za tiskarnou. Pouzijte vysunout, pokud neni videt."
 
 # MSG_CHANGED_BOTH c=20 r=4
-#: Marlin_main.cpp:1510
+#: Marlin_main.cpp:1573
 msgid "Warning: both printer type and motherboard type changed."
 msgstr "Varovani: doslo ke zmene typu tiskarny a motherboardu."
 
 # MSG_CHANGED_MOTHERBOARD c=20 r=4
-#: Marlin_main.cpp:1502
+#: Marlin_main.cpp:1565
 msgid "Warning: motherboard type changed."
 msgstr "Varovani: doslo ke zmene typu motherboardu."
 
 # MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1506
+#: Marlin_main.cpp:1569
 msgid "Warning: printer type changed."
 msgstr "Varovani: doslo ke zmene typu tiskarny."
 
 # MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3128
+#: Marlin_main.cpp:3308
 msgid "Was filament unload successful?"
 msgstr "Bylo vysunuti filamentu uspesne?"
 
 # MSG_SELFTEST_WIRINGERROR
-#: messages.c:81
+#: messages.c:96
 msgid "Wiring error"
 msgstr "Chyba zapojeni"
 
 # MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5834
+#: ultralcd.cpp:5775
 msgid "Wizard"
 msgstr "Pruvodce"
 
 # MSG_XYZ_DETAILS c=18
-#: ultralcd.cpp:2210
+#: ultralcd.cpp:2152
 msgid "XYZ cal. details"
 msgstr "Detaily XYZ kal."
 
@@ -1561,182 +1576,177 @@ msgid "XYZ calibration failed. Please consult the manual."
 msgstr "Kalibrace XYZ selhala. Nahlednete do manualu."
 
 # MSG_YES
-#: messages.c:102
+#: messages.c:119
 msgid "Yes"
 msgstr "Ano"
 
 # MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:101
+#: messages.c:118
 msgid "You can always resume the Wizard from Calibration -> Wizard."
 msgstr "Pruvodce muzete kdykoliv znovu spustit z menu Kalibrace -> Pruvodce"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
-#: ultralcd.cpp:3904
+#: ultralcd.cpp:3817
 msgid "XYZ calibration all right. Skew will be corrected automatically."
 msgstr "Kalibrace XYZ v poradku. Zkoseni bude automaticky vyrovnano pri tisku."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
-#: ultralcd.cpp:3901
+#: ultralcd.cpp:3814
 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
 msgstr "Kalibrace XYZ v poradku. X/Y osy mirne zkosene. Dobra prace!"
 
 # MSG_TIMEOUT c=12
-#: messages.c:137
+#: messages.c:157
 msgid "Timeout"
 msgstr ""
 
 # MSG_X_CORRECTION c=13
-#: ultralcd.cpp:5190
+#: ultralcd.cpp:5091
 msgid "X-correct:"
 msgstr "Korekce X:"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3898
+#: ultralcd.cpp:3811
 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
 msgstr "Kalibrace XYZ v poradku. X/Y osy jsou kolme. Gratuluji!"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
-#: ultralcd.cpp:3882
+#: ultralcd.cpp:3795
 msgid "XYZ calibration compromised. Front calibration points not reachable."
 msgstr "Kalibrace XYZ nepresna. Predni kalibracni body moc vpredu."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3885
+#: ultralcd.cpp:3798
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "Kalibrace XYZ nepresna. Pravy predni bod moc vpredu."
 
 # MSG_LOAD_ALL c=17
-#: ultralcd.cpp:6261
+#: ultralcd.cpp:6171
 msgid "Load all"
 msgstr "Zavest vse"
 
 # 
-#: ultralcd.cpp:3864
+#: ultralcd.cpp:3777
 msgid "XYZ calibration failed. Bed calibration point was not found."
 msgstr "Kalibrace XYZ selhala. Kalibracni bod podlozky nenalezen."
 
 # 
-#: ultralcd.cpp:3870
+#: ultralcd.cpp:3783
 msgid "XYZ calibration failed. Front calibration points not reachable."
 msgstr "Kalibrace XYZ selhala. Predni kalibracni body moc vpredu. Srovnejte tiskarnu."
 
 # 
-#: ultralcd.cpp:3873
+#: ultralcd.cpp:3786
 msgid "XYZ calibration failed. Right front calibration point not reachable."
 msgstr "Kalibrace XYZ selhala. Pravy predni bod moc vpredu. Srovnejte tiskarnu."
 
 # 
-#: ultralcd.cpp:2991
+#: ultralcd.cpp:2917
 msgid "Y distance from min"
 msgstr "Y vzdalenost od min"
 
 # 
-#: ultralcd.cpp:4958
+#: ultralcd.cpp:4859
 msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
 msgstr "Tiskarna zacne tisknout lomenou caru. Otacenim tlacitka nastavte optimalni vysku. Postupujte podle obrazku v handbooku (kapitola Kalibrace)."
 
 #  c=20 r=5
-#: ultralcd.cpp:7558
+#: ultralcd.cpp:7315
 msgid "Verification failed, remove the filament and try again."
 msgstr "Overeni selhalo, vyjmete filament a zkuste znovu."
 
 # MSG_Y_CORRECTION c=13
-#: ultralcd.cpp:5191
+#: ultralcd.cpp:5092
 msgid "Y-correct:"
 msgstr "Korekce Y:"
 
 # MSG_OFF
-#: messages.c:105
+#: messages.c:122
 msgid "Off"
 msgstr "Vyp"
 
 # MSG_ON
-#: messages.c:106
+#: messages.c:123
 msgid "On"
 msgstr "Zap"
 
 # 
-#: messages.c:53
+#: messages.c:62
 msgid "Back"
 msgstr "Zpet"
 
 # 
-#: ultralcd.cpp:5724
+#: ultralcd.cpp:5647
 msgid "Checks"
 msgstr "Kontrola"
 
 # 
-#: ultralcd.cpp:8349
+#: ultralcd.cpp:8090
 msgid "False triggering"
 msgstr "Falesne spusteni"
 
 # 
-#: ultralcd.cpp:4013
+#: ultralcd.cpp:3920
 msgid "FINDA:"
 msgstr ""
 
 # MSG_FIRMWARE
-#: language.h:23
+#: language.h:24
 msgid "Firmware"
 msgstr ""
 
 # MSG_STRICT
-#: messages.c:112
+#: messages.c:129
 msgid "Strict"
 msgstr "Prisne"
 
 # MSG_WARN
-#: messages.c:111
+#: messages.c:128
 msgid "Warn"
 msgstr "Varovat"
 
-# 
-#: messages.c:83
+# MSG_HW_SETUP c=18
+#: messages.c:100
 msgid "HW Setup"
 msgstr "HW nastaveni"
 
 # 
-#: ultralcd.cpp:4017
+#: ultralcd.cpp:3924
 msgid "IR:"
 msgstr ""
 
 # MSG_MAGNETS_COMP
-#: messages.c:130
+#: messages.c:150
 msgid "Magnets comp."
 msgstr "Komp. magnetu"
 
 # MSG_MESH
-#: messages.c:128
+#: messages.c:147
 msgid "Mesh"
 msgstr ""
 
 # 
-#: ultralcd.cpp:5763
-msgid "Mesh bed leveling"
-msgstr "Mesh Bed Leveling"
-
-# 
-#: Marlin_main.cpp:872
+#: Marlin_main.cpp:927
 msgid "MK3S firmware detected on MK3 printer"
 msgstr "MK3S firmware detekovan na tiskarne MK3"
 
 # MSG_MMU_MODE
-#: messages.c:117
+#: messages.c:136
 msgid "MMU Mode"
 msgstr "MMU mod"
 
 # 
-#: ultralcd.cpp:4494
+#: ultralcd.cpp:4395
 msgid "Mode change in progress ..."
 msgstr "Probiha zmena modu..."
 
 # MSG_MODEL
-#: messages.c:113
+#: messages.c:130
 msgid "Model"
 msgstr ""
 
 # MSG_NOZZLE_DIAMETER
-#: messages.c:116
+#: messages.c:135
 msgid "Nozzle d."
 msgstr "Tryska"
 
@@ -1750,13 +1760,13 @@ msgstr ""
 msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
 msgstr ""
 
-# 
-#: util.cpp:431
+# MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5
+#: messages.c:133
 msgid "G-code sliced for a different printer type. Continue?"
 msgstr "G-code je pripraven pro jiny typ tiskarny. Pokracovat?"
 
-# 
-#: util.cpp:437
+# MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=6
+#: messages.c:134
 msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
 msgstr "G-code je pripraven pro jiny typ tiskarny. Prosim preslicujte model znovu. Tisk zrusen."
 
@@ -1771,17 +1781,17 @@ msgid "G-code sliced for a newer firmware. Please update the firmware. Print can
 msgstr "G-code je pripraven pro novejsi firmware. Prosim aktualizujte firmware. Tisk zrusen."
 
 # 
-#: ultralcd.cpp:4009
+#: ultralcd.cpp:3916
 msgid "PINDA:"
 msgstr ""
 
 #  c=20
-#: ultralcd.cpp:2452
+#: ultralcd.cpp:2402
 msgid "Preheating to cut"
 msgstr "Predehrev ke strihu"
 
 #  c=20
-#: ultralcd.cpp:2449
+#: ultralcd.cpp:2399
 msgid "Preheating to eject"
 msgstr "Predehrev k vysunuti"
 
@@ -1796,47 +1806,47 @@ msgid "Printer nozzle diameter differs from the G-code. Please check the value i
 msgstr "Prumer trysky tiskarny se lisi od G-code. Prosim zkontrolujte nastaveni. Tisk zrusen."
 
 #  c=20
-#: ultralcd.cpp:8355
+#: ultralcd.cpp:8095
 msgid "%s level expected"
 msgstr ""
 
 # 
-#: ultralcd.cpp:6814
+#: ultralcd.cpp:6574
 msgid "Rename"
 msgstr "Prejmenovat"
 
 # 
-#: ultralcd.cpp:6807
+#: ultralcd.cpp:6567
 msgid "Select"
 msgstr "Vybrat"
 
 # 
-#: ultralcd.cpp:2212
+#: ultralcd.cpp:2154
 msgid "Sensor info"
 msgstr "Senzor info"
 
 # MSG_SHEET c=10
-#: messages.c:54
+#: messages.c:63
 msgid "Sheet"
 msgstr "Plat"
 
 # MSG_SOUND_BLIND
-#: messages.c:127
+#: messages.c:146
 msgid "Assist"
 msgstr "Asist."
 
-#  c=18
-#: ultralcd.cpp:5722
+# MSG_STEEL_SHEET c=18
+#: messages.c:64
 msgid "Steel sheets"
 msgstr "Tiskove platy"
 
 # MSG_Z_CORRECTION c=13
-#: ultralcd.cpp:5192
+#: ultralcd.cpp:5093
 msgid "Z-correct:"
 msgstr "Korekce Z:"
 
 # MSG_Z_PROBE_NR
-#: messages.c:129
+#: messages.c:149
 msgid "Z-probe nr."
 msgstr "Pocet mereni Z"
 

+ 393 - 383
lang/po/Firmware_de.po

@@ -7,8 +7,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Language: de\n"
 "Project-Id-Version: Prusa-Firmware\n"
-"POT-Creation-Date: Fri May 15 16:44:45 CEST 2020\n"
-"PO-Revision-Date: Fri May 15 16:44:45 CEST 2020\n"
+"POT-Creation-Date: Di 26. Jan 11:04:01 CET 2021\n"
+"PO-Revision-Date: Di 26. Jan 11:04:01 CET 2021\n"
 "Language-Team: \n"
 "X-Generator: Poedit 2.0.7\n"
 "X-Poedit-SourceCharset: UTF-8\n"
@@ -20,28 +20,43 @@ msgstr ""
 msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
 msgstr "[%.7s]Z Einstell.\x0aWert gesetzt,weiter\x0aoder mit 0 beginnen?\x0a%cWeiter%cNeu beginnen"
 
-# MSG_03_OR_OLDER c=18
-#: messages.c:144
+# MSG_IR_03_OR_OLDER c=18
+#: messages.c:164
 msgid " 0.3 or older"
 msgstr " 0.3 oder aelter"
 
-# MSG_04_OR_NEWER c=18
-#: messages.c:143
+#  c=18
+#: Marlin_main.cpp:9626
+msgid "FS v0.3 or older"
+msgstr "FS 0.3 oder aelter"
+
+# MSG_IR_04_OR_NEWER c=18
+#: messages.c:163
 msgid " 0.4 or newer"
 msgstr " 0.4 oder neuer"
 
+#  c=18
+#: Marlin_main.cpp:9625
+msgid "FS v0.4 or newer"
+msgstr "FS 0.4 oder neuer"
+
+# MSG_IR_UNKNOWN c=18
+#: messages.c:165
+msgid "unknown state"
+msgstr "Status unbekannt"
+
 # MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
-#: messages.c:36
+#: messages.c:43
 msgid " of 4"
 msgstr " von 4"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:56
+#: messages.c:66
 msgid " of 9"
 msgstr " von 9"
 
 # MSG_MEASURED_OFFSET
-#: ultralcd.cpp:3064
+#: ultralcd.cpp:2988
 msgid "[0;0] point offset"
 msgstr "[0;0] Punktversatz"
 
@@ -56,47 +71,47 @@ msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
 msgstr "WARNUNG:\x0aCrash Erkennung\x0adeaktiviert im\x0aStealth Modus"
 
 # 
-#: ultralcd.cpp:2460
+#: ultralcd.cpp:2410
 msgid ">Cancel"
 msgstr ">Abbruch"
 
 # MSG_BABYSTEPPING_Z c=15
-#: ultralcd.cpp:3184
+#: ultralcd.cpp:3108
 msgid "Adjusting Z:"
 msgstr "Z Anpassen:"
 
 # MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:8677
+#: ultralcd.cpp:8390
 msgid "All correct      "
 msgstr "Alles richtig    "
 
 # MSG_WIZARD_DONE c=20 r=8
-#: messages.c:99
+#: messages.c:116
 msgid "All is done. Happy printing!"
 msgstr "Alles abgeschlossen. Viel Spass beim Drucken!"
 
 # 
-#: ultralcd.cpp:1956
+#: ultralcd.cpp:1902
 msgid "Ambient"
 msgstr "Raumtemp."
 
 # MSG_AUTO c=6
-#: messages.c:140
+#: messages.c:160
 msgid "Auto"
 msgstr ""
 
 # MSG_PRESS c=20 r=2
-#: ultralcd.cpp:2609
+#: ultralcd.cpp:2567
 msgid "and press the knob"
 msgstr "und Knopf druecken"
 
 # MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3506
+#: ultralcd.cpp:3429
 msgid "Are left and right Z~carriages all up?"
 msgstr "Sind linke+rechte Z- Schlitten ganz oben?"
 
 # MSG_AUTO_DEPLETE c=17 r=1
-#: messages.c:108
+#: messages.c:125
 msgid "SpoolJoin"
 msgstr ""
 
@@ -106,32 +121,32 @@ msgid "Auto home"
 msgstr "Startposition"
 
 # MSG_AUTOLOAD_FILAMENT c=18
-#: ultralcd.cpp:6961
+#: ultralcd.cpp:6716
 msgid "AutoLoad filament"
 msgstr "AutoLaden Filament"
 
 # MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4445
+#: ultralcd.cpp:4346
 msgid "Autoloading filament available only when filament sensor is turned on..."
 msgstr "Automatisches Laden Filament nur bei eingeschaltetem Fil. sensor verfuegbar..."
 
 # MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2804
+#: ultralcd.cpp:2730
 msgid "Autoloading filament is active, just press the knob and insert filament..."
 msgstr "Automatisches Laden Filament ist aktiv, Knopf druecken und Filament einlegen..."
 
 # MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:8325
+#: ultralcd.cpp:8073
 msgid "Axis length"
 msgstr "Achsenlaenge"
 
 # MSG_SELFTEST_AXIS
-#: ultralcd.cpp:8327
+#: ultralcd.cpp:8074
 msgid "Axis"
 msgstr "Achse"
 
 # MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:8269
+#: ultralcd.cpp:8031
 msgid "Bed / Heater"
 msgstr "Bett / Heizung"
 
@@ -146,12 +161,12 @@ msgid "Bed Heating"
 msgstr "Bett aufwaermen"
 
 # MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5861
+#: ultralcd.cpp:5802
 msgid "Bed level correct"
 msgstr "Ausgleich Bett ok"
 
 # MSG_BELTTEST c=17
-#: ultralcd.cpp:5841
+#: ultralcd.cpp:5782
 msgid "Belt test        "
 msgstr "Riementest       "
 
@@ -161,12 +176,12 @@ msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for
 msgstr "Z-Kal. fehlgeschlg. Sensor nicht ausgeloest. Schmutzige Duese? Warte auf Reset."
 
 # MSG_BRIGHT c=6
-#: messages.c:138
+#: messages.c:158
 msgid "Bright"
 msgstr "Hell"
 
 # MSG_BRIGHTNESS c=18
-#: messages.c:134
+#: messages.c:154
 msgid "Brightness"
 msgstr "Helligkeit"
 
@@ -175,123 +190,123 @@ msgstr "Helligkeit"
 msgid "Bed"
 msgstr "Bett"
 
-# MSG_MENU_BELT_STATUS c=18
-#: ultralcd.cpp:2009
+# MSG_BELT_STATUS c=18
+#: 
 msgid "Belt status"
 msgstr "Gurtstatus"
 
 # MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:67
+#: messages.c:80
 msgid "Blackout occurred. Recover print?"
 msgstr "Stromausfall! Druck wiederherstellen?"
 
 # 
-#: ultralcd.cpp:8679
+#: ultralcd.cpp:8392
 msgid "Calibrating home"
 msgstr "Kalibriere Start"
 
 # MSG_CALIBRATE_BED
-#: ultralcd.cpp:5850
+#: ultralcd.cpp:5791
 msgid "Calibrate XYZ"
 msgstr "Kalibrierung XYZ"
 
 # MSG_HOMEYZ
-#: messages.c:44
+#: messages.c:51
 msgid "Calibrate Z"
 msgstr "Kalibrierung Z"
 
 # MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4637
+#: ultralcd.cpp:4538
 msgid "Calibrate"
 msgstr "Kalibrieren"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3469
+#: ultralcd.cpp:3392
 msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr "XYZ Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf druecken."
 
 # MSG_CALIBRATE_Z_AUTO c=20 r=2
-#: messages.c:19
+#: messages.c:20
 msgid "Calibrating Z"
 msgstr "Kalibrierung Z"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3469
+#: ultralcd.cpp:3392
 msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr "Z Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf druecken."
 
 # MSG_HOMEYZ_DONE
-#: ultralcd.cpp:865
+#: ultralcd.cpp:813
 msgid "Calibration done"
 msgstr "Kalibrierung OK"
 
 # MSG_MENU_CALIBRATION
-#: messages.c:57
+#: messages.c:67
 msgid "Calibration"
 msgstr "Kalibrierung"
 
 # 
-#: ultralcd.cpp:4815
+#: ultralcd.cpp:4716
 msgid "Cancel"
 msgstr "Abbruch"
 
 # MSG_SD_REMOVED
-#: ultralcd.cpp:9090
+#: ultralcd.cpp:8842
 msgid "Card removed"
 msgstr "SD Karte entfernt"
 
 # MSG_NOT_COLOR
-#: ultralcd.cpp:2709
+#: ultralcd.cpp:2647
 msgid "Color not correct"
 msgstr "Falsche Farbe"
 
 # MSG_COOLDOWN
-#: messages.c:22
+#: messages.c:25
 msgid "Cooldown"
 msgstr "Abkuehlen"
 
 # 
-#: ultralcd.cpp:4570
+#: ultralcd.cpp:4471
 msgid "Copy selected language?"
 msgstr "Gewaehlte Sprache kopieren?"
 
 # MSG_CRASHDETECT c=13
-#: messages.c:24
+#: messages.c:28
 msgid "Crash det."
 msgstr "Crash Erk."
 
 # 
-#: ultralcd.cpp:4950
+#: ultralcd.cpp:4851
 msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
 msgstr "Waehlen Sie ein Filament fuer Erste Schichtkalibrierung aus und waehlen Sie es im On-Screen-Menu aus."
 
 # MSG_CRASH_DETECTED c=20 r=1
-#: messages.c:23
+#: messages.c:27
 msgid "Crash detected."
 msgstr "Crash erkannt."
 
 # 
-#: Marlin_main.cpp:607
+#: Marlin_main.cpp:657
 msgid "Crash detected. Resume print?"
 msgstr "Crash erkannt. Druck fortfuehren?"
 
-# 
-#: ultralcd.cpp:1785
+# MSG_CRASH c=7
+#: messages.c:26
 msgid "Crash"
 msgstr ""
 
 # MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:6002
+#: ultralcd.cpp:5933
 msgid "Current"
 msgstr "Aktuelles"
 
 # MSG_DATE c=17 r=1
-#: ultralcd.cpp:2163
+#: ultralcd.cpp:2112
 msgid "Date:"
 msgstr "Datum:"
 
 # MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5743
+#: ultralcd.cpp:5683
 msgid "Disable steppers"
 msgstr "Motoren aus"
 
@@ -301,377 +316,372 @@ msgid "Distance between tip of the nozzle and the bed surface has not been set y
 msgstr "Der Abstand zwischen der Spitze der Duese und dem Bett ist noch nicht eingestellt. Bitte folgen Sie dem Handbuch, Kapitel Erste Schritte, Abschnitt Erste Schicht Kalibrierung."
 
 # MSG_FS_CONTINUE c=5
-#: messages.c:132
+#: messages.c:152
 msgid "Cont."
 msgstr ""
 
 # MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:5125
+#: ultralcd.cpp:5026
 msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
 msgstr "Moechten Sie den letzten Schritt wiederholen, um den Abstand zwischen Duese und Druckbett neu einzustellen?"
 
 # MSG_EXTRUDER_CORRECTION c=13
-#: ultralcd.cpp:5194
+#: ultralcd.cpp:5095
 msgid "E-correct:"
 msgstr "E-Korrektur:"
 
-# MSG_EJECT_FILAMENT c=17 r=1
-#: messages.c:49
+# MSG_EJECT_FILAMENT c=16
+#: messages.c:58
 msgid "Eject filament"
 msgstr "Filamentauswurf"
 
 # MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1416
+#: mmu.cpp:1414
 msgid "Ejecting filament"
 msgstr "werfe Filament aus"
 
 # MSG_SELFTEST_ENDSTOP_NOTHIT c=20
-#: ultralcd.cpp:8293
+#: ultralcd.cpp:8049
 msgid "Endstop not hit"
 msgstr "Ende nicht getroffen"
 
 # MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:8287
+#: ultralcd.cpp:8044
 msgid "Endstop"
 msgstr "Endanschlag"
 
 # MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:8275
+#: ultralcd.cpp:8035
 msgid "Endstops"
 msgstr "Endschalter"
 
 # MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6998
+#: ultralcd.cpp:6753
 msgid "Error - static memory has been overwritten"
 msgstr "Fehler - statischer Speicher wurde ueberschrieben"
 
 # MSG_CUT_FILAMENT c=16
-#: messages.c:50
+#: messages.c:59
 msgid "Cut filament"
 msgstr "Fil. schneiden"
 
 # MSG_CUTTER c=9
-#: messages.c:109
+#: messages.c:126
 msgid "Cutter"
 msgstr "Messer"
 
 #  c=18
-#: mmu.cpp:1388
+#: mmu.cpp:1386
 msgid "Cutting filament"
 msgstr "Schneide filament"
 
 # MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4458
+#: ultralcd.cpp:4359
 msgid "ERROR: Filament sensor is not responding, please check connection."
 msgstr "FEHLER: Filament- sensor reagiert nicht, bitte Verbindung pruefen."
 
 # MSG_DIM c=6
-#: messages.c:139
+#: messages.c:159
 msgid "Dim"
 msgstr "Dimm"
 
 # MSG_ERROR
-#: messages.c:25
+#: messages.c:29
 msgid "ERROR:"
 msgstr "FEHLER:"
 
 # MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:8686
+#: ultralcd.cpp:8398
 msgid "Extruder fan:"
 msgstr "Extruder Luefter:"
 
 # MSG_INFO_EXTRUDER c=18
-#: ultralcd.cpp:2211
+#: ultralcd.cpp:2153
 msgid "Extruder info"
 msgstr "Extruder Info"
 
-# MSG_MOVE_E
-#: messages.c:26
+# MSG_EXTRUDER c=17
+#: messages.c:30
 msgid "Extruder"
 msgstr ""
 
 # 
-#: ultralcd.cpp:6985
+#: ultralcd.cpp:6740
 msgid "Fail stats MMU"
 msgstr "MMU-Fehler"
 
 # MSG_FSENSOR_AUTOLOAD c=13
-#: messages.c:40
+#: messages.c:47
 msgid "F. autoload"
 msgstr "F. autoladen"
 
 # 
-#: ultralcd.cpp:6982
+#: ultralcd.cpp:6737
 msgid "Fail stats"
 msgstr "Fehlerstatistik"
 
 # MSG_FAN_SPEED c=14
-#: messages.c:28
+#: messages.c:34
 msgid "Fan speed"
 msgstr "Luefter-Tempo"
 
 # MSG_SELFTEST_FAN c=20
-#: messages.c:74
+#: messages.c:89
 msgid "Fan test"
 msgstr "Lueftertest"
 
-# MSG_FANS_CHECK
-#: ultralcd.cpp:5751
+# MSG_FANS_CHECK c=13
+#: messages.c:31
 msgid "Fans check"
 msgstr "Luefter Chk."
 
 # MSG_FSENSOR
-#: messages.c:41
+#: messages.c:48
 msgid "Fil. sensor"
 msgstr "Fil. Sensor"
 
-#  c=14
-#: ultralcd.cpp:1784
-msgid "Filam. runouts"
-msgstr "Filam. Maengel"
+# MSG_FIL_RUNOUTS c=14
+#: 
+msgid "Fil. runouts  "
+msgstr "Fil. Maengel  "
 
 # MSG_FILAMENT_CLEAN c=20 r=2
-#: messages.c:29
+#: messages.c:35
 msgid "Filament extruding & with correct color?"
 msgstr "Filament extrudiert mit richtiger Farbe?"
 
 # MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2705
+#: ultralcd.cpp:2646
 msgid "Filament not loaded"
 msgstr "Fil. nicht geladen"
 
 # MSG_FILAMENT_SENSOR c=20
-#: messages.c:80
+#: messages.c:95
 msgid "Filament sensor"
 msgstr "Filamentsensor"
 
 # MSG_FILAMENT_USED c=19
-#: ultralcd.cpp:2869
+#: ultralcd.cpp:2795
 msgid "Filament used"
 msgstr "Filament benutzt"
 
 # MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2870
+#: ultralcd.cpp:2796
 msgid "Print time"
 msgstr "Druckzeit"
 
 # MSG_FS_ACTION c=10
-#: messages.c:131
+#: messages.c:151
 msgid "FS Action"
 msgstr "FS Aktion"
 
-#  c=18
-#: Marlin_main.cpp:9512
-msgid "FS v0.4 or newer"
-msgstr "FS v0.4 oder neuer"
-
 # MSG_FILE_INCOMPLETE c=20 r=3
-#: ultralcd.cpp:8814
+#: ultralcd.cpp:8540
 msgid "File incomplete. Continue anyway?"
 msgstr "Datei unvollstaendig Trotzdem fortfahren?"
 
 # MSG_FINISHING_MOVEMENTS c=20
-#: messages.c:37
+#: messages.c:44
 msgid "Finishing movements"
 msgstr "Bewegung beenden"
 
 # MSG_V2_CALIBRATION c=18
-#: messages.c:103
+#: messages.c:120
 msgid "First layer cal."
 msgstr "Erste-Schicht Kal."
 
 # MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:5046
+#: ultralcd.cpp:4947
 msgid "First, I will run the selftest to check most common assembly problems."
 msgstr "Zunaechst fuehre ich den Selbsttest durch, um die haeufigsten Probleme beim Zusammenbau zu ueberpruefen."
 
 # 
-#: mmu.cpp:727
+#: mmu.cpp:726
 msgid "Fix the issue and then press button on MMU unit."
 msgstr "Beseitigen Sie das Problem und druecken Sie dann den Knopf am MMU."
 
 # MSG_FLOW
-#: ultralcd.cpp:7125
+#: ultralcd.cpp:6880
 msgid "Flow"
 msgstr "Durchfluss"
 
 # MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2156
+#: ultralcd.cpp:2105
 msgid "forum.prusa3d.com"
 msgstr ""
 
 # MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:71
+#: messages.c:86
 msgid "Front print fan?"
 msgstr "Vorderer Luefter?"
 
 # MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3266
+#: ultralcd.cpp:3190
 msgid "Front side[um]"
 msgstr "Vorne [um]"
 
 # MSG_SELFTEST_FANS
-#: ultralcd.cpp:8333
+#: ultralcd.cpp:8079
 msgid "Front/left fans"
 msgstr "Vorderer/linke Luefter"
 
 # MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:8263
+#: ultralcd.cpp:8027
 msgid "Heater/Thermistor"
 msgstr "Heizung/Thermistor"
 
 # MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:9440
+#: Marlin_main.cpp:9616
 msgid "Heating disabled by safety timer."
 msgstr "Heizung durch Sicherheitstimer deaktiviert."
 
 # MSG_HEATING_COMPLETE c=20
-#: messages.c:43
+#: messages.c:50
 msgid "Heating done."
 msgstr "Aufwaermen OK."
 
 # MSG_HEATING
-#: messages.c:42
+#: messages.c:49
 msgid "Heating"
 msgstr "Aufwaermen"
 
 # MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:5025
+#: ultralcd.cpp:4926
 msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
 msgstr "Hallo, ich bin Ihr Original Prusa i3 Drucker. Moechten Sie, dass ich Sie durch den Einrich- tungsablauf fuehre?"
 
 # MSG_PRUSA3D_HOWTO
-#: ultralcd.cpp:2157
+#: ultralcd.cpp:2106
 msgid "howto.prusa3d.com"
 msgstr ""
 
 # MSG_FILAMENTCHANGE
-#: messages.c:34
+#: messages.c:41
 msgid "Change filament"
 msgstr "Filament-Wechsel"
 
 # MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2620
+#: ultralcd.cpp:2576
 msgid "Change success!"
 msgstr "Wechsel erfolgr.!"
 
 # MSG_CORRECTLY c=20
-#: ultralcd.cpp:2697
+#: ultralcd.cpp:2644
 msgid "Changed correctly?"
 msgstr "Wechsel ok?"
 
 # MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:77
+#: messages.c:92
 msgid "Checking bed     "
 msgstr "Pruefe Bett "
 
 # MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:8668
+#: ultralcd.cpp:8381
 msgid "Checking endstops"
 msgstr "Pruefe Endschalter"
 
 # MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:8674
+#: ultralcd.cpp:8387
 msgid "Checking hotend  "
 msgstr "Pruefe Duese  "
 
 # MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:78
+#: messages.c:93
 msgid "Checking sensors "
 msgstr "Pruefe Sensoren "
 
-# MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:7482
-msgid "Checking X axis  "
-msgstr "Pruefe X Achse "
+# MSG_CHECKING_X c=20
+#: messages.c:22
+msgid "Checking X axis"
+msgstr "Pruefe X Achse"
 
-# MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:7491
-msgid "Checking Y axis  "
-msgstr "Pruefe Y Achse "
+# MSG_CHECKING_Y c=20
+#: messages.c:23
+msgid "Checking Y axis"
+msgstr "Pruefe Y Achse"
 
 # MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:8671
-msgid "Checking Z axis  "
-msgstr "Pruefe Z Achse "
+#: 
+msgid "Checking Z axis"
+msgstr "Pruefe Z Achse"
 
 # MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:45
+#: messages.c:52
 msgid "Choose extruder:"
 msgstr "Extruder waehlen:"
 
 # MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:46
+#: messages.c:53
 msgid "Choose filament:"
 msgstr "Waehle Filament:"
 
 # MSG_FILAMENT c=17 r=1
-#: messages.c:27
+#: messages.c:33
 msgid "Filament"
 msgstr ""
 
 # MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:5055
+#: ultralcd.cpp:4956
 msgid "I will run xyz calibration now. It will take approx. 12 mins."
 msgstr "Ich werde jetzt die XYZ-Kalibrierung durchfuehren. Es wird ca. 12 Minuten dauern."
 
 # MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:5063
+#: ultralcd.cpp:4964
 msgid "I will run z calibration now."
 msgstr "Ich werde jetzt die Z Kalibrierung durchfuehren."
 
 # MSG_WATCH
-#: messages.c:97
+#: messages.c:114
 msgid "Info screen"
 msgstr "Infoanzeige"
 
 # MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2605
+#: ultralcd.cpp:2564
 msgid "Insert filament"
 msgstr "Filament einlegen"
 
-# MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4835
+# MSG_FILAMENT_LOADED c=20 r=2
+#: messages.c:36
 msgid "Is filament loaded?"
 msgstr "Ist das Filament geladen?"
 
 # MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:90
+#: messages.c:107
 msgid "Is steel sheet on heatbed?"
 msgstr "Liegt das Stahlblech auf dem Heizbett?"
 
-# 
-#: ultralcd.cpp:1727
+# MSG_LAST_PRINT_FAILURES c=20
+#: messages.c:55
 msgid "Last print failures"
 msgstr "Letzte Druckfehler"
 
 # 
-#: ultralcd.cpp:5133
+#: ultralcd.cpp:5034
 msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
 msgstr "Wenn Sie zusaetzliche Stahlbleche haben, kalibrieren Sie deren Voreinstellungen unter Einstellungen - HW Setup - Stahlbleche."
 
-# 
-#: ultralcd.cpp:1704
+# MSG_LAST_PRINT c=18
+#: messages.c:54
 msgid "Last print"
 msgstr "Letzter Druck"
 
 # MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:72
+#: messages.c:87
 msgid "Left hotend fan?"
 msgstr "Linker Luefter?"
 
 # 
-#: ultralcd.cpp:2993
+#: ultralcd.cpp:2919
 msgid "Left"
 msgstr "Links"
 
 # MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3264
+#: ultralcd.cpp:3188
 msgid "Left side [um]"
 msgstr "Links [um]"
 
 # 
-#: ultralcd.cpp:5766
+#: ultralcd.cpp:5706
 msgid "Lin. correction"
 msgstr "Lineare Korrektur"
 
@@ -681,197 +691,197 @@ msgid "Live adjust Z"
 msgstr "Z einstellen"
 
 #  c=20 r=6
-#: ultralcd.cpp:7527
+#: ultralcd.cpp:7280
 msgid "Insert the filament (do not load it) into the extruder and then press the knob."
 msgstr "Stecken Sie das Filament (nicht laden) in den Extruder und druecken Sie dann den Knopf."
 
 # MSG_LOAD_FILAMENT c=17
-#: messages.c:47
+#: messages.c:56
 msgid "Load filament"
 msgstr "Filament laden"
 
 # MSG_LOADING_COLOR
-#: ultralcd.cpp:2645
+#: ultralcd.cpp:2598
 msgid "Loading color"
 msgstr "Lade Farbe"
 
 # MSG_LOADING_FILAMENT c=20
-#: messages.c:48
+#: messages.c:57
 msgid "Loading filament"
 msgstr "Filament laedt"
 
 # MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:8317
+#: ultralcd.cpp:8067
 msgid "Loose pulley"
 msgstr "Lose Riemenscheibe"
 
 # 
-#: ultralcd.cpp:6944
+#: ultralcd.cpp:6699
 msgid "Load to nozzle"
 msgstr "In Druckduese laden"
 
 # MSG_M117_V2_CALIBRATION c=25
-#: messages.c:51
+#: messages.c:60
 msgid "M117 First layer cal."
 msgstr "M117 Erste-Schicht Kal."
 
 # MSG_MAIN
-#: messages.c:52
+#: messages.c:61
 msgid "Main"
 msgstr "Hauptmenue"
 
 # MSG_BL_HIGH c=12
-#: messages.c:135
+#: messages.c:155
 msgid "Level Bright"
 msgstr "Hell.wert"
 
 # MSG_BL_LOW c=12
-#: messages.c:136
+#: messages.c:156
 msgid "Level Dimmed"
 msgstr "Dimmwert"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:55
+#: messages.c:65
 msgid "Measuring reference height of calibration point"
 msgstr "Messen der Referenzhoehe des Kalibrierpunktes"
 
-# MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5856
+# MSG_MESH_BED_LEVELING c=18
+#: messages.c:148
 msgid "Mesh Bed Leveling"
 msgstr "MeshBett Ausgleich"
 
 # MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:765
+#: mmu.cpp:764
 msgid "MMU OK. Resuming position..."
 msgstr "MMU OK. Position wiederherstellen..."
 
 # MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:758
+#: mmu.cpp:757
 msgid "MMU OK. Resuming temperature..."
 msgstr "MMU OK. Temperatur wiederherstellen..."
 
 # 
-#: ultralcd.cpp:3034
+#: ultralcd.cpp:2960
 msgid "Measured skew"
 msgstr "Schraeglauf"
 
-# 
-#: ultralcd.cpp:1728
+# MSG_MMU_FAILS c=14
+#: messages.c:68
 msgid "MMU fails"
 msgstr "MMU Fehler"
 
 # 
-#: mmu.cpp:1588
+#: mmu.cpp:1586
 msgid "MMU load failed     "
 msgstr "MMU Ladefehler"
 
-# 
-#: ultralcd.cpp:1729
+# MSG_MMU_LOAD_FAILS c=14
+#: messages.c:69
 msgid "MMU load fails"
 msgstr "MMU Ladefehler"
 
 # MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:776
+#: mmu.cpp:775
 msgid "MMU OK. Resuming..."
 msgstr "MMU OK.  Weiterdrucken..."
 
 # MSG_MODE
-#: messages.c:84
+#: messages.c:101
 msgid "Mode"
 msgstr "Modus"
 
 #  c=20 r=3
-#: Marlin_main.cpp:879
+#: Marlin_main.cpp:934
 msgid "MK3 firmware detected on MK3S printer"
 msgstr "MK3-Firmware am MK3S-Drucker erkannt"
 
 # MSG_NORMAL
-#: messages.c:88
+#: messages.c:105
 msgid "Normal"
 msgstr ""
 
 # MSG_SILENT
-#: messages.c:87
+#: messages.c:104
 msgid "Silent"
 msgstr "Leise"
 
 # 
-#: mmu.cpp:722
+#: mmu.cpp:721
 msgid "MMU needs user attention."
 msgstr "MMU erfordert Benutzereingriff."
 
 # 
-#: ultralcd.cpp:1755
+#: ultralcd.cpp:1701
 msgid "MMU power fails"
 msgstr "MMU Netzfehler"
 
 # MSG_STEALTH
-#: messages.c:89
+#: messages.c:106
 msgid "Stealth"
 msgstr ""
 
 # MSG_AUTO_POWER
-#: messages.c:86
+#: messages.c:103
 msgid "Auto power"
 msgstr "Auto Leist"
 
 # MSG_HIGH_POWER
-#: messages.c:85
+#: messages.c:102
 msgid "High power"
 msgstr "Hohe leist"
 
 # 
-#: ultralcd.cpp:2186
+#: ultralcd.cpp:2124
 msgid "MMU2 connected"
 msgstr "MMU2 verbunden"
 
 # MSG_SELFTEST_MOTOR
-#: messages.c:79
+#: messages.c:94
 msgid "Motor"
 msgstr ""
 
 # MSG_MOVE_AXIS
-#: ultralcd.cpp:5741
+#: ultralcd.cpp:5681
 msgid "Move axis"
 msgstr "Achse bewegen"
 
 # MSG_MOVE_X
-#: ultralcd.cpp:4361
+#: ultralcd.cpp:4262
 msgid "Move X"
 msgstr "Bewege X"
 
 # MSG_MOVE_Y
-#: ultralcd.cpp:4362
+#: ultralcd.cpp:4263
 msgid "Move Y"
 msgstr "Bewege Y"
 
 # MSG_MOVE_Z
-#: ultralcd.cpp:4363
+#: ultralcd.cpp:4264
 msgid "Move Z"
 msgstr "Bewege Z"
 
 # MSG_NO_MOVE
-#: Marlin_main.cpp:5541
+#: Marlin_main.cpp:5719
 msgid "No move."
 msgstr "Keine Bewegung."
 
 # MSG_NO_CARD
-#: ultralcd.cpp:6911
+#: ultralcd.cpp:6673
 msgid "No SD card"
 msgstr "Keine SD Karte"
 
 # MSG_NA
-#: messages.c:107
+#: messages.c:124
 msgid "N/A"
 msgstr "N/V"
 
 # MSG_NO
-#: messages.c:58
+#: messages.c:70
 msgid "No"
 msgstr "Nein"
 
 # MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:8265
+#: ultralcd.cpp:8028
 msgid "Not connected"
 msgstr "Nicht angeschlossen"
 
@@ -881,157 +891,157 @@ msgid "New firmware version available:"
 msgstr "Neue Firmware- Version verfuegbar:"
 
 # MSG_SELFTEST_FAN_NO c=19
-#: messages.c:75
+#: messages.c:90
 msgid "Not spinning"
 msgstr "Dreht sich nicht"
 
 # MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4946
+#: ultralcd.cpp:4847
 msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
 msgstr "Jetzt werde ich den Abstand zwischen Duesenspitze und Druckbett kalibrieren."
 
 # MSG_WIZARD_WILL_PREHEAT c=20 r=4
-#: ultralcd.cpp:5071
+#: ultralcd.cpp:4972
 msgid "Now I will preheat nozzle for PLA."
 msgstr "Jetzt werde ich die Duese fuer PLA vorheizen."
 
 # MSG_NOZZLE
-#: messages.c:59
+#: messages.c:71
 msgid "Nozzle"
 msgstr "Duese"
 
 # MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
-#: Marlin_main.cpp:1518
+#: Marlin_main.cpp:1581
 msgid "Old settings found. Default PID, Esteps etc. will be set."
 msgstr "Alte Einstellungen gefunden. Standard PID, E-Steps u.s.w. werden gesetzt."
 
 # 
-#: ultralcd.cpp:5062
+#: ultralcd.cpp:4963
 msgid "Now remove the test print from steel sheet."
 msgstr "Testdruck jetzt von Stahlblech entfernen."
 
 # 
-#: ultralcd.cpp:1654
+#: ultralcd.cpp:1600
 msgid "Nozzle FAN"
 msgstr "Duesevent."
 
 # MSG_PAUSE_PRINT
-#: ultralcd.cpp:6875
+#: ultralcd.cpp:6637
 msgid "Pause print"
 msgstr "Druck pausieren"
 
 # MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1539
+#: ultralcd.cpp:1485
 msgid "PID cal.           "
 msgstr "PID Kal.           "
 
 # MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1545
+#: ultralcd.cpp:1491
 msgid "PID cal. finished"
 msgstr "PID Kalib. fertig"
 
 # MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5862
+#: ultralcd.cpp:5803
 msgid "PID calibration"
 msgstr "PID Kalibrierung"
 
 # MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:896
+#: ultralcd.cpp:843
 msgid "PINDA Heating"
 msgstr "PINDA erwaermen"
 
 # MSG_PAPER c=20 r=10
-#: messages.c:60
+#: messages.c:72
 msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
 msgstr "Legen Sie ein Blatt Papier unter die Duese waehrend der Kalibrierung der ersten 4 Punkte. Wenn die Duese das Papier erfasst, den Drucker sofort ausschalten."
 
 # MSG_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:5128
+#: ultralcd.cpp:5029
 msgid "Please clean heatbed and then press the knob."
 msgstr "Bitte reinigen Sie das Heizbett und druecken Sie dann den Knopf."
 
 # MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
-#: messages.c:21
+#: messages.c:24
 msgid "Please clean the nozzle for calibration. Click when done."
 msgstr "Bitte entfernen Sie ueberstehendes Filament von der Duese. Klicken wenn sauber."
 
 # MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:8257
+#: ultralcd.cpp:8022
 msgid "Please check :"
 msgstr "Bitte pruefe:"
 
 # MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:98
+#: messages.c:115
 msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
 msgstr "Bitte lesen Sie unser Handbuch und beheben Sie das Problem. Fahren Sie dann mit dem Assistenten fort, indem Sie den Drucker neu starten."
 
 # MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3138
+#: Marlin_main.cpp:3317
 msgid "Please open idler and remove filament manually."
 msgstr "Bitte Spannrolle oeffnen und Fila- ment von Hand entfernen"
 
 # MSG_PLACE_STEEL_SHEET c=20 r=4
-#: messages.c:61
+#: messages.c:73
 msgid "Please place steel sheet on heatbed."
 msgstr "Bitte legen Sie das Stahlblech auf das Heizbett."
 
 # MSG_PRESS_TO_UNLOAD c=20 r=4
-#: messages.c:64
+#: messages.c:77
 msgid "Please press the knob to unload filament"
 msgstr "Bitte druecken Sie den Knopf um das Filament zu entladen."
 
 # MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:66
+#: messages.c:79
 msgid "Please pull out filament immediately"
 msgstr "Bitte ziehen Sie das Filament sofort heraus"
 
 # MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1422
+#: mmu.cpp:1420
 msgid "Please remove filament and then press the knob."
 msgstr "Bitte Filament entfernen und dann den Knopf druecken"
 
 # MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:70
+#: messages.c:82
 msgid "Please remove steel sheet from heatbed."
 msgstr "Bitte entfernen Sie das Stahlblech vom Heizbett."
 
 # MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4583
+#: Marlin_main.cpp:4766
 msgid "Please run XYZ calibration first."
 msgstr "Bitte zuerst XYZ Kalibrierung ausfuehren."
 
 # MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1341
+#: mmu.cpp:1340
 msgid "Please update firmware in your MMU2. Waiting for reset."
 msgstr "Bitte aktualisieren Sie die Firmware in der MMU2. Warte auf Reset."
 
 # MSG_PLEASE_WAIT c=20
-#: messages.c:62
+#: messages.c:74
 msgid "Please wait"
 msgstr "Bitte warten"
 
 # 
-#: ultralcd.cpp:5061
+#: ultralcd.cpp:4962
 msgid "Please remove shipping helpers first."
 msgstr "Bitte zuerst Transportsicherungen entfernen."
 
 # MSG_PREHEAT_NOZZLE c=20
-#: messages.c:63
+#: messages.c:76
 msgid "Preheat the nozzle!"
 msgstr "Duese vorheizen!"
 
 # MSG_PREHEAT
-#: ultralcd.cpp:6853
+#: ultralcd.cpp:6615
 msgid "Preheat"
 msgstr "Vorheizen"
 
 # MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:100
+#: messages.c:117
 msgid "Preheating nozzle. Please wait."
 msgstr "Vorheizen der Duese. Bitte warten."
 
 #  c=14
-#: ultralcd.cpp:1959
+#: ultralcd.cpp:1905
 msgid "PINDA"
 msgstr ""
 
@@ -1041,107 +1051,112 @@ msgid "Please upgrade."
 msgstr "Bitte aktualisieren."
 
 # MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:11526
+#: Marlin_main.cpp:11718
 msgid "Press knob to preheat nozzle and continue."
 msgstr "Bitte druecken Sie den Knopf um die Duese vorzuheizen und fortzufahren."
 
 # MSG_FS_PAUSE c=5
-#: fsensor.cpp:710
+#: fsensor.cpp:728
 msgid "Pause"
 msgstr ""
 
-# 
-#: ultralcd.cpp:1783
+# MSG_POWER_FAILURES c=14
+#: messages.c:75
 msgid "Power failures"
 msgstr "Netzfehler"
 
 # MSG_PRINT_ABORTED c=20
-#: messages.c:65
+#: messages.c:78
 msgid "Print aborted"
 msgstr "Druck abgebrochen"
 
 #  c=20
-#: ultralcd.cpp:2442
+#: ultralcd.cpp:2390
 msgid "Preheating to load"
 msgstr "Heizen zum Laden"
 
 #  c=20
-#: ultralcd.cpp:2446
+#: ultralcd.cpp:2395
 msgid "Preheating to unload"
 msgstr "Heizen zum Entladen"
 
 # MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:8689
+#: ultralcd.cpp:8401
 msgid "Print fan:"
 msgstr "Druckvent.:"
 
 # MSG_CARD_MENU
-#: messages.c:20
+#: messages.c:21
 msgid "Print from SD"
 msgstr "Drucken von SD"
 
 # 
-#: ultralcd.cpp:2289
+#: ultralcd.cpp:2231
 msgid "Press the knob"
 msgstr "Knopf druecken zum"
 
 # MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1118
+#: ultralcd.cpp:1065
 msgid "Print paused"
 msgstr "Druck pausiert"
 
 # 
-#: mmu.cpp:726
+#: mmu.cpp:725
 msgid "Press the knob to resume nozzle temperature."
 msgstr "Druecken Sie den Knopf um die Duesentemperatur wiederherzustellen"
 
 # MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
-#: messages.c:38
+#: messages.c:45
 msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
 msgstr "Drucker wurde noch nicht kalibriert. Bitte folgen Sie dem Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrie- rungsablauf."
 
 # 
-#: ultralcd.cpp:1655
+#: ultralcd.cpp:1601
 msgid "Print FAN"
 msgstr "Druckvent."
 
 # 
-#: ultralcd.cpp:4926
+#: ultralcd.cpp:4827
 msgid "Please insert filament into the extruder, then press the knob to load it."
 msgstr "Bitte legen Sie das Filament in den Extruder ein und druecken Sie dann den Knopf, um es zu laden."
 
 # 
-#: ultralcd.cpp:4921
+#: ultralcd.cpp:4822
 msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
 msgstr "Bitte stecken Sie das Filament in den ersten Schlauch der MMU und druecken Sie dann den Knopf, um es zu laden."
 
 # 
-#: ultralcd.cpp:4843
+#: ultralcd.cpp:4744
 msgid "Please load filament first."
 msgstr "Bitte laden Sie zuerst das Filament."
 
 # MSG_PRUSA3D
-#: ultralcd.cpp:2155
+#: ultralcd.cpp:2104
 msgid "prusa3d.com"
 msgstr ""
 
 # MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3267
+#: ultralcd.cpp:3191
 msgid "Rear side [um]"
 msgstr "Hinten [um]"
 
 #  c=20 r=4
-#: ultralcd.cpp:7549
+#: ultralcd.cpp:7304
 msgid "Please unload the filament first, then repeat this action."
 msgstr "Bitte entladen Sie erst das Filament und versuchen Sie es nochmal."
 
+#  c=20 r=4
+#: ultralcd.cpp:7307
+msgid "Please check the IR sensor connection, unload filament if present."
+msgstr "Bitte IR Sensor Verbindungen ueber- pruefen und Filament entladen ist."
+
 # MSG_RECOVERING_PRINT c=20
-#: Marlin_main.cpp:10883
+#: Marlin_main.cpp:11076
 msgid "Recovering print    "
 msgstr "Druck wiederherst   "
 
 # MSG_REMOVE_OLD_FILAMENT c=20 r=5
-#: mmu.cpp:833
+#: mmu.cpp:832
 msgid "Remove old filament and press the knob to start loading new filament."
 msgstr "Entfernen Sie das alte Filament und druecken Sie den Knopf, um das neue zu laden."
 
@@ -1151,102 +1166,102 @@ msgid "Prusa i3 MK3S OK."
 msgstr ""
 
 # MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5867
+#: ultralcd.cpp:5808
 msgid "Reset XYZ calibr."
 msgstr "Reset XYZ Kalibr."
 
-# MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3268
+# MSG_RESET c=14
+#: messages.c:83
 msgid "Reset"
 msgstr "Ruecksetzen"
 
-# MSG_RESUME_PRINT
-#: ultralcd.cpp:6861
+# MSG_RESUME_PRINT c=18
+#: messages.c:84
 msgid "Resume print"
 msgstr "Druck fortsetzen"
 
 # MSG_RESUMING_PRINT c=20
-#: messages.c:69
+#: messages.c:85
 msgid "Resuming print"
 msgstr "Druck fortgesetzt"
 
 # MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3265
+#: ultralcd.cpp:3189
 msgid "Right side[um]"
 msgstr "Rechts [um]"
 
 # MSG_RPI_PORT
-#: messages.c:123
+#: messages.c:142
 msgid "RPi port"
 msgstr ""
 
 # MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4864
+#: ultralcd.cpp:4765
 msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
 msgstr "Der Assistent wird die aktuellen Kalibrierungsdaten loeschen und von vorne beginnen. Weiterfahren?"
 
 # MSG_SD_CARD
-#: messages.c:118
+#: messages.c:137
 msgid "SD card"
 msgstr "SD Karte"
 
 # MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
-#: messages.c:119
+#: messages.c:138
 msgid "FlashAir"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2994
+#: ultralcd.cpp:2920
 msgid "Right"
 msgstr "Rechts"
 
 # MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: messages.c:35
+#: messages.c:42
 msgid "Searching bed calibration point"
 msgstr "Suche Bett Kalibrierpunkt"
 
 # MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5779
+#: ultralcd.cpp:5721
 msgid "Select language"
 msgstr "Waehle Sprache"
 
 # MSG_SELFTEST_OK
-#: ultralcd.cpp:7812
+#: ultralcd.cpp:7579
 msgid "Self test OK"
 msgstr "Selbsttest OK"
 
 # MSG_SELFTEST_START c=20
-#: ultralcd.cpp:7582
+#: ultralcd.cpp:7347
 msgid "Self test start  "
 msgstr "Selbsttest start "
 
 # MSG_SELFTEST
-#: ultralcd.cpp:5843
+#: ultralcd.cpp:5784
 msgid "Selftest         "
 msgstr "Selbsttest       "
 
 # MSG_SELFTEST_ERROR
-#: ultralcd.cpp:8255
+#: ultralcd.cpp:8021
 msgid "Selftest error !"
 msgstr "Selbsttest Fehler!"
 
 # MSG_SELFTEST_FAILED c=20
-#: messages.c:73
+#: messages.c:88
 msgid "Selftest failed  "
 msgstr "Selbsttest Error "
 
 # MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1550
+#: Marlin_main.cpp:1613
 msgid "Selftest will be run to calibrate accurate sensorless rehoming."
 msgstr "Selbsttest im Gang, um die genaue Rueck- kehr zum Nullpunkt ohne Sensor zu kalibrieren"
 
 # 
-#: ultralcd.cpp:5102
+#: ultralcd.cpp:5003
 msgid "Select nozzle preheat temperature which matches your material."
 msgstr "Bitte Vorheiztemperatur auswaehlen, die Ihrem Material entspricht."
 
 # MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3286
+#: ultralcd.cpp:3209
 msgid "Set temperature:"
 msgstr "Temp. einstellen:"
 
@@ -1266,187 +1281,187 @@ msgid "Prusa i3 MK3 OK."
 msgstr ""
 
 # MSG_SETTINGS
-#: messages.c:82
+#: messages.c:97
 msgid "Settings"
 msgstr "Einstellungen"
 
 # MSG_SHOW_END_STOPS c=18
-#: ultralcd.cpp:5864
+#: ultralcd.cpp:5805
 msgid "Show end stops"
 msgstr "Endschalter Status"
 
 # 
-#: ultralcd.cpp:4008
+#: ultralcd.cpp:3915
 msgid "Sensor state"
 msgstr "Sensorstatus"
 
 # MSG_FILE_CNT c=20 r=6
-#: cardreader.cpp:738
+#: cardreader.cpp:739
 msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
 msgstr "Einige Dateien wur- den nicht sortiert. Max. Dateien pro Verzeichnis = 100."
 
 # MSG_SORT
-#: messages.c:120
+#: messages.c:139
 msgid "Sort"
 msgstr "Sort."
 
 # MSG_NONE
-#: messages.c:110
+#: messages.c:127
 msgid "None"
 msgstr "Ohne"
 
 # MSG_SORT_TIME
-#: messages.c:121
+#: messages.c:140
 msgid "Time"
 msgstr "Zeit"
 
 # 
-#: ultralcd.cpp:3037
+#: ultralcd.cpp:2963
 msgid "Severe skew:"
 msgstr "Schwer.Schr:"
 
 # MSG_SORT_ALPHA
-#: messages.c:122
+#: messages.c:141
 msgid "Alphabet"
 msgstr ""
 
 # MSG_SORTING c=20 r=1
-#: cardreader.cpp:745
+#: cardreader.cpp:746
 msgid "Sorting files"
 msgstr "Sortiere Dateien"
 
 # MSG_SOUND_LOUD
-#: messages.c:125
+#: messages.c:144
 msgid "Loud"
 msgstr "Laut"
 
 # 
-#: ultralcd.cpp:3036
+#: ultralcd.cpp:2962
 msgid "Slight skew:"
 msgstr "Leicht.Schr:"
 
 # MSG_SOUND
-#: messages.c:124
+#: messages.c:143
 msgid "Sound"
 msgstr "Ton"
 
 #  c=7
-#: ultralcd.cpp:1822
+#: ultralcd.cpp:1768
 msgid "Runouts"
 msgstr ""
 
 # 
-#: Marlin_main.cpp:5101
+#: Marlin_main.cpp:5280
 msgid "Some problem encountered, Z-leveling enforced ..."
 msgstr "Fehler aufgetreten, Z-Kalibrierung erforderlich..."
 
 # MSG_SOUND_ONCE
-#: messages.c:126
+#: messages.c:145
 msgid "Once"
 msgstr "Einmal"
 
 # MSG_SPEED
-#: ultralcd.cpp:7119
+#: ultralcd.cpp:6874
 msgid "Speed"
 msgstr "Geschwindigkeit"
 
 # MSG_SELFTEST_FAN_YES c=19
-#: messages.c:76
+#: messages.c:91
 msgid "Spinning"
 msgstr "Dreht sich"
 
 # MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4596
+#: Marlin_main.cpp:4779
 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
 msgstr "Stabile Umgebungs- temperatur 21-26C und feste Stand- flaeche erforderlich"
 
 # MSG_STATISTICS
-#: ultralcd.cpp:6978
+#: ultralcd.cpp:6733
 msgid "Statistics  "
 msgstr "Statistiken "
 
 # MSG_STOP_PRINT
-#: messages.c:91
+#: messages.c:108
 msgid "Stop print"
 msgstr "Druck abbrechen"
 
 # MSG_STOPPED
-#: messages.c:92
+#: messages.c:109
 msgid "STOPPED. "
 msgstr "GESTOPPT."
 
 # MSG_SUPPORT
-#: ultralcd.cpp:6987
+#: ultralcd.cpp:6742
 msgid "Support"
 msgstr ""
 
 # MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:8335
+#: ultralcd.cpp:8080
 msgid "Swapped"
 msgstr "Ausgetauscht"
 
 # 
-#: ultralcd.cpp:4814
+#: ultralcd.cpp:4715
 msgid "Select filament:"
 msgstr "Filament auswaehlen:"
 
 # MSG_TEMP_CALIBRATION c=14
-#: messages.c:93
+#: messages.c:110
 msgid "Temp. cal."
 msgstr "Temp Kalib."
 
 # 
-#: ultralcd.cpp:4955
+#: ultralcd.cpp:4856
 msgid "Select temperature which matches your material."
 msgstr "Waehlen Sie die Temperatur, die zu Ihrem Material passt."
 
 # MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5873
+#: ultralcd.cpp:5816
 msgid "Temp. calibration"
 msgstr "Temp. kalibrieren"
 
 # MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3933
+#: ultralcd.cpp:3845
 msgid "Temperature calibration failed"
 msgstr "Temperaturkalibrierung fehlgeschlagen"
 
 # MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:94
+#: messages.c:111
 msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
 msgstr "Temp.kalibrierung ist fertig + aktiv. Temp.kalibrierung kann ausgeschaltet werden im Menu Einstellungen -> Temp.kal."
 
 #  c=20 r=3
-#: ultralcd.cpp:7554
+#: ultralcd.cpp:7311
 msgid "Sensor verified, remove the filament now."
 msgstr "Sensor ueberprueft, entladen Sie jetzt das Filament."
 
 # MSG_TEMPERATURE
-#: ultralcd.cpp:5739
+#: ultralcd.cpp:5679
 msgid "Temperature"
 msgstr "Temperatur"
 
 # MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2218
+#: ultralcd.cpp:2160
 msgid "Temperatures"
 msgstr "Temperaturen"
 
 # MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
-#: messages.c:39
+#: messages.c:46
 msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
 msgstr "Es ist noch not- wendig die Z- Kalibrierung aus- zufuehren. Bitte befolgen Sie das Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrierablauf."
 
 # 
-#: ultralcd.cpp:2891
+#: ultralcd.cpp:2817
 msgid "Total filament"
 msgstr "Gesamtes Filament"
 
 # 
-#: ultralcd.cpp:2892
+#: ultralcd.cpp:2818
 msgid "Total print time"
 msgstr "Gesamte Druckzeit"
 
 # MSG_TUNE
-#: ultralcd.cpp:6850
+#: ultralcd.cpp:6612
 msgid "Tune"
 msgstr "Feineinstellung"
 
@@ -1455,63 +1470,63 @@ msgstr "Feineinstellung"
 msgid "Unload"
 msgstr "Entladen"
 
-# 
-#: ultralcd.cpp:1752
+# MSG_TOTAL_FAILURES c=20
+#: messages.c:99
 msgid "Total failures"
 msgstr "Gesamte Fehler"
 
 # 
-#: ultralcd.cpp:2296
+#: ultralcd.cpp:2238
 msgid "to load filament"
 msgstr "Filament laden"
 
 # 
-#: ultralcd.cpp:2300
+#: ultralcd.cpp:2242
 msgid "to unload filament"
 msgstr "Filament entladen"
 
 # MSG_UNLOAD_FILAMENT c=17
-#: messages.c:95
+#: messages.c:112
 msgid "Unload filament"
 msgstr "Filament entladen"
 
 # MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:96
+#: messages.c:113
 msgid "Unloading filament"
 msgstr "Filament auswerfen"
 
-# 
-#: ultralcd.cpp:1705
+# MSG_TOTAL c=6
+#: messages.c:98
 msgid "Total"
 msgstr "Gesamt"
 
 # MSG_USED c=19 r=1
-#: ultralcd.cpp:6001
+#: ultralcd.cpp:5932
 msgid "Used during print"
 msgstr "Beim Druck benutzt"
 
 # MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2221
+#: ultralcd.cpp:2163
 msgid "Voltages"
 msgstr "Spannungen"
 
 # 
-#: ultralcd.cpp:2194
+#: ultralcd.cpp:2132
 msgid "unknown"
 msgstr "unbekannt"
 
 # MSG_USERWAIT
-#: Marlin_main.cpp:5511
+#: Marlin_main.cpp:5689
 msgid "Wait for user..."
 msgstr "Warte auf Benutzer.."
 
 # MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3434
+#: ultralcd.cpp:3357
 msgid "Waiting for nozzle and bed cooling"
 msgstr "Warten bis Heizung und Bett abgekuehlt sind"
 
 # MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3395
+#: ultralcd.cpp:3318
 msgid "Waiting for PINDA probe cooling"
 msgstr "Warten, bis PINDA- Sonde abgekuehlt ist"
 
@@ -1521,37 +1536,37 @@ msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU t
 msgstr "Entladen Sie das Filament 1, wenn er aus dem hinteren MMU-Rohr herausragt. Verwenden Sie den Auswurf, wenn er im Rohr versteckt ist."
 
 # MSG_CHANGED_BOTH c=20 r=4
-#: Marlin_main.cpp:1510
+#: Marlin_main.cpp:1573
 msgid "Warning: both printer type and motherboard type changed."
 msgstr "Warnung: Druckertyp und Platinentyp wurden beide geaendert."
 
 # MSG_CHANGED_MOTHERBOARD c=20 r=4
-#: Marlin_main.cpp:1502
+#: Marlin_main.cpp:1565
 msgid "Warning: motherboard type changed."
 msgstr "Warnung: Platinentyp wurde geaendert."
 
 # MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1506
+#: Marlin_main.cpp:1569
 msgid "Warning: printer type changed."
 msgstr "Warnung: Druckertyp wurde geaendert."
 
 # MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3128
+#: Marlin_main.cpp:3308
 msgid "Was filament unload successful?"
 msgstr "Konnten Sie das Filament entnehmen?"
 
 # MSG_SELFTEST_WIRINGERROR
-#: messages.c:81
+#: messages.c:96
 msgid "Wiring error"
 msgstr "Verdrahtungsfehler"
 
 # MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5834
+#: ultralcd.cpp:5775
 msgid "Wizard"
 msgstr "Assistent"
 
 # MSG_XYZ_DETAILS c=18
-#: ultralcd.cpp:2210
+#: ultralcd.cpp:2152
 msgid "XYZ cal. details"
 msgstr "XYZ Kal. Details"
 
@@ -1561,182 +1576,177 @@ msgid "XYZ calibration failed. Please consult the manual."
 msgstr "XYZ-Kalibrierung fehlgeschlagen. Bitte schauen Sie in das Handbuch."
 
 # MSG_YES
-#: messages.c:102
+#: messages.c:119
 msgid "Yes"
 msgstr "Ja"
 
 # MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:101
+#: messages.c:118
 msgid "You can always resume the Wizard from Calibration -> Wizard."
 msgstr "Sie koennen den Assistenten immer im Menu neu starten: Kalibrierung -> Assistent"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
-#: ultralcd.cpp:3904
+#: ultralcd.cpp:3817
 msgid "XYZ calibration all right. Skew will be corrected automatically."
 msgstr "XYZ Kalibrierung in Ordnung. Schraeglauf wird automatisch korrigiert."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
-#: ultralcd.cpp:3901
+#: ultralcd.cpp:3814
 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
 msgstr "XYZ Kalibrierung in Ordnung. X/Y Achsen sind etwas schraeg."
 
 # MSG_TIMEOUT c=12
-#: messages.c:137
+#: messages.c:157
 msgid "Timeout"
 msgstr "Verzoegerung"
 
 # MSG_X_CORRECTION c=13
-#: ultralcd.cpp:5190
+#: ultralcd.cpp:5091
 msgid "X-correct:"
 msgstr "X-Korrektur:"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3898
+#: ultralcd.cpp:3811
 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
 msgstr "XYZ-Kalibrierung ok. X/Y-Achsen sind senkrecht zueinander Glueckwunsch!"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
-#: ultralcd.cpp:3882
+#: ultralcd.cpp:3795
 msgid "XYZ calibration compromised. Front calibration points not reachable."
 msgstr "XYZ-Kalibrierung beeintraechtigt. Vordere Kalibrierpunkte nicht erreichbar."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3885
+#: ultralcd.cpp:3798
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "XYZ-Kalibrierung beeintraechtigt. Rechter vorderer Kalibrierpunkt nicht erreichbar."
 
 # MSG_LOAD_ALL c=17
-#: ultralcd.cpp:6261
+#: ultralcd.cpp:6171
 msgid "Load all"
 msgstr "Alle laden"
 
 # 
-#: ultralcd.cpp:3864
+#: ultralcd.cpp:3777
 msgid "XYZ calibration failed. Bed calibration point was not found."
 msgstr "XYZ-Kalibrierung fehlgeschlagen. Bett-Kalibrierpunkt nicht gefunden."
 
 # 
-#: ultralcd.cpp:3870
+#: ultralcd.cpp:3783
 msgid "XYZ calibration failed. Front calibration points not reachable."
 msgstr "XYZ-Kalibrierung fehlgeschlagen. Vordere Kalibrierpunkte nicht erreichbar."
 
 # 
-#: ultralcd.cpp:3873
+#: ultralcd.cpp:3786
 msgid "XYZ calibration failed. Right front calibration point not reachable."
 msgstr "XYZ-Kalibrierung fehlgeschlagen. Rechter vorderer Kalibrierpunkt ist nicht erreichbar."
 
 # 
-#: ultralcd.cpp:2991
+#: ultralcd.cpp:2917
 msgid "Y distance from min"
 msgstr "Y Entfernung vom Min"
 
 # 
-#: ultralcd.cpp:4958
+#: ultralcd.cpp:4859
 msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
 msgstr "Der Drucker beginnt mit dem Drucken einer Zickzacklinie. Drehen Sie den Knopf, bis Sie die optimale Hoehe erreicht haben. Ueberpruefen Sie die Bilder im Handbuch (Kapitel Kalibrierung)."
 
 #  c=20 r=5
-#: ultralcd.cpp:7558
+#: ultralcd.cpp:7315
 msgid "Verification failed, remove the filament and try again."
 msgstr "Ueberpruefung fehl- geschlagen, entladen Sie das Filament und versuchen Sie es erneut."
 
 # MSG_Y_CORRECTION c=13
-#: ultralcd.cpp:5191
+#: ultralcd.cpp:5092
 msgid "Y-correct:"
 msgstr "Y-Korrektur:"
 
 # MSG_OFF
-#: messages.c:105
+#: messages.c:122
 msgid "Off"
 msgstr "Aus"
 
 # MSG_ON
-#: messages.c:106
+#: messages.c:123
 msgid "On"
 msgstr "An"
 
 # 
-#: messages.c:53
+#: messages.c:62
 msgid "Back"
 msgstr "Zurueck"
 
 # 
-#: ultralcd.cpp:5724
+#: ultralcd.cpp:5647
 msgid "Checks"
 msgstr "Kontrolle"
 
 # 
-#: ultralcd.cpp:8349
+#: ultralcd.cpp:8090
 msgid "False triggering"
 msgstr "Falschtriggerung"
 
 # 
-#: ultralcd.cpp:4013
+#: ultralcd.cpp:3920
 msgid "FINDA:"
 msgstr ""
 
 # MSG_FIRMWARE
-#: language.h:23
+#: language.h:24
 msgid "Firmware"
 msgstr ""
 
 # MSG_STRICT
-#: messages.c:112
+#: messages.c:129
 msgid "Strict"
 msgstr "Strikt"
 
 # MSG_WARN
-#: messages.c:111
+#: messages.c:128
 msgid "Warn"
 msgstr "Warnen"
 
-# 
-#: messages.c:83
+# MSG_HW_SETUP c=18
+#: messages.c:100
 msgid "HW Setup"
 msgstr "HW Einstellungen"
 
 # 
-#: ultralcd.cpp:4017
+#: ultralcd.cpp:3924
 msgid "IR:"
 msgstr ""
 
 # MSG_MAGNETS_COMP
-#: messages.c:130
+#: messages.c:150
 msgid "Magnets comp."
 msgstr "Magnet Komp."
 
 # MSG_MESH
-#: messages.c:128
+#: messages.c:147
 msgid "Mesh"
 msgstr "Gitter"
 
 # 
-#: ultralcd.cpp:5763
-msgid "Mesh bed leveling"
-msgstr "MeshBett Ausgleich"
-
-# 
-#: Marlin_main.cpp:872
+#: Marlin_main.cpp:927
 msgid "MK3S firmware detected on MK3 printer"
 msgstr "MK3S-Firmware auf MK3-Drucker erkannt"
 
 # MSG_MMU_MODE
-#: messages.c:117
+#: messages.c:136
 msgid "MMU Mode"
 msgstr "MMU Modus"
 
 # 
-#: ultralcd.cpp:4494
+#: ultralcd.cpp:4395
 msgid "Mode change in progress ..."
 msgstr "Moduswechsel erfolgt..."
 
 # MSG_MODEL
-#: messages.c:113
+#: messages.c:130
 msgid "Model"
 msgstr "Modell"
 
 # MSG_NOZZLE_DIAMETER
-#: messages.c:116
+#: messages.c:135
 msgid "Nozzle d."
 msgstr "Duese D."
 
@@ -1750,13 +1760,13 @@ msgstr "G-Code ist fuer einen anderen Level geslict. Fortfahren?"
 msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
 msgstr "G-Code ist fuer einen anderen Level geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen."
 
-# 
-#: util.cpp:431
+# MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5
+#: messages.c:133
 msgid "G-code sliced for a different printer type. Continue?"
 msgstr "G-Code ist fuer einen anderen Drucker geslict. Fortfahren?"
 
-# 
-#: util.cpp:437
+# MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=6
+#: messages.c:134
 msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
 msgstr "G-Code ist fuer einen anderen Drucker geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen."
 
@@ -1771,17 +1781,17 @@ msgid "G-code sliced for a newer firmware. Please update the firmware. Print can
 msgstr "G-Code ist fuer eine neuere Firmware geslict. Bitte die Firmware updaten. Druck abgebrochen."
 
 # 
-#: ultralcd.cpp:4009
+#: ultralcd.cpp:3916
 msgid "PINDA:"
 msgstr ""
 
 #  c=20
-#: ultralcd.cpp:2452
+#: ultralcd.cpp:2402
 msgid "Preheating to cut"
 msgstr "Heizen zum Schnitt"
 
 #  c=20
-#: ultralcd.cpp:2449
+#: ultralcd.cpp:2399
 msgid "Preheating to eject"
 msgstr "Heizen zum Auswurf"
 
@@ -1796,47 +1806,47 @@ msgid "Printer nozzle diameter differs from the G-code. Please check the value i
 msgstr "Der Durchmesser der Druckerduese weicht vom G-Code ab. Bitte ueberpruefen Sie den Wert in den Einstellungen. Druck abgebrochen."
 
 #  c=20
-#: ultralcd.cpp:8355
+#: ultralcd.cpp:8095
 msgid "%s level expected"
 msgstr ""
 
 # 
-#: ultralcd.cpp:6814
+#: ultralcd.cpp:6574
 msgid "Rename"
 msgstr "Umbenennen"
 
 # 
-#: ultralcd.cpp:6807
+#: ultralcd.cpp:6567
 msgid "Select"
 msgstr "Auswahl"
 
 # 
-#: ultralcd.cpp:2212
+#: ultralcd.cpp:2154
 msgid "Sensor info"
 msgstr "Sensor Info"
 
 # MSG_SHEET c=10
-#: messages.c:54
+#: messages.c:63
 msgid "Sheet"
 msgstr "Stahlblech"
 
 # MSG_SOUND_BLIND
-#: messages.c:127
+#: messages.c:146
 msgid "Assist"
 msgstr ""
 
-#  c=18
-#: ultralcd.cpp:5722
+# MSG_STEEL_SHEET c=18
+#: messages.c:64
 msgid "Steel sheets"
 msgstr "Stahlbleche"
 
 # MSG_Z_CORRECTION c=13
-#: ultralcd.cpp:5192
+#: ultralcd.cpp:5093
 msgid "Z-correct:"
 msgstr "Z-Korrektur:"
 
 # MSG_Z_PROBE_NR
-#: messages.c:129
+#: messages.c:149
 msgid "Z-probe nr."
 msgstr ""
 

+ 392 - 382
lang/po/Firmware_es.po

@@ -7,8 +7,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
 "Project-Id-Version: Prusa-Firmware\n"
-"POT-Creation-Date: Wed May 13 17:41:49 CEST 2020\n"
-"PO-Revision-Date: Wed May 13 17:41:49 CEST 2020\n"
+"POT-Creation-Date: Di 26. Jan 11:04:04 CET 2021\n"
+"PO-Revision-Date: Di 26. Jan 11:04:04 CET 2021\n"
 "Language-Team: \n"
 "X-Generator: Poedit 2.0.7\n"
 "X-Poedit-SourceCharset: UTF-8\n"
@@ -20,28 +20,43 @@ msgstr ""
 msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
 msgstr "[%.7s]Ajuste Z\x0aAjustado, continuar\x0ao empezar de nuevo?\x0a%cContinuar%cRepetir"
 
-# MSG_03_OR_OLDER c=18
-#: messages.c:144
+# MSG_IR_03_OR_OLDER c=18
+#: messages.c:164
 msgid " 0.3 or older"
 msgstr " 0.3 o mayor"
 
-# MSG_04_OR_NEWER c=18
-#: messages.c:143
+#  c=18
+#: Marlin_main.cpp:9626
+msgid "FS v0.3 or older"
+msgstr "FS 0.3 o mayor"
+
+# MSG_IR_04_OR_NEWER c=18
+#: messages.c:163
 msgid " 0.4 or newer"
 msgstr " 0.4 o mas nueva"
 
+#  c=18
+#: Marlin_main.cpp:9625
+msgid "FS v0.4 or newer"
+msgstr "FS 0.4 o mas nueva"
+
+# MSG_IR_UNKNOWN c=18
+#: messages.c:165
+msgid "unknown state"
+msgstr "estado desconocido"
+
 # MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
-#: messages.c:36
+#: messages.c:43
 msgid " of 4"
 msgstr " de 4"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:56
+#: messages.c:66
 msgid " of 9"
 msgstr " de 9"
 
 # MSG_MEASURED_OFFSET
-#: ultralcd.cpp:3064
+#: ultralcd.cpp:2988
 msgid "[0;0] point offset"
 msgstr "[0;0] punto offset"
 
@@ -56,47 +71,47 @@ msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
 msgstr "ATENCION:\x0aDec. choque\x0adesactivada en\x0aModo silencio"
 
 # 
-#: ultralcd.cpp:2460
+#: ultralcd.cpp:2410
 msgid ">Cancel"
 msgstr ">Cancelar"
 
 # MSG_BABYSTEPPING_Z c=15
-#: ultralcd.cpp:3184
+#: ultralcd.cpp:3108
 msgid "Adjusting Z:"
 msgstr "Ajustar-Z:"
 
 # MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:8677
+#: ultralcd.cpp:8390
 msgid "All correct      "
 msgstr "Todo bien"
 
 # MSG_WIZARD_DONE c=20 r=8
-#: messages.c:99
+#: messages.c:116
 msgid "All is done. Happy printing!"
 msgstr "Terminado! Feliz impresion!"
 
 # 
-#: ultralcd.cpp:1956
+#: ultralcd.cpp:1902
 msgid "Ambient"
 msgstr "Ambiente"
 
 # MSG_AUTO c=6
-#: messages.c:140
+#: messages.c:160
 msgid "Auto"
 msgstr ""
 
 # MSG_PRESS c=20 r=2
-#: ultralcd.cpp:2609
+#: ultralcd.cpp:2567
 msgid "and press the knob"
 msgstr "Haz clic"
 
 # MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3506
+#: ultralcd.cpp:3429
 msgid "Are left and right Z~carriages all up?"
 msgstr "Carros Z izq./der. estan arriba maximo?"
 
 # MSG_AUTO_DEPLETE c=17 r=1
-#: messages.c:108
+#: messages.c:125
 msgid "SpoolJoin"
 msgstr ""
 
@@ -106,32 +121,32 @@ msgid "Auto home"
 msgstr "Llevar al origen"
 
 # MSG_AUTOLOAD_FILAMENT c=18
-#: ultralcd.cpp:6961
+#: ultralcd.cpp:6716
 msgid "AutoLoad filament"
 msgstr "Carga auto. filam."
 
 # MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4445
+#: ultralcd.cpp:4346
 msgid "Autoloading filament available only when filament sensor is turned on..."
 msgstr "La carga automatica solo funciona si el sensor de filamento esta activado..."
 
 # MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2804
+#: ultralcd.cpp:2730
 msgid "Autoloading filament is active, just press the knob and insert filament..."
 msgstr "La carga automatica esta activada, pulse el dial e inserte el filamento..."
 
 # MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:8325
+#: ultralcd.cpp:8073
 msgid "Axis length"
 msgstr "Longitud del eje"
 
 # MSG_SELFTEST_AXIS
-#: ultralcd.cpp:8327
+#: ultralcd.cpp:8074
 msgid "Axis"
 msgstr "Eje"
 
 # MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:8269
+#: ultralcd.cpp:8031
 msgid "Bed / Heater"
 msgstr "Base / Calentador"
 
@@ -146,12 +161,12 @@ msgid "Bed Heating"
 msgstr "Calentando Base"
 
 # MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5861
+#: ultralcd.cpp:5802
 msgid "Bed level correct"
 msgstr "Corr. de la cama"
 
 # MSG_BELTTEST c=17
-#: ultralcd.cpp:5841
+#: ultralcd.cpp:5782
 msgid "Belt test        "
 msgstr "Test cinturon    "
 
@@ -161,12 +176,12 @@ msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for
 msgstr "Nivelacion fallada. Sensor no funciona. Restos en boquilla? Esperando reset."
 
 # MSG_BRIGHT c=6
-#: messages.c:138
+#: messages.c:158
 msgid "Bright"
 msgstr "Brill."
 
 # MSG_BRIGHTNESS c=18
-#: messages.c:134
+#: messages.c:154
 msgid "Brightness"
 msgstr "Brillo"
 
@@ -175,123 +190,123 @@ msgstr "Brillo"
 msgid "Bed"
 msgstr "Base"
 
-# MSG_MENU_BELT_STATUS c=18
-#: ultralcd.cpp:2009
+# MSG_BELT_STATUS c=18
+#: 
 msgid "Belt status"
 msgstr "Estado de correa"
 
 # MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:67
+#: messages.c:80
 msgid "Blackout occurred. Recover print?"
 msgstr "Se fue la luz. ?Reanudar la impresion?"
 
 # 
-#: ultralcd.cpp:8679
+#: ultralcd.cpp:8392
 msgid "Calibrating home"
 msgstr "Calibrando posicion inicial"
 
 # MSG_CALIBRATE_BED
-#: ultralcd.cpp:5850
+#: ultralcd.cpp:5791
 msgid "Calibrate XYZ"
 msgstr "Calibrar XYZ"
 
 # MSG_HOMEYZ
-#: messages.c:44
+#: messages.c:51
 msgid "Calibrate Z"
 msgstr "Calibrar Z"
 
 # MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4637
+#: ultralcd.cpp:4538
 msgid "Calibrate"
 msgstr "Calibrar"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3469
+#: ultralcd.cpp:3392
 msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr "Calibrando XYZ. Gira el dial para subir el extrusor hasta tocar los topes superiores. Despues haz clic."
 
 # MSG_CALIBRATE_Z_AUTO c=20 r=2
-#: messages.c:19
+#: messages.c:20
 msgid "Calibrating Z"
 msgstr "Calibrando Z"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3469
+#: ultralcd.cpp:3392
 msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr "Calibrando Z. Gira el dial para subir el extrusor hasta tocar los topes superiores. Despues haz clic."
 
 # MSG_HOMEYZ_DONE
-#: ultralcd.cpp:865
+#: ultralcd.cpp:813
 msgid "Calibration done"
 msgstr "Calibracion OK"
 
 # MSG_MENU_CALIBRATION
-#: messages.c:57
+#: messages.c:67
 msgid "Calibration"
 msgstr "Calibracion"
 
 # 
-#: ultralcd.cpp:4815
+#: ultralcd.cpp:4716
 msgid "Cancel"
 msgstr "Cancelar"
 
 # MSG_SD_REMOVED
-#: ultralcd.cpp:9090
+#: ultralcd.cpp:8842
 msgid "Card removed"
 msgstr "Tarjeta retirada"
 
 # MSG_NOT_COLOR
-#: ultralcd.cpp:2709
+#: ultralcd.cpp:2647
 msgid "Color not correct"
 msgstr "Color no homogeneo"
 
 # MSG_COOLDOWN
-#: messages.c:22
+#: messages.c:25
 msgid "Cooldown"
 msgstr "Enfriar"
 
 # 
-#: ultralcd.cpp:4570
+#: ultralcd.cpp:4471
 msgid "Copy selected language?"
 msgstr "Copiar idioma seleccionado?"
 
 # MSG_CRASHDETECT c=13
-#: messages.c:24
+#: messages.c:28
 msgid "Crash det."
 msgstr "Det. choque"
 
 # 
-#: ultralcd.cpp:4950
+#: ultralcd.cpp:4851
 msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
 msgstr "Escoge un filamento para la Calibracion de la Primera Capa y seleccionalo en el menu en pantalla."
 
 # MSG_CRASH_DETECTED c=20 r=1
-#: messages.c:23
+#: messages.c:27
 msgid "Crash detected."
 msgstr "Choque detectado."
 
 # 
-#: Marlin_main.cpp:607
+#: Marlin_main.cpp:657
 msgid "Crash detected. Resume print?"
 msgstr "Choque detectado. Continuar impresion?"
 
-# 
-#: ultralcd.cpp:1785
+# MSG_CRASH c=7
+#: messages.c:26
 msgid "Crash"
 msgstr "Choque"
 
 # MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:6002
+#: ultralcd.cpp:5933
 msgid "Current"
 msgstr "Actual"
 
 # MSG_DATE c=17 r=1
-#: ultralcd.cpp:2163
+#: ultralcd.cpp:2112
 msgid "Date:"
 msgstr "Fecha:"
 
 # MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5743
+#: ultralcd.cpp:5683
 msgid "Disable steppers"
 msgstr "Apagar motores"
 
@@ -301,377 +316,372 @@ msgid "Distance between tip of the nozzle and the bed surface has not been set y
 msgstr "Distancia entre la punta del boquilla y la superficie de la base aun no fijada. Por favor siga el manual, capitulo Primeros Pasos, Calibracion primera capa."
 
 # MSG_FS_CONTINUE c=5
-#: messages.c:132
+#: messages.c:152
 msgid "Cont."
 msgstr ""
 
 # MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:5125
+#: ultralcd.cpp:5026
 msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
 msgstr "Quieres repetir el ultimo paso para reajustar la distancia boquilla-base?"
 
 # MSG_EXTRUDER_CORRECTION c=13
-#: ultralcd.cpp:5194
+#: ultralcd.cpp:5095
 msgid "E-correct:"
 msgstr "Corregir-E:"
 
-# MSG_EJECT_FILAMENT c=17 r=1
-#: messages.c:49
+# MSG_EJECT_FILAMENT c=16
+#: messages.c:58
 msgid "Eject filament"
 msgstr "Expulsar fil."
 
 # MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1416
+#: mmu.cpp:1414
 msgid "Ejecting filament"
 msgstr "Expulsando filamento"
 
 # MSG_SELFTEST_ENDSTOP_NOTHIT c=20
-#: ultralcd.cpp:8293
+#: ultralcd.cpp:8049
 msgid "Endstop not hit"
 msgstr "Endstop no alcanzado"
 
 # MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:8287
+#: ultralcd.cpp:8044
 msgid "Endstop"
 msgstr ""
 
 # MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:8275
+#: ultralcd.cpp:8035
 msgid "Endstops"
 msgstr ""
 
 # MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6998
+#: ultralcd.cpp:6753
 msgid "Error - static memory has been overwritten"
 msgstr "Error - se ha sobre-escrito la memoria estatica"
 
 # MSG_CUT_FILAMENT c=16
-#: messages.c:50
+#: messages.c:59
 msgid "Cut filament"
 msgstr "Cortar filament"
 
 # MSG_CUTTER c=9
-#: messages.c:109
+#: messages.c:126
 msgid "Cutter"
 msgstr "Cuchillo"
 
 #  c=18
-#: mmu.cpp:1388
+#: mmu.cpp:1386
 msgid "Cutting filament"
 msgstr "Corte de filament"
 
 # MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4458
+#: ultralcd.cpp:4359
 msgid "ERROR: Filament sensor is not responding, please check connection."
 msgstr "ERROR: El sensor de filamento no responde, por favor comprueba la conexion."
 
 # MSG_DIM c=6
-#: messages.c:139
+#: messages.c:159
 msgid "Dim"
 msgstr ""
 
 # MSG_ERROR
-#: messages.c:25
+#: messages.c:29
 msgid "ERROR:"
 msgstr ""
 
 # MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:8686
+#: ultralcd.cpp:8398
 msgid "Extruder fan:"
 msgstr "Vent.extrusor:"
 
 # MSG_INFO_EXTRUDER c=18
-#: ultralcd.cpp:2211
+#: ultralcd.cpp:2153
 msgid "Extruder info"
 msgstr "Info. del extrusor"
 
-# MSG_MOVE_E
-#: messages.c:26
+# MSG_EXTRUDER c=17
+#: messages.c:30
 msgid "Extruder"
 msgstr "Extruir"
 
 # 
-#: ultralcd.cpp:6985
+#: ultralcd.cpp:6740
 msgid "Fail stats MMU"
 msgstr "Estadistica de fallos MMU"
 
 # MSG_FSENSOR_AUTOLOAD c=13
-#: messages.c:40
+#: messages.c:47
 msgid "F. autoload"
 msgstr "Autocarg.fil."
 
 # 
-#: ultralcd.cpp:6982
+#: ultralcd.cpp:6737
 msgid "Fail stats"
 msgstr "Estadistica de fallos"
 
 # MSG_FAN_SPEED c=14
-#: messages.c:28
+#: messages.c:34
 msgid "Fan speed"
 msgstr "Velocidad Vent"
 
 # MSG_SELFTEST_FAN c=20
-#: messages.c:74
+#: messages.c:89
 msgid "Fan test"
 msgstr "Test ventiladores"
 
-# MSG_FANS_CHECK
-#: ultralcd.cpp:5751
+# MSG_FANS_CHECK c=13
+#: messages.c:31
 msgid "Fans check"
 msgstr "Comprob.vent"
 
 # MSG_FSENSOR
-#: messages.c:41
+#: messages.c:48
 msgid "Fil. sensor"
 msgstr "Sensor Fil."
 
-#  c=14
-#: ultralcd.cpp:1784
-msgid "Filam. runouts"
-msgstr "Filam. acabado"
+# MSG_FIL_RUNOUTS c=14
+#: 
+msgid "Fil. runouts  "
+msgstr "Fil. acabado  "
 
 # MSG_FILAMENT_CLEAN c=20 r=2
-#: messages.c:29
+#: messages.c:35
 msgid "Filament extruding & with correct color?"
 msgstr "Es nitido el color nuevo?"
 
 # MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2705
+#: ultralcd.cpp:2646
 msgid "Filament not loaded"
 msgstr "Fil. no introducido"
 
 # MSG_FILAMENT_SENSOR c=20
-#: messages.c:80
+#: messages.c:95
 msgid "Filament sensor"
 msgstr "Sensor de filamento"
 
 # MSG_FILAMENT_USED c=19
-#: ultralcd.cpp:2869
+#: ultralcd.cpp:2795
 msgid "Filament used"
 msgstr "Filamento usado"
 
 # MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2870
+#: ultralcd.cpp:2796
 msgid "Print time"
 msgstr "Tiempo de imp.:"
 
 # MSG_FS_ACTION c=10
-#: messages.c:131
+#: messages.c:151
 msgid "FS Action"
 msgstr "FS accion"
 
-#  c=18
-#: Marlin_main.cpp:9512
-msgid "FS v0.4 or newer"
-msgstr "FS v0.4 o +nueva"
-
 # MSG_FILE_INCOMPLETE c=20 r=3
-#: ultralcd.cpp:8814
+#: ultralcd.cpp:8540
 msgid "File incomplete. Continue anyway?"
 msgstr "Archivo incompleto. ?Continuar de todos modos?"
 
 # MSG_FINISHING_MOVEMENTS c=20
-#: messages.c:37
+#: messages.c:44
 msgid "Finishing movements"
 msgstr "Term. movimientos"
 
 # MSG_V2_CALIBRATION c=18
-#: messages.c:103
+#: messages.c:120
 msgid "First layer cal."
 msgstr "Cal. primera cap."
 
 # MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:5046
+#: ultralcd.cpp:4947
 msgid "First, I will run the selftest to check most common assembly problems."
 msgstr "Primero, hare el Selftest para comprobar los problemas de montaje mas comunes."
 
 # 
-#: mmu.cpp:727
+#: mmu.cpp:726
 msgid "Fix the issue and then press button on MMU unit."
 msgstr "Corrige el problema y pulsa el boton en la unidad MMU."
 
 # MSG_FLOW
-#: ultralcd.cpp:7125
+#: ultralcd.cpp:6880
 msgid "Flow"
 msgstr "Flujo"
 
 # MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2156
+#: ultralcd.cpp:2105
 msgid "forum.prusa3d.com"
 msgstr ""
 
 # MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:71
+#: messages.c:86
 msgid "Front print fan?"
 msgstr "Vent. frontal?"
 
 # MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3266
+#: ultralcd.cpp:3190
 msgid "Front side[um]"
 msgstr "Frontal [um]"
 
 # MSG_SELFTEST_FANS
-#: ultralcd.cpp:8333
+#: ultralcd.cpp:8079
 msgid "Front/left fans"
 msgstr "Ventiladores frontal/izquierdo"
 
 # MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:8263
+#: ultralcd.cpp:8027
 msgid "Heater/Thermistor"
 msgstr "Calentador/Termistor"
 
 # MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:9440
+#: Marlin_main.cpp:9616
 msgid "Heating disabled by safety timer."
 msgstr "Calentadores desactivados por el temporizador de seguridad."
 
 # MSG_HEATING_COMPLETE c=20
-#: messages.c:43
+#: messages.c:50
 msgid "Heating done."
 msgstr "Calentando acabado."
 
 # MSG_HEATING
-#: messages.c:42
+#: messages.c:49
 msgid "Heating"
 msgstr "Calentando..."
 
 # MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:5025
+#: ultralcd.cpp:4926
 msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
 msgstr "Hola, soy tu impresora Original Prusa i3. Quieres que te guie a traves de la configuracion?"
 
 # MSG_PRUSA3D_HOWTO
-#: ultralcd.cpp:2157
+#: ultralcd.cpp:2106
 msgid "howto.prusa3d.com"
 msgstr ""
 
 # MSG_FILAMENTCHANGE
-#: messages.c:34
+#: messages.c:41
 msgid "Change filament"
 msgstr "Cambiar filamento"
 
 # MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2620
+#: ultralcd.cpp:2576
 msgid "Change success!"
 msgstr "Cambio correcto"
 
 # MSG_CORRECTLY c=20
-#: ultralcd.cpp:2697
+#: ultralcd.cpp:2644
 msgid "Changed correctly?"
 msgstr "Cambio correcto?"
 
 # MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:77
+#: messages.c:92
 msgid "Checking bed     "
 msgstr "Control base cal."
 
 # MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:8668
+#: ultralcd.cpp:8381
 msgid "Checking endstops"
 msgstr "Control endstops"
 
 # MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:8674
+#: ultralcd.cpp:8387
 msgid "Checking hotend  "
 msgstr "Control fusor"
 
 # MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:78
+#: messages.c:93
 msgid "Checking sensors "
 msgstr "Comprobando sensores"
 
-# MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:7482
-msgid "Checking X axis  "
+# MSG_CHECKING_X c=20
+#: messages.c:22
+msgid "Checking X axis"
 msgstr "Control sensor X"
 
-# MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:7491
-msgid "Checking Y axis  "
+# MSG_CHECKING_Y c=20
+#: messages.c:23
+msgid "Checking Y axis"
 msgstr "Control sensor Y"
 
 # MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:8671
-msgid "Checking Z axis  "
+#: 
+msgid "Checking Z axis"
 msgstr "Control sensor Z"
 
 # MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:45
+#: messages.c:52
 msgid "Choose extruder:"
 msgstr "Elegir extrusor:"
 
 # MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:46
+#: messages.c:53
 msgid "Choose filament:"
 msgstr "Elije filamento:"
 
 # MSG_FILAMENT c=17 r=1
-#: messages.c:27
+#: messages.c:33
 msgid "Filament"
 msgstr "Filamento"
 
 # MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:5055
+#: ultralcd.cpp:4956
 msgid "I will run xyz calibration now. It will take approx. 12 mins."
 msgstr "Hare la calibracion XYZ. Tardara 12 min. aproximadamente."
 
 # MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:5063
+#: ultralcd.cpp:4964
 msgid "I will run z calibration now."
 msgstr "Voy a hacer Calibracion Z ahora."
 
 # MSG_WATCH
-#: messages.c:97
+#: messages.c:114
 msgid "Info screen"
 msgstr "Monitorizar"
 
 # MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2605
+#: ultralcd.cpp:2564
 msgid "Insert filament"
 msgstr "Introducir filamento"
 
-# MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4835
+# MSG_FILAMENT_LOADED c=20 r=2
+#: messages.c:36
 msgid "Is filament loaded?"
 msgstr "Esta el filamento cargado?"
 
 # MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:90
+#: messages.c:107
 msgid "Is steel sheet on heatbed?"
 msgstr "?Esta colocada la lamina sobre la base"
 
-# 
-#: ultralcd.cpp:1727
+# MSG_LAST_PRINT_FAILURES c=20
+#: messages.c:55
 msgid "Last print failures"
-msgstr "Ultimas impresiones fallidas"
+msgstr "Ultimos imp. fallos"
 
 # 
-#: ultralcd.cpp:5133
+#: ultralcd.cpp:5034
 msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
 msgstr "Si tienes planchas de acero adicionales, calibra sus ajustes en Ajustes - Ajustes HW - Planchas acero."
 
-# 
-#: ultralcd.cpp:1704
+# MSG_LAST_PRINT c=18
+#: messages.c:54
 msgid "Last print"
 msgstr "Ultima impresion"
 
 # MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:72
+#: messages.c:87
 msgid "Left hotend fan?"
 msgstr "Vent. izquierdo?"
 
 # 
-#: ultralcd.cpp:2993
+#: ultralcd.cpp:2919
 msgid "Left"
 msgstr "Izquierda"
 
 # MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3264
+#: ultralcd.cpp:3188
 msgid "Left side [um]"
 msgstr "Izquierda [um]"
 
 # 
-#: ultralcd.cpp:5766
+#: ultralcd.cpp:5706
 msgid "Lin. correction"
 msgstr "Correccion de Linealidad"
 
@@ -681,197 +691,197 @@ msgid "Live adjust Z"
 msgstr "Micropaso Eje Z"
 
 #  c=20 r=6
-#: ultralcd.cpp:7527
+#: ultralcd.cpp:7280
 msgid "Insert the filament (do not load it) into the extruder and then press the knob."
 msgstr "Inserte el filamento (no lo cargue) en el extrusor y luego presione el dial."
 
 # MSG_LOAD_FILAMENT c=17
-#: messages.c:47
+#: messages.c:56
 msgid "Load filament"
 msgstr "Introducir filam."
 
 # MSG_LOADING_COLOR
-#: ultralcd.cpp:2645
+#: ultralcd.cpp:2598
 msgid "Loading color"
 msgstr "Cambiando color"
 
 # MSG_LOADING_FILAMENT c=20
-#: messages.c:48
+#: messages.c:57
 msgid "Loading filament"
 msgstr "Introduciendo filam."
 
 # MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:8317
+#: ultralcd.cpp:8067
 msgid "Loose pulley"
 msgstr "Polea suelta"
 
 # 
-#: ultralcd.cpp:6944
+#: ultralcd.cpp:6699
 msgid "Load to nozzle"
 msgstr "Cargar a la boquilla"
 
 # MSG_M117_V2_CALIBRATION c=25
-#: messages.c:51
+#: messages.c:60
 msgid "M117 First layer cal."
 msgstr "M117 Cal. primera cap."
 
 # MSG_MAIN
-#: messages.c:52
+#: messages.c:61
 msgid "Main"
 msgstr "Menu principal"
 
 # MSG_BL_HIGH c=12
-#: messages.c:135
+#: messages.c:155
 msgid "Level Bright"
 msgstr "Valor brill."
 
 # MSG_BL_LOW c=12
-#: messages.c:136
+#: messages.c:156
 msgid "Level Dimmed"
 msgstr ""
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:55
+#: messages.c:65
 msgid "Measuring reference height of calibration point"
 msgstr "Midiendo altura del punto de calibracion"
 
-# MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5856
+# MSG_MESH_BED_LEVELING c=18
+#: messages.c:148
 msgid "Mesh Bed Leveling"
-msgstr "Nivelacion Mesh Level"
+msgstr "Nivela. Mesh Level"
 
 # MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:765
+#: mmu.cpp:764
 msgid "MMU OK. Resuming position..."
 msgstr "MMU OK. Restaurando posicion..."
 
 # MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:758
+#: mmu.cpp:757
 msgid "MMU OK. Resuming temperature..."
 msgstr "MMU OK. Restaurando temperatura..."
 
 # 
-#: ultralcd.cpp:3034
+#: ultralcd.cpp:2960
 msgid "Measured skew"
 msgstr "Desviacion med:"
 
-# 
-#: ultralcd.cpp:1728
+# MSG_MMU_FAILS c=14
+#: messages.c:68
 msgid "MMU fails"
 msgstr "Fallos MMU"
 
 # 
-#: mmu.cpp:1588
+#: mmu.cpp:1586
 msgid "MMU load failed     "
 msgstr "Carga MMU fallida"
 
-# 
-#: ultralcd.cpp:1729
+# MSG_MMU_LOAD_FAILS c=14
+#: messages.c:69
 msgid "MMU load fails"
 msgstr "Carga MMU falla"
 
 # MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:776
+#: mmu.cpp:775
 msgid "MMU OK. Resuming..."
 msgstr "MMU OK. Resumiendo..."
 
 # MSG_MODE
-#: messages.c:84
+#: messages.c:101
 msgid "Mode"
 msgstr "Modo"
 
 #  c=20 r=3
-#: Marlin_main.cpp:879
+#: Marlin_main.cpp:934
 msgid "MK3 firmware detected on MK3S printer"
 msgstr "Firmware MK3 detectado en impresora MK3S"
 
 # MSG_NORMAL
-#: messages.c:88
+#: messages.c:105
 msgid "Normal"
 msgstr ""
 
 # MSG_SILENT
-#: messages.c:87
+#: messages.c:104
 msgid "Silent"
 msgstr "Silencio"
 
 # 
-#: mmu.cpp:722
+#: mmu.cpp:721
 msgid "MMU needs user attention."
 msgstr "MMU necesita atencion del usuario."
 
 # 
-#: ultralcd.cpp:1755
+#: ultralcd.cpp:1701
 msgid "MMU power fails"
 msgstr "Fallo de energia en MMU"
 
 # MSG_STEALTH
-#: messages.c:89
+#: messages.c:106
 msgid "Stealth"
 msgstr "Silencio"
 
 # MSG_AUTO_POWER
-#: messages.c:86
+#: messages.c:103
 msgid "Auto power"
 msgstr "Fuerza auto"
 
 # MSG_HIGH_POWER
-#: messages.c:85
+#: messages.c:102
 msgid "High power"
 msgstr "Rend.pleno"
 
 # 
-#: ultralcd.cpp:2186
+#: ultralcd.cpp:2124
 msgid "MMU2 connected"
 msgstr "MMU2 conectado"
 
 # MSG_SELFTEST_MOTOR
-#: messages.c:79
+#: messages.c:94
 msgid "Motor"
 msgstr ""
 
 # MSG_MOVE_AXIS
-#: ultralcd.cpp:5741
+#: ultralcd.cpp:5681
 msgid "Move axis"
 msgstr "Mover ejes"
 
 # MSG_MOVE_X
-#: ultralcd.cpp:4361
+#: ultralcd.cpp:4262
 msgid "Move X"
 msgstr "Mover X"
 
 # MSG_MOVE_Y
-#: ultralcd.cpp:4362
+#: ultralcd.cpp:4263
 msgid "Move Y"
 msgstr "Mover Y"
 
 # MSG_MOVE_Z
-#: ultralcd.cpp:4363
+#: ultralcd.cpp:4264
 msgid "Move Z"
 msgstr "Mover Z"
 
 # MSG_NO_MOVE
-#: Marlin_main.cpp:5541
+#: Marlin_main.cpp:5719
 msgid "No move."
 msgstr "Sin movimiento"
 
 # MSG_NO_CARD
-#: ultralcd.cpp:6911
+#: ultralcd.cpp:6673
 msgid "No SD card"
 msgstr "No hay tarjeta SD"
 
 # MSG_NA
-#: messages.c:107
+#: messages.c:124
 msgid "N/A"
 msgstr "N/A"
 
 # MSG_NO
-#: messages.c:58
+#: messages.c:70
 msgid "No"
 msgstr ""
 
 # MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:8265
+#: ultralcd.cpp:8028
 msgid "Not connected"
 msgstr "No hay conexion "
 
@@ -881,157 +891,157 @@ msgid "New firmware version available:"
 msgstr "Nuevo firmware disponible:"
 
 # MSG_SELFTEST_FAN_NO c=19
-#: messages.c:75
+#: messages.c:90
 msgid "Not spinning"
 msgstr "Ventilador no gira"
 
 # MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4946
+#: ultralcd.cpp:4847
 msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
 msgstr "Voy a calibrar la distancia entre la punta de la boquilla y la superficie de la base."
 
 # MSG_WIZARD_WILL_PREHEAT c=20 r=4
-#: ultralcd.cpp:5071
+#: ultralcd.cpp:4972
 msgid "Now I will preheat nozzle for PLA."
 msgstr "Ahora precalentare la boquilla para PLA."
 
 # MSG_NOZZLE
-#: messages.c:59
+#: messages.c:71
 msgid "Nozzle"
 msgstr "Boquilla"
 
 # MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
-#: Marlin_main.cpp:1518
+#: Marlin_main.cpp:1581
 msgid "Old settings found. Default PID, Esteps etc. will be set."
 msgstr "Se han encontrado ajustes anteriores. Se ajustara el PID, los pasos del extrusor, etc"
 
 # 
-#: ultralcd.cpp:5062
+#: ultralcd.cpp:4963
 msgid "Now remove the test print from steel sheet."
 msgstr "Ahora retira la prueba de la lamina de acero."
 
 # 
-#: ultralcd.cpp:1654
+#: ultralcd.cpp:1600
 msgid "Nozzle FAN"
 msgstr "Vent. capa"
 
 # MSG_PAUSE_PRINT
-#: ultralcd.cpp:6875
+#: ultralcd.cpp:6637
 msgid "Pause print"
 msgstr "Pausar impresion"
 
 # MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1539
+#: ultralcd.cpp:1485
 msgid "PID cal.           "
 msgstr "Cal. PID "
 
 # MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1545
+#: ultralcd.cpp:1491
 msgid "PID cal. finished"
 msgstr "Cal. PID terminada"
 
 # MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5862
+#: ultralcd.cpp:5803
 msgid "PID calibration"
 msgstr "Calibracion PID"
 
 # MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:896
+#: ultralcd.cpp:843
 msgid "PINDA Heating"
 msgstr "Calentando PINDA"
 
 # MSG_PAPER c=20 r=10
-#: messages.c:60
+#: messages.c:72
 msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
 msgstr "Colocar una hoja de papel sobre la superficie de impresion durante la calibracion de los primeros 4 puntos. Si la boquilla mueve el papel, apagar impresora inmediatamente."
 
 # MSG_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:5128
+#: ultralcd.cpp:5029
 msgid "Please clean heatbed and then press the knob."
 msgstr "Limpia la superficie de la base, por favor, y haz clic"
 
 # MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
-#: messages.c:21
+#: messages.c:24
 msgid "Please clean the nozzle for calibration. Click when done."
 msgstr "Limpia boquilla para calibracion. Click cuando acabes."
 
 # MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:8257
+#: ultralcd.cpp:8022
 msgid "Please check :"
 msgstr "Controla :"
 
 # MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:98
+#: messages.c:115
 msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
 msgstr "Lee el manual y resuelve el problema. Despues, reinicia la impresora y continua con el Wizard"
 
 # MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3138
+#: Marlin_main.cpp:3317
 msgid "Please open idler and remove filament manually."
 msgstr "Por favor abate el rodillo de empuje (idler) y retira el filamento manualmente."
 
 # MSG_PLACE_STEEL_SHEET c=20 r=4
-#: messages.c:61
+#: messages.c:73
 msgid "Please place steel sheet on heatbed."
 msgstr "Por favor coloca la chapa de acero en la base calefactable."
 
 # MSG_PRESS_TO_UNLOAD c=20 r=4
-#: messages.c:64
+#: messages.c:77
 msgid "Please press the knob to unload filament"
 msgstr "Por favor, pulsa el dial para descargar el filamento"
 
 # MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:66
+#: messages.c:79
 msgid "Please pull out filament immediately"
 msgstr "Por favor retire el filamento de inmediato"
 
 # MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1422
+#: mmu.cpp:1420
 msgid "Please remove filament and then press the knob."
 msgstr "Por favor quite el filamento y luego presione el dial."
 
 # MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:70
+#: messages.c:82
 msgid "Please remove steel sheet from heatbed."
 msgstr "Por favor retire la chapa de acero de la base calefactable."
 
 # MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4583
+#: Marlin_main.cpp:4766
 msgid "Please run XYZ calibration first."
 msgstr "Por favor realiza la calibracion XYZ primero."
 
 # MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1341
+#: mmu.cpp:1340
 msgid "Please update firmware in your MMU2. Waiting for reset."
 msgstr "Por favor actualice el firmware en tu MMU2. Esperando el reseteo."
 
 # MSG_PLEASE_WAIT c=20
-#: messages.c:62
+#: messages.c:74
 msgid "Please wait"
 msgstr "Por Favor Espere"
 
 # 
-#: ultralcd.cpp:5061
+#: ultralcd.cpp:4962
 msgid "Please remove shipping helpers first."
 msgstr "Por favor retira los soportes de envio primero."
 
 # MSG_PREHEAT_NOZZLE c=20
-#: messages.c:63
+#: messages.c:76
 msgid "Preheat the nozzle!"
 msgstr "Precalienta extrusor"
 
 # MSG_PREHEAT
-#: ultralcd.cpp:6853
+#: ultralcd.cpp:6615
 msgid "Preheat"
 msgstr "Precalentar"
 
 # MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:100
+#: messages.c:117
 msgid "Preheating nozzle. Please wait."
 msgstr "Precalentando nozzle. Espera por favor."
 
 #  c=14
-#: ultralcd.cpp:1959
+#: ultralcd.cpp:1905
 msgid "PINDA"
 msgstr ""
 
@@ -1041,107 +1051,112 @@ msgid "Please upgrade."
 msgstr "Actualize por favor"
 
 # MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:11526
+#: Marlin_main.cpp:11718
 msgid "Press knob to preheat nozzle and continue."
 msgstr "Pulsa el dial para precalentar la boquilla y continue."
 
 # MSG_FS_PAUSE c=5
-#: fsensor.cpp:710
+#: fsensor.cpp:728
 msgid "Pause"
 msgstr "Pausa"
 
-# 
-#: ultralcd.cpp:1783
+# MSG_POWER_FAILURES c=14
+#: messages.c:75
 msgid "Power failures"
 msgstr "Cortes de energia"
 
 # MSG_PRINT_ABORTED c=20
-#: messages.c:65
+#: messages.c:78
 msgid "Print aborted"
 msgstr "Impresion cancelada"
 
 #  c=20
-#: ultralcd.cpp:2442
+#: ultralcd.cpp:2390
 msgid "Preheating to load"
 msgstr "Precalent. cargar"
 
 #  c=20
-#: ultralcd.cpp:2446
+#: ultralcd.cpp:2395
 msgid "Preheating to unload"
 msgstr "Precalent. descargar"
 
 # MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:8689
+#: ultralcd.cpp:8401
 msgid "Print fan:"
 msgstr "Vent.fusor:"
 
 # MSG_CARD_MENU
-#: messages.c:20
+#: messages.c:21
 msgid "Print from SD"
 msgstr "Menu tarjeta SD"
 
 # 
-#: ultralcd.cpp:2289
+#: ultralcd.cpp:2231
 msgid "Press the knob"
 msgstr "Pulsa el dial"
 
 # MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1118
+#: ultralcd.cpp:1065
 msgid "Print paused"
 msgstr "Impresion en pausa"
 
 # 
-#: mmu.cpp:726
+#: mmu.cpp:725
 msgid "Press the knob to resume nozzle temperature."
 msgstr "Presiona el dial para continuar con la temperatura de la boquilla."
 
 # MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
-#: messages.c:38
+#: messages.c:45
 msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
 msgstr "Impresora no esta calibrada todavia. Por favor usa el manual capitulo Primeros pasos Calibracion flujo."
 
 # 
-#: ultralcd.cpp:1655
+#: ultralcd.cpp:1601
 msgid "Print FAN"
 msgstr "Vent. extr"
 
 # 
-#: ultralcd.cpp:4926
+#: ultralcd.cpp:4827
 msgid "Please insert filament into the extruder, then press the knob to load it."
 msgstr "Por favor, coloca el filamento en el extrusor, luego presiona el dial para cargarlo."
 
 # 
-#: ultralcd.cpp:4921
+#: ultralcd.cpp:4822
 msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
 msgstr "Por favor, coloca el filamento en el primer tubo de la MMU, luego pulsa el dial para cargarlo."
 
 # 
-#: ultralcd.cpp:4843
+#: ultralcd.cpp:4744
 msgid "Please load filament first."
 msgstr "Por favor, cargar primero el filamento. "
 
 # MSG_PRUSA3D
-#: ultralcd.cpp:2155
+#: ultralcd.cpp:2104
 msgid "prusa3d.com"
 msgstr "prusa3d.es"
 
 # MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3267
+#: ultralcd.cpp:3191
 msgid "Rear side [um]"
 msgstr "Trasera [um]"
 
 #  c=20 r=4
-#: ultralcd.cpp:7549
+#: ultralcd.cpp:7304
 msgid "Please unload the filament first, then repeat this action."
 msgstr "Primero descargue el filamento, luego repita esta accion."
 
+#  c=20 r=4
+#: ultralcd.cpp:7307
+msgid "Please check the IR sensor connection, unload filament if present."
+msgstr "Por favor comprueba la conexion del IR sensor y filamento esta descargado."
+
 # MSG_RECOVERING_PRINT c=20
-#: Marlin_main.cpp:10883
+#: Marlin_main.cpp:11076
 msgid "Recovering print    "
 msgstr "Recuper. impresion  "
 
 # MSG_REMOVE_OLD_FILAMENT c=20 r=5
-#: mmu.cpp:833
+#: mmu.cpp:832
 msgid "Remove old filament and press the knob to start loading new filament."
 msgstr "Retire el filamento viejo y presione el dial para comenzar a cargar el nuevo filamento."
 
@@ -1151,102 +1166,102 @@ msgid "Prusa i3 MK3S OK."
 msgstr ""
 
 # MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5867
+#: ultralcd.cpp:5808
 msgid "Reset XYZ calibr."
 msgstr ""
 
-# MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3268
+# MSG_RESET c=14
+#: messages.c:83
 msgid "Reset"
 msgstr ""
 
-# MSG_RESUME_PRINT
-#: ultralcd.cpp:6861
+# MSG_RESUME_PRINT c=18
+#: messages.c:84
 msgid "Resume print"
 msgstr "Reanudar impres."
 
 # MSG_RESUMING_PRINT c=20
-#: messages.c:69
+#: messages.c:85
 msgid "Resuming print"
 msgstr "Continuan. impresion"
 
 # MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3265
+#: ultralcd.cpp:3189
 msgid "Right side[um]"
 msgstr "Derecha [um]"
 
 # MSG_RPI_PORT
-#: messages.c:123
+#: messages.c:142
 msgid "RPi port"
 msgstr "Puerto RPi"
 
 # MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4864
+#: ultralcd.cpp:4765
 msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
 msgstr "Ejecutar el Wizard borrara los valores de calibracion actuales y comenzara de nuevo. Continuar?"
 
 # MSG_SD_CARD
-#: messages.c:118
+#: messages.c:137
 msgid "SD card"
 msgstr "Tarj. SD"
 
 # MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
-#: messages.c:119
+#: messages.c:138
 msgid "FlashAir"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2994
+#: ultralcd.cpp:2920
 msgid "Right"
 msgstr "Derecha"
 
 # MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: messages.c:35
+#: messages.c:42
 msgid "Searching bed calibration point"
 msgstr "Buscando punto de calibracion base"
 
 # MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5779
+#: ultralcd.cpp:5721
 msgid "Select language"
 msgstr "Cambiar el idioma"
 
 # MSG_SELFTEST_OK
-#: ultralcd.cpp:7812
+#: ultralcd.cpp:7579
 msgid "Self test OK"
 msgstr ""
 
 # MSG_SELFTEST_START c=20
-#: ultralcd.cpp:7582
+#: ultralcd.cpp:7347
 msgid "Self test start  "
 msgstr "Iniciar Selftest"
 
 # MSG_SELFTEST
-#: ultralcd.cpp:5843
+#: ultralcd.cpp:5784
 msgid "Selftest         "
 msgstr ""
 
 # MSG_SELFTEST_ERROR
-#: ultralcd.cpp:8255
+#: ultralcd.cpp:8021
 msgid "Selftest error !"
 msgstr "Error Selftest !"
 
 # MSG_SELFTEST_FAILED c=20
-#: messages.c:73
+#: messages.c:88
 msgid "Selftest failed  "
 msgstr "Fallo Selftest"
 
 # MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1550
+#: Marlin_main.cpp:1613
 msgid "Selftest will be run to calibrate accurate sensorless rehoming."
 msgstr "Se realizara el auto-test para calibrar con precision la vuelta a la posicion inicial sin sensores."
 
 # 
-#: ultralcd.cpp:5102
+#: ultralcd.cpp:5003
 msgid "Select nozzle preheat temperature which matches your material."
 msgstr "Selecciona la temperatura para precalentar la boquilla que se ajuste a tu material. "
 
 # MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3286
+#: ultralcd.cpp:3209
 msgid "Set temperature:"
 msgstr "Establecer temp.:"
 
@@ -1266,187 +1281,187 @@ msgid "Prusa i3 MK3 OK."
 msgstr ""
 
 # MSG_SETTINGS
-#: messages.c:82
+#: messages.c:97
 msgid "Settings"
 msgstr "Configuracion"
 
 # MSG_SHOW_END_STOPS c=18
-#: ultralcd.cpp:5864
+#: ultralcd.cpp:5805
 msgid "Show end stops"
 msgstr "Mostrar endstops"
 
 # 
-#: ultralcd.cpp:4008
+#: ultralcd.cpp:3915
 msgid "Sensor state"
 msgstr "Estado del sensor"
 
 # MSG_FILE_CNT c=20 r=6
-#: cardreader.cpp:738
+#: cardreader.cpp:739
 msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
 msgstr "Algunos archivos no se ordenaran. Maximo 100 archivos por carpeta para ordenar. "
 
 # MSG_SORT
-#: messages.c:120
+#: messages.c:139
 msgid "Sort"
 msgstr "Ordenar"
 
 # MSG_NONE
-#: messages.c:110
+#: messages.c:127
 msgid "None"
 msgstr "Ninguno"
 
 # MSG_SORT_TIME
-#: messages.c:121
+#: messages.c:140
 msgid "Time"
 msgstr "Fecha"
 
 # 
-#: ultralcd.cpp:3037
+#: ultralcd.cpp:2963
 msgid "Severe skew:"
 msgstr "Incl.severa:"
 
 # MSG_SORT_ALPHA
-#: messages.c:122
+#: messages.c:141
 msgid "Alphabet"
 msgstr "Alfabet"
 
 # MSG_SORTING c=20 r=1
-#: cardreader.cpp:745
+#: cardreader.cpp:746
 msgid "Sorting files"
 msgstr "Ordenando archivos"
 
 # MSG_SOUND_LOUD
-#: messages.c:125
+#: messages.c:144
 msgid "Loud"
 msgstr "Alto"
 
 # 
-#: ultralcd.cpp:3036
+#: ultralcd.cpp:2962
 msgid "Slight skew:"
 msgstr "Liger.incl.:"
 
 # MSG_SOUND
-#: messages.c:124
+#: messages.c:143
 msgid "Sound"
 msgstr "Sonido"
 
 #  c=7
-#: ultralcd.cpp:1822
+#: ultralcd.cpp:1768
 msgid "Runouts"
 msgstr ""
 
 # 
-#: Marlin_main.cpp:5101
+#: Marlin_main.cpp:5280
 msgid "Some problem encountered, Z-leveling enforced ..."
 msgstr "Problema encontrado, nivelacion Z forzosa ..."
 
 # MSG_SOUND_ONCE
-#: messages.c:126
+#: messages.c:145
 msgid "Once"
 msgstr "Una vez"
 
 # MSG_SPEED
-#: ultralcd.cpp:7119
+#: ultralcd.cpp:6874
 msgid "Speed"
 msgstr "Velocidad"
 
 # MSG_SELFTEST_FAN_YES c=19
-#: messages.c:76
+#: messages.c:91
 msgid "Spinning"
 msgstr "Ventilador girando"
 
 # MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4596
+#: Marlin_main.cpp:4779
 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
 msgstr "Se necesita una temperatura ambiente ente 21 y 26C y un soporte rigido."
 
 # MSG_STATISTICS
-#: ultralcd.cpp:6978
+#: ultralcd.cpp:6733
 msgid "Statistics  "
 msgstr "Estadisticas "
 
 # MSG_STOP_PRINT
-#: messages.c:91
+#: messages.c:108
 msgid "Stop print"
 msgstr "Detener impresion"
 
 # MSG_STOPPED
-#: messages.c:92
+#: messages.c:109
 msgid "STOPPED. "
 msgstr "PARADA"
 
 # MSG_SUPPORT
-#: ultralcd.cpp:6987
+#: ultralcd.cpp:6742
 msgid "Support"
 msgstr "Soporte"
 
 # MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:8335
+#: ultralcd.cpp:8080
 msgid "Swapped"
 msgstr "Intercambiado"
 
 # 
-#: ultralcd.cpp:4814
+#: ultralcd.cpp:4715
 msgid "Select filament:"
 msgstr "Selecciona filamento:"
 
 # MSG_TEMP_CALIBRATION c=14
-#: messages.c:93
+#: messages.c:110
 msgid "Temp. cal."
 msgstr "Cal. temp."
 
 # 
-#: ultralcd.cpp:4955
+#: ultralcd.cpp:4856
 msgid "Select temperature which matches your material."
 msgstr "Selecciona la temperatura adecuada a tu material."
 
 # MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5873
+#: ultralcd.cpp:5816
 msgid "Temp. calibration"
 msgstr "Calibracion temp."
 
 # MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3933
+#: ultralcd.cpp:3845
 msgid "Temperature calibration failed"
 msgstr "Fallo de la calibracion de temperatura"
 
 # MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:94
+#: messages.c:111
 msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
 msgstr "Calibracion temperatura terminada. Haz clic para continuar."
 
 #  c=20 r=3
-#: ultralcd.cpp:7554
+#: ultralcd.cpp:7311
 msgid "Sensor verified, remove the filament now."
 msgstr "Sensor verificado, retire el filamento ahora."
 
 # MSG_TEMPERATURE
-#: ultralcd.cpp:5739
+#: ultralcd.cpp:5679
 msgid "Temperature"
 msgstr "Temperatura"
 
 # MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2218
+#: ultralcd.cpp:2160
 msgid "Temperatures"
 msgstr "Temperaturas"
 
 # MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
-#: messages.c:39
+#: messages.c:46
 msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
 msgstr "Todavia es necesario hacer una calibracion Z. Por favor siga el manual, capitulo Primeros pasos, seccion Calibracion del flujo."
 
 # 
-#: ultralcd.cpp:2891
+#: ultralcd.cpp:2817
 msgid "Total filament"
 msgstr "Filamento total"
 
 # 
-#: ultralcd.cpp:2892
+#: ultralcd.cpp:2818
 msgid "Total print time"
 msgstr "Tiempo total"
 
 # MSG_TUNE
-#: ultralcd.cpp:6850
+#: ultralcd.cpp:6612
 msgid "Tune"
 msgstr "Ajustar"
 
@@ -1455,63 +1470,63 @@ msgstr "Ajustar"
 msgid "Unload"
 msgstr "Descargar"
 
-# 
-#: ultralcd.cpp:1752
+# MSG_TOTAL_FAILURES c=20
+#: messages.c:99
 msgid "Total failures"
 msgstr "Fallos totales"
 
 # 
-#: ultralcd.cpp:2296
+#: ultralcd.cpp:2238
 msgid "to load filament"
 msgstr "para cargar el filamento"
 
 # 
-#: ultralcd.cpp:2300
+#: ultralcd.cpp:2242
 msgid "to unload filament"
 msgstr "para descargar el filamento"
 
 # MSG_UNLOAD_FILAMENT c=17
-#: messages.c:95
+#: messages.c:112
 msgid "Unload filament"
 msgstr "Soltar filamento"
 
 # MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:96
+#: messages.c:113
 msgid "Unloading filament"
 msgstr "Soltando filamento"
 
-# 
-#: ultralcd.cpp:1705
+# MSG_TOTAL c=6
+#: messages.c:98
 msgid "Total"
 msgstr ""
 
 # MSG_USED c=19 r=1
-#: ultralcd.cpp:6001
+#: ultralcd.cpp:5932
 msgid "Used during print"
 msgstr "Usado en impresion"
 
 # MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2221
+#: ultralcd.cpp:2163
 msgid "Voltages"
 msgstr "Voltajes"
 
 # 
-#: ultralcd.cpp:2194
+#: ultralcd.cpp:2132
 msgid "unknown"
 msgstr "desconocido"
 
 # MSG_USERWAIT
-#: Marlin_main.cpp:5511
+#: Marlin_main.cpp:5689
 msgid "Wait for user..."
 msgstr "Esperando ordenes"
 
 # MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3434
+#: ultralcd.cpp:3357
 msgid "Waiting for nozzle and bed cooling"
 msgstr "Esperando enfriamiento de la base y extrusor."
 
 # MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3395
+#: ultralcd.cpp:3318
 msgid "Waiting for PINDA probe cooling"
 msgstr "Esperando a que se enfrie la sonda PINDA"
 
@@ -1521,37 +1536,37 @@ msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU t
 msgstr "Usa unload para retirar el filamento 1 si sobresale por fuera de la parte trasera del tubo MMU. Usa Expulsar si esta escondido dentro del tubo"
 
 # MSG_CHANGED_BOTH c=20 r=4
-#: Marlin_main.cpp:1510
+#: Marlin_main.cpp:1573
 msgid "Warning: both printer type and motherboard type changed."
 msgstr "Aviso: tanto el tipo de impresora como el tipo de la placa han cambiado."
 
 # MSG_CHANGED_MOTHERBOARD c=20 r=4
-#: Marlin_main.cpp:1502
+#: Marlin_main.cpp:1565
 msgid "Warning: motherboard type changed."
 msgstr "Cuidado: el tipo de placa ha cambiado."
 
 # MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1506
+#: Marlin_main.cpp:1569
 msgid "Warning: printer type changed."
 msgstr "Cuidado: Ha cambiado el tipo de impresora."
 
 # MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3128
+#: Marlin_main.cpp:3308
 msgid "Was filament unload successful?"
 msgstr "?Se cargocon exito el filamento?"
 
 # MSG_SELFTEST_WIRINGERROR
-#: messages.c:81
+#: messages.c:96
 msgid "Wiring error"
 msgstr "Error de conexion"
 
 # MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5834
+#: ultralcd.cpp:5775
 msgid "Wizard"
 msgstr ""
 
 # MSG_XYZ_DETAILS c=18
-#: ultralcd.cpp:2210
+#: ultralcd.cpp:2152
 msgid "XYZ cal. details"
 msgstr "Detalles cal. XYZ"
 
@@ -1561,182 +1576,177 @@ msgid "XYZ calibration failed. Please consult the manual."
 msgstr "Calibracion XYZ fallada. Consulta el manual por favor."
 
 # MSG_YES
-#: messages.c:102
+#: messages.c:119
 msgid "Yes"
 msgstr "Si"
 
 # MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:101
+#: messages.c:118
 msgid "You can always resume the Wizard from Calibration -> Wizard."
 msgstr "Siempre puedes acceder al asistente desde Calibracion -> Wizard"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
-#: ultralcd.cpp:3904
+#: ultralcd.cpp:3817
 msgid "XYZ calibration all right. Skew will be corrected automatically."
 msgstr "Calibracion XYZ correcta. La inclinacion se corregira automaticamente."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
-#: ultralcd.cpp:3901
+#: ultralcd.cpp:3814
 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
 msgstr "Calibracion XYZ correcta. Los ejes X / Y estan ligeramente inclinados. Buen trabajo!"
 
 # MSG_TIMEOUT c=12
-#: messages.c:137
+#: messages.c:157
 msgid "Timeout"
 msgstr "Expirar"
 
 # MSG_X_CORRECTION c=13
-#: ultralcd.cpp:5190
+#: ultralcd.cpp:5091
 msgid "X-correct:"
 msgstr "Corregir-X:"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3898
+#: ultralcd.cpp:3811
 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
 msgstr "Calibracion XYZ ok. Ejes X/Y perpendiculares. Enhorabuena!"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
-#: ultralcd.cpp:3882
+#: ultralcd.cpp:3795
 msgid "XYZ calibration compromised. Front calibration points not reachable."
 msgstr "Calibrazion XYZ comprometida. Puntos frontales no alcanzables."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3885
+#: ultralcd.cpp:3798
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "Calibrazion XYZ comprometida. Punto frontal derecho no alcanzable."
 
 # MSG_LOAD_ALL c=17
-#: ultralcd.cpp:6261
+#: ultralcd.cpp:6171
 msgid "Load all"
 msgstr "Intr. todos fil."
 
 # 
-#: ultralcd.cpp:3864
+#: ultralcd.cpp:3777
 msgid "XYZ calibration failed. Bed calibration point was not found."
 msgstr "Calibracion XYZ fallada. Puntos de calibracion en la base no encontrados."
 
 # 
-#: ultralcd.cpp:3870
+#: ultralcd.cpp:3783
 msgid "XYZ calibration failed. Front calibration points not reachable."
 msgstr "Calibracion XYZ fallada. Puntos frontales no alcanzables."
 
 # 
-#: ultralcd.cpp:3873
+#: ultralcd.cpp:3786
 msgid "XYZ calibration failed. Right front calibration point not reachable."
 msgstr "Calibracion XYZ fallad. Punto frontal derecho no alcanzable."
 
 # 
-#: ultralcd.cpp:2991
+#: ultralcd.cpp:2917
 msgid "Y distance from min"
 msgstr "Distancia en Y desde el min"
 
 # 
-#: ultralcd.cpp:4958
+#: ultralcd.cpp:4859
 msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
 msgstr "La impresora comenzara a imprimir una linea en zig-zag. Gira el dial hasta que la linea alcance la altura optima. Mira las fotos del manual (Capitulo de calibracion)."
 
 #  c=20 r=5
-#: ultralcd.cpp:7558
+#: ultralcd.cpp:7315
 msgid "Verification failed, remove the filament and try again."
 msgstr "La verificacion fallo, retire el filamento e intente nuevamente."
 
 # MSG_Y_CORRECTION c=13
-#: ultralcd.cpp:5191
+#: ultralcd.cpp:5092
 msgid "Y-correct:"
 msgstr "Corregir-Y:"
 
 # MSG_OFF
-#: messages.c:105
+#: messages.c:122
 msgid "Off"
 msgstr "Ina"
 
 # MSG_ON
-#: messages.c:106
+#: messages.c:123
 msgid "On"
 msgstr "Act"
 
 # 
-#: messages.c:53
+#: messages.c:62
 msgid "Back"
 msgstr "atras"
 
 # 
-#: ultralcd.cpp:5724
+#: ultralcd.cpp:5647
 msgid "Checks"
 msgstr "Comprobaciones"
 
 # 
-#: ultralcd.cpp:8349
+#: ultralcd.cpp:8090
 msgid "False triggering"
 msgstr "Falsa activacion"
 
 # 
-#: ultralcd.cpp:4013
+#: ultralcd.cpp:3920
 msgid "FINDA:"
 msgstr "FINDA:"
 
 # MSG_FIRMWARE
-#: language.h:23
+#: language.h:24
 msgid "Firmware"
 msgstr ""
 
 # MSG_STRICT
-#: messages.c:112
+#: messages.c:129
 msgid "Strict"
 msgstr "Estrict"
 
 # MSG_WARN
-#: messages.c:111
+#: messages.c:128
 msgid "Warn"
 msgstr "Aviso"
 
-# 
-#: messages.c:83
+# MSG_HW_SETUP c=18
+#: messages.c:100
 msgid "HW Setup"
 msgstr "Configuracion HW"
 
 # 
-#: ultralcd.cpp:4017
+#: ultralcd.cpp:3924
 msgid "IR:"
 msgstr ""
 
 # MSG_MAGNETS_COMP
-#: messages.c:130
+#: messages.c:150
 msgid "Magnets comp."
 msgstr "Comp. imanes"
 
 # MSG_MESH
-#: messages.c:128
+#: messages.c:147
 msgid "Mesh"
 msgstr "Malla"
 
 # 
-#: ultralcd.cpp:5763
-msgid "Mesh bed leveling"
-msgstr "Nivelacion Malla Base"
-
-# 
-#: Marlin_main.cpp:872
+#: Marlin_main.cpp:927
 msgid "MK3S firmware detected on MK3 printer"
 msgstr "Firmware MK3S detectado en impresora MK3"
 
 # MSG_MMU_MODE
-#: messages.c:117
+#: messages.c:136
 msgid "MMU Mode"
 msgstr "Modo MMU"
 
 # 
-#: ultralcd.cpp:4494
+#: ultralcd.cpp:4395
 msgid "Mode change in progress ..."
 msgstr "Cambio de modo progresando ..."
 
 # MSG_MODEL
-#: messages.c:113
+#: messages.c:130
 msgid "Model"
 msgstr "Modelo"
 
 # MSG_NOZZLE_DIAMETER
-#: messages.c:116
+#: messages.c:135
 msgid "Nozzle d."
 msgstr "Diam. nozzl"
 
@@ -1750,13 +1760,13 @@ msgstr "Codigo G laminado para un nivel diferente. ?Continuar?"
 msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
 msgstr "Codigo G laminado para un nivel diferente. Por favor relamina el modelo de nuevo. Impresion cancelada."
 
-# 
-#: util.cpp:431
+# MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5
+#: messages.c:133
 msgid "G-code sliced for a different printer type. Continue?"
 msgstr "Codigo G laminado para un tipo de impresora diferente. ?Continuar?"
 
-# 
-#: util.cpp:437
+# MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=6
+#: messages.c:134
 msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
 msgstr "Codigo G laminado para una impresora diferente. Por favor relamina el modelo de nuevo. Impresion cancelada."
 
@@ -1771,17 +1781,17 @@ msgid "G-code sliced for a newer firmware. Please update the firmware. Print can
 msgstr "Codigo G laminado para nuevo firmware. Por favor actualiza el firmware. Impresion cancelada."
 
 # 
-#: ultralcd.cpp:4009
+#: ultralcd.cpp:3916
 msgid "PINDA:"
 msgstr "PINDA:"
 
 #  c=20
-#: ultralcd.cpp:2452
+#: ultralcd.cpp:2402
 msgid "Preheating to cut"
 msgstr "Precalent. laminar"
 
 #  c=20
-#: ultralcd.cpp:2449
+#: ultralcd.cpp:2399
 msgid "Preheating to eject"
 msgstr "Precalent. expulsar"
 
@@ -1796,47 +1806,47 @@ msgid "Printer nozzle diameter differs from the G-code. Please check the value i
 msgstr "Diametro nozzle Impresora difiere de cod.G. Comprueba los valores en ajustes. Impresion cancelada."
 
 #  c=20
-#: ultralcd.cpp:8355
+#: ultralcd.cpp:8095
 msgid "%s level expected"
 msgstr ""
 
 # 
-#: ultralcd.cpp:6814
+#: ultralcd.cpp:6574
 msgid "Rename"
 msgstr "Renombrar"
 
 # 
-#: ultralcd.cpp:6807
+#: ultralcd.cpp:6567
 msgid "Select"
 msgstr "Seleccionar"
 
 # 
-#: ultralcd.cpp:2212
+#: ultralcd.cpp:2154
 msgid "Sensor info"
 msgstr "Info sensor"
 
 # MSG_SHEET c=10
-#: messages.c:54
+#: messages.c:63
 msgid "Sheet"
 msgstr "Lamina"
 
 # MSG_SOUND_BLIND
-#: messages.c:127
+#: messages.c:146
 msgid "Assist"
 msgstr "Asistido"
 
-#  c=18
-#: ultralcd.cpp:5722
+# MSG_STEEL_SHEET c=18
+#: messages.c:64
 msgid "Steel sheets"
 msgstr "Lamina de acero"
 
 # MSG_Z_CORRECTION c=13
-#: ultralcd.cpp:5192
+#: ultralcd.cpp:5093
 msgid "Z-correct:"
 msgstr "Corregir-Z:"
 
 # MSG_Z_PROBE_NR
-#: messages.c:129
+#: messages.c:149
 msgid "Z-probe nr."
 msgstr "Z-sensor nr."
 

+ 390 - 380
lang/po/Firmware_fr.po

@@ -7,8 +7,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
 "Project-Id-Version: Prusa-Firmware\n"
-"POT-Creation-Date: Wed May 13 17:42:13 CEST 2020\n"
-"PO-Revision-Date: Wed May 13 17:42:13 CEST 2020\n"
+"POT-Creation-Date: Di 26. Jan 11:04:08 CET 2021\n"
+"PO-Revision-Date: Di 26. Jan 11:04:08 CET 2021\n"
 "Language-Team: \n"
 "X-Generator: Poedit 2.0.7\n"
 "X-Poedit-SourceCharset: UTF-8\n"
@@ -20,28 +20,43 @@ msgstr ""
 msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
 msgstr "[%.7s]Ajust. du Z\x0aValeur enreg, contin\x0aou depart a zero?\x0a%cContinuer%cReset"
 
-# MSG_03_OR_OLDER c=18
-#: messages.c:144
+# MSG_IR_03_OR_OLDER c=18
+#: messages.c:164
 msgid " 0.3 or older"
 msgstr " 0.3 ou +ancien"
 
-# MSG_04_OR_NEWER c=18
-#: messages.c:143
+#  c=18
+#: Marlin_main.cpp:9626
+msgid "FS v0.3 or older"
+msgstr "FS v0.3 ou +ancien"
+
+# MSG_IR_04_OR_NEWER c=18
+#: messages.c:163
 msgid " 0.4 or newer"
 msgstr " 0.4 ou +recent"
 
+#  c=18
+#: Marlin_main.cpp:9625
+msgid "FS v0.4 or newer"
+msgstr "FS v0.4 ou +recent"
+
+# MSG_IR_UNKNOWN c=18
+#: messages.c:165
+msgid "unknown state"
+msgstr "Etat inconnu"
+
 # MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
-#: messages.c:36
+#: messages.c:43
 msgid " of 4"
 msgstr " de 4"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:56
+#: messages.c:66
 msgid " of 9"
 msgstr " de 9"
 
 # MSG_MEASURED_OFFSET
-#: ultralcd.cpp:3064
+#: ultralcd.cpp:2988
 msgid "[0;0] point offset"
 msgstr "Offset point [0;0]"
 
@@ -56,47 +71,47 @@ msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
 msgstr "ATTENTION:\x0aDetection de crash\x0adesactivee en\x0amode furtif"
 
 # 
-#: ultralcd.cpp:2460
+#: ultralcd.cpp:2410
 msgid ">Cancel"
 msgstr ">Annuler"
 
 # MSG_BABYSTEPPING_Z c=15
-#: ultralcd.cpp:3184
+#: ultralcd.cpp:3108
 msgid "Adjusting Z:"
 msgstr "Ajuster Z:"
 
 # MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:8677
+#: ultralcd.cpp:8390
 msgid "All correct      "
 msgstr "Tout est correct"
 
 # MSG_WIZARD_DONE c=20 r=8
-#: messages.c:99
+#: messages.c:116
 msgid "All is done. Happy printing!"
 msgstr "Tout est pret. Bonne impression!"
 
 # 
-#: ultralcd.cpp:1956
+#: ultralcd.cpp:1902
 msgid "Ambient"
 msgstr "Ambiant"
 
 # MSG_AUTO c=6
-#: messages.c:140
+#: messages.c:160
 msgid "Auto"
 msgstr ""
 
 # MSG_PRESS c=20 r=2
-#: ultralcd.cpp:2609
+#: ultralcd.cpp:2567
 msgid "and press the knob"
 msgstr "et appuyez sur le bouton"
 
 # MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3506
+#: ultralcd.cpp:3429
 msgid "Are left and right Z~carriages all up?"
 msgstr "Z~carriages gauche + droite tout en haut?"
 
 # MSG_AUTO_DEPLETE c=17 r=1
-#: messages.c:108
+#: messages.c:125
 msgid "SpoolJoin"
 msgstr ""
 
@@ -106,32 +121,32 @@ msgid "Auto home"
 msgstr "Mise a 0 des axes"
 
 # MSG_AUTOLOAD_FILAMENT c=18
-#: ultralcd.cpp:6961
+#: ultralcd.cpp:6716
 msgid "AutoLoad filament"
 msgstr "Autocharge du fil."
 
 # MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4445
+#: ultralcd.cpp:4346
 msgid "Autoloading filament available only when filament sensor is turned on..."
 msgstr "Chargement auto du filament uniquement si le capteur de filament est active."
 
 # MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2804
+#: ultralcd.cpp:2730
 msgid "Autoloading filament is active, just press the knob and insert filament..."
 msgstr "Chargement auto. du fil. active, appuyez sur le bouton et inserez le fil."
 
 # MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:8325
+#: ultralcd.cpp:8073
 msgid "Axis length"
 msgstr "Longueur de l'axe"
 
 # MSG_SELFTEST_AXIS
-#: ultralcd.cpp:8327
+#: ultralcd.cpp:8074
 msgid "Axis"
 msgstr "Axe"
 
 # MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:8269
+#: ultralcd.cpp:8031
 msgid "Bed / Heater"
 msgstr "Lit / Chauffage"
 
@@ -146,12 +161,12 @@ msgid "Bed Heating"
 msgstr "Chauffe du lit"
 
 # MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5861
+#: ultralcd.cpp:5802
 msgid "Bed level correct"
 msgstr "Corr. niveau plateau"
 
 # MSG_BELTTEST c=17
-#: ultralcd.cpp:5841
+#: ultralcd.cpp:5782
 msgid "Belt test        "
 msgstr "Test de courroie "
 
@@ -161,12 +176,12 @@ msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for
 msgstr "Capt. non declenche pendant que je nivele le plateau. Debris sur buse? En attente d'un reset."
 
 # MSG_BRIGHT c=6
-#: messages.c:138
+#: messages.c:158
 msgid "Bright"
 msgstr "Brill."
 
 # MSG_BRIGHTNESS c=18
-#: messages.c:134
+#: messages.c:154
 msgid "Brightness"
 msgstr "Luminosite"
 
@@ -175,123 +190,123 @@ msgstr "Luminosite"
 msgid "Bed"
 msgstr "Lit"
 
-# MSG_MENU_BELT_STATUS c=18
-#: ultralcd.cpp:2009
+# MSG_BELT_STATUS c=18
+#: 
 msgid "Belt status"
 msgstr "Statut courroie"
 
 # MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:67
+#: messages.c:80
 msgid "Blackout occurred. Recover print?"
 msgstr "Coupure detectee. Reprendre impression?"
 
 # 
-#: ultralcd.cpp:8679
+#: ultralcd.cpp:8392
 msgid "Calibrating home"
 msgstr "Calib. mise a 0"
 
 # MSG_CALIBRATE_BED
-#: ultralcd.cpp:5850
+#: ultralcd.cpp:5791
 msgid "Calibrate XYZ"
 msgstr "Calibrer XYZ"
 
 # MSG_HOMEYZ
-#: messages.c:44
+#: messages.c:51
 msgid "Calibrate Z"
 msgstr "Calibrer Z"
 
 # MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4637
+#: ultralcd.cpp:4538
 msgid "Calibrate"
 msgstr "Calibrer"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3469
+#: ultralcd.cpp:3392
 msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr "Calibration de XYZ. Tournez le bouton pour faire monter l'extrudeur dans l'axe Z jusqu'aux butees. Cliquez une fois fait."
 
 # MSG_CALIBRATE_Z_AUTO c=20 r=2
-#: messages.c:19
+#: messages.c:20
 msgid "Calibrating Z"
 msgstr "Calibration Z"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3469
+#: ultralcd.cpp:3392
 msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr "Calibration de Z. Tournez le bouton pour faire monter l'extrudeur dans l'axe Z jusqu'aux butees. Cliquez une fois fait."
 
 # MSG_HOMEYZ_DONE
-#: ultralcd.cpp:865
+#: ultralcd.cpp:813
 msgid "Calibration done"
 msgstr "Calibration terminee"
 
 # MSG_MENU_CALIBRATION
-#: messages.c:57
+#: messages.c:67
 msgid "Calibration"
 msgstr ""
 
 # 
-#: ultralcd.cpp:4815
+#: ultralcd.cpp:4716
 msgid "Cancel"
 msgstr "Annuler"
 
 # MSG_SD_REMOVED
-#: ultralcd.cpp:9090
+#: ultralcd.cpp:8842
 msgid "Card removed"
 msgstr "Carte retiree"
 
 # MSG_NOT_COLOR
-#: ultralcd.cpp:2709
+#: ultralcd.cpp:2647
 msgid "Color not correct"
 msgstr "Couleur incorrecte"
 
 # MSG_COOLDOWN
-#: messages.c:22
+#: messages.c:25
 msgid "Cooldown"
 msgstr "Refroidissement"
 
 # 
-#: ultralcd.cpp:4570
+#: ultralcd.cpp:4471
 msgid "Copy selected language?"
 msgstr "Copier la langue choisie?"
 
 # MSG_CRASHDETECT c=13
-#: messages.c:24
+#: messages.c:28
 msgid "Crash det."
 msgstr "Detect.crash"
 
 # 
-#: ultralcd.cpp:4950
+#: ultralcd.cpp:4851
 msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
 msgstr "Choisissez un filament pour la Calibration de la Premiere Couche et selectionnez-le depuis le menu a l'ecran."
 
 # MSG_CRASH_DETECTED c=20 r=1
-#: messages.c:23
+#: messages.c:27
 msgid "Crash detected."
 msgstr "Crash detecte."
 
 # 
-#: Marlin_main.cpp:607
+#: Marlin_main.cpp:657
 msgid "Crash detected. Resume print?"
 msgstr "Crash detecte. Poursuivre l'impression?"
 
-# 
-#: ultralcd.cpp:1785
+# MSG_CRASH c=7
+#: messages.c:26
 msgid "Crash"
 msgstr ""
 
 # MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:6002
+#: ultralcd.cpp:5933
 msgid "Current"
 msgstr "Actuel"
 
 # MSG_DATE c=17 r=1
-#: ultralcd.cpp:2163
+#: ultralcd.cpp:2112
 msgid "Date:"
 msgstr "Date:"
 
 # MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5743
+#: ultralcd.cpp:5683
 msgid "Disable steppers"
 msgstr "Desactiver moteurs"
 
@@ -301,377 +316,372 @@ msgid "Distance between tip of the nozzle and the bed surface has not been set y
 msgstr "La distance entre la pointe de la buse et la surface du plateau n'a pas encore ete reglee. Suivez le manuel, chapitre Premiers pas, section Calibration de la premiere couche."
 
 # MSG_FS_CONTINUE c=5
-#: messages.c:132
+#: messages.c:152
 msgid "Cont."
 msgstr ""
 
 # MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:5125
+#: ultralcd.cpp:5026
 msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
 msgstr "Voulez-vous refaire l'etape pour reajuster la hauteur entre la buse et le plateau chauffant?"
 
 # MSG_EXTRUDER_CORRECTION c=13
-#: ultralcd.cpp:5194
+#: ultralcd.cpp:5095
 msgid "E-correct:"
 msgstr "Correct-E:"
 
-# MSG_EJECT_FILAMENT c=17 r=1
-#: messages.c:49
+# MSG_EJECT_FILAMENT c=16
+#: messages.c:58
 msgid "Eject filament"
 msgstr "Remonter le fil."
 
 # MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1416
+#: mmu.cpp:1414
 msgid "Ejecting filament"
 msgstr "Le fil. remonte"
 
 # MSG_SELFTEST_ENDSTOP_NOTHIT c=20
-#: ultralcd.cpp:8293
+#: ultralcd.cpp:8049
 msgid "Endstop not hit"
 msgstr "Butee non atteinte"
 
 # MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:8287
+#: ultralcd.cpp:8044
 msgid "Endstop"
 msgstr "Butee"
 
 # MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:8275
+#: ultralcd.cpp:8035
 msgid "Endstops"
 msgstr "Butees"
 
 # MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6998
+#: ultralcd.cpp:6753
 msgid "Error - static memory has been overwritten"
 msgstr "Erreur - la memoire statique a ete ecrasee"
 
 # MSG_CUT_FILAMENT c=16
-#: messages.c:50
+#: messages.c:59
 msgid "Cut filament"
 msgstr "Coupe filament"
 
 # MSG_CUTTER c=9
-#: messages.c:109
+#: messages.c:126
 msgid "Cutter"
 msgstr "Coupeur"
 
 #  c=18
-#: mmu.cpp:1388
+#: mmu.cpp:1386
 msgid "Cutting filament"
 msgstr "Je coupe filament"
 
 # MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4458
+#: ultralcd.cpp:4359
 msgid "ERROR: Filament sensor is not responding, please check connection."
 msgstr "ERREUR: Le capteur de filament ne repond pas, verifiez le branchement."
 
 # MSG_DIM c=6
-#: messages.c:139
+#: messages.c:159
 msgid "Dim"
 msgstr ""
 
 # MSG_ERROR
-#: messages.c:25
+#: messages.c:29
 msgid "ERROR:"
 msgstr "ERREUR:"
 
 # MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:8686
+#: ultralcd.cpp:8398
 msgid "Extruder fan:"
 msgstr "Ventilo extrudeur:"
 
 # MSG_INFO_EXTRUDER c=18
-#: ultralcd.cpp:2211
+#: ultralcd.cpp:2153
 msgid "Extruder info"
 msgstr "Infos extrudeur"
 
-# MSG_MOVE_E
-#: messages.c:26
+# MSG_EXTRUDER c=17
+#: messages.c:30
 msgid "Extruder"
 msgstr "Extrudeur"
 
 # 
-#: ultralcd.cpp:6985
+#: ultralcd.cpp:6740
 msgid "Fail stats MMU"
 msgstr "Stat. d'echec MMU"
 
 # MSG_FSENSOR_AUTOLOAD c=13
-#: messages.c:40
+#: messages.c:47
 msgid "F. autoload"
 msgstr "F. autocharg."
 
 # 
-#: ultralcd.cpp:6982
+#: ultralcd.cpp:6737
 msgid "Fail stats"
 msgstr "Stat. d'echec"
 
 # MSG_FAN_SPEED c=14
-#: messages.c:28
+#: messages.c:34
 msgid "Fan speed"
 msgstr "Vitesse vent."
 
 # MSG_SELFTEST_FAN c=20
-#: messages.c:74
+#: messages.c:89
 msgid "Fan test"
 msgstr "Test du ventilateur"
 
-# MSG_FANS_CHECK
-#: ultralcd.cpp:5751
+# MSG_FANS_CHECK c=13
+#: messages.c:31
 msgid "Fans check"
 msgstr "Verif vent."
 
 # MSG_FSENSOR
-#: messages.c:41
+#: messages.c:48
 msgid "Fil. sensor"
 msgstr "Capteur Fil."
 
-#  c=14
-#: ultralcd.cpp:1784
-msgid "Filam. runouts"
-msgstr "Fins filament"
+# MSG_FIL_RUNOUTS c=14
+#: 
+msgid "Fil. runouts  "
+msgstr "Fins filament "
 
 # MSG_FILAMENT_CLEAN c=20 r=2
-#: messages.c:29
+#: messages.c:35
 msgid "Filament extruding & with correct color?"
 msgstr "Filament extrude et avec bonne couleur?"
 
 # MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2705
+#: ultralcd.cpp:2646
 msgid "Filament not loaded"
 msgstr "Filament non charge"
 
 # MSG_FILAMENT_SENSOR c=20
-#: messages.c:80
+#: messages.c:95
 msgid "Filament sensor"
 msgstr "Capteur de filament"
 
 # MSG_FILAMENT_USED c=19
-#: ultralcd.cpp:2869
+#: ultralcd.cpp:2795
 msgid "Filament used"
 msgstr "Filament utilise"
 
 # MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2870
+#: ultralcd.cpp:2796
 msgid "Print time"
 msgstr "Temps d'impression"
 
 # MSG_FS_ACTION c=10
-#: messages.c:131
+#: messages.c:151
 msgid "FS Action"
 msgstr ""
 
-#  c=18
-#: Marlin_main.cpp:9512
-msgid "FS v0.4 or newer"
-msgstr "FS v0.4 ou +recent"
-
 # MSG_FILE_INCOMPLETE c=20 r=3
-#: ultralcd.cpp:8814
+#: ultralcd.cpp:8540
 msgid "File incomplete. Continue anyway?"
 msgstr "Fichier incomplet. Continuer qd meme?"
 
 # MSG_FINISHING_MOVEMENTS c=20
-#: messages.c:37
+#: messages.c:44
 msgid "Finishing movements"
 msgstr "Mouvement final"
 
 # MSG_V2_CALIBRATION c=18
-#: messages.c:103
+#: messages.c:120
 msgid "First layer cal."
 msgstr "Cal. 1ere couche"
 
 # MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:5046
+#: ultralcd.cpp:4947
 msgid "First, I will run the selftest to check most common assembly problems."
 msgstr "D'abord, je vais lancer le Auto-test pour verifier les problemes d'assemblage les plus communs."
 
 # 
-#: mmu.cpp:727
+#: mmu.cpp:726
 msgid "Fix the issue and then press button on MMU unit."
 msgstr "Corrigez le probleme et appuyez sur le bouton sur la MMU."
 
 # MSG_FLOW
-#: ultralcd.cpp:7125
+#: ultralcd.cpp:6880
 msgid "Flow"
 msgstr "Flux"
 
 # MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2156
+#: ultralcd.cpp:2105
 msgid "forum.prusa3d.com"
 msgstr ""
 
 # MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:71
+#: messages.c:86
 msgid "Front print fan?"
 msgstr "Ventilo impr avant?"
 
 # MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3266
+#: ultralcd.cpp:3190
 msgid "Front side[um]"
 msgstr "Avant [um]"
 
 # MSG_SELFTEST_FANS
-#: ultralcd.cpp:8333
+#: ultralcd.cpp:8079
 msgid "Front/left fans"
 msgstr "Ventilos avt/gauche"
 
 # MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:8263
+#: ultralcd.cpp:8027
 msgid "Heater/Thermistor"
 msgstr "Chauffage/Thermistor"
 
 # MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:9440
+#: Marlin_main.cpp:9616
 msgid "Heating disabled by safety timer."
 msgstr "Chauffage desactivee par le compteur de securite."
 
 # MSG_HEATING_COMPLETE c=20
-#: messages.c:43
+#: messages.c:50
 msgid "Heating done."
 msgstr "Chauffe terminee."
 
 # MSG_HEATING
-#: messages.c:42
+#: messages.c:49
 msgid "Heating"
 msgstr "Chauffe"
 
 # MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:5025
+#: ultralcd.cpp:4926
 msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
 msgstr "Bonjour, je suis votre imprimante Original Prusa i3. Voulez-vous que je vous guide a travers le processus d'installation?"
 
 # MSG_PRUSA3D_HOWTO
-#: ultralcd.cpp:2157
+#: ultralcd.cpp:2106
 msgid "howto.prusa3d.com"
 msgstr ""
 
 # MSG_FILAMENTCHANGE
-#: messages.c:34
+#: messages.c:41
 msgid "Change filament"
 msgstr "Changer filament"
 
 # MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2620
+#: ultralcd.cpp:2576
 msgid "Change success!"
 msgstr "Changement reussi!"
 
 # MSG_CORRECTLY c=20
-#: ultralcd.cpp:2697
+#: ultralcd.cpp:2644
 msgid "Changed correctly?"
 msgstr "Change correctement?"
 
 # MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:77
+#: messages.c:92
 msgid "Checking bed     "
 msgstr "Verif. plateau chauf"
 
 # MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:8668
+#: ultralcd.cpp:8381
 msgid "Checking endstops"
 msgstr "Verification butees"
 
 # MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:8674
+#: ultralcd.cpp:8387
 msgid "Checking hotend  "
 msgstr "Verif. du hotend"
 
 # MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:78
+#: messages.c:93
 msgid "Checking sensors "
 msgstr "Verif. des capteurs"
 
-# MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:7482
-msgid "Checking X axis  "
+# MSG_CHECKING_X c=20
+#: messages.c:22
+msgid "Checking X axis"
 msgstr "Verification axe X"
 
-# MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:7491
-msgid "Checking Y axis  "
+# MSG_CHECKING_Y c=20
+#: messages.c:23
+msgid "Checking Y axis"
 msgstr "Verification axe Y"
 
 # MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:8671
-msgid "Checking Z axis  "
+#: 
+msgid "Checking Z axis"
 msgstr "Verification axe Z"
 
 # MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:45
+#: messages.c:52
 msgid "Choose extruder:"
 msgstr "Choisir extrudeur:"
 
 # MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:46
+#: messages.c:53
 msgid "Choose filament:"
 msgstr "Choix du filament:"
 
 # MSG_FILAMENT c=17 r=1
-#: messages.c:27
+#: messages.c:33
 msgid "Filament"
 msgstr ""
 
 # MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:5055
+#: ultralcd.cpp:4956
 msgid "I will run xyz calibration now. It will take approx. 12 mins."
 msgstr "Je vais maintenant lancer la calibration XYZ. Cela prendra 12 min environ."
 
 # MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:5063
+#: ultralcd.cpp:4964
 msgid "I will run z calibration now."
 msgstr "Je vais maintenant lancer la calibration Z."
 
 # MSG_WATCH
-#: messages.c:97
+#: messages.c:114
 msgid "Info screen"
 msgstr "Ecran d'info"
 
 # MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2605
+#: ultralcd.cpp:2564
 msgid "Insert filament"
 msgstr "Inserez le filament"
 
-# MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4835
+# MSG_FILAMENT_LOADED c=20 r=2
+#: messages.c:36
 msgid "Is filament loaded?"
 msgstr "Fil. est-il charge?"
 
 # MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:90
+#: messages.c:107
 msgid "Is steel sheet on heatbed?"
 msgstr "Est la plaque sur le plat. chauffant?"
 
-# 
-#: ultralcd.cpp:1727
+# MSG_LAST_PRINT_FAILURES c=20
+#: messages.c:55
 msgid "Last print failures"
 msgstr "Echecs derniere imp."
 
 # 
-#: ultralcd.cpp:5133
+#: ultralcd.cpp:5034
 msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
 msgstr "Si vous avez d'autres feuilles d'acier,  calibrez leurs pre-reglages dans Reglages - Config HW - Plaque en acier."
 
-# 
-#: ultralcd.cpp:1704
+# MSG_LAST_PRINT c=18
+#: messages.c:54
 msgid "Last print"
 msgstr "Derniere impres."
 
 # MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:72
+#: messages.c:87
 msgid "Left hotend fan?"
 msgstr "Ventilo gauche?"
 
 # 
-#: ultralcd.cpp:2993
+#: ultralcd.cpp:2919
 msgid "Left"
 msgstr "Gauche"
 
 # MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3264
+#: ultralcd.cpp:3188
 msgid "Left side [um]"
 msgstr "Gauche [um]"
 
 # 
-#: ultralcd.cpp:5766
+#: ultralcd.cpp:5706
 msgid "Lin. correction"
 msgstr "Correction lin."
 
@@ -681,197 +691,197 @@ msgid "Live adjust Z"
 msgstr "Ajuster Z en dir."
 
 #  c=20 r=6
-#: ultralcd.cpp:7527
+#: ultralcd.cpp:7280
 msgid "Insert the filament (do not load it) into the extruder and then press the knob."
 msgstr "Veuillez inserer le filament ( ne le chargez pas) dans l'extrudeur, puis appuyez sur le bouton."
 
 # MSG_LOAD_FILAMENT c=17
-#: messages.c:47
+#: messages.c:56
 msgid "Load filament"
 msgstr "Charger filament"
 
 # MSG_LOADING_COLOR
-#: ultralcd.cpp:2645
+#: ultralcd.cpp:2598
 msgid "Loading color"
 msgstr "Charg. de la couleur"
 
 # MSG_LOADING_FILAMENT c=20
-#: messages.c:48
+#: messages.c:57
 msgid "Loading filament"
 msgstr "Chargement du fil."
 
 # MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:8317
+#: ultralcd.cpp:8067
 msgid "Loose pulley"
 msgstr "Poulie lache"
 
 # 
-#: ultralcd.cpp:6944
+#: ultralcd.cpp:6699
 msgid "Load to nozzle"
 msgstr "Charger la buse"
 
 # MSG_M117_V2_CALIBRATION c=25
-#: messages.c:51
+#: messages.c:60
 msgid "M117 First layer cal."
 msgstr "M117 Cal. 1ere couche"
 
 # MSG_MAIN
-#: messages.c:52
+#: messages.c:61
 msgid "Main"
 msgstr "Menu principal"
 
 # MSG_BL_HIGH c=12
-#: messages.c:135
+#: messages.c:155
 msgid "Level Bright"
 msgstr "Niveau brill"
 
 # MSG_BL_LOW c=12
-#: messages.c:136
+#: messages.c:156
 msgid "Level Dimmed"
 msgstr ""
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:55
+#: messages.c:65
 msgid "Measuring reference height of calibration point"
 msgstr "Je mesure la hauteur de reference du point de calibrage"
 
-# MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5856
+# MSG_MESH_BED_LEVELING c=18
+#: messages.c:148
 msgid "Mesh Bed Leveling"
 msgstr ""
 
 # MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:765
+#: mmu.cpp:764
 msgid "MMU OK. Resuming position..."
 msgstr "MMU OK. Reprise de la position ..."
 
 # MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:758
+#: mmu.cpp:757
 msgid "MMU OK. Resuming temperature..."
 msgstr "MMU OK. Rechauffage de la buse..."
 
 # 
-#: ultralcd.cpp:3034
+#: ultralcd.cpp:2960
 msgid "Measured skew"
 msgstr "Deviat.mesuree"
 
-# 
-#: ultralcd.cpp:1728
+# MSG_MMU_FAILS c=14
+#: messages.c:68
 msgid "MMU fails"
 msgstr "Echecs MMU"
 
 # 
-#: mmu.cpp:1588
+#: mmu.cpp:1586
 msgid "MMU load failed     "
 msgstr "Echec chargement MMU"
 
-# 
-#: ultralcd.cpp:1729
+# MSG_MMU_LOAD_FAILS c=14
+#: messages.c:69
 msgid "MMU load fails"
 msgstr "Echecs charg. MMU"
 
 # MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:776
+#: mmu.cpp:775
 msgid "MMU OK. Resuming..."
 msgstr "MMU OK. Reprise ..."
 
 # MSG_MODE
-#: messages.c:84
+#: messages.c:101
 msgid "Mode"
 msgstr ""
 
 #  c=20 r=3
-#: Marlin_main.cpp:879
+#: Marlin_main.cpp:934
 msgid "MK3 firmware detected on MK3S printer"
 msgstr "Firmware MK3 detecte sur imprimante MK3S"
 
 # MSG_NORMAL
-#: messages.c:88
+#: messages.c:105
 msgid "Normal"
 msgstr ""
 
 # MSG_SILENT
-#: messages.c:87
+#: messages.c:104
 msgid "Silent"
 msgstr "Furtif"
 
 # 
-#: mmu.cpp:722
+#: mmu.cpp:721
 msgid "MMU needs user attention."
 msgstr "Le MMU necessite l'attention de l'utilisateur."
 
 # 
-#: ultralcd.cpp:1755
+#: ultralcd.cpp:1701
 msgid "MMU power fails"
 msgstr "Echecs alim. MMU"
 
 # MSG_STEALTH
-#: messages.c:89
+#: messages.c:106
 msgid "Stealth"
 msgstr "Furtif"
 
 # MSG_AUTO_POWER
-#: messages.c:86
+#: messages.c:103
 msgid "Auto power"
 msgstr "Puiss.auto"
 
 # MSG_HIGH_POWER
-#: messages.c:85
+#: messages.c:102
 msgid "High power"
 msgstr "Haute puiss"
 
 # 
-#: ultralcd.cpp:2186
+#: ultralcd.cpp:2124
 msgid "MMU2 connected"
 msgstr "MMU2 connecte"
 
 # MSG_SELFTEST_MOTOR
-#: messages.c:79
+#: messages.c:94
 msgid "Motor"
 msgstr "Moteur"
 
 # MSG_MOVE_AXIS
-#: ultralcd.cpp:5741
+#: ultralcd.cpp:5681
 msgid "Move axis"
 msgstr "Deplacer l'axe"
 
 # MSG_MOVE_X
-#: ultralcd.cpp:4361
+#: ultralcd.cpp:4262
 msgid "Move X"
 msgstr "Deplacer X"
 
 # MSG_MOVE_Y
-#: ultralcd.cpp:4362
+#: ultralcd.cpp:4263
 msgid "Move Y"
 msgstr "Deplacer Y"
 
 # MSG_MOVE_Z
-#: ultralcd.cpp:4363
+#: ultralcd.cpp:4264
 msgid "Move Z"
 msgstr "Deplacer Z"
 
 # MSG_NO_MOVE
-#: Marlin_main.cpp:5541
+#: Marlin_main.cpp:5719
 msgid "No move."
 msgstr "Pas de mouvement."
 
 # MSG_NO_CARD
-#: ultralcd.cpp:6911
+#: ultralcd.cpp:6673
 msgid "No SD card"
 msgstr "Pas de carte SD"
 
 # MSG_NA
-#: messages.c:107
+#: messages.c:124
 msgid "N/A"
 msgstr ""
 
 # MSG_NO
-#: messages.c:58
+#: messages.c:70
 msgid "No"
 msgstr "Non"
 
 # MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:8265
+#: ultralcd.cpp:8028
 msgid "Not connected"
 msgstr "Non connecte"
 
@@ -881,157 +891,157 @@ msgid "New firmware version available:"
 msgstr "Nouvelle version de firmware disponible:"
 
 # MSG_SELFTEST_FAN_NO c=19
-#: messages.c:75
+#: messages.c:90
 msgid "Not spinning"
 msgstr "Ne tourne pas"
 
 # MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4946
+#: ultralcd.cpp:4847
 msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
 msgstr "Maintenant je vais calibrer la distance entre la pointe de la buse et la surface du plateau chauffant."
 
 # MSG_WIZARD_WILL_PREHEAT c=20 r=4
-#: ultralcd.cpp:5071
+#: ultralcd.cpp:4972
 msgid "Now I will preheat nozzle for PLA."
 msgstr "Maintenant je vais prechauffer la buse pour du PLA."
 
 # MSG_NOZZLE
-#: messages.c:59
+#: messages.c:71
 msgid "Nozzle"
 msgstr "Buse"
 
 # MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
-#: Marlin_main.cpp:1518
+#: Marlin_main.cpp:1581
 msgid "Old settings found. Default PID, Esteps etc. will be set."
 msgstr "Anciens reglages trouves. Le PID, les Esteps etc. par defaut seront regles"
 
 # 
-#: ultralcd.cpp:5062
+#: ultralcd.cpp:4963
 msgid "Now remove the test print from steel sheet."
 msgstr "Retirez maintenant l'impression de test de la plaque en acier."
 
 # 
-#: ultralcd.cpp:1654
+#: ultralcd.cpp:1600
 msgid "Nozzle FAN"
 msgstr "Vent. buse"
 
 # MSG_PAUSE_PRINT
-#: ultralcd.cpp:6875
+#: ultralcd.cpp:6637
 msgid "Pause print"
 msgstr "Pause de l'impr."
 
 # MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1539
+#: ultralcd.cpp:1485
 msgid "PID cal.           "
 msgstr "Calib. PID"
 
 # MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1545
+#: ultralcd.cpp:1491
 msgid "PID cal. finished"
 msgstr "Calib. PID terminee"
 
 # MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5862
+#: ultralcd.cpp:5803
 msgid "PID calibration"
 msgstr "Calibration PID"
 
 # MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:896
+#: ultralcd.cpp:843
 msgid "PINDA Heating"
 msgstr "Chauffe de la PINDA"
 
 # MSG_PAPER c=20 r=10
-#: messages.c:60
+#: messages.c:72
 msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
 msgstr "Placez une feuille de papier sous la buse pendant la calibration des 4 premiers points. Si la buse accroche le papier, eteignez vite l'imprimante."
 
 # MSG_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:5128
+#: ultralcd.cpp:5029
 msgid "Please clean heatbed and then press the knob."
 msgstr "Nettoyez plateau chauffant en acier et appuyez sur le bouton."
 
 # MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
-#: messages.c:21
+#: messages.c:24
 msgid "Please clean the nozzle for calibration. Click when done."
 msgstr "Nettoyez la buse pour la calibration. Cliquez une fois fait."
 
 # MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:8257
+#: ultralcd.cpp:8022
 msgid "Please check :"
 msgstr "Verifiez:"
 
 # MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:98
+#: messages.c:115
 msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
 msgstr "Merci de consulter notre manuel et de corriger le probleme. Poursuivez alors l'assistant en redemarrant l'imprimante."
 
 # MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3138
+#: Marlin_main.cpp:3317
 msgid "Please open idler and remove filament manually."
 msgstr "Ouvrez l'idler et retirez le filament manuellement."
 
 # MSG_PLACE_STEEL_SHEET c=20 r=4
-#: messages.c:61
+#: messages.c:73
 msgid "Please place steel sheet on heatbed."
 msgstr "Placez la plaque en acier sur le plateau chauffant."
 
 # MSG_PRESS_TO_UNLOAD c=20 r=4
-#: messages.c:64
+#: messages.c:77
 msgid "Please press the knob to unload filament"
 msgstr "Appuyez sur le bouton pour decharger le filament"
 
 # MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:66
+#: messages.c:79
 msgid "Please pull out filament immediately"
 msgstr "Retirez immediatement le filament"
 
 # MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1422
+#: mmu.cpp:1420
 msgid "Please remove filament and then press the knob."
 msgstr "Veuillez retirer le filament puis appuyez sur le bouton."
 
 # MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:70
+#: messages.c:82
 msgid "Please remove steel sheet from heatbed."
 msgstr "Retirez la plaque en acier du plateau chauffant."
 
 # MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4583
+#: Marlin_main.cpp:4766
 msgid "Please run XYZ calibration first."
 msgstr "Veuillez d'abord lancer la calibration XYZ."
 
 # MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1341
+#: mmu.cpp:1340
 msgid "Please update firmware in your MMU2. Waiting for reset."
 msgstr "Veuillez mettre a jour le firmware de votre MMU2. En attente d'un reset."
 
 # MSG_PLEASE_WAIT c=20
-#: messages.c:62
+#: messages.c:74
 msgid "Please wait"
 msgstr "Merci de patienter"
 
 # 
-#: ultralcd.cpp:5061
+#: ultralcd.cpp:4962
 msgid "Please remove shipping helpers first."
 msgstr "Retirez d'abord les protections de transport."
 
 # MSG_PREHEAT_NOZZLE c=20
-#: messages.c:63
+#: messages.c:76
 msgid "Preheat the nozzle!"
 msgstr "Prechauffez la buse!"
 
 # MSG_PREHEAT
-#: ultralcd.cpp:6853
+#: ultralcd.cpp:6615
 msgid "Preheat"
 msgstr "Prechauffage"
 
 # MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:100
+#: messages.c:117
 msgid "Preheating nozzle. Please wait."
 msgstr "Prechauffage de la buse. Merci de patienter."
 
 #  c=14
-#: ultralcd.cpp:1959
+#: ultralcd.cpp:1905
 msgid "PINDA"
 msgstr ""
 
@@ -1041,107 +1051,112 @@ msgid "Please upgrade."
 msgstr "Mettez a jour le FW."
 
 # MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:11526
+#: Marlin_main.cpp:11718
 msgid "Press knob to preheat nozzle and continue."
 msgstr "Appuyez sur le bouton pour prechauffer la buse et continuer."
 
 # MSG_FS_PAUSE c=5
-#: fsensor.cpp:710
+#: fsensor.cpp:728
 msgid "Pause"
 msgstr ""
 
-# 
-#: ultralcd.cpp:1783
+# MSG_POWER_FAILURES c=14
+#: messages.c:75
 msgid "Power failures"
 msgstr "Coup.de courant"
 
 # MSG_PRINT_ABORTED c=20
-#: messages.c:65
+#: messages.c:78
 msgid "Print aborted"
 msgstr "Impression annulee"
 
 #  c=20
-#: ultralcd.cpp:2442
+#: ultralcd.cpp:2390
 msgid "Preheating to load"
 msgstr "Chauffe pour charger"
 
 #  c=20
-#: ultralcd.cpp:2446
+#: ultralcd.cpp:2395
 msgid "Preheating to unload"
 msgstr "Chauf.pour decharger"
 
 # MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:8689
+#: ultralcd.cpp:8401
 msgid "Print fan:"
 msgstr "Vent. impr:"
 
 # MSG_CARD_MENU
-#: messages.c:20
+#: messages.c:21
 msgid "Print from SD"
 msgstr "Impr. depuis la SD"
 
 # 
-#: ultralcd.cpp:2289
+#: ultralcd.cpp:2231
 msgid "Press the knob"
 msgstr "App. sur sur bouton"
 
 # MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1118
+#: ultralcd.cpp:1065
 msgid "Print paused"
 msgstr "Impression en pause"
 
 # 
-#: mmu.cpp:726
+#: mmu.cpp:725
 msgid "Press the knob to resume nozzle temperature."
 msgstr "Appuyez sur le bouton pour rechauffer la buse."
 
 # MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
-#: messages.c:38
+#: messages.c:45
 msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
 msgstr "L'imprimante n'a pas encore ete calibree. Suivez le manuel, chapitre Premiers pas, section Processus de calibration."
 
 # 
-#: ultralcd.cpp:1655
+#: ultralcd.cpp:1601
 msgid "Print FAN"
 msgstr "Vent. impr"
 
 # 
-#: ultralcd.cpp:4926
+#: ultralcd.cpp:4827
 msgid "Please insert filament into the extruder, then press the knob to load it."
 msgstr "Veuillez inserer le filament dans l'extrudeur, puis appuyez sur le bouton pour le charger."
 
 # 
-#: ultralcd.cpp:4921
+#: ultralcd.cpp:4822
 msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
 msgstr "Veuillez inserer le filament dans le premier tube du MMU, puis appuyez sur le bouton pour le charger."
 
 # 
-#: ultralcd.cpp:4843
+#: ultralcd.cpp:4744
 msgid "Please load filament first."
 msgstr "Veuillez d'abord charger un filament."
 
 # MSG_PRUSA3D
-#: ultralcd.cpp:2155
+#: ultralcd.cpp:2104
 msgid "prusa3d.com"
 msgstr ""
 
 # MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3267
+#: ultralcd.cpp:3191
 msgid "Rear side [um]"
 msgstr "Arriere [um]"
 
 #  c=20 r=4
-#: ultralcd.cpp:7549
+#: ultralcd.cpp:7304
 msgid "Please unload the filament first, then repeat this action."
 msgstr "SVP, dechargez le filament et reessayez."
 
+#  c=20 r=4
+#: ultralcd.cpp:7307
+msgid "Please check the IR sensor connection, unload filament if present."
+msgstr "SVP, verifiez la connexion du capteur IR et decharge le filament."
+
 # MSG_RECOVERING_PRINT c=20
-#: Marlin_main.cpp:10883
+#: Marlin_main.cpp:11076
 msgid "Recovering print    "
 msgstr "Recup. impression   "
 
 # MSG_REMOVE_OLD_FILAMENT c=20 r=5
-#: mmu.cpp:833
+#: mmu.cpp:832
 msgid "Remove old filament and press the knob to start loading new filament."
 msgstr "Retirez l'ancien filament puis appuyez sur le bouton pour charger le nouveau."
 
@@ -1151,102 +1166,102 @@ msgid "Prusa i3 MK3S OK."
 msgstr ""
 
 # MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5867
+#: ultralcd.cpp:5808
 msgid "Reset XYZ calibr."
 msgstr "Reinit. calib. XYZ"
 
-# MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3268
+# MSG_RESET c=14
+#: messages.c:83
 msgid "Reset"
 msgstr "Reinitialiser"
 
-# MSG_RESUME_PRINT
-#: ultralcd.cpp:6861
+# MSG_RESUME_PRINT c=18
+#: messages.c:84
 msgid "Resume print"
 msgstr "Reprendre impression"
 
 # MSG_RESUMING_PRINT c=20
-#: messages.c:69
+#: messages.c:85
 msgid "Resuming print"
 msgstr "Reprise de l'impr."
 
 # MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3265
+#: ultralcd.cpp:3189
 msgid "Right side[um]"
 msgstr "Droite [um]"
 
 # MSG_RPI_PORT
-#: messages.c:123
+#: messages.c:142
 msgid "RPi port"
 msgstr "Port RPi"
 
 # MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4864
+#: ultralcd.cpp:4765
 msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
 msgstr "Lancement de l'Assistant supprimera les resultats actuels de calibration et commencera du debut. Continuer?"
 
 # MSG_SD_CARD
-#: messages.c:118
+#: messages.c:137
 msgid "SD card"
 msgstr "Carte SD"
 
 # MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
-#: messages.c:119
+#: messages.c:138
 msgid "FlashAir"
 msgstr "FlshAir"
 
 # 
-#: ultralcd.cpp:2994
+#: ultralcd.cpp:2920
 msgid "Right"
 msgstr "Droite"
 
 # MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: messages.c:35
+#: messages.c:42
 msgid "Searching bed calibration point"
 msgstr "Recherche du point de calibration du plateau chauffant"
 
 # MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5779
+#: ultralcd.cpp:5721
 msgid "Select language"
 msgstr "Choisir langue"
 
 # MSG_SELFTEST_OK
-#: ultralcd.cpp:7812
+#: ultralcd.cpp:7579
 msgid "Self test OK"
 msgstr "Auto-test OK"
 
 # MSG_SELFTEST_START c=20
-#: ultralcd.cpp:7582
+#: ultralcd.cpp:7347
 msgid "Self test start  "
 msgstr "Debut auto-test"
 
 # MSG_SELFTEST
-#: ultralcd.cpp:5843
+#: ultralcd.cpp:5784
 msgid "Selftest         "
 msgstr "Auto-test"
 
 # MSG_SELFTEST_ERROR
-#: ultralcd.cpp:8255
+#: ultralcd.cpp:8021
 msgid "Selftest error !"
 msgstr "Erreur auto-test!"
 
 # MSG_SELFTEST_FAILED c=20
-#: messages.c:73
+#: messages.c:88
 msgid "Selftest failed  "
 msgstr "Echec de l'auto-test"
 
 # MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1550
+#: Marlin_main.cpp:1613
 msgid "Selftest will be run to calibrate accurate sensorless rehoming."
 msgstr "Le Selftest sera lance pour calibrer la remise a zero precise sans capteur"
 
 # 
-#: ultralcd.cpp:5102
+#: ultralcd.cpp:5003
 msgid "Select nozzle preheat temperature which matches your material."
 msgstr "Selectionnez la temperature de prechauffage de la buse qui correspond a votre materiau."
 
 # MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3286
+#: ultralcd.cpp:3209
 msgid "Set temperature:"
 msgstr "Regler temp.:"
 
@@ -1266,187 +1281,187 @@ msgid "Prusa i3 MK3 OK."
 msgstr ""
 
 # MSG_SETTINGS
-#: messages.c:82
+#: messages.c:97
 msgid "Settings"
 msgstr "Reglages"
 
 # MSG_SHOW_END_STOPS c=18
-#: ultralcd.cpp:5864
+#: ultralcd.cpp:5805
 msgid "Show end stops"
 msgstr "Afficher butees"
 
 # 
-#: ultralcd.cpp:4008
+#: ultralcd.cpp:3915
 msgid "Sensor state"
 msgstr "Etat capteur"
 
 # MSG_FILE_CNT c=20 r=6
-#: cardreader.cpp:738
+#: cardreader.cpp:739
 msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
 msgstr "Certains fichiers ne seront pas tries. Max 100 fichiers tries par dossier."
 
 # MSG_SORT
-#: messages.c:120
+#: messages.c:139
 msgid "Sort"
 msgstr "Tri"
 
 # MSG_NONE
-#: messages.c:110
+#: messages.c:127
 msgid "None"
 msgstr "Aucun"
 
 # MSG_SORT_TIME
-#: messages.c:121
+#: messages.c:140
 msgid "Time"
 msgstr "Heure"
 
 # 
-#: ultralcd.cpp:3037
+#: ultralcd.cpp:2963
 msgid "Severe skew:"
 msgstr "Deviat.sev.:"
 
 # MSG_SORT_ALPHA
-#: messages.c:122
+#: messages.c:141
 msgid "Alphabet"
 msgstr ""
 
 # MSG_SORTING c=20 r=1
-#: cardreader.cpp:745
+#: cardreader.cpp:746
 msgid "Sorting files"
 msgstr "Tri des fichiers"
 
 # MSG_SOUND_LOUD
-#: messages.c:125
+#: messages.c:144
 msgid "Loud"
 msgstr "Fort"
 
 # 
-#: ultralcd.cpp:3036
+#: ultralcd.cpp:2962
 msgid "Slight skew:"
 msgstr "Deviat.leg.:"
 
 # MSG_SOUND
-#: messages.c:124
+#: messages.c:143
 msgid "Sound"
 msgstr "Son"
 
 #  c=7
-#: ultralcd.cpp:1822
+#: ultralcd.cpp:1768
 msgid "Runouts"
 msgstr ""
 
 # 
-#: Marlin_main.cpp:5101
+#: Marlin_main.cpp:5280
 msgid "Some problem encountered, Z-leveling enforced ..."
 msgstr "Probleme rencontre, cliquez sur le bouton pour niveller l'axe Z..."
 
 # MSG_SOUND_ONCE
-#: messages.c:126
+#: messages.c:145
 msgid "Once"
 msgstr "Une fois"
 
 # MSG_SPEED
-#: ultralcd.cpp:7119
+#: ultralcd.cpp:6874
 msgid "Speed"
 msgstr "Vitesse"
 
 # MSG_SELFTEST_FAN_YES c=19
-#: messages.c:76
+#: messages.c:91
 msgid "Spinning"
 msgstr "Tourne"
 
 # MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4596
+#: Marlin_main.cpp:4779
 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
 msgstr "Une temperature ambiante stable de 21-26C et un support stable sont requis."
 
 # MSG_STATISTICS
-#: ultralcd.cpp:6978
+#: ultralcd.cpp:6733
 msgid "Statistics  "
 msgstr "Statistiques"
 
 # MSG_STOP_PRINT
-#: messages.c:91
+#: messages.c:108
 msgid "Stop print"
 msgstr "Arreter impression"
 
 # MSG_STOPPED
-#: messages.c:92
+#: messages.c:109
 msgid "STOPPED. "
 msgstr "ARRETE."
 
 # MSG_SUPPORT
-#: ultralcd.cpp:6987
+#: ultralcd.cpp:6742
 msgid "Support"
 msgstr ""
 
 # MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:8335
+#: ultralcd.cpp:8080
 msgid "Swapped"
 msgstr "Echange"
 
 # 
-#: ultralcd.cpp:4814
+#: ultralcd.cpp:4715
 msgid "Select filament:"
 msgstr "Selectionnez le filament:"
 
 # MSG_TEMP_CALIBRATION c=14
-#: messages.c:93
+#: messages.c:110
 msgid "Temp. cal."
 msgstr "Calib. Temp."
 
 # 
-#: ultralcd.cpp:4955
+#: ultralcd.cpp:4856
 msgid "Select temperature which matches your material."
 msgstr "Selectionnez la temperature qui correspond a votre materiau."
 
 # MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5873
+#: ultralcd.cpp:5816
 msgid "Temp. calibration"
 msgstr "Calibration temp."
 
 # MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3933
+#: ultralcd.cpp:3845
 msgid "Temperature calibration failed"
 msgstr "Echec de la calibration en temperature"
 
 # MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:94
+#: messages.c:111
 msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
 msgstr "La calibration en temperature est terminee et activee. La calibration en temperature peut etre desactivee dans le menu Reglages-> Cal. Temp."
 
 #  c=20 r=3
-#: ultralcd.cpp:7554
+#: ultralcd.cpp:7311
 msgid "Sensor verified, remove the filament now."
 msgstr "Capteur verifie, retirez le filament maintenant."
 
 # MSG_TEMPERATURE
-#: ultralcd.cpp:5739
+#: ultralcd.cpp:5679
 msgid "Temperature"
 msgstr ""
 
 # MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2218
+#: ultralcd.cpp:2160
 msgid "Temperatures"
 msgstr ""
 
 # MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
-#: messages.c:39
+#: messages.c:46
 msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
 msgstr "Il faut toujours effectuer la Calibration Z. Veuillez suivre le manuel, chapitre Premiers pas, section Processus de calibration."
 
 # 
-#: ultralcd.cpp:2891
+#: ultralcd.cpp:2817
 msgid "Total filament"
 msgstr "Filament total"
 
 # 
-#: ultralcd.cpp:2892
+#: ultralcd.cpp:2818
 msgid "Total print time"
 msgstr "Temps total impr."
 
 # MSG_TUNE
-#: ultralcd.cpp:6850
+#: ultralcd.cpp:6612
 msgid "Tune"
 msgstr "Regler"
 
@@ -1455,63 +1470,63 @@ msgstr "Regler"
 msgid "Unload"
 msgstr "Decharger"
 
-# 
-#: ultralcd.cpp:1752
+# MSG_TOTAL_FAILURES c=20
+#: messages.c:99
 msgid "Total failures"
 msgstr "Total des echecs"
 
 # 
-#: ultralcd.cpp:2296
+#: ultralcd.cpp:2238
 msgid "to load filament"
 msgstr "pour charger le fil."
 
 # 
-#: ultralcd.cpp:2300
+#: ultralcd.cpp:2242
 msgid "to unload filament"
 msgstr "pour decharger fil."
 
 # MSG_UNLOAD_FILAMENT c=17
-#: messages.c:95
+#: messages.c:112
 msgid "Unload filament"
 msgstr "Decharger fil."
 
 # MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:96
+#: messages.c:113
 msgid "Unloading filament"
 msgstr "Dechargement fil."
 
-# 
-#: ultralcd.cpp:1705
+# MSG_TOTAL c=6
+#: messages.c:98
 msgid "Total"
 msgstr "Totale"
 
 # MSG_USED c=19 r=1
-#: ultralcd.cpp:6001
+#: ultralcd.cpp:5932
 msgid "Used during print"
 msgstr "Utilise pdt impr."
 
 # MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2221
+#: ultralcd.cpp:2163
 msgid "Voltages"
 msgstr "Tensions"
 
 # 
-#: ultralcd.cpp:2194
+#: ultralcd.cpp:2132
 msgid "unknown"
 msgstr "inconnu"
 
 # MSG_USERWAIT
-#: Marlin_main.cpp:5511
+#: Marlin_main.cpp:5689
 msgid "Wait for user..."
 msgstr "Attente utilisateur..."
 
 # MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3434
+#: ultralcd.cpp:3357
 msgid "Waiting for nozzle and bed cooling"
 msgstr "Attente du refroidissement des buse et plateau chauffant"
 
 # MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3395
+#: ultralcd.cpp:3318
 msgid "Waiting for PINDA probe cooling"
 msgstr "Attente du refroidissement de la sonde PINDA"
 
@@ -1521,37 +1536,37 @@ msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU t
 msgstr "Utilisez Remonter le fil. pour retirer le filament 1 s'il depasse du tube arriere du MMU. Utilisez ejecter s'il est cache dans le tube."
 
 # MSG_CHANGED_BOTH c=20 r=4
-#: Marlin_main.cpp:1510
+#: Marlin_main.cpp:1573
 msgid "Warning: both printer type and motherboard type changed."
 msgstr "Attention: Types d'imprimante et de carte mere modifies"
 
 # MSG_CHANGED_MOTHERBOARD c=20 r=4
-#: Marlin_main.cpp:1502
+#: Marlin_main.cpp:1565
 msgid "Warning: motherboard type changed."
 msgstr "Attention: Type de carte mere modifie."
 
 # MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1506
+#: Marlin_main.cpp:1569
 msgid "Warning: printer type changed."
 msgstr "Attention: Type d'imprimante modifie"
 
 # MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3128
+#: Marlin_main.cpp:3308
 msgid "Was filament unload successful?"
 msgstr "Dechargement du filament reussi?"
 
 # MSG_SELFTEST_WIRINGERROR
-#: messages.c:81
+#: messages.c:96
 msgid "Wiring error"
 msgstr "Erreur de cablage"
 
 # MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5834
+#: ultralcd.cpp:5775
 msgid "Wizard"
 msgstr "Assistant"
 
 # MSG_XYZ_DETAILS c=18
-#: ultralcd.cpp:2210
+#: ultralcd.cpp:2152
 msgid "XYZ cal. details"
 msgstr "Details calib. XYZ"
 
@@ -1561,182 +1576,177 @@ msgid "XYZ calibration failed. Please consult the manual."
 msgstr "Echec calibration XYZ. Consultez le manuel."
 
 # MSG_YES
-#: messages.c:102
+#: messages.c:119
 msgid "Yes"
 msgstr "Oui"
 
 # MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:101
+#: messages.c:118
 msgid "You can always resume the Wizard from Calibration -> Wizard."
 msgstr "Vous pouvez toujours relancer l'Assistant dans Calibration > Assistant."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
-#: ultralcd.cpp:3904
+#: ultralcd.cpp:3817
 msgid "XYZ calibration all right. Skew will be corrected automatically."
 msgstr "Calibration XYZ OK. L'ecart sera corrige automatiquement."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
-#: ultralcd.cpp:3901
+#: ultralcd.cpp:3814
 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
 msgstr "Calibration XYZ OK. Les axes X/Y sont legerement non perpendiculaires. Bon boulot!"
 
 # MSG_TIMEOUT c=12
-#: messages.c:137
+#: messages.c:157
 msgid "Timeout"
 msgstr ""
 
 # MSG_X_CORRECTION c=13
-#: ultralcd.cpp:5190
+#: ultralcd.cpp:5091
 msgid "X-correct:"
 msgstr "Correct-X:"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3898
+#: ultralcd.cpp:3811
 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
 msgstr "Calibration XYZ OK. Les axes X/Y sont perpendiculaires. Felicitations!"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
-#: ultralcd.cpp:3882
+#: ultralcd.cpp:3795
 msgid "XYZ calibration compromised. Front calibration points not reachable."
 msgstr "Calibration XYZ compromise. Les points de calibration en avant ne sont pas atteignables."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3885
+#: ultralcd.cpp:3798
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "Calibration XYZ compromise. Le point de calibration avant droit n'est pas atteignable."
 
 # MSG_LOAD_ALL c=17
-#: ultralcd.cpp:6261
+#: ultralcd.cpp:6171
 msgid "Load all"
 msgstr "Charger un par un"
 
 # 
-#: ultralcd.cpp:3864
+#: ultralcd.cpp:3777
 msgid "XYZ calibration failed. Bed calibration point was not found."
 msgstr "Echec calibration XYZ. Le point de calibration du plateau n'a pas ete trouve."
 
 # 
-#: ultralcd.cpp:3870
+#: ultralcd.cpp:3783
 msgid "XYZ calibration failed. Front calibration points not reachable."
 msgstr "Echec calibration XYZ. Les points de calibration en avant ne sont pas atteignables."
 
 # 
-#: ultralcd.cpp:3873
+#: ultralcd.cpp:3786
 msgid "XYZ calibration failed. Right front calibration point not reachable."
 msgstr "Echec calibration XYZ. Le point de calibration avant droit n'est pas atteignable."
 
 # 
-#: ultralcd.cpp:2991
+#: ultralcd.cpp:2917
 msgid "Y distance from min"
 msgstr "Distance Y du min"
 
 # 
-#: ultralcd.cpp:4958
+#: ultralcd.cpp:4859
 msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
 msgstr "L'imprimante commencera a  imprimer une ligne en zig-zag. Tournez le bouton jusqu'a atteindre la hauteur optimale. Consultez les photos dans le manuel (chapitre Calibration)."
 
 #  c=20 r=5
-#: ultralcd.cpp:7558
+#: ultralcd.cpp:7315
 msgid "Verification failed, remove the filament and try again."
 msgstr "Verification en echec, retirez le filament et reessayez."
 
 # MSG_Y_CORRECTION c=13
-#: ultralcd.cpp:5191
+#: ultralcd.cpp:5092
 msgid "Y-correct:"
 msgstr "Correct-Y:"
 
 # MSG_OFF
-#: messages.c:105
+#: messages.c:122
 msgid "Off"
 msgstr ""
 
 # MSG_ON
-#: messages.c:106
+#: messages.c:123
 msgid "On"
 msgstr ""
 
 # 
-#: messages.c:53
+#: messages.c:62
 msgid "Back"
 msgstr "Retour"
 
 # 
-#: ultralcd.cpp:5724
+#: ultralcd.cpp:5647
 msgid "Checks"
 msgstr "Verifications"
 
 # 
-#: ultralcd.cpp:8349
+#: ultralcd.cpp:8090
 msgid "False triggering"
 msgstr "Faux declenchement"
 
 # 
-#: ultralcd.cpp:4013
+#: ultralcd.cpp:3920
 msgid "FINDA:"
 msgstr "FINDA:"
 
 # MSG_FIRMWARE
-#: language.h:23
+#: language.h:24
 msgid "Firmware"
 msgstr ""
 
 # MSG_STRICT
-#: messages.c:112
+#: messages.c:129
 msgid "Strict"
 msgstr "Stricte"
 
 # MSG_WARN
-#: messages.c:111
+#: messages.c:128
 msgid "Warn"
 msgstr "Avert"
 
-# 
-#: messages.c:83
+# MSG_HW_SETUP c=18
+#: messages.c:100
 msgid "HW Setup"
 msgstr "Config HW"
 
 # 
-#: ultralcd.cpp:4017
+#: ultralcd.cpp:3924
 msgid "IR:"
 msgstr "IR:"
 
 # MSG_MAGNETS_COMP
-#: messages.c:130
+#: messages.c:150
 msgid "Magnets comp."
 msgstr "Compens. aim."
 
 # MSG_MESH
-#: messages.c:128
+#: messages.c:147
 msgid "Mesh"
 msgstr ""
 
 # 
-#: ultralcd.cpp:5763
-msgid "Mesh bed leveling"
-msgstr ""
-
-# 
-#: Marlin_main.cpp:872
+#: Marlin_main.cpp:927
 msgid "MK3S firmware detected on MK3 printer"
 msgstr "Firmware MK3S detecte sur imprimante MK3"
 
 # MSG_MMU_MODE
-#: messages.c:117
+#: messages.c:136
 msgid "MMU Mode"
 msgstr "Mode MMU"
 
 # 
-#: ultralcd.cpp:4494
+#: ultralcd.cpp:4395
 msgid "Mode change in progress ..."
 msgstr "Changement de mode en cours..."
 
 # MSG_MODEL
-#: messages.c:113
+#: messages.c:130
 msgid "Model"
 msgstr "Modele"
 
 # MSG_NOZZLE_DIAMETER
-#: messages.c:116
+#: messages.c:135
 msgid "Nozzle d."
 msgstr "Diam. buse"
 
@@ -1750,13 +1760,13 @@ msgstr "Le G-code a ete prepare pour un niveau different. Continuer?"
 msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
 msgstr "Le G-code a ete prepare pour un niveau different. Veuillez decouper le modele a nouveau. L'impression a ete annulee."
 
-# 
-#: util.cpp:431
+# MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5
+#: messages.c:133
 msgid "G-code sliced for a different printer type. Continue?"
 msgstr "Le G-code a ete prepare pour une autre version de l'imprimante. Continuer?"
 
-# 
-#: util.cpp:437
+# MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=6
+#: messages.c:134
 msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
 msgstr "Le G-code a ete prepare pour une autre version de l'imprimante. Veuillez decouper le modele a nouveau. L'impression a ete annulee."
 
@@ -1771,17 +1781,17 @@ msgid "G-code sliced for a newer firmware. Please update the firmware. Print can
 msgstr "Le G-code a ete prepare pour une version plus recente du firmware. Veuillez mettre a jour le firmware. L'impression annulee."
 
 # 
-#: ultralcd.cpp:4009
+#: ultralcd.cpp:3916
 msgid "PINDA:"
 msgstr "PINDA:"
 
 #  c=20
-#: ultralcd.cpp:2452
+#: ultralcd.cpp:2402
 msgid "Preheating to cut"
 msgstr "Chauffe pour couper"
 
 #  c=20
-#: ultralcd.cpp:2449
+#: ultralcd.cpp:2399
 msgid "Preheating to eject"
 msgstr "Chauf. pour remonter"
 
@@ -1796,47 +1806,47 @@ msgid "Printer nozzle diameter differs from the G-code. Please check the value i
 msgstr "Diametre de la buse dans les reglages ne correspond pas a celui dans le G-Code. Merci de verifier le parametre dans les reglages. Impression annulee."
 
 #  c=20
-#: ultralcd.cpp:8355
+#: ultralcd.cpp:8095
 msgid "%s level expected"
 msgstr ""
 
 # 
-#: ultralcd.cpp:6814
+#: ultralcd.cpp:6574
 msgid "Rename"
 msgstr "Renommer"
 
 # 
-#: ultralcd.cpp:6807
+#: ultralcd.cpp:6567
 msgid "Select"
 msgstr "Selectionner"
 
 # 
-#: ultralcd.cpp:2212
+#: ultralcd.cpp:2154
 msgid "Sensor info"
 msgstr "Info capteur"
 
 # MSG_SHEET c=10
-#: messages.c:54
+#: messages.c:63
 msgid "Sheet"
 msgstr "Plaque"
 
 # MSG_SOUND_BLIND
-#: messages.c:127
+#: messages.c:146
 msgid "Assist"
 msgstr ""
 
-#  c=18
-#: ultralcd.cpp:5722
+# MSG_STEEL_SHEET c=18
+#: messages.c:64
 msgid "Steel sheets"
 msgstr "Plaques en acier"
 
 # MSG_Z_CORRECTION c=13
-#: ultralcd.cpp:5192
+#: ultralcd.cpp:5093
 msgid "Z-correct:"
 msgstr "Correct-Z:"
 
 # MSG_Z_PROBE_NR
-#: messages.c:129
+#: messages.c:149
 msgid "Z-probe nr."
 msgstr "Mesurer x-fois"
 

+ 391 - 381
lang/po/Firmware_it.po

@@ -7,8 +7,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it\n"
 "Project-Id-Version: Prusa-Firmware\n"
-"POT-Creation-Date: Fri May 15 18:16:31 CEST 2020\n"
-"PO-Revision-Date: Fri May 15 18:16:31 CEST 2020\n"
+"POT-Creation-Date: Di 26. Jan 11:04:11 CET 2021\n"
+"PO-Revision-Date: Di 26. Jan 11:04:11 CET 2021\n"
 "Language-Team: \n"
 "X-Generator: Poedit 2.0.7\n"
 "X-Poedit-SourceCharset: UTF-8\n"
@@ -21,27 +21,42 @@ msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cCont
 msgstr "[%.7s]Set valori\x0aComp. Z, continuare\x0ao iniziare da zero?\x0a%cContinua%cReset"
 
 # MSG_03_OR_OLDER c=18
-#: messages.c:144
+#: messages.c:164
 msgid " 0.3 or older"
 msgstr " 0.3 o inferiore"
 
-# MSG_04_OR_NEWER c=18
-#: messages.c:143
+#  c=18
+#: Marlin_main.cpp:9626
+msgid "FS v0.3 or older"
+msgstr "FS 0.3 o inferiore"
+
+# MSG_IR_04_OR_NEWER c=18
+#: messages.c:163
 msgid " 0.4 or newer"
 msgstr " 0.4 o superiore"
 
+#  c=18
+#: Marlin_main.cpp:9625
+msgid "FS v0.4 or newer"
+msgstr "FS 0.4 o superiore"
+
+# MSG_IR_UNKNOWN c=18
+#: messages.c:165
+msgid "unknown state"
+msgstr "stato sconosciuto"
+
 # MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
-#: messages.c:36
+#: messages.c:43
 msgid " of 4"
 msgstr " su 4"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:56
+#: messages.c:66
 msgid " of 9"
 msgstr " su 9"
 
 # MSG_MEASURED_OFFSET
-#: ultralcd.cpp:3064
+#: ultralcd.cpp:2988
 msgid "[0;0] point offset"
 msgstr "[0;0] punto offset"
 
@@ -56,47 +71,47 @@ msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
 msgstr "ATTENZIONE:\x0aRilev. impatto\x0adisattivato in\x0aModalita silenziosa"
 
 # 
-#: ultralcd.cpp:2460
+#: ultralcd.cpp:2410
 msgid ">Cancel"
 msgstr ">Annulla"
 
 # MSG_BABYSTEPPING_Z c=15
-#: ultralcd.cpp:3184
+#: ultralcd.cpp:3108
 msgid "Adjusting Z:"
 msgstr "Compensaz. Z:"
 
 # MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:8677
+#: ultralcd.cpp:8390
 msgid "All correct      "
 msgstr "Nessun errore"
 
 # MSG_WIZARD_DONE c=20 r=8
-#: messages.c:99
+#: messages.c:116
 msgid "All is done. Happy printing!"
 msgstr "Tutto fatto. Buona stampa!"
 
 # 
-#: ultralcd.cpp:1956
+#: ultralcd.cpp:1902
 msgid "Ambient"
 msgstr "Ambiente"
 
 # MSG_AUTO c=6
-#: messages.c:140
+#: messages.c:160
 msgid "Auto"
 msgstr ""
 
 # MSG_PRESS c=20 r=2
-#: ultralcd.cpp:2609
+#: ultralcd.cpp:2567
 msgid "and press the knob"
 msgstr "e cliccare manopola"
 
 # MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3506
+#: ultralcd.cpp:3429
 msgid "Are left and right Z~carriages all up?"
 msgstr "I carrelli Z sin/des sono altezza max?"
 
 # MSG_AUTO_DEPLETE c=17 r=1
-#: messages.c:108
+#: messages.c:125
 msgid "SpoolJoin"
 msgstr ""
 
@@ -106,32 +121,32 @@ msgid "Auto home"
 msgstr "Trova origine"
 
 # MSG_AUTOLOAD_FILAMENT c=18
-#: ultralcd.cpp:6961
+#: ultralcd.cpp:6716
 msgid "AutoLoad filament"
 msgstr "Autocaric. filam."
 
 # MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4445
+#: ultralcd.cpp:4346
 msgid "Autoloading filament available only when filament sensor is turned on..."
 msgstr "Caricamento auto. filam. disp. solo con il sensore attivo..."
 
 # MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2804
+#: ultralcd.cpp:2730
 msgid "Autoloading filament is active, just press the knob and insert filament..."
 msgstr "Caricamento automatico attivo, premi la manopola e inserisci il filamento."
 
 # MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:8325
+#: ultralcd.cpp:8073
 msgid "Axis length"
 msgstr "Lunghezza dell'asse"
 
 # MSG_SELFTEST_AXIS
-#: ultralcd.cpp:8327
+#: ultralcd.cpp:8074
 msgid "Axis"
 msgstr "Assi"
 
 # MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:8269
+#: ultralcd.cpp:8031
 msgid "Bed / Heater"
 msgstr "Piano/Riscald."
 
@@ -146,12 +161,12 @@ msgid "Bed Heating"
 msgstr "Riscald. piano"
 
 # MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5861
+#: ultralcd.cpp:5802
 msgid "Bed level correct"
 msgstr "Correz. liv.piano"
 
 # MSG_BELTTEST c=17
-#: ultralcd.cpp:5841
+#: ultralcd.cpp:5782
 msgid "Belt test        "
 msgstr "Test cinghie     "
 
@@ -161,12 +176,12 @@ msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for
 msgstr "Livellamento piano fallito. Sensore KO? Residui su ugello? In attesa di reset."
 
 # MSG_BRIGHT c=6
-#: messages.c:138
+#: messages.c:158
 msgid "Bright"
 msgstr "Chiaro"
 
 # MSG_BRIGHTNESS c=18
-#: messages.c:134
+#: messages.c:154
 msgid "Brightness"
 msgstr "Luminosita'"
 
@@ -175,123 +190,123 @@ msgstr "Luminosita'"
 msgid "Bed"
 msgstr "Piano"
 
-# MSG_MENU_BELT_STATUS c=18
-#: ultralcd.cpp:2009
+# MSG_BELT_STATUS c=18
+#: 
 msgid "Belt status"
 msgstr "Stato cinghie"
 
 # MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:67
+#: messages.c:80
 msgid "Blackout occurred. Recover print?"
 msgstr "Blackout rilevato. Recuperare la stampa?"
 
 # 
-#: ultralcd.cpp:8679
+#: ultralcd.cpp:8392
 msgid "Calibrating home"
 msgstr "Calibrazione Home"
 
 # MSG_CALIBRATE_BED
-#: ultralcd.cpp:5850
+#: ultralcd.cpp:5791
 msgid "Calibrate XYZ"
 msgstr "Calibra XYZ"
 
 # MSG_HOMEYZ
-#: messages.c:44
+#: messages.c:51
 msgid "Calibrate Z"
 msgstr "Calibra Z"
 
 # MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4637
+#: ultralcd.cpp:4538
 msgid "Calibrate"
 msgstr "Calibra"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3469
+#: ultralcd.cpp:3392
 msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr "Calibrazione XYZ. Ruotare la manopola per alzare il carrello Z fino all'altezza massima. Click per terminare."
 
 # MSG_CALIBRATE_Z_AUTO c=20 r=2
-#: messages.c:19
+#: messages.c:20
 msgid "Calibrating Z"
 msgstr "Calibrando Z"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3469
+#: ultralcd.cpp:3392
 msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr "Calibrazione Z. Ruotare la manopola per alzare il carrello Z fino all'altezza massima. Click per terminare."
 
 # MSG_HOMEYZ_DONE
-#: ultralcd.cpp:865
+#: ultralcd.cpp:813
 msgid "Calibration done"
 msgstr "Calibrazione completa"
 
 # MSG_MENU_CALIBRATION
-#: messages.c:57
+#: messages.c:67
 msgid "Calibration"
 msgstr "Calibrazione"
 
 # 
-#: ultralcd.cpp:4815
+#: ultralcd.cpp:4716
 msgid "Cancel"
 msgstr "Annulla"
 
 # MSG_SD_REMOVED
-#: ultralcd.cpp:9090
+#: ultralcd.cpp:8842
 msgid "Card removed"
 msgstr "SD rimossa"
 
 # MSG_NOT_COLOR
-#: ultralcd.cpp:2709
+#: ultralcd.cpp:2647
 msgid "Color not correct"
 msgstr "Colore non puro"
 
 # MSG_COOLDOWN
-#: messages.c:22
+#: messages.c:25
 msgid "Cooldown"
 msgstr "Raffredda"
 
 # 
-#: ultralcd.cpp:4570
+#: ultralcd.cpp:4471
 msgid "Copy selected language?"
 msgstr "Copiare la lingua selezionata?"
 
 # MSG_CRASHDETECT c=13
-#: messages.c:24
+#: messages.c:28
 msgid "Crash det."
 msgstr "Rileva.crash"
 
 # 
-#: ultralcd.cpp:4950
+#: ultralcd.cpp:4851
 msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
 msgstr "Scegli un filamento per la calibrazione del primo strato e selezionalo nel menu sullo schermo."
 
 # MSG_CRASH_DETECTED c=20 r=1
-#: messages.c:23
+#: messages.c:27
 msgid "Crash detected."
 msgstr "Rilevato impatto."
 
 # 
-#: Marlin_main.cpp:607
+#: Marlin_main.cpp:657
 msgid "Crash detected. Resume print?"
 msgstr "Scontro rilevato. Riprendere la stampa?"
 
-# 
-#: ultralcd.cpp:1785
+# MSG_CRASH c=7
+#: messages.c:26
 msgid "Crash"
 msgstr "Impatto"
 
 # MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:6002
+#: ultralcd.cpp:5933
 msgid "Current"
 msgstr "Attuale"
 
 # MSG_DATE c=17 r=1
-#: ultralcd.cpp:2163
+#: ultralcd.cpp:2112
 msgid "Date:"
 msgstr "Data:"
 
 # MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5743
+#: ultralcd.cpp:5683
 msgid "Disable steppers"
 msgstr "Disabilita motori"
 
@@ -301,377 +316,372 @@ msgid "Distance between tip of the nozzle and the bed surface has not been set y
 msgstr "Distanza tra la punta dell'ugello e la superficie del piano non ancora impostata. Si prega di seguire il manuale, capitolo Primi Passi, sezione Calibrazione primo strato."
 
 # MSG_FS_CONTINUE c=5
-#: messages.c:132
+#: messages.c:152
 msgid "Cont."
 msgstr ""
 
 # MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:5125
+#: ultralcd.cpp:5026
 msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
 msgstr "Desideri ripetere l'ultimo passaggio per migliorare la distanza fra ugello e piatto?"
 
 # MSG_EXTRUDER_CORRECTION c=13
-#: ultralcd.cpp:5194
+#: ultralcd.cpp:5095
 msgid "E-correct:"
 msgstr "Correzione-E:"
 
-# MSG_EJECT_FILAMENT c=17 r=1
-#: messages.c:49
+# MSG_EJECT_FILAMENT c=16
+#: messages.c:58
 msgid "Eject filament"
-msgstr "Espelli filamento"
+msgstr "Espelli fil."
 
 # MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1416
+#: mmu.cpp:1414
 msgid "Ejecting filament"
 msgstr "Espellendo filamento"
 
 # MSG_SELFTEST_ENDSTOP_NOTHIT c=20
-#: ultralcd.cpp:8293
+#: ultralcd.cpp:8049
 msgid "Endstop not hit"
 msgstr "Finec. fuori portata"
 
 # MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:8287
+#: ultralcd.cpp:8044
 msgid "Endstop"
 msgstr "Finecorsa"
 
 # MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:8275
+#: ultralcd.cpp:8035
 msgid "Endstops"
 msgstr "Finecorsa"
 
 # MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6998
+#: ultralcd.cpp:6753
 msgid "Error - static memory has been overwritten"
 msgstr "Errore - la memoria statica e' stata sovrascritta"
 
 # MSG_CUT_FILAMENT c=16
-#: messages.c:50
+#: messages.c:59
 msgid "Cut filament"
 msgstr "Taglia filamento"
 
 # MSG_CUTTER c=9
-#: messages.c:109
+#: messages.c:126
 msgid "Cutter"
 msgstr "Tagliatr."
 
 #  c=18
-#: mmu.cpp:1388
+#: mmu.cpp:1386
 msgid "Cutting filament"
 msgstr "Tagliando filam."
 
 # MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4458
+#: ultralcd.cpp:4359
 msgid "ERROR: Filament sensor is not responding, please check connection."
 msgstr "ERRORE: il sensore filam. non risponde,Controllare conness."
 
 # MSG_DIM c=6
-#: messages.c:139
+#: messages.c:159
 msgid "Dim"
 msgstr "Scuro"
 
 # MSG_ERROR
-#: messages.c:25
+#: messages.c:29
 msgid "ERROR:"
 msgstr "ERRORE:"
 
 # MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:8686
+#: ultralcd.cpp:8398
 msgid "Extruder fan:"
 msgstr "Ventola estr:"
 
 # MSG_INFO_EXTRUDER c=18
-#: ultralcd.cpp:2211
+#: ultralcd.cpp:2153
 msgid "Extruder info"
 msgstr "Info estrusore"
 
-# MSG_MOVE_E
-#: messages.c:26
+# MSG_EXTRUDER c=17
+#: messages.c:30
 msgid "Extruder"
 msgstr "Estrusore"
 
 # 
-#: ultralcd.cpp:6985
+#: ultralcd.cpp:6740
 msgid "Fail stats MMU"
 msgstr "Stat.fall. MMU"
 
 # MSG_FSENSOR_AUTOLOAD c=13
-#: messages.c:40
+#: messages.c:47
 msgid "F. autoload"
 msgstr "Autocar.fil."
 
 # 
-#: ultralcd.cpp:6982
+#: ultralcd.cpp:6737
 msgid "Fail stats"
 msgstr "Stat. fallimenti"
 
 # MSG_FAN_SPEED c=14
-#: messages.c:28
+#: messages.c:34
 msgid "Fan speed"
 msgstr "Velocita vent."
 
 # MSG_SELFTEST_FAN c=20
-#: messages.c:74
+#: messages.c:89
 msgid "Fan test"
 msgstr "Test ventola"
 
-# MSG_FANS_CHECK
-#: ultralcd.cpp:5751
+# MSG_FANS_CHECK c=13
+#: messages.c:31
 msgid "Fans check"
 msgstr "Control.vent"
 
 # MSG_FSENSOR
-#: messages.c:41
+#: messages.c:48
 msgid "Fil. sensor"
 msgstr "Sensore fil."
 
-#  c=14
-#: ultralcd.cpp:1784
-msgid "Filam. runouts"
-msgstr "Fil. esauriti"
+# MSG_FIL_RUNOUTS c=14
+#: 
+msgid "Fil. runouts  "
+msgstr "Fil. esauriti "
 
 # MSG_FILAMENT_CLEAN c=20 r=2
-#: messages.c:29
+#: messages.c:35
 msgid "Filament extruding & with correct color?"
 msgstr "Filamento estruso e con colore corretto?"
 
 # MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2705
+#: ultralcd.cpp:2646
 msgid "Filament not loaded"
 msgstr "Fil. non caricato"
 
 # MSG_FILAMENT_SENSOR c=20
-#: messages.c:80
+#: messages.c:95
 msgid "Filament sensor"
 msgstr "Sensore filam."
 
 # MSG_FILAMENT_USED c=19
-#: ultralcd.cpp:2869
+#: ultralcd.cpp:2795
 msgid "Filament used"
 msgstr "Fil. utilizzato"
 
 # MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2870
+#: ultralcd.cpp:2796
 msgid "Print time"
 msgstr "Tempo di stampa"
 
 # MSG_FS_ACTION c=10
-#: messages.c:131
+#: messages.c:151
 msgid "FS Action"
 msgstr "Azione FS"
 
-#  c=18
-#: Marlin_main.cpp:9512
-msgid "FS v0.4 or newer"
-msgstr "FS 0.4 o superiore"
-
 # MSG_FILE_INCOMPLETE c=20 r=3
-#: ultralcd.cpp:8814
+#: ultralcd.cpp:8540
 msgid "File incomplete. Continue anyway?"
 msgstr "File incompleto. Continuare comunque?"
 
 # MSG_FINISHING_MOVEMENTS c=20
-#: messages.c:37
+#: messages.c:44
 msgid "Finishing movements"
 msgstr "Finaliz. spostamenti"
 
 # MSG_V2_CALIBRATION c=18
-#: messages.c:103
+#: messages.c:120
 msgid "First layer cal."
 msgstr "Cal. primo strato"
 
 # MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:5046
+#: ultralcd.cpp:4947
 msgid "First, I will run the selftest to check most common assembly problems."
 msgstr "Per primo avviero l'autotest per controllare gli errori di assemblaggio piu comuni."
 
 # 
-#: mmu.cpp:727
+#: mmu.cpp:726
 msgid "Fix the issue and then press button on MMU unit."
 msgstr "Risolvere il problema e premere il bottone sull'unita MMU. "
 
 # MSG_FLOW
-#: ultralcd.cpp:7125
+#: ultralcd.cpp:6880
 msgid "Flow"
 msgstr "Flusso"
 
 # MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2156
+#: ultralcd.cpp:2105
 msgid "forum.prusa3d.com"
 msgstr ""
 
 # MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:71
+#: messages.c:86
 msgid "Front print fan?"
 msgstr "Ventola frontale?"
 
 # MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3266
+#: ultralcd.cpp:3190
 msgid "Front side[um]"
 msgstr "Fronte [um]"
 
 # MSG_SELFTEST_FANS
-#: ultralcd.cpp:8333
+#: ultralcd.cpp:8079
 msgid "Front/left fans"
 msgstr "Ventola frontale/sinistra"
 
 # MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:8263
+#: ultralcd.cpp:8027
 msgid "Heater/Thermistor"
 msgstr "Riscald./Termist."
 
 # MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:9440
+#: Marlin_main.cpp:9616
 msgid "Heating disabled by safety timer."
 msgstr "Riscaldamento fermato dal timer di sicurezza."
 
 # MSG_HEATING_COMPLETE c=20
-#: messages.c:43
+#: messages.c:50
 msgid "Heating done."
 msgstr "Riscald. completo"
 
 # MSG_HEATING
-#: messages.c:42
+#: messages.c:49
 msgid "Heating"
 msgstr "Riscaldamento..."
 
 # MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:5025
+#: ultralcd.cpp:4926
 msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
 msgstr "Ciao, sono la tua stampante Original Prusa i3. Gradiresti un aiuto nel processo di configurazione?"
 
 # MSG_PRUSA3D_HOWTO
-#: ultralcd.cpp:2157
+#: ultralcd.cpp:2106
 msgid "howto.prusa3d.com"
 msgstr ""
 
 # MSG_FILAMENTCHANGE
-#: messages.c:34
+#: messages.c:41
 msgid "Change filament"
 msgstr "Cambia filamento"
 
 # MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2620
+#: ultralcd.cpp:2576
 msgid "Change success!"
 msgstr "Cambio riuscito!"
 
 # MSG_CORRECTLY c=20
-#: ultralcd.cpp:2697
+#: ultralcd.cpp:2644
 msgid "Changed correctly?"
 msgstr "Cambio corretto?"
 
 # MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:77
+#: messages.c:92
 msgid "Checking bed     "
 msgstr "Verifica piano"
 
 # MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:8668
+#: ultralcd.cpp:8381
 msgid "Checking endstops"
 msgstr "Verifica finecorsa"
 
 # MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:8674
+#: ultralcd.cpp:8387
 msgid "Checking hotend  "
 msgstr "Verifica ugello"
 
 # MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:78
+#: messages.c:93
 msgid "Checking sensors "
 msgstr "Controllo sensori"
 
-# MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:7482
-msgid "Checking X axis  "
+# MSG_CHECKING_X c=20
+#: messages.c:22
+msgid "Checking X axis"
 msgstr "Verifica asse X"
 
-# MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:7491
-msgid "Checking Y axis  "
+# MSG_CHECKING_Y c=20
+#: messages.c:23
+msgid "Checking Y axis"
 msgstr "Verifica asse Y"
 
 # MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:8671
-msgid "Checking Z axis  "
+#: 
+msgid "Checking Z axis"
 msgstr "Verifica asse Z"
 
 # MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:45
+#: messages.c:52
 msgid "Choose extruder:"
 msgstr "Seleziona estrusore:"
 
 # MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:46
+#: messages.c:53
 msgid "Choose filament:"
 msgstr "Scegliere filamento:"
 
 # MSG_FILAMENT c=17 r=1
-#: messages.c:27
+#: messages.c:33
 msgid "Filament"
 msgstr "Filamento"
 
 # MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:5055
+#: ultralcd.cpp:4956
 msgid "I will run xyz calibration now. It will take approx. 12 mins."
 msgstr "Adesso avviero una Calibrazione XYZ. Puo durare circa 12 min."
 
 # MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:5063
+#: ultralcd.cpp:4964
 msgid "I will run z calibration now."
 msgstr "Adesso avviero la Calibrazione Z."
 
 # MSG_WATCH
-#: messages.c:97
+#: messages.c:114
 msgid "Info screen"
 msgstr "Schermata info"
 
 # MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2605
+#: ultralcd.cpp:2564
 msgid "Insert filament"
 msgstr "Inserire filamento"
 
-# MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4835
+# MSG_FILAMENT_LOADED c=20 r=2
+#: messages.c:36
 msgid "Is filament loaded?"
 msgstr "Il filamento e' stato caricato?"
 
 # MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:90
+#: messages.c:107
 msgid "Is steel sheet on heatbed?"
 msgstr "Piastra d'acciaio su piano riscaldato?"
 
-# 
-#: ultralcd.cpp:1727
+# MSG_LAST_PRINT_FAILURES c=20
+#: messages.c:55
 msgid "Last print failures"
-msgstr "Fallimenti ultima stampa"
+msgstr "Errori ultima stampa"
 
 # 
-#: ultralcd.cpp:5133
+#: ultralcd.cpp:5034
 msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
 msgstr "Se hai piastre d'acciaio aggiuntive, calibra i preset in Impostazioni - Setup HW - Piastre in Acciaio."
 
-# 
-#: ultralcd.cpp:1704
+# MSG_LAST_PRINT c=18
+#: messages.c:54
 msgid "Last print"
 msgstr "Ultima stampa"
 
 # MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:72
+#: messages.c:87
 msgid "Left hotend fan?"
 msgstr "Vent SX hotend?"
 
 # 
-#: ultralcd.cpp:2993
+#: ultralcd.cpp:2919
 msgid "Left"
 msgstr "Sinistra"
 
 # MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3264
+#: ultralcd.cpp:3188
 msgid "Left side [um]"
 msgstr "Sinistra [um]"
 
 # 
-#: ultralcd.cpp:5766
+#: ultralcd.cpp:5706
 msgid "Lin. correction"
 msgstr "Correzione lineare"
 
@@ -681,197 +691,197 @@ msgid "Live adjust Z"
 msgstr "Compensazione Z"
 
 #  c=20 r=6
-#: ultralcd.cpp:7527
+#: ultralcd.cpp:7280
 msgid "Insert the filament (do not load it) into the extruder and then press the knob."
 msgstr "Inserire filamento (senza caricarlo) nell'estrusore e premere la manopola."
 
 # MSG_LOAD_FILAMENT c=17
-#: messages.c:47
+#: messages.c:56
 msgid "Load filament"
 msgstr "Carica filamento"
 
 # MSG_LOADING_COLOR
-#: ultralcd.cpp:2645
+#: ultralcd.cpp:2598
 msgid "Loading color"
 msgstr "Caricando colore"
 
 # MSG_LOADING_FILAMENT c=20
-#: messages.c:48
+#: messages.c:57
 msgid "Loading filament"
 msgstr "Caricando filamento"
 
 # MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:8317
+#: ultralcd.cpp:8067
 msgid "Loose pulley"
 msgstr "Puleggia lenta"
 
 # 
-#: ultralcd.cpp:6944
+#: ultralcd.cpp:6699
 msgid "Load to nozzle"
 msgstr "Carica ugello"
 
 # MSG_M117_V2_CALIBRATION c=25
-#: messages.c:51
+#: messages.c:60
 msgid "M117 First layer cal."
 msgstr "M117 Calibr. primo strato"
 
 # MSG_MAIN
-#: messages.c:52
+#: messages.c:61
 msgid "Main"
 msgstr "Menu principale"
 
 # MSG_BL_HIGH c=12
-#: messages.c:135
+#: messages.c:155
 msgid "Level Bright"
 msgstr "Liv. Chiaro"
 
 # MSG_BL_LOW c=12
-#: messages.c:136
+#: messages.c:156
 msgid "Level Dimmed"
 msgstr "Liv. Scuro"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:55
+#: messages.c:65
 msgid "Measuring reference height of calibration point"
 msgstr "Misura altezza di rif. del punto di calib."
 
-# MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5856
+# MSG_MESH_BED_LEVELING c=18
+#: messages.c:148
 msgid "Mesh Bed Leveling"
 msgstr "Liv. grilia piano"
 
 # MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:765
+#: mmu.cpp:764
 msgid "MMU OK. Resuming position..."
 msgstr "MMU OK. riprendendo la posizione... "
 
 # MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:758
+#: mmu.cpp:757
 msgid "MMU OK. Resuming temperature..."
 msgstr "MMU OK. Ripristino temperatura... "
 
 # 
-#: ultralcd.cpp:3034
+#: ultralcd.cpp:2960
 msgid "Measured skew"
 msgstr "Deviazione mis"
 
-# 
-#: ultralcd.cpp:1728
+# MSG_MMU_FAILS c=14
+#: messages.c:68
 msgid "MMU fails"
 msgstr "Fallimenti MMU"
 
 # 
-#: mmu.cpp:1588
+#: mmu.cpp:1586
 msgid "MMU load failed     "
 msgstr "Caricamento MMU fallito"
 
-# 
-#: ultralcd.cpp:1729
+# MSG_MMU_LOAD_FAILS c=14
+#: messages.c:69
 msgid "MMU load fails"
 msgstr "Caricamenti MMU falliti"
 
 # MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:776
+#: mmu.cpp:775
 msgid "MMU OK. Resuming..."
 msgstr "MMU OK. Riprendendo... "
 
 # MSG_MODE
-#: messages.c:84
+#: messages.c:101
 msgid "Mode"
 msgstr "Mod."
 
 #  c=20 r=3
-#: Marlin_main.cpp:879
+#: Marlin_main.cpp:934
 msgid "MK3 firmware detected on MK3S printer"
 msgstr "Firmware MK3 rilevato su stampante MK3S"
 
 # MSG_NORMAL
-#: messages.c:88
+#: messages.c:105
 msgid "Normal"
 msgstr "Normale"
 
 # MSG_SILENT
-#: messages.c:87
+#: messages.c:104
 msgid "Silent"
 msgstr "Silenzioso"
 
 # 
-#: mmu.cpp:722
+#: mmu.cpp:721
 msgid "MMU needs user attention."
 msgstr "Il MMU richiede attenzione dall'utente."
 
 # 
-#: ultralcd.cpp:1755
+#: ultralcd.cpp:1701
 msgid "MMU power fails"
 msgstr "Manc. corr. MMU"
 
 # MSG_STEALTH
-#: messages.c:89
+#: messages.c:106
 msgid "Stealth"
 msgstr "Silenziosa"
 
 # MSG_AUTO_POWER
-#: messages.c:86
+#: messages.c:103
 msgid "Auto power"
 msgstr "Auto"
 
 # MSG_HIGH_POWER
-#: messages.c:85
+#: messages.c:102
 msgid "High power"
 msgstr "Forte"
 
 # 
-#: ultralcd.cpp:2186
+#: ultralcd.cpp:2124
 msgid "MMU2 connected"
 msgstr "MMU2 connessa"
 
 # MSG_SELFTEST_MOTOR
-#: messages.c:79
+#: messages.c:94
 msgid "Motor"
 msgstr "Motore"
 
 # MSG_MOVE_AXIS
-#: ultralcd.cpp:5741
+#: ultralcd.cpp:5681
 msgid "Move axis"
 msgstr "Muovi asse"
 
 # MSG_MOVE_X
-#: ultralcd.cpp:4361
+#: ultralcd.cpp:4262
 msgid "Move X"
 msgstr "Sposta X"
 
 # MSG_MOVE_Y
-#: ultralcd.cpp:4362
+#: ultralcd.cpp:4263
 msgid "Move Y"
 msgstr "Sposta Y"
 
 # MSG_MOVE_Z
-#: ultralcd.cpp:4363
+#: ultralcd.cpp:4264
 msgid "Move Z"
 msgstr "Sposta Z"
 
 # MSG_NO_MOVE
-#: Marlin_main.cpp:5541
+#: Marlin_main.cpp:5719
 msgid "No move."
 msgstr "Nessun movimento."
 
 # MSG_NO_CARD
-#: ultralcd.cpp:6911
+#: ultralcd.cpp:6673
 msgid "No SD card"
 msgstr "Nessuna SD"
 
 # MSG_NA
-#: messages.c:107
+#: messages.c:124
 msgid "N/A"
 msgstr "N/D"
 
 # MSG_NO
-#: messages.c:58
+#: messages.c:70
 msgid "No"
 msgstr ""
 
 # MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:8265
+#: ultralcd.cpp:8028
 msgid "Not connected"
 msgstr "Non connesso"
 
@@ -881,157 +891,157 @@ msgid "New firmware version available:"
 msgstr "Nuova versione firmware disponibile:"
 
 # MSG_SELFTEST_FAN_NO c=19
-#: messages.c:75
+#: messages.c:90
 msgid "Not spinning"
 msgstr "Non gira"
 
 # MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4946
+#: ultralcd.cpp:4847
 msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
 msgstr "Adesso calibro la distanza fra ugello e superfice del piatto."
 
 # MSG_WIZARD_WILL_PREHEAT c=20 r=4
-#: ultralcd.cpp:5071
+#: ultralcd.cpp:4972
 msgid "Now I will preheat nozzle for PLA."
 msgstr "Adesso preriscaldero l'ugello per PLA."
 
 # MSG_NOZZLE
-#: messages.c:59
+#: messages.c:71
 msgid "Nozzle"
 msgstr "Ugello"
 
 # MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
-#: Marlin_main.cpp:1518
+#: Marlin_main.cpp:1581
 msgid "Old settings found. Default PID, Esteps etc. will be set."
 msgstr "Sono state trovate impostazioni vecchie. Verranno impostati i valori predefiniti di PID, Esteps etc."
 
 # 
-#: ultralcd.cpp:5062
+#: ultralcd.cpp:4963
 msgid "Now remove the test print from steel sheet."
 msgstr "Ora rimuovete la stampa di prova dalla piastra in acciaio."
 
 # 
-#: ultralcd.cpp:1654
+#: ultralcd.cpp:1600
 msgid "Nozzle FAN"
 msgstr "Ventola estrusore"
 
 # MSG_PAUSE_PRINT
-#: ultralcd.cpp:6875
+#: ultralcd.cpp:6637
 msgid "Pause print"
 msgstr "Metti in pausa"
 
 # MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1539
+#: ultralcd.cpp:1485
 msgid "PID cal.           "
 msgstr "Calibrazione PID"
 
 # MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1545
+#: ultralcd.cpp:1491
 msgid "PID cal. finished"
 msgstr "Calib. PID completa"
 
 # MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5862
+#: ultralcd.cpp:5803
 msgid "PID calibration"
 msgstr "Calibrazione PID"
 
 # MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:896
+#: ultralcd.cpp:843
 msgid "PINDA Heating"
 msgstr "Riscaldamento PINDA"
 
 # MSG_PAPER c=20 r=10
-#: messages.c:60
+#: messages.c:72
 msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
 msgstr "Posizionare un foglio sotto l'ugello durante la calibrazione dei primi 4 punti. In caso l'ugello muova il foglio spegnere subito la stampante."
 
 # MSG_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:5128
+#: ultralcd.cpp:5029
 msgid "Please clean heatbed and then press the knob."
 msgstr "Per favore pulisci il piatto, poi premi la manopola."
 
 # MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
-#: messages.c:21
+#: messages.c:24
 msgid "Please clean the nozzle for calibration. Click when done."
 msgstr "Pulire l'ugello per la calibrazione, poi fare click."
 
 # MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:8257
+#: ultralcd.cpp:8022
 msgid "Please check :"
 msgstr "Verifica:"
 
 # MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:98
+#: messages.c:115
 msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
 msgstr "Per favore consulta il nostro manuale per risolvere il problema. Poi riprendi il Wizard dopo aver riavviato la stampante."
 
 # MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3138
+#: Marlin_main.cpp:3317
 msgid "Please open idler and remove filament manually."
 msgstr "Aprire la guida filam. e rimuovere il filam. a mano"
 
 # MSG_PLACE_STEEL_SHEET c=20 r=4
-#: messages.c:61
+#: messages.c:73
 msgid "Please place steel sheet on heatbed."
 msgstr "Per favore posizionate la piastra d'acciaio sul piano riscaldato."
 
 # MSG_PRESS_TO_UNLOAD c=20 r=4
-#: messages.c:64
+#: messages.c:77
 msgid "Please press the knob to unload filament"
 msgstr "Premete la manopola per scaricare il filamento "
 
 # MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:66
+#: messages.c:79
 msgid "Please pull out filament immediately"
 msgstr "Estrarre il filamento immediatamente"
 
 # MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1422
+#: mmu.cpp:1420
 msgid "Please remove filament and then press the knob."
 msgstr "Rimuovi il filamento e quindi premi la manopola. "
 
 # MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:70
+#: messages.c:82
 msgid "Please remove steel sheet from heatbed."
 msgstr "Rimuovete la piastra di acciaio dal piano riscaldato"
 
 # MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4583
+#: Marlin_main.cpp:4766
 msgid "Please run XYZ calibration first."
 msgstr "Esegui la calibrazione XYZ prima. "
 
 # MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1341
+#: mmu.cpp:1340
 msgid "Please update firmware in your MMU2. Waiting for reset."
 msgstr "Aggiorna il firmware sul tuo MMU2. In attesa di reset. "
 
 # MSG_PLEASE_WAIT c=20
-#: messages.c:62
+#: messages.c:74
 msgid "Please wait"
 msgstr "Attendere"
 
 # 
-#: ultralcd.cpp:5061
+#: ultralcd.cpp:4962
 msgid "Please remove shipping helpers first."
 msgstr "Per favore rimuovete i materiali da spedizione"
 
 # MSG_PREHEAT_NOZZLE c=20
-#: messages.c:63
+#: messages.c:76
 msgid "Preheat the nozzle!"
 msgstr "Prerisc. ugello!"
 
 # MSG_PREHEAT
-#: ultralcd.cpp:6853
+#: ultralcd.cpp:6615
 msgid "Preheat"
 msgstr "Preriscalda"
 
 # MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:100
+#: messages.c:117
 msgid "Preheating nozzle. Please wait."
 msgstr "Preriscaldando l'ugello. Attendere prego."
 
 #  c=14
-#: ultralcd.cpp:1959
+#: ultralcd.cpp:1905
 msgid "PINDA"
 msgstr ""
 
@@ -1041,107 +1051,112 @@ msgid "Please upgrade."
 msgstr "Prego aggiornare."
 
 # MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:11526
+#: Marlin_main.cpp:11718
 msgid "Press knob to preheat nozzle and continue."
 msgstr "Premete la manopola per preriscaldare l'ugello e continuare."
 
 # MSG_FS_PAUSE c=5
-#: fsensor.cpp:710
+#: fsensor.cpp:728
 msgid "Pause"
 msgstr "Pausa"
 
-# 
-#: ultralcd.cpp:1783
+# MSG_POWER_FAILURES c=14
+#: messages.c:75
 msgid "Power failures"
 msgstr "Mancanza corrente"
 
 # MSG_PRINT_ABORTED c=20
-#: messages.c:65
+#: messages.c:78
 msgid "Print aborted"
 msgstr "Stampa interrotta"
 
 #  c=20
-#: ultralcd.cpp:2442
+#: ultralcd.cpp:2390
 msgid "Preheating to load"
 msgstr "Preriscald. carico"
 
 #  c=20
-#: ultralcd.cpp:2446
+#: ultralcd.cpp:2395
 msgid "Preheating to unload"
 msgstr "Preriscald. scarico"
 
 # MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:8689
+#: ultralcd.cpp:8401
 msgid "Print fan:"
 msgstr "Vent.stam:"
 
 # MSG_CARD_MENU
-#: messages.c:20
+#: messages.c:21
 msgid "Print from SD"
 msgstr "Stampa da SD"
 
 # 
-#: ultralcd.cpp:2289
+#: ultralcd.cpp:2231
 msgid "Press the knob"
 msgstr "Premere la manopola"
 
 # MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1118
+#: ultralcd.cpp:1065
 msgid "Print paused"
 msgstr "Stampa in pausa"
 
 # 
-#: mmu.cpp:726
+#: mmu.cpp:725
 msgid "Press the knob to resume nozzle temperature."
 msgstr "Premete la manopola per recuperare la temperatura dell'ugello."
 
 # MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
-#: messages.c:38
+#: messages.c:45
 msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
 msgstr "Stampante non ancora calibrata. Si prega di seguire il manuale, capitolo Primi Passi, sezione Sequenza di Calibrazione."
 
 # 
-#: ultralcd.cpp:1655
+#: ultralcd.cpp:1601
 msgid "Print FAN"
 msgstr "Ventola di stampa"
 
 # 
-#: ultralcd.cpp:4926
+#: ultralcd.cpp:4827
 msgid "Please insert filament into the extruder, then press the knob to load it."
 msgstr "Inserisci il filamento nell'estrusore, poi premi la manopola per caricarlo."
 
 # 
-#: ultralcd.cpp:4921
+#: ultralcd.cpp:4822
 msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
 msgstr "Per favore inserisci il filamento nel primo tubo del MMU, poi premi la manopola per caricarlo."
 
 # 
-#: ultralcd.cpp:4843
+#: ultralcd.cpp:4744
 msgid "Please load filament first."
 msgstr "Per favore prima carica il filamento."
 
 # MSG_PRUSA3D
-#: ultralcd.cpp:2155
+#: ultralcd.cpp:2104
 msgid "prusa3d.com"
 msgstr ""
 
 # MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3267
+#: ultralcd.cpp:3191
 msgid "Rear side [um]"
 msgstr "Retro [um]"
 
 #  c=20 r=4
-#: ultralcd.cpp:7549
+#: ultralcd.cpp:7304
 msgid "Please unload the filament first, then repeat this action."
 msgstr "Scaricare prima il filamento, poi ripetere l'operazione."
 
+#  c=20 r=4
+#: ultralcd.cpp:7307
+msgid "Please check the IR sensor connection, unload filament if present."
+msgstr "Controllare il collegamento al sensore e rimuovere il filamento."
+
 # MSG_RECOVERING_PRINT c=20
-#: Marlin_main.cpp:10883
+#: Marlin_main.cpp:11076
 msgid "Recovering print    "
 msgstr "Recupero stampa     "
 
 # MSG_REMOVE_OLD_FILAMENT c=20 r=5
-#: mmu.cpp:833
+#: mmu.cpp:832
 msgid "Remove old filament and press the knob to start loading new filament."
 msgstr "Rimuovi il filamento precedente e premi la manopola per caricare il nuovo filamento."
 
@@ -1151,102 +1166,102 @@ msgid "Prusa i3 MK3S OK."
 msgstr ""
 
 # MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5867
+#: ultralcd.cpp:5808
 msgid "Reset XYZ calibr."
 msgstr "Reset calibrazione XYZ."
 
-# MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3268
+# MSG_RESET c=14
+#: messages.c:83
 msgid "Reset"
 msgstr ""
 
-# MSG_RESUME_PRINT
-#: ultralcd.cpp:6861
+# MSG_RESUME_PRINT c=18
+#: messages.c:84
 msgid "Resume print"
 msgstr "Riprendi stampa"
 
 # MSG_RESUMING_PRINT c=20
-#: messages.c:69
+#: messages.c:85
 msgid "Resuming print"
 msgstr "Riprendi stampa"
 
 # MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3265
+#: ultralcd.cpp:3189
 msgid "Right side[um]"
 msgstr "Destra [um]"
 
 # MSG_RPI_PORT
-#: messages.c:123
+#: messages.c:142
 msgid "RPi port"
 msgstr "Porta RPi"
 
 # MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4864
+#: ultralcd.cpp:4765
 msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
 msgstr "Se avvi il Wizard perderai la calibrazione preesistente e dovrai ricominciare dall'inizio. Continuare?"
 
 # MSG_SD_CARD
-#: messages.c:118
+#: messages.c:137
 msgid "SD card"
 msgstr "Mem. SD"
 
 # MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
-#: messages.c:119
+#: messages.c:138
 msgid "FlashAir"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2994
+#: ultralcd.cpp:2920
 msgid "Right"
 msgstr "Destra"
 
 # MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: messages.c:35
+#: messages.c:42
 msgid "Searching bed calibration point"
 msgstr "Ricerca dei punti di calibrazione del piano"
 
 # MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5779
+#: ultralcd.cpp:5721
 msgid "Select language"
 msgstr "Seleziona lingua"
 
 # MSG_SELFTEST_OK
-#: ultralcd.cpp:7812
+#: ultralcd.cpp:7579
 msgid "Self test OK"
 msgstr "Autotest OK"
 
 # MSG_SELFTEST_START c=20
-#: ultralcd.cpp:7582
+#: ultralcd.cpp:7347
 msgid "Self test start  "
 msgstr "Avvia autotest"
 
 # MSG_SELFTEST
-#: ultralcd.cpp:5843
+#: ultralcd.cpp:5784
 msgid "Selftest         "
 msgstr "Autotest         "
 
 # MSG_SELFTEST_ERROR
-#: ultralcd.cpp:8255
+#: ultralcd.cpp:8021
 msgid "Selftest error !"
 msgstr "Errore Autotest !"
 
 # MSG_SELFTEST_FAILED c=20
-#: messages.c:73
+#: messages.c:88
 msgid "Selftest failed  "
 msgstr "Autotest fallito"
 
 # MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1550
+#: Marlin_main.cpp:1613
 msgid "Selftest will be run to calibrate accurate sensorless rehoming."
 msgstr "Verra effettuato un self test per calibrare l'homing senza sensori"
 
 # 
-#: ultralcd.cpp:5102
+#: ultralcd.cpp:5003
 msgid "Select nozzle preheat temperature which matches your material."
 msgstr "Selezionate la temperatura per il preriscaldamento dell'ugello adatta al vostro materiale."
 
 # MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3286
+#: ultralcd.cpp:3209
 msgid "Set temperature:"
 msgstr "Imposta temperatura"
 
@@ -1266,187 +1281,187 @@ msgid "Prusa i3 MK3 OK."
 msgstr ""
 
 # MSG_SETTINGS
-#: messages.c:82
+#: messages.c:97
 msgid "Settings"
 msgstr "Impostazioni"
 
 # MSG_SHOW_END_STOPS c=18
-#: ultralcd.cpp:5864
+#: ultralcd.cpp:5805
 msgid "Show end stops"
 msgstr "Stato finecorsa"
 
 # 
-#: ultralcd.cpp:4008
+#: ultralcd.cpp:3915
 msgid "Sensor state"
 msgstr "Stato sensore"
 
 # MSG_FILE_CNT c=20 r=6
-#: cardreader.cpp:738
+#: cardreader.cpp:739
 msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
 msgstr "Alcuni file non saranno ordinati. Il numero massimo di file in una cartella e 100 perche siano ordinati."
 
 # MSG_SORT
-#: messages.c:120
+#: messages.c:139
 msgid "Sort"
 msgstr "Ordina"
 
 # MSG_NONE
-#: messages.c:110
+#: messages.c:127
 msgid "None"
 msgstr "Nessuno"
 
 # MSG_SORT_TIME
-#: messages.c:121
+#: messages.c:140
 msgid "Time"
 msgstr "Cron."
 
 # 
-#: ultralcd.cpp:3037
+#: ultralcd.cpp:2963
 msgid "Severe skew:"
 msgstr "Devia.grave:"
 
 # MSG_SORT_ALPHA
-#: messages.c:122
+#: messages.c:141
 msgid "Alphabet"
 msgstr "Alfabeti"
 
 # MSG_SORTING c=20 r=1
-#: cardreader.cpp:745
+#: cardreader.cpp:746
 msgid "Sorting files"
 msgstr "Ordinando i file"
 
 # MSG_SOUND_LOUD
-#: messages.c:125
+#: messages.c:144
 msgid "Loud"
 msgstr "Forte"
 
 # 
-#: ultralcd.cpp:3036
+#: ultralcd.cpp:2962
 msgid "Slight skew:"
 msgstr "Devia.lieve:"
 
 # MSG_SOUND
-#: messages.c:124
+#: messages.c:143
 msgid "Sound"
 msgstr "Suono"
 
 #  c=7
-#: ultralcd.cpp:1822
+#: ultralcd.cpp:1768
 msgid "Runouts"
 msgstr "Esaurim"
 
 # 
-#: Marlin_main.cpp:5101
+#: Marlin_main.cpp:5280
 msgid "Some problem encountered, Z-leveling enforced ..."
 msgstr "Sono stati rilevati problemi, avviato livellamento Z ..."
 
 # MSG_SOUND_ONCE
-#: messages.c:126
+#: messages.c:145
 msgid "Once"
 msgstr "Singolo"
 
 # MSG_SPEED
-#: ultralcd.cpp:7119
+#: ultralcd.cpp:6874
 msgid "Speed"
 msgstr "Velocita"
 
 # MSG_SELFTEST_FAN_YES c=19
-#: messages.c:76
+#: messages.c:91
 msgid "Spinning"
 msgstr "Gira"
 
 # MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4596
+#: Marlin_main.cpp:4779
 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
 msgstr "Sono necessari una temperatura ambiente di 21-26C e una superficie rigida "
 
 # MSG_STATISTICS
-#: ultralcd.cpp:6978
+#: ultralcd.cpp:6733
 msgid "Statistics  "
 msgstr "Statistiche"
 
 # MSG_STOP_PRINT
-#: messages.c:91
+#: messages.c:108
 msgid "Stop print"
 msgstr "Arresta stampa"
 
 # MSG_STOPPED
-#: messages.c:92
+#: messages.c:109
 msgid "STOPPED. "
 msgstr "ARRESTATO."
 
 # MSG_SUPPORT
-#: ultralcd.cpp:6987
+#: ultralcd.cpp:6742
 msgid "Support"
 msgstr "Supporto"
 
 # MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:8335
+#: ultralcd.cpp:8080
 msgid "Swapped"
 msgstr "Scambiato"
 
 # 
-#: ultralcd.cpp:4814
+#: ultralcd.cpp:4715
 msgid "Select filament:"
 msgstr "Seleziona il filamento:"
 
 # MSG_TEMP_CALIBRATION c=14
-#: messages.c:93
+#: messages.c:110
 msgid "Temp. cal."
 msgstr "Calib. temp."
 
 # 
-#: ultralcd.cpp:4955
+#: ultralcd.cpp:4856
 msgid "Select temperature which matches your material."
 msgstr "Seleziona la temperatura appropriata per il tuo materiale."
 
 # MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5873
+#: ultralcd.cpp:5816
 msgid "Temp. calibration"
 msgstr "Calib. Temp."
 
 # MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3933
+#: ultralcd.cpp:3845
 msgid "Temperature calibration failed"
 msgstr "Calibrazione temperatura fallita"
 
 # MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:94
+#: messages.c:111
 msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
 msgstr "Calibrazione temperatura completata e attiva. Puo essere disattivata dal menu Impostazioni ->Cal. Temp."
 
 #  c=20 r=3
-#: ultralcd.cpp:7554
+#: ultralcd.cpp:7311
 msgid "Sensor verified, remove the filament now."
 msgstr "Sensore verificato, rimuovere il filamento."
 
 # MSG_TEMPERATURE
-#: ultralcd.cpp:5739
+#: ultralcd.cpp:5679
 msgid "Temperature"
 msgstr ""
 
 # MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2218
+#: ultralcd.cpp:2160
 msgid "Temperatures"
 msgstr "Temperature"
 
 # MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
-#: messages.c:39
+#: messages.c:46
 msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
 msgstr "E ancora necessario effettuare la calibrazione Z. Segui il manuale, capitolo Primi Passi, sezione Sequenza di Calibrazione. "
 
 # 
-#: ultralcd.cpp:2891
+#: ultralcd.cpp:2817
 msgid "Total filament"
 msgstr "Filamento totale"
 
 # 
-#: ultralcd.cpp:2892
+#: ultralcd.cpp:2818
 msgid "Total print time"
 msgstr "Tempo stampa totale"
 
 # MSG_TUNE
-#: ultralcd.cpp:6850
+#: ultralcd.cpp:6612
 msgid "Tune"
 msgstr "Regola"
 
@@ -1455,63 +1470,63 @@ msgstr "Regola"
 msgid "Unload"
 msgstr "Scarica"
 
-# 
-#: ultralcd.cpp:1752
+# MSG_TOTAL_FAILURES c=20
+#: messages.c:99
 msgid "Total failures"
 msgstr "Totale fallimenti"
 
 # 
-#: ultralcd.cpp:2296
+#: ultralcd.cpp:2238
 msgid "to load filament"
 msgstr "per caricare il filamento"
 
 # 
-#: ultralcd.cpp:2300
+#: ultralcd.cpp:2242
 msgid "to unload filament"
 msgstr "per scaricare il filamento"
 
 # MSG_UNLOAD_FILAMENT c=17
-#: messages.c:95
+#: messages.c:112
 msgid "Unload filament"
 msgstr "Scarica filamento"
 
 # MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:96
+#: messages.c:113
 msgid "Unloading filament"
 msgstr "Scaricando filamento"
 
-# 
-#: ultralcd.cpp:1705
+# MSG_TOTAL c=6
+#: messages.c:98
 msgid "Total"
 msgstr "Totale"
 
 # MSG_USED c=19 r=1
-#: ultralcd.cpp:6001
+#: ultralcd.cpp:5932
 msgid "Used during print"
 msgstr "Usati nella stampa"
 
 # MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2221
+#: ultralcd.cpp:2163
 msgid "Voltages"
 msgstr "Voltaggi"
 
 # 
-#: ultralcd.cpp:2194
+#: ultralcd.cpp:2132
 msgid "unknown"
 msgstr "sconosciuto"
 
 # MSG_USERWAIT
-#: Marlin_main.cpp:5511
+#: Marlin_main.cpp:5689
 msgid "Wait for user..."
 msgstr "Attendendo utente..."
 
 # MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3434
+#: ultralcd.cpp:3357
 msgid "Waiting for nozzle and bed cooling"
 msgstr "In attesa del raffreddamento dell'ugello e del piano"
 
 # MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3395
+#: ultralcd.cpp:3318
 msgid "Waiting for PINDA probe cooling"
 msgstr "In attesa del raffreddamento della sonda PINDA"
 
@@ -1521,37 +1536,37 @@ msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU t
 msgstr "Usate lo scaricamento per rimuovere il filamento 1 se protrude dal retro del tubo posteriore del MMu. Utilizzate l'espulsione se e nascosto nel tubo."
 
 # MSG_CHANGED_BOTH c=20 r=4
-#: Marlin_main.cpp:1510
+#: Marlin_main.cpp:1573
 msgid "Warning: both printer type and motherboard type changed."
 msgstr "Attenzione: tipo di stampante e di scheda madre cambiati."
 
 # MSG_CHANGED_MOTHERBOARD c=20 r=4
-#: Marlin_main.cpp:1502
+#: Marlin_main.cpp:1565
 msgid "Warning: motherboard type changed."
 msgstr "Avviso: tipo di scheda madre cambiato"
 
 # MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1506
+#: Marlin_main.cpp:1569
 msgid "Warning: printer type changed."
 msgstr "Avviso: tipo di stampante cambiato."
 
 # MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3128
+#: Marlin_main.cpp:3308
 msgid "Was filament unload successful?"
 msgstr "Filamento scaricato con successo?"
 
 # MSG_SELFTEST_WIRINGERROR
-#: messages.c:81
+#: messages.c:96
 msgid "Wiring error"
 msgstr "Errore cablaggio"
 
 # MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5834
+#: ultralcd.cpp:5775
 msgid "Wizard"
 msgstr ""
 
 # MSG_XYZ_DETAILS c=18
-#: ultralcd.cpp:2210
+#: ultralcd.cpp:2152
 msgid "XYZ cal. details"
 msgstr "XYZ Cal. dettagli"
 
@@ -1561,182 +1576,177 @@ msgid "XYZ calibration failed. Please consult the manual."
 msgstr "Calibrazione XYZ fallita. Si prega di consultare il manuale."
 
 # MSG_YES
-#: messages.c:102
+#: messages.c:119
 msgid "Yes"
 msgstr "Si"
 
 # MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:101
+#: messages.c:118
 msgid "You can always resume the Wizard from Calibration -> Wizard."
 msgstr "E possibile riprendere il Wizard in qualsiasi momento attraverso Calibrazione -> Wizard."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
-#: ultralcd.cpp:3904
+#: ultralcd.cpp:3817
 msgid "XYZ calibration all right. Skew will be corrected automatically."
 msgstr "Calibrazione XYZ corretta. La distorsione verra compensata automaticamente."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
-#: ultralcd.cpp:3901
+#: ultralcd.cpp:3814
 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
 msgstr "Calibrazion XYZ corretta. Assi X/Y leggermente storti. Ben fatto!"
 
 # MSG_TIMEOUT c=12
-#: messages.c:137
+#: messages.c:157
 msgid "Timeout"
 msgstr ""
 
 # MSG_X_CORRECTION c=13
-#: ultralcd.cpp:5190
+#: ultralcd.cpp:5091
 msgid "X-correct:"
 msgstr "Correzione-X:"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3898
+#: ultralcd.cpp:3811
 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
 msgstr "Calibrazione XYZ OK. Gli assi X/Y sono perpendicolari. Complimenti!"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
-#: ultralcd.cpp:3882
+#: ultralcd.cpp:3795
 msgid "XYZ calibration compromised. Front calibration points not reachable."
 msgstr "Calibrazione XYZ compromessa. Punti anteriori non raggiungibili."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3885
+#: ultralcd.cpp:3798
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "Calibrazione XYZ compromessa. Punto anteriore destro non raggiungibile."
 
 # MSG_LOAD_ALL c=17
-#: ultralcd.cpp:6261
+#: ultralcd.cpp:6171
 msgid "Load all"
 msgstr "Caricare tutti"
 
 # 
-#: ultralcd.cpp:3864
+#: ultralcd.cpp:3777
 msgid "XYZ calibration failed. Bed calibration point was not found."
 msgstr "Calibrazione XYZ fallita. Il punto di calibrazione sul piano non e' stato trovato."
 
 # 
-#: ultralcd.cpp:3870
+#: ultralcd.cpp:3783
 msgid "XYZ calibration failed. Front calibration points not reachable."
 msgstr "Calibrazione XYZ fallita. Punti anteriori non raggiungibili."
 
 # 
-#: ultralcd.cpp:3873
+#: ultralcd.cpp:3786
 msgid "XYZ calibration failed. Right front calibration point not reachable."
 msgstr "Calibrazione XYZ fallita. Punto anteriore destro non raggiungibile."
 
 # 
-#: ultralcd.cpp:2991
+#: ultralcd.cpp:2917
 msgid "Y distance from min"
 msgstr "Distanza Y dal min"
 
 # 
-#: ultralcd.cpp:4958
+#: ultralcd.cpp:4859
 msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
 msgstr "La stampante iniziera a stampare una linea a zig-zag. Gira la manopola fino a che non hai raggiungo l'altezza ottimale. Verifica con le immagini nel manuale (capitolo sulla calibrazione):"
 
 #  c=20 r=5
-#: ultralcd.cpp:7558
+#: ultralcd.cpp:7315
 msgid "Verification failed, remove the filament and try again."
 msgstr "Verifica fallita, rimuovere il filamento e riprovare."
 
 # MSG_Y_CORRECTION c=13
-#: ultralcd.cpp:5191
+#: ultralcd.cpp:5092
 msgid "Y-correct:"
 msgstr "Correzione-Y:"
 
 # MSG_OFF
-#: messages.c:105
+#: messages.c:122
 msgid "Off"
 msgstr ""
 
 # MSG_ON
-#: messages.c:106
+#: messages.c:123
 msgid "On"
 msgstr ""
 
 # 
-#: messages.c:53
+#: messages.c:62
 msgid "Back"
 msgstr "Indietro"
 
 # 
-#: ultralcd.cpp:5724
+#: ultralcd.cpp:5647
 msgid "Checks"
 msgstr "Controlli"
 
 # 
-#: ultralcd.cpp:8349
+#: ultralcd.cpp:8090
 msgid "False triggering"
 msgstr "Falso innesco"
 
 # 
-#: ultralcd.cpp:4013
+#: ultralcd.cpp:3920
 msgid "FINDA:"
 msgstr ""
 
 # MSG_FIRMWARE
-#: language.h:23
+#: language.h:24
 msgid "Firmware"
 msgstr ""
 
 # MSG_STRICT
-#: messages.c:112
+#: messages.c:129
 msgid "Strict"
 msgstr "Esatto"
 
 # MSG_WARN
-#: messages.c:111
+#: messages.c:128
 msgid "Warn"
 msgstr "Avviso"
 
-# 
-#: messages.c:83
+# MSG_HW_SETUP c=18
+#: messages.c:100
 msgid "HW Setup"
 msgstr "Impostazioni HW"
 
 # 
-#: ultralcd.cpp:4017
+#: ultralcd.cpp:3924
 msgid "IR:"
 msgstr ""
 
 # MSG_MAGNETS_COMP
-#: messages.c:130
+#: messages.c:150
 msgid "Magnets comp."
 msgstr "Comp. Magneti"
 
 # MSG_MESH
-#: messages.c:128
+#: messages.c:147
 msgid "Mesh"
 msgstr "Griglia"
 
 # 
-#: ultralcd.cpp:5763
-msgid "Mesh bed leveling"
-msgstr "Liv. griglia piano"
-
-# 
-#: Marlin_main.cpp:872
+#: Marlin_main.cpp:927
 msgid "MK3S firmware detected on MK3 printer"
 msgstr "Firmware MK3S rilevato su stampante MK3"
 
 # MSG_MMU_MODE
-#: messages.c:117
+#: messages.c:136
 msgid "MMU Mode"
 msgstr "Mod. MMU"
 
 # 
-#: ultralcd.cpp:4494
+#: ultralcd.cpp:4395
 msgid "Mode change in progress ..."
 msgstr "Cambio modalita in corso ..."
 
 # MSG_MODEL
-#: messages.c:113
+#: messages.c:130
 msgid "Model"
 msgstr "Modello"
 
 # MSG_NOZZLE_DIAMETER
-#: messages.c:116
+#: messages.c:135
 msgid "Nozzle d."
 msgstr "Diam.Ugello"
 
@@ -1750,13 +1760,13 @@ msgstr "G-code processato per un livello diverso. Continuare?"
 msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
 msgstr "G-code processato per un livello diverso. Per favore esegui nuovamente lo slice del modello. Stampa annullata."
 
-# 
-#: util.cpp:431
+# MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5
+#: messages.c:133
 msgid "G-code sliced for a different printer type. Continue?"
 msgstr "G-code processato per una stampante diversa. Continuare?"
 
-# 
-#: util.cpp:437
+# MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=6
+#: messages.c:134
 msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
 msgstr "G-code processato per una stampante diversa. Per favore esegui nuovamente lo slice del modello. Stampa annullata."
 
@@ -1771,17 +1781,17 @@ msgid "G-code sliced for a newer firmware. Please update the firmware. Print can
 msgstr "G-code processato per un firmware piu recente. Per favore aggiorna il firmware. Stampa annullata."
 
 # 
-#: ultralcd.cpp:4009
+#: ultralcd.cpp:3916
 msgid "PINDA:"
 msgstr ""
 
 #  c=20
-#: ultralcd.cpp:2452
+#: ultralcd.cpp:2402
 msgid "Preheating to cut"
 msgstr "Preriscalda. taglio"
 
 #  c=20
-#: ultralcd.cpp:2449
+#: ultralcd.cpp:2399
 msgid "Preheating to eject"
 msgstr "Preriscalda. espuls."
 
@@ -1796,47 +1806,47 @@ msgid "Printer nozzle diameter differs from the G-code. Please check the value i
 msgstr "Diametro ugello diverso dal G-Code. Controlla il valore nelle impostazioni. Stampa annullata."
 
 #  c=20
-#: ultralcd.cpp:8355
+#: ultralcd.cpp:8095
 msgid "%s level expected"
 msgstr "atteso livello %s"
 
 # 
-#: ultralcd.cpp:6814
+#: ultralcd.cpp:6574
 msgid "Rename"
 msgstr "Rinomina"
 
 # 
-#: ultralcd.cpp:6807
+#: ultralcd.cpp:6567
 msgid "Select"
 msgstr "Seleziona"
 
 # 
-#: ultralcd.cpp:2212
+#: ultralcd.cpp:2154
 msgid "Sensor info"
 msgstr "Info Sensore"
 
 # MSG_SHEET c=10
-#: messages.c:54
+#: messages.c:63
 msgid "Sheet"
 msgstr "Piano"
 
 # MSG_SOUND_BLIND
-#: messages.c:127
+#: messages.c:146
 msgid "Assist"
 msgstr "Assist."
 
-#  c=18
-#: ultralcd.cpp:5722
+# MSG_STEEL_SHEET c=18
+#: messages.c:64
 msgid "Steel sheets"
 msgstr "Piani d'acciaio"
 
 # MSG_Z_CORRECTION c=13
-#: ultralcd.cpp:5192
+#: ultralcd.cpp:5093
 msgid "Z-correct:"
 msgstr "Correzione-Z:"
 
 # MSG_Z_PROBE_NR
-#: messages.c:129
+#: messages.c:149
 msgid "Z-probe nr."
 msgstr "Nr. Z-test"
 

+ 391 - 381
lang/po/Firmware_pl.po

@@ -7,8 +7,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pl\n"
 "Project-Id-Version: Prusa-Firmware\n"
-"POT-Creation-Date: Fri May 15 18:16:57 CEST 2020\n"
-"PO-Revision-Date: Fri May 15 18:16:57 CEST 2020\n"
+"POT-Creation-Date: Di 26. Jan 11:04:15 CET 2021\n"
+"PO-Revision-Date: Di 26. Jan 11:04:15 CET 2021\n"
 "Language-Team: \n"
 "X-Generator: Poedit 2.0.7\n"
 "X-Poedit-SourceCharset: UTF-8\n"
@@ -20,28 +20,43 @@ msgstr ""
 msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
 msgstr "[%.7s]Live Adj. Z\x0austaw., kontynuowac\x0aczy zaczac od 0?\x0a%cKontynuuj%cReset"
 
-# MSG_03_OR_OLDER c=18
-#: messages.c:144
+# MSG_IR_03_OR_OLDER c=18
+#: messages.c:164
 msgid " 0.3 or older"
 msgstr " 0.3 lub starszy"
 
-# MSG_04_OR_NEWER c=18
-#: messages.c:143
+#  c=18
+#: Marlin_main.cpp:9626
+msgid "FS v0.3 or older"
+msgstr "FS 0.3 lub starszy"
+
+# MSG_IR_04_OR_NEWER c=18
+#: messages.c:163
 msgid " 0.4 or newer"
 msgstr " 0.4 lub nowszy"
 
+#  c=18
+#: Marlin_main.cpp:9625
+msgid "FS v0.4 or newer"
+msgstr "FS 0.4 lub nowszy"
+
+# MSG_IR_UNKNOWN c=18
+#: messages.c:165
+msgid "unknown state"
+msgstr "Stan nieznany"
+
 # MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
-#: messages.c:36
+#: messages.c:43
 msgid " of 4"
 msgstr " z 4"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:56
+#: messages.c:66
 msgid " of 9"
 msgstr " z 9"
 
 # MSG_MEASURED_OFFSET
-#: ultralcd.cpp:3064
+#: ultralcd.cpp:2988
 msgid "[0;0] point offset"
 msgstr "[0;0] przesun.punktu"
 
@@ -56,47 +71,47 @@ msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
 msgstr "UWAGA:\x0aWykrywanie zderzen\x0awylaczone w\x0atrybie Stealth"
 
 # 
-#: ultralcd.cpp:2460
+#: ultralcd.cpp:2410
 msgid ">Cancel"
 msgstr ">Anuluj"
 
 # MSG_BABYSTEPPING_Z c=15
-#: ultralcd.cpp:3184
+#: ultralcd.cpp:3108
 msgid "Adjusting Z:"
 msgstr "Ustawianie Z:"
 
 # MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:8677
+#: ultralcd.cpp:8390
 msgid "All correct      "
 msgstr "Wszystko OK "
 
 # MSG_WIZARD_DONE c=20 r=8
-#: messages.c:99
+#: messages.c:116
 msgid "All is done. Happy printing!"
 msgstr "Gotowe. Udanego drukowania!"
 
 # 
-#: ultralcd.cpp:1956
+#: ultralcd.cpp:1902
 msgid "Ambient"
 msgstr "Otoczenie"
 
 # MSG_AUTO c=6
-#: messages.c:140
+#: messages.c:160
 msgid "Auto"
 msgstr ""
 
 # MSG_PRESS c=20 r=2
-#: ultralcd.cpp:2609
+#: ultralcd.cpp:2567
 msgid "and press the knob"
 msgstr "i nacisnij pokretlo"
 
 # MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3506
+#: ultralcd.cpp:3429
 msgid "Are left and right Z~carriages all up?"
 msgstr "Obydwa konce osi sa na szczycie?"
 
 # MSG_AUTO_DEPLETE c=17 r=1
-#: messages.c:108
+#: messages.c:125
 msgid "SpoolJoin"
 msgstr ""
 
@@ -106,32 +121,32 @@ msgid "Auto home"
 msgstr "Auto zerowanie"
 
 # MSG_AUTOLOAD_FILAMENT c=18
-#: ultralcd.cpp:6961
+#: ultralcd.cpp:6716
 msgid "AutoLoad filament"
 msgstr "Autoladowanie fil."
 
 # MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4445
+#: ultralcd.cpp:4346
 msgid "Autoloading filament available only when filament sensor is turned on..."
 msgstr "Autoladowanie fil. dostepne tylko gdy czujnik filamentu jest wlaczony..."
 
 # MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2804
+#: ultralcd.cpp:2730
 msgid "Autoloading filament is active, just press the knob and insert filament..."
 msgstr "Autoladowanie filamentu wlaczone, nacisnij pokretlo i wsun filament..."
 
 # MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:8325
+#: ultralcd.cpp:8073
 msgid "Axis length"
 msgstr "Dlugosc osi"
 
 # MSG_SELFTEST_AXIS
-#: ultralcd.cpp:8327
+#: ultralcd.cpp:8074
 msgid "Axis"
 msgstr "Os"
 
 # MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:8269
+#: ultralcd.cpp:8031
 msgid "Bed / Heater"
 msgstr "Stol / Grzanie"
 
@@ -146,12 +161,12 @@ msgid "Bed Heating"
 msgstr "Grzanie stolu.."
 
 # MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5861
+#: ultralcd.cpp:5802
 msgid "Bed level correct"
 msgstr "Korekta stolu"
 
 # MSG_BELTTEST c=17
-#: ultralcd.cpp:5841
+#: ultralcd.cpp:5782
 msgid "Belt test        "
 msgstr "Test paskow"
 
@@ -161,12 +176,12 @@ msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for
 msgstr "Kalibracja nieudana. Sensor nie aktywowal sie. Zanieczysz. dysza? Czekam na reset."
 
 # MSG_BRIGHT c=6
-#: messages.c:138
+#: messages.c:158
 msgid "Bright"
 msgstr "Jasny"
 
 # MSG_BRIGHTNESS c=18
-#: messages.c:134
+#: messages.c:154
 msgid "Brightness"
 msgstr "Jasnosc"
 
@@ -175,123 +190,123 @@ msgstr "Jasnosc"
 msgid "Bed"
 msgstr "Stol"
 
-# MSG_MENU_BELT_STATUS c=18
-#: ultralcd.cpp:2009
+# MSG_BELT_STATUS c=18
+#: 
 msgid "Belt status"
 msgstr "Stan paskow"
 
 # MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:67
+#: messages.c:80
 msgid "Blackout occurred. Recover print?"
 msgstr "Wykryto zanik napiecia. Kontynowac?"
 
 # 
-#: ultralcd.cpp:8679
+#: ultralcd.cpp:8392
 msgid "Calibrating home"
 msgstr "Zerowanie osi"
 
 # MSG_CALIBRATE_BED
-#: ultralcd.cpp:5850
+#: ultralcd.cpp:5791
 msgid "Calibrate XYZ"
 msgstr "Kalibracja XYZ"
 
 # MSG_HOMEYZ
-#: messages.c:44
+#: messages.c:51
 msgid "Calibrate Z"
 msgstr "Kalibruj Z"
 
 # MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4637
+#: ultralcd.cpp:4538
 msgid "Calibrate"
 msgstr "Kalibruj"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3469
+#: ultralcd.cpp:3392
 msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr "Kalibracja XYZ. Przekrec pokretlo, aby przesunac os Z do gornych ogranicznikow. Nacisnij, by potwierdzic."
 
 # MSG_CALIBRATE_Z_AUTO c=20 r=2
-#: messages.c:19
+#: messages.c:20
 msgid "Calibrating Z"
 msgstr "Kalibruje Z"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3469
+#: ultralcd.cpp:3392
 msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr "Kalibracja XYZ. Przekrec pokretlo, aby przesunac os Z do gornych ogranicznikow. Nacisnij, by potwierdzic."
 
 # MSG_HOMEYZ_DONE
-#: ultralcd.cpp:865
+#: ultralcd.cpp:813
 msgid "Calibration done"
 msgstr "Kalibracja OK"
 
 # MSG_MENU_CALIBRATION
-#: messages.c:57
+#: messages.c:67
 msgid "Calibration"
 msgstr "Kalibracja"
 
 # 
-#: ultralcd.cpp:4815
+#: ultralcd.cpp:4716
 msgid "Cancel"
 msgstr "Anuluj"
 
 # MSG_SD_REMOVED
-#: ultralcd.cpp:9090
+#: ultralcd.cpp:8842
 msgid "Card removed"
 msgstr "Karta wyjeta"
 
 # MSG_NOT_COLOR
-#: ultralcd.cpp:2709
+#: ultralcd.cpp:2647
 msgid "Color not correct"
 msgstr "Kolor zanieczysz."
 
 # MSG_COOLDOWN
-#: messages.c:22
+#: messages.c:25
 msgid "Cooldown"
 msgstr "Chlodzenie"
 
 # 
-#: ultralcd.cpp:4570
+#: ultralcd.cpp:4471
 msgid "Copy selected language?"
 msgstr "Skopiowac wybrany jezyk?"
 
 # MSG_CRASHDETECT_ON
-#: messages.c:24
+#: messages.c:28
 msgid "Crash det."
 msgstr "Wykr.zderzen"
 
 # 
-#: ultralcd.cpp:4950
+#: ultralcd.cpp:4851
 msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
 msgstr "Wybierz filament do Kalibracji Pierwszej Warstwy i potwierdz w menu ekranowym."
 
 # MSG_CRASH_DETECTED c=20 r=1
-#: messages.c:23
+#: messages.c:27
 msgid "Crash detected."
 msgstr "Zderzenie wykryte"
 
 # 
-#: Marlin_main.cpp:607
+#: Marlin_main.cpp:657
 msgid "Crash detected. Resume print?"
 msgstr "Wykryto zderzenie. Wznowic druk?"
 
-# 
-#: ultralcd.cpp:1785
+# MSG_CRASH c=7
+#: messages.c:26
 msgid "Crash"
-msgstr "Zderzenie"
+msgstr "Zderzen"
 
 # MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:6002
+#: ultralcd.cpp:5933
 msgid "Current"
 msgstr "Aktualne"
 
 # MSG_DATE c=17 r=1
-#: ultralcd.cpp:2163
+#: ultralcd.cpp:2112
 msgid "Date:"
 msgstr "Data:"
 
 # MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5743
+#: ultralcd.cpp:5683
 msgid "Disable steppers"
 msgstr "Wylacz silniki"
 
@@ -301,377 +316,372 @@ msgid "Distance between tip of the nozzle and the bed surface has not been set y
 msgstr "Odleglosc dyszy od powierzchni druku nie jest skalibrowana. Postepuj zgodnie z instrukcja: rozdzial Wprowadzenie - Kalibracja pierwszej warstwy."
 
 # MSG_FS_CONTINUE c=5
-#: messages.c:132
+#: messages.c:152
 msgid "Cont."
 msgstr "Kont."
 
 # MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:5125
+#: ultralcd.cpp:5026
 msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
 msgstr "Chcesz powtorzyc ostatni krok i ponownie ustawic odleglosc miedzy dysza a stolikiem?"
 
 # MSG_EXTRUDER_CORRECTION c=13
-#: ultralcd.cpp:5194
+#: ultralcd.cpp:5095
 msgid "E-correct:"
 msgstr "Korekcja-E:"
 
-# MSG_EJECT_FILAMENT c=17 r=1
-#: messages.c:49
+# MSG_EJECT_FILAMENT c=16
+#: messages.c:58
 msgid "Eject filament"
 msgstr "Wysun filament"
 
 # MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1416
+#: mmu.cpp:1414
 msgid "Ejecting filament"
 msgstr "Wysuwanie filamentu"
 
 # MSG_SELFTEST_ENDSTOP_NOTHIT c=20
-#: ultralcd.cpp:8293
+#: ultralcd.cpp:8049
 msgid "Endstop not hit"
 msgstr "Krancowka nie aktyw."
 
 # MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:8287
+#: ultralcd.cpp:8044
 msgid "Endstop"
 msgstr "Krancowka"
 
 # MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:8275
+#: ultralcd.cpp:8035
 msgid "Endstops"
 msgstr "Krancowki"
 
 # MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6998
+#: ultralcd.cpp:6753
 msgid "Error - static memory has been overwritten"
 msgstr "Blad - pamiec statyczna zostala nadpisana"
 
 # MSG_CUT_FILAMENT c=16
-#: messages.c:50
+#: messages.c:59
 msgid "Cut filament"
 msgstr "Ciecie filamentu"
 
 # MSG_CUTTER c=9
-#: messages.c:109
+#: messages.c:126
 msgid "Cutter"
 msgstr "Nozyk"
 
 #  c=18
-#: mmu.cpp:1388
+#: mmu.cpp:1386
 msgid "Cutting filament"
 msgstr "Obcinanie fil."
 
 # MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4458
+#: ultralcd.cpp:4359
 msgid "ERROR: Filament sensor is not responding, please check connection."
 msgstr "BLAD: Czujnik filamentu nie odpowiada, sprawdz polaczenie."
 
 # MSG_DIM c=6
-#: messages.c:139
+#: messages.c:159
 msgid "Dim"
 msgstr "Sciemn"
 
 # MSG_ERROR
-#: messages.c:25
+#: messages.c:29
 msgid "ERROR:"
 msgstr "BLAD:"
 
 # MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:8686
+#: ultralcd.cpp:8398
 msgid "Extruder fan:"
 msgstr "WentHotend:"
 
 # MSG_INFO_EXTRUDER c=18
-#: ultralcd.cpp:2211
+#: ultralcd.cpp:2153
 msgid "Extruder info"
 msgstr "Ekstruder - info"
 
-# MSG_MOVE_E
-#: messages.c:26
+# MSG_EXTRUDER c=17
+#: messages.c:30
 msgid "Extruder"
 msgstr "Ekstruder"
 
 # 
-#: ultralcd.cpp:6985
+#: ultralcd.cpp:6740
 msgid "Fail stats MMU"
 msgstr "Bledy MMU"
 
 # MSG_FSENSOR_AUTOLOAD c=13
-#: messages.c:40
+#: messages.c:47
 msgid "F. autoload"
 msgstr "Autolad. fil."
 
 # 
-#: ultralcd.cpp:6982
+#: ultralcd.cpp:6737
 msgid "Fail stats"
 msgstr "Statystyki bledow"
 
 # MSG_FAN_SPEED c=14
-#: messages.c:28
+#: messages.c:34
 msgid "Fan speed"
 msgstr "Predkosc went."
 
 # MSG_SELFTEST_FAN c=20
-#: messages.c:74
+#: messages.c:89
 msgid "Fan test"
 msgstr "Test wentylatora"
 
-# MSG_FANS_CHECK
-#: ultralcd.cpp:5751
+# MSG_FANS_CHECK c=13
+#: messages.c:31
 msgid "Fans check"
 msgstr "Sprawd.went."
 
 # MSG_FSENSOR
-#: messages.c:41
+#: messages.c:48
 msgid "Fil. sensor"
 msgstr "Czuj. filam."
 
-#  c=14
-#: ultralcd.cpp:1784
-msgid "Filam. runouts"
+# MSG_FIL_RUNOUTS c=14
+#: 
+msgid "Fil. runouts  "
 msgstr "Konc.filamentu"
 
 # MSG_FILAMENT_CLEAN c=20 r=2
-#: messages.c:29
+#: messages.c:35
 msgid "Filament extruding & with correct color?"
 msgstr "Filament wychodzi z dyszy,kolor jest ok?"
 
 # MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2705
+#: ultralcd.cpp:2646
 msgid "Filament not loaded"
 msgstr "Fil. nie zaladowany"
 
 # MSG_FILAMENT_SENSOR c=20
-#: messages.c:80
+#: messages.c:95
 msgid "Filament sensor"
 msgstr "Czujnik filamentu"
 
 # MSG_FILAMENT_USED c=19
-#: ultralcd.cpp:2869
+#: ultralcd.cpp:2795
 msgid "Filament used"
 msgstr "Uzyty filament"
 
 # MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2870
+#: ultralcd.cpp:2796
 msgid "Print time"
 msgstr "Czas druku"
 
 # MSG_FS_ACTION c=10
-#: messages.c:131
+#: messages.c:151
 msgid "FS Action"
 msgstr "Akcja FS"
 
-#  c=18
-#: Marlin_main.cpp:9512
-msgid "FS v0.4 or newer"
-msgstr "FS v0.4 lub nowszy"
-
 # MSG_FILE_INCOMPLETE c=20 r=3
-#: ultralcd.cpp:8814
+#: ultralcd.cpp:8540
 msgid "File incomplete. Continue anyway?"
 msgstr "Plik niekompletny. Kontynowac?"
 
 # MSG_FINISHING_MOVEMENTS c=20
-#: messages.c:37
+#: messages.c:44
 msgid "Finishing movements"
 msgstr "Konczenie druku"
 
 # MSG_V2_CALIBRATION c=18
-#: messages.c:103
+#: messages.c:120
 msgid "First layer cal."
 msgstr "Kal. 1. warstwy"
 
 # MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:5046
+#: ultralcd.cpp:4947
 msgid "First, I will run the selftest to check most common assembly problems."
 msgstr "Najpierw wlacze selftest w celu sprawdzenia najczestszych problemow podczas montazu."
 
 # 
-#: mmu.cpp:727
+#: mmu.cpp:726
 msgid "Fix the issue and then press button on MMU unit."
 msgstr "Rozwiaz problem i wcisnij przycisk na MMU."
 
 # MSG_FLOW
-#: ultralcd.cpp:7125
+#: ultralcd.cpp:6880
 msgid "Flow"
 msgstr "Przeplyw"
 
 # MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2156
+#: ultralcd.cpp:2105
 msgid "forum.prusa3d.com"
 msgstr ""
 
 # MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:71
+#: messages.c:86
 msgid "Front print fan?"
 msgstr "Przedni went. druku?"
 
 # MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3266
+#: ultralcd.cpp:3190
 msgid "Front side[um]"
 msgstr "Przod [um]"
 
 # MSG_SELFTEST_FANS
-#: ultralcd.cpp:8333
+#: ultralcd.cpp:8079
 msgid "Front/left fans"
 msgstr "Przedni/lewy wentylator"
 
 # MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:8263
+#: ultralcd.cpp:8027
 msgid "Heater/Thermistor"
 msgstr "Grzalka/Termistor"
 
 # MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:9440
+#: Marlin_main.cpp:9616
 msgid "Heating disabled by safety timer."
 msgstr "Grzanie wylaczone przez wyl. czasowy"
 
 # MSG_HEATING_COMPLETE c=20
-#: messages.c:43
+#: messages.c:50
 msgid "Heating done."
 msgstr "Grzanie zakonczone"
 
 # MSG_HEATING
-#: messages.c:42
+#: messages.c:49
 msgid "Heating"
 msgstr "Grzanie..."
 
 # MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:5025
+#: ultralcd.cpp:4926
 msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
 msgstr "Czesc, jestem Twoja drukarka Original Prusa i3. Czy potrzebujesz pomocy z ustawieniem?"
 
 # MSG_PRUSA3D_HOWTO
-#: ultralcd.cpp:2157
+#: ultralcd.cpp:2106
 msgid "howto.prusa3d.com"
 msgstr ""
 
 # MSG_FILAMENTCHANGE
-#: messages.c:34
+#: messages.c:41
 msgid "Change filament"
 msgstr "Wymiana filamentu"
 
 # MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2620
+#: ultralcd.cpp:2576
 msgid "Change success!"
 msgstr "Wymiana ok!"
 
 # MSG_CORRECTLY c=20
-#: ultralcd.cpp:2697
+#: ultralcd.cpp:2644
 msgid "Changed correctly?"
 msgstr "Wymiana ok?"
 
 # MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:77
+#: messages.c:92
 msgid "Checking bed     "
 msgstr "Kontrola stolu"
 
 # MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:8668
+#: ultralcd.cpp:8381
 msgid "Checking endstops"
 msgstr "Kontrola krancowek"
 
 # MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:8674
+#: ultralcd.cpp:8387
 msgid "Checking hotend  "
 msgstr "Kontrola hotendu"
 
 # MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:78
+#: messages.c:93
 msgid "Checking sensors "
 msgstr "Kontrola czujnikow"
 
-# MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:7482
-msgid "Checking X axis  "
+# MSG_CHECKING_X c=20
+#: messages.c:22
+msgid "Checking X axis"
 msgstr "Kontrola osi X"
 
-# MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:7491
-msgid "Checking Y axis  "
+# MSG_CHECKING_Y c=20
+#: messages.c:23
+msgid "Checking Y axis"
 msgstr "Kontrola osi Y"
 
 # MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:8671
-msgid "Checking Z axis  "
+#: 
+msgid "Checking Z axis"
 msgstr "Kontrola osi Z"
 
 # MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:45
+#: messages.c:52
 msgid "Choose extruder:"
 msgstr "Wybierz ekstruder:"
 
 # MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:46
+#: messages.c:53
 msgid "Choose filament:"
 msgstr "Wybierz filament:"
 
 # MSG_FILAMENT c=17 r=1
-#: messages.c:27
+#: messages.c:33
 msgid "Filament"
 msgstr ""
 
 # MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:5055
+#: ultralcd.cpp:4956
 msgid "I will run xyz calibration now. It will take approx. 12 mins."
 msgstr "Przeprowadze teraz kalibracje XYZ. Zajmie ok. 12 min."
 
 # MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:5063
+#: ultralcd.cpp:4964
 msgid "I will run z calibration now."
 msgstr "Przeprowadze kalibracje Z."
 
 # MSG_WATCH
-#: messages.c:97
+#: messages.c:114
 msgid "Info screen"
 msgstr "Ekran informacyjny"
 
 # MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2605
+#: ultralcd.cpp:2564
 msgid "Insert filament"
 msgstr "Wprowadz filament"
 
-# MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4835
+# MSG_FILAMENT_LOADED c=20 r=2
+#: messages.c:36
 msgid "Is filament loaded?"
 msgstr "Filament jest zaladowany?"
 
 # MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:90
+#: messages.c:107
 msgid "Is steel sheet on heatbed?"
 msgstr "Czy plyta stal. jest na podgrzew. stole?"
 
-# 
-#: ultralcd.cpp:1727
+# MSG_LAST_PRINT_FAILURES c=20
+#: messages.c:55
 msgid "Last print failures"
 msgstr "Ostatnie bledy druku"
 
 # 
-#: ultralcd.cpp:5133
+#: ultralcd.cpp:5034
 msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
 msgstr "Jesli masz dodatkowe plyty stalowe, to skalibruj ich ustawienia w menu Ustawienia - Ustawienia HW - Plyty stalowe."
 
-# 
-#: ultralcd.cpp:1704
+# MSG_LAST_PRINT c=18
+#: messages.c:54
 msgid "Last print"
 msgstr "Ost. wydruk"
 
 # MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:72
+#: messages.c:87
 msgid "Left hotend fan?"
 msgstr "Lewy went hotendu?"
 
 # 
-#: ultralcd.cpp:2993
+#: ultralcd.cpp:2919
 msgid "Left"
 msgstr "Lewa"
 
 # MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3264
+#: ultralcd.cpp:3188
 msgid "Left side [um]"
 msgstr "Lewo [um]"
 
 # 
-#: ultralcd.cpp:5766
+#: ultralcd.cpp:5706
 msgid "Lin. correction"
 msgstr "Korekcja liniowa"
 
@@ -681,197 +691,197 @@ msgid "Live adjust Z"
 msgstr "Ustaw. Live Z"
 
 #  c=20 r=6
-#: ultralcd.cpp:7527
+#: ultralcd.cpp:7280
 msgid "Insert the filament (do not load it) into the extruder and then press the knob."
 msgstr "Wsun filament (nie uzywaj funkcji ladowania) do ekstrudera i nacisnij pokretlo."
 
 # MSG_LOAD_FILAMENT c=17
-#: messages.c:47
+#: messages.c:56
 msgid "Load filament"
 msgstr "Ladowanie fil."
 
 # MSG_LOADING_COLOR
-#: ultralcd.cpp:2645
+#: ultralcd.cpp:2598
 msgid "Loading color"
 msgstr "Czyszcz. koloru"
 
 # MSG_LOADING_FILAMENT c=20
-#: messages.c:48
+#: messages.c:57
 msgid "Loading filament"
 msgstr "Laduje filament"
 
 # MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:8317
+#: ultralcd.cpp:8067
 msgid "Loose pulley"
 msgstr "Luzne kolo pasowe"
 
 # 
-#: ultralcd.cpp:6944
+#: ultralcd.cpp:6699
 msgid "Load to nozzle"
 msgstr "Zaladuj do dyszy"
 
 # MSG_M117_V2_CALIBRATION c=25
-#: messages.c:51
+#: messages.c:60
 msgid "M117 First layer cal."
 msgstr "M117 Kal. 1. warstwy"
 
 # MSG_MAIN
-#: messages.c:52
+#: messages.c:61
 msgid "Main"
 msgstr "Menu glowne"
 
 # MSG_BL_HIGH c=12
-#: messages.c:135
+#: messages.c:155
 msgid "Level Bright"
 msgstr "Poziom jasn."
 
 # MSG_BL_LOW c=12
-#: messages.c:136
+#: messages.c:156
 msgid "Level Dimmed"
 msgstr "Poziom ciem."
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:55
+#: messages.c:65
 msgid "Measuring reference height of calibration point"
 msgstr "Okreslam wysokosc odniesienia punktu kalibracyjnego"
 
-# MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5856
+# MSG_MESH_BED_LEVELING c=18
+#: messages.c:148
 msgid "Mesh Bed Leveling"
-msgstr "Poziomowanie stolu wg siatki"
+msgstr "Poziomowanie stolu"
 
 # MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:765
+#: mmu.cpp:764
 msgid "MMU OK. Resuming position..."
 msgstr "MMU OK. Wznawianie pozycji."
 
 # MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:758
+#: mmu.cpp:757
 msgid "MMU OK. Resuming temperature..."
 msgstr "MMU OK. Wznawiam nagrzewanie..."
 
 # 
-#: ultralcd.cpp:3034
+#: ultralcd.cpp:2960
 msgid "Measured skew"
 msgstr "Zmierzony skos"
 
-# 
-#: ultralcd.cpp:1728
+# MSG_MMU_FAILS c=14
+#: messages.c:68
 msgid "MMU fails"
 msgstr "Bledy MMU"
 
 # 
-#: mmu.cpp:1588
+#: mmu.cpp:1586
 msgid "MMU load failed     "
 msgstr "Blad ladowania MMU"
 
-# 
-#: ultralcd.cpp:1729
+# MSG_MMU_LOAD_FAILS c=14
+#: messages.c:69
 msgid "MMU load fails"
 msgstr "Bledy ladow. MMU"
 
 # MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:776
+#: mmu.cpp:775
 msgid "MMU OK. Resuming..."
 msgstr "MMU OK. Wznawianie..."
 
 # MSG_MODE
-#: messages.c:84
+#: messages.c:101
 msgid "Mode"
 msgstr "Tryb"
 
 #  c=20 r=3
-#: Marlin_main.cpp:879
+#: Marlin_main.cpp:934
 msgid "MK3 firmware detected on MK3S printer"
 msgstr "Wykryto firmware MK3 w drukarce MK3S"
 
 # MSG_NORMAL
-#: messages.c:88
+#: messages.c:105
 msgid "Normal"
 msgstr "Normalni"
 
 # MSG_SILENT
-#: messages.c:87
+#: messages.c:104
 msgid "Silent"
 msgstr "Cichy"
 
 # 
-#: mmu.cpp:722
+#: mmu.cpp:721
 msgid "MMU needs user attention."
 msgstr "MMU wymaga uwagi uzytkownika."
 
 # 
-#: ultralcd.cpp:1755
+#: ultralcd.cpp:1701
 msgid "MMU power fails"
 msgstr "Zaniki zasil. MMU"
 
 # MSG_STEALTH
-#: messages.c:89
+#: messages.c:106
 msgid "Stealth"
 msgstr "Cichy"
 
 # MSG_AUTO_POWER
-#: messages.c:86
+#: messages.c:103
 msgid "Auto power"
 msgstr "Automatycz"
 
 # MSG_HIGH_POWER
-#: messages.c:85
+#: messages.c:102
 msgid "High power"
 msgstr "Wysoka wyd."
 
 # 
-#: ultralcd.cpp:2186
+#: ultralcd.cpp:2124
 msgid "MMU2 connected"
 msgstr "MMU podlaczone"
 
 # MSG_SELFTEST_MOTOR
-#: messages.c:79
+#: messages.c:94
 msgid "Motor"
 msgstr "Silnik"
 
 # MSG_MOVE_AXIS
-#: ultralcd.cpp:5741
+#: ultralcd.cpp:5681
 msgid "Move axis"
 msgstr "Ruch osi"
 
 # MSG_MOVE_X
-#: ultralcd.cpp:4361
+#: ultralcd.cpp:4262
 msgid "Move X"
 msgstr "Ruch osi X"
 
 # MSG_MOVE_Y
-#: ultralcd.cpp:4362
+#: ultralcd.cpp:4263
 msgid "Move Y"
 msgstr "Ruch osi Y"
 
 # MSG_MOVE_Z
-#: ultralcd.cpp:4363
+#: ultralcd.cpp:4264
 msgid "Move Z"
 msgstr "Ruch osi Z"
 
 # MSG_NO_MOVE
-#: Marlin_main.cpp:5541
+#: Marlin_main.cpp:5719
 msgid "No move."
 msgstr "Brak ruchu."
 
 # MSG_NO_CARD
-#: ultralcd.cpp:6911
+#: ultralcd.cpp:6673
 msgid "No SD card"
 msgstr "Brak karty SD"
 
 # MSG_NA
-#: messages.c:107
+#: messages.c:124
 msgid "N/A"
 msgstr "N/D"
 
 # MSG_NO
-#: messages.c:58
+#: messages.c:70
 msgid "No"
 msgstr "Nie"
 
 # MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:8265
+#: ultralcd.cpp:8028
 msgid "Not connected"
 msgstr "Nie podlaczono "
 
@@ -881,157 +891,157 @@ msgid "New firmware version available:"
 msgstr "Dostepna nowa wersja firmware:"
 
 # MSG_SELFTEST_FAN_NO c=19
-#: messages.c:75
+#: messages.c:90
 msgid "Not spinning"
 msgstr "Nie kreci sie"
 
 # MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4946
+#: ultralcd.cpp:4847
 msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
 msgstr "Kalibruje odleglosc miedzy koncowka dyszy a powierzchnia druku."
 
 # MSG_WIZARD_WILL_PREHEAT c=20 r=4
-#: ultralcd.cpp:5071
+#: ultralcd.cpp:4972
 msgid "Now I will preheat nozzle for PLA."
 msgstr "Nagrzewam dysze dla PLA."
 
 # MSG_NOZZLE
-#: messages.c:59
+#: messages.c:71
 msgid "Nozzle"
 msgstr "Dysza"
 
 # MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
-#: Marlin_main.cpp:1518
+#: Marlin_main.cpp:1581
 msgid "Old settings found. Default PID, Esteps etc. will be set."
 msgstr "Znaleziono stare ustawienia. Zostana przywrocone domyslne ust. PID, Esteps, itp."
 
 # 
-#: ultralcd.cpp:5062
+#: ultralcd.cpp:4963
 msgid "Now remove the test print from steel sheet."
 msgstr "Teraz zdejmij wydruk testowy ze stolu."
 
 # 
-#: ultralcd.cpp:1654
+#: ultralcd.cpp:1600
 msgid "Nozzle FAN"
 msgstr "WentHotend"
 
 # MSG_PAUSE_PRINT
-#: ultralcd.cpp:6875
+#: ultralcd.cpp:6637
 msgid "Pause print"
 msgstr "Wstrzymanie wydruku"
 
 # MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1539
+#: ultralcd.cpp:1485
 msgid "PID cal.           "
 msgstr "Kalibracja PID"
 
 # MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1545
+#: ultralcd.cpp:1491
 msgid "PID cal. finished"
 msgstr "Kal. PID zakonczona"
 
 # MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5862
+#: ultralcd.cpp:5803
 msgid "PID calibration"
 msgstr "Kalibracja PID"
 
 # MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:896
+#: ultralcd.cpp:843
 msgid "PINDA Heating"
 msgstr "Grzanie sondy PINDA"
 
 # MSG_PAPER c=20 r=10
-#: messages.c:60
+#: messages.c:72
 msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
 msgstr "Umiesc kartke papieru na stole roboczym i podczas pomiaru pierwszych 4 punktow. Jesli dysza zahaczy o papier, natychmiast wylacz drukarke."
 
 # MSG_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:5128
+#: ultralcd.cpp:5029
 msgid "Please clean heatbed and then press the knob."
 msgstr "Oczysc powierzchnie druku i nacisnij pokretlo."
 
 # MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
-#: messages.c:21
+#: messages.c:24
 msgid "Please clean the nozzle for calibration. Click when done."
 msgstr "Dla prawidlowej kalibracji nalezy oczyscic dysze. Potwierdz guzikiem."
 
 # MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:8257
+#: ultralcd.cpp:8022
 msgid "Please check :"
 msgstr "Sprawdz :"
 
 # MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:98
+#: messages.c:115
 msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
 msgstr "Przeczytaj nasz Podrecznik druku 3D aby naprawic problem. Potem wznow Asystenta przez restart drukarki."
 
 # MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3138
+#: Marlin_main.cpp:3317
 msgid "Please open idler and remove filament manually."
 msgstr "Prosze odciagnac dzwignie dociskowa ekstrudera i recznie usunac filament."
 
 # MSG_PLACE_STEEL_SHEET c=20 r=4
-#: messages.c:61
+#: messages.c:73
 msgid "Please place steel sheet on heatbed."
 msgstr "Prosze umiescic plyte stalowa na stole podgrzewanym."
 
 # MSG_PRESS_TO_UNLOAD c=20 r=4
-#: messages.c:64
+#: messages.c:77
 msgid "Please press the knob to unload filament"
 msgstr "Nacisnij pokretlo aby rozladowac filament"
 
 # MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:66
+#: messages.c:79
 msgid "Please pull out filament immediately"
 msgstr "Wyciagnij filament teraz"
 
 # MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1422
+#: mmu.cpp:1420
 msgid "Please remove filament and then press the knob."
 msgstr "Wyciagnij filament i wcisnij pokretlo."
 
 # MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:70
+#: messages.c:82
 msgid "Please remove steel sheet from heatbed."
 msgstr "Prosze zdjac plyte stalowa z podgrzewanego stolu."
 
 # MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4583
+#: Marlin_main.cpp:4766
 msgid "Please run XYZ calibration first."
 msgstr "Prosze najpierw uruchomic kalibracje XYZ"
 
 # MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1341
+#: mmu.cpp:1340
 msgid "Please update firmware in your MMU2. Waiting for reset."
 msgstr "Prosze zaktualizowac Firmware MMU2. Czekam na reset."
 
 # MSG_PLEASE_WAIT c=20
-#: messages.c:62
+#: messages.c:74
 msgid "Please wait"
 msgstr "Prosze czekac"
 
 # 
-#: ultralcd.cpp:5061
+#: ultralcd.cpp:4962
 msgid "Please remove shipping helpers first."
 msgstr "Najpierw usun zabezpieczenia transportowe"
 
 # MSG_PREHEAT_NOZZLE c=20
-#: messages.c:63
+#: messages.c:76
 msgid "Preheat the nozzle!"
 msgstr "Nagrzej dysze!"
 
 # MSG_PREHEAT
-#: ultralcd.cpp:6853
+#: ultralcd.cpp:6615
 msgid "Preheat"
 msgstr "Grzanie"
 
 # MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:100
+#: messages.c:117
 msgid "Preheating nozzle. Please wait."
 msgstr "Nagrzewanie dyszy. Prosze czekac."
 
 #  c=14
-#: ultralcd.cpp:1959
+#: ultralcd.cpp:1905
 msgid "PINDA"
 msgstr ""
 
@@ -1041,107 +1051,112 @@ msgid "Please upgrade."
 msgstr "Prosze zaktualizowac."
 
 # MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:11526
+#: Marlin_main.cpp:11718
 msgid "Press knob to preheat nozzle and continue."
 msgstr "Wcisnij pokretlo aby rozgrzac dysze i kontynuowac."
 
 # MSG_FS_PAUSE c=5
-#: fsensor.cpp:710
+#: fsensor.cpp:728
 msgid "Pause"
 msgstr "Pauza"
 
-# 
-#: ultralcd.cpp:1783
+# MSG_POWER_FAILURES c=14
+#: messages.c:75
 msgid "Power failures"
 msgstr "Zaniki zasilania"
 
 # MSG_PRINT_ABORTED c=20
-#: messages.c:65
+#: messages.c:78
 msgid "Print aborted"
 msgstr "Druk przerwany"
 
 #  c=20
-#: ultralcd.cpp:2442
+#: ultralcd.cpp:2390
 msgid "Preheating to load"
 msgstr "Nagrzew.do ladowania"
 
 #  c=20
-#: ultralcd.cpp:2446
+#: ultralcd.cpp:2395
 msgid "Preheating to unload"
 msgstr "Nagrzew. do rozlad."
 
 # MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:8689
+#: ultralcd.cpp:8401
 msgid "Print fan:"
 msgstr "WentWydruk:"
 
 # MSG_CARD_MENU
-#: messages.c:20
+#: messages.c:21
 msgid "Print from SD"
 msgstr "Druk z karty SD"
 
 # 
-#: ultralcd.cpp:2289
+#: ultralcd.cpp:2231
 msgid "Press the knob"
 msgstr "Wcisnij pokretlo"
 
 # MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1118
+#: ultralcd.cpp:1065
 msgid "Print paused"
 msgstr "Druk wstrzymany"
 
 # 
-#: mmu.cpp:726
+#: mmu.cpp:725
 msgid "Press the knob to resume nozzle temperature."
 msgstr "Wcisnij pokretlo aby wznowic podgrzewanie dyszy."
 
 # MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
-#: messages.c:38
+#: messages.c:45
 msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
 msgstr "Drukarka nie byla jeszcze kalibrowana. Kieruj sie Samouczkiem: rozdzial Pierwsze Kroki, sekcja Konfiguracja przed drukowaniem."
 
 # 
-#: ultralcd.cpp:1655
+#: ultralcd.cpp:1601
 msgid "Print FAN"
 msgstr "WentWydruk"
 
 # 
-#: ultralcd.cpp:4926
+#: ultralcd.cpp:4827
 msgid "Please insert filament into the extruder, then press the knob to load it."
 msgstr "Wsun filament do ekstrudera i nacisnij pokretlo, aby go zaladowac."
 
 # 
-#: ultralcd.cpp:4921
+#: ultralcd.cpp:4822
 msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
 msgstr "Wsun filament do pierwszego kanalu w MMU2 i nacisnij pokretlo, aby go zaladowac."
 
 # 
-#: ultralcd.cpp:4843
+#: ultralcd.cpp:4744
 msgid "Please load filament first."
 msgstr "Najpierw zaladuj filament."
 
 # MSG_PRUSA3D
-#: ultralcd.cpp:2155
+#: ultralcd.cpp:2104
 msgid "prusa3d.com"
 msgstr ""
 
 # MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3267
+#: ultralcd.cpp:3191
 msgid "Rear side [um]"
 msgstr "Tyl [um]"
 
 #  c=20 r=4
-#: ultralcd.cpp:7549
+#: ultralcd.cpp:7304
 msgid "Please unload the filament first, then repeat this action."
 msgstr "Najpierw rozladuj filament, nastepnie powtorz czynnosc."
 
+#  c=20 r=4
+#: ultralcd.cpp:7307
+msgid "Please check the IR sensor connection, unload filament if present."
+msgstr "Sprawdz polaczenie czujnika IR, rozladuj filament, jesli zaladowany."
+
 # MSG_RECOVERING_PRINT c=20
-#: Marlin_main.cpp:10883
+#: Marlin_main.cpp:11076
 msgid "Recovering print    "
 msgstr "Wznawianie wydruku  "
 
 # MSG_REMOVE_OLD_FILAMENT c=20 r=5
-#: mmu.cpp:833
+#: mmu.cpp:832
 msgid "Remove old filament and press the knob to start loading new filament."
 msgstr "Wyciagnij poprzedni filament i nacisnij pokretlo aby zaladowac nowy."
 
@@ -1151,102 +1166,102 @@ msgid "Prusa i3 MK3S OK."
 msgstr ""
 
 # MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5867
+#: ultralcd.cpp:5808
 msgid "Reset XYZ calibr."
 msgstr "Reset kalibr. XYZ"
 
-# MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3268
+# MSG_RESET c=14
+#: messages.c:83
 msgid "Reset"
 msgstr ""
 
-# MSG_RESUME_PRINT
-#: ultralcd.cpp:6861
+# MSG_RESUME_PRINT c=18
+#: messages.c:84
 msgid "Resume print"
 msgstr "Wznowic wydruk"
 
 # MSG_RESUMING_PRINT c=20
-#: messages.c:69
+#: messages.c:85
 msgid "Resuming print"
 msgstr "Wznawianie druku"
 
 # MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3265
+#: ultralcd.cpp:3189
 msgid "Right side[um]"
 msgstr "Prawo [um]"
 
 # MSG_RPI_PORT
-#: messages.c:123
+#: messages.c:142
 msgid "RPi port"
 msgstr "Port RPi"
 
 # MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4864
+#: ultralcd.cpp:4765
 msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
 msgstr "Wlaczenie Asystenta usunie obecne dane kalibracyjne i zacznie od poczatku. Kontynuowac?"
 
 # MSG_SD_CARD
-#: messages.c:118
+#: messages.c:137
 msgid "SD card"
 msgstr "Karta SD"
 
 # MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
-#: messages.c:119
+#: messages.c:138
 msgid "FlashAir"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2994
+#: ultralcd.cpp:2920
 msgid "Right"
 msgstr "Prawa"
 
 # MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: messages.c:35
+#: messages.c:42
 msgid "Searching bed calibration point"
 msgstr "Szukam punktu kalibracyjnego na stole"
 
 # MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5779
+#: ultralcd.cpp:5721
 msgid "Select language"
 msgstr "Wybor jezyka"
 
 # MSG_SELFTEST_OK
-#: ultralcd.cpp:7812
+#: ultralcd.cpp:7579
 msgid "Self test OK"
 msgstr "Selftest OK"
 
 # MSG_SELFTEST_START c=20
-#: ultralcd.cpp:7582
+#: ultralcd.cpp:7347
 msgid "Self test start  "
 msgstr "Selftest startuje"
 
 # MSG_SELFTEST
-#: ultralcd.cpp:5843
+#: ultralcd.cpp:5784
 msgid "Selftest         "
 msgstr "Selftest "
 
 # MSG_SELFTEST_ERROR
-#: ultralcd.cpp:8255
+#: ultralcd.cpp:8021
 msgid "Selftest error !"
 msgstr "Blad selftest!"
 
 # MSG_SELFTEST_FAILED c=20
-#: messages.c:73
+#: messages.c:88
 msgid "Selftest failed  "
 msgstr "Selftest nieudany"
 
 # MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1550
+#: Marlin_main.cpp:1613
 msgid "Selftest will be run to calibrate accurate sensorless rehoming."
 msgstr "Zostanie uruchomiony Selftest aby dokladnie skalibrowac punkt bazowy bez krancowek"
 
 # 
-#: ultralcd.cpp:5102
+#: ultralcd.cpp:5003
 msgid "Select nozzle preheat temperature which matches your material."
 msgstr "Wybierz temperature grzania dyszy odpowiednia dla materialu."
 
 # MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3286
+#: ultralcd.cpp:3209
 msgid "Set temperature:"
 msgstr "Ustaw temperature:"
 
@@ -1266,187 +1281,187 @@ msgid "Prusa i3 MK3 OK."
 msgstr ""
 
 # MSG_SETTINGS
-#: messages.c:82
+#: messages.c:97
 msgid "Settings"
 msgstr "Ustawienia"
 
 # MSG_SHOW_END_STOPS c=18
-#: ultralcd.cpp:5864
+#: ultralcd.cpp:5805
 msgid "Show end stops"
 msgstr "Pokaz krancowki"
 
 # 
-#: ultralcd.cpp:4008
+#: ultralcd.cpp:3915
 msgid "Sensor state"
 msgstr "Stan czujnikow"
 
 # MSG_FILE_CNT c=20 r=6
-#: cardreader.cpp:738
+#: cardreader.cpp:739
 msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
 msgstr "Niektore pliki nie zostana posortowane. Max. liczba plikow w 1 folderze = 100."
 
 # MSG_SORT
-#: messages.c:120
+#: messages.c:139
 msgid "Sort"
 msgstr "Sortowanie"
 
 # MSG_NONE
-#: messages.c:110
+#: messages.c:127
 msgid "None"
 msgstr "Brak"
 
 # MSG_SORT_TIME
-#: messages.c:121
+#: messages.c:140
 msgid "Time"
 msgstr "Czas"
 
 # 
-#: ultralcd.cpp:3037
+#: ultralcd.cpp:2963
 msgid "Severe skew:"
 msgstr "Znaczny skos:"
 
 # MSG_SORT_ALPHA
-#: messages.c:122
+#: messages.c:141
 msgid "Alphabet"
 msgstr "Alfab"
 
 # MSG_SORTING c=20 r=1
-#: cardreader.cpp:745
+#: cardreader.cpp:746
 msgid "Sorting files"
 msgstr "Sortowanie plikow"
 
 # MSG_SOUND_LOUD
-#: messages.c:125
+#: messages.c:144
 msgid "Loud"
 msgstr "Glosny"
 
 # 
-#: ultralcd.cpp:3036
+#: ultralcd.cpp:2962
 msgid "Slight skew:"
 msgstr "Lekki skos:"
 
 # MSG_SOUND
-#: messages.c:124
+#: messages.c:143
 msgid "Sound"
 msgstr "Dzwiek"
 
 #  c=7
-#: ultralcd.cpp:1822
+#: ultralcd.cpp:1768
 msgid "Runouts"
 msgstr "Konce f"
 
 # 
-#: Marlin_main.cpp:5101
+#: Marlin_main.cpp:5280
 msgid "Some problem encountered, Z-leveling enforced ..."
 msgstr "Wykryto problem, wymuszono poziomowanie osi Z."
 
 # MSG_SOUND_ONCE
-#: messages.c:126
+#: messages.c:145
 msgid "Once"
 msgstr "1-raz"
 
 # MSG_SPEED
-#: ultralcd.cpp:7119
+#: ultralcd.cpp:6874
 msgid "Speed"
 msgstr "Predkosc"
 
 # MSG_SELFTEST_FAN_YES c=19
-#: messages.c:76
+#: messages.c:91
 msgid "Spinning"
 msgstr "Kreci sie"
 
 # MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4596
+#: Marlin_main.cpp:4779
 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
 msgstr "Potrzebna jest stabilna temperatura otoczenia 21-26C i stabilne podloze."
 
 # MSG_STATISTICS
-#: ultralcd.cpp:6978
+#: ultralcd.cpp:6733
 msgid "Statistics  "
 msgstr "Statystyki"
 
 # MSG_STOP_PRINT
-#: messages.c:91
+#: messages.c:108
 msgid "Stop print"
 msgstr "Przerwanie druku"
 
 # MSG_STOPPED
-#: messages.c:92
+#: messages.c:109
 msgid "STOPPED. "
 msgstr "ZATRZYMANO."
 
 # MSG_SUPPORT
-#: ultralcd.cpp:6987
+#: ultralcd.cpp:6742
 msgid "Support"
 msgstr "Wsparcie"
 
 # MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:8335
+#: ultralcd.cpp:8080
 msgid "Swapped"
 msgstr "Zamieniono"
 
 # 
-#: ultralcd.cpp:4814
+#: ultralcd.cpp:4715
 msgid "Select filament:"
 msgstr "Wybierz filament:"
 
 # MSG_TEMP_CALIBRATION c=14
-#: messages.c:93
+#: messages.c:110
 msgid "Temp. cal."
 msgstr "Kalib. temp."
 
 # 
-#: ultralcd.cpp:4955
+#: ultralcd.cpp:4856
 msgid "Select temperature which matches your material."
 msgstr "Wybierz temperature, ktora odpowiada Twojemu filamentowi."
 
 # MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5873
+#: ultralcd.cpp:5816
 msgid "Temp. calibration"
 msgstr "Kalibracja temp."
 
 # MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3933
+#: ultralcd.cpp:3845
 msgid "Temperature calibration failed"
 msgstr "Kalibracja temperaturowa nieudana"
 
 # MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:94
+#: messages.c:111
 msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
 msgstr "Kalibracja temperaturowa zakonczona i wlaczona. Moze byc wylaczona z menu Ustawienia -> Kalibracja temp."
 
 #  c=20 r=3
-#: ultralcd.cpp:7554
+#: ultralcd.cpp:7311
 msgid "Sensor verified, remove the filament now."
 msgstr "Czujnik sprawdzony, wyciagnij filament."
 
 # MSG_TEMPERATURE
-#: ultralcd.cpp:5739
+#: ultralcd.cpp:5679
 msgid "Temperature"
 msgstr "Temperatura"
 
 # MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2218
+#: ultralcd.cpp:2160
 msgid "Temperatures"
 msgstr "Temperatury"
 
 # MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
-#: messages.c:39
+#: messages.c:46
 msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
 msgstr "Musimy przeprowadzic kalibracje Z. Kieruj sie Samouczkiem: rozdzial Pierwsze Kroki, sekcja Kalibracja."
 
 # 
-#: ultralcd.cpp:2891
+#: ultralcd.cpp:2817
 msgid "Total filament"
 msgstr "Zuzycie filamentu"
 
 # 
-#: ultralcd.cpp:2892
+#: ultralcd.cpp:2818
 msgid "Total print time"
 msgstr "Laczny czas druku"
 
 # MSG_TUNE
-#: ultralcd.cpp:6850
+#: ultralcd.cpp:6612
 msgid "Tune"
 msgstr "Strojenie"
 
@@ -1455,63 +1470,63 @@ msgstr "Strojenie"
 msgid "Unload"
 msgstr "Rozladuj"
 
-# 
-#: ultralcd.cpp:1752
+# MSG_TOTAL_FAILURES c=20
+#: messages.c:99
 msgid "Total failures"
 msgstr "Suma bledow"
 
 # 
-#: ultralcd.cpp:2296
+#: ultralcd.cpp:2238
 msgid "to load filament"
 msgstr "aby zaladow. fil."
 
 # 
-#: ultralcd.cpp:2300
+#: ultralcd.cpp:2242
 msgid "to unload filament"
 msgstr "aby rozlad. filament"
 
 # MSG_UNLOAD_FILAMENT c=17
-#: messages.c:95
+#: messages.c:112
 msgid "Unload filament"
 msgstr "Rozladowanie fil."
 
 # MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:96
+#: messages.c:113
 msgid "Unloading filament"
 msgstr "Rozladowuje filament"
 
-# 
-#: ultralcd.cpp:1705
+# MSG_TOTAL c=6
+#: messages.c:98
 msgid "Total"
 msgstr "Suma"
 
 # MSG_USED c=19 r=1
-#: ultralcd.cpp:6001
+#: ultralcd.cpp:5932
 msgid "Used during print"
 msgstr "Uzyte podczas druku"
 
 # MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2221
+#: ultralcd.cpp:2163
 msgid "Voltages"
 msgstr "Napiecia"
 
 # 
-#: ultralcd.cpp:2194
+#: ultralcd.cpp:2132
 msgid "unknown"
 msgstr "nieznane"
 
 # MSG_USERWAIT
-#: Marlin_main.cpp:5511
+#: Marlin_main.cpp:5689
 msgid "Wait for user..."
 msgstr "Czekam na uzytkownika..."
 
 # MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3434
+#: ultralcd.cpp:3357
 msgid "Waiting for nozzle and bed cooling"
 msgstr "Oczekiwanie na wychlodzenie dyszy i stolu"
 
 # MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3395
+#: ultralcd.cpp:3318
 msgid "Waiting for PINDA probe cooling"
 msgstr "Czekam az spadnie temp. sondy PINDA"
 
@@ -1521,37 +1536,37 @@ msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU t
 msgstr "Uzyj opcji Rozladuj jesli filament wystaje z tylnej rurki MMU. Uzyj opcji Wysun jesli wciaz jest w srodku."
 
 # MSG_CHANGED_BOTH c=20 r=4
-#: Marlin_main.cpp:1510
+#: Marlin_main.cpp:1573
 msgid "Warning: both printer type and motherboard type changed."
 msgstr "Ostrzezenie: typ drukarki i plyta glowna ulegly zmianie."
 
 # MSG_CHANGED_MOTHERBOARD c=20 r=4
-#: Marlin_main.cpp:1502
+#: Marlin_main.cpp:1565
 msgid "Warning: motherboard type changed."
 msgstr "Ostrzezenie: plyta glowna ulegla zmianie."
 
 # MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1506
+#: Marlin_main.cpp:1569
 msgid "Warning: printer type changed."
 msgstr "Ostrzezenie: rodzaj drukarki ulegl zmianie"
 
 # MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3128
+#: Marlin_main.cpp:3308
 msgid "Was filament unload successful?"
 msgstr "Rozladowanie fil. ok?"
 
 # MSG_SELFTEST_WIRINGERROR
-#: messages.c:81
+#: messages.c:96
 msgid "Wiring error"
 msgstr "Blad polaczenia"
 
 # MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5834
+#: ultralcd.cpp:5775
 msgid "Wizard"
 msgstr "Asystent"
 
 # MSG_XYZ_DETAILS c=18
-#: ultralcd.cpp:2210
+#: ultralcd.cpp:2152
 msgid "XYZ cal. details"
 msgstr "Szczegoly kal. XYZ"
 
@@ -1561,182 +1576,177 @@ msgid "XYZ calibration failed. Please consult the manual."
 msgstr "Kalibracja XYZ nieudana. Sprawdz przyczyny i rozwiazania w instrukcji."
 
 # MSG_YES
-#: messages.c:102
+#: messages.c:119
 msgid "Yes"
 msgstr "Tak"
 
 # MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:101
+#: messages.c:118
 msgid "You can always resume the Wizard from Calibration -> Wizard."
 msgstr "Zawsze mozesz uruchomic Asystenta ponownie przez Kalibracja -> Asystent."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
-#: ultralcd.cpp:3904
+#: ultralcd.cpp:3817
 msgid "XYZ calibration all right. Skew will be corrected automatically."
 msgstr "Kalibracja XYZ pomyslna. Skos bedzie automatycznie korygowany."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
-#: ultralcd.cpp:3901
+#: ultralcd.cpp:3814
 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
 msgstr "Kalibracja XYZ prawidlowa. Osie X/Y lekko skosne. Dobra robota!"
 
 # MSG_TIMEOUT c=12
-#: messages.c:137
+#: messages.c:157
 msgid "Timeout"
 msgstr "Wyl. czas."
 
 # MSG_X_CORRECTION c=13
-#: ultralcd.cpp:5190
+#: ultralcd.cpp:5091
 msgid "X-correct:"
 msgstr "Korekcja-X:"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3898
+#: ultralcd.cpp:3811
 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
 msgstr "Kalibracja XYZ ok. Osie X/Y sa prostopadle. Gratulacje!"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
-#: ultralcd.cpp:3882
+#: ultralcd.cpp:3795
 msgid "XYZ calibration compromised. Front calibration points not reachable."
 msgstr "Kalibr. XYZ niedokladna. Przednie punkty kalibr. nieosiagalne."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3885
+#: ultralcd.cpp:3798
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "Kalibracja XYZ niedokladna. Prawy przedni punkt nieosiagalny."
 
 # MSG_LOAD_ALL c=17
-#: ultralcd.cpp:6261
+#: ultralcd.cpp:6171
 msgid "Load all"
 msgstr "Zalad. wszystkie"
 
 # 
-#: ultralcd.cpp:3864
+#: ultralcd.cpp:3777
 msgid "XYZ calibration failed. Bed calibration point was not found."
 msgstr "Kalibracja XYZ nieudana. Nie znaleziono punktow kalibracyjnych."
 
 # 
-#: ultralcd.cpp:3870
+#: ultralcd.cpp:3783
 msgid "XYZ calibration failed. Front calibration points not reachable."
 msgstr "Kalibr. XYZ nieudana. Przednie punkty kalibr. nieosiagalne. Nalezy poprawic montaz drukarki."
 
 # 
-#: ultralcd.cpp:3873
+#: ultralcd.cpp:3786
 msgid "XYZ calibration failed. Right front calibration point not reachable."
 msgstr "Kalibr. XYZ nieudana. Prawy przedni punkt nieosiagalny. Nalezy poprawic montaz drukarki."
 
 # 
-#: ultralcd.cpp:2991
+#: ultralcd.cpp:2917
 msgid "Y distance from min"
 msgstr "Dystans od 0 w osi Y"
 
 # 
-#: ultralcd.cpp:4958
+#: ultralcd.cpp:4859
 msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
 msgstr "Drukarka zacznie drukowanie linii w ksztalcie zygzaka. Ustaw optymalna wysokosc obracajac pokretlo. Porownaj z ilustracjami w Podreczniku (rozdzial Kalibracja)."
 
 #  c=20 r=5
-#: ultralcd.cpp:7558
+#: ultralcd.cpp:7315
 msgid "Verification failed, remove the filament and try again."
 msgstr "Niepowodzenie sprawdzenia, wyciagnij filament i sprobuj ponownie."
 
 # MSG_Y_CORRECTION c=13
-#: ultralcd.cpp:5191
+#: ultralcd.cpp:5092
 msgid "Y-correct:"
 msgstr "Korekcja-Y:"
 
 # MSG_OFF
-#: messages.c:105
+#: messages.c:122
 msgid "Off"
 msgstr "Wyl"
 
 # MSG_ON
-#: messages.c:106
+#: messages.c:123
 msgid "On"
 msgstr "Wl"
 
 # 
-#: messages.c:53
+#: messages.c:62
 msgid "Back"
 msgstr "Wstecz"
 
 # 
-#: ultralcd.cpp:5724
+#: ultralcd.cpp:5647
 msgid "Checks"
 msgstr "Testy"
 
 # 
-#: ultralcd.cpp:8349
+#: ultralcd.cpp:8090
 msgid "False triggering"
 msgstr "Falszywy alarm"
 
 # 
-#: ultralcd.cpp:4013
+#: ultralcd.cpp:3920
 msgid "FINDA:"
 msgstr ""
 
 # MSG_FIRMWARE
-#: language.h:23
+#: language.h:24
 msgid "Firmware"
 msgstr ""
 
 # MSG_STRICT
-#: messages.c:112
+#: messages.c:129
 msgid "Strict"
 msgstr "Restr."
 
 # MSG_WARN
-#: messages.c:111
+#: messages.c:128
 msgid "Warn"
 msgstr "Ostrzez"
 
-# 
-#: messages.c:83
+# MSG_HW_SETUP c=18
+#: messages.c:100
 msgid "HW Setup"
 msgstr "Ustawienia HW"
 
 # 
-#: ultralcd.cpp:4017
+#: ultralcd.cpp:3924
 msgid "IR:"
 msgstr ""
 
 # MSG_MAGNETS_COMP
-#: messages.c:130
+#: messages.c:150
 msgid "Magnets comp."
 msgstr "Kor. magnesow"
 
 # MSG_MESH
-#: messages.c:128
+#: messages.c:147
 msgid "Mesh"
 msgstr "Siatka"
 
 # 
-#: ultralcd.cpp:5763
-msgid "Mesh bed leveling"
-msgstr "Poziomowanie stolu"
-
-# 
-#: Marlin_main.cpp:872
+#: Marlin_main.cpp:927
 msgid "MK3S firmware detected on MK3 printer"
 msgstr "Wykryto firmware MK3S w drukarce MK3"
 
 # MSG_MMU_MODE
-#: messages.c:117
+#: messages.c:136
 msgid "MMU Mode"
 msgstr "Tryb MMU"
 
 # 
-#: ultralcd.cpp:4494
+#: ultralcd.cpp:4395
 msgid "Mode change in progress ..."
 msgstr "Trwa zmiana trybu..."
 
 # MSG_MODEL
-#: messages.c:113
+#: messages.c:130
 msgid "Model"
 msgstr ""
 
 # MSG_NOZZLE_DIAMETER
-#: messages.c:116
+#: messages.c:135
 msgid "Nozzle d."
 msgstr "Sr. dyszy"
 
@@ -1750,13 +1760,13 @@ msgstr "G-code pociety dla innej wersji. Kontynuowac?"
 msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
 msgstr "G-code pociety na innym poziomie. Potnij model ponownie. Druk anulowany."
 
-# 
-#: util.cpp:431
+# MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5
+#: messages.c:133
 msgid "G-code sliced for a different printer type. Continue?"
 msgstr "G-code pociety dla innej drukarki. Kontynuowac?"
 
-# 
-#: util.cpp:437
+# MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=6
+#: messages.c:134
 msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
 msgstr "G-code pociety dla drukarki innego typu. Potnij model ponownie. Druk anulowany."
 
@@ -1771,17 +1781,17 @@ msgid "G-code sliced for a newer firmware. Please update the firmware. Print can
 msgstr "G-code pociety dla nowszego firmware. Zaktualizuj firmware. Druk anulowany."
 
 # 
-#: ultralcd.cpp:4009
+#: ultralcd.cpp:3916
 msgid "PINDA:"
 msgstr ""
 
 #  c=20
-#: ultralcd.cpp:2452
+#: ultralcd.cpp:2402
 msgid "Preheating to cut"
 msgstr "Nagrzew. obciecia"
 
 #  c=20
-#: ultralcd.cpp:2449
+#: ultralcd.cpp:2399
 msgid "Preheating to eject"
 msgstr "Nagrzew. wysuniecia"
 
@@ -1796,47 +1806,47 @@ msgid "Printer nozzle diameter differs from the G-code. Please check the value i
 msgstr "Srednica dyszy rozni sie od tej w G-code. Sprawdz ustawienia. Druk anulowany."
 
 #  c=20
-#: ultralcd.cpp:8355
+#: ultralcd.cpp:8095
 msgid "%s level expected"
 msgstr "Oczekiwano wersji %s"
 
 # 
-#: ultralcd.cpp:6814
+#: ultralcd.cpp:6574
 msgid "Rename"
 msgstr "Zmien nazwe"
 
 # 
-#: ultralcd.cpp:6807
+#: ultralcd.cpp:6567
 msgid "Select"
 msgstr "Wybierz"
 
 # 
-#: ultralcd.cpp:2212
+#: ultralcd.cpp:2154
 msgid "Sensor info"
 msgstr "Info o sensorach"
 
 # MSG_SHEET c=10
-#: messages.c:54
+#: messages.c:63
 msgid "Sheet"
 msgstr "Plyta"
 
 # MSG_SOUND_BLIND
-#: messages.c:127
+#: messages.c:146
 msgid "Assist"
 msgstr "Asyst."
 
-#  c=18
-#: ultralcd.cpp:5722
+# MSG_STEEL_SHEET c=18
+#: messages.c:64
 msgid "Steel sheets"
 msgstr "Plyty stalowe"
 
 # MSG_Z_CORRECTION c=13
-#: ultralcd.cpp:5192
+#: ultralcd.cpp:5093
 msgid "Z-correct:"
 msgstr "Korekcja-Z:"
 
 # MSG_Z_PROBE_NR
-#: messages.c:129
+#: messages.c:149
 msgid "Z-probe nr."
 msgstr "Ilosc Pomiarow"
 

+ 1852 - 1842
lang/po/new/cs.po

@@ -1,1842 +1,1852 @@
-# Translation of Prusa-Firmware into Czech.
-#
-msgid ""
-msgstr ""
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: cs\n"
-"Project-Id-Version: Prusa-Firmware\n"
-"POT-Creation-Date: Wed May 13 17:41:02 CEST 2020\n"
-"PO-Revision-Date: Wed May 13 17:41:02 CEST 2020\n"
-"Language-Team: \n"
-"X-Generator: Poedit 2.0.7\n"
-"X-Poedit-SourceCharset: UTF-8\n"
-"Last-Translator: \n"
-"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-
-# 
-#: 
-msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
-msgstr "[%.7s]Doladeni Z\x0auz nastaveno, pouzit\x0anebo reset od nuly?\x0a%cPokracovat%cReset"
-
-# MSG_03_OR_OLDER c=18
-#: messages.c:144
-msgid " 0.3 or older"
-msgstr " 0.3 nebo starsi"
-
-# MSG_04_OR_NEWER c=18
-#: messages.c:143
-msgid " 0.4 or newer"
-msgstr " 0.4 nebo novejsi"
-
-# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
-#: messages.c:36
-msgid " of 4"
-msgstr " z 4"
-
-# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:56
-msgid " of 9"
-msgstr " z 9"
-
-# MSG_MEASURED_OFFSET
-#: ultralcd.cpp:3064
-msgid "[0;0] point offset"
-msgstr "[0;0] odsazeni bodu"
-
-# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
-#: 
-msgid "Crash detection can\x0abe turned on only in\x0aNormal mode"
-msgstr "Crash detekce muze\x0abyt zapnuta pouze v\x0aNormal modu"
-
-# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
-#: 
-msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
-msgstr "POZOR:\x0aCrash detekce\x0adeaktivovana ve\x0aStealth modu"
-
-# 
-#: ultralcd.cpp:2460
-msgid ">Cancel"
-msgstr ">Zrusit"
-
-# MSG_BABYSTEPPING_Z c=15
-#: ultralcd.cpp:3184
-msgid "Adjusting Z:"
-msgstr "Doladeni Z:"
-
-# MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:8677
-msgid "All correct      "
-msgstr "Vse OK "
-
-# MSG_WIZARD_DONE c=20 r=8
-#: messages.c:99
-msgid "All is done. Happy printing!"
-msgstr "Vse je hotovo."
-
-# 
-#: ultralcd.cpp:1956
-msgid "Ambient"
-msgstr "Okoli"
-
-# MSG_AUTO c=6
-#: messages.c:140
-msgid "Auto"
-msgstr ""
-
-# MSG_PRESS c=20 r=2
-#: ultralcd.cpp:2609
-msgid "and press the knob"
-msgstr "a stisknete tlacitko"
-
-# MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3506
-msgid "Are left and right Z~carriages all up?"
-msgstr "Dojely oba Z voziky k~hornimu dorazu?"
-
-# MSG_AUTO_DEPLETE c=17 r=1
-#: messages.c:108
-msgid "SpoolJoin"
-msgstr ""
-
-# MSG_AUTO_HOME
-#: messages.c:11
-msgid "Auto home"
-msgstr ""
-
-# MSG_AUTOLOAD_FILAMENT c=18
-#: ultralcd.cpp:6961
-msgid "AutoLoad filament"
-msgstr "AutoZavedeni fil."
-
-# MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4445
-msgid "Autoloading filament available only when filament sensor is turned on..."
-msgstr "Automaticke zavadeni filamentu je mozne pouze pri zapnutem filament senzoru..."
-
-# MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2804
-msgid "Autoloading filament is active, just press the knob and insert filament..."
-msgstr "Automaticke zavadeni filamentu aktivni, stisknete tlacitko a vlozte filament..."
-
-# MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:8325
-msgid "Axis length"
-msgstr "Delka osy"
-
-# MSG_SELFTEST_AXIS
-#: ultralcd.cpp:8327
-msgid "Axis"
-msgstr "Osa"
-
-# MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:8269
-msgid "Bed / Heater"
-msgstr "Podlozka / Topeni"
-
-# MSG_BED_DONE
-#: messages.c:15
-msgid "Bed done"
-msgstr "Bed OK."
-
-# MSG_BED_HEATING
-#: messages.c:16
-msgid "Bed Heating"
-msgstr "Zahrivani bedu"
-
-# MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5861
-msgid "Bed level correct"
-msgstr "Korekce podlozky"
-
-# MSG_BELTTEST c=17
-#: ultralcd.cpp:5841
-msgid "Belt test        "
-msgstr "Test remenu      "
-
-# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
-#: messages.c:17
-msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
-msgstr "Kalibrace Z selhala. Sensor nesepnul. Znecistena tryska? Cekam na reset."
-
-# MSG_BRIGHT c=6
-#: messages.c:138
-msgid "Bright"
-msgstr "Jasny"
-
-# MSG_BRIGHTNESS c=18
-#: messages.c:134
-msgid "Brightness"
-msgstr "Podsviceni"
-
-# MSG_BED
-#: messages.c:14
-msgid "Bed"
-msgstr "Podlozka"
-
-# MSG_MENU_BELT_STATUS c=18
-#: ultralcd.cpp:2009
-msgid "Belt status"
-msgstr "Stav remenu"
-
-# MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:67
-msgid "Blackout occurred. Recover print?"
-msgstr "Detekovan vypadek proudu.Obnovit tisk?"
-
-# 
-#: ultralcd.cpp:8679
-msgid "Calibrating home"
-msgstr "Kalibruji vychozi poz."
-
-# MSG_CALIBRATE_BED
-#: ultralcd.cpp:5850
-msgid "Calibrate XYZ"
-msgstr "Kalibrace XYZ"
-
-# MSG_HOMEYZ
-#: messages.c:44
-msgid "Calibrate Z"
-msgstr "Kalibrovat Z"
-
-# MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4637
-msgid "Calibrate"
-msgstr "Zkalibrovat"
-
-# MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3469
-msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
-msgstr "Kalibrace XYZ. Otacenim tlacitka posunte Z osu az k~hornimu dorazu. Potvrdte tlacitkem."
-
-# MSG_CALIBRATE_Z_AUTO c=20 r=2
-#: messages.c:19
-msgid "Calibrating Z"
-msgstr "Kalibruji Z"
-
-# MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3469
-msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
-msgstr "Kalibrace Z. Otacenim tlacitka posunte Z osu az k~hornimu dorazu. Potvrdte tlacitkem."
-
-# MSG_HOMEYZ_DONE
-#: ultralcd.cpp:865
-msgid "Calibration done"
-msgstr "Kalibrace OK"
-
-# MSG_MENU_CALIBRATION
-#: messages.c:57
-msgid "Calibration"
-msgstr "Kalibrace"
-
-# 
-#: ultralcd.cpp:4815
-msgid "Cancel"
-msgstr "Zrusit"
-
-# MSG_SD_REMOVED
-#: ultralcd.cpp:9090
-msgid "Card removed"
-msgstr "Karta vyjmuta"
-
-# MSG_NOT_COLOR
-#: ultralcd.cpp:2709
-msgid "Color not correct"
-msgstr "Barva neni cista"
-
-# MSG_COOLDOWN
-#: messages.c:22
-msgid "Cooldown"
-msgstr "Zchladit"
-
-# 
-#: ultralcd.cpp:4570
-msgid "Copy selected language?"
-msgstr "Kopirovat vybrany jazyk?"
-
-# MSG_CRASHDETECT c=13
-#: messages.c:24
-msgid "Crash det."
-msgstr ""
-
-# 
-#: ultralcd.cpp:4950
-msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
-msgstr "Zvolte filament pro kalibraci prvni vrstvy z nasledujiciho menu"
-
-# MSG_CRASH_DETECTED c=20 r=1
-#: messages.c:23
-msgid "Crash detected."
-msgstr "Detekovan naraz."
-
-# 
-#: Marlin_main.cpp:607
-msgid "Crash detected. Resume print?"
-msgstr "Detekovan naraz. Obnovit tisk?"
-
-# 
-#: ultralcd.cpp:1785
-msgid "Crash"
-msgstr "Naraz"
-
-# MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:6002
-msgid "Current"
-msgstr "Pouze aktualni"
-
-# MSG_DATE c=17 r=1
-#: ultralcd.cpp:2163
-msgid "Date:"
-msgstr "Datum:"
-
-# MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5743
-msgid "Disable steppers"
-msgstr "Vypnout motory"
-
-# MSG_BABYSTEP_Z_NOT_SET c=20 r=12
-#: messages.c:13
-msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
-msgstr "Neni zkalibrovana vzdalenost trysky od tiskove podlozky. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Nastaveni prvni vrstvy."
-
-# MSG_FS_CONTINUE c=5
-#: messages.c:132
-msgid "Cont."
-msgstr "Pokr."
-
-# MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:5125
-msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
-msgstr "Chcete opakovat posledni krok a pozmenit vzdalenost mezi tryskou a podlozkou?"
-
-# MSG_EXTRUDER_CORRECTION c=13
-#: ultralcd.cpp:5194
-msgid "E-correct:"
-msgstr "Korekce E:"
-
-# MSG_EJECT_FILAMENT c=17 r=1
-#: messages.c:49
-msgid "Eject filament"
-msgstr "Vysunout filament"
-
-# MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1416
-msgid "Ejecting filament"
-msgstr "Vysouvam filament"
-
-# MSG_SELFTEST_ENDSTOP_NOTHIT c=20
-#: ultralcd.cpp:8293
-msgid "Endstop not hit"
-msgstr "Kon. spinac nesepnut"
-
-# MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:8287
-msgid "Endstop"
-msgstr "Koncovy spinac"
-
-# MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:8275
-msgid "Endstops"
-msgstr "Konc. spinace"
-
-# MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6998
-msgid "Error - static memory has been overwritten"
-msgstr "Chyba - Doslo k prepisu staticke pameti!"
-
-# MSG_CUT_FILAMENT c=16
-#: messages.c:50
-msgid "Cut filament"
-msgstr "Ustrihnout"
-
-# MSG_CUTTER c=9
-#: messages.c:109
-msgid "Cutter"
-msgstr "Strihani"
-
-#  c=18
-#: mmu.cpp:1388
-msgid "Cutting filament"
-msgstr "Strihani filamentu"
-
-# MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4458
-msgid "ERROR: Filament sensor is not responding, please check connection."
-msgstr "CHYBA: Filament senzor nereaguje, zkontrolujte prosim zapojeni."
-
-# MSG_DIM c=6
-#: messages.c:139
-msgid "Dim"
-msgstr "Temny"
-
-# MSG_ERROR
-#: messages.c:25
-msgid "ERROR:"
-msgstr "CHYBA:"
-
-# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:8686
-msgid "Extruder fan:"
-msgstr "Levy vent.:"
-
-# MSG_INFO_EXTRUDER c=18
-#: ultralcd.cpp:2211
-msgid "Extruder info"
-msgstr ""
-
-# MSG_MOVE_E
-#: messages.c:26
-msgid "Extruder"
-msgstr ""
-
-# 
-#: ultralcd.cpp:6985
-msgid "Fail stats MMU"
-msgstr "Selhani MMU"
-
-# MSG_FSENSOR_AUTOLOAD c=13
-#: messages.c:40
-msgid "F. autoload"
-msgstr "F. autozav."
-
-# 
-#: ultralcd.cpp:6982
-msgid "Fail stats"
-msgstr "Selhani"
-
-# MSG_FAN_SPEED c=14
-#: messages.c:28
-msgid "Fan speed"
-msgstr "Rychlost vent."
-
-# MSG_SELFTEST_FAN c=20
-#: messages.c:74
-msgid "Fan test"
-msgstr "Test ventilatoru"
-
-# MSG_FANS_CHECK
-#: ultralcd.cpp:5751
-msgid "Fans check"
-msgstr "Kontr. vent."
-
-# MSG_FSENSOR
-#: messages.c:41
-msgid "Fil. sensor"
-msgstr "Fil. senzor"
-
-#  c=14
-#: ultralcd.cpp:1784
-msgid "Filam. runouts"
-msgstr "Vypadky filam."
-
-# MSG_FILAMENT_CLEAN c=20 r=2
-#: messages.c:29
-msgid "Filament extruding & with correct color?"
-msgstr "Filament vytlacen a spravne barvy?"
-
-# MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2705
-msgid "Filament not loaded"
-msgstr "Filament nezaveden"
-
-# MSG_FILAMENT_SENSOR c=20
-#: messages.c:80
-msgid "Filament sensor"
-msgstr "Senzor filamentu"
-
-# MSG_FILAMENT_USED c=19
-#: ultralcd.cpp:2869
-msgid "Filament used"
-msgstr "Spotrebovano filam."
-
-# MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2870
-msgid "Print time"
-msgstr "Cas tisku"
-
-# MSG_FS_ACTION c=10
-#: messages.c:131
-msgid "FS Action"
-msgstr "FS reakce"
-
-#  c=18
-#: Marlin_main.cpp:9512
-msgid "FS v0.4 or newer"
-msgstr "FS v0.4 a novejsi"
-
-# MSG_FILE_INCOMPLETE c=20 r=3
-#: ultralcd.cpp:8814
-msgid "File incomplete. Continue anyway?"
-msgstr "Soubor nekompletni. Pokracovat?"
-
-# MSG_FINISHING_MOVEMENTS c=20
-#: messages.c:37
-msgid "Finishing movements"
-msgstr "Dokoncovani pohybu"
-
-# MSG_V2_CALIBRATION c=18
-#: messages.c:103
-msgid "First layer cal."
-msgstr "Kal. prvni vrstvy"
-
-# MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:5046
-msgid "First, I will run the selftest to check most common assembly problems."
-msgstr "Nejdriv pomoci selftestu zkontoluji nejcastejsi chyby vznikajici pri sestaveni tiskarny."
-
-# 
-#: mmu.cpp:727
-msgid "Fix the issue and then press button on MMU unit."
-msgstr "Opravte chybu a pote stisknete tlacitko na jednotce MMU."
-
-# MSG_FLOW
-#: ultralcd.cpp:7125
-msgid "Flow"
-msgstr "Prutok"
-
-# MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2156
-msgid "forum.prusa3d.com"
-msgstr ""
-
-# MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:71
-msgid "Front print fan?"
-msgstr "Predni tiskovy vent?"
-
-# MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3266
-msgid "Front side[um]"
-msgstr "Vpredu [um]"
-
-# MSG_SELFTEST_FANS
-#: ultralcd.cpp:8333
-msgid "Front/left fans"
-msgstr "Predni/levy vent."
-
-# MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:8263
-msgid "Heater/Thermistor"
-msgstr "Topeni/Termistor"
-
-# MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:9440
-msgid "Heating disabled by safety timer."
-msgstr "Zahrivani preruseno bezpecnostnim casovacem."
-
-# MSG_HEATING_COMPLETE c=20
-#: messages.c:43
-msgid "Heating done."
-msgstr "Zahrivani OK."
-
-# MSG_HEATING
-#: messages.c:42
-msgid "Heating"
-msgstr "Zahrivani"
-
-# MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:5025
-msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
-msgstr "Dobry den, jsem vase tiskarna Original Prusa i3. Chcete abych Vas provedla kalibracnim procesem?"
-
-# MSG_PRUSA3D_HOWTO
-#: ultralcd.cpp:2157
-msgid "howto.prusa3d.com"
-msgstr ""
-
-# MSG_FILAMENTCHANGE
-#: messages.c:34
-msgid "Change filament"
-msgstr "Vymenit filament"
-
-# MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2620
-msgid "Change success!"
-msgstr "Zmena uspesna!"
-
-# MSG_CORRECTLY c=20
-#: ultralcd.cpp:2697
-msgid "Changed correctly?"
-msgstr "Vymena ok?"
-
-# MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:77
-msgid "Checking bed     "
-msgstr "Kontrola podlozky"
-
-# MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:8668
-msgid "Checking endstops"
-msgstr "Kontrola endstopu"
-
-# MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:8674
-msgid "Checking hotend  "
-msgstr "Kontrola hotend "
-
-# MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:78
-msgid "Checking sensors "
-msgstr "Kontrola senzoru"
-
-# MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:7482
-msgid "Checking X axis  "
-msgstr "Kontrola osy X"
-
-# MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:7491
-msgid "Checking Y axis  "
-msgstr "Kontrola osy Y"
-
-# MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:8671
-msgid "Checking Z axis  "
-msgstr "Kontrola osy Z"
-
-# MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:45
-msgid "Choose extruder:"
-msgstr "Vyberte extruder:"
-
-# MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:46
-msgid "Choose filament:"
-msgstr "Vyber filament:"
-
-# MSG_FILAMENT c=17 r=1
-#: messages.c:27
-msgid "Filament"
-msgstr ""
-
-# MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:5055
-msgid "I will run xyz calibration now. It will take approx. 12 mins."
-msgstr "Nyni provedu xyz kalibraci. Zabere to priblizne 12 min."
-
-# MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:5063
-msgid "I will run z calibration now."
-msgstr "Nyni provedu z kalibraci."
-
-# MSG_WATCH
-#: messages.c:97
-msgid "Info screen"
-msgstr "Informace"
-
-# MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2605
-msgid "Insert filament"
-msgstr "Vlozte filament"
-
-# MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4835
-msgid "Is filament loaded?"
-msgstr "Je filament zaveden?"
-
-# MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:90
-msgid "Is steel sheet on heatbed?"
-msgstr "Je tiskovy plat na podlozce?"
-
-# 
-#: ultralcd.cpp:1727
-msgid "Last print failures"
-msgstr "Selhani posl. tisku"
-
-# 
-#: ultralcd.cpp:5133
-msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
-msgstr "Mate-li vice tiskovych platu, kalibrujte je v menu Nastaveni - HW nastaveni - Tiskove platy"
-
-# 
-#: ultralcd.cpp:1704
-msgid "Last print"
-msgstr "Posledni tisk"
-
-# MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:72
-msgid "Left hotend fan?"
-msgstr "Levy vent na trysce?"
-
-# 
-#: ultralcd.cpp:2993
-msgid "Left"
-msgstr "Vlevo"
-
-# MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3264
-msgid "Left side [um]"
-msgstr "Vlevo [um]"
-
-# 
-#: ultralcd.cpp:5766
-msgid "Lin. correction"
-msgstr "Korekce lin."
-
-# MSG_BABYSTEP_Z
-#: messages.c:12
-msgid "Live adjust Z"
-msgstr "Doladeni osy Z"
-
-#  c=20 r=6
-#: ultralcd.cpp:7527
-msgid "Insert the filament (do not load it) into the extruder and then press the knob."
-msgstr "Vlozte filament (nezavadejte) do extruderu a stisknete tlacitko"
-
-# MSG_LOAD_FILAMENT c=17
-#: messages.c:47
-msgid "Load filament"
-msgstr "Zavest filament"
-
-# MSG_LOADING_COLOR
-#: ultralcd.cpp:2645
-msgid "Loading color"
-msgstr "Cisteni barvy"
-
-# MSG_LOADING_FILAMENT c=20
-#: messages.c:48
-msgid "Loading filament"
-msgstr "Zavadeni filamentu"
-
-# MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:8317
-msgid "Loose pulley"
-msgstr "Uvolnena remenicka"
-
-# 
-#: ultralcd.cpp:6944
-msgid "Load to nozzle"
-msgstr "Zavest do trysky"
-
-# MSG_M117_V2_CALIBRATION c=25
-#: messages.c:51
-msgid "M117 First layer cal."
-msgstr "M117 Kal. prvni vrstvy"
-
-# MSG_MAIN
-#: messages.c:52
-msgid "Main"
-msgstr "Hlavni nabidka"
-
-# MSG_BL_HIGH c=12
-#: messages.c:135
-msgid "Level Bright"
-msgstr ""
-
-# MSG_BL_LOW c=12
-#: messages.c:136
-msgid "Level Dimmed"
-msgstr ""
-
-# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:55
-msgid "Measuring reference height of calibration point"
-msgstr "Merim referencni vysku kalibracniho bodu"
-
-# MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5856
-msgid "Mesh Bed Leveling"
-msgstr ""
-
-# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:765
-msgid "MMU OK. Resuming position..."
-msgstr "MMU OK. Pokracuji v tisku..."
-
-# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:758
-msgid "MMU OK. Resuming temperature..."
-msgstr "MMU OK. Pokracuji v nahrivani..."
-
-# 
-#: ultralcd.cpp:3034
-msgid "Measured skew"
-msgstr "Merene zkoseni"
-
-# 
-#: ultralcd.cpp:1728
-msgid "MMU fails"
-msgstr "Selhani MMU"
-
-# 
-#: mmu.cpp:1588
-msgid "MMU load failed     "
-msgstr "Zavedeni MMU selhalo"
-
-# 
-#: ultralcd.cpp:1729
-msgid "MMU load fails"
-msgstr "MMU selhani zavadeni"
-
-# MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:776
-msgid "MMU OK. Resuming..."
-msgstr "MMU OK. Pokracuji..."
-
-# MSG_MODE
-#: messages.c:84
-msgid "Mode"
-msgstr "Mod"
-
-#  c=20 r=3
-#: Marlin_main.cpp:879
-msgid "MK3 firmware detected on MK3S printer"
-msgstr ""
-
-# MSG_NORMAL
-#: messages.c:88
-msgid "Normal"
-msgstr ""
-
-# MSG_SILENT
-#: messages.c:87
-msgid "Silent"
-msgstr "Tichy"
-
-# 
-#: mmu.cpp:722
-msgid "MMU needs user attention."
-msgstr "MMU potrebuje zasah uzivatele."
-
-# 
-#: ultralcd.cpp:1755
-msgid "MMU power fails"
-msgstr "MMU vypadky proudu"
-
-# MSG_STEALTH
-#: messages.c:89
-msgid "Stealth"
-msgstr "Tichy"
-
-# MSG_AUTO_POWER
-#: messages.c:86
-msgid "Auto power"
-msgstr "Automaticky"
-
-# MSG_HIGH_POWER
-#: messages.c:85
-msgid "High power"
-msgstr "Vys. vykon"
-
-# 
-#: ultralcd.cpp:2186
-msgid "MMU2 connected"
-msgstr "MMU2 pripojeno"
-
-# MSG_SELFTEST_MOTOR
-#: messages.c:79
-msgid "Motor"
-msgstr ""
-
-# MSG_MOVE_AXIS
-#: ultralcd.cpp:5741
-msgid "Move axis"
-msgstr "Posunout osu"
-
-# MSG_MOVE_X
-#: ultralcd.cpp:4361
-msgid "Move X"
-msgstr "Posunout X"
-
-# MSG_MOVE_Y
-#: ultralcd.cpp:4362
-msgid "Move Y"
-msgstr "Posunout Y"
-
-# MSG_MOVE_Z
-#: ultralcd.cpp:4363
-msgid "Move Z"
-msgstr "Posunout Z"
-
-# MSG_NO_MOVE
-#: Marlin_main.cpp:5541
-msgid "No move."
-msgstr "Bez pohybu."
-
-# MSG_NO_CARD
-#: ultralcd.cpp:6911
-msgid "No SD card"
-msgstr "Zadna SD karta"
-
-# MSG_NA
-#: messages.c:107
-msgid "N/A"
-msgstr ""
-
-# MSG_NO
-#: messages.c:58
-msgid "No"
-msgstr "Ne"
-
-# MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:8265
-msgid "Not connected"
-msgstr "Nezapojeno "
-
-# 
-#: util.cpp:293
-msgid "New firmware version available:"
-msgstr "Vysla nova verze firmware:"
-
-# MSG_SELFTEST_FAN_NO c=19
-#: messages.c:75
-msgid "Not spinning"
-msgstr "Netoci se"
-
-# MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4946
-msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
-msgstr "Nyni zkalibruji vzdalenost mezi koncem trysky a povrchem podlozky."
-
-# MSG_WIZARD_WILL_PREHEAT c=20 r=4
-#: ultralcd.cpp:5071
-msgid "Now I will preheat nozzle for PLA."
-msgstr "Nyni predehreji trysku pro PLA."
-
-# MSG_NOZZLE
-#: messages.c:59
-msgid "Nozzle"
-msgstr "Tryska"
-
-# MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
-#: Marlin_main.cpp:1518
-msgid "Old settings found. Default PID, Esteps etc. will be set."
-msgstr "Neplatne hodnoty nastaveni. Bude pouzito vychozi PID, Esteps atd."
-
-# 
-#: ultralcd.cpp:5062
-msgid "Now remove the test print from steel sheet."
-msgstr "Nyni odstrante testovaci vytisk z tiskoveho platu."
-
-# 
-#: ultralcd.cpp:1654
-msgid "Nozzle FAN"
-msgstr "Vent. trysky"
-
-# MSG_PAUSE_PRINT
-#: ultralcd.cpp:6875
-msgid "Pause print"
-msgstr "Pozastavit tisk"
-
-# MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1539
-msgid "PID cal.           "
-msgstr "PID kal. "
-
-# MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1545
-msgid "PID cal. finished"
-msgstr "PID kal. ukoncena"
-
-# MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5862
-msgid "PID calibration"
-msgstr "PID kalibrace"
-
-# MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:896
-msgid "PINDA Heating"
-msgstr "Nahrivani PINDA"
-
-# MSG_PAPER c=20 r=10
-#: messages.c:60
-msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
-msgstr "Umistete list papiru na podlozku a udrzujte jej pod tryskou behem mereni prvnich 4 bodu. Pokud tryska zachyti papir, okamzite vypnete tiskarnu."
-
-# MSG_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:5128
-msgid "Please clean heatbed and then press the knob."
-msgstr "Prosim ocistete podlozku a stisknete tlacitko."
-
-# MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
-#: messages.c:21
-msgid "Please clean the nozzle for calibration. Click when done."
-msgstr "Pro uspesnou kalibraci ocistete prosim tiskovou trysku. Potvrdte tlacitkem."
-
-# MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:8257
-msgid "Please check :"
-msgstr "Zkontrolujte :"
-
-# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:98
-msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
-msgstr "Prosim nahlednete do prirucky 3D tiskare a opravte problem. Pote obnovte Pruvodce restartovanim tiskarny."
-
-# MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3138
-msgid "Please open idler and remove filament manually."
-msgstr "Prosim otevrete idler a manualne odstrante filament."
-
-# MSG_PLACE_STEEL_SHEET c=20 r=4
-#: messages.c:61
-msgid "Please place steel sheet on heatbed."
-msgstr "Umistete prosim tiskovy plat na podlozku"
-
-# MSG_PRESS_TO_UNLOAD c=20 r=4
-#: messages.c:64
-msgid "Please press the knob to unload filament"
-msgstr "Pro vysunuti filamentu stisknete prosim tlacitko"
-
-# MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:66
-msgid "Please pull out filament immediately"
-msgstr "Prosim vyjmete urychlene filament"
-
-# MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1422
-msgid "Please remove filament and then press the knob."
-msgstr "Prosim vyjmete filament a pote stisknete tlacitko."
-
-# MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:70
-msgid "Please remove steel sheet from heatbed."
-msgstr "Odstrante prosim tiskovy plat z podlozky."
-
-# MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4583
-msgid "Please run XYZ calibration first."
-msgstr "Nejprve spustte kalibraci XYZ."
-
-# MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1341
-msgid "Please update firmware in your MMU2. Waiting for reset."
-msgstr "Prosim aktualizujte firmware ve vasi MMU2 jednotce. Cekam na reset."
-
-# MSG_PLEASE_WAIT c=20
-#: messages.c:62
-msgid "Please wait"
-msgstr "Prosim cekejte"
-
-# 
-#: ultralcd.cpp:5061
-msgid "Please remove shipping helpers first."
-msgstr "Nejprve prosim sundejte transportni soucastky."
-
-# MSG_PREHEAT_NOZZLE c=20
-#: messages.c:63
-msgid "Preheat the nozzle!"
-msgstr "Predehrejte trysku!"
-
-# MSG_PREHEAT
-#: ultralcd.cpp:6853
-msgid "Preheat"
-msgstr "Predehrev"
-
-# MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:100
-msgid "Preheating nozzle. Please wait."
-msgstr "Predehrev trysky. Prosim cekejte."
-
-#  c=14
-#: ultralcd.cpp:1959
-msgid "PINDA"
-msgstr ""
-
-# 
-#: util.cpp:297
-msgid "Please upgrade."
-msgstr "Prosim aktualizujte."
-
-# MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:11526
-msgid "Press knob to preheat nozzle and continue."
-msgstr "Pro nahrati trysky a pokracovani stisknete tlacitko."
-
-# MSG_FS_PAUSE c=5
-#: fsensor.cpp:710
-msgid "Pause"
-msgstr ""
-
-# 
-#: ultralcd.cpp:1783
-msgid "Power failures"
-msgstr "Vypadky proudu"
-
-# MSG_PRINT_ABORTED c=20
-#: messages.c:65
-msgid "Print aborted"
-msgstr "Tisk prerusen"
-
-#  c=20
-#: ultralcd.cpp:2442
-msgid "Preheating to load"
-msgstr "Predehrev k zavedeni"
-
-#  c=20
-#: ultralcd.cpp:2446
-msgid "Preheating to unload"
-msgstr "Predehrev k vyjmuti"
-
-# MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:8689
-msgid "Print fan:"
-msgstr "Tiskovy vent.:"
-
-# MSG_CARD_MENU
-#: messages.c:20
-msgid "Print from SD"
-msgstr "Tisk z SD"
-
-# 
-#: ultralcd.cpp:2289
-msgid "Press the knob"
-msgstr "Stisknete hl. tlacitko"
-
-# MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1118
-msgid "Print paused"
-msgstr "Tisk pozastaven"
-
-# 
-#: mmu.cpp:726
-msgid "Press the knob to resume nozzle temperature."
-msgstr "Pro pokracovani nahrivani trysky stisknete tlacitko."
-
-# MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
-#: messages.c:38
-msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
-msgstr "Tiskarna nebyla jeste zkalibrovana. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Postup kalibrace."
-
-# 
-#: ultralcd.cpp:1655
-msgid "Print FAN"
-msgstr "Tiskovy vent."
-
-# 
-#: ultralcd.cpp:4926
-msgid "Please insert filament into the extruder, then press the knob to load it."
-msgstr "Prosim vlozte filament do extruderu a stisknete tlacitko k jeho zavedeni"
-
-# 
-#: ultralcd.cpp:4921
-msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
-msgstr "Prosim vlozte filament do prvni trubicky MMU a stisknete tlacitko k jeho zavedeni"
-
-# 
-#: ultralcd.cpp:4843
-msgid "Please load filament first."
-msgstr "Prosim nejdriv zavedte filament"
-
-# MSG_PRUSA3D
-#: ultralcd.cpp:2155
-msgid "prusa3d.com"
-msgstr ""
-
-# MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3267
-msgid "Rear side [um]"
-msgstr "Vzadu [um]"
-
-#  c=20 r=4
-#: ultralcd.cpp:7549
-msgid "Please unload the filament first, then repeat this action."
-msgstr "Prosim vyjmete filament a zopakujte tuto akci"
-
-# MSG_RECOVERING_PRINT c=20
-#: Marlin_main.cpp:10883
-msgid "Recovering print    "
-msgstr "Obnovovani tisku    "
-
-# MSG_REMOVE_OLD_FILAMENT c=20 r=5
-#: mmu.cpp:833
-msgid "Remove old filament and press the knob to start loading new filament."
-msgstr "Vyjmete stary filament a stisknete tlacitko pro zavedeni noveho."
-
-#  c=20
-#: 
-msgid "Prusa i3 MK3S OK."
-msgstr ""
-
-# MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5867
-msgid "Reset XYZ calibr."
-msgstr "Reset XYZ kalibr."
-
-# MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3268
-msgid "Reset"
-msgstr ""
-
-# MSG_RESUME_PRINT
-#: ultralcd.cpp:6861
-msgid "Resume print"
-msgstr "Pokracovat"
-
-# MSG_RESUMING_PRINT c=20
-#: messages.c:69
-msgid "Resuming print"
-msgstr "Obnoveni tisku"
-
-# MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3265
-msgid "Right side[um]"
-msgstr "Vpravo [um]"
-
-# MSG_RPI_PORT
-#: messages.c:123
-msgid "RPi port"
-msgstr ""
-
-# MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4864
-msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
-msgstr "Spusteni Pruvodce vymaze ulozene vysledky vsech kalibraci a spusti kalibracni proces od zacatku. Pokracovat?"
-
-# MSG_SD_CARD
-#: messages.c:118
-msgid "SD card"
-msgstr ""
-
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
-#: messages.c:119
-msgid "FlashAir"
-msgstr ""
-
-# 
-#: ultralcd.cpp:2994
-msgid "Right"
-msgstr "Vpravo"
-
-# MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: messages.c:35
-msgid "Searching bed calibration point"
-msgstr "Hledam kalibracni bod podlozky"
-
-# MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5779
-msgid "Select language"
-msgstr "Vyber jazyka"
-
-# MSG_SELFTEST_OK
-#: ultralcd.cpp:7812
-msgid "Self test OK"
-msgstr ""
-
-# MSG_SELFTEST_START c=20
-#: ultralcd.cpp:7582
-msgid "Self test start  "
-msgstr "Self test start "
-
-# MSG_SELFTEST
-#: ultralcd.cpp:5843
-msgid "Selftest         "
-msgstr "Selftest "
-
-# MSG_SELFTEST_ERROR
-#: ultralcd.cpp:8255
-msgid "Selftest error !"
-msgstr "Chyba Selftestu!"
-
-# MSG_SELFTEST_FAILED c=20
-#: messages.c:73
-msgid "Selftest failed  "
-msgstr "Selftest selhal "
-
-# MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1550
-msgid "Selftest will be run to calibrate accurate sensorless rehoming."
-msgstr "Pro kalibraci presneho rehomovani bude nyni spusten selftest."
-
-# 
-#: ultralcd.cpp:5102
-msgid "Select nozzle preheat temperature which matches your material."
-msgstr "Vyberte teplotu predehrati trysky ktera odpovida vasemu materialu."
-
-# MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3286
-msgid "Set temperature:"
-msgstr "Nastavte teplotu:"
-
-#  c=20
-#: 
-msgid "Prusa i3 MK2.5 OK."
-msgstr ""
-
-#  c=20
-#: 
-msgid "Prusa i3 MK2.5S OK."
-msgstr ""
-
-#  c=20
-#: 
-msgid "Prusa i3 MK3 OK."
-msgstr ""
-
-# MSG_SETTINGS
-#: messages.c:82
-msgid "Settings"
-msgstr "Nastaveni"
-
-# MSG_SHOW_END_STOPS c=18
-#: ultralcd.cpp:5864
-msgid "Show end stops"
-msgstr "Stav konc. spin."
-
-# 
-#: ultralcd.cpp:4008
-msgid "Sensor state"
-msgstr "Stav senzoru"
-
-# MSG_FILE_CNT c=20 r=6
-#: cardreader.cpp:738
-msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
-msgstr "Nektere soubory nebudou setrideny. Maximalni pocet souboru ve slozce pro setrideni je 100."
-
-# MSG_SORT
-#: messages.c:120
-msgid "Sort"
-msgstr "Trideni"
-
-# MSG_NONE
-#: messages.c:110
-msgid "None"
-msgstr "Zadne"
-
-# MSG_SORT_TIME
-#: messages.c:121
-msgid "Time"
-msgstr "Cas"
-
-# 
-#: ultralcd.cpp:3037
-msgid "Severe skew:"
-msgstr "Tezke zkoseni:"
-
-# MSG_SORT_ALPHA
-#: messages.c:122
-msgid "Alphabet"
-msgstr "Abeceda"
-
-# MSG_SORTING c=20 r=1
-#: cardreader.cpp:745
-msgid "Sorting files"
-msgstr "Trideni souboru"
-
-# MSG_SOUND_LOUD
-#: messages.c:125
-msgid "Loud"
-msgstr "Hlasity"
-
-# 
-#: ultralcd.cpp:3036
-msgid "Slight skew:"
-msgstr "Lehke zkoseni:"
-
-# MSG_SOUND
-#: messages.c:124
-msgid "Sound"
-msgstr "Zvuk"
-
-#  c=7
-#: ultralcd.cpp:1822
-msgid "Runouts"
-msgstr ""
-
-# 
-#: Marlin_main.cpp:5101
-msgid "Some problem encountered, Z-leveling enforced ..."
-msgstr "Vyskytl se problem, srovnavam osu Z ..."
-
-# MSG_SOUND_ONCE
-#: messages.c:126
-msgid "Once"
-msgstr "Jednou"
-
-# MSG_SPEED
-#: ultralcd.cpp:7119
-msgid "Speed"
-msgstr "Rychlost"
-
-# MSG_SELFTEST_FAN_YES c=19
-#: messages.c:76
-msgid "Spinning"
-msgstr "Toci se"
-
-# MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4596
-msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
-msgstr "Je vyzadovana stabilni pokojova teplota 21-26C a pevna podlozka."
-
-# MSG_STATISTICS
-#: ultralcd.cpp:6978
-msgid "Statistics  "
-msgstr "Statistika "
-
-# MSG_STOP_PRINT
-#: messages.c:91
-msgid "Stop print"
-msgstr "Zastavit tisk"
-
-# MSG_STOPPED
-#: messages.c:92
-msgid "STOPPED. "
-msgstr "ZASTAVENO."
-
-# MSG_SUPPORT
-#: ultralcd.cpp:6987
-msgid "Support"
-msgstr "Podpora"
-
-# MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:8335
-msgid "Swapped"
-msgstr "Prohozene"
-
-# 
-#: ultralcd.cpp:4814
-msgid "Select filament:"
-msgstr "Zvolte filament:"
-
-# MSG_TEMP_CALIBRATION c=14
-#: messages.c:93
-msgid "Temp. cal."
-msgstr "Tepl. kal."
-
-# 
-#: ultralcd.cpp:4955
-msgid "Select temperature which matches your material."
-msgstr "Zvolte teplotu, ktera odpovida vasemu materialu."
-
-# MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5873
-msgid "Temp. calibration"
-msgstr "Teplot. kalibrace"
-
-# MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3933
-msgid "Temperature calibration failed"
-msgstr "Teplotni kalibrace selhala"
-
-# MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:94
-msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
-msgstr "Teplotni kalibrace dokoncena a je nyni aktivni. Teplotni kalibraci je mozno deaktivovat v menu Nastaveni->Tepl. kal."
-
-#  c=20 r=3
-#: ultralcd.cpp:7554
-msgid "Sensor verified, remove the filament now."
-msgstr "Senzor overen, vyjmete filament."
-
-# MSG_TEMPERATURE
-#: ultralcd.cpp:5739
-msgid "Temperature"
-msgstr "Teplota"
-
-# MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2218
-msgid "Temperatures"
-msgstr "Teploty"
-
-# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
-#: messages.c:39
-msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
-msgstr "Je potreba kalibrovat osu Z. Prosim postupujte dle prirucky, kapitola Zaciname, sekce Postup kalibrace."
-
-# 
-#: ultralcd.cpp:2891
-msgid "Total filament"
-msgstr "Filament celkem"
-
-# 
-#: ultralcd.cpp:2892
-msgid "Total print time"
-msgstr "Celkovy cas tisku"
-
-# MSG_TUNE
-#: ultralcd.cpp:6850
-msgid "Tune"
-msgstr "Ladit"
-
-# 
-#: 
-msgid "Unload"
-msgstr "Vysunout"
-
-# 
-#: ultralcd.cpp:1752
-msgid "Total failures"
-msgstr "Celkem selhani"
-
-# 
-#: ultralcd.cpp:2296
-msgid "to load filament"
-msgstr "k zavedeni filamentu"
-
-# 
-#: ultralcd.cpp:2300
-msgid "to unload filament"
-msgstr "k vyjmuti filamentu"
-
-# MSG_UNLOAD_FILAMENT c=17
-#: messages.c:95
-msgid "Unload filament"
-msgstr "Vyjmout filament"
-
-# MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:96
-msgid "Unloading filament"
-msgstr "Vysouvam filament"
-
-# 
-#: ultralcd.cpp:1705
-msgid "Total"
-msgstr "Celkem"
-
-# MSG_USED c=19 r=1
-#: ultralcd.cpp:6001
-msgid "Used during print"
-msgstr "Pouzite behem tisku"
-
-# MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2221
-msgid "Voltages"
-msgstr "Napeti"
-
-# 
-#: ultralcd.cpp:2194
-msgid "unknown"
-msgstr "neznamy"
-
-# MSG_USERWAIT
-#: Marlin_main.cpp:5511
-msgid "Wait for user..."
-msgstr "Ceka se na uzivatele..."
-
-# MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3434
-msgid "Waiting for nozzle and bed cooling"
-msgstr "Cekani na zchladnuti trysky a podlozky."
-
-# MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3395
-msgid "Waiting for PINDA probe cooling"
-msgstr "Cekani na zchladnuti PINDA"
-
-# 
-#: 
-msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU tube. Use eject if it is hidden in tube."
-msgstr "Pouzijte vyjmout pro odstraneni filamentu 1 pokud presahuje z PTFE trubicky za tiskarnou. Pouzijte vysunout, pokud neni videt."
-
-# MSG_CHANGED_BOTH c=20 r=4
-#: Marlin_main.cpp:1510
-msgid "Warning: both printer type and motherboard type changed."
-msgstr "Varovani: doslo ke zmene typu tiskarny a motherboardu."
-
-# MSG_CHANGED_MOTHERBOARD c=20 r=4
-#: Marlin_main.cpp:1502
-msgid "Warning: motherboard type changed."
-msgstr "Varovani: doslo ke zmene typu motherboardu."
-
-# MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1506
-msgid "Warning: printer type changed."
-msgstr "Varovani: doslo ke zmene typu tiskarny."
-
-# MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3128
-msgid "Was filament unload successful?"
-msgstr "Bylo vysunuti filamentu uspesne?"
-
-# MSG_SELFTEST_WIRINGERROR
-#: messages.c:81
-msgid "Wiring error"
-msgstr "Chyba zapojeni"
-
-# MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5834
-msgid "Wizard"
-msgstr "Pruvodce"
-
-# MSG_XYZ_DETAILS c=18
-#: ultralcd.cpp:2210
-msgid "XYZ cal. details"
-msgstr "Detaily XYZ kal."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
-#: messages.c:18
-msgid "XYZ calibration failed. Please consult the manual."
-msgstr "Kalibrace XYZ selhala. Nahlednete do manualu."
-
-# MSG_YES
-#: messages.c:102
-msgid "Yes"
-msgstr "Ano"
-
-# MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:101
-msgid "You can always resume the Wizard from Calibration -> Wizard."
-msgstr "Pruvodce muzete kdykoliv znovu spustit z menu Kalibrace -> Pruvodce"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
-#: ultralcd.cpp:3904
-msgid "XYZ calibration all right. Skew will be corrected automatically."
-msgstr "Kalibrace XYZ v poradku. Zkoseni bude automaticky vyrovnano pri tisku."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
-#: ultralcd.cpp:3901
-msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
-msgstr "Kalibrace XYZ v poradku. X/Y osy mirne zkosene. Dobra prace!"
-
-# MSG_TIMEOUT c=12
-#: messages.c:137
-msgid "Timeout"
-msgstr ""
-
-# MSG_X_CORRECTION c=13
-#: ultralcd.cpp:5190
-msgid "X-correct:"
-msgstr "Korekce X:"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3898
-msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
-msgstr "Kalibrace XYZ v poradku. X/Y osy jsou kolme. Gratuluji!"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
-#: ultralcd.cpp:3882
-msgid "XYZ calibration compromised. Front calibration points not reachable."
-msgstr "Kalibrace XYZ nepresna. Predni kalibracni body moc vpredu."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3885
-msgid "XYZ calibration compromised. Right front calibration point not reachable."
-msgstr "Kalibrace XYZ nepresna. Pravy predni bod moc vpredu."
-
-# MSG_LOAD_ALL c=17
-#: ultralcd.cpp:6261
-msgid "Load all"
-msgstr "Zavest vse"
-
-# 
-#: ultralcd.cpp:3864
-msgid "XYZ calibration failed. Bed calibration point was not found."
-msgstr "Kalibrace XYZ selhala. Kalibracni bod podlozky nenalezen."
-
-# 
-#: ultralcd.cpp:3870
-msgid "XYZ calibration failed. Front calibration points not reachable."
-msgstr "Kalibrace XYZ selhala. Predni kalibracni body moc vpredu. Srovnejte tiskarnu."
-
-# 
-#: ultralcd.cpp:3873
-msgid "XYZ calibration failed. Right front calibration point not reachable."
-msgstr "Kalibrace XYZ selhala. Pravy predni bod moc vpredu. Srovnejte tiskarnu."
-
-# 
-#: ultralcd.cpp:2991
-msgid "Y distance from min"
-msgstr "Y vzdalenost od min"
-
-# 
-#: ultralcd.cpp:4958
-msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
-msgstr "Tiskarna zacne tisknout lomenou caru. Otacenim tlacitka nastavte optimalni vysku. Postupujte podle obrazku v handbooku (kapitola Kalibrace)."
-
-#  c=20 r=5
-#: ultralcd.cpp:7558
-msgid "Verification failed, remove the filament and try again."
-msgstr "Overeni selhalo, vyjmete filament a zkuste znovu."
-
-# MSG_Y_CORRECTION c=13
-#: ultralcd.cpp:5191
-msgid "Y-correct:"
-msgstr "Korekce Y:"
-
-# MSG_OFF
-#: messages.c:105
-msgid "Off"
-msgstr "Vyp"
-
-# MSG_ON
-#: messages.c:106
-msgid "On"
-msgstr "Zap"
-
-# 
-#: messages.c:53
-msgid "Back"
-msgstr "Zpet"
-
-# 
-#: ultralcd.cpp:5724
-msgid "Checks"
-msgstr "Kontrola"
-
-# 
-#: ultralcd.cpp:8349
-msgid "False triggering"
-msgstr "Falesne spusteni"
-
-# 
-#: ultralcd.cpp:4013
-msgid "FINDA:"
-msgstr ""
-
-# MSG_FIRMWARE
-#: language.h:23
-msgid "Firmware"
-msgstr ""
-
-# MSG_STRICT
-#: messages.c:112
-msgid "Strict"
-msgstr "Prisne"
-
-# MSG_WARN
-#: messages.c:111
-msgid "Warn"
-msgstr "Varovat"
-
-# 
-#: messages.c:83
-msgid "HW Setup"
-msgstr "HW nastaveni"
-
-# 
-#: ultralcd.cpp:4017
-msgid "IR:"
-msgstr ""
-
-# MSG_MAGNETS_COMP
-#: messages.c:130
-msgid "Magnets comp."
-msgstr "Komp. magnetu"
-
-# MSG_MESH
-#: messages.c:128
-msgid "Mesh"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5763
-msgid "Mesh bed leveling"
-msgstr "Mesh Bed Leveling"
-
-# 
-#: Marlin_main.cpp:872
-msgid "MK3S firmware detected on MK3 printer"
-msgstr "MK3S firmware detekovan na tiskarne MK3"
-
-# MSG_MMU_MODE
-#: messages.c:117
-msgid "MMU Mode"
-msgstr "MMU mod"
-
-# 
-#: ultralcd.cpp:4494
-msgid "Mode change in progress ..."
-msgstr "Probiha zmena modu..."
-
-# MSG_MODEL
-#: messages.c:113
-msgid "Model"
-msgstr ""
-
-# MSG_NOZZLE_DIAMETER
-#: messages.c:116
-msgid "Nozzle d."
-msgstr "Tryska"
-
-# 
-#: util.cpp:514
-msgid "G-code sliced for a different level. Continue?"
-msgstr ""
-
-# 
-#: util.cpp:520
-msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
-msgstr ""
-
-# 
-#: util.cpp:431
-msgid "G-code sliced for a different printer type. Continue?"
-msgstr "G-code je pripraven pro jiny typ tiskarny. Pokracovat?"
-
-# 
-#: util.cpp:437
-msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
-msgstr "G-code je pripraven pro jiny typ tiskarny. Prosim preslicujte model znovu. Tisk zrusen."
-
-# 
-#: util.cpp:481
-msgid "G-code sliced for a newer firmware. Continue?"
-msgstr "G-code je pripraven pro novejsi firmware. Pokracovat?"
-
-# 
-#: util.cpp:487
-msgid "G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
-msgstr "G-code je pripraven pro novejsi firmware. Prosim aktualizujte firmware. Tisk zrusen."
-
-# 
-#: ultralcd.cpp:4009
-msgid "PINDA:"
-msgstr ""
-
-#  c=20
-#: ultralcd.cpp:2452
-msgid "Preheating to cut"
-msgstr "Predehrev ke strihu"
-
-#  c=20
-#: ultralcd.cpp:2449
-msgid "Preheating to eject"
-msgstr "Predehrev k vysunuti"
-
-# 
-#: util.cpp:394
-msgid "Printer nozzle diameter differs from the G-code. Continue?"
-msgstr "Prumer trysky tiskarny se lisi od G-code. Pokracovat?"
-
-# 
-#: util.cpp:401
-msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
-msgstr "Prumer trysky tiskarny se lisi od G-code. Prosim zkontrolujte nastaveni. Tisk zrusen."
-
-#  c=20
-#: ultralcd.cpp:8355
-msgid "%s level expected"
-msgstr ""
-
-# 
-#: ultralcd.cpp:6814
-msgid "Rename"
-msgstr "Prejmenovat"
-
-# 
-#: ultralcd.cpp:6807
-msgid "Select"
-msgstr "Vybrat"
-
-# 
-#: ultralcd.cpp:2212
-msgid "Sensor info"
-msgstr "Senzor info"
-
-# MSG_SHEET c=10
-#: messages.c:54
-msgid "Sheet"
-msgstr "Plat"
-
-# MSG_SOUND_BLIND
-#: messages.c:127
-msgid "Assist"
-msgstr "Asist."
-
-#  c=18
-#: ultralcd.cpp:5722
-msgid "Steel sheets"
-msgstr "Tiskove platy"
-
-# MSG_Z_CORRECTION c=13
-#: ultralcd.cpp:5192
-msgid "Z-correct:"
-msgstr "Korekce Z:"
-
-# MSG_Z_PROBE_NR
-#: messages.c:129
-msgid "Z-probe nr."
-msgstr "Pocet mereni Z"
-
+# Translation of Prusa-Firmware into Czech.
+#
+msgid ""
+msgstr ""
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: cs\n"
+"Project-Id-Version: Prusa-Firmware\n"
+"POT-Creation-Date: Di 26. Jan 11:03:57 CET 2021\n"
+"PO-Revision-Date: Di 26. Jan 11:03:57 CET 2021\n"
+"Language-Team: \n"
+"X-Generator: Poedit 2.0.7\n"
+"X-Poedit-SourceCharset: UTF-8\n"
+"Last-Translator: \n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+# 
+#: 
+msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
+msgstr "[%.7s]Doladeni Z\x0auz nastaveno, pouzit\x0anebo reset od nuly?\x0a%cPokracovat%cReset"
+
+# MSG_IR_03_OR_OLDER c=18
+#: messages.c:164
+msgid " 0.3 or older"
+msgstr " 0.3 nebo starsi"
+
+#  c=18
+#: Marlin_main.cpp:9626
+msgid "FS v0.3 or older"
+msgstr "FS 0.3 nebo starsi"
+
+# MSG_IR_04_OR_NEWER c=18
+#: messages.c:163
+msgid " 0.4 or newer"
+msgstr " 0.4 nebo novejsi"
+
+#  c=18
+#: Marlin_main.cpp:9625
+msgid "FS v0.4 or newer"
+msgstr "FS 0.4 a novejsi"
+
+# MSG_IR_UNKNOWN c=18
+#: messages.c:165
+msgid "unknown state"
+msgstr "neznamy stav"
+
+# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
+#: messages.c:43
+msgid " of 4"
+msgstr " z 4"
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
+#: messages.c:66
+msgid " of 9"
+msgstr " z 9"
+
+# MSG_MEASURED_OFFSET
+#: ultralcd.cpp:2988
+msgid "[0;0] point offset"
+msgstr "[0;0] odsazeni bodu"
+
+# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
+#: 
+msgid "Crash detection can\x0abe turned on only in\x0aNormal mode"
+msgstr "Crash detekce muze\x0abyt zapnuta pouze v\x0aNormal modu"
+
+# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
+#: 
+msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
+msgstr "POZOR:\x0aCrash detekce\x0adeaktivovana ve\x0aStealth modu"
+
+# 
+#: ultralcd.cpp:2410
+msgid ">Cancel"
+msgstr ">Zrusit"
+
+# MSG_BABYSTEPPING_Z c=15
+#: ultralcd.cpp:3108
+msgid "Adjusting Z:"
+msgstr "Doladeni Z:"
+
+# MSG_SELFTEST_CHECK_ALLCORRECT c=20
+#: ultralcd.cpp:8390
+msgid "All correct      "
+msgstr "Vse OK "
+
+# MSG_WIZARD_DONE c=20 r=8
+#: messages.c:116
+msgid "All is done. Happy printing!"
+msgstr "Vse je hotovo."
+
+# 
+#: ultralcd.cpp:1902
+msgid "Ambient"
+msgstr "Okoli"
+
+# MSG_AUTO c=6
+#: messages.c:160
+msgid "Auto"
+msgstr ""
+
+# MSG_PRESS c=20 r=2
+#: ultralcd.cpp:2567
+msgid "and press the knob"
+msgstr "a stisknete tlacitko"
+
+# MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
+#: ultralcd.cpp:3429
+msgid "Are left and right Z~carriages all up?"
+msgstr "Dojely oba Z voziky k~hornimu dorazu?"
+
+# MSG_AUTO_DEPLETE c=17 r=1
+#: messages.c:125
+msgid "SpoolJoin"
+msgstr ""
+
+# MSG_AUTO_HOME
+#: messages.c:11
+msgid "Auto home"
+msgstr ""
+
+# MSG_AUTOLOAD_FILAMENT c=18
+#: ultralcd.cpp:6716
+msgid "AutoLoad filament"
+msgstr "AutoZavedeni fil."
+
+# MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
+#: ultralcd.cpp:4346
+msgid "Autoloading filament available only when filament sensor is turned on..."
+msgstr "Automaticke zavadeni filamentu je mozne pouze pri zapnutem filament senzoru..."
+
+# MSG_AUTOLOADING_ENABLED c=20 r=4
+#: ultralcd.cpp:2730
+msgid "Autoloading filament is active, just press the knob and insert filament..."
+msgstr "Automaticke zavadeni filamentu aktivni, stisknete tlacitko a vlozte filament..."
+
+# MSG_SELFTEST_AXIS_LENGTH
+#: ultralcd.cpp:8073
+msgid "Axis length"
+msgstr "Delka osy"
+
+# MSG_SELFTEST_AXIS
+#: ultralcd.cpp:8074
+msgid "Axis"
+msgstr "Osa"
+
+# MSG_SELFTEST_BEDHEATER
+#: ultralcd.cpp:8031
+msgid "Bed / Heater"
+msgstr "Podlozka / Topeni"
+
+# MSG_BED_DONE
+#: messages.c:15
+msgid "Bed done"
+msgstr "Bed OK."
+
+# MSG_BED_HEATING
+#: messages.c:16
+msgid "Bed Heating"
+msgstr "Zahrivani bedu"
+
+# MSG_BED_CORRECTION_MENU
+#: ultralcd.cpp:5802
+msgid "Bed level correct"
+msgstr "Korekce podlozky"
+
+# MSG_BELTTEST c=17
+#: ultralcd.cpp:5782
+msgid "Belt test        "
+msgstr "Test remenu      "
+
+# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
+#: messages.c:17
+msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
+msgstr "Kalibrace Z selhala. Sensor nesepnul. Znecistena tryska? Cekam na reset."
+
+# MSG_BRIGHT c=6
+#: messages.c:158
+msgid "Bright"
+msgstr "Jasny"
+
+# MSG_BRIGHTNESS c=18
+#: messages.c:154
+msgid "Brightness"
+msgstr "Podsviceni"
+
+# MSG_BED
+#: messages.c:14
+msgid "Bed"
+msgstr "Podlozka"
+
+# MSG_BELT_STATUS c=18
+#: 
+msgid "Belt status"
+msgstr "Stav remenu"
+
+# MSG_RECOVER_PRINT c=20 r=2
+#: messages.c:80
+msgid "Blackout occurred. Recover print?"
+msgstr "Detekovan vypadek proudu.Obnovit tisk?"
+
+# 
+#: ultralcd.cpp:8392
+msgid "Calibrating home"
+msgstr "Kalibruji vychozi poz."
+
+# MSG_CALIBRATE_BED
+#: ultralcd.cpp:5791
+msgid "Calibrate XYZ"
+msgstr "Kalibrace XYZ"
+
+# MSG_HOMEYZ
+#: messages.c:51
+msgid "Calibrate Z"
+msgstr "Kalibrovat Z"
+
+# MSG_CALIBRATE_PINDA c=17 r=1
+#: ultralcd.cpp:4538
+msgid "Calibrate"
+msgstr "Zkalibrovat"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
+#: ultralcd.cpp:3392
+msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "Kalibrace XYZ. Otacenim tlacitka posunte Z osu az k~hornimu dorazu. Potvrdte tlacitkem."
+
+# MSG_CALIBRATE_Z_AUTO c=20 r=2
+#: messages.c:20
+msgid "Calibrating Z"
+msgstr "Kalibruji Z"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
+#: ultralcd.cpp:3392
+msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "Kalibrace Z. Otacenim tlacitka posunte Z osu az k~hornimu dorazu. Potvrdte tlacitkem."
+
+# MSG_HOMEYZ_DONE
+#: ultralcd.cpp:813
+msgid "Calibration done"
+msgstr "Kalibrace OK"
+
+# MSG_MENU_CALIBRATION
+#: messages.c:67
+msgid "Calibration"
+msgstr "Kalibrace"
+
+# 
+#: ultralcd.cpp:4716
+msgid "Cancel"
+msgstr "Zrusit"
+
+# MSG_SD_REMOVED
+#: ultralcd.cpp:8842
+msgid "Card removed"
+msgstr "Karta vyjmuta"
+
+# MSG_NOT_COLOR
+#: ultralcd.cpp:2647
+msgid "Color not correct"
+msgstr "Barva neni cista"
+
+# MSG_COOLDOWN
+#: messages.c:25
+msgid "Cooldown"
+msgstr "Zchladit"
+
+# 
+#: ultralcd.cpp:4471
+msgid "Copy selected language?"
+msgstr "Kopirovat vybrany jazyk?"
+
+# MSG_CRASHDETECT c=13
+#: messages.c:28
+msgid "Crash det."
+msgstr ""
+
+# 
+#: ultralcd.cpp:4851
+msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
+msgstr "Zvolte filament pro kalibraci prvni vrstvy z nasledujiciho menu"
+
+# MSG_CRASH_DETECTED c=20 r=1
+#: messages.c:27
+msgid "Crash detected."
+msgstr "Detekovan naraz."
+
+# 
+#: Marlin_main.cpp:657
+msgid "Crash detected. Resume print?"
+msgstr "Detekovan naraz. Obnovit tisk?"
+
+# MSG_CRASH c=7
+#: messages.c:26
+msgid "Crash"
+msgstr "Naraz"
+
+# MSG_CURRENT c=19 r=1
+#: ultralcd.cpp:5933
+msgid "Current"
+msgstr "Pouze aktualni"
+
+# MSG_DATE c=17 r=1
+#: ultralcd.cpp:2112
+msgid "Date:"
+msgstr "Datum:"
+
+# MSG_DISABLE_STEPPERS
+#: ultralcd.cpp:5683
+msgid "Disable steppers"
+msgstr "Vypnout motory"
+
+# MSG_BABYSTEP_Z_NOT_SET c=20 r=12
+#: messages.c:13
+msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
+msgstr "Neni zkalibrovana vzdalenost trysky od tiskove podlozky. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Nastaveni prvni vrstvy."
+
+# MSG_FS_CONTINUE c=5
+#: messages.c:152
+msgid "Cont."
+msgstr "Pokr."
+
+# MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
+#: ultralcd.cpp:5026
+msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
+msgstr "Chcete opakovat posledni krok a pozmenit vzdalenost mezi tryskou a podlozkou?"
+
+# MSG_EXTRUDER_CORRECTION c=13
+#: ultralcd.cpp:5095
+msgid "E-correct:"
+msgstr "Korekce E:"
+
+# MSG_EJECT_FILAMENT c=16
+#: messages.c:58
+msgid "Eject filament"
+msgstr "Vysunout fil."
+
+# MSG_EJECTING_FILAMENT c=20 r=1
+#: mmu.cpp:1414
+msgid "Ejecting filament"
+msgstr "Vysouvam filament"
+
+# MSG_SELFTEST_ENDSTOP_NOTHIT c=20
+#: ultralcd.cpp:8049
+msgid "Endstop not hit"
+msgstr "Kon. spinac nesepnut"
+
+# MSG_SELFTEST_ENDSTOP
+#: ultralcd.cpp:8044
+msgid "Endstop"
+msgstr "Koncovy spinac"
+
+# MSG_SELFTEST_ENDSTOPS
+#: ultralcd.cpp:8035
+msgid "Endstops"
+msgstr "Konc. spinace"
+
+# MSG_STACK_ERROR c=20 r=4
+#: ultralcd.cpp:6753
+msgid "Error - static memory has been overwritten"
+msgstr "Chyba - Doslo k prepisu staticke pameti!"
+
+# MSG_CUT_FILAMENT c=16
+#: messages.c:59
+msgid "Cut filament"
+msgstr "Ustrihnout"
+
+# MSG_CUTTER c=9
+#: messages.c:126
+msgid "Cutter"
+msgstr "Strihani"
+
+#  c=18
+#: mmu.cpp:1386
+msgid "Cutting filament"
+msgstr "Strihani filamentu"
+
+# MSG_FSENS_NOT_RESPONDING c=20 r=4
+#: ultralcd.cpp:4359
+msgid "ERROR: Filament sensor is not responding, please check connection."
+msgstr "CHYBA: Filament senzor nereaguje, zkontrolujte prosim zapojeni."
+
+# MSG_DIM c=6
+#: messages.c:159
+msgid "Dim"
+msgstr "Temny"
+
+# MSG_ERROR
+#: messages.c:29
+msgid "ERROR:"
+msgstr "CHYBA:"
+
+# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
+#: ultralcd.cpp:8398
+msgid "Extruder fan:"
+msgstr "Levy vent.:"
+
+# MSG_INFO_EXTRUDER c=18
+#: ultralcd.cpp:2153
+msgid "Extruder info"
+msgstr ""
+
+# MSG_EXTRUDER c=17
+#: messages.c:30
+msgid "Extruder"
+msgstr ""
+
+# 
+#: ultralcd.cpp:6740
+msgid "Fail stats MMU"
+msgstr "Selhani MMU"
+
+# MSG_FSENSOR_AUTOLOAD c=13
+#: messages.c:47
+msgid "F. autoload"
+msgstr "F. autozav."
+
+# 
+#: ultralcd.cpp:6737
+msgid "Fail stats"
+msgstr "Selhani"
+
+# MSG_FAN_SPEED c=14
+#: messages.c:34
+msgid "Fan speed"
+msgstr "Rychlost vent."
+
+# MSG_SELFTEST_FAN c=20
+#: messages.c:89
+msgid "Fan test"
+msgstr "Test ventilatoru"
+
+# MSG_FANS_CHECK c=13
+#: messages.c:31
+msgid "Fans check"
+msgstr "Kontr. vent."
+
+# MSG_FSENSOR
+#: messages.c:48
+msgid "Fil. sensor"
+msgstr "Fil. senzor"
+
+# MSG_FIL_RUNOUTS c=14
+#: 
+msgid "Fil. runouts  "
+msgstr "Vypadky filam."
+
+# MSG_FILAMENT_CLEAN c=20 r=2
+#: messages.c:35
+msgid "Filament extruding & with correct color?"
+msgstr "Filament vytlacen a spravne barvy?"
+
+# MSG_NOT_LOADED c=19
+#: ultralcd.cpp:2646
+msgid "Filament not loaded"
+msgstr "Filament nezaveden"
+
+# MSG_FILAMENT_SENSOR c=20
+#: messages.c:95
+msgid "Filament sensor"
+msgstr "Senzor filamentu"
+
+# MSG_FILAMENT_USED c=19
+#: ultralcd.cpp:2795
+msgid "Filament used"
+msgstr "Spotrebovano filam."
+
+# MSG_PRINT_TIME c=19 r=1
+#: ultralcd.cpp:2796
+msgid "Print time"
+msgstr "Cas tisku"
+
+# MSG_FS_ACTION c=10
+#: messages.c:151
+msgid "FS Action"
+msgstr "FS reakce"
+
+# MSG_FILE_INCOMPLETE c=20 r=3
+#: ultralcd.cpp:8540
+msgid "File incomplete. Continue anyway?"
+msgstr "Soubor nekompletni. Pokracovat?"
+
+# MSG_FINISHING_MOVEMENTS c=20
+#: messages.c:44
+msgid "Finishing movements"
+msgstr "Dokoncovani pohybu"
+
+# MSG_V2_CALIBRATION c=18
+#: messages.c:120
+msgid "First layer cal."
+msgstr "Kal. prvni vrstvy"
+
+# MSG_WIZARD_SELFTEST c=20 r=8
+#: ultralcd.cpp:4947
+msgid "First, I will run the selftest to check most common assembly problems."
+msgstr "Nejdriv pomoci selftestu zkontoluji nejcastejsi chyby vznikajici pri sestaveni tiskarny."
+
+# 
+#: mmu.cpp:726
+msgid "Fix the issue and then press button on MMU unit."
+msgstr "Opravte chybu a pote stisknete tlacitko na jednotce MMU."
+
+# MSG_FLOW
+#: ultralcd.cpp:6880
+msgid "Flow"
+msgstr "Prutok"
+
+# MSG_PRUSA3D_FORUM
+#: ultralcd.cpp:2105
+msgid "forum.prusa3d.com"
+msgstr ""
+
+# MSG_SELFTEST_COOLING_FAN c=20
+#: messages.c:86
+msgid "Front print fan?"
+msgstr "Predni tiskovy vent?"
+
+# MSG_BED_CORRECTION_FRONT c=14 r=1
+#: ultralcd.cpp:3190
+msgid "Front side[um]"
+msgstr "Vpredu [um]"
+
+# MSG_SELFTEST_FANS
+#: ultralcd.cpp:8079
+msgid "Front/left fans"
+msgstr "Predni/levy vent."
+
+# MSG_SELFTEST_HEATERTHERMISTOR
+#: ultralcd.cpp:8027
+msgid "Heater/Thermistor"
+msgstr "Topeni/Termistor"
+
+# MSG_BED_HEATING_SAFETY_DISABLED
+#: Marlin_main.cpp:9616
+msgid "Heating disabled by safety timer."
+msgstr "Zahrivani preruseno bezpecnostnim casovacem."
+
+# MSG_HEATING_COMPLETE c=20
+#: messages.c:50
+msgid "Heating done."
+msgstr "Zahrivani OK."
+
+# MSG_HEATING
+#: messages.c:49
+msgid "Heating"
+msgstr "Zahrivani"
+
+# MSG_WIZARD_WELCOME c=20 r=7
+#: ultralcd.cpp:4926
+msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
+msgstr "Dobry den, jsem vase tiskarna Original Prusa i3. Chcete abych Vas provedla kalibracnim procesem?"
+
+# MSG_PRUSA3D_HOWTO
+#: ultralcd.cpp:2106
+msgid "howto.prusa3d.com"
+msgstr ""
+
+# MSG_FILAMENTCHANGE
+#: messages.c:41
+msgid "Change filament"
+msgstr "Vymenit filament"
+
+# MSG_CHANGE_SUCCESS
+#: ultralcd.cpp:2576
+msgid "Change success!"
+msgstr "Zmena uspesna!"
+
+# MSG_CORRECTLY c=20
+#: ultralcd.cpp:2644
+msgid "Changed correctly?"
+msgstr "Vymena ok?"
+
+# MSG_SELFTEST_CHECK_BED c=20
+#: messages.c:92
+msgid "Checking bed     "
+msgstr "Kontrola podlozky"
+
+# MSG_SELFTEST_CHECK_ENDSTOPS c=20
+#: ultralcd.cpp:8381
+msgid "Checking endstops"
+msgstr "Kontrola endstopu"
+
+# MSG_SELFTEST_CHECK_HOTEND c=20
+#: ultralcd.cpp:8387
+msgid "Checking hotend  "
+msgstr "Kontrola hotend "
+
+# MSG_SELFTEST_CHECK_FSENSOR c=20
+#: messages.c:93
+msgid "Checking sensors "
+msgstr "Kontrola senzoru"
+
+# MSG_CHECKING_X c=20
+#: messages.c:22
+msgid "Checking X axis"
+msgstr "Kontrola osy X"
+
+# MSG_CHECKING_Y c=20
+#: messages.c:23
+msgid "Checking Y axis"
+msgstr "Kontrola osy Y"
+
+# MSG_SELFTEST_CHECK_Z c=20
+#: 
+msgid "Checking Z axis"
+msgstr "Kontrola osy Z"
+
+# MSG_CHOOSE_EXTRUDER c=20 r=1
+#: messages.c:52
+msgid "Choose extruder:"
+msgstr "Vyberte extruder:"
+
+# MSG_CHOOSE_FILAMENT c=20 r=1
+#: messages.c:53
+msgid "Choose filament:"
+msgstr "Vyber filament:"
+
+# MSG_FILAMENT c=17 r=1
+#: messages.c:33
+msgid "Filament"
+msgstr ""
+
+# MSG_WIZARD_XYZ_CAL c=20 r=8
+#: ultralcd.cpp:4956
+msgid "I will run xyz calibration now. It will take approx. 12 mins."
+msgstr "Nyni provedu xyz kalibraci. Zabere to priblizne 12 min."
+
+# MSG_WIZARD_Z_CAL c=20 r=8
+#: ultralcd.cpp:4964
+msgid "I will run z calibration now."
+msgstr "Nyni provedu z kalibraci."
+
+# MSG_WATCH
+#: messages.c:114
+msgid "Info screen"
+msgstr "Informace"
+
+# MSG_INSERT_FILAMENT c=20
+#: ultralcd.cpp:2564
+msgid "Insert filament"
+msgstr "Vlozte filament"
+
+# MSG_FILAMENT_LOADED c=20 r=2
+#: messages.c:36
+msgid "Is filament loaded?"
+msgstr "Je filament zaveden?"
+
+# MSG_STEEL_SHEET_CHECK c=20 r=2
+#: messages.c:107
+msgid "Is steel sheet on heatbed?"
+msgstr "Je tiskovy plat na podlozce?"
+
+# MSG_LAST_PRINT_FAILURES c=20
+#: messages.c:55
+msgid "Last print failures"
+msgstr "Selhani posl. tisku"
+
+# 
+#: ultralcd.cpp:5034
+msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
+msgstr "Mate-li vice tiskovych platu, kalibrujte je v menu Nastaveni - HW nastaveni - Tiskove platy"
+
+# MSG_LAST_PRINT c=18
+#: messages.c:54
+msgid "Last print"
+msgstr "Posledni tisk"
+
+# MSG_SELFTEST_EXTRUDER_FAN c=20
+#: messages.c:87
+msgid "Left hotend fan?"
+msgstr "Levy vent na trysce?"
+
+# 
+#: ultralcd.cpp:2919
+msgid "Left"
+msgstr "Vlevo"
+
+# MSG_BED_CORRECTION_LEFT c=14 r=1
+#: ultralcd.cpp:3188
+msgid "Left side [um]"
+msgstr "Vlevo [um]"
+
+# 
+#: ultralcd.cpp:5706
+msgid "Lin. correction"
+msgstr "Korekce lin."
+
+# MSG_BABYSTEP_Z
+#: messages.c:12
+msgid "Live adjust Z"
+msgstr "Doladeni osy Z"
+
+#  c=20 r=6
+#: ultralcd.cpp:7280
+msgid "Insert the filament (do not load it) into the extruder and then press the knob."
+msgstr "Vlozte filament (nezavadejte) do extruderu a stisknete tlacitko"
+
+# MSG_LOAD_FILAMENT c=17
+#: messages.c:56
+msgid "Load filament"
+msgstr "Zavest filament"
+
+# MSG_LOADING_COLOR
+#: ultralcd.cpp:2598
+msgid "Loading color"
+msgstr "Cisteni barvy"
+
+# MSG_LOADING_FILAMENT c=20
+#: messages.c:57
+msgid "Loading filament"
+msgstr "Zavadeni filamentu"
+
+# MSG_LOOSE_PULLEY c=20 r=1
+#: ultralcd.cpp:8067
+msgid "Loose pulley"
+msgstr "Uvolnena remenicka"
+
+# 
+#: ultralcd.cpp:6699
+msgid "Load to nozzle"
+msgstr "Zavest do trysky"
+
+# MSG_M117_V2_CALIBRATION c=25
+#: messages.c:60
+msgid "M117 First layer cal."
+msgstr "M117 Kal. prvni vrstvy"
+
+# MSG_MAIN
+#: messages.c:61
+msgid "Main"
+msgstr "Hlavni nabidka"
+
+# MSG_BL_HIGH c=12
+#: messages.c:155
+msgid "Level Bright"
+msgstr ""
+
+# MSG_BL_LOW c=12
+#: messages.c:156
+msgid "Level Dimmed"
+msgstr ""
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
+#: messages.c:65
+msgid "Measuring reference height of calibration point"
+msgstr "Merim referencni vysku kalibracniho bodu"
+
+# MSG_MESH_BED_LEVELING c=18
+#: messages.c:148
+msgid "Mesh Bed Leveling"
+msgstr ""
+
+# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
+#: mmu.cpp:764
+msgid "MMU OK. Resuming position..."
+msgstr "MMU OK. Pokracuji v tisku..."
+
+# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
+#: mmu.cpp:757
+msgid "MMU OK. Resuming temperature..."
+msgstr "MMU OK. Pokracuji v nahrivani..."
+
+# 
+#: ultralcd.cpp:2960
+msgid "Measured skew"
+msgstr "Merene zkoseni"
+
+# MSG_MMU_FAILS c=14
+#: messages.c:68
+msgid "MMU fails"
+msgstr "Selhani MMU"
+
+# 
+#: mmu.cpp:1586
+msgid "MMU load failed     "
+msgstr "Zavedeni MMU selhalo"
+
+# MSG_MMU_LOAD_FAILS c=14
+#: messages.c:69
+msgid "MMU load fails"
+msgstr "MMU selhani zavadeni"
+
+# MSG_MMU_OK_RESUMING c=20 r=4
+#: mmu.cpp:775
+msgid "MMU OK. Resuming..."
+msgstr "MMU OK. Pokracuji..."
+
+# MSG_MODE
+#: messages.c:101
+msgid "Mode"
+msgstr "Mod"
+
+#  c=20 r=3
+#: Marlin_main.cpp:934
+msgid "MK3 firmware detected on MK3S printer"
+msgstr ""
+
+# MSG_NORMAL
+#: messages.c:105
+msgid "Normal"
+msgstr ""
+
+# MSG_SILENT
+#: messages.c:104
+msgid "Silent"
+msgstr "Tichy"
+
+# 
+#: mmu.cpp:721
+msgid "MMU needs user attention."
+msgstr "MMU potrebuje zasah uzivatele."
+
+# 
+#: ultralcd.cpp:1701
+msgid "MMU power fails"
+msgstr "MMU vypadky proudu"
+
+# MSG_STEALTH
+#: messages.c:106
+msgid "Stealth"
+msgstr "Tichy"
+
+# MSG_AUTO_POWER
+#: messages.c:103
+msgid "Auto power"
+msgstr "Automaticky"
+
+# MSG_HIGH_POWER
+#: messages.c:102
+msgid "High power"
+msgstr "Vys. vykon"
+
+# 
+#: ultralcd.cpp:2124
+msgid "MMU2 connected"
+msgstr "MMU2 pripojeno"
+
+# MSG_SELFTEST_MOTOR
+#: messages.c:94
+msgid "Motor"
+msgstr ""
+
+# MSG_MOVE_AXIS
+#: ultralcd.cpp:5681
+msgid "Move axis"
+msgstr "Posunout osu"
+
+# MSG_MOVE_X
+#: ultralcd.cpp:4262
+msgid "Move X"
+msgstr "Posunout X"
+
+# MSG_MOVE_Y
+#: ultralcd.cpp:4263
+msgid "Move Y"
+msgstr "Posunout Y"
+
+# MSG_MOVE_Z
+#: ultralcd.cpp:4264
+msgid "Move Z"
+msgstr "Posunout Z"
+
+# MSG_NO_MOVE
+#: Marlin_main.cpp:5719
+msgid "No move."
+msgstr "Bez pohybu."
+
+# MSG_NO_CARD
+#: ultralcd.cpp:6673
+msgid "No SD card"
+msgstr "Zadna SD karta"
+
+# MSG_NA
+#: messages.c:124
+msgid "N/A"
+msgstr ""
+
+# MSG_NO
+#: messages.c:70
+msgid "No"
+msgstr "Ne"
+
+# MSG_SELFTEST_NOTCONNECTED
+#: ultralcd.cpp:8028
+msgid "Not connected"
+msgstr "Nezapojeno "
+
+# 
+#: util.cpp:293
+msgid "New firmware version available:"
+msgstr "Vysla nova verze firmware:"
+
+# MSG_SELFTEST_FAN_NO c=19
+#: messages.c:90
+msgid "Not spinning"
+msgstr "Netoci se"
+
+# MSG_WIZARD_V2_CAL c=20 r=8
+#: ultralcd.cpp:4847
+msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
+msgstr "Nyni zkalibruji vzdalenost mezi koncem trysky a povrchem podlozky."
+
+# MSG_WIZARD_WILL_PREHEAT c=20 r=4
+#: ultralcd.cpp:4972
+msgid "Now I will preheat nozzle for PLA."
+msgstr "Nyni predehreji trysku pro PLA."
+
+# MSG_NOZZLE
+#: messages.c:71
+msgid "Nozzle"
+msgstr "Tryska"
+
+# MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
+#: Marlin_main.cpp:1581
+msgid "Old settings found. Default PID, Esteps etc. will be set."
+msgstr "Neplatne hodnoty nastaveni. Bude pouzito vychozi PID, Esteps atd."
+
+# 
+#: ultralcd.cpp:4963
+msgid "Now remove the test print from steel sheet."
+msgstr "Nyni odstrante testovaci vytisk z tiskoveho platu."
+
+# 
+#: ultralcd.cpp:1600
+msgid "Nozzle FAN"
+msgstr "Vent. trysky"
+
+# MSG_PAUSE_PRINT
+#: ultralcd.cpp:6637
+msgid "Pause print"
+msgstr "Pozastavit tisk"
+
+# MSG_PID_RUNNING c=20 r=1
+#: ultralcd.cpp:1485
+msgid "PID cal.           "
+msgstr "PID kal. "
+
+# MSG_PID_FINISHED c=20 r=1
+#: ultralcd.cpp:1491
+msgid "PID cal. finished"
+msgstr "PID kal. ukoncena"
+
+# MSG_PID_EXTRUDER c=17 r=1
+#: ultralcd.cpp:5803
+msgid "PID calibration"
+msgstr "PID kalibrace"
+
+# MSG_PINDA_PREHEAT c=20 r=1
+#: ultralcd.cpp:843
+msgid "PINDA Heating"
+msgstr "Nahrivani PINDA"
+
+# MSG_PAPER c=20 r=10
+#: messages.c:72
+msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
+msgstr "Umistete list papiru na podlozku a udrzujte jej pod tryskou behem mereni prvnich 4 bodu. Pokud tryska zachyti papir, okamzite vypnete tiskarnu."
+
+# MSG_WIZARD_CLEAN_HEATBED c=20 r=8
+#: ultralcd.cpp:5029
+msgid "Please clean heatbed and then press the knob."
+msgstr "Prosim ocistete podlozku a stisknete tlacitko."
+
+# MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
+#: messages.c:24
+msgid "Please clean the nozzle for calibration. Click when done."
+msgstr "Pro uspesnou kalibraci ocistete prosim tiskovou trysku. Potvrdte tlacitkem."
+
+# MSG_SELFTEST_PLEASECHECK
+#: ultralcd.cpp:8022
+msgid "Please check :"
+msgstr "Zkontrolujte :"
+
+# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
+#: messages.c:115
+msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
+msgstr "Prosim nahlednete do prirucky 3D tiskare a opravte problem. Pote obnovte Pruvodce restartovanim tiskarny."
+
+# MSG_CHECK_IDLER c=20 r=4
+#: Marlin_main.cpp:3317
+msgid "Please open idler and remove filament manually."
+msgstr "Prosim otevrete idler a manualne odstrante filament."
+
+# MSG_PLACE_STEEL_SHEET c=20 r=4
+#: messages.c:73
+msgid "Please place steel sheet on heatbed."
+msgstr "Umistete prosim tiskovy plat na podlozku"
+
+# MSG_PRESS_TO_UNLOAD c=20 r=4
+#: messages.c:77
+msgid "Please press the knob to unload filament"
+msgstr "Pro vysunuti filamentu stisknete prosim tlacitko"
+
+# MSG_PULL_OUT_FILAMENT c=20 r=4
+#: messages.c:79
+msgid "Please pull out filament immediately"
+msgstr "Prosim vyjmete urychlene filament"
+
+# MSG_EJECT_REMOVE c=20 r=4
+#: mmu.cpp:1420
+msgid "Please remove filament and then press the knob."
+msgstr "Prosim vyjmete filament a pote stisknete tlacitko."
+
+# MSG_REMOVE_STEEL_SHEET c=20 r=4
+#: messages.c:82
+msgid "Please remove steel sheet from heatbed."
+msgstr "Odstrante prosim tiskovy plat z podlozky."
+
+# MSG_RUN_XYZ c=20 r=4
+#: Marlin_main.cpp:4766
+msgid "Please run XYZ calibration first."
+msgstr "Nejprve spustte kalibraci XYZ."
+
+# MSG_UPDATE_MMU2_FW c=20 r=4
+#: mmu.cpp:1340
+msgid "Please update firmware in your MMU2. Waiting for reset."
+msgstr "Prosim aktualizujte firmware ve vasi MMU2 jednotce. Cekam na reset."
+
+# MSG_PLEASE_WAIT c=20
+#: messages.c:74
+msgid "Please wait"
+msgstr "Prosim cekejte"
+
+# 
+#: ultralcd.cpp:4962
+msgid "Please remove shipping helpers first."
+msgstr "Nejprve prosim sundejte transportni soucastky."
+
+# MSG_PREHEAT_NOZZLE c=20
+#: messages.c:76
+msgid "Preheat the nozzle!"
+msgstr "Predehrejte trysku!"
+
+# MSG_PREHEAT
+#: ultralcd.cpp:6615
+msgid "Preheat"
+msgstr "Predehrev"
+
+# MSG_WIZARD_HEATING c=20 r=3
+#: messages.c:117
+msgid "Preheating nozzle. Please wait."
+msgstr "Predehrev trysky. Prosim cekejte."
+
+#  c=14
+#: ultralcd.cpp:1905
+msgid "PINDA"
+msgstr ""
+
+# 
+#: util.cpp:297
+msgid "Please upgrade."
+msgstr "Prosim aktualizujte."
+
+# MSG_PRESS_TO_PREHEAT c=20 r=4
+#: Marlin_main.cpp:11718
+msgid "Press knob to preheat nozzle and continue."
+msgstr "Pro nahrati trysky a pokracovani stisknete tlacitko."
+
+# MSG_FS_PAUSE c=5
+#: fsensor.cpp:728
+msgid "Pause"
+msgstr ""
+
+# MSG_POWER_FAILURES c=14
+#: messages.c:75
+msgid "Power failures"
+msgstr "Vypadky proudu"
+
+# MSG_PRINT_ABORTED c=20
+#: messages.c:78
+msgid "Print aborted"
+msgstr "Tisk prerusen"
+
+#  c=20
+#: ultralcd.cpp:2390
+msgid "Preheating to load"
+msgstr "Predehrev k zavedeni"
+
+#  c=20
+#: ultralcd.cpp:2395
+msgid "Preheating to unload"
+msgstr "Predehrev k vyjmuti"
+
+# MSG_SELFTEST_PRINT_FAN_SPEED c=18
+#: ultralcd.cpp:8401
+msgid "Print fan:"
+msgstr "Tiskovy vent.:"
+
+# MSG_CARD_MENU
+#: messages.c:21
+msgid "Print from SD"
+msgstr "Tisk z SD"
+
+# 
+#: ultralcd.cpp:2231
+msgid "Press the knob"
+msgstr "Stisknete hl. tlacitko"
+
+# MSG_PRINT_PAUSED c=20 r=1
+#: ultralcd.cpp:1065
+msgid "Print paused"
+msgstr "Tisk pozastaven"
+
+# 
+#: mmu.cpp:725
+msgid "Press the knob to resume nozzle temperature."
+msgstr "Pro pokracovani nahrivani trysky stisknete tlacitko."
+
+# MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
+#: messages.c:45
+msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
+msgstr "Tiskarna nebyla jeste zkalibrovana. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Postup kalibrace."
+
+# 
+#: ultralcd.cpp:1601
+msgid "Print FAN"
+msgstr "Tiskovy vent."
+
+# 
+#: ultralcd.cpp:4827
+msgid "Please insert filament into the extruder, then press the knob to load it."
+msgstr "Prosim vlozte filament do extruderu a stisknete tlacitko k jeho zavedeni"
+
+# 
+#: ultralcd.cpp:4822
+msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
+msgstr "Prosim vlozte filament do prvni trubicky MMU a stisknete tlacitko k jeho zavedeni"
+
+# 
+#: ultralcd.cpp:4744
+msgid "Please load filament first."
+msgstr "Prosim nejdriv zavedte filament"
+
+# MSG_PRUSA3D
+#: ultralcd.cpp:2104
+msgid "prusa3d.com"
+msgstr ""
+
+# MSG_BED_CORRECTION_REAR c=14 r=1
+#: ultralcd.cpp:3191
+msgid "Rear side [um]"
+msgstr "Vzadu [um]"
+
+#  c=20 r=4
+#: ultralcd.cpp:7304
+msgid "Please unload the filament first, then repeat this action."
+msgstr "Prosim vyjmete filament a zopakujte tuto akci"
+
+#  c=20 r=4
+#: ultralcd.cpp:7307
+msgid "Please check the IR sensor connection, unload filament if present."
+msgstr "Prosim zkontrolujte zapojeni IR senzoru a vyjmuty filament"
+
+# MSG_RECOVERING_PRINT c=20
+#: Marlin_main.cpp:11076
+msgid "Recovering print    "
+msgstr "Obnovovani tisku    "
+
+# MSG_REMOVE_OLD_FILAMENT c=20 r=5
+#: mmu.cpp:832
+msgid "Remove old filament and press the knob to start loading new filament."
+msgstr "Vyjmete stary filament a stisknete tlacitko pro zavedeni noveho."
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3S OK."
+msgstr ""
+
+# MSG_CALIBRATE_BED_RESET
+#: ultralcd.cpp:5808
+msgid "Reset XYZ calibr."
+msgstr "Reset XYZ kalibr."
+
+# MSG_RESET c=14
+#: messages.c:83
+msgid "Reset"
+msgstr ""
+
+# MSG_RESUME_PRINT c=18
+#: messages.c:84
+msgid "Resume print"
+msgstr "Pokracovat"
+
+# MSG_RESUMING_PRINT c=20
+#: messages.c:85
+msgid "Resuming print"
+msgstr "Obnoveni tisku"
+
+# MSG_BED_CORRECTION_RIGHT c=14 r=1
+#: ultralcd.cpp:3189
+msgid "Right side[um]"
+msgstr "Vpravo [um]"
+
+# MSG_RPI_PORT
+#: messages.c:142
+msgid "RPi port"
+msgstr ""
+
+# MSG_WIZARD_RERUN c=20 r=7
+#: ultralcd.cpp:4765
+msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
+msgstr "Spusteni Pruvodce vymaze ulozene vysledky vsech kalibraci a spusti kalibracni proces od zacatku. Pokracovat?"
+
+# MSG_SD_CARD
+#: messages.c:137
+msgid "SD card"
+msgstr ""
+
+# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
+#: messages.c:138
+msgid "FlashAir"
+msgstr ""
+
+# 
+#: ultralcd.cpp:2920
+msgid "Right"
+msgstr "Vpravo"
+
+# MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
+#: messages.c:42
+msgid "Searching bed calibration point"
+msgstr "Hledam kalibracni bod podlozky"
+
+# MSG_LANGUAGE_SELECT
+#: ultralcd.cpp:5721
+msgid "Select language"
+msgstr "Vyber jazyka"
+
+# MSG_SELFTEST_OK
+#: ultralcd.cpp:7579
+msgid "Self test OK"
+msgstr ""
+
+# MSG_SELFTEST_START c=20
+#: ultralcd.cpp:7347
+msgid "Self test start  "
+msgstr "Self test start "
+
+# MSG_SELFTEST
+#: ultralcd.cpp:5784
+msgid "Selftest         "
+msgstr "Selftest "
+
+# MSG_SELFTEST_ERROR
+#: ultralcd.cpp:8021
+msgid "Selftest error !"
+msgstr "Chyba Selftestu!"
+
+# MSG_SELFTEST_FAILED c=20
+#: messages.c:88
+msgid "Selftest failed  "
+msgstr "Selftest selhal "
+
+# MSG_FORCE_SELFTEST c=20 r=8
+#: Marlin_main.cpp:1613
+msgid "Selftest will be run to calibrate accurate sensorless rehoming."
+msgstr "Pro kalibraci presneho rehomovani bude nyni spusten selftest."
+
+# 
+#: ultralcd.cpp:5003
+msgid "Select nozzle preheat temperature which matches your material."
+msgstr "Vyberte teplotu predehrati trysky ktera odpovida vasemu materialu."
+
+# MSG_SET_TEMPERATURE c=19 r=1
+#: ultralcd.cpp:3209
+msgid "Set temperature:"
+msgstr "Nastavte teplotu:"
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5 OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5S OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3 OK."
+msgstr ""
+
+# MSG_SETTINGS
+#: messages.c:97
+msgid "Settings"
+msgstr "Nastaveni"
+
+# MSG_SHOW_END_STOPS c=18
+#: ultralcd.cpp:5805
+msgid "Show end stops"
+msgstr "Stav konc. spin."
+
+# 
+#: ultralcd.cpp:3915
+msgid "Sensor state"
+msgstr "Stav senzoru"
+
+# MSG_FILE_CNT c=20 r=6
+#: cardreader.cpp:739
+msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
+msgstr "Nektere soubory nebudou setrideny. Maximalni pocet souboru ve slozce pro setrideni je 100."
+
+# MSG_SORT
+#: messages.c:139
+msgid "Sort"
+msgstr "Trideni"
+
+# MSG_NONE
+#: messages.c:127
+msgid "None"
+msgstr "Zadne"
+
+# MSG_SORT_TIME
+#: messages.c:140
+msgid "Time"
+msgstr "Cas"
+
+# 
+#: ultralcd.cpp:2963
+msgid "Severe skew:"
+msgstr "Tezke zkoseni:"
+
+# MSG_SORT_ALPHA
+#: messages.c:141
+msgid "Alphabet"
+msgstr "Abeceda"
+
+# MSG_SORTING c=20 r=1
+#: cardreader.cpp:746
+msgid "Sorting files"
+msgstr "Trideni souboru"
+
+# MSG_SOUND_LOUD
+#: messages.c:144
+msgid "Loud"
+msgstr "Hlasity"
+
+# 
+#: ultralcd.cpp:2962
+msgid "Slight skew:"
+msgstr "Lehke zkoseni:"
+
+# MSG_SOUND
+#: messages.c:143
+msgid "Sound"
+msgstr "Zvuk"
+
+#  c=7
+#: ultralcd.cpp:1768
+msgid "Runouts"
+msgstr ""
+
+# 
+#: Marlin_main.cpp:5280
+msgid "Some problem encountered, Z-leveling enforced ..."
+msgstr "Vyskytl se problem, srovnavam osu Z ..."
+
+# MSG_SOUND_ONCE
+#: messages.c:145
+msgid "Once"
+msgstr "Jednou"
+
+# MSG_SPEED
+#: ultralcd.cpp:6874
+msgid "Speed"
+msgstr "Rychlost"
+
+# MSG_SELFTEST_FAN_YES c=19
+#: messages.c:91
+msgid "Spinning"
+msgstr "Toci se"
+
+# MSG_TEMP_CAL_WARNING c=20 r=4
+#: Marlin_main.cpp:4779
+msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
+msgstr "Je vyzadovana stabilni pokojova teplota 21-26C a pevna podlozka."
+
+# MSG_STATISTICS
+#: ultralcd.cpp:6733
+msgid "Statistics  "
+msgstr "Statistika "
+
+# MSG_STOP_PRINT
+#: messages.c:108
+msgid "Stop print"
+msgstr "Zastavit tisk"
+
+# MSG_STOPPED
+#: messages.c:109
+msgid "STOPPED. "
+msgstr "ZASTAVENO."
+
+# MSG_SUPPORT
+#: ultralcd.cpp:6742
+msgid "Support"
+msgstr "Podpora"
+
+# MSG_SELFTEST_SWAPPED
+#: ultralcd.cpp:8080
+msgid "Swapped"
+msgstr "Prohozene"
+
+# 
+#: ultralcd.cpp:4715
+msgid "Select filament:"
+msgstr "Zvolte filament:"
+
+# MSG_TEMP_CALIBRATION c=14
+#: messages.c:110
+msgid "Temp. cal."
+msgstr "Tepl. kal."
+
+# 
+#: ultralcd.cpp:4856
+msgid "Select temperature which matches your material."
+msgstr "Zvolte teplotu, ktera odpovida vasemu materialu."
+
+# MSG_CALIBRATION_PINDA_MENU c=17 r=1
+#: ultralcd.cpp:5816
+msgid "Temp. calibration"
+msgstr "Teplot. kalibrace"
+
+# MSG_TEMP_CAL_FAILED c=20 r=8
+#: ultralcd.cpp:3845
+msgid "Temperature calibration failed"
+msgstr "Teplotni kalibrace selhala"
+
+# MSG_TEMP_CALIBRATION_DONE c=20 r=12
+#: messages.c:111
+msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
+msgstr "Teplotni kalibrace dokoncena a je nyni aktivni. Teplotni kalibraci je mozno deaktivovat v menu Nastaveni->Tepl. kal."
+
+#  c=20 r=3
+#: ultralcd.cpp:7311
+msgid "Sensor verified, remove the filament now."
+msgstr "Senzor overen, vyjmete filament."
+
+# MSG_TEMPERATURE
+#: ultralcd.cpp:5679
+msgid "Temperature"
+msgstr "Teplota"
+
+# MSG_MENU_TEMPERATURES c=15 r=1
+#: ultralcd.cpp:2160
+msgid "Temperatures"
+msgstr "Teploty"
+
+# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
+#: messages.c:46
+msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
+msgstr "Je potreba kalibrovat osu Z. Prosim postupujte dle prirucky, kapitola Zaciname, sekce Postup kalibrace."
+
+# 
+#: ultralcd.cpp:2817
+msgid "Total filament"
+msgstr "Filament celkem"
+
+# 
+#: ultralcd.cpp:2818
+msgid "Total print time"
+msgstr "Celkovy cas tisku"
+
+# MSG_TUNE
+#: ultralcd.cpp:6612
+msgid "Tune"
+msgstr "Ladit"
+
+# 
+#: 
+msgid "Unload"
+msgstr "Vysunout"
+
+# MSG_TOTAL_FAILURES c=20
+#: messages.c:99
+msgid "Total failures"
+msgstr "Celkem selhani"
+
+# 
+#: ultralcd.cpp:2238
+msgid "to load filament"
+msgstr "k zavedeni filamentu"
+
+# 
+#: ultralcd.cpp:2242
+msgid "to unload filament"
+msgstr "k vyjmuti filamentu"
+
+# MSG_UNLOAD_FILAMENT c=17
+#: messages.c:112
+msgid "Unload filament"
+msgstr "Vyjmout filament"
+
+# MSG_UNLOADING_FILAMENT c=20 r=1
+#: messages.c:113
+msgid "Unloading filament"
+msgstr "Vysouvam filament"
+
+# MSG_TOTAL c=6
+#: messages.c:98
+msgid "Total"
+msgstr "Celkem"
+
+# MSG_USED c=19 r=1
+#: ultralcd.cpp:5932
+msgid "Used during print"
+msgstr "Pouzite behem tisku"
+
+# MSG_MENU_VOLTAGES c=15 r=1
+#: ultralcd.cpp:2163
+msgid "Voltages"
+msgstr "Napeti"
+
+# 
+#: ultralcd.cpp:2132
+msgid "unknown"
+msgstr "neznamy"
+
+# MSG_USERWAIT
+#: Marlin_main.cpp:5689
+msgid "Wait for user..."
+msgstr "Ceka se na uzivatele..."
+
+# MSG_WAITING_TEMP c=20 r=3
+#: ultralcd.cpp:3357
+msgid "Waiting for nozzle and bed cooling"
+msgstr "Cekani na zchladnuti trysky a podlozky."
+
+# MSG_WAITING_TEMP_PINDA c=20 r=3
+#: ultralcd.cpp:3318
+msgid "Waiting for PINDA probe cooling"
+msgstr "Cekani na zchladnuti PINDA"
+
+# 
+#: 
+msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU tube. Use eject if it is hidden in tube."
+msgstr "Pouzijte vyjmout pro odstraneni filamentu 1 pokud presahuje z PTFE trubicky za tiskarnou. Pouzijte vysunout, pokud neni videt."
+
+# MSG_CHANGED_BOTH c=20 r=4
+#: Marlin_main.cpp:1573
+msgid "Warning: both printer type and motherboard type changed."
+msgstr "Varovani: doslo ke zmene typu tiskarny a motherboardu."
+
+# MSG_CHANGED_MOTHERBOARD c=20 r=4
+#: Marlin_main.cpp:1565
+msgid "Warning: motherboard type changed."
+msgstr "Varovani: doslo ke zmene typu motherboardu."
+
+# MSG_CHANGED_PRINTER c=20 r=4
+#: Marlin_main.cpp:1569
+msgid "Warning: printer type changed."
+msgstr "Varovani: doslo ke zmene typu tiskarny."
+
+# MSG_UNLOAD_SUCCESSFUL c=20 r=2
+#: Marlin_main.cpp:3308
+msgid "Was filament unload successful?"
+msgstr "Bylo vysunuti filamentu uspesne?"
+
+# MSG_SELFTEST_WIRINGERROR
+#: messages.c:96
+msgid "Wiring error"
+msgstr "Chyba zapojeni"
+
+# MSG_WIZARD c=17 r=1
+#: ultralcd.cpp:5775
+msgid "Wizard"
+msgstr "Pruvodce"
+
+# MSG_XYZ_DETAILS c=18
+#: ultralcd.cpp:2152
+msgid "XYZ cal. details"
+msgstr "Detaily XYZ kal."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
+#: messages.c:18
+msgid "XYZ calibration failed. Please consult the manual."
+msgstr "Kalibrace XYZ selhala. Nahlednete do manualu."
+
+# MSG_YES
+#: messages.c:119
+msgid "Yes"
+msgstr "Ano"
+
+# MSG_WIZARD_QUIT c=20 r=8
+#: messages.c:118
+msgid "You can always resume the Wizard from Calibration -> Wizard."
+msgstr "Pruvodce muzete kdykoliv znovu spustit z menu Kalibrace -> Pruvodce"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
+#: ultralcd.cpp:3817
+msgid "XYZ calibration all right. Skew will be corrected automatically."
+msgstr "Kalibrace XYZ v poradku. Zkoseni bude automaticky vyrovnano pri tisku."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
+#: ultralcd.cpp:3814
+msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
+msgstr "Kalibrace XYZ v poradku. X/Y osy mirne zkosene. Dobra prace!"
+
+# MSG_TIMEOUT c=12
+#: messages.c:157
+msgid "Timeout"
+msgstr ""
+
+# MSG_X_CORRECTION c=13
+#: ultralcd.cpp:5091
+msgid "X-correct:"
+msgstr "Korekce X:"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
+#: ultralcd.cpp:3811
+msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
+msgstr "Kalibrace XYZ v poradku. X/Y osy jsou kolme. Gratuluji!"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
+#: ultralcd.cpp:3795
+msgid "XYZ calibration compromised. Front calibration points not reachable."
+msgstr "Kalibrace XYZ nepresna. Predni kalibracni body moc vpredu."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
+#: ultralcd.cpp:3798
+msgid "XYZ calibration compromised. Right front calibration point not reachable."
+msgstr "Kalibrace XYZ nepresna. Pravy predni bod moc vpredu."
+
+# MSG_LOAD_ALL c=17
+#: ultralcd.cpp:6171
+msgid "Load all"
+msgstr "Zavest vse"
+
+# 
+#: ultralcd.cpp:3777
+msgid "XYZ calibration failed. Bed calibration point was not found."
+msgstr "Kalibrace XYZ selhala. Kalibracni bod podlozky nenalezen."
+
+# 
+#: ultralcd.cpp:3783
+msgid "XYZ calibration failed. Front calibration points not reachable."
+msgstr "Kalibrace XYZ selhala. Predni kalibracni body moc vpredu. Srovnejte tiskarnu."
+
+# 
+#: ultralcd.cpp:3786
+msgid "XYZ calibration failed. Right front calibration point not reachable."
+msgstr "Kalibrace XYZ selhala. Pravy predni bod moc vpredu. Srovnejte tiskarnu."
+
+# 
+#: ultralcd.cpp:2917
+msgid "Y distance from min"
+msgstr "Y vzdalenost od min"
+
+# 
+#: ultralcd.cpp:4859
+msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
+msgstr "Tiskarna zacne tisknout lomenou caru. Otacenim tlacitka nastavte optimalni vysku. Postupujte podle obrazku v handbooku (kapitola Kalibrace)."
+
+#  c=20 r=5
+#: ultralcd.cpp:7315
+msgid "Verification failed, remove the filament and try again."
+msgstr "Overeni selhalo, vyjmete filament a zkuste znovu."
+
+# MSG_Y_CORRECTION c=13
+#: ultralcd.cpp:5092
+msgid "Y-correct:"
+msgstr "Korekce Y:"
+
+# MSG_OFF
+#: messages.c:122
+msgid "Off"
+msgstr "Vyp"
+
+# MSG_ON
+#: messages.c:123
+msgid "On"
+msgstr "Zap"
+
+# 
+#: messages.c:62
+msgid "Back"
+msgstr "Zpet"
+
+# 
+#: ultralcd.cpp:5647
+msgid "Checks"
+msgstr "Kontrola"
+
+# 
+#: ultralcd.cpp:8090
+msgid "False triggering"
+msgstr "Falesne spusteni"
+
+# 
+#: ultralcd.cpp:3920
+msgid "FINDA:"
+msgstr ""
+
+# MSG_FIRMWARE
+#: language.h:24
+msgid "Firmware"
+msgstr ""
+
+# MSG_STRICT
+#: messages.c:129
+msgid "Strict"
+msgstr "Prisne"
+
+# MSG_WARN
+#: messages.c:128
+msgid "Warn"
+msgstr "Varovat"
+
+# MSG_HW_SETUP c=18
+#: messages.c:100
+msgid "HW Setup"
+msgstr "HW nastaveni"
+
+# 
+#: ultralcd.cpp:3924
+msgid "IR:"
+msgstr ""
+
+# MSG_MAGNETS_COMP
+#: messages.c:150
+msgid "Magnets comp."
+msgstr "Komp. magnetu"
+
+# MSG_MESH
+#: messages.c:147
+msgid "Mesh"
+msgstr ""
+
+# 
+#: Marlin_main.cpp:927
+msgid "MK3S firmware detected on MK3 printer"
+msgstr "MK3S firmware detekovan na tiskarne MK3"
+
+# MSG_MMU_MODE
+#: messages.c:136
+msgid "MMU Mode"
+msgstr "MMU mod"
+
+# 
+#: ultralcd.cpp:4395
+msgid "Mode change in progress ..."
+msgstr "Probiha zmena modu..."
+
+# MSG_MODEL
+#: messages.c:130
+msgid "Model"
+msgstr ""
+
+# MSG_NOZZLE_DIAMETER
+#: messages.c:135
+msgid "Nozzle d."
+msgstr "Tryska"
+
+# 
+#: util.cpp:514
+msgid "G-code sliced for a different level. Continue?"
+msgstr ""
+
+# 
+#: util.cpp:520
+msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
+msgstr ""
+
+# MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5
+#: messages.c:133
+msgid "G-code sliced for a different printer type. Continue?"
+msgstr "G-code je pripraven pro jiny typ tiskarny. Pokracovat?"
+
+# MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=6
+#: messages.c:134
+msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
+msgstr "G-code je pripraven pro jiny typ tiskarny. Prosim preslicujte model znovu. Tisk zrusen."
+
+# 
+#: util.cpp:481
+msgid "G-code sliced for a newer firmware. Continue?"
+msgstr "G-code je pripraven pro novejsi firmware. Pokracovat?"
+
+# 
+#: util.cpp:487
+msgid "G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
+msgstr "G-code je pripraven pro novejsi firmware. Prosim aktualizujte firmware. Tisk zrusen."
+
+# 
+#: ultralcd.cpp:3916
+msgid "PINDA:"
+msgstr ""
+
+#  c=20
+#: ultralcd.cpp:2402
+msgid "Preheating to cut"
+msgstr "Predehrev ke strihu"
+
+#  c=20
+#: ultralcd.cpp:2399
+msgid "Preheating to eject"
+msgstr "Predehrev k vysunuti"
+
+# 
+#: util.cpp:394
+msgid "Printer nozzle diameter differs from the G-code. Continue?"
+msgstr "Prumer trysky tiskarny se lisi od G-code. Pokracovat?"
+
+# 
+#: util.cpp:401
+msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
+msgstr "Prumer trysky tiskarny se lisi od G-code. Prosim zkontrolujte nastaveni. Tisk zrusen."
+
+#  c=20
+#: ultralcd.cpp:8095
+msgid "%s level expected"
+msgstr ""
+
+# 
+#: ultralcd.cpp:6574
+msgid "Rename"
+msgstr "Prejmenovat"
+
+# 
+#: ultralcd.cpp:6567
+msgid "Select"
+msgstr "Vybrat"
+
+# 
+#: ultralcd.cpp:2154
+msgid "Sensor info"
+msgstr "Senzor info"
+
+# MSG_SHEET c=10
+#: messages.c:63
+msgid "Sheet"
+msgstr "Plat"
+
+# MSG_SOUND_BLIND
+#: messages.c:146
+msgid "Assist"
+msgstr "Asist."
+
+# MSG_STEEL_SHEET c=18
+#: messages.c:64
+msgid "Steel sheets"
+msgstr "Tiskove platy"
+
+# MSG_Z_CORRECTION c=13
+#: ultralcd.cpp:5093
+msgid "Z-correct:"
+msgstr "Korekce Z:"
+
+# MSG_Z_PROBE_NR
+#: messages.c:149
+msgid "Z-probe nr."
+msgstr "Pocet mereni Z"
+

+ 1852 - 1842
lang/po/new/de.po

@@ -1,1842 +1,1852 @@
-# Translation of Prusa-Firmware into German.
-#
-msgid ""
-msgstr ""
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Project-Id-Version: Prusa-Firmware\n"
-"POT-Creation-Date: Fri May 15 16:44:45 CEST 2020\n"
-"PO-Revision-Date: Fri May 15 16:44:45 CEST 2020\n"
-"Language-Team: \n"
-"X-Generator: Poedit 2.0.7\n"
-"X-Poedit-SourceCharset: UTF-8\n"
-"Last-Translator: \n"
-"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-
-# 
-#: 
-msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
-msgstr "[%.7s]Z Einstell.\x0aWert gesetzt,weiter\x0aoder mit 0 beginnen?\x0a%cWeiter%cNeu beginnen"
-
-# MSG_03_OR_OLDER c=18
-#: messages.c:144
-msgid " 0.3 or older"
-msgstr " 0.3 oder aelter"
-
-# MSG_04_OR_NEWER c=18
-#: messages.c:143
-msgid " 0.4 or newer"
-msgstr " 0.4 oder neuer"
-
-# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
-#: messages.c:36
-msgid " of 4"
-msgstr " von 4"
-
-# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:56
-msgid " of 9"
-msgstr " von 9"
-
-# MSG_MEASURED_OFFSET
-#: ultralcd.cpp:3064
-msgid "[0;0] point offset"
-msgstr "[0;0] Punktversatz"
-
-# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
-#: 
-msgid "Crash detection can\x0abe turned on only in\x0aNormal mode"
-msgstr "Crash Erkennung kann\x0anur im Modus Normal\x0agenutzt werden"
-
-# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
-#: 
-msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
-msgstr "WARNUNG:\x0aCrash Erkennung\x0adeaktiviert im\x0aStealth Modus"
-
-# 
-#: ultralcd.cpp:2460
-msgid ">Cancel"
-msgstr ">Abbruch"
-
-# MSG_BABYSTEPPING_Z c=15
-#: ultralcd.cpp:3184
-msgid "Adjusting Z:"
-msgstr "Z Anpassen:"
-
-# MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:8677
-msgid "All correct      "
-msgstr "Alles richtig    "
-
-# MSG_WIZARD_DONE c=20 r=8
-#: messages.c:99
-msgid "All is done. Happy printing!"
-msgstr "Alles abgeschlossen. Viel Spass beim Drucken!"
-
-# 
-#: ultralcd.cpp:1956
-msgid "Ambient"
-msgstr "Raumtemp."
-
-# MSG_AUTO c=6
-#: messages.c:140
-msgid "Auto"
-msgstr ""
-
-# MSG_PRESS c=20 r=2
-#: ultralcd.cpp:2609
-msgid "and press the knob"
-msgstr "und Knopf druecken"
-
-# MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3506
-msgid "Are left and right Z~carriages all up?"
-msgstr "Sind linke+rechte Z- Schlitten ganz oben?"
-
-# MSG_AUTO_DEPLETE c=17 r=1
-#: messages.c:108
-msgid "SpoolJoin"
-msgstr ""
-
-# MSG_AUTO_HOME
-#: messages.c:11
-msgid "Auto home"
-msgstr "Startposition"
-
-# MSG_AUTOLOAD_FILAMENT c=18
-#: ultralcd.cpp:6961
-msgid "AutoLoad filament"
-msgstr "AutoLaden Filament"
-
-# MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4445
-msgid "Autoloading filament available only when filament sensor is turned on..."
-msgstr "Automatisches Laden Filament nur bei eingeschaltetem Fil. sensor verfuegbar..."
-
-# MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2804
-msgid "Autoloading filament is active, just press the knob and insert filament..."
-msgstr "Automatisches Laden Filament ist aktiv, Knopf druecken und Filament einlegen..."
-
-# MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:8325
-msgid "Axis length"
-msgstr "Achsenlaenge"
-
-# MSG_SELFTEST_AXIS
-#: ultralcd.cpp:8327
-msgid "Axis"
-msgstr "Achse"
-
-# MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:8269
-msgid "Bed / Heater"
-msgstr "Bett / Heizung"
-
-# MSG_BED_DONE
-#: messages.c:15
-msgid "Bed done"
-msgstr "Bett OK"
-
-# MSG_BED_HEATING
-#: messages.c:16
-msgid "Bed Heating"
-msgstr "Bett aufwaermen"
-
-# MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5861
-msgid "Bed level correct"
-msgstr "Ausgleich Bett ok"
-
-# MSG_BELTTEST c=17
-#: ultralcd.cpp:5841
-msgid "Belt test        "
-msgstr "Riementest       "
-
-# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
-#: messages.c:17
-msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
-msgstr "Z-Kal. fehlgeschlg. Sensor nicht ausgeloest. Schmutzige Duese? Warte auf Reset."
-
-# MSG_BRIGHT c=6
-#: messages.c:138
-msgid "Bright"
-msgstr "Hell"
-
-# MSG_BRIGHTNESS c=18
-#: messages.c:134
-msgid "Brightness"
-msgstr "Helligkeit"
-
-# MSG_BED
-#: messages.c:14
-msgid "Bed"
-msgstr "Bett"
-
-# MSG_MENU_BELT_STATUS c=18
-#: ultralcd.cpp:2009
-msgid "Belt status"
-msgstr "Gurtstatus"
-
-# MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:67
-msgid "Blackout occurred. Recover print?"
-msgstr "Stromausfall! Druck wiederherstellen?"
-
-# 
-#: ultralcd.cpp:8679
-msgid "Calibrating home"
-msgstr "Kalibriere Start"
-
-# MSG_CALIBRATE_BED
-#: ultralcd.cpp:5850
-msgid "Calibrate XYZ"
-msgstr "Kalibrierung XYZ"
-
-# MSG_HOMEYZ
-#: messages.c:44
-msgid "Calibrate Z"
-msgstr "Kalibrierung Z"
-
-# MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4637
-msgid "Calibrate"
-msgstr "Kalibrieren"
-
-# MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3469
-msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
-msgstr "XYZ Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf druecken."
-
-# MSG_CALIBRATE_Z_AUTO c=20 r=2
-#: messages.c:19
-msgid "Calibrating Z"
-msgstr "Kalibrierung Z"
-
-# MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3469
-msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
-msgstr "Z Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf druecken."
-
-# MSG_HOMEYZ_DONE
-#: ultralcd.cpp:865
-msgid "Calibration done"
-msgstr "Kalibrierung OK"
-
-# MSG_MENU_CALIBRATION
-#: messages.c:57
-msgid "Calibration"
-msgstr "Kalibrierung"
-
-# 
-#: ultralcd.cpp:4815
-msgid "Cancel"
-msgstr "Abbruch"
-
-# MSG_SD_REMOVED
-#: ultralcd.cpp:9090
-msgid "Card removed"
-msgstr "SD Karte entfernt"
-
-# MSG_NOT_COLOR
-#: ultralcd.cpp:2709
-msgid "Color not correct"
-msgstr "Falsche Farbe"
-
-# MSG_COOLDOWN
-#: messages.c:22
-msgid "Cooldown"
-msgstr "Abkuehlen"
-
-# 
-#: ultralcd.cpp:4570
-msgid "Copy selected language?"
-msgstr "Gewaehlte Sprache kopieren?"
-
-# MSG_CRASHDETECT c=13
-#: messages.c:24
-msgid "Crash det."
-msgstr "Crash Erk."
-
-# 
-#: ultralcd.cpp:4950
-msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
-msgstr "Waehlen Sie ein Filament fuer Erste Schichtkalibrierung aus und waehlen Sie es im On-Screen-Menu aus."
-
-# MSG_CRASH_DETECTED c=20 r=1
-#: messages.c:23
-msgid "Crash detected."
-msgstr "Crash erkannt."
-
-# 
-#: Marlin_main.cpp:607
-msgid "Crash detected. Resume print?"
-msgstr "Crash erkannt. Druck fortfuehren?"
-
-# 
-#: ultralcd.cpp:1785
-msgid "Crash"
-msgstr ""
-
-# MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:6002
-msgid "Current"
-msgstr "Aktuelles"
-
-# MSG_DATE c=17 r=1
-#: ultralcd.cpp:2163
-msgid "Date:"
-msgstr "Datum:"
-
-# MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5743
-msgid "Disable steppers"
-msgstr "Motoren aus"
-
-# MSG_BABYSTEP_Z_NOT_SET c=20 r=12
-#: messages.c:13
-msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
-msgstr "Der Abstand zwischen der Spitze der Duese und dem Bett ist noch nicht eingestellt. Bitte folgen Sie dem Handbuch, Kapitel Erste Schritte, Abschnitt Erste Schicht Kalibrierung."
-
-# MSG_FS_CONTINUE c=5
-#: messages.c:132
-msgid "Cont."
-msgstr ""
-
-# MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:5125
-msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
-msgstr "Moechten Sie den letzten Schritt wiederholen, um den Abstand zwischen Duese und Druckbett neu einzustellen?"
-
-# MSG_EXTRUDER_CORRECTION c=13
-#: ultralcd.cpp:5194
-msgid "E-correct:"
-msgstr "E-Korrektur:"
-
-# MSG_EJECT_FILAMENT c=17 r=1
-#: messages.c:49
-msgid "Eject filament"
-msgstr "Filamentauswurf"
-
-# MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1416
-msgid "Ejecting filament"
-msgstr "werfe Filament aus"
-
-# MSG_SELFTEST_ENDSTOP_NOTHIT c=20
-#: ultralcd.cpp:8293
-msgid "Endstop not hit"
-msgstr "Ende nicht getroffen"
-
-# MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:8287
-msgid "Endstop"
-msgstr "Endanschlag"
-
-# MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:8275
-msgid "Endstops"
-msgstr "Endschalter"
-
-# MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6998
-msgid "Error - static memory has been overwritten"
-msgstr "Fehler - statischer Speicher wurde ueberschrieben"
-
-# MSG_CUT_FILAMENT c=16
-#: messages.c:50
-msgid "Cut filament"
-msgstr "Fil. schneiden"
-
-# MSG_CUTTER c=9
-#: messages.c:109
-msgid "Cutter"
-msgstr "Messer"
-
-#  c=18
-#: mmu.cpp:1388
-msgid "Cutting filament"
-msgstr "Schneide filament"
-
-# MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4458
-msgid "ERROR: Filament sensor is not responding, please check connection."
-msgstr "FEHLER: Filament- sensor reagiert nicht, bitte Verbindung pruefen."
-
-# MSG_DIM c=6
-#: messages.c:139
-msgid "Dim"
-msgstr "Dimm"
-
-# MSG_ERROR
-#: messages.c:25
-msgid "ERROR:"
-msgstr "FEHLER:"
-
-# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:8686
-msgid "Extruder fan:"
-msgstr "Extruder Luefter:"
-
-# MSG_INFO_EXTRUDER c=18
-#: ultralcd.cpp:2211
-msgid "Extruder info"
-msgstr "Extruder Info"
-
-# MSG_MOVE_E
-#: messages.c:26
-msgid "Extruder"
-msgstr ""
-
-# 
-#: ultralcd.cpp:6985
-msgid "Fail stats MMU"
-msgstr "MMU-Fehler"
-
-# MSG_FSENSOR_AUTOLOAD c=13
-#: messages.c:40
-msgid "F. autoload"
-msgstr "F. autoladen"
-
-# 
-#: ultralcd.cpp:6982
-msgid "Fail stats"
-msgstr "Fehlerstatistik"
-
-# MSG_FAN_SPEED c=14
-#: messages.c:28
-msgid "Fan speed"
-msgstr "Luefter-Tempo"
-
-# MSG_SELFTEST_FAN c=20
-#: messages.c:74
-msgid "Fan test"
-msgstr "Lueftertest"
-
-# MSG_FANS_CHECK
-#: ultralcd.cpp:5751
-msgid "Fans check"
-msgstr "Luefter Chk."
-
-# MSG_FSENSOR
-#: messages.c:41
-msgid "Fil. sensor"
-msgstr "Fil. Sensor"
-
-#  c=14
-#: ultralcd.cpp:1784
-msgid "Filam. runouts"
-msgstr "Filam. Maengel"
-
-# MSG_FILAMENT_CLEAN c=20 r=2
-#: messages.c:29
-msgid "Filament extruding & with correct color?"
-msgstr "Filament extrudiert mit richtiger Farbe?"
-
-# MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2705
-msgid "Filament not loaded"
-msgstr "Fil. nicht geladen"
-
-# MSG_FILAMENT_SENSOR c=20
-#: messages.c:80
-msgid "Filament sensor"
-msgstr "Filamentsensor"
-
-# MSG_FILAMENT_USED c=19
-#: ultralcd.cpp:2869
-msgid "Filament used"
-msgstr "Filament benutzt"
-
-# MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2870
-msgid "Print time"
-msgstr "Druckzeit"
-
-# MSG_FS_ACTION c=10
-#: messages.c:131
-msgid "FS Action"
-msgstr "FS Aktion"
-
-#  c=18
-#: Marlin_main.cpp:9512
-msgid "FS v0.4 or newer"
-msgstr "FS v0.4 oder neuer"
-
-# MSG_FILE_INCOMPLETE c=20 r=3
-#: ultralcd.cpp:8814
-msgid "File incomplete. Continue anyway?"
-msgstr "Datei unvollstaendig Trotzdem fortfahren?"
-
-# MSG_FINISHING_MOVEMENTS c=20
-#: messages.c:37
-msgid "Finishing movements"
-msgstr "Bewegung beenden"
-
-# MSG_V2_CALIBRATION c=18
-#: messages.c:103
-msgid "First layer cal."
-msgstr "Erste-Schicht Kal."
-
-# MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:5046
-msgid "First, I will run the selftest to check most common assembly problems."
-msgstr "Zunaechst fuehre ich den Selbsttest durch, um die haeufigsten Probleme beim Zusammenbau zu ueberpruefen."
-
-# 
-#: mmu.cpp:727
-msgid "Fix the issue and then press button on MMU unit."
-msgstr "Beseitigen Sie das Problem und druecken Sie dann den Knopf am MMU."
-
-# MSG_FLOW
-#: ultralcd.cpp:7125
-msgid "Flow"
-msgstr "Durchfluss"
-
-# MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2156
-msgid "forum.prusa3d.com"
-msgstr ""
-
-# MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:71
-msgid "Front print fan?"
-msgstr "Vorderer Luefter?"
-
-# MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3266
-msgid "Front side[um]"
-msgstr "Vorne [um]"
-
-# MSG_SELFTEST_FANS
-#: ultralcd.cpp:8333
-msgid "Front/left fans"
-msgstr "Vorderer/linke Luefter"
-
-# MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:8263
-msgid "Heater/Thermistor"
-msgstr "Heizung/Thermistor"
-
-# MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:9440
-msgid "Heating disabled by safety timer."
-msgstr "Heizung durch Sicherheitstimer deaktiviert."
-
-# MSG_HEATING_COMPLETE c=20
-#: messages.c:43
-msgid "Heating done."
-msgstr "Aufwaermen OK."
-
-# MSG_HEATING
-#: messages.c:42
-msgid "Heating"
-msgstr "Aufwaermen"
-
-# MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:5025
-msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
-msgstr "Hallo, ich bin Ihr Original Prusa i3 Drucker. Moechten Sie, dass ich Sie durch den Einrich- tungsablauf fuehre?"
-
-# MSG_PRUSA3D_HOWTO
-#: ultralcd.cpp:2157
-msgid "howto.prusa3d.com"
-msgstr ""
-
-# MSG_FILAMENTCHANGE
-#: messages.c:34
-msgid "Change filament"
-msgstr "Filament-Wechsel"
-
-# MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2620
-msgid "Change success!"
-msgstr "Wechsel erfolgr.!"
-
-# MSG_CORRECTLY c=20
-#: ultralcd.cpp:2697
-msgid "Changed correctly?"
-msgstr "Wechsel ok?"
-
-# MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:77
-msgid "Checking bed     "
-msgstr "Pruefe Bett "
-
-# MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:8668
-msgid "Checking endstops"
-msgstr "Pruefe Endschalter"
-
-# MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:8674
-msgid "Checking hotend  "
-msgstr "Pruefe Duese  "
-
-# MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:78
-msgid "Checking sensors "
-msgstr "Pruefe Sensoren "
-
-# MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:7482
-msgid "Checking X axis  "
-msgstr "Pruefe X Achse "
-
-# MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:7491
-msgid "Checking Y axis  "
-msgstr "Pruefe Y Achse "
-
-# MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:8671
-msgid "Checking Z axis  "
-msgstr "Pruefe Z Achse "
-
-# MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:45
-msgid "Choose extruder:"
-msgstr "Extruder waehlen:"
-
-# MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:46
-msgid "Choose filament:"
-msgstr "Waehle Filament:"
-
-# MSG_FILAMENT c=17 r=1
-#: messages.c:27
-msgid "Filament"
-msgstr ""
-
-# MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:5055
-msgid "I will run xyz calibration now. It will take approx. 12 mins."
-msgstr "Ich werde jetzt die XYZ-Kalibrierung durchfuehren. Es wird ca. 12 Minuten dauern."
-
-# MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:5063
-msgid "I will run z calibration now."
-msgstr "Ich werde jetzt die Z Kalibrierung durchfuehren."
-
-# MSG_WATCH
-#: messages.c:97
-msgid "Info screen"
-msgstr "Infoanzeige"
-
-# MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2605
-msgid "Insert filament"
-msgstr "Filament einlegen"
-
-# MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4835
-msgid "Is filament loaded?"
-msgstr "Ist das Filament geladen?"
-
-# MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:90
-msgid "Is steel sheet on heatbed?"
-msgstr "Liegt das Stahlblech auf dem Heizbett?"
-
-# 
-#: ultralcd.cpp:1727
-msgid "Last print failures"
-msgstr "Letzte Druckfehler"
-
-# 
-#: ultralcd.cpp:5133
-msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
-msgstr "Wenn Sie zusaetzliche Stahlbleche haben, kalibrieren Sie deren Voreinstellungen unter Einstellungen - HW Setup - Stahlbleche."
-
-# 
-#: ultralcd.cpp:1704
-msgid "Last print"
-msgstr "Letzter Druck"
-
-# MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:72
-msgid "Left hotend fan?"
-msgstr "Linker Luefter?"
-
-# 
-#: ultralcd.cpp:2993
-msgid "Left"
-msgstr "Links"
-
-# MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3264
-msgid "Left side [um]"
-msgstr "Links [um]"
-
-# 
-#: ultralcd.cpp:5766
-msgid "Lin. correction"
-msgstr "Lineare Korrektur"
-
-# MSG_BABYSTEP_Z
-#: messages.c:12
-msgid "Live adjust Z"
-msgstr "Z einstellen"
-
-#  c=20 r=6
-#: ultralcd.cpp:7527
-msgid "Insert the filament (do not load it) into the extruder and then press the knob."
-msgstr "Stecken Sie das Filament (nicht laden) in den Extruder und druecken Sie dann den Knopf."
-
-# MSG_LOAD_FILAMENT c=17
-#: messages.c:47
-msgid "Load filament"
-msgstr "Filament laden"
-
-# MSG_LOADING_COLOR
-#: ultralcd.cpp:2645
-msgid "Loading color"
-msgstr "Lade Farbe"
-
-# MSG_LOADING_FILAMENT c=20
-#: messages.c:48
-msgid "Loading filament"
-msgstr "Filament laedt"
-
-# MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:8317
-msgid "Loose pulley"
-msgstr "Lose Riemenscheibe"
-
-# 
-#: ultralcd.cpp:6944
-msgid "Load to nozzle"
-msgstr "In Druckduese laden"
-
-# MSG_M117_V2_CALIBRATION c=25
-#: messages.c:51
-msgid "M117 First layer cal."
-msgstr "M117 Erste-Schicht Kal."
-
-# MSG_MAIN
-#: messages.c:52
-msgid "Main"
-msgstr "Hauptmenue"
-
-# MSG_BL_HIGH c=12
-#: messages.c:135
-msgid "Level Bright"
-msgstr "Hell.wert"
-
-# MSG_BL_LOW c=12
-#: messages.c:136
-msgid "Level Dimmed"
-msgstr "Dimmwert"
-
-# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:55
-msgid "Measuring reference height of calibration point"
-msgstr "Messen der Referenzhoehe des Kalibrierpunktes"
-
-# MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5856
-msgid "Mesh Bed Leveling"
-msgstr "MeshBett Ausgleich"
-
-# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:765
-msgid "MMU OK. Resuming position..."
-msgstr "MMU OK. Position wiederherstellen..."
-
-# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:758
-msgid "MMU OK. Resuming temperature..."
-msgstr "MMU OK. Temperatur wiederherstellen..."
-
-# 
-#: ultralcd.cpp:3034
-msgid "Measured skew"
-msgstr "Schraeglauf"
-
-# 
-#: ultralcd.cpp:1728
-msgid "MMU fails"
-msgstr "MMU Fehler"
-
-# 
-#: mmu.cpp:1588
-msgid "MMU load failed     "
-msgstr "MMU Ladefehler"
-
-# 
-#: ultralcd.cpp:1729
-msgid "MMU load fails"
-msgstr "MMU Ladefehler"
-
-# MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:776
-msgid "MMU OK. Resuming..."
-msgstr "MMU OK.  Weiterdrucken..."
-
-# MSG_MODE
-#: messages.c:84
-msgid "Mode"
-msgstr "Modus"
-
-#  c=20 r=3
-#: Marlin_main.cpp:879
-msgid "MK3 firmware detected on MK3S printer"
-msgstr "MK3-Firmware am MK3S-Drucker erkannt"
-
-# MSG_NORMAL
-#: messages.c:88
-msgid "Normal"
-msgstr ""
-
-# MSG_SILENT
-#: messages.c:87
-msgid "Silent"
-msgstr "Leise"
-
-# 
-#: mmu.cpp:722
-msgid "MMU needs user attention."
-msgstr "MMU erfordert Benutzereingriff."
-
-# 
-#: ultralcd.cpp:1755
-msgid "MMU power fails"
-msgstr "MMU Netzfehler"
-
-# MSG_STEALTH
-#: messages.c:89
-msgid "Stealth"
-msgstr ""
-
-# MSG_AUTO_POWER
-#: messages.c:86
-msgid "Auto power"
-msgstr "Auto Leist"
-
-# MSG_HIGH_POWER
-#: messages.c:85
-msgid "High power"
-msgstr "Hohe leist"
-
-# 
-#: ultralcd.cpp:2186
-msgid "MMU2 connected"
-msgstr "MMU2 verbunden"
-
-# MSG_SELFTEST_MOTOR
-#: messages.c:79
-msgid "Motor"
-msgstr ""
-
-# MSG_MOVE_AXIS
-#: ultralcd.cpp:5741
-msgid "Move axis"
-msgstr "Achse bewegen"
-
-# MSG_MOVE_X
-#: ultralcd.cpp:4361
-msgid "Move X"
-msgstr "Bewege X"
-
-# MSG_MOVE_Y
-#: ultralcd.cpp:4362
-msgid "Move Y"
-msgstr "Bewege Y"
-
-# MSG_MOVE_Z
-#: ultralcd.cpp:4363
-msgid "Move Z"
-msgstr "Bewege Z"
-
-# MSG_NO_MOVE
-#: Marlin_main.cpp:5541
-msgid "No move."
-msgstr "Keine Bewegung."
-
-# MSG_NO_CARD
-#: ultralcd.cpp:6911
-msgid "No SD card"
-msgstr "Keine SD Karte"
-
-# MSG_NA
-#: messages.c:107
-msgid "N/A"
-msgstr "N/V"
-
-# MSG_NO
-#: messages.c:58
-msgid "No"
-msgstr "Nein"
-
-# MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:8265
-msgid "Not connected"
-msgstr "Nicht angeschlossen"
-
-# 
-#: util.cpp:293
-msgid "New firmware version available:"
-msgstr "Neue Firmware- Version verfuegbar:"
-
-# MSG_SELFTEST_FAN_NO c=19
-#: messages.c:75
-msgid "Not spinning"
-msgstr "Dreht sich nicht"
-
-# MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4946
-msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
-msgstr "Jetzt werde ich den Abstand zwischen Duesenspitze und Druckbett kalibrieren."
-
-# MSG_WIZARD_WILL_PREHEAT c=20 r=4
-#: ultralcd.cpp:5071
-msgid "Now I will preheat nozzle for PLA."
-msgstr "Jetzt werde ich die Duese fuer PLA vorheizen."
-
-# MSG_NOZZLE
-#: messages.c:59
-msgid "Nozzle"
-msgstr "Duese"
-
-# MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
-#: Marlin_main.cpp:1518
-msgid "Old settings found. Default PID, Esteps etc. will be set."
-msgstr "Alte Einstellungen gefunden. Standard PID, E-Steps u.s.w. werden gesetzt."
-
-# 
-#: ultralcd.cpp:5062
-msgid "Now remove the test print from steel sheet."
-msgstr "Testdruck jetzt von Stahlblech entfernen."
-
-# 
-#: ultralcd.cpp:1654
-msgid "Nozzle FAN"
-msgstr "Duesevent."
-
-# MSG_PAUSE_PRINT
-#: ultralcd.cpp:6875
-msgid "Pause print"
-msgstr "Druck pausieren"
-
-# MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1539
-msgid "PID cal.           "
-msgstr "PID Kal.           "
-
-# MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1545
-msgid "PID cal. finished"
-msgstr "PID Kalib. fertig"
-
-# MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5862
-msgid "PID calibration"
-msgstr "PID Kalibrierung"
-
-# MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:896
-msgid "PINDA Heating"
-msgstr "PINDA erwaermen"
-
-# MSG_PAPER c=20 r=10
-#: messages.c:60
-msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
-msgstr "Legen Sie ein Blatt Papier unter die Duese waehrend der Kalibrierung der ersten 4 Punkte. Wenn die Duese das Papier erfasst, den Drucker sofort ausschalten."
-
-# MSG_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:5128
-msgid "Please clean heatbed and then press the knob."
-msgstr "Bitte reinigen Sie das Heizbett und druecken Sie dann den Knopf."
-
-# MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
-#: messages.c:21
-msgid "Please clean the nozzle for calibration. Click when done."
-msgstr "Bitte entfernen Sie ueberstehendes Filament von der Duese. Klicken wenn sauber."
-
-# MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:8257
-msgid "Please check :"
-msgstr "Bitte pruefe:"
-
-# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:98
-msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
-msgstr "Bitte lesen Sie unser Handbuch und beheben Sie das Problem. Fahren Sie dann mit dem Assistenten fort, indem Sie den Drucker neu starten."
-
-# MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3138
-msgid "Please open idler and remove filament manually."
-msgstr "Bitte Spannrolle oeffnen und Fila- ment von Hand entfernen"
-
-# MSG_PLACE_STEEL_SHEET c=20 r=4
-#: messages.c:61
-msgid "Please place steel sheet on heatbed."
-msgstr "Bitte legen Sie das Stahlblech auf das Heizbett."
-
-# MSG_PRESS_TO_UNLOAD c=20 r=4
-#: messages.c:64
-msgid "Please press the knob to unload filament"
-msgstr "Bitte druecken Sie den Knopf um das Filament zu entladen."
-
-# MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:66
-msgid "Please pull out filament immediately"
-msgstr "Bitte ziehen Sie das Filament sofort heraus"
-
-# MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1422
-msgid "Please remove filament and then press the knob."
-msgstr "Bitte Filament entfernen und dann den Knopf druecken"
-
-# MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:70
-msgid "Please remove steel sheet from heatbed."
-msgstr "Bitte entfernen Sie das Stahlblech vom Heizbett."
-
-# MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4583
-msgid "Please run XYZ calibration first."
-msgstr "Bitte zuerst XYZ Kalibrierung ausfuehren."
-
-# MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1341
-msgid "Please update firmware in your MMU2. Waiting for reset."
-msgstr "Bitte aktualisieren Sie die Firmware in der MMU2. Warte auf Reset."
-
-# MSG_PLEASE_WAIT c=20
-#: messages.c:62
-msgid "Please wait"
-msgstr "Bitte warten"
-
-# 
-#: ultralcd.cpp:5061
-msgid "Please remove shipping helpers first."
-msgstr "Bitte zuerst Transportsicherungen entfernen."
-
-# MSG_PREHEAT_NOZZLE c=20
-#: messages.c:63
-msgid "Preheat the nozzle!"
-msgstr "Duese vorheizen!"
-
-# MSG_PREHEAT
-#: ultralcd.cpp:6853
-msgid "Preheat"
-msgstr "Vorheizen"
-
-# MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:100
-msgid "Preheating nozzle. Please wait."
-msgstr "Vorheizen der Duese. Bitte warten."
-
-#  c=14
-#: ultralcd.cpp:1959
-msgid "PINDA"
-msgstr ""
-
-# 
-#: util.cpp:297
-msgid "Please upgrade."
-msgstr "Bitte aktualisieren."
-
-# MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:11526
-msgid "Press knob to preheat nozzle and continue."
-msgstr "Bitte druecken Sie den Knopf um die Duese vorzuheizen und fortzufahren."
-
-# MSG_FS_PAUSE c=5
-#: fsensor.cpp:710
-msgid "Pause"
-msgstr ""
-
-# 
-#: ultralcd.cpp:1783
-msgid "Power failures"
-msgstr "Netzfehler"
-
-# MSG_PRINT_ABORTED c=20
-#: messages.c:65
-msgid "Print aborted"
-msgstr "Druck abgebrochen"
-
-#  c=20
-#: ultralcd.cpp:2442
-msgid "Preheating to load"
-msgstr "Heizen zum Laden"
-
-#  c=20
-#: ultralcd.cpp:2446
-msgid "Preheating to unload"
-msgstr "Heizen zum Entladen"
-
-# MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:8689
-msgid "Print fan:"
-msgstr "Druckvent.:"
-
-# MSG_CARD_MENU
-#: messages.c:20
-msgid "Print from SD"
-msgstr "Drucken von SD"
-
-# 
-#: ultralcd.cpp:2289
-msgid "Press the knob"
-msgstr "Knopf druecken zum"
-
-# MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1118
-msgid "Print paused"
-msgstr "Druck pausiert"
-
-# 
-#: mmu.cpp:726
-msgid "Press the knob to resume nozzle temperature."
-msgstr "Druecken Sie den Knopf um die Duesentemperatur wiederherzustellen"
-
-# MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
-#: messages.c:38
-msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
-msgstr "Drucker wurde noch nicht kalibriert. Bitte folgen Sie dem Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrie- rungsablauf."
-
-# 
-#: ultralcd.cpp:1655
-msgid "Print FAN"
-msgstr "Druckvent."
-
-# 
-#: ultralcd.cpp:4926
-msgid "Please insert filament into the extruder, then press the knob to load it."
-msgstr "Bitte legen Sie das Filament in den Extruder ein und druecken Sie dann den Knopf, um es zu laden."
-
-# 
-#: ultralcd.cpp:4921
-msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
-msgstr "Bitte stecken Sie das Filament in den ersten Schlauch der MMU und druecken Sie dann den Knopf, um es zu laden."
-
-# 
-#: ultralcd.cpp:4843
-msgid "Please load filament first."
-msgstr "Bitte laden Sie zuerst das Filament."
-
-# MSG_PRUSA3D
-#: ultralcd.cpp:2155
-msgid "prusa3d.com"
-msgstr ""
-
-# MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3267
-msgid "Rear side [um]"
-msgstr "Hinten [um]"
-
-#  c=20 r=4
-#: ultralcd.cpp:7549
-msgid "Please unload the filament first, then repeat this action."
-msgstr "Bitte entladen Sie erst das Filament und versuchen Sie es nochmal."
-
-# MSG_RECOVERING_PRINT c=20
-#: Marlin_main.cpp:10883
-msgid "Recovering print    "
-msgstr "Druck wiederherst   "
-
-# MSG_REMOVE_OLD_FILAMENT c=20 r=5
-#: mmu.cpp:833
-msgid "Remove old filament and press the knob to start loading new filament."
-msgstr "Entfernen Sie das alte Filament und druecken Sie den Knopf, um das neue zu laden."
-
-#  c=20
-#: 
-msgid "Prusa i3 MK3S OK."
-msgstr ""
-
-# MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5867
-msgid "Reset XYZ calibr."
-msgstr "Reset XYZ Kalibr."
-
-# MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3268
-msgid "Reset"
-msgstr "Ruecksetzen"
-
-# MSG_RESUME_PRINT
-#: ultralcd.cpp:6861
-msgid "Resume print"
-msgstr "Druck fortsetzen"
-
-# MSG_RESUMING_PRINT c=20
-#: messages.c:69
-msgid "Resuming print"
-msgstr "Druck fortgesetzt"
-
-# MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3265
-msgid "Right side[um]"
-msgstr "Rechts [um]"
-
-# MSG_RPI_PORT
-#: messages.c:123
-msgid "RPi port"
-msgstr ""
-
-# MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4864
-msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
-msgstr "Der Assistent wird die aktuellen Kalibrierungsdaten loeschen und von vorne beginnen. Weiterfahren?"
-
-# MSG_SD_CARD
-#: messages.c:118
-msgid "SD card"
-msgstr "SD Karte"
-
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
-#: messages.c:119
-msgid "FlashAir"
-msgstr ""
-
-# 
-#: ultralcd.cpp:2994
-msgid "Right"
-msgstr "Rechts"
-
-# MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: messages.c:35
-msgid "Searching bed calibration point"
-msgstr "Suche Bett Kalibrierpunkt"
-
-# MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5779
-msgid "Select language"
-msgstr "Waehle Sprache"
-
-# MSG_SELFTEST_OK
-#: ultralcd.cpp:7812
-msgid "Self test OK"
-msgstr "Selbsttest OK"
-
-# MSG_SELFTEST_START c=20
-#: ultralcd.cpp:7582
-msgid "Self test start  "
-msgstr "Selbsttest start "
-
-# MSG_SELFTEST
-#: ultralcd.cpp:5843
-msgid "Selftest         "
-msgstr "Selbsttest       "
-
-# MSG_SELFTEST_ERROR
-#: ultralcd.cpp:8255
-msgid "Selftest error !"
-msgstr "Selbsttest Fehler!"
-
-# MSG_SELFTEST_FAILED c=20
-#: messages.c:73
-msgid "Selftest failed  "
-msgstr "Selbsttest Error "
-
-# MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1550
-msgid "Selftest will be run to calibrate accurate sensorless rehoming."
-msgstr "Selbsttest im Gang, um die genaue Rueck- kehr zum Nullpunkt ohne Sensor zu kalibrieren"
-
-# 
-#: ultralcd.cpp:5102
-msgid "Select nozzle preheat temperature which matches your material."
-msgstr "Bitte Vorheiztemperatur auswaehlen, die Ihrem Material entspricht."
-
-# MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3286
-msgid "Set temperature:"
-msgstr "Temp. einstellen:"
-
-#  c=20
-#: 
-msgid "Prusa i3 MK2.5 OK."
-msgstr ""
-
-#  c=20
-#: 
-msgid "Prusa i3 MK2.5S OK."
-msgstr ""
-
-#  c=20
-#: 
-msgid "Prusa i3 MK3 OK."
-msgstr ""
-
-# MSG_SETTINGS
-#: messages.c:82
-msgid "Settings"
-msgstr "Einstellungen"
-
-# MSG_SHOW_END_STOPS c=18
-#: ultralcd.cpp:5864
-msgid "Show end stops"
-msgstr "Endschalter Status"
-
-# 
-#: ultralcd.cpp:4008
-msgid "Sensor state"
-msgstr "Sensorstatus"
-
-# MSG_FILE_CNT c=20 r=6
-#: cardreader.cpp:738
-msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
-msgstr "Einige Dateien wur- den nicht sortiert. Max. Dateien pro Verzeichnis = 100."
-
-# MSG_SORT
-#: messages.c:120
-msgid "Sort"
-msgstr "Sort."
-
-# MSG_NONE
-#: messages.c:110
-msgid "None"
-msgstr "Ohne"
-
-# MSG_SORT_TIME
-#: messages.c:121
-msgid "Time"
-msgstr "Zeit"
-
-# 
-#: ultralcd.cpp:3037
-msgid "Severe skew:"
-msgstr "Schwer.Schr:"
-
-# MSG_SORT_ALPHA
-#: messages.c:122
-msgid "Alphabet"
-msgstr ""
-
-# MSG_SORTING c=20 r=1
-#: cardreader.cpp:745
-msgid "Sorting files"
-msgstr "Sortiere Dateien"
-
-# MSG_SOUND_LOUD
-#: messages.c:125
-msgid "Loud"
-msgstr "Laut"
-
-# 
-#: ultralcd.cpp:3036
-msgid "Slight skew:"
-msgstr "Leicht.Schr:"
-
-# MSG_SOUND
-#: messages.c:124
-msgid "Sound"
-msgstr "Ton"
-
-#  c=7
-#: ultralcd.cpp:1822
-msgid "Runouts"
-msgstr ""
-
-# 
-#: Marlin_main.cpp:5101
-msgid "Some problem encountered, Z-leveling enforced ..."
-msgstr "Fehler aufgetreten, Z-Kalibrierung erforderlich..."
-
-# MSG_SOUND_ONCE
-#: messages.c:126
-msgid "Once"
-msgstr "Einmal"
-
-# MSG_SPEED
-#: ultralcd.cpp:7119
-msgid "Speed"
-msgstr "Geschwindigkeit"
-
-# MSG_SELFTEST_FAN_YES c=19
-#: messages.c:76
-msgid "Spinning"
-msgstr "Dreht sich"
-
-# MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4596
-msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
-msgstr "Stabile Umgebungs- temperatur 21-26C und feste Stand- flaeche erforderlich"
-
-# MSG_STATISTICS
-#: ultralcd.cpp:6978
-msgid "Statistics  "
-msgstr "Statistiken "
-
-# MSG_STOP_PRINT
-#: messages.c:91
-msgid "Stop print"
-msgstr "Druck abbrechen"
-
-# MSG_STOPPED
-#: messages.c:92
-msgid "STOPPED. "
-msgstr "GESTOPPT."
-
-# MSG_SUPPORT
-#: ultralcd.cpp:6987
-msgid "Support"
-msgstr ""
-
-# MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:8335
-msgid "Swapped"
-msgstr "Ausgetauscht"
-
-# 
-#: ultralcd.cpp:4814
-msgid "Select filament:"
-msgstr "Filament auswaehlen:"
-
-# MSG_TEMP_CALIBRATION c=14
-#: messages.c:93
-msgid "Temp. cal."
-msgstr "Temp Kalib."
-
-# 
-#: ultralcd.cpp:4955
-msgid "Select temperature which matches your material."
-msgstr "Waehlen Sie die Temperatur, die zu Ihrem Material passt."
-
-# MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5873
-msgid "Temp. calibration"
-msgstr "Temp. kalibrieren"
-
-# MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3933
-msgid "Temperature calibration failed"
-msgstr "Temperaturkalibrierung fehlgeschlagen"
-
-# MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:94
-msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
-msgstr "Temp.kalibrierung ist fertig + aktiv. Temp.kalibrierung kann ausgeschaltet werden im Menu Einstellungen -> Temp.kal."
-
-#  c=20 r=3
-#: ultralcd.cpp:7554
-msgid "Sensor verified, remove the filament now."
-msgstr "Sensor ueberprueft, entladen Sie jetzt das Filament."
-
-# MSG_TEMPERATURE
-#: ultralcd.cpp:5739
-msgid "Temperature"
-msgstr "Temperatur"
-
-# MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2218
-msgid "Temperatures"
-msgstr "Temperaturen"
-
-# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
-#: messages.c:39
-msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
-msgstr "Es ist noch not- wendig die Z- Kalibrierung aus- zufuehren. Bitte befolgen Sie das Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrierablauf."
-
-# 
-#: ultralcd.cpp:2891
-msgid "Total filament"
-msgstr "Gesamtes Filament"
-
-# 
-#: ultralcd.cpp:2892
-msgid "Total print time"
-msgstr "Gesamte Druckzeit"
-
-# MSG_TUNE
-#: ultralcd.cpp:6850
-msgid "Tune"
-msgstr "Feineinstellung"
-
-# 
-#: 
-msgid "Unload"
-msgstr "Entladen"
-
-# 
-#: ultralcd.cpp:1752
-msgid "Total failures"
-msgstr "Gesamte Fehler"
-
-# 
-#: ultralcd.cpp:2296
-msgid "to load filament"
-msgstr "Filament laden"
-
-# 
-#: ultralcd.cpp:2300
-msgid "to unload filament"
-msgstr "Filament entladen"
-
-# MSG_UNLOAD_FILAMENT c=17
-#: messages.c:95
-msgid "Unload filament"
-msgstr "Filament entladen"
-
-# MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:96
-msgid "Unloading filament"
-msgstr "Filament auswerfen"
-
-# 
-#: ultralcd.cpp:1705
-msgid "Total"
-msgstr "Gesamt"
-
-# MSG_USED c=19 r=1
-#: ultralcd.cpp:6001
-msgid "Used during print"
-msgstr "Beim Druck benutzt"
-
-# MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2221
-msgid "Voltages"
-msgstr "Spannungen"
-
-# 
-#: ultralcd.cpp:2194
-msgid "unknown"
-msgstr "unbekannt"
-
-# MSG_USERWAIT
-#: Marlin_main.cpp:5511
-msgid "Wait for user..."
-msgstr "Warte auf Benutzer.."
-
-# MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3434
-msgid "Waiting for nozzle and bed cooling"
-msgstr "Warten bis Heizung und Bett abgekuehlt sind"
-
-# MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3395
-msgid "Waiting for PINDA probe cooling"
-msgstr "Warten, bis PINDA- Sonde abgekuehlt ist"
-
-# 
-#: 
-msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU tube. Use eject if it is hidden in tube."
-msgstr "Entladen Sie das Filament 1, wenn er aus dem hinteren MMU-Rohr herausragt. Verwenden Sie den Auswurf, wenn er im Rohr versteckt ist."
-
-# MSG_CHANGED_BOTH c=20 r=4
-#: Marlin_main.cpp:1510
-msgid "Warning: both printer type and motherboard type changed."
-msgstr "Warnung: Druckertyp und Platinentyp wurden beide geaendert."
-
-# MSG_CHANGED_MOTHERBOARD c=20 r=4
-#: Marlin_main.cpp:1502
-msgid "Warning: motherboard type changed."
-msgstr "Warnung: Platinentyp wurde geaendert."
-
-# MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1506
-msgid "Warning: printer type changed."
-msgstr "Warnung: Druckertyp wurde geaendert."
-
-# MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3128
-msgid "Was filament unload successful?"
-msgstr "Konnten Sie das Filament entnehmen?"
-
-# MSG_SELFTEST_WIRINGERROR
-#: messages.c:81
-msgid "Wiring error"
-msgstr "Verdrahtungsfehler"
-
-# MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5834
-msgid "Wizard"
-msgstr "Assistent"
-
-# MSG_XYZ_DETAILS c=18
-#: ultralcd.cpp:2210
-msgid "XYZ cal. details"
-msgstr "XYZ Kal. Details"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
-#: messages.c:18
-msgid "XYZ calibration failed. Please consult the manual."
-msgstr "XYZ-Kalibrierung fehlgeschlagen. Bitte schauen Sie in das Handbuch."
-
-# MSG_YES
-#: messages.c:102
-msgid "Yes"
-msgstr "Ja"
-
-# MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:101
-msgid "You can always resume the Wizard from Calibration -> Wizard."
-msgstr "Sie koennen den Assistenten immer im Menu neu starten: Kalibrierung -> Assistent"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
-#: ultralcd.cpp:3904
-msgid "XYZ calibration all right. Skew will be corrected automatically."
-msgstr "XYZ Kalibrierung in Ordnung. Schraeglauf wird automatisch korrigiert."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
-#: ultralcd.cpp:3901
-msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
-msgstr "XYZ Kalibrierung in Ordnung. X/Y Achsen sind etwas schraeg."
-
-# MSG_TIMEOUT c=12
-#: messages.c:137
-msgid "Timeout"
-msgstr "Verzoegerung"
-
-# MSG_X_CORRECTION c=13
-#: ultralcd.cpp:5190
-msgid "X-correct:"
-msgstr "X-Korrektur:"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3898
-msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
-msgstr "XYZ-Kalibrierung ok. X/Y-Achsen sind senkrecht zueinander Glueckwunsch!"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
-#: ultralcd.cpp:3882
-msgid "XYZ calibration compromised. Front calibration points not reachable."
-msgstr "XYZ-Kalibrierung beeintraechtigt. Vordere Kalibrierpunkte nicht erreichbar."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3885
-msgid "XYZ calibration compromised. Right front calibration point not reachable."
-msgstr "XYZ-Kalibrierung beeintraechtigt. Rechter vorderer Kalibrierpunkt nicht erreichbar."
-
-# MSG_LOAD_ALL c=17
-#: ultralcd.cpp:6261
-msgid "Load all"
-msgstr "Alle laden"
-
-# 
-#: ultralcd.cpp:3864
-msgid "XYZ calibration failed. Bed calibration point was not found."
-msgstr "XYZ-Kalibrierung fehlgeschlagen. Bett-Kalibrierpunkt nicht gefunden."
-
-# 
-#: ultralcd.cpp:3870
-msgid "XYZ calibration failed. Front calibration points not reachable."
-msgstr "XYZ-Kalibrierung fehlgeschlagen. Vordere Kalibrierpunkte nicht erreichbar."
-
-# 
-#: ultralcd.cpp:3873
-msgid "XYZ calibration failed. Right front calibration point not reachable."
-msgstr "XYZ-Kalibrierung fehlgeschlagen. Rechter vorderer Kalibrierpunkt ist nicht erreichbar."
-
-# 
-#: ultralcd.cpp:2991
-msgid "Y distance from min"
-msgstr "Y Entfernung vom Min"
-
-# 
-#: ultralcd.cpp:4958
-msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
-msgstr "Der Drucker beginnt mit dem Drucken einer Zickzacklinie. Drehen Sie den Knopf, bis Sie die optimale Hoehe erreicht haben. Ueberpruefen Sie die Bilder im Handbuch (Kapitel Kalibrierung)."
-
-#  c=20 r=5
-#: ultralcd.cpp:7558
-msgid "Verification failed, remove the filament and try again."
-msgstr "Ueberpruefung fehl- geschlagen, entladen Sie das Filament und versuchen Sie es erneut."
-
-# MSG_Y_CORRECTION c=13
-#: ultralcd.cpp:5191
-msgid "Y-correct:"
-msgstr "Y-Korrektur:"
-
-# MSG_OFF
-#: messages.c:105
-msgid "Off"
-msgstr "Aus"
-
-# MSG_ON
-#: messages.c:106
-msgid "On"
-msgstr "An"
-
-# 
-#: messages.c:53
-msgid "Back"
-msgstr "Zurueck"
-
-# 
-#: ultralcd.cpp:5724
-msgid "Checks"
-msgstr "Kontrolle"
-
-# 
-#: ultralcd.cpp:8349
-msgid "False triggering"
-msgstr "Falschtriggerung"
-
-# 
-#: ultralcd.cpp:4013
-msgid "FINDA:"
-msgstr ""
-
-# MSG_FIRMWARE
-#: language.h:23
-msgid "Firmware"
-msgstr ""
-
-# MSG_STRICT
-#: messages.c:112
-msgid "Strict"
-msgstr "Strikt"
-
-# MSG_WARN
-#: messages.c:111
-msgid "Warn"
-msgstr "Warnen"
-
-# 
-#: messages.c:83
-msgid "HW Setup"
-msgstr "HW Einstellungen"
-
-# 
-#: ultralcd.cpp:4017
-msgid "IR:"
-msgstr ""
-
-# MSG_MAGNETS_COMP
-#: messages.c:130
-msgid "Magnets comp."
-msgstr "Magnet Komp."
-
-# MSG_MESH
-#: messages.c:128
-msgid "Mesh"
-msgstr "Gitter"
-
-# 
-#: ultralcd.cpp:5763
-msgid "Mesh bed leveling"
-msgstr "MeshBett Ausgleich"
-
-# 
-#: Marlin_main.cpp:872
-msgid "MK3S firmware detected on MK3 printer"
-msgstr "MK3S-Firmware auf MK3-Drucker erkannt"
-
-# MSG_MMU_MODE
-#: messages.c:117
-msgid "MMU Mode"
-msgstr "MMU Modus"
-
-# 
-#: ultralcd.cpp:4494
-msgid "Mode change in progress ..."
-msgstr "Moduswechsel erfolgt..."
-
-# MSG_MODEL
-#: messages.c:113
-msgid "Model"
-msgstr "Modell"
-
-# MSG_NOZZLE_DIAMETER
-#: messages.c:116
-msgid "Nozzle d."
-msgstr "Duese D."
-
-# 
-#: util.cpp:514
-msgid "G-code sliced for a different level. Continue?"
-msgstr "G-Code ist fuer einen anderen Level geslict. Fortfahren?"
-
-# 
-#: util.cpp:520
-msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
-msgstr "G-Code ist fuer einen anderen Level geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen."
-
-# 
-#: util.cpp:431
-msgid "G-code sliced for a different printer type. Continue?"
-msgstr "G-Code ist fuer einen anderen Drucker geslict. Fortfahren?"
-
-# 
-#: util.cpp:437
-msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
-msgstr "G-Code ist fuer einen anderen Drucker geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen."
-
-# 
-#: util.cpp:481
-msgid "G-code sliced for a newer firmware. Continue?"
-msgstr "G-Code ist fuer eine neuere Firmware geslict. Fortfahren?"
-
-# 
-#: util.cpp:487
-msgid "G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
-msgstr "G-Code ist fuer eine neuere Firmware geslict. Bitte die Firmware updaten. Druck abgebrochen."
-
-# 
-#: ultralcd.cpp:4009
-msgid "PINDA:"
-msgstr ""
-
-#  c=20
-#: ultralcd.cpp:2452
-msgid "Preheating to cut"
-msgstr "Heizen zum Schnitt"
-
-#  c=20
-#: ultralcd.cpp:2449
-msgid "Preheating to eject"
-msgstr "Heizen zum Auswurf"
-
-# 
-#: util.cpp:394
-msgid "Printer nozzle diameter differs from the G-code. Continue?"
-msgstr "Der Durchmesser der Druckerduese weicht vom G-Code ab. Fortfahren?"
-
-# 
-#: util.cpp:401
-msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
-msgstr "Der Durchmesser der Druckerduese weicht vom G-Code ab. Bitte ueberpruefen Sie den Wert in den Einstellungen. Druck abgebrochen."
-
-#  c=20
-#: ultralcd.cpp:8355
-msgid "%s level expected"
-msgstr ""
-
-# 
-#: ultralcd.cpp:6814
-msgid "Rename"
-msgstr "Umbenennen"
-
-# 
-#: ultralcd.cpp:6807
-msgid "Select"
-msgstr "Auswahl"
-
-# 
-#: ultralcd.cpp:2212
-msgid "Sensor info"
-msgstr "Sensor Info"
-
-# MSG_SHEET c=10
-#: messages.c:54
-msgid "Sheet"
-msgstr "Stahlblech"
-
-# MSG_SOUND_BLIND
-#: messages.c:127
-msgid "Assist"
-msgstr ""
-
-#  c=18
-#: ultralcd.cpp:5722
-msgid "Steel sheets"
-msgstr "Stahlbleche"
-
-# MSG_Z_CORRECTION c=13
-#: ultralcd.cpp:5192
-msgid "Z-correct:"
-msgstr "Z-Korrektur:"
-
-# MSG_Z_PROBE_NR
-#: messages.c:129
-msgid "Z-probe nr."
-msgstr ""
-
+# Translation of Prusa-Firmware into German.
+#
+msgid ""
+msgstr ""
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: de\n"
+"Project-Id-Version: Prusa-Firmware\n"
+"POT-Creation-Date: Di 26. Jan 11:04:01 CET 2021\n"
+"PO-Revision-Date: Di 26. Jan 11:04:01 CET 2021\n"
+"Language-Team: \n"
+"X-Generator: Poedit 2.0.7\n"
+"X-Poedit-SourceCharset: UTF-8\n"
+"Last-Translator: \n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+# 
+#: 
+msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
+msgstr "[%.7s]Z Einstell.\x0aWert gesetzt,weiter\x0aoder mit 0 beginnen?\x0a%cWeiter%cNeu beginnen"
+
+# MSG_IR_03_OR_OLDER c=18
+#: messages.c:164
+msgid " 0.3 or older"
+msgstr " 0.3 oder aelter"
+
+#  c=18
+#: Marlin_main.cpp:9626
+msgid "FS v0.3 or older"
+msgstr "FS 0.3 oder aelter"
+
+# MSG_IR_04_OR_NEWER c=18
+#: messages.c:163
+msgid " 0.4 or newer"
+msgstr " 0.4 oder neuer"
+
+#  c=18
+#: Marlin_main.cpp:9625
+msgid "FS v0.4 or newer"
+msgstr "FS 0.4 oder neuer"
+
+# MSG_IR_UNKNOWN c=18
+#: messages.c:165
+msgid "unknown state"
+msgstr "Status unbekannt"
+
+# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
+#: messages.c:43
+msgid " of 4"
+msgstr " von 4"
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
+#: messages.c:66
+msgid " of 9"
+msgstr " von 9"
+
+# MSG_MEASURED_OFFSET
+#: ultralcd.cpp:2988
+msgid "[0;0] point offset"
+msgstr "[0;0] Punktversatz"
+
+# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
+#: 
+msgid "Crash detection can\x0abe turned on only in\x0aNormal mode"
+msgstr "Crash Erkennung kann\x0anur im Modus Normal\x0agenutzt werden"
+
+# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
+#: 
+msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
+msgstr "WARNUNG:\x0aCrash Erkennung\x0adeaktiviert im\x0aStealth Modus"
+
+# 
+#: ultralcd.cpp:2410
+msgid ">Cancel"
+msgstr ">Abbruch"
+
+# MSG_BABYSTEPPING_Z c=15
+#: ultralcd.cpp:3108
+msgid "Adjusting Z:"
+msgstr "Z Anpassen:"
+
+# MSG_SELFTEST_CHECK_ALLCORRECT c=20
+#: ultralcd.cpp:8390
+msgid "All correct      "
+msgstr "Alles richtig    "
+
+# MSG_WIZARD_DONE c=20 r=8
+#: messages.c:116
+msgid "All is done. Happy printing!"
+msgstr "Alles abgeschlossen. Viel Spass beim Drucken!"
+
+# 
+#: ultralcd.cpp:1902
+msgid "Ambient"
+msgstr "Raumtemp."
+
+# MSG_AUTO c=6
+#: messages.c:160
+msgid "Auto"
+msgstr ""
+
+# MSG_PRESS c=20 r=2
+#: ultralcd.cpp:2567
+msgid "and press the knob"
+msgstr "und Knopf druecken"
+
+# MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
+#: ultralcd.cpp:3429
+msgid "Are left and right Z~carriages all up?"
+msgstr "Sind linke+rechte Z- Schlitten ganz oben?"
+
+# MSG_AUTO_DEPLETE c=17 r=1
+#: messages.c:125
+msgid "SpoolJoin"
+msgstr ""
+
+# MSG_AUTO_HOME
+#: messages.c:11
+msgid "Auto home"
+msgstr "Startposition"
+
+# MSG_AUTOLOAD_FILAMENT c=18
+#: ultralcd.cpp:6716
+msgid "AutoLoad filament"
+msgstr "AutoLaden Filament"
+
+# MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
+#: ultralcd.cpp:4346
+msgid "Autoloading filament available only when filament sensor is turned on..."
+msgstr "Automatisches Laden Filament nur bei eingeschaltetem Fil. sensor verfuegbar..."
+
+# MSG_AUTOLOADING_ENABLED c=20 r=4
+#: ultralcd.cpp:2730
+msgid "Autoloading filament is active, just press the knob and insert filament..."
+msgstr "Automatisches Laden Filament ist aktiv, Knopf druecken und Filament einlegen..."
+
+# MSG_SELFTEST_AXIS_LENGTH
+#: ultralcd.cpp:8073
+msgid "Axis length"
+msgstr "Achsenlaenge"
+
+# MSG_SELFTEST_AXIS
+#: ultralcd.cpp:8074
+msgid "Axis"
+msgstr "Achse"
+
+# MSG_SELFTEST_BEDHEATER
+#: ultralcd.cpp:8031
+msgid "Bed / Heater"
+msgstr "Bett / Heizung"
+
+# MSG_BED_DONE
+#: messages.c:15
+msgid "Bed done"
+msgstr "Bett OK"
+
+# MSG_BED_HEATING
+#: messages.c:16
+msgid "Bed Heating"
+msgstr "Bett aufwaermen"
+
+# MSG_BED_CORRECTION_MENU
+#: ultralcd.cpp:5802
+msgid "Bed level correct"
+msgstr "Ausgleich Bett ok"
+
+# MSG_BELTTEST c=17
+#: ultralcd.cpp:5782
+msgid "Belt test        "
+msgstr "Riementest       "
+
+# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
+#: messages.c:17
+msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
+msgstr "Z-Kal. fehlgeschlg. Sensor nicht ausgeloest. Schmutzige Duese? Warte auf Reset."
+
+# MSG_BRIGHT c=6
+#: messages.c:158
+msgid "Bright"
+msgstr "Hell"
+
+# MSG_BRIGHTNESS c=18
+#: messages.c:154
+msgid "Brightness"
+msgstr "Helligkeit"
+
+# MSG_BED
+#: messages.c:14
+msgid "Bed"
+msgstr "Bett"
+
+# MSG_BELT_STATUS c=18
+#: 
+msgid "Belt status"
+msgstr "Gurtstatus"
+
+# MSG_RECOVER_PRINT c=20 r=2
+#: messages.c:80
+msgid "Blackout occurred. Recover print?"
+msgstr "Stromausfall! Druck wiederherstellen?"
+
+# 
+#: ultralcd.cpp:8392
+msgid "Calibrating home"
+msgstr "Kalibriere Start"
+
+# MSG_CALIBRATE_BED
+#: ultralcd.cpp:5791
+msgid "Calibrate XYZ"
+msgstr "Kalibrierung XYZ"
+
+# MSG_HOMEYZ
+#: messages.c:51
+msgid "Calibrate Z"
+msgstr "Kalibrierung Z"
+
+# MSG_CALIBRATE_PINDA c=17 r=1
+#: ultralcd.cpp:4538
+msgid "Calibrate"
+msgstr "Kalibrieren"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
+#: ultralcd.cpp:3392
+msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "XYZ Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf druecken."
+
+# MSG_CALIBRATE_Z_AUTO c=20 r=2
+#: messages.c:20
+msgid "Calibrating Z"
+msgstr "Kalibrierung Z"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
+#: ultralcd.cpp:3392
+msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "Z Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf druecken."
+
+# MSG_HOMEYZ_DONE
+#: ultralcd.cpp:813
+msgid "Calibration done"
+msgstr "Kalibrierung OK"
+
+# MSG_MENU_CALIBRATION
+#: messages.c:67
+msgid "Calibration"
+msgstr "Kalibrierung"
+
+# 
+#: ultralcd.cpp:4716
+msgid "Cancel"
+msgstr "Abbruch"
+
+# MSG_SD_REMOVED
+#: ultralcd.cpp:8842
+msgid "Card removed"
+msgstr "SD Karte entfernt"
+
+# MSG_NOT_COLOR
+#: ultralcd.cpp:2647
+msgid "Color not correct"
+msgstr "Falsche Farbe"
+
+# MSG_COOLDOWN
+#: messages.c:25
+msgid "Cooldown"
+msgstr "Abkuehlen"
+
+# 
+#: ultralcd.cpp:4471
+msgid "Copy selected language?"
+msgstr "Gewaehlte Sprache kopieren?"
+
+# MSG_CRASHDETECT c=13
+#: messages.c:28
+msgid "Crash det."
+msgstr "Crash Erk."
+
+# 
+#: ultralcd.cpp:4851
+msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
+msgstr "Waehlen Sie ein Filament fuer Erste Schichtkalibrierung aus und waehlen Sie es im On-Screen-Menu aus."
+
+# MSG_CRASH_DETECTED c=20 r=1
+#: messages.c:27
+msgid "Crash detected."
+msgstr "Crash erkannt."
+
+# 
+#: Marlin_main.cpp:657
+msgid "Crash detected. Resume print?"
+msgstr "Crash erkannt. Druck fortfuehren?"
+
+# MSG_CRASH c=7
+#: messages.c:26
+msgid "Crash"
+msgstr ""
+
+# MSG_CURRENT c=19 r=1
+#: ultralcd.cpp:5933
+msgid "Current"
+msgstr "Aktuelles"
+
+# MSG_DATE c=17 r=1
+#: ultralcd.cpp:2112
+msgid "Date:"
+msgstr "Datum:"
+
+# MSG_DISABLE_STEPPERS
+#: ultralcd.cpp:5683
+msgid "Disable steppers"
+msgstr "Motoren aus"
+
+# MSG_BABYSTEP_Z_NOT_SET c=20 r=12
+#: messages.c:13
+msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
+msgstr "Der Abstand zwischen der Spitze der Duese und dem Bett ist noch nicht eingestellt. Bitte folgen Sie dem Handbuch, Kapitel Erste Schritte, Abschnitt Erste Schicht Kalibrierung."
+
+# MSG_FS_CONTINUE c=5
+#: messages.c:152
+msgid "Cont."
+msgstr ""
+
+# MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
+#: ultralcd.cpp:5026
+msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
+msgstr "Moechten Sie den letzten Schritt wiederholen, um den Abstand zwischen Duese und Druckbett neu einzustellen?"
+
+# MSG_EXTRUDER_CORRECTION c=13
+#: ultralcd.cpp:5095
+msgid "E-correct:"
+msgstr "E-Korrektur:"
+
+# MSG_EJECT_FILAMENT c=16
+#: messages.c:58
+msgid "Eject filament"
+msgstr "Filamentauswurf"
+
+# MSG_EJECTING_FILAMENT c=20 r=1
+#: mmu.cpp:1414
+msgid "Ejecting filament"
+msgstr "werfe Filament aus"
+
+# MSG_SELFTEST_ENDSTOP_NOTHIT c=20
+#: ultralcd.cpp:8049
+msgid "Endstop not hit"
+msgstr "Ende nicht getroffen"
+
+# MSG_SELFTEST_ENDSTOP
+#: ultralcd.cpp:8044
+msgid "Endstop"
+msgstr "Endanschlag"
+
+# MSG_SELFTEST_ENDSTOPS
+#: ultralcd.cpp:8035
+msgid "Endstops"
+msgstr "Endschalter"
+
+# MSG_STACK_ERROR c=20 r=4
+#: ultralcd.cpp:6753
+msgid "Error - static memory has been overwritten"
+msgstr "Fehler - statischer Speicher wurde ueberschrieben"
+
+# MSG_CUT_FILAMENT c=16
+#: messages.c:59
+msgid "Cut filament"
+msgstr "Fil. schneiden"
+
+# MSG_CUTTER c=9
+#: messages.c:126
+msgid "Cutter"
+msgstr "Messer"
+
+#  c=18
+#: mmu.cpp:1386
+msgid "Cutting filament"
+msgstr "Schneide filament"
+
+# MSG_FSENS_NOT_RESPONDING c=20 r=4
+#: ultralcd.cpp:4359
+msgid "ERROR: Filament sensor is not responding, please check connection."
+msgstr "FEHLER: Filament- sensor reagiert nicht, bitte Verbindung pruefen."
+
+# MSG_DIM c=6
+#: messages.c:159
+msgid "Dim"
+msgstr "Dimm"
+
+# MSG_ERROR
+#: messages.c:29
+msgid "ERROR:"
+msgstr "FEHLER:"
+
+# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
+#: ultralcd.cpp:8398
+msgid "Extruder fan:"
+msgstr "Extruder Luefter:"
+
+# MSG_INFO_EXTRUDER c=18
+#: ultralcd.cpp:2153
+msgid "Extruder info"
+msgstr "Extruder Info"
+
+# MSG_EXTRUDER c=17
+#: messages.c:30
+msgid "Extruder"
+msgstr ""
+
+# 
+#: ultralcd.cpp:6740
+msgid "Fail stats MMU"
+msgstr "MMU-Fehler"
+
+# MSG_FSENSOR_AUTOLOAD c=13
+#: messages.c:47
+msgid "F. autoload"
+msgstr "F. autoladen"
+
+# 
+#: ultralcd.cpp:6737
+msgid "Fail stats"
+msgstr "Fehlerstatistik"
+
+# MSG_FAN_SPEED c=14
+#: messages.c:34
+msgid "Fan speed"
+msgstr "Luefter-Tempo"
+
+# MSG_SELFTEST_FAN c=20
+#: messages.c:89
+msgid "Fan test"
+msgstr "Lueftertest"
+
+# MSG_FANS_CHECK c=13
+#: messages.c:31
+msgid "Fans check"
+msgstr "Luefter Chk."
+
+# MSG_FSENSOR
+#: messages.c:48
+msgid "Fil. sensor"
+msgstr "Fil. Sensor"
+
+# MSG_FIL_RUNOUTS c=14
+#: 
+msgid "Fil. runouts  "
+msgstr "Fil. Maengel  "
+
+# MSG_FILAMENT_CLEAN c=20 r=2
+#: messages.c:35
+msgid "Filament extruding & with correct color?"
+msgstr "Filament extrudiert mit richtiger Farbe?"
+
+# MSG_NOT_LOADED c=19
+#: ultralcd.cpp:2646
+msgid "Filament not loaded"
+msgstr "Fil. nicht geladen"
+
+# MSG_FILAMENT_SENSOR c=20
+#: messages.c:95
+msgid "Filament sensor"
+msgstr "Filamentsensor"
+
+# MSG_FILAMENT_USED c=19
+#: ultralcd.cpp:2795
+msgid "Filament used"
+msgstr "Filament benutzt"
+
+# MSG_PRINT_TIME c=19 r=1
+#: ultralcd.cpp:2796
+msgid "Print time"
+msgstr "Druckzeit"
+
+# MSG_FS_ACTION c=10
+#: messages.c:151
+msgid "FS Action"
+msgstr "FS Aktion"
+
+# MSG_FILE_INCOMPLETE c=20 r=3
+#: ultralcd.cpp:8540
+msgid "File incomplete. Continue anyway?"
+msgstr "Datei unvollstaendig Trotzdem fortfahren?"
+
+# MSG_FINISHING_MOVEMENTS c=20
+#: messages.c:44
+msgid "Finishing movements"
+msgstr "Bewegung beenden"
+
+# MSG_V2_CALIBRATION c=18
+#: messages.c:120
+msgid "First layer cal."
+msgstr "Erste-Schicht Kal."
+
+# MSG_WIZARD_SELFTEST c=20 r=8
+#: ultralcd.cpp:4947
+msgid "First, I will run the selftest to check most common assembly problems."
+msgstr "Zunaechst fuehre ich den Selbsttest durch, um die haeufigsten Probleme beim Zusammenbau zu ueberpruefen."
+
+# 
+#: mmu.cpp:726
+msgid "Fix the issue and then press button on MMU unit."
+msgstr "Beseitigen Sie das Problem und druecken Sie dann den Knopf am MMU."
+
+# MSG_FLOW
+#: ultralcd.cpp:6880
+msgid "Flow"
+msgstr "Durchfluss"
+
+# MSG_PRUSA3D_FORUM
+#: ultralcd.cpp:2105
+msgid "forum.prusa3d.com"
+msgstr ""
+
+# MSG_SELFTEST_COOLING_FAN c=20
+#: messages.c:86
+msgid "Front print fan?"
+msgstr "Vorderer Luefter?"
+
+# MSG_BED_CORRECTION_FRONT c=14 r=1
+#: ultralcd.cpp:3190
+msgid "Front side[um]"
+msgstr "Vorne [um]"
+
+# MSG_SELFTEST_FANS
+#: ultralcd.cpp:8079
+msgid "Front/left fans"
+msgstr "Vorderer/linke Luefter"
+
+# MSG_SELFTEST_HEATERTHERMISTOR
+#: ultralcd.cpp:8027
+msgid "Heater/Thermistor"
+msgstr "Heizung/Thermistor"
+
+# MSG_BED_HEATING_SAFETY_DISABLED
+#: Marlin_main.cpp:9616
+msgid "Heating disabled by safety timer."
+msgstr "Heizung durch Sicherheitstimer deaktiviert."
+
+# MSG_HEATING_COMPLETE c=20
+#: messages.c:50
+msgid "Heating done."
+msgstr "Aufwaermen OK."
+
+# MSG_HEATING
+#: messages.c:49
+msgid "Heating"
+msgstr "Aufwaermen"
+
+# MSG_WIZARD_WELCOME c=20 r=7
+#: ultralcd.cpp:4926
+msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
+msgstr "Hallo, ich bin Ihr Original Prusa i3 Drucker. Moechten Sie, dass ich Sie durch den Einrich- tungsablauf fuehre?"
+
+# MSG_PRUSA3D_HOWTO
+#: ultralcd.cpp:2106
+msgid "howto.prusa3d.com"
+msgstr ""
+
+# MSG_FILAMENTCHANGE
+#: messages.c:41
+msgid "Change filament"
+msgstr "Filament-Wechsel"
+
+# MSG_CHANGE_SUCCESS
+#: ultralcd.cpp:2576
+msgid "Change success!"
+msgstr "Wechsel erfolgr.!"
+
+# MSG_CORRECTLY c=20
+#: ultralcd.cpp:2644
+msgid "Changed correctly?"
+msgstr "Wechsel ok?"
+
+# MSG_SELFTEST_CHECK_BED c=20
+#: messages.c:92
+msgid "Checking bed     "
+msgstr "Pruefe Bett "
+
+# MSG_SELFTEST_CHECK_ENDSTOPS c=20
+#: ultralcd.cpp:8381
+msgid "Checking endstops"
+msgstr "Pruefe Endschalter"
+
+# MSG_SELFTEST_CHECK_HOTEND c=20
+#: ultralcd.cpp:8387
+msgid "Checking hotend  "
+msgstr "Pruefe Duese  "
+
+# MSG_SELFTEST_CHECK_FSENSOR c=20
+#: messages.c:93
+msgid "Checking sensors "
+msgstr "Pruefe Sensoren "
+
+# MSG_CHECKING_X c=20
+#: messages.c:22
+msgid "Checking X axis"
+msgstr "Pruefe X Achse"
+
+# MSG_CHECKING_Y c=20
+#: messages.c:23
+msgid "Checking Y axis"
+msgstr "Pruefe Y Achse"
+
+# MSG_SELFTEST_CHECK_Z c=20
+#: 
+msgid "Checking Z axis"
+msgstr "Pruefe Z Achse"
+
+# MSG_CHOOSE_EXTRUDER c=20 r=1
+#: messages.c:52
+msgid "Choose extruder:"
+msgstr "Extruder waehlen:"
+
+# MSG_CHOOSE_FILAMENT c=20 r=1
+#: messages.c:53
+msgid "Choose filament:"
+msgstr "Waehle Filament:"
+
+# MSG_FILAMENT c=17 r=1
+#: messages.c:33
+msgid "Filament"
+msgstr ""
+
+# MSG_WIZARD_XYZ_CAL c=20 r=8
+#: ultralcd.cpp:4956
+msgid "I will run xyz calibration now. It will take approx. 12 mins."
+msgstr "Ich werde jetzt die XYZ-Kalibrierung durchfuehren. Es wird ca. 12 Minuten dauern."
+
+# MSG_WIZARD_Z_CAL c=20 r=8
+#: ultralcd.cpp:4964
+msgid "I will run z calibration now."
+msgstr "Ich werde jetzt die Z Kalibrierung durchfuehren."
+
+# MSG_WATCH
+#: messages.c:114
+msgid "Info screen"
+msgstr "Infoanzeige"
+
+# MSG_INSERT_FILAMENT c=20
+#: ultralcd.cpp:2564
+msgid "Insert filament"
+msgstr "Filament einlegen"
+
+# MSG_FILAMENT_LOADED c=20 r=2
+#: messages.c:36
+msgid "Is filament loaded?"
+msgstr "Ist das Filament geladen?"
+
+# MSG_STEEL_SHEET_CHECK c=20 r=2
+#: messages.c:107
+msgid "Is steel sheet on heatbed?"
+msgstr "Liegt das Stahlblech auf dem Heizbett?"
+
+# MSG_LAST_PRINT_FAILURES c=20
+#: messages.c:55
+msgid "Last print failures"
+msgstr "Letzte Druckfehler"
+
+# 
+#: ultralcd.cpp:5034
+msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
+msgstr "Wenn Sie zusaetzliche Stahlbleche haben, kalibrieren Sie deren Voreinstellungen unter Einstellungen - HW Setup - Stahlbleche."
+
+# MSG_LAST_PRINT c=18
+#: messages.c:54
+msgid "Last print"
+msgstr "Letzter Druck"
+
+# MSG_SELFTEST_EXTRUDER_FAN c=20
+#: messages.c:87
+msgid "Left hotend fan?"
+msgstr "Linker Luefter?"
+
+# 
+#: ultralcd.cpp:2919
+msgid "Left"
+msgstr "Links"
+
+# MSG_BED_CORRECTION_LEFT c=14 r=1
+#: ultralcd.cpp:3188
+msgid "Left side [um]"
+msgstr "Links [um]"
+
+# 
+#: ultralcd.cpp:5706
+msgid "Lin. correction"
+msgstr "Lineare Korrektur"
+
+# MSG_BABYSTEP_Z
+#: messages.c:12
+msgid "Live adjust Z"
+msgstr "Z einstellen"
+
+#  c=20 r=6
+#: ultralcd.cpp:7280
+msgid "Insert the filament (do not load it) into the extruder and then press the knob."
+msgstr "Stecken Sie das Filament (nicht laden) in den Extruder und druecken Sie dann den Knopf."
+
+# MSG_LOAD_FILAMENT c=17
+#: messages.c:56
+msgid "Load filament"
+msgstr "Filament laden"
+
+# MSG_LOADING_COLOR
+#: ultralcd.cpp:2598
+msgid "Loading color"
+msgstr "Lade Farbe"
+
+# MSG_LOADING_FILAMENT c=20
+#: messages.c:57
+msgid "Loading filament"
+msgstr "Filament laedt"
+
+# MSG_LOOSE_PULLEY c=20 r=1
+#: ultralcd.cpp:8067
+msgid "Loose pulley"
+msgstr "Lose Riemenscheibe"
+
+# 
+#: ultralcd.cpp:6699
+msgid "Load to nozzle"
+msgstr "In Druckduese laden"
+
+# MSG_M117_V2_CALIBRATION c=25
+#: messages.c:60
+msgid "M117 First layer cal."
+msgstr "M117 Erste-Schicht Kal."
+
+# MSG_MAIN
+#: messages.c:61
+msgid "Main"
+msgstr "Hauptmenue"
+
+# MSG_BL_HIGH c=12
+#: messages.c:155
+msgid "Level Bright"
+msgstr "Hell.wert"
+
+# MSG_BL_LOW c=12
+#: messages.c:156
+msgid "Level Dimmed"
+msgstr "Dimmwert"
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
+#: messages.c:65
+msgid "Measuring reference height of calibration point"
+msgstr "Messen der Referenzhoehe des Kalibrierpunktes"
+
+# MSG_MESH_BED_LEVELING c=18
+#: messages.c:148
+msgid "Mesh Bed Leveling"
+msgstr "MeshBett Ausgleich"
+
+# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
+#: mmu.cpp:764
+msgid "MMU OK. Resuming position..."
+msgstr "MMU OK. Position wiederherstellen..."
+
+# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
+#: mmu.cpp:757
+msgid "MMU OK. Resuming temperature..."
+msgstr "MMU OK. Temperatur wiederherstellen..."
+
+# 
+#: ultralcd.cpp:2960
+msgid "Measured skew"
+msgstr "Schraeglauf"
+
+# MSG_MMU_FAILS c=14
+#: messages.c:68
+msgid "MMU fails"
+msgstr "MMU Fehler"
+
+# 
+#: mmu.cpp:1586
+msgid "MMU load failed     "
+msgstr "MMU Ladefehler"
+
+# MSG_MMU_LOAD_FAILS c=14
+#: messages.c:69
+msgid "MMU load fails"
+msgstr "MMU Ladefehler"
+
+# MSG_MMU_OK_RESUMING c=20 r=4
+#: mmu.cpp:775
+msgid "MMU OK. Resuming..."
+msgstr "MMU OK.  Weiterdrucken..."
+
+# MSG_MODE
+#: messages.c:101
+msgid "Mode"
+msgstr "Modus"
+
+#  c=20 r=3
+#: Marlin_main.cpp:934
+msgid "MK3 firmware detected on MK3S printer"
+msgstr "MK3-Firmware am MK3S-Drucker erkannt"
+
+# MSG_NORMAL
+#: messages.c:105
+msgid "Normal"
+msgstr ""
+
+# MSG_SILENT
+#: messages.c:104
+msgid "Silent"
+msgstr "Leise"
+
+# 
+#: mmu.cpp:721
+msgid "MMU needs user attention."
+msgstr "MMU erfordert Benutzereingriff."
+
+# 
+#: ultralcd.cpp:1701
+msgid "MMU power fails"
+msgstr "MMU Netzfehler"
+
+# MSG_STEALTH
+#: messages.c:106
+msgid "Stealth"
+msgstr ""
+
+# MSG_AUTO_POWER
+#: messages.c:103
+msgid "Auto power"
+msgstr "Auto Leist"
+
+# MSG_HIGH_POWER
+#: messages.c:102
+msgid "High power"
+msgstr "Hohe leist"
+
+# 
+#: ultralcd.cpp:2124
+msgid "MMU2 connected"
+msgstr "MMU2 verbunden"
+
+# MSG_SELFTEST_MOTOR
+#: messages.c:94
+msgid "Motor"
+msgstr ""
+
+# MSG_MOVE_AXIS
+#: ultralcd.cpp:5681
+msgid "Move axis"
+msgstr "Achse bewegen"
+
+# MSG_MOVE_X
+#: ultralcd.cpp:4262
+msgid "Move X"
+msgstr "Bewege X"
+
+# MSG_MOVE_Y
+#: ultralcd.cpp:4263
+msgid "Move Y"
+msgstr "Bewege Y"
+
+# MSG_MOVE_Z
+#: ultralcd.cpp:4264
+msgid "Move Z"
+msgstr "Bewege Z"
+
+# MSG_NO_MOVE
+#: Marlin_main.cpp:5719
+msgid "No move."
+msgstr "Keine Bewegung."
+
+# MSG_NO_CARD
+#: ultralcd.cpp:6673
+msgid "No SD card"
+msgstr "Keine SD Karte"
+
+# MSG_NA
+#: messages.c:124
+msgid "N/A"
+msgstr "N/V"
+
+# MSG_NO
+#: messages.c:70
+msgid "No"
+msgstr "Nein"
+
+# MSG_SELFTEST_NOTCONNECTED
+#: ultralcd.cpp:8028
+msgid "Not connected"
+msgstr "Nicht angeschlossen"
+
+# 
+#: util.cpp:293
+msgid "New firmware version available:"
+msgstr "Neue Firmware- Version verfuegbar:"
+
+# MSG_SELFTEST_FAN_NO c=19
+#: messages.c:90
+msgid "Not spinning"
+msgstr "Dreht sich nicht"
+
+# MSG_WIZARD_V2_CAL c=20 r=8
+#: ultralcd.cpp:4847
+msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
+msgstr "Jetzt werde ich den Abstand zwischen Duesenspitze und Druckbett kalibrieren."
+
+# MSG_WIZARD_WILL_PREHEAT c=20 r=4
+#: ultralcd.cpp:4972
+msgid "Now I will preheat nozzle for PLA."
+msgstr "Jetzt werde ich die Duese fuer PLA vorheizen."
+
+# MSG_NOZZLE
+#: messages.c:71
+msgid "Nozzle"
+msgstr "Duese"
+
+# MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
+#: Marlin_main.cpp:1581
+msgid "Old settings found. Default PID, Esteps etc. will be set."
+msgstr "Alte Einstellungen gefunden. Standard PID, E-Steps u.s.w. werden gesetzt."
+
+# 
+#: ultralcd.cpp:4963
+msgid "Now remove the test print from steel sheet."
+msgstr "Testdruck jetzt von Stahlblech entfernen."
+
+# 
+#: ultralcd.cpp:1600
+msgid "Nozzle FAN"
+msgstr "Duesevent."
+
+# MSG_PAUSE_PRINT
+#: ultralcd.cpp:6637
+msgid "Pause print"
+msgstr "Druck pausieren"
+
+# MSG_PID_RUNNING c=20 r=1
+#: ultralcd.cpp:1485
+msgid "PID cal.           "
+msgstr "PID Kal.           "
+
+# MSG_PID_FINISHED c=20 r=1
+#: ultralcd.cpp:1491
+msgid "PID cal. finished"
+msgstr "PID Kalib. fertig"
+
+# MSG_PID_EXTRUDER c=17 r=1
+#: ultralcd.cpp:5803
+msgid "PID calibration"
+msgstr "PID Kalibrierung"
+
+# MSG_PINDA_PREHEAT c=20 r=1
+#: ultralcd.cpp:843
+msgid "PINDA Heating"
+msgstr "PINDA erwaermen"
+
+# MSG_PAPER c=20 r=10
+#: messages.c:72
+msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
+msgstr "Legen Sie ein Blatt Papier unter die Duese waehrend der Kalibrierung der ersten 4 Punkte. Wenn die Duese das Papier erfasst, den Drucker sofort ausschalten."
+
+# MSG_WIZARD_CLEAN_HEATBED c=20 r=8
+#: ultralcd.cpp:5029
+msgid "Please clean heatbed and then press the knob."
+msgstr "Bitte reinigen Sie das Heizbett und druecken Sie dann den Knopf."
+
+# MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
+#: messages.c:24
+msgid "Please clean the nozzle for calibration. Click when done."
+msgstr "Bitte entfernen Sie ueberstehendes Filament von der Duese. Klicken wenn sauber."
+
+# MSG_SELFTEST_PLEASECHECK
+#: ultralcd.cpp:8022
+msgid "Please check :"
+msgstr "Bitte pruefe:"
+
+# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
+#: messages.c:115
+msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
+msgstr "Bitte lesen Sie unser Handbuch und beheben Sie das Problem. Fahren Sie dann mit dem Assistenten fort, indem Sie den Drucker neu starten."
+
+# MSG_CHECK_IDLER c=20 r=4
+#: Marlin_main.cpp:3317
+msgid "Please open idler and remove filament manually."
+msgstr "Bitte Spannrolle oeffnen und Fila- ment von Hand entfernen"
+
+# MSG_PLACE_STEEL_SHEET c=20 r=4
+#: messages.c:73
+msgid "Please place steel sheet on heatbed."
+msgstr "Bitte legen Sie das Stahlblech auf das Heizbett."
+
+# MSG_PRESS_TO_UNLOAD c=20 r=4
+#: messages.c:77
+msgid "Please press the knob to unload filament"
+msgstr "Bitte druecken Sie den Knopf um das Filament zu entladen."
+
+# MSG_PULL_OUT_FILAMENT c=20 r=4
+#: messages.c:79
+msgid "Please pull out filament immediately"
+msgstr "Bitte ziehen Sie das Filament sofort heraus"
+
+# MSG_EJECT_REMOVE c=20 r=4
+#: mmu.cpp:1420
+msgid "Please remove filament and then press the knob."
+msgstr "Bitte Filament entfernen und dann den Knopf druecken"
+
+# MSG_REMOVE_STEEL_SHEET c=20 r=4
+#: messages.c:82
+msgid "Please remove steel sheet from heatbed."
+msgstr "Bitte entfernen Sie das Stahlblech vom Heizbett."
+
+# MSG_RUN_XYZ c=20 r=4
+#: Marlin_main.cpp:4766
+msgid "Please run XYZ calibration first."
+msgstr "Bitte zuerst XYZ Kalibrierung ausfuehren."
+
+# MSG_UPDATE_MMU2_FW c=20 r=4
+#: mmu.cpp:1340
+msgid "Please update firmware in your MMU2. Waiting for reset."
+msgstr "Bitte aktualisieren Sie die Firmware in der MMU2. Warte auf Reset."
+
+# MSG_PLEASE_WAIT c=20
+#: messages.c:74
+msgid "Please wait"
+msgstr "Bitte warten"
+
+# 
+#: ultralcd.cpp:4962
+msgid "Please remove shipping helpers first."
+msgstr "Bitte zuerst Transportsicherungen entfernen."
+
+# MSG_PREHEAT_NOZZLE c=20
+#: messages.c:76
+msgid "Preheat the nozzle!"
+msgstr "Duese vorheizen!"
+
+# MSG_PREHEAT
+#: ultralcd.cpp:6615
+msgid "Preheat"
+msgstr "Vorheizen"
+
+# MSG_WIZARD_HEATING c=20 r=3
+#: messages.c:117
+msgid "Preheating nozzle. Please wait."
+msgstr "Vorheizen der Duese. Bitte warten."
+
+#  c=14
+#: ultralcd.cpp:1905
+msgid "PINDA"
+msgstr ""
+
+# 
+#: util.cpp:297
+msgid "Please upgrade."
+msgstr "Bitte aktualisieren."
+
+# MSG_PRESS_TO_PREHEAT c=20 r=4
+#: Marlin_main.cpp:11718
+msgid "Press knob to preheat nozzle and continue."
+msgstr "Bitte druecken Sie den Knopf um die Duese vorzuheizen und fortzufahren."
+
+# MSG_FS_PAUSE c=5
+#: fsensor.cpp:728
+msgid "Pause"
+msgstr ""
+
+# MSG_POWER_FAILURES c=14
+#: messages.c:75
+msgid "Power failures"
+msgstr "Netzfehler"
+
+# MSG_PRINT_ABORTED c=20
+#: messages.c:78
+msgid "Print aborted"
+msgstr "Druck abgebrochen"
+
+#  c=20
+#: ultralcd.cpp:2390
+msgid "Preheating to load"
+msgstr "Heizen zum Laden"
+
+#  c=20
+#: ultralcd.cpp:2395
+msgid "Preheating to unload"
+msgstr "Heizen zum Entladen"
+
+# MSG_SELFTEST_PRINT_FAN_SPEED c=18
+#: ultralcd.cpp:8401
+msgid "Print fan:"
+msgstr "Druckvent.:"
+
+# MSG_CARD_MENU
+#: messages.c:21
+msgid "Print from SD"
+msgstr "Drucken von SD"
+
+# 
+#: ultralcd.cpp:2231
+msgid "Press the knob"
+msgstr "Knopf druecken zum"
+
+# MSG_PRINT_PAUSED c=20 r=1
+#: ultralcd.cpp:1065
+msgid "Print paused"
+msgstr "Druck pausiert"
+
+# 
+#: mmu.cpp:725
+msgid "Press the knob to resume nozzle temperature."
+msgstr "Druecken Sie den Knopf um die Duesentemperatur wiederherzustellen"
+
+# MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
+#: messages.c:45
+msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
+msgstr "Drucker wurde noch nicht kalibriert. Bitte folgen Sie dem Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrie- rungsablauf."
+
+# 
+#: ultralcd.cpp:1601
+msgid "Print FAN"
+msgstr "Druckvent."
+
+# 
+#: ultralcd.cpp:4827
+msgid "Please insert filament into the extruder, then press the knob to load it."
+msgstr "Bitte legen Sie das Filament in den Extruder ein und druecken Sie dann den Knopf, um es zu laden."
+
+# 
+#: ultralcd.cpp:4822
+msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
+msgstr "Bitte stecken Sie das Filament in den ersten Schlauch der MMU und druecken Sie dann den Knopf, um es zu laden."
+
+# 
+#: ultralcd.cpp:4744
+msgid "Please load filament first."
+msgstr "Bitte laden Sie zuerst das Filament."
+
+# MSG_PRUSA3D
+#: ultralcd.cpp:2104
+msgid "prusa3d.com"
+msgstr ""
+
+# MSG_BED_CORRECTION_REAR c=14 r=1
+#: ultralcd.cpp:3191
+msgid "Rear side [um]"
+msgstr "Hinten [um]"
+
+#  c=20 r=4
+#: ultralcd.cpp:7304
+msgid "Please unload the filament first, then repeat this action."
+msgstr "Bitte entladen Sie erst das Filament und versuchen Sie es nochmal."
+
+#  c=20 r=4
+#: ultralcd.cpp:7307
+msgid "Please check the IR sensor connection, unload filament if present."
+msgstr "Bitte IR Sensor Verbindungen ueber- pruefen und Filament entladen ist."
+
+# MSG_RECOVERING_PRINT c=20
+#: Marlin_main.cpp:11076
+msgid "Recovering print    "
+msgstr "Druck wiederherst   "
+
+# MSG_REMOVE_OLD_FILAMENT c=20 r=5
+#: mmu.cpp:832
+msgid "Remove old filament and press the knob to start loading new filament."
+msgstr "Entfernen Sie das alte Filament und druecken Sie den Knopf, um das neue zu laden."
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3S OK."
+msgstr ""
+
+# MSG_CALIBRATE_BED_RESET
+#: ultralcd.cpp:5808
+msgid "Reset XYZ calibr."
+msgstr "Reset XYZ Kalibr."
+
+# MSG_RESET c=14
+#: messages.c:83
+msgid "Reset"
+msgstr "Ruecksetzen"
+
+# MSG_RESUME_PRINT c=18
+#: messages.c:84
+msgid "Resume print"
+msgstr "Druck fortsetzen"
+
+# MSG_RESUMING_PRINT c=20
+#: messages.c:85
+msgid "Resuming print"
+msgstr "Druck fortgesetzt"
+
+# MSG_BED_CORRECTION_RIGHT c=14 r=1
+#: ultralcd.cpp:3189
+msgid "Right side[um]"
+msgstr "Rechts [um]"
+
+# MSG_RPI_PORT
+#: messages.c:142
+msgid "RPi port"
+msgstr ""
+
+# MSG_WIZARD_RERUN c=20 r=7
+#: ultralcd.cpp:4765
+msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
+msgstr "Der Assistent wird die aktuellen Kalibrierungsdaten loeschen und von vorne beginnen. Weiterfahren?"
+
+# MSG_SD_CARD
+#: messages.c:137
+msgid "SD card"
+msgstr "SD Karte"
+
+# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
+#: messages.c:138
+msgid "FlashAir"
+msgstr ""
+
+# 
+#: ultralcd.cpp:2920
+msgid "Right"
+msgstr "Rechts"
+
+# MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
+#: messages.c:42
+msgid "Searching bed calibration point"
+msgstr "Suche Bett Kalibrierpunkt"
+
+# MSG_LANGUAGE_SELECT
+#: ultralcd.cpp:5721
+msgid "Select language"
+msgstr "Waehle Sprache"
+
+# MSG_SELFTEST_OK
+#: ultralcd.cpp:7579
+msgid "Self test OK"
+msgstr "Selbsttest OK"
+
+# MSG_SELFTEST_START c=20
+#: ultralcd.cpp:7347
+msgid "Self test start  "
+msgstr "Selbsttest start "
+
+# MSG_SELFTEST
+#: ultralcd.cpp:5784
+msgid "Selftest         "
+msgstr "Selbsttest       "
+
+# MSG_SELFTEST_ERROR
+#: ultralcd.cpp:8021
+msgid "Selftest error !"
+msgstr "Selbsttest Fehler!"
+
+# MSG_SELFTEST_FAILED c=20
+#: messages.c:88
+msgid "Selftest failed  "
+msgstr "Selbsttest Error "
+
+# MSG_FORCE_SELFTEST c=20 r=8
+#: Marlin_main.cpp:1613
+msgid "Selftest will be run to calibrate accurate sensorless rehoming."
+msgstr "Selbsttest im Gang, um die genaue Rueck- kehr zum Nullpunkt ohne Sensor zu kalibrieren"
+
+# 
+#: ultralcd.cpp:5003
+msgid "Select nozzle preheat temperature which matches your material."
+msgstr "Bitte Vorheiztemperatur auswaehlen, die Ihrem Material entspricht."
+
+# MSG_SET_TEMPERATURE c=19 r=1
+#: ultralcd.cpp:3209
+msgid "Set temperature:"
+msgstr "Temp. einstellen:"
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5 OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5S OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3 OK."
+msgstr ""
+
+# MSG_SETTINGS
+#: messages.c:97
+msgid "Settings"
+msgstr "Einstellungen"
+
+# MSG_SHOW_END_STOPS c=18
+#: ultralcd.cpp:5805
+msgid "Show end stops"
+msgstr "Endschalter Status"
+
+# 
+#: ultralcd.cpp:3915
+msgid "Sensor state"
+msgstr "Sensorstatus"
+
+# MSG_FILE_CNT c=20 r=6
+#: cardreader.cpp:739
+msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
+msgstr "Einige Dateien wur- den nicht sortiert. Max. Dateien pro Verzeichnis = 100."
+
+# MSG_SORT
+#: messages.c:139
+msgid "Sort"
+msgstr "Sort."
+
+# MSG_NONE
+#: messages.c:127
+msgid "None"
+msgstr "Ohne"
+
+# MSG_SORT_TIME
+#: messages.c:140
+msgid "Time"
+msgstr "Zeit"
+
+# 
+#: ultralcd.cpp:2963
+msgid "Severe skew:"
+msgstr "Schwer.Schr:"
+
+# MSG_SORT_ALPHA
+#: messages.c:141
+msgid "Alphabet"
+msgstr ""
+
+# MSG_SORTING c=20 r=1
+#: cardreader.cpp:746
+msgid "Sorting files"
+msgstr "Sortiere Dateien"
+
+# MSG_SOUND_LOUD
+#: messages.c:144
+msgid "Loud"
+msgstr "Laut"
+
+# 
+#: ultralcd.cpp:2962
+msgid "Slight skew:"
+msgstr "Leicht.Schr:"
+
+# MSG_SOUND
+#: messages.c:143
+msgid "Sound"
+msgstr "Ton"
+
+#  c=7
+#: ultralcd.cpp:1768
+msgid "Runouts"
+msgstr ""
+
+# 
+#: Marlin_main.cpp:5280
+msgid "Some problem encountered, Z-leveling enforced ..."
+msgstr "Fehler aufgetreten, Z-Kalibrierung erforderlich..."
+
+# MSG_SOUND_ONCE
+#: messages.c:145
+msgid "Once"
+msgstr "Einmal"
+
+# MSG_SPEED
+#: ultralcd.cpp:6874
+msgid "Speed"
+msgstr "Geschwindigkeit"
+
+# MSG_SELFTEST_FAN_YES c=19
+#: messages.c:91
+msgid "Spinning"
+msgstr "Dreht sich"
+
+# MSG_TEMP_CAL_WARNING c=20 r=4
+#: Marlin_main.cpp:4779
+msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
+msgstr "Stabile Umgebungs- temperatur 21-26C und feste Stand- flaeche erforderlich"
+
+# MSG_STATISTICS
+#: ultralcd.cpp:6733
+msgid "Statistics  "
+msgstr "Statistiken "
+
+# MSG_STOP_PRINT
+#: messages.c:108
+msgid "Stop print"
+msgstr "Druck abbrechen"
+
+# MSG_STOPPED
+#: messages.c:109
+msgid "STOPPED. "
+msgstr "GESTOPPT."
+
+# MSG_SUPPORT
+#: ultralcd.cpp:6742
+msgid "Support"
+msgstr ""
+
+# MSG_SELFTEST_SWAPPED
+#: ultralcd.cpp:8080
+msgid "Swapped"
+msgstr "Ausgetauscht"
+
+# 
+#: ultralcd.cpp:4715
+msgid "Select filament:"
+msgstr "Filament auswaehlen:"
+
+# MSG_TEMP_CALIBRATION c=14
+#: messages.c:110
+msgid "Temp. cal."
+msgstr "Temp Kalib."
+
+# 
+#: ultralcd.cpp:4856
+msgid "Select temperature which matches your material."
+msgstr "Waehlen Sie die Temperatur, die zu Ihrem Material passt."
+
+# MSG_CALIBRATION_PINDA_MENU c=17 r=1
+#: ultralcd.cpp:5816
+msgid "Temp. calibration"
+msgstr "Temp. kalibrieren"
+
+# MSG_TEMP_CAL_FAILED c=20 r=8
+#: ultralcd.cpp:3845
+msgid "Temperature calibration failed"
+msgstr "Temperaturkalibrierung fehlgeschlagen"
+
+# MSG_TEMP_CALIBRATION_DONE c=20 r=12
+#: messages.c:111
+msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
+msgstr "Temp.kalibrierung ist fertig + aktiv. Temp.kalibrierung kann ausgeschaltet werden im Menu Einstellungen -> Temp.kal."
+
+#  c=20 r=3
+#: ultralcd.cpp:7311
+msgid "Sensor verified, remove the filament now."
+msgstr "Sensor ueberprueft, entladen Sie jetzt das Filament."
+
+# MSG_TEMPERATURE
+#: ultralcd.cpp:5679
+msgid "Temperature"
+msgstr "Temperatur"
+
+# MSG_MENU_TEMPERATURES c=15 r=1
+#: ultralcd.cpp:2160
+msgid "Temperatures"
+msgstr "Temperaturen"
+
+# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
+#: messages.c:46
+msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
+msgstr "Es ist noch not- wendig die Z- Kalibrierung aus- zufuehren. Bitte befolgen Sie das Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrierablauf."
+
+# 
+#: ultralcd.cpp:2817
+msgid "Total filament"
+msgstr "Gesamtes Filament"
+
+# 
+#: ultralcd.cpp:2818
+msgid "Total print time"
+msgstr "Gesamte Druckzeit"
+
+# MSG_TUNE
+#: ultralcd.cpp:6612
+msgid "Tune"
+msgstr "Feineinstellung"
+
+# 
+#: 
+msgid "Unload"
+msgstr "Entladen"
+
+# MSG_TOTAL_FAILURES c=20
+#: messages.c:99
+msgid "Total failures"
+msgstr "Gesamte Fehler"
+
+# 
+#: ultralcd.cpp:2238
+msgid "to load filament"
+msgstr "Filament laden"
+
+# 
+#: ultralcd.cpp:2242
+msgid "to unload filament"
+msgstr "Filament entladen"
+
+# MSG_UNLOAD_FILAMENT c=17
+#: messages.c:112
+msgid "Unload filament"
+msgstr "Filament entladen"
+
+# MSG_UNLOADING_FILAMENT c=20 r=1
+#: messages.c:113
+msgid "Unloading filament"
+msgstr "Filament auswerfen"
+
+# MSG_TOTAL c=6
+#: messages.c:98
+msgid "Total"
+msgstr "Gesamt"
+
+# MSG_USED c=19 r=1
+#: ultralcd.cpp:5932
+msgid "Used during print"
+msgstr "Beim Druck benutzt"
+
+# MSG_MENU_VOLTAGES c=15 r=1
+#: ultralcd.cpp:2163
+msgid "Voltages"
+msgstr "Spannungen"
+
+# 
+#: ultralcd.cpp:2132
+msgid "unknown"
+msgstr "unbekannt"
+
+# MSG_USERWAIT
+#: Marlin_main.cpp:5689
+msgid "Wait for user..."
+msgstr "Warte auf Benutzer.."
+
+# MSG_WAITING_TEMP c=20 r=3
+#: ultralcd.cpp:3357
+msgid "Waiting for nozzle and bed cooling"
+msgstr "Warten bis Heizung und Bett abgekuehlt sind"
+
+# MSG_WAITING_TEMP_PINDA c=20 r=3
+#: ultralcd.cpp:3318
+msgid "Waiting for PINDA probe cooling"
+msgstr "Warten, bis PINDA- Sonde abgekuehlt ist"
+
+# 
+#: 
+msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU tube. Use eject if it is hidden in tube."
+msgstr "Entladen Sie das Filament 1, wenn er aus dem hinteren MMU-Rohr herausragt. Verwenden Sie den Auswurf, wenn er im Rohr versteckt ist."
+
+# MSG_CHANGED_BOTH c=20 r=4
+#: Marlin_main.cpp:1573
+msgid "Warning: both printer type and motherboard type changed."
+msgstr "Warnung: Druckertyp und Platinentyp wurden beide geaendert."
+
+# MSG_CHANGED_MOTHERBOARD c=20 r=4
+#: Marlin_main.cpp:1565
+msgid "Warning: motherboard type changed."
+msgstr "Warnung: Platinentyp wurde geaendert."
+
+# MSG_CHANGED_PRINTER c=20 r=4
+#: Marlin_main.cpp:1569
+msgid "Warning: printer type changed."
+msgstr "Warnung: Druckertyp wurde geaendert."
+
+# MSG_UNLOAD_SUCCESSFUL c=20 r=2
+#: Marlin_main.cpp:3308
+msgid "Was filament unload successful?"
+msgstr "Konnten Sie das Filament entnehmen?"
+
+# MSG_SELFTEST_WIRINGERROR
+#: messages.c:96
+msgid "Wiring error"
+msgstr "Verdrahtungsfehler"
+
+# MSG_WIZARD c=17 r=1
+#: ultralcd.cpp:5775
+msgid "Wizard"
+msgstr "Assistent"
+
+# MSG_XYZ_DETAILS c=18
+#: ultralcd.cpp:2152
+msgid "XYZ cal. details"
+msgstr "XYZ Kal. Details"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
+#: messages.c:18
+msgid "XYZ calibration failed. Please consult the manual."
+msgstr "XYZ-Kalibrierung fehlgeschlagen. Bitte schauen Sie in das Handbuch."
+
+# MSG_YES
+#: messages.c:119
+msgid "Yes"
+msgstr "Ja"
+
+# MSG_WIZARD_QUIT c=20 r=8
+#: messages.c:118
+msgid "You can always resume the Wizard from Calibration -> Wizard."
+msgstr "Sie koennen den Assistenten immer im Menu neu starten: Kalibrierung -> Assistent"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
+#: ultralcd.cpp:3817
+msgid "XYZ calibration all right. Skew will be corrected automatically."
+msgstr "XYZ Kalibrierung in Ordnung. Schraeglauf wird automatisch korrigiert."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
+#: ultralcd.cpp:3814
+msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
+msgstr "XYZ Kalibrierung in Ordnung. X/Y Achsen sind etwas schraeg."
+
+# MSG_TIMEOUT c=12
+#: messages.c:157
+msgid "Timeout"
+msgstr "Verzoegerung"
+
+# MSG_X_CORRECTION c=13
+#: ultralcd.cpp:5091
+msgid "X-correct:"
+msgstr "X-Korrektur:"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
+#: ultralcd.cpp:3811
+msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
+msgstr "XYZ-Kalibrierung ok. X/Y-Achsen sind senkrecht zueinander Glueckwunsch!"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
+#: ultralcd.cpp:3795
+msgid "XYZ calibration compromised. Front calibration points not reachable."
+msgstr "XYZ-Kalibrierung beeintraechtigt. Vordere Kalibrierpunkte nicht erreichbar."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
+#: ultralcd.cpp:3798
+msgid "XYZ calibration compromised. Right front calibration point not reachable."
+msgstr "XYZ-Kalibrierung beeintraechtigt. Rechter vorderer Kalibrierpunkt nicht erreichbar."
+
+# MSG_LOAD_ALL c=17
+#: ultralcd.cpp:6171
+msgid "Load all"
+msgstr "Alle laden"
+
+# 
+#: ultralcd.cpp:3777
+msgid "XYZ calibration failed. Bed calibration point was not found."
+msgstr "XYZ-Kalibrierung fehlgeschlagen. Bett-Kalibrierpunkt nicht gefunden."
+
+# 
+#: ultralcd.cpp:3783
+msgid "XYZ calibration failed. Front calibration points not reachable."
+msgstr "XYZ-Kalibrierung fehlgeschlagen. Vordere Kalibrierpunkte nicht erreichbar."
+
+# 
+#: ultralcd.cpp:3786
+msgid "XYZ calibration failed. Right front calibration point not reachable."
+msgstr "XYZ-Kalibrierung fehlgeschlagen. Rechter vorderer Kalibrierpunkt ist nicht erreichbar."
+
+# 
+#: ultralcd.cpp:2917
+msgid "Y distance from min"
+msgstr "Y Entfernung vom Min"
+
+# 
+#: ultralcd.cpp:4859
+msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
+msgstr "Der Drucker beginnt mit dem Drucken einer Zickzacklinie. Drehen Sie den Knopf, bis Sie die optimale Hoehe erreicht haben. Ueberpruefen Sie die Bilder im Handbuch (Kapitel Kalibrierung)."
+
+#  c=20 r=5
+#: ultralcd.cpp:7315
+msgid "Verification failed, remove the filament and try again."
+msgstr "Ueberpruefung fehl- geschlagen, entladen Sie das Filament und versuchen Sie es erneut."
+
+# MSG_Y_CORRECTION c=13
+#: ultralcd.cpp:5092
+msgid "Y-correct:"
+msgstr "Y-Korrektur:"
+
+# MSG_OFF
+#: messages.c:122
+msgid "Off"
+msgstr "Aus"
+
+# MSG_ON
+#: messages.c:123
+msgid "On"
+msgstr "An"
+
+# 
+#: messages.c:62
+msgid "Back"
+msgstr "Zurueck"
+
+# 
+#: ultralcd.cpp:5647
+msgid "Checks"
+msgstr "Kontrolle"
+
+# 
+#: ultralcd.cpp:8090
+msgid "False triggering"
+msgstr "Falschtriggerung"
+
+# 
+#: ultralcd.cpp:3920
+msgid "FINDA:"
+msgstr ""
+
+# MSG_FIRMWARE
+#: language.h:24
+msgid "Firmware"
+msgstr ""
+
+# MSG_STRICT
+#: messages.c:129
+msgid "Strict"
+msgstr "Strikt"
+
+# MSG_WARN
+#: messages.c:128
+msgid "Warn"
+msgstr "Warnen"
+
+# MSG_HW_SETUP c=18
+#: messages.c:100
+msgid "HW Setup"
+msgstr "HW Einstellungen"
+
+# 
+#: ultralcd.cpp:3924
+msgid "IR:"
+msgstr ""
+
+# MSG_MAGNETS_COMP
+#: messages.c:150
+msgid "Magnets comp."
+msgstr "Magnet Komp."
+
+# MSG_MESH
+#: messages.c:147
+msgid "Mesh"
+msgstr "Gitter"
+
+# 
+#: Marlin_main.cpp:927
+msgid "MK3S firmware detected on MK3 printer"
+msgstr "MK3S-Firmware auf MK3-Drucker erkannt"
+
+# MSG_MMU_MODE
+#: messages.c:136
+msgid "MMU Mode"
+msgstr "MMU Modus"
+
+# 
+#: ultralcd.cpp:4395
+msgid "Mode change in progress ..."
+msgstr "Moduswechsel erfolgt..."
+
+# MSG_MODEL
+#: messages.c:130
+msgid "Model"
+msgstr "Modell"
+
+# MSG_NOZZLE_DIAMETER
+#: messages.c:135
+msgid "Nozzle d."
+msgstr "Duese D."
+
+# 
+#: util.cpp:514
+msgid "G-code sliced for a different level. Continue?"
+msgstr "G-Code ist fuer einen anderen Level geslict. Fortfahren?"
+
+# 
+#: util.cpp:520
+msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
+msgstr "G-Code ist fuer einen anderen Level geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen."
+
+# MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5
+#: messages.c:133
+msgid "G-code sliced for a different printer type. Continue?"
+msgstr "G-Code ist fuer einen anderen Drucker geslict. Fortfahren?"
+
+# MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=6
+#: messages.c:134
+msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
+msgstr "G-Code ist fuer einen anderen Drucker geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen."
+
+# 
+#: util.cpp:481
+msgid "G-code sliced for a newer firmware. Continue?"
+msgstr "G-Code ist fuer eine neuere Firmware geslict. Fortfahren?"
+
+# 
+#: util.cpp:487
+msgid "G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
+msgstr "G-Code ist fuer eine neuere Firmware geslict. Bitte die Firmware updaten. Druck abgebrochen."
+
+# 
+#: ultralcd.cpp:3916
+msgid "PINDA:"
+msgstr ""
+
+#  c=20
+#: ultralcd.cpp:2402
+msgid "Preheating to cut"
+msgstr "Heizen zum Schnitt"
+
+#  c=20
+#: ultralcd.cpp:2399
+msgid "Preheating to eject"
+msgstr "Heizen zum Auswurf"
+
+# 
+#: util.cpp:394
+msgid "Printer nozzle diameter differs from the G-code. Continue?"
+msgstr "Der Durchmesser der Druckerduese weicht vom G-Code ab. Fortfahren?"
+
+# 
+#: util.cpp:401
+msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
+msgstr "Der Durchmesser der Druckerduese weicht vom G-Code ab. Bitte ueberpruefen Sie den Wert in den Einstellungen. Druck abgebrochen."
+
+#  c=20
+#: ultralcd.cpp:8095
+msgid "%s level expected"
+msgstr ""
+
+# 
+#: ultralcd.cpp:6574
+msgid "Rename"
+msgstr "Umbenennen"
+
+# 
+#: ultralcd.cpp:6567
+msgid "Select"
+msgstr "Auswahl"
+
+# 
+#: ultralcd.cpp:2154
+msgid "Sensor info"
+msgstr "Sensor Info"
+
+# MSG_SHEET c=10
+#: messages.c:63
+msgid "Sheet"
+msgstr "Stahlblech"
+
+# MSG_SOUND_BLIND
+#: messages.c:146
+msgid "Assist"
+msgstr ""
+
+# MSG_STEEL_SHEET c=18
+#: messages.c:64
+msgid "Steel sheets"
+msgstr "Stahlbleche"
+
+# MSG_Z_CORRECTION c=13
+#: ultralcd.cpp:5093
+msgid "Z-correct:"
+msgstr "Z-Korrektur:"
+
+# MSG_Z_PROBE_NR
+#: messages.c:149
+msgid "Z-probe nr."
+msgstr ""
+

+ 1852 - 1842
lang/po/new/es.po

@@ -1,1842 +1,1852 @@
-# Translation of Prusa-Firmware into Spanish.
-#
-msgid ""
-msgstr ""
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Project-Id-Version: Prusa-Firmware\n"
-"POT-Creation-Date: Wed May 13 17:41:49 CEST 2020\n"
-"PO-Revision-Date: Wed May 13 17:41:49 CEST 2020\n"
-"Language-Team: \n"
-"X-Generator: Poedit 2.0.7\n"
-"X-Poedit-SourceCharset: UTF-8\n"
-"Last-Translator: \n"
-"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-
-# 
-#: 
-msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
-msgstr "[%.7s]Ajuste Z\x0aAjustado, continuar\x0ao empezar de nuevo?\x0a%cContinuar%cRepetir"
-
-# MSG_03_OR_OLDER c=18
-#: messages.c:144
-msgid " 0.3 or older"
-msgstr " 0.3 o mayor"
-
-# MSG_04_OR_NEWER c=18
-#: messages.c:143
-msgid " 0.4 or newer"
-msgstr " 0.4 o mas nueva"
-
-# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
-#: messages.c:36
-msgid " of 4"
-msgstr " de 4"
-
-# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:56
-msgid " of 9"
-msgstr " de 9"
-
-# MSG_MEASURED_OFFSET
-#: ultralcd.cpp:3064
-msgid "[0;0] point offset"
-msgstr "[0;0] punto offset"
-
-# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
-#: 
-msgid "Crash detection can\x0abe turned on only in\x0aNormal mode"
-msgstr "Dec. choque puede\x0aser activada solo en\x0aModo normal"
-
-# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
-#: 
-msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
-msgstr "ATENCION:\x0aDec. choque\x0adesactivada en\x0aModo silencio"
-
-# 
-#: ultralcd.cpp:2460
-msgid ">Cancel"
-msgstr ">Cancelar"
-
-# MSG_BABYSTEPPING_Z c=15
-#: ultralcd.cpp:3184
-msgid "Adjusting Z:"
-msgstr "Ajustar-Z:"
-
-# MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:8677
-msgid "All correct      "
-msgstr "Todo bien"
-
-# MSG_WIZARD_DONE c=20 r=8
-#: messages.c:99
-msgid "All is done. Happy printing!"
-msgstr "Terminado! Feliz impresion!"
-
-# 
-#: ultralcd.cpp:1956
-msgid "Ambient"
-msgstr "Ambiente"
-
-# MSG_AUTO c=6
-#: messages.c:140
-msgid "Auto"
-msgstr ""
-
-# MSG_PRESS c=20 r=2
-#: ultralcd.cpp:2609
-msgid "and press the knob"
-msgstr "Haz clic"
-
-# MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3506
-msgid "Are left and right Z~carriages all up?"
-msgstr "Carros Z izq./der. estan arriba maximo?"
-
-# MSG_AUTO_DEPLETE c=17 r=1
-#: messages.c:108
-msgid "SpoolJoin"
-msgstr ""
-
-# MSG_AUTO_HOME
-#: messages.c:11
-msgid "Auto home"
-msgstr "Llevar al origen"
-
-# MSG_AUTOLOAD_FILAMENT c=18
-#: ultralcd.cpp:6961
-msgid "AutoLoad filament"
-msgstr "Carga auto. filam."
-
-# MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4445
-msgid "Autoloading filament available only when filament sensor is turned on..."
-msgstr "La carga automatica solo funciona si el sensor de filamento esta activado..."
-
-# MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2804
-msgid "Autoloading filament is active, just press the knob and insert filament..."
-msgstr "La carga automatica esta activada, pulse el dial e inserte el filamento..."
-
-# MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:8325
-msgid "Axis length"
-msgstr "Longitud del eje"
-
-# MSG_SELFTEST_AXIS
-#: ultralcd.cpp:8327
-msgid "Axis"
-msgstr "Eje"
-
-# MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:8269
-msgid "Bed / Heater"
-msgstr "Base / Calentador"
-
-# MSG_BED_DONE
-#: messages.c:15
-msgid "Bed done"
-msgstr "Base preparada"
-
-# MSG_BED_HEATING
-#: messages.c:16
-msgid "Bed Heating"
-msgstr "Calentando Base"
-
-# MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5861
-msgid "Bed level correct"
-msgstr "Corr. de la cama"
-
-# MSG_BELTTEST c=17
-#: ultralcd.cpp:5841
-msgid "Belt test        "
-msgstr "Test cinturon    "
-
-# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
-#: messages.c:17
-msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
-msgstr "Nivelacion fallada. Sensor no funciona. Restos en boquilla? Esperando reset."
-
-# MSG_BRIGHT c=6
-#: messages.c:138
-msgid "Bright"
-msgstr "Brill."
-
-# MSG_BRIGHTNESS c=18
-#: messages.c:134
-msgid "Brightness"
-msgstr "Brillo"
-
-# MSG_BED
-#: messages.c:14
-msgid "Bed"
-msgstr "Base"
-
-# MSG_MENU_BELT_STATUS c=18
-#: ultralcd.cpp:2009
-msgid "Belt status"
-msgstr "Estado de correa"
-
-# MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:67
-msgid "Blackout occurred. Recover print?"
-msgstr "Se fue la luz. ?Reanudar la impresion?"
-
-# 
-#: ultralcd.cpp:8679
-msgid "Calibrating home"
-msgstr "Calibrando posicion inicial"
-
-# MSG_CALIBRATE_BED
-#: ultralcd.cpp:5850
-msgid "Calibrate XYZ"
-msgstr "Calibrar XYZ"
-
-# MSG_HOMEYZ
-#: messages.c:44
-msgid "Calibrate Z"
-msgstr "Calibrar Z"
-
-# MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4637
-msgid "Calibrate"
-msgstr "Calibrar"
-
-# MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3469
-msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
-msgstr "Calibrando XYZ. Gira el dial para subir el extrusor hasta tocar los topes superiores. Despues haz clic."
-
-# MSG_CALIBRATE_Z_AUTO c=20 r=2
-#: messages.c:19
-msgid "Calibrating Z"
-msgstr "Calibrando Z"
-
-# MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3469
-msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
-msgstr "Calibrando Z. Gira el dial para subir el extrusor hasta tocar los topes superiores. Despues haz clic."
-
-# MSG_HOMEYZ_DONE
-#: ultralcd.cpp:865
-msgid "Calibration done"
-msgstr "Calibracion OK"
-
-# MSG_MENU_CALIBRATION
-#: messages.c:57
-msgid "Calibration"
-msgstr "Calibracion"
-
-# 
-#: ultralcd.cpp:4815
-msgid "Cancel"
-msgstr "Cancelar"
-
-# MSG_SD_REMOVED
-#: ultralcd.cpp:9090
-msgid "Card removed"
-msgstr "Tarjeta retirada"
-
-# MSG_NOT_COLOR
-#: ultralcd.cpp:2709
-msgid "Color not correct"
-msgstr "Color no homogeneo"
-
-# MSG_COOLDOWN
-#: messages.c:22
-msgid "Cooldown"
-msgstr "Enfriar"
-
-# 
-#: ultralcd.cpp:4570
-msgid "Copy selected language?"
-msgstr "Copiar idioma seleccionado?"
-
-# MSG_CRASHDETECT c=13
-#: messages.c:24
-msgid "Crash det."
-msgstr "Det. choque"
-
-# 
-#: ultralcd.cpp:4950
-msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
-msgstr "Escoge un filamento para la Calibracion de la Primera Capa y seleccionalo en el menu en pantalla."
-
-# MSG_CRASH_DETECTED c=20 r=1
-#: messages.c:23
-msgid "Crash detected."
-msgstr "Choque detectado."
-
-# 
-#: Marlin_main.cpp:607
-msgid "Crash detected. Resume print?"
-msgstr "Choque detectado. Continuar impresion?"
-
-# 
-#: ultralcd.cpp:1785
-msgid "Crash"
-msgstr "Choque"
-
-# MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:6002
-msgid "Current"
-msgstr "Actual"
-
-# MSG_DATE c=17 r=1
-#: ultralcd.cpp:2163
-msgid "Date:"
-msgstr "Fecha:"
-
-# MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5743
-msgid "Disable steppers"
-msgstr "Apagar motores"
-
-# MSG_BABYSTEP_Z_NOT_SET c=20 r=12
-#: messages.c:13
-msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
-msgstr "Distancia entre la punta del boquilla y la superficie de la base aun no fijada. Por favor siga el manual, capitulo Primeros Pasos, Calibracion primera capa."
-
-# MSG_FS_CONTINUE c=5
-#: messages.c:132
-msgid "Cont."
-msgstr ""
-
-# MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:5125
-msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
-msgstr "Quieres repetir el ultimo paso para reajustar la distancia boquilla-base?"
-
-# MSG_EXTRUDER_CORRECTION c=13
-#: ultralcd.cpp:5194
-msgid "E-correct:"
-msgstr "Corregir-E:"
-
-# MSG_EJECT_FILAMENT c=17 r=1
-#: messages.c:49
-msgid "Eject filament"
-msgstr "Expulsar fil."
-
-# MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1416
-msgid "Ejecting filament"
-msgstr "Expulsando filamento"
-
-# MSG_SELFTEST_ENDSTOP_NOTHIT c=20
-#: ultralcd.cpp:8293
-msgid "Endstop not hit"
-msgstr "Endstop no alcanzado"
-
-# MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:8287
-msgid "Endstop"
-msgstr ""
-
-# MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:8275
-msgid "Endstops"
-msgstr ""
-
-# MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6998
-msgid "Error - static memory has been overwritten"
-msgstr "Error - se ha sobre-escrito la memoria estatica"
-
-# MSG_CUT_FILAMENT c=16
-#: messages.c:50
-msgid "Cut filament"
-msgstr "Cortar filament"
-
-# MSG_CUTTER c=9
-#: messages.c:109
-msgid "Cutter"
-msgstr "Cuchillo"
-
-#  c=18
-#: mmu.cpp:1388
-msgid "Cutting filament"
-msgstr "Corte de filament"
-
-# MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4458
-msgid "ERROR: Filament sensor is not responding, please check connection."
-msgstr "ERROR: El sensor de filamento no responde, por favor comprueba la conexion."
-
-# MSG_DIM c=6
-#: messages.c:139
-msgid "Dim"
-msgstr ""
-
-# MSG_ERROR
-#: messages.c:25
-msgid "ERROR:"
-msgstr ""
-
-# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:8686
-msgid "Extruder fan:"
-msgstr "Vent.extrusor:"
-
-# MSG_INFO_EXTRUDER c=18
-#: ultralcd.cpp:2211
-msgid "Extruder info"
-msgstr "Info. del extrusor"
-
-# MSG_MOVE_E
-#: messages.c:26
-msgid "Extruder"
-msgstr "Extruir"
-
-# 
-#: ultralcd.cpp:6985
-msgid "Fail stats MMU"
-msgstr "Estadistica de fallos MMU"
-
-# MSG_FSENSOR_AUTOLOAD c=13
-#: messages.c:40
-msgid "F. autoload"
-msgstr "Autocarg.fil."
-
-# 
-#: ultralcd.cpp:6982
-msgid "Fail stats"
-msgstr "Estadistica de fallos"
-
-# MSG_FAN_SPEED c=14
-#: messages.c:28
-msgid "Fan speed"
-msgstr "Velocidad Vent"
-
-# MSG_SELFTEST_FAN c=20
-#: messages.c:74
-msgid "Fan test"
-msgstr "Test ventiladores"
-
-# MSG_FANS_CHECK
-#: ultralcd.cpp:5751
-msgid "Fans check"
-msgstr "Comprob.vent"
-
-# MSG_FSENSOR
-#: messages.c:41
-msgid "Fil. sensor"
-msgstr "Sensor Fil."
-
-#  c=14
-#: ultralcd.cpp:1784
-msgid "Filam. runouts"
-msgstr "Filam. acabado"
-
-# MSG_FILAMENT_CLEAN c=20 r=2
-#: messages.c:29
-msgid "Filament extruding & with correct color?"
-msgstr "Es nitido el color nuevo?"
-
-# MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2705
-msgid "Filament not loaded"
-msgstr "Fil. no introducido"
-
-# MSG_FILAMENT_SENSOR c=20
-#: messages.c:80
-msgid "Filament sensor"
-msgstr "Sensor de filamento"
-
-# MSG_FILAMENT_USED c=19
-#: ultralcd.cpp:2869
-msgid "Filament used"
-msgstr "Filamento usado"
-
-# MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2870
-msgid "Print time"
-msgstr "Tiempo de imp.:"
-
-# MSG_FS_ACTION c=10
-#: messages.c:131
-msgid "FS Action"
-msgstr "FS accion"
-
-#  c=18
-#: Marlin_main.cpp:9512
-msgid "FS v0.4 or newer"
-msgstr "FS v0.4 o +nueva"
-
-# MSG_FILE_INCOMPLETE c=20 r=3
-#: ultralcd.cpp:8814
-msgid "File incomplete. Continue anyway?"
-msgstr "Archivo incompleto. ?Continuar de todos modos?"
-
-# MSG_FINISHING_MOVEMENTS c=20
-#: messages.c:37
-msgid "Finishing movements"
-msgstr "Term. movimientos"
-
-# MSG_V2_CALIBRATION c=18
-#: messages.c:103
-msgid "First layer cal."
-msgstr "Cal. primera cap."
-
-# MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:5046
-msgid "First, I will run the selftest to check most common assembly problems."
-msgstr "Primero, hare el Selftest para comprobar los problemas de montaje mas comunes."
-
-# 
-#: mmu.cpp:727
-msgid "Fix the issue and then press button on MMU unit."
-msgstr "Corrige el problema y pulsa el boton en la unidad MMU."
-
-# MSG_FLOW
-#: ultralcd.cpp:7125
-msgid "Flow"
-msgstr "Flujo"
-
-# MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2156
-msgid "forum.prusa3d.com"
-msgstr ""
-
-# MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:71
-msgid "Front print fan?"
-msgstr "Vent. frontal?"
-
-# MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3266
-msgid "Front side[um]"
-msgstr "Frontal [um]"
-
-# MSG_SELFTEST_FANS
-#: ultralcd.cpp:8333
-msgid "Front/left fans"
-msgstr "Ventiladores frontal/izquierdo"
-
-# MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:8263
-msgid "Heater/Thermistor"
-msgstr "Calentador/Termistor"
-
-# MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:9440
-msgid "Heating disabled by safety timer."
-msgstr "Calentadores desactivados por el temporizador de seguridad."
-
-# MSG_HEATING_COMPLETE c=20
-#: messages.c:43
-msgid "Heating done."
-msgstr "Calentando acabado."
-
-# MSG_HEATING
-#: messages.c:42
-msgid "Heating"
-msgstr "Calentando..."
-
-# MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:5025
-msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
-msgstr "Hola, soy tu impresora Original Prusa i3. Quieres que te guie a traves de la configuracion?"
-
-# MSG_PRUSA3D_HOWTO
-#: ultralcd.cpp:2157
-msgid "howto.prusa3d.com"
-msgstr ""
-
-# MSG_FILAMENTCHANGE
-#: messages.c:34
-msgid "Change filament"
-msgstr "Cambiar filamento"
-
-# MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2620
-msgid "Change success!"
-msgstr "Cambio correcto"
-
-# MSG_CORRECTLY c=20
-#: ultralcd.cpp:2697
-msgid "Changed correctly?"
-msgstr "Cambio correcto?"
-
-# MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:77
-msgid "Checking bed     "
-msgstr "Control base cal."
-
-# MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:8668
-msgid "Checking endstops"
-msgstr "Control endstops"
-
-# MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:8674
-msgid "Checking hotend  "
-msgstr "Control fusor"
-
-# MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:78
-msgid "Checking sensors "
-msgstr "Comprobando sensores"
-
-# MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:7482
-msgid "Checking X axis  "
-msgstr "Control sensor X"
-
-# MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:7491
-msgid "Checking Y axis  "
-msgstr "Control sensor Y"
-
-# MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:8671
-msgid "Checking Z axis  "
-msgstr "Control sensor Z"
-
-# MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:45
-msgid "Choose extruder:"
-msgstr "Elegir extrusor:"
-
-# MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:46
-msgid "Choose filament:"
-msgstr "Elije filamento:"
-
-# MSG_FILAMENT c=17 r=1
-#: messages.c:27
-msgid "Filament"
-msgstr "Filamento"
-
-# MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:5055
-msgid "I will run xyz calibration now. It will take approx. 12 mins."
-msgstr "Hare la calibracion XYZ. Tardara 12 min. aproximadamente."
-
-# MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:5063
-msgid "I will run z calibration now."
-msgstr "Voy a hacer Calibracion Z ahora."
-
-# MSG_WATCH
-#: messages.c:97
-msgid "Info screen"
-msgstr "Monitorizar"
-
-# MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2605
-msgid "Insert filament"
-msgstr "Introducir filamento"
-
-# MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4835
-msgid "Is filament loaded?"
-msgstr "Esta el filamento cargado?"
-
-# MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:90
-msgid "Is steel sheet on heatbed?"
-msgstr "?Esta colocada la lamina sobre la base"
-
-# 
-#: ultralcd.cpp:1727
-msgid "Last print failures"
-msgstr "Ultimas impresiones fallidas"
-
-# 
-#: ultralcd.cpp:5133
-msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
-msgstr "Si tienes planchas de acero adicionales, calibra sus ajustes en Ajustes - Ajustes HW - Planchas acero."
-
-# 
-#: ultralcd.cpp:1704
-msgid "Last print"
-msgstr "Ultima impresion"
-
-# MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:72
-msgid "Left hotend fan?"
-msgstr "Vent. izquierdo?"
-
-# 
-#: ultralcd.cpp:2993
-msgid "Left"
-msgstr "Izquierda"
-
-# MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3264
-msgid "Left side [um]"
-msgstr "Izquierda [um]"
-
-# 
-#: ultralcd.cpp:5766
-msgid "Lin. correction"
-msgstr "Correccion de Linealidad"
-
-# MSG_BABYSTEP_Z
-#: messages.c:12
-msgid "Live adjust Z"
-msgstr "Micropaso Eje Z"
-
-#  c=20 r=6
-#: ultralcd.cpp:7527
-msgid "Insert the filament (do not load it) into the extruder and then press the knob."
-msgstr "Inserte el filamento (no lo cargue) en el extrusor y luego presione el dial."
-
-# MSG_LOAD_FILAMENT c=17
-#: messages.c:47
-msgid "Load filament"
-msgstr "Introducir filam."
-
-# MSG_LOADING_COLOR
-#: ultralcd.cpp:2645
-msgid "Loading color"
-msgstr "Cambiando color"
-
-# MSG_LOADING_FILAMENT c=20
-#: messages.c:48
-msgid "Loading filament"
-msgstr "Introduciendo filam."
-
-# MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:8317
-msgid "Loose pulley"
-msgstr "Polea suelta"
-
-# 
-#: ultralcd.cpp:6944
-msgid "Load to nozzle"
-msgstr "Cargar a la boquilla"
-
-# MSG_M117_V2_CALIBRATION c=25
-#: messages.c:51
-msgid "M117 First layer cal."
-msgstr "M117 Cal. primera cap."
-
-# MSG_MAIN
-#: messages.c:52
-msgid "Main"
-msgstr "Menu principal"
-
-# MSG_BL_HIGH c=12
-#: messages.c:135
-msgid "Level Bright"
-msgstr "Valor brill."
-
-# MSG_BL_LOW c=12
-#: messages.c:136
-msgid "Level Dimmed"
-msgstr ""
-
-# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:55
-msgid "Measuring reference height of calibration point"
-msgstr "Midiendo altura del punto de calibracion"
-
-# MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5856
-msgid "Mesh Bed Leveling"
-msgstr "Nivelacion Mesh Level"
-
-# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:765
-msgid "MMU OK. Resuming position..."
-msgstr "MMU OK. Restaurando posicion..."
-
-# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:758
-msgid "MMU OK. Resuming temperature..."
-msgstr "MMU OK. Restaurando temperatura..."
-
-# 
-#: ultralcd.cpp:3034
-msgid "Measured skew"
-msgstr "Desviacion med:"
-
-# 
-#: ultralcd.cpp:1728
-msgid "MMU fails"
-msgstr "Fallos MMU"
-
-# 
-#: mmu.cpp:1588
-msgid "MMU load failed     "
-msgstr "Carga MMU fallida"
-
-# 
-#: ultralcd.cpp:1729
-msgid "MMU load fails"
-msgstr "Carga MMU falla"
-
-# MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:776
-msgid "MMU OK. Resuming..."
-msgstr "MMU OK. Resumiendo..."
-
-# MSG_MODE
-#: messages.c:84
-msgid "Mode"
-msgstr "Modo"
-
-#  c=20 r=3
-#: Marlin_main.cpp:879
-msgid "MK3 firmware detected on MK3S printer"
-msgstr "Firmware MK3 detectado en impresora MK3S"
-
-# MSG_NORMAL
-#: messages.c:88
-msgid "Normal"
-msgstr ""
-
-# MSG_SILENT
-#: messages.c:87
-msgid "Silent"
-msgstr "Silencio"
-
-# 
-#: mmu.cpp:722
-msgid "MMU needs user attention."
-msgstr "MMU necesita atencion del usuario."
-
-# 
-#: ultralcd.cpp:1755
-msgid "MMU power fails"
-msgstr "Fallo de energia en MMU"
-
-# MSG_STEALTH
-#: messages.c:89
-msgid "Stealth"
-msgstr "Silencio"
-
-# MSG_AUTO_POWER
-#: messages.c:86
-msgid "Auto power"
-msgstr "Fuerza auto"
-
-# MSG_HIGH_POWER
-#: messages.c:85
-msgid "High power"
-msgstr "Rend.pleno"
-
-# 
-#: ultralcd.cpp:2186
-msgid "MMU2 connected"
-msgstr "MMU2 conectado"
-
-# MSG_SELFTEST_MOTOR
-#: messages.c:79
-msgid "Motor"
-msgstr ""
-
-# MSG_MOVE_AXIS
-#: ultralcd.cpp:5741
-msgid "Move axis"
-msgstr "Mover ejes"
-
-# MSG_MOVE_X
-#: ultralcd.cpp:4361
-msgid "Move X"
-msgstr "Mover X"
-
-# MSG_MOVE_Y
-#: ultralcd.cpp:4362
-msgid "Move Y"
-msgstr "Mover Y"
-
-# MSG_MOVE_Z
-#: ultralcd.cpp:4363
-msgid "Move Z"
-msgstr "Mover Z"
-
-# MSG_NO_MOVE
-#: Marlin_main.cpp:5541
-msgid "No move."
-msgstr "Sin movimiento"
-
-# MSG_NO_CARD
-#: ultralcd.cpp:6911
-msgid "No SD card"
-msgstr "No hay tarjeta SD"
-
-# MSG_NA
-#: messages.c:107
-msgid "N/A"
-msgstr "N/A"
-
-# MSG_NO
-#: messages.c:58
-msgid "No"
-msgstr ""
-
-# MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:8265
-msgid "Not connected"
-msgstr "No hay conexion "
-
-# 
-#: util.cpp:293
-msgid "New firmware version available:"
-msgstr "Nuevo firmware disponible:"
-
-# MSG_SELFTEST_FAN_NO c=19
-#: messages.c:75
-msgid "Not spinning"
-msgstr "Ventilador no gira"
-
-# MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4946
-msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
-msgstr "Voy a calibrar la distancia entre la punta de la boquilla y la superficie de la base."
-
-# MSG_WIZARD_WILL_PREHEAT c=20 r=4
-#: ultralcd.cpp:5071
-msgid "Now I will preheat nozzle for PLA."
-msgstr "Ahora precalentare la boquilla para PLA."
-
-# MSG_NOZZLE
-#: messages.c:59
-msgid "Nozzle"
-msgstr "Boquilla"
-
-# MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
-#: Marlin_main.cpp:1518
-msgid "Old settings found. Default PID, Esteps etc. will be set."
-msgstr "Se han encontrado ajustes anteriores. Se ajustara el PID, los pasos del extrusor, etc"
-
-# 
-#: ultralcd.cpp:5062
-msgid "Now remove the test print from steel sheet."
-msgstr "Ahora retira la prueba de la lamina de acero."
-
-# 
-#: ultralcd.cpp:1654
-msgid "Nozzle FAN"
-msgstr "Vent. capa"
-
-# MSG_PAUSE_PRINT
-#: ultralcd.cpp:6875
-msgid "Pause print"
-msgstr "Pausar impresion"
-
-# MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1539
-msgid "PID cal.           "
-msgstr "Cal. PID "
-
-# MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1545
-msgid "PID cal. finished"
-msgstr "Cal. PID terminada"
-
-# MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5862
-msgid "PID calibration"
-msgstr "Calibracion PID"
-
-# MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:896
-msgid "PINDA Heating"
-msgstr "Calentando PINDA"
-
-# MSG_PAPER c=20 r=10
-#: messages.c:60
-msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
-msgstr "Colocar una hoja de papel sobre la superficie de impresion durante la calibracion de los primeros 4 puntos. Si la boquilla mueve el papel, apagar impresora inmediatamente."
-
-# MSG_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:5128
-msgid "Please clean heatbed and then press the knob."
-msgstr "Limpia la superficie de la base, por favor, y haz clic"
-
-# MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
-#: messages.c:21
-msgid "Please clean the nozzle for calibration. Click when done."
-msgstr "Limpia boquilla para calibracion. Click cuando acabes."
-
-# MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:8257
-msgid "Please check :"
-msgstr "Controla :"
-
-# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:98
-msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
-msgstr "Lee el manual y resuelve el problema. Despues, reinicia la impresora y continua con el Wizard"
-
-# MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3138
-msgid "Please open idler and remove filament manually."
-msgstr "Por favor abate el rodillo de empuje (idler) y retira el filamento manualmente."
-
-# MSG_PLACE_STEEL_SHEET c=20 r=4
-#: messages.c:61
-msgid "Please place steel sheet on heatbed."
-msgstr "Por favor coloca la chapa de acero en la base calefactable."
-
-# MSG_PRESS_TO_UNLOAD c=20 r=4
-#: messages.c:64
-msgid "Please press the knob to unload filament"
-msgstr "Por favor, pulsa el dial para descargar el filamento"
-
-# MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:66
-msgid "Please pull out filament immediately"
-msgstr "Por favor retire el filamento de inmediato"
-
-# MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1422
-msgid "Please remove filament and then press the knob."
-msgstr "Por favor quite el filamento y luego presione el dial."
-
-# MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:70
-msgid "Please remove steel sheet from heatbed."
-msgstr "Por favor retire la chapa de acero de la base calefactable."
-
-# MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4583
-msgid "Please run XYZ calibration first."
-msgstr "Por favor realiza la calibracion XYZ primero."
-
-# MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1341
-msgid "Please update firmware in your MMU2. Waiting for reset."
-msgstr "Por favor actualice el firmware en tu MMU2. Esperando el reseteo."
-
-# MSG_PLEASE_WAIT c=20
-#: messages.c:62
-msgid "Please wait"
-msgstr "Por Favor Espere"
-
-# 
-#: ultralcd.cpp:5061
-msgid "Please remove shipping helpers first."
-msgstr "Por favor retira los soportes de envio primero."
-
-# MSG_PREHEAT_NOZZLE c=20
-#: messages.c:63
-msgid "Preheat the nozzle!"
-msgstr "Precalienta extrusor"
-
-# MSG_PREHEAT
-#: ultralcd.cpp:6853
-msgid "Preheat"
-msgstr "Precalentar"
-
-# MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:100
-msgid "Preheating nozzle. Please wait."
-msgstr "Precalentando nozzle. Espera por favor."
-
-#  c=14
-#: ultralcd.cpp:1959
-msgid "PINDA"
-msgstr ""
-
-# 
-#: util.cpp:297
-msgid "Please upgrade."
-msgstr "Actualize por favor"
-
-# MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:11526
-msgid "Press knob to preheat nozzle and continue."
-msgstr "Pulsa el dial para precalentar la boquilla y continue."
-
-# MSG_FS_PAUSE c=5
-#: fsensor.cpp:710
-msgid "Pause"
-msgstr "Pausa"
-
-# 
-#: ultralcd.cpp:1783
-msgid "Power failures"
-msgstr "Cortes de energia"
-
-# MSG_PRINT_ABORTED c=20
-#: messages.c:65
-msgid "Print aborted"
-msgstr "Impresion cancelada"
-
-#  c=20
-#: ultralcd.cpp:2442
-msgid "Preheating to load"
-msgstr "Precalent. cargar"
-
-#  c=20
-#: ultralcd.cpp:2446
-msgid "Preheating to unload"
-msgstr "Precalent. descargar"
-
-# MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:8689
-msgid "Print fan:"
-msgstr "Vent.fusor:"
-
-# MSG_CARD_MENU
-#: messages.c:20
-msgid "Print from SD"
-msgstr "Menu tarjeta SD"
-
-# 
-#: ultralcd.cpp:2289
-msgid "Press the knob"
-msgstr "Pulsa el dial"
-
-# MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1118
-msgid "Print paused"
-msgstr "Impresion en pausa"
-
-# 
-#: mmu.cpp:726
-msgid "Press the knob to resume nozzle temperature."
-msgstr "Presiona el dial para continuar con la temperatura de la boquilla."
-
-# MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
-#: messages.c:38
-msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
-msgstr "Impresora no esta calibrada todavia. Por favor usa el manual capitulo Primeros pasos Calibracion flujo."
-
-# 
-#: ultralcd.cpp:1655
-msgid "Print FAN"
-msgstr "Vent. extr"
-
-# 
-#: ultralcd.cpp:4926
-msgid "Please insert filament into the extruder, then press the knob to load it."
-msgstr "Por favor, coloca el filamento en el extrusor, luego presiona el dial para cargarlo."
-
-# 
-#: ultralcd.cpp:4921
-msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
-msgstr "Por favor, coloca el filamento en el primer tubo de la MMU, luego pulsa el dial para cargarlo."
-
-# 
-#: ultralcd.cpp:4843
-msgid "Please load filament first."
-msgstr "Por favor, cargar primero el filamento. "
-
-# MSG_PRUSA3D
-#: ultralcd.cpp:2155
-msgid "prusa3d.com"
-msgstr "prusa3d.es"
-
-# MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3267
-msgid "Rear side [um]"
-msgstr "Trasera [um]"
-
-#  c=20 r=4
-#: ultralcd.cpp:7549
-msgid "Please unload the filament first, then repeat this action."
-msgstr "Primero descargue el filamento, luego repita esta accion."
-
-# MSG_RECOVERING_PRINT c=20
-#: Marlin_main.cpp:10883
-msgid "Recovering print    "
-msgstr "Recuper. impresion  "
-
-# MSG_REMOVE_OLD_FILAMENT c=20 r=5
-#: mmu.cpp:833
-msgid "Remove old filament and press the knob to start loading new filament."
-msgstr "Retire el filamento viejo y presione el dial para comenzar a cargar el nuevo filamento."
-
-#  c=20
-#: 
-msgid "Prusa i3 MK3S OK."
-msgstr ""
-
-# MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5867
-msgid "Reset XYZ calibr."
-msgstr ""
-
-# MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3268
-msgid "Reset"
-msgstr ""
-
-# MSG_RESUME_PRINT
-#: ultralcd.cpp:6861
-msgid "Resume print"
-msgstr "Reanudar impres."
-
-# MSG_RESUMING_PRINT c=20
-#: messages.c:69
-msgid "Resuming print"
-msgstr "Continuan. impresion"
-
-# MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3265
-msgid "Right side[um]"
-msgstr "Derecha [um]"
-
-# MSG_RPI_PORT
-#: messages.c:123
-msgid "RPi port"
-msgstr "Puerto RPi"
-
-# MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4864
-msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
-msgstr "Ejecutar el Wizard borrara los valores de calibracion actuales y comenzara de nuevo. Continuar?"
-
-# MSG_SD_CARD
-#: messages.c:118
-msgid "SD card"
-msgstr "Tarj. SD"
-
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
-#: messages.c:119
-msgid "FlashAir"
-msgstr ""
-
-# 
-#: ultralcd.cpp:2994
-msgid "Right"
-msgstr "Derecha"
-
-# MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: messages.c:35
-msgid "Searching bed calibration point"
-msgstr "Buscando punto de calibracion base"
-
-# MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5779
-msgid "Select language"
-msgstr "Cambiar el idioma"
-
-# MSG_SELFTEST_OK
-#: ultralcd.cpp:7812
-msgid "Self test OK"
-msgstr ""
-
-# MSG_SELFTEST_START c=20
-#: ultralcd.cpp:7582
-msgid "Self test start  "
-msgstr "Iniciar Selftest"
-
-# MSG_SELFTEST
-#: ultralcd.cpp:5843
-msgid "Selftest         "
-msgstr ""
-
-# MSG_SELFTEST_ERROR
-#: ultralcd.cpp:8255
-msgid "Selftest error !"
-msgstr "Error Selftest !"
-
-# MSG_SELFTEST_FAILED c=20
-#: messages.c:73
-msgid "Selftest failed  "
-msgstr "Fallo Selftest"
-
-# MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1550
-msgid "Selftest will be run to calibrate accurate sensorless rehoming."
-msgstr "Se realizara el auto-test para calibrar con precision la vuelta a la posicion inicial sin sensores."
-
-# 
-#: ultralcd.cpp:5102
-msgid "Select nozzle preheat temperature which matches your material."
-msgstr "Selecciona la temperatura para precalentar la boquilla que se ajuste a tu material. "
-
-# MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3286
-msgid "Set temperature:"
-msgstr "Establecer temp.:"
-
-#  c=20
-#: 
-msgid "Prusa i3 MK2.5 OK."
-msgstr ""
-
-#  c=20
-#: 
-msgid "Prusa i3 MK2.5S OK."
-msgstr ""
-
-#  c=20
-#: 
-msgid "Prusa i3 MK3 OK."
-msgstr ""
-
-# MSG_SETTINGS
-#: messages.c:82
-msgid "Settings"
-msgstr "Configuracion"
-
-# MSG_SHOW_END_STOPS c=18
-#: ultralcd.cpp:5864
-msgid "Show end stops"
-msgstr "Mostrar endstops"
-
-# 
-#: ultralcd.cpp:4008
-msgid "Sensor state"
-msgstr "Estado del sensor"
-
-# MSG_FILE_CNT c=20 r=6
-#: cardreader.cpp:738
-msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
-msgstr "Algunos archivos no se ordenaran. Maximo 100 archivos por carpeta para ordenar. "
-
-# MSG_SORT
-#: messages.c:120
-msgid "Sort"
-msgstr "Ordenar"
-
-# MSG_NONE
-#: messages.c:110
-msgid "None"
-msgstr "Ninguno"
-
-# MSG_SORT_TIME
-#: messages.c:121
-msgid "Time"
-msgstr "Fecha"
-
-# 
-#: ultralcd.cpp:3037
-msgid "Severe skew:"
-msgstr "Incl.severa:"
-
-# MSG_SORT_ALPHA
-#: messages.c:122
-msgid "Alphabet"
-msgstr "Alfabet"
-
-# MSG_SORTING c=20 r=1
-#: cardreader.cpp:745
-msgid "Sorting files"
-msgstr "Ordenando archivos"
-
-# MSG_SOUND_LOUD
-#: messages.c:125
-msgid "Loud"
-msgstr "Alto"
-
-# 
-#: ultralcd.cpp:3036
-msgid "Slight skew:"
-msgstr "Liger.incl.:"
-
-# MSG_SOUND
-#: messages.c:124
-msgid "Sound"
-msgstr "Sonido"
-
-#  c=7
-#: ultralcd.cpp:1822
-msgid "Runouts"
-msgstr ""
-
-# 
-#: Marlin_main.cpp:5101
-msgid "Some problem encountered, Z-leveling enforced ..."
-msgstr "Problema encontrado, nivelacion Z forzosa ..."
-
-# MSG_SOUND_ONCE
-#: messages.c:126
-msgid "Once"
-msgstr "Una vez"
-
-# MSG_SPEED
-#: ultralcd.cpp:7119
-msgid "Speed"
-msgstr "Velocidad"
-
-# MSG_SELFTEST_FAN_YES c=19
-#: messages.c:76
-msgid "Spinning"
-msgstr "Ventilador girando"
-
-# MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4596
-msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
-msgstr "Se necesita una temperatura ambiente ente 21 y 26C y un soporte rigido."
-
-# MSG_STATISTICS
-#: ultralcd.cpp:6978
-msgid "Statistics  "
-msgstr "Estadisticas "
-
-# MSG_STOP_PRINT
-#: messages.c:91
-msgid "Stop print"
-msgstr "Detener impresion"
-
-# MSG_STOPPED
-#: messages.c:92
-msgid "STOPPED. "
-msgstr "PARADA"
-
-# MSG_SUPPORT
-#: ultralcd.cpp:6987
-msgid "Support"
-msgstr "Soporte"
-
-# MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:8335
-msgid "Swapped"
-msgstr "Intercambiado"
-
-# 
-#: ultralcd.cpp:4814
-msgid "Select filament:"
-msgstr "Selecciona filamento:"
-
-# MSG_TEMP_CALIBRATION c=14
-#: messages.c:93
-msgid "Temp. cal."
-msgstr "Cal. temp."
-
-# 
-#: ultralcd.cpp:4955
-msgid "Select temperature which matches your material."
-msgstr "Selecciona la temperatura adecuada a tu material."
-
-# MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5873
-msgid "Temp. calibration"
-msgstr "Calibracion temp."
-
-# MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3933
-msgid "Temperature calibration failed"
-msgstr "Fallo de la calibracion de temperatura"
-
-# MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:94
-msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
-msgstr "Calibracion temperatura terminada. Haz clic para continuar."
-
-#  c=20 r=3
-#: ultralcd.cpp:7554
-msgid "Sensor verified, remove the filament now."
-msgstr "Sensor verificado, retire el filamento ahora."
-
-# MSG_TEMPERATURE
-#: ultralcd.cpp:5739
-msgid "Temperature"
-msgstr "Temperatura"
-
-# MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2218
-msgid "Temperatures"
-msgstr "Temperaturas"
-
-# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
-#: messages.c:39
-msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
-msgstr "Todavia es necesario hacer una calibracion Z. Por favor siga el manual, capitulo Primeros pasos, seccion Calibracion del flujo."
-
-# 
-#: ultralcd.cpp:2891
-msgid "Total filament"
-msgstr "Filamento total"
-
-# 
-#: ultralcd.cpp:2892
-msgid "Total print time"
-msgstr "Tiempo total"
-
-# MSG_TUNE
-#: ultralcd.cpp:6850
-msgid "Tune"
-msgstr "Ajustar"
-
-# 
-#: 
-msgid "Unload"
-msgstr "Descargar"
-
-# 
-#: ultralcd.cpp:1752
-msgid "Total failures"
-msgstr "Fallos totales"
-
-# 
-#: ultralcd.cpp:2296
-msgid "to load filament"
-msgstr "para cargar el filamento"
-
-# 
-#: ultralcd.cpp:2300
-msgid "to unload filament"
-msgstr "para descargar el filamento"
-
-# MSG_UNLOAD_FILAMENT c=17
-#: messages.c:95
-msgid "Unload filament"
-msgstr "Soltar filamento"
-
-# MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:96
-msgid "Unloading filament"
-msgstr "Soltando filamento"
-
-# 
-#: ultralcd.cpp:1705
-msgid "Total"
-msgstr ""
-
-# MSG_USED c=19 r=1
-#: ultralcd.cpp:6001
-msgid "Used during print"
-msgstr "Usado en impresion"
-
-# MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2221
-msgid "Voltages"
-msgstr "Voltajes"
-
-# 
-#: ultralcd.cpp:2194
-msgid "unknown"
-msgstr "desconocido"
-
-# MSG_USERWAIT
-#: Marlin_main.cpp:5511
-msgid "Wait for user..."
-msgstr "Esperando ordenes"
-
-# MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3434
-msgid "Waiting for nozzle and bed cooling"
-msgstr "Esperando enfriamiento de la base y extrusor."
-
-# MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3395
-msgid "Waiting for PINDA probe cooling"
-msgstr "Esperando a que se enfrie la sonda PINDA"
-
-# 
-#: 
-msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU tube. Use eject if it is hidden in tube."
-msgstr "Usa unload para retirar el filamento 1 si sobresale por fuera de la parte trasera del tubo MMU. Usa Expulsar si esta escondido dentro del tubo"
-
-# MSG_CHANGED_BOTH c=20 r=4
-#: Marlin_main.cpp:1510
-msgid "Warning: both printer type and motherboard type changed."
-msgstr "Aviso: tanto el tipo de impresora como el tipo de la placa han cambiado."
-
-# MSG_CHANGED_MOTHERBOARD c=20 r=4
-#: Marlin_main.cpp:1502
-msgid "Warning: motherboard type changed."
-msgstr "Cuidado: el tipo de placa ha cambiado."
-
-# MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1506
-msgid "Warning: printer type changed."
-msgstr "Cuidado: Ha cambiado el tipo de impresora."
-
-# MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3128
-msgid "Was filament unload successful?"
-msgstr "?Se cargocon exito el filamento?"
-
-# MSG_SELFTEST_WIRINGERROR
-#: messages.c:81
-msgid "Wiring error"
-msgstr "Error de conexion"
-
-# MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5834
-msgid "Wizard"
-msgstr ""
-
-# MSG_XYZ_DETAILS c=18
-#: ultralcd.cpp:2210
-msgid "XYZ cal. details"
-msgstr "Detalles cal. XYZ"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
-#: messages.c:18
-msgid "XYZ calibration failed. Please consult the manual."
-msgstr "Calibracion XYZ fallada. Consulta el manual por favor."
-
-# MSG_YES
-#: messages.c:102
-msgid "Yes"
-msgstr "Si"
-
-# MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:101
-msgid "You can always resume the Wizard from Calibration -> Wizard."
-msgstr "Siempre puedes acceder al asistente desde Calibracion -> Wizard"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
-#: ultralcd.cpp:3904
-msgid "XYZ calibration all right. Skew will be corrected automatically."
-msgstr "Calibracion XYZ correcta. La inclinacion se corregira automaticamente."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
-#: ultralcd.cpp:3901
-msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
-msgstr "Calibracion XYZ correcta. Los ejes X / Y estan ligeramente inclinados. Buen trabajo!"
-
-# MSG_TIMEOUT c=12
-#: messages.c:137
-msgid "Timeout"
-msgstr "Expirar"
-
-# MSG_X_CORRECTION c=13
-#: ultralcd.cpp:5190
-msgid "X-correct:"
-msgstr "Corregir-X:"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3898
-msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
-msgstr "Calibracion XYZ ok. Ejes X/Y perpendiculares. Enhorabuena!"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
-#: ultralcd.cpp:3882
-msgid "XYZ calibration compromised. Front calibration points not reachable."
-msgstr "Calibrazion XYZ comprometida. Puntos frontales no alcanzables."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3885
-msgid "XYZ calibration compromised. Right front calibration point not reachable."
-msgstr "Calibrazion XYZ comprometida. Punto frontal derecho no alcanzable."
-
-# MSG_LOAD_ALL c=17
-#: ultralcd.cpp:6261
-msgid "Load all"
-msgstr "Intr. todos fil."
-
-# 
-#: ultralcd.cpp:3864
-msgid "XYZ calibration failed. Bed calibration point was not found."
-msgstr "Calibracion XYZ fallada. Puntos de calibracion en la base no encontrados."
-
-# 
-#: ultralcd.cpp:3870
-msgid "XYZ calibration failed. Front calibration points not reachable."
-msgstr "Calibracion XYZ fallada. Puntos frontales no alcanzables."
-
-# 
-#: ultralcd.cpp:3873
-msgid "XYZ calibration failed. Right front calibration point not reachable."
-msgstr "Calibracion XYZ fallad. Punto frontal derecho no alcanzable."
-
-# 
-#: ultralcd.cpp:2991
-msgid "Y distance from min"
-msgstr "Distancia en Y desde el min"
-
-# 
-#: ultralcd.cpp:4958
-msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
-msgstr "La impresora comenzara a imprimir una linea en zig-zag. Gira el dial hasta que la linea alcance la altura optima. Mira las fotos del manual (Capitulo de calibracion)."
-
-#  c=20 r=5
-#: ultralcd.cpp:7558
-msgid "Verification failed, remove the filament and try again."
-msgstr "La verificacion fallo, retire el filamento e intente nuevamente."
-
-# MSG_Y_CORRECTION c=13
-#: ultralcd.cpp:5191
-msgid "Y-correct:"
-msgstr "Corregir-Y:"
-
-# MSG_OFF
-#: messages.c:105
-msgid "Off"
-msgstr "Ina"
-
-# MSG_ON
-#: messages.c:106
-msgid "On"
-msgstr "Act"
-
-# 
-#: messages.c:53
-msgid "Back"
-msgstr "atras"
-
-# 
-#: ultralcd.cpp:5724
-msgid "Checks"
-msgstr "Comprobaciones"
-
-# 
-#: ultralcd.cpp:8349
-msgid "False triggering"
-msgstr "Falsa activacion"
-
-# 
-#: ultralcd.cpp:4013
-msgid "FINDA:"
-msgstr "FINDA:"
-
-# MSG_FIRMWARE
-#: language.h:23
-msgid "Firmware"
-msgstr ""
-
-# MSG_STRICT
-#: messages.c:112
-msgid "Strict"
-msgstr "Estrict"
-
-# MSG_WARN
-#: messages.c:111
-msgid "Warn"
-msgstr "Aviso"
-
-# 
-#: messages.c:83
-msgid "HW Setup"
-msgstr "Configuracion HW"
-
-# 
-#: ultralcd.cpp:4017
-msgid "IR:"
-msgstr ""
-
-# MSG_MAGNETS_COMP
-#: messages.c:130
-msgid "Magnets comp."
-msgstr "Comp. imanes"
-
-# MSG_MESH
-#: messages.c:128
-msgid "Mesh"
-msgstr "Malla"
-
-# 
-#: ultralcd.cpp:5763
-msgid "Mesh bed leveling"
-msgstr "Nivelacion Malla Base"
-
-# 
-#: Marlin_main.cpp:872
-msgid "MK3S firmware detected on MK3 printer"
-msgstr "Firmware MK3S detectado en impresora MK3"
-
-# MSG_MMU_MODE
-#: messages.c:117
-msgid "MMU Mode"
-msgstr "Modo MMU"
-
-# 
-#: ultralcd.cpp:4494
-msgid "Mode change in progress ..."
-msgstr "Cambio de modo progresando ..."
-
-# MSG_MODEL
-#: messages.c:113
-msgid "Model"
-msgstr "Modelo"
-
-# MSG_NOZZLE_DIAMETER
-#: messages.c:116
-msgid "Nozzle d."
-msgstr "Diam. nozzl"
-
-# 
-#: util.cpp:514
-msgid "G-code sliced for a different level. Continue?"
-msgstr "Codigo G laminado para un nivel diferente. ?Continuar?"
-
-# 
-#: util.cpp:520
-msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
-msgstr "Codigo G laminado para un nivel diferente. Por favor relamina el modelo de nuevo. Impresion cancelada."
-
-# 
-#: util.cpp:431
-msgid "G-code sliced for a different printer type. Continue?"
-msgstr "Codigo G laminado para un tipo de impresora diferente. ?Continuar?"
-
-# 
-#: util.cpp:437
-msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
-msgstr "Codigo G laminado para una impresora diferente. Por favor relamina el modelo de nuevo. Impresion cancelada."
-
-# 
-#: util.cpp:481
-msgid "G-code sliced for a newer firmware. Continue?"
-msgstr "Codigo G laminado para nuevo firmware. ?Continuar?"
-
-# 
-#: util.cpp:487
-msgid "G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
-msgstr "Codigo G laminado para nuevo firmware. Por favor actualiza el firmware. Impresion cancelada."
-
-# 
-#: ultralcd.cpp:4009
-msgid "PINDA:"
-msgstr "PINDA:"
-
-#  c=20
-#: ultralcd.cpp:2452
-msgid "Preheating to cut"
-msgstr "Precalent. laminar"
-
-#  c=20
-#: ultralcd.cpp:2449
-msgid "Preheating to eject"
-msgstr "Precalent. expulsar"
-
-# 
-#: util.cpp:394
-msgid "Printer nozzle diameter differs from the G-code. Continue?"
-msgstr "Diametro nozzle impresora difiere de cod.G. ?Continuar?"
-
-# 
-#: util.cpp:401
-msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
-msgstr "Diametro nozzle Impresora difiere de cod.G. Comprueba los valores en ajustes. Impresion cancelada."
-
-#  c=20
-#: ultralcd.cpp:8355
-msgid "%s level expected"
-msgstr ""
-
-# 
-#: ultralcd.cpp:6814
-msgid "Rename"
-msgstr "Renombrar"
-
-# 
-#: ultralcd.cpp:6807
-msgid "Select"
-msgstr "Seleccionar"
-
-# 
-#: ultralcd.cpp:2212
-msgid "Sensor info"
-msgstr "Info sensor"
-
-# MSG_SHEET c=10
-#: messages.c:54
-msgid "Sheet"
-msgstr "Lamina"
-
-# MSG_SOUND_BLIND
-#: messages.c:127
-msgid "Assist"
-msgstr "Asistido"
-
-#  c=18
-#: ultralcd.cpp:5722
-msgid "Steel sheets"
-msgstr "Lamina de acero"
-
-# MSG_Z_CORRECTION c=13
-#: ultralcd.cpp:5192
-msgid "Z-correct:"
-msgstr "Corregir-Z:"
-
-# MSG_Z_PROBE_NR
-#: messages.c:129
-msgid "Z-probe nr."
-msgstr "Z-sensor nr."
-
+# Translation of Prusa-Firmware into Spanish.
+#
+msgid ""
+msgstr ""
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: es\n"
+"Project-Id-Version: Prusa-Firmware\n"
+"POT-Creation-Date: Di 26. Jan 11:04:04 CET 2021\n"
+"PO-Revision-Date: Di 26. Jan 11:04:04 CET 2021\n"
+"Language-Team: \n"
+"X-Generator: Poedit 2.0.7\n"
+"X-Poedit-SourceCharset: UTF-8\n"
+"Last-Translator: \n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+# 
+#: 
+msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
+msgstr "[%.7s]Ajuste Z\x0aAjustado, continuar\x0ao empezar de nuevo?\x0a%cContinuar%cRepetir"
+
+# MSG_IR_03_OR_OLDER c=18
+#: messages.c:164
+msgid " 0.3 or older"
+msgstr " 0.3 o mayor"
+
+#  c=18
+#: Marlin_main.cpp:9626
+msgid "FS v0.3 or older"
+msgstr "FS 0.3 o mayor"
+
+# MSG_IR_04_OR_NEWER c=18
+#: messages.c:163
+msgid " 0.4 or newer"
+msgstr " 0.4 o mas nueva"
+
+#  c=18
+#: Marlin_main.cpp:9625
+msgid "FS v0.4 or newer"
+msgstr "FS 0.4 o mas nueva"
+
+# MSG_IR_UNKNOWN c=18
+#: messages.c:165
+msgid "unknown state"
+msgstr "estado desconocido"
+
+# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
+#: messages.c:43
+msgid " of 4"
+msgstr " de 4"
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
+#: messages.c:66
+msgid " of 9"
+msgstr " de 9"
+
+# MSG_MEASURED_OFFSET
+#: ultralcd.cpp:2988
+msgid "[0;0] point offset"
+msgstr "[0;0] punto offset"
+
+# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
+#: 
+msgid "Crash detection can\x0abe turned on only in\x0aNormal mode"
+msgstr "Dec. choque puede\x0aser activada solo en\x0aModo normal"
+
+# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
+#: 
+msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
+msgstr "ATENCION:\x0aDec. choque\x0adesactivada en\x0aModo silencio"
+
+# 
+#: ultralcd.cpp:2410
+msgid ">Cancel"
+msgstr ">Cancelar"
+
+# MSG_BABYSTEPPING_Z c=15
+#: ultralcd.cpp:3108
+msgid "Adjusting Z:"
+msgstr "Ajustar-Z:"
+
+# MSG_SELFTEST_CHECK_ALLCORRECT c=20
+#: ultralcd.cpp:8390
+msgid "All correct      "
+msgstr "Todo bien"
+
+# MSG_WIZARD_DONE c=20 r=8
+#: messages.c:116
+msgid "All is done. Happy printing!"
+msgstr "Terminado! Feliz impresion!"
+
+# 
+#: ultralcd.cpp:1902
+msgid "Ambient"
+msgstr "Ambiente"
+
+# MSG_AUTO c=6
+#: messages.c:160
+msgid "Auto"
+msgstr ""
+
+# MSG_PRESS c=20 r=2
+#: ultralcd.cpp:2567
+msgid "and press the knob"
+msgstr "Haz clic"
+
+# MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
+#: ultralcd.cpp:3429
+msgid "Are left and right Z~carriages all up?"
+msgstr "Carros Z izq./der. estan arriba maximo?"
+
+# MSG_AUTO_DEPLETE c=17 r=1
+#: messages.c:125
+msgid "SpoolJoin"
+msgstr ""
+
+# MSG_AUTO_HOME
+#: messages.c:11
+msgid "Auto home"
+msgstr "Llevar al origen"
+
+# MSG_AUTOLOAD_FILAMENT c=18
+#: ultralcd.cpp:6716
+msgid "AutoLoad filament"
+msgstr "Carga auto. filam."
+
+# MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
+#: ultralcd.cpp:4346
+msgid "Autoloading filament available only when filament sensor is turned on..."
+msgstr "La carga automatica solo funciona si el sensor de filamento esta activado..."
+
+# MSG_AUTOLOADING_ENABLED c=20 r=4
+#: ultralcd.cpp:2730
+msgid "Autoloading filament is active, just press the knob and insert filament..."
+msgstr "La carga automatica esta activada, pulse el dial e inserte el filamento..."
+
+# MSG_SELFTEST_AXIS_LENGTH
+#: ultralcd.cpp:8073
+msgid "Axis length"
+msgstr "Longitud del eje"
+
+# MSG_SELFTEST_AXIS
+#: ultralcd.cpp:8074
+msgid "Axis"
+msgstr "Eje"
+
+# MSG_SELFTEST_BEDHEATER
+#: ultralcd.cpp:8031
+msgid "Bed / Heater"
+msgstr "Base / Calentador"
+
+# MSG_BED_DONE
+#: messages.c:15
+msgid "Bed done"
+msgstr "Base preparada"
+
+# MSG_BED_HEATING
+#: messages.c:16
+msgid "Bed Heating"
+msgstr "Calentando Base"
+
+# MSG_BED_CORRECTION_MENU
+#: ultralcd.cpp:5802
+msgid "Bed level correct"
+msgstr "Corr. de la cama"
+
+# MSG_BELTTEST c=17
+#: ultralcd.cpp:5782
+msgid "Belt test        "
+msgstr "Test cinturon    "
+
+# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
+#: messages.c:17
+msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
+msgstr "Nivelacion fallada. Sensor no funciona. Restos en boquilla? Esperando reset."
+
+# MSG_BRIGHT c=6
+#: messages.c:158
+msgid "Bright"
+msgstr "Brill."
+
+# MSG_BRIGHTNESS c=18
+#: messages.c:154
+msgid "Brightness"
+msgstr "Brillo"
+
+# MSG_BED
+#: messages.c:14
+msgid "Bed"
+msgstr "Base"
+
+# MSG_BELT_STATUS c=18
+#: 
+msgid "Belt status"
+msgstr "Estado de correa"
+
+# MSG_RECOVER_PRINT c=20 r=2
+#: messages.c:80
+msgid "Blackout occurred. Recover print?"
+msgstr "Se fue la luz. ?Reanudar la impresion?"
+
+# 
+#: ultralcd.cpp:8392
+msgid "Calibrating home"
+msgstr "Calibrando posicion inicial"
+
+# MSG_CALIBRATE_BED
+#: ultralcd.cpp:5791
+msgid "Calibrate XYZ"
+msgstr "Calibrar XYZ"
+
+# MSG_HOMEYZ
+#: messages.c:51
+msgid "Calibrate Z"
+msgstr "Calibrar Z"
+
+# MSG_CALIBRATE_PINDA c=17 r=1
+#: ultralcd.cpp:4538
+msgid "Calibrate"
+msgstr "Calibrar"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
+#: ultralcd.cpp:3392
+msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "Calibrando XYZ. Gira el dial para subir el extrusor hasta tocar los topes superiores. Despues haz clic."
+
+# MSG_CALIBRATE_Z_AUTO c=20 r=2
+#: messages.c:20
+msgid "Calibrating Z"
+msgstr "Calibrando Z"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
+#: ultralcd.cpp:3392
+msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "Calibrando Z. Gira el dial para subir el extrusor hasta tocar los topes superiores. Despues haz clic."
+
+# MSG_HOMEYZ_DONE
+#: ultralcd.cpp:813
+msgid "Calibration done"
+msgstr "Calibracion OK"
+
+# MSG_MENU_CALIBRATION
+#: messages.c:67
+msgid "Calibration"
+msgstr "Calibracion"
+
+# 
+#: ultralcd.cpp:4716
+msgid "Cancel"
+msgstr "Cancelar"
+
+# MSG_SD_REMOVED
+#: ultralcd.cpp:8842
+msgid "Card removed"
+msgstr "Tarjeta retirada"
+
+# MSG_NOT_COLOR
+#: ultralcd.cpp:2647
+msgid "Color not correct"
+msgstr "Color no homogeneo"
+
+# MSG_COOLDOWN
+#: messages.c:25
+msgid "Cooldown"
+msgstr "Enfriar"
+
+# 
+#: ultralcd.cpp:4471
+msgid "Copy selected language?"
+msgstr "Copiar idioma seleccionado?"
+
+# MSG_CRASHDETECT c=13
+#: messages.c:28
+msgid "Crash det."
+msgstr "Det. choque"
+
+# 
+#: ultralcd.cpp:4851
+msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
+msgstr "Escoge un filamento para la Calibracion de la Primera Capa y seleccionalo en el menu en pantalla."
+
+# MSG_CRASH_DETECTED c=20 r=1
+#: messages.c:27
+msgid "Crash detected."
+msgstr "Choque detectado."
+
+# 
+#: Marlin_main.cpp:657
+msgid "Crash detected. Resume print?"
+msgstr "Choque detectado. Continuar impresion?"
+
+# MSG_CRASH c=7
+#: messages.c:26
+msgid "Crash"
+msgstr "Choque"
+
+# MSG_CURRENT c=19 r=1
+#: ultralcd.cpp:5933
+msgid "Current"
+msgstr "Actual"
+
+# MSG_DATE c=17 r=1
+#: ultralcd.cpp:2112
+msgid "Date:"
+msgstr "Fecha:"
+
+# MSG_DISABLE_STEPPERS
+#: ultralcd.cpp:5683
+msgid "Disable steppers"
+msgstr "Apagar motores"
+
+# MSG_BABYSTEP_Z_NOT_SET c=20 r=12
+#: messages.c:13
+msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
+msgstr "Distancia entre la punta del boquilla y la superficie de la base aun no fijada. Por favor siga el manual, capitulo Primeros Pasos, Calibracion primera capa."
+
+# MSG_FS_CONTINUE c=5
+#: messages.c:152
+msgid "Cont."
+msgstr ""
+
+# MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
+#: ultralcd.cpp:5026
+msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
+msgstr "Quieres repetir el ultimo paso para reajustar la distancia boquilla-base?"
+
+# MSG_EXTRUDER_CORRECTION c=13
+#: ultralcd.cpp:5095
+msgid "E-correct:"
+msgstr "Corregir-E:"
+
+# MSG_EJECT_FILAMENT c=16
+#: messages.c:58
+msgid "Eject filament"
+msgstr "Expulsar fil."
+
+# MSG_EJECTING_FILAMENT c=20 r=1
+#: mmu.cpp:1414
+msgid "Ejecting filament"
+msgstr "Expulsando filamento"
+
+# MSG_SELFTEST_ENDSTOP_NOTHIT c=20
+#: ultralcd.cpp:8049
+msgid "Endstop not hit"
+msgstr "Endstop no alcanzado"
+
+# MSG_SELFTEST_ENDSTOP
+#: ultralcd.cpp:8044
+msgid "Endstop"
+msgstr ""
+
+# MSG_SELFTEST_ENDSTOPS
+#: ultralcd.cpp:8035
+msgid "Endstops"
+msgstr ""
+
+# MSG_STACK_ERROR c=20 r=4
+#: ultralcd.cpp:6753
+msgid "Error - static memory has been overwritten"
+msgstr "Error - se ha sobre-escrito la memoria estatica"
+
+# MSG_CUT_FILAMENT c=16
+#: messages.c:59
+msgid "Cut filament"
+msgstr "Cortar filament"
+
+# MSG_CUTTER c=9
+#: messages.c:126
+msgid "Cutter"
+msgstr "Cuchillo"
+
+#  c=18
+#: mmu.cpp:1386
+msgid "Cutting filament"
+msgstr "Corte de filament"
+
+# MSG_FSENS_NOT_RESPONDING c=20 r=4
+#: ultralcd.cpp:4359
+msgid "ERROR: Filament sensor is not responding, please check connection."
+msgstr "ERROR: El sensor de filamento no responde, por favor comprueba la conexion."
+
+# MSG_DIM c=6
+#: messages.c:159
+msgid "Dim"
+msgstr ""
+
+# MSG_ERROR
+#: messages.c:29
+msgid "ERROR:"
+msgstr ""
+
+# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
+#: ultralcd.cpp:8398
+msgid "Extruder fan:"
+msgstr "Vent.extrusor:"
+
+# MSG_INFO_EXTRUDER c=18
+#: ultralcd.cpp:2153
+msgid "Extruder info"
+msgstr "Info. del extrusor"
+
+# MSG_EXTRUDER c=17
+#: messages.c:30
+msgid "Extruder"
+msgstr "Extruir"
+
+# 
+#: ultralcd.cpp:6740
+msgid "Fail stats MMU"
+msgstr "Estadistica de fallos MMU"
+
+# MSG_FSENSOR_AUTOLOAD c=13
+#: messages.c:47
+msgid "F. autoload"
+msgstr "Autocarg.fil."
+
+# 
+#: ultralcd.cpp:6737
+msgid "Fail stats"
+msgstr "Estadistica de fallos"
+
+# MSG_FAN_SPEED c=14
+#: messages.c:34
+msgid "Fan speed"
+msgstr "Velocidad Vent"
+
+# MSG_SELFTEST_FAN c=20
+#: messages.c:89
+msgid "Fan test"
+msgstr "Test ventiladores"
+
+# MSG_FANS_CHECK c=13
+#: messages.c:31
+msgid "Fans check"
+msgstr "Comprob.vent"
+
+# MSG_FSENSOR
+#: messages.c:48
+msgid "Fil. sensor"
+msgstr "Sensor Fil."
+
+# MSG_FIL_RUNOUTS c=14
+#: 
+msgid "Fil. runouts  "
+msgstr "Fil. acabado  "
+
+# MSG_FILAMENT_CLEAN c=20 r=2
+#: messages.c:35
+msgid "Filament extruding & with correct color?"
+msgstr "Es nitido el color nuevo?"
+
+# MSG_NOT_LOADED c=19
+#: ultralcd.cpp:2646
+msgid "Filament not loaded"
+msgstr "Fil. no introducido"
+
+# MSG_FILAMENT_SENSOR c=20
+#: messages.c:95
+msgid "Filament sensor"
+msgstr "Sensor de filamento"
+
+# MSG_FILAMENT_USED c=19
+#: ultralcd.cpp:2795
+msgid "Filament used"
+msgstr "Filamento usado"
+
+# MSG_PRINT_TIME c=19 r=1
+#: ultralcd.cpp:2796
+msgid "Print time"
+msgstr "Tiempo de imp.:"
+
+# MSG_FS_ACTION c=10
+#: messages.c:151
+msgid "FS Action"
+msgstr "FS accion"
+
+# MSG_FILE_INCOMPLETE c=20 r=3
+#: ultralcd.cpp:8540
+msgid "File incomplete. Continue anyway?"
+msgstr "Archivo incompleto. ?Continuar de todos modos?"
+
+# MSG_FINISHING_MOVEMENTS c=20
+#: messages.c:44
+msgid "Finishing movements"
+msgstr "Term. movimientos"
+
+# MSG_V2_CALIBRATION c=18
+#: messages.c:120
+msgid "First layer cal."
+msgstr "Cal. primera cap."
+
+# MSG_WIZARD_SELFTEST c=20 r=8
+#: ultralcd.cpp:4947
+msgid "First, I will run the selftest to check most common assembly problems."
+msgstr "Primero, hare el Selftest para comprobar los problemas de montaje mas comunes."
+
+# 
+#: mmu.cpp:726
+msgid "Fix the issue and then press button on MMU unit."
+msgstr "Corrige el problema y pulsa el boton en la unidad MMU."
+
+# MSG_FLOW
+#: ultralcd.cpp:6880
+msgid "Flow"
+msgstr "Flujo"
+
+# MSG_PRUSA3D_FORUM
+#: ultralcd.cpp:2105
+msgid "forum.prusa3d.com"
+msgstr ""
+
+# MSG_SELFTEST_COOLING_FAN c=20
+#: messages.c:86
+msgid "Front print fan?"
+msgstr "Vent. frontal?"
+
+# MSG_BED_CORRECTION_FRONT c=14 r=1
+#: ultralcd.cpp:3190
+msgid "Front side[um]"
+msgstr "Frontal [um]"
+
+# MSG_SELFTEST_FANS
+#: ultralcd.cpp:8079
+msgid "Front/left fans"
+msgstr "Ventiladores frontal/izquierdo"
+
+# MSG_SELFTEST_HEATERTHERMISTOR
+#: ultralcd.cpp:8027
+msgid "Heater/Thermistor"
+msgstr "Calentador/Termistor"
+
+# MSG_BED_HEATING_SAFETY_DISABLED
+#: Marlin_main.cpp:9616
+msgid "Heating disabled by safety timer."
+msgstr "Calentadores desactivados por el temporizador de seguridad."
+
+# MSG_HEATING_COMPLETE c=20
+#: messages.c:50
+msgid "Heating done."
+msgstr "Calentando acabado."
+
+# MSG_HEATING
+#: messages.c:49
+msgid "Heating"
+msgstr "Calentando..."
+
+# MSG_WIZARD_WELCOME c=20 r=7
+#: ultralcd.cpp:4926
+msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
+msgstr "Hola, soy tu impresora Original Prusa i3. Quieres que te guie a traves de la configuracion?"
+
+# MSG_PRUSA3D_HOWTO
+#: ultralcd.cpp:2106
+msgid "howto.prusa3d.com"
+msgstr ""
+
+# MSG_FILAMENTCHANGE
+#: messages.c:41
+msgid "Change filament"
+msgstr "Cambiar filamento"
+
+# MSG_CHANGE_SUCCESS
+#: ultralcd.cpp:2576
+msgid "Change success!"
+msgstr "Cambio correcto"
+
+# MSG_CORRECTLY c=20
+#: ultralcd.cpp:2644
+msgid "Changed correctly?"
+msgstr "Cambio correcto?"
+
+# MSG_SELFTEST_CHECK_BED c=20
+#: messages.c:92
+msgid "Checking bed     "
+msgstr "Control base cal."
+
+# MSG_SELFTEST_CHECK_ENDSTOPS c=20
+#: ultralcd.cpp:8381
+msgid "Checking endstops"
+msgstr "Control endstops"
+
+# MSG_SELFTEST_CHECK_HOTEND c=20
+#: ultralcd.cpp:8387
+msgid "Checking hotend  "
+msgstr "Control fusor"
+
+# MSG_SELFTEST_CHECK_FSENSOR c=20
+#: messages.c:93
+msgid "Checking sensors "
+msgstr "Comprobando sensores"
+
+# MSG_CHECKING_X c=20
+#: messages.c:22
+msgid "Checking X axis"
+msgstr "Control sensor X"
+
+# MSG_CHECKING_Y c=20
+#: messages.c:23
+msgid "Checking Y axis"
+msgstr "Control sensor Y"
+
+# MSG_SELFTEST_CHECK_Z c=20
+#: 
+msgid "Checking Z axis"
+msgstr "Control sensor Z"
+
+# MSG_CHOOSE_EXTRUDER c=20 r=1
+#: messages.c:52
+msgid "Choose extruder:"
+msgstr "Elegir extrusor:"
+
+# MSG_CHOOSE_FILAMENT c=20 r=1
+#: messages.c:53
+msgid "Choose filament:"
+msgstr "Elije filamento:"
+
+# MSG_FILAMENT c=17 r=1
+#: messages.c:33
+msgid "Filament"
+msgstr "Filamento"
+
+# MSG_WIZARD_XYZ_CAL c=20 r=8
+#: ultralcd.cpp:4956
+msgid "I will run xyz calibration now. It will take approx. 12 mins."
+msgstr "Hare la calibracion XYZ. Tardara 12 min. aproximadamente."
+
+# MSG_WIZARD_Z_CAL c=20 r=8
+#: ultralcd.cpp:4964
+msgid "I will run z calibration now."
+msgstr "Voy a hacer Calibracion Z ahora."
+
+# MSG_WATCH
+#: messages.c:114
+msgid "Info screen"
+msgstr "Monitorizar"
+
+# MSG_INSERT_FILAMENT c=20
+#: ultralcd.cpp:2564
+msgid "Insert filament"
+msgstr "Introducir filamento"
+
+# MSG_FILAMENT_LOADED c=20 r=2
+#: messages.c:36
+msgid "Is filament loaded?"
+msgstr "Esta el filamento cargado?"
+
+# MSG_STEEL_SHEET_CHECK c=20 r=2
+#: messages.c:107
+msgid "Is steel sheet on heatbed?"
+msgstr "?Esta colocada la lamina sobre la base"
+
+# MSG_LAST_PRINT_FAILURES c=20
+#: messages.c:55
+msgid "Last print failures"
+msgstr "Ultimos imp. fallos"
+
+# 
+#: ultralcd.cpp:5034
+msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
+msgstr "Si tienes planchas de acero adicionales, calibra sus ajustes en Ajustes - Ajustes HW - Planchas acero."
+
+# MSG_LAST_PRINT c=18
+#: messages.c:54
+msgid "Last print"
+msgstr "Ultima impresion"
+
+# MSG_SELFTEST_EXTRUDER_FAN c=20
+#: messages.c:87
+msgid "Left hotend fan?"
+msgstr "Vent. izquierdo?"
+
+# 
+#: ultralcd.cpp:2919
+msgid "Left"
+msgstr "Izquierda"
+
+# MSG_BED_CORRECTION_LEFT c=14 r=1
+#: ultralcd.cpp:3188
+msgid "Left side [um]"
+msgstr "Izquierda [um]"
+
+# 
+#: ultralcd.cpp:5706
+msgid "Lin. correction"
+msgstr "Correccion de Linealidad"
+
+# MSG_BABYSTEP_Z
+#: messages.c:12
+msgid "Live adjust Z"
+msgstr "Micropaso Eje Z"
+
+#  c=20 r=6
+#: ultralcd.cpp:7280
+msgid "Insert the filament (do not load it) into the extruder and then press the knob."
+msgstr "Inserte el filamento (no lo cargue) en el extrusor y luego presione el dial."
+
+# MSG_LOAD_FILAMENT c=17
+#: messages.c:56
+msgid "Load filament"
+msgstr "Introducir filam."
+
+# MSG_LOADING_COLOR
+#: ultralcd.cpp:2598
+msgid "Loading color"
+msgstr "Cambiando color"
+
+# MSG_LOADING_FILAMENT c=20
+#: messages.c:57
+msgid "Loading filament"
+msgstr "Introduciendo filam."
+
+# MSG_LOOSE_PULLEY c=20 r=1
+#: ultralcd.cpp:8067
+msgid "Loose pulley"
+msgstr "Polea suelta"
+
+# 
+#: ultralcd.cpp:6699
+msgid "Load to nozzle"
+msgstr "Cargar a la boquilla"
+
+# MSG_M117_V2_CALIBRATION c=25
+#: messages.c:60
+msgid "M117 First layer cal."
+msgstr "M117 Cal. primera cap."
+
+# MSG_MAIN
+#: messages.c:61
+msgid "Main"
+msgstr "Menu principal"
+
+# MSG_BL_HIGH c=12
+#: messages.c:155
+msgid "Level Bright"
+msgstr "Valor brill."
+
+# MSG_BL_LOW c=12
+#: messages.c:156
+msgid "Level Dimmed"
+msgstr ""
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
+#: messages.c:65
+msgid "Measuring reference height of calibration point"
+msgstr "Midiendo altura del punto de calibracion"
+
+# MSG_MESH_BED_LEVELING c=18
+#: messages.c:148
+msgid "Mesh Bed Leveling"
+msgstr "Nivela. Mesh Level"
+
+# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
+#: mmu.cpp:764
+msgid "MMU OK. Resuming position..."
+msgstr "MMU OK. Restaurando posicion..."
+
+# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
+#: mmu.cpp:757
+msgid "MMU OK. Resuming temperature..."
+msgstr "MMU OK. Restaurando temperatura..."
+
+# 
+#: ultralcd.cpp:2960
+msgid "Measured skew"
+msgstr "Desviacion med:"
+
+# MSG_MMU_FAILS c=14
+#: messages.c:68
+msgid "MMU fails"
+msgstr "Fallos MMU"
+
+# 
+#: mmu.cpp:1586
+msgid "MMU load failed     "
+msgstr "Carga MMU fallida"
+
+# MSG_MMU_LOAD_FAILS c=14
+#: messages.c:69
+msgid "MMU load fails"
+msgstr "Carga MMU falla"
+
+# MSG_MMU_OK_RESUMING c=20 r=4
+#: mmu.cpp:775
+msgid "MMU OK. Resuming..."
+msgstr "MMU OK. Resumiendo..."
+
+# MSG_MODE
+#: messages.c:101
+msgid "Mode"
+msgstr "Modo"
+
+#  c=20 r=3
+#: Marlin_main.cpp:934
+msgid "MK3 firmware detected on MK3S printer"
+msgstr "Firmware MK3 detectado en impresora MK3S"
+
+# MSG_NORMAL
+#: messages.c:105
+msgid "Normal"
+msgstr ""
+
+# MSG_SILENT
+#: messages.c:104
+msgid "Silent"
+msgstr "Silencio"
+
+# 
+#: mmu.cpp:721
+msgid "MMU needs user attention."
+msgstr "MMU necesita atencion del usuario."
+
+# 
+#: ultralcd.cpp:1701
+msgid "MMU power fails"
+msgstr "Fallo de energia en MMU"
+
+# MSG_STEALTH
+#: messages.c:106
+msgid "Stealth"
+msgstr "Silencio"
+
+# MSG_AUTO_POWER
+#: messages.c:103
+msgid "Auto power"
+msgstr "Fuerza auto"
+
+# MSG_HIGH_POWER
+#: messages.c:102
+msgid "High power"
+msgstr "Rend.pleno"
+
+# 
+#: ultralcd.cpp:2124
+msgid "MMU2 connected"
+msgstr "MMU2 conectado"
+
+# MSG_SELFTEST_MOTOR
+#: messages.c:94
+msgid "Motor"
+msgstr ""
+
+# MSG_MOVE_AXIS
+#: ultralcd.cpp:5681
+msgid "Move axis"
+msgstr "Mover ejes"
+
+# MSG_MOVE_X
+#: ultralcd.cpp:4262
+msgid "Move X"
+msgstr "Mover X"
+
+# MSG_MOVE_Y
+#: ultralcd.cpp:4263
+msgid "Move Y"
+msgstr "Mover Y"
+
+# MSG_MOVE_Z
+#: ultralcd.cpp:4264
+msgid "Move Z"
+msgstr "Mover Z"
+
+# MSG_NO_MOVE
+#: Marlin_main.cpp:5719
+msgid "No move."
+msgstr "Sin movimiento"
+
+# MSG_NO_CARD
+#: ultralcd.cpp:6673
+msgid "No SD card"
+msgstr "No hay tarjeta SD"
+
+# MSG_NA
+#: messages.c:124
+msgid "N/A"
+msgstr "N/A"
+
+# MSG_NO
+#: messages.c:70
+msgid "No"
+msgstr ""
+
+# MSG_SELFTEST_NOTCONNECTED
+#: ultralcd.cpp:8028
+msgid "Not connected"
+msgstr "No hay conexion "
+
+# 
+#: util.cpp:293
+msgid "New firmware version available:"
+msgstr "Nuevo firmware disponible:"
+
+# MSG_SELFTEST_FAN_NO c=19
+#: messages.c:90
+msgid "Not spinning"
+msgstr "Ventilador no gira"
+
+# MSG_WIZARD_V2_CAL c=20 r=8
+#: ultralcd.cpp:4847
+msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
+msgstr "Voy a calibrar la distancia entre la punta de la boquilla y la superficie de la base."
+
+# MSG_WIZARD_WILL_PREHEAT c=20 r=4
+#: ultralcd.cpp:4972
+msgid "Now I will preheat nozzle for PLA."
+msgstr "Ahora precalentare la boquilla para PLA."
+
+# MSG_NOZZLE
+#: messages.c:71
+msgid "Nozzle"
+msgstr "Boquilla"
+
+# MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
+#: Marlin_main.cpp:1581
+msgid "Old settings found. Default PID, Esteps etc. will be set."
+msgstr "Se han encontrado ajustes anteriores. Se ajustara el PID, los pasos del extrusor, etc"
+
+# 
+#: ultralcd.cpp:4963
+msgid "Now remove the test print from steel sheet."
+msgstr "Ahora retira la prueba de la lamina de acero."
+
+# 
+#: ultralcd.cpp:1600
+msgid "Nozzle FAN"
+msgstr "Vent. capa"
+
+# MSG_PAUSE_PRINT
+#: ultralcd.cpp:6637
+msgid "Pause print"
+msgstr "Pausar impresion"
+
+# MSG_PID_RUNNING c=20 r=1
+#: ultralcd.cpp:1485
+msgid "PID cal.           "
+msgstr "Cal. PID "
+
+# MSG_PID_FINISHED c=20 r=1
+#: ultralcd.cpp:1491
+msgid "PID cal. finished"
+msgstr "Cal. PID terminada"
+
+# MSG_PID_EXTRUDER c=17 r=1
+#: ultralcd.cpp:5803
+msgid "PID calibration"
+msgstr "Calibracion PID"
+
+# MSG_PINDA_PREHEAT c=20 r=1
+#: ultralcd.cpp:843
+msgid "PINDA Heating"
+msgstr "Calentando PINDA"
+
+# MSG_PAPER c=20 r=10
+#: messages.c:72
+msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
+msgstr "Colocar una hoja de papel sobre la superficie de impresion durante la calibracion de los primeros 4 puntos. Si la boquilla mueve el papel, apagar impresora inmediatamente."
+
+# MSG_WIZARD_CLEAN_HEATBED c=20 r=8
+#: ultralcd.cpp:5029
+msgid "Please clean heatbed and then press the knob."
+msgstr "Limpia la superficie de la base, por favor, y haz clic"
+
+# MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
+#: messages.c:24
+msgid "Please clean the nozzle for calibration. Click when done."
+msgstr "Limpia boquilla para calibracion. Click cuando acabes."
+
+# MSG_SELFTEST_PLEASECHECK
+#: ultralcd.cpp:8022
+msgid "Please check :"
+msgstr "Controla :"
+
+# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
+#: messages.c:115
+msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
+msgstr "Lee el manual y resuelve el problema. Despues, reinicia la impresora y continua con el Wizard"
+
+# MSG_CHECK_IDLER c=20 r=4
+#: Marlin_main.cpp:3317
+msgid "Please open idler and remove filament manually."
+msgstr "Por favor abate el rodillo de empuje (idler) y retira el filamento manualmente."
+
+# MSG_PLACE_STEEL_SHEET c=20 r=4
+#: messages.c:73
+msgid "Please place steel sheet on heatbed."
+msgstr "Por favor coloca la chapa de acero en la base calefactable."
+
+# MSG_PRESS_TO_UNLOAD c=20 r=4
+#: messages.c:77
+msgid "Please press the knob to unload filament"
+msgstr "Por favor, pulsa el dial para descargar el filamento"
+
+# MSG_PULL_OUT_FILAMENT c=20 r=4
+#: messages.c:79
+msgid "Please pull out filament immediately"
+msgstr "Por favor retire el filamento de inmediato"
+
+# MSG_EJECT_REMOVE c=20 r=4
+#: mmu.cpp:1420
+msgid "Please remove filament and then press the knob."
+msgstr "Por favor quite el filamento y luego presione el dial."
+
+# MSG_REMOVE_STEEL_SHEET c=20 r=4
+#: messages.c:82
+msgid "Please remove steel sheet from heatbed."
+msgstr "Por favor retire la chapa de acero de la base calefactable."
+
+# MSG_RUN_XYZ c=20 r=4
+#: Marlin_main.cpp:4766
+msgid "Please run XYZ calibration first."
+msgstr "Por favor realiza la calibracion XYZ primero."
+
+# MSG_UPDATE_MMU2_FW c=20 r=4
+#: mmu.cpp:1340
+msgid "Please update firmware in your MMU2. Waiting for reset."
+msgstr "Por favor actualice el firmware en tu MMU2. Esperando el reseteo."
+
+# MSG_PLEASE_WAIT c=20
+#: messages.c:74
+msgid "Please wait"
+msgstr "Por Favor Espere"
+
+# 
+#: ultralcd.cpp:4962
+msgid "Please remove shipping helpers first."
+msgstr "Por favor retira los soportes de envio primero."
+
+# MSG_PREHEAT_NOZZLE c=20
+#: messages.c:76
+msgid "Preheat the nozzle!"
+msgstr "Precalienta extrusor"
+
+# MSG_PREHEAT
+#: ultralcd.cpp:6615
+msgid "Preheat"
+msgstr "Precalentar"
+
+# MSG_WIZARD_HEATING c=20 r=3
+#: messages.c:117
+msgid "Preheating nozzle. Please wait."
+msgstr "Precalentando nozzle. Espera por favor."
+
+#  c=14
+#: ultralcd.cpp:1905
+msgid "PINDA"
+msgstr ""
+
+# 
+#: util.cpp:297
+msgid "Please upgrade."
+msgstr "Actualize por favor"
+
+# MSG_PRESS_TO_PREHEAT c=20 r=4
+#: Marlin_main.cpp:11718
+msgid "Press knob to preheat nozzle and continue."
+msgstr "Pulsa el dial para precalentar la boquilla y continue."
+
+# MSG_FS_PAUSE c=5
+#: fsensor.cpp:728
+msgid "Pause"
+msgstr "Pausa"
+
+# MSG_POWER_FAILURES c=14
+#: messages.c:75
+msgid "Power failures"
+msgstr "Cortes de energia"
+
+# MSG_PRINT_ABORTED c=20
+#: messages.c:78
+msgid "Print aborted"
+msgstr "Impresion cancelada"
+
+#  c=20
+#: ultralcd.cpp:2390
+msgid "Preheating to load"
+msgstr "Precalent. cargar"
+
+#  c=20
+#: ultralcd.cpp:2395
+msgid "Preheating to unload"
+msgstr "Precalent. descargar"
+
+# MSG_SELFTEST_PRINT_FAN_SPEED c=18
+#: ultralcd.cpp:8401
+msgid "Print fan:"
+msgstr "Vent.fusor:"
+
+# MSG_CARD_MENU
+#: messages.c:21
+msgid "Print from SD"
+msgstr "Menu tarjeta SD"
+
+# 
+#: ultralcd.cpp:2231
+msgid "Press the knob"
+msgstr "Pulsa el dial"
+
+# MSG_PRINT_PAUSED c=20 r=1
+#: ultralcd.cpp:1065
+msgid "Print paused"
+msgstr "Impresion en pausa"
+
+# 
+#: mmu.cpp:725
+msgid "Press the knob to resume nozzle temperature."
+msgstr "Presiona el dial para continuar con la temperatura de la boquilla."
+
+# MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
+#: messages.c:45
+msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
+msgstr "Impresora no esta calibrada todavia. Por favor usa el manual capitulo Primeros pasos Calibracion flujo."
+
+# 
+#: ultralcd.cpp:1601
+msgid "Print FAN"
+msgstr "Vent. extr"
+
+# 
+#: ultralcd.cpp:4827
+msgid "Please insert filament into the extruder, then press the knob to load it."
+msgstr "Por favor, coloca el filamento en el extrusor, luego presiona el dial para cargarlo."
+
+# 
+#: ultralcd.cpp:4822
+msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
+msgstr "Por favor, coloca el filamento en el primer tubo de la MMU, luego pulsa el dial para cargarlo."
+
+# 
+#: ultralcd.cpp:4744
+msgid "Please load filament first."
+msgstr "Por favor, cargar primero el filamento. "
+
+# MSG_PRUSA3D
+#: ultralcd.cpp:2104
+msgid "prusa3d.com"
+msgstr "prusa3d.es"
+
+# MSG_BED_CORRECTION_REAR c=14 r=1
+#: ultralcd.cpp:3191
+msgid "Rear side [um]"
+msgstr "Trasera [um]"
+
+#  c=20 r=4
+#: ultralcd.cpp:7304
+msgid "Please unload the filament first, then repeat this action."
+msgstr "Primero descargue el filamento, luego repita esta accion."
+
+#  c=20 r=4
+#: ultralcd.cpp:7307
+msgid "Please check the IR sensor connection, unload filament if present."
+msgstr "Por favor comprueba la conexion del IR sensor y filamento esta descargado."
+
+# MSG_RECOVERING_PRINT c=20
+#: Marlin_main.cpp:11076
+msgid "Recovering print    "
+msgstr "Recuper. impresion  "
+
+# MSG_REMOVE_OLD_FILAMENT c=20 r=5
+#: mmu.cpp:832
+msgid "Remove old filament and press the knob to start loading new filament."
+msgstr "Retire el filamento viejo y presione el dial para comenzar a cargar el nuevo filamento."
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3S OK."
+msgstr ""
+
+# MSG_CALIBRATE_BED_RESET
+#: ultralcd.cpp:5808
+msgid "Reset XYZ calibr."
+msgstr ""
+
+# MSG_RESET c=14
+#: messages.c:83
+msgid "Reset"
+msgstr ""
+
+# MSG_RESUME_PRINT c=18
+#: messages.c:84
+msgid "Resume print"
+msgstr "Reanudar impres."
+
+# MSG_RESUMING_PRINT c=20
+#: messages.c:85
+msgid "Resuming print"
+msgstr "Continuan. impresion"
+
+# MSG_BED_CORRECTION_RIGHT c=14 r=1
+#: ultralcd.cpp:3189
+msgid "Right side[um]"
+msgstr "Derecha [um]"
+
+# MSG_RPI_PORT
+#: messages.c:142
+msgid "RPi port"
+msgstr "Puerto RPi"
+
+# MSG_WIZARD_RERUN c=20 r=7
+#: ultralcd.cpp:4765
+msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
+msgstr "Ejecutar el Wizard borrara los valores de calibracion actuales y comenzara de nuevo. Continuar?"
+
+# MSG_SD_CARD
+#: messages.c:137
+msgid "SD card"
+msgstr "Tarj. SD"
+
+# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
+#: messages.c:138
+msgid "FlashAir"
+msgstr ""
+
+# 
+#: ultralcd.cpp:2920
+msgid "Right"
+msgstr "Derecha"
+
+# MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
+#: messages.c:42
+msgid "Searching bed calibration point"
+msgstr "Buscando punto de calibracion base"
+
+# MSG_LANGUAGE_SELECT
+#: ultralcd.cpp:5721
+msgid "Select language"
+msgstr "Cambiar el idioma"
+
+# MSG_SELFTEST_OK
+#: ultralcd.cpp:7579
+msgid "Self test OK"
+msgstr ""
+
+# MSG_SELFTEST_START c=20
+#: ultralcd.cpp:7347
+msgid "Self test start  "
+msgstr "Iniciar Selftest"
+
+# MSG_SELFTEST
+#: ultralcd.cpp:5784
+msgid "Selftest         "
+msgstr ""
+
+# MSG_SELFTEST_ERROR
+#: ultralcd.cpp:8021
+msgid "Selftest error !"
+msgstr "Error Selftest !"
+
+# MSG_SELFTEST_FAILED c=20
+#: messages.c:88
+msgid "Selftest failed  "
+msgstr "Fallo Selftest"
+
+# MSG_FORCE_SELFTEST c=20 r=8
+#: Marlin_main.cpp:1613
+msgid "Selftest will be run to calibrate accurate sensorless rehoming."
+msgstr "Se realizara el auto-test para calibrar con precision la vuelta a la posicion inicial sin sensores."
+
+# 
+#: ultralcd.cpp:5003
+msgid "Select nozzle preheat temperature which matches your material."
+msgstr "Selecciona la temperatura para precalentar la boquilla que se ajuste a tu material. "
+
+# MSG_SET_TEMPERATURE c=19 r=1
+#: ultralcd.cpp:3209
+msgid "Set temperature:"
+msgstr "Establecer temp.:"
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5 OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5S OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3 OK."
+msgstr ""
+
+# MSG_SETTINGS
+#: messages.c:97
+msgid "Settings"
+msgstr "Configuracion"
+
+# MSG_SHOW_END_STOPS c=18
+#: ultralcd.cpp:5805
+msgid "Show end stops"
+msgstr "Mostrar endstops"
+
+# 
+#: ultralcd.cpp:3915
+msgid "Sensor state"
+msgstr "Estado del sensor"
+
+# MSG_FILE_CNT c=20 r=6
+#: cardreader.cpp:739
+msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
+msgstr "Algunos archivos no se ordenaran. Maximo 100 archivos por carpeta para ordenar. "
+
+# MSG_SORT
+#: messages.c:139
+msgid "Sort"
+msgstr "Ordenar"
+
+# MSG_NONE
+#: messages.c:127
+msgid "None"
+msgstr "Ninguno"
+
+# MSG_SORT_TIME
+#: messages.c:140
+msgid "Time"
+msgstr "Fecha"
+
+# 
+#: ultralcd.cpp:2963
+msgid "Severe skew:"
+msgstr "Incl.severa:"
+
+# MSG_SORT_ALPHA
+#: messages.c:141
+msgid "Alphabet"
+msgstr "Alfabet"
+
+# MSG_SORTING c=20 r=1
+#: cardreader.cpp:746
+msgid "Sorting files"
+msgstr "Ordenando archivos"
+
+# MSG_SOUND_LOUD
+#: messages.c:144
+msgid "Loud"
+msgstr "Alto"
+
+# 
+#: ultralcd.cpp:2962
+msgid "Slight skew:"
+msgstr "Liger.incl.:"
+
+# MSG_SOUND
+#: messages.c:143
+msgid "Sound"
+msgstr "Sonido"
+
+#  c=7
+#: ultralcd.cpp:1768
+msgid "Runouts"
+msgstr ""
+
+# 
+#: Marlin_main.cpp:5280
+msgid "Some problem encountered, Z-leveling enforced ..."
+msgstr "Problema encontrado, nivelacion Z forzosa ..."
+
+# MSG_SOUND_ONCE
+#: messages.c:145
+msgid "Once"
+msgstr "Una vez"
+
+# MSG_SPEED
+#: ultralcd.cpp:6874
+msgid "Speed"
+msgstr "Velocidad"
+
+# MSG_SELFTEST_FAN_YES c=19
+#: messages.c:91
+msgid "Spinning"
+msgstr "Ventilador girando"
+
+# MSG_TEMP_CAL_WARNING c=20 r=4
+#: Marlin_main.cpp:4779
+msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
+msgstr "Se necesita una temperatura ambiente ente 21 y 26C y un soporte rigido."
+
+# MSG_STATISTICS
+#: ultralcd.cpp:6733
+msgid "Statistics  "
+msgstr "Estadisticas "
+
+# MSG_STOP_PRINT
+#: messages.c:108
+msgid "Stop print"
+msgstr "Detener impresion"
+
+# MSG_STOPPED
+#: messages.c:109
+msgid "STOPPED. "
+msgstr "PARADA"
+
+# MSG_SUPPORT
+#: ultralcd.cpp:6742
+msgid "Support"
+msgstr "Soporte"
+
+# MSG_SELFTEST_SWAPPED
+#: ultralcd.cpp:8080
+msgid "Swapped"
+msgstr "Intercambiado"
+
+# 
+#: ultralcd.cpp:4715
+msgid "Select filament:"
+msgstr "Selecciona filamento:"
+
+# MSG_TEMP_CALIBRATION c=14
+#: messages.c:110
+msgid "Temp. cal."
+msgstr "Cal. temp."
+
+# 
+#: ultralcd.cpp:4856
+msgid "Select temperature which matches your material."
+msgstr "Selecciona la temperatura adecuada a tu material."
+
+# MSG_CALIBRATION_PINDA_MENU c=17 r=1
+#: ultralcd.cpp:5816
+msgid "Temp. calibration"
+msgstr "Calibracion temp."
+
+# MSG_TEMP_CAL_FAILED c=20 r=8
+#: ultralcd.cpp:3845
+msgid "Temperature calibration failed"
+msgstr "Fallo de la calibracion de temperatura"
+
+# MSG_TEMP_CALIBRATION_DONE c=20 r=12
+#: messages.c:111
+msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
+msgstr "Calibracion temperatura terminada. Haz clic para continuar."
+
+#  c=20 r=3
+#: ultralcd.cpp:7311
+msgid "Sensor verified, remove the filament now."
+msgstr "Sensor verificado, retire el filamento ahora."
+
+# MSG_TEMPERATURE
+#: ultralcd.cpp:5679
+msgid "Temperature"
+msgstr "Temperatura"
+
+# MSG_MENU_TEMPERATURES c=15 r=1
+#: ultralcd.cpp:2160
+msgid "Temperatures"
+msgstr "Temperaturas"
+
+# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
+#: messages.c:46
+msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
+msgstr "Todavia es necesario hacer una calibracion Z. Por favor siga el manual, capitulo Primeros pasos, seccion Calibracion del flujo."
+
+# 
+#: ultralcd.cpp:2817
+msgid "Total filament"
+msgstr "Filamento total"
+
+# 
+#: ultralcd.cpp:2818
+msgid "Total print time"
+msgstr "Tiempo total"
+
+# MSG_TUNE
+#: ultralcd.cpp:6612
+msgid "Tune"
+msgstr "Ajustar"
+
+# 
+#: 
+msgid "Unload"
+msgstr "Descargar"
+
+# MSG_TOTAL_FAILURES c=20
+#: messages.c:99
+msgid "Total failures"
+msgstr "Fallos totales"
+
+# 
+#: ultralcd.cpp:2238
+msgid "to load filament"
+msgstr "para cargar el filamento"
+
+# 
+#: ultralcd.cpp:2242
+msgid "to unload filament"
+msgstr "para descargar el filamento"
+
+# MSG_UNLOAD_FILAMENT c=17
+#: messages.c:112
+msgid "Unload filament"
+msgstr "Soltar filamento"
+
+# MSG_UNLOADING_FILAMENT c=20 r=1
+#: messages.c:113
+msgid "Unloading filament"
+msgstr "Soltando filamento"
+
+# MSG_TOTAL c=6
+#: messages.c:98
+msgid "Total"
+msgstr ""
+
+# MSG_USED c=19 r=1
+#: ultralcd.cpp:5932
+msgid "Used during print"
+msgstr "Usado en impresion"
+
+# MSG_MENU_VOLTAGES c=15 r=1
+#: ultralcd.cpp:2163
+msgid "Voltages"
+msgstr "Voltajes"
+
+# 
+#: ultralcd.cpp:2132
+msgid "unknown"
+msgstr "desconocido"
+
+# MSG_USERWAIT
+#: Marlin_main.cpp:5689
+msgid "Wait for user..."
+msgstr "Esperando ordenes"
+
+# MSG_WAITING_TEMP c=20 r=3
+#: ultralcd.cpp:3357
+msgid "Waiting for nozzle and bed cooling"
+msgstr "Esperando enfriamiento de la base y extrusor."
+
+# MSG_WAITING_TEMP_PINDA c=20 r=3
+#: ultralcd.cpp:3318
+msgid "Waiting for PINDA probe cooling"
+msgstr "Esperando a que se enfrie la sonda PINDA"
+
+# 
+#: 
+msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU tube. Use eject if it is hidden in tube."
+msgstr "Usa unload para retirar el filamento 1 si sobresale por fuera de la parte trasera del tubo MMU. Usa Expulsar si esta escondido dentro del tubo"
+
+# MSG_CHANGED_BOTH c=20 r=4
+#: Marlin_main.cpp:1573
+msgid "Warning: both printer type and motherboard type changed."
+msgstr "Aviso: tanto el tipo de impresora como el tipo de la placa han cambiado."
+
+# MSG_CHANGED_MOTHERBOARD c=20 r=4
+#: Marlin_main.cpp:1565
+msgid "Warning: motherboard type changed."
+msgstr "Cuidado: el tipo de placa ha cambiado."
+
+# MSG_CHANGED_PRINTER c=20 r=4
+#: Marlin_main.cpp:1569
+msgid "Warning: printer type changed."
+msgstr "Cuidado: Ha cambiado el tipo de impresora."
+
+# MSG_UNLOAD_SUCCESSFUL c=20 r=2
+#: Marlin_main.cpp:3308
+msgid "Was filament unload successful?"
+msgstr "?Se cargocon exito el filamento?"
+
+# MSG_SELFTEST_WIRINGERROR
+#: messages.c:96
+msgid "Wiring error"
+msgstr "Error de conexion"
+
+# MSG_WIZARD c=17 r=1
+#: ultralcd.cpp:5775
+msgid "Wizard"
+msgstr ""
+
+# MSG_XYZ_DETAILS c=18
+#: ultralcd.cpp:2152
+msgid "XYZ cal. details"
+msgstr "Detalles cal. XYZ"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
+#: messages.c:18
+msgid "XYZ calibration failed. Please consult the manual."
+msgstr "Calibracion XYZ fallada. Consulta el manual por favor."
+
+# MSG_YES
+#: messages.c:119
+msgid "Yes"
+msgstr "Si"
+
+# MSG_WIZARD_QUIT c=20 r=8
+#: messages.c:118
+msgid "You can always resume the Wizard from Calibration -> Wizard."
+msgstr "Siempre puedes acceder al asistente desde Calibracion -> Wizard"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
+#: ultralcd.cpp:3817
+msgid "XYZ calibration all right. Skew will be corrected automatically."
+msgstr "Calibracion XYZ correcta. La inclinacion se corregira automaticamente."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
+#: ultralcd.cpp:3814
+msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
+msgstr "Calibracion XYZ correcta. Los ejes X / Y estan ligeramente inclinados. Buen trabajo!"
+
+# MSG_TIMEOUT c=12
+#: messages.c:157
+msgid "Timeout"
+msgstr "Expirar"
+
+# MSG_X_CORRECTION c=13
+#: ultralcd.cpp:5091
+msgid "X-correct:"
+msgstr "Corregir-X:"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
+#: ultralcd.cpp:3811
+msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
+msgstr "Calibracion XYZ ok. Ejes X/Y perpendiculares. Enhorabuena!"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
+#: ultralcd.cpp:3795
+msgid "XYZ calibration compromised. Front calibration points not reachable."
+msgstr "Calibrazion XYZ comprometida. Puntos frontales no alcanzables."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
+#: ultralcd.cpp:3798
+msgid "XYZ calibration compromised. Right front calibration point not reachable."
+msgstr "Calibrazion XYZ comprometida. Punto frontal derecho no alcanzable."
+
+# MSG_LOAD_ALL c=17
+#: ultralcd.cpp:6171
+msgid "Load all"
+msgstr "Intr. todos fil."
+
+# 
+#: ultralcd.cpp:3777
+msgid "XYZ calibration failed. Bed calibration point was not found."
+msgstr "Calibracion XYZ fallada. Puntos de calibracion en la base no encontrados."
+
+# 
+#: ultralcd.cpp:3783
+msgid "XYZ calibration failed. Front calibration points not reachable."
+msgstr "Calibracion XYZ fallada. Puntos frontales no alcanzables."
+
+# 
+#: ultralcd.cpp:3786
+msgid "XYZ calibration failed. Right front calibration point not reachable."
+msgstr "Calibracion XYZ fallad. Punto frontal derecho no alcanzable."
+
+# 
+#: ultralcd.cpp:2917
+msgid "Y distance from min"
+msgstr "Distancia en Y desde el min"
+
+# 
+#: ultralcd.cpp:4859
+msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
+msgstr "La impresora comenzara a imprimir una linea en zig-zag. Gira el dial hasta que la linea alcance la altura optima. Mira las fotos del manual (Capitulo de calibracion)."
+
+#  c=20 r=5
+#: ultralcd.cpp:7315
+msgid "Verification failed, remove the filament and try again."
+msgstr "La verificacion fallo, retire el filamento e intente nuevamente."
+
+# MSG_Y_CORRECTION c=13
+#: ultralcd.cpp:5092
+msgid "Y-correct:"
+msgstr "Corregir-Y:"
+
+# MSG_OFF
+#: messages.c:122
+msgid "Off"
+msgstr "Ina"
+
+# MSG_ON
+#: messages.c:123
+msgid "On"
+msgstr "Act"
+
+# 
+#: messages.c:62
+msgid "Back"
+msgstr "atras"
+
+# 
+#: ultralcd.cpp:5647
+msgid "Checks"
+msgstr "Comprobaciones"
+
+# 
+#: ultralcd.cpp:8090
+msgid "False triggering"
+msgstr "Falsa activacion"
+
+# 
+#: ultralcd.cpp:3920
+msgid "FINDA:"
+msgstr "FINDA:"
+
+# MSG_FIRMWARE
+#: language.h:24
+msgid "Firmware"
+msgstr ""
+
+# MSG_STRICT
+#: messages.c:129
+msgid "Strict"
+msgstr "Estrict"
+
+# MSG_WARN
+#: messages.c:128
+msgid "Warn"
+msgstr "Aviso"
+
+# MSG_HW_SETUP c=18
+#: messages.c:100
+msgid "HW Setup"
+msgstr "Configuracion HW"
+
+# 
+#: ultralcd.cpp:3924
+msgid "IR:"
+msgstr ""
+
+# MSG_MAGNETS_COMP
+#: messages.c:150
+msgid "Magnets comp."
+msgstr "Comp. imanes"
+
+# MSG_MESH
+#: messages.c:147
+msgid "Mesh"
+msgstr "Malla"
+
+# 
+#: Marlin_main.cpp:927
+msgid "MK3S firmware detected on MK3 printer"
+msgstr "Firmware MK3S detectado en impresora MK3"
+
+# MSG_MMU_MODE
+#: messages.c:136
+msgid "MMU Mode"
+msgstr "Modo MMU"
+
+# 
+#: ultralcd.cpp:4395
+msgid "Mode change in progress ..."
+msgstr "Cambio de modo progresando ..."
+
+# MSG_MODEL
+#: messages.c:130
+msgid "Model"
+msgstr "Modelo"
+
+# MSG_NOZZLE_DIAMETER
+#: messages.c:135
+msgid "Nozzle d."
+msgstr "Diam. nozzl"
+
+# 
+#: util.cpp:514
+msgid "G-code sliced for a different level. Continue?"
+msgstr "Codigo G laminado para un nivel diferente. ?Continuar?"
+
+# 
+#: util.cpp:520
+msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
+msgstr "Codigo G laminado para un nivel diferente. Por favor relamina el modelo de nuevo. Impresion cancelada."
+
+# MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5
+#: messages.c:133
+msgid "G-code sliced for a different printer type. Continue?"
+msgstr "Codigo G laminado para un tipo de impresora diferente. ?Continuar?"
+
+# MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=6
+#: messages.c:134
+msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
+msgstr "Codigo G laminado para una impresora diferente. Por favor relamina el modelo de nuevo. Impresion cancelada."
+
+# 
+#: util.cpp:481
+msgid "G-code sliced for a newer firmware. Continue?"
+msgstr "Codigo G laminado para nuevo firmware. ?Continuar?"
+
+# 
+#: util.cpp:487
+msgid "G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
+msgstr "Codigo G laminado para nuevo firmware. Por favor actualiza el firmware. Impresion cancelada."
+
+# 
+#: ultralcd.cpp:3916
+msgid "PINDA:"
+msgstr "PINDA:"
+
+#  c=20
+#: ultralcd.cpp:2402
+msgid "Preheating to cut"
+msgstr "Precalent. laminar"
+
+#  c=20
+#: ultralcd.cpp:2399
+msgid "Preheating to eject"
+msgstr "Precalent. expulsar"
+
+# 
+#: util.cpp:394
+msgid "Printer nozzle diameter differs from the G-code. Continue?"
+msgstr "Diametro nozzle impresora difiere de cod.G. ?Continuar?"
+
+# 
+#: util.cpp:401
+msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
+msgstr "Diametro nozzle Impresora difiere de cod.G. Comprueba los valores en ajustes. Impresion cancelada."
+
+#  c=20
+#: ultralcd.cpp:8095
+msgid "%s level expected"
+msgstr ""
+
+# 
+#: ultralcd.cpp:6574
+msgid "Rename"
+msgstr "Renombrar"
+
+# 
+#: ultralcd.cpp:6567
+msgid "Select"
+msgstr "Seleccionar"
+
+# 
+#: ultralcd.cpp:2154
+msgid "Sensor info"
+msgstr "Info sensor"
+
+# MSG_SHEET c=10
+#: messages.c:63
+msgid "Sheet"
+msgstr "Lamina"
+
+# MSG_SOUND_BLIND
+#: messages.c:146
+msgid "Assist"
+msgstr "Asistido"
+
+# MSG_STEEL_SHEET c=18
+#: messages.c:64
+msgid "Steel sheets"
+msgstr "Lamina de acero"
+
+# MSG_Z_CORRECTION c=13
+#: ultralcd.cpp:5093
+msgid "Z-correct:"
+msgstr "Corregir-Z:"
+
+# MSG_Z_PROBE_NR
+#: messages.c:149
+msgid "Z-probe nr."
+msgstr "Z-sensor nr."
+

+ 1852 - 1842
lang/po/new/fr.po

@@ -1,1842 +1,1852 @@
-# Translation of Prusa-Firmware into French.
-#
-msgid ""
-msgstr ""
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Project-Id-Version: Prusa-Firmware\n"
-"POT-Creation-Date: Wed May 13 17:42:13 CEST 2020\n"
-"PO-Revision-Date: Wed May 13 17:42:13 CEST 2020\n"
-"Language-Team: \n"
-"X-Generator: Poedit 2.0.7\n"
-"X-Poedit-SourceCharset: UTF-8\n"
-"Last-Translator: \n"
-"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-
-# 
-#: 
-msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
-msgstr "[%.7s]Ajust. du Z\x0aValeur enreg, contin\x0aou depart a zero?\x0a%cContinuer%cReset"
-
-# MSG_03_OR_OLDER c=18
-#: messages.c:144
-msgid " 0.3 or older"
-msgstr " 0.3 ou +ancien"
-
-# MSG_04_OR_NEWER c=18
-#: messages.c:143
-msgid " 0.4 or newer"
-msgstr " 0.4 ou +recent"
-
-# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
-#: messages.c:36
-msgid " of 4"
-msgstr " de 4"
-
-# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:56
-msgid " of 9"
-msgstr " de 9"
-
-# MSG_MEASURED_OFFSET
-#: ultralcd.cpp:3064
-msgid "[0;0] point offset"
-msgstr "Offset point [0;0]"
-
-# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
-#: 
-msgid "Crash detection can\x0abe turned on only in\x0aNormal mode"
-msgstr "La detection de\x0acrash peut etre\x0aactive seulement en\x0amode Normal"
-
-# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
-#: 
-msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
-msgstr "ATTENTION:\x0aDetection de crash\x0adesactivee en\x0amode furtif"
-
-# 
-#: ultralcd.cpp:2460
-msgid ">Cancel"
-msgstr ">Annuler"
-
-# MSG_BABYSTEPPING_Z c=15
-#: ultralcd.cpp:3184
-msgid "Adjusting Z:"
-msgstr "Ajuster Z:"
-
-# MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:8677
-msgid "All correct      "
-msgstr "Tout est correct"
-
-# MSG_WIZARD_DONE c=20 r=8
-#: messages.c:99
-msgid "All is done. Happy printing!"
-msgstr "Tout est pret. Bonne impression!"
-
-# 
-#: ultralcd.cpp:1956
-msgid "Ambient"
-msgstr "Ambiant"
-
-# MSG_AUTO c=6
-#: messages.c:140
-msgid "Auto"
-msgstr ""
-
-# MSG_PRESS c=20 r=2
-#: ultralcd.cpp:2609
-msgid "and press the knob"
-msgstr "et appuyez sur le bouton"
-
-# MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3506
-msgid "Are left and right Z~carriages all up?"
-msgstr "Z~carriages gauche + droite tout en haut?"
-
-# MSG_AUTO_DEPLETE c=17 r=1
-#: messages.c:108
-msgid "SpoolJoin"
-msgstr ""
-
-# MSG_AUTO_HOME
-#: messages.c:11
-msgid "Auto home"
-msgstr "Mise a 0 des axes"
-
-# MSG_AUTOLOAD_FILAMENT c=18
-#: ultralcd.cpp:6961
-msgid "AutoLoad filament"
-msgstr "Autocharge du fil."
-
-# MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4445
-msgid "Autoloading filament available only when filament sensor is turned on..."
-msgstr "Chargement auto du filament uniquement si le capteur de filament est active."
-
-# MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2804
-msgid "Autoloading filament is active, just press the knob and insert filament..."
-msgstr "Chargement auto. du fil. active, appuyez sur le bouton et inserez le fil."
-
-# MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:8325
-msgid "Axis length"
-msgstr "Longueur de l'axe"
-
-# MSG_SELFTEST_AXIS
-#: ultralcd.cpp:8327
-msgid "Axis"
-msgstr "Axe"
-
-# MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:8269
-msgid "Bed / Heater"
-msgstr "Lit / Chauffage"
-
-# MSG_BED_DONE
-#: messages.c:15
-msgid "Bed done"
-msgstr "Plateau termine"
-
-# MSG_BED_HEATING
-#: messages.c:16
-msgid "Bed Heating"
-msgstr "Chauffe du lit"
-
-# MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5861
-msgid "Bed level correct"
-msgstr "Corr. niveau plateau"
-
-# MSG_BELTTEST c=17
-#: ultralcd.cpp:5841
-msgid "Belt test        "
-msgstr "Test de courroie "
-
-# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
-#: messages.c:17
-msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
-msgstr "Capt. non declenche pendant que je nivele le plateau. Debris sur buse? En attente d'un reset."
-
-# MSG_BRIGHT c=6
-#: messages.c:138
-msgid "Bright"
-msgstr "Brill."
-
-# MSG_BRIGHTNESS c=18
-#: messages.c:134
-msgid "Brightness"
-msgstr "Luminosite"
-
-# MSG_BED
-#: messages.c:14
-msgid "Bed"
-msgstr "Lit"
-
-# MSG_MENU_BELT_STATUS c=18
-#: ultralcd.cpp:2009
-msgid "Belt status"
-msgstr "Statut courroie"
-
-# MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:67
-msgid "Blackout occurred. Recover print?"
-msgstr "Coupure detectee. Reprendre impression?"
-
-# 
-#: ultralcd.cpp:8679
-msgid "Calibrating home"
-msgstr "Calib. mise a 0"
-
-# MSG_CALIBRATE_BED
-#: ultralcd.cpp:5850
-msgid "Calibrate XYZ"
-msgstr "Calibrer XYZ"
-
-# MSG_HOMEYZ
-#: messages.c:44
-msgid "Calibrate Z"
-msgstr "Calibrer Z"
-
-# MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4637
-msgid "Calibrate"
-msgstr "Calibrer"
-
-# MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3469
-msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
-msgstr "Calibration de XYZ. Tournez le bouton pour faire monter l'extrudeur dans l'axe Z jusqu'aux butees. Cliquez une fois fait."
-
-# MSG_CALIBRATE_Z_AUTO c=20 r=2
-#: messages.c:19
-msgid "Calibrating Z"
-msgstr "Calibration Z"
-
-# MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3469
-msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
-msgstr "Calibration de Z. Tournez le bouton pour faire monter l'extrudeur dans l'axe Z jusqu'aux butees. Cliquez une fois fait."
-
-# MSG_HOMEYZ_DONE
-#: ultralcd.cpp:865
-msgid "Calibration done"
-msgstr "Calibration terminee"
-
-# MSG_MENU_CALIBRATION
-#: messages.c:57
-msgid "Calibration"
-msgstr ""
-
-# 
-#: ultralcd.cpp:4815
-msgid "Cancel"
-msgstr "Annuler"
-
-# MSG_SD_REMOVED
-#: ultralcd.cpp:9090
-msgid "Card removed"
-msgstr "Carte retiree"
-
-# MSG_NOT_COLOR
-#: ultralcd.cpp:2709
-msgid "Color not correct"
-msgstr "Couleur incorrecte"
-
-# MSG_COOLDOWN
-#: messages.c:22
-msgid "Cooldown"
-msgstr "Refroidissement"
-
-# 
-#: ultralcd.cpp:4570
-msgid "Copy selected language?"
-msgstr "Copier la langue choisie?"
-
-# MSG_CRASHDETECT c=13
-#: messages.c:24
-msgid "Crash det."
-msgstr "Detect.crash"
-
-# 
-#: ultralcd.cpp:4950
-msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
-msgstr "Choisissez un filament pour la Calibration de la Premiere Couche et selectionnez-le depuis le menu a l'ecran."
-
-# MSG_CRASH_DETECTED c=20 r=1
-#: messages.c:23
-msgid "Crash detected."
-msgstr "Crash detecte."
-
-# 
-#: Marlin_main.cpp:607
-msgid "Crash detected. Resume print?"
-msgstr "Crash detecte. Poursuivre l'impression?"
-
-# 
-#: ultralcd.cpp:1785
-msgid "Crash"
-msgstr ""
-
-# MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:6002
-msgid "Current"
-msgstr "Actuel"
-
-# MSG_DATE c=17 r=1
-#: ultralcd.cpp:2163
-msgid "Date:"
-msgstr "Date:"
-
-# MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5743
-msgid "Disable steppers"
-msgstr "Desactiver moteurs"
-
-# MSG_BABYSTEP_Z_NOT_SET c=20 r=12
-#: messages.c:13
-msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
-msgstr "La distance entre la pointe de la buse et la surface du plateau n'a pas encore ete reglee. Suivez le manuel, chapitre Premiers pas, section Calibration de la premiere couche."
-
-# MSG_FS_CONTINUE c=5
-#: messages.c:132
-msgid "Cont."
-msgstr ""
-
-# MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:5125
-msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
-msgstr "Voulez-vous refaire l'etape pour reajuster la hauteur entre la buse et le plateau chauffant?"
-
-# MSG_EXTRUDER_CORRECTION c=13
-#: ultralcd.cpp:5194
-msgid "E-correct:"
-msgstr "Correct-E:"
-
-# MSG_EJECT_FILAMENT c=17 r=1
-#: messages.c:49
-msgid "Eject filament"
-msgstr "Remonter le fil."
-
-# MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1416
-msgid "Ejecting filament"
-msgstr "Le fil. remonte"
-
-# MSG_SELFTEST_ENDSTOP_NOTHIT c=20
-#: ultralcd.cpp:8293
-msgid "Endstop not hit"
-msgstr "Butee non atteinte"
-
-# MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:8287
-msgid "Endstop"
-msgstr "Butee"
-
-# MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:8275
-msgid "Endstops"
-msgstr "Butees"
-
-# MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6998
-msgid "Error - static memory has been overwritten"
-msgstr "Erreur - la memoire statique a ete ecrasee"
-
-# MSG_CUT_FILAMENT c=16
-#: messages.c:50
-msgid "Cut filament"
-msgstr "Coupe filament"
-
-# MSG_CUTTER c=9
-#: messages.c:109
-msgid "Cutter"
-msgstr "Coupeur"
-
-#  c=18
-#: mmu.cpp:1388
-msgid "Cutting filament"
-msgstr "Je coupe filament"
-
-# MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4458
-msgid "ERROR: Filament sensor is not responding, please check connection."
-msgstr "ERREUR: Le capteur de filament ne repond pas, verifiez le branchement."
-
-# MSG_DIM c=6
-#: messages.c:139
-msgid "Dim"
-msgstr ""
-
-# MSG_ERROR
-#: messages.c:25
-msgid "ERROR:"
-msgstr "ERREUR:"
-
-# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:8686
-msgid "Extruder fan:"
-msgstr "Ventilo extrudeur:"
-
-# MSG_INFO_EXTRUDER c=18
-#: ultralcd.cpp:2211
-msgid "Extruder info"
-msgstr "Infos extrudeur"
-
-# MSG_MOVE_E
-#: messages.c:26
-msgid "Extruder"
-msgstr "Extrudeur"
-
-# 
-#: ultralcd.cpp:6985
-msgid "Fail stats MMU"
-msgstr "Stat. d'echec MMU"
-
-# MSG_FSENSOR_AUTOLOAD c=13
-#: messages.c:40
-msgid "F. autoload"
-msgstr "F. autocharg."
-
-# 
-#: ultralcd.cpp:6982
-msgid "Fail stats"
-msgstr "Stat. d'echec"
-
-# MSG_FAN_SPEED c=14
-#: messages.c:28
-msgid "Fan speed"
-msgstr "Vitesse vent."
-
-# MSG_SELFTEST_FAN c=20
-#: messages.c:74
-msgid "Fan test"
-msgstr "Test du ventilateur"
-
-# MSG_FANS_CHECK
-#: ultralcd.cpp:5751
-msgid "Fans check"
-msgstr "Verif vent."
-
-# MSG_FSENSOR
-#: messages.c:41
-msgid "Fil. sensor"
-msgstr "Capteur Fil."
-
-#  c=14
-#: ultralcd.cpp:1784
-msgid "Filam. runouts"
-msgstr "Fins filament"
-
-# MSG_FILAMENT_CLEAN c=20 r=2
-#: messages.c:29
-msgid "Filament extruding & with correct color?"
-msgstr "Filament extrude et avec bonne couleur?"
-
-# MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2705
-msgid "Filament not loaded"
-msgstr "Filament non charge"
-
-# MSG_FILAMENT_SENSOR c=20
-#: messages.c:80
-msgid "Filament sensor"
-msgstr "Capteur de filament"
-
-# MSG_FILAMENT_USED c=19
-#: ultralcd.cpp:2869
-msgid "Filament used"
-msgstr "Filament utilise"
-
-# MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2870
-msgid "Print time"
-msgstr "Temps d'impression"
-
-# MSG_FS_ACTION c=10
-#: messages.c:131
-msgid "FS Action"
-msgstr ""
-
-#  c=18
-#: Marlin_main.cpp:9512
-msgid "FS v0.4 or newer"
-msgstr "FS v0.4 ou +recent"
-
-# MSG_FILE_INCOMPLETE c=20 r=3
-#: ultralcd.cpp:8814
-msgid "File incomplete. Continue anyway?"
-msgstr "Fichier incomplet. Continuer qd meme?"
-
-# MSG_FINISHING_MOVEMENTS c=20
-#: messages.c:37
-msgid "Finishing movements"
-msgstr "Mouvement final"
-
-# MSG_V2_CALIBRATION c=18
-#: messages.c:103
-msgid "First layer cal."
-msgstr "Cal. 1ere couche"
-
-# MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:5046
-msgid "First, I will run the selftest to check most common assembly problems."
-msgstr "D'abord, je vais lancer le Auto-test pour verifier les problemes d'assemblage les plus communs."
-
-# 
-#: mmu.cpp:727
-msgid "Fix the issue and then press button on MMU unit."
-msgstr "Corrigez le probleme et appuyez sur le bouton sur la MMU."
-
-# MSG_FLOW
-#: ultralcd.cpp:7125
-msgid "Flow"
-msgstr "Flux"
-
-# MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2156
-msgid "forum.prusa3d.com"
-msgstr ""
-
-# MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:71
-msgid "Front print fan?"
-msgstr "Ventilo impr avant?"
-
-# MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3266
-msgid "Front side[um]"
-msgstr "Avant [um]"
-
-# MSG_SELFTEST_FANS
-#: ultralcd.cpp:8333
-msgid "Front/left fans"
-msgstr "Ventilos avt/gauche"
-
-# MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:8263
-msgid "Heater/Thermistor"
-msgstr "Chauffage/Thermistor"
-
-# MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:9440
-msgid "Heating disabled by safety timer."
-msgstr "Chauffage desactivee par le compteur de securite."
-
-# MSG_HEATING_COMPLETE c=20
-#: messages.c:43
-msgid "Heating done."
-msgstr "Chauffe terminee."
-
-# MSG_HEATING
-#: messages.c:42
-msgid "Heating"
-msgstr "Chauffe"
-
-# MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:5025
-msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
-msgstr "Bonjour, je suis votre imprimante Original Prusa i3. Voulez-vous que je vous guide a travers le processus d'installation?"
-
-# MSG_PRUSA3D_HOWTO
-#: ultralcd.cpp:2157
-msgid "howto.prusa3d.com"
-msgstr ""
-
-# MSG_FILAMENTCHANGE
-#: messages.c:34
-msgid "Change filament"
-msgstr "Changer filament"
-
-# MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2620
-msgid "Change success!"
-msgstr "Changement reussi!"
-
-# MSG_CORRECTLY c=20
-#: ultralcd.cpp:2697
-msgid "Changed correctly?"
-msgstr "Change correctement?"
-
-# MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:77
-msgid "Checking bed     "
-msgstr "Verif. plateau chauf"
-
-# MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:8668
-msgid "Checking endstops"
-msgstr "Verification butees"
-
-# MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:8674
-msgid "Checking hotend  "
-msgstr "Verif. du hotend"
-
-# MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:78
-msgid "Checking sensors "
-msgstr "Verif. des capteurs"
-
-# MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:7482
-msgid "Checking X axis  "
-msgstr "Verification axe X"
-
-# MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:7491
-msgid "Checking Y axis  "
-msgstr "Verification axe Y"
-
-# MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:8671
-msgid "Checking Z axis  "
-msgstr "Verification axe Z"
-
-# MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:45
-msgid "Choose extruder:"
-msgstr "Choisir extrudeur:"
-
-# MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:46
-msgid "Choose filament:"
-msgstr "Choix du filament:"
-
-# MSG_FILAMENT c=17 r=1
-#: messages.c:27
-msgid "Filament"
-msgstr ""
-
-# MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:5055
-msgid "I will run xyz calibration now. It will take approx. 12 mins."
-msgstr "Je vais maintenant lancer la calibration XYZ. Cela prendra 12 min environ."
-
-# MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:5063
-msgid "I will run z calibration now."
-msgstr "Je vais maintenant lancer la calibration Z."
-
-# MSG_WATCH
-#: messages.c:97
-msgid "Info screen"
-msgstr "Ecran d'info"
-
-# MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2605
-msgid "Insert filament"
-msgstr "Inserez le filament"
-
-# MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4835
-msgid "Is filament loaded?"
-msgstr "Fil. est-il charge?"
-
-# MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:90
-msgid "Is steel sheet on heatbed?"
-msgstr "Est la plaque sur le plat. chauffant?"
-
-# 
-#: ultralcd.cpp:1727
-msgid "Last print failures"
-msgstr "Echecs derniere imp."
-
-# 
-#: ultralcd.cpp:5133
-msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
-msgstr "Si vous avez d'autres feuilles d'acier,  calibrez leurs pre-reglages dans Reglages - Config HW - Plaque en acier."
-
-# 
-#: ultralcd.cpp:1704
-msgid "Last print"
-msgstr "Derniere impres."
-
-# MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:72
-msgid "Left hotend fan?"
-msgstr "Ventilo gauche?"
-
-# 
-#: ultralcd.cpp:2993
-msgid "Left"
-msgstr "Gauche"
-
-# MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3264
-msgid "Left side [um]"
-msgstr "Gauche [um]"
-
-# 
-#: ultralcd.cpp:5766
-msgid "Lin. correction"
-msgstr "Correction lin."
-
-# MSG_BABYSTEP_Z
-#: messages.c:12
-msgid "Live adjust Z"
-msgstr "Ajuster Z en dir."
-
-#  c=20 r=6
-#: ultralcd.cpp:7527
-msgid "Insert the filament (do not load it) into the extruder and then press the knob."
-msgstr "Veuillez inserer le filament ( ne le chargez pas) dans l'extrudeur, puis appuyez sur le bouton."
-
-# MSG_LOAD_FILAMENT c=17
-#: messages.c:47
-msgid "Load filament"
-msgstr "Charger filament"
-
-# MSG_LOADING_COLOR
-#: ultralcd.cpp:2645
-msgid "Loading color"
-msgstr "Charg. de la couleur"
-
-# MSG_LOADING_FILAMENT c=20
-#: messages.c:48
-msgid "Loading filament"
-msgstr "Chargement du fil."
-
-# MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:8317
-msgid "Loose pulley"
-msgstr "Poulie lache"
-
-# 
-#: ultralcd.cpp:6944
-msgid "Load to nozzle"
-msgstr "Charger la buse"
-
-# MSG_M117_V2_CALIBRATION c=25
-#: messages.c:51
-msgid "M117 First layer cal."
-msgstr "M117 Cal. 1ere couche"
-
-# MSG_MAIN
-#: messages.c:52
-msgid "Main"
-msgstr "Menu principal"
-
-# MSG_BL_HIGH c=12
-#: messages.c:135
-msgid "Level Bright"
-msgstr "Niveau brill"
-
-# MSG_BL_LOW c=12
-#: messages.c:136
-msgid "Level Dimmed"
-msgstr ""
-
-# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:55
-msgid "Measuring reference height of calibration point"
-msgstr "Je mesure la hauteur de reference du point de calibrage"
-
-# MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5856
-msgid "Mesh Bed Leveling"
-msgstr ""
-
-# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:765
-msgid "MMU OK. Resuming position..."
-msgstr "MMU OK. Reprise de la position ..."
-
-# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:758
-msgid "MMU OK. Resuming temperature..."
-msgstr "MMU OK. Rechauffage de la buse..."
-
-# 
-#: ultralcd.cpp:3034
-msgid "Measured skew"
-msgstr "Deviat.mesuree"
-
-# 
-#: ultralcd.cpp:1728
-msgid "MMU fails"
-msgstr "Echecs MMU"
-
-# 
-#: mmu.cpp:1588
-msgid "MMU load failed     "
-msgstr "Echec chargement MMU"
-
-# 
-#: ultralcd.cpp:1729
-msgid "MMU load fails"
-msgstr "Echecs charg. MMU"
-
-# MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:776
-msgid "MMU OK. Resuming..."
-msgstr "MMU OK. Reprise ..."
-
-# MSG_MODE
-#: messages.c:84
-msgid "Mode"
-msgstr ""
-
-#  c=20 r=3
-#: Marlin_main.cpp:879
-msgid "MK3 firmware detected on MK3S printer"
-msgstr "Firmware MK3 detecte sur imprimante MK3S"
-
-# MSG_NORMAL
-#: messages.c:88
-msgid "Normal"
-msgstr ""
-
-# MSG_SILENT
-#: messages.c:87
-msgid "Silent"
-msgstr "Furtif"
-
-# 
-#: mmu.cpp:722
-msgid "MMU needs user attention."
-msgstr "Le MMU necessite l'attention de l'utilisateur."
-
-# 
-#: ultralcd.cpp:1755
-msgid "MMU power fails"
-msgstr "Echecs alim. MMU"
-
-# MSG_STEALTH
-#: messages.c:89
-msgid "Stealth"
-msgstr "Furtif"
-
-# MSG_AUTO_POWER
-#: messages.c:86
-msgid "Auto power"
-msgstr "Puiss.auto"
-
-# MSG_HIGH_POWER
-#: messages.c:85
-msgid "High power"
-msgstr "Haute puiss"
-
-# 
-#: ultralcd.cpp:2186
-msgid "MMU2 connected"
-msgstr "MMU2 connecte"
-
-# MSG_SELFTEST_MOTOR
-#: messages.c:79
-msgid "Motor"
-msgstr "Moteur"
-
-# MSG_MOVE_AXIS
-#: ultralcd.cpp:5741
-msgid "Move axis"
-msgstr "Deplacer l'axe"
-
-# MSG_MOVE_X
-#: ultralcd.cpp:4361
-msgid "Move X"
-msgstr "Deplacer X"
-
-# MSG_MOVE_Y
-#: ultralcd.cpp:4362
-msgid "Move Y"
-msgstr "Deplacer Y"
-
-# MSG_MOVE_Z
-#: ultralcd.cpp:4363
-msgid "Move Z"
-msgstr "Deplacer Z"
-
-# MSG_NO_MOVE
-#: Marlin_main.cpp:5541
-msgid "No move."
-msgstr "Pas de mouvement."
-
-# MSG_NO_CARD
-#: ultralcd.cpp:6911
-msgid "No SD card"
-msgstr "Pas de carte SD"
-
-# MSG_NA
-#: messages.c:107
-msgid "N/A"
-msgstr ""
-
-# MSG_NO
-#: messages.c:58
-msgid "No"
-msgstr "Non"
-
-# MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:8265
-msgid "Not connected"
-msgstr "Non connecte"
-
-# 
-#: util.cpp:293
-msgid "New firmware version available:"
-msgstr "Nouvelle version de firmware disponible:"
-
-# MSG_SELFTEST_FAN_NO c=19
-#: messages.c:75
-msgid "Not spinning"
-msgstr "Ne tourne pas"
-
-# MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4946
-msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
-msgstr "Maintenant je vais calibrer la distance entre la pointe de la buse et la surface du plateau chauffant."
-
-# MSG_WIZARD_WILL_PREHEAT c=20 r=4
-#: ultralcd.cpp:5071
-msgid "Now I will preheat nozzle for PLA."
-msgstr "Maintenant je vais prechauffer la buse pour du PLA."
-
-# MSG_NOZZLE
-#: messages.c:59
-msgid "Nozzle"
-msgstr "Buse"
-
-# MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
-#: Marlin_main.cpp:1518
-msgid "Old settings found. Default PID, Esteps etc. will be set."
-msgstr "Anciens reglages trouves. Le PID, les Esteps etc. par defaut seront regles"
-
-# 
-#: ultralcd.cpp:5062
-msgid "Now remove the test print from steel sheet."
-msgstr "Retirez maintenant l'impression de test de la plaque en acier."
-
-# 
-#: ultralcd.cpp:1654
-msgid "Nozzle FAN"
-msgstr "Vent. buse"
-
-# MSG_PAUSE_PRINT
-#: ultralcd.cpp:6875
-msgid "Pause print"
-msgstr "Pause de l'impr."
-
-# MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1539
-msgid "PID cal.           "
-msgstr "Calib. PID"
-
-# MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1545
-msgid "PID cal. finished"
-msgstr "Calib. PID terminee"
-
-# MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5862
-msgid "PID calibration"
-msgstr "Calibration PID"
-
-# MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:896
-msgid "PINDA Heating"
-msgstr "Chauffe de la PINDA"
-
-# MSG_PAPER c=20 r=10
-#: messages.c:60
-msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
-msgstr "Placez une feuille de papier sous la buse pendant la calibration des 4 premiers points. Si la buse accroche le papier, eteignez vite l'imprimante."
-
-# MSG_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:5128
-msgid "Please clean heatbed and then press the knob."
-msgstr "Nettoyez plateau chauffant en acier et appuyez sur le bouton."
-
-# MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
-#: messages.c:21
-msgid "Please clean the nozzle for calibration. Click when done."
-msgstr "Nettoyez la buse pour la calibration. Cliquez une fois fait."
-
-# MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:8257
-msgid "Please check :"
-msgstr "Verifiez:"
-
-# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:98
-msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
-msgstr "Merci de consulter notre manuel et de corriger le probleme. Poursuivez alors l'assistant en redemarrant l'imprimante."
-
-# MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3138
-msgid "Please open idler and remove filament manually."
-msgstr "Ouvrez l'idler et retirez le filament manuellement."
-
-# MSG_PLACE_STEEL_SHEET c=20 r=4
-#: messages.c:61
-msgid "Please place steel sheet on heatbed."
-msgstr "Placez la plaque en acier sur le plateau chauffant."
-
-# MSG_PRESS_TO_UNLOAD c=20 r=4
-#: messages.c:64
-msgid "Please press the knob to unload filament"
-msgstr "Appuyez sur le bouton pour decharger le filament"
-
-# MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:66
-msgid "Please pull out filament immediately"
-msgstr "Retirez immediatement le filament"
-
-# MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1422
-msgid "Please remove filament and then press the knob."
-msgstr "Veuillez retirer le filament puis appuyez sur le bouton."
-
-# MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:70
-msgid "Please remove steel sheet from heatbed."
-msgstr "Retirez la plaque en acier du plateau chauffant."
-
-# MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4583
-msgid "Please run XYZ calibration first."
-msgstr "Veuillez d'abord lancer la calibration XYZ."
-
-# MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1341
-msgid "Please update firmware in your MMU2. Waiting for reset."
-msgstr "Veuillez mettre a jour le firmware de votre MMU2. En attente d'un reset."
-
-# MSG_PLEASE_WAIT c=20
-#: messages.c:62
-msgid "Please wait"
-msgstr "Merci de patienter"
-
-# 
-#: ultralcd.cpp:5061
-msgid "Please remove shipping helpers first."
-msgstr "Retirez d'abord les protections de transport."
-
-# MSG_PREHEAT_NOZZLE c=20
-#: messages.c:63
-msgid "Preheat the nozzle!"
-msgstr "Prechauffez la buse!"
-
-# MSG_PREHEAT
-#: ultralcd.cpp:6853
-msgid "Preheat"
-msgstr "Prechauffage"
-
-# MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:100
-msgid "Preheating nozzle. Please wait."
-msgstr "Prechauffage de la buse. Merci de patienter."
-
-#  c=14
-#: ultralcd.cpp:1959
-msgid "PINDA"
-msgstr ""
-
-# 
-#: util.cpp:297
-msgid "Please upgrade."
-msgstr "Mettez a jour le FW."
-
-# MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:11526
-msgid "Press knob to preheat nozzle and continue."
-msgstr "Appuyez sur le bouton pour prechauffer la buse et continuer."
-
-# MSG_FS_PAUSE c=5
-#: fsensor.cpp:710
-msgid "Pause"
-msgstr ""
-
-# 
-#: ultralcd.cpp:1783
-msgid "Power failures"
-msgstr "Coup.de courant"
-
-# MSG_PRINT_ABORTED c=20
-#: messages.c:65
-msgid "Print aborted"
-msgstr "Impression annulee"
-
-#  c=20
-#: ultralcd.cpp:2442
-msgid "Preheating to load"
-msgstr "Chauffe pour charger"
-
-#  c=20
-#: ultralcd.cpp:2446
-msgid "Preheating to unload"
-msgstr "Chauf.pour decharger"
-
-# MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:8689
-msgid "Print fan:"
-msgstr "Vent. impr:"
-
-# MSG_CARD_MENU
-#: messages.c:20
-msgid "Print from SD"
-msgstr "Impr. depuis la SD"
-
-# 
-#: ultralcd.cpp:2289
-msgid "Press the knob"
-msgstr "App. sur sur bouton"
-
-# MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1118
-msgid "Print paused"
-msgstr "Impression en pause"
-
-# 
-#: mmu.cpp:726
-msgid "Press the knob to resume nozzle temperature."
-msgstr "Appuyez sur le bouton pour rechauffer la buse."
-
-# MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
-#: messages.c:38
-msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
-msgstr "L'imprimante n'a pas encore ete calibree. Suivez le manuel, chapitre Premiers pas, section Processus de calibration."
-
-# 
-#: ultralcd.cpp:1655
-msgid "Print FAN"
-msgstr "Vent. impr"
-
-# 
-#: ultralcd.cpp:4926
-msgid "Please insert filament into the extruder, then press the knob to load it."
-msgstr "Veuillez inserer le filament dans l'extrudeur, puis appuyez sur le bouton pour le charger."
-
-# 
-#: ultralcd.cpp:4921
-msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
-msgstr "Veuillez inserer le filament dans le premier tube du MMU, puis appuyez sur le bouton pour le charger."
-
-# 
-#: ultralcd.cpp:4843
-msgid "Please load filament first."
-msgstr "Veuillez d'abord charger un filament."
-
-# MSG_PRUSA3D
-#: ultralcd.cpp:2155
-msgid "prusa3d.com"
-msgstr ""
-
-# MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3267
-msgid "Rear side [um]"
-msgstr "Arriere [um]"
-
-#  c=20 r=4
-#: ultralcd.cpp:7549
-msgid "Please unload the filament first, then repeat this action."
-msgstr "SVP, dechargez le filament et reessayez."
-
-# MSG_RECOVERING_PRINT c=20
-#: Marlin_main.cpp:10883
-msgid "Recovering print    "
-msgstr "Recup. impression   "
-
-# MSG_REMOVE_OLD_FILAMENT c=20 r=5
-#: mmu.cpp:833
-msgid "Remove old filament and press the knob to start loading new filament."
-msgstr "Retirez l'ancien filament puis appuyez sur le bouton pour charger le nouveau."
-
-#  c=20
-#: 
-msgid "Prusa i3 MK3S OK."
-msgstr ""
-
-# MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5867
-msgid "Reset XYZ calibr."
-msgstr "Reinit. calib. XYZ"
-
-# MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3268
-msgid "Reset"
-msgstr "Reinitialiser"
-
-# MSG_RESUME_PRINT
-#: ultralcd.cpp:6861
-msgid "Resume print"
-msgstr "Reprendre impression"
-
-# MSG_RESUMING_PRINT c=20
-#: messages.c:69
-msgid "Resuming print"
-msgstr "Reprise de l'impr."
-
-# MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3265
-msgid "Right side[um]"
-msgstr "Droite [um]"
-
-# MSG_RPI_PORT
-#: messages.c:123
-msgid "RPi port"
-msgstr "Port RPi"
-
-# MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4864
-msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
-msgstr "Lancement de l'Assistant supprimera les resultats actuels de calibration et commencera du debut. Continuer?"
-
-# MSG_SD_CARD
-#: messages.c:118
-msgid "SD card"
-msgstr "Carte SD"
-
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
-#: messages.c:119
-msgid "FlashAir"
-msgstr "FlshAir"
-
-# 
-#: ultralcd.cpp:2994
-msgid "Right"
-msgstr "Droite"
-
-# MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: messages.c:35
-msgid "Searching bed calibration point"
-msgstr "Recherche du point de calibration du plateau chauffant"
-
-# MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5779
-msgid "Select language"
-msgstr "Choisir langue"
-
-# MSG_SELFTEST_OK
-#: ultralcd.cpp:7812
-msgid "Self test OK"
-msgstr "Auto-test OK"
-
-# MSG_SELFTEST_START c=20
-#: ultralcd.cpp:7582
-msgid "Self test start  "
-msgstr "Debut auto-test"
-
-# MSG_SELFTEST
-#: ultralcd.cpp:5843
-msgid "Selftest         "
-msgstr "Auto-test"
-
-# MSG_SELFTEST_ERROR
-#: ultralcd.cpp:8255
-msgid "Selftest error !"
-msgstr "Erreur auto-test!"
-
-# MSG_SELFTEST_FAILED c=20
-#: messages.c:73
-msgid "Selftest failed  "
-msgstr "Echec de l'auto-test"
-
-# MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1550
-msgid "Selftest will be run to calibrate accurate sensorless rehoming."
-msgstr "Le Selftest sera lance pour calibrer la remise a zero precise sans capteur"
-
-# 
-#: ultralcd.cpp:5102
-msgid "Select nozzle preheat temperature which matches your material."
-msgstr "Selectionnez la temperature de prechauffage de la buse qui correspond a votre materiau."
-
-# MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3286
-msgid "Set temperature:"
-msgstr "Regler temp.:"
-
-#  c=20
-#: 
-msgid "Prusa i3 MK2.5 OK."
-msgstr ""
-
-#  c=20
-#: 
-msgid "Prusa i3 MK2.5S OK."
-msgstr ""
-
-#  c=20
-#: 
-msgid "Prusa i3 MK3 OK."
-msgstr ""
-
-# MSG_SETTINGS
-#: messages.c:82
-msgid "Settings"
-msgstr "Reglages"
-
-# MSG_SHOW_END_STOPS c=18
-#: ultralcd.cpp:5864
-msgid "Show end stops"
-msgstr "Afficher butees"
-
-# 
-#: ultralcd.cpp:4008
-msgid "Sensor state"
-msgstr "Etat capteur"
-
-# MSG_FILE_CNT c=20 r=6
-#: cardreader.cpp:738
-msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
-msgstr "Certains fichiers ne seront pas tries. Max 100 fichiers tries par dossier."
-
-# MSG_SORT
-#: messages.c:120
-msgid "Sort"
-msgstr "Tri"
-
-# MSG_NONE
-#: messages.c:110
-msgid "None"
-msgstr "Aucun"
-
-# MSG_SORT_TIME
-#: messages.c:121
-msgid "Time"
-msgstr "Heure"
-
-# 
-#: ultralcd.cpp:3037
-msgid "Severe skew:"
-msgstr "Deviat.sev.:"
-
-# MSG_SORT_ALPHA
-#: messages.c:122
-msgid "Alphabet"
-msgstr ""
-
-# MSG_SORTING c=20 r=1
-#: cardreader.cpp:745
-msgid "Sorting files"
-msgstr "Tri des fichiers"
-
-# MSG_SOUND_LOUD
-#: messages.c:125
-msgid "Loud"
-msgstr "Fort"
-
-# 
-#: ultralcd.cpp:3036
-msgid "Slight skew:"
-msgstr "Deviat.leg.:"
-
-# MSG_SOUND
-#: messages.c:124
-msgid "Sound"
-msgstr "Son"
-
-#  c=7
-#: ultralcd.cpp:1822
-msgid "Runouts"
-msgstr ""
-
-# 
-#: Marlin_main.cpp:5101
-msgid "Some problem encountered, Z-leveling enforced ..."
-msgstr "Probleme rencontre, cliquez sur le bouton pour niveller l'axe Z..."
-
-# MSG_SOUND_ONCE
-#: messages.c:126
-msgid "Once"
-msgstr "Une fois"
-
-# MSG_SPEED
-#: ultralcd.cpp:7119
-msgid "Speed"
-msgstr "Vitesse"
-
-# MSG_SELFTEST_FAN_YES c=19
-#: messages.c:76
-msgid "Spinning"
-msgstr "Tourne"
-
-# MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4596
-msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
-msgstr "Une temperature ambiante stable de 21-26C et un support stable sont requis."
-
-# MSG_STATISTICS
-#: ultralcd.cpp:6978
-msgid "Statistics  "
-msgstr "Statistiques"
-
-# MSG_STOP_PRINT
-#: messages.c:91
-msgid "Stop print"
-msgstr "Arreter impression"
-
-# MSG_STOPPED
-#: messages.c:92
-msgid "STOPPED. "
-msgstr "ARRETE."
-
-# MSG_SUPPORT
-#: ultralcd.cpp:6987
-msgid "Support"
-msgstr ""
-
-# MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:8335
-msgid "Swapped"
-msgstr "Echange"
-
-# 
-#: ultralcd.cpp:4814
-msgid "Select filament:"
-msgstr "Selectionnez le filament:"
-
-# MSG_TEMP_CALIBRATION c=14
-#: messages.c:93
-msgid "Temp. cal."
-msgstr "Calib. Temp."
-
-# 
-#: ultralcd.cpp:4955
-msgid "Select temperature which matches your material."
-msgstr "Selectionnez la temperature qui correspond a votre materiau."
-
-# MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5873
-msgid "Temp. calibration"
-msgstr "Calibration temp."
-
-# MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3933
-msgid "Temperature calibration failed"
-msgstr "Echec de la calibration en temperature"
-
-# MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:94
-msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
-msgstr "La calibration en temperature est terminee et activee. La calibration en temperature peut etre desactivee dans le menu Reglages-> Cal. Temp."
-
-#  c=20 r=3
-#: ultralcd.cpp:7554
-msgid "Sensor verified, remove the filament now."
-msgstr "Capteur verifie, retirez le filament maintenant."
-
-# MSG_TEMPERATURE
-#: ultralcd.cpp:5739
-msgid "Temperature"
-msgstr ""
-
-# MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2218
-msgid "Temperatures"
-msgstr ""
-
-# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
-#: messages.c:39
-msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
-msgstr "Il faut toujours effectuer la Calibration Z. Veuillez suivre le manuel, chapitre Premiers pas, section Processus de calibration."
-
-# 
-#: ultralcd.cpp:2891
-msgid "Total filament"
-msgstr "Filament total"
-
-# 
-#: ultralcd.cpp:2892
-msgid "Total print time"
-msgstr "Temps total impr."
-
-# MSG_TUNE
-#: ultralcd.cpp:6850
-msgid "Tune"
-msgstr "Regler"
-
-# 
-#: 
-msgid "Unload"
-msgstr "Decharger"
-
-# 
-#: ultralcd.cpp:1752
-msgid "Total failures"
-msgstr "Total des echecs"
-
-# 
-#: ultralcd.cpp:2296
-msgid "to load filament"
-msgstr "pour charger le fil."
-
-# 
-#: ultralcd.cpp:2300
-msgid "to unload filament"
-msgstr "pour decharger fil."
-
-# MSG_UNLOAD_FILAMENT c=17
-#: messages.c:95
-msgid "Unload filament"
-msgstr "Decharger fil."
-
-# MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:96
-msgid "Unloading filament"
-msgstr "Dechargement fil."
-
-# 
-#: ultralcd.cpp:1705
-msgid "Total"
-msgstr "Totale"
-
-# MSG_USED c=19 r=1
-#: ultralcd.cpp:6001
-msgid "Used during print"
-msgstr "Utilise pdt impr."
-
-# MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2221
-msgid "Voltages"
-msgstr "Tensions"
-
-# 
-#: ultralcd.cpp:2194
-msgid "unknown"
-msgstr "inconnu"
-
-# MSG_USERWAIT
-#: Marlin_main.cpp:5511
-msgid "Wait for user..."
-msgstr "Attente utilisateur..."
-
-# MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3434
-msgid "Waiting for nozzle and bed cooling"
-msgstr "Attente du refroidissement des buse et plateau chauffant"
-
-# MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3395
-msgid "Waiting for PINDA probe cooling"
-msgstr "Attente du refroidissement de la sonde PINDA"
-
-# 
-#: 
-msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU tube. Use eject if it is hidden in tube."
-msgstr "Utilisez Remonter le fil. pour retirer le filament 1 s'il depasse du tube arriere du MMU. Utilisez ejecter s'il est cache dans le tube."
-
-# MSG_CHANGED_BOTH c=20 r=4
-#: Marlin_main.cpp:1510
-msgid "Warning: both printer type and motherboard type changed."
-msgstr "Attention: Types d'imprimante et de carte mere modifies"
-
-# MSG_CHANGED_MOTHERBOARD c=20 r=4
-#: Marlin_main.cpp:1502
-msgid "Warning: motherboard type changed."
-msgstr "Attention: Type de carte mere modifie."
-
-# MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1506
-msgid "Warning: printer type changed."
-msgstr "Attention: Type d'imprimante modifie"
-
-# MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3128
-msgid "Was filament unload successful?"
-msgstr "Dechargement du filament reussi?"
-
-# MSG_SELFTEST_WIRINGERROR
-#: messages.c:81
-msgid "Wiring error"
-msgstr "Erreur de cablage"
-
-# MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5834
-msgid "Wizard"
-msgstr "Assistant"
-
-# MSG_XYZ_DETAILS c=18
-#: ultralcd.cpp:2210
-msgid "XYZ cal. details"
-msgstr "Details calib. XYZ"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
-#: messages.c:18
-msgid "XYZ calibration failed. Please consult the manual."
-msgstr "Echec calibration XYZ. Consultez le manuel."
-
-# MSG_YES
-#: messages.c:102
-msgid "Yes"
-msgstr "Oui"
-
-# MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:101
-msgid "You can always resume the Wizard from Calibration -> Wizard."
-msgstr "Vous pouvez toujours relancer l'Assistant dans Calibration > Assistant."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
-#: ultralcd.cpp:3904
-msgid "XYZ calibration all right. Skew will be corrected automatically."
-msgstr "Calibration XYZ OK. L'ecart sera corrige automatiquement."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
-#: ultralcd.cpp:3901
-msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
-msgstr "Calibration XYZ OK. Les axes X/Y sont legerement non perpendiculaires. Bon boulot!"
-
-# MSG_TIMEOUT c=12
-#: messages.c:137
-msgid "Timeout"
-msgstr ""
-
-# MSG_X_CORRECTION c=13
-#: ultralcd.cpp:5190
-msgid "X-correct:"
-msgstr "Correct-X:"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3898
-msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
-msgstr "Calibration XYZ OK. Les axes X/Y sont perpendiculaires. Felicitations!"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
-#: ultralcd.cpp:3882
-msgid "XYZ calibration compromised. Front calibration points not reachable."
-msgstr "Calibration XYZ compromise. Les points de calibration en avant ne sont pas atteignables."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3885
-msgid "XYZ calibration compromised. Right front calibration point not reachable."
-msgstr "Calibration XYZ compromise. Le point de calibration avant droit n'est pas atteignable."
-
-# MSG_LOAD_ALL c=17
-#: ultralcd.cpp:6261
-msgid "Load all"
-msgstr "Charger un par un"
-
-# 
-#: ultralcd.cpp:3864
-msgid "XYZ calibration failed. Bed calibration point was not found."
-msgstr "Echec calibration XYZ. Le point de calibration du plateau n'a pas ete trouve."
-
-# 
-#: ultralcd.cpp:3870
-msgid "XYZ calibration failed. Front calibration points not reachable."
-msgstr "Echec calibration XYZ. Les points de calibration en avant ne sont pas atteignables."
-
-# 
-#: ultralcd.cpp:3873
-msgid "XYZ calibration failed. Right front calibration point not reachable."
-msgstr "Echec calibration XYZ. Le point de calibration avant droit n'est pas atteignable."
-
-# 
-#: ultralcd.cpp:2991
-msgid "Y distance from min"
-msgstr "Distance Y du min"
-
-# 
-#: ultralcd.cpp:4958
-msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
-msgstr "L'imprimante commencera a  imprimer une ligne en zig-zag. Tournez le bouton jusqu'a atteindre la hauteur optimale. Consultez les photos dans le manuel (chapitre Calibration)."
-
-#  c=20 r=5
-#: ultralcd.cpp:7558
-msgid "Verification failed, remove the filament and try again."
-msgstr "Verification en echec, retirez le filament et reessayez."
-
-# MSG_Y_CORRECTION c=13
-#: ultralcd.cpp:5191
-msgid "Y-correct:"
-msgstr "Correct-Y:"
-
-# MSG_OFF
-#: messages.c:105
-msgid "Off"
-msgstr ""
-
-# MSG_ON
-#: messages.c:106
-msgid "On"
-msgstr ""
-
-# 
-#: messages.c:53
-msgid "Back"
-msgstr "Retour"
-
-# 
-#: ultralcd.cpp:5724
-msgid "Checks"
-msgstr "Verifications"
-
-# 
-#: ultralcd.cpp:8349
-msgid "False triggering"
-msgstr "Faux declenchement"
-
-# 
-#: ultralcd.cpp:4013
-msgid "FINDA:"
-msgstr "FINDA:"
-
-# MSG_FIRMWARE
-#: language.h:23
-msgid "Firmware"
-msgstr ""
-
-# MSG_STRICT
-#: messages.c:112
-msgid "Strict"
-msgstr "Stricte"
-
-# MSG_WARN
-#: messages.c:111
-msgid "Warn"
-msgstr "Avert"
-
-# 
-#: messages.c:83
-msgid "HW Setup"
-msgstr "Config HW"
-
-# 
-#: ultralcd.cpp:4017
-msgid "IR:"
-msgstr "IR:"
-
-# MSG_MAGNETS_COMP
-#: messages.c:130
-msgid "Magnets comp."
-msgstr "Compens. aim."
-
-# MSG_MESH
-#: messages.c:128
-msgid "Mesh"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5763
-msgid "Mesh bed leveling"
-msgstr ""
-
-# 
-#: Marlin_main.cpp:872
-msgid "MK3S firmware detected on MK3 printer"
-msgstr "Firmware MK3S detecte sur imprimante MK3"
-
-# MSG_MMU_MODE
-#: messages.c:117
-msgid "MMU Mode"
-msgstr "Mode MMU"
-
-# 
-#: ultralcd.cpp:4494
-msgid "Mode change in progress ..."
-msgstr "Changement de mode en cours..."
-
-# MSG_MODEL
-#: messages.c:113
-msgid "Model"
-msgstr "Modele"
-
-# MSG_NOZZLE_DIAMETER
-#: messages.c:116
-msgid "Nozzle d."
-msgstr "Diam. buse"
-
-# 
-#: util.cpp:514
-msgid "G-code sliced for a different level. Continue?"
-msgstr "Le G-code a ete prepare pour un niveau different. Continuer?"
-
-# 
-#: util.cpp:520
-msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
-msgstr "Le G-code a ete prepare pour un niveau different. Veuillez decouper le modele a nouveau. L'impression a ete annulee."
-
-# 
-#: util.cpp:431
-msgid "G-code sliced for a different printer type. Continue?"
-msgstr "Le G-code a ete prepare pour une autre version de l'imprimante. Continuer?"
-
-# 
-#: util.cpp:437
-msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
-msgstr "Le G-code a ete prepare pour une autre version de l'imprimante. Veuillez decouper le modele a nouveau. L'impression a ete annulee."
-
-# 
-#: util.cpp:481
-msgid "G-code sliced for a newer firmware. Continue?"
-msgstr "Le G-code a ete prepare pour une version plus recente du firmware. Continuer?"
-
-# 
-#: util.cpp:487
-msgid "G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
-msgstr "Le G-code a ete prepare pour une version plus recente du firmware. Veuillez mettre a jour le firmware. L'impression annulee."
-
-# 
-#: ultralcd.cpp:4009
-msgid "PINDA:"
-msgstr "PINDA:"
-
-#  c=20
-#: ultralcd.cpp:2452
-msgid "Preheating to cut"
-msgstr "Chauffe pour couper"
-
-#  c=20
-#: ultralcd.cpp:2449
-msgid "Preheating to eject"
-msgstr "Chauf. pour remonter"
-
-# 
-#: util.cpp:394
-msgid "Printer nozzle diameter differs from the G-code. Continue?"
-msgstr "Diametre de la buse dans les reglages ne correspond pas a celui dans le G-Code. Continuer?"
-
-# 
-#: util.cpp:401
-msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
-msgstr "Diametre de la buse dans les reglages ne correspond pas a celui dans le G-Code. Merci de verifier le parametre dans les reglages. Impression annulee."
-
-#  c=20
-#: ultralcd.cpp:8355
-msgid "%s level expected"
-msgstr ""
-
-# 
-#: ultralcd.cpp:6814
-msgid "Rename"
-msgstr "Renommer"
-
-# 
-#: ultralcd.cpp:6807
-msgid "Select"
-msgstr "Selectionner"
-
-# 
-#: ultralcd.cpp:2212
-msgid "Sensor info"
-msgstr "Info capteur"
-
-# MSG_SHEET c=10
-#: messages.c:54
-msgid "Sheet"
-msgstr "Plaque"
-
-# MSG_SOUND_BLIND
-#: messages.c:127
-msgid "Assist"
-msgstr ""
-
-#  c=18
-#: ultralcd.cpp:5722
-msgid "Steel sheets"
-msgstr "Plaques en acier"
-
-# MSG_Z_CORRECTION c=13
-#: ultralcd.cpp:5192
-msgid "Z-correct:"
-msgstr "Correct-Z:"
-
-# MSG_Z_PROBE_NR
-#: messages.c:129
-msgid "Z-probe nr."
-msgstr "Mesurer x-fois"
-
+# Translation of Prusa-Firmware into French.
+#
+msgid ""
+msgstr ""
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: fr\n"
+"Project-Id-Version: Prusa-Firmware\n"
+"POT-Creation-Date: Di 26. Jan 11:04:08 CET 2021\n"
+"PO-Revision-Date: Di 26. Jan 11:04:08 CET 2021\n"
+"Language-Team: \n"
+"X-Generator: Poedit 2.0.7\n"
+"X-Poedit-SourceCharset: UTF-8\n"
+"Last-Translator: \n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+# 
+#: 
+msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
+msgstr "[%.7s]Ajust. du Z\x0aValeur enreg, contin\x0aou depart a zero?\x0a%cContinuer%cReset"
+
+# MSG_IR_03_OR_OLDER c=18
+#: messages.c:164
+msgid " 0.3 or older"
+msgstr " 0.3 ou +ancien"
+
+#  c=18
+#: Marlin_main.cpp:9626
+msgid "FS v0.3 or older"
+msgstr "FS v0.3 ou +ancien"
+
+# MSG_IR_04_OR_NEWER c=18
+#: messages.c:163
+msgid " 0.4 or newer"
+msgstr " 0.4 ou +recent"
+
+#  c=18
+#: Marlin_main.cpp:9625
+msgid "FS v0.4 or newer"
+msgstr "FS v0.4 ou +recent"
+
+# MSG_IR_UNKNOWN c=18
+#: messages.c:165
+msgid "unknown state"
+msgstr "Etat inconnu"
+
+# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
+#: messages.c:43
+msgid " of 4"
+msgstr " de 4"
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
+#: messages.c:66
+msgid " of 9"
+msgstr " de 9"
+
+# MSG_MEASURED_OFFSET
+#: ultralcd.cpp:2988
+msgid "[0;0] point offset"
+msgstr "Offset point [0;0]"
+
+# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
+#: 
+msgid "Crash detection can\x0abe turned on only in\x0aNormal mode"
+msgstr "La detection de\x0acrash peut etre\x0aactive seulement en\x0amode Normal"
+
+# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
+#: 
+msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
+msgstr "ATTENTION:\x0aDetection de crash\x0adesactivee en\x0amode furtif"
+
+# 
+#: ultralcd.cpp:2410
+msgid ">Cancel"
+msgstr ">Annuler"
+
+# MSG_BABYSTEPPING_Z c=15
+#: ultralcd.cpp:3108
+msgid "Adjusting Z:"
+msgstr "Ajuster Z:"
+
+# MSG_SELFTEST_CHECK_ALLCORRECT c=20
+#: ultralcd.cpp:8390
+msgid "All correct      "
+msgstr "Tout est correct"
+
+# MSG_WIZARD_DONE c=20 r=8
+#: messages.c:116
+msgid "All is done. Happy printing!"
+msgstr "Tout est pret. Bonne impression!"
+
+# 
+#: ultralcd.cpp:1902
+msgid "Ambient"
+msgstr "Ambiant"
+
+# MSG_AUTO c=6
+#: messages.c:160
+msgid "Auto"
+msgstr ""
+
+# MSG_PRESS c=20 r=2
+#: ultralcd.cpp:2567
+msgid "and press the knob"
+msgstr "et appuyez sur le bouton"
+
+# MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
+#: ultralcd.cpp:3429
+msgid "Are left and right Z~carriages all up?"
+msgstr "Z~carriages gauche + droite tout en haut?"
+
+# MSG_AUTO_DEPLETE c=17 r=1
+#: messages.c:125
+msgid "SpoolJoin"
+msgstr ""
+
+# MSG_AUTO_HOME
+#: messages.c:11
+msgid "Auto home"
+msgstr "Mise a 0 des axes"
+
+# MSG_AUTOLOAD_FILAMENT c=18
+#: ultralcd.cpp:6716
+msgid "AutoLoad filament"
+msgstr "Autocharge du fil."
+
+# MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
+#: ultralcd.cpp:4346
+msgid "Autoloading filament available only when filament sensor is turned on..."
+msgstr "Chargement auto du filament uniquement si le capteur de filament est active."
+
+# MSG_AUTOLOADING_ENABLED c=20 r=4
+#: ultralcd.cpp:2730
+msgid "Autoloading filament is active, just press the knob and insert filament..."
+msgstr "Chargement auto. du fil. active, appuyez sur le bouton et inserez le fil."
+
+# MSG_SELFTEST_AXIS_LENGTH
+#: ultralcd.cpp:8073
+msgid "Axis length"
+msgstr "Longueur de l'axe"
+
+# MSG_SELFTEST_AXIS
+#: ultralcd.cpp:8074
+msgid "Axis"
+msgstr "Axe"
+
+# MSG_SELFTEST_BEDHEATER
+#: ultralcd.cpp:8031
+msgid "Bed / Heater"
+msgstr "Lit / Chauffage"
+
+# MSG_BED_DONE
+#: messages.c:15
+msgid "Bed done"
+msgstr "Plateau termine"
+
+# MSG_BED_HEATING
+#: messages.c:16
+msgid "Bed Heating"
+msgstr "Chauffe du lit"
+
+# MSG_BED_CORRECTION_MENU
+#: ultralcd.cpp:5802
+msgid "Bed level correct"
+msgstr "Corr. niveau plateau"
+
+# MSG_BELTTEST c=17
+#: ultralcd.cpp:5782
+msgid "Belt test        "
+msgstr "Test de courroie "
+
+# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
+#: messages.c:17
+msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
+msgstr "Capt. non declenche pendant que je nivele le plateau. Debris sur buse? En attente d'un reset."
+
+# MSG_BRIGHT c=6
+#: messages.c:158
+msgid "Bright"
+msgstr "Brill."
+
+# MSG_BRIGHTNESS c=18
+#: messages.c:154
+msgid "Brightness"
+msgstr "Luminosite"
+
+# MSG_BED
+#: messages.c:14
+msgid "Bed"
+msgstr "Lit"
+
+# MSG_BELT_STATUS c=18
+#: 
+msgid "Belt status"
+msgstr "Statut courroie"
+
+# MSG_RECOVER_PRINT c=20 r=2
+#: messages.c:80
+msgid "Blackout occurred. Recover print?"
+msgstr "Coupure detectee. Reprendre impression?"
+
+# 
+#: ultralcd.cpp:8392
+msgid "Calibrating home"
+msgstr "Calib. mise a 0"
+
+# MSG_CALIBRATE_BED
+#: ultralcd.cpp:5791
+msgid "Calibrate XYZ"
+msgstr "Calibrer XYZ"
+
+# MSG_HOMEYZ
+#: messages.c:51
+msgid "Calibrate Z"
+msgstr "Calibrer Z"
+
+# MSG_CALIBRATE_PINDA c=17 r=1
+#: ultralcd.cpp:4538
+msgid "Calibrate"
+msgstr "Calibrer"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
+#: ultralcd.cpp:3392
+msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "Calibration de XYZ. Tournez le bouton pour faire monter l'extrudeur dans l'axe Z jusqu'aux butees. Cliquez une fois fait."
+
+# MSG_CALIBRATE_Z_AUTO c=20 r=2
+#: messages.c:20
+msgid "Calibrating Z"
+msgstr "Calibration Z"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
+#: ultralcd.cpp:3392
+msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "Calibration de Z. Tournez le bouton pour faire monter l'extrudeur dans l'axe Z jusqu'aux butees. Cliquez une fois fait."
+
+# MSG_HOMEYZ_DONE
+#: ultralcd.cpp:813
+msgid "Calibration done"
+msgstr "Calibration terminee"
+
+# MSG_MENU_CALIBRATION
+#: messages.c:67
+msgid "Calibration"
+msgstr ""
+
+# 
+#: ultralcd.cpp:4716
+msgid "Cancel"
+msgstr "Annuler"
+
+# MSG_SD_REMOVED
+#: ultralcd.cpp:8842
+msgid "Card removed"
+msgstr "Carte retiree"
+
+# MSG_NOT_COLOR
+#: ultralcd.cpp:2647
+msgid "Color not correct"
+msgstr "Couleur incorrecte"
+
+# MSG_COOLDOWN
+#: messages.c:25
+msgid "Cooldown"
+msgstr "Refroidissement"
+
+# 
+#: ultralcd.cpp:4471
+msgid "Copy selected language?"
+msgstr "Copier la langue choisie?"
+
+# MSG_CRASHDETECT c=13
+#: messages.c:28
+msgid "Crash det."
+msgstr "Detect.crash"
+
+# 
+#: ultralcd.cpp:4851
+msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
+msgstr "Choisissez un filament pour la Calibration de la Premiere Couche et selectionnez-le depuis le menu a l'ecran."
+
+# MSG_CRASH_DETECTED c=20 r=1
+#: messages.c:27
+msgid "Crash detected."
+msgstr "Crash detecte."
+
+# 
+#: Marlin_main.cpp:657
+msgid "Crash detected. Resume print?"
+msgstr "Crash detecte. Poursuivre l'impression?"
+
+# MSG_CRASH c=7
+#: messages.c:26
+msgid "Crash"
+msgstr ""
+
+# MSG_CURRENT c=19 r=1
+#: ultralcd.cpp:5933
+msgid "Current"
+msgstr "Actuel"
+
+# MSG_DATE c=17 r=1
+#: ultralcd.cpp:2112
+msgid "Date:"
+msgstr "Date:"
+
+# MSG_DISABLE_STEPPERS
+#: ultralcd.cpp:5683
+msgid "Disable steppers"
+msgstr "Desactiver moteurs"
+
+# MSG_BABYSTEP_Z_NOT_SET c=20 r=12
+#: messages.c:13
+msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
+msgstr "La distance entre la pointe de la buse et la surface du plateau n'a pas encore ete reglee. Suivez le manuel, chapitre Premiers pas, section Calibration de la premiere couche."
+
+# MSG_FS_CONTINUE c=5
+#: messages.c:152
+msgid "Cont."
+msgstr ""
+
+# MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
+#: ultralcd.cpp:5026
+msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
+msgstr "Voulez-vous refaire l'etape pour reajuster la hauteur entre la buse et le plateau chauffant?"
+
+# MSG_EXTRUDER_CORRECTION c=13
+#: ultralcd.cpp:5095
+msgid "E-correct:"
+msgstr "Correct-E:"
+
+# MSG_EJECT_FILAMENT c=16
+#: messages.c:58
+msgid "Eject filament"
+msgstr "Remonter le fil."
+
+# MSG_EJECTING_FILAMENT c=20 r=1
+#: mmu.cpp:1414
+msgid "Ejecting filament"
+msgstr "Le fil. remonte"
+
+# MSG_SELFTEST_ENDSTOP_NOTHIT c=20
+#: ultralcd.cpp:8049
+msgid "Endstop not hit"
+msgstr "Butee non atteinte"
+
+# MSG_SELFTEST_ENDSTOP
+#: ultralcd.cpp:8044
+msgid "Endstop"
+msgstr "Butee"
+
+# MSG_SELFTEST_ENDSTOPS
+#: ultralcd.cpp:8035
+msgid "Endstops"
+msgstr "Butees"
+
+# MSG_STACK_ERROR c=20 r=4
+#: ultralcd.cpp:6753
+msgid "Error - static memory has been overwritten"
+msgstr "Erreur - la memoire statique a ete ecrasee"
+
+# MSG_CUT_FILAMENT c=16
+#: messages.c:59
+msgid "Cut filament"
+msgstr "Coupe filament"
+
+# MSG_CUTTER c=9
+#: messages.c:126
+msgid "Cutter"
+msgstr "Coupeur"
+
+#  c=18
+#: mmu.cpp:1386
+msgid "Cutting filament"
+msgstr "Je coupe filament"
+
+# MSG_FSENS_NOT_RESPONDING c=20 r=4
+#: ultralcd.cpp:4359
+msgid "ERROR: Filament sensor is not responding, please check connection."
+msgstr "ERREUR: Le capteur de filament ne repond pas, verifiez le branchement."
+
+# MSG_DIM c=6
+#: messages.c:159
+msgid "Dim"
+msgstr ""
+
+# MSG_ERROR
+#: messages.c:29
+msgid "ERROR:"
+msgstr "ERREUR:"
+
+# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
+#: ultralcd.cpp:8398
+msgid "Extruder fan:"
+msgstr "Ventilo extrudeur:"
+
+# MSG_INFO_EXTRUDER c=18
+#: ultralcd.cpp:2153
+msgid "Extruder info"
+msgstr "Infos extrudeur"
+
+# MSG_EXTRUDER c=17
+#: messages.c:30
+msgid "Extruder"
+msgstr "Extrudeur"
+
+# 
+#: ultralcd.cpp:6740
+msgid "Fail stats MMU"
+msgstr "Stat. d'echec MMU"
+
+# MSG_FSENSOR_AUTOLOAD c=13
+#: messages.c:47
+msgid "F. autoload"
+msgstr "F. autocharg."
+
+# 
+#: ultralcd.cpp:6737
+msgid "Fail stats"
+msgstr "Stat. d'echec"
+
+# MSG_FAN_SPEED c=14
+#: messages.c:34
+msgid "Fan speed"
+msgstr "Vitesse vent."
+
+# MSG_SELFTEST_FAN c=20
+#: messages.c:89
+msgid "Fan test"
+msgstr "Test du ventilateur"
+
+# MSG_FANS_CHECK c=13
+#: messages.c:31
+msgid "Fans check"
+msgstr "Verif vent."
+
+# MSG_FSENSOR
+#: messages.c:48
+msgid "Fil. sensor"
+msgstr "Capteur Fil."
+
+# MSG_FIL_RUNOUTS c=14
+#: 
+msgid "Fil. runouts  "
+msgstr "Fins filament "
+
+# MSG_FILAMENT_CLEAN c=20 r=2
+#: messages.c:35
+msgid "Filament extruding & with correct color?"
+msgstr "Filament extrude et avec bonne couleur?"
+
+# MSG_NOT_LOADED c=19
+#: ultralcd.cpp:2646
+msgid "Filament not loaded"
+msgstr "Filament non charge"
+
+# MSG_FILAMENT_SENSOR c=20
+#: messages.c:95
+msgid "Filament sensor"
+msgstr "Capteur de filament"
+
+# MSG_FILAMENT_USED c=19
+#: ultralcd.cpp:2795
+msgid "Filament used"
+msgstr "Filament utilise"
+
+# MSG_PRINT_TIME c=19 r=1
+#: ultralcd.cpp:2796
+msgid "Print time"
+msgstr "Temps d'impression"
+
+# MSG_FS_ACTION c=10
+#: messages.c:151
+msgid "FS Action"
+msgstr ""
+
+# MSG_FILE_INCOMPLETE c=20 r=3
+#: ultralcd.cpp:8540
+msgid "File incomplete. Continue anyway?"
+msgstr "Fichier incomplet. Continuer qd meme?"
+
+# MSG_FINISHING_MOVEMENTS c=20
+#: messages.c:44
+msgid "Finishing movements"
+msgstr "Mouvement final"
+
+# MSG_V2_CALIBRATION c=18
+#: messages.c:120
+msgid "First layer cal."
+msgstr "Cal. 1ere couche"
+
+# MSG_WIZARD_SELFTEST c=20 r=8
+#: ultralcd.cpp:4947
+msgid "First, I will run the selftest to check most common assembly problems."
+msgstr "D'abord, je vais lancer le Auto-test pour verifier les problemes d'assemblage les plus communs."
+
+# 
+#: mmu.cpp:726
+msgid "Fix the issue and then press button on MMU unit."
+msgstr "Corrigez le probleme et appuyez sur le bouton sur la MMU."
+
+# MSG_FLOW
+#: ultralcd.cpp:6880
+msgid "Flow"
+msgstr "Flux"
+
+# MSG_PRUSA3D_FORUM
+#: ultralcd.cpp:2105
+msgid "forum.prusa3d.com"
+msgstr ""
+
+# MSG_SELFTEST_COOLING_FAN c=20
+#: messages.c:86
+msgid "Front print fan?"
+msgstr "Ventilo impr avant?"
+
+# MSG_BED_CORRECTION_FRONT c=14 r=1
+#: ultralcd.cpp:3190
+msgid "Front side[um]"
+msgstr "Avant [um]"
+
+# MSG_SELFTEST_FANS
+#: ultralcd.cpp:8079
+msgid "Front/left fans"
+msgstr "Ventilos avt/gauche"
+
+# MSG_SELFTEST_HEATERTHERMISTOR
+#: ultralcd.cpp:8027
+msgid "Heater/Thermistor"
+msgstr "Chauffage/Thermistor"
+
+# MSG_BED_HEATING_SAFETY_DISABLED
+#: Marlin_main.cpp:9616
+msgid "Heating disabled by safety timer."
+msgstr "Chauffage desactivee par le compteur de securite."
+
+# MSG_HEATING_COMPLETE c=20
+#: messages.c:50
+msgid "Heating done."
+msgstr "Chauffe terminee."
+
+# MSG_HEATING
+#: messages.c:49
+msgid "Heating"
+msgstr "Chauffe"
+
+# MSG_WIZARD_WELCOME c=20 r=7
+#: ultralcd.cpp:4926
+msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
+msgstr "Bonjour, je suis votre imprimante Original Prusa i3. Voulez-vous que je vous guide a travers le processus d'installation?"
+
+# MSG_PRUSA3D_HOWTO
+#: ultralcd.cpp:2106
+msgid "howto.prusa3d.com"
+msgstr ""
+
+# MSG_FILAMENTCHANGE
+#: messages.c:41
+msgid "Change filament"
+msgstr "Changer filament"
+
+# MSG_CHANGE_SUCCESS
+#: ultralcd.cpp:2576
+msgid "Change success!"
+msgstr "Changement reussi!"
+
+# MSG_CORRECTLY c=20
+#: ultralcd.cpp:2644
+msgid "Changed correctly?"
+msgstr "Change correctement?"
+
+# MSG_SELFTEST_CHECK_BED c=20
+#: messages.c:92
+msgid "Checking bed     "
+msgstr "Verif. plateau chauf"
+
+# MSG_SELFTEST_CHECK_ENDSTOPS c=20
+#: ultralcd.cpp:8381
+msgid "Checking endstops"
+msgstr "Verification butees"
+
+# MSG_SELFTEST_CHECK_HOTEND c=20
+#: ultralcd.cpp:8387
+msgid "Checking hotend  "
+msgstr "Verif. du hotend"
+
+# MSG_SELFTEST_CHECK_FSENSOR c=20
+#: messages.c:93
+msgid "Checking sensors "
+msgstr "Verif. des capteurs"
+
+# MSG_CHECKING_X c=20
+#: messages.c:22
+msgid "Checking X axis"
+msgstr "Verification axe X"
+
+# MSG_CHECKING_Y c=20
+#: messages.c:23
+msgid "Checking Y axis"
+msgstr "Verification axe Y"
+
+# MSG_SELFTEST_CHECK_Z c=20
+#: 
+msgid "Checking Z axis"
+msgstr "Verification axe Z"
+
+# MSG_CHOOSE_EXTRUDER c=20 r=1
+#: messages.c:52
+msgid "Choose extruder:"
+msgstr "Choisir extrudeur:"
+
+# MSG_CHOOSE_FILAMENT c=20 r=1
+#: messages.c:53
+msgid "Choose filament:"
+msgstr "Choix du filament:"
+
+# MSG_FILAMENT c=17 r=1
+#: messages.c:33
+msgid "Filament"
+msgstr ""
+
+# MSG_WIZARD_XYZ_CAL c=20 r=8
+#: ultralcd.cpp:4956
+msgid "I will run xyz calibration now. It will take approx. 12 mins."
+msgstr "Je vais maintenant lancer la calibration XYZ. Cela prendra 12 min environ."
+
+# MSG_WIZARD_Z_CAL c=20 r=8
+#: ultralcd.cpp:4964
+msgid "I will run z calibration now."
+msgstr "Je vais maintenant lancer la calibration Z."
+
+# MSG_WATCH
+#: messages.c:114
+msgid "Info screen"
+msgstr "Ecran d'info"
+
+# MSG_INSERT_FILAMENT c=20
+#: ultralcd.cpp:2564
+msgid "Insert filament"
+msgstr "Inserez le filament"
+
+# MSG_FILAMENT_LOADED c=20 r=2
+#: messages.c:36
+msgid "Is filament loaded?"
+msgstr "Fil. est-il charge?"
+
+# MSG_STEEL_SHEET_CHECK c=20 r=2
+#: messages.c:107
+msgid "Is steel sheet on heatbed?"
+msgstr "Est la plaque sur le plat. chauffant?"
+
+# MSG_LAST_PRINT_FAILURES c=20
+#: messages.c:55
+msgid "Last print failures"
+msgstr "Echecs derniere imp."
+
+# 
+#: ultralcd.cpp:5034
+msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
+msgstr "Si vous avez d'autres feuilles d'acier,  calibrez leurs pre-reglages dans Reglages - Config HW - Plaque en acier."
+
+# MSG_LAST_PRINT c=18
+#: messages.c:54
+msgid "Last print"
+msgstr "Derniere impres."
+
+# MSG_SELFTEST_EXTRUDER_FAN c=20
+#: messages.c:87
+msgid "Left hotend fan?"
+msgstr "Ventilo gauche?"
+
+# 
+#: ultralcd.cpp:2919
+msgid "Left"
+msgstr "Gauche"
+
+# MSG_BED_CORRECTION_LEFT c=14 r=1
+#: ultralcd.cpp:3188
+msgid "Left side [um]"
+msgstr "Gauche [um]"
+
+# 
+#: ultralcd.cpp:5706
+msgid "Lin. correction"
+msgstr "Correction lin."
+
+# MSG_BABYSTEP_Z
+#: messages.c:12
+msgid "Live adjust Z"
+msgstr "Ajuster Z en dir."
+
+#  c=20 r=6
+#: ultralcd.cpp:7280
+msgid "Insert the filament (do not load it) into the extruder and then press the knob."
+msgstr "Veuillez inserer le filament ( ne le chargez pas) dans l'extrudeur, puis appuyez sur le bouton."
+
+# MSG_LOAD_FILAMENT c=17
+#: messages.c:56
+msgid "Load filament"
+msgstr "Charger filament"
+
+# MSG_LOADING_COLOR
+#: ultralcd.cpp:2598
+msgid "Loading color"
+msgstr "Charg. de la couleur"
+
+# MSG_LOADING_FILAMENT c=20
+#: messages.c:57
+msgid "Loading filament"
+msgstr "Chargement du fil."
+
+# MSG_LOOSE_PULLEY c=20 r=1
+#: ultralcd.cpp:8067
+msgid "Loose pulley"
+msgstr "Poulie lache"
+
+# 
+#: ultralcd.cpp:6699
+msgid "Load to nozzle"
+msgstr "Charger la buse"
+
+# MSG_M117_V2_CALIBRATION c=25
+#: messages.c:60
+msgid "M117 First layer cal."
+msgstr "M117 Cal. 1ere couche"
+
+# MSG_MAIN
+#: messages.c:61
+msgid "Main"
+msgstr "Menu principal"
+
+# MSG_BL_HIGH c=12
+#: messages.c:155
+msgid "Level Bright"
+msgstr "Niveau brill"
+
+# MSG_BL_LOW c=12
+#: messages.c:156
+msgid "Level Dimmed"
+msgstr ""
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
+#: messages.c:65
+msgid "Measuring reference height of calibration point"
+msgstr "Je mesure la hauteur de reference du point de calibrage"
+
+# MSG_MESH_BED_LEVELING c=18
+#: messages.c:148
+msgid "Mesh Bed Leveling"
+msgstr ""
+
+# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
+#: mmu.cpp:764
+msgid "MMU OK. Resuming position..."
+msgstr "MMU OK. Reprise de la position ..."
+
+# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
+#: mmu.cpp:757
+msgid "MMU OK. Resuming temperature..."
+msgstr "MMU OK. Rechauffage de la buse..."
+
+# 
+#: ultralcd.cpp:2960
+msgid "Measured skew"
+msgstr "Deviat.mesuree"
+
+# MSG_MMU_FAILS c=14
+#: messages.c:68
+msgid "MMU fails"
+msgstr "Echecs MMU"
+
+# 
+#: mmu.cpp:1586
+msgid "MMU load failed     "
+msgstr "Echec chargement MMU"
+
+# MSG_MMU_LOAD_FAILS c=14
+#: messages.c:69
+msgid "MMU load fails"
+msgstr "Echecs charg. MMU"
+
+# MSG_MMU_OK_RESUMING c=20 r=4
+#: mmu.cpp:775
+msgid "MMU OK. Resuming..."
+msgstr "MMU OK. Reprise ..."
+
+# MSG_MODE
+#: messages.c:101
+msgid "Mode"
+msgstr ""
+
+#  c=20 r=3
+#: Marlin_main.cpp:934
+msgid "MK3 firmware detected on MK3S printer"
+msgstr "Firmware MK3 detecte sur imprimante MK3S"
+
+# MSG_NORMAL
+#: messages.c:105
+msgid "Normal"
+msgstr ""
+
+# MSG_SILENT
+#: messages.c:104
+msgid "Silent"
+msgstr "Furtif"
+
+# 
+#: mmu.cpp:721
+msgid "MMU needs user attention."
+msgstr "Le MMU necessite l'attention de l'utilisateur."
+
+# 
+#: ultralcd.cpp:1701
+msgid "MMU power fails"
+msgstr "Echecs alim. MMU"
+
+# MSG_STEALTH
+#: messages.c:106
+msgid "Stealth"
+msgstr "Furtif"
+
+# MSG_AUTO_POWER
+#: messages.c:103
+msgid "Auto power"
+msgstr "Puiss.auto"
+
+# MSG_HIGH_POWER
+#: messages.c:102
+msgid "High power"
+msgstr "Haute puiss"
+
+# 
+#: ultralcd.cpp:2124
+msgid "MMU2 connected"
+msgstr "MMU2 connecte"
+
+# MSG_SELFTEST_MOTOR
+#: messages.c:94
+msgid "Motor"
+msgstr "Moteur"
+
+# MSG_MOVE_AXIS
+#: ultralcd.cpp:5681
+msgid "Move axis"
+msgstr "Deplacer l'axe"
+
+# MSG_MOVE_X
+#: ultralcd.cpp:4262
+msgid "Move X"
+msgstr "Deplacer X"
+
+# MSG_MOVE_Y
+#: ultralcd.cpp:4263
+msgid "Move Y"
+msgstr "Deplacer Y"
+
+# MSG_MOVE_Z
+#: ultralcd.cpp:4264
+msgid "Move Z"
+msgstr "Deplacer Z"
+
+# MSG_NO_MOVE
+#: Marlin_main.cpp:5719
+msgid "No move."
+msgstr "Pas de mouvement."
+
+# MSG_NO_CARD
+#: ultralcd.cpp:6673
+msgid "No SD card"
+msgstr "Pas de carte SD"
+
+# MSG_NA
+#: messages.c:124
+msgid "N/A"
+msgstr ""
+
+# MSG_NO
+#: messages.c:70
+msgid "No"
+msgstr "Non"
+
+# MSG_SELFTEST_NOTCONNECTED
+#: ultralcd.cpp:8028
+msgid "Not connected"
+msgstr "Non connecte"
+
+# 
+#: util.cpp:293
+msgid "New firmware version available:"
+msgstr "Nouvelle version de firmware disponible:"
+
+# MSG_SELFTEST_FAN_NO c=19
+#: messages.c:90
+msgid "Not spinning"
+msgstr "Ne tourne pas"
+
+# MSG_WIZARD_V2_CAL c=20 r=8
+#: ultralcd.cpp:4847
+msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
+msgstr "Maintenant je vais calibrer la distance entre la pointe de la buse et la surface du plateau chauffant."
+
+# MSG_WIZARD_WILL_PREHEAT c=20 r=4
+#: ultralcd.cpp:4972
+msgid "Now I will preheat nozzle for PLA."
+msgstr "Maintenant je vais prechauffer la buse pour du PLA."
+
+# MSG_NOZZLE
+#: messages.c:71
+msgid "Nozzle"
+msgstr "Buse"
+
+# MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
+#: Marlin_main.cpp:1581
+msgid "Old settings found. Default PID, Esteps etc. will be set."
+msgstr "Anciens reglages trouves. Le PID, les Esteps etc. par defaut seront regles"
+
+# 
+#: ultralcd.cpp:4963
+msgid "Now remove the test print from steel sheet."
+msgstr "Retirez maintenant l'impression de test de la plaque en acier."
+
+# 
+#: ultralcd.cpp:1600
+msgid "Nozzle FAN"
+msgstr "Vent. buse"
+
+# MSG_PAUSE_PRINT
+#: ultralcd.cpp:6637
+msgid "Pause print"
+msgstr "Pause de l'impr."
+
+# MSG_PID_RUNNING c=20 r=1
+#: ultralcd.cpp:1485
+msgid "PID cal.           "
+msgstr "Calib. PID"
+
+# MSG_PID_FINISHED c=20 r=1
+#: ultralcd.cpp:1491
+msgid "PID cal. finished"
+msgstr "Calib. PID terminee"
+
+# MSG_PID_EXTRUDER c=17 r=1
+#: ultralcd.cpp:5803
+msgid "PID calibration"
+msgstr "Calibration PID"
+
+# MSG_PINDA_PREHEAT c=20 r=1
+#: ultralcd.cpp:843
+msgid "PINDA Heating"
+msgstr "Chauffe de la PINDA"
+
+# MSG_PAPER c=20 r=10
+#: messages.c:72
+msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
+msgstr "Placez une feuille de papier sous la buse pendant la calibration des 4 premiers points. Si la buse accroche le papier, eteignez vite l'imprimante."
+
+# MSG_WIZARD_CLEAN_HEATBED c=20 r=8
+#: ultralcd.cpp:5029
+msgid "Please clean heatbed and then press the knob."
+msgstr "Nettoyez plateau chauffant en acier et appuyez sur le bouton."
+
+# MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
+#: messages.c:24
+msgid "Please clean the nozzle for calibration. Click when done."
+msgstr "Nettoyez la buse pour la calibration. Cliquez une fois fait."
+
+# MSG_SELFTEST_PLEASECHECK
+#: ultralcd.cpp:8022
+msgid "Please check :"
+msgstr "Verifiez:"
+
+# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
+#: messages.c:115
+msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
+msgstr "Merci de consulter notre manuel et de corriger le probleme. Poursuivez alors l'assistant en redemarrant l'imprimante."
+
+# MSG_CHECK_IDLER c=20 r=4
+#: Marlin_main.cpp:3317
+msgid "Please open idler and remove filament manually."
+msgstr "Ouvrez l'idler et retirez le filament manuellement."
+
+# MSG_PLACE_STEEL_SHEET c=20 r=4
+#: messages.c:73
+msgid "Please place steel sheet on heatbed."
+msgstr "Placez la plaque en acier sur le plateau chauffant."
+
+# MSG_PRESS_TO_UNLOAD c=20 r=4
+#: messages.c:77
+msgid "Please press the knob to unload filament"
+msgstr "Appuyez sur le bouton pour decharger le filament"
+
+# MSG_PULL_OUT_FILAMENT c=20 r=4
+#: messages.c:79
+msgid "Please pull out filament immediately"
+msgstr "Retirez immediatement le filament"
+
+# MSG_EJECT_REMOVE c=20 r=4
+#: mmu.cpp:1420
+msgid "Please remove filament and then press the knob."
+msgstr "Veuillez retirer le filament puis appuyez sur le bouton."
+
+# MSG_REMOVE_STEEL_SHEET c=20 r=4
+#: messages.c:82
+msgid "Please remove steel sheet from heatbed."
+msgstr "Retirez la plaque en acier du plateau chauffant."
+
+# MSG_RUN_XYZ c=20 r=4
+#: Marlin_main.cpp:4766
+msgid "Please run XYZ calibration first."
+msgstr "Veuillez d'abord lancer la calibration XYZ."
+
+# MSG_UPDATE_MMU2_FW c=20 r=4
+#: mmu.cpp:1340
+msgid "Please update firmware in your MMU2. Waiting for reset."
+msgstr "Veuillez mettre a jour le firmware de votre MMU2. En attente d'un reset."
+
+# MSG_PLEASE_WAIT c=20
+#: messages.c:74
+msgid "Please wait"
+msgstr "Merci de patienter"
+
+# 
+#: ultralcd.cpp:4962
+msgid "Please remove shipping helpers first."
+msgstr "Retirez d'abord les protections de transport."
+
+# MSG_PREHEAT_NOZZLE c=20
+#: messages.c:76
+msgid "Preheat the nozzle!"
+msgstr "Prechauffez la buse!"
+
+# MSG_PREHEAT
+#: ultralcd.cpp:6615
+msgid "Preheat"
+msgstr "Prechauffage"
+
+# MSG_WIZARD_HEATING c=20 r=3
+#: messages.c:117
+msgid "Preheating nozzle. Please wait."
+msgstr "Prechauffage de la buse. Merci de patienter."
+
+#  c=14
+#: ultralcd.cpp:1905
+msgid "PINDA"
+msgstr ""
+
+# 
+#: util.cpp:297
+msgid "Please upgrade."
+msgstr "Mettez a jour le FW."
+
+# MSG_PRESS_TO_PREHEAT c=20 r=4
+#: Marlin_main.cpp:11718
+msgid "Press knob to preheat nozzle and continue."
+msgstr "Appuyez sur le bouton pour prechauffer la buse et continuer."
+
+# MSG_FS_PAUSE c=5
+#: fsensor.cpp:728
+msgid "Pause"
+msgstr ""
+
+# MSG_POWER_FAILURES c=14
+#: messages.c:75
+msgid "Power failures"
+msgstr "Coup.de courant"
+
+# MSG_PRINT_ABORTED c=20
+#: messages.c:78
+msgid "Print aborted"
+msgstr "Impression annulee"
+
+#  c=20
+#: ultralcd.cpp:2390
+msgid "Preheating to load"
+msgstr "Chauffe pour charger"
+
+#  c=20
+#: ultralcd.cpp:2395
+msgid "Preheating to unload"
+msgstr "Chauf.pour decharger"
+
+# MSG_SELFTEST_PRINT_FAN_SPEED c=18
+#: ultralcd.cpp:8401
+msgid "Print fan:"
+msgstr "Vent. impr:"
+
+# MSG_CARD_MENU
+#: messages.c:21
+msgid "Print from SD"
+msgstr "Impr. depuis la SD"
+
+# 
+#: ultralcd.cpp:2231
+msgid "Press the knob"
+msgstr "App. sur sur bouton"
+
+# MSG_PRINT_PAUSED c=20 r=1
+#: ultralcd.cpp:1065
+msgid "Print paused"
+msgstr "Impression en pause"
+
+# 
+#: mmu.cpp:725
+msgid "Press the knob to resume nozzle temperature."
+msgstr "Appuyez sur le bouton pour rechauffer la buse."
+
+# MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
+#: messages.c:45
+msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
+msgstr "L'imprimante n'a pas encore ete calibree. Suivez le manuel, chapitre Premiers pas, section Processus de calibration."
+
+# 
+#: ultralcd.cpp:1601
+msgid "Print FAN"
+msgstr "Vent. impr"
+
+# 
+#: ultralcd.cpp:4827
+msgid "Please insert filament into the extruder, then press the knob to load it."
+msgstr "Veuillez inserer le filament dans l'extrudeur, puis appuyez sur le bouton pour le charger."
+
+# 
+#: ultralcd.cpp:4822
+msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
+msgstr "Veuillez inserer le filament dans le premier tube du MMU, puis appuyez sur le bouton pour le charger."
+
+# 
+#: ultralcd.cpp:4744
+msgid "Please load filament first."
+msgstr "Veuillez d'abord charger un filament."
+
+# MSG_PRUSA3D
+#: ultralcd.cpp:2104
+msgid "prusa3d.com"
+msgstr ""
+
+# MSG_BED_CORRECTION_REAR c=14 r=1
+#: ultralcd.cpp:3191
+msgid "Rear side [um]"
+msgstr "Arriere [um]"
+
+#  c=20 r=4
+#: ultralcd.cpp:7304
+msgid "Please unload the filament first, then repeat this action."
+msgstr "SVP, dechargez le filament et reessayez."
+
+#  c=20 r=4
+#: ultralcd.cpp:7307
+msgid "Please check the IR sensor connection, unload filament if present."
+msgstr "SVP, verifiez la connexion du capteur IR et decharge le filament."
+
+# MSG_RECOVERING_PRINT c=20
+#: Marlin_main.cpp:11076
+msgid "Recovering print    "
+msgstr "Recup. impression   "
+
+# MSG_REMOVE_OLD_FILAMENT c=20 r=5
+#: mmu.cpp:832
+msgid "Remove old filament and press the knob to start loading new filament."
+msgstr "Retirez l'ancien filament puis appuyez sur le bouton pour charger le nouveau."
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3S OK."
+msgstr ""
+
+# MSG_CALIBRATE_BED_RESET
+#: ultralcd.cpp:5808
+msgid "Reset XYZ calibr."
+msgstr "Reinit. calib. XYZ"
+
+# MSG_RESET c=14
+#: messages.c:83
+msgid "Reset"
+msgstr "Reinitialiser"
+
+# MSG_RESUME_PRINT c=18
+#: messages.c:84
+msgid "Resume print"
+msgstr "Reprendre impression"
+
+# MSG_RESUMING_PRINT c=20
+#: messages.c:85
+msgid "Resuming print"
+msgstr "Reprise de l'impr."
+
+# MSG_BED_CORRECTION_RIGHT c=14 r=1
+#: ultralcd.cpp:3189
+msgid "Right side[um]"
+msgstr "Droite [um]"
+
+# MSG_RPI_PORT
+#: messages.c:142
+msgid "RPi port"
+msgstr "Port RPi"
+
+# MSG_WIZARD_RERUN c=20 r=7
+#: ultralcd.cpp:4765
+msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
+msgstr "Lancement de l'Assistant supprimera les resultats actuels de calibration et commencera du debut. Continuer?"
+
+# MSG_SD_CARD
+#: messages.c:137
+msgid "SD card"
+msgstr "Carte SD"
+
+# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
+#: messages.c:138
+msgid "FlashAir"
+msgstr "FlshAir"
+
+# 
+#: ultralcd.cpp:2920
+msgid "Right"
+msgstr "Droite"
+
+# MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
+#: messages.c:42
+msgid "Searching bed calibration point"
+msgstr "Recherche du point de calibration du plateau chauffant"
+
+# MSG_LANGUAGE_SELECT
+#: ultralcd.cpp:5721
+msgid "Select language"
+msgstr "Choisir langue"
+
+# MSG_SELFTEST_OK
+#: ultralcd.cpp:7579
+msgid "Self test OK"
+msgstr "Auto-test OK"
+
+# MSG_SELFTEST_START c=20
+#: ultralcd.cpp:7347
+msgid "Self test start  "
+msgstr "Debut auto-test"
+
+# MSG_SELFTEST
+#: ultralcd.cpp:5784
+msgid "Selftest         "
+msgstr "Auto-test"
+
+# MSG_SELFTEST_ERROR
+#: ultralcd.cpp:8021
+msgid "Selftest error !"
+msgstr "Erreur auto-test!"
+
+# MSG_SELFTEST_FAILED c=20
+#: messages.c:88
+msgid "Selftest failed  "
+msgstr "Echec de l'auto-test"
+
+# MSG_FORCE_SELFTEST c=20 r=8
+#: Marlin_main.cpp:1613
+msgid "Selftest will be run to calibrate accurate sensorless rehoming."
+msgstr "Le Selftest sera lance pour calibrer la remise a zero precise sans capteur"
+
+# 
+#: ultralcd.cpp:5003
+msgid "Select nozzle preheat temperature which matches your material."
+msgstr "Selectionnez la temperature de prechauffage de la buse qui correspond a votre materiau."
+
+# MSG_SET_TEMPERATURE c=19 r=1
+#: ultralcd.cpp:3209
+msgid "Set temperature:"
+msgstr "Regler temp.:"
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5 OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5S OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3 OK."
+msgstr ""
+
+# MSG_SETTINGS
+#: messages.c:97
+msgid "Settings"
+msgstr "Reglages"
+
+# MSG_SHOW_END_STOPS c=18
+#: ultralcd.cpp:5805
+msgid "Show end stops"
+msgstr "Afficher butees"
+
+# 
+#: ultralcd.cpp:3915
+msgid "Sensor state"
+msgstr "Etat capteur"
+
+# MSG_FILE_CNT c=20 r=6
+#: cardreader.cpp:739
+msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
+msgstr "Certains fichiers ne seront pas tries. Max 100 fichiers tries par dossier."
+
+# MSG_SORT
+#: messages.c:139
+msgid "Sort"
+msgstr "Tri"
+
+# MSG_NONE
+#: messages.c:127
+msgid "None"
+msgstr "Aucun"
+
+# MSG_SORT_TIME
+#: messages.c:140
+msgid "Time"
+msgstr "Heure"
+
+# 
+#: ultralcd.cpp:2963
+msgid "Severe skew:"
+msgstr "Deviat.sev.:"
+
+# MSG_SORT_ALPHA
+#: messages.c:141
+msgid "Alphabet"
+msgstr ""
+
+# MSG_SORTING c=20 r=1
+#: cardreader.cpp:746
+msgid "Sorting files"
+msgstr "Tri des fichiers"
+
+# MSG_SOUND_LOUD
+#: messages.c:144
+msgid "Loud"
+msgstr "Fort"
+
+# 
+#: ultralcd.cpp:2962
+msgid "Slight skew:"
+msgstr "Deviat.leg.:"
+
+# MSG_SOUND
+#: messages.c:143
+msgid "Sound"
+msgstr "Son"
+
+#  c=7
+#: ultralcd.cpp:1768
+msgid "Runouts"
+msgstr ""
+
+# 
+#: Marlin_main.cpp:5280
+msgid "Some problem encountered, Z-leveling enforced ..."
+msgstr "Probleme rencontre, cliquez sur le bouton pour niveller l'axe Z..."
+
+# MSG_SOUND_ONCE
+#: messages.c:145
+msgid "Once"
+msgstr "Une fois"
+
+# MSG_SPEED
+#: ultralcd.cpp:6874
+msgid "Speed"
+msgstr "Vitesse"
+
+# MSG_SELFTEST_FAN_YES c=19
+#: messages.c:91
+msgid "Spinning"
+msgstr "Tourne"
+
+# MSG_TEMP_CAL_WARNING c=20 r=4
+#: Marlin_main.cpp:4779
+msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
+msgstr "Une temperature ambiante stable de 21-26C et un support stable sont requis."
+
+# MSG_STATISTICS
+#: ultralcd.cpp:6733
+msgid "Statistics  "
+msgstr "Statistiques"
+
+# MSG_STOP_PRINT
+#: messages.c:108
+msgid "Stop print"
+msgstr "Arreter impression"
+
+# MSG_STOPPED
+#: messages.c:109
+msgid "STOPPED. "
+msgstr "ARRETE."
+
+# MSG_SUPPORT
+#: ultralcd.cpp:6742
+msgid "Support"
+msgstr ""
+
+# MSG_SELFTEST_SWAPPED
+#: ultralcd.cpp:8080
+msgid "Swapped"
+msgstr "Echange"
+
+# 
+#: ultralcd.cpp:4715
+msgid "Select filament:"
+msgstr "Selectionnez le filament:"
+
+# MSG_TEMP_CALIBRATION c=14
+#: messages.c:110
+msgid "Temp. cal."
+msgstr "Calib. Temp."
+
+# 
+#: ultralcd.cpp:4856
+msgid "Select temperature which matches your material."
+msgstr "Selectionnez la temperature qui correspond a votre materiau."
+
+# MSG_CALIBRATION_PINDA_MENU c=17 r=1
+#: ultralcd.cpp:5816
+msgid "Temp. calibration"
+msgstr "Calibration temp."
+
+# MSG_TEMP_CAL_FAILED c=20 r=8
+#: ultralcd.cpp:3845
+msgid "Temperature calibration failed"
+msgstr "Echec de la calibration en temperature"
+
+# MSG_TEMP_CALIBRATION_DONE c=20 r=12
+#: messages.c:111
+msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
+msgstr "La calibration en temperature est terminee et activee. La calibration en temperature peut etre desactivee dans le menu Reglages-> Cal. Temp."
+
+#  c=20 r=3
+#: ultralcd.cpp:7311
+msgid "Sensor verified, remove the filament now."
+msgstr "Capteur verifie, retirez le filament maintenant."
+
+# MSG_TEMPERATURE
+#: ultralcd.cpp:5679
+msgid "Temperature"
+msgstr ""
+
+# MSG_MENU_TEMPERATURES c=15 r=1
+#: ultralcd.cpp:2160
+msgid "Temperatures"
+msgstr ""
+
+# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
+#: messages.c:46
+msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
+msgstr "Il faut toujours effectuer la Calibration Z. Veuillez suivre le manuel, chapitre Premiers pas, section Processus de calibration."
+
+# 
+#: ultralcd.cpp:2817
+msgid "Total filament"
+msgstr "Filament total"
+
+# 
+#: ultralcd.cpp:2818
+msgid "Total print time"
+msgstr "Temps total impr."
+
+# MSG_TUNE
+#: ultralcd.cpp:6612
+msgid "Tune"
+msgstr "Regler"
+
+# 
+#: 
+msgid "Unload"
+msgstr "Decharger"
+
+# MSG_TOTAL_FAILURES c=20
+#: messages.c:99
+msgid "Total failures"
+msgstr "Total des echecs"
+
+# 
+#: ultralcd.cpp:2238
+msgid "to load filament"
+msgstr "pour charger le fil."
+
+# 
+#: ultralcd.cpp:2242
+msgid "to unload filament"
+msgstr "pour decharger fil."
+
+# MSG_UNLOAD_FILAMENT c=17
+#: messages.c:112
+msgid "Unload filament"
+msgstr "Decharger fil."
+
+# MSG_UNLOADING_FILAMENT c=20 r=1
+#: messages.c:113
+msgid "Unloading filament"
+msgstr "Dechargement fil."
+
+# MSG_TOTAL c=6
+#: messages.c:98
+msgid "Total"
+msgstr "Totale"
+
+# MSG_USED c=19 r=1
+#: ultralcd.cpp:5932
+msgid "Used during print"
+msgstr "Utilise pdt impr."
+
+# MSG_MENU_VOLTAGES c=15 r=1
+#: ultralcd.cpp:2163
+msgid "Voltages"
+msgstr "Tensions"
+
+# 
+#: ultralcd.cpp:2132
+msgid "unknown"
+msgstr "inconnu"
+
+# MSG_USERWAIT
+#: Marlin_main.cpp:5689
+msgid "Wait for user..."
+msgstr "Attente utilisateur..."
+
+# MSG_WAITING_TEMP c=20 r=3
+#: ultralcd.cpp:3357
+msgid "Waiting for nozzle and bed cooling"
+msgstr "Attente du refroidissement des buse et plateau chauffant"
+
+# MSG_WAITING_TEMP_PINDA c=20 r=3
+#: ultralcd.cpp:3318
+msgid "Waiting for PINDA probe cooling"
+msgstr "Attente du refroidissement de la sonde PINDA"
+
+# 
+#: 
+msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU tube. Use eject if it is hidden in tube."
+msgstr "Utilisez Remonter le fil. pour retirer le filament 1 s'il depasse du tube arriere du MMU. Utilisez ejecter s'il est cache dans le tube."
+
+# MSG_CHANGED_BOTH c=20 r=4
+#: Marlin_main.cpp:1573
+msgid "Warning: both printer type and motherboard type changed."
+msgstr "Attention: Types d'imprimante et de carte mere modifies"
+
+# MSG_CHANGED_MOTHERBOARD c=20 r=4
+#: Marlin_main.cpp:1565
+msgid "Warning: motherboard type changed."
+msgstr "Attention: Type de carte mere modifie."
+
+# MSG_CHANGED_PRINTER c=20 r=4
+#: Marlin_main.cpp:1569
+msgid "Warning: printer type changed."
+msgstr "Attention: Type d'imprimante modifie"
+
+# MSG_UNLOAD_SUCCESSFUL c=20 r=2
+#: Marlin_main.cpp:3308
+msgid "Was filament unload successful?"
+msgstr "Dechargement du filament reussi?"
+
+# MSG_SELFTEST_WIRINGERROR
+#: messages.c:96
+msgid "Wiring error"
+msgstr "Erreur de cablage"
+
+# MSG_WIZARD c=17 r=1
+#: ultralcd.cpp:5775
+msgid "Wizard"
+msgstr "Assistant"
+
+# MSG_XYZ_DETAILS c=18
+#: ultralcd.cpp:2152
+msgid "XYZ cal. details"
+msgstr "Details calib. XYZ"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
+#: messages.c:18
+msgid "XYZ calibration failed. Please consult the manual."
+msgstr "Echec calibration XYZ. Consultez le manuel."
+
+# MSG_YES
+#: messages.c:119
+msgid "Yes"
+msgstr "Oui"
+
+# MSG_WIZARD_QUIT c=20 r=8
+#: messages.c:118
+msgid "You can always resume the Wizard from Calibration -> Wizard."
+msgstr "Vous pouvez toujours relancer l'Assistant dans Calibration > Assistant."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
+#: ultralcd.cpp:3817
+msgid "XYZ calibration all right. Skew will be corrected automatically."
+msgstr "Calibration XYZ OK. L'ecart sera corrige automatiquement."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
+#: ultralcd.cpp:3814
+msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
+msgstr "Calibration XYZ OK. Les axes X/Y sont legerement non perpendiculaires. Bon boulot!"
+
+# MSG_TIMEOUT c=12
+#: messages.c:157
+msgid "Timeout"
+msgstr ""
+
+# MSG_X_CORRECTION c=13
+#: ultralcd.cpp:5091
+msgid "X-correct:"
+msgstr "Correct-X:"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
+#: ultralcd.cpp:3811
+msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
+msgstr "Calibration XYZ OK. Les axes X/Y sont perpendiculaires. Felicitations!"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
+#: ultralcd.cpp:3795
+msgid "XYZ calibration compromised. Front calibration points not reachable."
+msgstr "Calibration XYZ compromise. Les points de calibration en avant ne sont pas atteignables."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
+#: ultralcd.cpp:3798
+msgid "XYZ calibration compromised. Right front calibration point not reachable."
+msgstr "Calibration XYZ compromise. Le point de calibration avant droit n'est pas atteignable."
+
+# MSG_LOAD_ALL c=17
+#: ultralcd.cpp:6171
+msgid "Load all"
+msgstr "Charger un par un"
+
+# 
+#: ultralcd.cpp:3777
+msgid "XYZ calibration failed. Bed calibration point was not found."
+msgstr "Echec calibration XYZ. Le point de calibration du plateau n'a pas ete trouve."
+
+# 
+#: ultralcd.cpp:3783
+msgid "XYZ calibration failed. Front calibration points not reachable."
+msgstr "Echec calibration XYZ. Les points de calibration en avant ne sont pas atteignables."
+
+# 
+#: ultralcd.cpp:3786
+msgid "XYZ calibration failed. Right front calibration point not reachable."
+msgstr "Echec calibration XYZ. Le point de calibration avant droit n'est pas atteignable."
+
+# 
+#: ultralcd.cpp:2917
+msgid "Y distance from min"
+msgstr "Distance Y du min"
+
+# 
+#: ultralcd.cpp:4859
+msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
+msgstr "L'imprimante commencera a  imprimer une ligne en zig-zag. Tournez le bouton jusqu'a atteindre la hauteur optimale. Consultez les photos dans le manuel (chapitre Calibration)."
+
+#  c=20 r=5
+#: ultralcd.cpp:7315
+msgid "Verification failed, remove the filament and try again."
+msgstr "Verification en echec, retirez le filament et reessayez."
+
+# MSG_Y_CORRECTION c=13
+#: ultralcd.cpp:5092
+msgid "Y-correct:"
+msgstr "Correct-Y:"
+
+# MSG_OFF
+#: messages.c:122
+msgid "Off"
+msgstr ""
+
+# MSG_ON
+#: messages.c:123
+msgid "On"
+msgstr ""
+
+# 
+#: messages.c:62
+msgid "Back"
+msgstr "Retour"
+
+# 
+#: ultralcd.cpp:5647
+msgid "Checks"
+msgstr "Verifications"
+
+# 
+#: ultralcd.cpp:8090
+msgid "False triggering"
+msgstr "Faux declenchement"
+
+# 
+#: ultralcd.cpp:3920
+msgid "FINDA:"
+msgstr "FINDA:"
+
+# MSG_FIRMWARE
+#: language.h:24
+msgid "Firmware"
+msgstr ""
+
+# MSG_STRICT
+#: messages.c:129
+msgid "Strict"
+msgstr "Stricte"
+
+# MSG_WARN
+#: messages.c:128
+msgid "Warn"
+msgstr "Avert"
+
+# MSG_HW_SETUP c=18
+#: messages.c:100
+msgid "HW Setup"
+msgstr "Config HW"
+
+# 
+#: ultralcd.cpp:3924
+msgid "IR:"
+msgstr "IR:"
+
+# MSG_MAGNETS_COMP
+#: messages.c:150
+msgid "Magnets comp."
+msgstr "Compens. aim."
+
+# MSG_MESH
+#: messages.c:147
+msgid "Mesh"
+msgstr ""
+
+# 
+#: Marlin_main.cpp:927
+msgid "MK3S firmware detected on MK3 printer"
+msgstr "Firmware MK3S detecte sur imprimante MK3"
+
+# MSG_MMU_MODE
+#: messages.c:136
+msgid "MMU Mode"
+msgstr "Mode MMU"
+
+# 
+#: ultralcd.cpp:4395
+msgid "Mode change in progress ..."
+msgstr "Changement de mode en cours..."
+
+# MSG_MODEL
+#: messages.c:130
+msgid "Model"
+msgstr "Modele"
+
+# MSG_NOZZLE_DIAMETER
+#: messages.c:135
+msgid "Nozzle d."
+msgstr "Diam. buse"
+
+# 
+#: util.cpp:514
+msgid "G-code sliced for a different level. Continue?"
+msgstr "Le G-code a ete prepare pour un niveau different. Continuer?"
+
+# 
+#: util.cpp:520
+msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
+msgstr "Le G-code a ete prepare pour un niveau different. Veuillez decouper le modele a nouveau. L'impression a ete annulee."
+
+# MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5
+#: messages.c:133
+msgid "G-code sliced for a different printer type. Continue?"
+msgstr "Le G-code a ete prepare pour une autre version de l'imprimante. Continuer?"
+
+# MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=6
+#: messages.c:134
+msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
+msgstr "Le G-code a ete prepare pour une autre version de l'imprimante. Veuillez decouper le modele a nouveau. L'impression a ete annulee."
+
+# 
+#: util.cpp:481
+msgid "G-code sliced for a newer firmware. Continue?"
+msgstr "Le G-code a ete prepare pour une version plus recente du firmware. Continuer?"
+
+# 
+#: util.cpp:487
+msgid "G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
+msgstr "Le G-code a ete prepare pour une version plus recente du firmware. Veuillez mettre a jour le firmware. L'impression annulee."
+
+# 
+#: ultralcd.cpp:3916
+msgid "PINDA:"
+msgstr "PINDA:"
+
+#  c=20
+#: ultralcd.cpp:2402
+msgid "Preheating to cut"
+msgstr "Chauffe pour couper"
+
+#  c=20
+#: ultralcd.cpp:2399
+msgid "Preheating to eject"
+msgstr "Chauf. pour remonter"
+
+# 
+#: util.cpp:394
+msgid "Printer nozzle diameter differs from the G-code. Continue?"
+msgstr "Diametre de la buse dans les reglages ne correspond pas a celui dans le G-Code. Continuer?"
+
+# 
+#: util.cpp:401
+msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
+msgstr "Diametre de la buse dans les reglages ne correspond pas a celui dans le G-Code. Merci de verifier le parametre dans les reglages. Impression annulee."
+
+#  c=20
+#: ultralcd.cpp:8095
+msgid "%s level expected"
+msgstr ""
+
+# 
+#: ultralcd.cpp:6574
+msgid "Rename"
+msgstr "Renommer"
+
+# 
+#: ultralcd.cpp:6567
+msgid "Select"
+msgstr "Selectionner"
+
+# 
+#: ultralcd.cpp:2154
+msgid "Sensor info"
+msgstr "Info capteur"
+
+# MSG_SHEET c=10
+#: messages.c:63
+msgid "Sheet"
+msgstr "Plaque"
+
+# MSG_SOUND_BLIND
+#: messages.c:146
+msgid "Assist"
+msgstr ""
+
+# MSG_STEEL_SHEET c=18
+#: messages.c:64
+msgid "Steel sheets"
+msgstr "Plaques en acier"
+
+# MSG_Z_CORRECTION c=13
+#: ultralcd.cpp:5093
+msgid "Z-correct:"
+msgstr "Correct-Z:"
+
+# MSG_Z_PROBE_NR
+#: messages.c:149
+msgid "Z-probe nr."
+msgstr "Mesurer x-fois"
+

+ 1852 - 1842
lang/po/new/it.po

@@ -1,1842 +1,1852 @@
-# Translation of Prusa-Firmware into Italian.
-#
-msgid ""
-msgstr ""
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: it\n"
-"Project-Id-Version: Prusa-Firmware\n"
-"POT-Creation-Date: Fri May 15 18:16:31 CEST 2020\n"
-"PO-Revision-Date: Fri May 15 18:16:31 CEST 2020\n"
-"Language-Team: \n"
-"X-Generator: Poedit 2.0.7\n"
-"X-Poedit-SourceCharset: UTF-8\n"
-"Last-Translator: \n"
-"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-
-# 
-#: 
-msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
-msgstr "[%.7s]Set valori\x0aComp. Z, continuare\x0ao iniziare da zero?\x0a%cContinua%cReset"
-
-# MSG_03_OR_OLDER c=18
-#: messages.c:144
-msgid " 0.3 or older"
-msgstr " 0.3 o inferiore"
-
-# MSG_04_OR_NEWER c=18
-#: messages.c:143
-msgid " 0.4 or newer"
-msgstr " 0.4 o superiore"
-
-# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
-#: messages.c:36
-msgid " of 4"
-msgstr " su 4"
-
-# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:56
-msgid " of 9"
-msgstr " su 9"
-
-# MSG_MEASURED_OFFSET
-#: ultralcd.cpp:3064
-msgid "[0;0] point offset"
-msgstr "[0;0] punto offset"
-
-# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
-#: 
-msgid "Crash detection can\x0abe turned on only in\x0aNormal mode"
-msgstr "Rilev. impatto\x0aattivabile solo\x0ain Modalita normale"
-
-# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
-#: 
-msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
-msgstr "ATTENZIONE:\x0aRilev. impatto\x0adisattivato in\x0aModalita silenziosa"
-
-# 
-#: ultralcd.cpp:2460
-msgid ">Cancel"
-msgstr ">Annulla"
-
-# MSG_BABYSTEPPING_Z c=15
-#: ultralcd.cpp:3184
-msgid "Adjusting Z:"
-msgstr "Compensaz. Z:"
-
-# MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:8677
-msgid "All correct      "
-msgstr "Nessun errore"
-
-# MSG_WIZARD_DONE c=20 r=8
-#: messages.c:99
-msgid "All is done. Happy printing!"
-msgstr "Tutto fatto. Buona stampa!"
-
-# 
-#: ultralcd.cpp:1956
-msgid "Ambient"
-msgstr "Ambiente"
-
-# MSG_AUTO c=6
-#: messages.c:140
-msgid "Auto"
-msgstr ""
-
-# MSG_PRESS c=20 r=2
-#: ultralcd.cpp:2609
-msgid "and press the knob"
-msgstr "e cliccare manopola"
-
-# MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3506
-msgid "Are left and right Z~carriages all up?"
-msgstr "I carrelli Z sin/des sono altezza max?"
-
-# MSG_AUTO_DEPLETE c=17 r=1
-#: messages.c:108
-msgid "SpoolJoin"
-msgstr ""
-
-# MSG_AUTO_HOME
-#: messages.c:11
-msgid "Auto home"
-msgstr "Trova origine"
-
-# MSG_AUTOLOAD_FILAMENT c=18
-#: ultralcd.cpp:6961
-msgid "AutoLoad filament"
-msgstr "Autocaric. filam."
-
-# MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4445
-msgid "Autoloading filament available only when filament sensor is turned on..."
-msgstr "Caricamento auto. filam. disp. solo con il sensore attivo..."
-
-# MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2804
-msgid "Autoloading filament is active, just press the knob and insert filament..."
-msgstr "Caricamento automatico attivo, premi la manopola e inserisci il filamento."
-
-# MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:8325
-msgid "Axis length"
-msgstr "Lunghezza dell'asse"
-
-# MSG_SELFTEST_AXIS
-#: ultralcd.cpp:8327
-msgid "Axis"
-msgstr "Assi"
-
-# MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:8269
-msgid "Bed / Heater"
-msgstr "Piano/Riscald."
-
-# MSG_BED_DONE
-#: messages.c:15
-msgid "Bed done"
-msgstr "Piano fatto."
-
-# MSG_BED_HEATING
-#: messages.c:16
-msgid "Bed Heating"
-msgstr "Riscald. piano"
-
-# MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5861
-msgid "Bed level correct"
-msgstr "Correz. liv.piano"
-
-# MSG_BELTTEST c=17
-#: ultralcd.cpp:5841
-msgid "Belt test        "
-msgstr "Test cinghie     "
-
-# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
-#: messages.c:17
-msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
-msgstr "Livellamento piano fallito. Sensore KO? Residui su ugello? In attesa di reset."
-
-# MSG_BRIGHT c=6
-#: messages.c:138
-msgid "Bright"
-msgstr "Chiaro"
-
-# MSG_BRIGHTNESS c=18
-#: messages.c:134
-msgid "Brightness"
-msgstr "Luminosita'"
-
-# MSG_BED
-#: messages.c:14
-msgid "Bed"
-msgstr "Piano"
-
-# MSG_MENU_BELT_STATUS c=18
-#: ultralcd.cpp:2009
-msgid "Belt status"
-msgstr "Stato cinghie"
-
-# MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:67
-msgid "Blackout occurred. Recover print?"
-msgstr "Blackout rilevato. Recuperare la stampa?"
-
-# 
-#: ultralcd.cpp:8679
-msgid "Calibrating home"
-msgstr "Calibrazione Home"
-
-# MSG_CALIBRATE_BED
-#: ultralcd.cpp:5850
-msgid "Calibrate XYZ"
-msgstr "Calibra XYZ"
-
-# MSG_HOMEYZ
-#: messages.c:44
-msgid "Calibrate Z"
-msgstr "Calibra Z"
-
-# MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4637
-msgid "Calibrate"
-msgstr "Calibra"
-
-# MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3469
-msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
-msgstr "Calibrazione XYZ. Ruotare la manopola per alzare il carrello Z fino all'altezza massima. Click per terminare."
-
-# MSG_CALIBRATE_Z_AUTO c=20 r=2
-#: messages.c:19
-msgid "Calibrating Z"
-msgstr "Calibrando Z"
-
-# MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3469
-msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
-msgstr "Calibrazione Z. Ruotare la manopola per alzare il carrello Z fino all'altezza massima. Click per terminare."
-
-# MSG_HOMEYZ_DONE
-#: ultralcd.cpp:865
-msgid "Calibration done"
-msgstr "Calibrazione completa"
-
-# MSG_MENU_CALIBRATION
-#: messages.c:57
-msgid "Calibration"
-msgstr "Calibrazione"
-
-# 
-#: ultralcd.cpp:4815
-msgid "Cancel"
-msgstr "Annulla"
-
-# MSG_SD_REMOVED
-#: ultralcd.cpp:9090
-msgid "Card removed"
-msgstr "SD rimossa"
-
-# MSG_NOT_COLOR
-#: ultralcd.cpp:2709
-msgid "Color not correct"
-msgstr "Colore non puro"
-
-# MSG_COOLDOWN
-#: messages.c:22
-msgid "Cooldown"
-msgstr "Raffredda"
-
-# 
-#: ultralcd.cpp:4570
-msgid "Copy selected language?"
-msgstr "Copiare la lingua selezionata?"
-
-# MSG_CRASHDETECT c=13
-#: messages.c:24
-msgid "Crash det."
-msgstr "Rileva.crash"
-
-# 
-#: ultralcd.cpp:4950
-msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
-msgstr "Scegli un filamento per la calibrazione del primo strato e selezionalo nel menu sullo schermo."
-
-# MSG_CRASH_DETECTED c=20 r=1
-#: messages.c:23
-msgid "Crash detected."
-msgstr "Rilevato impatto."
-
-# 
-#: Marlin_main.cpp:607
-msgid "Crash detected. Resume print?"
-msgstr "Scontro rilevato. Riprendere la stampa?"
-
-# 
-#: ultralcd.cpp:1785
-msgid "Crash"
-msgstr "Impatto"
-
-# MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:6002
-msgid "Current"
-msgstr "Attuale"
-
-# MSG_DATE c=17 r=1
-#: ultralcd.cpp:2163
-msgid "Date:"
-msgstr "Data:"
-
-# MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5743
-msgid "Disable steppers"
-msgstr "Disabilita motori"
-
-# MSG_BABYSTEP_Z_NOT_SET c=20 r=12
-#: messages.c:13
-msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
-msgstr "Distanza tra la punta dell'ugello e la superficie del piano non ancora impostata. Si prega di seguire il manuale, capitolo Primi Passi, sezione Calibrazione primo strato."
-
-# MSG_FS_CONTINUE c=5
-#: messages.c:132
-msgid "Cont."
-msgstr ""
-
-# MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:5125
-msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
-msgstr "Desideri ripetere l'ultimo passaggio per migliorare la distanza fra ugello e piatto?"
-
-# MSG_EXTRUDER_CORRECTION c=13
-#: ultralcd.cpp:5194
-msgid "E-correct:"
-msgstr "Correzione-E:"
-
-# MSG_EJECT_FILAMENT c=17 r=1
-#: messages.c:49
-msgid "Eject filament"
-msgstr "Espelli filamento"
-
-# MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1416
-msgid "Ejecting filament"
-msgstr "Espellendo filamento"
-
-# MSG_SELFTEST_ENDSTOP_NOTHIT c=20
-#: ultralcd.cpp:8293
-msgid "Endstop not hit"
-msgstr "Finec. fuori portata"
-
-# MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:8287
-msgid "Endstop"
-msgstr "Finecorsa"
-
-# MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:8275
-msgid "Endstops"
-msgstr "Finecorsa"
-
-# MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6998
-msgid "Error - static memory has been overwritten"
-msgstr "Errore - la memoria statica e' stata sovrascritta"
-
-# MSG_CUT_FILAMENT c=16
-#: messages.c:50
-msgid "Cut filament"
-msgstr "Taglia filamento"
-
-# MSG_CUTTER c=9
-#: messages.c:109
-msgid "Cutter"
-msgstr "Tagliatr."
-
-#  c=18
-#: mmu.cpp:1388
-msgid "Cutting filament"
-msgstr "Tagliando filam."
-
-# MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4458
-msgid "ERROR: Filament sensor is not responding, please check connection."
-msgstr "ERRORE: il sensore filam. non risponde,Controllare conness."
-
-# MSG_DIM c=6
-#: messages.c:139
-msgid "Dim"
-msgstr "Scuro"
-
-# MSG_ERROR
-#: messages.c:25
-msgid "ERROR:"
-msgstr "ERRORE:"
-
-# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:8686
-msgid "Extruder fan:"
-msgstr "Ventola estr:"
-
-# MSG_INFO_EXTRUDER c=18
-#: ultralcd.cpp:2211
-msgid "Extruder info"
-msgstr "Info estrusore"
-
-# MSG_MOVE_E
-#: messages.c:26
-msgid "Extruder"
-msgstr "Estrusore"
-
-# 
-#: ultralcd.cpp:6985
-msgid "Fail stats MMU"
-msgstr "Stat.fall. MMU"
-
-# MSG_FSENSOR_AUTOLOAD c=13
-#: messages.c:40
-msgid "F. autoload"
-msgstr "Autocar.fil."
-
-# 
-#: ultralcd.cpp:6982
-msgid "Fail stats"
-msgstr "Stat. fallimenti"
-
-# MSG_FAN_SPEED c=14
-#: messages.c:28
-msgid "Fan speed"
-msgstr "Velocita vent."
-
-# MSG_SELFTEST_FAN c=20
-#: messages.c:74
-msgid "Fan test"
-msgstr "Test ventola"
-
-# MSG_FANS_CHECK
-#: ultralcd.cpp:5751
-msgid "Fans check"
-msgstr "Control.vent"
-
-# MSG_FSENSOR
-#: messages.c:41
-msgid "Fil. sensor"
-msgstr "Sensore fil."
-
-#  c=14
-#: ultralcd.cpp:1784
-msgid "Filam. runouts"
-msgstr "Fil. esauriti"
-
-# MSG_FILAMENT_CLEAN c=20 r=2
-#: messages.c:29
-msgid "Filament extruding & with correct color?"
-msgstr "Filamento estruso e con colore corretto?"
-
-# MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2705
-msgid "Filament not loaded"
-msgstr "Fil. non caricato"
-
-# MSG_FILAMENT_SENSOR c=20
-#: messages.c:80
-msgid "Filament sensor"
-msgstr "Sensore filam."
-
-# MSG_FILAMENT_USED c=19
-#: ultralcd.cpp:2869
-msgid "Filament used"
-msgstr "Fil. utilizzato"
-
-# MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2870
-msgid "Print time"
-msgstr "Tempo di stampa"
-
-# MSG_FS_ACTION c=10
-#: messages.c:131
-msgid "FS Action"
-msgstr "Azione FS"
-
-#  c=18
-#: Marlin_main.cpp:9512
-msgid "FS v0.4 or newer"
-msgstr "FS 0.4 o superiore"
-
-# MSG_FILE_INCOMPLETE c=20 r=3
-#: ultralcd.cpp:8814
-msgid "File incomplete. Continue anyway?"
-msgstr "File incompleto. Continuare comunque?"
-
-# MSG_FINISHING_MOVEMENTS c=20
-#: messages.c:37
-msgid "Finishing movements"
-msgstr "Finaliz. spostamenti"
-
-# MSG_V2_CALIBRATION c=18
-#: messages.c:103
-msgid "First layer cal."
-msgstr "Cal. primo strato"
-
-# MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:5046
-msgid "First, I will run the selftest to check most common assembly problems."
-msgstr "Per primo avviero l'autotest per controllare gli errori di assemblaggio piu comuni."
-
-# 
-#: mmu.cpp:727
-msgid "Fix the issue and then press button on MMU unit."
-msgstr "Risolvere il problema e premere il bottone sull'unita MMU. "
-
-# MSG_FLOW
-#: ultralcd.cpp:7125
-msgid "Flow"
-msgstr "Flusso"
-
-# MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2156
-msgid "forum.prusa3d.com"
-msgstr ""
-
-# MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:71
-msgid "Front print fan?"
-msgstr "Ventola frontale?"
-
-# MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3266
-msgid "Front side[um]"
-msgstr "Fronte [um]"
-
-# MSG_SELFTEST_FANS
-#: ultralcd.cpp:8333
-msgid "Front/left fans"
-msgstr "Ventola frontale/sinistra"
-
-# MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:8263
-msgid "Heater/Thermistor"
-msgstr "Riscald./Termist."
-
-# MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:9440
-msgid "Heating disabled by safety timer."
-msgstr "Riscaldamento fermato dal timer di sicurezza."
-
-# MSG_HEATING_COMPLETE c=20
-#: messages.c:43
-msgid "Heating done."
-msgstr "Riscald. completo"
-
-# MSG_HEATING
-#: messages.c:42
-msgid "Heating"
-msgstr "Riscaldamento..."
-
-# MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:5025
-msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
-msgstr "Ciao, sono la tua stampante Original Prusa i3. Gradiresti un aiuto nel processo di configurazione?"
-
-# MSG_PRUSA3D_HOWTO
-#: ultralcd.cpp:2157
-msgid "howto.prusa3d.com"
-msgstr ""
-
-# MSG_FILAMENTCHANGE
-#: messages.c:34
-msgid "Change filament"
-msgstr "Cambia filamento"
-
-# MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2620
-msgid "Change success!"
-msgstr "Cambio riuscito!"
-
-# MSG_CORRECTLY c=20
-#: ultralcd.cpp:2697
-msgid "Changed correctly?"
-msgstr "Cambio corretto?"
-
-# MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:77
-msgid "Checking bed     "
-msgstr "Verifica piano"
-
-# MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:8668
-msgid "Checking endstops"
-msgstr "Verifica finecorsa"
-
-# MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:8674
-msgid "Checking hotend  "
-msgstr "Verifica ugello"
-
-# MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:78
-msgid "Checking sensors "
-msgstr "Controllo sensori"
-
-# MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:7482
-msgid "Checking X axis  "
-msgstr "Verifica asse X"
-
-# MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:7491
-msgid "Checking Y axis  "
-msgstr "Verifica asse Y"
-
-# MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:8671
-msgid "Checking Z axis  "
-msgstr "Verifica asse Z"
-
-# MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:45
-msgid "Choose extruder:"
-msgstr "Seleziona estrusore:"
-
-# MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:46
-msgid "Choose filament:"
-msgstr "Scegliere filamento:"
-
-# MSG_FILAMENT c=17 r=1
-#: messages.c:27
-msgid "Filament"
-msgstr "Filamento"
-
-# MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:5055
-msgid "I will run xyz calibration now. It will take approx. 12 mins."
-msgstr "Adesso avviero una Calibrazione XYZ. Puo durare circa 12 min."
-
-# MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:5063
-msgid "I will run z calibration now."
-msgstr "Adesso avviero la Calibrazione Z."
-
-# MSG_WATCH
-#: messages.c:97
-msgid "Info screen"
-msgstr "Schermata info"
-
-# MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2605
-msgid "Insert filament"
-msgstr "Inserire filamento"
-
-# MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4835
-msgid "Is filament loaded?"
-msgstr "Il filamento e' stato caricato?"
-
-# MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:90
-msgid "Is steel sheet on heatbed?"
-msgstr "Piastra d'acciaio su piano riscaldato?"
-
-# 
-#: ultralcd.cpp:1727
-msgid "Last print failures"
-msgstr "Fallimenti ultima stampa"
-
-# 
-#: ultralcd.cpp:5133
-msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
-msgstr "Se hai piastre d'acciaio aggiuntive, calibra i preset in Impostazioni - Setup HW - Piastre in Acciaio."
-
-# 
-#: ultralcd.cpp:1704
-msgid "Last print"
-msgstr "Ultima stampa"
-
-# MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:72
-msgid "Left hotend fan?"
-msgstr "Vent SX hotend?"
-
-# 
-#: ultralcd.cpp:2993
-msgid "Left"
-msgstr "Sinistra"
-
-# MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3264
-msgid "Left side [um]"
-msgstr "Sinistra [um]"
-
-# 
-#: ultralcd.cpp:5766
-msgid "Lin. correction"
-msgstr "Correzione lineare"
-
-# MSG_BABYSTEP_Z
-#: messages.c:12
-msgid "Live adjust Z"
-msgstr "Compensazione Z"
-
-#  c=20 r=6
-#: ultralcd.cpp:7527
-msgid "Insert the filament (do not load it) into the extruder and then press the knob."
-msgstr "Inserire filamento (senza caricarlo) nell'estrusore e premere la manopola."
-
-# MSG_LOAD_FILAMENT c=17
-#: messages.c:47
-msgid "Load filament"
-msgstr "Carica filamento"
-
-# MSG_LOADING_COLOR
-#: ultralcd.cpp:2645
-msgid "Loading color"
-msgstr "Caricando colore"
-
-# MSG_LOADING_FILAMENT c=20
-#: messages.c:48
-msgid "Loading filament"
-msgstr "Caricando filamento"
-
-# MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:8317
-msgid "Loose pulley"
-msgstr "Puleggia lenta"
-
-# 
-#: ultralcd.cpp:6944
-msgid "Load to nozzle"
-msgstr "Carica ugello"
-
-# MSG_M117_V2_CALIBRATION c=25
-#: messages.c:51
-msgid "M117 First layer cal."
-msgstr "M117 Calibr. primo strato"
-
-# MSG_MAIN
-#: messages.c:52
-msgid "Main"
-msgstr "Menu principale"
-
-# MSG_BL_HIGH c=12
-#: messages.c:135
-msgid "Level Bright"
-msgstr "Liv. Chiaro"
-
-# MSG_BL_LOW c=12
-#: messages.c:136
-msgid "Level Dimmed"
-msgstr "Liv. Scuro"
-
-# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:55
-msgid "Measuring reference height of calibration point"
-msgstr "Misura altezza di rif. del punto di calib."
-
-# MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5856
-msgid "Mesh Bed Leveling"
-msgstr "Liv. grilia piano"
-
-# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:765
-msgid "MMU OK. Resuming position..."
-msgstr "MMU OK. riprendendo la posizione... "
-
-# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:758
-msgid "MMU OK. Resuming temperature..."
-msgstr "MMU OK. Ripristino temperatura... "
-
-# 
-#: ultralcd.cpp:3034
-msgid "Measured skew"
-msgstr "Deviazione mis"
-
-# 
-#: ultralcd.cpp:1728
-msgid "MMU fails"
-msgstr "Fallimenti MMU"
-
-# 
-#: mmu.cpp:1588
-msgid "MMU load failed     "
-msgstr "Caricamento MMU fallito"
-
-# 
-#: ultralcd.cpp:1729
-msgid "MMU load fails"
-msgstr "Caricamenti MMU falliti"
-
-# MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:776
-msgid "MMU OK. Resuming..."
-msgstr "MMU OK. Riprendendo... "
-
-# MSG_MODE
-#: messages.c:84
-msgid "Mode"
-msgstr "Mod."
-
-#  c=20 r=3
-#: Marlin_main.cpp:879
-msgid "MK3 firmware detected on MK3S printer"
-msgstr "Firmware MK3 rilevato su stampante MK3S"
-
-# MSG_NORMAL
-#: messages.c:88
-msgid "Normal"
-msgstr "Normale"
-
-# MSG_SILENT
-#: messages.c:87
-msgid "Silent"
-msgstr "Silenzioso"
-
-# 
-#: mmu.cpp:722
-msgid "MMU needs user attention."
-msgstr "Il MMU richiede attenzione dall'utente."
-
-# 
-#: ultralcd.cpp:1755
-msgid "MMU power fails"
-msgstr "Manc. corr. MMU"
-
-# MSG_STEALTH
-#: messages.c:89
-msgid "Stealth"
-msgstr "Silenziosa"
-
-# MSG_AUTO_POWER
-#: messages.c:86
-msgid "Auto power"
-msgstr "Auto"
-
-# MSG_HIGH_POWER
-#: messages.c:85
-msgid "High power"
-msgstr "Forte"
-
-# 
-#: ultralcd.cpp:2186
-msgid "MMU2 connected"
-msgstr "MMU2 connessa"
-
-# MSG_SELFTEST_MOTOR
-#: messages.c:79
-msgid "Motor"
-msgstr "Motore"
-
-# MSG_MOVE_AXIS
-#: ultralcd.cpp:5741
-msgid "Move axis"
-msgstr "Muovi asse"
-
-# MSG_MOVE_X
-#: ultralcd.cpp:4361
-msgid "Move X"
-msgstr "Sposta X"
-
-# MSG_MOVE_Y
-#: ultralcd.cpp:4362
-msgid "Move Y"
-msgstr "Sposta Y"
-
-# MSG_MOVE_Z
-#: ultralcd.cpp:4363
-msgid "Move Z"
-msgstr "Sposta Z"
-
-# MSG_NO_MOVE
-#: Marlin_main.cpp:5541
-msgid "No move."
-msgstr "Nessun movimento."
-
-# MSG_NO_CARD
-#: ultralcd.cpp:6911
-msgid "No SD card"
-msgstr "Nessuna SD"
-
-# MSG_NA
-#: messages.c:107
-msgid "N/A"
-msgstr "N/D"
-
-# MSG_NO
-#: messages.c:58
-msgid "No"
-msgstr ""
-
-# MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:8265
-msgid "Not connected"
-msgstr "Non connesso"
-
-# 
-#: util.cpp:293
-msgid "New firmware version available:"
-msgstr "Nuova versione firmware disponibile:"
-
-# MSG_SELFTEST_FAN_NO c=19
-#: messages.c:75
-msgid "Not spinning"
-msgstr "Non gira"
-
-# MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4946
-msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
-msgstr "Adesso calibro la distanza fra ugello e superfice del piatto."
-
-# MSG_WIZARD_WILL_PREHEAT c=20 r=4
-#: ultralcd.cpp:5071
-msgid "Now I will preheat nozzle for PLA."
-msgstr "Adesso preriscaldero l'ugello per PLA."
-
-# MSG_NOZZLE
-#: messages.c:59
-msgid "Nozzle"
-msgstr "Ugello"
-
-# MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
-#: Marlin_main.cpp:1518
-msgid "Old settings found. Default PID, Esteps etc. will be set."
-msgstr "Sono state trovate impostazioni vecchie. Verranno impostati i valori predefiniti di PID, Esteps etc."
-
-# 
-#: ultralcd.cpp:5062
-msgid "Now remove the test print from steel sheet."
-msgstr "Ora rimuovete la stampa di prova dalla piastra in acciaio."
-
-# 
-#: ultralcd.cpp:1654
-msgid "Nozzle FAN"
-msgstr "Ventola estrusore"
-
-# MSG_PAUSE_PRINT
-#: ultralcd.cpp:6875
-msgid "Pause print"
-msgstr "Metti in pausa"
-
-# MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1539
-msgid "PID cal.           "
-msgstr "Calibrazione PID"
-
-# MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1545
-msgid "PID cal. finished"
-msgstr "Calib. PID completa"
-
-# MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5862
-msgid "PID calibration"
-msgstr "Calibrazione PID"
-
-# MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:896
-msgid "PINDA Heating"
-msgstr "Riscaldamento PINDA"
-
-# MSG_PAPER c=20 r=10
-#: messages.c:60
-msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
-msgstr "Posizionare un foglio sotto l'ugello durante la calibrazione dei primi 4 punti. In caso l'ugello muova il foglio spegnere subito la stampante."
-
-# MSG_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:5128
-msgid "Please clean heatbed and then press the knob."
-msgstr "Per favore pulisci il piatto, poi premi la manopola."
-
-# MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
-#: messages.c:21
-msgid "Please clean the nozzle for calibration. Click when done."
-msgstr "Pulire l'ugello per la calibrazione, poi fare click."
-
-# MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:8257
-msgid "Please check :"
-msgstr "Verifica:"
-
-# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:98
-msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
-msgstr "Per favore consulta il nostro manuale per risolvere il problema. Poi riprendi il Wizard dopo aver riavviato la stampante."
-
-# MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3138
-msgid "Please open idler and remove filament manually."
-msgstr "Aprire la guida filam. e rimuovere il filam. a mano"
-
-# MSG_PLACE_STEEL_SHEET c=20 r=4
-#: messages.c:61
-msgid "Please place steel sheet on heatbed."
-msgstr "Per favore posizionate la piastra d'acciaio sul piano riscaldato."
-
-# MSG_PRESS_TO_UNLOAD c=20 r=4
-#: messages.c:64
-msgid "Please press the knob to unload filament"
-msgstr "Premete la manopola per scaricare il filamento "
-
-# MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:66
-msgid "Please pull out filament immediately"
-msgstr "Estrarre il filamento immediatamente"
-
-# MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1422
-msgid "Please remove filament and then press the knob."
-msgstr "Rimuovi il filamento e quindi premi la manopola. "
-
-# MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:70
-msgid "Please remove steel sheet from heatbed."
-msgstr "Rimuovete la piastra di acciaio dal piano riscaldato"
-
-# MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4583
-msgid "Please run XYZ calibration first."
-msgstr "Esegui la calibrazione XYZ prima. "
-
-# MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1341
-msgid "Please update firmware in your MMU2. Waiting for reset."
-msgstr "Aggiorna il firmware sul tuo MMU2. In attesa di reset. "
-
-# MSG_PLEASE_WAIT c=20
-#: messages.c:62
-msgid "Please wait"
-msgstr "Attendere"
-
-# 
-#: ultralcd.cpp:5061
-msgid "Please remove shipping helpers first."
-msgstr "Per favore rimuovete i materiali da spedizione"
-
-# MSG_PREHEAT_NOZZLE c=20
-#: messages.c:63
-msgid "Preheat the nozzle!"
-msgstr "Prerisc. ugello!"
-
-# MSG_PREHEAT
-#: ultralcd.cpp:6853
-msgid "Preheat"
-msgstr "Preriscalda"
-
-# MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:100
-msgid "Preheating nozzle. Please wait."
-msgstr "Preriscaldando l'ugello. Attendere prego."
-
-#  c=14
-#: ultralcd.cpp:1959
-msgid "PINDA"
-msgstr ""
-
-# 
-#: util.cpp:297
-msgid "Please upgrade."
-msgstr "Prego aggiornare."
-
-# MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:11526
-msgid "Press knob to preheat nozzle and continue."
-msgstr "Premete la manopola per preriscaldare l'ugello e continuare."
-
-# MSG_FS_PAUSE c=5
-#: fsensor.cpp:710
-msgid "Pause"
-msgstr "Pausa"
-
-# 
-#: ultralcd.cpp:1783
-msgid "Power failures"
-msgstr "Mancanza corrente"
-
-# MSG_PRINT_ABORTED c=20
-#: messages.c:65
-msgid "Print aborted"
-msgstr "Stampa interrotta"
-
-#  c=20
-#: ultralcd.cpp:2442
-msgid "Preheating to load"
-msgstr "Preriscald. carico"
-
-#  c=20
-#: ultralcd.cpp:2446
-msgid "Preheating to unload"
-msgstr "Preriscald. scarico"
-
-# MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:8689
-msgid "Print fan:"
-msgstr "Vent.stam:"
-
-# MSG_CARD_MENU
-#: messages.c:20
-msgid "Print from SD"
-msgstr "Stampa da SD"
-
-# 
-#: ultralcd.cpp:2289
-msgid "Press the knob"
-msgstr "Premere la manopola"
-
-# MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1118
-msgid "Print paused"
-msgstr "Stampa in pausa"
-
-# 
-#: mmu.cpp:726
-msgid "Press the knob to resume nozzle temperature."
-msgstr "Premete la manopola per recuperare la temperatura dell'ugello."
-
-# MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
-#: messages.c:38
-msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
-msgstr "Stampante non ancora calibrata. Si prega di seguire il manuale, capitolo Primi Passi, sezione Sequenza di Calibrazione."
-
-# 
-#: ultralcd.cpp:1655
-msgid "Print FAN"
-msgstr "Ventola di stampa"
-
-# 
-#: ultralcd.cpp:4926
-msgid "Please insert filament into the extruder, then press the knob to load it."
-msgstr "Inserisci il filamento nell'estrusore, poi premi la manopola per caricarlo."
-
-# 
-#: ultralcd.cpp:4921
-msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
-msgstr "Per favore inserisci il filamento nel primo tubo del MMU, poi premi la manopola per caricarlo."
-
-# 
-#: ultralcd.cpp:4843
-msgid "Please load filament first."
-msgstr "Per favore prima carica il filamento."
-
-# MSG_PRUSA3D
-#: ultralcd.cpp:2155
-msgid "prusa3d.com"
-msgstr ""
-
-# MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3267
-msgid "Rear side [um]"
-msgstr "Retro [um]"
-
-#  c=20 r=4
-#: ultralcd.cpp:7549
-msgid "Please unload the filament first, then repeat this action."
-msgstr "Scaricare prima il filamento, poi ripetere l'operazione."
-
-# MSG_RECOVERING_PRINT c=20
-#: Marlin_main.cpp:10883
-msgid "Recovering print    "
-msgstr "Recupero stampa     "
-
-# MSG_REMOVE_OLD_FILAMENT c=20 r=5
-#: mmu.cpp:833
-msgid "Remove old filament and press the knob to start loading new filament."
-msgstr "Rimuovi il filamento precedente e premi la manopola per caricare il nuovo filamento."
-
-#  c=20
-#: 
-msgid "Prusa i3 MK3S OK."
-msgstr ""
-
-# MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5867
-msgid "Reset XYZ calibr."
-msgstr "Reset calibrazione XYZ."
-
-# MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3268
-msgid "Reset"
-msgstr ""
-
-# MSG_RESUME_PRINT
-#: ultralcd.cpp:6861
-msgid "Resume print"
-msgstr "Riprendi stampa"
-
-# MSG_RESUMING_PRINT c=20
-#: messages.c:69
-msgid "Resuming print"
-msgstr "Riprendi stampa"
-
-# MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3265
-msgid "Right side[um]"
-msgstr "Destra [um]"
-
-# MSG_RPI_PORT
-#: messages.c:123
-msgid "RPi port"
-msgstr "Porta RPi"
-
-# MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4864
-msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
-msgstr "Se avvi il Wizard perderai la calibrazione preesistente e dovrai ricominciare dall'inizio. Continuare?"
-
-# MSG_SD_CARD
-#: messages.c:118
-msgid "SD card"
-msgstr "Mem. SD"
-
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
-#: messages.c:119
-msgid "FlashAir"
-msgstr ""
-
-# 
-#: ultralcd.cpp:2994
-msgid "Right"
-msgstr "Destra"
-
-# MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: messages.c:35
-msgid "Searching bed calibration point"
-msgstr "Ricerca dei punti di calibrazione del piano"
-
-# MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5779
-msgid "Select language"
-msgstr "Seleziona lingua"
-
-# MSG_SELFTEST_OK
-#: ultralcd.cpp:7812
-msgid "Self test OK"
-msgstr "Autotest OK"
-
-# MSG_SELFTEST_START c=20
-#: ultralcd.cpp:7582
-msgid "Self test start  "
-msgstr "Avvia autotest"
-
-# MSG_SELFTEST
-#: ultralcd.cpp:5843
-msgid "Selftest         "
-msgstr "Autotest         "
-
-# MSG_SELFTEST_ERROR
-#: ultralcd.cpp:8255
-msgid "Selftest error !"
-msgstr "Errore Autotest !"
-
-# MSG_SELFTEST_FAILED c=20
-#: messages.c:73
-msgid "Selftest failed  "
-msgstr "Autotest fallito"
-
-# MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1550
-msgid "Selftest will be run to calibrate accurate sensorless rehoming."
-msgstr "Verra effettuato un self test per calibrare l'homing senza sensori"
-
-# 
-#: ultralcd.cpp:5102
-msgid "Select nozzle preheat temperature which matches your material."
-msgstr "Selezionate la temperatura per il preriscaldamento dell'ugello adatta al vostro materiale."
-
-# MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3286
-msgid "Set temperature:"
-msgstr "Imposta temperatura"
-
-#  c=20
-#: 
-msgid "Prusa i3 MK2.5 OK."
-msgstr ""
-
-#  c=20
-#: 
-msgid "Prusa i3 MK2.5S OK."
-msgstr ""
-
-#  c=20
-#: 
-msgid "Prusa i3 MK3 OK."
-msgstr ""
-
-# MSG_SETTINGS
-#: messages.c:82
-msgid "Settings"
-msgstr "Impostazioni"
-
-# MSG_SHOW_END_STOPS c=18
-#: ultralcd.cpp:5864
-msgid "Show end stops"
-msgstr "Stato finecorsa"
-
-# 
-#: ultralcd.cpp:4008
-msgid "Sensor state"
-msgstr "Stato sensore"
-
-# MSG_FILE_CNT c=20 r=6
-#: cardreader.cpp:738
-msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
-msgstr "Alcuni file non saranno ordinati. Il numero massimo di file in una cartella e 100 perche siano ordinati."
-
-# MSG_SORT
-#: messages.c:120
-msgid "Sort"
-msgstr "Ordina"
-
-# MSG_NONE
-#: messages.c:110
-msgid "None"
-msgstr "Nessuno"
-
-# MSG_SORT_TIME
-#: messages.c:121
-msgid "Time"
-msgstr "Cron."
-
-# 
-#: ultralcd.cpp:3037
-msgid "Severe skew:"
-msgstr "Devia.grave:"
-
-# MSG_SORT_ALPHA
-#: messages.c:122
-msgid "Alphabet"
-msgstr "Alfabeti"
-
-# MSG_SORTING c=20 r=1
-#: cardreader.cpp:745
-msgid "Sorting files"
-msgstr "Ordinando i file"
-
-# MSG_SOUND_LOUD
-#: messages.c:125
-msgid "Loud"
-msgstr "Forte"
-
-# 
-#: ultralcd.cpp:3036
-msgid "Slight skew:"
-msgstr "Devia.lieve:"
-
-# MSG_SOUND
-#: messages.c:124
-msgid "Sound"
-msgstr "Suono"
-
-#  c=7
-#: ultralcd.cpp:1822
-msgid "Runouts"
-msgstr "Esaurim"
-
-# 
-#: Marlin_main.cpp:5101
-msgid "Some problem encountered, Z-leveling enforced ..."
-msgstr "Sono stati rilevati problemi, avviato livellamento Z ..."
-
-# MSG_SOUND_ONCE
-#: messages.c:126
-msgid "Once"
-msgstr "Singolo"
-
-# MSG_SPEED
-#: ultralcd.cpp:7119
-msgid "Speed"
-msgstr "Velocita"
-
-# MSG_SELFTEST_FAN_YES c=19
-#: messages.c:76
-msgid "Spinning"
-msgstr "Gira"
-
-# MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4596
-msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
-msgstr "Sono necessari una temperatura ambiente di 21-26C e una superficie rigida "
-
-# MSG_STATISTICS
-#: ultralcd.cpp:6978
-msgid "Statistics  "
-msgstr "Statistiche"
-
-# MSG_STOP_PRINT
-#: messages.c:91
-msgid "Stop print"
-msgstr "Arresta stampa"
-
-# MSG_STOPPED
-#: messages.c:92
-msgid "STOPPED. "
-msgstr "ARRESTATO."
-
-# MSG_SUPPORT
-#: ultralcd.cpp:6987
-msgid "Support"
-msgstr "Supporto"
-
-# MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:8335
-msgid "Swapped"
-msgstr "Scambiato"
-
-# 
-#: ultralcd.cpp:4814
-msgid "Select filament:"
-msgstr "Seleziona il filamento:"
-
-# MSG_TEMP_CALIBRATION c=14
-#: messages.c:93
-msgid "Temp. cal."
-msgstr "Calib. temp."
-
-# 
-#: ultralcd.cpp:4955
-msgid "Select temperature which matches your material."
-msgstr "Seleziona la temperatura appropriata per il tuo materiale."
-
-# MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5873
-msgid "Temp. calibration"
-msgstr "Calib. Temp."
-
-# MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3933
-msgid "Temperature calibration failed"
-msgstr "Calibrazione temperatura fallita"
-
-# MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:94
-msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
-msgstr "Calibrazione temperatura completata e attiva. Puo essere disattivata dal menu Impostazioni ->Cal. Temp."
-
-#  c=20 r=3
-#: ultralcd.cpp:7554
-msgid "Sensor verified, remove the filament now."
-msgstr "Sensore verificato, rimuovere il filamento."
-
-# MSG_TEMPERATURE
-#: ultralcd.cpp:5739
-msgid "Temperature"
-msgstr ""
-
-# MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2218
-msgid "Temperatures"
-msgstr "Temperature"
-
-# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
-#: messages.c:39
-msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
-msgstr "E ancora necessario effettuare la calibrazione Z. Segui il manuale, capitolo Primi Passi, sezione Sequenza di Calibrazione. "
-
-# 
-#: ultralcd.cpp:2891
-msgid "Total filament"
-msgstr "Filamento totale"
-
-# 
-#: ultralcd.cpp:2892
-msgid "Total print time"
-msgstr "Tempo stampa totale"
-
-# MSG_TUNE
-#: ultralcd.cpp:6850
-msgid "Tune"
-msgstr "Regola"
-
-# 
-#: 
-msgid "Unload"
-msgstr "Scarica"
-
-# 
-#: ultralcd.cpp:1752
-msgid "Total failures"
-msgstr "Totale fallimenti"
-
-# 
-#: ultralcd.cpp:2296
-msgid "to load filament"
-msgstr "per caricare il filamento"
-
-# 
-#: ultralcd.cpp:2300
-msgid "to unload filament"
-msgstr "per scaricare il filamento"
-
-# MSG_UNLOAD_FILAMENT c=17
-#: messages.c:95
-msgid "Unload filament"
-msgstr "Scarica filamento"
-
-# MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:96
-msgid "Unloading filament"
-msgstr "Scaricando filamento"
-
-# 
-#: ultralcd.cpp:1705
-msgid "Total"
-msgstr "Totale"
-
-# MSG_USED c=19 r=1
-#: ultralcd.cpp:6001
-msgid "Used during print"
-msgstr "Usati nella stampa"
-
-# MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2221
-msgid "Voltages"
-msgstr "Voltaggi"
-
-# 
-#: ultralcd.cpp:2194
-msgid "unknown"
-msgstr "sconosciuto"
-
-# MSG_USERWAIT
-#: Marlin_main.cpp:5511
-msgid "Wait for user..."
-msgstr "Attendendo utente..."
-
-# MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3434
-msgid "Waiting for nozzle and bed cooling"
-msgstr "In attesa del raffreddamento dell'ugello e del piano"
-
-# MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3395
-msgid "Waiting for PINDA probe cooling"
-msgstr "In attesa del raffreddamento della sonda PINDA"
-
-# 
-#: 
-msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU tube. Use eject if it is hidden in tube."
-msgstr "Usate lo scaricamento per rimuovere il filamento 1 se protrude dal retro del tubo posteriore del MMu. Utilizzate l'espulsione se e nascosto nel tubo."
-
-# MSG_CHANGED_BOTH c=20 r=4
-#: Marlin_main.cpp:1510
-msgid "Warning: both printer type and motherboard type changed."
-msgstr "Attenzione: tipo di stampante e di scheda madre cambiati."
-
-# MSG_CHANGED_MOTHERBOARD c=20 r=4
-#: Marlin_main.cpp:1502
-msgid "Warning: motherboard type changed."
-msgstr "Avviso: tipo di scheda madre cambiato"
-
-# MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1506
-msgid "Warning: printer type changed."
-msgstr "Avviso: tipo di stampante cambiato."
-
-# MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3128
-msgid "Was filament unload successful?"
-msgstr "Filamento scaricato con successo?"
-
-# MSG_SELFTEST_WIRINGERROR
-#: messages.c:81
-msgid "Wiring error"
-msgstr "Errore cablaggio"
-
-# MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5834
-msgid "Wizard"
-msgstr ""
-
-# MSG_XYZ_DETAILS c=18
-#: ultralcd.cpp:2210
-msgid "XYZ cal. details"
-msgstr "XYZ Cal. dettagli"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
-#: messages.c:18
-msgid "XYZ calibration failed. Please consult the manual."
-msgstr "Calibrazione XYZ fallita. Si prega di consultare il manuale."
-
-# MSG_YES
-#: messages.c:102
-msgid "Yes"
-msgstr "Si"
-
-# MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:101
-msgid "You can always resume the Wizard from Calibration -> Wizard."
-msgstr "E possibile riprendere il Wizard in qualsiasi momento attraverso Calibrazione -> Wizard."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
-#: ultralcd.cpp:3904
-msgid "XYZ calibration all right. Skew will be corrected automatically."
-msgstr "Calibrazione XYZ corretta. La distorsione verra compensata automaticamente."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
-#: ultralcd.cpp:3901
-msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
-msgstr "Calibrazion XYZ corretta. Assi X/Y leggermente storti. Ben fatto!"
-
-# MSG_TIMEOUT c=12
-#: messages.c:137
-msgid "Timeout"
-msgstr ""
-
-# MSG_X_CORRECTION c=13
-#: ultralcd.cpp:5190
-msgid "X-correct:"
-msgstr "Correzione-X:"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3898
-msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
-msgstr "Calibrazione XYZ OK. Gli assi X/Y sono perpendicolari. Complimenti!"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
-#: ultralcd.cpp:3882
-msgid "XYZ calibration compromised. Front calibration points not reachable."
-msgstr "Calibrazione XYZ compromessa. Punti anteriori non raggiungibili."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3885
-msgid "XYZ calibration compromised. Right front calibration point not reachable."
-msgstr "Calibrazione XYZ compromessa. Punto anteriore destro non raggiungibile."
-
-# MSG_LOAD_ALL c=17
-#: ultralcd.cpp:6261
-msgid "Load all"
-msgstr "Caricare tutti"
-
-# 
-#: ultralcd.cpp:3864
-msgid "XYZ calibration failed. Bed calibration point was not found."
-msgstr "Calibrazione XYZ fallita. Il punto di calibrazione sul piano non e' stato trovato."
-
-# 
-#: ultralcd.cpp:3870
-msgid "XYZ calibration failed. Front calibration points not reachable."
-msgstr "Calibrazione XYZ fallita. Punti anteriori non raggiungibili."
-
-# 
-#: ultralcd.cpp:3873
-msgid "XYZ calibration failed. Right front calibration point not reachable."
-msgstr "Calibrazione XYZ fallita. Punto anteriore destro non raggiungibile."
-
-# 
-#: ultralcd.cpp:2991
-msgid "Y distance from min"
-msgstr "Distanza Y dal min"
-
-# 
-#: ultralcd.cpp:4958
-msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
-msgstr "La stampante iniziera a stampare una linea a zig-zag. Gira la manopola fino a che non hai raggiungo l'altezza ottimale. Verifica con le immagini nel manuale (capitolo sulla calibrazione):"
-
-#  c=20 r=5
-#: ultralcd.cpp:7558
-msgid "Verification failed, remove the filament and try again."
-msgstr "Verifica fallita, rimuovere il filamento e riprovare."
-
-# MSG_Y_CORRECTION c=13
-#: ultralcd.cpp:5191
-msgid "Y-correct:"
-msgstr "Correzione-Y:"
-
-# MSG_OFF
-#: messages.c:105
-msgid "Off"
-msgstr ""
-
-# MSG_ON
-#: messages.c:106
-msgid "On"
-msgstr ""
-
-# 
-#: messages.c:53
-msgid "Back"
-msgstr "Indietro"
-
-# 
-#: ultralcd.cpp:5724
-msgid "Checks"
-msgstr "Controlli"
-
-# 
-#: ultralcd.cpp:8349
-msgid "False triggering"
-msgstr "Falso innesco"
-
-# 
-#: ultralcd.cpp:4013
-msgid "FINDA:"
-msgstr ""
-
-# MSG_FIRMWARE
-#: language.h:23
-msgid "Firmware"
-msgstr ""
-
-# MSG_STRICT
-#: messages.c:112
-msgid "Strict"
-msgstr "Esatto"
-
-# MSG_WARN
-#: messages.c:111
-msgid "Warn"
-msgstr "Avviso"
-
-# 
-#: messages.c:83
-msgid "HW Setup"
-msgstr "Impostazioni HW"
-
-# 
-#: ultralcd.cpp:4017
-msgid "IR:"
-msgstr ""
-
-# MSG_MAGNETS_COMP
-#: messages.c:130
-msgid "Magnets comp."
-msgstr "Comp. Magneti"
-
-# MSG_MESH
-#: messages.c:128
-msgid "Mesh"
-msgstr "Griglia"
-
-# 
-#: ultralcd.cpp:5763
-msgid "Mesh bed leveling"
-msgstr "Liv. griglia piano"
-
-# 
-#: Marlin_main.cpp:872
-msgid "MK3S firmware detected on MK3 printer"
-msgstr "Firmware MK3S rilevato su stampante MK3"
-
-# MSG_MMU_MODE
-#: messages.c:117
-msgid "MMU Mode"
-msgstr "Mod. MMU"
-
-# 
-#: ultralcd.cpp:4494
-msgid "Mode change in progress ..."
-msgstr "Cambio modalita in corso ..."
-
-# MSG_MODEL
-#: messages.c:113
-msgid "Model"
-msgstr "Modello"
-
-# MSG_NOZZLE_DIAMETER
-#: messages.c:116
-msgid "Nozzle d."
-msgstr "Diam.Ugello"
-
-# 
-#: util.cpp:514
-msgid "G-code sliced for a different level. Continue?"
-msgstr "G-code processato per un livello diverso. Continuare?"
-
-# 
-#: util.cpp:520
-msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
-msgstr "G-code processato per un livello diverso. Per favore esegui nuovamente lo slice del modello. Stampa annullata."
-
-# 
-#: util.cpp:431
-msgid "G-code sliced for a different printer type. Continue?"
-msgstr "G-code processato per una stampante diversa. Continuare?"
-
-# 
-#: util.cpp:437
-msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
-msgstr "G-code processato per una stampante diversa. Per favore esegui nuovamente lo slice del modello. Stampa annullata."
-
-# 
-#: util.cpp:481
-msgid "G-code sliced for a newer firmware. Continue?"
-msgstr "G-code processato per un firmware piu recente. Continuare?"
-
-# 
-#: util.cpp:487
-msgid "G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
-msgstr "G-code processato per un firmware piu recente. Per favore aggiorna il firmware. Stampa annullata."
-
-# 
-#: ultralcd.cpp:4009
-msgid "PINDA:"
-msgstr ""
-
-#  c=20
-#: ultralcd.cpp:2452
-msgid "Preheating to cut"
-msgstr "Preriscalda. taglio"
-
-#  c=20
-#: ultralcd.cpp:2449
-msgid "Preheating to eject"
-msgstr "Preriscalda. espuls."
-
-# 
-#: util.cpp:394
-msgid "Printer nozzle diameter differs from the G-code. Continue?"
-msgstr "Diametro ugello diverso da G-Code. Continuare?"
-
-# 
-#: util.cpp:401
-msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
-msgstr "Diametro ugello diverso dal G-Code. Controlla il valore nelle impostazioni. Stampa annullata."
-
-#  c=20
-#: ultralcd.cpp:8355
-msgid "%s level expected"
-msgstr "atteso livello %s"
-
-# 
-#: ultralcd.cpp:6814
-msgid "Rename"
-msgstr "Rinomina"
-
-# 
-#: ultralcd.cpp:6807
-msgid "Select"
-msgstr "Seleziona"
-
-# 
-#: ultralcd.cpp:2212
-msgid "Sensor info"
-msgstr "Info Sensore"
-
-# MSG_SHEET c=10
-#: messages.c:54
-msgid "Sheet"
-msgstr "Piano"
-
-# MSG_SOUND_BLIND
-#: messages.c:127
-msgid "Assist"
-msgstr "Assist."
-
-#  c=18
-#: ultralcd.cpp:5722
-msgid "Steel sheets"
-msgstr "Piani d'acciaio"
-
-# MSG_Z_CORRECTION c=13
-#: ultralcd.cpp:5192
-msgid "Z-correct:"
-msgstr "Correzione-Z:"
-
-# MSG_Z_PROBE_NR
-#: messages.c:129
-msgid "Z-probe nr."
-msgstr "Nr. Z-test"
-
+# Translation of Prusa-Firmware into Italian.
+#
+msgid ""
+msgstr ""
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: it\n"
+"Project-Id-Version: Prusa-Firmware\n"
+"POT-Creation-Date: Di 26. Jan 11:04:11 CET 2021\n"
+"PO-Revision-Date: Di 26. Jan 11:04:11 CET 2021\n"
+"Language-Team: \n"
+"X-Generator: Poedit 2.0.7\n"
+"X-Poedit-SourceCharset: UTF-8\n"
+"Last-Translator: \n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+# 
+#: 
+msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
+msgstr "[%.7s]Set valori\x0aComp. Z, continuare\x0ao iniziare da zero?\x0a%cContinua%cReset"
+
+# MSG_03_OR_OLDER c=18
+#: messages.c:164
+msgid " 0.3 or older"
+msgstr " 0.3 o inferiore"
+
+#  c=18
+#: Marlin_main.cpp:9626
+msgid "FS v0.3 or older"
+msgstr "FS 0.3 o inferiore"
+
+# MSG_IR_04_OR_NEWER c=18
+#: messages.c:163
+msgid " 0.4 or newer"
+msgstr " 0.4 o superiore"
+
+#  c=18
+#: Marlin_main.cpp:9625
+msgid "FS v0.4 or newer"
+msgstr "FS 0.4 o superiore"
+
+# MSG_IR_UNKNOWN c=18
+#: messages.c:165
+msgid "unknown state"
+msgstr "stato sconosciuto"
+
+# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
+#: messages.c:43
+msgid " of 4"
+msgstr " su 4"
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
+#: messages.c:66
+msgid " of 9"
+msgstr " su 9"
+
+# MSG_MEASURED_OFFSET
+#: ultralcd.cpp:2988
+msgid "[0;0] point offset"
+msgstr "[0;0] punto offset"
+
+# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
+#: 
+msgid "Crash detection can\x0abe turned on only in\x0aNormal mode"
+msgstr "Rilev. impatto\x0aattivabile solo\x0ain Modalita normale"
+
+# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
+#: 
+msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
+msgstr "ATTENZIONE:\x0aRilev. impatto\x0adisattivato in\x0aModalita silenziosa"
+
+# 
+#: ultralcd.cpp:2410
+msgid ">Cancel"
+msgstr ">Annulla"
+
+# MSG_BABYSTEPPING_Z c=15
+#: ultralcd.cpp:3108
+msgid "Adjusting Z:"
+msgstr "Compensaz. Z:"
+
+# MSG_SELFTEST_CHECK_ALLCORRECT c=20
+#: ultralcd.cpp:8390
+msgid "All correct      "
+msgstr "Nessun errore"
+
+# MSG_WIZARD_DONE c=20 r=8
+#: messages.c:116
+msgid "All is done. Happy printing!"
+msgstr "Tutto fatto. Buona stampa!"
+
+# 
+#: ultralcd.cpp:1902
+msgid "Ambient"
+msgstr "Ambiente"
+
+# MSG_AUTO c=6
+#: messages.c:160
+msgid "Auto"
+msgstr ""
+
+# MSG_PRESS c=20 r=2
+#: ultralcd.cpp:2567
+msgid "and press the knob"
+msgstr "e cliccare manopola"
+
+# MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
+#: ultralcd.cpp:3429
+msgid "Are left and right Z~carriages all up?"
+msgstr "I carrelli Z sin/des sono altezza max?"
+
+# MSG_AUTO_DEPLETE c=17 r=1
+#: messages.c:125
+msgid "SpoolJoin"
+msgstr ""
+
+# MSG_AUTO_HOME
+#: messages.c:11
+msgid "Auto home"
+msgstr "Trova origine"
+
+# MSG_AUTOLOAD_FILAMENT c=18
+#: ultralcd.cpp:6716
+msgid "AutoLoad filament"
+msgstr "Autocaric. filam."
+
+# MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
+#: ultralcd.cpp:4346
+msgid "Autoloading filament available only when filament sensor is turned on..."
+msgstr "Caricamento auto. filam. disp. solo con il sensore attivo..."
+
+# MSG_AUTOLOADING_ENABLED c=20 r=4
+#: ultralcd.cpp:2730
+msgid "Autoloading filament is active, just press the knob and insert filament..."
+msgstr "Caricamento automatico attivo, premi la manopola e inserisci il filamento."
+
+# MSG_SELFTEST_AXIS_LENGTH
+#: ultralcd.cpp:8073
+msgid "Axis length"
+msgstr "Lunghezza dell'asse"
+
+# MSG_SELFTEST_AXIS
+#: ultralcd.cpp:8074
+msgid "Axis"
+msgstr "Assi"
+
+# MSG_SELFTEST_BEDHEATER
+#: ultralcd.cpp:8031
+msgid "Bed / Heater"
+msgstr "Piano/Riscald."
+
+# MSG_BED_DONE
+#: messages.c:15
+msgid "Bed done"
+msgstr "Piano fatto."
+
+# MSG_BED_HEATING
+#: messages.c:16
+msgid "Bed Heating"
+msgstr "Riscald. piano"
+
+# MSG_BED_CORRECTION_MENU
+#: ultralcd.cpp:5802
+msgid "Bed level correct"
+msgstr "Correz. liv.piano"
+
+# MSG_BELTTEST c=17
+#: ultralcd.cpp:5782
+msgid "Belt test        "
+msgstr "Test cinghie     "
+
+# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
+#: messages.c:17
+msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
+msgstr "Livellamento piano fallito. Sensore KO? Residui su ugello? In attesa di reset."
+
+# MSG_BRIGHT c=6
+#: messages.c:158
+msgid "Bright"
+msgstr "Chiaro"
+
+# MSG_BRIGHTNESS c=18
+#: messages.c:154
+msgid "Brightness"
+msgstr "Luminosita'"
+
+# MSG_BED
+#: messages.c:14
+msgid "Bed"
+msgstr "Piano"
+
+# MSG_BELT_STATUS c=18
+#: 
+msgid "Belt status"
+msgstr "Stato cinghie"
+
+# MSG_RECOVER_PRINT c=20 r=2
+#: messages.c:80
+msgid "Blackout occurred. Recover print?"
+msgstr "Blackout rilevato. Recuperare la stampa?"
+
+# 
+#: ultralcd.cpp:8392
+msgid "Calibrating home"
+msgstr "Calibrazione Home"
+
+# MSG_CALIBRATE_BED
+#: ultralcd.cpp:5791
+msgid "Calibrate XYZ"
+msgstr "Calibra XYZ"
+
+# MSG_HOMEYZ
+#: messages.c:51
+msgid "Calibrate Z"
+msgstr "Calibra Z"
+
+# MSG_CALIBRATE_PINDA c=17 r=1
+#: ultralcd.cpp:4538
+msgid "Calibrate"
+msgstr "Calibra"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
+#: ultralcd.cpp:3392
+msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "Calibrazione XYZ. Ruotare la manopola per alzare il carrello Z fino all'altezza massima. Click per terminare."
+
+# MSG_CALIBRATE_Z_AUTO c=20 r=2
+#: messages.c:20
+msgid "Calibrating Z"
+msgstr "Calibrando Z"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
+#: ultralcd.cpp:3392
+msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "Calibrazione Z. Ruotare la manopola per alzare il carrello Z fino all'altezza massima. Click per terminare."
+
+# MSG_HOMEYZ_DONE
+#: ultralcd.cpp:813
+msgid "Calibration done"
+msgstr "Calibrazione completa"
+
+# MSG_MENU_CALIBRATION
+#: messages.c:67
+msgid "Calibration"
+msgstr "Calibrazione"
+
+# 
+#: ultralcd.cpp:4716
+msgid "Cancel"
+msgstr "Annulla"
+
+# MSG_SD_REMOVED
+#: ultralcd.cpp:8842
+msgid "Card removed"
+msgstr "SD rimossa"
+
+# MSG_NOT_COLOR
+#: ultralcd.cpp:2647
+msgid "Color not correct"
+msgstr "Colore non puro"
+
+# MSG_COOLDOWN
+#: messages.c:25
+msgid "Cooldown"
+msgstr "Raffredda"
+
+# 
+#: ultralcd.cpp:4471
+msgid "Copy selected language?"
+msgstr "Copiare la lingua selezionata?"
+
+# MSG_CRASHDETECT c=13
+#: messages.c:28
+msgid "Crash det."
+msgstr "Rileva.crash"
+
+# 
+#: ultralcd.cpp:4851
+msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
+msgstr "Scegli un filamento per la calibrazione del primo strato e selezionalo nel menu sullo schermo."
+
+# MSG_CRASH_DETECTED c=20 r=1
+#: messages.c:27
+msgid "Crash detected."
+msgstr "Rilevato impatto."
+
+# 
+#: Marlin_main.cpp:657
+msgid "Crash detected. Resume print?"
+msgstr "Scontro rilevato. Riprendere la stampa?"
+
+# MSG_CRASH c=7
+#: messages.c:26
+msgid "Crash"
+msgstr "Impatto"
+
+# MSG_CURRENT c=19 r=1
+#: ultralcd.cpp:5933
+msgid "Current"
+msgstr "Attuale"
+
+# MSG_DATE c=17 r=1
+#: ultralcd.cpp:2112
+msgid "Date:"
+msgstr "Data:"
+
+# MSG_DISABLE_STEPPERS
+#: ultralcd.cpp:5683
+msgid "Disable steppers"
+msgstr "Disabilita motori"
+
+# MSG_BABYSTEP_Z_NOT_SET c=20 r=12
+#: messages.c:13
+msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
+msgstr "Distanza tra la punta dell'ugello e la superficie del piano non ancora impostata. Si prega di seguire il manuale, capitolo Primi Passi, sezione Calibrazione primo strato."
+
+# MSG_FS_CONTINUE c=5
+#: messages.c:152
+msgid "Cont."
+msgstr ""
+
+# MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
+#: ultralcd.cpp:5026
+msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
+msgstr "Desideri ripetere l'ultimo passaggio per migliorare la distanza fra ugello e piatto?"
+
+# MSG_EXTRUDER_CORRECTION c=13
+#: ultralcd.cpp:5095
+msgid "E-correct:"
+msgstr "Correzione-E:"
+
+# MSG_EJECT_FILAMENT c=16
+#: messages.c:58
+msgid "Eject filament"
+msgstr "Espelli fil."
+
+# MSG_EJECTING_FILAMENT c=20 r=1
+#: mmu.cpp:1414
+msgid "Ejecting filament"
+msgstr "Espellendo filamento"
+
+# MSG_SELFTEST_ENDSTOP_NOTHIT c=20
+#: ultralcd.cpp:8049
+msgid "Endstop not hit"
+msgstr "Finec. fuori portata"
+
+# MSG_SELFTEST_ENDSTOP
+#: ultralcd.cpp:8044
+msgid "Endstop"
+msgstr "Finecorsa"
+
+# MSG_SELFTEST_ENDSTOPS
+#: ultralcd.cpp:8035
+msgid "Endstops"
+msgstr "Finecorsa"
+
+# MSG_STACK_ERROR c=20 r=4
+#: ultralcd.cpp:6753
+msgid "Error - static memory has been overwritten"
+msgstr "Errore - la memoria statica e' stata sovrascritta"
+
+# MSG_CUT_FILAMENT c=16
+#: messages.c:59
+msgid "Cut filament"
+msgstr "Taglia filamento"
+
+# MSG_CUTTER c=9
+#: messages.c:126
+msgid "Cutter"
+msgstr "Tagliatr."
+
+#  c=18
+#: mmu.cpp:1386
+msgid "Cutting filament"
+msgstr "Tagliando filam."
+
+# MSG_FSENS_NOT_RESPONDING c=20 r=4
+#: ultralcd.cpp:4359
+msgid "ERROR: Filament sensor is not responding, please check connection."
+msgstr "ERRORE: il sensore filam. non risponde,Controllare conness."
+
+# MSG_DIM c=6
+#: messages.c:159
+msgid "Dim"
+msgstr "Scuro"
+
+# MSG_ERROR
+#: messages.c:29
+msgid "ERROR:"
+msgstr "ERRORE:"
+
+# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
+#: ultralcd.cpp:8398
+msgid "Extruder fan:"
+msgstr "Ventola estr:"
+
+# MSG_INFO_EXTRUDER c=18
+#: ultralcd.cpp:2153
+msgid "Extruder info"
+msgstr "Info estrusore"
+
+# MSG_EXTRUDER c=17
+#: messages.c:30
+msgid "Extruder"
+msgstr "Estrusore"
+
+# 
+#: ultralcd.cpp:6740
+msgid "Fail stats MMU"
+msgstr "Stat.fall. MMU"
+
+# MSG_FSENSOR_AUTOLOAD c=13
+#: messages.c:47
+msgid "F. autoload"
+msgstr "Autocar.fil."
+
+# 
+#: ultralcd.cpp:6737
+msgid "Fail stats"
+msgstr "Stat. fallimenti"
+
+# MSG_FAN_SPEED c=14
+#: messages.c:34
+msgid "Fan speed"
+msgstr "Velocita vent."
+
+# MSG_SELFTEST_FAN c=20
+#: messages.c:89
+msgid "Fan test"
+msgstr "Test ventola"
+
+# MSG_FANS_CHECK c=13
+#: messages.c:31
+msgid "Fans check"
+msgstr "Control.vent"
+
+# MSG_FSENSOR
+#: messages.c:48
+msgid "Fil. sensor"
+msgstr "Sensore fil."
+
+# MSG_FIL_RUNOUTS c=14
+#: 
+msgid "Fil. runouts  "
+msgstr "Fil. esauriti "
+
+# MSG_FILAMENT_CLEAN c=20 r=2
+#: messages.c:35
+msgid "Filament extruding & with correct color?"
+msgstr "Filamento estruso e con colore corretto?"
+
+# MSG_NOT_LOADED c=19
+#: ultralcd.cpp:2646
+msgid "Filament not loaded"
+msgstr "Fil. non caricato"
+
+# MSG_FILAMENT_SENSOR c=20
+#: messages.c:95
+msgid "Filament sensor"
+msgstr "Sensore filam."
+
+# MSG_FILAMENT_USED c=19
+#: ultralcd.cpp:2795
+msgid "Filament used"
+msgstr "Fil. utilizzato"
+
+# MSG_PRINT_TIME c=19 r=1
+#: ultralcd.cpp:2796
+msgid "Print time"
+msgstr "Tempo di stampa"
+
+# MSG_FS_ACTION c=10
+#: messages.c:151
+msgid "FS Action"
+msgstr "Azione FS"
+
+# MSG_FILE_INCOMPLETE c=20 r=3
+#: ultralcd.cpp:8540
+msgid "File incomplete. Continue anyway?"
+msgstr "File incompleto. Continuare comunque?"
+
+# MSG_FINISHING_MOVEMENTS c=20
+#: messages.c:44
+msgid "Finishing movements"
+msgstr "Finaliz. spostamenti"
+
+# MSG_V2_CALIBRATION c=18
+#: messages.c:120
+msgid "First layer cal."
+msgstr "Cal. primo strato"
+
+# MSG_WIZARD_SELFTEST c=20 r=8
+#: ultralcd.cpp:4947
+msgid "First, I will run the selftest to check most common assembly problems."
+msgstr "Per primo avviero l'autotest per controllare gli errori di assemblaggio piu comuni."
+
+# 
+#: mmu.cpp:726
+msgid "Fix the issue and then press button on MMU unit."
+msgstr "Risolvere il problema e premere il bottone sull'unita MMU. "
+
+# MSG_FLOW
+#: ultralcd.cpp:6880
+msgid "Flow"
+msgstr "Flusso"
+
+# MSG_PRUSA3D_FORUM
+#: ultralcd.cpp:2105
+msgid "forum.prusa3d.com"
+msgstr ""
+
+# MSG_SELFTEST_COOLING_FAN c=20
+#: messages.c:86
+msgid "Front print fan?"
+msgstr "Ventola frontale?"
+
+# MSG_BED_CORRECTION_FRONT c=14 r=1
+#: ultralcd.cpp:3190
+msgid "Front side[um]"
+msgstr "Fronte [um]"
+
+# MSG_SELFTEST_FANS
+#: ultralcd.cpp:8079
+msgid "Front/left fans"
+msgstr "Ventola frontale/sinistra"
+
+# MSG_SELFTEST_HEATERTHERMISTOR
+#: ultralcd.cpp:8027
+msgid "Heater/Thermistor"
+msgstr "Riscald./Termist."
+
+# MSG_BED_HEATING_SAFETY_DISABLED
+#: Marlin_main.cpp:9616
+msgid "Heating disabled by safety timer."
+msgstr "Riscaldamento fermato dal timer di sicurezza."
+
+# MSG_HEATING_COMPLETE c=20
+#: messages.c:50
+msgid "Heating done."
+msgstr "Riscald. completo"
+
+# MSG_HEATING
+#: messages.c:49
+msgid "Heating"
+msgstr "Riscaldamento..."
+
+# MSG_WIZARD_WELCOME c=20 r=7
+#: ultralcd.cpp:4926
+msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
+msgstr "Ciao, sono la tua stampante Original Prusa i3. Gradiresti un aiuto nel processo di configurazione?"
+
+# MSG_PRUSA3D_HOWTO
+#: ultralcd.cpp:2106
+msgid "howto.prusa3d.com"
+msgstr ""
+
+# MSG_FILAMENTCHANGE
+#: messages.c:41
+msgid "Change filament"
+msgstr "Cambia filamento"
+
+# MSG_CHANGE_SUCCESS
+#: ultralcd.cpp:2576
+msgid "Change success!"
+msgstr "Cambio riuscito!"
+
+# MSG_CORRECTLY c=20
+#: ultralcd.cpp:2644
+msgid "Changed correctly?"
+msgstr "Cambio corretto?"
+
+# MSG_SELFTEST_CHECK_BED c=20
+#: messages.c:92
+msgid "Checking bed     "
+msgstr "Verifica piano"
+
+# MSG_SELFTEST_CHECK_ENDSTOPS c=20
+#: ultralcd.cpp:8381
+msgid "Checking endstops"
+msgstr "Verifica finecorsa"
+
+# MSG_SELFTEST_CHECK_HOTEND c=20
+#: ultralcd.cpp:8387
+msgid "Checking hotend  "
+msgstr "Verifica ugello"
+
+# MSG_SELFTEST_CHECK_FSENSOR c=20
+#: messages.c:93
+msgid "Checking sensors "
+msgstr "Controllo sensori"
+
+# MSG_CHECKING_X c=20
+#: messages.c:22
+msgid "Checking X axis"
+msgstr "Verifica asse X"
+
+# MSG_CHECKING_Y c=20
+#: messages.c:23
+msgid "Checking Y axis"
+msgstr "Verifica asse Y"
+
+# MSG_SELFTEST_CHECK_Z c=20
+#: 
+msgid "Checking Z axis"
+msgstr "Verifica asse Z"
+
+# MSG_CHOOSE_EXTRUDER c=20 r=1
+#: messages.c:52
+msgid "Choose extruder:"
+msgstr "Seleziona estrusore:"
+
+# MSG_CHOOSE_FILAMENT c=20 r=1
+#: messages.c:53
+msgid "Choose filament:"
+msgstr "Scegliere filamento:"
+
+# MSG_FILAMENT c=17 r=1
+#: messages.c:33
+msgid "Filament"
+msgstr "Filamento"
+
+# MSG_WIZARD_XYZ_CAL c=20 r=8
+#: ultralcd.cpp:4956
+msgid "I will run xyz calibration now. It will take approx. 12 mins."
+msgstr "Adesso avviero una Calibrazione XYZ. Puo durare circa 12 min."
+
+# MSG_WIZARD_Z_CAL c=20 r=8
+#: ultralcd.cpp:4964
+msgid "I will run z calibration now."
+msgstr "Adesso avviero la Calibrazione Z."
+
+# MSG_WATCH
+#: messages.c:114
+msgid "Info screen"
+msgstr "Schermata info"
+
+# MSG_INSERT_FILAMENT c=20
+#: ultralcd.cpp:2564
+msgid "Insert filament"
+msgstr "Inserire filamento"
+
+# MSG_FILAMENT_LOADED c=20 r=2
+#: messages.c:36
+msgid "Is filament loaded?"
+msgstr "Il filamento e' stato caricato?"
+
+# MSG_STEEL_SHEET_CHECK c=20 r=2
+#: messages.c:107
+msgid "Is steel sheet on heatbed?"
+msgstr "Piastra d'acciaio su piano riscaldato?"
+
+# MSG_LAST_PRINT_FAILURES c=20
+#: messages.c:55
+msgid "Last print failures"
+msgstr "Errori ultima stampa"
+
+# 
+#: ultralcd.cpp:5034
+msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
+msgstr "Se hai piastre d'acciaio aggiuntive, calibra i preset in Impostazioni - Setup HW - Piastre in Acciaio."
+
+# MSG_LAST_PRINT c=18
+#: messages.c:54
+msgid "Last print"
+msgstr "Ultima stampa"
+
+# MSG_SELFTEST_EXTRUDER_FAN c=20
+#: messages.c:87
+msgid "Left hotend fan?"
+msgstr "Vent SX hotend?"
+
+# 
+#: ultralcd.cpp:2919
+msgid "Left"
+msgstr "Sinistra"
+
+# MSG_BED_CORRECTION_LEFT c=14 r=1
+#: ultralcd.cpp:3188
+msgid "Left side [um]"
+msgstr "Sinistra [um]"
+
+# 
+#: ultralcd.cpp:5706
+msgid "Lin. correction"
+msgstr "Correzione lineare"
+
+# MSG_BABYSTEP_Z
+#: messages.c:12
+msgid "Live adjust Z"
+msgstr "Compensazione Z"
+
+#  c=20 r=6
+#: ultralcd.cpp:7280
+msgid "Insert the filament (do not load it) into the extruder and then press the knob."
+msgstr "Inserire filamento (senza caricarlo) nell'estrusore e premere la manopola."
+
+# MSG_LOAD_FILAMENT c=17
+#: messages.c:56
+msgid "Load filament"
+msgstr "Carica filamento"
+
+# MSG_LOADING_COLOR
+#: ultralcd.cpp:2598
+msgid "Loading color"
+msgstr "Caricando colore"
+
+# MSG_LOADING_FILAMENT c=20
+#: messages.c:57
+msgid "Loading filament"
+msgstr "Caricando filamento"
+
+# MSG_LOOSE_PULLEY c=20 r=1
+#: ultralcd.cpp:8067
+msgid "Loose pulley"
+msgstr "Puleggia lenta"
+
+# 
+#: ultralcd.cpp:6699
+msgid "Load to nozzle"
+msgstr "Carica ugello"
+
+# MSG_M117_V2_CALIBRATION c=25
+#: messages.c:60
+msgid "M117 First layer cal."
+msgstr "M117 Calibr. primo strato"
+
+# MSG_MAIN
+#: messages.c:61
+msgid "Main"
+msgstr "Menu principale"
+
+# MSG_BL_HIGH c=12
+#: messages.c:155
+msgid "Level Bright"
+msgstr "Liv. Chiaro"
+
+# MSG_BL_LOW c=12
+#: messages.c:156
+msgid "Level Dimmed"
+msgstr "Liv. Scuro"
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
+#: messages.c:65
+msgid "Measuring reference height of calibration point"
+msgstr "Misura altezza di rif. del punto di calib."
+
+# MSG_MESH_BED_LEVELING c=18
+#: messages.c:148
+msgid "Mesh Bed Leveling"
+msgstr "Liv. grilia piano"
+
+# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
+#: mmu.cpp:764
+msgid "MMU OK. Resuming position..."
+msgstr "MMU OK. riprendendo la posizione... "
+
+# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
+#: mmu.cpp:757
+msgid "MMU OK. Resuming temperature..."
+msgstr "MMU OK. Ripristino temperatura... "
+
+# 
+#: ultralcd.cpp:2960
+msgid "Measured skew"
+msgstr "Deviazione mis"
+
+# MSG_MMU_FAILS c=14
+#: messages.c:68
+msgid "MMU fails"
+msgstr "Fallimenti MMU"
+
+# 
+#: mmu.cpp:1586
+msgid "MMU load failed     "
+msgstr "Caricamento MMU fallito"
+
+# MSG_MMU_LOAD_FAILS c=14
+#: messages.c:69
+msgid "MMU load fails"
+msgstr "Caricamenti MMU falliti"
+
+# MSG_MMU_OK_RESUMING c=20 r=4
+#: mmu.cpp:775
+msgid "MMU OK. Resuming..."
+msgstr "MMU OK. Riprendendo... "
+
+# MSG_MODE
+#: messages.c:101
+msgid "Mode"
+msgstr "Mod."
+
+#  c=20 r=3
+#: Marlin_main.cpp:934
+msgid "MK3 firmware detected on MK3S printer"
+msgstr "Firmware MK3 rilevato su stampante MK3S"
+
+# MSG_NORMAL
+#: messages.c:105
+msgid "Normal"
+msgstr "Normale"
+
+# MSG_SILENT
+#: messages.c:104
+msgid "Silent"
+msgstr "Silenzioso"
+
+# 
+#: mmu.cpp:721
+msgid "MMU needs user attention."
+msgstr "Il MMU richiede attenzione dall'utente."
+
+# 
+#: ultralcd.cpp:1701
+msgid "MMU power fails"
+msgstr "Manc. corr. MMU"
+
+# MSG_STEALTH
+#: messages.c:106
+msgid "Stealth"
+msgstr "Silenziosa"
+
+# MSG_AUTO_POWER
+#: messages.c:103
+msgid "Auto power"
+msgstr "Auto"
+
+# MSG_HIGH_POWER
+#: messages.c:102
+msgid "High power"
+msgstr "Forte"
+
+# 
+#: ultralcd.cpp:2124
+msgid "MMU2 connected"
+msgstr "MMU2 connessa"
+
+# MSG_SELFTEST_MOTOR
+#: messages.c:94
+msgid "Motor"
+msgstr "Motore"
+
+# MSG_MOVE_AXIS
+#: ultralcd.cpp:5681
+msgid "Move axis"
+msgstr "Muovi asse"
+
+# MSG_MOVE_X
+#: ultralcd.cpp:4262
+msgid "Move X"
+msgstr "Sposta X"
+
+# MSG_MOVE_Y
+#: ultralcd.cpp:4263
+msgid "Move Y"
+msgstr "Sposta Y"
+
+# MSG_MOVE_Z
+#: ultralcd.cpp:4264
+msgid "Move Z"
+msgstr "Sposta Z"
+
+# MSG_NO_MOVE
+#: Marlin_main.cpp:5719
+msgid "No move."
+msgstr "Nessun movimento."
+
+# MSG_NO_CARD
+#: ultralcd.cpp:6673
+msgid "No SD card"
+msgstr "Nessuna SD"
+
+# MSG_NA
+#: messages.c:124
+msgid "N/A"
+msgstr "N/D"
+
+# MSG_NO
+#: messages.c:70
+msgid "No"
+msgstr ""
+
+# MSG_SELFTEST_NOTCONNECTED
+#: ultralcd.cpp:8028
+msgid "Not connected"
+msgstr "Non connesso"
+
+# 
+#: util.cpp:293
+msgid "New firmware version available:"
+msgstr "Nuova versione firmware disponibile:"
+
+# MSG_SELFTEST_FAN_NO c=19
+#: messages.c:90
+msgid "Not spinning"
+msgstr "Non gira"
+
+# MSG_WIZARD_V2_CAL c=20 r=8
+#: ultralcd.cpp:4847
+msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
+msgstr "Adesso calibro la distanza fra ugello e superfice del piatto."
+
+# MSG_WIZARD_WILL_PREHEAT c=20 r=4
+#: ultralcd.cpp:4972
+msgid "Now I will preheat nozzle for PLA."
+msgstr "Adesso preriscaldero l'ugello per PLA."
+
+# MSG_NOZZLE
+#: messages.c:71
+msgid "Nozzle"
+msgstr "Ugello"
+
+# MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
+#: Marlin_main.cpp:1581
+msgid "Old settings found. Default PID, Esteps etc. will be set."
+msgstr "Sono state trovate impostazioni vecchie. Verranno impostati i valori predefiniti di PID, Esteps etc."
+
+# 
+#: ultralcd.cpp:4963
+msgid "Now remove the test print from steel sheet."
+msgstr "Ora rimuovete la stampa di prova dalla piastra in acciaio."
+
+# 
+#: ultralcd.cpp:1600
+msgid "Nozzle FAN"
+msgstr "Ventola estrusore"
+
+# MSG_PAUSE_PRINT
+#: ultralcd.cpp:6637
+msgid "Pause print"
+msgstr "Metti in pausa"
+
+# MSG_PID_RUNNING c=20 r=1
+#: ultralcd.cpp:1485
+msgid "PID cal.           "
+msgstr "Calibrazione PID"
+
+# MSG_PID_FINISHED c=20 r=1
+#: ultralcd.cpp:1491
+msgid "PID cal. finished"
+msgstr "Calib. PID completa"
+
+# MSG_PID_EXTRUDER c=17 r=1
+#: ultralcd.cpp:5803
+msgid "PID calibration"
+msgstr "Calibrazione PID"
+
+# MSG_PINDA_PREHEAT c=20 r=1
+#: ultralcd.cpp:843
+msgid "PINDA Heating"
+msgstr "Riscaldamento PINDA"
+
+# MSG_PAPER c=20 r=10
+#: messages.c:72
+msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
+msgstr "Posizionare un foglio sotto l'ugello durante la calibrazione dei primi 4 punti. In caso l'ugello muova il foglio spegnere subito la stampante."
+
+# MSG_WIZARD_CLEAN_HEATBED c=20 r=8
+#: ultralcd.cpp:5029
+msgid "Please clean heatbed and then press the knob."
+msgstr "Per favore pulisci il piatto, poi premi la manopola."
+
+# MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
+#: messages.c:24
+msgid "Please clean the nozzle for calibration. Click when done."
+msgstr "Pulire l'ugello per la calibrazione, poi fare click."
+
+# MSG_SELFTEST_PLEASECHECK
+#: ultralcd.cpp:8022
+msgid "Please check :"
+msgstr "Verifica:"
+
+# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
+#: messages.c:115
+msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
+msgstr "Per favore consulta il nostro manuale per risolvere il problema. Poi riprendi il Wizard dopo aver riavviato la stampante."
+
+# MSG_CHECK_IDLER c=20 r=4
+#: Marlin_main.cpp:3317
+msgid "Please open idler and remove filament manually."
+msgstr "Aprire la guida filam. e rimuovere il filam. a mano"
+
+# MSG_PLACE_STEEL_SHEET c=20 r=4
+#: messages.c:73
+msgid "Please place steel sheet on heatbed."
+msgstr "Per favore posizionate la piastra d'acciaio sul piano riscaldato."
+
+# MSG_PRESS_TO_UNLOAD c=20 r=4
+#: messages.c:77
+msgid "Please press the knob to unload filament"
+msgstr "Premete la manopola per scaricare il filamento "
+
+# MSG_PULL_OUT_FILAMENT c=20 r=4
+#: messages.c:79
+msgid "Please pull out filament immediately"
+msgstr "Estrarre il filamento immediatamente"
+
+# MSG_EJECT_REMOVE c=20 r=4
+#: mmu.cpp:1420
+msgid "Please remove filament and then press the knob."
+msgstr "Rimuovi il filamento e quindi premi la manopola. "
+
+# MSG_REMOVE_STEEL_SHEET c=20 r=4
+#: messages.c:82
+msgid "Please remove steel sheet from heatbed."
+msgstr "Rimuovete la piastra di acciaio dal piano riscaldato"
+
+# MSG_RUN_XYZ c=20 r=4
+#: Marlin_main.cpp:4766
+msgid "Please run XYZ calibration first."
+msgstr "Esegui la calibrazione XYZ prima. "
+
+# MSG_UPDATE_MMU2_FW c=20 r=4
+#: mmu.cpp:1340
+msgid "Please update firmware in your MMU2. Waiting for reset."
+msgstr "Aggiorna il firmware sul tuo MMU2. In attesa di reset. "
+
+# MSG_PLEASE_WAIT c=20
+#: messages.c:74
+msgid "Please wait"
+msgstr "Attendere"
+
+# 
+#: ultralcd.cpp:4962
+msgid "Please remove shipping helpers first."
+msgstr "Per favore rimuovete i materiali da spedizione"
+
+# MSG_PREHEAT_NOZZLE c=20
+#: messages.c:76
+msgid "Preheat the nozzle!"
+msgstr "Prerisc. ugello!"
+
+# MSG_PREHEAT
+#: ultralcd.cpp:6615
+msgid "Preheat"
+msgstr "Preriscalda"
+
+# MSG_WIZARD_HEATING c=20 r=3
+#: messages.c:117
+msgid "Preheating nozzle. Please wait."
+msgstr "Preriscaldando l'ugello. Attendere prego."
+
+#  c=14
+#: ultralcd.cpp:1905
+msgid "PINDA"
+msgstr ""
+
+# 
+#: util.cpp:297
+msgid "Please upgrade."
+msgstr "Prego aggiornare."
+
+# MSG_PRESS_TO_PREHEAT c=20 r=4
+#: Marlin_main.cpp:11718
+msgid "Press knob to preheat nozzle and continue."
+msgstr "Premete la manopola per preriscaldare l'ugello e continuare."
+
+# MSG_FS_PAUSE c=5
+#: fsensor.cpp:728
+msgid "Pause"
+msgstr "Pausa"
+
+# MSG_POWER_FAILURES c=14
+#: messages.c:75
+msgid "Power failures"
+msgstr "Mancanza corrente"
+
+# MSG_PRINT_ABORTED c=20
+#: messages.c:78
+msgid "Print aborted"
+msgstr "Stampa interrotta"
+
+#  c=20
+#: ultralcd.cpp:2390
+msgid "Preheating to load"
+msgstr "Preriscald. carico"
+
+#  c=20
+#: ultralcd.cpp:2395
+msgid "Preheating to unload"
+msgstr "Preriscald. scarico"
+
+# MSG_SELFTEST_PRINT_FAN_SPEED c=18
+#: ultralcd.cpp:8401
+msgid "Print fan:"
+msgstr "Vent.stam:"
+
+# MSG_CARD_MENU
+#: messages.c:21
+msgid "Print from SD"
+msgstr "Stampa da SD"
+
+# 
+#: ultralcd.cpp:2231
+msgid "Press the knob"
+msgstr "Premere la manopola"
+
+# MSG_PRINT_PAUSED c=20 r=1
+#: ultralcd.cpp:1065
+msgid "Print paused"
+msgstr "Stampa in pausa"
+
+# 
+#: mmu.cpp:725
+msgid "Press the knob to resume nozzle temperature."
+msgstr "Premete la manopola per recuperare la temperatura dell'ugello."
+
+# MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
+#: messages.c:45
+msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
+msgstr "Stampante non ancora calibrata. Si prega di seguire il manuale, capitolo Primi Passi, sezione Sequenza di Calibrazione."
+
+# 
+#: ultralcd.cpp:1601
+msgid "Print FAN"
+msgstr "Ventola di stampa"
+
+# 
+#: ultralcd.cpp:4827
+msgid "Please insert filament into the extruder, then press the knob to load it."
+msgstr "Inserisci il filamento nell'estrusore, poi premi la manopola per caricarlo."
+
+# 
+#: ultralcd.cpp:4822
+msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
+msgstr "Per favore inserisci il filamento nel primo tubo del MMU, poi premi la manopola per caricarlo."
+
+# 
+#: ultralcd.cpp:4744
+msgid "Please load filament first."
+msgstr "Per favore prima carica il filamento."
+
+# MSG_PRUSA3D
+#: ultralcd.cpp:2104
+msgid "prusa3d.com"
+msgstr ""
+
+# MSG_BED_CORRECTION_REAR c=14 r=1
+#: ultralcd.cpp:3191
+msgid "Rear side [um]"
+msgstr "Retro [um]"
+
+#  c=20 r=4
+#: ultralcd.cpp:7304
+msgid "Please unload the filament first, then repeat this action."
+msgstr "Scaricare prima il filamento, poi ripetere l'operazione."
+
+#  c=20 r=4
+#: ultralcd.cpp:7307
+msgid "Please check the IR sensor connection, unload filament if present."
+msgstr "Controllare il collegamento al sensore e rimuovere il filamento."
+
+# MSG_RECOVERING_PRINT c=20
+#: Marlin_main.cpp:11076
+msgid "Recovering print    "
+msgstr "Recupero stampa     "
+
+# MSG_REMOVE_OLD_FILAMENT c=20 r=5
+#: mmu.cpp:832
+msgid "Remove old filament and press the knob to start loading new filament."
+msgstr "Rimuovi il filamento precedente e premi la manopola per caricare il nuovo filamento."
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3S OK."
+msgstr ""
+
+# MSG_CALIBRATE_BED_RESET
+#: ultralcd.cpp:5808
+msgid "Reset XYZ calibr."
+msgstr "Reset calibrazione XYZ."
+
+# MSG_RESET c=14
+#: messages.c:83
+msgid "Reset"
+msgstr ""
+
+# MSG_RESUME_PRINT c=18
+#: messages.c:84
+msgid "Resume print"
+msgstr "Riprendi stampa"
+
+# MSG_RESUMING_PRINT c=20
+#: messages.c:85
+msgid "Resuming print"
+msgstr "Riprendi stampa"
+
+# MSG_BED_CORRECTION_RIGHT c=14 r=1
+#: ultralcd.cpp:3189
+msgid "Right side[um]"
+msgstr "Destra [um]"
+
+# MSG_RPI_PORT
+#: messages.c:142
+msgid "RPi port"
+msgstr "Porta RPi"
+
+# MSG_WIZARD_RERUN c=20 r=7
+#: ultralcd.cpp:4765
+msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
+msgstr "Se avvi il Wizard perderai la calibrazione preesistente e dovrai ricominciare dall'inizio. Continuare?"
+
+# MSG_SD_CARD
+#: messages.c:137
+msgid "SD card"
+msgstr "Mem. SD"
+
+# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
+#: messages.c:138
+msgid "FlashAir"
+msgstr ""
+
+# 
+#: ultralcd.cpp:2920
+msgid "Right"
+msgstr "Destra"
+
+# MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
+#: messages.c:42
+msgid "Searching bed calibration point"
+msgstr "Ricerca dei punti di calibrazione del piano"
+
+# MSG_LANGUAGE_SELECT
+#: ultralcd.cpp:5721
+msgid "Select language"
+msgstr "Seleziona lingua"
+
+# MSG_SELFTEST_OK
+#: ultralcd.cpp:7579
+msgid "Self test OK"
+msgstr "Autotest OK"
+
+# MSG_SELFTEST_START c=20
+#: ultralcd.cpp:7347
+msgid "Self test start  "
+msgstr "Avvia autotest"
+
+# MSG_SELFTEST
+#: ultralcd.cpp:5784
+msgid "Selftest         "
+msgstr "Autotest         "
+
+# MSG_SELFTEST_ERROR
+#: ultralcd.cpp:8021
+msgid "Selftest error !"
+msgstr "Errore Autotest !"
+
+# MSG_SELFTEST_FAILED c=20
+#: messages.c:88
+msgid "Selftest failed  "
+msgstr "Autotest fallito"
+
+# MSG_FORCE_SELFTEST c=20 r=8
+#: Marlin_main.cpp:1613
+msgid "Selftest will be run to calibrate accurate sensorless rehoming."
+msgstr "Verra effettuato un self test per calibrare l'homing senza sensori"
+
+# 
+#: ultralcd.cpp:5003
+msgid "Select nozzle preheat temperature which matches your material."
+msgstr "Selezionate la temperatura per il preriscaldamento dell'ugello adatta al vostro materiale."
+
+# MSG_SET_TEMPERATURE c=19 r=1
+#: ultralcd.cpp:3209
+msgid "Set temperature:"
+msgstr "Imposta temperatura"
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5 OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5S OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3 OK."
+msgstr ""
+
+# MSG_SETTINGS
+#: messages.c:97
+msgid "Settings"
+msgstr "Impostazioni"
+
+# MSG_SHOW_END_STOPS c=18
+#: ultralcd.cpp:5805
+msgid "Show end stops"
+msgstr "Stato finecorsa"
+
+# 
+#: ultralcd.cpp:3915
+msgid "Sensor state"
+msgstr "Stato sensore"
+
+# MSG_FILE_CNT c=20 r=6
+#: cardreader.cpp:739
+msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
+msgstr "Alcuni file non saranno ordinati. Il numero massimo di file in una cartella e 100 perche siano ordinati."
+
+# MSG_SORT
+#: messages.c:139
+msgid "Sort"
+msgstr "Ordina"
+
+# MSG_NONE
+#: messages.c:127
+msgid "None"
+msgstr "Nessuno"
+
+# MSG_SORT_TIME
+#: messages.c:140
+msgid "Time"
+msgstr "Cron."
+
+# 
+#: ultralcd.cpp:2963
+msgid "Severe skew:"
+msgstr "Devia.grave:"
+
+# MSG_SORT_ALPHA
+#: messages.c:141
+msgid "Alphabet"
+msgstr "Alfabeti"
+
+# MSG_SORTING c=20 r=1
+#: cardreader.cpp:746
+msgid "Sorting files"
+msgstr "Ordinando i file"
+
+# MSG_SOUND_LOUD
+#: messages.c:144
+msgid "Loud"
+msgstr "Forte"
+
+# 
+#: ultralcd.cpp:2962
+msgid "Slight skew:"
+msgstr "Devia.lieve:"
+
+# MSG_SOUND
+#: messages.c:143
+msgid "Sound"
+msgstr "Suono"
+
+#  c=7
+#: ultralcd.cpp:1768
+msgid "Runouts"
+msgstr "Esaurim"
+
+# 
+#: Marlin_main.cpp:5280
+msgid "Some problem encountered, Z-leveling enforced ..."
+msgstr "Sono stati rilevati problemi, avviato livellamento Z ..."
+
+# MSG_SOUND_ONCE
+#: messages.c:145
+msgid "Once"
+msgstr "Singolo"
+
+# MSG_SPEED
+#: ultralcd.cpp:6874
+msgid "Speed"
+msgstr "Velocita"
+
+# MSG_SELFTEST_FAN_YES c=19
+#: messages.c:91
+msgid "Spinning"
+msgstr "Gira"
+
+# MSG_TEMP_CAL_WARNING c=20 r=4
+#: Marlin_main.cpp:4779
+msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
+msgstr "Sono necessari una temperatura ambiente di 21-26C e una superficie rigida "
+
+# MSG_STATISTICS
+#: ultralcd.cpp:6733
+msgid "Statistics  "
+msgstr "Statistiche"
+
+# MSG_STOP_PRINT
+#: messages.c:108
+msgid "Stop print"
+msgstr "Arresta stampa"
+
+# MSG_STOPPED
+#: messages.c:109
+msgid "STOPPED. "
+msgstr "ARRESTATO."
+
+# MSG_SUPPORT
+#: ultralcd.cpp:6742
+msgid "Support"
+msgstr "Supporto"
+
+# MSG_SELFTEST_SWAPPED
+#: ultralcd.cpp:8080
+msgid "Swapped"
+msgstr "Scambiato"
+
+# 
+#: ultralcd.cpp:4715
+msgid "Select filament:"
+msgstr "Seleziona il filamento:"
+
+# MSG_TEMP_CALIBRATION c=14
+#: messages.c:110
+msgid "Temp. cal."
+msgstr "Calib. temp."
+
+# 
+#: ultralcd.cpp:4856
+msgid "Select temperature which matches your material."
+msgstr "Seleziona la temperatura appropriata per il tuo materiale."
+
+# MSG_CALIBRATION_PINDA_MENU c=17 r=1
+#: ultralcd.cpp:5816
+msgid "Temp. calibration"
+msgstr "Calib. Temp."
+
+# MSG_TEMP_CAL_FAILED c=20 r=8
+#: ultralcd.cpp:3845
+msgid "Temperature calibration failed"
+msgstr "Calibrazione temperatura fallita"
+
+# MSG_TEMP_CALIBRATION_DONE c=20 r=12
+#: messages.c:111
+msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
+msgstr "Calibrazione temperatura completata e attiva. Puo essere disattivata dal menu Impostazioni ->Cal. Temp."
+
+#  c=20 r=3
+#: ultralcd.cpp:7311
+msgid "Sensor verified, remove the filament now."
+msgstr "Sensore verificato, rimuovere il filamento."
+
+# MSG_TEMPERATURE
+#: ultralcd.cpp:5679
+msgid "Temperature"
+msgstr ""
+
+# MSG_MENU_TEMPERATURES c=15 r=1
+#: ultralcd.cpp:2160
+msgid "Temperatures"
+msgstr "Temperature"
+
+# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
+#: messages.c:46
+msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
+msgstr "E ancora necessario effettuare la calibrazione Z. Segui il manuale, capitolo Primi Passi, sezione Sequenza di Calibrazione. "
+
+# 
+#: ultralcd.cpp:2817
+msgid "Total filament"
+msgstr "Filamento totale"
+
+# 
+#: ultralcd.cpp:2818
+msgid "Total print time"
+msgstr "Tempo stampa totale"
+
+# MSG_TUNE
+#: ultralcd.cpp:6612
+msgid "Tune"
+msgstr "Regola"
+
+# 
+#: 
+msgid "Unload"
+msgstr "Scarica"
+
+# MSG_TOTAL_FAILURES c=20
+#: messages.c:99
+msgid "Total failures"
+msgstr "Totale fallimenti"
+
+# 
+#: ultralcd.cpp:2238
+msgid "to load filament"
+msgstr "per caricare il filamento"
+
+# 
+#: ultralcd.cpp:2242
+msgid "to unload filament"
+msgstr "per scaricare il filamento"
+
+# MSG_UNLOAD_FILAMENT c=17
+#: messages.c:112
+msgid "Unload filament"
+msgstr "Scarica filamento"
+
+# MSG_UNLOADING_FILAMENT c=20 r=1
+#: messages.c:113
+msgid "Unloading filament"
+msgstr "Scaricando filamento"
+
+# MSG_TOTAL c=6
+#: messages.c:98
+msgid "Total"
+msgstr "Totale"
+
+# MSG_USED c=19 r=1
+#: ultralcd.cpp:5932
+msgid "Used during print"
+msgstr "Usati nella stampa"
+
+# MSG_MENU_VOLTAGES c=15 r=1
+#: ultralcd.cpp:2163
+msgid "Voltages"
+msgstr "Voltaggi"
+
+# 
+#: ultralcd.cpp:2132
+msgid "unknown"
+msgstr "sconosciuto"
+
+# MSG_USERWAIT
+#: Marlin_main.cpp:5689
+msgid "Wait for user..."
+msgstr "Attendendo utente..."
+
+# MSG_WAITING_TEMP c=20 r=3
+#: ultralcd.cpp:3357
+msgid "Waiting for nozzle and bed cooling"
+msgstr "In attesa del raffreddamento dell'ugello e del piano"
+
+# MSG_WAITING_TEMP_PINDA c=20 r=3
+#: ultralcd.cpp:3318
+msgid "Waiting for PINDA probe cooling"
+msgstr "In attesa del raffreddamento della sonda PINDA"
+
+# 
+#: 
+msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU tube. Use eject if it is hidden in tube."
+msgstr "Usate lo scaricamento per rimuovere il filamento 1 se protrude dal retro del tubo posteriore del MMu. Utilizzate l'espulsione se e nascosto nel tubo."
+
+# MSG_CHANGED_BOTH c=20 r=4
+#: Marlin_main.cpp:1573
+msgid "Warning: both printer type and motherboard type changed."
+msgstr "Attenzione: tipo di stampante e di scheda madre cambiati."
+
+# MSG_CHANGED_MOTHERBOARD c=20 r=4
+#: Marlin_main.cpp:1565
+msgid "Warning: motherboard type changed."
+msgstr "Avviso: tipo di scheda madre cambiato"
+
+# MSG_CHANGED_PRINTER c=20 r=4
+#: Marlin_main.cpp:1569
+msgid "Warning: printer type changed."
+msgstr "Avviso: tipo di stampante cambiato."
+
+# MSG_UNLOAD_SUCCESSFUL c=20 r=2
+#: Marlin_main.cpp:3308
+msgid "Was filament unload successful?"
+msgstr "Filamento scaricato con successo?"
+
+# MSG_SELFTEST_WIRINGERROR
+#: messages.c:96
+msgid "Wiring error"
+msgstr "Errore cablaggio"
+
+# MSG_WIZARD c=17 r=1
+#: ultralcd.cpp:5775
+msgid "Wizard"
+msgstr ""
+
+# MSG_XYZ_DETAILS c=18
+#: ultralcd.cpp:2152
+msgid "XYZ cal. details"
+msgstr "XYZ Cal. dettagli"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
+#: messages.c:18
+msgid "XYZ calibration failed. Please consult the manual."
+msgstr "Calibrazione XYZ fallita. Si prega di consultare il manuale."
+
+# MSG_YES
+#: messages.c:119
+msgid "Yes"
+msgstr "Si"
+
+# MSG_WIZARD_QUIT c=20 r=8
+#: messages.c:118
+msgid "You can always resume the Wizard from Calibration -> Wizard."
+msgstr "E possibile riprendere il Wizard in qualsiasi momento attraverso Calibrazione -> Wizard."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
+#: ultralcd.cpp:3817
+msgid "XYZ calibration all right. Skew will be corrected automatically."
+msgstr "Calibrazione XYZ corretta. La distorsione verra compensata automaticamente."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
+#: ultralcd.cpp:3814
+msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
+msgstr "Calibrazion XYZ corretta. Assi X/Y leggermente storti. Ben fatto!"
+
+# MSG_TIMEOUT c=12
+#: messages.c:157
+msgid "Timeout"
+msgstr ""
+
+# MSG_X_CORRECTION c=13
+#: ultralcd.cpp:5091
+msgid "X-correct:"
+msgstr "Correzione-X:"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
+#: ultralcd.cpp:3811
+msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
+msgstr "Calibrazione XYZ OK. Gli assi X/Y sono perpendicolari. Complimenti!"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
+#: ultralcd.cpp:3795
+msgid "XYZ calibration compromised. Front calibration points not reachable."
+msgstr "Calibrazione XYZ compromessa. Punti anteriori non raggiungibili."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
+#: ultralcd.cpp:3798
+msgid "XYZ calibration compromised. Right front calibration point not reachable."
+msgstr "Calibrazione XYZ compromessa. Punto anteriore destro non raggiungibile."
+
+# MSG_LOAD_ALL c=17
+#: ultralcd.cpp:6171
+msgid "Load all"
+msgstr "Caricare tutti"
+
+# 
+#: ultralcd.cpp:3777
+msgid "XYZ calibration failed. Bed calibration point was not found."
+msgstr "Calibrazione XYZ fallita. Il punto di calibrazione sul piano non e' stato trovato."
+
+# 
+#: ultralcd.cpp:3783
+msgid "XYZ calibration failed. Front calibration points not reachable."
+msgstr "Calibrazione XYZ fallita. Punti anteriori non raggiungibili."
+
+# 
+#: ultralcd.cpp:3786
+msgid "XYZ calibration failed. Right front calibration point not reachable."
+msgstr "Calibrazione XYZ fallita. Punto anteriore destro non raggiungibile."
+
+# 
+#: ultralcd.cpp:2917
+msgid "Y distance from min"
+msgstr "Distanza Y dal min"
+
+# 
+#: ultralcd.cpp:4859
+msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
+msgstr "La stampante iniziera a stampare una linea a zig-zag. Gira la manopola fino a che non hai raggiungo l'altezza ottimale. Verifica con le immagini nel manuale (capitolo sulla calibrazione):"
+
+#  c=20 r=5
+#: ultralcd.cpp:7315
+msgid "Verification failed, remove the filament and try again."
+msgstr "Verifica fallita, rimuovere il filamento e riprovare."
+
+# MSG_Y_CORRECTION c=13
+#: ultralcd.cpp:5092
+msgid "Y-correct:"
+msgstr "Correzione-Y:"
+
+# MSG_OFF
+#: messages.c:122
+msgid "Off"
+msgstr ""
+
+# MSG_ON
+#: messages.c:123
+msgid "On"
+msgstr ""
+
+# 
+#: messages.c:62
+msgid "Back"
+msgstr "Indietro"
+
+# 
+#: ultralcd.cpp:5647
+msgid "Checks"
+msgstr "Controlli"
+
+# 
+#: ultralcd.cpp:8090
+msgid "False triggering"
+msgstr "Falso innesco"
+
+# 
+#: ultralcd.cpp:3920
+msgid "FINDA:"
+msgstr ""
+
+# MSG_FIRMWARE
+#: language.h:24
+msgid "Firmware"
+msgstr ""
+
+# MSG_STRICT
+#: messages.c:129
+msgid "Strict"
+msgstr "Esatto"
+
+# MSG_WARN
+#: messages.c:128
+msgid "Warn"
+msgstr "Avviso"
+
+# MSG_HW_SETUP c=18
+#: messages.c:100
+msgid "HW Setup"
+msgstr "Impostazioni HW"
+
+# 
+#: ultralcd.cpp:3924
+msgid "IR:"
+msgstr ""
+
+# MSG_MAGNETS_COMP
+#: messages.c:150
+msgid "Magnets comp."
+msgstr "Comp. Magneti"
+
+# MSG_MESH
+#: messages.c:147
+msgid "Mesh"
+msgstr "Griglia"
+
+# 
+#: Marlin_main.cpp:927
+msgid "MK3S firmware detected on MK3 printer"
+msgstr "Firmware MK3S rilevato su stampante MK3"
+
+# MSG_MMU_MODE
+#: messages.c:136
+msgid "MMU Mode"
+msgstr "Mod. MMU"
+
+# 
+#: ultralcd.cpp:4395
+msgid "Mode change in progress ..."
+msgstr "Cambio modalita in corso ..."
+
+# MSG_MODEL
+#: messages.c:130
+msgid "Model"
+msgstr "Modello"
+
+# MSG_NOZZLE_DIAMETER
+#: messages.c:135
+msgid "Nozzle d."
+msgstr "Diam.Ugello"
+
+# 
+#: util.cpp:514
+msgid "G-code sliced for a different level. Continue?"
+msgstr "G-code processato per un livello diverso. Continuare?"
+
+# 
+#: util.cpp:520
+msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
+msgstr "G-code processato per un livello diverso. Per favore esegui nuovamente lo slice del modello. Stampa annullata."
+
+# MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5
+#: messages.c:133
+msgid "G-code sliced for a different printer type. Continue?"
+msgstr "G-code processato per una stampante diversa. Continuare?"
+
+# MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=6
+#: messages.c:134
+msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
+msgstr "G-code processato per una stampante diversa. Per favore esegui nuovamente lo slice del modello. Stampa annullata."
+
+# 
+#: util.cpp:481
+msgid "G-code sliced for a newer firmware. Continue?"
+msgstr "G-code processato per un firmware piu recente. Continuare?"
+
+# 
+#: util.cpp:487
+msgid "G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
+msgstr "G-code processato per un firmware piu recente. Per favore aggiorna il firmware. Stampa annullata."
+
+# 
+#: ultralcd.cpp:3916
+msgid "PINDA:"
+msgstr ""
+
+#  c=20
+#: ultralcd.cpp:2402
+msgid "Preheating to cut"
+msgstr "Preriscalda. taglio"
+
+#  c=20
+#: ultralcd.cpp:2399
+msgid "Preheating to eject"
+msgstr "Preriscalda. espuls."
+
+# 
+#: util.cpp:394
+msgid "Printer nozzle diameter differs from the G-code. Continue?"
+msgstr "Diametro ugello diverso da G-Code. Continuare?"
+
+# 
+#: util.cpp:401
+msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
+msgstr "Diametro ugello diverso dal G-Code. Controlla il valore nelle impostazioni. Stampa annullata."
+
+#  c=20
+#: ultralcd.cpp:8095
+msgid "%s level expected"
+msgstr "atteso livello %s"
+
+# 
+#: ultralcd.cpp:6574
+msgid "Rename"
+msgstr "Rinomina"
+
+# 
+#: ultralcd.cpp:6567
+msgid "Select"
+msgstr "Seleziona"
+
+# 
+#: ultralcd.cpp:2154
+msgid "Sensor info"
+msgstr "Info Sensore"
+
+# MSG_SHEET c=10
+#: messages.c:63
+msgid "Sheet"
+msgstr "Piano"
+
+# MSG_SOUND_BLIND
+#: messages.c:146
+msgid "Assist"
+msgstr "Assist."
+
+# MSG_STEEL_SHEET c=18
+#: messages.c:64
+msgid "Steel sheets"
+msgstr "Piani d'acciaio"
+
+# MSG_Z_CORRECTION c=13
+#: ultralcd.cpp:5093
+msgid "Z-correct:"
+msgstr "Correzione-Z:"
+
+# MSG_Z_PROBE_NR
+#: messages.c:149
+msgid "Z-probe nr."
+msgstr "Nr. Z-test"
+

+ 1852 - 1842
lang/po/new/pl.po

@@ -1,1842 +1,1852 @@
-# Translation of Prusa-Firmware into Polish.
-#
-msgid ""
-msgstr ""
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: pl\n"
-"Project-Id-Version: Prusa-Firmware\n"
-"POT-Creation-Date: Fri May 15 18:16:57 CEST 2020\n"
-"PO-Revision-Date: Fri May 15 18:16:57 CEST 2020\n"
-"Language-Team: \n"
-"X-Generator: Poedit 2.0.7\n"
-"X-Poedit-SourceCharset: UTF-8\n"
-"Last-Translator: \n"
-"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-
-# 
-#: 
-msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
-msgstr "[%.7s]Live Adj. Z\x0austaw., kontynuowac\x0aczy zaczac od 0?\x0a%cKontynuuj%cReset"
-
-# MSG_03_OR_OLDER c=18
-#: messages.c:144
-msgid " 0.3 or older"
-msgstr " 0.3 lub starszy"
-
-# MSG_04_OR_NEWER c=18
-#: messages.c:143
-msgid " 0.4 or newer"
-msgstr " 0.4 lub nowszy"
-
-# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
-#: messages.c:36
-msgid " of 4"
-msgstr " z 4"
-
-# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:56
-msgid " of 9"
-msgstr " z 9"
-
-# MSG_MEASURED_OFFSET
-#: ultralcd.cpp:3064
-msgid "[0;0] point offset"
-msgstr "[0;0] przesun.punktu"
-
-# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
-#: 
-msgid "Crash detection can\x0abe turned on only in\x0aNormal mode"
-msgstr "Wykrywanie zderzen\x0amoze byc wlaczone\x0atylko w\x0atrybie Normalnym"
-
-# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
-#: 
-msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
-msgstr "UWAGA:\x0aWykrywanie zderzen\x0awylaczone w\x0atrybie Stealth"
-
-# 
-#: ultralcd.cpp:2460
-msgid ">Cancel"
-msgstr ">Anuluj"
-
-# MSG_BABYSTEPPING_Z c=15
-#: ultralcd.cpp:3184
-msgid "Adjusting Z:"
-msgstr "Ustawianie Z:"
-
-# MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:8677
-msgid "All correct      "
-msgstr "Wszystko OK "
-
-# MSG_WIZARD_DONE c=20 r=8
-#: messages.c:99
-msgid "All is done. Happy printing!"
-msgstr "Gotowe. Udanego drukowania!"
-
-# 
-#: ultralcd.cpp:1956
-msgid "Ambient"
-msgstr "Otoczenie"
-
-# MSG_AUTO c=6
-#: messages.c:140
-msgid "Auto"
-msgstr ""
-
-# MSG_PRESS c=20 r=2
-#: ultralcd.cpp:2609
-msgid "and press the knob"
-msgstr "i nacisnij pokretlo"
-
-# MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3506
-msgid "Are left and right Z~carriages all up?"
-msgstr "Obydwa konce osi sa na szczycie?"
-
-# MSG_AUTO_DEPLETE c=17 r=1
-#: messages.c:108
-msgid "SpoolJoin"
-msgstr ""
-
-# MSG_AUTO_HOME
-#: messages.c:11
-msgid "Auto home"
-msgstr "Auto zerowanie"
-
-# MSG_AUTOLOAD_FILAMENT c=18
-#: ultralcd.cpp:6961
-msgid "AutoLoad filament"
-msgstr "Autoladowanie fil."
-
-# MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4445
-msgid "Autoloading filament available only when filament sensor is turned on..."
-msgstr "Autoladowanie fil. dostepne tylko gdy czujnik filamentu jest wlaczony..."
-
-# MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2804
-msgid "Autoloading filament is active, just press the knob and insert filament..."
-msgstr "Autoladowanie filamentu wlaczone, nacisnij pokretlo i wsun filament..."
-
-# MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:8325
-msgid "Axis length"
-msgstr "Dlugosc osi"
-
-# MSG_SELFTEST_AXIS
-#: ultralcd.cpp:8327
-msgid "Axis"
-msgstr "Os"
-
-# MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:8269
-msgid "Bed / Heater"
-msgstr "Stol / Grzanie"
-
-# MSG_BED_DONE
-#: messages.c:15
-msgid "Bed done"
-msgstr "Stol OK"
-
-# MSG_BED_HEATING
-#: messages.c:16
-msgid "Bed Heating"
-msgstr "Grzanie stolu.."
-
-# MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5861
-msgid "Bed level correct"
-msgstr "Korekta stolu"
-
-# MSG_BELTTEST c=17
-#: ultralcd.cpp:5841
-msgid "Belt test        "
-msgstr "Test paskow"
-
-# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
-#: messages.c:17
-msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
-msgstr "Kalibracja nieudana. Sensor nie aktywowal sie. Zanieczysz. dysza? Czekam na reset."
-
-# MSG_BRIGHT c=6
-#: messages.c:138
-msgid "Bright"
-msgstr "Jasny"
-
-# MSG_BRIGHTNESS c=18
-#: messages.c:134
-msgid "Brightness"
-msgstr "Jasnosc"
-
-# MSG_BED
-#: messages.c:14
-msgid "Bed"
-msgstr "Stol"
-
-# MSG_MENU_BELT_STATUS c=18
-#: ultralcd.cpp:2009
-msgid "Belt status"
-msgstr "Stan paskow"
-
-# MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:67
-msgid "Blackout occurred. Recover print?"
-msgstr "Wykryto zanik napiecia. Kontynowac?"
-
-# 
-#: ultralcd.cpp:8679
-msgid "Calibrating home"
-msgstr "Zerowanie osi"
-
-# MSG_CALIBRATE_BED
-#: ultralcd.cpp:5850
-msgid "Calibrate XYZ"
-msgstr "Kalibracja XYZ"
-
-# MSG_HOMEYZ
-#: messages.c:44
-msgid "Calibrate Z"
-msgstr "Kalibruj Z"
-
-# MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4637
-msgid "Calibrate"
-msgstr "Kalibruj"
-
-# MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3469
-msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
-msgstr "Kalibracja XYZ. Przekrec pokretlo, aby przesunac os Z do gornych ogranicznikow. Nacisnij, by potwierdzic."
-
-# MSG_CALIBRATE_Z_AUTO c=20 r=2
-#: messages.c:19
-msgid "Calibrating Z"
-msgstr "Kalibruje Z"
-
-# MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3469
-msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
-msgstr "Kalibracja XYZ. Przekrec pokretlo, aby przesunac os Z do gornych ogranicznikow. Nacisnij, by potwierdzic."
-
-# MSG_HOMEYZ_DONE
-#: ultralcd.cpp:865
-msgid "Calibration done"
-msgstr "Kalibracja OK"
-
-# MSG_MENU_CALIBRATION
-#: messages.c:57
-msgid "Calibration"
-msgstr "Kalibracja"
-
-# 
-#: ultralcd.cpp:4815
-msgid "Cancel"
-msgstr "Anuluj"
-
-# MSG_SD_REMOVED
-#: ultralcd.cpp:9090
-msgid "Card removed"
-msgstr "Karta wyjeta"
-
-# MSG_NOT_COLOR
-#: ultralcd.cpp:2709
-msgid "Color not correct"
-msgstr "Kolor zanieczysz."
-
-# MSG_COOLDOWN
-#: messages.c:22
-msgid "Cooldown"
-msgstr "Chlodzenie"
-
-# 
-#: ultralcd.cpp:4570
-msgid "Copy selected language?"
-msgstr "Skopiowac wybrany jezyk?"
-
-# MSG_CRASHDETECT_ON
-#: messages.c:24
-msgid "Crash det."
-msgstr "Wykr.zderzen"
-
-# 
-#: ultralcd.cpp:4950
-msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
-msgstr "Wybierz filament do Kalibracji Pierwszej Warstwy i potwierdz w menu ekranowym."
-
-# MSG_CRASH_DETECTED c=20 r=1
-#: messages.c:23
-msgid "Crash detected."
-msgstr "Zderzenie wykryte"
-
-# 
-#: Marlin_main.cpp:607
-msgid "Crash detected. Resume print?"
-msgstr "Wykryto zderzenie. Wznowic druk?"
-
-# 
-#: ultralcd.cpp:1785
-msgid "Crash"
-msgstr "Zderzenie"
-
-# MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:6002
-msgid "Current"
-msgstr "Aktualne"
-
-# MSG_DATE c=17 r=1
-#: ultralcd.cpp:2163
-msgid "Date:"
-msgstr "Data:"
-
-# MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5743
-msgid "Disable steppers"
-msgstr "Wylacz silniki"
-
-# MSG_BABYSTEP_Z_NOT_SET c=20 r=12
-#: messages.c:13
-msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
-msgstr "Odleglosc dyszy od powierzchni druku nie jest skalibrowana. Postepuj zgodnie z instrukcja: rozdzial Wprowadzenie - Kalibracja pierwszej warstwy."
-
-# MSG_FS_CONTINUE c=5
-#: messages.c:132
-msgid "Cont."
-msgstr "Kont."
-
-# MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:5125
-msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
-msgstr "Chcesz powtorzyc ostatni krok i ponownie ustawic odleglosc miedzy dysza a stolikiem?"
-
-# MSG_EXTRUDER_CORRECTION c=13
-#: ultralcd.cpp:5194
-msgid "E-correct:"
-msgstr "Korekcja-E:"
-
-# MSG_EJECT_FILAMENT c=17 r=1
-#: messages.c:49
-msgid "Eject filament"
-msgstr "Wysun filament"
-
-# MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1416
-msgid "Ejecting filament"
-msgstr "Wysuwanie filamentu"
-
-# MSG_SELFTEST_ENDSTOP_NOTHIT c=20
-#: ultralcd.cpp:8293
-msgid "Endstop not hit"
-msgstr "Krancowka nie aktyw."
-
-# MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:8287
-msgid "Endstop"
-msgstr "Krancowka"
-
-# MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:8275
-msgid "Endstops"
-msgstr "Krancowki"
-
-# MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6998
-msgid "Error - static memory has been overwritten"
-msgstr "Blad - pamiec statyczna zostala nadpisana"
-
-# MSG_CUT_FILAMENT c=16
-#: messages.c:50
-msgid "Cut filament"
-msgstr "Ciecie filamentu"
-
-# MSG_CUTTER c=9
-#: messages.c:109
-msgid "Cutter"
-msgstr "Nozyk"
-
-#  c=18
-#: mmu.cpp:1388
-msgid "Cutting filament"
-msgstr "Obcinanie fil."
-
-# MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4458
-msgid "ERROR: Filament sensor is not responding, please check connection."
-msgstr "BLAD: Czujnik filamentu nie odpowiada, sprawdz polaczenie."
-
-# MSG_DIM c=6
-#: messages.c:139
-msgid "Dim"
-msgstr "Sciemn"
-
-# MSG_ERROR
-#: messages.c:25
-msgid "ERROR:"
-msgstr "BLAD:"
-
-# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:8686
-msgid "Extruder fan:"
-msgstr "WentHotend:"
-
-# MSG_INFO_EXTRUDER c=18
-#: ultralcd.cpp:2211
-msgid "Extruder info"
-msgstr "Ekstruder - info"
-
-# MSG_MOVE_E
-#: messages.c:26
-msgid "Extruder"
-msgstr "Ekstruder"
-
-# 
-#: ultralcd.cpp:6985
-msgid "Fail stats MMU"
-msgstr "Bledy MMU"
-
-# MSG_FSENSOR_AUTOLOAD c=13
-#: messages.c:40
-msgid "F. autoload"
-msgstr "Autolad. fil."
-
-# 
-#: ultralcd.cpp:6982
-msgid "Fail stats"
-msgstr "Statystyki bledow"
-
-# MSG_FAN_SPEED c=14
-#: messages.c:28
-msgid "Fan speed"
-msgstr "Predkosc went."
-
-# MSG_SELFTEST_FAN c=20
-#: messages.c:74
-msgid "Fan test"
-msgstr "Test wentylatora"
-
-# MSG_FANS_CHECK
-#: ultralcd.cpp:5751
-msgid "Fans check"
-msgstr "Sprawd.went."
-
-# MSG_FSENSOR
-#: messages.c:41
-msgid "Fil. sensor"
-msgstr "Czuj. filam."
-
-#  c=14
-#: ultralcd.cpp:1784
-msgid "Filam. runouts"
-msgstr "Konc.filamentu"
-
-# MSG_FILAMENT_CLEAN c=20 r=2
-#: messages.c:29
-msgid "Filament extruding & with correct color?"
-msgstr "Filament wychodzi z dyszy,kolor jest ok?"
-
-# MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2705
-msgid "Filament not loaded"
-msgstr "Fil. nie zaladowany"
-
-# MSG_FILAMENT_SENSOR c=20
-#: messages.c:80
-msgid "Filament sensor"
-msgstr "Czujnik filamentu"
-
-# MSG_FILAMENT_USED c=19
-#: ultralcd.cpp:2869
-msgid "Filament used"
-msgstr "Uzyty filament"
-
-# MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2870
-msgid "Print time"
-msgstr "Czas druku"
-
-# MSG_FS_ACTION c=10
-#: messages.c:131
-msgid "FS Action"
-msgstr "Akcja FS"
-
-#  c=18
-#: Marlin_main.cpp:9512
-msgid "FS v0.4 or newer"
-msgstr "FS v0.4 lub nowszy"
-
-# MSG_FILE_INCOMPLETE c=20 r=3
-#: ultralcd.cpp:8814
-msgid "File incomplete. Continue anyway?"
-msgstr "Plik niekompletny. Kontynowac?"
-
-# MSG_FINISHING_MOVEMENTS c=20
-#: messages.c:37
-msgid "Finishing movements"
-msgstr "Konczenie druku"
-
-# MSG_V2_CALIBRATION c=18
-#: messages.c:103
-msgid "First layer cal."
-msgstr "Kal. 1. warstwy"
-
-# MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:5046
-msgid "First, I will run the selftest to check most common assembly problems."
-msgstr "Najpierw wlacze selftest w celu sprawdzenia najczestszych problemow podczas montazu."
-
-# 
-#: mmu.cpp:727
-msgid "Fix the issue and then press button on MMU unit."
-msgstr "Rozwiaz problem i wcisnij przycisk na MMU."
-
-# MSG_FLOW
-#: ultralcd.cpp:7125
-msgid "Flow"
-msgstr "Przeplyw"
-
-# MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2156
-msgid "forum.prusa3d.com"
-msgstr ""
-
-# MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:71
-msgid "Front print fan?"
-msgstr "Przedni went. druku?"
-
-# MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3266
-msgid "Front side[um]"
-msgstr "Przod [um]"
-
-# MSG_SELFTEST_FANS
-#: ultralcd.cpp:8333
-msgid "Front/left fans"
-msgstr "Przedni/lewy wentylator"
-
-# MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:8263
-msgid "Heater/Thermistor"
-msgstr "Grzalka/Termistor"
-
-# MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:9440
-msgid "Heating disabled by safety timer."
-msgstr "Grzanie wylaczone przez wyl. czasowy"
-
-# MSG_HEATING_COMPLETE c=20
-#: messages.c:43
-msgid "Heating done."
-msgstr "Grzanie zakonczone"
-
-# MSG_HEATING
-#: messages.c:42
-msgid "Heating"
-msgstr "Grzanie..."
-
-# MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:5025
-msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
-msgstr "Czesc, jestem Twoja drukarka Original Prusa i3. Czy potrzebujesz pomocy z ustawieniem?"
-
-# MSG_PRUSA3D_HOWTO
-#: ultralcd.cpp:2157
-msgid "howto.prusa3d.com"
-msgstr ""
-
-# MSG_FILAMENTCHANGE
-#: messages.c:34
-msgid "Change filament"
-msgstr "Wymiana filamentu"
-
-# MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2620
-msgid "Change success!"
-msgstr "Wymiana ok!"
-
-# MSG_CORRECTLY c=20
-#: ultralcd.cpp:2697
-msgid "Changed correctly?"
-msgstr "Wymiana ok?"
-
-# MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:77
-msgid "Checking bed     "
-msgstr "Kontrola stolu"
-
-# MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:8668
-msgid "Checking endstops"
-msgstr "Kontrola krancowek"
-
-# MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:8674
-msgid "Checking hotend  "
-msgstr "Kontrola hotendu"
-
-# MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:78
-msgid "Checking sensors "
-msgstr "Kontrola czujnikow"
-
-# MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:7482
-msgid "Checking X axis  "
-msgstr "Kontrola osi X"
-
-# MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:7491
-msgid "Checking Y axis  "
-msgstr "Kontrola osi Y"
-
-# MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:8671
-msgid "Checking Z axis  "
-msgstr "Kontrola osi Z"
-
-# MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:45
-msgid "Choose extruder:"
-msgstr "Wybierz ekstruder:"
-
-# MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:46
-msgid "Choose filament:"
-msgstr "Wybierz filament:"
-
-# MSG_FILAMENT c=17 r=1
-#: messages.c:27
-msgid "Filament"
-msgstr ""
-
-# MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:5055
-msgid "I will run xyz calibration now. It will take approx. 12 mins."
-msgstr "Przeprowadze teraz kalibracje XYZ. Zajmie ok. 12 min."
-
-# MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:5063
-msgid "I will run z calibration now."
-msgstr "Przeprowadze kalibracje Z."
-
-# MSG_WATCH
-#: messages.c:97
-msgid "Info screen"
-msgstr "Ekran informacyjny"
-
-# MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2605
-msgid "Insert filament"
-msgstr "Wprowadz filament"
-
-# MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4835
-msgid "Is filament loaded?"
-msgstr "Filament jest zaladowany?"
-
-# MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:90
-msgid "Is steel sheet on heatbed?"
-msgstr "Czy plyta stal. jest na podgrzew. stole?"
-
-# 
-#: ultralcd.cpp:1727
-msgid "Last print failures"
-msgstr "Ostatnie bledy druku"
-
-# 
-#: ultralcd.cpp:5133
-msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
-msgstr "Jesli masz dodatkowe plyty stalowe, to skalibruj ich ustawienia w menu Ustawienia - Ustawienia HW - Plyty stalowe."
-
-# 
-#: ultralcd.cpp:1704
-msgid "Last print"
-msgstr "Ost. wydruk"
-
-# MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:72
-msgid "Left hotend fan?"
-msgstr "Lewy went hotendu?"
-
-# 
-#: ultralcd.cpp:2993
-msgid "Left"
-msgstr "Lewa"
-
-# MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3264
-msgid "Left side [um]"
-msgstr "Lewo [um]"
-
-# 
-#: ultralcd.cpp:5766
-msgid "Lin. correction"
-msgstr "Korekcja liniowa"
-
-# MSG_BABYSTEP_Z
-#: messages.c:12
-msgid "Live adjust Z"
-msgstr "Ustaw. Live Z"
-
-#  c=20 r=6
-#: ultralcd.cpp:7527
-msgid "Insert the filament (do not load it) into the extruder and then press the knob."
-msgstr "Wsun filament (nie uzywaj funkcji ladowania) do ekstrudera i nacisnij pokretlo."
-
-# MSG_LOAD_FILAMENT c=17
-#: messages.c:47
-msgid "Load filament"
-msgstr "Ladowanie fil."
-
-# MSG_LOADING_COLOR
-#: ultralcd.cpp:2645
-msgid "Loading color"
-msgstr "Czyszcz. koloru"
-
-# MSG_LOADING_FILAMENT c=20
-#: messages.c:48
-msgid "Loading filament"
-msgstr "Laduje filament"
-
-# MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:8317
-msgid "Loose pulley"
-msgstr "Luzne kolo pasowe"
-
-# 
-#: ultralcd.cpp:6944
-msgid "Load to nozzle"
-msgstr "Zaladuj do dyszy"
-
-# MSG_M117_V2_CALIBRATION c=25
-#: messages.c:51
-msgid "M117 First layer cal."
-msgstr "M117 Kal. 1. warstwy"
-
-# MSG_MAIN
-#: messages.c:52
-msgid "Main"
-msgstr "Menu glowne"
-
-# MSG_BL_HIGH c=12
-#: messages.c:135
-msgid "Level Bright"
-msgstr "Poziom jasn."
-
-# MSG_BL_LOW c=12
-#: messages.c:136
-msgid "Level Dimmed"
-msgstr "Poziom ciem."
-
-# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:55
-msgid "Measuring reference height of calibration point"
-msgstr "Okreslam wysokosc odniesienia punktu kalibracyjnego"
-
-# MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5856
-msgid "Mesh Bed Leveling"
-msgstr "Poziomowanie stolu wg siatki"
-
-# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:765
-msgid "MMU OK. Resuming position..."
-msgstr "MMU OK. Wznawianie pozycji."
-
-# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:758
-msgid "MMU OK. Resuming temperature..."
-msgstr "MMU OK. Wznawiam nagrzewanie..."
-
-# 
-#: ultralcd.cpp:3034
-msgid "Measured skew"
-msgstr "Zmierzony skos"
-
-# 
-#: ultralcd.cpp:1728
-msgid "MMU fails"
-msgstr "Bledy MMU"
-
-# 
-#: mmu.cpp:1588
-msgid "MMU load failed     "
-msgstr "Blad ladowania MMU"
-
-# 
-#: ultralcd.cpp:1729
-msgid "MMU load fails"
-msgstr "Bledy ladow. MMU"
-
-# MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:776
-msgid "MMU OK. Resuming..."
-msgstr "MMU OK. Wznawianie..."
-
-# MSG_MODE
-#: messages.c:84
-msgid "Mode"
-msgstr "Tryb"
-
-#  c=20 r=3
-#: Marlin_main.cpp:879
-msgid "MK3 firmware detected on MK3S printer"
-msgstr "Wykryto firmware MK3 w drukarce MK3S"
-
-# MSG_NORMAL
-#: messages.c:88
-msgid "Normal"
-msgstr "Normalni"
-
-# MSG_SILENT
-#: messages.c:87
-msgid "Silent"
-msgstr "Cichy"
-
-# 
-#: mmu.cpp:722
-msgid "MMU needs user attention."
-msgstr "MMU wymaga uwagi uzytkownika."
-
-# 
-#: ultralcd.cpp:1755
-msgid "MMU power fails"
-msgstr "Zaniki zasil. MMU"
-
-# MSG_STEALTH
-#: messages.c:89
-msgid "Stealth"
-msgstr "Cichy"
-
-# MSG_AUTO_POWER
-#: messages.c:86
-msgid "Auto power"
-msgstr "Automatycz"
-
-# MSG_HIGH_POWER
-#: messages.c:85
-msgid "High power"
-msgstr "Wysoka wyd."
-
-# 
-#: ultralcd.cpp:2186
-msgid "MMU2 connected"
-msgstr "MMU podlaczone"
-
-# MSG_SELFTEST_MOTOR
-#: messages.c:79
-msgid "Motor"
-msgstr "Silnik"
-
-# MSG_MOVE_AXIS
-#: ultralcd.cpp:5741
-msgid "Move axis"
-msgstr "Ruch osi"
-
-# MSG_MOVE_X
-#: ultralcd.cpp:4361
-msgid "Move X"
-msgstr "Ruch osi X"
-
-# MSG_MOVE_Y
-#: ultralcd.cpp:4362
-msgid "Move Y"
-msgstr "Ruch osi Y"
-
-# MSG_MOVE_Z
-#: ultralcd.cpp:4363
-msgid "Move Z"
-msgstr "Ruch osi Z"
-
-# MSG_NO_MOVE
-#: Marlin_main.cpp:5541
-msgid "No move."
-msgstr "Brak ruchu."
-
-# MSG_NO_CARD
-#: ultralcd.cpp:6911
-msgid "No SD card"
-msgstr "Brak karty SD"
-
-# MSG_NA
-#: messages.c:107
-msgid "N/A"
-msgstr "N/D"
-
-# MSG_NO
-#: messages.c:58
-msgid "No"
-msgstr "Nie"
-
-# MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:8265
-msgid "Not connected"
-msgstr "Nie podlaczono "
-
-# 
-#: util.cpp:293
-msgid "New firmware version available:"
-msgstr "Dostepna nowa wersja firmware:"
-
-# MSG_SELFTEST_FAN_NO c=19
-#: messages.c:75
-msgid "Not spinning"
-msgstr "Nie kreci sie"
-
-# MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4946
-msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
-msgstr "Kalibruje odleglosc miedzy koncowka dyszy a powierzchnia druku."
-
-# MSG_WIZARD_WILL_PREHEAT c=20 r=4
-#: ultralcd.cpp:5071
-msgid "Now I will preheat nozzle for PLA."
-msgstr "Nagrzewam dysze dla PLA."
-
-# MSG_NOZZLE
-#: messages.c:59
-msgid "Nozzle"
-msgstr "Dysza"
-
-# MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
-#: Marlin_main.cpp:1518
-msgid "Old settings found. Default PID, Esteps etc. will be set."
-msgstr "Znaleziono stare ustawienia. Zostana przywrocone domyslne ust. PID, Esteps, itp."
-
-# 
-#: ultralcd.cpp:5062
-msgid "Now remove the test print from steel sheet."
-msgstr "Teraz zdejmij wydruk testowy ze stolu."
-
-# 
-#: ultralcd.cpp:1654
-msgid "Nozzle FAN"
-msgstr "WentHotend"
-
-# MSG_PAUSE_PRINT
-#: ultralcd.cpp:6875
-msgid "Pause print"
-msgstr "Wstrzymanie wydruku"
-
-# MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1539
-msgid "PID cal.           "
-msgstr "Kalibracja PID"
-
-# MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1545
-msgid "PID cal. finished"
-msgstr "Kal. PID zakonczona"
-
-# MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5862
-msgid "PID calibration"
-msgstr "Kalibracja PID"
-
-# MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:896
-msgid "PINDA Heating"
-msgstr "Grzanie sondy PINDA"
-
-# MSG_PAPER c=20 r=10
-#: messages.c:60
-msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
-msgstr "Umiesc kartke papieru na stole roboczym i podczas pomiaru pierwszych 4 punktow. Jesli dysza zahaczy o papier, natychmiast wylacz drukarke."
-
-# MSG_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:5128
-msgid "Please clean heatbed and then press the knob."
-msgstr "Oczysc powierzchnie druku i nacisnij pokretlo."
-
-# MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
-#: messages.c:21
-msgid "Please clean the nozzle for calibration. Click when done."
-msgstr "Dla prawidlowej kalibracji nalezy oczyscic dysze. Potwierdz guzikiem."
-
-# MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:8257
-msgid "Please check :"
-msgstr "Sprawdz :"
-
-# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:98
-msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
-msgstr "Przeczytaj nasz Podrecznik druku 3D aby naprawic problem. Potem wznow Asystenta przez restart drukarki."
-
-# MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3138
-msgid "Please open idler and remove filament manually."
-msgstr "Prosze odciagnac dzwignie dociskowa ekstrudera i recznie usunac filament."
-
-# MSG_PLACE_STEEL_SHEET c=20 r=4
-#: messages.c:61
-msgid "Please place steel sheet on heatbed."
-msgstr "Prosze umiescic plyte stalowa na stole podgrzewanym."
-
-# MSG_PRESS_TO_UNLOAD c=20 r=4
-#: messages.c:64
-msgid "Please press the knob to unload filament"
-msgstr "Nacisnij pokretlo aby rozladowac filament"
-
-# MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:66
-msgid "Please pull out filament immediately"
-msgstr "Wyciagnij filament teraz"
-
-# MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1422
-msgid "Please remove filament and then press the knob."
-msgstr "Wyciagnij filament i wcisnij pokretlo."
-
-# MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:70
-msgid "Please remove steel sheet from heatbed."
-msgstr "Prosze zdjac plyte stalowa z podgrzewanego stolu."
-
-# MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4583
-msgid "Please run XYZ calibration first."
-msgstr "Prosze najpierw uruchomic kalibracje XYZ"
-
-# MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1341
-msgid "Please update firmware in your MMU2. Waiting for reset."
-msgstr "Prosze zaktualizowac Firmware MMU2. Czekam na reset."
-
-# MSG_PLEASE_WAIT c=20
-#: messages.c:62
-msgid "Please wait"
-msgstr "Prosze czekac"
-
-# 
-#: ultralcd.cpp:5061
-msgid "Please remove shipping helpers first."
-msgstr "Najpierw usun zabezpieczenia transportowe"
-
-# MSG_PREHEAT_NOZZLE c=20
-#: messages.c:63
-msgid "Preheat the nozzle!"
-msgstr "Nagrzej dysze!"
-
-# MSG_PREHEAT
-#: ultralcd.cpp:6853
-msgid "Preheat"
-msgstr "Grzanie"
-
-# MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:100
-msgid "Preheating nozzle. Please wait."
-msgstr "Nagrzewanie dyszy. Prosze czekac."
-
-#  c=14
-#: ultralcd.cpp:1959
-msgid "PINDA"
-msgstr ""
-
-# 
-#: util.cpp:297
-msgid "Please upgrade."
-msgstr "Prosze zaktualizowac."
-
-# MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:11526
-msgid "Press knob to preheat nozzle and continue."
-msgstr "Wcisnij pokretlo aby rozgrzac dysze i kontynuowac."
-
-# MSG_FS_PAUSE c=5
-#: fsensor.cpp:710
-msgid "Pause"
-msgstr "Pauza"
-
-# 
-#: ultralcd.cpp:1783
-msgid "Power failures"
-msgstr "Zaniki zasilania"
-
-# MSG_PRINT_ABORTED c=20
-#: messages.c:65
-msgid "Print aborted"
-msgstr "Druk przerwany"
-
-#  c=20
-#: ultralcd.cpp:2442
-msgid "Preheating to load"
-msgstr "Nagrzew.do ladowania"
-
-#  c=20
-#: ultralcd.cpp:2446
-msgid "Preheating to unload"
-msgstr "Nagrzew. do rozlad."
-
-# MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:8689
-msgid "Print fan:"
-msgstr "WentWydruk:"
-
-# MSG_CARD_MENU
-#: messages.c:20
-msgid "Print from SD"
-msgstr "Druk z karty SD"
-
-# 
-#: ultralcd.cpp:2289
-msgid "Press the knob"
-msgstr "Wcisnij pokretlo"
-
-# MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1118
-msgid "Print paused"
-msgstr "Druk wstrzymany"
-
-# 
-#: mmu.cpp:726
-msgid "Press the knob to resume nozzle temperature."
-msgstr "Wcisnij pokretlo aby wznowic podgrzewanie dyszy."
-
-# MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
-#: messages.c:38
-msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
-msgstr "Drukarka nie byla jeszcze kalibrowana. Kieruj sie Samouczkiem: rozdzial Pierwsze Kroki, sekcja Konfiguracja przed drukowaniem."
-
-# 
-#: ultralcd.cpp:1655
-msgid "Print FAN"
-msgstr "WentWydruk"
-
-# 
-#: ultralcd.cpp:4926
-msgid "Please insert filament into the extruder, then press the knob to load it."
-msgstr "Wsun filament do ekstrudera i nacisnij pokretlo, aby go zaladowac."
-
-# 
-#: ultralcd.cpp:4921
-msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
-msgstr "Wsun filament do pierwszego kanalu w MMU2 i nacisnij pokretlo, aby go zaladowac."
-
-# 
-#: ultralcd.cpp:4843
-msgid "Please load filament first."
-msgstr "Najpierw zaladuj filament."
-
-# MSG_PRUSA3D
-#: ultralcd.cpp:2155
-msgid "prusa3d.com"
-msgstr ""
-
-# MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3267
-msgid "Rear side [um]"
-msgstr "Tyl [um]"
-
-#  c=20 r=4
-#: ultralcd.cpp:7549
-msgid "Please unload the filament first, then repeat this action."
-msgstr "Najpierw rozladuj filament, nastepnie powtorz czynnosc."
-
-# MSG_RECOVERING_PRINT c=20
-#: Marlin_main.cpp:10883
-msgid "Recovering print    "
-msgstr "Wznawianie wydruku  "
-
-# MSG_REMOVE_OLD_FILAMENT c=20 r=5
-#: mmu.cpp:833
-msgid "Remove old filament and press the knob to start loading new filament."
-msgstr "Wyciagnij poprzedni filament i nacisnij pokretlo aby zaladowac nowy."
-
-#  c=20
-#: 
-msgid "Prusa i3 MK3S OK."
-msgstr ""
-
-# MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5867
-msgid "Reset XYZ calibr."
-msgstr "Reset kalibr. XYZ"
-
-# MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3268
-msgid "Reset"
-msgstr ""
-
-# MSG_RESUME_PRINT
-#: ultralcd.cpp:6861
-msgid "Resume print"
-msgstr "Wznowic wydruk"
-
-# MSG_RESUMING_PRINT c=20
-#: messages.c:69
-msgid "Resuming print"
-msgstr "Wznawianie druku"
-
-# MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3265
-msgid "Right side[um]"
-msgstr "Prawo [um]"
-
-# MSG_RPI_PORT
-#: messages.c:123
-msgid "RPi port"
-msgstr "Port RPi"
-
-# MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4864
-msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
-msgstr "Wlaczenie Asystenta usunie obecne dane kalibracyjne i zacznie od poczatku. Kontynuowac?"
-
-# MSG_SD_CARD
-#: messages.c:118
-msgid "SD card"
-msgstr "Karta SD"
-
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
-#: messages.c:119
-msgid "FlashAir"
-msgstr ""
-
-# 
-#: ultralcd.cpp:2994
-msgid "Right"
-msgstr "Prawa"
-
-# MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: messages.c:35
-msgid "Searching bed calibration point"
-msgstr "Szukam punktu kalibracyjnego na stole"
-
-# MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5779
-msgid "Select language"
-msgstr "Wybor jezyka"
-
-# MSG_SELFTEST_OK
-#: ultralcd.cpp:7812
-msgid "Self test OK"
-msgstr "Selftest OK"
-
-# MSG_SELFTEST_START c=20
-#: ultralcd.cpp:7582
-msgid "Self test start  "
-msgstr "Selftest startuje"
-
-# MSG_SELFTEST
-#: ultralcd.cpp:5843
-msgid "Selftest         "
-msgstr "Selftest "
-
-# MSG_SELFTEST_ERROR
-#: ultralcd.cpp:8255
-msgid "Selftest error !"
-msgstr "Blad selftest!"
-
-# MSG_SELFTEST_FAILED c=20
-#: messages.c:73
-msgid "Selftest failed  "
-msgstr "Selftest nieudany"
-
-# MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1550
-msgid "Selftest will be run to calibrate accurate sensorless rehoming."
-msgstr "Zostanie uruchomiony Selftest aby dokladnie skalibrowac punkt bazowy bez krancowek"
-
-# 
-#: ultralcd.cpp:5102
-msgid "Select nozzle preheat temperature which matches your material."
-msgstr "Wybierz temperature grzania dyszy odpowiednia dla materialu."
-
-# MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3286
-msgid "Set temperature:"
-msgstr "Ustaw temperature:"
-
-#  c=20
-#: 
-msgid "Prusa i3 MK2.5 OK."
-msgstr ""
-
-#  c=20
-#: 
-msgid "Prusa i3 MK2.5S OK."
-msgstr ""
-
-#  c=20
-#: 
-msgid "Prusa i3 MK3 OK."
-msgstr ""
-
-# MSG_SETTINGS
-#: messages.c:82
-msgid "Settings"
-msgstr "Ustawienia"
-
-# MSG_SHOW_END_STOPS c=18
-#: ultralcd.cpp:5864
-msgid "Show end stops"
-msgstr "Pokaz krancowki"
-
-# 
-#: ultralcd.cpp:4008
-msgid "Sensor state"
-msgstr "Stan czujnikow"
-
-# MSG_FILE_CNT c=20 r=6
-#: cardreader.cpp:738
-msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
-msgstr "Niektore pliki nie zostana posortowane. Max. liczba plikow w 1 folderze = 100."
-
-# MSG_SORT
-#: messages.c:120
-msgid "Sort"
-msgstr "Sortowanie"
-
-# MSG_NONE
-#: messages.c:110
-msgid "None"
-msgstr "Brak"
-
-# MSG_SORT_TIME
-#: messages.c:121
-msgid "Time"
-msgstr "Czas"
-
-# 
-#: ultralcd.cpp:3037
-msgid "Severe skew:"
-msgstr "Znaczny skos:"
-
-# MSG_SORT_ALPHA
-#: messages.c:122
-msgid "Alphabet"
-msgstr "Alfab"
-
-# MSG_SORTING c=20 r=1
-#: cardreader.cpp:745
-msgid "Sorting files"
-msgstr "Sortowanie plikow"
-
-# MSG_SOUND_LOUD
-#: messages.c:125
-msgid "Loud"
-msgstr "Glosny"
-
-# 
-#: ultralcd.cpp:3036
-msgid "Slight skew:"
-msgstr "Lekki skos:"
-
-# MSG_SOUND
-#: messages.c:124
-msgid "Sound"
-msgstr "Dzwiek"
-
-#  c=7
-#: ultralcd.cpp:1822
-msgid "Runouts"
-msgstr "Konce f"
-
-# 
-#: Marlin_main.cpp:5101
-msgid "Some problem encountered, Z-leveling enforced ..."
-msgstr "Wykryto problem, wymuszono poziomowanie osi Z."
-
-# MSG_SOUND_ONCE
-#: messages.c:126
-msgid "Once"
-msgstr "1-raz"
-
-# MSG_SPEED
-#: ultralcd.cpp:7119
-msgid "Speed"
-msgstr "Predkosc"
-
-# MSG_SELFTEST_FAN_YES c=19
-#: messages.c:76
-msgid "Spinning"
-msgstr "Kreci sie"
-
-# MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4596
-msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
-msgstr "Potrzebna jest stabilna temperatura otoczenia 21-26C i stabilne podloze."
-
-# MSG_STATISTICS
-#: ultralcd.cpp:6978
-msgid "Statistics  "
-msgstr "Statystyki"
-
-# MSG_STOP_PRINT
-#: messages.c:91
-msgid "Stop print"
-msgstr "Przerwanie druku"
-
-# MSG_STOPPED
-#: messages.c:92
-msgid "STOPPED. "
-msgstr "ZATRZYMANO."
-
-# MSG_SUPPORT
-#: ultralcd.cpp:6987
-msgid "Support"
-msgstr "Wsparcie"
-
-# MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:8335
-msgid "Swapped"
-msgstr "Zamieniono"
-
-# 
-#: ultralcd.cpp:4814
-msgid "Select filament:"
-msgstr "Wybierz filament:"
-
-# MSG_TEMP_CALIBRATION c=14
-#: messages.c:93
-msgid "Temp. cal."
-msgstr "Kalib. temp."
-
-# 
-#: ultralcd.cpp:4955
-msgid "Select temperature which matches your material."
-msgstr "Wybierz temperature, ktora odpowiada Twojemu filamentowi."
-
-# MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5873
-msgid "Temp. calibration"
-msgstr "Kalibracja temp."
-
-# MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3933
-msgid "Temperature calibration failed"
-msgstr "Kalibracja temperaturowa nieudana"
-
-# MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:94
-msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
-msgstr "Kalibracja temperaturowa zakonczona i wlaczona. Moze byc wylaczona z menu Ustawienia -> Kalibracja temp."
-
-#  c=20 r=3
-#: ultralcd.cpp:7554
-msgid "Sensor verified, remove the filament now."
-msgstr "Czujnik sprawdzony, wyciagnij filament."
-
-# MSG_TEMPERATURE
-#: ultralcd.cpp:5739
-msgid "Temperature"
-msgstr "Temperatura"
-
-# MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2218
-msgid "Temperatures"
-msgstr "Temperatury"
-
-# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
-#: messages.c:39
-msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
-msgstr "Musimy przeprowadzic kalibracje Z. Kieruj sie Samouczkiem: rozdzial Pierwsze Kroki, sekcja Kalibracja."
-
-# 
-#: ultralcd.cpp:2891
-msgid "Total filament"
-msgstr "Zuzycie filamentu"
-
-# 
-#: ultralcd.cpp:2892
-msgid "Total print time"
-msgstr "Laczny czas druku"
-
-# MSG_TUNE
-#: ultralcd.cpp:6850
-msgid "Tune"
-msgstr "Strojenie"
-
-# 
-#: 
-msgid "Unload"
-msgstr "Rozladuj"
-
-# 
-#: ultralcd.cpp:1752
-msgid "Total failures"
-msgstr "Suma bledow"
-
-# 
-#: ultralcd.cpp:2296
-msgid "to load filament"
-msgstr "aby zaladow. fil."
-
-# 
-#: ultralcd.cpp:2300
-msgid "to unload filament"
-msgstr "aby rozlad. filament"
-
-# MSG_UNLOAD_FILAMENT c=17
-#: messages.c:95
-msgid "Unload filament"
-msgstr "Rozladowanie fil."
-
-# MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:96
-msgid "Unloading filament"
-msgstr "Rozladowuje filament"
-
-# 
-#: ultralcd.cpp:1705
-msgid "Total"
-msgstr "Suma"
-
-# MSG_USED c=19 r=1
-#: ultralcd.cpp:6001
-msgid "Used during print"
-msgstr "Uzyte podczas druku"
-
-# MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2221
-msgid "Voltages"
-msgstr "Napiecia"
-
-# 
-#: ultralcd.cpp:2194
-msgid "unknown"
-msgstr "nieznane"
-
-# MSG_USERWAIT
-#: Marlin_main.cpp:5511
-msgid "Wait for user..."
-msgstr "Czekam na uzytkownika..."
-
-# MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3434
-msgid "Waiting for nozzle and bed cooling"
-msgstr "Oczekiwanie na wychlodzenie dyszy i stolu"
-
-# MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3395
-msgid "Waiting for PINDA probe cooling"
-msgstr "Czekam az spadnie temp. sondy PINDA"
-
-# 
-#: 
-msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU tube. Use eject if it is hidden in tube."
-msgstr "Uzyj opcji Rozladuj jesli filament wystaje z tylnej rurki MMU. Uzyj opcji Wysun jesli wciaz jest w srodku."
-
-# MSG_CHANGED_BOTH c=20 r=4
-#: Marlin_main.cpp:1510
-msgid "Warning: both printer type and motherboard type changed."
-msgstr "Ostrzezenie: typ drukarki i plyta glowna ulegly zmianie."
-
-# MSG_CHANGED_MOTHERBOARD c=20 r=4
-#: Marlin_main.cpp:1502
-msgid "Warning: motherboard type changed."
-msgstr "Ostrzezenie: plyta glowna ulegla zmianie."
-
-# MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1506
-msgid "Warning: printer type changed."
-msgstr "Ostrzezenie: rodzaj drukarki ulegl zmianie"
-
-# MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3128
-msgid "Was filament unload successful?"
-msgstr "Rozladowanie fil. ok?"
-
-# MSG_SELFTEST_WIRINGERROR
-#: messages.c:81
-msgid "Wiring error"
-msgstr "Blad polaczenia"
-
-# MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5834
-msgid "Wizard"
-msgstr "Asystent"
-
-# MSG_XYZ_DETAILS c=18
-#: ultralcd.cpp:2210
-msgid "XYZ cal. details"
-msgstr "Szczegoly kal. XYZ"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
-#: messages.c:18
-msgid "XYZ calibration failed. Please consult the manual."
-msgstr "Kalibracja XYZ nieudana. Sprawdz przyczyny i rozwiazania w instrukcji."
-
-# MSG_YES
-#: messages.c:102
-msgid "Yes"
-msgstr "Tak"
-
-# MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:101
-msgid "You can always resume the Wizard from Calibration -> Wizard."
-msgstr "Zawsze mozesz uruchomic Asystenta ponownie przez Kalibracja -> Asystent."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
-#: ultralcd.cpp:3904
-msgid "XYZ calibration all right. Skew will be corrected automatically."
-msgstr "Kalibracja XYZ pomyslna. Skos bedzie automatycznie korygowany."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
-#: ultralcd.cpp:3901
-msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
-msgstr "Kalibracja XYZ prawidlowa. Osie X/Y lekko skosne. Dobra robota!"
-
-# MSG_TIMEOUT c=12
-#: messages.c:137
-msgid "Timeout"
-msgstr "Wyl. czas."
-
-# MSG_X_CORRECTION c=13
-#: ultralcd.cpp:5190
-msgid "X-correct:"
-msgstr "Korekcja-X:"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3898
-msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
-msgstr "Kalibracja XYZ ok. Osie X/Y sa prostopadle. Gratulacje!"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
-#: ultralcd.cpp:3882
-msgid "XYZ calibration compromised. Front calibration points not reachable."
-msgstr "Kalibr. XYZ niedokladna. Przednie punkty kalibr. nieosiagalne."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3885
-msgid "XYZ calibration compromised. Right front calibration point not reachable."
-msgstr "Kalibracja XYZ niedokladna. Prawy przedni punkt nieosiagalny."
-
-# MSG_LOAD_ALL c=17
-#: ultralcd.cpp:6261
-msgid "Load all"
-msgstr "Zalad. wszystkie"
-
-# 
-#: ultralcd.cpp:3864
-msgid "XYZ calibration failed. Bed calibration point was not found."
-msgstr "Kalibracja XYZ nieudana. Nie znaleziono punktow kalibracyjnych."
-
-# 
-#: ultralcd.cpp:3870
-msgid "XYZ calibration failed. Front calibration points not reachable."
-msgstr "Kalibr. XYZ nieudana. Przednie punkty kalibr. nieosiagalne. Nalezy poprawic montaz drukarki."
-
-# 
-#: ultralcd.cpp:3873
-msgid "XYZ calibration failed. Right front calibration point not reachable."
-msgstr "Kalibr. XYZ nieudana. Prawy przedni punkt nieosiagalny. Nalezy poprawic montaz drukarki."
-
-# 
-#: ultralcd.cpp:2991
-msgid "Y distance from min"
-msgstr "Dystans od 0 w osi Y"
-
-# 
-#: ultralcd.cpp:4958
-msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
-msgstr "Drukarka zacznie drukowanie linii w ksztalcie zygzaka. Ustaw optymalna wysokosc obracajac pokretlo. Porownaj z ilustracjami w Podreczniku (rozdzial Kalibracja)."
-
-#  c=20 r=5
-#: ultralcd.cpp:7558
-msgid "Verification failed, remove the filament and try again."
-msgstr "Niepowodzenie sprawdzenia, wyciagnij filament i sprobuj ponownie."
-
-# MSG_Y_CORRECTION c=13
-#: ultralcd.cpp:5191
-msgid "Y-correct:"
-msgstr "Korekcja-Y:"
-
-# MSG_OFF
-#: messages.c:105
-msgid "Off"
-msgstr "Wyl"
-
-# MSG_ON
-#: messages.c:106
-msgid "On"
-msgstr "Wl"
-
-# 
-#: messages.c:53
-msgid "Back"
-msgstr "Wstecz"
-
-# 
-#: ultralcd.cpp:5724
-msgid "Checks"
-msgstr "Testy"
-
-# 
-#: ultralcd.cpp:8349
-msgid "False triggering"
-msgstr "Falszywy alarm"
-
-# 
-#: ultralcd.cpp:4013
-msgid "FINDA:"
-msgstr ""
-
-# MSG_FIRMWARE
-#: language.h:23
-msgid "Firmware"
-msgstr ""
-
-# MSG_STRICT
-#: messages.c:112
-msgid "Strict"
-msgstr "Restr."
-
-# MSG_WARN
-#: messages.c:111
-msgid "Warn"
-msgstr "Ostrzez"
-
-# 
-#: messages.c:83
-msgid "HW Setup"
-msgstr "Ustawienia HW"
-
-# 
-#: ultralcd.cpp:4017
-msgid "IR:"
-msgstr ""
-
-# MSG_MAGNETS_COMP
-#: messages.c:130
-msgid "Magnets comp."
-msgstr "Kor. magnesow"
-
-# MSG_MESH
-#: messages.c:128
-msgid "Mesh"
-msgstr "Siatka"
-
-# 
-#: ultralcd.cpp:5763
-msgid "Mesh bed leveling"
-msgstr "Poziomowanie stolu"
-
-# 
-#: Marlin_main.cpp:872
-msgid "MK3S firmware detected on MK3 printer"
-msgstr "Wykryto firmware MK3S w drukarce MK3"
-
-# MSG_MMU_MODE
-#: messages.c:117
-msgid "MMU Mode"
-msgstr "Tryb MMU"
-
-# 
-#: ultralcd.cpp:4494
-msgid "Mode change in progress ..."
-msgstr "Trwa zmiana trybu..."
-
-# MSG_MODEL
-#: messages.c:113
-msgid "Model"
-msgstr ""
-
-# MSG_NOZZLE_DIAMETER
-#: messages.c:116
-msgid "Nozzle d."
-msgstr "Sr. dyszy"
-
-# 
-#: util.cpp:514
-msgid "G-code sliced for a different level. Continue?"
-msgstr "G-code pociety dla innej wersji. Kontynuowac?"
-
-# 
-#: util.cpp:520
-msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
-msgstr "G-code pociety na innym poziomie. Potnij model ponownie. Druk anulowany."
-
-# 
-#: util.cpp:431
-msgid "G-code sliced for a different printer type. Continue?"
-msgstr "G-code pociety dla innej drukarki. Kontynuowac?"
-
-# 
-#: util.cpp:437
-msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
-msgstr "G-code pociety dla drukarki innego typu. Potnij model ponownie. Druk anulowany."
-
-# 
-#: util.cpp:481
-msgid "G-code sliced for a newer firmware. Continue?"
-msgstr "G-code pociety dla nowszego firmware. Kontynuowac?"
-
-# 
-#: util.cpp:487
-msgid "G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
-msgstr "G-code pociety dla nowszego firmware. Zaktualizuj firmware. Druk anulowany."
-
-# 
-#: ultralcd.cpp:4009
-msgid "PINDA:"
-msgstr ""
-
-#  c=20
-#: ultralcd.cpp:2452
-msgid "Preheating to cut"
-msgstr "Nagrzew. obciecia"
-
-#  c=20
-#: ultralcd.cpp:2449
-msgid "Preheating to eject"
-msgstr "Nagrzew. wysuniecia"
-
-# 
-#: util.cpp:394
-msgid "Printer nozzle diameter differs from the G-code. Continue?"
-msgstr "Srednica dyszy drukarki rozni sie od tej w G-code. Kontynuowac?"
-
-# 
-#: util.cpp:401
-msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
-msgstr "Srednica dyszy rozni sie od tej w G-code. Sprawdz ustawienia. Druk anulowany."
-
-#  c=20
-#: ultralcd.cpp:8355
-msgid "%s level expected"
-msgstr "Oczekiwano wersji %s"
-
-# 
-#: ultralcd.cpp:6814
-msgid "Rename"
-msgstr "Zmien nazwe"
-
-# 
-#: ultralcd.cpp:6807
-msgid "Select"
-msgstr "Wybierz"
-
-# 
-#: ultralcd.cpp:2212
-msgid "Sensor info"
-msgstr "Info o sensorach"
-
-# MSG_SHEET c=10
-#: messages.c:54
-msgid "Sheet"
-msgstr "Plyta"
-
-# MSG_SOUND_BLIND
-#: messages.c:127
-msgid "Assist"
-msgstr "Asyst."
-
-#  c=18
-#: ultralcd.cpp:5722
-msgid "Steel sheets"
-msgstr "Plyty stalowe"
-
-# MSG_Z_CORRECTION c=13
-#: ultralcd.cpp:5192
-msgid "Z-correct:"
-msgstr "Korekcja-Z:"
-
-# MSG_Z_PROBE_NR
-#: messages.c:129
-msgid "Z-probe nr."
-msgstr "Ilosc Pomiarow"
-
+# Translation of Prusa-Firmware into Polish.
+#
+msgid ""
+msgstr ""
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: pl\n"
+"Project-Id-Version: Prusa-Firmware\n"
+"POT-Creation-Date: Di 26. Jan 11:04:15 CET 2021\n"
+"PO-Revision-Date: Di 26. Jan 11:04:15 CET 2021\n"
+"Language-Team: \n"
+"X-Generator: Poedit 2.0.7\n"
+"X-Poedit-SourceCharset: UTF-8\n"
+"Last-Translator: \n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+# 
+#: 
+msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
+msgstr "[%.7s]Live Adj. Z\x0austaw., kontynuowac\x0aczy zaczac od 0?\x0a%cKontynuuj%cReset"
+
+# MSG_IR_03_OR_OLDER c=18
+#: messages.c:164
+msgid " 0.3 or older"
+msgstr " 0.3 lub starszy"
+
+#  c=18
+#: Marlin_main.cpp:9626
+msgid "FS v0.3 or older"
+msgstr "FS 0.3 lub starszy"
+
+# MSG_IR_04_OR_NEWER c=18
+#: messages.c:163
+msgid " 0.4 or newer"
+msgstr " 0.4 lub nowszy"
+
+#  c=18
+#: Marlin_main.cpp:9625
+msgid "FS v0.4 or newer"
+msgstr "FS 0.4 lub nowszy"
+
+# MSG_IR_UNKNOWN c=18
+#: messages.c:165
+msgid "unknown state"
+msgstr "Stan nieznany"
+
+# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
+#: messages.c:43
+msgid " of 4"
+msgstr " z 4"
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
+#: messages.c:66
+msgid " of 9"
+msgstr " z 9"
+
+# MSG_MEASURED_OFFSET
+#: ultralcd.cpp:2988
+msgid "[0;0] point offset"
+msgstr "[0;0] przesun.punktu"
+
+# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
+#: 
+msgid "Crash detection can\x0abe turned on only in\x0aNormal mode"
+msgstr "Wykrywanie zderzen\x0amoze byc wlaczone\x0atylko w\x0atrybie Normalnym"
+
+# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
+#: 
+msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
+msgstr "UWAGA:\x0aWykrywanie zderzen\x0awylaczone w\x0atrybie Stealth"
+
+# 
+#: ultralcd.cpp:2410
+msgid ">Cancel"
+msgstr ">Anuluj"
+
+# MSG_BABYSTEPPING_Z c=15
+#: ultralcd.cpp:3108
+msgid "Adjusting Z:"
+msgstr "Ustawianie Z:"
+
+# MSG_SELFTEST_CHECK_ALLCORRECT c=20
+#: ultralcd.cpp:8390
+msgid "All correct      "
+msgstr "Wszystko OK "
+
+# MSG_WIZARD_DONE c=20 r=8
+#: messages.c:116
+msgid "All is done. Happy printing!"
+msgstr "Gotowe. Udanego drukowania!"
+
+# 
+#: ultralcd.cpp:1902
+msgid "Ambient"
+msgstr "Otoczenie"
+
+# MSG_AUTO c=6
+#: messages.c:160
+msgid "Auto"
+msgstr ""
+
+# MSG_PRESS c=20 r=2
+#: ultralcd.cpp:2567
+msgid "and press the knob"
+msgstr "i nacisnij pokretlo"
+
+# MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
+#: ultralcd.cpp:3429
+msgid "Are left and right Z~carriages all up?"
+msgstr "Obydwa konce osi sa na szczycie?"
+
+# MSG_AUTO_DEPLETE c=17 r=1
+#: messages.c:125
+msgid "SpoolJoin"
+msgstr ""
+
+# MSG_AUTO_HOME
+#: messages.c:11
+msgid "Auto home"
+msgstr "Auto zerowanie"
+
+# MSG_AUTOLOAD_FILAMENT c=18
+#: ultralcd.cpp:6716
+msgid "AutoLoad filament"
+msgstr "Autoladowanie fil."
+
+# MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
+#: ultralcd.cpp:4346
+msgid "Autoloading filament available only when filament sensor is turned on..."
+msgstr "Autoladowanie fil. dostepne tylko gdy czujnik filamentu jest wlaczony..."
+
+# MSG_AUTOLOADING_ENABLED c=20 r=4
+#: ultralcd.cpp:2730
+msgid "Autoloading filament is active, just press the knob and insert filament..."
+msgstr "Autoladowanie filamentu wlaczone, nacisnij pokretlo i wsun filament..."
+
+# MSG_SELFTEST_AXIS_LENGTH
+#: ultralcd.cpp:8073
+msgid "Axis length"
+msgstr "Dlugosc osi"
+
+# MSG_SELFTEST_AXIS
+#: ultralcd.cpp:8074
+msgid "Axis"
+msgstr "Os"
+
+# MSG_SELFTEST_BEDHEATER
+#: ultralcd.cpp:8031
+msgid "Bed / Heater"
+msgstr "Stol / Grzanie"
+
+# MSG_BED_DONE
+#: messages.c:15
+msgid "Bed done"
+msgstr "Stol OK"
+
+# MSG_BED_HEATING
+#: messages.c:16
+msgid "Bed Heating"
+msgstr "Grzanie stolu.."
+
+# MSG_BED_CORRECTION_MENU
+#: ultralcd.cpp:5802
+msgid "Bed level correct"
+msgstr "Korekta stolu"
+
+# MSG_BELTTEST c=17
+#: ultralcd.cpp:5782
+msgid "Belt test        "
+msgstr "Test paskow"
+
+# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
+#: messages.c:17
+msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
+msgstr "Kalibracja nieudana. Sensor nie aktywowal sie. Zanieczysz. dysza? Czekam na reset."
+
+# MSG_BRIGHT c=6
+#: messages.c:158
+msgid "Bright"
+msgstr "Jasny"
+
+# MSG_BRIGHTNESS c=18
+#: messages.c:154
+msgid "Brightness"
+msgstr "Jasnosc"
+
+# MSG_BED
+#: messages.c:14
+msgid "Bed"
+msgstr "Stol"
+
+# MSG_BELT_STATUS c=18
+#: 
+msgid "Belt status"
+msgstr "Stan paskow"
+
+# MSG_RECOVER_PRINT c=20 r=2
+#: messages.c:80
+msgid "Blackout occurred. Recover print?"
+msgstr "Wykryto zanik napiecia. Kontynowac?"
+
+# 
+#: ultralcd.cpp:8392
+msgid "Calibrating home"
+msgstr "Zerowanie osi"
+
+# MSG_CALIBRATE_BED
+#: ultralcd.cpp:5791
+msgid "Calibrate XYZ"
+msgstr "Kalibracja XYZ"
+
+# MSG_HOMEYZ
+#: messages.c:51
+msgid "Calibrate Z"
+msgstr "Kalibruj Z"
+
+# MSG_CALIBRATE_PINDA c=17 r=1
+#: ultralcd.cpp:4538
+msgid "Calibrate"
+msgstr "Kalibruj"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
+#: ultralcd.cpp:3392
+msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "Kalibracja XYZ. Przekrec pokretlo, aby przesunac os Z do gornych ogranicznikow. Nacisnij, by potwierdzic."
+
+# MSG_CALIBRATE_Z_AUTO c=20 r=2
+#: messages.c:20
+msgid "Calibrating Z"
+msgstr "Kalibruje Z"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
+#: ultralcd.cpp:3392
+msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "Kalibracja XYZ. Przekrec pokretlo, aby przesunac os Z do gornych ogranicznikow. Nacisnij, by potwierdzic."
+
+# MSG_HOMEYZ_DONE
+#: ultralcd.cpp:813
+msgid "Calibration done"
+msgstr "Kalibracja OK"
+
+# MSG_MENU_CALIBRATION
+#: messages.c:67
+msgid "Calibration"
+msgstr "Kalibracja"
+
+# 
+#: ultralcd.cpp:4716
+msgid "Cancel"
+msgstr "Anuluj"
+
+# MSG_SD_REMOVED
+#: ultralcd.cpp:8842
+msgid "Card removed"
+msgstr "Karta wyjeta"
+
+# MSG_NOT_COLOR
+#: ultralcd.cpp:2647
+msgid "Color not correct"
+msgstr "Kolor zanieczysz."
+
+# MSG_COOLDOWN
+#: messages.c:25
+msgid "Cooldown"
+msgstr "Chlodzenie"
+
+# 
+#: ultralcd.cpp:4471
+msgid "Copy selected language?"
+msgstr "Skopiowac wybrany jezyk?"
+
+# MSG_CRASHDETECT_ON
+#: messages.c:28
+msgid "Crash det."
+msgstr "Wykr.zderzen"
+
+# 
+#: ultralcd.cpp:4851
+msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
+msgstr "Wybierz filament do Kalibracji Pierwszej Warstwy i potwierdz w menu ekranowym."
+
+# MSG_CRASH_DETECTED c=20 r=1
+#: messages.c:27
+msgid "Crash detected."
+msgstr "Zderzenie wykryte"
+
+# 
+#: Marlin_main.cpp:657
+msgid "Crash detected. Resume print?"
+msgstr "Wykryto zderzenie. Wznowic druk?"
+
+# MSG_CRASH c=7
+#: messages.c:26
+msgid "Crash"
+msgstr "Zderzen"
+
+# MSG_CURRENT c=19 r=1
+#: ultralcd.cpp:5933
+msgid "Current"
+msgstr "Aktualne"
+
+# MSG_DATE c=17 r=1
+#: ultralcd.cpp:2112
+msgid "Date:"
+msgstr "Data:"
+
+# MSG_DISABLE_STEPPERS
+#: ultralcd.cpp:5683
+msgid "Disable steppers"
+msgstr "Wylacz silniki"
+
+# MSG_BABYSTEP_Z_NOT_SET c=20 r=12
+#: messages.c:13
+msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
+msgstr "Odleglosc dyszy od powierzchni druku nie jest skalibrowana. Postepuj zgodnie z instrukcja: rozdzial Wprowadzenie - Kalibracja pierwszej warstwy."
+
+# MSG_FS_CONTINUE c=5
+#: messages.c:152
+msgid "Cont."
+msgstr "Kont."
+
+# MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
+#: ultralcd.cpp:5026
+msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
+msgstr "Chcesz powtorzyc ostatni krok i ponownie ustawic odleglosc miedzy dysza a stolikiem?"
+
+# MSG_EXTRUDER_CORRECTION c=13
+#: ultralcd.cpp:5095
+msgid "E-correct:"
+msgstr "Korekcja-E:"
+
+# MSG_EJECT_FILAMENT c=16
+#: messages.c:58
+msgid "Eject filament"
+msgstr "Wysun filament"
+
+# MSG_EJECTING_FILAMENT c=20 r=1
+#: mmu.cpp:1414
+msgid "Ejecting filament"
+msgstr "Wysuwanie filamentu"
+
+# MSG_SELFTEST_ENDSTOP_NOTHIT c=20
+#: ultralcd.cpp:8049
+msgid "Endstop not hit"
+msgstr "Krancowka nie aktyw."
+
+# MSG_SELFTEST_ENDSTOP
+#: ultralcd.cpp:8044
+msgid "Endstop"
+msgstr "Krancowka"
+
+# MSG_SELFTEST_ENDSTOPS
+#: ultralcd.cpp:8035
+msgid "Endstops"
+msgstr "Krancowki"
+
+# MSG_STACK_ERROR c=20 r=4
+#: ultralcd.cpp:6753
+msgid "Error - static memory has been overwritten"
+msgstr "Blad - pamiec statyczna zostala nadpisana"
+
+# MSG_CUT_FILAMENT c=16
+#: messages.c:59
+msgid "Cut filament"
+msgstr "Ciecie filamentu"
+
+# MSG_CUTTER c=9
+#: messages.c:126
+msgid "Cutter"
+msgstr "Nozyk"
+
+#  c=18
+#: mmu.cpp:1386
+msgid "Cutting filament"
+msgstr "Obcinanie fil."
+
+# MSG_FSENS_NOT_RESPONDING c=20 r=4
+#: ultralcd.cpp:4359
+msgid "ERROR: Filament sensor is not responding, please check connection."
+msgstr "BLAD: Czujnik filamentu nie odpowiada, sprawdz polaczenie."
+
+# MSG_DIM c=6
+#: messages.c:159
+msgid "Dim"
+msgstr "Sciemn"
+
+# MSG_ERROR
+#: messages.c:29
+msgid "ERROR:"
+msgstr "BLAD:"
+
+# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
+#: ultralcd.cpp:8398
+msgid "Extruder fan:"
+msgstr "WentHotend:"
+
+# MSG_INFO_EXTRUDER c=18
+#: ultralcd.cpp:2153
+msgid "Extruder info"
+msgstr "Ekstruder - info"
+
+# MSG_EXTRUDER c=17
+#: messages.c:30
+msgid "Extruder"
+msgstr "Ekstruder"
+
+# 
+#: ultralcd.cpp:6740
+msgid "Fail stats MMU"
+msgstr "Bledy MMU"
+
+# MSG_FSENSOR_AUTOLOAD c=13
+#: messages.c:47
+msgid "F. autoload"
+msgstr "Autolad. fil."
+
+# 
+#: ultralcd.cpp:6737
+msgid "Fail stats"
+msgstr "Statystyki bledow"
+
+# MSG_FAN_SPEED c=14
+#: messages.c:34
+msgid "Fan speed"
+msgstr "Predkosc went."
+
+# MSG_SELFTEST_FAN c=20
+#: messages.c:89
+msgid "Fan test"
+msgstr "Test wentylatora"
+
+# MSG_FANS_CHECK c=13
+#: messages.c:31
+msgid "Fans check"
+msgstr "Sprawd.went."
+
+# MSG_FSENSOR
+#: messages.c:48
+msgid "Fil. sensor"
+msgstr "Czuj. filam."
+
+# MSG_FIL_RUNOUTS c=14
+#: 
+msgid "Fil. runouts  "
+msgstr "Konc.filamentu"
+
+# MSG_FILAMENT_CLEAN c=20 r=2
+#: messages.c:35
+msgid "Filament extruding & with correct color?"
+msgstr "Filament wychodzi z dyszy,kolor jest ok?"
+
+# MSG_NOT_LOADED c=19
+#: ultralcd.cpp:2646
+msgid "Filament not loaded"
+msgstr "Fil. nie zaladowany"
+
+# MSG_FILAMENT_SENSOR c=20
+#: messages.c:95
+msgid "Filament sensor"
+msgstr "Czujnik filamentu"
+
+# MSG_FILAMENT_USED c=19
+#: ultralcd.cpp:2795
+msgid "Filament used"
+msgstr "Uzyty filament"
+
+# MSG_PRINT_TIME c=19 r=1
+#: ultralcd.cpp:2796
+msgid "Print time"
+msgstr "Czas druku"
+
+# MSG_FS_ACTION c=10
+#: messages.c:151
+msgid "FS Action"
+msgstr "Akcja FS"
+
+# MSG_FILE_INCOMPLETE c=20 r=3
+#: ultralcd.cpp:8540
+msgid "File incomplete. Continue anyway?"
+msgstr "Plik niekompletny. Kontynowac?"
+
+# MSG_FINISHING_MOVEMENTS c=20
+#: messages.c:44
+msgid "Finishing movements"
+msgstr "Konczenie druku"
+
+# MSG_V2_CALIBRATION c=18
+#: messages.c:120
+msgid "First layer cal."
+msgstr "Kal. 1. warstwy"
+
+# MSG_WIZARD_SELFTEST c=20 r=8
+#: ultralcd.cpp:4947
+msgid "First, I will run the selftest to check most common assembly problems."
+msgstr "Najpierw wlacze selftest w celu sprawdzenia najczestszych problemow podczas montazu."
+
+# 
+#: mmu.cpp:726
+msgid "Fix the issue and then press button on MMU unit."
+msgstr "Rozwiaz problem i wcisnij przycisk na MMU."
+
+# MSG_FLOW
+#: ultralcd.cpp:6880
+msgid "Flow"
+msgstr "Przeplyw"
+
+# MSG_PRUSA3D_FORUM
+#: ultralcd.cpp:2105
+msgid "forum.prusa3d.com"
+msgstr ""
+
+# MSG_SELFTEST_COOLING_FAN c=20
+#: messages.c:86
+msgid "Front print fan?"
+msgstr "Przedni went. druku?"
+
+# MSG_BED_CORRECTION_FRONT c=14 r=1
+#: ultralcd.cpp:3190
+msgid "Front side[um]"
+msgstr "Przod [um]"
+
+# MSG_SELFTEST_FANS
+#: ultralcd.cpp:8079
+msgid "Front/left fans"
+msgstr "Przedni/lewy wentylator"
+
+# MSG_SELFTEST_HEATERTHERMISTOR
+#: ultralcd.cpp:8027
+msgid "Heater/Thermistor"
+msgstr "Grzalka/Termistor"
+
+# MSG_BED_HEATING_SAFETY_DISABLED
+#: Marlin_main.cpp:9616
+msgid "Heating disabled by safety timer."
+msgstr "Grzanie wylaczone przez wyl. czasowy"
+
+# MSG_HEATING_COMPLETE c=20
+#: messages.c:50
+msgid "Heating done."
+msgstr "Grzanie zakonczone"
+
+# MSG_HEATING
+#: messages.c:49
+msgid "Heating"
+msgstr "Grzanie..."
+
+# MSG_WIZARD_WELCOME c=20 r=7
+#: ultralcd.cpp:4926
+msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
+msgstr "Czesc, jestem Twoja drukarka Original Prusa i3. Czy potrzebujesz pomocy z ustawieniem?"
+
+# MSG_PRUSA3D_HOWTO
+#: ultralcd.cpp:2106
+msgid "howto.prusa3d.com"
+msgstr ""
+
+# MSG_FILAMENTCHANGE
+#: messages.c:41
+msgid "Change filament"
+msgstr "Wymiana filamentu"
+
+# MSG_CHANGE_SUCCESS
+#: ultralcd.cpp:2576
+msgid "Change success!"
+msgstr "Wymiana ok!"
+
+# MSG_CORRECTLY c=20
+#: ultralcd.cpp:2644
+msgid "Changed correctly?"
+msgstr "Wymiana ok?"
+
+# MSG_SELFTEST_CHECK_BED c=20
+#: messages.c:92
+msgid "Checking bed     "
+msgstr "Kontrola stolu"
+
+# MSG_SELFTEST_CHECK_ENDSTOPS c=20
+#: ultralcd.cpp:8381
+msgid "Checking endstops"
+msgstr "Kontrola krancowek"
+
+# MSG_SELFTEST_CHECK_HOTEND c=20
+#: ultralcd.cpp:8387
+msgid "Checking hotend  "
+msgstr "Kontrola hotendu"
+
+# MSG_SELFTEST_CHECK_FSENSOR c=20
+#: messages.c:93
+msgid "Checking sensors "
+msgstr "Kontrola czujnikow"
+
+# MSG_CHECKING_X c=20
+#: messages.c:22
+msgid "Checking X axis"
+msgstr "Kontrola osi X"
+
+# MSG_CHECKING_Y c=20
+#: messages.c:23
+msgid "Checking Y axis"
+msgstr "Kontrola osi Y"
+
+# MSG_SELFTEST_CHECK_Z c=20
+#: 
+msgid "Checking Z axis"
+msgstr "Kontrola osi Z"
+
+# MSG_CHOOSE_EXTRUDER c=20 r=1
+#: messages.c:52
+msgid "Choose extruder:"
+msgstr "Wybierz ekstruder:"
+
+# MSG_CHOOSE_FILAMENT c=20 r=1
+#: messages.c:53
+msgid "Choose filament:"
+msgstr "Wybierz filament:"
+
+# MSG_FILAMENT c=17 r=1
+#: messages.c:33
+msgid "Filament"
+msgstr ""
+
+# MSG_WIZARD_XYZ_CAL c=20 r=8
+#: ultralcd.cpp:4956
+msgid "I will run xyz calibration now. It will take approx. 12 mins."
+msgstr "Przeprowadze teraz kalibracje XYZ. Zajmie ok. 12 min."
+
+# MSG_WIZARD_Z_CAL c=20 r=8
+#: ultralcd.cpp:4964
+msgid "I will run z calibration now."
+msgstr "Przeprowadze kalibracje Z."
+
+# MSG_WATCH
+#: messages.c:114
+msgid "Info screen"
+msgstr "Ekran informacyjny"
+
+# MSG_INSERT_FILAMENT c=20
+#: ultralcd.cpp:2564
+msgid "Insert filament"
+msgstr "Wprowadz filament"
+
+# MSG_FILAMENT_LOADED c=20 r=2
+#: messages.c:36
+msgid "Is filament loaded?"
+msgstr "Filament jest zaladowany?"
+
+# MSG_STEEL_SHEET_CHECK c=20 r=2
+#: messages.c:107
+msgid "Is steel sheet on heatbed?"
+msgstr "Czy plyta stal. jest na podgrzew. stole?"
+
+# MSG_LAST_PRINT_FAILURES c=20
+#: messages.c:55
+msgid "Last print failures"
+msgstr "Ostatnie bledy druku"
+
+# 
+#: ultralcd.cpp:5034
+msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
+msgstr "Jesli masz dodatkowe plyty stalowe, to skalibruj ich ustawienia w menu Ustawienia - Ustawienia HW - Plyty stalowe."
+
+# MSG_LAST_PRINT c=18
+#: messages.c:54
+msgid "Last print"
+msgstr "Ost. wydruk"
+
+# MSG_SELFTEST_EXTRUDER_FAN c=20
+#: messages.c:87
+msgid "Left hotend fan?"
+msgstr "Lewy went hotendu?"
+
+# 
+#: ultralcd.cpp:2919
+msgid "Left"
+msgstr "Lewa"
+
+# MSG_BED_CORRECTION_LEFT c=14 r=1
+#: ultralcd.cpp:3188
+msgid "Left side [um]"
+msgstr "Lewo [um]"
+
+# 
+#: ultralcd.cpp:5706
+msgid "Lin. correction"
+msgstr "Korekcja liniowa"
+
+# MSG_BABYSTEP_Z
+#: messages.c:12
+msgid "Live adjust Z"
+msgstr "Ustaw. Live Z"
+
+#  c=20 r=6
+#: ultralcd.cpp:7280
+msgid "Insert the filament (do not load it) into the extruder and then press the knob."
+msgstr "Wsun filament (nie uzywaj funkcji ladowania) do ekstrudera i nacisnij pokretlo."
+
+# MSG_LOAD_FILAMENT c=17
+#: messages.c:56
+msgid "Load filament"
+msgstr "Ladowanie fil."
+
+# MSG_LOADING_COLOR
+#: ultralcd.cpp:2598
+msgid "Loading color"
+msgstr "Czyszcz. koloru"
+
+# MSG_LOADING_FILAMENT c=20
+#: messages.c:57
+msgid "Loading filament"
+msgstr "Laduje filament"
+
+# MSG_LOOSE_PULLEY c=20 r=1
+#: ultralcd.cpp:8067
+msgid "Loose pulley"
+msgstr "Luzne kolo pasowe"
+
+# 
+#: ultralcd.cpp:6699
+msgid "Load to nozzle"
+msgstr "Zaladuj do dyszy"
+
+# MSG_M117_V2_CALIBRATION c=25
+#: messages.c:60
+msgid "M117 First layer cal."
+msgstr "M117 Kal. 1. warstwy"
+
+# MSG_MAIN
+#: messages.c:61
+msgid "Main"
+msgstr "Menu glowne"
+
+# MSG_BL_HIGH c=12
+#: messages.c:155
+msgid "Level Bright"
+msgstr "Poziom jasn."
+
+# MSG_BL_LOW c=12
+#: messages.c:156
+msgid "Level Dimmed"
+msgstr "Poziom ciem."
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
+#: messages.c:65
+msgid "Measuring reference height of calibration point"
+msgstr "Okreslam wysokosc odniesienia punktu kalibracyjnego"
+
+# MSG_MESH_BED_LEVELING c=18
+#: messages.c:148
+msgid "Mesh Bed Leveling"
+msgstr "Poziomowanie stolu"
+
+# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
+#: mmu.cpp:764
+msgid "MMU OK. Resuming position..."
+msgstr "MMU OK. Wznawianie pozycji."
+
+# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
+#: mmu.cpp:757
+msgid "MMU OK. Resuming temperature..."
+msgstr "MMU OK. Wznawiam nagrzewanie..."
+
+# 
+#: ultralcd.cpp:2960
+msgid "Measured skew"
+msgstr "Zmierzony skos"
+
+# MSG_MMU_FAILS c=14
+#: messages.c:68
+msgid "MMU fails"
+msgstr "Bledy MMU"
+
+# 
+#: mmu.cpp:1586
+msgid "MMU load failed     "
+msgstr "Blad ladowania MMU"
+
+# MSG_MMU_LOAD_FAILS c=14
+#: messages.c:69
+msgid "MMU load fails"
+msgstr "Bledy ladow. MMU"
+
+# MSG_MMU_OK_RESUMING c=20 r=4
+#: mmu.cpp:775
+msgid "MMU OK. Resuming..."
+msgstr "MMU OK. Wznawianie..."
+
+# MSG_MODE
+#: messages.c:101
+msgid "Mode"
+msgstr "Tryb"
+
+#  c=20 r=3
+#: Marlin_main.cpp:934
+msgid "MK3 firmware detected on MK3S printer"
+msgstr "Wykryto firmware MK3 w drukarce MK3S"
+
+# MSG_NORMAL
+#: messages.c:105
+msgid "Normal"
+msgstr "Normalni"
+
+# MSG_SILENT
+#: messages.c:104
+msgid "Silent"
+msgstr "Cichy"
+
+# 
+#: mmu.cpp:721
+msgid "MMU needs user attention."
+msgstr "MMU wymaga uwagi uzytkownika."
+
+# 
+#: ultralcd.cpp:1701
+msgid "MMU power fails"
+msgstr "Zaniki zasil. MMU"
+
+# MSG_STEALTH
+#: messages.c:106
+msgid "Stealth"
+msgstr "Cichy"
+
+# MSG_AUTO_POWER
+#: messages.c:103
+msgid "Auto power"
+msgstr "Automatycz"
+
+# MSG_HIGH_POWER
+#: messages.c:102
+msgid "High power"
+msgstr "Wysoka wyd."
+
+# 
+#: ultralcd.cpp:2124
+msgid "MMU2 connected"
+msgstr "MMU podlaczone"
+
+# MSG_SELFTEST_MOTOR
+#: messages.c:94
+msgid "Motor"
+msgstr "Silnik"
+
+# MSG_MOVE_AXIS
+#: ultralcd.cpp:5681
+msgid "Move axis"
+msgstr "Ruch osi"
+
+# MSG_MOVE_X
+#: ultralcd.cpp:4262
+msgid "Move X"
+msgstr "Ruch osi X"
+
+# MSG_MOVE_Y
+#: ultralcd.cpp:4263
+msgid "Move Y"
+msgstr "Ruch osi Y"
+
+# MSG_MOVE_Z
+#: ultralcd.cpp:4264
+msgid "Move Z"
+msgstr "Ruch osi Z"
+
+# MSG_NO_MOVE
+#: Marlin_main.cpp:5719
+msgid "No move."
+msgstr "Brak ruchu."
+
+# MSG_NO_CARD
+#: ultralcd.cpp:6673
+msgid "No SD card"
+msgstr "Brak karty SD"
+
+# MSG_NA
+#: messages.c:124
+msgid "N/A"
+msgstr "N/D"
+
+# MSG_NO
+#: messages.c:70
+msgid "No"
+msgstr "Nie"
+
+# MSG_SELFTEST_NOTCONNECTED
+#: ultralcd.cpp:8028
+msgid "Not connected"
+msgstr "Nie podlaczono "
+
+# 
+#: util.cpp:293
+msgid "New firmware version available:"
+msgstr "Dostepna nowa wersja firmware:"
+
+# MSG_SELFTEST_FAN_NO c=19
+#: messages.c:90
+msgid "Not spinning"
+msgstr "Nie kreci sie"
+
+# MSG_WIZARD_V2_CAL c=20 r=8
+#: ultralcd.cpp:4847
+msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
+msgstr "Kalibruje odleglosc miedzy koncowka dyszy a powierzchnia druku."
+
+# MSG_WIZARD_WILL_PREHEAT c=20 r=4
+#: ultralcd.cpp:4972
+msgid "Now I will preheat nozzle for PLA."
+msgstr "Nagrzewam dysze dla PLA."
+
+# MSG_NOZZLE
+#: messages.c:71
+msgid "Nozzle"
+msgstr "Dysza"
+
+# MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
+#: Marlin_main.cpp:1581
+msgid "Old settings found. Default PID, Esteps etc. will be set."
+msgstr "Znaleziono stare ustawienia. Zostana przywrocone domyslne ust. PID, Esteps, itp."
+
+# 
+#: ultralcd.cpp:4963
+msgid "Now remove the test print from steel sheet."
+msgstr "Teraz zdejmij wydruk testowy ze stolu."
+
+# 
+#: ultralcd.cpp:1600
+msgid "Nozzle FAN"
+msgstr "WentHotend"
+
+# MSG_PAUSE_PRINT
+#: ultralcd.cpp:6637
+msgid "Pause print"
+msgstr "Wstrzymanie wydruku"
+
+# MSG_PID_RUNNING c=20 r=1
+#: ultralcd.cpp:1485
+msgid "PID cal.           "
+msgstr "Kalibracja PID"
+
+# MSG_PID_FINISHED c=20 r=1
+#: ultralcd.cpp:1491
+msgid "PID cal. finished"
+msgstr "Kal. PID zakonczona"
+
+# MSG_PID_EXTRUDER c=17 r=1
+#: ultralcd.cpp:5803
+msgid "PID calibration"
+msgstr "Kalibracja PID"
+
+# MSG_PINDA_PREHEAT c=20 r=1
+#: ultralcd.cpp:843
+msgid "PINDA Heating"
+msgstr "Grzanie sondy PINDA"
+
+# MSG_PAPER c=20 r=10
+#: messages.c:72
+msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
+msgstr "Umiesc kartke papieru na stole roboczym i podczas pomiaru pierwszych 4 punktow. Jesli dysza zahaczy o papier, natychmiast wylacz drukarke."
+
+# MSG_WIZARD_CLEAN_HEATBED c=20 r=8
+#: ultralcd.cpp:5029
+msgid "Please clean heatbed and then press the knob."
+msgstr "Oczysc powierzchnie druku i nacisnij pokretlo."
+
+# MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
+#: messages.c:24
+msgid "Please clean the nozzle for calibration. Click when done."
+msgstr "Dla prawidlowej kalibracji nalezy oczyscic dysze. Potwierdz guzikiem."
+
+# MSG_SELFTEST_PLEASECHECK
+#: ultralcd.cpp:8022
+msgid "Please check :"
+msgstr "Sprawdz :"
+
+# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
+#: messages.c:115
+msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
+msgstr "Przeczytaj nasz Podrecznik druku 3D aby naprawic problem. Potem wznow Asystenta przez restart drukarki."
+
+# MSG_CHECK_IDLER c=20 r=4
+#: Marlin_main.cpp:3317
+msgid "Please open idler and remove filament manually."
+msgstr "Prosze odciagnac dzwignie dociskowa ekstrudera i recznie usunac filament."
+
+# MSG_PLACE_STEEL_SHEET c=20 r=4
+#: messages.c:73
+msgid "Please place steel sheet on heatbed."
+msgstr "Prosze umiescic plyte stalowa na stole podgrzewanym."
+
+# MSG_PRESS_TO_UNLOAD c=20 r=4
+#: messages.c:77
+msgid "Please press the knob to unload filament"
+msgstr "Nacisnij pokretlo aby rozladowac filament"
+
+# MSG_PULL_OUT_FILAMENT c=20 r=4
+#: messages.c:79
+msgid "Please pull out filament immediately"
+msgstr "Wyciagnij filament teraz"
+
+# MSG_EJECT_REMOVE c=20 r=4
+#: mmu.cpp:1420
+msgid "Please remove filament and then press the knob."
+msgstr "Wyciagnij filament i wcisnij pokretlo."
+
+# MSG_REMOVE_STEEL_SHEET c=20 r=4
+#: messages.c:82
+msgid "Please remove steel sheet from heatbed."
+msgstr "Prosze zdjac plyte stalowa z podgrzewanego stolu."
+
+# MSG_RUN_XYZ c=20 r=4
+#: Marlin_main.cpp:4766
+msgid "Please run XYZ calibration first."
+msgstr "Prosze najpierw uruchomic kalibracje XYZ"
+
+# MSG_UPDATE_MMU2_FW c=20 r=4
+#: mmu.cpp:1340
+msgid "Please update firmware in your MMU2. Waiting for reset."
+msgstr "Prosze zaktualizowac Firmware MMU2. Czekam na reset."
+
+# MSG_PLEASE_WAIT c=20
+#: messages.c:74
+msgid "Please wait"
+msgstr "Prosze czekac"
+
+# 
+#: ultralcd.cpp:4962
+msgid "Please remove shipping helpers first."
+msgstr "Najpierw usun zabezpieczenia transportowe"
+
+# MSG_PREHEAT_NOZZLE c=20
+#: messages.c:76
+msgid "Preheat the nozzle!"
+msgstr "Nagrzej dysze!"
+
+# MSG_PREHEAT
+#: ultralcd.cpp:6615
+msgid "Preheat"
+msgstr "Grzanie"
+
+# MSG_WIZARD_HEATING c=20 r=3
+#: messages.c:117
+msgid "Preheating nozzle. Please wait."
+msgstr "Nagrzewanie dyszy. Prosze czekac."
+
+#  c=14
+#: ultralcd.cpp:1905
+msgid "PINDA"
+msgstr ""
+
+# 
+#: util.cpp:297
+msgid "Please upgrade."
+msgstr "Prosze zaktualizowac."
+
+# MSG_PRESS_TO_PREHEAT c=20 r=4
+#: Marlin_main.cpp:11718
+msgid "Press knob to preheat nozzle and continue."
+msgstr "Wcisnij pokretlo aby rozgrzac dysze i kontynuowac."
+
+# MSG_FS_PAUSE c=5
+#: fsensor.cpp:728
+msgid "Pause"
+msgstr "Pauza"
+
+# MSG_POWER_FAILURES c=14
+#: messages.c:75
+msgid "Power failures"
+msgstr "Zaniki zasilania"
+
+# MSG_PRINT_ABORTED c=20
+#: messages.c:78
+msgid "Print aborted"
+msgstr "Druk przerwany"
+
+#  c=20
+#: ultralcd.cpp:2390
+msgid "Preheating to load"
+msgstr "Nagrzew.do ladowania"
+
+#  c=20
+#: ultralcd.cpp:2395
+msgid "Preheating to unload"
+msgstr "Nagrzew. do rozlad."
+
+# MSG_SELFTEST_PRINT_FAN_SPEED c=18
+#: ultralcd.cpp:8401
+msgid "Print fan:"
+msgstr "WentWydruk:"
+
+# MSG_CARD_MENU
+#: messages.c:21
+msgid "Print from SD"
+msgstr "Druk z karty SD"
+
+# 
+#: ultralcd.cpp:2231
+msgid "Press the knob"
+msgstr "Wcisnij pokretlo"
+
+# MSG_PRINT_PAUSED c=20 r=1
+#: ultralcd.cpp:1065
+msgid "Print paused"
+msgstr "Druk wstrzymany"
+
+# 
+#: mmu.cpp:725
+msgid "Press the knob to resume nozzle temperature."
+msgstr "Wcisnij pokretlo aby wznowic podgrzewanie dyszy."
+
+# MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
+#: messages.c:45
+msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
+msgstr "Drukarka nie byla jeszcze kalibrowana. Kieruj sie Samouczkiem: rozdzial Pierwsze Kroki, sekcja Konfiguracja przed drukowaniem."
+
+# 
+#: ultralcd.cpp:1601
+msgid "Print FAN"
+msgstr "WentWydruk"
+
+# 
+#: ultralcd.cpp:4827
+msgid "Please insert filament into the extruder, then press the knob to load it."
+msgstr "Wsun filament do ekstrudera i nacisnij pokretlo, aby go zaladowac."
+
+# 
+#: ultralcd.cpp:4822
+msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
+msgstr "Wsun filament do pierwszego kanalu w MMU2 i nacisnij pokretlo, aby go zaladowac."
+
+# 
+#: ultralcd.cpp:4744
+msgid "Please load filament first."
+msgstr "Najpierw zaladuj filament."
+
+# MSG_PRUSA3D
+#: ultralcd.cpp:2104
+msgid "prusa3d.com"
+msgstr ""
+
+# MSG_BED_CORRECTION_REAR c=14 r=1
+#: ultralcd.cpp:3191
+msgid "Rear side [um]"
+msgstr "Tyl [um]"
+
+#  c=20 r=4
+#: ultralcd.cpp:7304
+msgid "Please unload the filament first, then repeat this action."
+msgstr "Najpierw rozladuj filament, nastepnie powtorz czynnosc."
+
+#  c=20 r=4
+#: ultralcd.cpp:7307
+msgid "Please check the IR sensor connection, unload filament if present."
+msgstr "Sprawdz polaczenie czujnika IR, rozladuj filament, jesli zaladowany."
+
+# MSG_RECOVERING_PRINT c=20
+#: Marlin_main.cpp:11076
+msgid "Recovering print    "
+msgstr "Wznawianie wydruku  "
+
+# MSG_REMOVE_OLD_FILAMENT c=20 r=5
+#: mmu.cpp:832
+msgid "Remove old filament and press the knob to start loading new filament."
+msgstr "Wyciagnij poprzedni filament i nacisnij pokretlo aby zaladowac nowy."
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3S OK."
+msgstr ""
+
+# MSG_CALIBRATE_BED_RESET
+#: ultralcd.cpp:5808
+msgid "Reset XYZ calibr."
+msgstr "Reset kalibr. XYZ"
+
+# MSG_RESET c=14
+#: messages.c:83
+msgid "Reset"
+msgstr ""
+
+# MSG_RESUME_PRINT c=18
+#: messages.c:84
+msgid "Resume print"
+msgstr "Wznowic wydruk"
+
+# MSG_RESUMING_PRINT c=20
+#: messages.c:85
+msgid "Resuming print"
+msgstr "Wznawianie druku"
+
+# MSG_BED_CORRECTION_RIGHT c=14 r=1
+#: ultralcd.cpp:3189
+msgid "Right side[um]"
+msgstr "Prawo [um]"
+
+# MSG_RPI_PORT
+#: messages.c:142
+msgid "RPi port"
+msgstr "Port RPi"
+
+# MSG_WIZARD_RERUN c=20 r=7
+#: ultralcd.cpp:4765
+msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
+msgstr "Wlaczenie Asystenta usunie obecne dane kalibracyjne i zacznie od poczatku. Kontynuowac?"
+
+# MSG_SD_CARD
+#: messages.c:137
+msgid "SD card"
+msgstr "Karta SD"
+
+# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
+#: messages.c:138
+msgid "FlashAir"
+msgstr ""
+
+# 
+#: ultralcd.cpp:2920
+msgid "Right"
+msgstr "Prawa"
+
+# MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
+#: messages.c:42
+msgid "Searching bed calibration point"
+msgstr "Szukam punktu kalibracyjnego na stole"
+
+# MSG_LANGUAGE_SELECT
+#: ultralcd.cpp:5721
+msgid "Select language"
+msgstr "Wybor jezyka"
+
+# MSG_SELFTEST_OK
+#: ultralcd.cpp:7579
+msgid "Self test OK"
+msgstr "Selftest OK"
+
+# MSG_SELFTEST_START c=20
+#: ultralcd.cpp:7347
+msgid "Self test start  "
+msgstr "Selftest startuje"
+
+# MSG_SELFTEST
+#: ultralcd.cpp:5784
+msgid "Selftest         "
+msgstr "Selftest "
+
+# MSG_SELFTEST_ERROR
+#: ultralcd.cpp:8021
+msgid "Selftest error !"
+msgstr "Blad selftest!"
+
+# MSG_SELFTEST_FAILED c=20
+#: messages.c:88
+msgid "Selftest failed  "
+msgstr "Selftest nieudany"
+
+# MSG_FORCE_SELFTEST c=20 r=8
+#: Marlin_main.cpp:1613
+msgid "Selftest will be run to calibrate accurate sensorless rehoming."
+msgstr "Zostanie uruchomiony Selftest aby dokladnie skalibrowac punkt bazowy bez krancowek"
+
+# 
+#: ultralcd.cpp:5003
+msgid "Select nozzle preheat temperature which matches your material."
+msgstr "Wybierz temperature grzania dyszy odpowiednia dla materialu."
+
+# MSG_SET_TEMPERATURE c=19 r=1
+#: ultralcd.cpp:3209
+msgid "Set temperature:"
+msgstr "Ustaw temperature:"
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5 OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5S OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3 OK."
+msgstr ""
+
+# MSG_SETTINGS
+#: messages.c:97
+msgid "Settings"
+msgstr "Ustawienia"
+
+# MSG_SHOW_END_STOPS c=18
+#: ultralcd.cpp:5805
+msgid "Show end stops"
+msgstr "Pokaz krancowki"
+
+# 
+#: ultralcd.cpp:3915
+msgid "Sensor state"
+msgstr "Stan czujnikow"
+
+# MSG_FILE_CNT c=20 r=6
+#: cardreader.cpp:739
+msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
+msgstr "Niektore pliki nie zostana posortowane. Max. liczba plikow w 1 folderze = 100."
+
+# MSG_SORT
+#: messages.c:139
+msgid "Sort"
+msgstr "Sortowanie"
+
+# MSG_NONE
+#: messages.c:127
+msgid "None"
+msgstr "Brak"
+
+# MSG_SORT_TIME
+#: messages.c:140
+msgid "Time"
+msgstr "Czas"
+
+# 
+#: ultralcd.cpp:2963
+msgid "Severe skew:"
+msgstr "Znaczny skos:"
+
+# MSG_SORT_ALPHA
+#: messages.c:141
+msgid "Alphabet"
+msgstr "Alfab"
+
+# MSG_SORTING c=20 r=1
+#: cardreader.cpp:746
+msgid "Sorting files"
+msgstr "Sortowanie plikow"
+
+# MSG_SOUND_LOUD
+#: messages.c:144
+msgid "Loud"
+msgstr "Glosny"
+
+# 
+#: ultralcd.cpp:2962
+msgid "Slight skew:"
+msgstr "Lekki skos:"
+
+# MSG_SOUND
+#: messages.c:143
+msgid "Sound"
+msgstr "Dzwiek"
+
+#  c=7
+#: ultralcd.cpp:1768
+msgid "Runouts"
+msgstr "Konce f"
+
+# 
+#: Marlin_main.cpp:5280
+msgid "Some problem encountered, Z-leveling enforced ..."
+msgstr "Wykryto problem, wymuszono poziomowanie osi Z."
+
+# MSG_SOUND_ONCE
+#: messages.c:145
+msgid "Once"
+msgstr "1-raz"
+
+# MSG_SPEED
+#: ultralcd.cpp:6874
+msgid "Speed"
+msgstr "Predkosc"
+
+# MSG_SELFTEST_FAN_YES c=19
+#: messages.c:91
+msgid "Spinning"
+msgstr "Kreci sie"
+
+# MSG_TEMP_CAL_WARNING c=20 r=4
+#: Marlin_main.cpp:4779
+msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
+msgstr "Potrzebna jest stabilna temperatura otoczenia 21-26C i stabilne podloze."
+
+# MSG_STATISTICS
+#: ultralcd.cpp:6733
+msgid "Statistics  "
+msgstr "Statystyki"
+
+# MSG_STOP_PRINT
+#: messages.c:108
+msgid "Stop print"
+msgstr "Przerwanie druku"
+
+# MSG_STOPPED
+#: messages.c:109
+msgid "STOPPED. "
+msgstr "ZATRZYMANO."
+
+# MSG_SUPPORT
+#: ultralcd.cpp:6742
+msgid "Support"
+msgstr "Wsparcie"
+
+# MSG_SELFTEST_SWAPPED
+#: ultralcd.cpp:8080
+msgid "Swapped"
+msgstr "Zamieniono"
+
+# 
+#: ultralcd.cpp:4715
+msgid "Select filament:"
+msgstr "Wybierz filament:"
+
+# MSG_TEMP_CALIBRATION c=14
+#: messages.c:110
+msgid "Temp. cal."
+msgstr "Kalib. temp."
+
+# 
+#: ultralcd.cpp:4856
+msgid "Select temperature which matches your material."
+msgstr "Wybierz temperature, ktora odpowiada Twojemu filamentowi."
+
+# MSG_CALIBRATION_PINDA_MENU c=17 r=1
+#: ultralcd.cpp:5816
+msgid "Temp. calibration"
+msgstr "Kalibracja temp."
+
+# MSG_TEMP_CAL_FAILED c=20 r=8
+#: ultralcd.cpp:3845
+msgid "Temperature calibration failed"
+msgstr "Kalibracja temperaturowa nieudana"
+
+# MSG_TEMP_CALIBRATION_DONE c=20 r=12
+#: messages.c:111
+msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
+msgstr "Kalibracja temperaturowa zakonczona i wlaczona. Moze byc wylaczona z menu Ustawienia -> Kalibracja temp."
+
+#  c=20 r=3
+#: ultralcd.cpp:7311
+msgid "Sensor verified, remove the filament now."
+msgstr "Czujnik sprawdzony, wyciagnij filament."
+
+# MSG_TEMPERATURE
+#: ultralcd.cpp:5679
+msgid "Temperature"
+msgstr "Temperatura"
+
+# MSG_MENU_TEMPERATURES c=15 r=1
+#: ultralcd.cpp:2160
+msgid "Temperatures"
+msgstr "Temperatury"
+
+# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
+#: messages.c:46
+msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
+msgstr "Musimy przeprowadzic kalibracje Z. Kieruj sie Samouczkiem: rozdzial Pierwsze Kroki, sekcja Kalibracja."
+
+# 
+#: ultralcd.cpp:2817
+msgid "Total filament"
+msgstr "Zuzycie filamentu"
+
+# 
+#: ultralcd.cpp:2818
+msgid "Total print time"
+msgstr "Laczny czas druku"
+
+# MSG_TUNE
+#: ultralcd.cpp:6612
+msgid "Tune"
+msgstr "Strojenie"
+
+# 
+#: 
+msgid "Unload"
+msgstr "Rozladuj"
+
+# MSG_TOTAL_FAILURES c=20
+#: messages.c:99
+msgid "Total failures"
+msgstr "Suma bledow"
+
+# 
+#: ultralcd.cpp:2238
+msgid "to load filament"
+msgstr "aby zaladow. fil."
+
+# 
+#: ultralcd.cpp:2242
+msgid "to unload filament"
+msgstr "aby rozlad. filament"
+
+# MSG_UNLOAD_FILAMENT c=17
+#: messages.c:112
+msgid "Unload filament"
+msgstr "Rozladowanie fil."
+
+# MSG_UNLOADING_FILAMENT c=20 r=1
+#: messages.c:113
+msgid "Unloading filament"
+msgstr "Rozladowuje filament"
+
+# MSG_TOTAL c=6
+#: messages.c:98
+msgid "Total"
+msgstr "Suma"
+
+# MSG_USED c=19 r=1
+#: ultralcd.cpp:5932
+msgid "Used during print"
+msgstr "Uzyte podczas druku"
+
+# MSG_MENU_VOLTAGES c=15 r=1
+#: ultralcd.cpp:2163
+msgid "Voltages"
+msgstr "Napiecia"
+
+# 
+#: ultralcd.cpp:2132
+msgid "unknown"
+msgstr "nieznane"
+
+# MSG_USERWAIT
+#: Marlin_main.cpp:5689
+msgid "Wait for user..."
+msgstr "Czekam na uzytkownika..."
+
+# MSG_WAITING_TEMP c=20 r=3
+#: ultralcd.cpp:3357
+msgid "Waiting for nozzle and bed cooling"
+msgstr "Oczekiwanie na wychlodzenie dyszy i stolu"
+
+# MSG_WAITING_TEMP_PINDA c=20 r=3
+#: ultralcd.cpp:3318
+msgid "Waiting for PINDA probe cooling"
+msgstr "Czekam az spadnie temp. sondy PINDA"
+
+# 
+#: 
+msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU tube. Use eject if it is hidden in tube."
+msgstr "Uzyj opcji Rozladuj jesli filament wystaje z tylnej rurki MMU. Uzyj opcji Wysun jesli wciaz jest w srodku."
+
+# MSG_CHANGED_BOTH c=20 r=4
+#: Marlin_main.cpp:1573
+msgid "Warning: both printer type and motherboard type changed."
+msgstr "Ostrzezenie: typ drukarki i plyta glowna ulegly zmianie."
+
+# MSG_CHANGED_MOTHERBOARD c=20 r=4
+#: Marlin_main.cpp:1565
+msgid "Warning: motherboard type changed."
+msgstr "Ostrzezenie: plyta glowna ulegla zmianie."
+
+# MSG_CHANGED_PRINTER c=20 r=4
+#: Marlin_main.cpp:1569
+msgid "Warning: printer type changed."
+msgstr "Ostrzezenie: rodzaj drukarki ulegl zmianie"
+
+# MSG_UNLOAD_SUCCESSFUL c=20 r=2
+#: Marlin_main.cpp:3308
+msgid "Was filament unload successful?"
+msgstr "Rozladowanie fil. ok?"
+
+# MSG_SELFTEST_WIRINGERROR
+#: messages.c:96
+msgid "Wiring error"
+msgstr "Blad polaczenia"
+
+# MSG_WIZARD c=17 r=1
+#: ultralcd.cpp:5775
+msgid "Wizard"
+msgstr "Asystent"
+
+# MSG_XYZ_DETAILS c=18
+#: ultralcd.cpp:2152
+msgid "XYZ cal. details"
+msgstr "Szczegoly kal. XYZ"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
+#: messages.c:18
+msgid "XYZ calibration failed. Please consult the manual."
+msgstr "Kalibracja XYZ nieudana. Sprawdz przyczyny i rozwiazania w instrukcji."
+
+# MSG_YES
+#: messages.c:119
+msgid "Yes"
+msgstr "Tak"
+
+# MSG_WIZARD_QUIT c=20 r=8
+#: messages.c:118
+msgid "You can always resume the Wizard from Calibration -> Wizard."
+msgstr "Zawsze mozesz uruchomic Asystenta ponownie przez Kalibracja -> Asystent."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
+#: ultralcd.cpp:3817
+msgid "XYZ calibration all right. Skew will be corrected automatically."
+msgstr "Kalibracja XYZ pomyslna. Skos bedzie automatycznie korygowany."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
+#: ultralcd.cpp:3814
+msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
+msgstr "Kalibracja XYZ prawidlowa. Osie X/Y lekko skosne. Dobra robota!"
+
+# MSG_TIMEOUT c=12
+#: messages.c:157
+msgid "Timeout"
+msgstr "Wyl. czas."
+
+# MSG_X_CORRECTION c=13
+#: ultralcd.cpp:5091
+msgid "X-correct:"
+msgstr "Korekcja-X:"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
+#: ultralcd.cpp:3811
+msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
+msgstr "Kalibracja XYZ ok. Osie X/Y sa prostopadle. Gratulacje!"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
+#: ultralcd.cpp:3795
+msgid "XYZ calibration compromised. Front calibration points not reachable."
+msgstr "Kalibr. XYZ niedokladna. Przednie punkty kalibr. nieosiagalne."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
+#: ultralcd.cpp:3798
+msgid "XYZ calibration compromised. Right front calibration point not reachable."
+msgstr "Kalibracja XYZ niedokladna. Prawy przedni punkt nieosiagalny."
+
+# MSG_LOAD_ALL c=17
+#: ultralcd.cpp:6171
+msgid "Load all"
+msgstr "Zalad. wszystkie"
+
+# 
+#: ultralcd.cpp:3777
+msgid "XYZ calibration failed. Bed calibration point was not found."
+msgstr "Kalibracja XYZ nieudana. Nie znaleziono punktow kalibracyjnych."
+
+# 
+#: ultralcd.cpp:3783
+msgid "XYZ calibration failed. Front calibration points not reachable."
+msgstr "Kalibr. XYZ nieudana. Przednie punkty kalibr. nieosiagalne. Nalezy poprawic montaz drukarki."
+
+# 
+#: ultralcd.cpp:3786
+msgid "XYZ calibration failed. Right front calibration point not reachable."
+msgstr "Kalibr. XYZ nieudana. Prawy przedni punkt nieosiagalny. Nalezy poprawic montaz drukarki."
+
+# 
+#: ultralcd.cpp:2917
+msgid "Y distance from min"
+msgstr "Dystans od 0 w osi Y"
+
+# 
+#: ultralcd.cpp:4859
+msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
+msgstr "Drukarka zacznie drukowanie linii w ksztalcie zygzaka. Ustaw optymalna wysokosc obracajac pokretlo. Porownaj z ilustracjami w Podreczniku (rozdzial Kalibracja)."
+
+#  c=20 r=5
+#: ultralcd.cpp:7315
+msgid "Verification failed, remove the filament and try again."
+msgstr "Niepowodzenie sprawdzenia, wyciagnij filament i sprobuj ponownie."
+
+# MSG_Y_CORRECTION c=13
+#: ultralcd.cpp:5092
+msgid "Y-correct:"
+msgstr "Korekcja-Y:"
+
+# MSG_OFF
+#: messages.c:122
+msgid "Off"
+msgstr "Wyl"
+
+# MSG_ON
+#: messages.c:123
+msgid "On"
+msgstr "Wl"
+
+# 
+#: messages.c:62
+msgid "Back"
+msgstr "Wstecz"
+
+# 
+#: ultralcd.cpp:5647
+msgid "Checks"
+msgstr "Testy"
+
+# 
+#: ultralcd.cpp:8090
+msgid "False triggering"
+msgstr "Falszywy alarm"
+
+# 
+#: ultralcd.cpp:3920
+msgid "FINDA:"
+msgstr ""
+
+# MSG_FIRMWARE
+#: language.h:24
+msgid "Firmware"
+msgstr ""
+
+# MSG_STRICT
+#: messages.c:129
+msgid "Strict"
+msgstr "Restr."
+
+# MSG_WARN
+#: messages.c:128
+msgid "Warn"
+msgstr "Ostrzez"
+
+# MSG_HW_SETUP c=18
+#: messages.c:100
+msgid "HW Setup"
+msgstr "Ustawienia HW"
+
+# 
+#: ultralcd.cpp:3924
+msgid "IR:"
+msgstr ""
+
+# MSG_MAGNETS_COMP
+#: messages.c:150
+msgid "Magnets comp."
+msgstr "Kor. magnesow"
+
+# MSG_MESH
+#: messages.c:147
+msgid "Mesh"
+msgstr "Siatka"
+
+# 
+#: Marlin_main.cpp:927
+msgid "MK3S firmware detected on MK3 printer"
+msgstr "Wykryto firmware MK3S w drukarce MK3"
+
+# MSG_MMU_MODE
+#: messages.c:136
+msgid "MMU Mode"
+msgstr "Tryb MMU"
+
+# 
+#: ultralcd.cpp:4395
+msgid "Mode change in progress ..."
+msgstr "Trwa zmiana trybu..."
+
+# MSG_MODEL
+#: messages.c:130
+msgid "Model"
+msgstr ""
+
+# MSG_NOZZLE_DIAMETER
+#: messages.c:135
+msgid "Nozzle d."
+msgstr "Sr. dyszy"
+
+# 
+#: util.cpp:514
+msgid "G-code sliced for a different level. Continue?"
+msgstr "G-code pociety dla innej wersji. Kontynuowac?"
+
+# 
+#: util.cpp:520
+msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
+msgstr "G-code pociety na innym poziomie. Potnij model ponownie. Druk anulowany."
+
+# MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5
+#: messages.c:133
+msgid "G-code sliced for a different printer type. Continue?"
+msgstr "G-code pociety dla innej drukarki. Kontynuowac?"
+
+# MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=6
+#: messages.c:134
+msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
+msgstr "G-code pociety dla drukarki innego typu. Potnij model ponownie. Druk anulowany."
+
+# 
+#: util.cpp:481
+msgid "G-code sliced for a newer firmware. Continue?"
+msgstr "G-code pociety dla nowszego firmware. Kontynuowac?"
+
+# 
+#: util.cpp:487
+msgid "G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
+msgstr "G-code pociety dla nowszego firmware. Zaktualizuj firmware. Druk anulowany."
+
+# 
+#: ultralcd.cpp:3916
+msgid "PINDA:"
+msgstr ""
+
+#  c=20
+#: ultralcd.cpp:2402
+msgid "Preheating to cut"
+msgstr "Nagrzew. obciecia"
+
+#  c=20
+#: ultralcd.cpp:2399
+msgid "Preheating to eject"
+msgstr "Nagrzew. wysuniecia"
+
+# 
+#: util.cpp:394
+msgid "Printer nozzle diameter differs from the G-code. Continue?"
+msgstr "Srednica dyszy drukarki rozni sie od tej w G-code. Kontynuowac?"
+
+# 
+#: util.cpp:401
+msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
+msgstr "Srednica dyszy rozni sie od tej w G-code. Sprawdz ustawienia. Druk anulowany."
+
+#  c=20
+#: ultralcd.cpp:8095
+msgid "%s level expected"
+msgstr "Oczekiwano wersji %s"
+
+# 
+#: ultralcd.cpp:6574
+msgid "Rename"
+msgstr "Zmien nazwe"
+
+# 
+#: ultralcd.cpp:6567
+msgid "Select"
+msgstr "Wybierz"
+
+# 
+#: ultralcd.cpp:2154
+msgid "Sensor info"
+msgstr "Info o sensorach"
+
+# MSG_SHEET c=10
+#: messages.c:63
+msgid "Sheet"
+msgstr "Plyta"
+
+# MSG_SOUND_BLIND
+#: messages.c:146
+msgid "Assist"
+msgstr "Asyst."
+
+# MSG_STEEL_SHEET c=18
+#: messages.c:64
+msgid "Steel sheets"
+msgstr "Plyty stalowe"
+
+# MSG_Z_CORRECTION c=13
+#: ultralcd.cpp:5093
+msgid "Z-correct:"
+msgstr "Korekcja-Z:"
+
+# MSG_Z_PROBE_NR
+#: messages.c:149
+msgid "Z-probe nr."
+msgstr "Ilosc Pomiarow"
+