Browse Source

Merge branch 'MK3' into MK3_TONE

Alex Voinea 4 years ago
parent
commit
56193ea252
77 changed files with 14590 additions and 14514 deletions
  1. 14 0
      .editorconfig
  2. 11 8
      Firmware/Configuration.h
  3. 0 12
      Firmware/Configuration_adv.h
  4. 9 14
      Firmware/Marlin.h
  5. 510 352
      Firmware/Marlin_main.cpp
  6. 4 1
      Firmware/SdBaseFile.cpp
  7. 3 2
      Firmware/adc.c
  8. 38 48
      Firmware/cardreader.cpp
  9. 3 5
      Firmware/cardreader.h
  10. 41 28
      Firmware/cmdqueue.cpp
  11. 2 0
      Firmware/cmdqueue.h
  12. 14 5
      Firmware/config.h
  13. 104 12
      Firmware/eeprom.cpp
  14. 27 13
      Firmware/eeprom.h
  15. 29 30
      Firmware/first_lay_cal.cpp
  16. 3 2
      Firmware/first_lay_cal.h
  17. 134 38
      Firmware/fsensor.cpp
  18. 29 2
      Firmware/fsensor.h
  19. 143 72
      Firmware/heatbed_pwm.cpp
  20. 3 3
      Firmware/lcd.cpp
  21. 0 1
      Firmware/lcd.h
  22. 61 15
      Firmware/menu.cpp
  23. 6 2
      Firmware/menu.h
  24. 2 2
      Firmware/mesh_bed_calibration.cpp
  25. 45 15
      Firmware/messages.c
  26. 44 14
      Firmware/messages.h
  27. 48 67
      Firmware/mmu.cpp
  28. 2 2
      Firmware/mmu.h
  29. 2 1
      Firmware/pins_Einsy_1_0.h
  30. 29 11
      Firmware/planner.cpp
  31. 13 2
      Firmware/planner.h
  32. 9 4
      Firmware/sound.cpp
  33. 0 6
      Firmware/sound.h
  34. 4 4
      Firmware/stepper.cpp
  35. 31 81
      Firmware/temperature.cpp
  36. 6 4
      Firmware/temperature.h
  37. 1 1
      Firmware/timer02.c
  38. 79 4
      Firmware/tmc2130.cpp
  39. 1454 1031
      Firmware/ultralcd.cpp
  40. 28 7
      Firmware/ultralcd.h
  41. 19 12
      Firmware/util.cpp
  42. 2 0
      Firmware/util.h
  43. 6 2
      Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h
  44. 4 8
      Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h
  45. 4 8
      Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h
  46. 4 8
      Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h
  47. 4 8
      Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h
  48. 4 8
      Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h
  49. 7 9
      Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h
  50. 7 9
      Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h
  51. 61 56
      PF-build.sh
  52. 10 5
      README.md
  53. 2 3
      Tests/PrusaStatistics_test.cpp
  54. 1 1
      lang/lang-add.sh
  55. 1 1
      lang/lang-export.sh
  56. 58 30
      lang/lang-import.sh
  57. 185 108
      lang/lang_en.txt
  58. 262 158
      lang/lang_en_cz.txt
  59. 272 169
      lang/lang_en_de.txt
  60. 271 167
      lang/lang_en_es.txt
  61. 336 235
      lang/lang_en_fr.txt
  62. 275 172
      lang/lang_en_it.txt
  63. 280 177
      lang/lang_en_pl.txt
  64. 521 456
      lang/po/Firmware.pot
  65. 569 504
      lang/po/Firmware_cs.po
  66. 582 512
      lang/po/Firmware_de.po
  67. 576 511
      lang/po/Firmware_es.po
  68. 683 613
      lang/po/Firmware_fr.po
  69. 599 534
      lang/po/Firmware_it.po
  70. 594 529
      lang/po/Firmware_pl.po
  71. 832 1238
      lang/po/new/cs.po
  72. 844 1245
      lang/po/new/de.po
  73. 838 1244
      lang/po/new/es.po
  74. 936 1337
      lang/po/new/fr.po
  75. 857 1263
      lang/po/new/it.po
  76. 847 1253
      lang/po/new/pl.po
  77. 252 0
      lang/translations.md

+ 14 - 0
.editorconfig

@@ -0,0 +1,14 @@
+#-*-mode:conf-*-
+# editorconfig file (see EditorConfig.org)
+
+root                        = true
+
+[*]
+end_of_line                 = lf
+insert_final_newline        = true
+charset                     = utf-8
+trim_trailing_whitespace    = true
+indent_style                = space
+indent_size                 = 4
+tab_width                   = 4
+max_line_length             = 100

+ 11 - 8
Firmware/Configuration.h

@@ -16,8 +16,8 @@ extern uint16_t nPrinterType;
 extern PGM_P sPrinterName;
 
 // Firmware version
-#define FW_VERSION "3.7.2"
-#define FW_COMMIT_NR   2363
+#define FW_VERSION "3.8.1"
+#define FW_COMMIT_NR   2869
 // 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
@@ -113,11 +113,6 @@ extern PGM_P sPrinterName;
 // #define PS_DEFAULT_OFF
 
 
-
-// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted.
-//#define TEMP_SENSOR_1_AS_REDUNDANT
-#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10
-
 // Actual temperature must be close to target for this long before M109 returns success
 #define TEMP_RESIDENCY_TIME 3  // (seconds)
 #define TEMP_HYSTERESIS 5       // (degC) range of +/- temperatures considered "close" to the target one
@@ -291,6 +286,8 @@ your extruder heater takes 2 minutes to hit the target on heating.
 
 #define Z_HEIGHT_HIDE_LIVE_ADJUST_MENU 2.0f
 
+#define HOME_Z_SEARCH_THRESHOLD 0.15f             // Threshold of the Z height in calibration
+
 //============================= Bed Auto Leveling ===========================
 
 //#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line)
@@ -348,7 +345,7 @@ your extruder heater takes 2 minutes to hit the target on heating.
   #define Y_PROBE_OFFSET_FROM_EXTRUDER -29
   #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35
 
-  #define Z_RAISE_BEFORE_HOMING 4       // (in mm) Raise Z before homing (G28) for Probe Clearance.
+  #define Z_RAISE_BEFORE_HOMING 5       // (in mm) Raise Z before homing (G28) for Probe Clearance.
                                         // Be sure you have this distance over your Z_MAX_POS in case
 
   #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min
@@ -552,6 +549,12 @@ enum CalibrationStatus
     CALIBRATION_STATUS_UNKNOWN = 0,
 };
 
+// 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_PREHEAT 10
+
 #include "Configuration_adv.h"
 #include "thermistortables.h"
 

+ 0 - 12
Firmware/Configuration_adv.h

@@ -10,14 +10,6 @@
 #endif
 #define BED_CHECK_INTERVAL 5000 //ms between checks in bang-bang control
 
-//// Heating sanity check:
-// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperatureLCD_PROGRESS_BAR
-// If the temperature has not increased at the end of that period, the target temperature is set to zero.
-// It can be reset with another M104/M109. This check is also only triggered if the target temperature and the current temperature
-//  differ by at least 2x WATCH_TEMP_INCREASE
-//#define WATCH_TEMP_PERIOD 40000 //40 seconds
-//#define WATCH_TEMP_INCREASE 10  //Heat up at least 10 degree in 20 seconds
-
 #ifdef PIDTEMP
   // this adds an experimental additional term to the heating power, proportional to the extrusion speed.
   // if Kc is chosen well, the additional required power due to increased melting should be compensated.
@@ -400,10 +392,6 @@ const unsigned int dropsegments=5; //everything with less than this number of st
 //=============================  Define Defines  ============================
 //===========================================================================
 
-#if EXTRUDERS > 1 && defined TEMP_SENSOR_1_AS_REDUNDANT
-  #error "You cannot use TEMP_SENSOR_1_AS_REDUNDANT if EXTRUDERS > 1"
-#endif
-
 #if EXTRUDERS > 1 && defined HEATERS_PARALLEL
   #error "You cannot use HEATERS_PARALLEL if EXTRUDERS > 1"
 #endif

+ 9 - 14
Firmware/Marlin.h

@@ -296,6 +296,7 @@ void setPwmFrequency(uint8_t pin, int val);
 extern bool fans_check_enabled;
 extern float homing_feedrate[];
 extern bool axis_relative_modes[];
+extern float feedrate;
 extern int feedmultiply;
 extern int extrudemultiply; // Sets extrude multiply factor (in percent) for all extruders
 extern int extruder_multiply[EXTRUDERS]; // sets extrude multiply factor (in percent) for each extruder individually
@@ -308,11 +309,6 @@ extern bool axis_known_position[3];
 extern int fanSpeed;
 extern int8_t lcd_change_fil_state;
 
-const char smooth1[] PROGMEM = "Smooth1";
-const char smooth2[] PROGMEM = "Smooth2";
-const char textured[] PROGMEM = "Textur1";
-const char *const defaultSheetNames[] PROGMEM = {smooth1,smooth2,textured};
-
 #ifdef TMC2130
 void homeaxis(int axis, uint8_t cnt = 1, uint8_t* pstep = 0);
 #else
@@ -363,9 +359,6 @@ extern int fan_speed[2];
 // Handling multiple extruders pins
 extern uint8_t active_extruder;
 
-
-#endif
-
 //Long pause
 extern unsigned long pause_time;
 extern unsigned long start_pause_print;
@@ -381,6 +374,10 @@ extern char dir_names[3][9];
 extern int8_t lcd_change_fil_state;
 // save/restore printing
 extern bool saved_printing;
+extern uint8_t saved_printing_type;
+#define PRINTING_TYPE_SD 0
+#define PRINTING_TYPE_USB 1
+#define PRINTING_TYPE_NONE 2
 
 //save/restore printing in case that mmu is not responding
 extern bool mmu_print_saved;
@@ -396,12 +393,10 @@ extern uint16_t print_time_remaining_silent;
 extern uint16_t mcode_in_progress;
 extern uint16_t gcode_in_progress;
 
-extern bool wizard_active; //autoload temporarily disabled during wizard
-
 extern LongTimer safetyTimer;
 
 #define PRINT_PERCENT_DONE_INIT   0xff
-#define PRINTER_ACTIVE (IS_SD_PRINTING || is_usb_printing || isPrintPaused || (custom_message_type == CustomMsg::TempCal) || saved_printing || (lcd_commands_type == LcdCommands::Layer1Cal) || card.paused || mmu_print_saved)
+#define PRINTER_ACTIVE (IS_SD_PRINTING || is_usb_printing || isPrintPaused || (custom_message_type == CustomMsg::TempCal) || saved_printing || (lcd_commands_type == LcdCommands::Layer1Cal) || mmu_print_saved)
 
 //! Beware - mcode_in_progress is set as soon as the command gets really processed,
 //! which is not the same as posting the M600 command into the command queue
@@ -430,8 +425,6 @@ void bed_analysis(float x_dimension, float y_dimension, int x_points_num, int y_
 void bed_check(float x_dimension, float y_dimension, int x_points_num, int y_points_num, float shift_x, float shift_y);
 #endif //HEATBED_ANALYSIS
 float temp_comp_interpolation(float temperature);
-void temp_compensation_apply();
-void temp_compensation_start();
 void show_fw_version_warnings();
 uint8_t check_printer_version();
 
@@ -518,4 +511,6 @@ void M600_wait_for_user(float HotendTempBckp);
 void M600_check_state(float nozzle_temp);
 void load_filament_final_feed();
 void marlin_wait_for_click();
-void marlin_rise_z(void);
+void raise_z_above(float target, bool plan=true);
+
+#endif

+ 510 - 352
Firmware/Marlin_main.cpp

@@ -142,10 +142,6 @@
 //Macro for print fan speed
 #define FAN_PULSE_WIDTH_LIMIT ((fanSpeed > 100) ? 3 : 4) //time in ms
 
-#define PRINTING_TYPE_SD 0
-#define PRINTING_TYPE_USB 1
-#define PRINTING_TYPE_NONE 2
-
 //filament types 
 #define FILAMENT_DEFAULT 0
 #define FILAMENT_FLEX 1
@@ -313,6 +309,8 @@ bool no_response = false;
 uint8_t important_status;
 uint8_t saved_filament_type;
 
+#define SAVED_TARGET_UNSET (X_MIN_POS-1)
+float saved_target[NUM_AXIS] = {SAVED_TARGET_UNSET, 0, 0, 0};
 
 // save/restore printing in case that mmu was not responding 
 bool mmu_print_saved = false;
@@ -323,8 +321,6 @@ uint16_t print_time_remaining_normal = PRINT_TIME_REMAINING_INIT; //estimated re
 uint8_t print_percent_done_silent = PRINT_PERCENT_DONE_INIT;
 uint16_t print_time_remaining_silent = PRINT_TIME_REMAINING_INIT; //estimated remaining print time in minutes
 
-bool wizard_active = false; //autoload temporarily disabled during wizard
-
 //===========================================================================
 //=============================Private Variables=============================
 //===========================================================================
@@ -335,7 +331,15 @@ float destination[NUM_AXIS] = {  0.0, 0.0, 0.0, 0.0};
 
 // For tracing an arc
 static float offset[3] = {0.0, 0.0, 0.0};
-static float feedrate = 1500.0, next_feedrate, saved_feedrate;
+
+// Current feedrate
+float feedrate = 1500.0;
+
+// Feedrate for the next move
+static float next_feedrate;
+
+// Original feedrate saved during homing moves
+static float saved_feedrate;
 
 // Determines Absolute or Relative Coordinates.
 // Also there is bool axis_relative_modes[] per axis flag.
@@ -365,7 +369,6 @@ bool Stopped=false;
   Servo servos[NUM_SERVOS];
 #endif
 
-bool CooldownNoWait = true;
 bool target_direction;
 
 //Insert variables if CHDK is defined
@@ -378,10 +381,10 @@ boolean chdkActive = false;
 //! @{
 bool saved_printing = false; //!< Print is paused and saved in RAM
 static uint32_t saved_sdpos = 0; //!< SD card position, or line number in case of USB printing
-static uint8_t saved_printing_type = PRINTING_TYPE_SD;
+uint8_t saved_printing_type = PRINTING_TYPE_SD;
 static float saved_pos[4] = { 0, 0, 0, 0 };
-//! Feedrate hopefully derived from an active block of the planner at the time the print has been canceled, in mm/min.
-static float saved_feedrate2 = 0;
+static uint16_t saved_feedrate2 = 0; //!< Default feedrate (truncated from float)
+static int saved_feedmultiply2 = 0;
 static uint8_t saved_active_extruder = 0;
 static float saved_extruder_temperature = 0.0; //!< Active extruder temperature
 static bool saved_extruder_under_pressure = false;
@@ -400,6 +403,9 @@ 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 temp_compensation_start();
+static void temp_compensation_apply();
+
 
 uint16_t gcode_in_progress = 0;
 uint16_t mcode_in_progress = 0;
@@ -524,24 +530,6 @@ bool fans_check_enabled = true;
 
 #ifdef TMC2130
 
-extern int8_t CrashDetectMenu;
-
-void crashdet_enable()
-{
-	tmc2130_sg_stop_on_crash = true;
-	eeprom_update_byte((uint8_t*)EEPROM_CRASH_DET, 0xFF); 
-	CrashDetectMenu = 1;
-
-}
-
-void crashdet_disable()
-{
-	tmc2130_sg_stop_on_crash = false;
-	tmc2130_sg_crash = 0;
-	eeprom_update_byte((uint8_t*)EEPROM_CRASH_DET, 0x00); 
-	CrashDetectMenu = 0;
-}
-
 void crashdet_stop_and_save_print()
 {
 	stop_and_save_print_to_ram(10, -default_retraction); //XY - no change, Z 10mm up, E -1mm retract
@@ -631,7 +619,7 @@ void crashdet_detected(uint8_t mask)
 void crashdet_recover()
 {
 	crashdet_restore_print_and_continue();
-	tmc2130_sg_stop_on_crash = true;
+	if (lcd_crash_detect_enabled()) tmc2130_sg_stop_on_crash = true;
 }
 
 void crashdet_cancel()
@@ -641,7 +629,7 @@ void crashdet_cancel()
 	if (saved_printing_type == PRINTING_TYPE_SD) {
 		lcd_print_stop();
 	}else if(saved_printing_type == PRINTING_TYPE_USB){
-		SERIAL_ECHOLNPGM("// action:cancel"); //for Octoprint: works the same as clicking "Abort" button in Octoprint GUI
+		SERIAL_ECHOLNRPGM(MSG_OCTOPRINT_CANCEL); //for Octoprint: works the same as clicking "Abort" button in Octoprint GUI
 		SERIAL_PROTOCOLLNRPGM(MSG_OK);
 	}
 }
@@ -1256,21 +1244,36 @@ void setup()
 	plan_init();  // Initialize planner;
 
 	factory_reset();
+	if (eeprom_read_dword((uint32_t*)(EEPROM_TOP - 4)) == 0x0ffffffff &&
+	        eeprom_read_dword((uint32_t*)(EEPROM_TOP - 8)) == 0x0ffffffff)
+	{
+        // Maiden startup. The firmware has been loaded and first started on a virgin RAMBo board,
+        // where all the EEPROM entries are set to 0x0ff.
+        // Once a firmware boots up, it forces at least a language selection, which changes
+        // EEPROM_LANG to number lower than 0x0ff.
+        // 1) Set a high power mode.
+	    eeprom_update_byte((uint8_t*)EEPROM_SILENT, SILENT_MODE_OFF);
+#ifdef TMC2130
+        tmc2130_mode = TMC2130_MODE_NORMAL;
+#endif //TMC2130
+        eeprom_write_byte((uint8_t*)EEPROM_WIZARD_ACTIVE, 1); //run wizard
+    }
+
     lcd_encoder_diff=0;
 
 #ifdef TMC2130
 	uint8_t silentMode = eeprom_read_byte((uint8_t*)EEPROM_SILENT);
 	if (silentMode == 0xff) silentMode = 0;
 	tmc2130_mode = TMC2130_MODE_NORMAL;
-	uint8_t crashdet = eeprom_read_byte((uint8_t*)EEPROM_CRASH_DET);
-	if (crashdet && !farm_mode)
+
+	if (lcd_crash_detect_enabled() && !farm_mode)
 	{
-		crashdet_enable();
+		lcd_crash_detect_enable();
 	    puts_P(_N("CrashDetect ENABLED!"));
 	}
 	else
 	{
-		crashdet_disable();
+	    lcd_crash_detect_disable();
 	    puts_P(_N("CrashDetect DISABLED"));
 	}
 
@@ -1367,20 +1370,6 @@ void setup()
 	// Enable Toshiba FlashAir SD card / WiFi enahanced card.
 	card.ToshibaFlashAir_enable(eeprom_read_byte((unsigned char*)EEPROM_TOSHIBA_FLASH_AIR_COMPATIBLITY) == 1);
 
-	if (eeprom_read_dword((uint32_t*)(EEPROM_TOP - 4)) == 0x0ffffffff &&
-		eeprom_read_dword((uint32_t*)(EEPROM_TOP - 8)) == 0x0ffffffff) {
-		// Maiden startup. The firmware has been loaded and first started on a virgin RAMBo board,
-		// where all the EEPROM entries are set to 0x0ff.
-		// Once a firmware boots up, it forces at least a language selection, which changes
-		// EEPROM_LANG to number lower than 0x0ff.
-		// 1) Set a high power mode.
-#ifdef TMC2130
-		eeprom_write_byte((uint8_t*)EEPROM_SILENT, 0);
-		tmc2130_mode = TMC2130_MODE_NORMAL;
-#endif //TMC2130
-		eeprom_write_byte((uint8_t*)EEPROM_WIZARD_ACTIVE, 1); //run wizard
-	}
-
 	// Force SD card update. Otherwise the SD card update is done from loop() on card.checkautostart(false), 
 	// but this times out if a blocking dialog is shown in setup().
 	card.initsd();
@@ -1509,8 +1498,10 @@ void setup()
 #ifndef DEBUG_DISABLE_STARTMSGS
   KEEPALIVE_STATE(PAUSED_FOR_USER);
 
-  check_if_fw_is_on_right_printer();
-  show_fw_version_warnings();
+  if (!farm_mode) {
+    check_if_fw_is_on_right_printer();
+    show_fw_version_warnings();    
+  }
 
   switch (hw_changed) { 
 	  //if motherboard or printer type was changed inform user as it can indicate flashing wrong firmware version
@@ -1543,7 +1534,7 @@ void setup()
 		  calibration_status() == CALIBRATION_STATUS_UNKNOWN || 
 		  calibration_status() == CALIBRATION_STATUS_XYZ_CALIBRATION) {
 		  // Reset the babystepping values, so the printer will not move the Z axis up when the babystepping is enabled.
-		  eeprom_update_word((uint16_t*)EEPROM_BABYSTEP_Z, 0);
+            eeprom_update_word(reinterpret_cast<uint16_t *>(&(EEPROM_Sheets_base->s[(eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet)))].z_offset)),0);
 		  // Show the message.
 		  lcd_show_fullscreen_message_and_wait_P(_T(MSG_FOLLOW_CALIBRATION_FLOW));
 	  }
@@ -1767,12 +1758,25 @@ void loop()
 	{
 		is_usb_printing = false;
 	}
+    if (isPrintPaused && saved_printing_type == PRINTING_TYPE_USB) //keep believing that usb is being printed. Prevents accessing dangerous menus while pausing.
+	{
+		is_usb_printing = true;
+	}
+    
+#ifdef FANCHECK
+    if (fan_check_error && isPrintPaused)
+    {
+        KEEPALIVE_STATE(PAUSED_FOR_USER);
+        host_keepalive(); //prevent timeouts since usb processing is disabled until print is resumed. This is for a crude way of pausing a print on all hosts.
+    }
+#endif
 
     if (prusa_sd_card_upload)
     {
         //we read byte-by byte
         serial_read_stream();
-    } else 
+    } 
+    else 
     {
 
         get_command();
@@ -2023,14 +2027,14 @@ static void do_blocking_move_to(float x, float y, float z) {
     feedrate = homing_feedrate[Z_AXIS];
 
     current_position[Z_AXIS] = z;
-    plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feedrate/60, active_extruder);
+    plan_buffer_line_curposXYZE(feedrate/60, active_extruder);
     st_synchronize();
 
     feedrate = XY_TRAVEL_SPEED;
 
     current_position[X_AXIS] = x;
     current_position[Y_AXIS] = y;
-    plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feedrate/60, active_extruder);
+    plan_buffer_line_curposXYZE(feedrate/60, active_extruder);
     st_synchronize();
 
     feedrate = oldFeedRate;
@@ -2110,6 +2114,52 @@ bool check_commands() {
 	
 }
 
+
+// raise_z_above: slowly raise Z to the requested height
+//
+// contrarily to a simple move, this function will carefully plan a move
+// when the current Z position is unknown. In such cases, stallguard is
+// enabled and will prevent prolonged pushing against the Z tops
+void raise_z_above(float target, bool plan)
+{
+    if (current_position[Z_AXIS] >= target)
+        return;
+
+    // Z needs raising
+    current_position[Z_AXIS] = target;
+
+    if (axis_known_position[Z_AXIS])
+    {
+        // current position is known, it's safe to raise Z
+        if(plan) plan_buffer_line_curposXYZE(max_feedrate[Z_AXIS], active_extruder);
+        return;
+    }
+
+    // ensure Z is powered in normal mode to overcome initial load
+    enable_z();
+    st_synchronize();
+
+    // rely on crashguard to limit damage
+    bool z_endstop_enabled = enable_z_endstop(true);
+#ifdef TMC2130
+    tmc2130_home_enter(Z_AXIS_MASK);
+#endif //TMC2130
+    plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 60, active_extruder);
+    st_synchronize();
+#ifdef TMC2130
+    if (endstop_z_hit_on_purpose())
+    {
+        // not necessarily exact, but will avoid further vertical moves
+        current_position[Z_AXIS] = max_pos[Z_AXIS];
+        plan_set_position(current_position[X_AXIS], current_position[Y_AXIS],
+                          current_position[Z_AXIS], current_position[E_AXIS]);
+    }
+    tmc2130_home_exit();
+#endif //TMC2130
+    enable_z_endstop(z_endstop_enabled);
+}
+
+
 #ifdef TMC2130
 bool calibrate_z_auto()
 {
@@ -2360,77 +2410,77 @@ void ramming() {
 
 		max_feedrate[E_AXIS] = 50;
 		//current_position[E_AXIS] -= 8;
-		//plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 2100 / 60, active_extruder);
+		//plan_buffer_line_curposXYZE(2100 / 60, active_extruder);
 		//current_position[E_AXIS] += 8;
-		//plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 2100 / 60, active_extruder);
+		//plan_buffer_line_curposXYZE(2100 / 60, active_extruder);
 		current_position[E_AXIS] += 5.4;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 2800 / 60, active_extruder);
+		plan_buffer_line_curposXYZE(2800 / 60, active_extruder);
 		current_position[E_AXIS] += 3.2;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
+		plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
 		current_position[E_AXIS] += 3;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3400 / 60, active_extruder);
+		plan_buffer_line_curposXYZE(3400 / 60, active_extruder);
 		st_synchronize();
 		max_feedrate[E_AXIS] = 80;
 		current_position[E_AXIS] -= 82;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 9500 / 60, active_extruder);
+		plan_buffer_line_curposXYZE(9500 / 60, active_extruder);
 		max_feedrate[E_AXIS] = 50;//tmp[E_AXIS];
 		current_position[E_AXIS] -= 20;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 1200 / 60, active_extruder);
+		plan_buffer_line_curposXYZE(1200 / 60, active_extruder);
 		current_position[E_AXIS] += 5;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400 / 60, active_extruder);
+		plan_buffer_line_curposXYZE(400 / 60, active_extruder);
 		current_position[E_AXIS] += 5;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 600 / 60, active_extruder);
+		plan_buffer_line_curposXYZE(600 / 60, active_extruder);
 		current_position[E_AXIS] -= 10;
 		st_synchronize();
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 600 / 60, active_extruder);
+		plan_buffer_line_curposXYZE(600 / 60, active_extruder);
 		current_position[E_AXIS] += 10;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 600 / 60, active_extruder);
+		plan_buffer_line_curposXYZE(600 / 60, active_extruder);
 		current_position[E_AXIS] -= 10;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 800 / 60, active_extruder);
+		plan_buffer_line_curposXYZE(800 / 60, active_extruder);
 		current_position[E_AXIS] += 10;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 800 / 60, active_extruder);
+		plan_buffer_line_curposXYZE(800 / 60, active_extruder);
 		current_position[E_AXIS] -= 10;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 800 / 60, active_extruder);
+		plan_buffer_line_curposXYZE(800 / 60, active_extruder);
 		st_synchronize();
 	}
 	else {
 		//ABS
 		max_feedrate[E_AXIS] = 50;
 		//current_position[E_AXIS] -= 8;
-		//plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 2100 / 60, active_extruder);
+		//plan_buffer_line_curposXYZE(2100 / 60, active_extruder);
 		//current_position[E_AXIS] += 8;
-		//plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 2100 / 60, active_extruder);
+		//plan_buffer_line_curposXYZE(2100 / 60, active_extruder);
 		current_position[E_AXIS] += 3.1;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 2000 / 60, active_extruder);
+		plan_buffer_line_curposXYZE(2000 / 60, active_extruder);
 		current_position[E_AXIS] += 3.1;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 2500 / 60, active_extruder);
+		plan_buffer_line_curposXYZE(2500 / 60, active_extruder);
 		current_position[E_AXIS] += 4;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
+		plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
 		st_synchronize();
 		//current_position[X_AXIS] += 23; //delay
-		//plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 600/60, active_extruder); //delay
+		//plan_buffer_line_curposXYZE(600/60, active_extruder); //delay
 		//current_position[X_AXIS] -= 23; //delay
-		//plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 600/60, active_extruder); //delay
+		//plan_buffer_line_curposXYZE(600/60, active_extruder); //delay
 		_delay(4700);
 		max_feedrate[E_AXIS] = 80;
 		current_position[E_AXIS] -= 92;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 9900 / 60, active_extruder);
+		plan_buffer_line_curposXYZE(9900 / 60, active_extruder);
 		max_feedrate[E_AXIS] = 50;//tmp[E_AXIS];
 		current_position[E_AXIS] -= 5;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 800 / 60, active_extruder);
+		plan_buffer_line_curposXYZE(800 / 60, active_extruder);
 		current_position[E_AXIS] += 5;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400 / 60, active_extruder);
+		plan_buffer_line_curposXYZE(400 / 60, active_extruder);
 		current_position[E_AXIS] -= 5;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 600 / 60, active_extruder);
+		plan_buffer_line_curposXYZE(600 / 60, active_extruder);
 		st_synchronize();
 		current_position[E_AXIS] += 5;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 600 / 60, active_extruder);
+		plan_buffer_line_curposXYZE(600 / 60, active_extruder);
 		current_position[E_AXIS] -= 5;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 600 / 60, active_extruder);
+		plan_buffer_line_curposXYZE(600 / 60, active_extruder);
 		current_position[E_AXIS] += 5;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 600 / 60, active_extruder);
+		plan_buffer_line_curposXYZE(600 / 60, active_extruder);
 		current_position[E_AXIS] -= 5;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 600 / 60, active_extruder);
+		plan_buffer_line_curposXYZE(600 / 60, active_extruder);
 		st_synchronize();
 
 	}
@@ -2439,6 +2489,9 @@ void ramming() {
 
 #ifdef TMC2130
 void force_high_power_mode(bool start_high_power_section) {
+#ifdef PSU_Delta
+	if (start_high_power_section == true) enable_force_z();
+#endif //PSU_Delta
 	uint8_t silent;
 	silent = eeprom_read_byte((uint8_t*)EEPROM_SILENT);
 	if (silent == 1) {
@@ -2487,9 +2540,7 @@ static void gcode_G28(bool home_x_axis, long home_x_value, bool home_y_axis, lon
 
 	//if we are homing all axes, first move z higher to protect heatbed/steel sheet
 	if (home_all_axes) {
-		current_position[Z_AXIS] += MESH_HOME_Z_SEARCH;
-		feedrate = homing_feedrate[Z_AXIS];
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feedrate / 60, active_extruder);
+        raise_z_above(MESH_HOME_Z_SEARCH);
 		st_synchronize();
 	}
 #ifdef ENABLE_AUTO_BED_LEVELING
@@ -2600,26 +2651,21 @@ static void gcode_G28(bool home_x_axis, long home_x_value, bool home_y_axis, lon
         #ifndef Z_SAFE_HOMING
           if(home_z) {
             #if defined (Z_RAISE_BEFORE_HOMING) && (Z_RAISE_BEFORE_HOMING > 0)
-              destination[Z_AXIS] = Z_RAISE_BEFORE_HOMING * home_dir(Z_AXIS) * (-1);    // Set destination away from bed
-              feedrate = max_feedrate[Z_AXIS];
-              plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate, active_extruder);
+              raise_z_above(Z_RAISE_BEFORE_HOMING);
               st_synchronize();
             #endif // defined (Z_RAISE_BEFORE_HOMING) && (Z_RAISE_BEFORE_HOMING > 0)
             #if (defined(MESH_BED_LEVELING) && !defined(MK1BP))  // If Mesh bed leveling, move X&Y to safe position for home
-      			  if (!(axis_known_position[X_AXIS] && axis_known_position[Y_AXIS] )) 
-      			  {
-                homeaxis(X_AXIS);
-                homeaxis(Y_AXIS);
-      			  } 
+              raise_z_above(MESH_HOME_Z_SEARCH);
+              st_synchronize();
+              if (!axis_known_position[X_AXIS]) homeaxis(X_AXIS);
+              if (!axis_known_position[Y_AXIS]) homeaxis(Y_AXIS);
               // 1st mesh bed leveling measurement point, corrected.
               world2machine_initialize();
               world2machine(pgm_read_float(bed_ref_points_4), pgm_read_float(bed_ref_points_4+1), destination[X_AXIS], destination[Y_AXIS]);
               world2machine_reset();
               if (destination[Y_AXIS] < Y_MIN_POS)
                   destination[Y_AXIS] = Y_MIN_POS;
-              destination[Z_AXIS] = MESH_HOME_Z_SEARCH;    // Set destination away from bed
-              feedrate = homing_feedrate[Z_AXIS]/10;
-              current_position[Z_AXIS] = 0;
+              feedrate = homing_feedrate[X_AXIS] / 20;
               enable_endstops(false);
 #ifdef DEBUG_BUILD
               SERIAL_ECHOLNPGM("plan_set_position()");
@@ -2710,6 +2756,7 @@ static void gcode_G28(bool home_x_axis, long home_x_value, bool home_y_axis, lon
       previous_millis_cmd = _millis();
       endstops_hit_on_purpose();
 #ifndef MESH_BED_LEVELING
+//-// Oct 2019 :: this part of code is (from) now probably un-compilable
       // If MESH_BED_LEVELING is not active, then it is the original Prusa i3.
       // Offer the user to load the baby step value, which has been adjusted at the previous print session.
       if(card.sdprinting && eeprom_read_word((uint16_t *)EEPROM_BABYSTEP_Z))
@@ -2807,7 +2854,7 @@ bool gcode_M45(bool onlyZ, int8_t verbosity_level)
 	enable_endstops(false);
 	current_position[X_AXIS] += 5;
 	current_position[Y_AXIS] += 5;
-	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS] / 40, active_extruder);
+	plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 40, active_extruder);
 	st_synchronize();
 
 	// Let the user move the Z axes up to the end stoppers.
@@ -2857,7 +2904,7 @@ bool gcode_M45(bool onlyZ, int8_t verbosity_level)
 			
 		bool endstops_enabled  = enable_endstops(false);
         current_position[Z_AXIS] -= 1; //move 1mm down with disabled endstop
-        plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS] / 40, active_extruder);
+        plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 40, active_extruder);
         st_synchronize();
 
 		// Move the print head close to the bed.
@@ -2868,7 +2915,7 @@ bool gcode_M45(bool onlyZ, int8_t verbosity_level)
 		tmc2130_home_enter(Z_AXIS_MASK);
 #endif //TMC2130
 
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS] / 40, active_extruder);
+		plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 40, active_extruder);
 
 		st_synchronize();
 #ifdef TMC2130
@@ -2876,7 +2923,8 @@ bool gcode_M45(bool onlyZ, int8_t verbosity_level)
 #endif //TMC2130
 		enable_endstops(endstops_enabled);
 
-		if (st_get_position_mm(Z_AXIS) == MESH_HOME_Z_SEARCH)
+		if ((st_get_position_mm(Z_AXIS) <= (MESH_HOME_Z_SEARCH + HOME_Z_SEARCH_THRESHOLD)) &&
+		    (st_get_position_mm(Z_AXIS) >= (MESH_HOME_Z_SEARCH - HOME_Z_SEARCH_THRESHOLD)))
 		{
 			if (onlyZ)
 			{
@@ -2901,14 +2949,14 @@ bool gcode_M45(bool onlyZ, int8_t verbosity_level)
 			{
 				// Reset the baby step value and the baby step applied flag.
 				calibration_status_store(CALIBRATION_STATUS_XYZ_CALIBRATION);
-				eeprom_update_word((uint16_t*)EEPROM_BABYSTEP_Z, 0);
+                    eeprom_update_word(reinterpret_cast<uint16_t *>(&(EEPROM_Sheets_base->s[(eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet)))].z_offset)),0);
 				// Complete XYZ calibration.
 				uint8_t point_too_far_mask = 0;
 				BedSkewOffsetDetectionResultType result = find_bed_offset_and_skew(verbosity_level, point_too_far_mask);
 				clean_up_after_endstop_move(l_feedmultiply);
 				// Print head up.
 				current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
-				plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS] / 40, active_extruder);
+				plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 40, active_extruder);
 				st_synchronize();
 //#ifndef NEW_XYZCAL
 				if (result >= 0)
@@ -2928,7 +2976,7 @@ bool gcode_M45(bool onlyZ, int8_t verbosity_level)
 					clean_up_after_endstop_move(l_feedmultiply);
 					// Print head up.
 					current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
-					plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS] / 40, active_extruder);
+					plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 40, active_extruder);
 					st_synchronize();
 					// if (result >= 0) babystep_apply();					
 					#endif //HEATBED_V2
@@ -3038,21 +3086,18 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float
 
     //Retract E
     current_position[E_AXIS] += e_shift;
-    plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS],
-            current_position[E_AXIS], FILAMENTCHANGE_RFEED, active_extruder);
+    plan_buffer_line_curposXYZE(FILAMENTCHANGE_RFEED, active_extruder);
     st_synchronize();
 
     //Lift Z
     current_position[Z_AXIS] += z_shift;
-    plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS],
-            current_position[E_AXIS], FILAMENTCHANGE_ZFEED, active_extruder);
+    plan_buffer_line_curposXYZE(FILAMENTCHANGE_ZFEED, active_extruder);
     st_synchronize();
 
     //Move XY to side
     current_position[X_AXIS] = x_position;
     current_position[Y_AXIS] = y_position;
-    plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS],
-            current_position[E_AXIS], FILAMENTCHANGE_XYFEED, active_extruder);
+    plan_buffer_line_curposXYZE(FILAMENTCHANGE_XYFEED, active_extruder);
     st_synchronize();
 
     //Beep, manage nozzle heater and wait for user to start unload filament
@@ -3077,8 +3122,7 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float
 			lcd_set_cursor(0, 2);
 			lcd_puts_P(_T(MSG_PLEASE_WAIT));
 			current_position[X_AXIS] -= 100;
-			plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS],
-				current_position[E_AXIS], FILAMENTCHANGE_XYFEED, active_extruder);
+			plan_buffer_line_curposXYZE(FILAMENTCHANGE_XYFEED, active_extruder);
 			st_synchronize();
 			lcd_show_fullscreen_message_and_wait_P(_i("Please open idler and remove filament manually."));////MSG_CHECK_IDLER c=20 r=4
         }
@@ -3115,8 +3159,7 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float
     if (!automatic)
     {
         current_position[E_AXIS] += FILAMENTCHANGE_RECFEED;
-        plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS],
-                current_position[E_AXIS], FILAMENTCHANGE_EXFEED, active_extruder);
+        plan_buffer_line_curposXYZE(FILAMENTCHANGE_EXFEED, active_extruder);
     }
 
     //Move XY back
@@ -3149,15 +3192,6 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float
     custom_message_type = CustomMsg::Status;
 }
 
-//! @brief Rise Z if too low to avoid blob/jam before filament loading
-//!
-//! It doesn't plan_buffer_line(), as it expects plan_buffer_line() to be called after
-//! during extruding (loading) filament.
-void marlin_rise_z(void)
-{
-    if (current_position[Z_AXIS] < 20) current_position[Z_AXIS] += 30;
-}
-
 void gcode_M701()
 {
 	printf_P(PSTR("gcode_M701 begin\n"));
@@ -3183,12 +3217,12 @@ void gcode_M701()
 
 		lcd_setstatuspgm(_T(MSG_LOADING_FILAMENT));
 		current_position[E_AXIS] += 40;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400 / 60, active_extruder); //fast sequence
+		plan_buffer_line_curposXYZE(400 / 60, active_extruder); //fast sequence
 		st_synchronize();
 
-		marlin_rise_z();
+        raise_z_above(MIN_Z_FOR_LOAD, false);
 		current_position[E_AXIS] += 30;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400 / 60, active_extruder); //fast sequence
+		plan_buffer_line_curposXYZE(400 / 60, active_extruder); //fast sequence
 		
 		load_filament_final_feed(); //slow sequence
 		st_synchronize();
@@ -3266,6 +3300,56 @@ static void gcode_PRUSA_SN()
         puts_P(_N("Not in farm mode."));
     }
 }
+//! Detection of faulty RAMBo 1.1b boards equipped with bigger capacitors
+//! at the TACH_1 pin, which causes bad detection of print fan speed.
+//! Warning: This function is not to be used by ordinary users, it is here only for automated testing purposes,
+//!   it may even interfere with other functions of the printer! You have been warned!
+//! The test idea is to measure the time necessary to charge the capacitor.
+//! So the algorithm is as follows:
+//! 1. Set TACH_1 pin to INPUT mode and LOW
+//! 2. Wait a few ms
+//! 3. disable interrupts and measure the time until the TACH_1 pin reaches HIGH
+//! Repeat 1.-3. several times
+//! Good RAMBo's times are in the range of approx. 260-320 us
+//! Bad RAMBo's times are approx. 260-1200 us
+//! So basically we are interested in maximum time, the minima are mostly the same.
+//! May be that's why the bad RAMBo's still produce some fan RPM reading, but not corresponding to reality
+static void gcode_PRUSA_BadRAMBoFanTest(){
+    //printf_P(PSTR("Enter fan pin test\n"));
+#if !defined(DEBUG_DISABLE_FANCHECK) && defined(FANCHECK) && defined(TACH_1) && TACH_1 >-1
+	fan_measuring = false; // prevent EXTINT7 breaking into the measurement
+	unsigned long tach1max = 0;
+	uint8_t tach1cntr = 0;
+	for( /* nothing */; tach1cntr < 100; ++tach1cntr){
+		//printf_P(PSTR("TACH_1: %d\n"), tach1cntr);
+		SET_OUTPUT(TACH_1);
+		WRITE(TACH_1, LOW);
+		_delay(20); // the delay may be lower
+		unsigned long tachMeasure = _micros();
+		cli();
+		SET_INPUT(TACH_1);
+		// just wait brutally in an endless cycle until we reach HIGH
+		// if this becomes a problem it may be improved to non-endless cycle
+		while( READ(TACH_1) == 0 ) ;
+		sei();
+		tachMeasure = _micros() - tachMeasure;
+		if( tach1max < tachMeasure )
+		tach1max = tachMeasure;
+		//printf_P(PSTR("TACH_1: %d: capacitor check time=%lu us\n"), (int)tach1cntr, tachMeasure);
+	}	
+	//printf_P(PSTR("TACH_1: max=%lu us\n"), tach1max);
+	SERIAL_PROTOCOLPGM("RAMBo FAN ");
+	if( tach1max > 500 ){
+		// bad RAMBo
+		SERIAL_PROTOCOLLNPGM("BAD");
+	} else {
+		SERIAL_PROTOCOLLNPGM("OK");
+    }
+	// cleanup after the test function
+	SET_INPUT(TACH_1);
+	WRITE(TACH_1, HIGH);
+#endif
+}
 
 #ifdef BACKLASH_X
 extern uint8_t st_backlash_x;
@@ -3420,22 +3504,16 @@ extern uint8_t st_backlash_y;
 
 void process_commands()
 {
-  #ifdef FANCHECK
-  if (fan_check_error){
-	if( fan_check_error == EFCE_DETECTED ){
-		fan_check_error = EFCE_REPORTED;
-      
-      if(is_usb_printing){
-        SERIAL_PROTOCOLLNRPGM(MSG_OCTOPRINT_PAUSE);
-      }
-      else{
-        lcd_pause_print();
-      }
-
-    } // otherwise it has already been reported, so just ignore further processing
-    return;
-  }
-  #endif
+#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.
+    }
+#endif
 
 	if (!buflen) return; //empty command
   #ifdef FILAMENT_RUNOUT_SUPPORT
@@ -3587,7 +3665,7 @@ void process_commands()
     
     Set of internal PRUSA commands
       
-          PRUSA [ Ping | PRN | FAN | fn | thx | uvlo | fsensor_recover | MMURES | RESET | fv | M28 | SN | Fir | Rev | Lang | Lz | Beat | FR ]
+          PRUSA [ Ping | PRN | FAN | fn | thx | uvlo | MMURES | RESET | fv | M28 | SN | Fir | Rev | Lang | Lz | Beat | FR ]
       
       - `Ping` 
       - `PRN` - Prints revision of the printer
@@ -3595,7 +3673,6 @@ void process_commands()
       - `fn` - Prints farm no.
       - `thx` 
       - `uvlo` 
-      - `fsensor_recover` - Filament sensor recover - restore print and continue
       - `MMURES` - Reset MMU
       - `RESET` - (Careful!)
       - `fv`  - ?
@@ -3607,7 +3684,9 @@ void process_commands()
       - `Lz` 
       - `Beat` - Kick farm link timer
       - `FR` - Full factory reset
-      - `nozzle D<diameter` - Set the nozzle diameter
+      - `nozzle set <diameter>` - set nozzle diameter (farm mode only), e.g. `PRUSA nozzle set 0.4`
+      - `nozzle D<diameter>` - check the nozzle diameter (farm mode only), works like M862.1 P, e.g. `PRUSA nozzle D0.4`
+      - `nozzle` - prints nozzle diameter (farm mode only), works like M862.1 P, e.g. `PRUSA nozzle`
     *
     */
 
@@ -3621,7 +3700,9 @@ void process_commands()
 		else if (code_seen("PRN")) { // PRUSA PRN
 		  printf_P(_N("%d"), status_number);
 
-        }else if (code_seen("FAN")) { // PRUSA FAN
+        } else if( code_seen("FANPINTST") ){
+            gcode_PRUSA_BadRAMBoFanTest();
+        }else if (code_seen("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) {
@@ -3641,12 +3722,6 @@ void process_commands()
                eeprom_update_byte((uint8_t*)EEPROM_UVLO,0); 
                enquecommand_P(PSTR("M24")); 
 		}	
-#ifdef FILAMENT_SENSOR
-		else if (code_seen("fsensor_recover")) // PRUSA fsensor_recover
-		{
-               fsensor_restore_print_and_continue();
-		}	
-#endif //FILAMENT_SENSOR
 		else if (code_seen("MMURES")) // PRUSA MMURES
 		{
 			mmu_reset();
@@ -3702,7 +3777,7 @@ void process_commands()
 	  lang_reset();
 
 	} else if(code_seen("Lz")) { // PRUSA Lz
-      EEPROM_save_B(EEPROM_BABYSTEP_Z,0);
+      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
         // Kick farm link timer
@@ -3782,10 +3857,14 @@ eeprom_update_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM,0xFFFF);
 		//  lcd_calibration();
 	  // }
 
-  }  
-  else if (code_seen('^')) {
-    // nothing, this is a version line
-  } else if(code_seen('G'))
+  } 
+  // This prevents reading files with "^" in their names.
+  // Since it is unclear, if there is some usage of this construct,
+  // it will be deprecated in 3.9 alpha a possibly completely removed in the future:
+  // else if (code_seen('^')) {
+  //  // nothing, this is a version line
+  // }
+  else if(code_seen('G'))
   {
 	gcode_in_progress = (int)code_value();
 //	printf_P(_N("BEGIN G-CODE=%u\n"), gcode_in_progress);
@@ -3967,8 +4046,19 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 
         #endif
 
+            get_coordinates(); // For X Y Z E F
+
+            // When recovering from a previous print move, restore the originally
+            // calculated target position on the first USB/SD command. This accounts
+            // properly for relative moves
+            if ((saved_target[0] != SAVED_TARGET_UNSET) &&
+                ((CMDBUFFER_CURRENT_TYPE == CMDBUFFER_CURRENT_TYPE_SDCARD) ||
+                 (CMDBUFFER_CURRENT_TYPE == CMDBUFFER_CURRENT_TYPE_USB_WITH_LINENR)))
+            {
+                memcpy(destination, saved_target, sizeof(destination));
+                saved_target[0] = SAVED_TARGET_UNSET;
+            }
 
-        get_coordinates(); // For X Y Z E F
 		if (total_filament_used > ((current_position[E_AXIS] - destination[E_AXIS]) * 100)) { //protection against total_filament_used overflow
 			total_filament_used = total_filament_used + ((destination[E_AXIS] - current_position[E_AXIS]) * 100);
 		}
@@ -4333,15 +4423,15 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 			if (result)
 			{
 				current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
-				plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
+				plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
 				current_position[Z_AXIS] = 50;
 				current_position[Y_AXIS] = 180;
-				plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
+				plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
 				st_synchronize();
 				lcd_show_fullscreen_message_and_wait_P(_T(MSG_REMOVE_STEEL_SHEET));
 				current_position[Y_AXIS] = pgm_read_float(bed_ref_points_4 + 1);
 				current_position[X_AXIS] = pgm_read_float(bed_ref_points_4);
-				plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
+				plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
 				st_synchronize();
 				gcode_G28(false, false, true);
 
@@ -4349,7 +4439,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 			if ((current_temperature_pinda > 35) && (farm_mode == false)) {
 				//waiting for PIDNA probe to cool down in case that we are not in farm mode
 				current_position[Z_AXIS] = 100;
-				plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
+				plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
 				if (lcd_wait_for_pinda(35) == false) { //waiting for PINDA probe to cool, if this takes more then time expected, temp. cal. fails
 					lcd_temp_cal_show_result(false);
 					break;
@@ -4373,12 +4463,12 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 			custom_message_state = 1;
 			lcd_setstatuspgm(_T(MSG_TEMP_CALIBRATION));
 			current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
-			plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
+			plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
 			current_position[X_AXIS] = PINDA_PREHEAT_X;
 			current_position[Y_AXIS] = PINDA_PREHEAT_Y;
-			plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
+			plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
 			current_position[Z_AXIS] = PINDA_PREHEAT_Z;
-			plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
+			plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
 			st_synchronize();
 
 			while (current_temperature_pinda < start_temp)
@@ -4390,10 +4480,10 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 			eeprom_update_byte((uint8_t*)EEPROM_CALIBRATION_STATUS_PINDA, 0); //invalidate temp. calibration in case that in will be aborted during the calibration process 
 
 			current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
-			plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
+			plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
 			current_position[X_AXIS] = pgm_read_float(bed_ref_points_4);
 			current_position[Y_AXIS] = pgm_read_float(bed_ref_points_4 + 1);
-			plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
+			plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
 			st_synchronize();
 
 			bool find_z_result = find_bed_induction_sensor_point_z(-1.f);
@@ -4421,12 +4511,12 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 				setTargetBed(50 + 10 * (temp - 30) / 5);
 //				setTargetHotend(255, 0);
 				current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
-				plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
+				plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
 				current_position[X_AXIS] = PINDA_PREHEAT_X;
 				current_position[Y_AXIS] = PINDA_PREHEAT_Y;
-				plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
+				plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
 				current_position[Z_AXIS] = PINDA_PREHEAT_Z;
-				plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
+				plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
 				st_synchronize();
 				while (current_temperature_pinda < temp)
 				{
@@ -4434,10 +4524,10 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 					serialecho_temperatures();
 				}
 				current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
-				plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
+				plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
 				current_position[X_AXIS] = pgm_read_float(bed_ref_points_4);
 				current_position[Y_AXIS] = pgm_read_float(bed_ref_points_4 + 1);
-				plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
+				plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
 				st_synchronize();
 				find_z_result = find_bed_induction_sensor_point_z(-1.f);
 				if (find_z_result == false) {
@@ -4477,7 +4567,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 		current_position[X_AXIS] = PINDA_PREHEAT_X;
 		current_position[Y_AXIS] = PINDA_PREHEAT_Y;
 		current_position[Z_AXIS] = PINDA_PREHEAT_Z;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
+		plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
 		st_synchronize();
 		
 		while (abs(degBed() - PINDA_MIN_T) > 1) {
@@ -4493,11 +4583,11 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 		eeprom_update_byte((uint8_t*)EEPROM_CALIBRATION_STATUS_PINDA, 0); //invalidate temp. calibration in case that in will be aborted during the calibration process 
 
 		current_position[Z_AXIS] = 5;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
+		plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
 
 		current_position[X_AXIS] = BED_X0;
 		current_position[Y_AXIS] = BED_Y0;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
+		plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
 		st_synchronize();
 		
 		find_bed_induction_sensor_point_z(-1.f);
@@ -4514,7 +4604,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 			current_position[X_AXIS] = PINDA_PREHEAT_X;
 			current_position[Y_AXIS] = PINDA_PREHEAT_Y;
 			current_position[Z_AXIS] = PINDA_PREHEAT_Z;
-			plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
+			plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
 			st_synchronize();
 			while (degBed() < t_c) {
 				delay_keep_alive(1000);
@@ -4525,10 +4615,10 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 				serialecho_temperatures();
 			}
 			current_position[Z_AXIS] = 5;
-			plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
+			plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
 			current_position[X_AXIS] = BED_X0;
 			current_position[Y_AXIS] = BED_Y0;
-			plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
+			plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
 			st_synchronize();
 			find_bed_induction_sensor_point_z(-1.f);
 			z_shift = (int)((current_position[Z_AXIS] - zero_z)*cs.axis_steps_per_unit[Z_AXIS]);
@@ -4582,7 +4672,9 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 	case_G80:
 	{
 		mesh_bed_leveling_flag = true;
-        static bool run = false;
+#ifndef PINDA_THERMISTOR
+        static bool run = false; // thermistor-less PINDA temperature compensation is running
+#endif // ndef PINDA_THERMISTOR
 
 #ifdef SUPPORT_VERBOSITY
 		int8_t verbosity_level = 0;
@@ -4630,13 +4722,9 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 		}
 		bool magnet_elimination = (eeprom_read_byte((uint8_t*)EEPROM_MBL_MAGNET_ELIMINATION) > 0);
 		
-		bool temp_comp_start = true;
-#ifdef PINDA_THERMISTOR
-		temp_comp_start = false;
-#endif //PINDA_THERMISTOR
-
-		if (temp_comp_start)
-		if (run == false && temp_cal_active == true && calibration_status_pinda() == true && target_temperature_bed >= 50) {
+#ifndef PINDA_THERMISTOR
+		if (run == false && temp_cal_active == true && calibration_status_pinda() == true && target_temperature_bed >= 50)
+		{
 			if (lcd_commands_type != LcdCommands::StopPrint) {
 				temp_compensation_start();
 				run = true;
@@ -4648,7 +4736,8 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 			}
 			break;
 		}
-		run = false;
+        run = false;
+#endif //PINDA_THERMISTOR
 		if (lcd_commands_type == LcdCommands::StopPrint) {
 			mesh_bed_leveling_flag = false;
 			break;
@@ -4669,7 +4758,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 		// Cycle through all points and probe them
 		// First move up. During this first movement, the babystepping will be reverted.
 		current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS] / 60, active_extruder);
+		plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 60, active_extruder);
 		// The move to the first calibration point.
 		current_position[X_AXIS] = BED_X0;
 		current_position[Y_AXIS] = BED_Y0;
@@ -4684,7 +4773,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 			world2machine_clamp(current_position[X_AXIS], current_position[Y_AXIS]);
 		#endif //SUPPORT_VERBOSITY
 
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[X_AXIS] / 30, active_extruder);
+		plan_buffer_line_curposXYZE(homing_feedrate[X_AXIS] / 30, active_extruder);
 		// Wait until the move is finished.
 		st_synchronize();
 
@@ -4736,7 +4825,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 			if((ix == 0) && (iy == 0)) current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
 			else current_position[Z_AXIS] += 2.f / nMeasPoints; //use relative movement from Z coordinate where PINDa triggered on previous point. This makes calibration faster.
 			float init_z_bckp = current_position[Z_AXIS];
-			plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], Z_LIFT_FEEDRATE, active_extruder);
+			plan_buffer_line_curposXYZE(Z_LIFT_FEEDRATE, active_extruder);
 			st_synchronize();
 
 			// Move to XY position of the sensor point.
@@ -4757,7 +4846,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 			#endif // SUPPORT_VERBOSITY
 
 			//printf_P(PSTR("after clamping: [%f;%f]\n"), current_position[X_AXIS], current_position[Y_AXIS]);
-			plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], XY_AXIS_FEEDRATE, active_extruder);
+			plan_buffer_line_curposXYZE(XY_AXIS_FEEDRATE, active_extruder);
 			st_synchronize();
 
 			// Go down until endstop is hit
@@ -4769,7 +4858,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 			if (init_z_bckp - current_position[Z_AXIS] < 0.1f) { //broken cable or initial Z coordinate too low. Go to MESH_HOME_Z_SEARCH and repeat last step (z-probe) again to distinguish between these two cases.
 				//printf_P(PSTR("Another attempt! Current Z position: %f\n"), current_position[Z_AXIS]);
 				current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
-				plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], Z_LIFT_FEEDRATE, active_extruder);
+				plan_buffer_line_curposXYZE(Z_LIFT_FEEDRATE, active_extruder);
 				st_synchronize();
 
 				if (!find_bed_induction_sensor_point_z((has_z && mesh_point > 0) ? z0 - Z_CALIBRATION_THRESHOLD : -10.f, nProbeRetry)) { //if we have data from z calibration max allowed difference is 1mm for each point, if we dont have data max difference is 10mm from initial point  
@@ -4824,7 +4913,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 			MYSERIAL.print(current_position[Z_AXIS], 5);
 		}
 		#endif // SUPPORT_VERBOSITY
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], Z_LIFT_FEEDRATE, active_extruder);
+		plan_buffer_line_curposXYZE(Z_LIFT_FEEDRATE, active_extruder);
 		st_synchronize();
 		if (mesh_point != nMeasPoints * nMeasPoints) {
                Sound_MakeSound(e_SOUND_TYPE_StandardAlert);
@@ -4841,14 +4930,14 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
                     // ~ Z-homing (can not be used "G28", because X & Y-homing would have been done before (Z-homing))
                     bState=enable_z_endstop(false);
                     current_position[Z_AXIS] -= 1;
-                    plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS] / 40, active_extruder);
+                    plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 40, active_extruder);
                     st_synchronize();
                     enable_z_endstop(true);
 #ifdef TMC2130
                     tmc2130_home_enter(Z_AXIS_MASK);
 #endif // TMC2130
                     current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
-                    plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS] / 40, active_extruder);
+                    plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 40, active_extruder);
                     st_synchronize();
 #ifdef TMC2130
                     tmc2130_home_exit();
@@ -4865,12 +4954,9 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 		clean_up_after_endstop_move(l_feedmultiply);
 //		SERIAL_ECHOLNPGM("clean up finished ");
 
-		bool apply_temp_comp = true;
-#ifdef PINDA_THERMISTOR
-		apply_temp_comp = false;
-#endif
-		if (apply_temp_comp)
+#ifndef PINDA_THERMISTOR
 		if(temp_cal_active == true && calibration_status_pinda() == true) temp_compensation_apply(); //apply PINDA temperature compensation
+#endif
 		babystep_apply(); // Apply Z height correction aka baby stepping before mesh bed leveing gets activated.
 //		SERIAL_ECHOLNPGM("babystep applied");
 		bool eeprom_bed_correction_valid = eeprom_read_byte((unsigned char*)EEPROM_BED_CORRECTION_VALID) == 1;
@@ -4981,7 +5067,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 		//unretract (after PINDA preheat retraction)
 		if (degHotend(active_extruder) > EXTRUDE_MINTEMP && temp_cal_active == true && calibration_status_pinda() == true && target_temperature_bed >= 50) {
 			current_position[E_AXIS] += default_retraction;
-			plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400, active_extruder);
+			plan_buffer_line_curposXYZE(400, active_extruder);
 		}
 		KEEPALIVE_STATE(NOT_BUSY);
 		// Restore custom message state
@@ -5286,31 +5372,36 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
     // -----------------------------------
     case 23: 
       starpos = (strchr(strchr_pointer + 4,'*'));
-      if(starpos!=NULL)
+	  if(starpos!=NULL)
         *(starpos)='\0';
       card.openFile(strchr_pointer + 4,true);
       break;
 
-    //! ### M24 - Start SD print
+    //! ### M24 - Start/resume SD print
     // ----------------------------------
     case 24:
-	  if (!card.paused) 
-		failstats_reset_print();
-      card.startFileprint();
-      starttime=_millis();
+	  if (isPrintPaused)
+          lcd_resume_print();
+      else
+      {
+          failstats_reset_print();
+          card.startFileprint();
+          starttime=_millis();
+      }
 	  break;
 
-    //! ### M25 - Pause SD print
-    // ----------------------------------
-    case 25:
-      card.pauseSDPrint();
-      break;
-
-    //! ### M26 - Set SD index
+    //! ### M26 S\<index\> - Set SD index
+    //! Set position in SD card file to index in bytes.
+    //! This command is expected to be called after M23 and before M24.
+    //! Otherwise effect of this command is undefined.
     // ----------------------------------
     case 26: 
       if(card.cardOK && code_seen('S')) {
-        card.setIndex(code_value_long());
+        long index = code_value_long();
+        card.setIndex(index);
+        // We don't disable interrupt during update of sdpos_atomic
+        // as we expect, that SD card print is not active in this moment
+        sdpos_atomic = index;
       }
       break;
 
@@ -5462,7 +5553,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 
 		// Reset the baby step value and the baby step applied flag.
 		calibration_status_store(CALIBRATION_STATUS_ASSEMBLED);
-		eeprom_update_word((uint16_t*)EEPROM_BABYSTEP_Z, 0);
+          eeprom_update_word(reinterpret_cast<uint16_t *>(&(EEPROM_Sheets_base->s[(eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet)))].z_offset)),0);
 
         // Reset the skew and offset in both RAM and EEPROM.
         reset_bed_offset_and_skew();
@@ -5847,7 +5938,6 @@ Sigma_Exit:
           {
               setTargetHotendSafe(code_value(), extruder);
           }
-          setWatch();
           break;
     }
 
@@ -5961,6 +6051,14 @@ Sigma_Exit:
     }
 
     //! ### M109 - Wait for extruder temperature
+    //! Parameters (not mandatory):
+    //! * S \<temp\> set extruder temperature
+    //! * R \<temp\> set extruder temperature
+    //!
+    //! Parameters S and R are treated identically.
+    //! Command always waits for both cool down and heat up.
+    //! If no parameters are supplied waits for previously
+    //! set extruder temperature.
     // -------------------------------------------------
     case 109:
     {
@@ -5977,10 +6075,8 @@ Sigma_Exit:
       #endif
       if (code_seen('S')) {
           setTargetHotendSafe(code_value(), extruder);
-              CooldownNoWait = true;
             } else if (code_seen('R')) {
                 setTargetHotendSafe(code_value(), extruder);
-        CooldownNoWait = false;
       }
       #ifdef AUTOTEMP
         if (code_seen('S')) autotemp_min=code_value();
@@ -5992,7 +6088,6 @@ Sigma_Exit:
         }
       #endif
 
-      setWatch();
       codenum = _millis();
 
       /* See if we are heating up or cooling down */
@@ -6015,9 +6110,15 @@ Sigma_Exit:
       break;
 
     //! ### M190 - Wait for bed temperature
-    // ---------------------------------------
+    //! Parameters (not mandatory):
+    //! * S \<temp\> set extruder temperature and wait for heating
+    //! * R \<temp\> set extruder temperature and wait for heating or cooling
+    //!
+    //! If no parameter is supplied, waits for heating or cooling to previously set temperature.
     case 190: 
     #if defined(TEMP_BED_PIN) && TEMP_BED_PIN > -1
+    {
+        bool CooldownNoWait = false;
         LCD_MESSAGERPGM(_T(MSG_BED_HEATING));
 		heating_status = 3;
 		if (farm_mode) { prusa_statistics(1); };
@@ -6029,7 +6130,6 @@ Sigma_Exit:
 		else if (code_seen('R')) 
 		{
           setTargetBed(code_value());
-          CooldownNoWait = false;
         }
         codenum = _millis();
         
@@ -6063,6 +6163,7 @@ Sigma_Exit:
 		heating_status = 4;
 
         previous_millis_cmd = _millis();
+    }
     #endif
         break;
 
@@ -7143,27 +7244,36 @@ Sigma_Exit:
     break;
     #endif //FILAMENTCHANGEENABLE
 
+  //! ### M25 - Pause SD print
   //! ### M601 - Pause print
+  //! ### M125 - Pause print (TODO: not implemented)
   // -------------------------------
+	case 25:
 	case 601:
 	{
-		cmdqueue_pop_front(); //trick because we want skip this command (M601) after restore
-		lcd_pause_print();
+        if (!isPrintPaused)
+        {
+            st_synchronize();
+            cmdqueue_pop_front(); //trick because we want skip this command (M601) after restore
+            lcd_pause_print();
+        }
 	}
 	break;
 
   //! ### M602 - Resume print
   // -------------------------------
 	case 602: {
-		lcd_resume_print();
+	  if (isPrintPaused)
+          lcd_resume_print();
 	}
 	break;
 
   //! ### M603 - Stop print
   // -------------------------------
-  case 603: {
-		lcd_print_stop();
+	case 603: {
+		Stop();
 	}
+	break;
 
 #ifdef PINDA_THERMISTOR
   //! ### M860 - Wait for extruder temperature (PINDA)
@@ -7305,21 +7415,34 @@ Sigma_Exit:
     // ----------------------------------------------
     /*!     
         Checks the parameters of the printer and gcode and performs compatibility check
-
-          - M862.1 [ P<nozzle_diameter> | Q ]
-
-          - M862.2 [ P<model_code> | Q ]
-
-          - M862.3 [ P<model_name> | Q ]
-
-          - M862.4 [ P<fw_version> | Q]
-
-          - M862.5 [ P<gcode_level> | Q]
-
-
-          When run with P<> argument, the check is performed against the input value.
-          When run with Q argument, the current value is shown.
-
+          - M862.1 { P<nozzle_diameter> | Q }
+          - M862.2 { P<model_code> | Q }
+          - M862.3 { P"<model_name>" | Q }
+          - M862.4 { P<fw_version> | Q }
+          - M862.5 { P<gcode_level> | Q }
+
+        When run with P<> argument, the check is performed against the input value.
+        When run with Q argument, the current value is shown.
+		  
+        M862.3 accepts text identifiers of printer types too.
+        The syntax of M862.3 is (note the quotes around the type):
+		
+                M862.3 P "MK3S"
+		  
+        Accepted printer type identifiers and their numeric counterparts:
+          - MK1         (100)
+          - MK2         (200)       
+          - MK2MM       (201)     
+          - MK2S        (202)      
+          - MK2SMM      (203)    
+          - MK2.5       (250)     
+          - MK2.5MMU2   (20250) 
+          - MK2.5S      (252)    
+          - MK2.5SMMU2S (20252)
+          - MK3         (300)
+          - MK3MMU2     (20300)
+          - MK3S        (302)
+          - MK3SMMU2S	(20302)
     */
     case 862: // M862: print checking
           float nDummy;
@@ -7388,11 +7511,12 @@ Sigma_Exit:
     break;
 #endif
 
-    //! ### M907 - Set digital trimpot motor current using axis codes
+    //! ### M907 - Set digital trimpot motor current in mA using axis codes
     // ---------------------------------------------------------------
     case 907:
     {
 #ifdef TMC2130
+        //! See tmc2130_cur2val() for translation to 0 .. 63 range
         for (int i = 0; i < NUM_AXIS; i++)
 			if(code_seen(axis_codes[i]))
 			{
@@ -7538,27 +7662,33 @@ Sigma_Exit:
     case 350: 
     {
 	#ifdef TMC2130
-		if(code_seen('E'))
+		for (int i=0; i<NUM_AXIS; i++) 
 		{
-			uint16_t res_new = code_value();
-			if ((res_new == 8) || (res_new == 16) || (res_new == 32) || (res_new == 64) || (res_new == 128))
+			if(code_seen(axis_codes[i]))
 			{
-				st_synchronize();
-				uint8_t axis = E_AXIS;
-				uint16_t res = tmc2130_get_res(axis);
-				tmc2130_set_res(axis, res_new);
-				cs.axis_ustep_resolution[axis] = res_new;
-				if (res_new > res)
+				uint16_t res_new = code_value();
+				bool res_valid = (res_new == 8) || (res_new == 16) || (res_new == 32); // resolutions valid for all axis
+				res_valid |= (i != E_AXIS) && ((res_new == 1) || (res_new == 2) || (res_new == 4)); // resolutions valid for X Y Z only
+				res_valid |= (i == E_AXIS) && ((res_new == 64) || (res_new == 128)); // resolutions valid for E only
+				if (res_valid)
 				{
-					uint16_t fac = (res_new / res);
-					cs.axis_steps_per_unit[axis] *= fac;
-					position[E_AXIS] *= fac;
-				}
-				else
-				{
-					uint16_t fac = (res / res_new);
-					cs.axis_steps_per_unit[axis] /= fac;
-					position[E_AXIS] /= fac;
+					
+					st_synchronize();
+					uint16_t res = tmc2130_get_res(i);
+					tmc2130_set_res(i, res_new);
+					cs.axis_ustep_resolution[i] = res_new;
+					if (res_new > res)
+					{
+						uint16_t fac = (res_new / res);
+						cs.axis_steps_per_unit[i] *= fac;
+						position[i] *= fac;
+					}
+					else
+					{
+						uint16_t fac = (res / res_new);
+						cs.axis_steps_per_unit[i] /= fac;
+						position[i] /= fac;
+					}
 				}
 			}
 		}
@@ -7699,7 +7829,7 @@ Sigma_Exit:
 	  	if (mmu_enabled) 
 		{
 			st_synchronize();
-			mmu_continue_loading(is_usb_printing);
+			mmu_continue_loading(is_usb_printing  || (lcd_commands_type == LcdCommands::Layer1Cal));
 			mmu_extruder = tmp_extruder; //filament change is finished
 			mmu_load_to_nozzle();
 		}
@@ -7743,7 +7873,7 @@ Sigma_Exit:
 #endif //defined(MMU_HAS_CUTTER) && defined(MMU_ALWAYS_CUT)
 				  mmu_command(MmuCmd::T0 + tmp_extruder);
 				  manage_response(true, true, MMU_TCODE_MOVE);
-		          mmu_continue_loading(is_usb_printing);
+		          mmu_continue_loading(is_usb_printing  || (lcd_commands_type == LcdCommands::Layer1Cal));
 
 				  mmu_extruder = tmp_extruder; //filament change is finished
 
@@ -8229,38 +8359,43 @@ void clamp_to_software_endstops(float target[3])
 }
 
 #ifdef MESH_BED_LEVELING
-    void mesh_plan_buffer_line(const float &x, const float &y, const float &z, const float &e, const float &feed_rate, const uint8_t extruder) {
+void mesh_plan_buffer_line(const float &x, const float &y, const float &z, const float &e, const float &feed_rate, const uint8_t extruder) {
         float dx = x - current_position[X_AXIS];
         float dy = y - current_position[Y_AXIS];
-        float dz = z - current_position[Z_AXIS];
         int n_segments = 0;
-		
+
         if (mbl.active) {
             float len = abs(dx) + abs(dy);
             if (len > 0)
                 // Split to 3cm segments or shorter.
                 n_segments = int(ceil(len / 30.f));
         }
-        
+
         if (n_segments > 1) {
+            // In a multi-segment move explicitly set the final target in the plan
+            // as the move will be recalculated in it's entirety
+            float gcode_target[NUM_AXIS];
+            gcode_target[X_AXIS] = x;
+            gcode_target[Y_AXIS] = y;
+            gcode_target[Z_AXIS] = z;
+            gcode_target[E_AXIS] = e;
+
+            float dz = z - current_position[Z_AXIS];
             float de = e - current_position[E_AXIS];
+
             for (int i = 1; i < n_segments; ++ i) {
                 float t = float(i) / float(n_segments);
-                if (saved_printing || (mbl.active == false)) return;
-                plan_buffer_line(
-                                 current_position[X_AXIS] + t * dx,
+                plan_buffer_line(current_position[X_AXIS] + t * dx,
                                  current_position[Y_AXIS] + t * dy,
                                  current_position[Z_AXIS] + t * dz,
                                  current_position[E_AXIS] + t * de,
-                                 feed_rate, extruder);
+                                 feed_rate, extruder, gcode_target);
+                if (waiting_inside_plan_buffer_line_print_aborted)
+                    return;
             }
         }
         // The rest of the path.
         plan_buffer_line(x, y, z, e, feed_rate, extruder);
-        current_position[X_AXIS] = x;
-        current_position[Y_AXIS] = y;
-        current_position[Z_AXIS] = z;
-        current_position[E_AXIS] = e;
     }
 #endif  // MESH_BED_LEVELING
     
@@ -8280,10 +8415,10 @@ void prepare_move()
      plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate*feedmultiply*(1./(60.f*100.f)), active_extruder);
 #endif
   }
+  if (waiting_inside_plan_buffer_line_print_aborted)
+      return;
 
-  for(int8_t i=0; i < NUM_AXIS; i++) {
-    current_position[i] = destination[i];
-  }
+  set_current_to_destination();
 }
 
 void prepare_arc_move(char isclockwise) {
@@ -8428,7 +8563,7 @@ bool bInhibitFlag;
 #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 (!moves_planned() && !IS_SD_PRINTING && !is_usb_printing && (lcd_commands_type != LcdCommands::Layer1Cal) && !wizard_active)
+			if (!moves_planned() && !IS_SD_PRINTING && !is_usb_printing && (lcd_commands_type != LcdCommands::Layer1Cal) && ! eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE))
 			{
 				if (fsensor_check_autoload())
 				{
@@ -8459,7 +8594,7 @@ if(0)
                               }
                               else
                               {
-                                   menu_submenu(mFilamentMenu);
+                                   menu_submenu(lcd_generic_preheat_menu);
                                    lcd_timeoutToStatus.start();
                               }
                          }
@@ -8794,6 +8929,8 @@ void delay_keep_alive(unsigned int ms)
 }
 
 static void wait_for_heater(long codenum, uint8_t extruder) {
+    if (!degTargetHotend(extruder))
+        return;
 
 #ifdef TEMP_RESIDENCY_TIME
 	long residencyStart;
@@ -8953,7 +9090,7 @@ void bed_check(float x_dimension, float y_dimension, int x_points_num, int y_poi
 	card.openFile(filename_wldsd, false);
 
 	/*destination[Z_AXIS] = mesh_home_z_search;
-	//plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], Z_LIFT_FEEDRATE, active_extruder);
+	//plan_buffer_line_curposXYZE(Z_LIFT_FEEDRATE, active_extruder);
 
 	plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], Z_LIFT_FEEDRATE, active_extruder);
 	for(int8_t i=0; i < NUM_AXIS; i++) {
@@ -8987,7 +9124,7 @@ void bed_check(float x_dimension, float y_dimension, int x_points_num, int y_poi
 		if (iy & 1) ix = (x_points_num - 1) - ix; // Zig zag
 		float z0 = 0.f;
 		/*destination[Z_AXIS] = mesh_home_z_search;
-		//plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], Z_LIFT_FEEDRATE, active_extruder);
+		//plan_buffer_line_curposXYZE(Z_LIFT_FEEDRATE, active_extruder);
 
 		plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], Z_LIFT_FEEDRATE, active_extruder);
 		for(int8_t i=0; i < NUM_AXIS; i++) {
@@ -9002,10 +9139,8 @@ void bed_check(float x_dimension, float y_dimension, int x_points_num, int y_poi
 		destination[X_AXIS] = ix * (x_dimension / (x_points_num - 1)) + shift_x;
 		destination[Y_AXIS] = iy * (y_dimension / (y_points_num - 1)) + shift_y;
 
-		mesh_plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], XY_AXIS_FEEDRATE/6, active_extruder);
-		for(int8_t i=0; i < NUM_AXIS; i++) {
-			current_position[i] = destination[i];
-		}
+        mesh_plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], XY_AXIS_FEEDRATE/6, active_extruder);
+        set_current_to_destination();
 		st_synchronize();
 
 	//	printf_P(PSTR("X = %f; Y= %f \n"), current_position[X_AXIS], current_position[Y_AXIS]);
@@ -9151,7 +9286,7 @@ void bed_analysis(float x_dimension, float y_dimension, int x_points_num, int y_
 	card.openFile(filename_wldsd, false);
 
 	current_position[Z_AXIS] = mesh_home_z_search;
-	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS] / 60, active_extruder);
+	plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 60, active_extruder);
 
 	int XY_AXIS_FEEDRATE = homing_feedrate[X_AXIS] / 20;
 	int Z_LIFT_FEEDRATE = homing_feedrate[Z_AXIS] / 40;
@@ -9176,14 +9311,14 @@ void bed_analysis(float x_dimension, float y_dimension, int x_points_num, int y_
 		if (iy & 1) ix = (x_points_num - 1) - ix; // Zig zag
 		float z0 = 0.f;
 		current_position[Z_AXIS] = mesh_home_z_search;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], Z_LIFT_FEEDRATE, active_extruder);
+		plan_buffer_line_curposXYZE(Z_LIFT_FEEDRATE, active_extruder);
 		st_synchronize();
 
 
 		current_position[X_AXIS] = 13.f + ix * (x_dimension / (x_points_num - 1)) - bed_zero_ref_x + shift_x;
 		current_position[Y_AXIS] = 6.4f + iy * (y_dimension / (y_points_num - 1)) - bed_zero_ref_y + shift_y;
 
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], XY_AXIS_FEEDRATE, active_extruder);
+		plan_buffer_line_curposXYZE(XY_AXIS_FEEDRATE, active_extruder);
 		st_synchronize();
 
 		if (!find_bed_induction_sensor_point_z(-10.f)) { //if we have data from z calibration max allowed difference is 1mm for each point, if we dont have data max difference is 10mm from initial point  
@@ -9289,7 +9424,8 @@ void bed_analysis(float x_dimension, float y_dimension, int x_points_num, int y_
 }
 #endif //HEATBED_ANALYSIS
 
-void temp_compensation_start() {
+#ifndef PINDA_THERMISTOR
+static void temp_compensation_start() {
 	
 	custom_message_type = CustomMsg::TempCompPreheat;
 	custom_message_state = PINDA_HEAT_T + 1;
@@ -9297,12 +9433,12 @@ void temp_compensation_start() {
 	if (degHotend(active_extruder) > EXTRUDE_MINTEMP) {
 		current_position[E_AXIS] -= default_retraction;
 	}
-	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400, active_extruder);
+	plan_buffer_line_curposXYZE(400, active_extruder);
 	
 	current_position[X_AXIS] = PINDA_PREHEAT_X;
 	current_position[Y_AXIS] = PINDA_PREHEAT_Y;
 	current_position[Z_AXIS] = PINDA_PREHEAT_Z;
-	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
+	plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
 	st_synchronize();
 	while (fabs(degBed() - target_temperature_bed) > 1) delay_keep_alive(1000);
 
@@ -9316,7 +9452,7 @@ void temp_compensation_start() {
 	custom_message_state = 0;
 }
 
-void temp_compensation_apply() {
+static void temp_compensation_apply() {
 	int i_add;
 	int z_shift = 0;
 	float z_shift_mm;
@@ -9339,6 +9475,7 @@ void temp_compensation_apply() {
 		//we have no temp compensation data
 	}
 }
+#endif //ndef PINDA_THERMISTOR
 
 float temp_comp_interpolation(float inp_temperature) {
 
@@ -9423,22 +9560,21 @@ void long_pause() //long pause print
 
 	//retract
 	current_position[E_AXIS] -= default_retraction;
-	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400, active_extruder);
+	plan_buffer_line_curposXYZE(400, active_extruder);
 
 	//lift z
 	current_position[Z_AXIS] += Z_PAUSE_LIFT;
 	if (current_position[Z_AXIS] > Z_MAX_POS) current_position[Z_AXIS] = Z_MAX_POS;
-	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 15, active_extruder);
+	plan_buffer_line_curposXYZE(15, active_extruder);
 
 	//Move XY to side
 	current_position[X_AXIS] = X_PAUSE_POS;
 	current_position[Y_AXIS] = Y_PAUSE_POS;
-	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 50, active_extruder);
+	plan_buffer_line_curposXYZE(50, active_extruder);
 
-	// Turn off the print fan
+	// Turn off the hotends and print fan
+    setAllTargetHotends(0);
 	fanSpeed = 0;
-
-	st_synchronize();
 }
 
 void serialecho_temperatures() {
@@ -9451,7 +9587,7 @@ void serialecho_temperatures() {
 	SERIAL_PROTOCOL_F(degBed(), 1);
 	SERIAL_PROTOCOLLN("");
 }
-extern uint32_t sdpos_atomic;
+
 #ifdef UVLO_SUPPORT
 
 void uvlo_()
@@ -9490,8 +9626,18 @@ void uvlo_()
       if (sd_position < 0) sd_position = 0;
     }
 
-    // Backup the feedrate in mm/min.
-    int feedrate_bckp = blocks_queued() ? (block_buffer[block_buffer_tail].nominal_speed * 60.f) : feedrate;
+    // save the global state at planning time
+    uint16_t feedrate_bckp;
+    if (blocks_queued())
+    {
+        memcpy(saved_target, current_block->gcode_target, sizeof(saved_target));
+        feedrate_bckp = current_block->gcode_feedrate;
+    }
+    else
+    {
+        saved_target[0] = SAVED_TARGET_UNSET;
+        feedrate_bckp = feedrate;
+    }
 
     // After this call, the planner queue is emptied and the current_position is set to a current logical coordinate.
     // The logical coordinate will likely differ from the machine coordinate if the skew calibration and mesh bed leveling
@@ -9538,7 +9684,6 @@ void uvlo_()
     st_synchronize();
 
     disable_e0();
-    disable_z();
     // Move Z up to the next 0th full step.
     // Write the file position.
     eeprom_update_dword((uint32_t*)(EEPROM_FILE_POSITION), sd_position);
@@ -9559,7 +9704,8 @@ void uvlo_()
     eeprom_update_float((float*)(EEPROM_UVLO_CURRENT_POSITION + 4), current_position[Y_AXIS]);
     eeprom_update_float((float*)EEPROM_UVLO_CURRENT_POSITION_Z , current_position[Z_AXIS]);
     // Store the current feed rate, temperatures, fan speed and extruder multipliers (flow rates)
-    EEPROM_save_B(EEPROM_UVLO_FEEDRATE, &feedrate_bckp);
+	eeprom_update_word((uint16_t*)EEPROM_UVLO_FEEDRATE, feedrate_bckp);
+    EEPROM_save_B(EEPROM_UVLO_FEEDMULTIPLY, &feedmultiply);
     eeprom_update_byte((uint8_t*)EEPROM_UVLO_TARGET_HOTEND, target_temperature[active_extruder]);
     eeprom_update_byte((uint8_t*)EEPROM_UVLO_TARGET_BED, target_temperature_bed);
     eeprom_update_byte((uint8_t*)EEPROM_UVLO_FAN_SPEED, fanSpeed);
@@ -9571,14 +9717,17 @@ void uvlo_()
 #endif
 #endif
 	eeprom_update_word((uint16_t*)(EEPROM_EXTRUDEMULTIPLY), (uint16_t)extrudemultiply);
+    // Store the saved target
+    eeprom_update_float((float*)(EEPROM_UVLO_SAVED_TARGET+0*4), saved_target[X_AXIS]);
+    eeprom_update_float((float*)(EEPROM_UVLO_SAVED_TARGET+1*4), saved_target[Y_AXIS]);
+    eeprom_update_float((float*)(EEPROM_UVLO_SAVED_TARGET+2*4), saved_target[Z_AXIS]);
+    eeprom_update_float((float*)(EEPROM_UVLO_SAVED_TARGET+3*4), saved_target[E_AXIS]);
 
     // Finaly store the "power outage" flag.
 	if(sd_print) eeprom_update_byte((uint8_t*)EEPROM_UVLO, 1);
 
     st_synchronize();
     printf_P(_N("stps%d\n"), tmc2130_rd_MSCNT(Z_AXIS));
-
-    disable_z();
     
     // Increment power failure counter
 	eeprom_update_byte((uint8_t*)EEPROM_POWER_COUNT, eeprom_read_byte((uint8_t*)EEPROM_POWER_COUNT) + 1);
@@ -9588,7 +9737,7 @@ void uvlo_()
 #if 0
     // Move the print head to the side of the print until all the power stored in the power supply capacitors is depleted.
     current_position[X_AXIS] = (current_position[X_AXIS] < 0.5f * (X_MIN_POS + X_MAX_POS)) ? X_MIN_POS : X_MAX_POS;
-    plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 500, active_extruder);
+    plan_buffer_line_curposXYZE(500, active_extruder);
     st_synchronize();
 #endif
 wdt_enable(WDTO_500MS);
@@ -9617,7 +9766,6 @@ tmc2130_set_current_r(Z_AXIS, 20);
 z_microsteps=tmc2130_rd_MSCNT(Z_TMC2130_CS);
 #endif //TMC2130
 planner_abort_hard();
-disable_z();
 
 //save current position only in case, where the printer is moving on Z axis, which is only when EEPROM_UVLO is 1
 //EEPROM_UVLO is 1 after normal uvlo or after recover_print(), when the extruder is moving on Z axis after rehome
@@ -9822,10 +9970,17 @@ void recover_machine_state_after_power_panic(bool bTiny)
 #endif
 #endif
   extrudemultiply = (int)eeprom_read_word((uint16_t*)(EEPROM_EXTRUDEMULTIPLY));
+
+  // 9) Recover the saved target
+  saved_target[X_AXIS] = eeprom_read_float((float*)(EEPROM_UVLO_SAVED_TARGET+0*4));
+  saved_target[Y_AXIS] = eeprom_read_float((float*)(EEPROM_UVLO_SAVED_TARGET+1*4));
+  saved_target[Z_AXIS] = eeprom_read_float((float*)(EEPROM_UVLO_SAVED_TARGET+2*4));
+  saved_target[E_AXIS] = eeprom_read_float((float*)(EEPROM_UVLO_SAVED_TARGET+3*4));
 }
 
 void restore_print_from_eeprom() {
 	int feedrate_rec;
+	int feedmultiply_rec;
 	uint8_t fan_speed_rec;
 	char cmd[30];
 	char filename[13];
@@ -9833,9 +9988,12 @@ void restore_print_from_eeprom() {
 	char dir_name[9];
 
 	fan_speed_rec = eeprom_read_byte((uint8_t*)EEPROM_UVLO_FAN_SPEED);
-	EEPROM_read_B(EEPROM_UVLO_FEEDRATE, &feedrate_rec);
+    feedrate_rec = eeprom_read_word((uint16_t*)EEPROM_UVLO_FEEDRATE);
+	EEPROM_read_B(EEPROM_UVLO_FEEDMULTIPLY, &feedmultiply_rec);
 	SERIAL_ECHOPGM("Feedrate:");
-	MYSERIAL.println(feedrate_rec);
+	MYSERIAL.print(feedrate_rec);
+	SERIAL_ECHOPGM(", feedmultiply:");
+	MYSERIAL.println(feedmultiply_rec);
 
 	depth = eeprom_read_byte((uint8_t*)EEPROM_DIR_DEPTH);
 	
@@ -9876,9 +10034,11 @@ void restore_print_from_eeprom() {
 	enquecommand(cmd);
   // Unretract.
 	enquecommand_P(PSTR("G1 E"  STRINGIFY(2*default_retraction)" F480"));
-  // Set the feedrate saved at the power panic.
+  // Set the feedrates saved at the power panic.
 	sprintf_P(cmd, PSTR("G1 F%d"), feedrate_rec);
 	enquecommand(cmd);
+	sprintf_P(cmd, PSTR("M220 S%d"), feedmultiply_rec);
+	enquecommand(cmd);
 	if (eeprom_read_byte((uint8_t*)EEPROM_UVLO_E_ABS))
 	{
 	  enquecommand_P(PSTR("M82")); //E axis abslute mode
@@ -10030,16 +10190,21 @@ void stop_and_save_print_to_ram(float z_move, float e_move)
   }
 #endif
 
-#if 0
-  saved_feedrate2 = feedrate; //save feedrate
-#else
-  // Try to deduce the feedrate from the first block of the planner.
-  // Speed is in mm/min.
-  saved_feedrate2 = blocks_queued() ? (block_buffer[block_buffer_tail].nominal_speed * 60.f) : feedrate;
-#endif
+  // save the global state at planning time
+  if (blocks_queued())
+  {
+      memcpy(saved_target, current_block->gcode_target, sizeof(saved_target));
+      saved_feedrate2 = current_block->gcode_feedrate;
+  }
+  else
+  {
+      saved_target[0] = SAVED_TARGET_UNSET;
+      saved_feedrate2 = feedrate;
+  }
 
 	planner_abort_hard(); //abort printing
 	memcpy(saved_pos, current_position, sizeof(saved_pos));
+    saved_feedmultiply2 = feedmultiply; //save feedmultiply
 	saved_active_extruder = active_extruder; //save active_extruder
 	saved_extruder_temperature = degTargetHotend(active_extruder);
 
@@ -10102,7 +10267,8 @@ void restore_print_from_ram_and_continue(float e_move)
 	
 #ifdef FANCHECK
 	// Do not allow resume printing if fans are still not ok
-	if( fan_check_error != EFCE_OK )return;
+	if ((fan_check_error != EFCE_OK) && (fan_check_error != EFCE_FIXED)) return;
+    if (fan_check_error == EFCE_FIXED) fan_check_error = EFCE_OK; //reenable serial stream processing if printing from usb
 #endif
 	
 //	for (int axis = X_AXIS; axis <= E_AXIS; axis++)
@@ -10116,7 +10282,6 @@ void restore_print_from_ram_and_continue(float e_move)
 		wait_for_heater(_millis(), saved_active_extruder);
 		heating_status = 2;
 	}
-	feedrate = saved_feedrate2; //restore feedrate
 	axis_relative_modes[E_AXIS] = saved_extruder_relative_mode;
 	float e = saved_pos[E_AXIS] - e_move;
 	plan_set_e_position(e);
@@ -10139,6 +10304,10 @@ void restore_print_from_ram_and_continue(float e_move)
     fans_check_enabled = true;
   #endif
 
+    // restore original feedrate/feedmultiply _after_ restoring the extruder position
+	feedrate = saved_feedrate2;
+	feedmultiply = saved_feedmultiply2;
+
 	memcpy(current_position, saved_pos, sizeof(saved_pos));
 	memcpy(destination, current_position, sizeof(destination));
 	if (saved_printing_type == PRINTING_TYPE_SD) { //was sd printing
@@ -10154,9 +10323,12 @@ void restore_print_from_ram_and_continue(float e_move)
 	else {
 		//not sd printing nor usb printing
 	}
-	printf_P(PSTR("ok\n")); //dummy response because of octoprint is waiting for this
+
+	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;
+    waiting_inside_plan_buffer_line_print_aborted = true; //unroll the stack
 }
 
 void print_world_coordinates()
@@ -10225,7 +10397,7 @@ static void print_time_remaining_init()
 void load_filament_final_feed()
 {
 	current_position[E_AXIS]+= FILAMENTCHANGE_FINALFEED;
-	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], FILAMENTCHANGE_EFEED_FINAL, active_extruder);
+	plan_buffer_line_curposXYZE(FILAMENTCHANGE_EFEED_FINAL, active_extruder);
 }
 
 //! @brief Wait for user to check the state
@@ -10355,22 +10527,22 @@ void M600_load_filament_movements()
 	do
 	{
 		current_position[E_AXIS] += 0.002;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 500, active_extruder);
+		plan_buffer_line_curposXYZE(500, active_extruder);
 		delay_keep_alive(2);
 	}
 	while (!lcd_clicked());
 	st_synchronize();
 	current_position[E_AXIS] += bowden_length[mmu_extruder];
-	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000, active_extruder);
+	plan_buffer_line_curposXYZE(3000, active_extruder);
 	current_position[E_AXIS] += FIL_LOAD_LENGTH - 60;
-	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 1400, active_extruder);
+	plan_buffer_line_curposXYZE(1400, active_extruder);
 	current_position[E_AXIS] += 40;
-	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400, active_extruder);
+	plan_buffer_line_curposXYZE(400, active_extruder);
 	current_position[E_AXIS] += 10;
-	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 50, active_extruder);
+	plan_buffer_line_curposXYZE(50, active_extruder);
 #else
 	current_position[E_AXIS]+= FILAMENTCHANGE_FIRSTFEED ;
-	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], FILAMENTCHANGE_EFEED_FIRST, active_extruder); 
+	plan_buffer_line_curposXYZE(FILAMENTCHANGE_EFEED_FIRST, active_extruder); 
 #endif                
 	load_filament_final_feed();
 	lcd_loading_filament();
@@ -10465,34 +10637,20 @@ if(!(bEnableForce_z||eeprom_read_byte((uint8_t*)EEPROM_SILENT)))
 
 void disable_force_z()
 {
-uint16_t z_microsteps=0;
+    uint16_t z_microsteps=0;
 
-if(!bEnableForce_z)
-     return;                                      // motor already disabled (may be ;-p )
-bEnableForce_z=false;
+    if(!bEnableForce_z) return;   // motor already disabled (may be ;-p )
 
-// alignment to full-step
-#ifdef TMC2130
-z_microsteps=tmc2130_rd_MSCNT(Z_TMC2130_CS);
-#endif // TMC2130
-planner_abort_hard();
-sei();
-plan_buffer_line(
-     current_position[X_AXIS], 
-     current_position[Y_AXIS], 
-     current_position[Z_AXIS]+float((1024-z_microsteps+7)>>4)/cs.axis_steps_per_unit[Z_AXIS], 
-     current_position[E_AXIS],
-     40, active_extruder);
-st_synchronize();
-
-// switching to silent mode
+    bEnableForce_z=false;
+
+    // switching to silent mode
 #ifdef TMC2130
-tmc2130_mode=TMC2130_MODE_SILENT;
-update_mode_profile();
-tmc2130_init(true);
+    tmc2130_mode=TMC2130_MODE_SILENT;
+    update_mode_profile();
+    tmc2130_init(true);
 #endif // TMC2130
 
-axis_known_position[Z_AXIS]=false; 
+    axis_known_position[Z_AXIS]=false;
 }
 
 

+ 4 - 1
Firmware/SdBaseFile.cpp

@@ -394,7 +394,10 @@ bool SdBaseFile::make83Name(const char* str, uint8_t* name, const char** ptr) {
       i = 8;   // place for extension
     } else {
       // illegal FAT characters
-      PGM_P p = PSTR("|<>^+=?/[];,*\"\\");
+      //PGM_P p = PSTR("|<>^+=?/[];,*\"\\");
+      // 2019-08-27 really?
+      // Microsoft defines, that only a subset of these characters is not allowed.
+      PGM_P p = PSTR("|<>?/*\"\\");
       uint8_t b;
       while ((b = pgm_read_byte(p++))) if (b == c) goto fail;
       // check size and only allow ASCII printable characters

+ 3 - 2
Firmware/adc.c

@@ -4,6 +4,7 @@
 #include <stdio.h>
 #include <avr/io.h>
 #include <avr/pgmspace.h>
+#include "pins.h"
 
 uint8_t adc_state;
 uint8_t adc_count;
@@ -24,8 +25,8 @@ void adc_init(void)
 	ADMUX |= (1 << REFS0);
 	ADCSRA |= (1 << ADEN);
 //	ADCSRA |= (1 << ADIF) | (1 << ADSC);
-	DIDR0 = (ADC_CHAN_MSK & 0xff);
-	DIDR2 = (ADC_CHAN_MSK >> 8);
+	DIDR0 = ((ADC_CHAN_MSK & ADC_DIDR_MSK) & 0xff);
+	DIDR2 = ((ADC_CHAN_MSK & ADC_DIDR_MSK) >> 8);
 	adc_reset();
 //	adc_sim_mask = 0b0101;
 //	adc_sim_mask = 0b100101;

+ 38 - 48
Firmware/cardreader.cpp

@@ -25,7 +25,6 @@ CardReader::CardReader()
    sdpos = 0;
    sdprinting = false;
    cardOK = false;
-   paused = false;
    saving = false;
    logging = false;
    autostart_atmillis=0;
@@ -137,8 +136,8 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m
 						SERIAL_ECHOPGM("Access date: ");
 						MYSERIAL.println(p.lastAccessDate);
 						SERIAL_ECHOLNPGM("");*/
-						creationDate = p.creationDate;
-						creationTime = p.creationTime;
+						modificationDate = p.lastWriteDate;
+						modificationTime = p.lastWriteTime;
 						//writeDate = p.lastAccessDate;
 						if (match != NULL) {
 							if (strcasecmp(match, filename) == 0) return;
@@ -203,6 +202,7 @@ void CardReader::initsd()
   }
   workDir=root;
   curDir=&root;
+  workDirDepth = 0;
 
   #ifdef SDCARD_SORT_ALPHA
 	presort();
@@ -241,24 +241,13 @@ void CardReader::startFileprint()
   if(cardOK)
   {
     sdprinting = true;
-	paused = false;
-     Stopped = false;
+    Stopped = false;
 	#ifdef SDCARD_SORT_ALPHA
 		//flush_presort();
 	#endif
   }
 }
 
-void CardReader::pauseSDPrint()
-{
-  if(sdprinting)
-  {
-    sdprinting = false;
-	paused = true;
-  }
-}
-
-
 void CardReader::openLogFile(const char* name)
 {
   logging = true;
@@ -407,9 +396,7 @@ void CardReader::openFile(const char* name,bool read, bool replace_current/*=tru
     SERIAL_ECHOLN(name);
   }
   sdprinting = false;
-  paused = false;
-  
- 
+
   SdFile myDir;
   const char *fname=name;
   diveSubfolder(fname,myDir);
@@ -491,24 +478,27 @@ uint32_t CardReader::getFileSize()
 
 void CardReader::getStatus()
 {
-  if(sdprinting){
-    SERIAL_PROTOCOL(longFilename);
-    SERIAL_PROTOCOLPGM("\n");
-    SERIAL_PROTOCOLRPGM(_N("SD printing byte "));////MSG_SD_PRINTING_BYTE
-    SERIAL_PROTOCOL(sdpos);
-    SERIAL_PROTOCOLPGM("/");
-    SERIAL_PROTOCOLLN(filesize);
-    uint16_t time = _millis()/60000 - starttime/60000;
-    SERIAL_PROTOCOL(itostr2(time/60));
-    SERIAL_PROTOCOL(':');
-    SERIAL_PROTOCOL(itostr2(time%60));
-    SERIAL_PROTOCOLPGM("\n");
-  }
-  else if (paused) {
-	SERIAL_PROTOCOLLNPGM("SD print paused");
-  }
-  else if (saved_printing) {
-	SERIAL_PROTOCOLLNPGM("Print saved");
+  if(sdprinting)
+  {
+      if (isPrintPaused) {
+          SERIAL_PROTOCOLLNPGM("SD print paused");
+      }
+      else if (saved_printing) {
+          SERIAL_PROTOCOLLNPGM("Print saved");
+      }
+      else {
+          SERIAL_PROTOCOL(longFilename);
+          SERIAL_PROTOCOLPGM("\n");
+          SERIAL_PROTOCOLRPGM(_N("SD printing byte "));////MSG_SD_PRINTING_BYTE
+          SERIAL_PROTOCOL(sdpos);
+          SERIAL_PROTOCOLPGM("/");
+          SERIAL_PROTOCOLLN(filesize);
+          uint16_t time = _millis()/60000 - starttime/60000;
+          SERIAL_PROTOCOL(itostr2(time/60));
+          SERIAL_PROTOCOL(':');
+          SERIAL_PROTOCOL(itostr2(time%60));
+          SERIAL_PROTOCOLPGM("\n");
+      }
   }
   else {
     SERIAL_PROTOCOLLNPGM("Not SD printing");
@@ -762,8 +752,8 @@ void CardReader::presort() {
 		#endif
 		#elif SDSORT_USES_STACK
 		char sortnames[fileCnt][LONG_FILENAME_LENGTH];
-		uint16_t creation_time[fileCnt];
-		uint16_t creation_date[fileCnt];
+		uint16_t modification_time[fileCnt];
+		uint16_t modification_date[fileCnt];
 		#endif
 
 		// Folder sorting needs 1 bit per entry for flags.
@@ -783,8 +773,8 @@ void CardReader::presort() {
 		// retaining only two filenames at a time. This is very
 		// slow but is safest and uses minimal RAM.
 		char name1[LONG_FILENAME_LENGTH + 1];
-		uint16_t creation_time_bckp;
-		uint16_t creation_date_bckp;
+		uint16_t modification_time_bckp;
+		uint16_t modification_date_bckp;
 
 		#endif
 		position = 0;
@@ -810,8 +800,8 @@ void CardReader::presort() {
 				#else
 				// Copy filenames into the static array
 				strcpy(sortnames[i], LONGEST_FILENAME);
-				creation_time[i] = creationTime;
-				creation_date[i] = creationDate;
+				modification_time[i] = modificationTime;
+				modification_date[i] = modificationDate;
 				#if SDSORT_CACHE_NAMES
 				strcpy(sortshort[i], filename);
 				#endif
@@ -836,12 +826,12 @@ void CardReader::presort() {
 			// Compare names from the array or just the two buffered names
 			#if SDSORT_USES_RAM
 			#define _SORT_CMP_NODIR() (strcasecmp(sortnames[o1], sortnames[o2]) > 0)
-			#define _SORT_CMP_TIME_NODIR() (((creation_date[o1] == creation_date[o2]) && (creation_time[o1] < creation_time[o2])) || \
-																	(creation_date[o1] < creation_date [o2]))
+			#define _SORT_CMP_TIME_NODIR() (((modification_date[o1] == modification_date[o2]) && (modification_time[o1] < modification_time[o2])) || \
+																	(modification_date[o1] < modification_date [o2]))
 			#else
 			#define _SORT_CMP_NODIR() (strcasecmp(name1, name2) > 0) //true if lowercase(name1) > lowercase(name2)
-			#define _SORT_CMP_TIME_NODIR() (((creation_date_bckp == creationDate) && (creation_time_bckp > creationTime)) || \
-																	(creation_date_bckp > creationDate))
+			#define _SORT_CMP_TIME_NODIR() (((modification_date_bckp == modificationDate) && (modification_time_bckp > modificationTime)) || \
+																	(modification_date_bckp > modificationDate))
 
 			#endif
 
@@ -892,8 +882,8 @@ void CardReader::presort() {
 					counter++;
 					getfilename_simple(positions[o1]);
 					strcpy(name1, LONGEST_FILENAME); // save (or getfilename below will trounce it)
-					creation_date_bckp = creationDate;
-					creation_time_bckp = creationTime;
+					modification_date_bckp = modificationDate;
+					modification_time_bckp = modificationTime;
 					#if HAS_FOLDER_SORTING
 					bool dir1 = filenameIsDir;
 					#endif

+ 3 - 5
Firmware/cardreader.h

@@ -25,7 +25,6 @@ public:
   void closefile(bool store_location=false);
   void release();
   void startFileprint();
-  void pauseSDPrint();
   uint32_t getFileSize();
   void getStatus();
   void printingHasFinished();
@@ -75,9 +74,8 @@ public:
   bool logging;
   bool sdprinting ;  
   bool cardOK ;
-  bool paused ;
   char filename[13];
-  uint16_t creationTime, creationDate;
+  uint16_t modificationTime, modificationDate;
   uint32_t cluster, position;
   char longFilename[LONG_FILENAME_LENGTH];
   bool filenameIsDir;
@@ -114,8 +112,8 @@ private:
     #endif
   #elif !SDSORT_USES_STACK
     char sortnames[SDSORT_LIMIT][FILENAME_LENGTH];
-    uint16_t creation_time[SDSORT_LIMIT];
-    uint16_t creation_date[SDSORT_LIMIT];
+    uint16_t modification_time[SDSORT_LIMIT];
+    uint16_t modification_date[SDSORT_LIMIT];
   #endif
 
   // Folder sorting uses an isDir array when caching items.

+ 41 - 28
Firmware/cmdqueue.cpp

@@ -224,9 +224,13 @@ void cmdqueue_dump_to_serial_single_line(int nr, const char *p)
     SERIAL_ECHOPGM("Entry nr: ");
     SERIAL_ECHO(nr);
     SERIAL_ECHOPGM(", type: ");
-    SERIAL_ECHO(int(*p));
+    int type = *p;
+    SERIAL_ECHO(type);
+    SERIAL_ECHOPGM(", size: ");
+    unsigned int size = *(unsigned int*)(p + 1);
+    SERIAL_ECHO(size);
     SERIAL_ECHOPGM(", cmd: ");
-    SERIAL_ECHO(p+1);  
+    SERIAL_ECHO(p + CMDHDRSIZE);
     SERIAL_ECHOLNPGM("");
 }
 
@@ -247,7 +251,7 @@ void cmdqueue_dump_to_serial()
             for (const char *p = cmdbuffer + bufindr; p < cmdbuffer + bufindw; ++ nr) {
                 cmdqueue_dump_to_serial_single_line(nr, p);
                 // Skip the command.
-                for (++p; *p != 0; ++ p);
+                for (p += CMDHDRSIZE; *p != 0; ++ p);
                 // Skip the gaps.
                 for (++p; p < cmdbuffer + bufindw && *p == 0; ++ p);
             }
@@ -255,14 +259,14 @@ void cmdqueue_dump_to_serial()
             for (const char *p = cmdbuffer + bufindr; p < cmdbuffer + sizeof(cmdbuffer); ++ nr) {
                 cmdqueue_dump_to_serial_single_line(nr, p);
                 // Skip the command.
-                for (++p; *p != 0; ++ p);
+                for (p += CMDHDRSIZE; *p != 0; ++ p);
                 // Skip the gaps.
                 for (++p; p < cmdbuffer + sizeof(cmdbuffer) && *p == 0; ++ p);
             }
             for (const char *p = cmdbuffer; p < cmdbuffer + bufindw; ++ nr) {
                 cmdqueue_dump_to_serial_single_line(nr, p);
                 // Skip the command.
-                for (++p; *p != 0; ++ p);
+                for (p += CMDHDRSIZE; *p != 0; ++ p);
                 // Skip the gaps.
                 for (++p; p < cmdbuffer + bufindw && *p == 0; ++ p);
             }
@@ -578,30 +582,8 @@ void get_command()
        ((serial_char == '#' || serial_char == ':') && comment_mode == false) ||
        serial_count >= (MAX_CMD_SIZE - 1) || n==-1)
     {
-      if(card.eof()){
-        SERIAL_PROTOCOLLNRPGM(_n("Done printing file"));////MSG_FILE_PRINTED
-        stoptime=_millis();
-        char time[30];
-        unsigned long t=(stoptime-starttime-pause_time)/1000;
-        pause_time = 0;
-        int hours, minutes;
-        minutes=(t/60)%60;
-        hours=t/60/60;
-        save_statistics(total_filament_used, t);
-        sprintf_P(time, PSTR("%i hours %i minutes"),hours, minutes);
-        SERIAL_ECHO_START;
-        SERIAL_ECHOLN(time);
-        lcd_setstatus(time);
-        card.printingHasFinished();
-        card.checkautostart(true);
-
-        if (farm_mode)
-        {
-            prusa_statistics(6);
-            lcd_commands_type = LcdCommands::FarmModeConfirm;
-        }
+      if(card.eof()) break;
 
-      }
       if(serial_char=='#')
         stop_buffering=true;
 
@@ -659,6 +641,37 @@ void get_command()
       else if(!comment_mode) cmdbuffer[bufindw+CMDHDRSIZE+serial_count++] = serial_char;
     }
   }
+  if(card.eof())
+  {
+      // file was fully buffered, but commands might still need to be planned!
+      // do *not* clear sdprinting until all SD commands are consumed to ensure
+      // SD state can be resumed from a saved printing state. sdprinting is only
+      // cleared by printingHasFinished after peforming all remaining moves.
+      if(!cmdqueue_calc_sd_length())
+      {
+          SERIAL_PROTOCOLLNRPGM(_n("Done printing file"));////MSG_FILE_PRINTED
+          stoptime=_millis();
+          char time[30];
+          unsigned long t=(stoptime-starttime-pause_time)/1000;
+          pause_time = 0;
+          int hours, minutes;
+          minutes=(t/60)%60;
+          hours=t/60/60;
+          save_statistics(total_filament_used, t);
+          sprintf_P(time, PSTR("%i hours %i minutes"),hours, minutes);
+          SERIAL_ECHO_START;
+          SERIAL_ECHOLN(time);
+          lcd_setstatus(time);
+          card.printingHasFinished();
+          card.checkautostart(true);
+
+          if (farm_mode)
+          {
+              prusa_statistics(6);
+              lcd_commands_type = LcdCommands::FarmModeConfirm;
+          }
+      }
+  }
 
   #endif //SDSUPPORT
 }

+ 2 - 0
Firmware/cmdqueue.h

@@ -45,6 +45,8 @@ extern bool cmdbuffer_front_already_processed;
 // Debugging information will be sent to serial line.
 //#define CMDBUFFER_DEBUG
 
+extern uint32_t sdpos_atomic;
+
 extern int serial_count;
 extern boolean comment_mode;
 extern char *strchr_pointer;

+ 14 - 5
Firmware/config.h

@@ -2,9 +2,21 @@
 #define _CONFIG_H
 
 
+#include "Configuration_prusa.h"
+#include "pins.h"
+
+#define IR_SENSOR_ANALOG (defined(VOLT_IR_PIN) && defined(IR_SENSOR))
+
 //ADC configuration
+#if !IR_SENSOR_ANALOG
 #define ADC_CHAN_MSK      0b0000001001011111 //used AD channels bit mask (0,1,2,3,4,6,9)
+#define ADC_DIDR_MSK      0b0000001001011111 //AD channels DIDR mask (1 ~ disabled digital input)
 #define ADC_CHAN_CNT      7         //number of used channels)
+#else //!IR_SENSOR_ANALOG
+#define ADC_CHAN_MSK      0b0000001101011111 //used AD channels bit mask (0,1,2,3,4,6,8,9)
+#define ADC_DIDR_MSK      0b0000001001011111 //AD channels DIDR mask (1 ~ disabled digital input)
+#define ADC_CHAN_CNT      8         //number of used channels)
+#endif //!IR_SENSOR_ANALOG
 #define ADC_OVRSAMPL      16        //oversampling multiplier
 #define ADC_CALLBACK      adc_ready //callback function ()
 
@@ -42,14 +54,11 @@
 #define W25X20CL_SPCR          SPI_SPCR(W25X20CL_SPI_RATE, 1, 1, 1, 0)
 #define W25X20CL_SPSR          SPI_SPSR(W25X20CL_SPI_RATE)
 
-#include "boards.h"
-#include "Configuration_prusa.h"
-
 //LANG - Multi-language support
-//#define LANG_MODE              0 // primary language only
+//define LANG_MODE              0 // primary language only
 #define LANG_MODE              1 // sec. language support
 
-#define LANG_SIZE_RESERVED     0x2800 // reserved space for secondary language (10240 bytes)
+#define LANG_SIZE_RESERVED     0x3000 // reserved space for secondary language (12288 bytes)
 
 
 #endif //_CONFIG_H

+ 104 - 12
Firmware/eeprom.cpp

@@ -41,7 +41,8 @@ bool eeprom_is_uninitialized<char>(char *address)
     return (0xff == eeprom_read_byte(reinterpret_cast<uint8_t*>(address)));
 }
 
-bool is_sheet_initialized(uint8_t sheet_num){
+bool eeprom_is_sheet_initialized(uint8_t sheet_num)
+{
   return (0xffff != eeprom_read_word(reinterpret_cast<uint16_t*>(&(EEPROM_Sheets_base->
   s[sheet_num].z_offset))));
 }
@@ -61,7 +62,14 @@ void eeprom_init()
     if (eeprom_read_word((uint16_t*)EEPROM_MMU_LOAD_FAIL_TOT) == 0xffff) eeprom_update_word((uint16_t *)EEPROM_MMU_LOAD_FAIL_TOT, 0);
     if (eeprom_read_byte((uint8_t*)EEPROM_MMU_FAIL) == 0xff) eeprom_update_byte((uint8_t *)EEPROM_MMU_FAIL, 0);
     if (eeprom_read_byte((uint8_t*)EEPROM_MMU_LOAD_FAIL) == 0xff) eeprom_update_byte((uint8_t *)EEPROM_MMU_LOAD_FAIL, 0);
-    if (eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet)) == 0xff) eeprom_update_byte(&(EEPROM_Sheets_base->active_sheet), 0);
+    if (eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet)) == EEPROM_EMPTY_VALUE)
+    {
+        eeprom_update_byte(&(EEPROM_Sheets_base->active_sheet), 0);
+        // When upgrading from version older version (before multiple sheets were implemented in v3.8.0)
+        // Sheet 1 uses the previous Live adjust Z (@EEPROM_BABYSTEP_Z)
+        int last_babystep = eeprom_read_word((uint16_t *)EEPROM_BABYSTEP_Z);
+        eeprom_update_word(reinterpret_cast<uint16_t *>(&(EEPROM_Sheets_base->s[0].z_offset)), last_babystep);
+    }
     
     for (uint_least8_t i = 0; i < (sizeof(Sheets::s)/sizeof(Sheets::s[0])); ++i)
     {
@@ -72,24 +80,108 @@ void eeprom_init()
         }
         if(is_uninitialized)
         {
+            SheetName sheetName;
+            eeprom_default_sheet_name(i,sheetName);
 
-            char sheet_PROGMEM_buffer[8];
-            strcpy_P(sheet_PROGMEM_buffer, (char *)pgm_read_word(&(defaultSheetNames[i])));
             for (uint_least8_t a = 0; a < sizeof(Sheet::name); ++a){
-                eeprom_write(&(EEPROM_Sheets_base->s[i].name[a]), sheet_PROGMEM_buffer[a]);
-            }
-          
-            // When upgrading from version older version (before multiple sheets were implemented in v3.8.0)
-	    // Sheet 1 uses the previous Live adjust Z (@EEPROM_BABYSTEP_Z)
-            if(i == 0){
-                int last_babystep = eeprom_read_word((uint16_t *)EEPROM_BABYSTEP_Z);
-                eeprom_write_word(reinterpret_cast<uint16_t *>(&(EEPROM_Sheets_base->s[i].z_offset)), last_babystep);
+                eeprom_write(&(EEPROM_Sheets_base->s[i].name[a]), sheetName.c[a]);
             }
         }
     }
+    if(!eeprom_is_sheet_initialized(eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet))))
+    {
+        eeprom_switch_to_next_sheet();
+    }
     check_babystep();
 }
 
+//! @brief Get default sheet name for index
+//!
+//! | index | sheetName |
+//! | ----- | --------- |
+//! | 0     | Smooth1   |
+//! | 1     | Smooth2   |
+//! | 2     | Textur1   |
+//! | 3     | Textur2   |
+//! | 4     | Custom1   |
+//! | 5     | Custom2   |
+//! | 6     | Custom3   |
+//! | 7     | Custom4   |
+//!
+//! @param[in] index
+//! @param[out] sheetName
+void eeprom_default_sheet_name(uint8_t index, SheetName &sheetName)
+{
+    static_assert(8 == sizeof(SheetName),"Default sheet name needs to be adjusted.");
 
+    if (index < 2)
+    {
+        strcpy_P(sheetName.c, PSTR("Smooth"));
+    }
+    else if (index < 4)
+    {
+        strcpy_P(sheetName.c, PSTR("Textur"));
+    }
+    else
+    {
+        strcpy_P(sheetName.c, PSTR("Custom"));
+    }
 
+    switch (index)
+    {
+    case 0:
+        sheetName.c[6] = '1';
+        break;
+    case 1:
+        sheetName.c[6] = '2';
+        break;
+    case 2:
+        sheetName.c[6] = '1';
+        break;
+    case 3:
+        sheetName.c[6] = '2';
+        break;
+    case 4:
+        sheetName.c[6] = '1';
+        break;
+    case 5:
+        sheetName.c[6] = '2';
+        break;
+    case 6:
+        sheetName.c[6] = '3';
+        break;
+    case 7:
+        sheetName.c[6] = '4';
+        break;
+    default:
+        break;
+    }
+
+    sheetName.c[7] = '\0';
+}
+
+//! @brief Get next initialized sheet
+//!
+//! If current sheet is the only sheet initialized, current sheet is returned.
+//!
+//! @param sheet Current sheet
+//! @return next initialized sheet
+//! @retval -1 no sheet is initialized
+int8_t eeprom_next_initialized_sheet(int8_t sheet)
+{
+    for (int8_t i = 0; i < static_cast<int8_t>(sizeof(Sheets::s)/sizeof(Sheet)); ++i)
+    {
+        ++sheet;
+        if (sheet >= static_cast<int8_t>(sizeof(Sheets::s)/sizeof(Sheet))) sheet = 0;
+        if (eeprom_is_sheet_initialized(sheet)) return sheet;
+    }
+    return -1;
+}
 
+void eeprom_switch_to_next_sheet()
+{
+    int8_t sheet = eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet));
+
+    sheet = eeprom_next_initialized_sheet(sheet);
+    if (sheet >= 0) eeprom_update_byte(&(EEPROM_Sheets_base->active_sheet), sheet);
+}

+ 27 - 13
Firmware/eeprom.h

@@ -3,15 +3,12 @@
 
 #include <stdint.h>
 
-#ifdef __cplusplus
-void eeprom_init();
-extern bool is_sheet_initialized(uint8_t sheet_num);
-#endif
-
+#define MAX_SHEETS 8
+#define MAX_SHEET_NAME_LENGTH 7
 
 typedef struct
 {
-    char name[7];     //!< Can be null terminated, doesn't need to be null terminated
+    char name[MAX_SHEET_NAME_LENGTH]; //!< Can be null terminated, doesn't need to be null terminated
     int16_t z_offset; //!< Z_BABYSTEP_MIN .. Z_BABYSTEP_MAX = Z_BABYSTEP_MIN*2/1000 [mm] .. Z_BABYSTEP_MAX*2/1000 [mm]
     uint8_t bed_temp; //!< 0 .. 254 [°C]
     uint8_t pinda_temp; //!< 0 .. 254 [°C]
@@ -19,26 +16,27 @@ typedef struct
 
 typedef struct
 {
-    Sheet s[3];
+    Sheet s[MAX_SHEETS];
     uint8_t active_sheet;
 } Sheets;
 // sizeof(Sheets). Do not change it unless EEPROM_Sheets_base is last item in EEPROM.
 // Otherwise it would move following items.
-#define EEPROM_SHEETS_SIZEOF 34
+#define EEPROM_SHEETS_SIZEOF 89
 
 #ifdef __cplusplus
 static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEPROM_SHEETS_SIZEOF.");
 #endif
 
 #define EEPROM_EMPTY_VALUE 0xFF
+#define EEPROM_EMPTY_VALUE16 0xFFFF
 // The total size of the EEPROM is
 // 4096 for the Atmega2560
 #define EEPROM_TOP 4096
 #define EEPROM_SILENT 4095
 #define EEPROM_LANG 4094
-#define EEPROM_BABYSTEP_X 4092
-#define EEPROM_BABYSTEP_Y 4090
-#define EEPROM_BABYSTEP_Z 4088
+#define EEPROM_BABYSTEP_X 4092 //unused
+#define EEPROM_BABYSTEP_Y 4090 //unused
+#define EEPROM_BABYSTEP_Z 4088 //legacy, multiple values stored now in EEPROM_Sheets_base
 #define EEPROM_CALIBRATION_STATUS 4087
 #define EEPROM_BABYSTEP_Z0 4085
 #define EEPROM_FILAMENTUSED 4081
@@ -76,7 +74,7 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
 #define EEPROM_UVLO_CURRENT_POSITION_Z	(EEPROM_FILE_POSITION - 4) //float for current position in Z
 #define EEPROM_UVLO_TARGET_HOTEND		(EEPROM_UVLO_CURRENT_POSITION_Z - 1)
 #define EEPROM_UVLO_TARGET_BED			(EEPROM_UVLO_TARGET_HOTEND - 1)
-#define EEPROM_UVLO_FEEDRATE			(EEPROM_UVLO_TARGET_BED - 2)
+#define EEPROM_UVLO_FEEDRATE			(EEPROM_UVLO_TARGET_BED - 2) //uint16_t
 #define EEPROM_UVLO_FAN_SPEED			(EEPROM_UVLO_FEEDRATE - 1) 
 #define EEPROM_FAN_CHECK_ENABLED		(EEPROM_UVLO_FAN_SPEED - 1)
 #define EEPROM_UVLO_MESH_BED_LEVELING     (EEPROM_FAN_CHECK_ENABLED - 9*2)
@@ -203,9 +201,14 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
 #define EEPROM_SHEETS_BASE (EEPROM_CHECK_GCODE - EEPROM_SHEETS_SIZEOF) // Sheets
 static Sheets * const EEPROM_Sheets_base = (Sheets*)(EEPROM_SHEETS_BASE);
 
+#define EEPROM_FSENSOR_PCB (EEPROM_SHEETS_BASE-1) // uint8
+#define EEPROM_FSENSOR_ACTION_NA (EEPROM_FSENSOR_PCB-1) // uint8
+
+#define EEPROM_UVLO_SAVED_TARGET (EEPROM_FSENSOR_ACTION_NA - 4*4) // 4 x float for saved target for all axes
+#define EEPROM_UVLO_FEEDMULTIPLY (EEPROM_UVLO_SAVED_TARGET - 2) // uint16_t for feedmultiply
 
 //This is supposed to point to last item to allow EEPROM overrun check. Please update when adding new items.
-#define EEPROM_LAST_ITEM EEPROM_SHEETS_BASE
+#define EEPROM_LAST_ITEM EEPROM_UVLO_FEEDMULTIPLY
 // !!!!!
 // !!!!! this is end of EEPROM section ... all updates MUST BE inserted before this mark !!!!!
 // !!!!!
@@ -235,5 +238,16 @@ enum
     EEPROM_MMU_CUTTER_ENABLED_always = 2,
 };
 
+#ifdef __cplusplus
+void eeprom_init();
+bool eeprom_is_sheet_initialized(uint8_t sheet_num);
+struct SheetName
+{
+    char c[sizeof(Sheet::name) + 1];
+};
+void eeprom_default_sheet_name(uint8_t index, SheetName &sheetName);
+int8_t eeprom_next_initialized_sheet(int8_t sheet);
+void eeprom_switch_to_next_sheet();
+#endif
 
 #endif // EEPROM_H

+ 29 - 30
Firmware/first_lay_cal.cpp

@@ -10,45 +10,52 @@
 #include "mmu.h"
 #include <avr/pgmspace.h>
 
-//! @brief Preheat
-void lay1cal_preheat()
+//! @brief Wait for preheat
+void lay1cal_wait_preheat()
 {
     static const char cmd_preheat_0[] PROGMEM = "M107";
-    static const char cmd_preheat_1[] PROGMEM = "M104 S" STRINGIFY(PLA_PREHEAT_HOTEND_TEMP);
-    static const char cmd_preheat_2[] PROGMEM = "M140 S" STRINGIFY(PLA_PREHEAT_HPB_TEMP);
-    static const char cmd_preheat_3[] PROGMEM = "M190 S" STRINGIFY(PLA_PREHEAT_HPB_TEMP);
-    static const char cmd_preheat_4[] PROGMEM = "M109 S" STRINGIFY(PLA_PREHEAT_HOTEND_TEMP);
-    static const char cmd_preheat_5[] PROGMEM = "G28";
-    static const char cmd_preheat_6[] PROGMEM = "G92 E0.0";
-
-    static const char * const preheat_cmd[] PROGMEM =
+    static const char cmd_preheat_1[] PROGMEM = "M190";
+    static const char cmd_preheat_2[] PROGMEM = "M109";
+    static const char cmd_preheat_4[] PROGMEM = "G28";
+    static const char cmd_preheat_5[] PROGMEM = "G92 E0.0";
+
+    const char * const preheat_cmd[] =
     {
         cmd_preheat_0,
         cmd_preheat_1,
         cmd_preheat_2,
-        cmd_preheat_3,
+        _T(MSG_M117_V2_CALIBRATION),
         cmd_preheat_4,
-        cmd_preheat_5, //call MSG_M117_V2_CALIBRATION before
-        cmd_preheat_6,
+        cmd_preheat_5,
     };
 
     for (uint8_t i = 0; i < (sizeof(preheat_cmd)/sizeof(preheat_cmd[0])); ++i)
     {
-        if (5 == i)  enquecommand_P(_T(MSG_M117_V2_CALIBRATION));
-        enquecommand_P(static_cast<char*>(pgm_read_ptr(&preheat_cmd[i])));
+        enquecommand_P(preheat_cmd[i]);
     }
 
 }
 
-//! @brief Print intro line
+//! @brief Load filament
 //! @param cmd_buffer character buffer needed to format gcodes
 //! @param filament filament to use (applies for MMU only)
-void lay1cal_intro_line(char *cmd_buffer, uint8_t filament)
+void lay1cal_load_filament(char *cmd_buffer, uint8_t filament)
+{
+    if (mmu_enabled)
+    {
+        enquecommand_P(PSTR("M83"));
+        enquecommand_P(PSTR("G1 Y-3.0 F1000.0"));
+        enquecommand_P(PSTR("G1 Z0.4 F1000.0"));
+        sprintf_P(cmd_buffer, PSTR("T%d"), filament);
+        enquecommand(cmd_buffer);
+    }
+
+}
+
+//! @brief Print intro line
+void lay1cal_intro_line()
 {
-    static const char cmd_intro_mmu_0[] PROGMEM = "M83";
-    static const char cmd_intro_mmu_1[] PROGMEM = "G1 Y-3.0 F1000.0";
-    static const char cmd_intro_mmu_2[] PROGMEM = "G1 Z0.4 F1000.0";
-    static const char cmd_intro_mmu_3[] PROGMEM = "G1 X55.0 E32.0 F1073.0"; // call T code before
+    static const char cmd_intro_mmu_3[] PROGMEM = "G1 X55.0 E32.0 F1073.0";
     static const char cmd_intro_mmu_4[] PROGMEM = "G1 X5.0 E32.0 F1800.0";
     static const char cmd_intro_mmu_5[] PROGMEM = "G1 X55.0 E8.0 F2000.0";
     static const char cmd_intro_mmu_6[] PROGMEM = "G1 Z0.3 F1000.0";
@@ -61,10 +68,7 @@ void lay1cal_intro_line(char *cmd_buffer, uint8_t filament)
 
     static const char * const intro_mmu_cmd[] PROGMEM =
     {
-        cmd_intro_mmu_0,
-        cmd_intro_mmu_1,
-        cmd_intro_mmu_2,
-        cmd_intro_mmu_3, // call T code before
+        cmd_intro_mmu_3,
         cmd_intro_mmu_4,
         cmd_intro_mmu_5,
         cmd_intro_mmu_6,
@@ -80,11 +84,6 @@ void lay1cal_intro_line(char *cmd_buffer, uint8_t filament)
     {
         for (uint8_t i = 0; i < (sizeof(intro_mmu_cmd)/sizeof(intro_mmu_cmd[0])); ++i)
         {
-            if (3 == i)
-                {
-                    sprintf_P(cmd_buffer, PSTR("T%d"), filament);
-                    enquecommand(cmd_buffer);
-                }
             enquecommand_P(static_cast<char*>(pgm_read_ptr(&intro_mmu_cmd[i])));
         }
     }

+ 3 - 2
Firmware/first_lay_cal.h

@@ -6,8 +6,9 @@
 #define FIRMWARE_FIRST_LAY_CAL_H_
 #include <stdint.h>
 
-void lay1cal_preheat();
-void lay1cal_intro_line(char *cmd_buffer, uint8_t filament);
+void lay1cal_wait_preheat();
+void lay1cal_load_filament(char *cmd_buffer, uint8_t filament);
+void lay1cal_intro_line();
 void lay1cal_before_meander();
 void lay1cal_meander(char *cmd_buffer);
 void lay1cal_square(char *cmd_buffer, uint8_t i);

+ 134 - 38
Firmware/fsensor.cpp

@@ -15,6 +15,10 @@
 #include "mmu.h"
 #include "cardreader.h"
 
+#include "adc.h"
+#include "temperature.h"
+#include "config.h"
+
 //! @name Basic parameters
 //! @{
 #define FSENSOR_CHUNK_LEN    0.64F  //!< filament sensor chunk length 0.64mm
@@ -53,15 +57,8 @@ bool fsensor_enabled = true;
 bool fsensor_watch_runout = true;
 //! not responding - is set if any communication error occurred during initialization or readout
 bool fsensor_not_responding = false;
-//! printing saved
-bool fsensor_printing_saved = false;
 //! enable/disable quality meassurement
 bool fsensor_oq_meassure_enabled = false;
-//! as explained in the CHECK_FSENSOR macro: this flag is set to true when fsensor posts
-//! the M600 into the command queue, which elliminates the hazard of having posted multiple M600's
-//! before the first one gets read and started processing.
-//! Btw., the IR fsensor could do up to 6 posts before the command queue managed to start processing the first M600 ;)
-static bool fsensor_m600_enqueued = false;
 
 //! number of errors, updated in ISR
 uint8_t fsensor_err_cnt = 0;
@@ -117,6 +114,13 @@ int16_t fsensor_oq_yd_max;
 uint16_t fsensor_oq_sh_sum;
 //! @}
 
+#if IR_SENSOR_ANALOG
+ClFsensorPCB oFsensorPCB;
+ClFsensorActionNA oFsensorActionNA;
+bool bIRsensorStateFlag=false;
+unsigned long nIRsensorLastTime;
+#endif //IR_SENSOR_ANALOG
+
 void fsensor_stop_and_save_print(void)
 {
     printf_P(PSTR("fsensor_stop_and_save_print\n"));
@@ -126,20 +130,28 @@ void fsensor_stop_and_save_print(void)
 void fsensor_restore_print_and_continue(void)
 {
     printf_P(PSTR("fsensor_restore_print_and_continue\n"));
-	fsensor_watch_runout = true;
 	fsensor_err_cnt = 0;
-	fsensor_m600_enqueued = false;
     restore_print_from_ram_and_continue(0); //XYZ = orig, E - no change
 }
 
+// fsensor_checkpoint_print cuts the current print job at the current position,
+// allowing new instructions to be inserted in the middle
+void fsensor_checkpoint_print(void)
+{
+    printf_P(PSTR("fsensor_checkpoint_print\n"));
+    stop_and_save_print_to_ram(0, 0);
+    restore_print_from_ram_and_continue(0);
+}
+
 void fsensor_init(void)
 {
 #ifdef PAT9125
 	uint8_t pat9125 = pat9125_init();
-    printf_P(PSTR("PAT9125_init:%hhu\n"), pat9125);
+     printf_P(PSTR("PAT9125_init:%hhu\n"), pat9125);
 #endif //PAT9125
 	uint8_t fsensor = eeprom_read_byte((uint8_t*)EEPROM_FSENSOR);
 	fsensor_autoload_enabled=eeprom_read_byte((uint8_t*)EEPROM_FSENS_AUTOLOAD_ENABLED);
+     fsensor_not_responding = false;
 #ifdef PAT9125
 	uint8_t oq_meassure_enabled = eeprom_read_byte((uint8_t*)EEPROM_FSENS_OQ_MEASS_ENABLED);
 	fsensor_oq_meassure_enabled = (oq_meassure_enabled == 1)?true:false;
@@ -150,19 +162,27 @@ void fsensor_init(void)
 		fsensor = 0; //disable sensor
 		fsensor_not_responding = true;
 	}
-	else
-		fsensor_not_responding = false;
 #endif //PAT9125
+#if IR_SENSOR_ANALOG
+     bIRsensorStateFlag=false;
+     oFsensorPCB=(ClFsensorPCB)eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_PCB);
+     oFsensorActionNA=(ClFsensorActionNA)eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_ACTION_NA);
+#endif //IR_SENSOR_ANALOG
 	if (fsensor)
-		fsensor_enable();
+		fsensor_enable(false);                  // (in this case) EEPROM update is not necessary
 	else
-		fsensor_disable();
-	printf_P(PSTR("FSensor %S\n"), (fsensor_enabled?PSTR("ENABLED"):PSTR("DISABLED\n")));
+		fsensor_disable(false);                 // (in this case) EEPROM update is not necessary
+	printf_P(PSTR("FSensor %S"), (fsensor_enabled?PSTR("ENABLED"):PSTR("DISABLED")));
+#if IR_SENSOR_ANALOG
+     printf_P(PSTR(" (sensor board revision: %S)\n"),(oFsensorPCB==ClFsensorPCB::_Rev03b)?PSTR("03b or newer"):PSTR("03 or older"));
+#else //IR_SENSOR_ANALOG
+     printf_P(PSTR("\n"));
+#endif //IR_SENSOR_ANALOG
 	if (check_for_ir_sensor()) ir_sensor_detected = true;
 
 }
 
-bool fsensor_enable(void)
+bool fsensor_enable(bool bUpdateEEPROM)
 {
 #ifdef PAT9125
 	if (mmu_enabled == false) { //filament sensor is pat9125, enable only if it is working
@@ -187,18 +207,34 @@ bool fsensor_enable(void)
 		FSensorStateMenu = 1;
 	}
 #else // PAT9125
-	fsensor_enabled = true;
-	eeprom_update_byte((uint8_t*)EEPROM_FSENSOR, 0x01);
-	FSensorStateMenu = 1;
-#endif // PAT9125
+#if IR_SENSOR_ANALOG
+     if(!fsensor_IR_check())
+          {
+          bUpdateEEPROM=true;
+          fsensor_enabled=false;
+          fsensor_not_responding=true;
+          FSensorStateMenu=0;
+          }
+     else {
+#endif //IR_SENSOR_ANALOG
+     fsensor_enabled=true;
+     fsensor_not_responding=false;
+     FSensorStateMenu=1;
+#if IR_SENSOR_ANALOG
+          }
+#endif //IR_SENSOR_ANALOG
+     if(bUpdateEEPROM)
+          eeprom_update_byte((uint8_t*)EEPROM_FSENSOR, FSensorStateMenu);
+#endif //PAT9125
 	return fsensor_enabled;
 }
 
-void fsensor_disable(void)
-{
+void fsensor_disable(bool bUpdateEEPROM)
+{ 
 	fsensor_enabled = false;
-	eeprom_update_byte((uint8_t*)EEPROM_FSENSOR, 0x00); 
 	FSensorStateMenu = 0;
+     if(bUpdateEEPROM)
+          eeprom_update_byte((uint8_t*)EEPROM_FSENSOR, 0x00); 
 }
 
 void fsensor_autoload_set(bool State)
@@ -529,8 +565,6 @@ void fsensor_enque_M600(){
 	printf_P(PSTR("fsensor_update - M600\n"));
 	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("PRUSA fsensor_recover"));
-	fsensor_m600_enqueued = true;
 	enquecommand_front_P((PSTR("M600")));
 }
 
@@ -542,7 +576,7 @@ void fsensor_enque_M600(){
 void fsensor_update(void)
 {
 #ifdef PAT9125
-		if (fsensor_enabled && fsensor_watch_runout && (fsensor_err_cnt > FSENSOR_ERR_MAX) && ( ! fsensor_m600_enqueued) )
+		if (fsensor_enabled && fsensor_watch_runout && (fsensor_err_cnt > FSENSOR_ERR_MAX))
 		{
 			bool autoload_enabled_tmp = fsensor_autoload_enabled;
 			fsensor_autoload_enabled = false;
@@ -575,24 +609,86 @@ void fsensor_update(void)
 			err |= (fsensor_oq_er_sum > 2);
 			err |= (fsensor_oq_yd_sum < (4 * FSENSOR_OQ_MIN_YD));
 
+            fsensor_restore_print_and_continue();
+			fsensor_autoload_enabled = autoload_enabled_tmp;
+			fsensor_oq_meassure_enabled = oq_meassure_enabled_tmp;
+
 			if (!err)
-			{
 				printf_P(PSTR("fsensor_err_cnt = 0\n"));
-				fsensor_restore_print_and_continue();
-			}
 			else
-			{
 				fsensor_enque_M600();
-				fsensor_watch_runout = false;
-			}
-			fsensor_autoload_enabled = autoload_enabled_tmp;
-			fsensor_oq_meassure_enabled = oq_meassure_enabled_tmp;
 		}
 #else //PAT9125
-		if ((digitalRead(IR_SENSOR_PIN) == 1) && CHECK_FSENSOR && fsensor_enabled && ir_sensor_detected && ( ! fsensor_m600_enqueued) )
-		{
-			fsensor_stop_and_save_print();
-			fsensor_enque_M600();
+		if (CHECK_FSENSOR && fsensor_enabled && ir_sensor_detected)
+        {
+               if(digitalRead(IR_SENSOR_PIN))
+               {                                  // IR_SENSOR_PIN ~ H
+#if IR_SENSOR_ANALOG
+                    if(!bIRsensorStateFlag)
+                    {
+                         bIRsensorStateFlag=true;
+                         nIRsensorLastTime=_millis();
+                    }
+                    else
+                    {
+                         if((_millis()-nIRsensorLastTime)>IR_SENSOR_STEADY)
+                         {
+                              uint8_t nMUX1,nMUX2;
+                              uint16_t nADC;
+                              bIRsensorStateFlag=false;
+                              // sequence for direct data reading from AD converter
+                              DISABLE_TEMPERATURE_INTERRUPT();
+                              nMUX1=ADMUX;        // ADMUX saving
+                              nMUX2=ADCSRB;
+                              adc_setmux(VOLT_IR_PIN);
+                              ADCSRA|=(1<<ADSC);  // first conversion after ADMUX change discarded (preventively)
+                              while(ADCSRA&(1<<ADSC))
+                                   ;
+                              ADCSRA|=(1<<ADSC);  // second conversion used
+                              while(ADCSRA&(1<<ADSC))
+                                   ;
+                              nADC=ADC;
+                              ADMUX=nMUX1;        // ADMUX restoring
+                              ADCSRB=nMUX2;
+                              ENABLE_TEMPERATURE_INTERRUPT();
+                              // end of sequence for ...
+                              if((oFsensorPCB==ClFsensorPCB::_Rev03b)&&((nADC*OVERSAMPLENR)>((int)IRsensor_Hopen_TRESHOLD)))
+                              {
+                                   fsensor_disable();
+                                   fsensor_not_responding = true;
+                                   printf_P(PSTR("IR sensor not responding (%d)!\n"),1);
+                                   if((ClFsensorActionNA)eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_ACTION_NA)==ClFsensorActionNA::_Pause)
+                                   if(oFsensorActionNA==ClFsensorActionNA::_Pause)
+                                        lcd_pause_print();
+                              }
+                              else
+                              {
+#endif //IR_SENSOR_ANALOG
+                                  fsensor_checkpoint_print();
+                                  fsensor_enque_M600();
+#if IR_SENSOR_ANALOG
+                              }
+                         }
+                    }
+               }
+               else
+               {                                  // IR_SENSOR_PIN ~ L
+                    bIRsensorStateFlag=false;
+#endif //IR_SENSOR_ANALOG
+               }
 		}
 #endif //PAT9125
 }
+
+#if IR_SENSOR_ANALOG
+bool fsensor_IR_check()
+{
+uint16_t volt_IR_int;
+bool bCheckResult;
+
+volt_IR_int=current_voltage_raw_IR;
+bCheckResult=(volt_IR_int<((int)IRsensor_Lmax_TRESHOLD))||(volt_IR_int>((int)IRsensor_Hmin_TRESHOLD));
+bCheckResult=bCheckResult&&(!((oFsensorPCB==ClFsensorPCB::_Rev03b)&&(volt_IR_int>((int)IRsensor_Hopen_TRESHOLD))));
+return(bCheckResult);
+}
+#endif //IR_SENSOR_ANALOG

+ 29 - 2
Firmware/fsensor.h

@@ -3,6 +3,7 @@
 #define FSENSOR_H
 
 #include <inttypes.h>
+#include "config.h"
 
 
 //! minimum meassured chunk length in steps
@@ -20,6 +21,8 @@ extern bool fsensor_oq_meassure_enabled;
 extern void fsensor_stop_and_save_print(void);
 //! restore print - restore position and heatup to original temperature
 extern void fsensor_restore_print_and_continue(void);
+//! split the current gcode stream to insert new instructions
+extern void fsensor_checkpoint_print(void);
 //! @}
 
 //! initialize
@@ -27,8 +30,8 @@ extern void fsensor_init(void);
 
 //! @name enable/disable
 //! @{
-extern bool fsensor_enable(void);
-extern void fsensor_disable(void);
+extern bool fsensor_enable(bool bUpdateEEPROM=true);
+extern void fsensor_disable(bool bUpdateEEPROM=true);
 //! @}
 
 //autoload feature enabled
@@ -65,4 +68,28 @@ extern void fsensor_st_block_begin(block_t* bl);
 extern void fsensor_st_block_chunk(block_t* bl, int cnt);
 //! @}
 
+
+#if IR_SENSOR_ANALOG
+#define IR_SENSOR_STEADY 10                       // [ms]
+
+enum class ClFsensorPCB:uint_least8_t
+{
+    _Old=0,
+    _Rev03b=1,
+    _Undef=EEPROM_EMPTY_VALUE
+};
+
+enum class ClFsensorActionNA:uint_least8_t
+{
+    _Continue=0,
+    _Pause=1,
+    _Undef=EEPROM_EMPTY_VALUE
+};
+
+extern ClFsensorPCB oFsensorPCB;
+extern ClFsensorActionNA oFsensorActionNA;
+
+extern bool fsensor_IR_check();
+#endif //IR_SENSOR_ANALOG
+
 #endif //FSENSOR_H

+ 143 - 72
Firmware/heatbed_pwm.cpp

@@ -19,91 +19,162 @@
 // So the automaton runs atop of inner 8 (or 16) cycles.
 // The finite automaton is running in the ISR(TIMER0_OVF_vect)
 
+// 2019-08-14 update: the original algorithm worked very well, however there were 2 regressions:
+// 1. 62kHz ISR requires considerable amount of processing power, 
+//    USB transfer speed dropped by 20%, which was most notable when doing short G-code segments.
+// 2. Some users reported TLed PSU started clicking when running at 120V/60Hz. 
+//    This looks like the original algorithm didn't maintain base PWM 30Hz, but only 15Hz
+// To address both issues, there is an improved approach based on the idea of leveraging
+// different CLK prescalers in some automaton states - i.e. when holding LOW or HIGH on the output pin,
+// we don't have to clock 62kHz, but we can increase the CLK prescaler for these states to 8 (or even 64).
+// That shall result in the ISR not being called that much resulting in regained performance
+// Theoretically this is relatively easy, however one must be very carefull handling the AVR's timer
+// control registers correctly, especially setting them in a correct order.
+// Some registers are double buffered, some changes are applied in next cycles etc.
+// The biggest problem was with the CLK prescaler itself - this circuit is shared among almost all timers,
+// we don't want to reset the prescaler counted value when transiting among automaton states.
+// Resetting the prescaler would make the PWM more precise, right now there are temporal segments
+// of variable period ranging from 0 to 7 62kHz ticks - that's logical, the timer must "sync"
+// to the new slower CLK after setting the slower prescaler value.
+// In our application, this isn't any significant problem and may be ignored.
+// Doing changes in timer's registers non-correctly results in artefacts on the output pin
+// - it can toggle unnoticed, which will result in bed clicking again.
+// That's why there are special transition states ZERO_TO_RISE and ONE_TO_FALL, which enable the
+// counter change its operation atomically and without artefacts on the output pin.
+// The resulting signal on the output pin was checked with an osciloscope. 
+// If there are any change requirements in the future, the signal must be checked with an osciloscope again,
+// ad-hoc changes may completely screw things up!
+
 ///! Definition off finite automaton states
 enum class States : uint8_t {
-  ZERO = 0,
-  RISE = 1,
-  ONE = 2,
-  FALL = 3
-};
-
-///! State table for the inner part of the finite automaton
-///! Basically it specifies what shall happen if the outer automaton is requesting setting the heat pin to 0 (OFF) or 1 (ON)
-///! ZERO: steady 0 (OFF), no change for the whole period
-///! RISE: 8 (16) fast PWM cycles with increasing duty up to steady ON
-///! ONE:  steady 1 (ON), no change for the whole period 
-///! FALL: 8 (16) fast PWM cycles with decreasing duty down to steady OFF
-///! @@TODO move it into progmem
-static States stateTable[4*2] = {
-// off             on
-States::ZERO,      States::RISE, // ZERO
-States::FALL,      States::ONE,  // RISE
-States::FALL,      States::ONE,  // ONE
-States::ZERO,      States::RISE  // FALL
+	ZERO_START = 0,///< entry point of the automaton - reads the soft_pwm_bed value for the next whole PWM cycle
+	ZERO,          ///< steady 0 (OFF), no change for the whole period
+	ZERO_TO_RISE,  ///< metastate allowing the timer change its state atomically without artefacts on the output pin
+	RISE,          ///< 16 fast PWM cycles with increasing duty up to steady ON
+	RISE_TO_ONE,   ///< metastate allowing the timer change its state atomically without artefacts on the output pin
+	ONE,           ///< steady 1 (ON), no change for the whole period 
+	ONE_TO_FALL,   ///< metastate allowing the timer change its state atomically without artefacts on the output pin
+	FALL,          ///< 16 fast PWM cycles with decreasing duty down to steady OFF
+	FALL_TO_ZERO   ///< metastate allowing the timer change its state atomically without artefacts on the output pin
 };
 
 ///! Inner states of the finite automaton
-static States state = States::ZERO;
+static States state = States::ZERO_START;
 
-///! Inner and outer PWM counters
-static uint8_t outer = 0;
-static uint8_t inner = 0;
+///! Fast PWM counter is used in the RISE and FALL states (62.5kHz)
+static uint8_t slowCounter = 0;
+///! Slow PWM counter is used in the ZERO and ONE states (62.5kHz/8 or 64)
+static uint8_t fastCounter = 0;
+///! PWM counter for the whole cycle - a cache for soft_pwm_bed
 static uint8_t pwm = 0;
 
-///! the slow PWM duty for the next 30Hz cycle
+///! The slow PWM duty for the next 30Hz cycle
 ///! Set in the whole firmware at various places
 extern unsigned char soft_pwm_bed;
 
-/// Fine tuning of automaton cycles
-#if 1
-static const uint8_t innerMax = 16;
-static const uint8_t innerShift = 4;
-#else
-static const uint8_t innerMax = 8;
-static const uint8_t innerShift = 5;
-#endif
+/// fastMax - how many fast PWM steps to do in RISE and FALL states
+/// 16 is a good compromise between silenced bed ("smooth" edges)
+/// and not burning the switching MOSFET
+static const uint8_t fastMax = 16;
+
+/// Scaler 16->256 for fast PWM
+static const uint8_t fastShift = 4;
+
+/// Increment slow PWM counter by slowInc every ZERO or ONE state
+/// This allows for fine-tuning the basic PWM switching frequency
+/// A possible further optimization - use a 64 prescaler (instead of 8)
+/// increment slowCounter by 1
+/// but use less bits of soft PWM - something like soft_pwm_bed >> 2
+/// that may further reduce the CPU cycles required by the bed heating automaton
+/// Due to the nature of bed heating the reduced PID precision may not be a major issue, however doing 8x less ISR(timer0_ovf) may significantly improve the performance 
+static const uint8_t slowInc = 1;
 
 ISR(TIMER0_OVF_vect)          // timer compare interrupt service routine
 {
-  if( inner ){
-    switch(state){
-    case States::ZERO:
-      OCR0B = 255;
-	  // Commenting the following code saves 6B, but it is left here for reference
-	  // It is not necessary to set it all over again, because we can only get into the ZERO state from the FALL state (which sets this register)
-//       TCCR0A |= (1 << COM0B1) | (1 << COM0B0);
-      break;
-    case States::RISE:
-      OCR0B = (innerMax - inner) << innerShift;
-//       TCCR0A |= (1 << COM0B1); // this bit is always 1
-      TCCR0A &= ~(1 << COM0B0);
-      break;  
-    case States::ONE:
-      OCR0B = 255;
-	  // again - may be skipped, because we get into the ONE state only from RISE (which sets this register)
-//       TCCR0A |= (1 << COM0B1);
-       TCCR0A &= ~(1 << COM0B0);
-      break;
-    case States::FALL:
-      OCR0B = (innerMax - inner) << innerShift; // this is the same as in RISE, because now we are setting the zero part of duty due to inverting mode
-      // must switch to inverting mode already here, because it takes a whole PWM cycle and it would make a "1" at the end of this pwm cycle
-	  TCCR0A |= /*(1 << COM0B1) |*/ (1 << COM0B0); 
-      break;
-    }
-    --inner;
-  } else {
-    if( ! outer ){ // at the end of 30Hz PWM period
-      // synchro is not needed (almost), soft_pwm_bed is just 1 byte, 1-byte write instruction is atomic
-      pwm = soft_pwm_bed << 1;
-    }
-	if( pwm > outer || pwm >= 254 ){
-      // soft_pwm_bed has a range of 0-127, that why a <<1 is done here. That also means that we may get only up to 254 which we want to be full-time 1 (ON)
-      state = stateTable[ uint8_t(state) * 2 + 1 ];
-    } else {
-      // switch OFF
-      state = stateTable[ uint8_t(state) * 2 + 0 ];
+	switch(state){
+	case States::ZERO_START:
+		pwm = soft_pwm_bed << 1;// expecting soft_pwm_bed to be 7bit!
+		if( pwm != 0 ){
+			state = States::ZERO;     // do nothing, let it tick once again after the 30Hz period
+		}
+		break;
+	case States::ZERO: // end of state ZERO - we'll either stay in ZERO or change to RISE
+		// In any case update our cache of pwm value for the next whole cycle from soft_pwm_bed
+		slowCounter += slowInc; // this does software timer_clk/256 or less (depends on slowInc)
+		if( slowCounter > pwm ){
+			return;
+		} // otherwise moving towards RISE
+		state = States::ZERO_TO_RISE; // and finalize the change in a transitional state RISE0
+		break;
+	// even though it may look like the ZERO state may be glued together with the ZERO_TO_RISE, don't do it
+	// the timer must tick once more in order to get rid of occasional output pin toggles.
+	case States::ZERO_TO_RISE:  // special state for handling transition between prescalers and switching inverted->non-inverted fast-PWM without toggling the output pin.
+		// It must be done in consequent steps, otherwise the pin will get flipped up and down during one PWM cycle.
+		// Also beware of the correct sequence of the following timer control registers initialization - it really matters!
+		state = States::RISE;     // prepare for standard RISE cycles
+		fastCounter = fastMax - 1;// we'll do 16-1 cycles of RISE
+		TCNT0 = 255;              // force overflow on the next clock cycle
+		TCCR0B = (1 << CS00);     // change prescaler to 1, i.e. 62.5kHz
+		TCCR0A &= ~(1 << COM0B0); // Clear OC0B on Compare Match, set OC0B at BOTTOM (non-inverting mode)
+		break;
+	case States::RISE:
+		OCR0B = (fastMax - fastCounter) << fastShift;
+		if( fastCounter ){
+			--fastCounter;
+		} else { // end of RISE cycles, changing into state ONE
+			state = States::RISE_TO_ONE;
+			OCR0B = 255;          // full duty
+			TCNT0 = 254;          // make the timer overflow in the next cycle
+			// @@TODO these constants are still subject to investigation
+		}
+		break;
+	case States::RISE_TO_ONE:
+		state = States::ONE;
+		OCR0B = 255;              // full duty
+		TCNT0 = 255;              // make the timer overflow in the next cycle
+		TCCR0B = (1 << CS01);     // change prescaler to 8, i.e. 7.8kHz
+		break;
+	case States::ONE:             // state ONE - we'll either stay in ONE or change to FALL
+		OCR0B = 255;
+		slowCounter += slowInc;   // this does software timer_clk/256 or less
+		if( slowCounter < pwm ){
+			return;
+		}
+		if( (soft_pwm_bed << 1) >= (255 - slowInc - 1) ){  //@@TODO simplify & explain
+			// if slowInc==2, soft_pwm == 251 will be the first to do short drops to zero. 252 will keep full heating
+			return;           // want full duty for the next ONE cycle again - so keep on heating and just wait for the next timer ovf
+		}
+		// otherwise moving towards FALL
+		// @@TODO it looks like ONE_TO_FALL isn't necessary, there are no artefacts at all
+		state = States::ONE;//_TO_FALL;
+//		TCCR0B = (1 << CS00);      // change prescaler to 1, i.e. 62.5kHz
+//		break;
+//	case States::ONE_TO_FALL:
+//		OCR0B = 255;              // zero duty
+		state=States::FALL;
+		fastCounter = fastMax - 1;// we'll do 16-1 cycles of RISE
+		TCNT0 = 255;              // force overflow on the next clock cycle
+		TCCR0B = (1 << CS00);     // change prescaler to 1, i.e. 62.5kHz
+		// must switch to inverting mode already here, because it takes a whole PWM cycle and it would make a "1" at the end of this pwm cycle
+		// COM0B1 remains set both in inverting and non-inverting mode
+		TCCR0A |= (1 << COM0B0);  // inverting mode
+		break;
+	case States::FALL:
+		OCR0B = (fastMax - fastCounter) << fastShift; // this is the same as in RISE, because now we are setting the zero part of duty due to inverting mode
+		//TCCR0A |= (1 << COM0B0); // already set in ONE_TO_FALL
+		if( fastCounter ){
+			--fastCounter;
+		} else {   // end of FALL cycles, changing into state ZERO
+			state = States::FALL_TO_ZERO;
+			TCNT0 = 128; //@@TODO again - need to wait long enough to propagate the timer state changes
+			OCR0B = 255;
+		}
+		break;
+	case States::FALL_TO_ZERO:
+		state = States::ZERO_START; // go to read new soft_pwm_bed value for the next cycle
+		TCNT0 = 128;
+		OCR0B = 255;
+		TCCR0B = (1 << CS01); // change prescaler to 8, i.e. 7.8kHz
+		break;		
     }
-    ++outer;
-    inner = innerMax;
-  }
 }

+ 3 - 3
Firmware/lcd.cpp

@@ -189,9 +189,10 @@ static void lcd_begin(uint8_t clear)
 	#endif
 }
 
-static void lcd_putchar(char c, FILE *)
+static int lcd_putchar(char c, FILE *)
 {
 	lcd_write(c);
+	return 0;
 }
 
 void lcd_init(void)
@@ -760,8 +761,7 @@ void lcd_buttons_update(void)
             //else if (menu_menu == lcd_move_z) lcd_quick_feedback();
             //lcd_button_pressed is set back to false via lcd_quick_feedback function
         }
-        else
-            lcd_long_press_active = 0;
+        lcd_long_press_active = 0;
     }
 
 	lcd_buttons = newbutton;

+ 0 - 1
Firmware/lcd.h

@@ -11,7 +11,6 @@
 extern FILE _lcdout;
 
 #define lcdout (&_lcdout)
-extern void lcd_putchar(char c, FILE *stream);
 
 extern void lcd_init(void);
 

+ 61 - 15
Firmware/menu.cpp

@@ -15,7 +15,7 @@
 
 extern int32_t lcd_encoder;
 
-#define MENU_DEPTH_MAX       6
+#define MENU_DEPTH_MAX       7
 
 static menu_record_t menu_stack[MENU_DEPTH_MAX];
 
@@ -184,6 +184,22 @@ static void menu_draw_item_puts_P(char type_char, const char* str)
     lcd_printf_P(PSTR("%c%-18.18S%c"), menu_selection_mark(), str, type_char);
 }
 
+static void menu_draw_toggle_puts_P(const char* str, const char* toggle, const uint8_t settings)
+{
+    //settings:
+    //xxxxxcba
+    //a = selection mark. If it's set(1), then '>' will be used as the first character on the line. Else leave blank
+    //b = toggle string is from progmem
+    //c = do not set cursor at all. Must be handled externally.
+    char lineStr[LCD_WIDTH + 1];
+    const char eol = (toggle == NULL)?LCD_STR_ARROW_RIGHT[0]:' ';
+    if (toggle == NULL) toggle = _T(MSG_NA);
+    sprintf_P(lineStr, PSTR("%c%-18.18S"), (settings & 0x01)?'>':' ', str);
+    sprintf_P(lineStr + LCD_WIDTH - ((settings & 0x02)?strlen_P(toggle):strlen(toggle)) - 3, (settings & 0x02)?PSTR("[%S]%c"):PSTR("[%s]%c"), toggle, eol);
+    if (!(settings & 0x04)) lcd_set_cursor(0, menu_row);
+    fputs(lineStr, lcdout);
+}
+
 //! @brief Format sheet name
 //!
 //! @param[in] sheet_E Sheet in EEPROM
@@ -203,9 +219,13 @@ void menu_format_sheet_E(const Sheet &sheet_E, SheetFormatBuffer &buffer)
 void menu_format_sheet_select_E(const Sheet &sheet_E, SheetFormatBuffer &buffer)
 {
     uint_least8_t index = sprintf_P(buffer.c,PSTR("%-9.9S["), _T(MSG_SHEET));
-    eeprom_read_block(&(buffer.c[index]), sheet_E.name, 7);
-	buffer.c[index + 7] = ']';
-    buffer.c[index + 8] = '\0';
+    eeprom_read_block(&(buffer.c[index]), sheet_E.name, sizeof(sheet_E.name)/sizeof(sheet_E.name[0]));
+    for (const uint_least8_t start = index; static_cast<uint_least8_t>(index - start) < sizeof(sheet_E.name)/sizeof(sheet_E.name[0]); ++index)
+    {
+        if (buffer.c[index] == '\0') break;
+    }
+	buffer.c[index] = ']';
+    buffer.c[index + 1] = '\0';
 }
 
 static void menu_draw_item_select_sheet_E(char type_char, const Sheet &sheet)
@@ -290,14 +310,18 @@ uint8_t menu_item_submenu_E(const Sheet &sheet, menu_func_t submenu)
     return 0;
 }
 
-uint8_t menu_item_submenu_select_sheet_E(const Sheet &sheet, menu_func_t submenu)
+uint8_t menu_item_function_E(const Sheet &sheet, menu_func_t func)
 {
     if (menu_item == menu_line)
     {
-        if (lcd_draw_update) menu_draw_item_select_sheet_E(LCD_STR_ARROW_RIGHT[0], sheet);
+        if (lcd_draw_update) menu_draw_item_select_sheet_E(' ', sheet);
         if (menu_clicked && (lcd_encoder == menu_item))
         {
-            menu_submenu(submenu);
+            menu_clicked = false;
+            lcd_consume_click();
+            lcd_update_enabled = 0;
+            if (func) func();
+            lcd_update_enabled = 1;
             return menu_item_ret();
         }
     }
@@ -367,6 +391,33 @@ uint8_t menu_item_function_P(const char* str, char number, void (*func)(uint8_t)
     return 0;
 }
 
+uint8_t menu_item_toggle_P(const char* str, const char* toggle, menu_func_t func, const uint8_t settings)
+{
+	if (menu_item == menu_line)
+	{
+		if (lcd_draw_update) menu_draw_toggle_puts_P(str, toggle, settings | (menu_selection_mark()=='>'));
+		if (menu_clicked && (lcd_encoder == menu_item))
+		{
+			if (toggle == NULL) // print N/A warning message
+			{
+				menu_submenu(func);
+				return menu_item_ret();
+			}
+			else // do the actual toggling
+			{
+				menu_clicked = false;
+				lcd_consume_click();
+				lcd_update_enabled = 0;
+				if (func) func();
+				lcd_update_enabled = 1;
+				return menu_item_ret();
+			}
+		}
+	}
+	menu_item++;
+	return 0;
+}
+
 uint8_t menu_item_gcode_P(const char* str, const char* str_gcode)
 {
 	if (menu_item == menu_line)
@@ -382,17 +433,12 @@ uint8_t menu_item_gcode_P(const char* str, const char* str_gcode)
 	return 0;
 }
 
-
-const char menu_20x_space[] PROGMEM = "                    ";
-
 const char menu_fmt_int3[] PROGMEM = "%c%.15S:%s%3d";
 
 const char menu_fmt_float31[] PROGMEM = "%-12.12S%+8.1f";
 
 const char menu_fmt_float13[] PROGMEM = "%c%-13.13S%+5.3f";
 
-const char menu_fmt_float13off[] PROGMEM = "%c%-13.13S%6.6s";
-
 template<typename T>
 static void menu_draw_P(char chr, const char* str, int16_t val);
 
@@ -401,8 +447,8 @@ void menu_draw_P<int16_t*>(char chr, const char* str, int16_t val)
 {
 	int text_len = strlen_P(str);
 	if (text_len > 15) text_len = 15;
-	char spaces[21];
-	strcpy_P(spaces, menu_20x_space);
+	char spaces[LCD_WIDTH + 1] = {0};
+    memset(spaces,' ', LCD_WIDTH);
 	if (val <= -100) spaces[15 - text_len - 1] = 0;
 	else spaces[15 - text_len] = 0;
 	lcd_printf_P(menu_fmt_int3, chr, str, spaces, val);
@@ -415,7 +461,7 @@ void menu_draw_P<uint8_t*>(char chr, const char* str, int16_t val)
     float factor = 1.0f + static_cast<float>(val) / 1000.0f;
     if (val <= _md->minEditValue)
     {
-        lcd_printf_P(menu_fmt_float13off, chr, str, " [off]");
+        menu_draw_toggle_puts_P(str, _T(MSG_OFF), 0x04 | 0x02 | (chr=='>'));
     }
     else
     {

+ 6 - 2
Firmware/menu.h

@@ -103,8 +103,8 @@ extern uint8_t menu_item_submenu_P(const char* str, menu_func_t submenu);
 #define MENU_ITEM_SUBMENU_E(sheet, submenu) do { if (menu_item_submenu_E(sheet, submenu)) return; } while (0)
 extern uint8_t menu_item_submenu_E(const Sheet &sheet, menu_func_t submenu);
 
-#define MENU_ITEM_SUBMENU_SELECT_SHEET_E(sheet, submenu) do { if (menu_item_submenu_select_sheet_E(sheet, submenu)) return; } while (0)
-extern uint8_t menu_item_submenu_select_sheet_E(const Sheet &sheet, menu_func_t submenu);
+#define MENU_ITEM_FUNCTION_E(sheet, submenu) do { if (menu_item_function_E(sheet, submenu)) return; } while (0)
+extern uint8_t menu_item_function_E(const Sheet &sheet, menu_func_t func);
 
 #define MENU_ITEM_BACK_P(str) do { if (menu_item_back_P(str)) return; } while (0)
 extern uint8_t menu_item_back_P(const char* str);
@@ -118,6 +118,10 @@ extern uint8_t menu_item_function_P(const char* str, menu_func_t func);
 #define MENU_ITEM_FUNCTION_NR_P(str, number, func, fn_par) do { if (menu_item_function_P(str, number, func, fn_par)) return; } while (0)
 extern uint8_t menu_item_function_P(const char* str, char number, void (*func)(uint8_t), uint8_t fn_par);
 
+#define MENU_ITEM_TOGGLE_P(str, toggle, func) do { if (menu_item_toggle_P(str, toggle, func, 0x02)) return; } while (0)
+#define MENU_ITEM_TOGGLE(str, toggle, func) do { if (menu_item_toggle_P(str, toggle, func, 0x00)) return; } while (0)
+extern uint8_t menu_item_toggle_P(const char* str, const char* toggle, menu_func_t func, const uint8_t settings);
+
 #define MENU_ITEM_GCODE_P(str, str_gcode) do { if (menu_item_gcode_P(str, str_gcode)) return; } while (0)
 extern uint8_t menu_item_gcode_P(const char* str, const char* str_gcode);
 

+ 2 - 2
Firmware/mesh_bed_calibration.cpp

@@ -919,7 +919,7 @@ static inline void go_xy(float x, float y, float fr)
 
 static inline void go_to_current(float fr)
 {
-    plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], fr, active_extruder);
+    plan_buffer_line_curposXYZE(fr, active_extruder);
     st_synchronize();
 }
 
@@ -2769,7 +2769,7 @@ bool sample_z() {
 	//make space
 	current_position[Z_AXIS] += 150;
 	go_to_current(homing_feedrate[Z_AXIS] / 60);
-	//plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feedrate, active_extruder););
+	//plan_buffer_line_curposXYZE(feedrate, active_extruder););
 
 	lcd_show_fullscreen_message_and_wait_P(_T(MSG_PLACE_STEEL_SHEET));
 

+ 45 - 15
Firmware/messages.c

@@ -9,7 +9,6 @@
 
 //internationalized messages
 const char MSG_AUTO_HOME[] PROGMEM_I1 = ISTR("Auto home"); ////
-const char MSG_AUTO_MODE_ON[] PROGMEM_I1 = ISTR("Mode [auto power]"); ////
 const char MSG_BABYSTEP_Z[] PROGMEM_I1 = ISTR("Live adjust Z"); //// c=18
 const char MSG_BABYSTEP_Z_NOT_SET[] PROGMEM_I1 = ISTR("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."); ////c=20 r=12
 const char MSG_BED[] PROGMEM_I1 = ISTR("Bed"); ////
@@ -22,9 +21,7 @@ const char MSG_CARD_MENU[] PROGMEM_I1 = ISTR("Print from SD"); ////
 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_DETECTED[] PROGMEM_I1 = ISTR("Crash detected."); ////c=20 r=1
-const char MSG_CRASHDETECT_NA[] PROGMEM_I1 = ISTR("Crash det.  [N/A]"); ////
-const char MSG_CRASHDETECT_OFF[] PROGMEM_I1 = ISTR("Crash det.  [off]"); ////
-const char MSG_CRASHDETECT_ON[] PROGMEM_I1 = ISTR("Crash det.   [on]"); ////
+const char MSG_CRASHDETECT[] PROGMEM_I1 = ISTR("Crash det."); ////
 const char MSG_ERROR[] PROGMEM_I1 = ISTR("ERROR:"); ////
 const char MSG_EXTRUDER[] PROGMEM_I1 = ISTR("Extruder"); ////c=17 r=1
 const char MSG_FILAMENT[] PROGMEM_I1 = ISTR("Filament"); ////c=17 r=1
@@ -40,9 +37,8 @@ const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2[] PROGMEM_I1 = ISTR(" of 4"); ////
 const char MSG_FINISHING_MOVEMENTS[] PROGMEM_I1 = ISTR("Finishing movements"); ////c=20 r=1
 const char MSG_FOLLOW_CALIBRATION_FLOW[] PROGMEM_I1 = ISTR("Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."); ////c=20 r=8
 const char MSG_FOLLOW_Z_CALIBRATION_FLOW[] PROGMEM_I1 = ISTR("There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."); ////c=20 r=8
-const char MSG_FSENS_AUTOLOAD_NA[] PROGMEM_I1 = ISTR("F. autoload [N/A]"); ////c=17 r=1
-const char MSG_FSENSOR_OFF[] PROGMEM_I1 = ISTR("Fil. sensor [off]"); ////
-const char MSG_FSENSOR_ON[] PROGMEM_I1 = ISTR("Fil. sensor  [on]"); ////
+const char MSG_FSENSOR_AUTOLOAD[] PROGMEM_I1 = ISTR("F. autoload"); ////c=17 r=1
+const char MSG_FSENSOR[] PROGMEM_I1 = ISTR("Fil. sensor"); ////
 const char MSG_HEATING[] PROGMEM_I1 = ISTR("Heating"); ////
 const char MSG_HEATING_COMPLETE[] PROGMEM_I1 = ISTR("Heating done."); ////c=20
 const char MSG_HOMEYZ[] PROGMEM_I1 = ISTR("Calibrate Z"); ////
@@ -85,14 +81,16 @@ const char MSG_SELFTEST_FILAMENT_SENSOR[] PROGMEM_I1 = ISTR("Filament sensor");
 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_SILENT_MODE_OFF[] PROGMEM_I1 = ISTR("Mode [high power]"); ////
-const char MSG_SILENT_MODE_ON[] PROGMEM_I1 = ISTR("Mode     [silent]"); ////
-const char MSG_STEALTH_MODE_OFF[] PROGMEM_I1 = ISTR("Mode     [Normal]"); ////
-const char MSG_STEALTH_MODE_ON[] PROGMEM_I1 = ISTR("Mode    [Stealth]"); ////
+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"); ////
+const char MSG_SILENT[] PROGMEM_I1 = ISTR("Silent"); ////
+const char MSG_NORMAL[] PROGMEM_I1 = ISTR("Normal"); ////
+const char MSG_STEALTH[] PROGMEM_I1 = ISTR("Stealth"); ////
 const char MSG_STEEL_SHEET_CHECK[] PROGMEM_I1 = ISTR("Is steel sheet on heatbed?"); ////c=20 r=2
 const char MSG_STOP_PRINT[] PROGMEM_I1 = ISTR("Stop print"); ////
 const char MSG_STOPPED[] PROGMEM_I1 = ISTR("STOPPED. "); ////
-const char MSG_TEMP_CALIBRATION[] PROGMEM_I1 = ISTR("Temp. cal.          "); ////c=20 r=1
+const char MSG_TEMP_CALIBRATION[] PROGMEM_I1 = ISTR("Temp. cal."); ////c=12 r=1
 const char MSG_TEMP_CALIBRATION_DONE[] PROGMEM_I1 = ISTR("Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."); ////c=20 r=12
 const char MSG_UNLOAD_FILAMENT[] PROGMEM_I1 = ISTR("Unload filament"); ////c=17
 const char MSG_UNLOADING_FILAMENT[] PROGMEM_I1 = ISTR("Unloading filament"); ////c=20 r=1
@@ -104,13 +102,41 @@ const char MSG_WIZARD_QUIT[] PROGMEM_I1 = ISTR("You can always resume the Wizard
 const char MSG_YES[] PROGMEM_I1 = ISTR("Yes"); ////
 const char MSG_V2_CALIBRATION[] PROGMEM_I1 = ISTR("First layer cal."); ////c=17 r=1
 const char WELCOME_MSG[] PROGMEM_I1 = ISTR(CUSTOM_MENDEL_NAME " OK."); ////c=20
+const char MSG_OFF[] PROGMEM_I1 = ISTR("Off"); ////
+const char MSG_ON[] PROGMEM_I1 = ISTR("On"); ////
+const char MSG_NA[] PROGMEM_I1 = ISTR("N/A"); ////
+const char MSG_AUTO_DEPLETE[] PROGMEM_I1 = ISTR("SpoolJoin"); ////
+const char MSG_CUTTER[] PROGMEM_I1 = ISTR("Cutter"); ////
+const char MSG_NONE[] PROGMEM_I1 = ISTR("None"); ////
+const char MSG_WARN[] PROGMEM_I1 = ISTR("Warn"); ////
+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_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"); ////
+const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY[] PROGMEM_I1 = ISTR("FlashAir"); ////
+const char MSG_SORT[] PROGMEM_I1 = ISTR("Sort"); ////
+const char MSG_SORT_TIME[] PROGMEM_I1 = ISTR("Time"); ////
+const char MSG_SORT_ALPHA[] PROGMEM_I1 = ISTR("Alphabet"); ////
+const char MSG_RPI_PORT[] PROGMEM_I1 = ISTR("RPi port"); ////
+const char MSG_SOUND[] PROGMEM_I1 = ISTR("Sound"); ////
+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_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"); ////
+const char MSG_FS_CONTINUE[] PROGMEM_I1 = ISTR("Cont."); ////
+const char MSG_FS_PAUSE[] PROGMEM_I1 = ISTR("Pause"); ////
+
 //not internationalized messages
 const char MSG_SD_WORKDIR_FAIL[] PROGMEM_N1 = "workDir open failed"; ////
 const char MSG_BROWNOUT_RESET[] PROGMEM_N1 = " Brown out Reset"; ////
 const char MSG_EXTERNAL_RESET[] PROGMEM_N1 = " External Reset"; ////
 const char MSG_FILE_SAVED[] PROGMEM_N1 = "Done saving file."; ////
-const char MSG_OFF[] PROGMEM_N1 = "Off"; ////
-const char MSG_ON[] PROGMEM_N1 = "On "; ////
 const char MSG_POSITION_UNKNOWN[] PROGMEM_N1 = "Home X/Y before Z"; ////
 const char MSG_SOFTWARE_RESET[] PROGMEM_N1 = " Software Reset"; ////
 const char MSG_UNKNOWN_COMMAND[] PROGMEM_N1 = "Unknown command: \""; ////
@@ -129,4 +155,8 @@ const char MSG_ENDSTOP_OPEN[] PROGMEM_N1 = "open"; ////
 const char MSG_POWERUP[] PROGMEM_N1 = "PowerUp"; ////
 const char MSG_ERR_STOPPED[] PROGMEM_N1 = "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"; ////
 const char MSG_ENDSTOP_HIT[] PROGMEM_N1 = "TRIGGERED"; ////
-const char MSG_OCTOPRINT_PAUSE[] PROGMEM_N1 = "// action:pause"; ////
+const char MSG_OCTOPRINT_PAUSED[] PROGMEM_N1 = "// action:paused"; ////
+const char MSG_OCTOPRINT_RESUMED[] PROGMEM_N1 = "// action:resumed"; ////
+const char MSG_OCTOPRINT_CANCEL[] PROGMEM_N1 = "// action:cancel"; ////
+const char MSG_FANCHECK_EXTRUDER[] PROGMEM_N1 = "Err: EXTR. FAN ERROR"; ////c=20
+const char MSG_FANCHECK_PRINT[] PROGMEM_N1 = "Err: PRINT FAN ERROR"; ////c=20

+ 44 - 14
Firmware/messages.h

@@ -10,7 +10,6 @@ extern "C" {
 // LCD Menu Messages
 //internationalized messages
 extern const char MSG_AUTO_HOME[];
-extern const char MSG_AUTO_MODE_ON[];
 extern const char MSG_BABYSTEP_Z[];
 extern const char MSG_BABYSTEP_Z_NOT_SET[];
 extern const char MSG_BED[];
@@ -23,9 +22,7 @@ extern const char MSG_CARD_MENU[];
 extern const char MSG_CONFIRM_NOZZLE_CLEAN[];
 extern const char MSG_COOLDOWN[];
 extern const char MSG_CRASH_DETECTED[];
-extern const char MSG_CRASHDETECT_NA[];
-extern const char MSG_CRASHDETECT_OFF[];
-extern const char MSG_CRASHDETECT_ON[];
+extern const char MSG_CRASHDETECT[];
 extern const char MSG_ERROR[];
 extern const char MSG_EXTRUDER[];
 extern const char MSG_FILAMENT[];
@@ -41,9 +38,8 @@ extern const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2[];
 extern const char MSG_FINISHING_MOVEMENTS[];
 extern const char MSG_FOLLOW_CALIBRATION_FLOW[];
 extern const char MSG_FOLLOW_Z_CALIBRATION_FLOW[];
-extern const char MSG_FSENS_AUTOLOAD_NA[];
-extern const char MSG_FSENSOR_OFF[];
-extern const char MSG_FSENSOR_ON[];
+extern const char MSG_FSENSOR_AUTOLOAD[];
+extern const char MSG_FSENSOR[];
 extern const char MSG_HEATING[];
 extern const char MSG_HEATING_COMPLETE[];
 extern const char MSG_HOMEYZ[];
@@ -85,10 +81,12 @@ extern const char MSG_SELFTEST_FILAMENT_SENSOR[];
 extern const char MSG_SELFTEST_WIRINGERROR[];
 extern const char MSG_SETTINGS[];
 extern const char MSG_HW_SETUP[];
-extern const char MSG_SILENT_MODE_OFF[];
-extern const char MSG_SILENT_MODE_ON[];
-extern const char MSG_STEALTH_MODE_OFF[];
-extern const char MSG_STEALTH_MODE_ON[];
+extern const char MSG_MODE[];
+extern const char MSG_HIGH_POWER[];
+extern const char MSG_AUTO_POWER[];
+extern const char MSG_SILENT[];
+extern const char MSG_NORMAL[];
+extern const char MSG_STEALTH[];
 extern const char MSG_STEEL_SHEET_CHECK[];
 extern const char MSG_STOP_PRINT[];
 extern const char MSG_STOPPED[];
@@ -104,12 +102,40 @@ extern const char MSG_WIZARD_QUIT[];
 extern const char MSG_YES[];
 extern const char MSG_V2_CALIBRATION[];
 extern const char WELCOME_MSG[];
+extern const char MSG_OFF[];
+extern const char MSG_ON[];
+extern const char MSG_NA[];
+extern const char MSG_AUTO_DEPLETE[];
+extern const char MSG_CUTTER[];
+extern const char MSG_NONE[];
+extern const char MSG_WARN[];
+extern const char MSG_STRICT[];
+extern const char MSG_MODEL[];
+extern const char MSG_FIRMWARE[];
+extern const char MSG_GCODE[];
+extern const char MSG_NOZZLE_DIAMETER[];
+extern const char MSG_MMU_MODE[];
+extern const char MSG_SD_CARD[];
+extern const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY[];
+extern const char MSG_SORT[];
+extern const char MSG_SORT_TIME[];
+extern const char MSG_SORT_ALPHA[];
+extern const char MSG_RPI_PORT[];
+extern const char MSG_SOUND[];
+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_Z_PROBE_NR[];
+extern const char MSG_MAGNETS_COMP[];
+extern const char MSG_FS_ACTION[];
+extern const char MSG_FS_CONTINUE[];
+extern const char MSG_FS_PAUSE[];
+
 //not internationalized messages
 extern const char MSG_BROWNOUT_RESET[];
 extern const char MSG_EXTERNAL_RESET[];
 extern const char MSG_FILE_SAVED[];
-extern const char MSG_OFF[];
-extern const char MSG_ON[];
 extern const char MSG_POSITION_UNKNOWN[];
 extern const char MSG_SOFTWARE_RESET[];
 extern const char MSG_UNKNOWN_COMMAND[];
@@ -130,7 +156,11 @@ extern const char MSG_ERR_STOPPED[];
 extern const char MSG_ENDSTOP_HIT[];
 extern const char MSG_EJECT_FILAMENT[];
 extern const char MSG_CUT_FILAMENT[];
-extern const char MSG_OCTOPRINT_PAUSE[];
+extern const char MSG_OCTOPRINT_PAUSED[];
+extern const char MSG_OCTOPRINT_RESUMED[];
+extern const char MSG_OCTOPRINT_CANCEL[];
+extern const char MSG_FANCHECK_EXTRUDER[];
+extern const char MSG_FANCHECK_PRINT[];
 
 #if defined(__cplusplus)
 }

+ 48 - 67
Firmware/mmu.cpp

@@ -70,6 +70,7 @@ uint8_t mmu_extruder = MMU_FILAMENT_UNKNOWN;
 uint8_t tmp_extruder = MMU_FILAMENT_UNKNOWN;
 
 int8_t mmu_finda = -1;
+uint32_t mmu_last_finda_response = 0;
 
 int16_t mmu_version = -1;
 
@@ -264,6 +265,7 @@ void mmu_loop(void)
 		if (mmu_rx_ok() > 0)
 		{
 			fscanf_P(uart2io, PSTR("%hhu"), &mmu_finda); //scan finda from buffer
+			mmu_last_finda_response = _millis();
 			FDEBUG_PRINTF_P(PSTR("MMU => '%dok'\n"), mmu_finda);
 			puts_P(PSTR("MMU - ENABLED"));
 			mmu_enabled = true;
@@ -376,11 +378,11 @@ void mmu_loop(void)
 		if (mmu_rx_ok() > 0)
 		{
 			fscanf_P(uart2io, PSTR("%hhu"), &mmu_finda); //scan finda from buffer
+			mmu_last_finda_response = _millis();
 			FDEBUG_PRINTF_P(PSTR("MMU => '%dok'\n"), mmu_finda);
 			//printf_P(PSTR("Eact: %d\n"), int(e_active()));
 			if (!mmu_finda && CHECK_FSENSOR && fsensor_enabled) {
-				fsensor_stop_and_save_print();
-				enquecommand_front_P(PSTR("PRUSA fsensor_recover")); //then recover
+				fsensor_checkpoint_print();
 				ad_markDepleted(mmu_extruder);
 				if (lcd_autoDepleteEnabled() && !ad_allDepleted())
 				{
@@ -537,7 +539,7 @@ void mmu_command(MmuCmd cmd)
 void mmu_load_step(bool synchronize)
 {
 		current_position[E_AXIS] = current_position[E_AXIS] + MMU_LOAD_FEEDRATE * 0.1;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], MMU_LOAD_FEEDRATE, active_extruder);
+		plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE, active_extruder);
 		if (synchronize) st_synchronize();
 }
 
@@ -602,7 +604,7 @@ bool mmu_get_response(uint8_t move)
 				    {
                         printf_P(PSTR("Unload 1\n"));
                         current_position[E_AXIS] = current_position[E_AXIS] - MMU_LOAD_FEEDRATE * MMU_LOAD_TIME_MS*0.001;
-                        plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], MMU_LOAD_FEEDRATE, active_extruder);
+                        plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE, active_extruder);
                         st_synchronize();
 				    }
 				}
@@ -620,7 +622,7 @@ bool mmu_get_response(uint8_t move)
                     {
                         printf_P(PSTR("Unload 2\n"));
                         current_position[E_AXIS] = current_position[E_AXIS] - MMU_LOAD_FEEDRATE * MMU_LOAD_TIME_MS*0.001;
-                        plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], MMU_LOAD_FEEDRATE, active_extruder);
+                        plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE, active_extruder);
                         st_synchronize();
                     }
 				}
@@ -698,13 +700,13 @@ void manage_response(bool move_axes, bool turn_off_nozzle, uint8_t move)
 					  //lift z
 					  current_position[Z_AXIS] += Z_PAUSE_LIFT;
 					  if (current_position[Z_AXIS] > Z_MAX_POS) current_position[Z_AXIS] = Z_MAX_POS;
-					  plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 15, active_extruder);
+					  plan_buffer_line_curposXYZE(15, active_extruder);
 					  st_synchronize();
 					  					  
 					  //Move XY to side
 					  current_position[X_AXIS] = X_PAUSE_POS;
 					  current_position[Y_AXIS] = Y_PAUSE_POS;
-					  plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 50, active_extruder);
+					  plan_buffer_line_curposXYZE(50, active_extruder);
 					  st_synchronize();
 				  }
 				  if (turn_off_nozzle) {
@@ -762,10 +764,10 @@ void manage_response(bool move_axes, bool turn_off_nozzle, uint8_t move)
 				  lcd_display_message_fullscreen_P(_i("MMU OK. Resuming position..."));
 				  current_position[X_AXIS] = x_position_bckp;
 				  current_position[Y_AXIS] = y_position_bckp;
-				  plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 50, active_extruder);
+				  plan_buffer_line_curposXYZE(50, active_extruder);
 				  st_synchronize();
 				  current_position[Z_AXIS] = z_position_bckp;
-				  plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 15, active_extruder);
+				  plan_buffer_line_curposXYZE(15, active_extruder);
 				  st_synchronize();
 			  }
 			  else {
@@ -804,19 +806,19 @@ void mmu_load_to_nozzle()
 		current_position[E_AXIS] += 7.2f;
 	}
     float feedrate = 562;
-	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feedrate / 60, active_extruder);
+	plan_buffer_line_curposXYZE(feedrate / 60, active_extruder);
     st_synchronize();
 	current_position[E_AXIS] += 14.4f;
 	feedrate = 871;
-	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feedrate / 60, active_extruder);
+	plan_buffer_line_curposXYZE(feedrate / 60, active_extruder);
     st_synchronize();
 	current_position[E_AXIS] += 36.0f;
 	feedrate = 1393;
-	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feedrate / 60, active_extruder);
+	plan_buffer_line_curposXYZE(feedrate / 60, active_extruder);
     st_synchronize();
 	current_position[E_AXIS] += 14.4f;
 	feedrate = 871;
-	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feedrate / 60, active_extruder);
+	plan_buffer_line_curposXYZE(feedrate / 60, active_extruder);
     st_synchronize();
 	if (!saved_e_relative_mode) axis_relative_modes[E_AXIS] = false;
 }
@@ -889,7 +891,7 @@ void mmu_M600_load_filament(bool automatic, float nozzle_temp)
     mmu_command(MmuCmd::T0 + tmp_extruder);
 
     manage_response(false, true, MMU_LOAD_MOVE);
-    mmu_continue_loading(is_usb_printing);
+    mmu_continue_loading(is_usb_printing || (lcd_commands_type == LcdCommands::Layer1Cal));
     mmu_extruder = tmp_extruder; //filament change is finished
 
     mmu_load_to_nozzle();
@@ -903,7 +905,7 @@ void extr_mov(float shift, float feed_rate)
 { //move extruder no matter what the current heater temperature is
 	set_extrude_min_temp(.0);
 	current_position[E_AXIS] += shift;
-	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feed_rate, active_extruder);
+	plan_buffer_line_curposXYZE(feed_rate, active_extruder);
 	set_extrude_min_temp(EXTRUDE_MINTEMP);
 }
 #endif //SNMM
@@ -978,7 +980,7 @@ void extr_adj(uint8_t extruder) //loading filament for SNMM
 {
 #ifndef SNMM
     MmuCmd cmd = MmuCmd::L0 + extruder;
-    if (cmd > MmuCmd::L4)
+    if (extruder > (MmuCmd::L4 - MmuCmd::L0))
     {
         printf_P(PSTR("Filament out of range %d \n"),extruder);
         return;
@@ -1069,33 +1071,11 @@ void mmu_filament_ramming()
     for(uint8_t i = 0; i < (sizeof(ramming_sequence)/sizeof(E_step));++i)
     {
         current_position[E_AXIS] += pgm_read_float(&(ramming_sequence[i].extrude));
-        plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS],
-                current_position[E_AXIS], pgm_read_float(&(ramming_sequence[i].feed_rate)), active_extruder);
+        plan_buffer_line_curposXYZE(pgm_read_float(&(ramming_sequence[i].feed_rate)), active_extruder);
         st_synchronize();
     }
 }
 
-//-//
-void extr_unload_()
-{
-//if(bFilamentAction)
-if(0)
-	{
-     bFilamentAction=false;
-     extr_unload();
-     }
-else	{
-     eFilamentAction=FilamentAction::MmuUnLoad;
-     bFilamentFirstRun=false;
-     if(target_temperature[0]>=EXTRUDE_MINTEMP)
-          {
-          bFilamentPreheatState=true;
-          mFilamentItem(target_temperature[0],target_temperature_bed);
-          }
-//     else menu_submenu(mFilamentMenu);
-     else mFilamentMenu();
-	}
-}
 
 //! @brief show which filament is currently unloaded
 void extr_unload_view()
@@ -1140,39 +1120,39 @@ void extr_unload()
 		lcd_set_cursor(0, 2); lcd_puts_P(_T(MSG_PLEASE_WAIT));
 		if (current_position[Z_AXIS] < 15) {
 			current_position[Z_AXIS] += 15; //lifting in Z direction to make space for extrusion
-			plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 25, active_extruder);
+			plan_buffer_line_curposXYZE(25, active_extruder);
 		}
 		
 		current_position[E_AXIS] += 10; //extrusion
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 10, active_extruder);
+		plan_buffer_line_curposXYZE(10, active_extruder);
 		st_current_set(2, E_MOTOR_HIGH_CURRENT);
 		if (current_temperature[0] < 230) { //PLA & all other filaments
 			current_position[E_AXIS] += 5.4;
-			plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 2800 / 60, active_extruder);
+			plan_buffer_line_curposXYZE(2800 / 60, active_extruder);
 			current_position[E_AXIS] += 3.2;
-			plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
+			plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
 			current_position[E_AXIS] += 3;
-			plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3400 / 60, active_extruder);
+			plan_buffer_line_curposXYZE(3400 / 60, active_extruder);
 		}
 		else { //ABS
 			current_position[E_AXIS] += 3.1;
-			plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 2000 / 60, active_extruder);
+			plan_buffer_line_curposXYZE(2000 / 60, active_extruder);
 			current_position[E_AXIS] += 3.1;
-			plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 2500 / 60, active_extruder);
+			plan_buffer_line_curposXYZE(2500 / 60, active_extruder);
 			current_position[E_AXIS] += 4;
-			plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
+			plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
 			/*current_position[X_AXIS] += 23; //delay
-			plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 600 / 60, active_extruder); //delay
+			plan_buffer_line_curposXYZE(600 / 60, active_extruder); //delay
 			current_position[X_AXIS] -= 23; //delay
-			plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 600 / 60, active_extruder); //delay*/
+			plan_buffer_line_curposXYZE(600 / 60, active_extruder); //delay*/
 			delay_keep_alive(4700);
 		}
 	
 		max_feedrate[E_AXIS] = 80;
 		current_position[E_AXIS] -= (bowden_length[mmu_extruder] + 60 + FIL_LOAD_LENGTH) / 2;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 500, active_extruder);
+		plan_buffer_line_curposXYZE(500, active_extruder);
 		current_position[E_AXIS] -= (bowden_length[mmu_extruder] + 60 + FIL_LOAD_LENGTH) / 2;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 500, active_extruder);
+		plan_buffer_line_curposXYZE(500, active_extruder);
 		st_synchronize();
 		//st_current_init();
 		if (SilentMode != SILENT_MODE_OFF) st_current_set(2, tmp_motor[2]); //set back to normal operation currents
@@ -1377,7 +1357,7 @@ void lcd_mmu_load_to_nozzle(uint8_t filament_nr)
         manage_response(true, true, MMU_TCODE_MOVE);
         mmu_continue_loading(false);
         mmu_extruder = tmp_extruder; //filament change is finished
-        marlin_rise_z();
+        raise_z_above(MIN_Z_FOR_LOAD, false);
         mmu_load_to_nozzle();
         load_filament_final_feed();
         st_synchronize();
@@ -1465,11 +1445,9 @@ bFilamentAction=false;                            // NOT in "mmu_fil_eject_menu(
 static bool can_load()
 {
     current_position[E_AXIS] += 60;
-    plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS],
-            current_position[E_AXIS], MMU_LOAD_FEEDRATE, active_extruder);
+    plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE, active_extruder);
     current_position[E_AXIS] -= 52;
-    plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS],
-            current_position[E_AXIS], MMU_LOAD_FEEDRATE, active_extruder);
+    plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE, active_extruder);
     st_synchronize();
 
     uint_least8_t filament_detected_count = 0;
@@ -1479,8 +1457,7 @@ static bool can_load()
     for(uint_least8_t i = 0; i < steps; ++i)
     {
         current_position[E_AXIS] -= e_increment;
-        plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS],
-                current_position[E_AXIS], MMU_LOAD_FEEDRATE, active_extruder);
+        plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE, active_extruder);
         st_synchronize();
         if(0 == PIN_GET(IR_SENSOR_PIN))
         {
@@ -1581,19 +1558,23 @@ void mmu_continue_loading(bool blocking)
             increment_load_fail();
             // no break
         case Ls::Retry:
-#ifdef MMU_HAS_CUTTER
-            if (1 == eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED))
+            ++retry; // overflow not handled, as it is not dangerous.
+            if (retry >= max_retry)
             {
-                mmu_command(MmuCmd::K0 + tmp_extruder);
-                manage_response(true, true, MMU_UNLOAD_MOVE);
-            }
+                state = Ls::Unload;
+#ifdef MMU_HAS_CUTTER
+                if (1 == eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED))
+                {
+                    mmu_command(MmuCmd::K0 + tmp_extruder);
+                    manage_response(true, true, MMU_UNLOAD_MOVE);
+                }
 #endif //MMU_HAS_CUTTER
+            }
             mmu_command(MmuCmd::T0 + tmp_extruder);
             manage_response(true, true, MMU_TCODE_MOVE);
             success = load_more();
             if (success) success = can_load();
-            ++retry; // overflow not handled, as it is not dangerous.
-            if (retry >= max_retry) state = Ls::Unload;
+
             break;
         case Ls::Unload:
             stop_and_save_print_to_ram(0, 0);
@@ -1601,13 +1582,13 @@ void mmu_continue_loading(bool blocking)
             //lift z
             current_position[Z_AXIS] += Z_PAUSE_LIFT;
             if (current_position[Z_AXIS] > Z_MAX_POS) current_position[Z_AXIS] = Z_MAX_POS;
-            plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 15, active_extruder);
+            plan_buffer_line_curposXYZE(15, active_extruder);
             st_synchronize();
 
             //Move XY to side
             current_position[X_AXIS] = X_PAUSE_POS;
             current_position[Y_AXIS] = Y_PAUSE_POS;
-            plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 50, active_extruder);
+            plan_buffer_line_curposXYZE(50, active_extruder);
             st_synchronize();
 
             mmu_command(MmuCmd::U0);

+ 2 - 2
Firmware/mmu.h

@@ -14,6 +14,7 @@ extern uint8_t mmu_extruder;
 extern uint8_t tmp_extruder;
 
 extern int8_t mmu_finda;
+extern uint32_t mmu_last_finda_response;
 extern bool ir_sensor_detected;
 
 extern int16_t mmu_version;
@@ -105,8 +106,7 @@ extern int get_ext_nr();
 extern void display_loading();
 extern void extr_adj(uint8_t extruder);
 extern void extr_unload();
-//-//
-extern void extr_unload_();
+
 extern void extr_adj_0();
 extern void extr_adj_1();
 extern void extr_adj_2();

+ 2 - 1
Firmware/pins_Einsy_1_0.h

@@ -71,12 +71,13 @@
 #define HEATER_2_PIN        -1
 #define TEMP_2_PIN          -1
 
-#define TEMP_AMBIENT_PIN     5 //A5
+#define TEMP_AMBIENT_PIN     6 //A6
 
 #define TEMP_PINDA_PIN       3 //A3
 
 #define VOLT_PWR_PIN         4 //A4
 #define VOLT_BED_PIN         9 //A9
+#define VOLT_IR_PIN          8 //A8
 
 
 #define E0_TMC2130_CS       66

+ 29 - 11
Firmware/planner.cpp

@@ -651,19 +651,23 @@ void planner_abort_hard()
     waiting_inside_plan_buffer_line_print_aborted = true;
 }
 
+void plan_buffer_line_curposXYZE(float feed_rate, uint8_t extruder) { 
+	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feed_rate, extruder );
+}
+
 float junction_deviation = 0.1;
 // Add a new linear movement to the buffer. steps_x, _y and _z is the absolute position in 
 // mm. Microseconds specify how many microseconds the move should take to perform. To aid acceleration
 // calculation the caller must also provide the physical length of the line in millimeters.
-void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate, const uint8_t &extruder)
+void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate, uint8_t extruder, const float* gcode_target)
 {
     // Calculate the buffer head after we push this byte
   int next_buffer_head = next_block_index(block_buffer_head);
 
   // If the buffer is full: good! That means we are well ahead of the robot. 
   // Rest here until there is room in the buffer.
+  waiting_inside_plan_buffer_line_print_aborted = false;
   if (block_buffer_tail == next_buffer_head) {
-      waiting_inside_plan_buffer_line_print_aborted = false;
       do {
           manage_heater(); 
           // Vojtech: Don't disable motors inside the planner!
@@ -683,6 +687,29 @@ void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate
   planner_update_queue_min_counter();
 #endif /* PLANNER_DIAGNOSTICS */
 
+  // Prepare to set up new block
+  block_t *block = &block_buffer[block_buffer_head];
+
+  // Mark block as not busy (Not executed by the stepper interrupt, could be still tinkered with.)
+  block->busy = false;
+
+  // Set sdlen for calculating sd position
+  block->sdlen = 0;
+
+  // Save original destination of the move
+  if (gcode_target)
+      memcpy(block->gcode_target, gcode_target, sizeof(block_t::gcode_target));
+  else
+  {
+      block->gcode_target[X_AXIS] = x;
+      block->gcode_target[Y_AXIS] = y;
+      block->gcode_target[Z_AXIS] = z;
+      block->gcode_target[E_AXIS] = e;
+  }
+
+  // Save the global feedrate at scheduling time
+  block->gcode_feedrate = feedrate;
+
 #ifdef ENABLE_AUTO_BED_LEVELING
   apply_rotation_xyz(plan_bed_level_matrix, x, y, z);
 #endif // ENABLE_AUTO_BED_LEVELING
@@ -782,15 +809,6 @@ void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate
   }
   #endif
 
-  // Prepare to set up new block
-  block_t *block = &block_buffer[block_buffer_head];
-
-  // Set sdlen for calculating sd position
-  block->sdlen = 0;
-
-  // Mark block as not busy (Not executed by the stepper interrupt, could be still tinkered with.)
-  block->busy = false;
-
   // Number of steps for each axis
 #ifndef COREXY
 // default non-h-bot planning

+ 13 - 2
Firmware/planner.h

@@ -116,7 +116,10 @@ typedef struct {
   unsigned long abs_adv_steps_multiplier8; // Factorised by 2^8 to avoid float
 #endif
 
-  uint16_t sdlen;
+  // Save/recovery state data
+  float gcode_target[NUM_AXIS];     // Target (abs mm) of the original Gcode instruction
+  uint16_t gcode_feedrate;          // Default and/or move feedrate
+  uint16_t sdlen;                   // Length of the Gcode instruction
 } block_t;
 
 #ifdef LIN_ADVANCE
@@ -140,7 +143,14 @@ void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate
 // Get the position applying the bed level matrix if enabled
 vector_3 plan_get_position();
 #else
-void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate, const uint8_t &extruder);
+
+/// Extracting common call of 
+/// plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], ...
+/// saves almost 5KB.
+/// The performance penalty is negligible, since these planned lines are usually maintenance moves with the extruder.
+void plan_buffer_line_curposXYZE(float feed_rate, uint8_t extruder);
+
+void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate, uint8_t extruder, const float* gcode_target = NULL);
 //void plan_buffer_line(const float &x, const float &y, const float &z, const float &e, float feed_rate, const uint8_t &extruder);
 #endif // ENABLE_AUTO_BED_LEVELING
 
@@ -231,6 +241,7 @@ FORCE_INLINE bool planner_queue_full() {
 // wait for the steppers to stop,
 // update planner's current position and the current_position of the front end.
 extern void planner_abort_hard();
+extern bool waiting_inside_plan_buffer_line_print_aborted;
 
 #ifdef PREVENT_DANGEROUS_EXTRUDE
 void set_extrude_min_temp(float temp);

+ 9 - 4
Firmware/sound.cpp

@@ -135,10 +135,15 @@ switch(eSoundMode)
 
 static void Sound_DoSound_Blind_Alert(void)
 {
-     _tone(BEEPER,300);
-     _delay_ms(75);
-     _noTone(BEEPER);
-     _delay_ms(75);
+     uint8_t nI;
+
+     for(nI=0; nI<20; nI++)
+     {
+         WRITE(BEEPER,HIGH);
+         delayMicroseconds(94);
+         WRITE(BEEPER,LOW);
+         delayMicroseconds(94);
+     }
 }
 
  static void Sound_DoSound_Encoder_Move(void)

+ 0 - 6
Firmware/sound.h

@@ -3,12 +3,6 @@
 #define SOUND_H
 
 
-#define MSG_SOUND_MODE_LOUD "Sound      [loud]"
-#define MSG_SOUND_MODE_ONCE "Sound      [once]"
-#define MSG_SOUND_MODE_SILENT "Sound    [silent]"
-#define MSG_SOUND_MODE_BLIND "Sound     [blind]" 
-
-
 #define e_SOUND_MODE_NULL 0xFF
 typedef enum
      {e_SOUND_MODE_LOUD,e_SOUND_MODE_ONCE,e_SOUND_MODE_SILENT,e_SOUND_MODE_BLIND} eSOUND_MODE;

+ 4 - 4
Firmware/stepper.cpp

@@ -1561,10 +1561,10 @@ void EEPROM_read_st(int pos, uint8_t* value, uint8_t size)
 
 
 void st_current_init() //Initialize Digipot Motor Current
-{  
-uint8_t SilentMode = eeprom_read_byte((uint8_t*)EEPROM_SILENT);
+{
+#ifdef MOTOR_CURRENT_PWM_XY_PIN
+  uint8_t SilentMode = eeprom_read_byte((uint8_t*)EEPROM_SILENT);
   SilentModeMenu = SilentMode;
-  #ifdef MOTOR_CURRENT_PWM_XY_PIN
     pinMode(MOTOR_CURRENT_PWM_XY_PIN, OUTPUT);
     pinMode(MOTOR_CURRENT_PWM_Z_PIN, OUTPUT);
     pinMode(MOTOR_CURRENT_PWM_E_PIN, OUTPUT);
@@ -1586,7 +1586,7 @@ uint8_t SilentMode = eeprom_read_byte((uint8_t*)EEPROM_SILENT);
     st_current_set(2, motor_current_setting[2]);
     //Set timer5 to 31khz so the PWM of the motor power is as constant as possible. (removes a buzzing noise)
     TCCR5B = (TCCR5B & ~(_BV(CS50) | _BV(CS51) | _BV(CS52))) | _BV(CS50);
-  #endif
+#endif
 }
 
 

+ 31 - 81
Firmware/temperature.cpp

@@ -44,6 +44,8 @@
 #include "Timer.h"
 #include "Configuration_prusa.h"
 
+#include "config.h"
+
 //===========================================================================
 //=============================public variables============================
 //===========================================================================
@@ -71,12 +73,12 @@ int current_voltage_raw_pwr = 0;
 int current_voltage_raw_bed = 0;
 #endif
 
+#if IR_SENSOR_ANALOG
+int current_voltage_raw_IR = 0;
+#endif //IR_SENSOR_ANALOG
+
 int current_temperature_bed_raw = 0;
 float current_temperature_bed = 0.0;
-#ifdef TEMP_SENSOR_1_AS_REDUNDANT
-  int redundant_temperature_raw = 0;
-  float redundant_temperature = 0.0;
-#endif
   
 
 #ifdef PIDTEMP
@@ -175,13 +177,8 @@ static int bed_minttemp_raw = HEATER_BED_RAW_LO_TEMP;
 static int bed_maxttemp_raw = HEATER_BED_RAW_HI_TEMP;
 #endif
 
-#ifdef TEMP_SENSOR_1_AS_REDUNDANT
-  static void *heater_ttbl_map[2] = {(void *)HEATER_0_TEMPTABLE, (void *)HEATER_1_TEMPTABLE };
-  static uint8_t heater_ttbllen_map[2] = { HEATER_0_TEMPTABLE_LEN, HEATER_1_TEMPTABLE_LEN };
-#else
-  static void *heater_ttbl_map[EXTRUDERS] = ARRAY_BY_EXTRUDERS( (void *)HEATER_0_TEMPTABLE, (void *)HEATER_1_TEMPTABLE, (void *)HEATER_2_TEMPTABLE );
-  static uint8_t heater_ttbllen_map[EXTRUDERS] = ARRAY_BY_EXTRUDERS( HEATER_0_TEMPTABLE_LEN, HEATER_1_TEMPTABLE_LEN, HEATER_2_TEMPTABLE_LEN );
-#endif
+static void *heater_ttbl_map[EXTRUDERS] = ARRAY_BY_EXTRUDERS( (void *)HEATER_0_TEMPTABLE, (void *)HEATER_1_TEMPTABLE, (void *)HEATER_2_TEMPTABLE );
+static uint8_t heater_ttbllen_map[EXTRUDERS] = ARRAY_BY_EXTRUDERS( HEATER_0_TEMPTABLE_LEN, HEATER_1_TEMPTABLE_LEN, HEATER_2_TEMPTABLE_LEN );
 
 static float analog2temp(int raw, uint8_t e);
 static float analog2tempBed(int raw);
@@ -195,11 +192,6 @@ enum TempRunawayStates
 	TempRunaway_ACTIVE = 2,
 };
 
-#ifdef WATCH_TEMP_PERIOD
-int watch_start_temp[EXTRUDERS] = ARRAY_BY_EXTRUDERS(0,0,0);
-unsigned long watchmillis[EXTRUDERS] = ARRAY_BY_EXTRUDERS(0,0,0);
-#endif //WATCH_TEMP_PERIOD
-
 #ifndef SOFT_PWM_SCALE
 #define SOFT_PWM_SCALE 0
 #endif
@@ -517,14 +509,17 @@ void checkFanSpeed()
 	// drop the fan_check_error flag when both fans are ok
 	if( fan_speed_errors[0] == 0 && fan_speed_errors[1] == 0 && fan_check_error == EFCE_REPORTED){
 		// we may even send some info to the LCD from here
-		fan_check_error = EFCE_OK;
+		fan_check_error = EFCE_FIXED;
 	}
-
-	if ((fan_speed_errors[0] > max_extruder_fan_errors) && fans_check_enabled) {
+	if ((fan_check_error == EFCE_FIXED) && !PRINTER_ACTIVE){
+		fan_check_error = EFCE_OK; //if the issue is fixed while the printer is doing nothing, reenable processing immediately.
+		lcd_reset_alert_level(); //for another fan speed error
+	}
+	if ((fan_speed_errors[0] > max_extruder_fan_errors) && fans_check_enabled && (fan_check_error == EFCE_OK)) {
 		fan_speed_errors[0] = 0;
 		fanSpeedError(0); //extruder fan
 	}
-	if ((fan_speed_errors[1] > max_print_fan_errors) && fans_check_enabled) {
+	if ((fan_speed_errors[1] > max_print_fan_errors) && fans_check_enabled && (fan_check_error == EFCE_OK)) {
 		fan_speed_errors[1] = 0;
 		fanSpeedError(1); //print fan
 	}
@@ -543,31 +538,31 @@ static void fanSpeedErrorBeep(const char *serialMsg, const char *lcdMsg){
 }
 
 void fanSpeedError(unsigned char _fan) {
-	if (get_message_level() != 0 && isPrintPaused) return; 
-	//to ensure that target temp. is not set to zero in case taht we are resuming print 
+	if (get_message_level() != 0 && isPrintPaused) return;
+	//to ensure that target temp. is not set to zero in case that we are resuming print
 	if (card.sdprinting || is_usb_printing) {
 		if (heating_status != 0) {
 			lcd_print_stop();
 		}
 		else {
-			fan_check_error = EFCE_DETECTED;
+			fan_check_error = EFCE_DETECTED; //plans error for next processed command
 		}
 	}
 	else {
-			SERIAL_PROTOCOLLNRPGM(MSG_OCTOPRINT_PAUSE); //for octoprint
-			setTargetHotend0(0);
-      heating_status = 0;
-      fan_check_error = EFCE_REPORTED;
+		// SERIAL_PROTOCOLLNRPGM(MSG_OCTOPRINT_PAUSED); //Why pause octoprint? is_usb_printing would be true in that case, so there is no need for this.
+		setTargetHotend0(0);
+        heating_status = 0;
+        fan_check_error = EFCE_REPORTED;
 	}
 	switch (_fan) {
 	case 0:	// extracting the same code from case 0 and case 1 into a function saves 72B
-		fanSpeedErrorBeep(PSTR("Extruder fan speed is lower than expected"), PSTR("Err: EXTR. FAN ERROR") );
+		fanSpeedErrorBeep(PSTR("Extruder fan speed is lower than expected"), MSG_FANCHECK_EXTRUDER);
 		break;
 	case 1:
-		fanSpeedErrorBeep(PSTR("Print fan speed is lower than expected"), PSTR("Err: PRINT FAN ERROR") );
+		fanSpeedErrorBeep(PSTR("Print fan speed is lower than expected"), MSG_FANCHECK_PRINT);
 		break;
 	}
-  SERIAL_PROTOCOLLNRPGM(MSG_OK);
+    // SERIAL_PROTOCOLLNRPGM(MSG_OK); //This ok messes things up with octoprint.
 }
 #endif //(defined(TACH_0) && TACH_0 >-1) || (defined(TACH_1) && TACH_1 > -1)
 
@@ -728,34 +723,6 @@ void manage_heater()
     {
       soft_pwm[e] = 0;
     }
-
-    #ifdef WATCH_TEMP_PERIOD
-    if(watchmillis[e] && _millis() - watchmillis[e] > WATCH_TEMP_PERIOD)
-    {
-        if(degHotend(e) < watch_start_temp[e] + WATCH_TEMP_INCREASE)
-        {
-            setTargetHotend(0, e);
-            LCD_MESSAGEPGM("Heating failed");
-            SERIAL_ECHO_START;
-            SERIAL_ECHOLN("Heating failed");
-        }else{
-            watchmillis[e] = 0;
-        }
-    }
-    #endif
-    #ifdef TEMP_SENSOR_1_AS_REDUNDANT
-      if(fabs(current_temperature[0] - redundant_temperature) > MAX_REDUNDANT_TEMP_SENSOR_DIFF) {
-        disable_heater();
-        if(IsStopped() == false) {
-          SERIAL_ERROR_START;
-          SERIAL_ERRORLNPGM("Extruder switched off. Temperature difference between temp sensors is too high !");
-          LCD_ALERTMESSAGEPGM("Err: REDUNDANT TEMP ERROR");
-        }
-        #ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
-          Stop();
-        #endif
-      }
-    #endif
   } // End extruder for loop
 
 #define FAN_CHECK_PERIOD 5000 //5s
@@ -907,11 +874,7 @@ void manage_heater()
 // Derived from RepRap FiveD extruder::getTemperature()
 // For hot end temperature measurement.
 static float analog2temp(int raw, uint8_t e) {
-#ifdef TEMP_SENSOR_1_AS_REDUNDANT
-  if(e > EXTRUDERS)
-#else
   if(e >= EXTRUDERS)
-#endif
   {
       SERIAL_ERROR_START;
       SERIAL_ERROR((int)e);
@@ -1054,10 +1017,6 @@ static void updateTemperaturesFromRawValues()
 	current_temperature_bed = analog2tempBed(current_temperature_bed_raw);
 #endif //DEBUG_HEATER_BED_SIM
 
-    #ifdef TEMP_SENSOR_1_AS_REDUNDANT
-      redundant_temperature = analog2temp(redundant_temperature_raw, 1);
-    #endif
-
     CRITICAL_SECTION_START;
     temp_meas_ready = false;
     CRITICAL_SECTION_END;
@@ -1221,20 +1180,6 @@ void tp_init()
 #endif //BED_MAXTEMP
 }
 
-void setWatch() 
-{  
-#ifdef WATCH_TEMP_PERIOD
-  for (int e = 0; e < EXTRUDERS; e++)
-  {
-    if(degHotend(e) < degTargetHotend(e) - (WATCH_TEMP_INCREASE * 2))
-    {
-      watch_start_temp[e] = degHotend(e);
-      watchmillis[e] = _millis();
-    } 
-  }
-#endif 
-}
-
 #if (defined (TEMP_RUNAWAY_BED_HYSTERESIS) && TEMP_RUNAWAY_BED_TIMEOUT > 0) || (defined (TEMP_RUNAWAY_EXTRUDER_HYSTERESIS) && TEMP_RUNAWAY_EXTRUDER_TIMEOUT > 0)
 void temp_runaway_check(int _heater_id, float _target_temperature, float _current_temperature, float _output, bool _isbed)
 {
@@ -1629,17 +1574,22 @@ extern "C" {
 void adc_ready(void) //callback from adc when sampling finished
 {
 	current_temperature_raw[0] = adc_values[ADC_PIN_IDX(TEMP_0_PIN)]; //heater
+#ifdef PINDA_THERMISTOR
 	current_temperature_raw_pinda_fast = adc_values[ADC_PIN_IDX(TEMP_PINDA_PIN)];
+#endif //PINDA_THERMISTOR
 	current_temperature_bed_raw = adc_values[ADC_PIN_IDX(TEMP_BED_PIN)];
 #ifdef VOLT_PWR_PIN
 	current_voltage_raw_pwr = adc_values[ADC_PIN_IDX(VOLT_PWR_PIN)];
 #endif
 #ifdef AMBIENT_THERMISTOR
-	current_temperature_raw_ambient = adc_values[ADC_PIN_IDX(TEMP_AMBIENT_PIN)];
+	current_temperature_raw_ambient = adc_values[ADC_PIN_IDX(TEMP_AMBIENT_PIN)]; // 5->6
 #endif //AMBIENT_THERMISTOR
 #ifdef VOLT_BED_PIN
 	current_voltage_raw_bed = adc_values[ADC_PIN_IDX(VOLT_BED_PIN)]; // 6->9
 #endif
+#if IR_SENSOR_ANALOG
+     current_voltage_raw_IR = adc_values[ADC_PIN_IDX(VOLT_IR_PIN)];
+#endif //IR_SENSOR_ANALOG
 	temp_meas_ready = true;
 }
 

+ 6 - 4
Firmware/temperature.h

@@ -27,6 +27,8 @@
   #include "stepper.h"
 #endif
 
+#include "config.h"
+
 
 #ifdef SYSTEM_TIMER_2
 
@@ -74,9 +76,9 @@ extern int current_voltage_raw_pwr;
 extern int current_voltage_raw_bed;
 #endif
 
-#ifdef TEMP_SENSOR_1_AS_REDUNDANT
-  extern float redundant_temperature;
-#endif
+#if IR_SENSOR_ANALOG
+extern int current_voltage_raw_IR;
+#endif //IR_SENSOR_ANALOG
 
 #if defined(CONTROLLERFAN_PIN) && CONTROLLERFAN_PIN > -1
   extern unsigned char soft_pwm_bed;
@@ -220,7 +222,6 @@ FORCE_INLINE bool isCoolingBed() {
 
 int getHeaterPower(int heater);
 void disable_heater();
-void setWatch();
 void updatePID();
 
 
@@ -245,6 +246,7 @@ void checkExtruderAutoFans();
 
 enum { 
 	EFCE_OK = 0,   //!< normal operation, both fans are ok
+	EFCE_FIXED,    //!< previous fan error was fixed
 	EFCE_DETECTED, //!< fan error detected, but not reported yet
 	EFCE_REPORTED  //!< fan error detected and reported to LCD and serial
 };

+ 1 - 1
Firmware/timer02.c

@@ -26,7 +26,7 @@ void timer0_init(void)
 	OCR0B = 255;
 	// Set fast PWM mode and inverting mode.
 	TCCR0A = (1 << WGM01) | (1 << WGM00) | (1 << COM0B1) | (1 << COM0B0);  
-	TCCR0B = (1 << CS00);    // no clock prescaling
+	TCCR0B = (1 << CS01);    // CLK/8 prescaling
 	TIMSK0 |= (1 << TOIE0);  // enable timer overflow interrupt
 	
 	// Everything, that used to be on timer0 was moved to timer2 (delay, beeping, millis etc.)

+ 79 - 4
Firmware/tmc2130.cpp

@@ -1,3 +1,5 @@
+//! @file
+
 #include "Marlin.h"
 
 #ifdef TMC2130
@@ -22,7 +24,7 @@ uint8_t tmc2130_current_h[4] = TMC2130_CURRENTS_H;
 uint8_t tmc2130_current_r[4] = TMC2130_CURRENTS_R;
 
 //running currents for homing
-uint8_t tmc2130_current_r_home[4] = {8, 10, 20, 18};
+uint8_t tmc2130_current_r_home[4] = TMC2130_CURRENTS_R_HOME;
 
 
 //pwm_ampl
@@ -38,7 +40,7 @@ uint8_t tmc2130_mres[4] = {0, 0, 0, 0}; //will be filed at begin of init
 
 
 uint8_t tmc2130_sg_thr[4] = {TMC2130_SG_THRS_X, TMC2130_SG_THRS_Y, TMC2130_SG_THRS_Z, TMC2130_SG_THRS_E};
-uint8_t tmc2130_sg_thr_home[4] = {3, 3, TMC2130_SG_THRS_Z, TMC2130_SG_THRS_E};
+uint8_t tmc2130_sg_thr_home[4] = TMC2130_SG_THRS_HOME;
 
 
 uint8_t tmc2130_sg_homing_axes_mask = 0x00;
@@ -425,7 +427,7 @@ 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 = 1;
+	uint8_t intpol = (mres != 0); // intpol to 256 only if microsteps aren't 256
 	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
@@ -598,7 +600,7 @@ void tmc2130_wr_THIGH(uint8_t axis, uint32_t val32)
 
 uint8_t tmc2130_usteps2mres(uint16_t usteps)
 {
-	uint8_t mres = 8; while (mres && (usteps >>= 1)) mres--;
+	uint8_t mres = 8; while (usteps >>= 1) mres--;
 	return mres;
 }
 
@@ -1009,6 +1011,79 @@ bool tmc2130_home_calibrate(uint8_t axis)
 	return true;
 }
 
+
+//! @brief Translate current to tmc2130 vsense and IHOLD or IRUN
+//! @param cur current in mA
+//! @return 0 .. 63
+//! @n most significant bit is CHOPCONF vsense bit (sense resistor voltage based current scaling)
+//! @n rest is to be used in IRUN or IHOLD register
+//!
+//! | mA   | trinamic register | note |
+//! | ---  | ---               | ---  |
+//! |    0 |  0 | doesn't mean current off, lowest current is 1/32 current with vsense low range |
+//! |   30 |  1 | |
+//! |   40 |  2 | |
+//! |   60 |  3 | |
+//! |   90 |  4 | |
+//! |  100 |  5 | |
+//! |  120 |  6 | |
+//! |  130 |  7 | |
+//! |  150 |  8 | |
+//! |  180 |  9 | |
+//! |  190 | 10 | |
+//! |  210 | 11 | |
+//! |  230 | 12 | |
+//! |  240 | 13 | |
+//! |  250 | 13 | |
+//! |  260 | 14 | |
+//! |  280 | 15 | |
+//! |  300 | 16 | |
+//! |  320 | 17 | |
+//! |  340 | 18 | |
+//! |  350 | 19 | |
+//! |  370 | 20 | |
+//! |  390 | 21 | |
+//! |  410 | 22 | |
+//! |  430 | 23 | |
+//! |  450 | 24 | |
+//! |  460 | 25 | |
+//! |  480 | 26 | |
+//! |  500 | 27 | |
+//! |  520 | 28 | |
+//! |  535 | 29 | |
+//! |  N/D | 30 | extruder default |
+//! |  540 | 33 | |
+//! |  560 | 34 | |
+//! |  580 | 35 | |
+//! |  590 | 36 | farm mode extruder default |
+//! |  610 | 37 | |
+//! |  630 | 38 | |
+//! |  640 | 39 | |
+//! |  660 | 40 | |
+//! |  670 | 41 | |
+//! |  690 | 42 | |
+//! |  710 | 43 | |
+//! |  720 | 44 | |
+//! |  730 | 45 | |
+//! |  760 | 46 | |
+//! |  770 | 47 | |
+//! |  790 | 48 | |
+//! |  810 | 49 | |
+//! |  820 | 50 | |
+//! |  840 | 51 | |
+//! |  850 | 52 | |
+//! |  870 | 53 | |
+//! |  890 | 54 | |
+//! |  900 | 55 | |
+//! |  920 | 56 | |
+//! |  940 | 57 | |
+//! |  950 | 58 | |
+//! |  970 | 59 | |
+//! |  980 | 60 | |
+//! | 1000 | 61 | |
+//! | 1020 | 62 | |
+//! | 1029 | 63 | |
+
 uint8_t tmc2130_cur2val(float cur)
 {
 	if (cur < 0) cur = 0; //limit min

+ 1454 - 1031
Firmware/ultralcd.cpp

@@ -1,4 +1,7 @@
 //! @file
+//! @date Aug 28, 2019
+//! @author mkbel
+//! @brief LCD
 
 #include "temperature.h"
 #include "ultralcd.h"
@@ -42,6 +45,10 @@
 #include "io_atmega2560.h"
 #include "first_lay_cal.h"
 
+#include "fsensor.h"
+#include "adc.h"
+#include "config.h"
+
 
 int scrollstuff = 0;
 char longFilenameOLD[LONG_FILENAME_LENGTH];
@@ -58,17 +65,6 @@ uint8_t SilentModeMenu_MMU = 1; //activate mmu unit stealth mode
 
 int8_t FSensorStateMenu = 1;
 
-int8_t CrashDetectMenu = 1;
-
-
-extern bool fsensor_enable();
-extern void fsensor_disable();
-
-#ifdef TMC2130
-extern void crashdet_enable();
-extern void crashdet_disable();
-#endif //TMC2130
-
 
 #ifdef SDCARD_SORT_ALPHA
 bool presort_flag = false;
@@ -103,6 +99,8 @@ uint8_t lcd_status_message_level;
 char lcd_status_message[LCD_WIDTH + 1] = ""; //////WELCOME!
 unsigned char firstrun = 1;
 
+static uint8_t lay1cal_filament = 0;
+
 
 static const char separator[] PROGMEM = "--------------------";
 
@@ -120,14 +118,7 @@ static void lcd_tune_menu();
 //static void lcd_move_menu();
 static void lcd_settings_menu();
 static void lcd_calibration_menu();
-#ifdef LINEARITY_CORRECTION
-static void lcd_settings_menu_back();
-#endif //LINEARITY_CORRECTION
 static void lcd_control_temperature_menu();
-static void lcd_control_temperature_preheat_pla_settings_menu();
-static void lcd_control_temperature_preheat_abs_settings_menu();
-static void lcd_control_motion_menu();
-static void lcd_control_volumetric_menu();
 static void lcd_settings_linearity_correction_menu_save();
 static void prusa_stat_printerstatus(int _status);
 static void prusa_stat_farm_number();
@@ -135,17 +126,20 @@ static void prusa_stat_diameter();
 static void prusa_stat_temperatures();
 static void prusa_stat_printinfo();
 static void lcd_farm_no();
-//static void lcd_menu_extruder_info();           // NOT static due to using inside "Marlin_main" module ("manage_inactivity()")
 static void lcd_menu_xyz_y_min();
 static void lcd_menu_xyz_skew();
 static void lcd_menu_xyz_offset();
 static void lcd_menu_fails_stats_mmu();
 static void lcd_menu_fails_stats_mmu_print();
 static void lcd_menu_fails_stats_mmu_total();
+static void mmu_unload_filament();
+static void lcd_v2_calibration();
 //static void lcd_menu_show_sensors_state();      // NOT static due to using inside "Marlin_main" module ("manage_inactivity()")
 
 static void mmu_fil_eject_menu();
 static void mmu_load_to_nozzle_menu();
+static void preheat_or_continue();
+
 #ifdef MMU_HAS_CUTTER
 static void mmu_cut_filament_menu();
 #endif //MMU_HAS_CUTTER
@@ -154,6 +148,10 @@ static void mmu_cut_filament_menu();
 static void lcd_menu_fails_stats();
 #endif //TMC2130 or FILAMENT_SENSOR
 
+#ifdef TMC2130
+static void lcd_belttest_v();
+#endif //TMC2130
+
 static void lcd_selftest_v();
 
 #ifdef TMC2130
@@ -200,6 +198,7 @@ enum class TestError : uint_least8_t
     SwappedFan,
     WiringFsensor,
     TriggeringFsensor,
+    FsensorLevel
 };
 
 static int  lcd_selftest_screen(TestScreen screen, int _progress, int _progress_scale, bool _clear, int _delay);
@@ -231,6 +230,9 @@ static FanCheck lcd_selftest_fan_auto(int _fan);
 static bool lcd_selftest_fsensor();
 #endif //PAT9125
 static bool selftest_irsensor();
+#if IR_SENSOR_ANALOG
+static bool lcd_selftest_IRsensor();
+#endif //IR_SENSOR_ANALOG
 static void lcd_selftest_error(TestError error, const char *_error_1, const char *_error_2);
 static void lcd_colorprint_change();
 #ifdef SNMM
@@ -259,10 +261,6 @@ void lcd_finishstatus();
 static void lcd_sdcard_menu();
 static void lcd_sheet_menu();
 
-static void lcd_select_sheet_0_menu();
-static void lcd_select_sheet_1_menu();
-static void lcd_select_sheet_2_menu();
-
 #ifdef DELTA_CALIBRATION_MENU
 static void lcd_delta_calibrate_menu();
 #endif // DELTA_CALIBRATION_MENU
@@ -321,18 +319,24 @@ bool bSettings;                                   // flag (i.e. 'fake parameter'
 const char STR_SEPARATOR[] PROGMEM = "------------";
 
 
-static void lcd_implementation_drawmenu_sdfile_selected(uint8_t row, char* longFilename)
+static void lcd_implementation_drawmenu_sdfile_selected(uint8_t row, const char* filename, char* longFilename)
 {
     char c;
-    int enc_dif = lcd_encoder_diff;
+    int enc_dif = lcd_encoder_diff / ENCODER_PULSES_PER_STEP;
     uint8_t n = LCD_WIDTH - 1;
+
     for(uint_least8_t g = 0; g<4;g++){
       lcd_set_cursor(0, g);
     lcd_print(' ');
     }
-
     lcd_set_cursor(0, row);
     lcd_print('>');
+
+    if (longFilename[0] == '\0')
+    {
+        longFilename = filename;
+    }
+
     int i = 1;
     int j = 0;
     char* longFilenameTMP = longFilename;
@@ -350,7 +354,7 @@ static void lcd_implementation_drawmenu_sdfile_selected(uint8_t row, char* longF
           n = LCD_WIDTH - 1;
           for(int g = 0; g<300 ;g++){
 			  manage_heater();
-            if(LCD_CLICKED || ( enc_dif != lcd_encoder_diff )){
+            if(LCD_CLICKED || ( enc_dif != (lcd_encoder_diff / ENCODER_PULSES_PER_STEP))){
 				longFilenameTMP = longFilename;
 				*(longFilenameTMP + LCD_WIDTH - 2) = '\0';
 				i = 1;
@@ -548,7 +552,7 @@ static uint8_t menu_item_sdfile(const char*
 		if (lcd_draw_update)
 		{
 			if (lcd_encoder == menu_item)
-				lcd_implementation_drawmenu_sdfile_selected(menu_row, str_fnl);
+				lcd_implementation_drawmenu_sdfile_selected(menu_row, str_fn, str_fnl);
 			else
 				lcd_implementation_drawmenu_sdfile(menu_row, str_fn, str_fnl);
 		}
@@ -613,11 +617,21 @@ void lcdui_print_feedrate(void)
 // Print percent done in form "USB---%", " SD---%", "   ---%" (7 chars total)
 void lcdui_print_percent_done(void)
 {
+	char sheet[8];
 	const char* src = is_usb_printing?_N("USB"):(IS_SD_PRINTING?_N(" SD"):_N("   "));
 	char per[4];
 	bool num = IS_SD_PRINTING || (PRINTER_ACTIVE && (print_percent_done_normal != PRINT_PERCENT_DONE_INIT));
-	sprintf_P(per, num?_N("%3hhd"):_N("---"), calc_percent_done());
-	lcd_printf_P(_N("%3S%3s%%"), src, per);
+	if (!num || heating_status) // either not printing or heating
+	{
+		eeprom_read_block(sheet, EEPROM_Sheets_base->s[eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet))].name, 7);
+		sheet[7] = '\0';
+		lcd_printf_P(PSTR("%s"),sheet);
+	}
+	else
+	{
+		sprintf_P(per, num?_N("%3hhd"):_N("---"), calc_percent_done());
+		lcd_printf_P(_N("%3S%3s%%"), src, per);
+	}
 }
 
 // Print extruder status (5 chars total)
@@ -720,10 +734,10 @@ void lcdui_print_status_line(void)
 {
 	if (IS_SD_PRINTING)
 	{
-		if (strcmp(longFilenameOLD, card.longFilename) != 0)
+		if (strcmp(longFilenameOLD, (card.longFilename[0] ? card.longFilename : card.filename)) != 0)
 		{
 			memset(longFilenameOLD, '\0', strlen(longFilenameOLD));
-			sprintf_P(longFilenameOLD, PSTR("%s"), card.longFilename);
+			sprintf_P(longFilenameOLD, PSTR("%s"), (card.longFilename[0] ? card.longFilename : card.filename));
 			scrollstuff = 0;
 		}
 	}
@@ -771,16 +785,16 @@ void lcdui_print_status_line(void)
 	}
 	else if ((IS_SD_PRINTING) && (custom_message_type == CustomMsg::Status))
 	{ // If printing from SD, show what we are printing
-		if(strlen(card.longFilename) > LCD_WIDTH)
+		if(strlen(longFilenameOLD) > LCD_WIDTH)
 		{
 			int inters = 0;
 			int gh = scrollstuff;
 			while (((gh - scrollstuff) < LCD_WIDTH) && (inters == 0))
 			{
-				if (card.longFilename[gh] == '\0')
+				if (longFilenameOLD[gh] == '\0')
 				{
 					lcd_set_cursor(gh - scrollstuff, 3);
-					lcd_print(card.longFilename[gh - 1]);
+					lcd_print(longFilenameOLD[gh - 1]);
 					scrollstuff = 0;
 					gh = scrollstuff;
 					inters = 1;
@@ -788,7 +802,7 @@ void lcdui_print_status_line(void)
 				else
 				{
 					lcd_set_cursor(gh - scrollstuff, 3);
-					lcd_print(card.longFilename[gh - 1]);
+					lcd_print(longFilenameOLD[gh - 1]);
 					gh++;
 				}
 			}
@@ -796,7 +810,7 @@ void lcdui_print_status_line(void)
 		}
 		else
 		{
-			lcd_print(longFilenameOLD);
+			lcd_printf_P(PSTR("%-20s"), longFilenameOLD);
 		}
 	}
 	else
@@ -849,12 +863,13 @@ void lcdui_print_status_line(void)
 			break;
 		case CustomMsg::TempCal: // PINDA temp calibration in progress
 			{
+				char statusLine[LCD_WIDTH + 1];
+				sprintf_P(statusLine, PSTR("%-20S"), _T(MSG_TEMP_CALIBRATION));
 				char progress[4];
+				sprintf_P(progress, PSTR("%d/6"), custom_message_state);
+				memcpy(statusLine + 12, progress, sizeof(progress) - 1);
 				lcd_set_cursor(0, 3);
-				lcd_puts_P(_T(MSG_TEMP_CALIBRATION));
-				lcd_set_cursor(12, 3);
-				sprintf(progress, "%d/6", custom_message_state);
-				lcd_print(progress);
+				lcd_print(statusLine);
 			}
 			break;
 		case CustomMsg::TempCompPreheat: // temp compensation preheat
@@ -876,18 +891,23 @@ void lcdui_print_status_line(void)
 			lcd_print(' ');
 }
 
+//! @brief Show Status Screen
+//!
+//! @code{.unparsed}
+//! |01234567890123456789|
+//! |N 000/000D  Z000.0  |
+//! |B 000/000D  F100%   |
+//! |USB100% T0  t--:--  |
+//! |Status line.........|
+//! ----------------------
+//! N - nozzle temp symbol	LCD_STR_THERMOMETER
+//! D - Degree sysmbol		LCD_STR_DEGREE
+//! B - bed temp symbol 	LCD_STR_BEDTEMP
+//! F - feedrate symbol 	LCD_STR_FEEDRATE
+//! t - clock symbol 		LCD_STR_THERMOMETER
+//! @endcode
 void lcdui_print_status_screen(void)
 {
-//|01234567890123456789|
-//|N 000/000D  Z000.0  |
-//|B 000/000D  F100%   |
-//|USB100% T0  t--:--  |
-//|Status line.........|
-//----------------------
-//N - nozzle temp symbol LCD_STR_THERMOMETER
-//B - bed temp symbol LCD_STR_BEDTEMP
-//F - feedrate symbol LCD_STR_FEEDRATE
-//t - clock symbol LCD_STR_THERMOMETER
 
     lcd_set_cursor(0, 0); //line 0
 
@@ -1078,12 +1098,8 @@ void lcd_commands()
 		if (!blocks_queued() && !homing_flag)
 		{
 			lcd_setstatuspgm(_i("Print paused"));////MSG_PRINT_PAUSED c=20 r=1
-			long_pause();
-               if (lcd_commands_type == LcdCommands::LongPause) // !!! because "lcd_commands_type" can be changed during/inside "long_pause()"
-               {
-                    lcd_commands_type = LcdCommands::Idle;
-                    lcd_commands_step = 0;
-               }
+            lcd_commands_type = LcdCommands::Idle;
+            lcd_commands_step = 0;
 		}
 	}
 
@@ -1357,46 +1373,29 @@ void lcd_commands()
 	if (lcd_commands_type == LcdCommands::Layer1Cal)
 	{
 		char cmd1[30];
-		static uint8_t filament = 0;
 
 		if(lcd_commands_step>1) lcd_timeoutToStatus.start(); //if user dont confirm live adjust Z value by pressing the knob, we are saving last value by timeout to status screen
 
-        if (!blocks_queued() && cmd_buffer_empty())
+        if (!blocks_queued() && cmd_buffer_empty() && !saved_printing)
         {
             switch(lcd_commands_step)
             {
             case 0:
-                lcd_commands_step = 10;
-                break;
-            case 20:
-                filament = 0;
-                lcd_commands_step = 10;
-                break;
-            case 21:
-                filament = 1;
-                lcd_commands_step = 10;
-                break;
-            case 22:
-                filament = 2;
-                lcd_commands_step = 10;
+                lcd_commands_step = 11;
                 break;
-            case 23:
-                filament = 3;
-                lcd_commands_step = 10;
-                break;
-            case 24:
-                filament = 4;
+            case 11:
+                lay1cal_wait_preheat();
                 lcd_commands_step = 10;
                 break;
             case 10:
-                lay1cal_preheat();
+                lay1cal_load_filament(cmd1, lay1cal_filament);
                 lcd_commands_step = 9;
                 break;
             case 9:
                 lcd_clear();
                 menu_depth = 0;
                 menu_submenu(lcd_babystep_z);
-                lay1cal_intro_line(cmd1, filament);
+                lay1cal_intro_line();
                 lcd_commands_step = 8;
                 break;
             case 8:
@@ -1651,7 +1650,7 @@ void lcd_return_to_status()
 	lcd_refresh(); // to maybe revive the LCD if static electricity killed it.
 	menu_goto(lcd_status_screen, 0, false, true);
 	menu_depth = 0;
-     eFilamentAction=FilamentAction::None; // i.e. non-autoLoad
+    eFilamentAction = FilamentAction::None; // i.e. non-autoLoad
 }
 
 //! @brief Pause print, disable nozzle heater, move to park position
@@ -1659,13 +1658,13 @@ void lcd_pause_print()
 {
     lcd_return_to_status();
     stop_and_save_print_to_ram(0.0,0.0);
-    setAllTargetHotends(0);
+    long_pause();
     isPrintPaused = true;
     if (LcdCommands::Idle == lcd_commands_type)
     {
         lcd_commands_type = LcdCommands::LongPause;
     }
-	SERIAL_PROTOCOLLNRPGM(MSG_OCTOPRINT_PAUSE); //pause for octoprint
+	SERIAL_PROTOCOLLNRPGM(MSG_OCTOPRINT_PAUSED); //pause for octoprint
 }
 
 
@@ -1676,119 +1675,59 @@ static void lcd_move_menu_axis();
 
 /* Menu implementation */
 
-void lcd_preheat_farm()
-{
-  setTargetHotend0(FARM_PREHEAT_HOTEND_TEMP);
-  setTargetBed(FARM_PREHEAT_HPB_TEMP);
-  fanSpeed = 0;
-  lcd_return_to_status();
-  setWatch(); // heater sanity check timer
-}
-
-void lcd_preheat_farm_nozzle()
-{
-	setTargetHotend0(FARM_PREHEAT_HOTEND_TEMP);
-	setTargetBed(0);
-	fanSpeed = 0;
-	lcd_return_to_status();
-	setWatch(); // heater sanity check timer
-}
-
-void lcd_preheat_pla()
-{
-  setTargetHotend0(PLA_PREHEAT_HOTEND_TEMP);
-  if (!wizard_active) setTargetBed(PLA_PREHEAT_HPB_TEMP);
-  fanSpeed = 0;
-  lcd_return_to_status();
-  setWatch(); // heater sanity check timer
-  if (wizard_active) lcd_wizard(WizState::Unload);
-}
-
-void lcd_preheat_abs()
-{
-  setTargetHotend0(ABS_PREHEAT_HOTEND_TEMP);
-  if (!wizard_active) setTargetBed(ABS_PREHEAT_HPB_TEMP);
-  fanSpeed = 0;
-  lcd_return_to_status();
-  setWatch(); // heater sanity check timer
-  if (wizard_active) lcd_wizard(WizState::Unload);
-}
-
-void lcd_preheat_pp()
-{
-  setTargetHotend0(PP_PREHEAT_HOTEND_TEMP);
-  if (!wizard_active) setTargetBed(PP_PREHEAT_HPB_TEMP);
-  fanSpeed = 0;
-  lcd_return_to_status();
-  setWatch(); // heater sanity check timer
-  if (wizard_active) lcd_wizard(WizState::Unload);
-}
-
-void lcd_preheat_pet()
-{
-  setTargetHotend0(PET_PREHEAT_HOTEND_TEMP);
-  if (!wizard_active) setTargetBed(PET_PREHEAT_HPB_TEMP);
-  fanSpeed = 0;
-  lcd_return_to_status();
-  setWatch(); // heater sanity check timer
-  if (wizard_active) lcd_wizard(WizState::Unload);
-}
-
-void lcd_preheat_hips()
-{
-  setTargetHotend0(HIPS_PREHEAT_HOTEND_TEMP);
-  if (!wizard_active) setTargetBed(HIPS_PREHEAT_HPB_TEMP);
-  fanSpeed = 0;
-  lcd_return_to_status();
-  setWatch(); // heater sanity check timer
-  if (wizard_active) lcd_wizard(WizState::Unload);
-}
-
-void lcd_preheat_flex()
-{
-  setTargetHotend0(FLEX_PREHEAT_HOTEND_TEMP);
-  if (!wizard_active) setTargetBed(FLEX_PREHEAT_HPB_TEMP);
-  fanSpeed = 0;
-  lcd_return_to_status();
-  setWatch(); // heater sanity check timer
-  if (wizard_active) lcd_wizard(WizState::Unload);
-}
-
-
-void lcd_cooldown()
+static void lcd_cooldown()
 {
   setAllTargetHotends(0);
   setTargetBed(0);
   fanSpeed = 0;
+  eFilamentAction = FilamentAction::None;
   lcd_return_to_status();
 }
 
+//! @brief append text label with a colon and format it into a fixed size output buffer
+//! It would have been much easier if there was a ':' in the labels.
+//! But since the texts like Bed, Nozzle and PINDA are used in other places
+//! it is better to reuse these texts even though it requires some extra formatting code.
+//! @param [in] ipgmLabel pointer to string in PROGMEM
+//! @param [out] pointer to string in RAM which will receive the formatted text. Must be allocated to appropriate size
+//! @param [in] dstSize allocated length of dst
+static void pgmtext_with_colon(const char *ipgmLabel, char *dst, uint8_t dstSize){
+    uint8_t i = 0;
+    for(; i < dstSize - 2; ++i){ // 2 byte less than buffer, we'd be adding a ':' to the end
+        uint8_t b = pgm_read_byte(ipgmLabel + i);
+        if( ! b )
+            break;
+        dst[i] = b;
+    }
+    dst[i] = ':';               // append the colon
+    ++i;
+    for(; i < dstSize - 1; ++i) // fill the rest with spaces
+        dst[i] = ' ';
+    dst[dstSize-1] = '\0';      // terminate the string properly
+}
 
+//! @brief Show Extruder Info
+//!
+//! @code{.unparsed}
+//! |01234567890123456789|
+//! |Nozzle FAN: 0000 RPM|	FAN c=10 r=1  SPEED c=3 r=1
+//! |Print FAN:  0000 RPM|	FAN c=10 r=1  SPEED c=3 r=1
+//! |Fil. Xd:000 Yd:000  |	Fil. c=4 r=1
+//! |Int:  000 Shut: 000 |	Int: c=4 r=1  Shut: c=4 r=1
+//! ----------------------
+//! @endcode
+//! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations.
 void lcd_menu_extruder_info()                     // NOT static due to using inside "Marlin_main" module ("manage_inactivity()")
 {
-//|01234567890123456789|
-//|Nozzle FAN:      RPM|
-//|Print FAN:       RPM|
-//|Fil. Xd:    Yd:     |
-//|Int:      Shut:     |
-//----------------------
-	int fan_speed_RPM[2];
-	// Display Nozzle fan RPM
-	fan_speed_RPM[0] = 60*fan_speed[0];
-	fan_speed_RPM[1] = 60*fan_speed[1];
-
-	lcd_timeoutToStatus.stop(); //infinite timeout
 
-	lcd_home();
-	lcd_printf_P(_N(
-	  "%S: %4d RPM\n"
-	  "%S:  %4d RPM\n"
-	 ),
-	 _i("Nozzle FAN"),
-	 fan_speed_RPM[0],
-	 _i("Print FAN"),
-	 fan_speed_RPM[1]
-	);
+    // Display Nozzle fan RPM
+    lcd_timeoutToStatus.stop(); //infinite timeout
+    lcd_home();
+    static const size_t maxChars = 12;
+    char nozzle[maxChars], print[maxChars];
+    pgmtext_with_colon(_i("Nozzle FAN"), nozzle, maxChars);  ////c=10 r=1
+    pgmtext_with_colon(_i("Print FAN"), print, maxChars);  ////c=10 r=1
+    lcd_printf_P(_N("%s %4d RPM\n" "%s %4d RPM\n"), nozzle, 60*fan_speed[0], print, 60*fan_speed[1] ); 
 
 #ifdef PAT9125
 	// Display X and Y difference from Filament sensor    
@@ -1808,8 +1747,9 @@ void lcd_menu_extruder_info()                     // NOT static due to using ins
 			if (!moves_planned() && !IS_SD_PRINTING && !is_usb_printing && (lcd_commands_type != LcdCommands::Layer1Cal))
 				pat9125_update();
 			lcd_printf_P(_N(
-				"Fil. Xd:%3d Yd:%3d\n"
-				"Int: %3d  Shut: %3d"
+				"Fil. Xd:%3d Yd:%3d\n" ////c=4 r=1
+				"Int: %3d  " ////c=4 r=1
+				"Shut: %3d"  ////c=4 r=1
 			),
 				pat9125_x, pat9125_y,
 				pat9125_b, pat9125_s
@@ -1821,125 +1761,187 @@ void lcd_menu_extruder_info()                     // NOT static due to using ins
     menu_back_if_clicked();
 }
 
+//! @brief Show Fails Statistics MMU
+//!
+//! @code{.unparsed}
+//! |01234567890123456789|
+//! | Main               |	c=18 r=1
+//! | Last print         |	c=18 r=1
+//! | Total              |	c=18 r=1
+//! |                    |
+//! ----------------------
+//! @endcode
 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);
-	MENU_ITEM_SUBMENU_P(_i("Total"), lcd_menu_fails_stats_mmu_total);
+	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_END();
 }
 
+//! @brief Show Last Print Failures Statistics 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
+//! |                    |
+//! ----------------------
+//! @endcode
+//! @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_fails_stats_mmu_print()
 {
-//01234567890123456789
-//Last print failures
-// MMU fails  000
-// MMU load fails  000
-//
-//////////////////////
 	lcd_timeoutToStatus.stop(); //infinite timeout
     uint8_t fails = eeprom_read_byte((uint8_t*)EEPROM_MMU_FAIL);
     uint16_t load_fails = eeprom_read_byte((uint8_t*)EEPROM_MMU_LOAD_FAIL);
-	lcd_home();
-	lcd_printf_P(PSTR("%S\n" " %S  %-3d\n" " %S  %-3d"), _i("Last print failures"), _i("MMU fails"), fails, _i("MMU load fails"), load_fails);
-	menu_back_if_clicked_fb();
+    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
+    menu_back_if_clicked_fb();
 }
 
+//! @brief Show Total Failures Statistics MMU
+//!
+//! @code{.unparsed}
+//! |01234567890123456789|
+//! |Total failures      |	c=20 r=1
+//! | MMU fails:      000|	c=14 r=1
+//! | MMU load fails: 000|	c=14 r=1
+//! | MMU power fails:000|	c=14 r=1
+//! ----------------------
+//! @endcode
+//! @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_fails_stats_mmu_total()
 {
-//01234567890123456789
-//Last print failures
-// MMU fails  000
-// MMU load fails  000
-//
-//////////////////////
 	mmu_command(MmuCmd::S3);
 	lcd_timeoutToStatus.stop(); //infinite timeout
     uint8_t fails = eeprom_read_byte((uint8_t*)EEPROM_MMU_FAIL_TOT);
     uint16_t load_fails = eeprom_read_byte((uint8_t*)EEPROM_MMU_LOAD_FAIL_TOT);
-	lcd_home();
-	lcd_printf_P(PSTR("%S\n" " %S  %-3d\n" " %S  %-3d\n" " %S %-3d"), _i("Total failures"), _i("MMU fails"), fails, _i("MMU load fails"), load_fails, _i("MMU power fails"), mmu_power_failures);
-	menu_back_if_clicked_fb();
+    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
+        _i("MMU power fails"), mmu_power_failures); ////c=14 r=1
+    menu_back_if_clicked_fb();
 }
 
 #if defined(TMC2130) && defined(FILAMENT_SENSOR)
+static const char failStatsFmt[] PROGMEM = "%S\n" " %-16.16S%-3d\n" " %-16.16S%-3d\n" " %-7.7SX %-3d  Y %-3d";
+
+//! @brief Show Total Failures Statistics MMU
+//!
+//! @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
+//! ----------------------
+//! @endcode
+//! @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_fails_stats_total()
 {
-//01234567890123456789
-//Total failures
-// Power failures  000
-// Filam. runouts  000
-// Crash  X 000  Y 000
-//////////////////////
 	lcd_timeoutToStatus.stop(); //infinite timeout
     uint16_t power = eeprom_read_word((uint16_t*)EEPROM_POWER_COUNT_TOT);
     uint16_t filam = eeprom_read_word((uint16_t*)EEPROM_FERROR_COUNT_TOT);
     uint16_t crashX = eeprom_read_word((uint16_t*)EEPROM_CRASH_COUNT_X_TOT);
     uint16_t crashY = eeprom_read_word((uint16_t*)EEPROM_CRASH_COUNT_Y_TOT);
-	lcd_home();
-	lcd_printf_P(PSTR("%S\n" " %S  %-3d\n" " %S  %-3d\n" " %S  X %-3d  Y %-3d"), _i("Total failures"), _i("Power failures"), power, _i("Filam. runouts"), filam, _i("Crash"), crashX, crashY);
-	menu_back_if_clicked_fb();
+    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
+    menu_back_if_clicked_fb();
 }
 
+//! @brief Show Last Print Failures Statistics
+//!
+//! @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
+//! ----------------------
+//! @endcode
+//! @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_fails_stats_print()
 {
-//01234567890123456789
-//Last print failures
-// Power failures  000
-// Filam. runouts  000
-// Crash  X 000  Y 000
-//////////////////////
 	lcd_timeoutToStatus.stop(); //infinite timeout
     uint8_t power = eeprom_read_byte((uint8_t*)EEPROM_POWER_COUNT);
     uint8_t filam = eeprom_read_byte((uint8_t*)EEPROM_FERROR_COUNT);
     uint8_t crashX = eeprom_read_byte((uint8_t*)EEPROM_CRASH_COUNT_X);
     uint8_t crashY = eeprom_read_byte((uint8_t*)EEPROM_CRASH_COUNT_Y);
-	lcd_home();
-	lcd_printf_P(PSTR("%S\n" " %S  %-3d\n" " %S  %-3d\n" " %S  X %-3d  Y %-3d"), _i("Last print failures"), _i("Power failures"), power, _i("Filam. runouts"), filam, _i("Crash"), crashX, crashY);
-	menu_back_if_clicked_fb();
-}
+    lcd_home();
+    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
+    menu_back_if_clicked_fb();
+}
+
+//! @brief Open fail statistics menu
+//! 
+//! This version of function is used, when there is filament sensor,
+//! power failure and crash detection.
+//! There are Last print and Total menu items.
+//! 
+//! @code{.unparsed}
+//! |01234567890123456789|
+//! | Main               |	c=18 r=1
+//! | Last print         |	c=18 r=1
+//! | Total              |	c=18 r=1
+//! |                    |
+//! ----------------------
+//! @endcode
 
-/**
- * @brief Open fail statistics menu
- *
- * This version of function is used, when there is filament sensor,
- * power failure and crash detection.
- * There are Last print and Total menu items.
- */
 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);
-	MENU_ITEM_SUBMENU_P(_i("Total"), lcd_menu_fails_stats_total);
+	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_END();
 }
 
 #elif defined(FILAMENT_SENSOR)
-/**
- * @brief Print last print and total filament run outs
- *
- * This version of function is used, when there is filament sensor,
- * but no other sensors (e.g. power failure, crash detection).
- *
- * Example screen:
- * @code
- * 01234567890123456789
- * Last print failures
- *  Filam. runouts  0
- * Total failures
- *  Filam. runouts  5
- * @endcode
- */
+static const char failStatsFmt[] PROGMEM = "%S\n" " %-16.16S%-3d\n" "%S\n" " %-16.16S%-3d\n";
+//! 
+//! @brief Print last print and total filament run outs
+//! 
+//! This version of function is used, when there is filament sensor,
+//! but no other sensors (e.g. power failure, crash detection).
+//! 
+//! 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
+//! ----------------------
+//! @endcode
+//! @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_fails_stats()
 {
 	lcd_timeoutToStatus.stop(); //infinite timeout
     uint8_t filamentLast = eeprom_read_byte((uint8_t*)EEPROM_FERROR_COUNT);
     uint16_t filamentTotal = eeprom_read_word((uint16_t*)EEPROM_FERROR_COUNT_TOT);
 	lcd_home();
-    lcd_printf_P(PSTR("Last print failures\n" " Filam. runouts  %-3d\n" "Total failures\n" " Filam. runouts  %-3d"), filamentLast, filamentTotal);
-    menu_back_if_clicked();
+	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
+
+	menu_back_if_clicked();
 }
 #else
 static void lcd_menu_fails_stats()
@@ -1959,48 +1961,114 @@ extern char* __malloc_heap_start;
 extern char* __malloc_heap_end;
 #endif //DEBUG_STACK_MONITOR
 
+//! @brief Show Debug Information
+//!
+//! @code{.unparsed}
+//! |01234567890123456789|
+//! |RAM statistics      |	c=20 r=1
+//! | SP_min:        0000|	c=14 r=1
+//! | heap_start:    0000|	c=14 r=1
+//! | heap_end:      0000|	c=14 r=1
+//! ----------------------
+//! @endcode
+//! @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_debug()
 {
 #ifdef DEBUG_STACK_MONITOR
 	lcd_home();
-	lcd_printf_P(PSTR("RAM statistics\n" " SP_min: 0x%04x\n" " heap_start: 0x%04x\n" " heap_end: 0x%04x"), SP_min, __malloc_heap_start, __malloc_heap_end);
+	lcd_printf_P(PSTR("RAM statistics\n"  ////c=20 r=1
+        " SP_min: 0x%04x\n"   ////c=14 r=1
+        " heap_start: 0x%04x\n"   ////c=14 r=1
+        " heap_end: 0x%04x"), SP_min, __malloc_heap_start, __malloc_heap_end);  ////c=14 r=1
 #endif //DEBUG_STACK_MONITOR
 
 	menu_back_if_clicked_fb();
 }
 #endif /* DEBUG_BUILD */
 
+//! @brief common line print for lcd_menu_temperatures
+//! @param [in] ipgmLabel pointer to string in PROGMEM
+//! @param [in] value to be printed behind the label
+static void lcd_menu_temperatures_line(const char *ipgmLabel, int value){
+    static const size_t maxChars = 15;    
+    char tmp[maxChars];
+    pgmtext_with_colon(ipgmLabel, tmp, maxChars);
+    lcd_printf_P(PSTR(" %s%3d\x01 \n"), tmp, value); // no need to add -14.14 to string alignment
+}
+
+//! @brief Show Temperatures
+//!
+//! @code{.unparsed}
+//! |01234567890123456789|
+//! | Nozzle:        000D|	c=14 r=1
+//! | Bed:           000D|	c=14 r=1
+//! | Ambient:       000D|	c=14 r=1
+//! | PINDA:         000D|	c=14 r=1
+//! ----------------------
+//! D - Degree sysmbol		LCD_STR_DEGREE
+//! @endcode
+//! @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_temperatures()
 {
-	lcd_timeoutToStatus.stop(); //infinite timeout
-	lcd_home();
-	lcd_printf_P(PSTR(" %S:   %d%c \n" " %S:      %d%c \n"), _i("Nozzle"), (int)current_temperature[0], '\x01', _i("Bed"), (int)current_temperature_bed, '\x01');
+    lcd_timeoutToStatus.stop(); //infinite timeout
+    lcd_home();
+    lcd_menu_temperatures_line( _T(MSG_NOZZLE), (int)current_temperature[0] ); ////c=14 r=1
+    lcd_menu_temperatures_line( _T(MSG_BED), (int)current_temperature_bed );  ////c=14 r=1
 #ifdef AMBIENT_THERMISTOR
-	lcd_printf_P(PSTR(" %S:  %d%c\n" " PINDA:    %d%c"), _i("Ambient"), (int)current_temperature_ambient, '\x01', (int)current_temperature_pinda, '\x01');
-#else //AMBIENT_THERMISTOR
-	lcd_printf_P(PSTR(" PINDA:    %d%c"), (int)current_temperature_pinda, '\x01');
+    lcd_menu_temperatures_line( _i("Ambient"), (int)current_temperature_ambient );  ////c=14 r=1
 #endif //AMBIENT_THERMISTOR
-
+#ifdef PINDA_THERMISTOR
+    lcd_menu_temperatures_line( _i("PINDA"), (int)current_temperature_pinda );  ////c=14 r=1
+#endif //PINDA_THERMISTOR
     menu_back_if_clicked();
 }
 
-#if defined (VOLT_BED_PIN) || defined (VOLT_PWR_PIN)
+#if defined (VOLT_BED_PIN) || defined (VOLT_PWR_PIN) || IR_SENSOR_ANALOG
 #define VOLT_DIV_R1 10000
 #define VOLT_DIV_R2 2370
 #define VOLT_DIV_FAC ((float)VOLT_DIV_R2 / (VOLT_DIV_R2 + VOLT_DIV_R1))
-#define VOLT_DIV_REF 5
+
+//! @brief Show Voltages
+//!
+//! @code{.unparsed}
+//! |01234567890123456789|
+//! |                    |
+//! | PWR:         00.0V |	c=12 r=1
+//! | Bed:         00.0V |	c=12 r=1
+//! |                    |
+//! ----------------------
+//! @endcode
+//! @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_voltages()
 {
 	lcd_timeoutToStatus.stop(); //infinite timeout
 	float volt_pwr = VOLT_DIV_REF * ((float)current_voltage_raw_pwr / (1023 * OVERSAMPLENR)) / VOLT_DIV_FAC;
 	float volt_bed = VOLT_DIV_REF * ((float)current_voltage_raw_bed / (1023 * OVERSAMPLENR)) / VOLT_DIV_FAC;
 	lcd_home();
-	lcd_printf_P(PSTR(" PWR:      %d.%01dV\n" " BED:      %d.%01dV"), (int)volt_pwr, (int)(10*fabs(volt_pwr - (int)volt_pwr)), (int)volt_bed, (int)(10*fabs(volt_bed - (int)volt_bed)));
-    menu_back_if_clicked();
+#if !IR_SENSOR_ANALOG
+	lcd_printf_P(PSTR("\n"));
+#endif //!IR_SENSOR_ANALOG
+     lcd_printf_P(PSTR(" PWR:      %4.1fV\n" " BED:      %4.1fV"), volt_pwr, volt_bed);
+#if IR_SENSOR_ANALOG
+     float volt_IR = VOLT_DIV_REF * ((float)current_voltage_raw_IR / (1023 * OVERSAMPLENR));
+     lcd_printf_P(PSTR("\n IR :       %3.1fV"),volt_IR);
+#endif //IR_SENSOR_ANALOG
+     menu_back_if_clicked();
 }
-#endif //defined VOLT_BED_PIN || defined VOLT_PWR_PIN
+#endif //defined (VOLT_BED_PIN) || defined (VOLT_PWR_PIN) || IR_SENSOR_ANALOG
 
 #ifdef TMC2130
+//! @brief Show Belt Status
+//!
+//! @code{.unparsed}
+//! |01234567890123456789|
+//! | Belt status        |	c=18 r=1
+//! |  X:            000 |
+//! |  Y:            000 |
+//! |                    |
+//! ----------------------
+//! @endcode
+//! @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_belt_status()
 {
 	lcd_home();
@@ -2024,30 +2092,85 @@ static void lcd_menu_test_restore()
 }
 #endif //RESUME_DEBUG 
 
+//! @brief Show Preheat Menu
 static void lcd_preheat_menu()
 {
-  MENU_BEGIN();
-
-  if (!wizard_active) MENU_ITEM_BACK_P(_T(MSG_MAIN));
-
-  if (farm_mode) {
-	  MENU_ITEM_FUNCTION_P(PSTR("farm   -  " STRINGIFY(FARM_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(FARM_PREHEAT_HPB_TEMP)), lcd_preheat_farm);
-	  MENU_ITEM_FUNCTION_P(PSTR("nozzle -  " STRINGIFY(FARM_PREHEAT_HOTEND_TEMP) "/0"), lcd_preheat_farm_nozzle);
-	  MENU_ITEM_FUNCTION_P(_T(MSG_COOLDOWN), lcd_cooldown);
-  } else {
-	  MENU_ITEM_FUNCTION_P(PSTR("PLA  -  " STRINGIFY(PLA_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(PLA_PREHEAT_HPB_TEMP)), lcd_preheat_pla);
-	  MENU_ITEM_FUNCTION_P(PSTR("PET  -  " STRINGIFY(PET_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(PET_PREHEAT_HPB_TEMP)), lcd_preheat_pet);
-	  MENU_ITEM_FUNCTION_P(PSTR("ABS  -  " STRINGIFY(ABS_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(ABS_PREHEAT_HPB_TEMP)), lcd_preheat_abs);
-	  MENU_ITEM_FUNCTION_P(PSTR("HIPS -  " STRINGIFY(HIPS_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(HIPS_PREHEAT_HPB_TEMP)), lcd_preheat_hips);
-	  MENU_ITEM_FUNCTION_P(PSTR("PP   -  " STRINGIFY(PP_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(PP_PREHEAT_HPB_TEMP)), lcd_preheat_pp);
-	  MENU_ITEM_FUNCTION_P(PSTR("FLEX -  " STRINGIFY(FLEX_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(FLEX_PREHEAT_HPB_TEMP)), lcd_preheat_flex);
-	  if (!wizard_active) MENU_ITEM_FUNCTION_P(_T(MSG_COOLDOWN), lcd_cooldown);
-  }
-  
-
-  MENU_END();
+    eFilamentAction = FilamentAction::Preheat;
+    lcd_generic_preheat_menu();
 }
 
+//! @brief Show Support Menu
+//!
+//! @code{.unparsed}
+//! |01234567890123456789|
+//! | Main               |
+//! | Firmware:          |	c=18 r=1
+//! |  3.7.2.-2363       |	c=16 r=1
+//! | prusa3d.com        |	MSG_PRUSA3D
+//! | forum.prusa3d.com  |	MSG_PRUSA3D_FORUM
+//! | howto.prusa3d.com  |	MSG_PRUSA3D_HOWTO
+//! | --------------     |	STR_SEPARATOR
+//! | 1_75mm_MK3         |	FILAMENT_SIZE
+//! | howto.prusa3d.com  |	ELECTRONICS
+//! | howto.prusa3d.com  |	NOZZLE_TYPE
+//! | --------------     |	STR_SEPARATOR
+//! | Date:              |	c=17 r=1
+//! | MMM DD YYYY        |	__DATE__
+//! | --------------     |	STR_SEPARATOR
+//! @endcode
+//! 
+//! If MMU is connected
+//! 
+//! 	@code{.unparsed}
+//! 	| MMU2 connected     |	c=18 r=1
+//! 	|  FW: 1.0.6-7064523 |
+//! 	@endcode
+//! 
+//! If MMU is not connected
+//! 
+//! 	@code{.unparsed}
+//! 	| MMU2       N/A     |	c=18 r=1
+//! 	@endcode
+//! 
+//! If Flash Air is connected
+//! 
+//! 	@code{.unparsed}
+//! 	| --------------     |	STR_SEPARATOR
+//! 	| FlashAir IP Addr:  |	c=18 r=1
+//! 	|  192.168.1.100     |
+//! 	@endcode
+//! 
+//! @code{.unparsed}
+//! | --------------     |	STR_SEPARATOR
+//! | XYZ cal. details   |	MSG_XYZ_DETAILS
+//! | Extruder info      |	MSG_INFO_EXTRUDER
+//! | XYZ cal. details   |	MSG_INFO_SENSORS
+//! @endcode
+//! 
+//! If TMC2130 defined
+//! 
+//! 	@code{.unparsed}
+//! 	| Belt status        |	MSG_MENU_BELT_STATUS
+//! @endcode
+//! 
+//! @code{.unparsed}
+//! | Temperatures       |	MSG_MENU_TEMPERATURES
+//! @endcode
+//! 
+//! If Voltage Bed and PWR Pin are defined
+//! 
+//! 	@code{.unparsed}
+//! 	| Voltages           |	MSG_MENU_VOLTAGES
+//! 	@endcode
+//! 
+//! 
+//! If DEBUG_BUILD is defined
+//! 
+//! 	@code{.unparsed}
+//! 	| Debug              |	c=18 r=1
+//! 	@endcode
+//! ----------------------
+//! @endcode
 static void lcd_support_menu()
 {
 	typedef struct
@@ -2109,8 +2232,8 @@ static void lcd_support_menu()
 	MENU_ITEM_BACK_P(STR_SEPARATOR);
 	if (mmu_enabled)
 	{
-		MENU_ITEM_BACK_P(_i("MMU2 connected"));
-		MENU_ITEM_BACK_P(PSTR(" FW:"));
+		MENU_ITEM_BACK_P(_i("MMU2 connected"));  ////c=18 r=1
+		MENU_ITEM_BACK_P(PSTR(" FW:"));  ////c=17 r=1
 		if (((menu_item - 1) == menu_line) && lcd_draw_update)
 		{
 		    lcd_set_cursor(6, menu_row);
@@ -2127,7 +2250,7 @@ static void lcd_support_menu()
   // Show the FlashAir IP address, if the card is available.
   if (_md->is_flash_air) {
       MENU_ITEM_BACK_P(STR_SEPARATOR);
-      MENU_ITEM_BACK_P(PSTR("FlashAir IP Addr:"));
+      MENU_ITEM_BACK_P(PSTR("FlashAir IP Addr:"));  //c=18 r=1
 ///!      MENU_ITEM(back_RAM, _md->ip_str, 0);
   }
 
@@ -2148,7 +2271,7 @@ static void lcd_support_menu()
 #endif //defined VOLT_BED_PIN || defined VOLT_PWR_PIN
 
 #ifdef DEBUG_BUILD
-  MENU_ITEM_SUBMENU_P(PSTR("Debug"), lcd_menu_debug);
+  MENU_ITEM_SUBMENU_P(PSTR("Debug"), lcd_menu_debug);////c=18 r=1
 #endif /* DEBUG_BUILD */
 
   #endif //MK1BP
@@ -2198,7 +2321,7 @@ FilamentAction eFilamentAction=FilamentAction::None; // must be initialized as '
 bool bFilamentFirstRun;
 bool bFilamentPreheatState;
 bool bFilamentAction=false;
-bool bFilamentWaitingFlag=false;
+static bool bFilamentWaitingFlag=false;
 
 static void mFilamentPrompt()
 {
@@ -2223,6 +2346,8 @@ switch(eFilamentAction)
      case FilamentAction::MmuEject:
      case FilamentAction::MmuCut:
      case FilamentAction::None:
+     case FilamentAction::Preheat:
+     case FilamentAction::Lay1Cal:
           break;
      }
 if(lcd_clicked())
@@ -2251,284 +2376,247 @@ if(lcd_clicked())
           case FilamentAction::MmuEject:
           case FilamentAction::MmuCut:
           case FilamentAction::None:
+          case FilamentAction::Preheat:
+          case FilamentAction::Lay1Cal:
                break;
           }
      }
 }
 
-/*
-void _mFilamentItem(uint16_t nTemp,uint16_t nTempBed)
+void mFilamentItem(uint16_t nTemp, uint16_t nTempBed)
 {
-static int nTargetOld,nTargetBedOld;
-uint8_t nLevel;
-static bool bBeep=false;
-
-//if(bPreheatState)                                 // not necessary
-     nTargetOld=target_temperature[0];
-     nTargetBedOld=target_temperature_bed;
-setTargetHotend0((float)nTemp);
-setTargetBed((float)nTempBed);
-lcd_timeoutToStatus.stop();
-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)
-     {
-     case eFILAMENT_ACTION::load:
-     case eFILAMENT_ACTION::autoLoad:
-     case eFILAMENT_ACTION::mmuLoad:
-          lcd_puts_P(_i("Preheating to load"));   ////MSG_ c=20 r=1
-          break;
-     case eFILAMENT_ACTION::unLoad:
-     case eFILAMENT_ACTION::mmuUnLoad:
-          lcd_puts_P(_i("Preheating to unload")); ////MSG_ c=20 r=1
-          break;
-     case eFILAMENT_ACTION::mmuEject:
-          lcd_puts_P(_i("Preheating to eject"));  ////MSG_ c=20 r=1
-          break;
-     case eFILAMENT_ACTION::mmuCut:
-          lcd_puts_P(_i("Preheating to cut"));  ////MSG_ c=20 r=1
-          break;
-     }
-lcd_set_cursor(0,3);
-lcd_puts_P(_i(">Cancel"));                        ////MSG_ c=20 r=1
-if(lcd_clicked())
-     {
-     if(!bFilamentPreheatState)
-          {
-          setTargetHotend0(0.0);
-          setTargetBed(0.0);
-          menu_back();
-          }
-     else {
-          setTargetHotend0((float)nTargetOld);
-          setTargetBed((float)nTargetBedOld);
-          }
-     menu_back();
-     if(eFilamentAction==eFILAMENT_ACTION::autoLoad)
-          eFilamentAction=eFILAMENT_ACTION::none; // i.e. non-autoLoad
-     }
-else {
-     if(current_temperature[0]>(target_temperature[0]*0.95))
-          {
-          switch(eFilamentAction)
-               {
-               case eFILAMENT_ACTION::load:
-               case eFILAMENT_ACTION::autoLoad:
-               case eFILAMENT_ACTION::unLoad:
-                    menu_submenu(mFilamentPrompt);
-                    break;
-               case eFILAMENT_ACTION::mmuLoad:
-                    nLevel=1;
-                    if(!bFilamentPreheatState)
-                         nLevel++;
-                    bFilamentAction=true;
-                    menu_back(nLevel);
-                    menu_submenu(mmu_load_to_nozzle_menu);
-                    break;
-               case eFILAMENT_ACTION::mmuUnLoad:
-                    nLevel=1;
-                    if(!bFilamentPreheatState)
-                         nLevel++;
-                    bFilamentAction=true;
-                    menu_back(nLevel);
-                    extr_unload();
-                    break;
-               case eFILAMENT_ACTION::mmuEject:
-                    nLevel=1;
-                    if(!bFilamentPreheatState)
-                         nLevel++;
-                    bFilamentAction=true;
-                    menu_back(nLevel);
-                    menu_submenu(mmu_fil_eject_menu);
-                    break;
-               case eFILAMENT_ACTION::mmuCut:
-                    nLevel=1;
-                    if(!bFilamentPreheatState)
-                         nLevel++;
-                    bFilamentAction=true;
-                    menu_back(nLevel);
-                    menu_submenu(mmu_cut_filament_menu);
-                    break;
-               }
-          if(bBeep)
-               Sound_MakeSound(e_SOUND_TYPE_StandardPrompt);
-          bBeep=false;
-          }
-     else bBeep=true;
-     }
-}
-*/
+    static int nTargetOld;
+    static int nTargetBedOld;
+    uint8_t nLevel;
 
-void mFilamentItem(uint16_t nTemp,uint16_t nTempBed)
-{
-static int nTargetOld,nTargetBedOld;
-uint8_t nLevel;
+    nTargetOld = target_temperature[0];
+    nTargetBedOld = target_temperature_bed;
+    setTargetHotend0((float )nTemp);
+    setTargetBed((float) nTempBed);
 
-//if(bPreheatState)                                 // not necessary
-     nTargetOld=target_temperature[0];
-     nTargetBedOld=target_temperature_bed;
-setTargetHotend0((float)nTemp);
-setTargetBed((float)nTempBed);
-lcd_timeoutToStatus.stop();
-if(current_temperature[0]>(target_temperature[0]*0.95))
-     {
-     switch(eFilamentAction)
-          {
-          case FilamentAction::Load:
-          case FilamentAction::AutoLoad:
-          case FilamentAction::UnLoad:
-               if(bFilamentWaitingFlag)
-                    menu_submenu(mFilamentPrompt);
-               else {
-                    nLevel=bFilamentPreheatState?1:2;
-                    menu_back(nLevel);
-                    if((eFilamentAction==FilamentAction::Load)||(eFilamentAction==FilamentAction::AutoLoad))
-                         {
-                         loading_flag=true;
-                         enquecommand_P(PSTR("M701")); // load filament
-                         if(eFilamentAction==FilamentAction::AutoLoad)
-                              eFilamentAction=FilamentAction::None; // i.e. non-autoLoad
-                         }
-                    if(eFilamentAction==FilamentAction::UnLoad)
-                         enquecommand_P(PSTR("M702")); // unload filament
-                    }
-               break;
-          case FilamentAction::MmuLoad:
-               nLevel=bFilamentPreheatState?1:2;
-               bFilamentAction=true;
-               menu_back(nLevel);
-               menu_submenu(mmu_load_to_nozzle_menu);
-               break;
-          case FilamentAction::MmuUnLoad:
-               nLevel=bFilamentPreheatState?1:2;
-               bFilamentAction=true;
-               menu_back(nLevel);
-               extr_unload();
-               break;
-          case FilamentAction::MmuEject:
-               nLevel=bFilamentPreheatState?1:2;
-               bFilamentAction=true;
-               menu_back(nLevel);
-               menu_submenu(mmu_fil_eject_menu);
-               break;
-          case FilamentAction::MmuCut:
+    {
+        const FilamentAction action = eFilamentAction;
+        if (action == FilamentAction::Preheat || action == FilamentAction::Lay1Cal)
+        {
+            lcd_return_to_status();
+            if (action == FilamentAction::Lay1Cal)
+            {
+                lcd_commands_type = LcdCommands::Layer1Cal;
+            }
+            else
+            {
+                raise_z_above(MIN_Z_FOR_PREHEAT);
+                if (eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE))
+                    lcd_wizard(WizState::LoadFilHot);
+            }
+            return;
+        }
+    }
+
+    lcd_timeoutToStatus.stop();
+
+    if (current_temperature[0] > (target_temperature[0] * 0.95))
+    {
+        switch (eFilamentAction)
+        {
+        case FilamentAction::Load:
+        case FilamentAction::AutoLoad:
+        case FilamentAction::UnLoad:
+            if (bFilamentWaitingFlag) menu_submenu(mFilamentPrompt);
+            else
+            {
+                nLevel = bFilamentPreheatState ? 1 : 2;
+                menu_back(nLevel);
+                if ((eFilamentAction == FilamentAction::Load) || (eFilamentAction == FilamentAction::AutoLoad))
+                {
+                    loading_flag = true;
+                    enquecommand_P(PSTR("M701")); // load filament
+                    if (eFilamentAction == FilamentAction::AutoLoad) eFilamentAction = FilamentAction::None; // i.e. non-autoLoad
+                }
+                if (eFilamentAction == FilamentAction::UnLoad)
+                enquecommand_P(PSTR("M702")); // unload filament
+            }
+            break;
+        case FilamentAction::MmuLoad:
+            nLevel = bFilamentPreheatState ? 1 : 2;
+            bFilamentAction = true;
+            menu_back(nLevel);
+            menu_submenu(mmu_load_to_nozzle_menu);
+            break;
+        case FilamentAction::MmuUnLoad:
+            nLevel = bFilamentPreheatState ? 1 : 2;
+            bFilamentAction = true;
+            menu_back(nLevel);
+            extr_unload();
+            break;
+        case FilamentAction::MmuEject:
+            nLevel = bFilamentPreheatState ? 1 : 2;
+            bFilamentAction = true;
+            menu_back(nLevel);
+            menu_submenu(mmu_fil_eject_menu);
+            break;
+        case FilamentAction::MmuCut:
 #ifdef MMU_HAS_CUTTER
-               nLevel=bFilamentPreheatState?1:2;
-               bFilamentAction=true;
-               menu_back(nLevel);
-               menu_submenu(mmu_cut_filament_menu);
+            nLevel=bFilamentPreheatState?1:2;
+            bFilamentAction=true;
+            menu_back(nLevel);
+            menu_submenu(mmu_cut_filament_menu);
 #endif //MMU_HAS_CUTTER
-               break;
-          case FilamentAction::None:
-               break;
-          }
-     if(bFilamentWaitingFlag)
-          Sound_MakeSound(e_SOUND_TYPE_StandardPrompt);
-     bFilamentWaitingFlag=false;
-     }
-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)
-          {
-          case FilamentAction::Load:
-          case FilamentAction::AutoLoad:
-          case FilamentAction::MmuLoad:
-               lcd_puts_P(_i("Preheating to load")); ////MSG_ c=20 r=1
-               break;
-          case FilamentAction::UnLoad:
-          case FilamentAction::MmuUnLoad:
-               lcd_puts_P(_i("Preheating to unload")); ////MSG_ c=20 r=1
-               break;
-          case FilamentAction::MmuEject:
-               lcd_puts_P(_i("Preheating to eject")); ////MSG_ c=20 r=1
-               break;
-          case FilamentAction::MmuCut:
-               lcd_puts_P(_i("Preheating to cut")); ////MSG_ c=20 r=1
-               break;
-          case FilamentAction::None:
-               break;
-          }
-     lcd_set_cursor(0,3);
-     lcd_puts_P(_i(">Cancel"));                   ////MSG_ c=20 r=1
-     if(lcd_clicked())
-          {
-          bFilamentWaitingFlag=false;
-          if(!bFilamentPreheatState)
-               {
-               setTargetHotend0(0.0);
-               setTargetBed(0.0);
-               menu_back();
-               }
-          else {
-               setTargetHotend0((float)nTargetOld);
-               setTargetBed((float)nTargetBedOld);
-               }
-          menu_back();
-          if(eFilamentAction==FilamentAction::AutoLoad)
-               eFilamentAction=FilamentAction::None; // i.e. non-autoLoad
-          }
-     }
+            break;
+        case FilamentAction::None:
+        case FilamentAction::Preheat:
+        case FilamentAction::Lay1Cal:
+
+            break;
+        }
+        if (bFilamentWaitingFlag) Sound_MakeSound(e_SOUND_TYPE_StandardPrompt);
+        bFilamentWaitingFlag = false;
+    }
+    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)
+        {
+        case FilamentAction::Load:
+        case FilamentAction::AutoLoad:
+        case FilamentAction::MmuLoad:
+            lcd_puts_P(_i("Preheating to load")); ////MSG_ c=20 r=1
+            break;
+        case FilamentAction::UnLoad:
+        case FilamentAction::MmuUnLoad:
+            lcd_puts_P(_i("Preheating to unload")); ////MSG_ c=20 r=1
+            break;
+        case FilamentAction::MmuEject:
+            lcd_puts_P(_i("Preheating to eject")); ////MSG_ c=20 r=1
+            break;
+        case FilamentAction::MmuCut:
+            lcd_puts_P(_i("Preheating to cut")); ////MSG_ c=20 r=1
+            break;
+        case FilamentAction::None:
+        case FilamentAction::Preheat:
+        case FilamentAction::Lay1Cal:
+            break;
+        }
+        lcd_set_cursor(0, 3);
+        lcd_puts_P(_i(">Cancel"));                   ////MSG_ c=20 r=1
+        if (lcd_clicked())
+        {
+            bFilamentWaitingFlag = false;
+            if (!bFilamentPreheatState)
+            {
+                setTargetHotend0(0.0);
+                setTargetBed(0.0);
+                menu_back();
+            }
+            else
+            {
+                setTargetHotend0((float )nTargetOld);
+                setTargetBed((float) nTargetBedOld);
+            }
+            menu_back();
+            if (eFilamentAction == FilamentAction::AutoLoad) eFilamentAction = FilamentAction::None; // i.e. non-autoLoad
+        }
+    }
+}
+
+static void mFilamentItem_farm()
+{
+    bFilamentPreheatState = false;
+    mFilamentItem(FARM_PREHEAT_HOTEND_TEMP, FARM_PREHEAT_HPB_TEMP);
+}
+static void mFilamentItem_farm_nozzle()
+{
+    bFilamentPreheatState = false;
+    mFilamentItem(FARM_PREHEAT_HOTEND_TEMP, 0);
 }
 
 static void mFilamentItem_PLA()
 {
-bFilamentPreheatState=false;
-mFilamentItem(PLA_PREHEAT_HOTEND_TEMP,PLA_PREHEAT_HPB_TEMP);
+    bFilamentPreheatState = false;
+    mFilamentItem(PLA_PREHEAT_HOTEND_TEMP, PLA_PREHEAT_HPB_TEMP);
 }
 
 static void mFilamentItem_PET()
 {
-bFilamentPreheatState=false;
-mFilamentItem(PET_PREHEAT_HOTEND_TEMP,PET_PREHEAT_HPB_TEMP);
+    bFilamentPreheatState = false;
+    mFilamentItem(PET_PREHEAT_HOTEND_TEMP, PET_PREHEAT_HPB_TEMP);
+}
+
+static void mFilamentItem_ASA()
+{
+    bFilamentPreheatState = false;
+    mFilamentItem(ASA_PREHEAT_HOTEND_TEMP, ASA_PREHEAT_HPB_TEMP);
 }
 
 static void mFilamentItem_ABS()
 {
-bFilamentPreheatState=false;
-mFilamentItem(ABS_PREHEAT_HOTEND_TEMP,ABS_PREHEAT_HPB_TEMP);
+    bFilamentPreheatState = false;
+    mFilamentItem(ABS_PREHEAT_HOTEND_TEMP, ABS_PREHEAT_HPB_TEMP);
 }
 
 static void mFilamentItem_HIPS()
 {
-bFilamentPreheatState=false;
-mFilamentItem(HIPS_PREHEAT_HOTEND_TEMP,HIPS_PREHEAT_HPB_TEMP);
+    bFilamentPreheatState = false;
+    mFilamentItem(HIPS_PREHEAT_HOTEND_TEMP, HIPS_PREHEAT_HPB_TEMP);
 }
 
 static void mFilamentItem_PP()
 {
-bFilamentPreheatState=false;
-mFilamentItem(PP_PREHEAT_HOTEND_TEMP,PP_PREHEAT_HPB_TEMP);
+    bFilamentPreheatState = false;
+    mFilamentItem(PP_PREHEAT_HOTEND_TEMP, PP_PREHEAT_HPB_TEMP);
 }
 
 static void mFilamentItem_FLEX()
 {
-bFilamentPreheatState=false;
-mFilamentItem(FLEX_PREHEAT_HOTEND_TEMP,FLEX_PREHEAT_HPB_TEMP);
+    bFilamentPreheatState = false;
+    mFilamentItem(FLEX_PREHEAT_HOTEND_TEMP, FLEX_PREHEAT_HPB_TEMP);
 }
 
-
 void mFilamentBack()
 {
-menu_back();
-if(eFilamentAction==FilamentAction::AutoLoad)
-     eFilamentAction=FilamentAction::None; // i.e. non-autoLoad
+    menu_back();
+    if (eFilamentAction == FilamentAction::AutoLoad ||
+            eFilamentAction == FilamentAction::Preheat ||
+            eFilamentAction == FilamentAction::Lay1Cal)
+    {
+        eFilamentAction = FilamentAction::None; // i.e. non-autoLoad
+    }
 }
 
-void mFilamentMenu()
+void lcd_generic_preheat_menu()
 {
-MENU_BEGIN();
-MENU_ITEM_FUNCTION_P(_T(MSG_MAIN),mFilamentBack);
-MENU_ITEM_SUBMENU_P(PSTR("PLA  -  " STRINGIFY(PLA_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(PLA_PREHEAT_HPB_TEMP)),mFilamentItem_PLA);
-MENU_ITEM_SUBMENU_P(PSTR("PET  -  " STRINGIFY(PET_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(PET_PREHEAT_HPB_TEMP)),mFilamentItem_PET);
-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);
-MENU_ITEM_SUBMENU_P(PSTR("FLEX -  " STRINGIFY(FLEX_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(FLEX_PREHEAT_HPB_TEMP)),mFilamentItem_FLEX);
-MENU_END();
+    MENU_BEGIN();
+    if (!eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE))
+    {
+        if (eFilamentAction == FilamentAction::Lay1Cal)
+        {
+            MENU_ITEM_FUNCTION_P(_T(MSG_BACK), mFilamentBack);
+        }
+        else
+        {
+            MENU_ITEM_FUNCTION_P(_T(MSG_MAIN), mFilamentBack);
+        }
+    }
+    if (farm_mode)
+    {
+        MENU_ITEM_FUNCTION_P(PSTR("farm   -  " STRINGIFY(FARM_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(FARM_PREHEAT_HPB_TEMP)), mFilamentItem_farm);
+        MENU_ITEM_FUNCTION_P(PSTR("nozzle -  " STRINGIFY(FARM_PREHEAT_HOTEND_TEMP) "/0"), mFilamentItem_farm_nozzle);
+    }
+    else
+    {
+        MENU_ITEM_SUBMENU_P(PSTR("PLA  -  " STRINGIFY(PLA_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(PLA_PREHEAT_HPB_TEMP)),mFilamentItem_PLA);
+        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("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);
+        MENU_ITEM_SUBMENU_P(PSTR("FLEX -  " STRINGIFY(FLEX_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(FLEX_PREHEAT_HPB_TEMP)),mFilamentItem_FLEX);
+    }
+    if (!eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE) && eFilamentAction == FilamentAction::Preheat) MENU_ITEM_FUNCTION_P(_T(MSG_COOLDOWN), lcd_cooldown);
+    MENU_END();
 }
 
 void mFilamentItemForce()
@@ -2539,22 +2627,14 @@ mFilamentItem(target_temperature[0],target_temperature_bed);
 
 void lcd_unLoadFilament()
 {
-//./if((degHotend0()>EXTRUDE_MINTEMP)&&bFilamentFirstRun)
-if(0)
-     {
-     menu_back();
-     enquecommand_P(PSTR("M702"));                // unload filament
-     }
-else {
      eFilamentAction=FilamentAction::UnLoad;
-     bFilamentFirstRun=false;
-     if(target_temperature[0]>=EXTRUDE_MINTEMP)
-          {
-          bFilamentPreheatState=true;
-          mFilamentItem(target_temperature[0],target_temperature_bed);
-          }
-     else mFilamentMenu();
-     }
+     preheat_or_continue();
+}
+
+static void mmu_unload_filament()
+{
+    eFilamentAction = FilamentAction::MmuUnLoad;
+    preheat_or_continue();
 }
 
 
@@ -2770,29 +2850,21 @@ static void lcd_menu_AutoLoadFilament()
 }
 #endif //FILAMENT_SENSOR
 
+static void preheat_or_continue()
+{
+    bFilamentFirstRun = false;
+    if (target_temperature[0] >= EXTRUDE_MINTEMP)
+    {
+        bFilamentPreheatState = true;
+        mFilamentItem(target_temperature[0], target_temperature_bed);
+    }
+    else lcd_generic_preheat_menu();
+}
+
 static void lcd_LoadFilament()
 {
-//-//  if (degHotend0() > EXTRUDE_MINTEMP)
-if(0)
-  {
-//      menu_back();                                // not necessary (see "lcd_return_to_status()" below)
-      custom_message_type = CustomMsg::FilamentLoading;
-      loading_flag = true;
-      enquecommand_P(PSTR("M701")); //load filament
-      SERIAL_ECHOLN("Loading filament");
-      lcd_return_to_status();
-  }
-  else
-  {
-     eFilamentAction=FilamentAction::Load;
-     bFilamentFirstRun=false;
-     if(target_temperature[0]>=EXTRUDE_MINTEMP)
-          {
-          bFilamentPreheatState=true;
-          mFilamentItem(target_temperature[0],target_temperature_bed);
-          }
-     else mFilamentMenu();
-  }
+    eFilamentAction = FilamentAction::Load;
+    preheat_or_continue();
 }
 
 
@@ -2802,9 +2874,9 @@ if(0)
 //!
 //! @code{.unparsed}
 //! |01234567890123456789|
-//! |Filament used:      |
+//! |Filament used:      | c=18 r=1
 //! |         00.00m     |
-//! |Print time:         |
+//! |Print time:         | c=18 r=1
 //! |        00h 00m 00s |
 //! ----------------------
 //! @endcode
@@ -2813,12 +2885,13 @@ if(0)
 //!
 //! @code{.unparsed}
 //! |01234567890123456789|
-//! |Total filament :    |
+//! |Total filament :    | c=18 r=1
 //! |           000.00 m |
-//! |Total print time :  |
+//! |Total print time :  | c=18 r=1
 //! |     00d :00h :00 m |
 //! ----------------------
 //! @endcode
+//! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations. Translations missing for "d"days, "h"ours, "m"inutes", "s"seconds".
 void lcd_menu_statistics()
 {
 	if (IS_SD_PRINTING)
@@ -2832,10 +2905,12 @@ void lcd_menu_statistics()
 		lcd_clear();
 		lcd_printf_P(_N(
 			"%S:\n"
-			"%8.2fm\n"
+			"%17.2fm  \n"
 			"%S:\n"
 			"%2dh %02dm %02ds"
-		),_i("Filament used"), _met, _i("Print time"), _h, _m, _s);
+		    ),
+            _i("Filament used"), _met,  ////c=18 r=1
+            _i("Print time"), _h, _m, _s);  ////c=18 r=1
 		menu_back_if_clicked_fb();
 	}
 	else
@@ -2854,7 +2929,7 @@ void lcd_menu_statistics()
 		lcd_clear();
 		lcd_printf_P(_N(
 			"%S:\n"
-			"%8.2fm\n"
+			"%17.2fm  \n"
 			"%S:\n"
 			"%7ldd :%2hhdh :%02hhdm"
 		), _i("Total filament"), _filament_m, _i("Total print time"), _days, _hours, _minutes);
@@ -2896,7 +2971,7 @@ static void _lcd_move(const char *name, int axis, int min, int max)
 			if (max_software_endstops && current_position[axis] > max) current_position[axis] = max;
 			lcd_encoder = 0;
 			world2machine_clamp(current_position[X_AXIS], current_position[Y_AXIS]);
-			plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], manual_feedrate[axis] / 60, active_extruder);
+			plan_buffer_line_curposXYZE(manual_feedrate[axis] / 60, active_extruder);
 			lcd_draw_update = 1;
 		}
 	}
@@ -2921,7 +2996,7 @@ static void lcd_move_e()
 			{
 				current_position[E_AXIS] += float((int)lcd_encoder) * move_menu_scale;
 				lcd_encoder = 0;
-				plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], manual_feedrate[E_AXIS] / 60, active_extruder);
+				plan_buffer_line_curposXYZE(manual_feedrate[E_AXIS] / 60, active_extruder);
 				lcd_draw_update = 1;
 			}
 		}
@@ -2942,17 +3017,20 @@ static void lcd_move_e()
 }
 
 
-//@brief Show measured Y distance of front calibration points from Y_MIN_POS
-//If those points are detected too close to edge of reachable area, their confidence is lowered.
-//This functionality is applied more often for MK2 printers.
+//! @brief Show measured Y distance of front calibration points from Y_MIN_POS
+//! If those points are detected too close to edge of reachable area, their confidence is lowered.
+//! This functionality is applied more often for MK2 printers.
+//! @code{.unparsed}
+//! |01234567890123456789|
+//! |Y distance from min |	c=19 r=1
+//! | --------------     |	STR_SEPARATOR
+//! |Left:       00.00mm |	c=11 r=1
+//! |Right:      00.00mm |	c=11 r=1
+//! ----------------------
+//! @endcode
+//! @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_y_min()
 {
-//|01234567890123456789|
-//|Y distance from min:|
-//|--------------------|
-//|Left:      N/A      |
-//|Right:     N/A      |
-//----------------------
 	float distanceMin[2];
     count_xyz_details(distanceMin);
 	lcd_home();
@@ -2962,15 +3040,15 @@ static void lcd_menu_xyz_y_min()
 	  "%S:\n"
 	  "%S:"
 	 ),
-	 _i("Y distance from min"),
+	 _i("Y distance from min"),  ////c=19 r=1
 	 separator,
-	 _i("Left"),
-	 _i("Right")
+	 _i("Left"),  ////c=11 r=1
+	 _i("Right")  ////c=11 r=1
 	);
 	for (uint8_t i = 0; i < 2; i++)
 	{
 		lcd_set_cursor(11,2+i);
-		if (distanceMin[i] >= 200) lcd_puts_P(_N("N/A"));
+		if (distanceMin[i] >= 200) lcd_puts_P(_T(MSG_NA)); ////c=3 r=1
 		else lcd_printf_P(_N("%6.2fmm"), distanceMin[i]);
 	}
     if (lcd_clicked())
@@ -2983,48 +3061,62 @@ float _deg(float rad)
 	return rad * 180 / M_PI;
 }
 
+//! @brief Show Measured XYZ Skew
+//! 
+//! @code{.unparsed}
+//! |01234567890123456789|
+//! |Measured skew: 0.00D|	c=13 r=1
+//! | --------------     |	STR_SEPARATOR
+//! |Slight skew:   0.12D|	c=13 r=1  c=4 r=1
+//! |Severe skew:   0.25D|	c=13 r=1  c=4 r=1
+//! ----------------------
+//! D - Degree sysmbol		LCD_STR_DEGREE
+//! @endcode
+//! @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_skew()
 {
-//|01234567890123456789|
-//|Measured skew:  N/A |
-//|--------------------|
-//|Slight skew:   0.12d|
-//|Severe skew:   0.25d|
-//----------------------
     float angleDiff = eeprom_read_float((float*)(EEPROM_XYZ_CAL_SKEW));
 	lcd_home();
 	lcd_printf_P(_N(
 	  "%S:\n"
 	  "%S\n"
-	  "%S:  %5.2f\x01\n"
-	  "%S:  %5.2f\x01"
+	  "%-15.15S%3.2f\x01\n"
+	  "%-15.15S%3.2f\x01"
 	 ),
-	 _i("Measured skew"),
+	 _i("Measured skew"),  ////c=13 r=1
 	 separator,
-	 _i("Slight skew"), _deg(bed_skew_angle_mild),
-	 _i("Severe skew"), _deg(bed_skew_angle_extreme)
+	 _i("Slight skew:"), _deg(bed_skew_angle_mild),  ////c=13 r=1  c=4 r=1
+	 _i("Severe skew:"), _deg(bed_skew_angle_extreme)  ////c=13 r=1  c=4 r=1
 	);
 	if (angleDiff < 100){
 		lcd_set_cursor(15,0);
-		lcd_printf_P(_N("%4.2f\x01"), _deg(angleDiff));
+		lcd_printf_P(_N("%3.2f\x01"), _deg(angleDiff));
 	}
 	else{
 		lcd_set_cursor(15,0);
-		lcd_puts_P(_N("N/A"));
+		lcd_puts_P(_T(MSG_NA));
 	}
     if (lcd_clicked())
         menu_goto(lcd_menu_xyz_offset, 0, true, true);
 }
-/**
- * @brief Show measured bed offset from expected position
- */
+//! @brief Show measured bed offset from expected position
+//! 
+//! @code{.unparsed}
+//! |01234567890123456789|
+//! |[0;0] point offset  |	c=20 r=1
+//! | --------------     |	STR_SEPARATOR
+//! |X:          000.00mm|	c=10 r=1
+//! |Y:          000.00mm|	c=10 r=1
+//! ----------------------
+//! @endcode
+//! @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, 1, separator);
-    lcd_puts_at_P(0, 2, PSTR("X"));
-    lcd_puts_at_P(0, 3, PSTR("Y"));
+    lcd_puts_at_P(0, 2, PSTR("X"));  ////c=10 r=1
+    lcd_puts_at_P(0, 3, PSTR("Y"));  ////c=10 r=1
 
     float vec_x[2];
     float vec_y[2];
@@ -3033,9 +3125,9 @@ static void lcd_menu_xyz_offset()
 
     for (uint_least8_t i = 0; i < 2; i++)
     {
-        lcd_puts_at_P(11, i + 2, PSTR(""));
+        lcd_set_cursor((cntr[i] < 0) ? 10 : 11, i+2);
         lcd_print(cntr[i]);
-        lcd_puts_at_P((cntr[i] < 0) ? 17 : 16, i + 2, PSTR("mm"));
+        lcd_puts_at_P(16, i + 2, PSTR("mm"));
     }
     menu_back_if_clicked();
 }
@@ -3095,7 +3187,7 @@ static void lcd_babystep_z()
 		_md->status = 1;
 		check_babystep();
 		
-		if(!is_sheet_initialized(eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet)))){
+		if(!eeprom_is_sheet_initialized(eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet)))){
 			_md->babystepMemZ = 0;
 		}
 		else{
@@ -3146,15 +3238,12 @@ static void lcd_babystep_z()
 	if (LCD_CLICKED || menu_leaving)
 	{
 		// Only update the EEPROM when leaving the menu.
-		eeprom_update_word(reinterpret_cast<uint16_t *>(&(EEPROM_Sheets_base->
-                s[(eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet)))].z_offset)),
-		        _md->babystepMemZ);
-		eeprom_update_byte(&(EEPROM_Sheets_base->s[(eeprom_read_byte(
-		        &(EEPROM_Sheets_base->active_sheet)))].bed_temp),
-		        target_temperature_bed);
-		eeprom_update_byte(&(EEPROM_Sheets_base->s[(eeprom_read_byte(
-		        &(EEPROM_Sheets_base->active_sheet)))].pinda_temp),
-		        current_temperature_pinda);
+          uint8_t active_sheet=eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet));
+		eeprom_update_word(reinterpret_cast<uint16_t *>(&(EEPROM_Sheets_base->s[active_sheet].z_offset)),_md->babystepMemZ);
+		eeprom_update_byte(&(EEPROM_Sheets_base->s[active_sheet].bed_temp),target_temperature_bed);
+#ifdef PINDA_THERMISTOR        
+		eeprom_update_byte(&(EEPROM_Sheets_base->s[active_sheet].pinda_temp),current_temperature_pinda);
+#endif //PINDA_THERMISTOR
 		calibration_status_store(CALIBRATION_STATUS_CALIBRATED);
 	}
 	if (LCD_CLICKED) menu_back();
@@ -3183,6 +3272,18 @@ void lcd_adjust_bed_reset(void)
 	_md->status = 0;
 }
 
+//! @brief Show Bed level correct
+//! 
+//! @code{.unparsed}
+//! |01234567890123456789|
+//! |Settings:           |	MSG_SETTINGS
+//! |Left side [um]:     |	MSG_BED_CORRECTION_LEFT
+//! |Right side[um]:     |	MSG_BED_CORRECTION_RIGHT
+//! |Front side[um]:     |	MSG_BED_CORRECTION_FRONT
+//! |Rear side [um]:     |	MSG_BED_CORRECTION_REAR
+//! |Reset               |	MSG_BED_CORRECTION_RESET
+//! ----------------------
+//! @endcode
 void lcd_adjust_bed(void)
 {
 	_menu_data_adjust_bed_t* _md = (_menu_data_adjust_bed_t*)&(menu_data[0]);
@@ -3220,6 +3321,16 @@ void lcd_adjust_bed(void)
     MENU_END();
 }
 
+//! @brief Show PID Extruder
+//! 
+//! @code{.unparsed}
+//! |01234567890123456789|
+//! | Set temperature:   |	MSG_SET_TEMPERATURE
+//! |                    |
+//! | 210                |
+//! |                    |
+//! ----------------------
+//! @endcode
 void pid_extruder()
 {
 	lcd_clear();
@@ -3323,6 +3434,7 @@ void lcd_adjust_z() {
 
 }*/
 
+#ifdef PINDA_THERMISTOR
 bool lcd_wait_for_pinda(float temp) {
 	lcd_set_custom_characters_degree();
 	setAllTargetHotends(0);
@@ -3351,6 +3463,7 @@ bool lcd_wait_for_pinda(float temp) {
 	lcd_update_enable(true);
 	return target_temp_reached;
 }
+#endif //PINDA_THERMISTOR
 
 void lcd_wait_for_heater() {
 		lcd_display_message_fullscreen_P(_T(MSG_WIZARD_HEATING));
@@ -3367,6 +3480,8 @@ void lcd_wait_for_cool_down() {
 	lcd_set_custom_characters_degree();
 	setAllTargetHotends(0);
 	setTargetBed(0);
+	int fanSpeedBckp = fanSpeed;
+	fanSpeed = 255;
 	while ((degHotend(0)>MAX_HOTEND_TEMP_CALIBRATION) || (degBed() > MAX_BED_TEMP_CALIBRATION)) {
 		lcd_display_message_fullscreen_P(_i("Waiting for nozzle and bed cooling"));////MSG_WAITING_TEMP c=20 r=3
 
@@ -3385,6 +3500,7 @@ void lcd_wait_for_cool_down() {
 		delay_keep_alive(1000);
 		serialecho_temperatures();
 	}
+	fanSpeed = fanSpeedBckp;
 	lcd_set_custom_characters_arrows();
 	lcd_update_enable(true);
 }
@@ -3420,7 +3536,7 @@ bool lcd_calibrate_z_end_stop_manual(bool only_z)
                     // Only move up, whatever direction the user rotates the encoder.
                     current_position[Z_AXIS] += fabs(lcd_encoder);
                     lcd_encoder = 0;
-                    plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], manual_feedrate[Z_AXIS] / 60, active_extruder);
+                    plan_buffer_line_curposXYZE(manual_feedrate[Z_AXIS] / 60, active_extruder);
                 }
             }
             if (lcd_clicked()) {
@@ -3749,7 +3865,7 @@ int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow
 		lcd_puts_P(PSTR(">"));
 		lcd_puts_P(_T(MSG_NO));
 	}
-	bool yes = default_yes ? true : false;
+	int8_t retval = default_yes ? true : false;
 
 	// Wait for user confirmation or a timeout.
 	unsigned long previous_millis_cmd = _millis();
@@ -3758,24 +3874,27 @@ int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow
 	KEEPALIVE_STATE(PAUSED_FOR_USER);
 	for (;;) {
 		if (allow_timeouting && _millis() - previous_millis_cmd > LCD_TIMEOUT_TO_STATUS)
-			return -1;
+		{
+		    retval = -1;
+		    break;
+		}
 		manage_heater();
 		manage_inactivity(true);
 		if (abs(enc_dif - lcd_encoder_diff) > 4) {
 			lcd_set_cursor(0, 2);
-				if (enc_dif < lcd_encoder_diff && yes) {
+				if (enc_dif < lcd_encoder_diff && retval) {
 					lcd_puts_P((PSTR(" ")));
 					lcd_set_cursor(0, 3);
 					lcd_puts_P((PSTR(">")));
-					yes = false;
+					retval = 0;
 					Sound_MakeSound(e_SOUND_TYPE_EncoderMove);
 
 				}
-				else if (enc_dif > lcd_encoder_diff && !yes) {
+				else if (enc_dif > lcd_encoder_diff && !retval) {
 					lcd_puts_P((PSTR(">")));
 					lcd_set_cursor(0, 3);
 					lcd_puts_P((PSTR(" ")));
-					yes = true;
+					retval = 1;
 					Sound_MakeSound(e_SOUND_TYPE_EncoderMove);
 				}
 				enc_dif = lcd_encoder_diff;
@@ -3783,9 +3902,11 @@ int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow
 		if (lcd_clicked()) {
 			Sound_MakeSound(e_SOUND_TYPE_ButtonEcho);
 			KEEPALIVE_STATE(IN_HANDLER);
-			return yes;
+			break;
 		}
 	}
+    lcd_encoder_diff = 0;
+    return retval;
 }
 
 void lcd_bed_calibration_show_result(BedSkewOffsetDetectionResultType result, uint8_t point_too_far_mask)
@@ -3910,13 +4031,13 @@ static void lcd_print_state(uint8_t state)
 {
 	switch (state) {
 		case STATE_ON:
-			lcd_puts_P(_i("  1"));
+			lcd_puts_P(_N("  1"));
 		break;
 		case STATE_OFF:
-			lcd_puts_P(_i("  0"));
+			lcd_puts_P(_N("  0"));
 		break;
 		default: 
-			lcd_puts_P(_i("N/A"));
+			lcd_puts_P(_T(MSG_NA));
 		break;
 	}
 }
@@ -3929,7 +4050,8 @@ static void lcd_show_sensors_state()
 	uint8_t idler_state = STATE_NA;
 
 	pinda_state = READ(Z_MIN_PIN);
-	if (mmu_enabled) {
+	if (mmu_enabled && ((_millis() - mmu_last_finda_response) < 1000ul) )
+	{
 		finda_state = mmu_finda;
 	}
 	if (ir_sensor_detected) {
@@ -3986,7 +4108,7 @@ void prusa_statistics(int _message, uint8_t _fil_nr) {
 		{   
 			prusa_statistics_case0(15);
 		}
-		else if (isPrintPaused || card.paused) 
+		else if (isPrintPaused)
 		{
 			prusa_statistics_case0(14);
 		}
@@ -4440,24 +4562,25 @@ static void lcd_silent_mode_set() {
 #endif //TMC2130
   st_current_init();
 #ifdef TMC2130
-  if (CrashDetectMenu && (SilentModeMenu != SILENT_MODE_NORMAL))
+  if (lcd_crash_detect_enabled() && (SilentModeMenu != SILENT_MODE_NORMAL))
 	  menu_submenu(lcd_crash_mode_info2);
   lcd_encoder_diff=0;                             // reset 'encoder buffer'
 #endif //TMC2130
 }
 
 #ifdef TMC2130
-static void lcd_crash_mode_set()
+static void crash_mode_switch()
 {
-	CrashDetectMenu = !CrashDetectMenu; //set also from crashdet_enable() and crashdet_disable()
-    if (CrashDetectMenu==0) {
-        crashdet_disable();
-    }else{
-        crashdet_enable();
+    if (lcd_crash_detect_enabled())
+    {
+        lcd_crash_detect_disable();
+    }
+    else
+    {
+        lcd_crash_detect_enable();
     }
 	if (IS_SD_PRINTING || is_usb_printing || (lcd_commands_type == LcdCommands::Layer1Cal)) menu_goto(lcd_tune_menu, 9, true, true);
 	else menu_goto(lcd_settings_menu, 9, true, true);
-    
 }
 #endif //TMC2130
  
@@ -4613,7 +4736,7 @@ void lcd_calibrate_pinda() {
 		
 		lcd_set_cursor(0, 1); lcd_puts_P(_T(MSG_PLEASE_WAIT));
 		current_position[E_AXIS] += e_shift_calibration;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feedrate, active_extruder);
+		plan_buffer_line_curposXYZE(feedrate, active_extruder);
 		st_synchronize();
 
 		lcd_display_message_fullscreen_P(msg_e_cal_knob);
@@ -4636,7 +4759,7 @@ void lcd_calibrate_pinda() {
 				if (!planner_queue_full()) {
 					current_position[E_AXIS] += float(abs((int)lcd_encoder)) * 0.01; //0.05
 					lcd_encoder = 0;
-					plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feedrate, active_extruder);
+					plan_buffer_line_curposXYZE(feedrate, active_extruder);
 					
 				}
 			}	
@@ -4684,26 +4807,92 @@ void lcd_toshiba_flash_air_compatibility_toggle()
    eeprom_update_byte((uint8_t*)EEPROM_TOSHIBA_FLASH_AIR_COMPATIBLITY, card.ToshibaFlashAir_isEnabled());
 }
 
+//! @brief Continue first layer calibration with previous value or start from zero?
+//!
+//! @code{.unparsed}
+//! |01234567890123456789|
+//! |Sheet Smooth1 actual|  c=a, c=b, a+b = 13
+//! |Z offset: -1.480 mm |  c=a, c=b, a+b = 14
+//! |>Continue           |  c=19
+//! | Start from zero    |  c=19
+//! ----------------------
+//! @endcode
+void lcd_first_layer_calibration_reset()
+{
+    typedef struct
+    {
+        bool reset;
+    } MenuData;
+    static_assert(sizeof(menu_data)>= sizeof(MenuData),"_menu_data_t doesn't fit into menu_data");
+    MenuData* menuData = (MenuData*)&(menu_data[0]);
+
+    if(LCD_CLICKED || !eeprom_is_sheet_initialized(eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet))) ||
+            (calibration_status() >= CALIBRATION_STATUS_LIVE_ADJUST) ||
+            (0 == static_cast<int16_t>(eeprom_read_word(reinterpret_cast<uint16_t*>
+            (&EEPROM_Sheets_base->s[(eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet)))].z_offset)))))
+    {
+        if (menuData->reset)
+        {
+            eeprom_update_word(reinterpret_cast<uint16_t*>(&EEPROM_Sheets_base->s[(eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet)))].z_offset), 0xffff);
+        }
+        menu_goto(lcd_v2_calibration,0,true,true);
+    }
+
+    if (lcd_encoder > 0)
+    {
+        menuData->reset = true;
+        lcd_encoder = 1;
+    }
+    else if (lcd_encoder < 1)
+    {
+        menuData->reset = false;
+        lcd_encoder = 0;
+    }
+
+    char sheet_name[sizeof(Sheet::name)];
+    eeprom_read_block(sheet_name, &EEPROM_Sheets_base->s[(eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet)))].name, sizeof(Sheet::name));
+    lcd_set_cursor(0, 0);
+    float offset = static_cast<int16_t>(eeprom_read_word(reinterpret_cast<uint16_t*>(&EEPROM_Sheets_base->s[(eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet)))].z_offset)))/cs.axis_steps_per_unit[Z_AXIS];
+    lcd_printf_P(_i("Sheet %.7s\nZ offset: %+1.3f mm\n%cContinue\n%cStart from zero"), //// \n denotes line break, %.7s is replaced by 7 character long sheet name, %+1.3f is replaced by 6 character long floating point number, %c is replaced by > or white space (one character) based on whether first or second option is selected. % denoted place holders can not be reordered. r=4
+            sheet_name, offset, menuData->reset ? ' ' : '>', menuData->reset ? '>' : ' ');
+
+}
+
 void lcd_v2_calibration()
 {
-	eeprom_update_byte(&(EEPROM_Sheets_base->active_sheet), selected_sheet);
 	if (mmu_enabled)
 	{
-	    const uint8_t filament = choose_menu_P(_i("Select PLA filament:"),_T(MSG_FILAMENT),_i("Cancel")); ////c=20 r=1  ////c=19 r=1
+	    const uint8_t filament = choose_menu_P(
+            _i("Select filament:"), ////c=20 r=1
+            _T(MSG_FILAMENT),_i("Cancel"));  ////c=19 r=1
 	    if (filament < 5)
 	    {
-	        lcd_commands_step = 20 + filament;
-	        lcd_commands_type = LcdCommands::Layer1Cal;
+	        lay1cal_filament = filament;
+	    }
+	    else
+	    {
+	        menu_back();
+	        return;
 	    }
 	}
-	else
+	else if (!eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE))
 	{
-		bool loaded = lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Is PLA filament loaded?"), false, true);////MSG_PLA_FILAMENT_LOADED c=20 r=2
-		if (loaded) {
-			lcd_commands_type = LcdCommands::Layer1Cal;
-		}
-		else {
-			lcd_display_message_fullscreen_P(_i("Please load PLA filament first."));////MSG_PLEASE_LOAD_PLA c=20 r=4
+	    bool loaded = false;
+	    if (fsensor_enabled && ir_sensor_detected)
+	    {
+	        loaded = (digitalRead(IR_SENSOR_PIN) == 0);
+	    }
+	    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
+	        lcd_update_enabled = true;
+
+	    }
+
+
+		if (!loaded)
+		{
+			lcd_display_message_fullscreen_P(_i("Please load filament first."));////MSG_PLEASE_LOAD_PLA c=20 r=4
 			lcd_consume_click();
 			for (uint_least8_t i = 0; i < 20; i++) { //wait max. 2s
 				delay_keep_alive(100);
@@ -4711,10 +4900,14 @@ void lcd_v2_calibration()
 					break;
 				}
 			}
+			lcd_update_enabled = true;
+			menu_back();
+			return;
 		}
 	}
-	lcd_return_to_status();
-	lcd_update_enable(true);
+
+	eFilamentAction = FilamentAction::Lay1Cal;
+	menu_goto(lcd_generic_preheat_menu, 0, true, true);
 }
 
 void lcd_wizard() {
@@ -4756,52 +4949,31 @@ void lcd_language()
 static void wait_preheat()
 {
     current_position[Z_AXIS] = 100; //move in z axis to make space for loading filament
-    plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS] / 60, active_extruder);
+    plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 60, active_extruder);
     delay_keep_alive(2000);
-    lcd_display_message_fullscreen_P(_T(MSG_WIZARD_HEATING));
-	lcd_set_custom_characters();
-	while (abs(degHotend(0) - degTargetHotend(0)) > 3) {
-        lcd_display_message_fullscreen_P(_T(MSG_WIZARD_HEATING));
-
-        lcd_set_cursor(0, 4);
-	    //Print the hotend temperature (9 chars total)
-		lcdui_print_temp(LCD_STR_THERMOMETER[0], (int)(degHotend(0) + 0.5), (int)(degTargetHotend(0) + 0.5));
-        delay_keep_alive(1000);
-    }
-	
-}
-
-static void lcd_wizard_unload()
-{
-	if(mmu_enabled)
-	{
-		int8_t unload = lcd_show_multiscreen_message_two_choices_and_wait_P(
-		_i("Use unload to remove filament 1 if it protrudes outside of the rear MMU tube. Use eject if it is hidden in tube.")
-		,false, true, _i("Unload"), _i("Eject"));
-		if (unload)
-		{
-			extr_unload_0();
-		} 
-		else
-		{
-		    mmu_eject_filament(0, true);
-		}
-	} 
-	else
-	{
-			unload_filament();
-	}
+    lcd_display_message_fullscreen_P(_T(MSG_WIZARD_HEATING));
+	lcd_set_custom_characters();
+	while (abs(degHotend(0) - degTargetHotend(0)) > 3) {
+        lcd_display_message_fullscreen_P(_T(MSG_WIZARD_HEATING));
+
+        lcd_set_cursor(0, 4);
+	    //Print the hotend temperature (9 chars total)
+		lcdui_print_temp(LCD_STR_THERMOMETER[0], (int)(degHotend(0) + 0.5), (int)(degTargetHotend(0) + 0.5));
+        delay_keep_alive(1000);
+    }
+	
 }
 
 static void lcd_wizard_load()
 {
 	if (mmu_enabled)
 	{
-		lcd_show_fullscreen_message_and_wait_P(_i("Please insert PLA filament to the first tube of MMU, then press the knob to load it."));////c=20 r=8
+		lcd_show_fullscreen_message_and_wait_P(_i("Please insert filament into the first tube of the MMU, then press the knob to load it."));////c=20 r=8
+		tmp_extruder = 0;
 	} 
 	else
 	{
-		lcd_show_fullscreen_message_and_wait_P(_i("Please insert PLA filament to the extruder, then press knob to load it."));////MSG_WIZARD_LOAD_FILAMENT c=20 r=8
+		lcd_show_fullscreen_message_and_wait_P(_i("Please insert filament into the extruder, then press the knob to load it."));////MSG_WIZARD_LOAD_FILAMENT c=20 r=8
 	}	
 	lcd_update_enable(false);
 	lcd_clear();
@@ -4818,6 +4990,24 @@ bool lcd_autoDepleteEnabled()
     return (lcd_autoDeplete && fsensor_enabled);
 }
 
+static void wizard_lay1cal_message(bool cold)
+{
+    lcd_show_fullscreen_message_and_wait_P(
+            _i("Now I will calibrate distance between tip of the nozzle and heatbed surface.")); ////MSG_WIZARD_V2_CAL c=20 r=8
+    if (mmu_enabled)
+    {
+        lcd_show_fullscreen_message_and_wait_P(
+                _i("Choose a filament for the First Layer Calibration and select it in the on-screen menu."));
+    }
+    else if (cold)
+    {
+        lcd_show_fullscreen_message_and_wait_P(
+                _i("Select temperature which matches your material."));
+    }
+    lcd_show_fullscreen_message_and_wait_P(
+            _i("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).")); ////MSG_WIZARD_V2_CAL_2 c=20 r=12
+}
+
 //! @brief Printer first run wizard (Selftest and calibration)
 //!
 //!
@@ -4825,18 +5015,26 @@ bool lcd_autoDepleteEnabled()
 //!
 //! @startuml
 //! [*] --> IsFil
-//! IsFil : Is filament 1 loaded?
-//! isPLA : Is filament 1 PLA?
-//! unload : Eject or Unload?
-//! load : Push the button to start loading PLA Filament 1
+//! IsFil : Is any filament loaded?
+//! LoadFilCold : Push the button to start loading Filament 1
+//!
+//! IsFil       --> Lay1CalCold : yes
+//! IsFil       --> LoadFilCold : no
+//! LoadFilCold --> Lay1CalCold : click
+//! @enduml
+//!
+//! First layer calibration without MMU state diagram
+//!
+//! @startuml
+//! [*] --> IsFil
+//! IsFil : Is filament loaded?
+//! Preheat : Select nozle temperature which matches your material.
+//! LoadFilHot : Insert filament to extruder and press the knob.
 //!
-//! IsFil --> isPLA   : yes
-//! IsFil --> load    : no
-//! isPLA --> unload     : no
-//! unload --> load      : eject
-//! unload --> load      : unload
-//! load --> calibration : click
-//! isPLA --> calibration : yes
+//! IsFil   --> Lay1CalCold : yes
+//! IsFil   --> Preheat    : no
+//! Preheat --> LoadFilHot : select
+//! LoadFilHot --> Lay1CalHot : click
 //! @enduml
 //!
 //! @param state Entry point of the wizard
@@ -4845,34 +5043,50 @@ bool lcd_autoDepleteEnabled()
 //!  ---------------------- | ----------------
 //! WizState::Run           | Main entry point
 //! WizState::RepeatLay1Cal | Entry point after passing 1st layer calibration
+//! WizState::LoadFilHot    | Entry point after temporarily left for preheat before load filament
 void lcd_wizard(WizState state)
 {
     using S = WizState;
 	bool end = false;
 	int wizard_event;
 	const char *msg = NULL;
+	// Make sure EEPROM_WIZARD_ACTIVE is true if entering using different entry point
+	// other than WizState::Run - it is useful for debugging wizard.
+	if (state != S::Run) eeprom_update_byte((uint8_t*)EEPROM_WIZARD_ACTIVE, 1);
+
 	while (!end) {
-		printf_P(PSTR("Wizard state: %d"), state);
+		printf_P(PSTR("Wizard state: %d\n"), state);
 		switch (state) {
 		case S::Run: //Run wizard?
-			wizard_active = true;
+			
+			// 2019-08-07 brutal hack - solving the "viper" situation.
+			// It is caused by the fact, that tmc2130_st_isr makes a crash detection before the printers really starts.
+			// And thus it calles stop_and_save_print_to_ram which sets the saved_printing flag.
+			// Having this flag set during normal printing is lethal - mesh_plan_buffer_line exist in the middle of planning long travels
+			// which results in distorted print.
+			// This primarily happens when the printer is new and parked in 0,0
+			// So any new printer will fail the first layer calibration unless being reset or the Stop function gets called.
+			// We really must find a way to prevent the crash from happening before the printer is started - that would be the correct solution.
+			// Btw. the flag may even trigger the viper situation on normal start this way and the user won't be able to find out why.			
+			saved_printing = false;
+			
 			wizard_event = lcd_show_multiscreen_message_yes_no_and_wait_P(_i("Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"), false, true);////MSG_WIZARD_WELCOME c=20 r=7
 			if (wizard_event) {
 				state = S::Restore;
-				eeprom_write_byte((uint8_t*)EEPROM_WIZARD_ACTIVE, 1);
+				eeprom_update_byte((uint8_t*)EEPROM_WIZARD_ACTIVE, 1);
 			}
 			else {
-				eeprom_write_byte((uint8_t*)EEPROM_WIZARD_ACTIVE, 0);
+				eeprom_update_byte((uint8_t*)EEPROM_WIZARD_ACTIVE, 0);
 				end = true;
 			}
 			break;
-		case S::Restore: // restore calibration status
+		case S::Restore:
 			switch (calibration_status()) {
 			case CALIBRATION_STATUS_ASSEMBLED: state = S::Selftest; break; //run selftest
 			case CALIBRATION_STATUS_XYZ_CALIBRATION: state = S::Xyz; break; //run xyz cal.
 			case CALIBRATION_STATUS_Z_CALIBRATION: state = S::Z; break; //run z cal.
 			case CALIBRATION_STATUS_LIVE_ADJUST: state = S::IsFil; break; //run live adjust
-			case CALIBRATION_STATUS_CALIBRATED: end = true; eeprom_write_byte((uint8_t*)EEPROM_WIZARD_ACTIVE, 0); break;
+			case CALIBRATION_STATUS_CALIBRATED: end = true; eeprom_update_byte((uint8_t*)EEPROM_WIZARD_ACTIVE, 0); break;
 			default: state = S::Selftest; break; //if calibration status is unknown, run wizard from the beginning
 			}
 			break; 
@@ -4885,13 +5099,13 @@ void lcd_wizard(WizState state)
 			}
 			else end = true;
 			break;
-		case S::Xyz: //xyz calibration
+		case S::Xyz:
 			lcd_show_fullscreen_message_and_wait_P(_i("I will run xyz calibration now. It will take approx. 12 mins."));////MSG_WIZARD_XYZ_CAL c=20 r=8
 			wizard_event = gcode_M45(false, 0);
 			if (wizard_event) state = S::IsFil;
 			else end = true;
 			break;
-		case S::Z: //z calibration
+		case S::Z:
 			lcd_show_fullscreen_message_and_wait_P(_i("Please remove shipping helpers first."));
 			lcd_show_fullscreen_message_and_wait_P(_i("Now remove the test print from steel sheet."));
 			lcd_show_fullscreen_message_and_wait_P(_i("I will run z calibration now."));////MSG_WIZARD_Z_CAL c=20 r=8
@@ -4905,7 +5119,7 @@ void lcd_wizard(WizState state)
 				lcd_display_message_fullscreen_P(_i("Now I will preheat nozzle for PLA."));
 				wait_preheat();
 				//unload current filament
-				lcd_wizard_unload();
+				unload_filament();
 				//load filament
 				lcd_wizard_load();
 				setTargetHotend(0, 0); //we are finished, cooldown nozzle
@@ -4913,69 +5127,63 @@ void lcd_wizard(WizState state)
 			}
 			else end = true;
 			break;
-		case S::IsFil: //is filament loaded?
-				//start to preheat nozzle and bed to save some time later
+		case S::IsFil:
+		    //start to preheat nozzle and bed to save some time later
 			setTargetHotend(PLA_PREHEAT_HOTEND_TEMP, 0);
 			setTargetBed(PLA_PREHEAT_HPB_TEMP);
 			if (mmu_enabled)
 			{
-			    wizard_event = lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Is filament 1 loaded?"), false);////c=20 r=2
+			    wizard_event = lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Is filament loaded?"), true);////c=20 r=2
 			} else
 			{
-			    wizard_event = lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Is filament loaded?"), false);////MSG_WIZARD_FILAMENT_LOADED c=20 r=2
+			    wizard_event = lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Is filament loaded?"), true);////MSG_WIZARD_FILAMENT_LOADED c=20 r=2
 			}
-			if (wizard_event) state = S::IsPla;
+			if (wizard_event) state = S::Lay1CalCold;
 			else
 			{
-			    if(mmu_enabled) state = S::LoadFil;
-			    else state = S::PreheatPla;
+			    if(mmu_enabled) state = S::LoadFilCold;
+			    else state = S::Preheat;
 			}
 			break;
-		case S::PreheatPla:
-#ifndef SNMM
-		    lcd_display_message_fullscreen_P(_i("Now I will preheat nozzle for PLA."));////MSG_WIZARD_WILL_PREHEAT c=20 r=4
-		    wait_preheat();
-#endif //not SNMM
-			state = S::LoadFil;
-			break;
 		case S::Preheat:
 		    menu_goto(lcd_preheat_menu,0,false,true);
 		    lcd_show_fullscreen_message_and_wait_P(_i("Select nozzle preheat temperature which matches your material."));
 		    end = true; // Leave wizard temporarily for lcd_preheat_menu
 		    break;
-		case S::Unload:
+		case S::LoadFilHot:
 		    wait_preheat();
-			lcd_wizard_unload();
-            state = S::LoadFil;
-            break;
-		case S::LoadFil: //load filament
 			lcd_wizard_load();
-			state = S::Lay1Cal;
+			state = S::Lay1CalHot;
 			break;
-		case S::IsPla:
-			wizard_event = lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Is it PLA filament?"), false, true);////MSG_WIZARD_PLA_FILAMENT c=20 r=2
-			if (wizard_event) state = S::Lay1Cal;
-			else state = S::Preheat;
-			break;
-		case S::Lay1Cal:
-			lcd_show_fullscreen_message_and_wait_P(_i("Now I will calibrate distance between tip of the nozzle and heatbed surface."));////MSG_WIZARD_V2_CAL c=20 r=8
-			lcd_show_fullscreen_message_and_wait_P(_i("I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."));////MSG_WIZARD_V2_CAL_2 c=20 r=12
-			lcd_commands_type = LcdCommands::Layer1Cal;
-			lcd_return_to_status();
-			end = true;
+        case S::LoadFilCold:
+            lcd_wizard_load();
+            state = S::Lay1CalCold;
+            break;
+		case S::Lay1CalCold:
+            wizard_lay1cal_message(true);
+			menu_goto(lcd_v2_calibration,0,false,true);
+			end = true; // Leave wizard temporarily for lcd_v2_calibration
 			break;
-		case S::RepeatLay1Cal: //repeat first layer cal.?
+        case S::Lay1CalHot:
+            wizard_lay1cal_message(false);
+            lcd_commands_type = LcdCommands::Layer1Cal;
+            end = true; // Leave wizard temporarily for lcd_v2_calibration
+            break;
+		case S::RepeatLay1Cal:
 			wizard_event = lcd_show_multiscreen_message_yes_no_and_wait_P(_i("Do you want to repeat last step to readjust distance between nozzle and heatbed?"), false);////MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-			if (wizard_event) {
+			if (wizard_event)
+			{
 				lcd_show_fullscreen_message_and_wait_P(_i("Please clean heatbed and then press the knob."));////MSG_WIZARD_CLEAN_HEATBED c=20 r=8
-				state = S::Lay1Cal;
+				state = S::Lay1CalCold;
 			}
-			else {
+			else
+			{
+			    lcd_show_fullscreen_message_and_wait_P(_i("If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."));
 				state = S::Finish;
 			}
 			break;
-		case S::Finish: //we are finished
-			eeprom_write_byte((uint8_t*)EEPROM_WIZARD_ACTIVE, 0);
+		case S::Finish:
+			eeprom_update_byte((uint8_t*)EEPROM_WIZARD_ACTIVE, 0);
 			end = true;
 			break;
 
@@ -5006,9 +5214,9 @@ void lcd_wizard(WizState state)
 		break;
 
 	}
-	if (!((S::Lay1Cal == state) || (S::Preheat == state))) {
+	if (!((S::Lay1CalCold == state) || (S::Lay1CalHot == state) || (S::Preheat == state)))
+	{
 		lcd_show_fullscreen_message_and_wait_P(msg);
-		wizard_active = false;
 	}
 	lcd_update_enable(true);
 	lcd_update(2);
@@ -5043,29 +5251,29 @@ do\
         if (fsensor_not_responding && (mmu_enabled == false))\
         {\
             /* Filament sensor not working*/\
-            MENU_ITEM_FUNCTION_P(_i("Fil. sensor [N/A]"), lcd_fsensor_state_set);/*////MSG_FSENSOR_NA*/\
-            MENU_ITEM_SUBMENU_P(_T(MSG_FSENS_AUTOLOAD_NA), lcd_fsensor_fail);\
+            MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR), _T(MSG_NA), lcd_fsensor_state_set);/*////MSG_FSENSOR_NA*/\
+            MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_AUTOLOAD), NULL, lcd_fsensor_fail);\
         }\
         else\
         {\
             /* Filament sensor turned off, working, no problems*/\
-            MENU_ITEM_FUNCTION_P(_T(MSG_FSENSOR_OFF), lcd_fsensor_state_set);\
+            MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR), _T(MSG_OFF), lcd_fsensor_state_set);\
             if (mmu_enabled == false)\
             {\
-                MENU_ITEM_SUBMENU_P(_T(MSG_FSENS_AUTOLOAD_NA), lcd_filament_autoload_info);\
+                MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_AUTOLOAD), NULL, lcd_filament_autoload_info);\
             }\
         }\
     }\
     else\
     {\
         /* Filament sensor turned on, working, no problems*/\
-        MENU_ITEM_FUNCTION_P(_T(MSG_FSENSOR_ON), lcd_fsensor_state_set);\
+        MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR), _T(MSG_ON), lcd_fsensor_state_set);\
         if (mmu_enabled == false)\
         {\
             if (fsensor_autoload_enabled)\
-                MENU_ITEM_FUNCTION_P(_i("F. autoload  [on]"), lcd_set_filament_autoload);/*////MSG_FSENS_AUTOLOAD_ON c=17 r=1*/\
+                MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_AUTOLOAD), _T(MSG_ON), lcd_set_filament_autoload);/*////MSG_FSENS_AUTOLOAD_ON c=17 r=1*/\
             else\
-                MENU_ITEM_FUNCTION_P(_i("F. autoload [off]"), lcd_set_filament_autoload);/*////MSG_FSENS_AUTOLOAD_OFF c=17 r=1*/\
+                MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_AUTOLOAD), _T(MSG_OFF), lcd_set_filament_autoload);/*////MSG_FSENS_AUTOLOAD_OFF c=17 r=1*/\
             /*if (fsensor_oq_meassure_enabled)*/\
                 /*MENU_ITEM_FUNCTION_P(_i("F. OQ meass. [on]"), lcd_set_filament_oq_meass);*//*////MSG_FSENS_OQMEASS_ON c=17 r=1*/\
             /*else*/\
@@ -5085,60 +5293,58 @@ static void auto_deplete_switch()
     eeprom_update_byte((unsigned char *)EEPROM_AUTO_DEPLETE, lcd_autoDeplete);
 }
 
-static bool settingsAutoDeplete()
+static void settingsAutoDeplete()
 {
     if (mmu_enabled)
     {
         if (!fsensor_enabled)
         {
-            if (menu_item_text_P(_i("SpoolJoin   [N/A]"))) return true;
+            MENU_ITEM_TOGGLE_P(_T(MSG_AUTO_DEPLETE), _T(MSG_NA), NULL);
         }
         else if (lcd_autoDeplete)
         {
-            if (menu_item_function_P(_i("SpoolJoin    [on]"), auto_deplete_switch)) return true;
+            MENU_ITEM_TOGGLE_P(_T(MSG_AUTO_DEPLETE), _T(MSG_ON), auto_deplete_switch);
         }
         else
         {
-            if (menu_item_function_P(_i("SpoolJoin   [off]"), auto_deplete_switch)) return true;
+            MENU_ITEM_TOGGLE_P(_T(MSG_AUTO_DEPLETE), _T(MSG_OFF), auto_deplete_switch);
         }
     }
-    return false;
 }
 
 #define SETTINGS_AUTO_DEPLETE \
 do\
 {\
-    if(settingsAutoDeplete()) return;\
+    settingsAutoDeplete();\
 }\
 while(0)\
 
 #ifdef MMU_HAS_CUTTER
-static bool settingsCutter()
+static void settingsCutter()
 {
     if (mmu_enabled)
     {
         if (EEPROM_MMU_CUTTER_ENABLED_enabled == eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED))
         {
-            if (menu_item_function_P(_i("Cutter       [on]"), lcd_cutter_enabled)) return true;//// c=17 r=1
+            MENU_ITEM_TOGGLE_P(_T(MSG_CUTTER), _T(MSG_ON), lcd_cutter_enabled);
         }
 #ifdef MMU_ALWAYS_CUT
         else if (EEPROM_MMU_CUTTER_ENABLED_always == eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED))
         {
-            if (menu_item_function_P(_i("Cutter   [always]"), lcd_cutter_enabled)) return true;//// c=17 r=1
+            MENU_ITEM_TOGGLE_P(_T(MSG_CUTTER), _i("Always"), lcd_cutter_enabled);
         }
 #endif
         else
         {
-            if (menu_item_function_P(_i("Cutter      [off]"), lcd_cutter_enabled)) return true;//// c=17 r=1
+            MENU_ITEM_TOGGLE_P(_T(MSG_CUTTER), _T(MSG_OFF), lcd_cutter_enabled);
         }
     }
-    return false;
 }
 
 #define SETTINGS_CUTTER \
 do\
 {\
-    if(settingsCutter()) return;\
+    settingsCutter();\
 }\
 while(0)
 #else
@@ -5153,18 +5359,15 @@ do\
     {\
         if (SilentModeMenu == SILENT_MODE_NORMAL)\
         {\
-            MENU_ITEM_FUNCTION_P(_T(MSG_STEALTH_MODE_OFF), lcd_silent_mode_set);\
+            MENU_ITEM_TOGGLE_P(_T(MSG_MODE), _T(MSG_NORMAL), lcd_silent_mode_set);\
         }\
-        else MENU_ITEM_FUNCTION_P(_T(MSG_STEALTH_MODE_ON), lcd_silent_mode_set);\
+        else MENU_ITEM_TOGGLE_P(_T(MSG_MODE), _T(MSG_STEALTH), lcd_silent_mode_set);\
         if (SilentModeMenu == SILENT_MODE_NORMAL)\
         {\
-            if (CrashDetectMenu == 0)\
-            {\
-                MENU_ITEM_FUNCTION_P(_T(MSG_CRASHDETECT_OFF), lcd_crash_mode_set);\
-            }\
-            else MENU_ITEM_FUNCTION_P(_T(MSG_CRASHDETECT_ON), lcd_crash_mode_set);\
+            if (lcd_crash_detect_enabled()) MENU_ITEM_TOGGLE_P(_T(MSG_CRASHDETECT), _T(MSG_ON), crash_mode_switch);\
+            else MENU_ITEM_TOGGLE_P(_T(MSG_CRASHDETECT), _T(MSG_OFF), crash_mode_switch);\
         }\
-        else MENU_ITEM_SUBMENU_P(_T(MSG_CRASHDETECT_NA), lcd_crash_mode_info);\
+        else MENU_ITEM_TOGGLE_P(_T(MSG_CRASHDETECT), NULL, lcd_crash_mode_info);\
     }\
 }\
 while (0)
@@ -5178,16 +5381,16 @@ do\
         switch (SilentModeMenu)\
         {\
         case SILENT_MODE_POWER:\
-            MENU_ITEM_FUNCTION_P(_T(MSG_SILENT_MODE_OFF), lcd_silent_mode_set);\
+            MENU_ITEM_TOGGLE_P(_T(MSG_MODE), _T(MSG_HIGH_POWER), lcd_silent_mode_set);\
             break;\
         case SILENT_MODE_SILENT:\
-            MENU_ITEM_FUNCTION_P(_T(MSG_SILENT_MODE_ON), lcd_silent_mode_set);\
+            MENU_ITEM_TOGGLE_P(_T(MSG_MODE), _T(MSG_SILENT), lcd_silent_mode_set);\
             break;\
         case SILENT_MODE_AUTO:\
-            MENU_ITEM_FUNCTION_P(_T(MSG_AUTO_MODE_ON), lcd_silent_mode_set);\
+            MENU_ITEM_TOGGLE_P(_T(MSG_MODE), _T(MSG_AUTO_POWER), lcd_silent_mode_set);\
             break;\
         default:\
-            MENU_ITEM_FUNCTION_P(_T(MSG_SILENT_MODE_OFF), lcd_silent_mode_set);\
+            MENU_ITEM_TOGGLE_P(_T(MSG_MODE), _T(MSG_HIGH_POWER), lcd_silent_mode_set);\
             break; /* (probably) not needed*/\
         }\
     }\
@@ -5201,8 +5404,8 @@ do\
 {\
 	if (mmu_enabled)\
 	{\
-		if (SilentModeMenu_MMU == 0) MENU_ITEM_FUNCTION_P(_i("MMU Mode [Normal]"), lcd_silent_mode_mmu_set); \
-		else MENU_ITEM_FUNCTION_P(_i("MMU Mode[Stealth]"), lcd_silent_mode_mmu_set); \
+		if (SilentModeMenu_MMU == 0) MENU_ITEM_TOGGLE_P(_T(MSG_MMU_MODE), _T(MSG_NORMAL), lcd_silent_mode_mmu_set);\
+		else MENU_ITEM_TOGGLE_P(_T(MSG_MMU_MODE), _T(MSG_STEALTH), lcd_silent_mode_mmu_set);\
 	}\
 }\
 while (0) 
@@ -5215,9 +5418,9 @@ while (0)
 do\
 {\
     if (card.ToshibaFlashAir_isEnabled())\
-        MENU_ITEM_FUNCTION_P(_i("SD card [flshAir]"), lcd_toshiba_flash_air_compatibility_toggle);/*////MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1*/\
+        MENU_ITEM_TOGGLE_P(_T(MSG_SD_CARD), _T(MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY), lcd_toshiba_flash_air_compatibility_toggle);\
     else\
-        MENU_ITEM_FUNCTION_P(_i("SD card  [normal]"), lcd_toshiba_flash_air_compatibility_toggle);/*////MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1*/\
+        MENU_ITEM_TOGGLE_P(_T(MSG_SD_CARD), _T(MSG_NORMAL), lcd_toshiba_flash_air_compatibility_toggle);\
 \
     if (!farm_mode)\
     {\
@@ -5225,9 +5428,9 @@ do\
         EEPROM_read(EEPROM_SD_SORT, (uint8_t*)&sdSort, sizeof(sdSort));\
         switch (sdSort)\
         {\
-          case SD_SORT_TIME: MENU_ITEM_FUNCTION_P(_i("Sort       [time]"), lcd_sort_type_set); break;/*////MSG_SORT_TIME c=17 r=1*/\
-          case SD_SORT_ALPHA: MENU_ITEM_FUNCTION_P(_i("Sort   [alphabet]"), lcd_sort_type_set); break;/*////MSG_SORT_ALPHA c=17 r=1*/\
-          default: MENU_ITEM_FUNCTION_P(_i("Sort       [none]"), lcd_sort_type_set);/*////MSG_SORT_NONE c=17 r=1*/\
+          case SD_SORT_TIME: MENU_ITEM_TOGGLE_P(_T(MSG_SORT), _T(MSG_SORT_TIME), lcd_sort_type_set); break;\
+          case SD_SORT_ALPHA: MENU_ITEM_TOGGLE_P(_T(MSG_SORT), _T(MSG_SORT_ALPHA), lcd_sort_type_set); break;\
+          default: MENU_ITEM_TOGGLE_P(_T(MSG_SORT), _T(MSG_NONE), lcd_sort_type_set);\
         }\
     }\
 }\
@@ -5237,9 +5440,9 @@ while (0)
 do\
 {\
     if (card.ToshibaFlashAir_isEnabled())\
-        MENU_ITEM_FUNCTION_P(_i("SD card [flshAir]"), lcd_toshiba_flash_air_compatibility_toggle);/*////MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1*/\
+        MENU_ITEM_TOGGLE_P(_T(MSG_SD_CARD), _T(MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY), lcd_toshiba_flash_air_compatibility_toggle);\
     else\
-        MENU_ITEM_FUNCTION_P(_i("SD card  [normal]"), lcd_toshiba_flash_air_compatibility_toggle);/*////MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1*/\
+        MENU_ITEM_TOGGLE_P(_T(MSG_SD_CARD), _T(MSG_NORMAL), lcd_toshiba_flash_air_compatibility_toggle);\
 }\
 while (0)
 #endif // SDCARD_SORT_ALPHA
@@ -5271,22 +5474,22 @@ while (0)
 do\
 {\
     switch(eSoundMode)\
-         {\
-         case e_SOUND_MODE_LOUD:\
-              MENU_ITEM_FUNCTION_P(_i(MSG_SOUND_MODE_LOUD),lcd_sound_state_set);\
-              break;\
-         case e_SOUND_MODE_ONCE:\
-              MENU_ITEM_FUNCTION_P(_i(MSG_SOUND_MODE_ONCE),lcd_sound_state_set);\
-              break;\
-         case e_SOUND_MODE_SILENT:\
-              MENU_ITEM_FUNCTION_P(_i(MSG_SOUND_MODE_SILENT),lcd_sound_state_set);\
-              break;\
-         case e_SOUND_MODE_BLIND:\
-              MENU_ITEM_FUNCTION_P(_i(MSG_SOUND_MODE_BLIND),lcd_sound_state_set);\
-              break;\
-         default:\
-              MENU_ITEM_FUNCTION_P(_i(MSG_SOUND_MODE_LOUD),lcd_sound_state_set);\
-         }\
+    {\
+        case e_SOUND_MODE_LOUD:\
+            MENU_ITEM_TOGGLE_P(_T(MSG_SOUND), _T(MSG_SOUND_LOUD), lcd_sound_state_set);\
+            break;\
+        case e_SOUND_MODE_ONCE:\
+            MENU_ITEM_TOGGLE_P(_T(MSG_SOUND), _T(MSG_SOUND_ONCE), lcd_sound_state_set);\
+            break;\
+        case e_SOUND_MODE_SILENT:\
+            MENU_ITEM_TOGGLE_P(_T(MSG_SOUND), _T(MSG_SILENT), lcd_sound_state_set);\
+            break;\
+        case e_SOUND_MODE_BLIND:\
+            MENU_ITEM_TOGGLE_P(_T(MSG_SOUND), _T(MSG_SOUND_BLIND), lcd_sound_state_set);\
+            break;\
+        default:\
+            MENU_ITEM_TOGGLE_P(_T(MSG_SOUND), _T(MSG_SOUND_LOUD), lcd_sound_state_set);\
+    }\
 }\
 while (0)
 
@@ -5316,16 +5519,16 @@ do\
     switch(oCheckMode)\
          {\
          case ClCheckMode::_None:\
-              MENU_ITEM_FUNCTION_P(_i("Nozzle     [none]"),lcd_check_mode_set);\
+              MENU_ITEM_TOGGLE_P(_T(MSG_NOZZLE), _T(MSG_NONE), lcd_check_mode_set);\
               break;\
          case ClCheckMode::_Warn:\
-              MENU_ITEM_FUNCTION_P(_i("Nozzle     [warn]"),lcd_check_mode_set);\
+              MENU_ITEM_TOGGLE_P(_T(MSG_NOZZLE), _T(MSG_WARN), lcd_check_mode_set);\
               break;\
          case ClCheckMode::_Strict:\
-              MENU_ITEM_FUNCTION_P(_i("Nozzle   [strict]"),lcd_check_mode_set);\
+              MENU_ITEM_TOGGLE_P(_T(MSG_NOZZLE), _T(MSG_STRICT), lcd_check_mode_set);\
               break;\
          default:\
-              MENU_ITEM_FUNCTION_P(_i("Nozzle     [none]"),lcd_check_mode_set);\
+              MENU_ITEM_TOGGLE_P(_T(MSG_NOZZLE), _T(MSG_NONE), lcd_check_mode_set);\
          }\
 }\
 while (0)
@@ -5359,20 +5562,15 @@ eeprom_update_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM,nDiameter);
 #define SETTINGS_NOZZLE \
 do\
 {\
+    float fNozzleDiam;\
     switch(oNozzleDiameter)\
-         {\
-         case ClNozzleDiameter::_Diameter_250:\
-              MENU_ITEM_FUNCTION_P(_i("Nozzle d.  [0.25]"),lcd_nozzle_diameter_set);\
-              break;\
-         case ClNozzleDiameter::_Diameter_400:\
-              MENU_ITEM_FUNCTION_P(_i("Nozzle d.  [0.40]"),lcd_nozzle_diameter_set);\
-              break;\
-         case ClNozzleDiameter::_Diameter_600:\
-              MENU_ITEM_FUNCTION_P(_i("Nozzle d.  [0.60]"),lcd_nozzle_diameter_set);\
-              break;\
-         default:\
-              MENU_ITEM_FUNCTION_P(_i("Nozzle d.  [0.40]"),lcd_nozzle_diameter_set);\
-         }\
+    {\
+        case ClNozzleDiameter::_Diameter_250: fNozzleDiam = 0.25f; break;\
+        case ClNozzleDiameter::_Diameter_400: fNozzleDiam = 0.4f; break;\
+        case ClNozzleDiameter::_Diameter_600: fNozzleDiam = 0.6f; break;\
+        default: fNozzleDiam = 0.4f; break;\
+    }\
+    MENU_ITEM_TOGGLE(_T(MSG_NOZZLE_DIAMETER), ftostr12ns(fNozzleDiam), lcd_nozzle_diameter_set);\
 }\
 while (0)
 
@@ -5401,16 +5599,16 @@ do\
     switch(oCheckModel)\
          {\
          case ClCheckModel::_None:\
-              MENU_ITEM_FUNCTION_P(_i("Model      [none]"),lcd_check_model_set);\
+              MENU_ITEM_TOGGLE_P(_T(MSG_MODEL), _T(MSG_NONE), lcd_check_model_set);\
               break;\
          case ClCheckModel::_Warn:\
-              MENU_ITEM_FUNCTION_P(_i("Model      [warn]"),lcd_check_model_set);\
+              MENU_ITEM_TOGGLE_P(_T(MSG_MODEL), _T(MSG_WARN), lcd_check_model_set);\
               break;\
          case ClCheckModel::_Strict:\
-              MENU_ITEM_FUNCTION_P(_i("Model    [strict]"),lcd_check_model_set);\
+              MENU_ITEM_TOGGLE_P(_T(MSG_MODEL), _T(MSG_STRICT), lcd_check_model_set);\
               break;\
          default:\
-              MENU_ITEM_FUNCTION_P(_i("Model      [none]"),lcd_check_model_set);\
+              MENU_ITEM_TOGGLE_P(_T(MSG_MODEL), _T(MSG_NONE), lcd_check_model_set);\
          }\
 }\
 while (0)
@@ -5440,16 +5638,16 @@ do\
     switch(oCheckVersion)\
          {\
          case ClCheckVersion::_None:\
-              MENU_ITEM_FUNCTION_P(_i("Firmware   [none]"),lcd_check_version_set);\
+              MENU_ITEM_TOGGLE_P(_T(MSG_FIRMWARE), _T(MSG_NONE), lcd_check_version_set);\
               break;\
          case ClCheckVersion::_Warn:\
-              MENU_ITEM_FUNCTION_P(_i("Firmware   [warn]"),lcd_check_version_set);\
+              MENU_ITEM_TOGGLE_P(_T(MSG_FIRMWARE), _T(MSG_WARN), lcd_check_version_set);\
               break;\
          case ClCheckVersion::_Strict:\
-              MENU_ITEM_FUNCTION_P(_i("Firmware [strict]"),lcd_check_version_set);\
+              MENU_ITEM_TOGGLE_P(_T(MSG_FIRMWARE), _T(MSG_STRICT), lcd_check_version_set);\
               break;\
          default:\
-              MENU_ITEM_FUNCTION_P(_i("Firmware   [none]"),lcd_check_version_set);\
+              MENU_ITEM_TOGGLE_P(_T(MSG_FIRMWARE), _T(MSG_NONE), lcd_check_version_set);\
          }\
 }\
 while (0)
@@ -5479,16 +5677,16 @@ do\
     switch(oCheckGcode)\
          {\
          case ClCheckGcode::_None:\
-              MENU_ITEM_FUNCTION_P(_i("Gcode      [none]"),lcd_check_gcode_set);\
+              MENU_ITEM_TOGGLE_P(_T(MSG_GCODE), _T(MSG_NONE), lcd_check_gcode_set);\
               break;\
          case ClCheckGcode::_Warn:\
-              MENU_ITEM_FUNCTION_P(_i("Gcode      [warn]"),lcd_check_gcode_set);\
+              MENU_ITEM_TOGGLE_P(_T(MSG_GCODE), _T(MSG_WARN), lcd_check_gcode_set);\
               break;\
          case ClCheckGcode::_Strict:\
-              MENU_ITEM_FUNCTION_P(_i("Gcode    [strict]"),lcd_check_gcode_set);\
+              MENU_ITEM_TOGGLE_P(_T(MSG_GCODE), _T(MSG_STRICT), lcd_check_gcode_set);\
               break;\
          default:\
-              MENU_ITEM_FUNCTION_P(_i("Gcode      [none]"),lcd_check_gcode_set);\
+              MENU_ITEM_TOGGLE_P(_T(MSG_GCODE), _T(MSG_NONE), lcd_check_gcode_set);\
          }\
 }\
 while (0)
@@ -5505,38 +5703,76 @@ SETTINGS_VERSION;
 MENU_END();
 }
 
-void lcd_hw_setup_menu(void)                      // can not be "static"
+#if IR_SENSOR_ANALOG
+static void lcd_fsensor_actionNA_set(void)
 {
-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_E(EEPROM_Sheets_base->s[0], lcd_select_sheet_0_menu);
-MENU_ITEM_SUBMENU_E(EEPROM_Sheets_base->s[1], lcd_select_sheet_1_menu);
-MENU_ITEM_SUBMENU_E(EEPROM_Sheets_base->s[2], lcd_select_sheet_2_menu);
+switch(oFsensorActionNA)
+     {
+     case ClFsensorActionNA::_Continue:
+          oFsensorActionNA=ClFsensorActionNA::_Pause;
+          break;
+     case ClFsensorActionNA::_Pause:
+          oFsensorActionNA=ClFsensorActionNA::_Continue;
+          break;
+     default:
+          oFsensorActionNA=ClFsensorActionNA::_Continue;
+     }
+eeprom_update_byte((uint8_t*)EEPROM_FSENSOR_ACTION_NA,(uint8_t)oFsensorActionNA);
+}
 
-//strncpy(buffer,_i("Sheet"),sizeof(buffer));
-//strncpy(buffer,_i(" "),sizeof(buffer));
-//strncpy(buffer,EEPROM_Sheets_base->s[0].name,sizeof(buffer));
+#define FSENSOR_ACTION_NA \
+do\
+{\
+    switch(oFsensorActionNA)\
+         {\
+         case ClFsensorActionNA::_Continue:\
+              MENU_ITEM_TOGGLE_P(_T(MSG_FS_ACTION), _T(MSG_FS_CONTINUE), lcd_fsensor_actionNA_set);\
+              break;\
+         case ClFsensorActionNA::_Pause:\
+              MENU_ITEM_TOGGLE_P(_T(MSG_FS_ACTION), _T(MSG_FS_PAUSE), lcd_fsensor_actionNA_set);\
+              break;\
+         default:\
+              oFsensorActionNA=ClFsensorActionNA::_Continue;\
+         }\
+}\
+while (0)
+#endif //IR_SENSOR_ANALOG
 
-//const char* menu = EEPROM_Sheets_base->s[0].name.c_str();
+template <uint8_t number>
+static void select_sheet_menu()
+{
+    selected_sheet = number;
+    lcd_sheet_menu();
+}
 
-//const char *b = new char(buffer);
-//const char *b = const char *b = new char(buffer);(buffer);
-//printf_P(_N("UVLO - end %d\n"), _millis() - time_start);
-//SERIAL_ECHOPGM(buffer);
-//SERIAL_ECHOPGM(reinterpret_cast<const char*>(buffer));
-//SERIAL_ECHOPGM("lakdjushasdjaljsdakjsdn");
-//char* p = &buffer[0];
+static void sheets_menu()
+{
+    MENU_BEGIN();
+    MENU_ITEM_BACK_P(_i("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>);
+    MENU_ITEM_SUBMENU_E(EEPROM_Sheets_base->s[3], select_sheet_menu<3>);
+    MENU_ITEM_SUBMENU_E(EEPROM_Sheets_base->s[4], select_sheet_menu<4>);
+    MENU_ITEM_SUBMENU_E(EEPROM_Sheets_base->s[5], select_sheet_menu<5>);
+    MENU_ITEM_SUBMENU_E(EEPROM_Sheets_base->s[6], select_sheet_menu<6>);
+    MENU_ITEM_SUBMENU_E(EEPROM_Sheets_base->s[7], select_sheet_menu<7>);
+    MENU_END();
+}
 
-//MENU_ITEM_SUBMENU_P(reinterpret_cast<const char*>(p),lcd_sheet_menu);
+void lcd_hw_setup_menu(void)                      // can not be "static"
+{
+    MENU_BEGIN();
+    MENU_ITEM_BACK_P(_T(bSettings?MSG_SETTINGS:MSG_BACK)); // i.e. default menu-item / menu-item after checking mismatch
 
-//delete(b);
+    MENU_ITEM_SUBMENU_P(_i("Steel sheets"), sheets_menu);
+    SETTINGS_NOZZLE;
+    MENU_ITEM_SUBMENU_P(_i("Checks"), lcd_checking_menu);
 
-if(!farm_mode){
-     SETTINGS_NOZZLE;
-     MENU_ITEM_SUBMENU_P(_i("Checks"), lcd_checking_menu);
-}
-MENU_END();
+#if IR_SENSOR_ANALOG
+    FSENSOR_ACTION_NA;
+#endif //IR_SENSOR_ANALOG
+    MENU_END();
 }
 
 static void lcd_settings_menu()
@@ -5557,16 +5793,16 @@ static void lcd_settings_menu()
 
 	SETTINGS_CUTTER;
 
-	if (fans_check_enabled == true)
-		MENU_ITEM_FUNCTION_P(_i("Fans check   [on]"), lcd_set_fan_check);////MSG_FANS_CHECK_ON c=17 r=1
-	else
-		MENU_ITEM_FUNCTION_P(_i("Fans check  [off]"), lcd_set_fan_check);////MSG_FANS_CHECK_OFF c=17 r=1
+	MENU_ITEM_TOGGLE_P(_i("Fans check"), fans_check_enabled ? _T(MSG_ON) : _T(MSG_OFF), lcd_set_fan_check);
 
 	SETTINGS_SILENT_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
-
+    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
+    }
+    
 	SETTINGS_MMU_MODE;
 
 	MENU_ITEM_SUBMENU_P(_i("Mesh bed leveling"), lcd_mesh_bed_leveling_settings);////MSG_MBL_SETTINGS c=18 r=1
@@ -5575,16 +5811,10 @@ static void lcd_settings_menu()
     MENU_ITEM_SUBMENU_P(_i("Lin. correction"), lcd_settings_linearity_correction_menu);
 #endif //LINEARITY_CORRECTION && TMC2130
 
-  if (temp_cal_active == false)
-	  MENU_ITEM_FUNCTION_P(_i("Temp. cal.  [off]"), lcd_temp_calibration_set);////MSG_TEMP_CALIBRATION_OFF c=20 r=1
-  else
-	  MENU_ITEM_FUNCTION_P(_i("Temp. cal.   [on]"), lcd_temp_calibration_set);////MSG_TEMP_CALIBRATION_ON c=20 r=1
+	MENU_ITEM_TOGGLE_P(_T(MSG_TEMP_CALIBRATION), temp_cal_active ? _T(MSG_ON) : _T(MSG_OFF), lcd_temp_calibration_set);
 
 #ifdef HAS_SECOND_SERIAL_PORT
-	if (selectedSerialPort == 0)
-		MENU_ITEM_FUNCTION_P(_i("RPi port    [off]"), lcd_second_serial_set);////MSG_SECOND_SERIAL_OFF c=17 r=1
-	else
-		MENU_ITEM_FUNCTION_P(_i("RPi port     [on]"), lcd_second_serial_set);////MSG_SECOND_SERIAL_ON c=17 r=1
+    MENU_ITEM_TOGGLE_P(_T(MSG_RPI_PORT), (selectedSerialPort == 0) ? _T(MSG_OFF) : _T(MSG_ON), lcd_second_serial_set);
 #endif //HAS_SECOND_SERIAL
 
 	if (!isPrintPaused && !homing_flag)
@@ -5640,8 +5870,14 @@ static void lcd_calibration_menu()
   if (!isPrintPaused)
   {
 	MENU_ITEM_FUNCTION_P(_i("Wizard"), lcd_wizard);////MSG_WIZARD c=17 r=1
-	MENU_ITEM_SUBMENU_P(_T(MSG_V2_CALIBRATION), lcd_v2_calibration);
+    if (lcd_commands_type == LcdCommands::Idle)
+    {
+         MENU_ITEM_SUBMENU_P(_T(MSG_V2_CALIBRATION), lcd_first_layer_calibration_reset);
+    }
 	MENU_ITEM_GCODE_P(_T(MSG_AUTO_HOME), PSTR("G28 W"));
+#ifdef TMC2130
+	MENU_ITEM_FUNCTION_P(_i("Belt test        "), lcd_belttest_v);////MSG_BELTTEST
+#endif //TMC2130
 	MENU_ITEM_FUNCTION_P(_i("Selftest         "), lcd_selftest_v);////MSG_SELFTEST
 #ifdef MK1BP
     // MK1
@@ -5886,27 +6122,30 @@ uint8_t choose_menu_P(const char *header, const char *item, const char *last_ite
                 cursor_pos++;
             }
             enc_dif = lcd_encoder_diff;
+			Sound_MakeSound(e_SOUND_TYPE_EncoderMove);
 		}
 
 		if (cursor_pos > 3)
 		{		
-			Sound_MakeSound(e_SOUND_TYPE_BlindAlert);
             cursor_pos = 3;
             if (first < items_no - 3)
             {
                 first++;
                 lcd_clear();
+            } else { // here we are at the very end of the list
+				Sound_MakeSound(e_SOUND_TYPE_BlindAlert);
             }
         }
 
         if (cursor_pos < 1)
         {
-					Sound_MakeSound(e_SOUND_TYPE_BlindAlert);
             cursor_pos = 1;
             if (first > 0)
             {
                 first--;
                 lcd_clear();
+            } else { // here we are at the very end of the list
+				Sound_MakeSound(e_SOUND_TYPE_BlindAlert);
             }
         }
 
@@ -5936,7 +6175,6 @@ uint8_t choose_menu_P(const char *header, const char *item, const char *last_ite
         lcd_print(" ");
         lcd_set_cursor(0, cursor_pos);
         lcd_print(">");
-				Sound_MakeSound(e_SOUND_TYPE_EncoderMove);
         _delay(100);
 
 		if (lcd_clicked())
@@ -6085,13 +6323,7 @@ static void mmu_load_to_nozzle_menu()
     else
     {
         eFilamentAction = FilamentAction::MmuLoad;
-        bFilamentFirstRun = false;
-        if (target_temperature[0] >= EXTRUDE_MINTEMP)
-        {
-            bFilamentPreheatState = true;
-            mFilamentItem(target_temperature[0], target_temperature_bed);
-        }
-        else mFilamentMenu();
+        preheat_or_continue();
     }
 }
 
@@ -6117,13 +6349,7 @@ static void mmu_fil_eject_menu()
     else
     {
         eFilamentAction = FilamentAction::MmuEject;
-        bFilamentFirstRun = false;
-        if (target_temperature[0] >= EXTRUDE_MINTEMP)
-        {
-            bFilamentPreheatState = true;
-            mFilamentItem(target_temperature[0], target_temperature_bed);
-        }
-        else mFilamentMenu();
+        preheat_or_continue();
     }
 }
 
@@ -6151,7 +6377,7 @@ static void mmu_cut_filament_menu()
             bFilamentPreheatState=true;
             mFilamentItem(target_temperature[0],target_temperature_bed);
         }
-        else mFilamentMenu();
+        else lcd_generic_preheat_menu();
     }
 }
 #endif //MMU_HAS_CUTTER
@@ -6192,16 +6418,18 @@ void unload_filament()
 	custom_message_type = CustomMsg::FilamentLoading;
 	lcd_setstatuspgm(_T(MSG_UNLOADING_FILAMENT));
 
+    raise_z_above(MIN_Z_FOR_UNLOAD);
+
 	//		extr_unload2();
 
 	current_position[E_AXIS] -= 45;
-	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 5200 / 60, active_extruder);
+	plan_buffer_line_curposXYZE(5200 / 60, active_extruder);
 	st_synchronize();
 	current_position[E_AXIS] -= 15;
-	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 1000 / 60, active_extruder);
+	plan_buffer_line_curposXYZE(1000 / 60, active_extruder);
 	st_synchronize();
 	current_position[E_AXIS] -= 20;
-	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 1000 / 60, active_extruder);
+	plan_buffer_line_curposXYZE(1000 / 60, active_extruder);
 	st_synchronize();
 
 	lcd_display_message_fullscreen_P(_T(MSG_PULL_OUT_FILAMENT));
@@ -6471,19 +6699,61 @@ static void lcd_test_menu()
 }
 #endif //LCD_TEST
 
+static bool fan_error_selftest()
+{
+#ifdef FANCHECK
+
+    fanSpeed = 255;
+#ifdef FAN_SOFT_PWM
+	fanSpeedSoftPwm = 255;
+#endif //FAN_SOFT_PWM
+    manage_heater(); //enables print fan
+    setExtruderAutoFanState(EXTRUDER_0_AUTO_FAN_PIN, 1); //force enables the extruder fan untill the first manage_heater() call.
+#ifdef FAN_SOFT_PWM
+    extruder_autofan_last_check = _millis();
+    fan_measuring = true;
+#endif //FAN_SOFT_PWM
+    _delay(1000); //delay_keep_alive would turn off extruder fan, because temerature is too low (maybe)
+    manage_heater();
+    fanSpeed = 0;
+#ifdef FAN_SOFT_PWM
+    fanSpeedSoftPwm = 0;
+#endif //FAN_SOFT_PWM
+    manage_heater();
+#ifdef TACH_0
+    if (fan_speed[0] <= 20) { //extruder fan error
+        LCD_ALERTMESSAGERPGM(MSG_FANCHECK_EXTRUDER);
+        return 1;
+    }
+#endif
+#ifdef TACH_1
+    if (fan_speed[1] <= 20) { //print fan error
+        LCD_ALERTMESSAGERPGM(MSG_FANCHECK_PRINT);
+        return 1;
+    }
+#endif
+    return 0;
+
+#endif //FANCHECK   
+}
+
 //! @brief Resume paused print
 //! @todo It is not good to call restore_print_from_ram_and_continue() from function called by lcd_update(),
 //! as restore_print_from_ram_and_continue() calls lcd_update() internally.
 void lcd_resume_print()
 {
     lcd_return_to_status();
-		lcd_reset_alert_level();
+    lcd_reset_alert_level();
     lcd_setstatuspgm(_T(MSG_RESUMING_PRINT));
     lcd_reset_alert_level(); //for fan speed error
+
+    if (fan_error_selftest()) return; //abort if error persists
+
     restore_print_from_ram_and_continue(0.0);
     pause_time += (_millis() - start_pause_print); //accumulate time when print is paused for correct statistics calculation
     refresh_cmd_timeout();
     isPrintPaused = false;
+    SERIAL_PROTOCOLLNRPGM(MSG_OCTOPRINT_RESUMED); //resume octoprint
 }
 
 static void change_sheet()
@@ -6492,40 +6762,7 @@ static void change_sheet()
     menu_back(3);
 }
 
-static void change_sheet_from_menu(){
-	uint8_t next_sheet = eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet))+1;
-	while(true){
-		if(next_sheet > 2) next_sheet = 0;
-		if(is_sheet_initialized(next_sheet)){
-			eeprom_update_byte(&(EEPROM_Sheets_base->active_sheet), next_sheet);
-			selected_sheet = next_sheet;
-			break;
-		}
-		else if (next_sheet == selected_sheet){
-			break;
-		}
-		else{
-			next_sheet++;
-		}
-	}
-	menu_back();
-}
 
-static void lcd_select_sheet_0_menu()
-{
-	selected_sheet = 0;
-	lcd_sheet_menu();
-}
-static void lcd_select_sheet_1_menu()
-{
-	selected_sheet = 1;
-	lcd_sheet_menu();
-}
-static void lcd_select_sheet_2_menu()
-{
-	selected_sheet = 2;
-	lcd_sheet_menu();
-}
 
 static void lcd_rename_sheet_menu()
 {
@@ -6573,37 +6810,44 @@ static void lcd_rename_sheet_menu()
 
 static void lcd_reset_sheet()
 {
-    struct MenuData
-    {
-        bool initialized;
-        uint8_t selected;
-        char name[sizeof(Sheet::name)];
-    };
-    static_assert(sizeof(menu_data)>= sizeof(MenuData),"MenuData doesn't fit into menu_data");
-    MenuData* menuData = (MenuData*)&(menu_data[0]);
-    eeprom_read_block(menuData->name, EEPROM_Sheets_base->s[selected_sheet].name, sizeof(Sheet::name));
-    
-	menuData->initialized = false;
-    strcpy_P(menuData->name, (char *)pgm_read_word(&(defaultSheetNames[selected_sheet])));
+    SheetName sheetName;
+    eeprom_default_sheet_name(selected_sheet, sheetName);
+	eeprom_update_word(reinterpret_cast<uint16_t *>(&(EEPROM_Sheets_base->s[selected_sheet].z_offset)),EEPROM_EMPTY_VALUE16);
+	eeprom_update_block(sheetName.c,EEPROM_Sheets_base->s[selected_sheet].name,sizeof(Sheet::name));
+	if (selected_sheet == eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet)))
+	{
+        eeprom_switch_to_next_sheet();
+        if((-1 == eeprom_next_initialized_sheet(0)) && (CALIBRATION_STATUS_CALIBRATED == calibration_status()))
+        {
+            calibration_status_store(CALIBRATION_STATUS_LIVE_ADJUST);
+        }
+	}
 
+	menu_back();
+}
 
-	eeprom_update_word(reinterpret_cast<uint16_t *>(&(EEPROM_Sheets_base->s[selected_sheet].z_offset)),0xffff);
-	eeprom_update_block(menuData->name,EEPROM_Sheets_base->s[selected_sheet].name,sizeof(Sheet::name));
-	menu_back(2);
+//! @brief Activate selected_sheet and run first layer calibration
+static void activate_calibrate_sheet()
+{
+    eeprom_update_byte(&(EEPROM_Sheets_base->active_sheet), selected_sheet);
+    lcd_first_layer_calibration_reset();
 }
 
 static void lcd_sheet_menu()
 {
     MENU_BEGIN();
-    MENU_ITEM_BACK_P(_T(MSG_HW_SETUP));
+    MENU_ITEM_BACK_P(_i("Steel sheets"));
 
-	if(is_sheet_initialized(selected_sheet)){
+	if(eeprom_is_sheet_initialized(selected_sheet)){
 	    MENU_ITEM_SUBMENU_P(_i("Select"), change_sheet); //// c=18
 	}
 
-    MENU_ITEM_SUBMENU_P(_T(MSG_V2_CALIBRATION), lcd_v2_calibration);
+    if (lcd_commands_type == LcdCommands::Idle)
+    {
+        MENU_ITEM_SUBMENU_P(_T(MSG_V2_CALIBRATION), activate_calibrate_sheet);
+    }
     MENU_ITEM_SUBMENU_P(_i("Rename"), lcd_rename_sheet_menu); //// c=18
-	MENU_ITEM_SUBMENU_P(_i("Reset"), lcd_reset_sheet); //// c=18
+	MENU_ITEM_FUNCTION_P(_i("Reset"), lcd_reset_sheet); //// c=18
 
     MENU_END();
 }
@@ -6645,6 +6889,10 @@ static void lcd_main_menu()
   }
 
 
+#ifdef FANCHECK
+  if((fan_check_error == EFCE_FIXED) && (saved_printing_type == PRINTING_TYPE_USB))
+    MENU_ITEM_SUBMENU_P(_i("Resume print"), lcd_resume_print);////MSG_RESUME_PRINT
+#endif
 
 #ifdef SDSUPPORT
   if (card.cardOK || lcd_commands_type == LcdCommands::Layer1Cal)
@@ -6659,9 +6907,8 @@ static void lcd_main_menu()
 			else
 			{
 				#ifdef FANCHECK
-					checkFanSpeed(); //Check manually to get most recent fan speed status
-					if(fan_check_error == EFCE_OK)
-							MENU_ITEM_SUBMENU_P(_i("Resume print"), lcd_resume_print);////MSG_RESUME_PRINT
+					if((fan_check_error == EFCE_FIXED) || (fan_check_error == EFCE_OK))
+						MENU_ITEM_SUBMENU_P(_i("Resume print"), lcd_resume_print);////MSG_RESUME_PRINT
 				#else
 					MENU_ITEM_SUBMENU_P(_i("Resume print"), lcd_resume_print);////MSG_RESUME_PRINT
 				#endif
@@ -6698,6 +6945,19 @@ static void lcd_main_menu()
   }
 #endif
 
+  if(!isPrintPaused && !IS_SD_PRINTING && !is_usb_printing && (lcd_commands_type != LcdCommands::Layer1Cal))
+  {
+    if (!farm_mode)
+    {
+        const int8_t sheet = eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet));
+        const int8_t nextSheet = eeprom_next_initialized_sheet(sheet);
+        if ((nextSheet >= 0) && (sheet != nextSheet)) // show menu only if we have 2 or more sheets initialized
+        {
+            MENU_ITEM_FUNCTION_E(EEPROM_Sheets_base->s[sheet], eeprom_switch_to_next_sheet);
+        }
+    }
+  }
+
 
   if (IS_SD_PRINTING || is_usb_printing || (lcd_commands_type == LcdCommands::Layer1Cal))
   {
@@ -6714,7 +6974,7 @@ static void lcd_main_menu()
 		MENU_ITEM_SUBMENU_P(_i("Load to nozzle"), mmu_load_to_nozzle_menu);
 //-//          MENU_ITEM_FUNCTION_P(_T(MSG_UNLOAD_FILAMENT), extr_unload);
 //bFilamentFirstRun=true;
-          MENU_ITEM_SUBMENU_P(_T(MSG_UNLOAD_FILAMENT), extr_unload_);
+          MENU_ITEM_SUBMENU_P(_T(MSG_UNLOAD_FILAMENT), mmu_unload_filament);
 		MENU_ITEM_SUBMENU_P(_i("Eject filament"), mmu_fil_eject_menu);
 #ifdef  MMU_HAS_CUTTER
         MENU_ITEM_SUBMENU_P(_i("Cut filament"), mmu_cut_filament_menu);
@@ -6742,11 +7002,6 @@ static void lcd_main_menu()
     if(!isPrintPaused) MENU_ITEM_SUBMENU_P(_T(MSG_MENU_CALIBRATION), lcd_calibration_menu);
 
   }
-
-  if(!isPrintPaused && !IS_SD_PRINTING && !is_usb_printing && (lcd_commands_type != LcdCommands::Layer1Cal))
-  {
-	MENU_ITEM_SUBMENU_SELECT_SHEET_E(EEPROM_Sheets_base->s[eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet))], change_sheet_from_menu);
-  }
   
   if (!is_usb_printing && (lcd_commands_type != LcdCommands::Layer1Cal))
   {
@@ -6850,11 +7105,21 @@ static void lcd_tune_menu()
 
 #ifdef FILAMENT_SENSOR
 	if (FSensorStateMenu == 0) {
-		MENU_ITEM_FUNCTION_P(_T(MSG_FSENSOR_OFF), lcd_fsensor_state_set);
+          if (fsensor_not_responding && (mmu_enabled == false)) {
+               /* Filament sensor not working*/
+               MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR), _T(MSG_NA), lcd_fsensor_state_set);
+          }
+          else {
+               /* Filament sensor turned off, working, no problems*/
+               MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR), _T(MSG_OFF), lcd_fsensor_state_set);
+          }
 	}
 	else {
-		MENU_ITEM_FUNCTION_P(_T(MSG_FSENSOR_ON), lcd_fsensor_state_set);
+		MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR), _T(MSG_ON), lcd_fsensor_state_set);
 	}
+#if IR_SENSOR_ANALOG
+     FSENSOR_ACTION_NA;
+#endif //IR_SENSOR_ANALOG
 #endif //FILAMENT_SENSOR
 
 	SETTINGS_AUTO_DEPLETE;
@@ -6863,54 +7128,34 @@ static void lcd_tune_menu()
 
      if(farm_mode)
      {
-          if (fans_check_enabled == true)
-               MENU_ITEM_FUNCTION_P(_i("Fans check   [on]"), lcd_set_fan_check);////MSG_FANS_CHECK_ON c=17 r=1
-          else
-               MENU_ITEM_FUNCTION_P(_i("Fans check  [off]"), lcd_set_fan_check);////MSG_FANS_CHECK_OFF c=17 r=1
+       MENU_ITEM_TOGGLE_P(_i("Fans check"), fans_check_enabled ? _T(MSG_ON) : _T(MSG_OFF), lcd_set_fan_check);
      }
 
 #ifdef TMC2130
      if(!farm_mode)
      {
-          if (SilentModeMenu == SILENT_MODE_NORMAL) MENU_ITEM_FUNCTION_P(_T(MSG_STEALTH_MODE_OFF), lcd_silent_mode_set);
-          else MENU_ITEM_FUNCTION_P(_T(MSG_STEALTH_MODE_ON), lcd_silent_mode_set);
+          if (SilentModeMenu == SILENT_MODE_NORMAL) MENU_ITEM_TOGGLE_P(_T(MSG_MODE), _T(MSG_NORMAL), lcd_silent_mode_set);
+          else MENU_ITEM_TOGGLE_P(_T(MSG_MODE), _T(MSG_STEALTH), lcd_silent_mode_set);
 
           if (SilentModeMenu == SILENT_MODE_NORMAL)
           {
-               if (CrashDetectMenu == 0) MENU_ITEM_FUNCTION_P(_T(MSG_CRASHDETECT_OFF), lcd_crash_mode_set);
-               else MENU_ITEM_FUNCTION_P(_T(MSG_CRASHDETECT_ON), lcd_crash_mode_set);
+               if (lcd_crash_detect_enabled()) MENU_ITEM_TOGGLE_P(_T(MSG_CRASHDETECT), _T(MSG_ON), crash_mode_switch);
+               else MENU_ITEM_TOGGLE_P(_T(MSG_CRASHDETECT), _T(MSG_OFF), crash_mode_switch);
           }
-          else MENU_ITEM_SUBMENU_P(_T(MSG_CRASHDETECT_NA), lcd_crash_mode_info);
+          else MENU_ITEM_TOGGLE_P(_T(MSG_CRASHDETECT), NULL, lcd_crash_mode_info);
      }
 #else //TMC2130
 	if (!farm_mode) { //dont show in menu if we are in farm mode
 		switch (SilentModeMenu) {
-		case SILENT_MODE_POWER: MENU_ITEM_FUNCTION_P(_T(MSG_SILENT_MODE_OFF), lcd_silent_mode_set); break;
-		case SILENT_MODE_SILENT: MENU_ITEM_FUNCTION_P(_T(MSG_SILENT_MODE_ON), lcd_silent_mode_set); break;
-		case SILENT_MODE_AUTO: MENU_ITEM_FUNCTION_P(_T(MSG_AUTO_MODE_ON), lcd_silent_mode_set); break;
-		default: MENU_ITEM_FUNCTION_P(_T(MSG_SILENT_MODE_OFF), lcd_silent_mode_set); break; // (probably) not needed
+		case SILENT_MODE_POWER: MENU_ITEM_TOGGLE_P(_T(MSG_MODE), _T(MSG_HIGH_POWER), lcd_silent_mode_set); break;
+		case SILENT_MODE_SILENT: MENU_ITEM_TOGGLE_P(_T(MSG_MODE), _T(MSG_SILENT), lcd_silent_mode_set); break;
+		case SILENT_MODE_AUTO: MENU_ITEM_TOGGLE_P(_T(MSG_MODE), _T(MSG_AUTO_POWER), lcd_silent_mode_set); break;
+		default: MENU_ITEM_TOGGLE_P(_T(MSG_MODE), _T(MSG_HIGH_POWER), lcd_silent_mode_set); break; // (probably) not needed
 		}
 	}
 #endif //TMC2130
-	 SETTINGS_MMU_MODE;
-     switch(eSoundMode)
-          {
-          case e_SOUND_MODE_LOUD:
-               MENU_ITEM_FUNCTION_P(_i(MSG_SOUND_MODE_LOUD),lcd_sound_state_set);
-               break;
-          case e_SOUND_MODE_ONCE:
-               MENU_ITEM_FUNCTION_P(_i(MSG_SOUND_MODE_ONCE),lcd_sound_state_set);
-               break;
-          case e_SOUND_MODE_SILENT:
-               MENU_ITEM_FUNCTION_P(_i(MSG_SOUND_MODE_SILENT),lcd_sound_state_set);
-               break;
-          case e_SOUND_MODE_BLIND:
-               MENU_ITEM_FUNCTION_P(_i(MSG_SOUND_MODE_BLIND),lcd_sound_state_set);
-               break;
-          default:
-               MENU_ITEM_FUNCTION_P(_i(MSG_SOUND_MODE_LOUD),lcd_sound_state_set);
-          }
-
+	SETTINGS_MMU_MODE;
+    SETTINGS_SOUND;
 	MENU_END();
 }
 
@@ -6943,21 +7188,19 @@ static void lcd_mesh_bed_leveling_settings()
 	
 	bool magnet_elimination = (eeprom_read_byte((uint8_t*)EEPROM_MBL_MAGNET_ELIMINATION) > 0);
 	uint8_t points_nr = eeprom_read_byte((uint8_t*)EEPROM_MBL_POINTS_NR);
+	char sToggle[4]; //enough for nxn format
 
 	MENU_BEGIN();
-	MENU_ITEM_BACK_P(_T(MSG_SETTINGS)); 
-	if(points_nr == 3) MENU_ITEM_FUNCTION_P(_i("Mesh         [3x3]"), mbl_mesh_toggle); ////MSG_MESH_3x3 c=18
-	else			   MENU_ITEM_FUNCTION_P(_i("Mesh         [7x7]"), mbl_mesh_toggle); ////MSG_MESH_7x7 c=18
-	switch (mbl_z_probe_nr) {
-		case 1: MENU_ITEM_FUNCTION_P(_i("Z-probe nr.    [1]"), mbl_probe_nr_toggle); break; ////MSG_Z_PROBE_NR_1 c=18
-		case 5: MENU_ITEM_FUNCTION_P(_i("Z-probe nr.    [5]"), mbl_probe_nr_toggle); break; ////MSG_Z_PROBE_NR_1 c=18
-		default: MENU_ITEM_FUNCTION_P(_i("Z-probe nr.    [3]"), mbl_probe_nr_toggle); break; ////MSG_Z_PROBE_NR_1 c=18
-	}
-	if (points_nr == 7) {
-		if (magnet_elimination) MENU_ITEM_FUNCTION_P(_i("Magnets comp. [On]"), mbl_magnets_elimination_toggle); ////MSG_MAGNETS_COMP_ON c=18
-		else				    MENU_ITEM_FUNCTION_P(_i("Magnets comp.[Off]"), mbl_magnets_elimination_toggle); ////MSG_MAGNETS_COMP_OFF c=18
-	}
-	else					        menu_item_text_P(_i("Magnets comp.[N/A]")); ////MSG_MAGNETS_COMP_NA c=18
+	MENU_ITEM_BACK_P(_T(MSG_SETTINGS));
+	sToggle[0] = points_nr + '0';
+	sToggle[1] = 'x';
+	sToggle[2] = points_nr + '0';
+	sToggle[3] = 0;
+	MENU_ITEM_TOGGLE(_T(MSG_MESH), sToggle, mbl_mesh_toggle);
+	sToggle[0] = mbl_z_probe_nr + '0';
+	sToggle[1] = 0;
+	MENU_ITEM_TOGGLE(_T(MSG_Z_PROBE_NR), sToggle, mbl_probe_nr_toggle);
+	MENU_ITEM_TOGGLE_P(_T(MSG_MAGNETS_COMP), (points_nr == 7) ? (magnet_elimination ? _T(MSG_ON): _T(MSG_OFF)) : _T(MSG_NA), mbl_magnets_elimination_toggle);
 	MENU_END();
 	//SETTINGS_MBL_MODE;
 }
@@ -7015,9 +7258,10 @@ void lcd_print_stop()
 //-//
      if(!card.sdprinting)
           {
-          SERIAL_ECHOLNPGM("// action:cancel");   // for Octoprint
+          SERIAL_ECHOLNRPGM(MSG_OCTOPRINT_CANCEL);   // for Octoprint
           }
 	saved_printing = false;
+    saved_printing_type = PRINTING_TYPE_NONE;
 	cancel_heatup = true;
 #ifdef MESH_BED_LEVELING
 	mbl.active = false;
@@ -7136,6 +7380,98 @@ void lcd_sdcard_menu()
   }
   MENU_END();
 }
+#ifdef TMC2130
+static void lcd_belttest_v()
+{
+    lcd_belttest();
+    menu_back_if_clicked();
+}
+void lcd_belttest_print(const char* msg, uint16_t X, uint16_t Y)
+{
+    lcd_clear();
+    lcd_printf_P(
+              _N(
+                 "%S:\n"
+                 "%S\n"
+                 "X:%d\n"
+                 "Y:%d"
+                 ),
+              _i("Belt status"),
+              msg,
+              X,Y
+            );
+}
+void lcd_belttest()
+{
+    int _progress = 0;
+    bool _result = true;
+    uint16_t   X = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_X));
+    uint16_t   Y = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_Y));
+    lcd_belttest_print(_i("Checking X..."), X, Y);
+
+    _delay(2000);
+    KEEPALIVE_STATE(IN_HANDLER);
+
+    _result = lcd_selfcheck_axis_sg(X_AXIS);
+    X = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_X));
+    if (!_result){
+        lcd_belttest_print(_i("Error"), X, Y);
+        return;
+    }
+
+    lcd_belttest_print(_i("Checking Y..."), X, Y);
+    _result = lcd_selfcheck_axis_sg(Y_AXIS);
+    Y = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_Y));
+
+    if (!_result){
+        lcd_belttest_print(_i("Error"), X, Y);
+        lcd_clear();
+        return;
+    }
+
+
+    lcd_belttest_print(_i("Done"), X, Y);
+
+    KEEPALIVE_STATE(NOT_BUSY);
+    _delay(3000);
+}
+#endif //TMC2130
+
+#if IR_SENSOR_ANALOG
+static bool lcd_selftest_IRsensor()
+{
+bool bAction;
+bool bPCBrev03b;
+uint16_t volt_IR_int;
+float volt_IR;
+
+volt_IR_int=current_voltage_raw_IR;
+bPCBrev03b=(volt_IR_int<((int)IRsensor_Hopen_TRESHOLD));
+volt_IR=VOLT_DIV_REF*((float)volt_IR_int/(1023*OVERSAMPLENR));
+printf_P(PSTR("Measured filament sensor high level: %4.2fV\n"),volt_IR);
+if(volt_IR_int<((int)IRsensor_Hmin_TRESHOLD))
+     {
+     lcd_selftest_error(TestError::FsensorLevel,"HIGH","");
+     return(false);
+     }
+lcd_show_fullscreen_message_and_wait_P(_i("Please insert filament (but not load them!) into extruder and then press the knob."));
+volt_IR_int=current_voltage_raw_IR;
+volt_IR=VOLT_DIV_REF*((float)volt_IR_int/(1023*OVERSAMPLENR));
+printf_P(PSTR("Measured filament sensor low level: %4.2fV\n"),volt_IR);
+if(volt_IR_int>((int)IRsensor_Lmax_TRESHOLD))
+     {
+     lcd_selftest_error(TestError::FsensorLevel,"LOW","");
+     return(false);
+     }
+if((bPCBrev03b?1:0)!=(uint8_t)oFsensorPCB)        // safer then "(uint8_t)bPCBrev03b"
+     {
+     printf_P(PSTR("Filament sensor board change detected: revision %S\n"),bPCBrev03b?PSTR("03b or newer"):PSTR("03 or older"));
+     oFsensorPCB=bPCBrev03b?ClFsensorPCB::_Rev03b:ClFsensorPCB::_Old;
+     eeprom_update_byte((uint8_t*)EEPROM_FSENSOR_PCB,(uint8_t)oFsensorPCB);
+     }
+return(true);
+}
+#endif //IR_SENSOR_ANALOG
 
 static void lcd_selftest_v()
 {
@@ -7153,8 +7489,16 @@ bool lcd_selftest()
 	#ifdef TMC2130
 	  FORCE_HIGH_POWER_START;
 	#endif // TMC2130
-	_delay(2000);
+#if !IR_SENSOR_ANALOG
+     _delay(2000);
+#endif //!IR_SENSOR_ANALOG
 	KEEPALIVE_STATE(IN_HANDLER);
+#if IR_SENSOR_ANALOG
+     bool bAction;
+     bAction=lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Is filament unloaded?"),false,true);
+     if(!bAction)
+          return(false);
+#endif //IR_SENSOR_ANALOG
 
 	_progress = lcd_selftest_screen(TestScreen::ExtruderFan, _progress, 3, true, 2000);
 #if (defined(FANCHECK) && defined(TACH_0))
@@ -7282,7 +7626,7 @@ bool lcd_selftest()
 		//homeaxis(X_AXIS);
 		//homeaxis(Y_AXIS);
 		current_position[Z_AXIS] = current_position[Z_AXIS] + 10;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
+		plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
 		st_synchronize();
 		_progress = lcd_selftest_screen(TestScreen::AxisZ, _progress, 3, true, 1500);
 		_result = lcd_selfcheck_axis(2, Z_MAX_POS);
@@ -7296,7 +7640,7 @@ bool lcd_selftest()
 	if (_result)
 	{
 		current_position[Z_AXIS] = current_position[Z_AXIS] + 10;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
+		plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
 		st_synchronize();
 		_progress = lcd_selftest_screen(TestScreen::Home, 0, 2, true, 0);
 		bool bres = tmc2130_home_calibrate(X_AXIS);
@@ -7340,12 +7684,20 @@ bool lcd_selftest()
         {
 #ifdef PAT9125
 			_progress = lcd_selftest_screen(TestScreen::Fsensor, _progress, 3, true, 2000); //check filaments sensor
-            _result = lcd_selftest_fsensor();
+               _result = lcd_selftest_fsensor();
 			if (_result)
 			{
 				_progress = lcd_selftest_screen(TestScreen::FsensorOk, _progress, 3, true, 2000); //fil sensor OK
 			}
 #endif //PAT9125
+#if IR_SENSOR_ANALOG
+			_progress = lcd_selftest_screen(TestScreen::Fsensor, _progress, 3, true, 2000); //check filament sensor
+               _result = lcd_selftest_IRsensor();
+			if (_result)
+			{
+				_progress = lcd_selftest_screen(TestScreen::FsensorOk, _progress, 3, true, 2000); //filament sensor OK
+			}
+#endif //IR_SENSOR_ANALOG
         }
     }
 #endif //FILAMENT_SENSOR
@@ -7380,7 +7732,7 @@ bool lcd_selftest()
 
 static void reset_crash_det(unsigned char axis) {
 	current_position[axis] += 10;
-	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
+	plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
 	st_synchronize();
 	if (eeprom_read_byte((uint8_t*)EEPROM_CRASH_DET)) tmc2130_sg_stop_on_crash = true;
 }
@@ -7404,7 +7756,7 @@ static bool lcd_selfcheck_axis_sg(unsigned char axis) {
 	if (axis == X_AXIS) { //there is collision between cables and PSU cover in X axis if Z coordinate is too low
 		
 		current_position[Z_AXIS] += 17;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
+		plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
 		tmc2130_home_enter(Z_AXIS_MASK);
 		st_synchronize();
 		tmc2130_home_exit();
@@ -7413,7 +7765,7 @@ static bool lcd_selfcheck_axis_sg(unsigned char axis) {
 // first axis length measurement begin	
 	
 	current_position[axis] -= (axis_length + margin);
-	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
+	plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
 
 	
 	st_synchronize();
@@ -7423,11 +7775,11 @@ static bool lcd_selfcheck_axis_sg(unsigned char axis) {
 	current_position_init = st_get_position_mm(axis);
 
 	current_position[axis] += 2 * margin;
-	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
+	plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
 	st_synchronize();
 
 	current_position[axis] += axis_length;
-	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
+	plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
 
 	st_synchronize();
 
@@ -7443,11 +7795,11 @@ static bool lcd_selfcheck_axis_sg(unsigned char axis) {
 
 
 	current_position[axis] -= margin;
-	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
+	plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
 	st_synchronize();	
 
 	current_position[axis] -= (axis_length + margin);
-	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
+	plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
 		
 	st_synchronize();
 
@@ -7516,13 +7868,13 @@ static bool lcd_selfcheck_axis(int _axis, int _travel)
 
 	if (_axis == X_AXIS) {
 		current_position[Z_AXIS] += 17;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
+		plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
 	}
 
 	do {
 		current_position[_axis] = current_position[_axis] - 1;
 
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
+		plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
 		st_synchronize();
 #ifdef TMC2130
 		if ((READ(Z_MIN_PIN) ^ (bool)Z_MIN_ENDSTOP_INVERTING))
@@ -7576,7 +7928,7 @@ static bool lcd_selfcheck_axis(int _axis, int _travel)
 
 
 	//current_position[_axis] = current_position[_axis] + 15;
-	//plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
+	//plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
 
 	if (!_stepresult)
 	{
@@ -7624,17 +7976,17 @@ static bool lcd_selfcheck_pulleys(int axis)
 	current_position_init = current_position[axis];
 
 	current_position[axis] += 2;
-	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
+	plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
 	for (i = 0; i < 5; i++) {
 		refresh_cmd_timeout();
 		current_position[axis] = current_position[axis] + move;
 		st_current_set(0, 850); //set motor current higher
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], 200, active_extruder);
+		plan_buffer_line_curposXYZE(200, active_extruder);
 		st_synchronize();
           if (SilentModeMenu != SILENT_MODE_OFF) st_current_set(0, tmp_motor[0]); //set back to normal operation currents
 		else st_current_set(0, tmp_motor_loud[0]); //set motor current back			
 		current_position[axis] = current_position[axis] - move;
-		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], 50, active_extruder);
+		plan_buffer_line_curposXYZE(50, active_extruder);
 		st_synchronize();
 		if (((READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING) == 1) ||
 			((READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING) == 1)) {
@@ -7651,7 +8003,7 @@ static bool lcd_selfcheck_pulleys(int axis)
 			endstop_triggered = true;
 			if (current_position_init - 1 <= current_position[axis] && current_position_init + 1 >= current_position[axis]) {
 				current_position[axis] += (axis == X_AXIS) ? 13 : 9;
-				plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
+				plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
 				st_synchronize();
 				return(true);
 			}
@@ -7662,7 +8014,7 @@ static bool lcd_selfcheck_pulleys(int axis)
 		}
 		else {
 			current_position[axis] -= 1;
-			plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
+			plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
 			st_synchronize();
 			if (_millis() > timeout_counter) {
 				lcd_selftest_error(TestError::Pulley, (axis == 0) ? "X" : "Y", "");
@@ -7686,7 +8038,7 @@ static bool lcd_selfcheck_endstops()
 		if ((READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING) == 1) current_position[1] += 10;
 		if ((READ(Z_MIN_PIN) ^ Z_MIN_ENDSTOP_INVERTING) == 1) current_position[2] += 10;
 	}
-	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], manual_feedrate[0] / 60, active_extruder);
+	plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
 	_delay(500);
 
 	if (((READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING) == 1) ||
@@ -7881,11 +8233,17 @@ static void lcd_selftest_error(TestError testError, const char *_error_1, const
 		lcd_puts_P(_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
-        break;
+          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
+          break;
+	case TestError::FsensorLevel:
+          lcd_set_cursor(0, 2);
+          lcd_puts_P(_T(MSG_SELFTEST_FILAMENT_SENSOR));
+          lcd_set_cursor(0, 3);
+          lcd_printf_P(_i("%s level expected"),_error_1);////c=20
+          break;
 	}
 
 	_delay(1000);
@@ -8520,11 +8878,52 @@ uint8_t get_message_level()
 	return lcd_status_message_level;
 }
 
-
 void menu_lcd_longpress_func(void)
 {
-	move_menu_scale = 1.0;
-	menu_submenu(lcd_move_z);
+    if (homing_flag || mesh_bed_leveling_flag || menu_menu == lcd_babystep_z || menu_menu == lcd_move_z)
+    {
+        // disable longpress during re-entry, while homing or calibration
+        lcd_quick_feedback();
+        return;
+    }
+
+    // explicitely listed menus which are allowed to rise the move-z or live-adj-z functions
+    // The lists are not the same for both functions, so first decide which function is to be performed
+    if ( (moves_planned() || IS_SD_PRINTING || is_usb_printing )){ // long press as live-adj-z
+        if(( current_position[Z_AXIS] < Z_HEIGHT_HIDE_LIVE_ADJUST_MENU ) // only allow live-adj-z up to 2mm of print height
+        && ( menu_menu == lcd_status_screen // and in listed menus...
+          || menu_menu == lcd_main_menu
+          || menu_menu == lcd_tune_menu
+          || menu_menu == lcd_support_menu
+           )
+        ){
+            lcd_clear();
+            menu_submenu(lcd_babystep_z);
+        } else {
+            // otherwise consume the long press as normal click
+            if( menu_menu != lcd_status_screen )
+                menu_back();
+        }
+    } else { // long press as move-z
+        if(menu_menu == lcd_status_screen
+        || menu_menu == lcd_main_menu
+        || menu_menu == lcd_preheat_menu
+        || menu_menu == lcd_sdcard_menu
+        || menu_menu == lcd_settings_menu
+        || menu_menu == lcd_control_temperature_menu
+#if (LANG_MODE != 0)
+        || menu_menu == lcd_language
+#endif
+        || menu_menu == lcd_support_menu
+        ){
+            move_menu_scale = 1.0;
+            menu_submenu(lcd_move_z);
+        } else {
+            // otherwise consume the long press as normal click
+            if( menu_menu != lcd_status_screen )
+                menu_back();
+        }
+    }
 }
 
 void menu_lcd_charsetup_func(void)
@@ -8619,3 +9018,27 @@ void menu_lcd_lcdupdate_func(void)
 	lcd_send_status();
 	if (lcd_commands_type == LcdCommands::Layer1Cal) lcd_commands();
 }
+
+#ifdef TMC2130
+//! @brief Is crash detection enabled?
+//!
+//! @retval true crash detection enabled
+//! @retval false crash detection disabled
+bool lcd_crash_detect_enabled()
+{
+    return eeprom_read_byte((uint8_t*)EEPROM_CRASH_DET);
+}
+
+void lcd_crash_detect_enable()
+{
+    tmc2130_sg_stop_on_crash = true;
+    eeprom_update_byte((uint8_t*)EEPROM_CRASH_DET, 0xFF);
+}
+
+void lcd_crash_detect_disable()
+{
+    tmc2130_sg_stop_on_crash = false;
+    tmc2130_sg_crash = 0;
+    eeprom_update_byte((uint8_t*)EEPROM_CRASH_DET, 0x00);
+}
+#endif

+ 28 - 7
Firmware/ultralcd.h

@@ -7,6 +7,8 @@
 #include "menu.h"
 #include "mesh_bed_calibration.h"
 
+#include "config.h"
+
 extern void menu_lcd_longpress_func(void);
 extern void menu_lcd_charsetup_func(void);
 extern void menu_lcd_lcdupdate_func(void);
@@ -47,12 +49,18 @@ unsigned char lcd_choose_color();
 void lcd_load_filament_color_check();
 //void lcd_mylang();
 
+extern void lcd_belttest();
 extern bool lcd_selftest();
 
 void lcd_menu_statistics(); 
 
 void lcd_menu_extruder_info();                    // NOT static due to using inside "Marlin_main" module ("manage_inactivity()")
 void lcd_menu_show_sensors_state();               // NOT static due to using inside "Marlin_main" module ("manage_inactivity()")
+#ifdef TMC2130
+bool lcd_crash_detect_enabled();
+void lcd_crash_detect_enable();
+void lcd_crash_detect_disable();
+#endif
 
 extern const char* lcd_display_message_fullscreen_P(const char *msg, uint8_t &nlines);
 extern const char* lcd_display_message_fullscreen_P(const char *msg);
@@ -162,6 +170,8 @@ enum class FilamentAction : uint_least8_t
     MmuUnLoad,
     MmuEject,
     MmuCut,
+    Preheat,
+    Lay1Cal,
 };
 
 extern FilamentAction eFilamentAction;
@@ -170,7 +180,7 @@ extern bool bFilamentPreheatState;
 extern bool bFilamentAction;
 void mFilamentItem(uint16_t nTemp,uint16_t nTempBed);
 void mFilamentItemForce();
-void mFilamentMenu();
+void lcd_generic_preheat_menu();
 void unload_filament();
 
 void stack_error();
@@ -190,7 +200,9 @@ void lcd_wait_for_cool_down();
 void lcd_extr_cal_reset();
 
 void lcd_temp_cal_show_result(bool result);
+#ifdef PINDA_THERMISTOR
 bool lcd_wait_for_pinda(float temp);
+#endif //PINDA_THERMISTOR
 
 
 void bowden_menu();
@@ -216,22 +228,31 @@ bool lcd_autoDepleteEnabled();
 //! @brief Wizard state
 enum class WizState : uint8_t
 {
-    Run,            //!< run wizard? Entry point.
+    Run,            //!< run wizard? Main entry point.
     Restore,        //!< restore calibration status
-    Selftest,
+    Selftest,       //!< self test
     Xyz,            //!< xyz calibration
     Z,              //!< z calibration
-    IsFil,          //!< Is filament loaded? Entry point for 1st layer calibration
+    IsFil,          //!< Is filament loaded? First step of 1st layer calibration
     PreheatPla,     //!< waiting for preheat nozzle for PLA
     Preheat,        //!< Preheat for any material
-    Unload,         //!< Unload filament
-    LoadFil,        //!< Load filament
+    LoadFilCold,    //!< Load filament for MMU
+    LoadFilHot,     //!< Load filament without MMU
     IsPla,          //!< Is PLA filament?
-    Lay1Cal,        //!< First layer calibration
+    Lay1CalCold,    //!< First layer calibration, temperature not selected yet
+    Lay1CalHot,     //!< First layer calibration, temperature already selected
     RepeatLay1Cal,  //!< Repeat first layer calibration?
     Finish,         //!< Deactivate wizard
 };
 
 void lcd_wizard(WizState state);
 
+#define VOLT_DIV_REF 5
+#if IR_SENSOR_ANALOG
+#define IRsensor_Hmin_TRESHOLD (3.0*1023*OVERSAMPLENR/VOLT_DIV_REF) // ~3.0V (0.6*Vcc)
+#define IRsensor_Lmax_TRESHOLD (1.5*1023*OVERSAMPLENR/VOLT_DIV_REF) // ~1.5V (0.3*Vcc)
+#define IRsensor_Hopen_TRESHOLD (4.6*1023*OVERSAMPLENR/VOLT_DIV_REF) // ~4.6V (N.C. @ Ru~20-50k, Rd'=56k, Ru'=10k)
+#define IRsensor_Ldiode_TRESHOLD (0.3*1023*OVERSAMPLENR/VOLT_DIV_REF) // ~0.3V
+#endif //IR_SENSOR_ANALOG
+
 #endif //ULTRALCD_H

+ 19 - 12
Firmware/util.cpp

@@ -27,7 +27,7 @@ const char STR_REVISION_RC   [] PROGMEM = "rc";
 
 inline bool is_whitespace_or_nl(char c)
 {
-    return c == ' ' || c == '\t' || c == '\n' || c == 'r';
+    return c == ' ' || c == '\t' || c == '\n' || c == '\r';
 }
 
 inline bool is_whitespace_or_nl_or_eol(char c)
@@ -341,13 +341,17 @@ if(oCheckMode==ClCheckMode::_Undef)
      eeprom_update_byte((uint8_t*)EEPROM_CHECK_MODE,(uint8_t)oCheckMode);
      }
 if(farm_mode)
+     {
      oCheckMode=ClCheckMode::_Strict;
+     if(eeprom_read_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM)==EEPROM_EMPTY_VALUE16)
+          eeprom_update_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM,EEPROM_NOZZLE_DIAMETER_uM_DEFAULT);
+     }
 oNozzleDiameter=(ClNozzleDiameter)eeprom_read_byte((uint8_t*)EEPROM_NOZZLE_DIAMETER);
 if((oNozzleDiameter==ClNozzleDiameter::_Diameter_Undef)&& !farm_mode)
      {
      oNozzleDiameter=ClNozzleDiameter::_Diameter_400;
      eeprom_update_byte((uint8_t*)EEPROM_NOZZLE_DIAMETER,(uint8_t)oNozzleDiameter);
-     eeprom_update_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM,400);
+     eeprom_update_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM,EEPROM_NOZZLE_DIAMETER_uM_DEFAULT);
      }
 oCheckModel=(ClCheckModel)eeprom_read_byte((uint8_t*)EEPROM_CHECK_MODEL);
 if(oCheckModel==ClCheckModel::_Undef)
@@ -401,8 +405,11 @@ lcd_update_enable(true);           // display / status-line recovery
      case ClCheckMode::_Undef:
           break;
      }
-bSettings=false;                                  // flag ('fake parameter') for 'lcd_hw_setup_menu()' function
-menu_submenu(lcd_hw_setup_menu);
+if(!farm_mode)
+     {
+     bSettings=false;                             // flag ('fake parameter') for 'lcd_hw_setup_menu()' function
+     menu_submenu(lcd_hw_setup_menu);
+     }
 }
 
 void printer_model_check(uint16_t nPrinterModel)
@@ -421,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("Printer model differs from the G-code. Continue?"));
+lcd_display_message_fullscreen_P(_i("G-code sliced for a different printer type. 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("Printer model differs from the G-code. Please check the value in settings. Print cancelled."));
+          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_print_stop();
           break;
      case ClCheckModel::_None:
@@ -471,13 +478,13 @@ switch(oCheckVersion)
      {
      case ClCheckVersion::_Warn:
 //          lcd_show_fullscreen_message_and_wait_P(_i("Printer FW version differs from the G-code. Continue?"));
-lcd_display_message_fullscreen_P(_i("Printer FW version differs from the G-code. Continue?"));
+lcd_display_message_fullscreen_P(_i("G-code sliced for a newer firmware. 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 ClCheckVersion::_Strict:
-          lcd_show_fullscreen_message_and_wait_P(_i("Printer FW version differs from the G-code. Please check the value in settings. Print cancelled."));
+          lcd_show_fullscreen_message_and_wait_P(_i("G-code sliced for a newer firmware. Please update the firmware. Print cancelled."));
           lcd_print_stop();
           break;
      case ClCheckVersion::_None:
@@ -504,13 +511,13 @@ switch(oCheckGcode)
      {
      case ClCheckGcode::_Warn:
 //          lcd_show_fullscreen_message_and_wait_P(_i("Printer G-code level differs from the G-code. Continue?"));
-lcd_display_message_fullscreen_P(_i("Printer G-code level differs from the G-code. Continue?"));
+lcd_display_message_fullscreen_P(_i("G-code sliced for a different level. 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 ClCheckGcode::_Strict:
-          lcd_show_fullscreen_message_and_wait_P(_i("Printer G-code level differs from the G-code. Please check the value in settings. Print cancelled."));
+          lcd_show_fullscreen_message_and_wait_P(_i("G-code sliced for a different level. Please re-slice the model again. Print cancelled."));
           lcd_print_stop();
           break;
      case ClCheckGcode::_None:
@@ -570,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("Printer model differs from the G-code. Continue?"));
+lcd_display_message_fullscreen_P(_i("G-code sliced for a different printer type. 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("Printer model differs from the G-code. Please check the value in settings. Print cancelled."));
+          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_print_stop();
           break;
      case ClCheckModel::_None:

+ 2 - 0
Firmware/util.h

@@ -35,6 +35,8 @@ inline void eeprom_update_int8(unsigned char* addr, int8_t v) {
 
 
 //-//
+#define EEPROM_NOZZLE_DIAMETER_uM_DEFAULT 400
+
 enum class ClPrintChecking:uint_least8_t
 {
     _Nozzle=1,

+ 6 - 2
Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h

@@ -257,7 +257,7 @@ BED SETTINGS
 #define BED_ADJUSTMENT_UM_MAX 100
 
 #define MESH_HOME_Z_CALIB 0.2
-#define MESH_HOME_Z_SEARCH 5 //Z lift for homing, mesh bed leveling etc.
+#define MESH_HOME_Z_SEARCH 5.0f           // Z lift for homing, mesh bed leveling etc.
 
 #define X_PROBE_OFFSET_FROM_EXTRUDER 23     // Z probe to nozzle X offset: -left  +right
 #define Y_PROBE_OFFSET_FROM_EXTRUDER 9     // Z probe to nozzle Y offset: -front +behind
@@ -324,7 +324,11 @@ PREHEAT SETTINGS
 
 #define PLA_PREHEAT_HOTEND_TEMP 215
 #define PLA_PREHEAT_HPB_TEMP 55
-#define PLA_PREHEAT_FAN_SPEED 0  
+#define PLA_PREHEAT_FAN_SPEED 0
+
+#define ASA_PREHEAT_HOTEND_TEMP 260
+#define ASA_PREHEAT_HPB_TEMP 105
+#define ASA_PREHEAT_FAN_SPEED 0
 
 #define ABS_PREHEAT_HOTEND_TEMP 255
 #define ABS_PREHEAT_HPB_TEMP 100

+ 4 - 8
Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h

@@ -256,7 +256,7 @@ BED SETTINGS
 #define BED_ADJUSTMENT_UM_MAX 100
 
 #define MESH_HOME_Z_CALIB 0.2
-#define MESH_HOME_Z_SEARCH 5 //Z lift for homing, mesh bed leveling etc.
+#define MESH_HOME_Z_SEARCH 5.0f           // Z lift for homing, mesh bed leveling etc.
 
 #define X_PROBE_OFFSET_FROM_EXTRUDER 23     // Z probe to nozzle X offset: -left  +right
 #define Y_PROBE_OFFSET_FROM_EXTRUDER 9     // Z probe to nozzle Y offset: -front +behind
@@ -319,31 +319,27 @@ PREHEAT SETTINGS
 
 #define FARM_PREHEAT_HOTEND_TEMP 250
 #define FARM_PREHEAT_HPB_TEMP 80
-#define FARM_PREHEAT_FAN_SPEED 0
 
 #define PLA_PREHEAT_HOTEND_TEMP 215
 #define PLA_PREHEAT_HPB_TEMP 55
-#define PLA_PREHEAT_FAN_SPEED 0  
+
+#define ASA_PREHEAT_HOTEND_TEMP 260
+#define ASA_PREHEAT_HPB_TEMP 105
 
 #define ABS_PREHEAT_HOTEND_TEMP 255
 #define ABS_PREHEAT_HPB_TEMP 100
-#define ABS_PREHEAT_FAN_SPEED 0 
 
 #define HIPS_PREHEAT_HOTEND_TEMP 220
 #define HIPS_PREHEAT_HPB_TEMP 100
-#define HIPS_PREHEAT_FAN_SPEED 0 
 
 #define PP_PREHEAT_HOTEND_TEMP 254
 #define PP_PREHEAT_HPB_TEMP 100
-#define PP_PREHEAT_FAN_SPEED 0 
 
 #define PET_PREHEAT_HOTEND_TEMP 240
 #define PET_PREHEAT_HPB_TEMP 90
-#define PET_PREHEAT_FAN_SPEED 0 
 
 #define FLEX_PREHEAT_HOTEND_TEMP 230
 #define FLEX_PREHEAT_HPB_TEMP 50
-#define FLEX_PREHEAT_FAN_SPEED 0 
 
 /*------------------------------------
 THERMISTORS SETTINGS

+ 4 - 8
Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h

@@ -314,7 +314,7 @@
 #define BED_ADJUSTMENT_UM_MAX 100
 
 #define MESH_HOME_Z_CALIB 0.2
-#define MESH_HOME_Z_SEARCH 5 //Z lift for homing, mesh bed leveling etc.
+#define MESH_HOME_Z_SEARCH 5.0f           // Z lift for homing, mesh bed leveling etc.
 
 #define X_PROBE_OFFSET_FROM_EXTRUDER 23     // Z probe to nozzle X offset: -left  +right
 #define Y_PROBE_OFFSET_FROM_EXTRUDER 5     // Z probe to nozzle Y offset: -front +behind
@@ -377,31 +377,27 @@
 
 #define FARM_PREHEAT_HOTEND_TEMP 250
 #define FARM_PREHEAT_HPB_TEMP 80
-#define FARM_PREHEAT_FAN_SPEED 0
 
 #define PLA_PREHEAT_HOTEND_TEMP 215
 #define PLA_PREHEAT_HPB_TEMP 60
-#define PLA_PREHEAT_FAN_SPEED 0
+
+#define ASA_PREHEAT_HOTEND_TEMP 260
+#define ASA_PREHEAT_HPB_TEMP 105
 
 #define ABS_PREHEAT_HOTEND_TEMP 255
 #define ABS_PREHEAT_HPB_TEMP 100
-#define ABS_PREHEAT_FAN_SPEED 0
 
 #define HIPS_PREHEAT_HOTEND_TEMP 220
 #define HIPS_PREHEAT_HPB_TEMP 100
-#define HIPS_PREHEAT_FAN_SPEED 0
 
 #define PP_PREHEAT_HOTEND_TEMP 254
 #define PP_PREHEAT_HPB_TEMP 100
-#define PP_PREHEAT_FAN_SPEED 0
 
 #define PET_PREHEAT_HOTEND_TEMP 230
 #define PET_PREHEAT_HPB_TEMP 85
-#define PET_PREHEAT_FAN_SPEED 0
 
 #define FLEX_PREHEAT_HOTEND_TEMP 240
 #define FLEX_PREHEAT_HPB_TEMP 50
-#define FLEX_PREHEAT_FAN_SPEED 0
 
 /*------------------------------------
  THERMISTORS SETTINGS

+ 4 - 8
Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h

@@ -315,7 +315,7 @@
 #define BED_ADJUSTMENT_UM_MAX 100
 
 #define MESH_HOME_Z_CALIB 0.2
-#define MESH_HOME_Z_SEARCH 5 //Z lift for homing, mesh bed leveling etc.
+#define MESH_HOME_Z_SEARCH 5.0f           // Z lift for homing, mesh bed leveling etc.
 
 #define X_PROBE_OFFSET_FROM_EXTRUDER 23     // Z probe to nozzle X offset: -left  +right
 #define Y_PROBE_OFFSET_FROM_EXTRUDER 5     // Z probe to nozzle Y offset: -front +behind
@@ -378,31 +378,27 @@
 
 #define FARM_PREHEAT_HOTEND_TEMP 250
 #define FARM_PREHEAT_HPB_TEMP 80
-#define FARM_PREHEAT_FAN_SPEED 0
 
 #define PLA_PREHEAT_HOTEND_TEMP 215
 #define PLA_PREHEAT_HPB_TEMP 60
-#define PLA_PREHEAT_FAN_SPEED 0
+
+#define ASA_PREHEAT_HOTEND_TEMP 260
+#define ASA_PREHEAT_HPB_TEMP 105
 
 #define ABS_PREHEAT_HOTEND_TEMP 255
 #define ABS_PREHEAT_HPB_TEMP 100
-#define ABS_PREHEAT_FAN_SPEED 0
 
 #define HIPS_PREHEAT_HOTEND_TEMP 220
 #define HIPS_PREHEAT_HPB_TEMP 100
-#define HIPS_PREHEAT_FAN_SPEED 0
 
 #define PP_PREHEAT_HOTEND_TEMP 254
 #define PP_PREHEAT_HPB_TEMP 100
-#define PP_PREHEAT_FAN_SPEED 0
 
 #define PET_PREHEAT_HOTEND_TEMP 230
 #define PET_PREHEAT_HPB_TEMP 85
-#define PET_PREHEAT_FAN_SPEED 0
 
 #define FLEX_PREHEAT_HOTEND_TEMP 240
 #define FLEX_PREHEAT_HPB_TEMP 50
-#define FLEX_PREHEAT_FAN_SPEED 0
 
 /*------------------------------------
  THERMISTORS SETTINGS

+ 4 - 8
Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h

@@ -314,7 +314,7 @@
 #define BED_ADJUSTMENT_UM_MAX 100
 
 #define MESH_HOME_Z_CALIB 0.2
-#define MESH_HOME_Z_SEARCH 5 //Z lift for homing, mesh bed leveling etc.
+#define MESH_HOME_Z_SEARCH 5.0f           // Z lift for homing, mesh bed leveling etc.
 
 #define X_PROBE_OFFSET_FROM_EXTRUDER 23     // Z probe to nozzle X offset: -left  +right
 #define Y_PROBE_OFFSET_FROM_EXTRUDER 5     // Z probe to nozzle Y offset: -front +behind
@@ -377,31 +377,27 @@
 
 #define FARM_PREHEAT_HOTEND_TEMP 250
 #define FARM_PREHEAT_HPB_TEMP 80
-#define FARM_PREHEAT_FAN_SPEED 0
 
 #define PLA_PREHEAT_HOTEND_TEMP 215
 #define PLA_PREHEAT_HPB_TEMP 60
-#define PLA_PREHEAT_FAN_SPEED 0
+
+#define ASA_PREHEAT_HOTEND_TEMP 260
+#define ASA_PREHEAT_HPB_TEMP 105
 
 #define ABS_PREHEAT_HOTEND_TEMP 255
 #define ABS_PREHEAT_HPB_TEMP 100
-#define ABS_PREHEAT_FAN_SPEED 0
 
 #define HIPS_PREHEAT_HOTEND_TEMP 220
 #define HIPS_PREHEAT_HPB_TEMP 100
-#define HIPS_PREHEAT_FAN_SPEED 0
 
 #define PP_PREHEAT_HOTEND_TEMP 254
 #define PP_PREHEAT_HPB_TEMP 100
-#define PP_PREHEAT_FAN_SPEED 0
 
 #define PET_PREHEAT_HOTEND_TEMP 230
 #define PET_PREHEAT_HPB_TEMP 85
-#define PET_PREHEAT_FAN_SPEED 0
 
 #define FLEX_PREHEAT_HOTEND_TEMP 240
 #define FLEX_PREHEAT_HPB_TEMP 50
-#define FLEX_PREHEAT_FAN_SPEED 0
 
 /*------------------------------------
  THERMISTORS SETTINGS

+ 4 - 8
Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h

@@ -315,7 +315,7 @@
 #define BED_ADJUSTMENT_UM_MAX 100
 
 #define MESH_HOME_Z_CALIB 0.2
-#define MESH_HOME_Z_SEARCH 5 //Z lift for homing, mesh bed leveling etc.
+#define MESH_HOME_Z_SEARCH 5.0f           // Z lift for homing, mesh bed leveling etc.
 
 #define X_PROBE_OFFSET_FROM_EXTRUDER 23     // Z probe to nozzle X offset: -left  +right
 #define Y_PROBE_OFFSET_FROM_EXTRUDER 5     // Z probe to nozzle Y offset: -front +behind
@@ -378,31 +378,27 @@
 
 #define FARM_PREHEAT_HOTEND_TEMP 250
 #define FARM_PREHEAT_HPB_TEMP 80
-#define FARM_PREHEAT_FAN_SPEED 0
 
 #define PLA_PREHEAT_HOTEND_TEMP 215
 #define PLA_PREHEAT_HPB_TEMP 60
-#define PLA_PREHEAT_FAN_SPEED 0
+
+#define ASA_PREHEAT_HOTEND_TEMP 260
+#define ASA_PREHEAT_HPB_TEMP 105
 
 #define ABS_PREHEAT_HOTEND_TEMP 255
 #define ABS_PREHEAT_HPB_TEMP 100
-#define ABS_PREHEAT_FAN_SPEED 0
 
 #define HIPS_PREHEAT_HOTEND_TEMP 220
 #define HIPS_PREHEAT_HPB_TEMP 100
-#define HIPS_PREHEAT_FAN_SPEED 0
 
 #define PP_PREHEAT_HOTEND_TEMP 254
 #define PP_PREHEAT_HPB_TEMP 100
-#define PP_PREHEAT_FAN_SPEED 0
 
 #define PET_PREHEAT_HOTEND_TEMP 230
 #define PET_PREHEAT_HPB_TEMP 85
-#define PET_PREHEAT_FAN_SPEED 0
 
 #define FLEX_PREHEAT_HOTEND_TEMP 240
 #define FLEX_PREHEAT_HPB_TEMP 50
-#define FLEX_PREHEAT_FAN_SPEED 0
 
 /*------------------------------------
  THERMISTORS SETTINGS

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

@@ -260,11 +260,13 @@
 #define TMC2130_SG_THRS_Y       3     // stallguard sensitivity for Y axis
 #define TMC2130_SG_THRS_Z       4     // stallguard sensitivity for Z axis
 #define TMC2130_SG_THRS_E       3     // stallguard sensitivity for E axis
+#define TMC2130_SG_THRS_HOME {3, 3, TMC2130_SG_THRS_Z, TMC2130_SG_THRS_E}
 
 //new settings is possible for vsense = 1, running current value > 31 set vsense to zero and shift both currents by 1 bit right (Z axis only)
 #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_UNLOAD_CURRENT_R 12			 // lowe current for M600 to protect filament sensor 
+#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
 
@@ -422,7 +424,7 @@
 #define BED_ADJUSTMENT_UM_MAX 100
 
 #define MESH_HOME_Z_CALIB 0.2
-#define MESH_HOME_Z_SEARCH 5 //Z lift for homing, mesh bed leveling etc.
+#define MESH_HOME_Z_SEARCH 5.0f           // Z lift for homing, mesh bed leveling etc.
 
 #define X_PROBE_OFFSET_FROM_EXTRUDER 23     // Z probe to nozzle X offset: -left  +right
 #define Y_PROBE_OFFSET_FROM_EXTRUDER 5     // Z probe to nozzle Y offset: -front +behind
@@ -487,31 +489,27 @@
 
 #define FARM_PREHEAT_HOTEND_TEMP 250
 #define FARM_PREHEAT_HPB_TEMP 80
-#define FARM_PREHEAT_FAN_SPEED 0
 
 #define PLA_PREHEAT_HOTEND_TEMP 215
 #define PLA_PREHEAT_HPB_TEMP 60
-#define PLA_PREHEAT_FAN_SPEED 0
+
+#define ASA_PREHEAT_HOTEND_TEMP 260
+#define ASA_PREHEAT_HPB_TEMP 105
 
 #define ABS_PREHEAT_HOTEND_TEMP 255
 #define ABS_PREHEAT_HPB_TEMP 100
-#define ABS_PREHEAT_FAN_SPEED 0
 
 #define HIPS_PREHEAT_HOTEND_TEMP 220
 #define HIPS_PREHEAT_HPB_TEMP 100
-#define HIPS_PREHEAT_FAN_SPEED 0
 
 #define PP_PREHEAT_HOTEND_TEMP 254
 #define PP_PREHEAT_HPB_TEMP 100
-#define PP_PREHEAT_FAN_SPEED 0
 
 #define PET_PREHEAT_HOTEND_TEMP 230
 #define PET_PREHEAT_HPB_TEMP 85
-#define PET_PREHEAT_FAN_SPEED 0
 
 #define FLEX_PREHEAT_HOTEND_TEMP 240
 #define FLEX_PREHEAT_HPB_TEMP 50
-#define FLEX_PREHEAT_FAN_SPEED 0
 
 /*------------------------------------
  THERMISTORS SETTINGS

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

@@ -262,11 +262,13 @@
 #define TMC2130_SG_THRS_Y       3     // stallguard sensitivity for Y axis
 #define TMC2130_SG_THRS_Z       4     // stallguard sensitivity for Z axis
 #define TMC2130_SG_THRS_E       3     // stallguard sensitivity for E axis
+#define TMC2130_SG_THRS_HOME {3, 3, TMC2130_SG_THRS_Z, TMC2130_SG_THRS_E}
 
 //new settings is possible for vsense = 1, running current value > 31 set vsense to zero and shift both currents by 1 bit right (Z axis only)
 #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_UNLOAD_CURRENT_R 12			 // lowe current for M600 to protect filament sensor 
+#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
 
@@ -424,7 +426,7 @@
 #define BED_ADJUSTMENT_UM_MAX 100
 
 #define MESH_HOME_Z_CALIB 0.2
-#define MESH_HOME_Z_SEARCH 5 //Z lift for homing, mesh bed leveling etc.
+#define MESH_HOME_Z_SEARCH 5.0f           // Z lift for homing, mesh bed leveling etc.
 
 #define X_PROBE_OFFSET_FROM_EXTRUDER 23     // Z probe to nozzle X offset: -left  +right
 #define Y_PROBE_OFFSET_FROM_EXTRUDER 5     // Z probe to nozzle Y offset: -front +behind
@@ -489,31 +491,27 @@
 
 #define FARM_PREHEAT_HOTEND_TEMP 250
 #define FARM_PREHEAT_HPB_TEMP 80
-#define FARM_PREHEAT_FAN_SPEED 0
 
 #define PLA_PREHEAT_HOTEND_TEMP 215
 #define PLA_PREHEAT_HPB_TEMP 60
-#define PLA_PREHEAT_FAN_SPEED 0
+
+#define ASA_PREHEAT_HOTEND_TEMP 260
+#define ASA_PREHEAT_HPB_TEMP 105
 
 #define ABS_PREHEAT_HOTEND_TEMP 255
 #define ABS_PREHEAT_HPB_TEMP 100
-#define ABS_PREHEAT_FAN_SPEED 0
 
 #define HIPS_PREHEAT_HOTEND_TEMP 220
 #define HIPS_PREHEAT_HPB_TEMP 100
-#define HIPS_PREHEAT_FAN_SPEED 0
 
 #define PP_PREHEAT_HOTEND_TEMP 254
 #define PP_PREHEAT_HPB_TEMP 100
-#define PP_PREHEAT_FAN_SPEED 0
 
 #define PET_PREHEAT_HOTEND_TEMP 230
 #define PET_PREHEAT_HPB_TEMP 85
-#define PET_PREHEAT_FAN_SPEED 0
 
 #define FLEX_PREHEAT_HOTEND_TEMP 240
 #define FLEX_PREHEAT_HPB_TEMP 50
-#define FLEX_PREHEAT_FAN_SPEED 0
 
 /*------------------------------------
  THERMISTORS SETTINGS

+ 61 - 56
PF-build.sh

@@ -56,7 +56,7 @@
 #   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_9
+# Version: 1.0.6-Build_10
 # 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
@@ -112,7 +112,9 @@
 #                          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
+#                          board-versions. 
 #### Start check if OSTYPE is supported
 OS_FOUND=$( command -v uname)
 
@@ -211,7 +213,8 @@ fi
 #### Set build environment 
 ARDUINO_ENV="1.8.5"
 BUILD_ENV="1.0.6"
-BOARD="PrusaResearchRambo"
+BOARD="rambo"
+BOARD_PACKAGE_NAME="PrusaResearchRambo"
 BOARD_VERSION="1.0.1"
 BOARD_URL="https://raw.githubusercontent.com/prusa3d/Arduino_Boards/master/IDE_Board_Manager/package_prusa3d_index.json"
 BOARD_FILENAME="prusa3drambo"
@@ -229,6 +232,7 @@ echo ""
 echo "Ardunio IDE :" $ARDUINO_ENV
 echo "Build env   :" $BUILD_ENV
 echo "Board       :" $BOARD
+echo "Package name:" $BOARD_PACKAGE_NAME
 echo "Specific Lib:" $LIB
 echo ""
 
@@ -259,12 +263,12 @@ if [ $TARGET_OS == "windows" ]; then
 		wget https://downloads.arduino.cc/arduino-$ARDUINO_ENV-windows.zip || exit 7
 		echo "$(tput sgr 0)"
 	fi
-	if [ ! -d "../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor" ]; then
+	if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" && ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then
 		echo "$(tput setaf 6)Unzipping Windows 32/64-bit Arduino IDE portable...$(tput setaf 2)"
 		sleep 2
 		unzip arduino-$ARDUINO_ENV-windows.zip -d ../PF-build-env-$BUILD_ENV || exit 7
-		mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor
-		echo "# arduino-$ARDUINO_ENV-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$TARGET_OS-$Processor
+		mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor
+		echo "# arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt
 		echo "$(tput sgr0)"
 	fi
 fi
@@ -277,55 +281,55 @@ if [ $TARGET_OS == "linux" ]; then
 		wget --no-check-certificate https://downloads.arduino.cc/arduino-$ARDUINO_ENV-linux$Processor.tar.xz || exit 8
 		echo "$(tput sgr 0)"
 	fi
-	if [[ ! -d "../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor" && ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$TARGET_OS-$Processor.txt" ]]; then
+	if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" && ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then
 		echo "$(tput setaf 6)Unzipping Linux $Processor Arduino IDE portable...$(tput setaf 2)"
 		sleep 2
 		tar -xvf arduino-$ARDUINO_ENV-linux$Processor.tar.xz -C ../PF-build-env-$BUILD_ENV/ || exit 8
-		mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor
-		echo "# arduino-$ARDUINO_ENV-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$TARGET_OS-$Processor.txt
+		mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor
+		echo "# arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt
 		echo "$(tput sgr0)"
 	fi
 fi
 # Make Arduino IDE portable
-if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/ ]; then
-	mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/
+if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/ ]; then
+	mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/
 fi
 
-if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/ ]; then
-	mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable
+if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/ ]; then
+	mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable
 fi
-if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/output/ ]; then
-	mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/output
+if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/output/ ]; then
+	mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/output
 fi
-if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/ ]; then
-	mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages
+if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/ ]; then
+	mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages
 fi
-if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/sketchbook/ ]; then
-	mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/sketchbook
+if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/sketchbook/ ]; then
+	mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/sketchbook
 fi
-if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/sketchbook/libraries/ ]; then
-	mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/sketchbook/libraries
+if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/sketchbook/libraries/ ]; then
+	mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/sketchbook/libraries
 fi
-if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/staging/ ]; then
-	mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/staging
+if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/staging/ ]; then
+	mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/staging
 fi
 
 # Change Arduino IDE preferences
-if [ ! -e ../PF-build-env-$BUILD_ENV/Preferences-$TARGET_OS-$Processor.txt ]; then
-	echo "$(tput setaf 6)Setting $TARGET_OS-$Processor Arduino IDE preferences for portable GUI usage...$(tput setaf 2)"
+if [ ! -e ../PF-build-env-$BUILD_ENV/Preferences-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt ]; then
+	echo "$(tput setaf 6)Setting $ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor Arduino IDE preferences for portable GUI usage...$(tput setaf 2)"
 	sleep 2
 	echo "update.check"
-	sed -i 's/update.check = true/update.check = false/g' ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/lib/preferences.txt
+	sed -i 's/update.check = true/update.check = false/g' ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt
 	echo "board"
-	sed -i 's/board = uno/board = rambo/g' ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/lib/preferences.txt
+	sed -i 's/board = uno/board = $BOARD/g' ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt
 	echo "editor.linenumbers"
-	sed -i 's/editor.linenumbers = false/editor.linenumbers = true/g' ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/lib/preferences.txt
+	sed -i 's/editor.linenumbers = false/editor.linenumbers = true/g' ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt
 	echo "boardsmanager.additional.urls"
-	echo "boardsmanager.additional.urls=$BOARD_URL" >>../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/lib/preferences.txt
-	echo "build.verbose=true" >>../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/lib/preferences.txt
-	echo "compiler.cache_core=false" >>../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/lib/preferences.txt
-	echo "compiler.warning_level=all" >>../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/lib/preferences.txt
-	echo "# Preferences-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/Preferences-$TARGET_OS-$Processor.txt
+	echo "boardsmanager.additional.urls=$BOARD_URL" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt
+	echo "build.verbose=true" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt
+	echo "compiler.cache_core=false" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt
+	echo "compiler.warning_level=all" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt
+	echo "# Preferences-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/Preferences-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt
 	echo "$(tput sgr0)"
 fi
 
@@ -336,25 +340,26 @@ if [ ! -f "$BOARD_FILENAME-$BOARD_VERSION.tar.bz2" ]; then
 	sleep 2
 	wget $BOARD_FILE_URL || exit 9
 fi
-if [[ ! -d "../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/$BOARD/hardware/avr/$BOARD_VERSION" || ! -e "../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then
-	echo "$(tput setaf 6)Unzipping $BOARD Arduino IDE portable...$(tput setaf 2)"
+if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr/$BOARD_VERSION" || ! -e "../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then
+	echo "$(tput setaf 6)Unzipping $BOARD_PACKAGE_NAME Arduino IDE portable...$(tput setaf 2)"
 	sleep 2
 	tar -xvf $BOARD_FILENAME-$BOARD_VERSION.tar.bz2 -C ../PF-build-env-$BUILD_ENV/ || exit 10
-	if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/$BOARD ]; then
-		mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/$BOARD
+	if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME ]; then
+		mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME
 	fi
-	if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/$BOARD ]; then
-		mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/$BOARD
+	if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME ]; then
+		mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME
 	fi
-	if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/$BOARD/hardware ]; then
-		mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/$BOARD/hardware
+	if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware ]; then
+		mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware
 	fi
-	if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/$BOARD/hardware/avr ]; then
-		mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/$BOARD/hardware/avr
+	if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr ]; then
+		mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr
 	fi
 	
-	mv ../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$BOARD_VERSION ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/$BOARD/hardware/avr/$BOARD_VERSION
-	echo "# $BOARD_FILENAME-$BOARD_VERSION" >> ../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$BOARD_VERSION-$TARGET_OS-$Processor.txt
+	mv ../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$BOARD_VERSION ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr/$BOARD_VERSION
+	echo "# $BOARD_FILENAME-$BOARD_VERSION" >> ../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt
+
 	echo "$(tput sgr 0)"
 fi	
 
@@ -365,30 +370,30 @@ if [ ! -f "PF-build-env-$BUILD_ENV.zip" ]; then
 	wget $PF_BUILD_FILE_URL || exit 11
 	echo "$(tput sgr 0)"
 fi
-if [ ! -e "../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$TARGET_OS-$Processor.txt" ]; then
+if [ ! -e "../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]; then
 	echo "$(tput setaf 6)Unzipping Prusa Firmware build environment...$(tput setaf 2)"
 	sleep 2
-	unzip -o PF-build-env-$BUILD_ENV.zip -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor || exit 12
-	echo "# PF-build-env-$TARGET_OS-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$TARGET_OS-$Processor.txt
+	unzip -o PF-build-env-$BUILD_ENV.zip -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor || exit 12
+	echo "# PF-build-env-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt
 	echo "$(tput sgr0)"
 fi
 
 # Check if User updated Arduino IDE 1.8.5 boardsmanager and tools
-if [ -d "../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/arduino/tools" ]; then
+if [ -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/arduino/tools" ]; then
 	echo "$(tput setaf 6)Arduino IDE boards / tools have been manually updated...$"
 	echo "Please don't update the 'Arduino AVR boards' as this will prevent running this script (tput setaf 2)"
 	sleep 2
 fi	
-if [ -d "../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.4-arduino2" ]; then
+if [ -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.4-arduino2" ]; then
 	echo "$(tput setaf 6)PrusaReasearch compatible tools have been manually updated...$(tput setaf 2)"
 	sleep 2
 	echo "$(tput setaf 6)Copying Prusa Firmware build environment to manually updated boards / tools...$(tput setaf 2)"
 	sleep 2
-	cp -f ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/hardware/tools/avr/avr/lib/ldscripts/avr6.xn ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.4-arduino2/avr/lib/ldscripts/avr6.xn
-	echo "# PF-build-env-portable-$TARGET_OS-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-portable-$BUILD_ENV-$TARGET_OS-$Processor.txt
+	cp -f ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/hardware/tools/avr/avr/lib/ldscripts/avr6.xn ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.4-arduino2/avr/lib/ldscripts/avr6.xn
+	echo "# PF-build-env-portable-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-portable-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt
 	echo "$(tput sgr0)"
 fi	
-if [ -d "../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/arduino/tools/avr-gcc/5.4.0-atmel3.6.1-arduino2" ]; then
+if [ -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/arduino/tools/avr-gcc/5.4.0-atmel3.6.1-arduino2" ]; then
 	echo "$(tput setaf 1)Arduino IDE tools have been updated manually to a non supported version!!!"
 	echo "Delete ../PF-build-env-$BUILD_ENV and start the script again"
 	echo "Script will not continue until this have been fixed $(tput setaf 2)"
@@ -489,7 +494,7 @@ if [ ! -z "$3" ] ; then
 fi
 
 #Set BUILD_ENV_PATH
-cd ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor || exit 24
+cd ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor || exit 24
 BUILD_ENV_PATH="$( pwd -P )"
 
 cd ../..
@@ -634,8 +639,8 @@ do
 	echo "Start to build Prusa Firmware ..."
 	echo "Using variant $VARIANT$(tput setaf 3)"
 	sleep 2
-	#$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:avr:rambo -ide-version=10805 -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:avr:rambo -ide-version=10805 -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 14
+	#$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
 	echo "$(tput sgr 0)"
 
 	if [ $LANGUAGES ==  "ALL" ]; then

+ 10 - 5
README.md

@@ -111,7 +111,9 @@ Now your Ubuntu subsystem is ready to use the automatic `PF-build.sh` script and
 - Unix and windows have different line endings (LF vs CRLF), try dos2unix to convert
   - This should fix the `"$'\r': command not found"` error
   - to install run `apt-get install dos2unix`
-
+- 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
 - open Ubuntu bash
 - change to your source code folder (case sensitive)
@@ -123,11 +125,14 @@ _notes: Script and instructions contributed by 3d-gussner. Use at your own risk.
 - Download and install the 64bit Git version https://git-scm.com/download/win
 - Also follow these instructions https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058
 - Download and install 7z-zip from its official website https://www.7-zip.org/
-  By default, it is installed under the directory /c/Program Files/7-Zip in Windows 10
+  By default, it is installed under the directory /c/Program\ Files/7-Zip in Windows 10
 - Run `Git-Bash` under Administrator privilege
-- navigate to the directory /c/Program Files/Git/mingw64/bin
-- run `ln -s /c/Program Files/7-Zip/7z.exe zip.exe`
-
+- navigate to the directory /c/Program\ Files/Git/mingw64/bin
+- run `ln -s /c/Program\ Files/7-Zip/7z.exe zip.exe`
+- 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`
+  - English `ln -s /c/Program\ Files/7-Zip/7z.exe zip.exe` will be on a Spanish Windows `ln -s /c/Archivos\ de\ programa/7-Zip/7z.exe zip.exe`
 #### Compile Prusa-firmware with Git-bash installed
 - open Git-bash
 - change to your source code folder

+ 2 - 3
Tests/PrusaStatistics_test.cpp

@@ -198,7 +198,7 @@ void prusa_statistics(int _message, uint8_t _fil_nr) {
 			SERIAL_ECHOLN("}");
 			status_number = 15;
 		}
-		else if (isPrintPaused || card.paused) 
+		else if (isPrintPaused)
 		{
 			SERIAL_ECHO("{");
 			prusa_stat_printerstatus(14);
@@ -490,7 +490,7 @@ void prusa_statistics(int _message, uint8_t _fil_nr) {
 		{   
 			prusa_statistics_case0(15);
 		}
-		else if (isPrintPaused || card.paused) 
+		else if (isPrintPaused)
 		{
 			prusa_statistics_case0(14);
 		}
@@ -753,7 +753,6 @@ TEST_CASE("Prusa_statistics test", "[prusa_stats]")
 				SERIALS_RESET();
 
 				isPrintPaused = 0;
-				card.paused = 0;
 				IS_SD_PRINTING = 1;
 				old_code::prusa_statistics(test_codes[i],0);
 				new_code::prusa_statistics(test_codes[i],0);

+ 1 - 1
lang/lang-add.sh

@@ -51,7 +51,7 @@ if ! [ -e lang_add.txt ]; then
 fi
 
 cat lang_add.txt | sed 's/^/"/;s/$/"/' | while read new_s; do
-	if grep "$new_s" lang_en.txt >/dev/nul; then
+	if grep "$new_s" lang_en.txt >/dev/null; then
 		echo "text already exist:"
 		echo "$new_s"
 		echo

+ 1 - 1
lang/lang-export.sh

@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 #
 # lang-export.sh - multi-language support script
 #  for generating lang_xx.po

+ 58 - 30
lang/lang-import.sh

@@ -1,10 +1,22 @@
-#!/bin/sh
+#!/bin/bash
 #
 # lang-import.sh - multi-language support script
 #  for importing translated xx.po
 
 LNG=$1
-if [ -z "$LNG" ]; then exit -1; fi
+# if no arguments, 'all' is selected (all po and also pot will be generated)
+if [ -z "$LNG" ]; then LNG=all; fi
+
+# if 'all' is selected, script will generate all po files and also pot file
+if [ "$LNG" = "all" ]; then
+ ./lang-import.sh cz
+ ./lang-import.sh de
+ ./lang-import.sh es
+ ./lang-import.sh fr
+ ./lang-import.sh it
+ ./lang-import.sh pl
+ exit 0
+fi
 
 # language code (iso639-1) is equal to LNG
 LNGISO=$LNG
@@ -28,43 +40,51 @@ sed -i 's/ \\n/ /g;s/\\n/ /g' $LNG'_filtered.po'
 
 #replace in czech translation
 if [ "$LNG" = "cz" ]; then
- #replace 'ž' with 'z'
+ #replace 'ž' with 'z'
  sed -i 's/\xc5\xbe/z/g' $LNG'_filtered.po'
- #replace 'ì' with 'e'
+ #replace 'ì' with 'e'
  sed -i 's/\xc4\x9b/e/g' $LNG'_filtered.po'
- #replace 'í' with 'i'
+ #replace 'í' with 'i'
  sed -i 's/\xc3\xad/i/g' $LNG'_filtered.po'
- #replace 'ø' with 'r'
+ #replace 'ø' with 'r'
  sed -i 's/\xc5\x99/r/g' $LNG'_filtered.po'
- #replace 'è' with 'c'
+ #replace 'è' with 'c'
  sed -i 's/\xc4\x8d/c/g' $LNG'_filtered.po'
- #replace 'á' with 'a'
+ #replace 'á' with 'a'
  sed -i 's/\xc3\xa1/a/g' $LNG'_filtered.po'
- #replace 'é' with 'e'
+ #replace 'é' with 'e'
  sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po'
 fi
 
-#replace in german translation
+#replace in german translation https://en.wikipedia.org/wiki/German_orthography
 if [ "$LNG" = "de" ]; then
- #replace 'ä' with 'ae'
+ #replace 'ä' with 'ae'
  sed -i 's/\xc3\xa4/ae/g' $LNG'_filtered.po'
- #replace 'ü' with 'ue'
+ #replace 'Ä' with 'Ae'
+ sed -i 's/\xc3\x84/Ae/g' $LNG'_filtered.po'
+ #replace 'ü' with 'ue'
  sed -i 's/\xc3\xbc/ue/g' $LNG'_filtered.po'
- #replace 'ö' with 'oe'
+ #replace 'Ü' with 'Ue'
+ sed -i 's/\xc3\x9c/Ue/g' $LNG'_filtered.po'
+ #replace 'ö' with 'oe'
  sed -i 's/\xc3\xb6/oe/g' $LNG'_filtered.po'
+ #replace 'Ö' with 'Oe'
+ sed -i 's/\xc3\x96/Oe/g' $LNG'_filtered.po'
+ #replace 'ß' with 'ss'
+ sed -i 's/\xc3\x9f/ss/g' $LNG'_filtered.po'
 fi
 
 #replace in spain translation
 if [ "$LNG" = "es" ]; then
- #replace 'á' with 'a'
+ #replace 'á' with 'a'
  sed -i 's/\xc3\xa1/a/g' $LNG'_filtered.po'
- #replace '?' with '?'
+ #replace '¿' with '?'
  sed -i 's/\xc2\xbf/?/g' $LNG'_filtered.po'
- #replace 'ó' with 'o'
+ #replace 'ó' with 'o'
  sed -i 's/\xc3\xb3/o/g' $LNG'_filtered.po'
- #replace 'é' with 'e'
+ #replace 'é' with 'e'
  sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po'
- #replace 'í' with 'i'
+ #replace 'í' with 'i'
  sed -i 's/\xc3\xad/i/g' $LNG'_filtered.po'
  #replace '!' with '!'
  sed -i 's/\xc2\xa1/!/g' $LNG'_filtered.po'
@@ -72,31 +92,39 @@ if [ "$LNG" = "es" ]; then
  sed -i 's/\xc3\xb1/n/g' $LNG'_filtered.po'
 fi
 
-#replace in french translation
+#replace in french translation https://en.wikipedia.org/wiki/French_orthography
 if [ "$LNG" = "fr" ]; then
- #replace 'é' with 'e'
+ #replace 'á' with 'a' (right)
+ sed -i 's/\xc3\xa1/a/g' $LNG'_filtered.po'
+ #replace '�' with 'A' (right)
+ sed -i 's/\xc3\x81/A/g' $LNG'_filtered.po'
+ #replace 'à' with 'a' (left)
+ sed -i 's/\xc3\xa0/a/g' $LNG'_filtered.po'
+ #replace 'À' with 'A' (left)
+ sed -i 's/\xc3\x80/A/g' $LNG'_filtered.po'
+ #replace 'é' with 'e' (right)
  sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po'
- #replace 'É' with 'E'
+ #replace 'É' with 'E' (right)
  sed -i 's/\xc3\x89/E/g' $LNG'_filtered.po'
- #replace 'é' with 'e' (left)
+ #replace 'è' with 'e' (left)
  sed -i 's/\xc3\xa8/e/g' $LNG'_filtered.po'
- #replace 'á' with 'a' (left)
- sed -i 's/\xc3\xa0/a/g' $LNG'_filtered.po'
+ #replace 'È' with 'E' (left)
+ sed -i 's/\xc3\x88/E/g' $LNG'_filtered.po'
 fi
 
 #replace in italian translation
 if [ "$LNG" = "it" ]; then
- #replace 'é' with 'e' (left)
+ #replace 'é' with 'e' (left)
  sed -i 's/\xc3\xa8/e/g' $LNG'_filtered.po'
- #replace 'á' with 'a' (left)
+ #replace 'á' with 'a' (left)
  sed -i 's/\xc3\xa0/a/g' $LNG'_filtered.po'
- #replace 'ó' with 'o' (left)
+ #replace 'ó' with 'o' (left)
  sed -i 's/\xc3\xb2/o/g' $LNG'_filtered.po'
- #replace 'ú' with 'u' (left)
+ #replace 'ú' with 'u' (left)
  sed -i 's/\xc3\xb9/u/g' $LNG'_filtered.po'
- #replace 'é' with 'e'
+ #replace 'é' with 'e'
  sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po'
- #replace 'É' with 'E' (left)
+ #replace 'É' with 'E' (left)
  sed -i 's/\xc3\x88/E/g' $LNG'_filtered.po'
 fi
 

+ 185 - 108
lang/lang_en.txt

@@ -1,3 +1,6 @@
+#
+"[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
+
 #MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
 " of 4"
 
@@ -34,14 +37,8 @@
 #MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
 "Are left and right Z~carriages all up?"
 
-#MSG_AUTO_DEPLETE_ON c=17 r=1
-"SpoolJoin    [on]"
-
-#
-"SpoolJoin   [N/A]"
-
-#MSG_AUTO_DEPLETE_OFF c=17 r=1
-"SpoolJoin   [off]"
+#MSG_AUTO_DEPLETE c=17 r=1
+"SpoolJoin"
 
 #MSG_AUTO_HOME
 "Auto home"
@@ -127,14 +124,10 @@
 #
 "Copy selected language?"
 
-#MSG_CRASHDETECT_ON
-"Crash det.   [on]"
-
-#MSG_CRASHDETECT_NA
-"Crash det.  [N/A]"
-
-#MSG_CRASHDETECT_OFF
-"Crash det.  [off]"
+#MSG_CRASHDETECT
+"Crash det."
+#
+"Choose a filament for the First Layer Calibration and select it in the on-screen menu."
 
 #MSG_CRASH_DETECTED c=20 r=1
 "Crash detected."
@@ -166,9 +159,6 @@
 #MSG_EJECT_FILAMENT c=17 r=1
 "Eject filament"
 
-#
-"Eject"
-
 #MSG_EJECTING_FILAMENT c=20 r=1
 "Ejecting filament"
 
@@ -202,14 +192,8 @@
 #
 "Fail stats MMU"
 
-#MSG_FSENS_AUTOLOAD_ON c=17 r=1
-"F. autoload  [on]"
-
-#MSG_FSENS_AUTOLOAD_NA c=17 r=1
-"F. autoload [N/A]"
-
-#MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-"F. autoload [off]"
+#MSG_FSENSOR_AUTOLOAD
+"F. autoload"
 
 #
 "Fail stats"
@@ -220,20 +204,11 @@
 #MSG_SELFTEST_FAN c=20
 "Fan test"
 
-#MSG_FANS_CHECK_ON c=17 r=1
-"Fans check   [on]"
-
-#MSG_FANS_CHECK_OFF c=17 r=1
-"Fans check  [off]"
-
-#MSG_FSENSOR_ON
-"Fil. sensor  [on]"
+#MSG_FANS_CHECK
+"Fans check"
 
-#MSG_FSENSOR_NA
-"Fil. sensor [N/A]"
-
-#MSG_FSENSOR_OFF
-"Fil. sensor [off]"
+#MSG_FSENSOR
+"Fil. sensor"
 
 #
 "Filam. runouts"
@@ -346,33 +321,24 @@
 #MSG_WIZARD_Z_CAL c=20 r=8
 "I will run z calibration now."
 
-#MSG_WIZARD_V2_CAL_2 c=20 r=12
-"I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."
-
 #MSG_WATCH
 "Info screen"
 
-#
-"Is filament 1 loaded?"
-
 #MSG_INSERT_FILAMENT c=20
 "Insert filament"
 
 #MSG_WIZARD_FILAMENT_LOADED c=20 r=2
 "Is filament loaded?"
 
-#MSG_WIZARD_PLA_FILAMENT c=20 r=2
-"Is it PLA filament?"
-
-#MSG_PLA_FILAMENT_LOADED c=20 r=2
-"Is PLA filament loaded?"
-
 #MSG_STEEL_SHEET_CHECK c=20 r=2
 "Is steel sheet on heatbed?"
 
 #
 "Last print failures"
 
+#
+"If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
+
 #
 "Last print"
 
@@ -439,11 +405,14 @@
 #MSG_MMU_OK_RESUMING c=20 r=4
 "MMU OK. Resuming..."
 
-#MSG_STEALTH_MODE_OFF
-"Mode     [Normal]"
+#MSG_MODE
+"Mode"
+
+#MSG_NORMAL
+"Normal"
 
-#MSG_SILENT_MODE_ON
-"Mode     [silent]"
+#MSG_SILENT
+"Silent"
 
 #
 "MMU needs user attention."
@@ -451,14 +420,14 @@
 #
 "MMU power fails"
 
-#MSG_STEALTH_MODE_ON
-"Mode    [Stealth]"
+#MSG_STEALTH
+"Stealth"
 
-#MSG_AUTO_MODE_ON
-"Mode [auto power]"
+#MSG_AUTO_POWER
+"Auto power"
 
-#MSG_SILENT_MODE_OFF
-"Mode [high power]"
+#MSG_HIGH_POWER
+"High power"
 
 #
 "MMU2 connected"
@@ -484,7 +453,7 @@
 #MSG_NO_CARD
 "No SD card"
 
-#
+#MSG_NA
 "N/A"
 
 #MSG_NO
@@ -547,12 +516,6 @@
 #MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
 "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
 
-#MSG_WIZARD_LOAD_FILAMENT c=20 r=8
-"Please insert PLA filament to the extruder, then press knob to load it."
-
-#MSG_PLEASE_LOAD_PLA c=20 r=4
-"Please load PLA filament first."
-
 #MSG_CHECK_IDLER c=20 r=4
 "Please open idler and remove filament manually."
 
@@ -562,9 +525,6 @@
 #MSG_PRESS_TO_UNLOAD c=20 r=4
 "Please press the knob to unload filament"
 
-#
-"Please insert PLA filament to the first tube of MMU, then press the knob to load it."
-
 #MSG_PULL_OUT_FILAMENT c=20 r=4
 "Please pull out filament immediately"
 
@@ -634,6 +594,15 @@
 #
 "Print FAN"
 
+#
+"Please insert filament into the extruder, then press the knob to load it."
+
+#
+"Please insert filament into the first tube of the MMU, then press the knob to load it."
+
+#
+"Please load filament first."
+
 #MSG_PRUSA3D
 "prusa3d.com"
 
@@ -664,20 +633,17 @@
 #MSG_BED_CORRECTION_RIGHT c=14 r=1
 "Right side[um]"
 
-#MSG_SECOND_SERIAL_ON c=17 r=1
-"RPi port     [on]"
-
-#MSG_SECOND_SERIAL_OFF c=17 r=1
-"RPi port    [off]"
+#MSG_RPI_PORT
+"RPi port"
 
 #MSG_WIZARD_RERUN c=20 r=7
 "Running Wizard will delete current calibration results and start from the beginning. Continue?"
 
-#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-"SD card  [normal]"
+#MSG_SD_CARD
+"SD card"
 
-#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-"SD card [flshAir]"
+#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
+"FlashAir"
 
 #
 "Right"
@@ -709,9 +675,6 @@
 #
 "Select nozzle preheat temperature which matches your material."
 
-#
-"Select PLA filament:"
-
 #MSG_SET_TEMPERATURE c=19 r=1
 "Set temperature:"
 
@@ -727,38 +690,38 @@
 #MSG_FILE_CNT c=20 r=4
 "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
 
-#MSG_SORT_NONE c=17 r=1
-"Sort       [none]"
+#MSG_SORT
+"Sort"
 
-#MSG_SORT_TIME c=17 r=1
-"Sort       [time]"
+#MSG_NONE
+"None"
+
+#MSG_SORT_TIME
+"Time"
 
 #
-"Severe skew"
+"Severe skew:"
 
-#MSG_SORT_ALPHA c=17 r=1
-"Sort   [alphabet]"
+#MSG_SORT_ALPHA
+"Alphabet"
 
 #MSG_SORTING c=20 r=1
 "Sorting files"
 
-#MSG_SOUND_LOUD c=17 r=1
-"Sound      [loud]"
+#MSG_SOUND_LOUD
+"Loud"
 
 #
-"Slight skew"
+"Slight skew:"
 
-#MSG_SOUND_MUTE c=17 r=1
-"Sound      [mute]"
+#MSG_SOUND
+"Sound"
 
 #
 "Some problem encountered, Z-leveling enforced ..."
 
-#MSG_SOUND_ONCE c=17 r=1
-"Sound      [once]"
-
-#MSG_SOUND_SILENT c=17 r=1
-"Sound    [silent]"
+#MSG_SOUND_ONCE
+"Once"
 
 #MSG_SPEED
 "Speed"
@@ -784,14 +747,14 @@
 #MSG_SELFTEST_SWAPPED
 "Swapped"
 
-#MSG_TEMP_CALIBRATION c=20 r=1
-"Temp. cal.          "
+#
+"Select filament:"
 
-#MSG_TEMP_CALIBRATION_ON c=20 r=1
-"Temp. cal.   [on]"
+#MSG_TEMP_CALIBRATION c=12 r=1
+"Temp. cal."
 
-#MSG_TEMP_CALIBRATION_OFF c=20 r=1
-"Temp. cal.  [off]"
+#
+"Select temperature which matches your material."
 
 #MSG_CALIBRATION_PINDA_MENU c=17 r=1
 "Temp. calibration"
@@ -925,8 +888,122 @@
 #
 "Y distance from min"
 
+#
+"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)."
+
 #
 "Y-correct:"
 
 #MSG_OFF
-" [off]"
+"Off"
+
+#MSG_ON
+"On"
+
+#
+"Back"
+
+#
+"Checks"
+
+#
+"False triggering"
+
+#
+"FINDA:"
+
+#MSG_FIRMWARE
+"Firmware"
+
+#MSG_STRICT
+"Strict"
+
+#MSG_WARN
+"Warn"
+
+#
+"HW Setup"
+
+#
+"IR:"
+
+#MSG_MAGNETS_COMP
+"Magnets comp."
+
+#MSG_MESH
+"Mesh"
+
+#
+"Mesh bed leveling"
+
+#
+"MK3S firmware detected on MK3 printer"
+
+#MSG_MMU_MODE
+"MMU Mode"
+
+#
+"Mode change in progress ..."
+
+#MSG_MODEL
+"Model"
+
+#MSG_NOZZLE_DIAMETER
+"Nozzle d."
+
+#
+"G-code sliced for a different level. Continue?"
+
+#
+"G-code sliced for a different level. Please re-slice the model again. Print cancelled."
+
+#
+"G-code sliced for a different printer type. Continue?"
+
+#
+"G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
+
+#
+"G-code sliced for a newer firmware. Continue?"
+
+#
+"G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
+
+#
+"PINDA:"
+
+#
+"Preheating to cut"
+
+#
+"Preheating to eject"
+
+#
+"Printer nozzle diameter differs from the G-code. Continue?"
+
+#
+"Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
+
+#
+"Rename"
+
+#
+"Select"
+
+#
+"Sensor info"
+
+#
+"Sheet"
+
+#MSG_SOUND_BLIND
+"Assist"
+
+#
+"Steel sheets"
+
+#
+"Z-correct:"
+
+#MSG_Z_PROBE_NR
+"Z-probe nr."

+ 262 - 158
lang/lang_en_cz.txt

@@ -1,3 +1,7 @@
+#
+"[%.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_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
 " of 4"
 " z 4"
@@ -24,7 +28,7 @@
 
 #MSG_BABYSTEPPING_Z c=15
 "Adjusting Z:"
-"Dostavovani Z:"
+"Doladeni Z:"
 
 #MSG_SELFTEST_CHECK_ALLCORRECT c=20
 "All correct      "
@@ -46,18 +50,10 @@
 "Are left and right Z~carriages all up?"
 "Dojely oba Z voziky k~hornimu dorazu?"
 
-#MSG_AUTO_DEPLETE_ON c=17 r=1
-"SpoolJoin    [on]"
-"SpoolJoin   [zap]"
-
-#
-"SpoolJoin   [N/A]"
+#MSG_AUTO_DEPLETE c=17 r=1
+"SpoolJoin"
 "\x00"
 
-#MSG_AUTO_DEPLETE_OFF c=17 r=1
-"SpoolJoin   [off]"
-"SpoolJoin   [vyp]"
-
 #MSG_AUTO_HOME
 "Auto home"
 "\x00"
@@ -68,7 +64,7 @@
 
 #MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
 "Autoloading filament available only when filament sensor is turned on..."
-"Automaticke zavadeni filamentu je dostupne pouze pri zapnutem filament senzoru..."
+"Automaticke zavadeni filamentu je mozne pouze pri zapnutem filament senzoru..."
 
 #MSG_AUTOLOADING_ENABLED c=20 r=4
 "Autoloading filament is active, just press the knob and insert filament..."
@@ -92,7 +88,7 @@
 
 #MSG_BED_HEATING
 "Bed Heating"
-"Zahrivani bed"
+"Zahrivani bedu"
 
 #MSG_BED_CORRECTION_MENU
 "Bed level correct"
@@ -170,17 +166,13 @@
 "Copy selected language?"
 "Kopirovat vybrany jazyk?"
 
-#MSG_CRASHDETECT_ON
-"Crash det.   [on]"
-"Crash det.  [zap]"
-
-#MSG_CRASHDETECT_NA
-"Crash det.  [N/A]"
+#MSG_CRASHDETECT
+"Crash det."
 "\x00"
 
-#MSG_CRASHDETECT_OFF
-"Crash det.  [off]"
-"Crash det.  [vyp]"
+#
+"Zvolte filament pro kalibraci prvni vrstvy z nasledujiciho menu"
+"Choose a filament for the First Layer Calibration and select it in the on-screen menu."
 
 #MSG_CRASH_DETECTED c=20 r=1
 "Crash detected."
@@ -222,10 +214,6 @@
 "Eject filament"
 "Vysunout filament"
 
-#
-"Eject"
-"Vysunout"
-
 #MSG_EJECTING_FILAMENT c=20 r=1
 "Ejecting filament"
 "Vysouvam filament"
@@ -270,17 +258,9 @@
 "Fail stats MMU"
 "Selhani MMU"
 
-#MSG_FSENS_AUTOLOAD_ON c=17 r=1
-"F. autoload  [on]"
-"F. autozav. [zap]"
-
-#MSG_FSENS_AUTOLOAD_NA c=17 r=1
-"F. autoload [N/A]"
-"F. autozav. [N/A]"
-
-#MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-"F. autoload [off]"
-"F. autozav. [vyp]"
+#MSG_FSENSOR_AUTOLOAD
+"F. autoload"
+"F. autozav."
 
 #
 "Fail stats"
@@ -294,29 +274,17 @@
 "Fan test"
 "Test ventilatoru"
 
-#MSG_FANS_CHECK_ON c=17 r=1
-"Fans check   [on]"
-"Kontr. vent.[zap]"
-
-#MSG_FANS_CHECK_OFF c=17 r=1
-"Fans check  [off]"
-"Kontr. vent.[vyp]"
-
-#MSG_FSENSOR_ON
-"Fil. sensor  [on]"
-"Fil. senzor [zap]"
-
-#MSG_FSENSOR_NA
-"Fil. sensor [N/A]"
-"Fil. senzor [N/A]"
+#MSG_FANS_CHECK
+"Fans check"
+"Kontr. vent."
 
-#MSG_FSENSOR_OFF
-"Fil. sensor [off]"
-"Fil. senzor [vyp]"
+#MSG_FSENSOR
+"Fil. sensor"
+"Fil. senzor"
 
 #
 "Filam. runouts"
-"Vypadky filamentu"
+"Vypadky filam."
 
 #MSG_FILAMENT_CLEAN c=20 r=2
 "Filament extruding & with correct color?"
@@ -462,18 +430,10 @@
 "I will run z calibration now."
 "Nyni provedu z kalibraci."
 
-#MSG_WIZARD_V2_CAL_2 c=20 r=12
-"I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."
-"Zacnu tisknout linku a Vy budete postupne snizovat trysku otacenim tlacitka dokud nedosahnete optimalni vysky. Prohlednete si obrazky v nasi prirucce v kapitole Kalibrace."
-
 #MSG_WATCH
 "Info screen"
 "Informace"
 
-#
-"Is filament 1 loaded?"
-"Je filament 1 zaveden?"
-
 #MSG_INSERT_FILAMENT c=20
 "Insert filament"
 "Vlozte filament"
@@ -482,14 +442,6 @@
 "Is filament loaded?"
 "Je filament zaveden?"
 
-#MSG_WIZARD_PLA_FILAMENT c=20 r=2
-"Is it PLA filament?"
-"Je to PLA filament?"
-
-#MSG_PLA_FILAMENT_LOADED c=20 r=2
-"Is PLA filament loaded?"
-"Je PLA filament zaveden?"
-
 #MSG_STEEL_SHEET_CHECK c=20 r=2
 "Is steel sheet on heatbed?"
 "Je tiskovy plat na podlozce?"
@@ -498,6 +450,10 @@
 "Last print failures"
 "Selhani posl. tisku"
 
+#
+"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"
+
 #
 "Last print"
 "Posledni tisk"
@@ -508,7 +464,7 @@
 
 #
 "Left"
-"Vlevo:"
+"Vlevo"
 
 #MSG_BED_CORRECTION_LEFT c=14 r=1
 "Left side [um]"
@@ -586,13 +542,17 @@
 "MMU OK. Resuming..."
 "MMU OK. Pokracuji..."
 
-#MSG_STEALTH_MODE_OFF
-"Mode     [Normal]"
-"Mod      [Normal]"
+#MSG_MODE
+"Mode"
+"Mod"
 
-#MSG_SILENT_MODE_ON
-"Mode     [silent]"
-"Mod       [tichy]"
+#MSG_NORMAL
+"Normal"
+"\x00"
+
+#MSG_SILENT
+"Silent"
+"Tichy"
 
 #
 "MMU needs user attention."
@@ -602,17 +562,17 @@
 "MMU power fails"
 "MMU vypadky proudu"
 
-#MSG_STEALTH_MODE_ON
-"Mode    [Stealth]"
-"Mod       [tichy]"
+#MSG_STEALTH
+"Stealth"
+"Tichy"
 
-#MSG_AUTO_MODE_ON
-"Mode [auto power]"
-"Mod [automaticky]"
+#MSG_AUTO_POWER
+"Auto power"
+"Automaticky"
 
-#MSG_SILENT_MODE_OFF
-"Mode [high power]"
-"Mod  [vys. vykon]"
+#MSG_HIGH_POWER
+"High power"
+"Vys. vykon"
 
 #
 "MMU2 connected"
@@ -646,7 +606,7 @@
 "No SD card"
 "Zadna SD karta"
 
-#
+#MSG_NA
 "N/A"
 "\x00"
 
@@ -688,7 +648,7 @@
 
 #
 "Nozzle FAN"
-"Trysk. vent."
+"Vent. trysky"
 
 #MSG_PAUSE_PRINT
 "Pause print"
@@ -730,14 +690,6 @@
 "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
 "Prosim nahlednete do prirucky 3D tiskare a opravte problem. Pote obnovte Pruvodce restartovanim tiskarny."
 
-#MSG_WIZARD_LOAD_FILAMENT c=20 r=8
-"Please insert PLA filament to the extruder, then press knob to load it."
-"Prosim vlozte PLA filament do extruderu, pote stisknete tlacitko pro zavedeni filamentu."
-
-#MSG_PLEASE_LOAD_PLA c=20 r=4
-"Please load PLA filament first."
-"Nejdrive prosim zavedte PLA filament."
-
 #MSG_CHECK_IDLER c=20 r=4
 "Please open idler and remove filament manually."
 "Prosim otevrete idler a manualne odstrante filament."
@@ -750,10 +702,6 @@
 "Please press the knob to unload filament"
 "Pro vysunuti filamentu stisknete prosim tlacitko"
 
-#
-"Please insert PLA filament to the first tube of MMU, then press the knob to load it."
-"Prosim vlozte PLA filament do trubicky MMU, pote stisknete tlacitko pro zavedeni filamentu."
-
 #MSG_PULL_OUT_FILAMENT c=20 r=4
 "Please pull out filament immediately"
 "Prosim vyjmete urychlene filament"
@@ -792,7 +740,7 @@
 
 #MSG_WIZARD_HEATING c=20 r=3
 "Preheating nozzle. Please wait."
-"Predehrivam trysku. Prosim cekejte."
+"Predehrev trysky. Prosim cekejte."
 
 #
 "Please upgrade."
@@ -812,11 +760,11 @@
 
 #
 "Preheating to load"
-"Predehrivam k zavedeni"
+"Predehrev k zavedeni"
 
 #
 "Preheating to unload"
-"Predehrivam k vyjmuti"
+"Predehrev k vyjmuti"
 
 #MSG_SELFTEST_PRINT_FAN_SPEED c=18
 "Print fan:"
@@ -828,7 +776,7 @@
 
 #
 "Press the knob"
-"Stisknete tlacitko"
+"Stisknete hl. tlacitko"
 
 #MSG_PRINT_PAUSED c=20 r=1
 "Print paused"
@@ -846,6 +794,18 @@
 "Print FAN"
 "Tiskovy vent."
 
+#
+"Please insert filament into the extruder, then press the knob to load it."
+"Prosim vlozte filament do extruderu a stisknete tlacitko k jeho zavedeni"
+
+#
+"Please insert filament into the first tube of the MMU, then press the knob to load it."
+"Prosim vlozte filament do prvni trubicky MMU a stisknete tlacitko k jeho zavedeni"
+
+#
+"Please load filament first."
+"Prosim nejdriv zavedte filament"
+
 #MSG_PRUSA3D
 "prusa3d.com"
 "\x00"
@@ -886,25 +846,21 @@
 "Right side[um]"
 "Vpravo [um]"
 
-#MSG_SECOND_SERIAL_ON c=17 r=1
-"RPi port     [on]"
-"RPi port    [zap]"
-
-#MSG_SECOND_SERIAL_OFF c=17 r=1
-"RPi port    [off]"
-"RPi port    [vyp]"
+#MSG_RPI_PORT
+"RPi port"
+"\x00"
 
 #MSG_WIZARD_RERUN c=20 r=7
 "Running Wizard will delete current calibration results and start from the beginning. Continue?"
 "Spusteni Pruvodce vymaze ulozene vysledky vsech kalibraci a spusti kalibracni proces od zacatku. Pokracovat?"
 
-#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-"SD card  [normal]"
+#MSG_SD_CARD
+"SD card"
 "\x00"
 
-#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-"SD card [flshAir]"
-"SD card [FlshAir]"
+#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
+"FlashAir"
+"\x00"
 
 #
 "Right"
@@ -946,10 +902,6 @@
 "Select nozzle preheat temperature which matches your material."
 "Vyberte teplotu predehrati trysky ktera odpovida vasemu materialu."
 
-#
-"Select PLA filament:"
-"Vyberte PLA filament:"
-
 #MSG_SET_TEMPERATURE c=19 r=1
 "Set temperature:"
 "Nastavte teplotu:"
@@ -970,49 +922,49 @@
 "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
 "Nektere soubory nebudou setrideny. Maximalni pocet souboru ve slozce pro setrideni je 100."
 
-#MSG_SORT_NONE c=17 r=1
-"Sort       [none]"
-"Trideni   [Zadne]"
+#MSG_SORT
+"Sort"
+"Trideni"
 
-#MSG_SORT_TIME c=17 r=1
-"Sort       [time]"
-"Trideni     [cas]"
+#MSG_NONE
+"None"
+"Zadne"
+
+#MSG_SORT_TIME
+"Time"
+"Cas"
 
 #
-"Severe skew"
-"Tezke zkoseni"
+"Severe skew:"
+"Tezke zkoseni:"
 
-#MSG_SORT_ALPHA c=17 r=1
-"Sort   [alphabet]"
-"Trideni [Abeceda]"
+#MSG_SORT_ALPHA
+"Alphabet"
+"Abeceda"
 
 #MSG_SORTING c=20 r=1
 "Sorting files"
 "Trideni souboru"
 
-#MSG_SOUND_LOUD c=17 r=1
-"Sound      [loud]"
-"Zvuk    [hlasity]"
+#MSG_SOUND_LOUD
+"Loud"
+"Hlasity"
 
 #
-"Slight skew"
-"Lehke zkoseni"
+"Slight skew:"
+"Lehke zkoseni:"
 
-#MSG_SOUND_MUTE c=17 r=1
-"Sound      [mute]"
-"Zvuk    [vypnuto]"
+#MSG_SOUND
+"Sound"
+"Zvuk"
 
 #
 "Some problem encountered, Z-leveling enforced ..."
 "Vyskytl se problem, srovnavam osu Z ..."
 
-#MSG_SOUND_ONCE c=17 r=1
-"Sound      [once]"
-"Zvuk     [jednou]"
-
-#MSG_SOUND_SILENT c=17 r=1
-"Sound    [silent]"
-"Zvuk      [tichy]"
+#MSG_SOUND_ONCE
+"Once"
+"Jednou"
 
 #MSG_SPEED
 "Speed"
@@ -1046,17 +998,17 @@
 "Swapped"
 "Prohozene"
 
-#MSG_TEMP_CALIBRATION c=20 r=1
-"Temp. cal.          "
-"Tepl. kal. "
+#
+"Select filament:"
+"Zvolte filament:"
 
-#MSG_TEMP_CALIBRATION_ON c=20 r=1
-"Temp. cal.   [on]"
-"Tepl. kal.  [zap]"
+#MSG_TEMP_CALIBRATION c=12 r=1
+"Temp. cal."
+"Tepl. kal."
 
-#MSG_TEMP_CALIBRATION_OFF c=20 r=1
-"Temp. cal.  [off]"
-"Tepl. kal.  [vyp]"
+#
+"Select temperature which matches your material."
+"Zvolte teplotu, ktera odpovida vasemu materialu."
 
 #MSG_CALIBRATION_PINDA_MENU c=17 r=1
 "Temp. calibration"
@@ -1234,10 +1186,162 @@
 "Y distance from min"
 "Y vzdalenost od min"
 
+#
+"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)."
+"\x00"
+
 #
 "Y-correct:"
 "Korekce Y:"
 
 #MSG_OFF
-" [off]"
+"Off"
+"Vyp"
+
+#MSG_ON
+"On"
+"Zap"
+
+#
+"Back"
+"Zpet"
+
+#
+"Checks"
+"Kontrola"
+
+#
+"False triggering"
+"Falesne spusteni"
+
+#
+"FINDA:"
 "\x00"
+
+#MSG_FIRMWARE
+"Firmware"
+"\x00"
+
+#MSG_STRICT
+"Strict"
+"Prisne"
+
+#MSG_WARN
+"Warn"
+"Varovat"
+
+#
+"HW Setup"
+"HW nastaveni"
+
+#
+"IR:"
+"\x00"
+
+#MSG_MAGNETS_COMP
+"Magnets comp."
+"Komp. magnetu"
+
+#MSG_MESH
+"Mesh"
+"\x00"
+
+#
+"Mesh bed leveling"
+"Mesh Bed Leveling"
+
+#
+"MK3S firmware detected on MK3 printer"
+"MK3S firmware detekovan na tiskarne MK3"
+
+#MSG_MMU_MODE
+"MMU Mode"
+"MMU mod"
+
+#
+"Mode change in progress ..."
+"Probiha zmena modu..."
+
+#MSG_MODEL
+"Model"
+"\x00"
+
+#MSG_NOZZLE_DIAMETER
+"Nozzle d."
+"Tryska"
+
+#
+"G-code sliced for a different level. Continue?"
+"\x00"
+
+#
+"G-code sliced for a different level. Please re-slice the model again. Print cancelled."
+"\x00"
+
+#
+"G-code sliced for a different printer type. Continue?"
+"G-code je pripraven pro jiny typ tiskarny. Pokracovat?"
+
+#
+"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."
+
+#
+"G-code sliced for a newer firmware. Continue?"
+"G-code je pripraven pro novejsi firmware. Pokracovat?"
+
+#
+"G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
+"G-code je pripraven pro novejsi firmware. Prosim aktualizujte firmware. Tisk zrusen."
+
+#
+"PINDA:"
+"\x00"
+
+#
+"Preheating to cut"
+"Predehrev k ustrizeni"
+
+#
+"Preheating to eject"
+"Predehrev k vysunuti"
+
+#
+"Printer nozzle diameter differs from the G-code. Continue?"
+"Prumer trysky tiskarny se lisi od G-code. Pokracovat?"
+
+#
+"Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
+"Prumer trysky tiskarny se lisi od G-code. Prosim zkontrolujte nastaveni. Tisk zrusen."
+
+#
+"Rename"
+"Prejmenovat"
+
+#
+"Select"
+"Vybrat"
+
+#
+"Sensor info"
+"Senzor info"
+
+#
+"Sheet"
+"Plat"
+
+#MSG_SOUND_BLIND
+"Assist"
+"Asist."
+
+#
+"Steel sheets"
+"Tiskove platy"
+
+#
+"Z-correct:"
+"Korekce Z:"
+
+#MSG_Z_PROBE_NR
+"Z-probe nr."
+"Pocet mereni Z"

+ 272 - 169
lang/lang_en_de.txt

@@ -1,3 +1,7 @@
+#
+"[%.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_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
 " of 4"
 " von 4"
@@ -24,11 +28,11 @@
 
 #MSG_BABYSTEPPING_Z c=15
 "Adjusting Z:"
-"Z Einstellung:"
+"Z Anpassen:"
 
 #MSG_SELFTEST_CHECK_ALLCORRECT c=20
 "All correct      "
-"Alles richtig "
+"Alles richtig    "
 
 #MSG_WIZARD_DONE c=20 r=8
 "All is done. Happy printing!"
@@ -46,17 +50,9 @@
 "Are left and right Z~carriages all up?"
 "Sind linke+rechte Z- Schlitten ganz oben?"
 
-#MSG_AUTO_DEPLETE_ON c=17 r=1
-"SpoolJoin    [on]"
-"SpoolJoin    [an]"
-
-#
-"SpoolJoin   [N/A]"
-"SpoolJoin   [N/V]"
-
-#MSG_AUTO_DEPLETE_OFF c=17 r=1
-"SpoolJoin   [off]"
-"SpoolJoin   [aus]"
+#MSG_AUTO_DEPLETE c=17 r=1
+"SpoolJoin"
+"\x00"
 
 #MSG_AUTO_HOME
 "Auto home"
@@ -64,11 +60,11 @@
 
 #MSG_AUTOLOAD_FILAMENT c=17
 "AutoLoad filament"
-"Auto-Laden Filament"
+"AutoLaden Filament"
 
 #MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
 "Autoloading filament available only when filament sensor is turned on..."
-"Automatisches Laden Filament nur bei einge schaltetem Filament- sensor verfuegbar..."
+"Automatisches Laden Filament nur bei eingeschaltetem Fil. sensor verfuegbar..."
 
 #MSG_AUTOLOADING_ENABLED c=20 r=4
 "Autoloading filament is active, just press the knob and insert filament..."
@@ -170,17 +166,13 @@
 "Copy selected language?"
 "Gewaehlte Sprache kopieren?"
 
-#MSG_CRASHDETECT_ON
-"Crash det.   [on]"
-"Crash Erk.   [an]"
+#MSG_CRASHDETECT
+"Crash det."
+"Crash Erk."
 
-#MSG_CRASHDETECT_NA
-"Crash det.  [N/A]"
-"Crash Erk.   [nv]"
-
-#MSG_CRASHDETECT_OFF
-"Crash det.  [off]"
-"Crash Erk.  [aus]"
+#
+"Choose a filament for the First Layer Calibration and select it in the on-screen menu."
+"Waehlen Sie ein Filament fuer Erste Schichtkalibrierung aus und waehlen Sie es im On-Screen-Menu aus."
 
 #MSG_CRASH_DETECTED c=20 r=1
 "Crash detected."
@@ -222,10 +214,6 @@
 "Eject filament"
 "Filamentauswurf"
 
-#
-"Eject"
-"Auswurf"
-
 #MSG_EJECTING_FILAMENT c=20 r=1
 "Ejecting filament"
 "werfe Filament aus"
@@ -270,17 +258,9 @@
 "Fail stats MMU"
 "MMU-Fehler"
 
-#MSG_FSENS_AUTOLOAD_ON c=17 r=1
-"F. autoload  [on]"
-"F.Autoladen  [an]"
-
-#MSG_FSENS_AUTOLOAD_NA c=17 r=1
-"F. autoload [N/A]"
-"F. Autoload  [nv]"
-
-#MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-"F. autoload [off]"
-"F. Autoload [aus]"
+#MSG_FSENSOR_AUTOLOAD
+"F. autoload"
+"F. autoladen"
 
 #
 "Fail stats"
@@ -294,25 +274,13 @@
 "Fan test"
 "Lueftertest"
 
-#MSG_FANS_CHECK_ON c=17 r=1
-"Fans check   [on]"
-"Luefter Chk. [an]"
+#MSG_FANS_CHECK
+"Fans check"
+"Luefter Chk."
 
-#MSG_FANS_CHECK_OFF c=17 r=1
-"Fans check  [off]"
-"Luefter Chk.[aus]"
-
-#MSG_FSENSOR_ON
-"Fil. sensor  [on]"
-"Fil. Sensor  [an]"
-
-#MSG_FSENSOR_NA
-"Fil. sensor [N/A]"
-"Fil. Sensor  [nv]"
-
-#MSG_FSENSOR_OFF
-"Fil. sensor [off]"
-"Fil. Sensor [aus]"
+#MSG_FSENSOR
+"Fil. sensor"
+"\x00"
 
 #
 "Filam. runouts"
@@ -320,7 +288,7 @@
 
 #MSG_FILAMENT_CLEAN c=20 r=2
 "Filament extruding & with correct color?"
-"Filament extrudiert + richtige Farbe?"
+"Filament extrudiert mit richtiger Farbe?"
 
 #MSG_NOT_LOADED c=19
 "Filament not loaded"
@@ -462,18 +430,10 @@
 "I will run z calibration now."
 "Ich werde jetzt die Z Kalibrierung durchfuehren."
 
-#MSG_WIZARD_V2_CAL_2 c=20 r=12
-"I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."
-"Ich werde jetzt eine Linie drucken. Waehrend des Druckes koennen Sie die Duese allmaehlich senken, indem Sie den Knopf drehen, bis Sie die optimale Hoehe erreichen. Sehen Sie sich die Bilder in unserem Handbuch im Kapitel Kalibrierung an."
-
 #MSG_WATCH
 "Info screen"
 "Infoanzeige"
 
-#
-"Is filament 1 loaded?"
-"Wurde Filament 1 geladen?"
-
 #MSG_INSERT_FILAMENT c=20
 "Insert filament"
 "Filament einlegen"
@@ -482,14 +442,6 @@
 "Is filament loaded?"
 "Ist das Filament geladen?"
 
-#MSG_WIZARD_PLA_FILAMENT c=20 r=2
-"Is it PLA filament?"
-"Ist es wirklich PLA Filament?"
-
-#MSG_PLA_FILAMENT_LOADED c=20 r=2
-"Is PLA filament loaded?"
-"Ist PLA Filament geladen?"
-
 #MSG_STEEL_SHEET_CHECK c=20 r=2
 "Is steel sheet on heatbed?"
 "Liegt das Stahlblech auf dem Heizbett?"
@@ -498,6 +450,10 @@
 "Last print failures"
 "Letzte Druckfehler"
 
+#
+"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."
+
 #
 "Last print"
 "Letzter Druck"
@@ -556,11 +512,11 @@
 
 #MSG_MESH_BED_LEVELING
 "Mesh Bed Leveling"
-"Mesh Bett Ausgleich"
+"MeshBett Ausgleich"
 
 #MSG_MMU_OK_RESUMING_POSITION c=20 r=4
 "MMU OK. Resuming position..."
-"MMU OK. Position    wiederherstellen... "
+"MMU OK. Position wiederherstellen..."
 
 #MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
 "MMU OK. Resuming temperature..."
@@ -586,13 +542,17 @@
 "MMU OK. Resuming..."
 "MMU OK.  Weiterdrucken..."
 
-#MSG_STEALTH_MODE_OFF
-"Mode     [Normal]"
-"Modus    [Normal]"
+#MSG_MODE
+"Mode"
+"Modus"
 
-#MSG_SILENT_MODE_ON
-"Mode     [silent]"
-"Modus     [leise]"
+#MSG_NORMAL
+"Normal"
+"\x00"
+
+#MSG_SILENT
+"Silent"
+"Leise"
 
 #
 "MMU needs user attention."
@@ -602,17 +562,17 @@
 "MMU power fails"
 "MMU Netzfehler"
 
-#MSG_STEALTH_MODE_ON
-"Mode    [Stealth]"
-"Modus   [Stealth]"
+#MSG_STEALTH
+"Stealth"
+"\x00"
 
-#MSG_AUTO_MODE_ON
-"Mode [auto power]"
-"Modus[Auto Power]"
+#MSG_AUTO_POWER
+"Auto power"
+"\x00"
 
-#MSG_SILENT_MODE_OFF
-"Mode [high power]"
-"Modus[Hohe Leist]"
+#MSG_HIGH_POWER
+"High power"
+"Hohe leist"
 
 #
 "MMU2 connected"
@@ -646,9 +606,9 @@
 "No SD card"
 "Keine SD Karte"
 
-#
+#MSG_NA
 "N/A"
-"N.V."
+"N/V"
 
 #MSG_NO
 "No"
@@ -688,7 +648,7 @@
 
 #
 "Nozzle FAN"
-"Duesen Luefter"
+"Duesevent."
 
 #MSG_PAUSE_PRINT
 "Pause print"
@@ -730,14 +690,6 @@
 "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
 "Bitte lesen Sie unser Handbuch und beheben Sie das Problem. Fahren Sie dann mit dem Assistenten fort, indem Sie den Drucker neu starten."
 
-#MSG_WIZARD_LOAD_FILAMENT c=20 r=8
-"Please insert PLA filament to the extruder, then press knob to load it."
-"Legen Sie bitte PLA Filament in den Extruder und druecken Sie den Knopf,  um es zu laden."
-
-#MSG_PLEASE_LOAD_PLA c=20 r=4
-"Please load PLA filament first."
-"Bitte laden Sie zuerst PLA Filament."
-
 #MSG_CHECK_IDLER c=20 r=4
 "Please open idler and remove filament manually."
 "Bitte Spannrolle oeffnen und Fila- ment von Hand entfernen"
@@ -750,10 +702,6 @@
 "Please press the knob to unload filament"
 "Bitte druecken Sie den Knopf um das Filament zu entladen."
 
-#
-"Please insert PLA filament to the first tube of MMU, then press the knob to load it."
-"Legen Sie bitte PLA Filament in den ersten Schlauch der MMU und druecken Sie den Knopf,  um es zu laden."
-
 #MSG_PULL_OUT_FILAMENT c=20 r=4
 "Please pull out filament immediately"
 "Bitte ziehen Sie das Filament sofort heraus"
@@ -828,7 +776,7 @@
 
 #
 "Press the knob"
-"Knopf druecken"
+"Knopf druecken zum"
 
 #MSG_PRINT_PAUSED c=20 r=1
 "Print paused"
@@ -844,7 +792,19 @@
 
 #
 "Print FAN"
-"Druckluefter"
+"Druckvent."
+
+#
+"Please insert filament into the extruder, then press the knob to load it."
+"Bitte legen Sie das Filament in den Extruder ein und druecken Sie dann den Knopf, um es zu laden."
+
+#
+"Please insert filament into the first tube of the MMU, then press the knob to load it."
+"Bitte stecken Sie das Filament in den ersten Schlauch der MMU und druecken Sie dann den Knopf, um es zu laden."
+
+#
+"Please load filament first."
+"Bitte laden Sie zuerst das Filament."
 
 #MSG_PRUSA3D
 "prusa3d.com"
@@ -868,7 +828,7 @@
 
 #MSG_CALIBRATE_BED_RESET
 "Reset XYZ calibr."
-"XYZ Kalibr. zuruecksetzen."
+"Reset XYZ Kalibr."
 
 #MSG_BED_CORRECTION_RESET
 "Reset"
@@ -886,25 +846,21 @@
 "Right side[um]"
 "Rechts [um]"
 
-#MSG_SECOND_SERIAL_ON c=17 r=1
-"RPi port     [on]"
-"RPi Port     [an]"
-
-#MSG_SECOND_SERIAL_OFF c=17 r=1
-"RPi port    [off]"
-"RPi Port    [aus]"
+#MSG_RPI_PORT
+"RPi port"
+"\x00"
 
 #MSG_WIZARD_RERUN c=20 r=7
 "Running Wizard will delete current calibration results and start from the beginning. Continue?"
 "Der Assistent wird die aktuellen Kalibrierungsdaten loeschen und von vorne beginnen. Weiterfahren?"
 
-#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-"SD card  [normal]"
-"SD Karte [normal]"
+#MSG_SD_CARD
+"SD card"
+"SD Karte"
 
-#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-"SD card [flshAir]"
-"SD Karte[flshAir]"
+#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
+"FlashAir"
+"\x00"
 
 #
 "Right"
@@ -928,7 +884,7 @@
 
 #MSG_SELFTEST
 "Selftest         "
-"Selbsttest "
+"Selbsttest       "
 
 #MSG_SELFTEST_ERROR
 "Selftest error !"
@@ -936,7 +892,7 @@
 
 #MSG_SELFTEST_FAILED c=20
 "Selftest failed  "
-"Selbsttest misslung  "
+"Selbsttest Error "
 
 #MSG_FORCE_SELFTEST c=20 r=8
 "Selftest will be run to calibrate accurate sensorless rehoming."
@@ -946,10 +902,6 @@
 "Select nozzle preheat temperature which matches your material."
 "Bitte Vorheiztemperatur auswaehlen, die Ihrem Material entspricht."
 
-#
-"Select PLA filament:"
-"PLA Filament auswaehlen:"
-
 #MSG_SET_TEMPERATURE c=19 r=1
 "Set temperature:"
 "Temp. einstellen:"
@@ -970,49 +922,49 @@
 "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
 "Einige Dateien wur- den nicht sortiert. Max. Dateien pro Verzeichnis = 100."
 
-#MSG_SORT_NONE c=17 r=1
-"Sort       [none]"
-"Sort.     [Keine]"
+#MSG_SORT
+"Sort"
+"Sort."
 
-#MSG_SORT_TIME c=17 r=1
-"Sort       [time]"
-"Sort.      [Zeit]"
+#MSG_NONE
+"None"
+"Ohne"
+
+#MSG_SORT_TIME
+"Time"
+"Zeit"
 
 #
-"Severe skew"
-"Schwerer Schraeglauf"
+"Severe skew:"
+"Schwer.Schr:"
 
-#MSG_SORT_ALPHA c=17 r=1
-"Sort   [alphabet]"
-"Sort.  [Alphabet]"
+#MSG_SORT_ALPHA
+"Alphabet"
+"\x00"
 
 #MSG_SORTING c=20 r=1
 "Sorting files"
 "Sortiere Dateien"
 
-#MSG_SOUND_LOUD c=17 r=1
-"Sound      [loud]"
-"Sound      [laut]"
+#MSG_SOUND_LOUD
+"Loud"
+"Laut"
 
 #
-"Slight skew"
-"Leichter Schraeglauf"
+"Slight skew:"
+"Leicht.Schr:"
 
-#MSG_SOUND_MUTE c=17 r=1
-"Sound      [mute]"
-"Sound     [stumm]"
+#MSG_SOUND
+"Sound"
+"\x00"
 
 #
 "Some problem encountered, Z-leveling enforced ..."
 "Fehler aufgetreten, Z-Kalibrierung erforderlich..."
 
-#MSG_SOUND_ONCE c=17 r=1
-"Sound      [once]"
-"Sound    [einmal]"
-
-#MSG_SOUND_SILENT c=17 r=1
-"Sound    [silent]"
-"Sound     [leise]"
+#MSG_SOUND_ONCE
+"Once"
+"Einmal"
 
 #MSG_SPEED
 "Speed"
@@ -1036,7 +988,7 @@
 
 #MSG_STOPPED
 "STOPPED. "
-"GESTOPPT. "
+"GESTOPPT."
 
 #MSG_SUPPORT
 "Support"
@@ -1046,17 +998,17 @@
 "Swapped"
 "Ausgetauscht"
 
-#MSG_TEMP_CALIBRATION c=20 r=1
-"Temp. cal.          "
-"Temp Kalib. "
+#
+"Select filament:"
+"Filament auswaehlen:"
 
-#MSG_TEMP_CALIBRATION_ON c=20 r=1
-"Temp. cal.   [on]"
-"Temp. Kal.   [AN]"
+#MSG_TEMP_CALIBRATION c=12 r=1
+"Temp. cal."
+"Temp Kalib."
 
-#MSG_TEMP_CALIBRATION_OFF c=20 r=1
-"Temp. cal.  [off]"
-"Temp. Kal.  [AUS]"
+#
+"Select temperature which matches your material."
+"Waehlen Sie die Temperatur, die zu Ihrem Material passt."
 
 #MSG_CALIBRATION_PINDA_MENU c=17 r=1
 "Temp. calibration"
@@ -1104,11 +1056,11 @@
 
 #
 "to load filament"
-"zum Filament laden"
+"Filament laden"
 
 #
 "to unload filament"
-"zum Filament entladen"
+"Filament entladen"
 
 #MSG_UNLOAD_FILAMENT c=17
 "Unload filament"
@@ -1230,15 +1182,166 @@
 "XYZ calibration failed. Right front calibration point not reachable."
 "XYZ-Kalibrierung fehlgeschlagen. Rechter vorderer Kalibrierpunkt ist nicht erreichbar."
 
-
 #
 "Y distance from min"
 "Y Entfernung vom Min"
 
+#
+"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)."
+"\x00"
+
 #
 "Y-correct:"
 "Y-Korrektur:"
 
 #MSG_OFF
-" [off]"
+"Off"
+"Aus"
+
+#MSG_ON
+"On"
+"An"
+
+#
+"Back"
+"Zurueck"
+
+#
+"Checks"
+"Kontrolle"
+
+#
+"False triggering"
+"Falschtriggerung"
+
+#
+"FINDA:"
+"\x00"
+
+#MSG_FIRMWARE
+"Firmware"
+"\x00"
+
+#MSG_STRICT
+"Strict"
+"Strikt"
+
+#MSG_WARN
+"Warn"
+"Warnen"
+
+#
+"HW Setup"
+"HW Einstellungen"
+
+#
+"IR:"
+"\x00"
+
+#MSG_MAGNETS_COMP
+"Magnets comp."
+"Magnet Komp."
+
+#MSG_MESH
+"Mesh"
+"Gitter"
+
+#
+"Mesh bed leveling"
+"MeshBett Ausgleich"
+
+#
+"MK3S firmware detected on MK3 printer"
+"MK3S-Firmware auf MK3-Drucker erkannt"
+
+#MSG_MMU_MODE
+"MMU Mode"
+"MMU Modus"
+
+#
+"Mode change in progress ..."
+"Moduswechsel erfolgt..."
+
+#MSG_MODEL
+"Model"
+"Modell"
+
+#MSG_NOZZLE_DIAMETER
+"Nozzle d."
+"Duese D."
+
+#
+"G-code sliced for a different level. Continue?"
+"G-Code ist fuer einen anderen Level geslict. Fortfahren?"
+
+#
+"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."
+
+#
+"G-code sliced for a different printer type. Continue?"
+"G-Code ist fuer einen anderen Drucker geslict. Fortfahren?"
+
+#
+"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."
+
+#
+"G-code sliced for a newer firmware. Continue?"
+"G-Code ist fuer eine neuere Firmware geslict. Fortfahren?"
+
+#
+"G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
+"G-Code ist fuer eine neuere Firmware geslict. Bitte die Firmware updaten. Druck abgebrochen."
+
+#
+"PINDA:"
+"\x00"
+
+#
+"Preheating to cut"
+"Heizen zum Schnitt"
+
+#
+"Preheating to eject"
+"Heizen zum Auswurf"
+
+#
+"Printer nozzle diameter differs from the G-code. Continue?"
+"Der Durchmesser der Druckerduese weicht vom G-Code ab. Fortfahren?"
+
+#
+"Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
+"Der Durchmesser der Druckerduese weicht vom G-Code ab. Bitte ueberpruefen Sie den Wert in den Einstellungen. Druck abgebrochen."
+
+#
+"Rename"
+"Umbenennen"
+
+#
+"Select"
+"Auswahl"
+
+#
+"Sensor info"
+"Sensor Info"
+
+#
+"Sheet"
+"Blech"
+
+#MSG_SOUND_BLIND
+"Assist"
+"\x00"
+
+#
+"Steel sheets"
+"Stahlbleche"
+
+#
+"Z-correct:"
+"Z-Korrektur:"
+
+#MSG_Z_PROBE_NR
+"Z-probe nr."
 "\x00"

+ 271 - 167
lang/lang_en_es.txt

@@ -1,3 +1,7 @@
+#
+"[%.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_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
 " of 4"
 " de 4"
@@ -24,7 +28,7 @@
 
 #MSG_BABYSTEPPING_Z c=15
 "Adjusting Z:"
-"Ajustar Z:"
+"Ajustar-Z:"
 
 #MSG_SELFTEST_CHECK_ALLCORRECT c=20
 "All correct      "
@@ -46,16 +50,8 @@
 "Are left and right Z~carriages all up?"
 "Carros Z izq./der. estan arriba maximo?"
 
-#MSG_AUTO_DEPLETE_ON c=17 r=1
-"SpoolJoin    [on]"
-"\x00"
-
-#
-"SpoolJoin   [N/A]"
-"\x00"
-
-#MSG_AUTO_DEPLETE_OFF c=17 r=1
-"SpoolJoin   [off]"
+#MSG_AUTO_DEPLETE c=17 r=1
+"SpoolJoin"
 "\x00"
 
 #MSG_AUTO_HOME
@@ -68,11 +64,11 @@
 
 #MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
 "Autoloading filament available only when filament sensor is turned on..."
-"La carga automatica de filamento solo funciona si el sensor de filamento esta activado..."
+"La carga automatica solo funciona si el sensor de filamento esta activado..."
 
 #MSG_AUTOLOADING_ENABLED c=20 r=4
 "Autoloading filament is active, just press the knob and insert filament..."
-"La carga automatica de filamento esta activada, pulse el dial e inserte el filamento..."
+"La carga automatica esta activada, pulse el dial e inserte el filamento..."
 
 #MSG_SELFTEST_AXIS_LENGTH
 "Axis length"
@@ -104,7 +100,7 @@
 
 #MSG_BED
 "Bed"
-"Base calefactable "
+"Base"
 
 #MSG_MENU_BELT_STATUS c=15 r=1
 "Belt status"
@@ -170,17 +166,13 @@
 "Copy selected language?"
 "Copiar idioma seleccionado?"
 
-#MSG_CRASHDETECT_ON
-"Crash det.   [on]"
-"Det. choque [act]"
+#MSG_CRASHDETECT
+"Crash det."
+"Det. choque"
 
-#MSG_CRASHDETECT_NA
-"Crash det.  [N/A]"
-"Dec. choque [N/D]"
-
-#MSG_CRASHDETECT_OFF
-"Crash det.  [off]"
-"Det. choque [ina]"
+#
+"Choose a filament for the First Layer Calibration and select it in the on-screen menu."
+"Escoge un filamento para la Calibracion de la Primera Capa y seleccionalo en el menu en pantalla."
 
 #MSG_CRASH_DETECTED c=20 r=1
 "Crash detected."
@@ -216,16 +208,12 @@
 
 #MSG_EXTRUDER_CORRECTION c=10
 "E-correct:"
-"E-correcion:"
+"Corregir-E:"
 
 #MSG_EJECT_FILAMENT c=17 r=1
 "Eject filament"
 "Expulsar filamento"
 
-#
-"Eject"
-"Expulsar"
-
 #MSG_EJECTING_FILAMENT c=20 r=1
 "Ejecting filament"
 "Expulsando filamento"
@@ -256,7 +244,7 @@
 
 #MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
 "Extruder fan:"
-"Ventilador del extrusor:"
+"Vent.extrusor:"
 
 #MSG_INFO_EXTRUDER c=15 r=1
 "Extruder info"
@@ -270,17 +258,9 @@
 "Fail stats MMU"
 "Estadistica de fallos MMU"
 
-#MSG_FSENS_AUTOLOAD_ON c=17 r=1
-"F. autoload  [on]"
-"Autocarg.Fil[act]"
-
-#MSG_FSENS_AUTOLOAD_NA c=17 r=1
-"F. autoload [N/A]"
-"Autocarg.Fil[N/D]"
-
-#MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-"F. autoload [off]"
-"Autocarg.Fil[ina]"
+#MSG_FSENSOR_AUTOLOAD
+"F. autoload"
+"Autocarg.fil."
 
 #
 "Fail stats"
@@ -294,25 +274,13 @@
 "Fan test"
 "Test ventiladores"
 
-#MSG_FANS_CHECK_ON c=17 r=1
-"Fans check   [on]"
-"Comprob.vent[act]"
-
-#MSG_FANS_CHECK_OFF c=17 r=1
-"Fans check  [off]"
-"Comprob.vent[ina]"
+#MSG_FANS_CHECK
+"Fans check"
+"Comprob.vent"
 
-#MSG_FSENSOR_ON
-"Fil. sensor  [on]"
-"Sensor Fil. [act]"
-
-#MSG_FSENSOR_NA
-"Fil. sensor [N/A]"
-"Sensor Fil. [N/D]"
-
-#MSG_FSENSOR_OFF
-"Fil. sensor [off]"
-"Sensor Fil. [ina]"
+#MSG_FSENSOR
+"Fil. sensor"
+"Sensor Fil."
 
 #
 "Filam. runouts"
@@ -462,18 +430,10 @@
 "I will run z calibration now."
 "Voy a hacer Calibracion Z ahora."
 
-#MSG_WIZARD_V2_CAL_2 c=20 r=12
-"I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."
-"Voy a comenzar a imprimir la linea y tu bajaras el nozzle gradualmente al rotar el dial, hasta que llegues a la altura optima. Mira las imagenes del capitulo Calibracion en el manual."
-
 #MSG_WATCH
 "Info screen"
 "Monitorizar"
 
-#
-"Is filament 1 loaded?"
-"?Esta cargado el filamento 1?"
-
 #MSG_INSERT_FILAMENT c=20
 "Insert filament"
 "Introducir filamento"
@@ -482,14 +442,6 @@
 "Is filament loaded?"
 "Esta el filamento cargado?"
 
-#MSG_WIZARD_PLA_FILAMENT c=20 r=2
-"Is it PLA filament?"
-"Es el filamento PLA?"
-
-#MSG_PLA_FILAMENT_LOADED c=20 r=2
-"Is PLA filament loaded?"
-"Esta el filamento PLA cargado?"
-
 #MSG_STEEL_SHEET_CHECK c=20 r=2
 "Is steel sheet on heatbed?"
 "?Esta colocada la lamina de acero sobre la base?"
@@ -498,6 +450,10 @@
 "Last print failures"
 "Ultimas impresiones fallidas"
 
+#
+"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."
+
 #
 "Last print"
 "Ultima impresion"
@@ -568,7 +524,7 @@
 
 #
 "Measured skew"
-"Desviacion medida:"
+"Desviacion med:"
 
 #
 "MMU fails"
@@ -586,13 +542,17 @@
 "MMU OK. Resuming..."
 "MMU OK. Resumiendo..."
 
-#MSG_STEALTH_MODE_OFF
-"Mode     [Normal]"
-"Modo     [Normal]"
+#MSG_MODE
+"Mode"
+"Modo"
+
+#MSG_NORMAL
+"Normal"
+"\x00"
 
-#MSG_SILENT_MODE_ON
-"Mode     [silent]"
-"Modo   [silencio]"
+#MSG_SILENT
+"Silent"
+"Silencio"
 
 #
 "MMU needs user attention."
@@ -602,17 +562,17 @@
 "MMU power fails"
 "Fallo de energia en MMU"
 
-#MSG_STEALTH_MODE_ON
-"Mode    [Stealth]"
-"Modo   [Silencio]"
+#MSG_STEALTH
+"Stealth"
+"Silencio"
 
-#MSG_AUTO_MODE_ON
-"Mode [auto power]"
-"Modo[fuerza auto]"
+#MSG_AUTO_POWER
+"Auto power"
+"Fuerza auto"
 
-#MSG_SILENT_MODE_OFF
-"Mode [high power]"
-"Modo [rend.pleno]"
+#MSG_HIGH_POWER
+"High power"
+"Rend.pleno"
 
 #
 "MMU2 connected"
@@ -646,9 +606,9 @@
 "No SD card"
 "No hay tarjeta SD"
 
-#
+#MSG_NA
+"N/A"
 "N/A"
-"No disponible"
 
 #MSG_NO
 "No"
@@ -672,7 +632,7 @@
 
 #MSG_WIZARD_WILL_PREHEAT c=20 r=4
 "Now I will preheat nozzle for PLA."
-"Voy a precalentar la boquilla para PLA ahora."
+"Ahora precalentare la boquilla para PLA."
 
 #MSG_NOZZLE
 "Nozzle"
@@ -688,7 +648,7 @@
 
 #
 "Nozzle FAN"
-"Ventilador de capa"
+"Vent. capa"
 
 #MSG_PAUSE_PRINT
 "Pause print"
@@ -730,14 +690,6 @@
 "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
 "Lee el manual y resuelve el problema. Despues, reinicia la impresora y continua con el Wizard"
 
-#MSG_WIZARD_LOAD_FILAMENT c=20 r=8
-"Please insert PLA filament to the extruder, then press knob to load it."
-"Inserta, por favor, filamento PLA en el extrusor. Despues haz clic para cargarlo."
-
-#MSG_PLEASE_LOAD_PLA c=20 r=4
-"Please load PLA filament first."
-"Carga el filamento PLA primero por favor."
-
 #MSG_CHECK_IDLER c=20 r=4
 "Please open idler and remove filament manually."
 "Por favor abate el rodillo de empuje (idler) y retira el filamento manualmente."
@@ -750,10 +702,6 @@
 "Please press the knob to unload filament"
 "Por favor, pulsa el dial para descargar el filamento"
 
-#
-"Please insert PLA filament to the first tube of MMU, then press the knob to load it."
-"Por favor introduce el filamento al primer tubo MMU, despues presiona el dial para imprimirlo."
-
 #MSG_PULL_OUT_FILAMENT c=20 r=4
 "Please pull out filament immediately"
 "Por favor retire el filamento de inmediato"
@@ -820,7 +768,7 @@
 
 #MSG_SELFTEST_PRINT_FAN_SPEED c=18
 "Print fan:"
-"Ventilador del fusor:"
+"Vent.fusor:"
 
 #MSG_CARD_MENU
 "Print from SD"
@@ -844,7 +792,19 @@
 
 #
 "Print FAN"
-"Ventilador del extrusor"
+"Vent. extr"
+
+#
+"Please insert filament into the extruder, then press the knob to load it."
+"Por favor, coloca el filamento en el extrusor, luego presiona el dial para cargarlo."
+
+#
+"Please insert filament into the first tube of the MMU, then press the knob to load it."
+"Por favor, coloca el filamento en el primer tubo de la MMU, luego pulsa el dial para cargarlo."
+
+#
+"Please load filament first."
+"Por favor, cargar primero el filamento. "
 
 #MSG_PRUSA3D
 "prusa3d.com"
@@ -880,31 +840,27 @@
 
 #MSG_RESUMING_PRINT c=20 r=1
 "Resuming print"
-"Resumiendo impresion"
+"Continuando impresion"
 
 #MSG_BED_CORRECTION_RIGHT c=14 r=1
 "Right side[um]"
 "Derecha [um]"
 
-#MSG_SECOND_SERIAL_ON c=17 r=1
-"RPi port     [on]"
-"Puerto RPi  [act]"
-
-#MSG_SECOND_SERIAL_OFF c=17 r=1
-"RPi port    [off]"
-"Puerto RPi  [ina]"
+#MSG_RPI_PORT
+"RPi port"
+"Puerto RPi"
 
 #MSG_WIZARD_RERUN c=20 r=7
 "Running Wizard will delete current calibration results and start from the beginning. Continue?"
 "Ejecutar el Wizard borrara los valores de calibracion actuales y comenzara de nuevo. Continuar?"
 
-#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-"SD card  [normal]"
-"Tarj. SD [normal]"
+#MSG_SD_CARD
+"SD card"
+"Tarj. SD"
 
-#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-"SD card [flshAir]"
-"Tarj. SD[FlshAir]"
+#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
+"FlashAir"
+"\x00"
 
 #
 "Right"
@@ -946,10 +902,6 @@
 "Select nozzle preheat temperature which matches your material."
 "Selecciona la temperatura para precalentar la boquilla que se ajuste a tu material. "
 
-#
-"Select PLA filament:"
-"Seleccionar filamento PLA:"
-
 #MSG_SET_TEMPERATURE c=19 r=1
 "Set temperature:"
 "Establecer temp.:"
@@ -970,49 +922,49 @@
 "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
 "Algunos archivos no se ordenaran. Maximo 100 archivos por carpeta para ordenar. "
 
-#MSG_SORT_NONE c=17 r=1
-"Sort       [none]"
-"Ordenar    [nada]"
+#MSG_SORT
+"Sort"
+"Ordenar"
+
+#MSG_NONE
+"None"
+"Ninguno"
 
-#MSG_SORT_TIME c=17 r=1
-"Sort       [time]"
-"Ordenar   [Fecha]"
+#MSG_SORT_TIME
+"Time"
+"Fecha"
 
 #
-"Severe skew"
-"Inclinacion severa"
+"Severe skew:"
+"Incl.severa:"
 
-#MSG_SORT_ALPHA c=17 r=1
-"Sort   [alphabet]"
-"Ordenar [alfabet]"
+#MSG_SORT_ALPHA
+"Alphabet"
+"Alfabet"
 
 #MSG_SORTING c=20 r=1
 "Sorting files"
 "Ordenando archivos"
 
-#MSG_SOUND_LOUD c=17 r=1
-"Sound      [loud]"
-"Sonido     [alto]"
+#MSG_SOUND_LOUD
+"Loud"
+"Alto"
 
 #
-"Slight skew"
-"Ligeramente inclinado"
+"Slight skew:"
+"Liger.incl.:"
 
-#MSG_SOUND_MUTE c=17 r=1
-"Sound      [mute]"
-"Sonido[silenciad]"
+#MSG_SOUND
+"Sound"
+"Sonido"
 
 #
 "Some problem encountered, Z-leveling enforced ..."
 "Problema encontrado, nivelacion Z forzosa ..."
 
-#MSG_SOUND_ONCE c=17 r=1
-"Sound      [once]"
-"Sonido  [una vez]"
-
-#MSG_SOUND_SILENT c=17 r=1
-"Sound    [silent]"
-"Sonido[silencios]"
+#MSG_SOUND_ONCE
+"Once"
+"Una vez"
 
 #MSG_SPEED
 "Speed"
@@ -1046,17 +998,17 @@
 "Swapped"
 "Intercambiado"
 
-#MSG_TEMP_CALIBRATION c=20 r=1
-"Temp. cal.          "
-"Cal. temp. "
+#
+"Select filament:"
+"Selecciona filamento:"
 
-#MSG_TEMP_CALIBRATION_ON c=20 r=1
-"Temp. cal.   [on]"
-"Cal. temp.   [ON]"
+#MSG_TEMP_CALIBRATION c=12 r=1
+"Temp. cal."
+"Cal. temp."
 
-#MSG_TEMP_CALIBRATION_OFF c=20 r=1
-"Temp. cal.  [off]"
-"Cal. temp.  [OFF]"
+#
+"Select temperature which matches your material."
+"Selecciona la temperatura adecuada a tu material."
 
 #MSG_CALIBRATION_PINDA_MENU c=17 r=1
 "Temp. calibration"
@@ -1084,11 +1036,11 @@
 
 #
 "Total filament"
-"Filamento total:"
+"Filamento total"
 
 #
 "Total print time"
-"Tiempo total :"
+"Tiempo total"
 
 #MSG_TUNE
 "Tune"
@@ -1200,7 +1152,7 @@
 
 #
 "X-correct:"
-"X-correcion:"
+"Corregir-X:"
 
 #MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
 "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
@@ -1234,10 +1186,162 @@
 "Y distance from min"
 "Distancia en Y desde el min"
 
+#
+"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)."
+"\x00"
+
 #
 "Y-correct:"
-"Y-correcion:"
+"Corregir-Y:"
 
 #MSG_OFF
-" [off]"
+"Off"
+"Ina"
+
+#MSG_ON
+"On"
+"Act"
+
+#
+"Back"
+"atras"
+
+#
+"Checks"
+"Comprobaciones"
+
+#
+"False triggering"
+"Falsa activacion"
+
+#
+"FINDA:"
+"FINDA:"
+
+#MSG_FIRMWARE
+"Firmware"
+"\x00"
+
+#MSG_STRICT
+"Strict"
+"Estrict"
+
+#MSG_WARN
+"Warn"
+"Aviso"
+
+#
+"HW Setup"
+"Configuracion HW"
+
+#
+"IR:"
 "\x00"
+
+#MSG_MAGNETS_COMP
+"Magnets comp."
+"Comp. imanes"
+
+#MSG_MESH
+"Mesh"
+"Malla"
+
+#
+"Mesh bed leveling"
+"Nivelacion Malla Base"
+
+#
+"MK3S firmware detected on MK3 printer"
+"Firmware MK3S detectado en impresora MK3"
+
+#MSG_MMU_MODE
+"MMU Mode"
+"Modo MMU"
+
+#
+"Mode change in progress ..."
+"Cambio de modo progresando ..."
+
+#MSG_MODEL
+"Model"
+"Modelo"
+
+#MSG_NOZZLE_DIAMETER
+"Nozzle d."
+"Diam. nozzl"
+
+#
+"G-code sliced for a different level. Continue?"
+"Codigo G laminado para un nivel diferente. ?Continuar?"
+
+#
+"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."
+
+#
+"G-code sliced for a different printer type. Continue?"
+"Codigo G laminado para un tipo de impresora diferente. ?Continuar?"
+
+#
+"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."
+
+#
+"G-code sliced for a newer firmware. Continue?"
+"Codigo G laminado para nuevo firmware. ?Continuar?"
+
+#
+"G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
+"Codigo G laminado para nuevo firmware. Por favor actualiza el firmware. Impresion cancelada."
+
+#
+"PINDA:"
+"PINDA:"
+
+#
+"Preheating to cut"
+"Precalentando para laminar"
+
+#
+"Preheating to eject"
+"Precalentar para expulsar"
+
+#
+"Printer nozzle diameter differs from the G-code. Continue?"
+"Diametro nozzle impresora difiere de cod.G. ?Continuar?"
+
+#
+"Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
+"Diametro nozzle Impresora difiere de cod.G. Comprueba los valores en ajustes. Impresion cancelada."
+
+#
+"Rename"
+"Renombrar"
+
+#
+"Select"
+"Seleccionar"
+
+#
+"Sensor info"
+"Info sensor"
+
+#
+"Sheet"
+"Lamina"
+
+#MSG_SOUND_BLIND
+"Assist"
+"Asistido"
+
+#
+"Steel sheets"
+"Lamina de acero"
+
+#
+"Z-correct:"
+"Corregir-Z:"
+
+#MSG_Z_PROBE_NR
+"Z-probe nr."
+"Z-sensor nr."

+ 336 - 235
lang/lang_en_fr.txt

@@ -1,10 +1,14 @@
+#
+"[%.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_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
 " of 4"
-"de 4"
+" de 4"
 
 #MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
 " of 9"
-"de 9"
+" de 9"
 
 #MSG_MEASURED_OFFSET
 "[0;0] point offset"
@@ -16,7 +20,7 @@
 
 #MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
 "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
-"ATTENTION:\x0aDetection de crash\x0adesactivee en\x0amode Furtif"
+"ATTENTION:\x0aDetection de crash\x0adesactivee en\x0amode feutre"
 
 #
 ">Cancel"
@@ -24,7 +28,7 @@
 
 #MSG_BABYSTEPPING_Z c=15
 "Adjusting Z:"
-"Ajust. de Z:"
+"Ajuster Z:"
 
 #MSG_SELFTEST_CHECK_ALLCORRECT c=20
 "All correct      "
@@ -32,7 +36,7 @@
 
 #MSG_WIZARD_DONE c=20 r=8
 "All is done. Happy printing!"
-"Tout est pret. Bonne impression !"
+"Tout est pret. Bonne impression!"
 
 #
 "Ambient"
@@ -46,16 +50,8 @@
 "Are left and right Z~carriages all up?"
 "Z~carriages gauche + droite tout en haut?"
 
-#MSG_AUTO_DEPLETE_ON c=17 r=1
-"SpoolJoin    [on]"
-"\x00"
-
-#
-"SpoolJoin   [N/A]"
-"\x00"
-
-#MSG_AUTO_DEPLETE_OFF c=17 r=1
-"SpoolJoin   [off]"
+#MSG_AUTO_DEPLETE c=17 r=1
+"SpoolJoin"
 "\x00"
 
 #MSG_AUTO_HOME
@@ -64,7 +60,7 @@
 
 #MSG_AUTOLOAD_FILAMENT c=17
 "AutoLoad filament"
-"AutoCharge du filament"
+"Autocharge du fil."
 
 #MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
 "Autoloading filament available only when filament sensor is turned on..."
@@ -72,7 +68,7 @@
 
 #MSG_AUTOLOADING_ENABLED c=20 r=4
 "Autoloading filament is active, just press the knob and insert filament..."
-"Chargement auto du filament actif, appuyez sur le btn et inserez le fil."
+"Chargement auto. du fil. active, appuyez sur le bouton et inserez le fil."
 
 #MSG_SELFTEST_AXIS_LENGTH
 "Axis length"
@@ -100,7 +96,7 @@
 
 #MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
 "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
-"Echec bed leveling. Capt. non declenche. Debris sur buse ? En attente d'un reset."
+"Echec bed leveling. Capt. non declenche. Debris sur buse? En attente d'un reset."
 
 #MSG_BED
 "Bed"
@@ -112,7 +108,7 @@
 
 #MSG_RECOVER_PRINT c=20 r=2
 "Blackout occurred. Recover print?"
-"Coupure detectee. Recup. impression ?"
+"Coupure detectee. Reprendre impression?"
 
 #
 "Calibrating home"
@@ -132,15 +128,15 @@
 
 #MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
 "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
-"Calibration de XYZ. Tournez le bouton pour monter le chariot de l'axe Z jusqu'aux butees. Cliquez une fois fait."
+"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
 "Calibrating Z"
-"Calibration de Z"
+"Calibration Z"
 
 #MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
 "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
-"Calibration de Z. Tournez le bouton pour monter le chariot de l'axe Z jusqu'aux butees. Cliquez une fois fait."
+"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
 "Calibration done"
@@ -168,19 +164,15 @@
 
 #
 "Copy selected language?"
-"Copier la langue selectionne ?"
-
-#MSG_CRASHDETECT_ON
-"Crash det.   [on]"
-"Detect. crash[on]"
+"Copier la langue selectionne?"
 
-#MSG_CRASHDETECT_NA
-"Crash det.  [N/A]"
-"Detect. crash [N/A]"
+#MSG_CRASHDETECT
+"Crash det."
+"Detect.crash"
 
-#MSG_CRASHDETECT_OFF
-"Crash det.  [off]"
-"Detect. crash[off]"
+#
+"Choose a filament for the First Layer Calibration and select it in the on-screen menu."
+"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
 "Crash detected."
@@ -188,7 +180,7 @@
 
 #
 "Crash detected. Resume print?"
-"Crash detecte. Poursuivre l'impression ?"
+"Crash detecte. Poursuivre l'impression?"
 
 #
 "Crash"
@@ -200,7 +192,7 @@
 
 #MSG_DATE c=17 r=1
 "Date:"
-"Date :"
+"Date:"
 
 #MSG_DISABLE_STEPPERS
 "Disable steppers"
@@ -212,7 +204,7 @@
 
 #MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
 "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
-"Voulez-vous repeter la derniere etape pour reajuster la distance entre la buse et le plateau chauffant ?"
+"Voulez-vous repeter la derniere etape pour reajuster la distance entre la buse et le plateau chauffant?"
 
 #MSG_EXTRUDER_CORRECTION c=10
 "E-correct:"
@@ -220,15 +212,11 @@
 
 #MSG_EJECT_FILAMENT c=17 r=1
 "Eject filament"
-"Ejecter le fil."
-
-#
-"Eject"
-"Ejecter"
+"Remonter le fil."
 
 #MSG_EJECTING_FILAMENT c=20 r=1
 "Ejecting filament"
-"Ejection filament"
+"Le fil. remonte"
 
 #MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
 "Endstop not hit"
@@ -248,11 +236,11 @@
 
 #MSG_FSENS_NOT_RESPONDING c=20 r=4
 "ERROR: Filament sensor is not responding, please check connection."
-"ERREUR : Le capteur de filament ne repond pas, verifiez le branchement."
+"ERREUR: Le capteur de filament ne repond pas, verifiez le branchement."
 
 #MSG_ERROR
 "ERROR:"
-"ERREUR :"
+"ERREUR:"
 
 #MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
 "Extruder fan:"
@@ -268,59 +256,37 @@
 
 #
 "Fail stats MMU"
-"Stat. echecs MMU"
-
-#MSG_FSENS_AUTOLOAD_ON c=17 r=1
-"F. autoload  [on]"
-"ChargAuto f. [on]"
-
-#MSG_FSENS_AUTOLOAD_NA c=17 r=1
-"F. autoload [N/A]"
-"AutoCharg F [N/A]"
-
-#MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-"F. autoload [off]"
-"AutoCharg F [off]"
+"Stat. d'echec MMU"
 
+#MSG_FSENSOR_AUTOLOAD
+"F. autoload"
+"Autochargeur"
 #
 "Fail stats"
-"Statist. d'echec"
+"Stat. d'echec"
 
 #MSG_FAN_SPEED c=14
 "Fan speed"
-"Vitesse ventil"
+"Vitesse vent."
 
 #MSG_SELFTEST_FAN c=20
 "Fan test"
-"Test ventilateur"
-
-#MSG_FANS_CHECK_ON c=17 r=1
-"Fans check   [on]"
-"Verif ventilo[on]"
+"Test du ventilateur"
 
-#MSG_FANS_CHECK_OFF c=17 r=1
-"Fans check  [off]"
-"Verif venti [off]"
-
-#MSG_FSENSOR_ON
-"Fil. sensor  [on]"
-"Capteur Fil. [on]"
-
-#MSG_FSENSOR_NA
-"Fil. sensor [N/A]"
-"Capteur Fil. [N/A]"
-
-#MSG_FSENSOR_OFF
-"Fil. sensor [off]"
-"Capteur Fil.[off]"
+#MSG_FANS_CHECK
+"Fans check"
+"Verif vent."
 
+#MSG_FSENSOR
+"Fil. sensor"
+"Capteur Fil."
 #
 "Filam. runouts"
 "Fins de filament"
 
 #MSG_FILAMENT_CLEAN c=20 r=2
 "Filament extruding & with correct color?"
-"Filament extrude et avec bonne couleur ?"
+"Filament extrude et avec bonne couleur?"
 
 #MSG_NOT_LOADED c=19
 "Filament not loaded"
@@ -340,11 +306,11 @@
 
 #MSG_FILE_INCOMPLETE c=20 r=2
 "File incomplete. Continue anyway?"
-"Fichier incomplet. Continuer qd meme ?"
+"Fichier incomplet. Continuer qd meme?"
 
 #MSG_FINISHING_MOVEMENTS c=20 r=1
 "Finishing movements"
-"Mouvements de fin"
+"Mouvement final"
 
 #MSG_V2_CALIBRATION c=17 r=1
 "First layer cal."
@@ -352,11 +318,11 @@
 
 #MSG_WIZARD_SELFTEST c=20 r=8
 "First, I will run the selftest to check most common assembly problems."
-"D'abord, je vais lancer le Selftest pour verifier les problemes d'assemblage les plus communs."
+"D'abord, je vais lancer le Auto-test pour verifier les problemes d'assemblage les plus communs."
 
 #
 "Fix the issue and then press button on MMU unit."
-"Corrigez le probleme et appuyez sur le bouton de l'unite MMU."
+"Corrigez le probleme et appuyez sur le bouton sur la MMU."
 
 #MSG_FLOW
 "Flow"
@@ -368,7 +334,7 @@
 
 #MSG_SELFTEST_COOLING_FAN c=20
 "Front print fan?"
-"Ventilo impr avant ?"
+"Ventilo impr avant?"
 
 #MSG_BED_CORRECTION_FRONT c=14 r=1
 "Front side[um]"
@@ -384,7 +350,7 @@
 
 #MSG_BED_HEATING_SAFETY_DISABLED
 "Heating disabled by safety timer."
-"Chauffe desactivee par le compteur de securite."
+"Chauffage desactivee par le compteur de securite."
 
 #MSG_HEATING_COMPLETE c=20
 "Heating done."
@@ -396,7 +362,7 @@
 
 #MSG_WIZARD_WELCOME c=20 r=7
 "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
-"Bonjour, je suis votre imprimante Original Prusa i3. Voulez-vous que je vous guide a travers le processus d'installation ?"
+"Bonjour, je suis votre imprimante Original Prusa i3. Voulez-vous que je vous guide a travers le processus d'installation?"
 
 #MSG_PRUSA3D_HOWTO
 "howto.prusa3d.com"
@@ -420,11 +386,11 @@
 
 #MSG_SELFTEST_CHECK_ENDSTOPS c=20
 "Checking endstops"
-"Verifications butees"
+"Verification butees"
 
 #MSG_SELFTEST_CHECK_HOTEND c=20
 "Checking hotend  "
-"Verif. tete impr."
+"Verif. du hotend"
 
 #MSG_SELFTEST_CHECK_FSENSOR c=20
 "Checking sensors "
@@ -444,11 +410,11 @@
 
 #MSG_CHOOSE_EXTRUDER c=20 r=1
 "Choose extruder:"
-"Choisir extrudeur :"
+"Choisir extrudeur:"
 
 #MSG_CHOOSE_FILAMENT c=20 r=1
 "Choose filament:"
-"Choix du filament :"
+"Choix du filament:"
 
 #MSG_FILAMENT c=17 r=1
 "Filament"
@@ -456,51 +422,39 @@
 
 #MSG_WIZARD_XYZ_CAL c=20 r=8
 "I will run xyz calibration now. It will take approx. 12 mins."
-"Je vais maintenant lancer la calibration xyz. Cela prendra 12 min environ."
+"Je vais maintenant lancer la calibration XYZ. Cela prendra 12 min environ."
 
 #MSG_WIZARD_Z_CAL c=20 r=8
 "I will run z calibration now."
-"Je vais maintenant lancer la calibration z."
-
-#MSG_WIZARD_V2_CAL_2 c=20 r=12
-"I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."
-"Je vais commencer a imprimer une ligne et vous baisserez au fur et a mesure la buse en tournant le bouton jusqu'a atteindre la hauteur optimale. Regardez les photos dans notre manuel au chapitre Calibration"
+"Je vais maintenant lancer la calibration Z."
 
 #MSG_WATCH
 "Info screen"
 "Ecran d'info"
 
-#
-"Is filament 1 loaded?"
-"Le filament 1 est-il charge ?"
-
 #MSG_INSERT_FILAMENT c=20
 "Insert filament"
 "Inserez le filament"
 
 #MSG_WIZARD_FILAMENT_LOADED c=20 r=2
 "Is filament loaded?"
-"Le filament est-il charge ?"
-
-#MSG_WIZARD_PLA_FILAMENT c=20 r=2
-"Is it PLA filament?"
-"Est-ce du filament PLA ?"
-
-#MSG_PLA_FILAMENT_LOADED c=20 r=2
-"Is PLA filament loaded?"
-"Le filament PLA est-il charge ?"
+"Fil. est-il charge?"
 
 #MSG_STEEL_SHEET_CHECK c=20 r=2
 "Is steel sheet on heatbed?"
-"Feuille d'acier sur plateau chauffant ?"
+"Plaque d'impression sur le lit chauffant?"
 
 #
 "Last print failures"
-"Echecs derniere impr"
+"Echecs derniere imp."
+
+#
+"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 - Feuilles d'acier."
 
 #
 "Last print"
-"Derniere impression"
+"Derniere impres."
 
 #MSG_SELFTEST_EXTRUDER_FAN c=20
 "Left hotend fan?"
@@ -520,7 +474,7 @@
 
 #MSG_BABYSTEP_Z
 "Live adjust Z"
-"Ajuster Z en direct"
+"Ajuster Z en dir."
 
 #MSG_LOAD_FILAMENT c=17
 "Load filament"
@@ -528,11 +482,11 @@
 
 #MSG_LOADING_COLOR
 "Loading color"
-"Chargement couleur"
+"Charg. de la couleur"
 
 #MSG_LOADING_FILAMENT c=20
 "Loading filament"
-"Chargement filament"
+"Chargement du fil."
 
 #MSG_LOOSE_PULLEY c=20 r=1
 "Loose pulley"
@@ -540,7 +494,7 @@
 
 #
 "Load to nozzle"
-"Charger dans la buse"
+"Charger la buse"
 
 #MSG_M117_V2_CALIBRATION c=25 r=1
 "M117 First layer cal."
@@ -548,7 +502,7 @@
 
 #MSG_MAIN
 "Main"
-"Principal"
+"Menu principal"
 
 #MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
 "Measuring reference height of calibration point"
@@ -564,15 +518,15 @@
 
 #MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
 "MMU OK. Resuming temperature..."
-"MMU OK. Remontee en temperature..."
+"MMU OK. Rechauffage de la buse..."
 
 #
 "Measured skew"
-"Deviation mesuree"
+"Deviat.mesuree"
 
 #
 "MMU fails"
-"Echec MMU"
+"Echecs MMU"
 
 #
 "MMU load failed     "
@@ -586,13 +540,17 @@
 "MMU OK. Resuming..."
 "MMU OK. Reprise ..."
 
-#MSG_STEALTH_MODE_OFF
-"Mode     [Normal]"
+#MSG_MODE
+"Mode"
+"\x00"
+
+#MSG_NORMAL
+"Normal"
 "\x00"
 
-#MSG_SILENT_MODE_ON
-"Mode     [silent]"
-"Mode [silencieux]"
+#MSG_SILENT
+"Silent"
+"Feutre"
 
 #
 "MMU needs user attention."
@@ -602,17 +560,17 @@
 "MMU power fails"
 "Echecs alim. MMU"
 
-#MSG_STEALTH_MODE_ON
-"Mode    [Stealth]"
-"Mode [Furtif]"
+#MSG_STEALTH
+"Stealth"
+"Furtif"
 
-#MSG_AUTO_MODE_ON
-"Mode [auto power]"
-"Mode [puiss.auto]"
+#MSG_AUTO_POWER
+"Auto power"
+"Puiss.auto"
 
-#MSG_SILENT_MODE_OFF
-"Mode [high power]"
-"Mode [haute puiss]"
+#MSG_HIGH_POWER
+"High power"
+"Haute puiss"
 
 #
 "MMU2 connected"
@@ -646,7 +604,7 @@
 "No SD card"
 "Pas de carte SD"
 
-#
+#MSG_NA
 "N/A"
 "\x00"
 
@@ -684,11 +642,11 @@
 
 #
 "Now remove the test print from steel sheet."
-"Retirez maintenant l'impression de test de la feuille d'acier."
+"Retirez maintenant l'impression de test de la plaque en acier."
 
 #
 "Nozzle FAN"
-"Ventilateur buse"
+"Vent. buse"
 
 #MSG_PAUSE_PRINT
 "Pause print"
@@ -716,7 +674,7 @@
 
 #MSG_WIZARD_CLEAN_HEATBED c=20 r=8
 "Please clean heatbed and then press the knob."
-"Nettoyez le plateau chauffant et appuyez sur le bouton."
+"Nettoyez la plaque en acier et appuyez sur le bouton."
 
 #MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
 "Please clean the nozzle for calibration. Click when done."
@@ -724,19 +682,11 @@
 
 #MSG_SELFTEST_PLEASECHECK
 "Please check :"
-"Verifiez :"
+"Verifiez:"
 
 #MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
 "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
-"Merci de verifier notre manuel et de corriger le probleme. Poursuivez alors l'assistant en redemarrant l'imprimante."
-
-#MSG_WIZARD_LOAD_FILAMENT c=20 r=8
-"Please insert PLA filament to the extruder, then press knob to load it."
-"Inserez du filament PLA dans l'extrudeur puis appuyez sur le bouton pour le charger."
-
-#MSG_PLEASE_LOAD_PLA c=20 r=4
-"Please load PLA filament first."
-"Chargez d'abord le filament PLA."
+"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
 "Please open idler and remove filament manually."
@@ -744,16 +694,12 @@
 
 #MSG_PLACE_STEEL_SHEET c=20 r=4
 "Please place steel sheet on heatbed."
-"Placez la feuille d'acier sur le plateau chauffant."
+"Placez la plaque en acier sur le plateau chauffant."
 
 #MSG_PRESS_TO_UNLOAD c=20 r=4
 "Please press the knob to unload filament"
 "Appuyez sur le bouton pour decharger le filament"
 
-#
-"Please insert PLA filament to the first tube of MMU, then press the knob to load it."
-"Veuillez inserer du filament PLA dans le premier tube du MMU, et pressez sur le bouton pour le charger."
-
 #MSG_PULL_OUT_FILAMENT c=20 r=4
 "Please pull out filament immediately"
 "Retirez immediatement le filament"
@@ -764,7 +710,7 @@
 
 #MSG_REMOVE_STEEL_SHEET c=20 r=4
 "Please remove steel sheet from heatbed."
-"Retirez la feuille d'acier du plateau chauffant."
+"Retirez la plaque en acier du plateau chauffant."
 
 #MSG_RUN_XYZ c=20 r=4
 "Please run XYZ calibration first."
@@ -780,7 +726,7 @@
 
 #
 "Please remove shipping helpers first."
-"Veuillez retirer d'abord les protections d'envoi."
+"Retirez d'abord les protections de transport."
 
 #MSG_PREHEAT_NOZZLE c=20
 "Preheat the nozzle!"
@@ -804,27 +750,27 @@
 
 #
 "Power failures"
-"Coupures de courant"
+"Coup.de courant"
 
 #MSG_PRINT_ABORTED c=20
 "Print aborted"
 "Impression annulee"
 
-#
+# c=20 r=1
 "Preheating to load"
 "Chauffe pour charger"
 
-#
+# c=20 r=1
 "Preheating to unload"
-"Chauffe pr decharger"
+"Chauf.pour decharger"
 
 #MSG_SELFTEST_PRINT_FAN_SPEED c=18
 "Print fan:"
-"Ventilo impr. :"
+"Vent. impr:"
 
 #MSG_CARD_MENU
 "Print from SD"
-"Impr depuis la SD"
+"Impr. depuis la SD"
 
 #
 "Press the knob"
@@ -836,7 +782,7 @@
 
 #
 "Press the knob to resume nozzle temperature."
-"Appuyez sur le bouton pour poursuivre la mise en temperature de la buse."
+"Appuyez sur le bouton pour rechauffer la buse."
 
 #MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
 "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
@@ -844,7 +790,19 @@
 
 #
 "Print FAN"
-"Ventilo impression"
+"Vent. impr"
+
+#
+"Please insert filament into the extruder, then press the knob to load it."
+"Veuillez inserer le filament dans l'extrudeur, puis appuyez sur le bouton pour le charger."
+
+#
+"Please insert filament into the first tube of the MMU, then press the knob to load it."
+"Veuillez inserer le filament dans le premier tube du MMU, puis appuyez sur le bouton pour le charger."
+
+#
+"Please load filament first."
+"Veuillez d'abord charger un filament."
 
 #MSG_PRUSA3D
 "prusa3d.com"
@@ -868,7 +826,7 @@
 
 #MSG_CALIBRATE_BED_RESET
 "Reset XYZ calibr."
-"Reinit. calibr. XYZ"
+"Reinit. calib. XYZ"
 
 #MSG_BED_CORRECTION_RESET
 "Reset"
@@ -886,25 +844,21 @@
 "Right side[um]"
 "Droite [um]"
 
-#MSG_SECOND_SERIAL_ON c=17 r=1
-"RPi port     [on]"
-"Port RPi [on]"
-
-#MSG_SECOND_SERIAL_OFF c=17 r=1
-"RPi port    [off]"
-"Port RPi [off]"
+#MSG_RPI_PORT
+"RPi port"
+"Port RPi"
 
 #MSG_WIZARD_RERUN c=20 r=7
 "Running Wizard will delete current calibration results and start from the beginning. Continue?"
-"Lancer l'Assistant supprimera les resultats actuels de calibration et commencera du debut. Continuer ?"
+"Lancement de l'Assistant supprimera les resultats actuels de calibration et commencera du debut. Continuer?"
 
-#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-"SD card  [normal]"
-"Carte SD [normal]"
+#MSG_SD_CARD
+"SD card"
+"Carte SD"
 
-#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-"SD card [flshAir]"
-"Carte SD [flashAir]"
+#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
+"FlashAir"
+"FlshAir"
 
 #
 "Right"
@@ -932,7 +886,7 @@
 
 #MSG_SELFTEST_ERROR
 "Selftest error !"
-"Erreur auto-test !"
+"Erreur auto-test!"
 
 #MSG_SELFTEST_FAILED c=20
 "Selftest failed  "
@@ -946,13 +900,9 @@
 "Select nozzle preheat temperature which matches your material."
 "Selectionnez la temperature de prechauffage de la buse qui correspond a votre materiau."
 
-#
-"Select PLA filament:"
-"Selectionnez le filament PLA :"
-
 #MSG_SET_TEMPERATURE c=19 r=1
 "Set temperature:"
-"Regler temp. :"
+"Regler temp.:"
 
 #MSG_SETTINGS
 "Settings"
@@ -970,50 +920,49 @@
 "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
 "Certains fichiers ne seront pas tries. Max 100 fichiers tries par dossier."
 
-#MSG_SORT_NONE c=17 r=1
-"Sort       [none]"
-"Tri :     [aucun]"
+#MSG_SORT
+"Sort"
+"Tri"
+
+#MSG_NONE
+"None"
+"Aucun"
 
-#MSG_SORT_TIME c=17 r=1
-"Sort       [time]"
-"Tri       [heure]"
+#MSG_SORT_TIME
+"Time"
+"Heure"
 
 #
-"Severe skew"
-"Deviation severe"
+"Severe skew:"
+"Deviat.sev.:"
 
-#MSG_SORT_ALPHA c=17 r=1
-"Sort   [alphabet]"
-"Tri    [alphabet]"
+#MSG_SORT_ALPHA
+"Alphabet"
+"\x00"
 
 #MSG_SORTING c=20 r=1
 "Sorting files"
 "Tri des fichiers"
 
-#MSG_SOUND_LOUD c=17 r=1
-"Sound      [loud]"
-"Son [fort]"
+#MSG_SOUND_LOUD
+"Loud"
+"Fort"
 
 #
-"Slight skew"
-"Deviation legere"
+"Slight skew:"
+"Deviat.leg.:"
 
-#MSG_SOUND_MUTE c=17 r=1
-"Sound      [mute]"
-"Son [muet]"
+#MSG_SOUND
+"Sound"
+"Son"
 
 #
 "Some problem encountered, Z-leveling enforced ..."
-"Problemes rencontres, nivellement de l'axe Z applique..."
-
-#MSG_SOUND_ONCE c=17 r=1
-"Sound      [once]"
-"Son [une fois]"
-
-#MSG_SOUND_SILENT c=17 r=1
-"Sound    [silent]"
-"Son [silencieux]"
+"Probleme rencontre, cliquez sur le bouton pour niveller l'axe Z..."
 
+#MSG_SOUND_ONCE
+"Once"
+"Une fois"
 #MSG_SPEED
 "Speed"
 "Vitesse"
@@ -1046,17 +995,17 @@
 "Swapped"
 "Echange"
 
-#MSG_TEMP_CALIBRATION c=20 r=1
-"Temp. cal.          "
-"Calib. Temp."
+#
+"Select filament:"
+"Selectionnez le filament:"
 
-#MSG_TEMP_CALIBRATION_ON c=20 r=1
-"Temp. cal.   [on]"
-"Calib. Temp. [on]"
+#MSG_TEMP_CALIBRATION c=12 r=1
+"Temp. cal."
+"Calib. Temp."
 
-#MSG_TEMP_CALIBRATION_OFF c=20 r=1
-"Temp. cal.  [off]"
-"Calib. Temp.[off]"
+#
+"Select temperature which matches your material."
+"Selectionnez la temperature qui correspond a votre materiau."
 
 #MSG_CALIBRATION_PINDA_MENU c=17 r=1
 "Temp. calibration"
@@ -1080,7 +1029,7 @@
 
 #MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
 "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
-"Il y a encore besoin d'effectuer la calibration Z. Veuillez suivre le manuel, chapitre Premiers pas, section Processus de calibration."
+"Il faut toujours effectuer la Calibration Z. Veuillez suivre le manuel, chapitre Premiers pas, section Processus de calibration."
 
 #
 "Total filament"
@@ -1148,23 +1097,23 @@
 
 #
 "Use unload to remove filament 1 if it protrudes outside of the rear MMU tube. Use eject if it is hidden in tube."
-"Utilisez decharger pour retirer le filament 1 s'il depasse du  tube arriere du MMU. Utilisez ejecter s'il est cache dans le tube."
+"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
 "Warning: both printer type and motherboard type changed."
-"Attention : Types d'imprimante et de carte mere modifies"
+"Attention: Types d'imprimante et de carte mere modifies"
 
 #MSG_CHANGED_MOTHERBOARD c=20 r=4
 "Warning: motherboard type changed."
-"Attention : Type de carte mere modifie."
+"Attention: Type de carte mere modifie."
 
 #MSG_CHANGED_PRINTER c=20 r=4
 "Warning: printer type changed."
-"Attention : Type d'imprimante modifie"
+"Attention: Type d'imprimante modifie"
 
 #MSG_UNLOAD_SUCCESSFUL c=20 r=2
 "Was filament unload successful?"
-"Dechargement du filament reussi ?"
+"Dechargement du filament reussi?"
 
 #MSG_SELFTEST_WIRINGERROR
 "Wiring error"
@@ -1188,7 +1137,7 @@
 
 #MSG_WIZARD_QUIT c=20 r=8
 "You can always resume the Wizard from Calibration -> Wizard."
-"Vous pouvez toujours relancer l'assistant dans Calibration-> Assistant."
+"Vous pouvez toujours relancer l'Assistant dans Calibration > Assistant."
 
 #MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
 "XYZ calibration all right. Skew will be corrected automatically."
@@ -1196,7 +1145,7 @@
 
 #MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
 "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
-"Calibration XYZ OK. Les axes X/Y sont legerement non perpendiculaires. Bon boulot !"
+"Calibration XYZ OK. Les axes X/Y sont legerement non perpendiculaires. Bon boulot!"
 
 #
 "X-correct:"
@@ -1204,11 +1153,11 @@
 
 #MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
 "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
-"Calibration XYZ OK. Les axes X/Y sont perpendiculaires. Felicitations !"
+"Calibration XYZ OK. Les axes X/Y sont perpendiculaires. Felicitations!"
 
 #MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
 "XYZ calibration compromised. Front calibration points not reachable."
-"Calibration XYZ compromise. Les points de calibration avant ne sont pas atteignables."
+"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
 "XYZ calibration compromised. Right front calibration point not reachable."
@@ -1216,7 +1165,7 @@
 
 #MSG_LOAD_ALL c=17
 "Load all"
-"Tout charger"
+"Charger un par un"
 
 #
 "XYZ calibration failed. Bed calibration point was not found."
@@ -1224,7 +1173,7 @@
 
 #
 "XYZ calibration failed. Front calibration points not reachable."
-"Echec calibration XYZ. Les points de calibration avant ne sont pas atteignables."
+"Echec calibration XYZ. Les points de calibration en avant ne sont pas atteignables."
 
 #
 "XYZ calibration failed. Right front calibration point not reachable."
@@ -1234,10 +1183,162 @@
 "Y distance from min"
 "Distance Y du min"
 
+#
+"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)."
+"\x00"
+
 #
 "Y-correct:"
 "Correct-Y:"
 
 #MSG_OFF
-" [off]"
+"Off"
 "\x00"
+
+#MSG_ON
+"On"
+"\x00"
+
+#
+"Back"
+"Retour"
+
+#
+"Checks"
+"Verifications"
+
+#
+"False triggering"
+"Faux declenchement"
+
+#
+"FINDA:"
+"FINDA:"
+
+#MSG_FIRMWARE
+"Firmware"
+"\x00"
+
+#MSG_STRICT
+"Strict"
+"Stricte"
+
+#MSG_WARN
+"Warn"
+"Avert"
+
+#
+"HW Setup"
+"Config HW"
+
+#
+"IR:"
+"IR:"
+
+#MSG_MAGNETS_COMP
+"Magnets comp."
+"Compens. aim."
+
+#MSG_MESH
+"Mesh"
+"\x00"
+
+#
+"Mesh bed leveling"
+"\x00"
+
+#
+"MK3S firmware detected on MK3 printer"
+"Firmware MK3S detecte sur imprimante MK3"
+
+#MSG_MMU_MODE
+"MMU Mode"
+"Mode MMU"
+
+#
+"Mode change in progress ..."
+"Changement de mode en cours..."
+
+#MSG_MODEL
+"Model"
+"Modele"
+
+#MSG_NOZZLE_DIAMETER
+"Nozzle d."
+"Diam. buse"
+
+#
+"G-code sliced for a different level. Continue?"
+"\x00"
+
+#
+"G-code sliced for a different level. Please re-slice the model again. Print cancelled."
+"\x00"
+
+#
+"G-code sliced for a different printer type. Continue?"
+"Le G-code a ete prepare pour une autre version de l'imprimante. Continuer?"
+
+#
+"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."
+
+#
+"G-code sliced for a newer firmware. Continue?"
+"Le G-code a ete prepare pour une version plus recente du firmware. Continuer?"
+
+#
+"G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
+"Le G-code a ete prepare pour une version plus recente du firmware. Veuillez mettre a jour le firmware. L'impression annulee."
+
+#
+"PINDA:"
+"PINDA:"
+
+# c=20 r=1
+"Preheating to cut"
+"Chauffe pour couper"
+
+# c=20 r=1
+"Preheating to eject"
+"Chauf. pour remonter"
+
+#
+"Printer nozzle diameter differs from the G-code. Continue?"
+"Diametre de la buse dans les reglages ne correspond pas a celui dans le G-Code. Continuer?"
+
+#
+"Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
+"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."
+
+#
+"Rename"
+"Renommer"
+
+#
+"Select"
+"Selectionner"
+
+#
+"Sensor info"
+"Info capteur"
+
+#
+"Sheet"
+"Plaque"
+
+#MSG_SOUND_BLIND
+"Assist"
+"\x00"
+
+#
+"Steel sheets"
+"Plaques en acier"
+
+#
+"Z-correct:"
+"Correct-Z:"
+
+#MSG_Z_PROBE_NR
+"Z-probe nr."
+"Mesurer x-fois"

+ 275 - 172
lang/lang_en_it.txt

@@ -1,10 +1,14 @@
+#
+"[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
+"[%.7s]Set valori\x0aComp. Z, continuare\x0ao iniziare da zero?\x0a%cContinua%cReset"
+
 #MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
 " of 4"
 " su 4"
 
 #MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
 " of 9"
-"su 9"
+" su 9"
 
 #MSG_MEASURED_OFFSET
 "[0;0] point offset"
@@ -15,7 +19,7 @@
 "Rilev. impatto\x0aattivabile solo\x0ain Modalita normale"
 
 #MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
-"WARNING:\x0aCrash detection disabled in Stealth mode"
+"WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
 "ATTENZIONE:\x0aRilev. impatto\x0adisattivato in\x0aModalita silenziosa"
 
 #
@@ -46,16 +50,8 @@
 "Are left and right Z~carriages all up?"
 "I carrelli Z sin/des sono altezza max?"
 
-#MSG_AUTO_DEPLETE_ON c=17 r=1
-"SpoolJoin    [on]"
-"\x00"
-
-#
-"SpoolJoin   [N/A]"
-"\x00"
-
-#MSG_AUTO_DEPLETE_OFF c=17 r=1
-"SpoolJoin   [off]"
+#MSG_AUTO_DEPLETE c=17 r=1
+"SpoolJoin"
 "\x00"
 
 #MSG_AUTO_HOME
@@ -72,7 +68,7 @@
 
 #MSG_AUTOLOADING_ENABLED c=20 r=4
 "Autoloading filament is active, just press the knob and insert filament..."
-"Il caricamento automatico e attivo, premete la manopola e inserite il filamento..."
+"Caricamento automatico attivo, premi la manopola e inserisci il filamento."
 
 #MSG_SELFTEST_AXIS_LENGTH
 "Axis length"
@@ -108,7 +104,7 @@
 
 #MSG_MENU_BELT_STATUS c=15 r=1
 "Belt status"
-"Stato delle cinghie"
+"Stato cinghie"
 
 #MSG_RECOVER_PRINT c=20 r=2
 "Blackout occurred. Recover print?"
@@ -170,17 +166,13 @@
 "Copy selected language?"
 "Copiare la lingua selezionata?"
 
-#MSG_CRASHDETECT_ON
-"Crash det.   [on]"
-"Rilevam.imp. [on]"
-
-#MSG_CRASHDETECT_NA
-"Crash det.  [N/A]"
-"Rilevam.imp.[N/A]"
+#MSG_CRASHDETECT
+"Crash det."
+"Rileva.crash"
 
-#MSG_CRASHDETECT_OFF
-"Crash det.  [off]"
-"Rilevam.imp.[off]"
+#
+"Choose a filament for the First Layer Calibration and select it in the on-screen menu."
+"Scegli un filamento per la calibrazione del primo strato e selezionalo nel menu sullo schermo."
 
 #MSG_CRASH_DETECTED c=20 r=1
 "Crash detected."
@@ -222,10 +214,6 @@
 "Eject filament"
 "Espelli filamento "
 
-#
-"Eject"
-"Espellere"
-
 #MSG_EJECTING_FILAMENT c=20 r=1
 "Ejecting filament"
 "Espellendo filamento "
@@ -256,7 +244,7 @@
 
 #MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
 "Extruder fan:"
-"Ventola estrusore:"
+"Ventola estr:"
 
 #MSG_INFO_EXTRUDER c=15 r=1
 "Extruder info"
@@ -268,52 +256,31 @@
 
 #
 "Fail stats MMU"
-"Statistiche fallimenti MMU"
-
-#MSG_FSENS_AUTOLOAD_ON c=17 r=1
-"F. autoload  [on]"
-"Autocar.filam[on]"
+"Stat.fall. MMU"
 
-#MSG_FSENS_AUTOLOAD_NA c=17 r=1
-"F. autoload [N/A]"
-"Autocar.fil.[N/A]"
-
-#MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-"F. autoload [off]"
-"Autocar.fil.[off]"
+#MSG_FSENSOR_AUTOLOAD
+"F. autoload"
+"Autocar.fil."
 
 #
 "Fail stats"
-"Statistiche fallimenti"
+"Stat. fallimenti"
 
 #MSG_FAN_SPEED c=14
 "Fan speed"
-"Velocita ventola"
+"Velocita vent."
 
 #MSG_SELFTEST_FAN c=20
 "Fan test"
 "Test ventola"
 
-#MSG_FANS_CHECK_ON c=17 r=1
-"Fans check   [on]"
-"Controllo ventole [on]"
-
-#MSG_FANS_CHECK_OFF c=17 r=1
-"Fans check  [off]"
-"Control.vent[off]"
-
-#MSG_FSENSOR_ON
-"Fil. sensor  [on]"
-"Sensor filam.[On]"
-
-#MSG_FSENSOR_NA
-"Fil. sensor [N/A]"
-"Sensor filam[N/A]"
-
-#MSG_FSENSOR_OFF
-"Fil. sensor [off]"
-"Sensor filam[off]"
+#MSG_FANS_CHECK
+"Fans check"
+"Control.vent"
 
+#MSG_FSENSOR
+"Fil. sensor"
+"Sensore fil."
 #
 "Filam. runouts"
 "Filam. esauriti"
@@ -348,7 +315,7 @@
 
 #MSG_V2_CALIBRATION c=17 r=1
 "First layer cal."
-"Calibrazione primo layer."
+"Cal. primo strato"
 
 #MSG_WIZARD_SELFTEST c=20 r=8
 "First, I will run the selftest to check most common assembly problems."
@@ -462,18 +429,10 @@
 "I will run z calibration now."
 "Adesso avviero la Calibrazione Z."
 
-#MSG_WIZARD_V2_CAL_2 c=20 r=12
-"I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."
-"Adesso iniziero a stampare una linea e tu dovrai abbassare l'ugello poco per volta ruotando la manopola sino a raggiungere una altezza ottimale. Per favore dai uno sguardo all'immagine del nostro manuale, cap.Calibrazione."
-
 #MSG_WATCH
 "Info screen"
 "Schermata info"
 
-#
-"Is filament 1 loaded?"
-"Il filamento 1 e caricato?"
-
 #MSG_INSERT_FILAMENT c=20
 "Insert filament"
 "Inserire filamento"
@@ -482,14 +441,6 @@
 "Is filament loaded?"
 "Il filamento e stato caricato?"
 
-#MSG_WIZARD_PLA_FILAMENT c=20 r=2
-"Is it PLA filament?"
-"E' un filamento di PLA?"
-
-#MSG_PLA_FILAMENT_LOADED c=20 r=2
-"Is PLA filament loaded?"
-"E' stato caricato il filamento di PLA?"
-
 #MSG_STEEL_SHEET_CHECK c=20 r=2
 "Is steel sheet on heatbed?"
 "La piastra d'acciaio e sul piano riscaldato?"
@@ -498,6 +449,10 @@
 "Last print failures"
 "Fallimenti 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."
+
 #
 "Last print"
 "Ultima stampa"
@@ -512,11 +467,11 @@
 
 #MSG_BED_CORRECTION_LEFT c=14 r=1
 "Left side [um]"
-"Lato sinistro [um]"
+"Sinistra [um]"
 
 #
 "Lin. correction"
-"Correzione lin."
+"Correzione lineare"
 
 #MSG_BABYSTEP_Z
 "Live adjust Z"
@@ -556,7 +511,7 @@
 
 #MSG_MESH_BED_LEVELING
 "Mesh Bed Leveling"
-"Mesh livel. letto"
+"Livel. piatto"
 
 #MSG_MMU_OK_RESUMING_POSITION c=20 r=4
 "MMU OK. Resuming position..."
@@ -568,7 +523,7 @@
 
 #
 "Measured skew"
-"Disassamento misurato"
+"Deviazione mis"
 
 #
 "MMU fails"
@@ -586,13 +541,17 @@
 "MMU OK. Resuming..."
 "MMU OK. Riprendendo... "
 
-#MSG_STEALTH_MODE_OFF
-"Mode     [Normal]"
-"Modo    [normale]"
+#MSG_MODE
+"Mode"
+"Mod."
 
-#MSG_SILENT_MODE_ON
-"Mode     [silent]"
-"Modo [silenzioso]"
+#MSG_NORMAL
+"Normal"
+"Normale"
+
+#MSG_SILENT
+"Silent"
+"Silenzioso"
 
 #
 "MMU needs user attention."
@@ -600,19 +559,19 @@
 
 #
 "MMU power fails"
-"Mancanza corrente MMU"
+"Manc. corr. MMU"
 
-#MSG_STEALTH_MODE_ON
-"Mode    [Stealth]"
-"Modo [Silenziosa]"
+#MSG_STEALTH
+"Stealth"
+"Silenziosa"
 
-#MSG_AUTO_MODE_ON
-"Mode [auto power]"
-"Modo       [auto]"
+#MSG_AUTO_POWER
+"Auto power"
+"Auto"
 
-#MSG_SILENT_MODE_OFF
-"Mode [high power]"
-"Mode      [forte]"
+#MSG_HIGH_POWER
+"High power"
+"Forte"
 
 #
 "MMU2 connected"
@@ -628,15 +587,15 @@
 
 #MSG_MOVE_X
 "Move X"
-"Muovi X"
+"Sposta X"
 
 #MSG_MOVE_Y
 "Move Y"
-"Muovi Y"
+"Sposta Y"
 
 #MSG_MOVE_Z
 "Move Z"
-"Muovi Z"
+"Sposta Z"
 
 #MSG_NO_MOVE
 "No move."
@@ -646,7 +605,7 @@
 "No SD card"
 "Nessuna SD"
 
-#
+#MSG_NA
 "N/A"
 "\x00"
 
@@ -680,7 +639,7 @@
 
 #MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
 "Old settings found. Default PID, Esteps etc. will be set."
-"Sono state trovate impostazioni vecchie. I valori di default di PID, Esteps etc. saranno impostati"
+"Sono state trovate impostazioni vecchie. Verranno impostati i valori predefiniti di PID, Esteps etc."
 
 #
 "Now remove the test print from steel sheet."
@@ -730,14 +689,6 @@
 "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
 "Per favore consulta il nostro manuale per risolvere il problema. Poi riprendi il Wizard dopo aver riavviato la stampante."
 
-#MSG_WIZARD_LOAD_FILAMENT c=20 r=8
-"Please insert PLA filament to the extruder, then press knob to load it."
-"Per favore inserisci il filamento di PLA nell'estrusore, poi premi la manopola per caricare."
-
-#MSG_PLEASE_LOAD_PLA c=20 r=4
-"Please load PLA filament first."
-"Per favore prima carica il filamento di PLA."
-
 #MSG_CHECK_IDLER c=20 r=4
 "Please open idler and remove filament manually."
 "Aprire la guida filam. e rimuovere il filam. a mano"
@@ -750,10 +701,6 @@
 "Please press the knob to unload filament"
 "Premete la manopola per scaricare il filamento "
 
-#
-"Please insert PLA filament to the first tube of MMU, then press the knob to load it."
-"Per favore inserite del filamento PLA nel primo tubo del MMU, poi premete la manopola per caricarlo."
-
 #MSG_PULL_OUT_FILAMENT c=20 r=4
 "Please pull out filament immediately"
 "Estrarre il filamento immediatamente"
@@ -820,7 +767,7 @@
 
 #MSG_SELFTEST_PRINT_FAN_SPEED c=18
 "Print fan:"
-"Ventola di stampa:"
+"Vent.stam:"
 
 #MSG_CARD_MENU
 "Print from SD"
@@ -846,6 +793,18 @@
 "Print FAN"
 "Ventola di stampa"
 
+#
+"Please insert filament into the extruder, then press the knob to load it."
+"Inserisci il filamento nell'estrusore, poi premi la manopola per caricarlo."
+
+#
+"Please insert filament into the first tube of the MMU, then press the knob to load it."
+"Per favore inserisci il filamento nel primo tubo del MMU, poi premi la manopola per caricarlo."
+
+#
+"Please load filament first."
+"Per favore prima carica il filamento."
+
 #MSG_PRUSA3D
 "prusa3d.com"
 "\x00"
@@ -886,25 +845,21 @@
 "Right side[um]"
 "Destra [um]"
 
-#MSG_SECOND_SERIAL_ON c=17 r=1
-"RPi port     [on]"
-"Porta RPi    [on]"
-
-#MSG_SECOND_SERIAL_OFF c=17 r=1
-"RPi port    [off]"
-"Porta RPi   [off]"
+#MSG_RPI_PORT
+"RPi port"
+"Porta RPi"
 
 #MSG_WIZARD_RERUN c=20 r=7
 "Running Wizard will delete current calibration results and start from the beginning. Continue?"
 "Se avvi il Wizard perderai la calibrazione preesistente e dovrai ricominciare dall'inizio. Continuare?"
 
-#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-"SD card  [normal]"
-"Mem. SD [normale]"
+#MSG_SD_CARD
+"SD card"
+"Mem. SD"
 
-#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-"SD card [flshAir]"
-"Mem. SD [flshAir]"
+#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
+"FlashAir"
+"\x00"
 
 #
 "Right"
@@ -946,10 +901,6 @@
 "Select nozzle preheat temperature which matches your material."
 "Selezionate la temperatura per il preriscaldamento dell'ugello adatta al vostro materiale."
 
-#
-"Select PLA filament:"
-"Selezionate filamento PLA:"
-
 #MSG_SET_TEMPERATURE c=19 r=1
 "Set temperature:"
 "Imposta temperatura:"
@@ -970,49 +921,49 @@
 "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
 "Alcuni file non saranno ordinati. Il numero massimo di file in una cartella e 100 perche siano ordinati."
 
-#MSG_SORT_NONE c=17 r=1
-"Sort       [none]"
-"Ordina     [none]"
+#MSG_SORT
+"Sort"
+"Ordina"
+
+#MSG_NONE
+"None"
+"Nessuno"
 
-#MSG_SORT_TIME c=17 r=1
-"Sort       [time]"
-"Ordina     [time]"
+#MSG_SORT_TIME
+"Time"
+"Cron."
 
 #
-"Severe skew"
-"Disassamento grave"
+"Severe skew:"
+"Devia.grave:"
 
-#MSG_SORT_ALPHA c=17 r=1
-"Sort   [alphabet]"
-"Ordine  [alfabet]"
+#MSG_SORT_ALPHA
+"Alphabet"
+"Alfabeti"
 
 #MSG_SORTING c=20 r=1
 "Sorting files"
 "Ordinando i file"
 
-#MSG_SOUND_LOUD c=17 r=1
-"Sound      [loud]"
-"Suono     [forte]"
+#MSG_SOUND_LOUD
+"Loud"
+"Forte"
 
 #
-"Slight skew"
-"Disassamento lieve"
+"Slight skew:"
+"Devia.lieve:"
 
-#MSG_SOUND_MUTE c=17 r=1
-"Sound      [mute]"
-"Suono      [mute]"
+#MSG_SOUND
+"Sound"
+"Suono"
 
 #
 "Some problem encountered, Z-leveling enforced ..."
 "Sono stati rilevati problemi, avviato livellamento Z ..."
 
-#MSG_SOUND_ONCE c=17 r=1
-"Sound      [once]"
-"Suono   [singolo]"
-
-#MSG_SOUND_SILENT c=17 r=1
-"Sound    [silent]"
-"Suono[silenzioso]"
+#MSG_SOUND_ONCE
+"Once"
+"Singolo"
 
 #MSG_SPEED
 "Speed"
@@ -1046,17 +997,17 @@
 "Swapped"
 "Scambiato"
 
-#MSG_TEMP_CALIBRATION c=20 r=1
-"Temp. cal.          "
-"Calib. temp. "
+#
+"Select filament:"
+"Seleziona il filamento:"
 
-#MSG_TEMP_CALIBRATION_ON c=20 r=1
-"Temp. cal.   [on]"
-"Calib. temp. [ON]"
+#MSG_TEMP_CALIBRATION c=12 r=1
+"Temp. cal."
+"Calib. temp."
 
-#MSG_TEMP_CALIBRATION_OFF c=20 r=1
-"Temp. cal.  [off]"
-"Calib. temp.[OFF]"
+#
+"Select temperature which matches your material."
+"Seleziona la temperatura appropriata per il tuo materiale."
 
 #MSG_CALIBRATION_PINDA_MENU c=17 r=1
 "Temp. calibration"
@@ -1088,7 +1039,7 @@
 
 #
 "Total print time"
-"Tempo di stampa totale"
+"Tempo stampa totale"
 
 #MSG_TUNE
 "Tune"
@@ -1112,7 +1063,7 @@
 
 #MSG_UNLOAD_FILAMENT c=17
 "Unload filament"
-"Scarica filam."
+"Scarica filamento"
 
 #MSG_UNLOADING_FILAMENT c=20 r=1
 "Unloading filament"
@@ -1234,10 +1185,162 @@
 "Y distance from min"
 "Distanza Y dal min"
 
+#
+"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)."
+"\x00"
+
 #
 "Y-correct:"
 "Correzione-Y:"
 
 #MSG_OFF
-" [off]"
+"Off"
+"\x00"
+
+#MSG_ON
+"On"
+"\x00"
+
+#
+"Back"
+"Indietro"
+
+#
+"Checks"
+"Controlli"
+
+#
+"False triggering"
+"Falso innesco"
+
+#
+"FINDA:"
+"\x00"
+
+#MSG_FIRMWARE
+"Firmware"
+"\x00"
+
+#MSG_STRICT
+"Strict"
+"Esatto"
+
+#MSG_WARN
+"Warn"
+"Avviso"
+
+#
+"HW Setup"
+"Installazione HW"
+
+#
+"IR:"
+"\x00"
+
+#MSG_MAGNETS_COMP
+"Magnets comp."
+"Comp. Magneti"
+
+#MSG_MESH
+"Mesh"
+"Griglia"
+
+#
+"Mesh bed leveling"
+"Mesh livel. letto"
+
+#
+"MK3S firmware detected on MK3 printer"
+"Firmware MK3S rilevato su stampante MK3"
+
+#MSG_MMU_MODE
+"MMU Mode"
+"Mod. MMU"
+
+#
+"Mode change in progress ..."
+"Cambio modalita in corso ..."
+
+#MSG_MODEL
+"Model"
+"Modello"
+
+#MSG_NOZZLE_DIAMETER
+"Nozzle d."
+"Diam.Ugello"
+
+#
+"G-code sliced for a different level. Continue?"
+"G-code processato per un livello diverso. Continuare?"
+
+#
+"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."
+
+#
+"G-code sliced for a different printer type. Continue?"
+"G-code processato per una stampante diversa. Continuare?"
+
+#
+"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."
+
+#
+"G-code sliced for a newer firmware. Continue?"
+"G-code processato per un firmware piu recente. Continuare?"
+
+#
+"G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
+"G-code processato per un firmware piu recente. Per favore aggiorna il firmware. Stampa annullata."
+
+#
+"PINDA:"
+"\x00"
+
+#
+"Preheating to cut"
+"Preriscaldamento per taglio"
+
+#
+"Preheating to eject"
+"Preriscaldamento per espulsione"
+
+#
+"Printer nozzle diameter differs from the G-code. Continue?"
+"Diametro ugello diverso da G-Code. Continuare?"
+
+#
+"Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
+"Diametro ugello diverso dal G-Code. Controlla il valore nelle impostazioni. Stampa annullata."
+
+#
+"Rename"
+"Rinomina"
+
+#
+"Select"
+"Seleziona"
+
+#
+"Sensor info"
+"Info Sensore"
+
+#
+"Sheet"
+"Piano"
+
+#MSG_SOUND_BLIND
+"Assist"
+"Assist."
+
+#
+"Steel sheets"
+"Piani d'acciaio"
+
+#
+"Z-correct:"
+"Correzione-Z:"
+
+#MSG_Z_PROBE_NR
+"Z-probe nr."
 "\x00"

+ 280 - 177
lang/lang_en_pl.txt

@@ -1,3 +1,7 @@
+#
+"[%.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_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
 " of 4"
 " z 4"
@@ -8,7 +12,7 @@
 
 #MSG_MEASURED_OFFSET
 "[0;0] point offset"
-"[0;0] przesuniecie punktu"
+"[0;0] przesun.punktu"
 
 #MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
 "Crash detection can\x0abe turned on only in\x0aNormal mode"
@@ -24,7 +28,7 @@
 
 #MSG_BABYSTEPPING_Z c=15
 "Adjusting Z:"
-"Dostrajanie Z:"
+"Ustawianie Z:"
 
 #MSG_SELFTEST_CHECK_ALLCORRECT c=20
 "All correct      "
@@ -44,19 +48,11 @@
 
 #MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
 "Are left and right Z~carriages all up?"
-"Obydwa konce osi dojechaly do gornych ogranicznikow?"
-
-#MSG_AUTO_DEPLETE_ON c=17 r=1
-"SpoolJoin    [on]"
-"SpoolJoin    [wl]"
-
-#
-"SpoolJoin   [N/A]"
-"SpoolJoin    [nd]"
+"Obydwa konce osi sa na szczycie?"
 
-#MSG_AUTO_DEPLETE_OFF c=17 r=1
-"SpoolJoin   [off]"
-"SpoolJoin   [wyl]"
+#MSG_AUTO_DEPLETE c=17 r=1
+"SpoolJoin"
+"\x00"
 
 #MSG_AUTO_HOME
 "Auto home"
@@ -64,11 +60,11 @@
 
 #MSG_AUTOLOAD_FILAMENT c=17
 "AutoLoad filament"
-"AutoLadowanie fil."
+"Autoladowanie fil."
 
 #MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
 "Autoloading filament available only when filament sensor is turned on..."
-"Autoladowanie filamentu dostepne tylko gdy czujnik filamentu jest wlaczony..."
+"Autoladowanie fil. dostepne tylko gdy czujnik filamentu jest wlaczony..."
 
 #MSG_AUTOLOADING_ENABLED c=20 r=4
 "Autoloading filament is active, just press the knob and insert filament..."
@@ -96,7 +92,7 @@
 
 #MSG_BED_CORRECTION_MENU
 "Bed level correct"
-"Korekta poziomowania stolu"
+"Korekta stolu"
 
 #MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
 "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
@@ -171,16 +167,12 @@
 "Skopiowac wybrany jezyk?"
 
 #MSG_CRASHDETECT_ON
-"Crash det.   [on]"
-"Wykr.zderzen [wl]"
+"Crash det."
+"Wykr.zderzen"
 
-#MSG_CRASHDETECT_NA
-"Crash det.  [N/A]"
-"Wykr.zderzen[n/d]"
-
-#MSG_CRASHDETECT_OFF
-"Crash det.  [off]"
-"Wykr.zderzen[wyl]"
+#
+"Choose a filament for the First Layer Calibration and select it in the on-screen menu."
+"Wybierz filament do Kalibracji Pierwszej Warstwy i potwierdz w menu ekranowym."
 
 #MSG_CRASH_DETECTED c=20 r=1
 "Crash detected."
@@ -204,7 +196,7 @@
 
 #MSG_DISABLE_STEPPERS
 "Disable steppers"
-"Wylaczenie silnikow"
+"Wylacz silniki"
 
 #MSG_BABYSTEP_Z_NOT_SET c=20 r=12
 "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."
@@ -216,16 +208,12 @@
 
 #MSG_EXTRUDER_CORRECTION c=10
 "E-correct:"
-"Korekcja E:"
+"Korekcja-E:"
 
 #MSG_EJECT_FILAMENT c=17 r=1
 "Eject filament"
 "Wysun filament"
 
-#
-"Eject"
-"Wysun"
-
 #MSG_EJECTING_FILAMENT c=20 r=1
 "Ejecting filament"
 "Wysuwanie filamentu"
@@ -256,11 +244,11 @@
 
 #MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
 "Extruder fan:"
-"Went. ekstrudera:"
+"WentHotend:"
 
 #MSG_INFO_EXTRUDER c=15 r=1
 "Extruder info"
-"Informacje o ekstruderze"
+"Ekstruder - info"
 
 #MSG_MOVE_E
 "Extruder"
@@ -270,17 +258,9 @@
 "Fail stats MMU"
 "Bledy MMU"
 
-#MSG_FSENS_AUTOLOAD_ON c=17 r=1
-"F. autoload  [on]"
-"Autolad. fil [wl]"
-
-#MSG_FSENS_AUTOLOAD_NA c=17 r=1
-"F. autoload [N/A]"
-"Autolad.fil.[N/D]"
-
-#MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-"F. autoload [off]"
-"Autolad.fil.[wyl]"
+#MSG_FSENSOR_AUTOLOAD
+"F. autoload"
+"Autolad. fil."
 
 #
 "Fail stats"
@@ -294,25 +274,13 @@
 "Fan test"
 "Test wentylatora"
 
-#MSG_FANS_CHECK_ON c=17 r=1
-"Fans check   [on]"
-"Sprawd.went. [wl]"
-
-#MSG_FANS_CHECK_OFF c=17 r=1
-"Fans check  [off]"
-"Sprawd.went.[wyl]"
-
-#MSG_FSENSOR_ON
-"Fil. sensor  [on]"
-"Czuj. filam. [wl]"
-
-#MSG_FSENSOR_NA
-"Fil. sensor [N/A]"
-"Czuj. filam.[N/D]"
+#MSG_FANS_CHECK
+"Fans check"
+"Sprawd.went."
 
-#MSG_FSENSOR_OFF
-"Fil. sensor [off]"
-"Czuj. filam.[wyl]"
+#MSG_FSENSOR
+"Fil. sensor"
+"Czuj. filam."
 
 #
 "Filam. runouts"
@@ -320,7 +288,7 @@
 
 #MSG_FILAMENT_CLEAN c=20 r=2
 "Filament extruding & with correct color?"
-"Filament wychodzi z dyszy a kolor jest czysty?"
+"Filament wychodzi z dyszy, kolor jest ok?"
 
 #MSG_NOT_LOADED c=19
 "Filament not loaded"
@@ -462,18 +430,10 @@
 "I will run z calibration now."
 "Przeprowadze kalibracje Z."
 
-#MSG_WIZARD_V2_CAL_2 c=20 r=12
-"I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."
-"Zaczne drukowac linie. Stopniowo opuszczaj dysze przekrecajac pokretlo, poki nie uzyskasz optymalnej wysokosci. Sprawdz obrazki w naszym Podreczniku w rozdz. Kalibracja"
-
 #MSG_WATCH
 "Info screen"
 "Ekran informacyjny"
 
-#
-"Is filament 1 loaded?"
-"Filament 1 zaladowany?"
-
 #MSG_INSERT_FILAMENT c=20
 "Insert filament"
 "Wprowadz filament"
@@ -482,14 +442,6 @@
 "Is filament loaded?"
 "Filament jest zaladowany?"
 
-#MSG_WIZARD_PLA_FILAMENT c=20 r=2
-"Is it PLA filament?"
-"Czy to filament PLA?"
-
-#MSG_PLA_FILAMENT_LOADED c=20 r=2
-"Is PLA filament loaded?"
-"Fialment PLA jest zaladowany?"
-
 #MSG_STEEL_SHEET_CHECK c=20 r=2
 "Is steel sheet on heatbed?"
 "Czy plyta stal. jest na podgrzew. stole?"
@@ -498,6 +450,10 @@
 "Last print failures"
 "Ostatnie bledy druku"
 
+#
+"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."
+
 #
 "Last print"
 "Ost. wydruk"
@@ -516,7 +472,7 @@
 
 #
 "Lin. correction"
-"Korekcja lin."
+"Korekcja liniowa"
 
 #MSG_BABYSTEP_Z
 "Live adjust Z"
@@ -586,13 +542,17 @@
 "MMU OK. Resuming..."
 "MMU OK. Wznawianie..."
 
-#MSG_STEALTH_MODE_OFF
-"Mode     [Normal]"
-"Tryb   [normalny]"
+#MSG_MODE
+"Mode"
+"Tryb"
+
+#MSG_NORMAL
+"Normal"
+"Normalny"
 
-#MSG_SILENT_MODE_ON
-"Mode     [silent]"
-"Tryb      [cichy]"
+#MSG_SILENT
+"Silent"
+"Cichy"
 
 #
 "MMU needs user attention."
@@ -602,17 +562,17 @@
 "MMU power fails"
 "Zaniki zasil. MMU"
 
-#MSG_STEALTH_MODE_ON
-"Mode    [Stealth]"
-"Tryb    [Stealth]"
+#MSG_STEALTH
+"Stealth"
+"Cichy"
 
-#MSG_AUTO_MODE_ON
-"Mode [auto power]"
-"Tryb [automatycz]"
+#MSG_AUTO_POWER
+"Auto power"
+"Automatycz"
 
-#MSG_SILENT_MODE_OFF
-"Mode [high power]"
-"Tryb[wysoka wyd.]"
+#MSG_HIGH_POWER
+"High power"
+"Wysoka wyd."
 
 #
 "MMU2 connected"
@@ -646,7 +606,7 @@
 "No SD card"
 "Brak karty SD"
 
-#
+#MSG_NA
 "N/A"
 "N/D"
 
@@ -688,7 +648,7 @@
 
 #
 "Nozzle FAN"
-"Went. hotendu"
+"WentHotend"
 
 #MSG_PAUSE_PRINT
 "Pause print"
@@ -720,7 +680,7 @@
 
 #MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
 "Please clean the nozzle for calibration. Click when done."
-"Dla prawidl. kalibracji nalezy oczyscic dysze. Potw. guzikiem."
+"Dla prawidlowej kalibracji nalezy oczyscic dysze. Potwierdz guzikiem."
 
 #MSG_SELFTEST_PLEASECHECK
 "Please check :"
@@ -730,14 +690,6 @@
 "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
 "Przeczytaj nasz Podrecznik druku 3D aby naprawic problem. Potem wznow Asystenta przez restart drukarki."
 
-#MSG_WIZARD_LOAD_FILAMENT c=20 r=8
-"Please insert PLA filament to the extruder, then press knob to load it."
-"Umiesc filament PLA w ekstruderze i nacisnij pokretlo, aby zaladowac."
-
-#MSG_PLEASE_LOAD_PLA c=20 r=4
-"Please load PLA filament first."
-"Najpierw zaladuj filament PLA."
-
 #MSG_CHECK_IDLER c=20 r=4
 "Please open idler and remove filament manually."
 "Prosze odciagnac dzwignie dociskowa ekstrudera i recznie usunac filament."
@@ -750,10 +702,6 @@
 "Please press the knob to unload filament"
 "Nacisnij pokretlo aby rozladowac filament"
 
-#
-"Please insert PLA filament to the first tube of MMU, then press the knob to load it."
-"Wsun filament PLA do pierwszej rurki MMU i nacisnij pokretlo aby go zaladowac."
-
 #MSG_PULL_OUT_FILAMENT c=20 r=4
 "Please pull out filament immediately"
 "Wyciagnij filament teraz"
@@ -820,7 +768,7 @@
 
 #MSG_SELFTEST_PRINT_FAN_SPEED c=18
 "Print fan:"
-"Went. wydruku:"
+"WentWydruk:"
 
 #MSG_CARD_MENU
 "Print from SD"
@@ -840,11 +788,23 @@
 
 #MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
 "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
-"Drukarka nie zostala jeszcze skalibrowana. Kieruj sie Samouczkiem: rozdzial Pierwsze Kroki, sekcja Konfiguracja przed drukowaniem."
+"Drukarka nie byla jeszcze kalibrowana. Kieruj sie Samouczkiem: rozdzial Pierwsze Kroki, sekcja Konfiguracja przed drukowaniem."
 
 #
 "Print FAN"
-"Went. wydruku"
+"WentWydruk"
+
+#
+"Please insert filament into the extruder, then press the knob to load it."
+"Wsun filament do ekstrudera i nacisnij pokretlo, aby go zaladowac."
+
+#
+"Please insert filament into the first tube of the MMU, then press the knob to load it."
+"Wsun filament do pierwszego kanalu w MMU2 i nacisnij pokretlo, aby go zaladowac."
+
+#
+"Please load filament first."
+"Najpierw zaladuj filament."
 
 #MSG_PRUSA3D
 "prusa3d.com"
@@ -886,25 +846,21 @@
 "Right side[um]"
 "Prawo [um]"
 
-#MSG_SECOND_SERIAL_ON c=17 r=1
-"RPi port     [on]"
-"Port RPi     [wl]"
-
-#MSG_SECOND_SERIAL_OFF c=17 r=1
-"RPi port    [off]"
-"Port RPi    [wyl]"
+#MSG_RPI_PORT
+"RPi port"
+"Port RPi"
 
 #MSG_WIZARD_RERUN c=20 r=7
 "Running Wizard will delete current calibration results and start from the beginning. Continue?"
 "Wlaczenie Asystenta usunie obecne dane kalibracyjne i zacznie od poczatku. Kontynuowac?"
 
-#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-"SD card  [normal]"
-"Karta SD [normal]"
+#MSG_SD_CARD
+"SD card"
+"Karta SD"
 
-#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-"SD card [flshAir]"
-"Karta SD[FlshAir]"
+#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
+"FlashAir"
+"\x00"
 
 #
 "Right"
@@ -924,7 +880,7 @@
 
 #MSG_SELFTEST_START c=20
 "Self test start  "
-"Rozpoczynanie Selftestu"
+"Selftest startuje"
 
 #MSG_SELFTEST
 "Selftest         "
@@ -932,7 +888,7 @@
 
 #MSG_SELFTEST_ERROR
 "Selftest error !"
-"Blad selftest !"
+"Blad selftest!"
 
 #MSG_SELFTEST_FAILED c=20
 "Selftest failed  "
@@ -946,13 +902,9 @@
 "Select nozzle preheat temperature which matches your material."
 "Wybierz temperature grzania dyszy odpowiednia dla materialu."
 
-#
-"Select PLA filament:"
-"Wybierz filament PLA:"
-
 #MSG_SET_TEMPERATURE c=19 r=1
 "Set temperature:"
-"Ustaw. temperatury:"
+"Ustaw temperature:"
 
 #MSG_SETTINGS
 "Settings"
@@ -970,50 +922,49 @@
 "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
 "Niektore pliki nie zostana posortowane. Max. liczba plikow w 1 folderze = 100."
 
-#MSG_SORT_NONE c=17 r=1
-"Sort       [none]"
-"Sortuj     [brak]"
+#MSG_SORT
+"Sort"
+"Sortowanie"
 
-#MSG_SORT_TIME c=17 r=1
-"Sort       [time]"
-"Sortuj     [czas]"
+#MSG_NONE
+"None"
+"Brak"
+
+#MSG_SORT_TIME
+"Time"
+"Czas"
 
 #
-"Severe skew"
-"Znaczny skos"
+"Severe skew:"
+"Znaczny skos:"
 
-#MSG_SORT_ALPHA c=17 r=1
-"Sort   [alphabet]"
-"Sortuj  [alfabet]"
+#MSG_SORT_ALPHA
+"Alphabet"
+"Alfab"
 
 #MSG_SORTING c=20 r=1
 "Sorting files"
 "Sortowanie plikow"
 
-#MSG_SOUND_LOUD c=17 r=1
-"Sound      [loud]"
-"Dzwiek   [Glosny]"
+#MSG_SOUND_LOUD
+"Loud"
+"Glosny"
 
 #
-"Slight skew"
-"Lekki skos"
+"Slight skew:"
+"Lekki skos:"
 
-#MSG_SOUND_MUTE c=17 r=1
-"Sound      [mute]"
-"Dzwiek[Wylaczony]"
+#MSG_SOUND
+"Sound"
+"Dzwiek"
 
 #
 "Some problem encountered, Z-leveling enforced ..."
-"Wykryto problem, wymuszono poziomowanie osi Z ..."
-
-#MSG_SOUND_ONCE c=17 r=1
-"Sound      [once]"
-"Dzwiek    [1-raz]"
-
-#MSG_SOUND_SILENT c=17 r=1
-"Sound    [silent]"
-"Dzwiek    [Cichy]"
+"Wykryto problem, wymuszono poziomowanie osi Z."
 
+#MSG_SOUND_ONCE
+"Once"
+"1-raz"
 #MSG_SPEED
 "Speed"
 "Predkosc"
@@ -1032,7 +983,7 @@
 
 #MSG_STOP_PRINT
 "Stop print"
-"Zatrzymac druk"
+"Przerwanie druku"
 
 #MSG_STOPPED
 "STOPPED. "
@@ -1046,17 +997,17 @@
 "Swapped"
 "Zamieniono"
 
-#MSG_TEMP_CALIBRATION c=20 r=1
-"Temp. cal.          "
-"Kalibracja temp."
+#
+"Select filament:"
+"Wybierz filament:"
 
-#MSG_TEMP_CALIBRATION_ON c=20 r=1
-"Temp. cal.   [on]"
-"Kalibr. temp.[wl]"
+#MSG_TEMP_CALIBRATION c=12 r=1
+"Temp. cal."
+"Kalibracja temp."
 
-#MSG_TEMP_CALIBRATION_OFF c=20 r=1
-"Temp. cal.  [off]"
-"Kalibr.temp.[wyl]"
+#
+"Select temperature which matches your material."
+"Wybierz temperature, ktora odpowiada Twojemu filamentowi."
 
 #MSG_CALIBRATION_PINDA_MENU c=17 r=1
 "Temp. calibration"
@@ -1084,11 +1035,11 @@
 
 #
 "Total filament"
-"Calkowita dlugosc filamentu"
+"Zuzycie filamentu"
 
 #
 "Total print time"
-"Calkowity czas druku"
+"Laczny czas druku"
 
 #MSG_TUNE
 "Tune"
@@ -1200,7 +1151,7 @@
 
 #
 "X-correct:"
-"Korekcja X:"
+"Korekcja-X:"
 
 #MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
 "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
@@ -1234,10 +1185,162 @@
 "Y distance from min"
 "Dystans od 0 w osi Y"
 
+#
+"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)."
+"\x00"
+
 #
 "Y-correct:"
-"Korekcja Y:"
+"Korekcja-Y:"
 
 #MSG_OFF
-" [off]"
+"Off"
+"Wyl"
+
+#MSG_ON
+"On"
+"Wl"
+
+#
+"Back"
+"Wstecz"
+
+#
+"Checks"
+"Testy"
+
+#
+"False triggering"
+"Falszywy alarm"
+
+#
+"FINDA:"
 "\x00"
+
+#MSG_FIRMWARE
+"Firmware"
+"\x00"
+
+#MSG_STRICT
+"Strict"
+"Restr."
+
+#MSG_WARN
+"Warn"
+"Ostrzez"
+
+#
+"HW Setup"
+"Ustawienia HW"
+
+#
+"IR:"
+"\x00"
+
+#MSG_MAGNETS_COMP
+"Magnets comp."
+"Kor. magnesow"
+
+#MSG_MESH
+"Mesh"
+"Siatka"
+
+#
+"Mesh bed leveling"
+"Poziomowanie stolu"
+
+#
+"MK3S firmware detected on MK3 printer"
+"Wykryto firmware MK3S w drukarce MK3"
+
+#MSG_MMU_MODE
+"MMU Mode"
+"Tryb MMU"
+
+#
+"Mode change in progress ..."
+"Trwa zmiana trybu..."
+
+#MSG_MODEL
+"Model"
+"\x00"
+
+#MSG_NOZZLE_DIAMETER
+"Nozzle d."
+"Sr. dyszy"
+
+#
+"G-code sliced for a different level. Continue?"
+"\x00"
+
+#
+"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."
+
+#
+"G-code sliced for a different printer type. Continue?"
+"G-code pociety dla innej drukarki. Kontynuowac?"
+
+#
+"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."
+
+#
+"G-code sliced for a newer firmware. Continue?"
+"G-code pociety dla nowszego firmware. Kontynuowac?"
+
+#
+"G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
+"G-code pociety dla nowszego firmware. Zaktualizuj firmware. Druk anulowany."
+
+#
+"PINDA:"
+"\x00"
+
+#
+"Preheating to cut"
+"Nagrzewanie do obciecia"
+
+#
+"Preheating to eject"
+"Nagrzewanie do wysuniecia"
+
+#
+"Printer nozzle diameter differs from the G-code. Continue?"
+"Srednica dyszy drukarki rozni sie od tej w G-code. Kontynuowac?"
+
+#
+"Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
+"Srednica dyszy rozni sie od tej w G-code. Sprawdz ustawienia. Druk anulowany."
+
+#
+"Rename"
+"Zmien nazwe"
+
+#
+"Select"
+"Wybierz"
+
+#
+"Sensor info"
+"Info o sensorach"
+
+#
+"Sheet"
+"Plyta"
+
+#MSG_SOUND_BLIND
+"Assist"
+"Asyst."
+
+#
+"Steel sheets"
+"Plyty stalowe"
+
+#
+"Z-correct:"
+"Korekcja-Z:"
+
+#MSG_Z_PROBE_NR
+"Z-probe nr."
+"Ilosc Pomiarow"

+ 521 - 456
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: čt 7. úno 2019 14:41:39\n"
-"PO-Revision-Date: čt 7. úno 2019 14:41:39\n"
+"POT-Creation-Date: Sun, Sep 22, 2019 2:01:55 PM\n"
+"PO-Revision-Date: Sun, Sep 22, 2019 2:01:55 PM\n"
 "Language-Team: \n"
 "X-Generator: Poedit 2.0.7\n"
 "X-Poedit-SourceCharset: UTF-8\n"
@@ -21,72 +21,72 @@ msgid " of 4"
 msgstr ""
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:56
+#: messages.c:60
 msgid " of 9"
 msgstr ""
 
 # MSG_MEASURED_OFFSET
-#: ultralcd.cpp:2914
+#: ultralcd.cpp:3089
 msgid "[0;0] point offset"
 msgstr ""
 
 # MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
-#: ultralcd.cpp:4219
-msgid "\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode"
+#: 
+msgid "Crash detection can\x0abe turned on only in\x0aNormal mode"
 msgstr ""
 
 # MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
-#: ultralcd.cpp:4231
-msgid "\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode"
+#: 
+msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2353
+#: ultralcd.cpp:2472
 msgid ">Cancel"
 msgstr ""
 
-# MSG_BABYSTEPPING_Z c=20
-#: ultralcd.cpp:3043
-msgid "Adjusting Z"
+# MSG_BABYSTEPPING_Z c=15
+#: ultralcd.cpp:3209
+msgid "Adjusting Z:"
 msgstr ""
 
 # MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:7459
+#: ultralcd.cpp:8295
 msgid "All correct      "
 msgstr ""
 
 # MSG_WIZARD_DONE c=20 r=8
-#: messages.c:95
+#: messages.c:101
 msgid "All is done. Happy printing!"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2109
+#: ultralcd.cpp:2009
 msgid "Ambient"
 msgstr ""
 
 # MSG_PRESS c=20
-#: ultralcd.cpp:2463
+#: ultralcd.cpp:2618
 msgid "and press the knob"
 msgstr ""
 
 # MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3330
+#: ultralcd.cpp:3529
 msgid "Are left and right Z~carriages all up?"
 msgstr ""
 
 # MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:4959
+#: ultralcd.cpp:5200
 msgid "SpoolJoin    [on]"
 msgstr ""
 
 # 
-#: ultralcd.cpp:4955
+#: ultralcd.cpp:5196
 msgid "SpoolJoin   [N/A]"
 msgstr ""
 
-#  MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:4963
+# MSG_AUTO_DEPLETE_OFF c=17 r=1
+#: ultralcd.cpp:5204
 msgid "SpoolJoin   [off]"
 msgstr ""
 
@@ -96,32 +96,32 @@ msgid "Auto home"
 msgstr ""
 
 # MSG_AUTOLOAD_FILAMENT c=17
-#: ultralcd.cpp:6091
+#: ultralcd.cpp:6822
 msgid "AutoLoad filament"
 msgstr ""
 
 # MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4246
+#: ultralcd.cpp:4462
 msgid "Autoloading filament available only when filament sensor is turned on..."
 msgstr ""
 
 # MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2655
+#: ultralcd.cpp:2813
 msgid "Autoloading filament is active, just press the knob and insert filament..."
 msgstr ""
 
 # MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:7128
+#: ultralcd.cpp:7949
 msgid "Axis length"
 msgstr ""
 
 # MSG_SELFTEST_AXIS
-#: ultralcd.cpp:7130
+#: ultralcd.cpp:7951
 msgid "Axis"
 msgstr ""
 
 # MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:7072
+#: ultralcd.cpp:7893
 msgid "Bed / Heater"
 msgstr ""
 
@@ -136,7 +136,7 @@ msgid "Bed Heating"
 msgstr ""
 
 # MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5197
+#: ultralcd.cpp:5768
 msgid "Bed level correct"
 msgstr ""
 
@@ -145,38 +145,28 @@ msgstr ""
 msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
 msgstr ""
 
-# MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4
-#: Marlin_main.cpp:4508
-msgid "Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset."
-msgstr ""
-
-# MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4
-#: Marlin_main.cpp:4512
-msgid "Bed leveling failed. Sensor triggered too high. Waiting for reset."
-msgstr ""
-
 # MSG_BED
 #: messages.c:15
 msgid "Bed"
 msgstr ""
 
 # MSG_MENU_BELT_STATUS c=15 r=1
-#: ultralcd.cpp:2135
+#: ultralcd.cpp:2059
 msgid "Belt status"
 msgstr ""
 
 # MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:67
+#: messages.c:71
 msgid "Blackout occurred. Recover print?"
 msgstr ""
 
 # 
-#: ultralcd.cpp:7461
+#: ultralcd.cpp:8297
 msgid "Calibrating home"
 msgstr ""
 
 # MSG_CALIBRATE_BED
-#: ultralcd.cpp:5186
+#: ultralcd.cpp:5757
 msgid "Calibrate XYZ"
 msgstr ""
 
@@ -186,12 +176,12 @@ msgid "Calibrate Z"
 msgstr ""
 
 # MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4427
+#: ultralcd.cpp:4654
 msgid "Calibrate"
 msgstr ""
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3290
+#: ultralcd.cpp:3492
 msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr ""
 
@@ -201,37 +191,32 @@ msgid "Calibrating Z"
 msgstr ""
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3290
+#: ultralcd.cpp:3492
 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:778
+#: ultralcd.cpp:816
 msgid "Calibration done"
 msgstr ""
 
 # MSG_MENU_CALIBRATION
-#: messages.c:57
+#: messages.c:61
 msgid "Calibration"
 msgstr ""
 
 # 
-#: ultralcd.cpp:4552
+#: ultralcd.cpp:4781
 msgid "Cancel"
 msgstr ""
 
-# MSG_SD_INSERTED
-#: 
-msgid "Card inserted"
-msgstr ""
-
 # MSG_SD_REMOVED
-#: ultralcd.cpp:7819
+#: ultralcd.cpp:8679
 msgid "Card removed"
 msgstr ""
 
 # MSG_NOT_COLOR
-#: ultralcd.cpp:2563
+#: ultralcd.cpp:2718
 msgid "Color not correct"
 msgstr ""
 
@@ -241,7 +226,7 @@ msgid "Cooldown"
 msgstr ""
 
 # 
-#: ultralcd.cpp:4360
+#: ultralcd.cpp:4587
 msgid "Copy selected language?"
 msgstr ""
 
@@ -266,27 +251,27 @@ msgid "Crash detected."
 msgstr ""
 
 # 
-#: Marlin_main.cpp:608
+#: Marlin_main.cpp:600
 msgid "Crash detected. Resume print?"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2013
+#: ultralcd.cpp:1853
 msgid "Crash"
 msgstr ""
 
 # MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:5335
+#: ultralcd.cpp:5909
 msgid "Current"
 msgstr ""
 
 # MSG_DATE c=17 r=1
-#: ultralcd.cpp:2235
+#: ultralcd.cpp:2213
 msgid "Date:"
 msgstr ""
 
 # MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5093
+#: ultralcd.cpp:5654
 msgid "Disable steppers"
 msgstr ""
 
@@ -296,77 +281,52 @@ msgid "Distance between tip of the nozzle and the bed surface has not been set y
 msgstr ""
 
 # MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:4828
+#: ultralcd.cpp:5070
 msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
 msgstr ""
 
-# MSG_EXTRUDER_CORRECTION c=9
-#: ultralcd.cpp:4889
-msgid "E-correct"
+# MSG_EXTRUDER_CORRECTION c=10
+#: ultralcd.cpp:5134
+msgid "E-correct:"
 msgstr ""
 
 # MSG_EJECT_FILAMENT c=17 r=1
-#: ultralcd.cpp:6081
+#: messages.c:53
 msgid "Eject filament"
 msgstr ""
 
-# MSG_EJECT_FILAMENT1 c=17 r=1
-#: ultralcd.cpp:5603
-msgid "Eject filament 1"
-msgstr ""
-
-# MSG_EJECT_FILAMENT2 c=17 r=1
-#: ultralcd.cpp:5604
-msgid "Eject filament 2"
-msgstr ""
-
-# MSG_EJECT_FILAMENT3 c=17 r=1
-#: ultralcd.cpp:5605
-msgid "Eject filament 3"
-msgstr ""
-
-# MSG_EJECT_FILAMENT4 c=17 r=1
-#: ultralcd.cpp:5606
-msgid "Eject filament 4"
-msgstr ""
-
-# MSG_EJECT_FILAMENT5 c=17 r=1
-#: ultralcd.cpp:5607
-msgid "Eject filament 5"
-msgstr ""
-
 # 
-#: ultralcd.cpp:4640
+#: ultralcd.cpp:4869
 msgid "Eject"
 msgstr ""
 
 # MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1339
+#: mmu.cpp:1434
 msgid "Ejecting filament"
 msgstr ""
 
 # MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
-#: ultralcd.cpp:7096
+#: ultralcd.cpp:7917
 msgid "Endstop not hit"
 msgstr ""
 
 # MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:7090
+#: ultralcd.cpp:7911
 msgid "Endstop"
 msgstr ""
 
 # MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:7078
+#: ultralcd.cpp:7899
 msgid "Endstops"
 msgstr ""
 
 # MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6132
+#: ultralcd.cpp:6859
 msgid "Error - static memory has been overwritten"
 msgstr ""
 
 # MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4259
+#: ultralcd.cpp:4475
 msgid "ERROR: Filament sensor is not responding, please check connection."
 msgstr ""
 
@@ -375,38 +335,13 @@ msgstr ""
 msgid "ERROR:"
 msgstr ""
 
-# 
-#: Marlin_main.cpp:1006
-msgid "External SPI flash W25X20CL not responding."
-msgstr ""
-
-# 
-#: ultralcd.cpp:5633
-msgid "Extruder 1"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5634
-msgid "Extruder 2"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5635
-msgid "Extruder 3"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5636
-msgid "Extruder 4"
-msgstr ""
-
 # MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:7468
+#: ultralcd.cpp:8304
 msgid "Extruder fan:"
 msgstr ""
 
 # MSG_INFO_EXTRUDER c=15 r=1
-#: ultralcd.cpp:2266
+#: ultralcd.cpp:2244
 msgid "Extruder info"
 msgstr ""
 
@@ -416,12 +351,12 @@ msgid "Extruder"
 msgstr ""
 
 # 
-#: ultralcd.cpp:6115
+#: ultralcd.cpp:6846
 msgid "Fail stats MMU"
 msgstr ""
 
 # MSG_FSENS_AUTOLOAD_ON c=17 r=1
-#: ultralcd.cpp:4927
+#: ultralcd.cpp:5168
 msgid "F. autoload  [on]"
 msgstr ""
 
@@ -431,12 +366,12 @@ msgid "F. autoload [N/A]"
 msgstr ""
 
 # MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-#: ultralcd.cpp:4929
+#: ultralcd.cpp:5170
 msgid "F. autoload [off]"
 msgstr ""
 
 # 
-#: ultralcd.cpp:6112
+#: ultralcd.cpp:6843
 msgid "Fail stats"
 msgstr ""
 
@@ -446,17 +381,17 @@ msgid "Fan speed"
 msgstr ""
 
 # MSG_SELFTEST_FAN c=20
-#: messages.c:74
+#: messages.c:78
 msgid "Fan test"
 msgstr ""
 
 # MSG_FANS_CHECK_ON c=17 r=1
-#: ultralcd.cpp:5100
+#: ultralcd.cpp:5663
 msgid "Fans check   [on]"
 msgstr ""
 
 # MSG_FANS_CHECK_OFF c=17 r=1
-#: ultralcd.cpp:5102
+#: ultralcd.cpp:5665
 msgid "Fans check  [off]"
 msgstr ""
 
@@ -465,13 +400,8 @@ msgstr ""
 msgid "Fil. sensor  [on]"
 msgstr ""
 
-# MSG_RESPONSE_POOR c=20 r=2
-#: Marlin_main.cpp:3146
-msgid "Fil. sensor response is poor, disable it?"
-msgstr ""
-
 # MSG_FSENSOR_NA
-#: ultralcd.cpp:4907
+#: ultralcd.cpp:5148
 msgid "Fil. sensor [N/A]"
 msgstr ""
 
@@ -481,7 +411,7 @@ msgid "Fil. sensor [off]"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2013
+#: ultralcd.cpp:1852
 msgid "Filam. runouts"
 msgstr ""
 
@@ -491,32 +421,27 @@ msgid "Filament extruding & with correct color?"
 msgstr ""
 
 # MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2559
+#: ultralcd.cpp:2714
 msgid "Filament not loaded"
 msgstr ""
 
 # MSG_FILAMENT_SENSOR c=20
-#: ultralcd.cpp:7144
+#: messages.c:84
 msgid "Filament sensor"
 msgstr ""
 
-# MSG_SELFTEST_FILAMENT_SENSOR c=18
-#: ultralcd.cpp:7477
-msgid "Filament sensor:"
-msgstr ""
-
 # MSG_FILAMENT_USED c=19 r=1
-#: ultralcd.cpp:2725
+#: ultralcd.cpp:2885
 msgid "Filament used"
 msgstr ""
 
 # MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2727
+#: ultralcd.cpp:2886
 msgid "Print time"
 msgstr ""
 
 # MSG_FILE_INCOMPLETE c=20 r=2
-#: ultralcd.cpp:7595
+#: ultralcd.cpp:8432
 msgid "File incomplete. Continue anyway?"
 msgstr ""
 
@@ -526,52 +451,52 @@ msgid "Finishing movements"
 msgstr ""
 
 # MSG_V2_CALIBRATION c=17 r=1
-#: ultralcd.cpp:5177
+#: messages.c:105
 msgid "First layer cal."
 msgstr ""
 
 # MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:4740
+#: ultralcd.cpp:4982
 msgid "First, I will run the selftest to check most common assembly problems."
 msgstr ""
 
 # 
-#: mmu.cpp:640
+#: mmu.cpp:724
 msgid "Fix the issue and then press button on MMU unit."
 msgstr ""
 
 # MSG_FLOW
-#: ultralcd.cpp:6205
+#: ultralcd.cpp:6932
 msgid "Flow"
 msgstr ""
 
 # MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2228
+#: ultralcd.cpp:2206
 msgid "forum.prusa3d.com"
 msgstr ""
 
 # MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:71
+#: messages.c:75
 msgid "Front print fan?"
 msgstr ""
 
 # MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3101
+#: ultralcd.cpp:3294
 msgid "Front side[um]"
 msgstr ""
 
 # MSG_SELFTEST_FANS
-#: ultralcd.cpp:7136
+#: ultralcd.cpp:7957
 msgid "Front/left fans"
 msgstr ""
 
 # MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:7066
+#: ultralcd.cpp:7887
 msgid "Heater/Thermistor"
 msgstr ""
 
 # MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:7475
+#: Marlin_main.cpp:8467
 msgid "Heating disabled by safety timer."
 msgstr ""
 
@@ -586,67 +511,62 @@ msgid "Heating"
 msgstr ""
 
 # MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:4719
+#: ultralcd.cpp:4961
 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:2229
+#: ultralcd.cpp:2207
 msgid "howto.prusa3d.com"
 msgstr ""
 
-# 
-#: ultralcd.cpp:6087
-msgid "Change extruder"
-msgstr ""
-
 # MSG_FILAMENTCHANGE
 #: messages.c:37
 msgid "Change filament"
 msgstr ""
 
 # MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2474
+#: ultralcd.cpp:2629
 msgid "Change success!"
 msgstr ""
 
 # MSG_CORRECTLY c=20
-#: ultralcd.cpp:2551
+#: ultralcd.cpp:2706
 msgid "Changed correctly?"
 msgstr ""
 
 # MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:77
+#: messages.c:81
 msgid "Checking bed     "
 msgstr ""
 
 # MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:7450
+#: ultralcd.cpp:8286
 msgid "Checking endstops"
 msgstr ""
 
 # MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:7456
+#: ultralcd.cpp:8292
 msgid "Checking hotend  "
 msgstr ""
 
 # MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:78
+#: messages.c:82
 msgid "Checking sensors "
 msgstr ""
 
 # MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:7451
+#: ultralcd.cpp:8287
 msgid "Checking X axis  "
 msgstr ""
 
 # MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:7452
+#: ultralcd.cpp:8288
 msgid "Checking Y axis  "
 msgstr ""
 
 # MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:7453
+#: ultralcd.cpp:8289
 msgid "Checking Z axis  "
 msgstr ""
 
@@ -666,112 +586,82 @@ msgid "Filament"
 msgstr ""
 
 # MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:4749
+#: ultralcd.cpp:4991
 msgid "I will run xyz calibration now. It will take approx. 12 mins."
 msgstr ""
 
 # MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:4757
+#: ultralcd.cpp:4999
 msgid "I will run z calibration now."
 msgstr ""
 
 # MSG_WIZARD_V2_CAL_2 c=20 r=12
-#: ultralcd.cpp:4822
+#: ultralcd.cpp:5064
 msgid "I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."
 msgstr ""
 
-# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: mesh_bed_calibration.cpp:2481
-msgid "Improving bed calibration point"
-msgstr ""
-
 # MSG_WATCH
-#: messages.c:93
+#: messages.c:99
 msgid "Info screen"
 msgstr ""
 
-# MSG_FILAMENT_LOADING_T0 c=20 r=4
-#: messages.c:33
-msgid "Insert filament into extruder 1. Click when done."
-msgstr ""
-
-# MSG_FILAMENT_LOADING_T1 c=20 r=4
-#: messages.c:34
-msgid "Insert filament into extruder 2. Click when done."
-msgstr ""
-
-# MSG_FILAMENT_LOADING_T2 c=20 r=4
-#: messages.c:35
-msgid "Insert filament into extruder 3. Click when done."
-msgstr ""
-
-# MSG_FILAMENT_LOADING_T3 c=20 r=4
-#: messages.c:36
-msgid "Insert filament into extruder 4. Click when done."
-msgstr ""
-
 # 
-#: ultralcd.cpp:4782
+#: ultralcd.cpp:5024
 msgid "Is filament 1 loaded?"
 msgstr ""
 
 # MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2459
+#: ultralcd.cpp:2614
 msgid "Insert filament"
 msgstr ""
 
 # MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4785
+#: ultralcd.cpp:5027
 msgid "Is filament loaded?"
 msgstr ""
 
 # MSG_WIZARD_PLA_FILAMENT c=20 r=2
-#: ultralcd.cpp:4816
+#: ultralcd.cpp:5058
 msgid "Is it PLA filament?"
 msgstr ""
 
 # MSG_PLA_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4561
+#: ultralcd.cpp:4790
 msgid "Is PLA filament loaded?"
 msgstr ""
 
 # MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:86
+#: messages.c:92
 msgid "Is steel sheet on heatbed?"
 msgstr ""
 
-# MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20
-#: mesh_bed_calibration.cpp:2223
-msgid "Iteration "
-msgstr ""
-
 # 
-#: ultralcd.cpp:1976
+#: ultralcd.cpp:1795
 msgid "Last print failures"
 msgstr ""
 
 # 
-#: ultralcd.cpp:1960
+#: ultralcd.cpp:1772
 msgid "Last print"
 msgstr ""
 
 # MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:72
+#: messages.c:76
 msgid "Left hotend fan?"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2861
+#: ultralcd.cpp:3018
 msgid "Left"
 msgstr ""
 
 # MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3099
+#: ultralcd.cpp:3292
 msgid "Left side [um]"
 msgstr ""
 
 # 
-#: ultralcd.cpp:5107
+#: ultralcd.cpp:5680
 msgid "Lin. correction"
 msgstr ""
 
@@ -786,7 +676,7 @@ msgid "Load filament"
 msgstr ""
 
 # MSG_LOADING_COLOR
-#: ultralcd.cpp:2499
+#: ultralcd.cpp:2654
 msgid "Loading color"
 msgstr ""
 
@@ -796,92 +686,92 @@ msgid "Loading filament"
 msgstr ""
 
 # MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:7120
+#: ultralcd.cpp:7941
 msgid "Loose pulley"
 msgstr ""
 
 # 
-#: ultralcd.cpp:6079
+#: ultralcd.cpp:6805
 msgid "Load to nozzle"
 msgstr ""
 
 # MSG_M117_V2_CALIBRATION c=25 r=1
-#: messages.c:53
+#: messages.c:55
 msgid "M117 First layer cal."
 msgstr ""
 
 # MSG_MAIN
-#: messages.c:54
+#: messages.c:56
 msgid "Main"
 msgstr ""
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:55
+#: messages.c:59
 msgid "Measuring reference height of calibration point"
 msgstr ""
 
 # MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5192
+#: ultralcd.cpp:5763
 msgid "Mesh Bed Leveling"
 msgstr ""
 
 # MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:676
+#: mmu.cpp:762
 msgid "MMU OK. Resuming position..."
 msgstr ""
 
 # MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:669
+#: mmu.cpp:755
 msgid "MMU OK. Resuming temperature..."
 msgstr ""
 
 # 
-#: ultralcd.cpp:2896
+#: ultralcd.cpp:3059
 msgid "Measured skew"
 msgstr ""
 
 # 
-#: ultralcd.cpp:1977
+#: ultralcd.cpp:1796
 msgid "MMU fails"
 msgstr ""
 
 # 
-#: mmu.cpp:1399
+#: mmu.cpp:1613
 msgid "MMU load failed     "
 msgstr ""
 
 # 
-#: ultralcd.cpp:1977
+#: ultralcd.cpp:1797
 msgid "MMU load fails"
 msgstr ""
 
 # MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:687
+#: mmu.cpp:773
 msgid "MMU OK. Resuming..."
 msgstr ""
 
 # MSG_STEALTH_MODE_OFF
-#: messages.c:84
+#: messages.c:90
 msgid "Mode     [Normal]"
 msgstr ""
 
 # MSG_SILENT_MODE_ON
-#: messages.c:83
+#: messages.c:89
 msgid "Mode     [silent]"
 msgstr ""
 
 # 
-#: mmu.cpp:635
+#: mmu.cpp:719
 msgid "MMU needs user attention."
 msgstr ""
 
 # 
-#: ultralcd.cpp:1994
+#: ultralcd.cpp:1823
 msgid "MMU power fails"
 msgstr ""
 
 # MSG_STEALTH_MODE_ON
-#: messages.c:85
+#: messages.c:91
 msgid "Mode    [Stealth]"
 msgstr ""
 
@@ -891,62 +781,62 @@ msgid "Mode [auto power]"
 msgstr ""
 
 # MSG_SILENT_MODE_OFF
-#: messages.c:82
+#: messages.c:88
 msgid "Mode [high power]"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2241
+#: ultralcd.cpp:2219
 msgid "MMU2 connected"
 msgstr ""
 
 # MSG_SELFTEST_MOTOR
-#: messages.c:79
+#: messages.c:83
 msgid "Motor"
 msgstr ""
 
 # MSG_MOVE_AXIS
-#: ultralcd.cpp:5091
+#: ultralcd.cpp:5652
 msgid "Move axis"
 msgstr ""
 
 # MSG_MOVE_X
-#: ultralcd.cpp:4164
+#: ultralcd.cpp:4378
 msgid "Move X"
 msgstr ""
 
 # MSG_MOVE_Y
-#: ultralcd.cpp:4165
+#: ultralcd.cpp:4379
 msgid "Move Y"
 msgstr ""
 
 # MSG_MOVE_Z
-#: ultralcd.cpp:4166
+#: ultralcd.cpp:4380
 msgid "Move Z"
 msgstr ""
 
 # MSG_NO_MOVE
-#: Marlin_main.cpp:4908
+#: Marlin_main.cpp:5292
 msgid "No move."
 msgstr ""
 
 # MSG_NO_CARD
-#: ultralcd.cpp:6059
+#: ultralcd.cpp:6772
 msgid "No SD card"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2867
+#: ultralcd.cpp:3024
 msgid "N/A"
 msgstr ""
 
 # MSG_NO
-#: messages.c:58
+#: messages.c:62
 msgid "No"
 msgstr ""
 
 # MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:7068
+#: ultralcd.cpp:7889
 msgid "Not connected"
 msgstr ""
 
@@ -955,78 +845,73 @@ msgstr ""
 msgid "New firmware version available:"
 msgstr ""
 
-# 
-#: 
-msgid "No "
-msgstr ""
-
 # MSG_SELFTEST_FAN_NO c=19
-#: messages.c:75
+#: messages.c:79
 msgid "Not spinning"
 msgstr ""
 
 # MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4821
+#: ultralcd.cpp:5063
 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:4765
+#: ultralcd.cpp:5007
 msgid "Now I will preheat nozzle for PLA."
 msgstr ""
 
 # MSG_NOZZLE
-#: messages.c:59
+#: messages.c:63
 msgid "Nozzle"
 msgstr ""
 
 # MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
-#: Marlin_main.cpp:1516
+#: Marlin_main.cpp:1519
 msgid "Old settings found. Default PID, Esteps etc. will be set."
 msgstr ""
 
 # 
-#: ultralcd.cpp:4756
+#: ultralcd.cpp:4998
 msgid "Now remove the test print from steel sheet."
 msgstr ""
 
 # 
-#: ultralcd.cpp:1919
+#: ultralcd.cpp:1722
 msgid "Nozzle FAN"
 msgstr ""
 
 # MSG_PAUSE_PRINT
-#: ultralcd.cpp:6029
+#: ultralcd.cpp:6735
 msgid "Pause print"
 msgstr ""
 
 # MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1741
+#: ultralcd.cpp:1606
 msgid "PID cal.           "
 msgstr ""
 
 # MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1747
+#: ultralcd.cpp:1612
 msgid "PID cal. finished"
 msgstr ""
 
 # MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5198
+#: ultralcd.cpp:5769
 msgid "PID calibration"
 msgstr ""
 
 # MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:808
+#: ultralcd.cpp:846
 msgid "PINDA Heating"
 msgstr ""
 
 # MSG_PAPER c=20 r=8
-#: messages.c:60
+#: messages.c:64
 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:4830
+#: ultralcd.cpp:5072
 msgid "Please clean heatbed and then press the knob."
 msgstr ""
 
@@ -1036,92 +921,92 @@ msgid "Please clean the nozzle for calibration. Click when done."
 msgstr ""
 
 # MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:7060
+#: ultralcd.cpp:7881
 msgid "Please check :"
 msgstr ""
 
 # MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:94
+#: messages.c:100
 msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
 msgstr ""
 
 # MSG_WIZARD_LOAD_FILAMENT c=20 r=8
-#: ultralcd.cpp:4664
+#: ultralcd.cpp:4894
 msgid "Please insert PLA filament to the extruder, then press knob to load it."
 msgstr ""
 
 # MSG_PLEASE_LOAD_PLA c=20 r=4
-#: ultralcd.cpp:4566
+#: ultralcd.cpp:4795
 msgid "Please load PLA filament first."
 msgstr ""
 
 # MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3025
+#: Marlin_main.cpp:3064
 msgid "Please open idler and remove filament manually."
 msgstr ""
 
 # MSG_PLACE_STEEL_SHEET c=20 r=4
-#: messages.c:61
+#: messages.c:65
 msgid "Please place steel sheet on heatbed."
 msgstr ""
 
 # MSG_PRESS_TO_UNLOAD c=20 r=4
-#: messages.c:64
+#: messages.c:68
 msgid "Please press the knob to unload filament"
 msgstr ""
 
 # 
-#: ultralcd.cpp:4660
+#: ultralcd.cpp:4889
 msgid "Please insert PLA filament to the first tube of MMU, then press the knob to load it."
 msgstr ""
 
 # MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:66
+#: messages.c:70
 msgid "Please pull out filament immediately"
 msgstr ""
 
 # MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1347
+#: mmu.cpp:1440
 msgid "Please remove filament and then press the knob."
 msgstr ""
 
 # MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:70
+#: messages.c:74
 msgid "Please remove steel sheet from heatbed."
 msgstr ""
 
 # MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4052
+#: Marlin_main.cpp:4355
 msgid "Please run XYZ calibration first."
 msgstr ""
 
 # MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1293
+#: mmu.cpp:1359
 msgid "Please update firmware in your MMU2. Waiting for reset."
 msgstr ""
 
 # MSG_PLEASE_WAIT c=20
-#: messages.c:62
+#: messages.c:66
 msgid "Please wait"
 msgstr ""
 
 # 
-#: ultralcd.cpp:4755
+#: ultralcd.cpp:4997
 msgid "Please remove shipping helpers first."
 msgstr ""
 
 # MSG_PREHEAT_NOZZLE c=20
-#: messages.c:63
+#: messages.c:67
 msgid "Preheat the nozzle!"
 msgstr ""
 
 # MSG_PREHEAT
-#: ultralcd.cpp:6018
+#: ultralcd.cpp:6722
 msgid "Preheat"
 msgstr ""
 
 # MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:96
+#: messages.c:102
 msgid "Preheating nozzle. Please wait."
 msgstr ""
 
@@ -1131,32 +1016,32 @@ msgid "Please upgrade."
 msgstr ""
 
 # MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:9150
+#: Marlin_main.cpp:10364
 msgid "Press knob to preheat nozzle and continue."
 msgstr ""
 
 # 
-#: ultralcd.cpp:2013
+#: ultralcd.cpp:1851
 msgid "Power failures"
 msgstr ""
 
 # MSG_PRINT_ABORTED c=20
-#: messages.c:65
+#: messages.c:69
 msgid "Print aborted"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2350
+#: ultralcd.cpp:2455
 msgid "Preheating to load"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2351
+#: ultralcd.cpp:2459
 msgid "Preheating to unload"
 msgstr ""
 
 # MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:7471
+#: ultralcd.cpp:8307
 msgid "Print fan:"
 msgstr ""
 
@@ -1166,17 +1051,17 @@ msgid "Print from SD"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2313
+#: ultralcd.cpp:2317
 msgid "Press the knob"
 msgstr ""
 
 # MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1022
+#: ultralcd.cpp:1069
 msgid "Print paused"
 msgstr ""
 
 # 
-#: mmu.cpp:639
+#: mmu.cpp:723
 msgid "Press the knob to resume nozzle temperature."
 msgstr ""
 
@@ -1186,37 +1071,27 @@ msgid "Printer has not been calibrated yet. Please follow the manual, chapter Fi
 msgstr ""
 
 # 
-#: ultralcd.cpp:1921
+#: ultralcd.cpp:1723
 msgid "Print FAN"
 msgstr ""
 
-# WELCOME_MSG c=20
-#: 
-msgid "Prusa i3 MK2.5 ready."
-msgstr ""
-
-# WELCOME_MSG c=20
-#: 
-msgid "Prusa i3 MK3 ready."
-msgstr ""
-
 # MSG_PRUSA3D
-#: ultralcd.cpp:2227
+#: ultralcd.cpp:2205
 msgid "prusa3d.com"
 msgstr ""
 
 # MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3102
+#: ultralcd.cpp:3295
 msgid "Rear side [um]"
 msgstr ""
 
 # MSG_RECOVERING_PRINT c=20 r=1
-#: Marlin_main.cpp:8575
+#: Marlin_main.cpp:9764
 msgid "Recovering print    "
 msgstr ""
 
 # MSG_REMOVE_OLD_FILAMENT c=20 r=4
-#: mmu.cpp:744
+#: mmu.cpp:830
 msgid "Remove old filament and press the knob to start loading new filament."
 msgstr ""
 
@@ -1225,63 +1100,58 @@ msgstr ""
 msgid "Prusa i3 MK3S OK."
 msgstr ""
 
-# 
-#: 
-msgid "Prusa i3 MK2 ready."
-msgstr ""
-
 # MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5203
+#: ultralcd.cpp:5774
 msgid "Reset XYZ calibr."
 msgstr ""
 
 # MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3103
+#: ultralcd.cpp:3296
 msgid "Reset"
 msgstr ""
 
 # MSG_RESUME_PRINT
-#: ultralcd.cpp:6033
+#: ultralcd.cpp:6742
 msgid "Resume print"
 msgstr ""
 
 # MSG_RESUMING_PRINT c=20 r=1
-#: messages.c:69
+#: messages.c:73
 msgid "Resuming print"
 msgstr ""
 
 # MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3100
+#: ultralcd.cpp:3293
 msgid "Right side[um]"
 msgstr ""
 
 # MSG_SECOND_SERIAL_ON c=17 r=1
-#: ultralcd.cpp:5119
+#: ultralcd.cpp:5692
 msgid "RPi port     [on]"
 msgstr ""
 
 # MSG_SECOND_SERIAL_OFF c=17 r=1
-#: ultralcd.cpp:5117
+#: ultralcd.cpp:5690
 msgid "RPi port    [off]"
 msgstr ""
 
 # MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4583
+#: ultralcd.cpp:4812
 msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
 msgstr ""
 
 # MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-#: ultralcd.cpp:5033
+#: ultralcd.cpp:5322
 msgid "SD card  [normal]"
 msgstr ""
 
 # MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:5031
+#: ultralcd.cpp:5320
 msgid "SD card [flshAir]"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2862
+#: ultralcd.cpp:3019
 msgid "Right"
 msgstr ""
 
@@ -1291,217 +1161,207 @@ msgid "Searching bed calibration point"
 msgstr ""
 
 # MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5126
+#: ultralcd.cpp:5699
 msgid "Select language"
 msgstr ""
 
 # MSG_SELFTEST_OK
-#: ultralcd.cpp:6631
+#: ultralcd.cpp:7452
 msgid "Self test OK"
 msgstr ""
 
 # MSG_SELFTEST_START c=20
-#: ultralcd.cpp:6449
+#: ultralcd.cpp:7238
 msgid "Self test start  "
 msgstr ""
 
 # MSG_SELFTEST
-#: ultralcd.cpp:5179
+#: ultralcd.cpp:5750
 msgid "Selftest         "
 msgstr ""
 
 # MSG_SELFTEST_ERROR
-#: ultralcd.cpp:7058
+#: ultralcd.cpp:7879
 msgid "Selftest error !"
 msgstr ""
 
 # MSG_SELFTEST_FAILED c=20
-#: messages.c:73
+#: messages.c:77
 msgid "Selftest failed  "
 msgstr ""
 
 # MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1548
+#: Marlin_main.cpp:1551
 msgid "Selftest will be run to calibrate accurate sensorless rehoming."
 msgstr ""
 
 # 
-#: ultralcd.cpp:4803
+#: ultralcd.cpp:5045
 msgid "Select nozzle preheat temperature which matches your material."
 msgstr ""
 
 # 
-#: ultralcd.cpp:4552
+#: ultralcd.cpp:4780
 msgid "Select PLA filament:"
 msgstr ""
 
 # MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3111
+#: ultralcd.cpp:3314
 msgid "Set temperature:"
 msgstr ""
 
 # MSG_SETTINGS
-#: messages.c:81
+#: messages.c:86
 msgid "Settings"
 msgstr ""
 
 # MSG_SHOW_END_STOPS c=17 r=1
-#: ultralcd.cpp:5200
+#: ultralcd.cpp:5771
 msgid "Show end stops"
 msgstr ""
 
 # 
-#: ultralcd.cpp:3819
+#: ultralcd.cpp:4025
 msgid "Sensor state"
 msgstr ""
 
-# 
-#: 
-msgid "Sensors info"
-msgstr ""
-
-# 
-#: 
-msgid "Show pinda state"
-msgstr ""
-
 # MSG_FILE_CNT c=20 r=4
-#: 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_NONE c=17 r=1
-#: ultralcd.cpp:5043
-msgid "Sort:      [none]"
+#: ultralcd.cpp:5332
+msgid "Sort       [none]"
 msgstr ""
 
 # MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:5041
-msgid "Sort:      [time]"
+#: ultralcd.cpp:5330
+msgid "Sort       [time]"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2899
-msgid "Severe skew"
+#: ultralcd.cpp:3062
+msgid "Severe skew:"
 msgstr ""
 
 # MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:5042
-msgid "Sort:  [alphabet]"
+#: ultralcd.cpp:5331
+msgid "Sort   [alphabet]"
 msgstr ""
 
 # MSG_SORTING c=20 r=1
-#: cardreader.cpp:745
+#: cardreader.cpp:746
 msgid "Sorting files"
 msgstr ""
 
 # MSG_SOUND_LOUD c=17 r=1
-#: sound.h:5
+#: sound.h:6
 msgid "Sound      [loud]"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2898
-msgid "Slight skew"
+#: ultralcd.cpp:3061
+msgid "Slight skew:"
 msgstr ""
 
 # MSG_SOUND_MUTE c=17 r=1
-#: sound.h:8
+#: 
 msgid "Sound      [mute]"
 msgstr ""
 
 # 
-#: Marlin_main.cpp:4560
+#: Marlin_main.cpp:4871
 msgid "Some problem encountered, Z-leveling enforced ..."
 msgstr ""
 
 # MSG_SOUND_ONCE c=17 r=1
-#: sound.h:6
+#: sound.h:7
 msgid "Sound      [once]"
 msgstr ""
 
 # MSG_SOUND_SILENT c=17 r=1
-#: sound.h:7
+#: sound.h:8
 msgid "Sound    [silent]"
 msgstr ""
 
 # MSG_SPEED
-#: ultralcd.cpp:6199
+#: ultralcd.cpp:6926
 msgid "Speed"
 msgstr ""
 
 # MSG_SELFTEST_FAN_YES c=19
-#: messages.c:76
+#: messages.c:80
 msgid "Spinning"
 msgstr ""
 
 # MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4065
+#: Marlin_main.cpp:4368
 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
 msgstr ""
 
 # MSG_STATISTICS
-#: ultralcd.cpp:6108
+#: ultralcd.cpp:6839
 msgid "Statistics  "
 msgstr ""
 
 # MSG_STOP_PRINT
-#: messages.c:87
+#: messages.c:93
 msgid "Stop print"
 msgstr ""
 
 # MSG_STOPPED
-#: messages.c:88
+#: messages.c:94
 msgid "STOPPED. "
 msgstr ""
 
 # MSG_SUPPORT
-#: ultralcd.cpp:6117
+#: ultralcd.cpp:6848
 msgid "Support"
 msgstr ""
 
 # MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:7138
+#: ultralcd.cpp:7959
 msgid "Swapped"
 msgstr ""
 
 # MSG_TEMP_CALIBRATION c=20 r=1
-#: messages.c:89
+#: messages.c:95
 msgid "Temp. cal.          "
 msgstr ""
 
 # MSG_TEMP_CALIBRATION_ON c=20 r=1
-#: ultralcd.cpp:5113
+#: ultralcd.cpp:5686
 msgid "Temp. cal.   [on]"
 msgstr ""
 
 # MSG_TEMP_CALIBRATION_OFF c=20 r=1
-#: ultralcd.cpp:5111
+#: ultralcd.cpp:5684
 msgid "Temp. cal.  [off]"
 msgstr ""
 
 # MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5209
+#: ultralcd.cpp:5780
 msgid "Temp. calibration"
 msgstr ""
 
 # MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3744
+#: ultralcd.cpp:3951
 msgid "Temperature calibration failed"
 msgstr ""
 
 # MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:90
+#: messages.c:96
 msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
 msgstr ""
 
 # MSG_TEMPERATURE
-#: ultralcd.cpp:5089
+#: ultralcd.cpp:5650
 msgid "Temperature"
 msgstr ""
 
 # MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2273
+#: ultralcd.cpp:2251
 msgid "Temperatures"
 msgstr ""
 
@@ -1511,127 +1371,122 @@ msgid "There is still a need to make Z calibration. Please follow the manual, ch
 msgstr ""
 
 # 
-#: ultralcd.cpp:2752
+#: ultralcd.cpp:2908
 msgid "Total filament"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2754
+#: ultralcd.cpp:2908
 msgid "Total print time"
 msgstr ""
 
 # MSG_TUNE
-#: ultralcd.cpp:6015
+#: ultralcd.cpp:6719
 msgid "Tune"
 msgstr ""
 
 # 
-#: ultralcd.cpp:4640
+#: ultralcd.cpp:4869
 msgid "Unload"
 msgstr ""
 
 # 
-#: ultralcd.cpp:5617
-msgid "Unload all"
-msgstr ""
-
-# 
-#: ultralcd.cpp:1994
+#: ultralcd.cpp:1820
 msgid "Total failures"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2316
+#: ultralcd.cpp:2324
 msgid "to load filament"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2317
+#: ultralcd.cpp:2328
 msgid "to unload filament"
 msgstr ""
 
 # MSG_UNLOAD_FILAMENT c=17
-#: messages.c:91
+#: messages.c:97
 msgid "Unload filament"
 msgstr ""
 
 # MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:92
+#: messages.c:98
 msgid "Unloading filament"
 msgstr ""
 
 # 
-#: ultralcd.cpp:1961
+#: ultralcd.cpp:1773
 msgid "Total"
 msgstr ""
 
 # MSG_USED c=19 r=1
-#: ultralcd.cpp:5334
+#: ultralcd.cpp:5908
 msgid "Used during print"
 msgstr ""
 
 # MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2276
+#: ultralcd.cpp:2254
 msgid "Voltages"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2249
+#: ultralcd.cpp:2227
 msgid "unknown"
 msgstr ""
 
 # MSG_USERWAIT
-#: Marlin_main.cpp:4876
+#: Marlin_main.cpp:5263
 msgid "Wait for user..."
 msgstr ""
 
 # MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3255
+#: ultralcd.cpp:3458
 msgid "Waiting for nozzle and bed cooling"
 msgstr ""
 
 # MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3219
+#: ultralcd.cpp:3422
 msgid "Waiting for PINDA probe cooling"
 msgstr ""
 
 # 
-#: ultralcd.cpp:4639
+#: ultralcd.cpp:4868
 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 ""
 
 # MSG_CHANGED_BOTH c=20 r=4
-#: Marlin_main.cpp:1508
+#: Marlin_main.cpp:1511
 msgid "Warning: both printer type and motherboard type changed."
 msgstr ""
 
 # MSG_CHANGED_MOTHERBOARD c=20 r=4
-#: Marlin_main.cpp:1500
+#: Marlin_main.cpp:1503
 msgid "Warning: motherboard type changed."
 msgstr ""
 
 # MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1504
+#: Marlin_main.cpp:1507
 msgid "Warning: printer type changed."
 msgstr ""
 
 # MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3014
+#: Marlin_main.cpp:3054
 msgid "Was filament unload successful?"
 msgstr ""
 
 # MSG_SELFTEST_WIRINGERROR
-#: messages.c:80
+#: messages.c:85
 msgid "Wiring error"
 msgstr ""
 
 # MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5176
+#: ultralcd.cpp:5747
 msgid "Wizard"
 msgstr ""
 
 # MSG_XYZ_DETAILS c=19 r=1
-#: ultralcd.cpp:2265
+#: ultralcd.cpp:2243
 msgid "XYZ cal. details"
 msgstr ""
 
@@ -1641,107 +1496,317 @@ msgid "XYZ calibration failed. Please consult the manual."
 msgstr ""
 
 # MSG_YES
-#: messages.c:98
+#: messages.c:104
 msgid "Yes"
 msgstr ""
 
 # MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:97
+#: messages.c:103
 msgid "You can always resume the Wizard from Calibration -> Wizard."
 msgstr ""
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
-#: ultralcd.cpp:3715
+#: ultralcd.cpp:3922
 msgid "XYZ calibration all right. Skew will be corrected automatically."
 msgstr ""
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
-#: ultralcd.cpp:3712
+#: ultralcd.cpp:3919
 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
 msgstr ""
 
 # 
-#: ultralcd.cpp:4885
-msgid "X-correct"
+#: ultralcd.cpp:5130
+msgid "X-correct:"
 msgstr ""
 
 # MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3709
+#: ultralcd.cpp:3916
 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:3693
+#: ultralcd.cpp:3900
 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:3696
+#: ultralcd.cpp:3903
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr ""
 
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8
-#: ultralcd.cpp:3699
-msgid "XYZ calibration compromised. Left front calibration point not reachable."
-msgstr ""
-
 # MSG_LOAD_ALL c=17
-#: ultralcd.cpp:5575
+#: ultralcd.cpp:6166
 msgid "Load all"
 msgstr ""
 
-# MSG_LOAD_FILAMENT_1 c=17
-#: ultralcd.cpp:5576
-msgid "Load filament 1"
-msgstr ""
-
 # 
-#: ultralcd.cpp:3675
+#: ultralcd.cpp:3882
 msgid "XYZ calibration failed. Bed calibration point was not found."
 msgstr ""
 
 # 
-#: ultralcd.cpp:3681
+#: ultralcd.cpp:3888
 msgid "XYZ calibration failed. Front calibration points not reachable."
 msgstr ""
 
 # 
-#: ultralcd.cpp:3687
-msgid "XYZ calibration failed. Left front calibration point not reachable."
+#: ultralcd.cpp:3891
+msgid "XYZ calibration failed. Right front calibration point not reachable."
 msgstr ""
 
-# MSG_LOAD_FILAMENT_2 c=17
-#: ultralcd.cpp:5577
-msgid "Load filament 2"
+# 
+#: ultralcd.cpp:3016
+msgid "Y distance from min"
 msgstr ""
 
 # 
-#: ultralcd.cpp:3684
-msgid "XYZ calibration failed. Right front calibration point not reachable."
+#: ultralcd.cpp:5131
+msgid "Y-correct:"
 msgstr ""
 
-# MSG_LOAD_FILAMENT_3 c=17
-#: ultralcd.cpp:5578
-msgid "Load filament 3"
+# MSG_OFF
+#: menu.cpp:426
+msgid " [off]"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2859
-msgid "Y distance from min"
+#: messages.c:57
+msgid "Back"
+msgstr ""
+
+# 
+#: ultralcd.cpp:5639
+msgid "Checks"
+msgstr ""
+
+# 
+#: ultralcd.cpp:7973
+msgid "False triggering"
+msgstr ""
+
+# 
+#: ultralcd.cpp:4030
+msgid "FINDA:"
+msgstr ""
+
+# 
+#: ultralcd.cpp:5545
+msgid "Firmware   [none]"
+msgstr ""
+
+# 
+#: ultralcd.cpp:5551
+msgid "Firmware [strict]"
+msgstr ""
+
+# 
+#: ultralcd.cpp:5548
+msgid "Firmware   [warn]"
+msgstr ""
+
+# 
+#: messages.c:87
+msgid "HW Setup"
+msgstr ""
+
+# 
+#: ultralcd.cpp:4034
+msgid "IR:"
 msgstr ""
 
 # 
-#: ultralcd.cpp:4886
-msgid "Y-correct"
+#: ultralcd.cpp:7046
+msgid "Magnets comp.[N/A]"
 msgstr ""
 
-# MSG_LOAD_FILAMENT_4 c=17
-#: ultralcd.cpp:5579
-msgid "Load filament 4"
+# 
+#: ultralcd.cpp:7044
+msgid "Magnets comp.[Off]"
+msgstr ""
+
+# 
+#: ultralcd.cpp:7043
+msgid "Magnets comp. [On]"
+msgstr ""
+
+# 
+#: ultralcd.cpp:7035
+msgid "Mesh         [3x3]"
+msgstr ""
+
+# 
+#: ultralcd.cpp:7036
+msgid "Mesh         [7x7]"
 msgstr ""
 
-# MSG_LOAD_FILAMENT_5 c=17
-#: ultralcd.cpp:5582
-msgid "Load filament 5"
+# 
+#: ultralcd.cpp:5677
+msgid "Mesh bed leveling"
+msgstr ""
+
+# 
+#: Marlin_main.cpp:856
+msgid "MK3S firmware detected on MK3 printer"
+msgstr ""
+
+# 
+#: ultralcd.cpp:5306
+msgid "MMU Mode [Normal]"
+msgstr ""
+
+# 
+#: ultralcd.cpp:5307
+msgid "MMU Mode[Stealth]"
+msgstr ""
+
+# 
+#: ultralcd.cpp:4511
+msgid "Mode change in progress ..."
+msgstr ""
+
+# 
+#: ultralcd.cpp:5506
+msgid "Model      [none]"
+msgstr ""
+
+# 
+#: ultralcd.cpp:5512
+msgid "Model    [strict]"
+msgstr ""
+
+# 
+#: ultralcd.cpp:5509
+msgid "Model      [warn]"
+msgstr ""
+
+# 
+#: ultralcd.cpp:5467
+msgid "Nozzle d.  [0.25]"
+msgstr ""
+
+# 
+#: ultralcd.cpp:5470
+msgid "Nozzle d.  [0.40]"
+msgstr ""
+
+# 
+#: ultralcd.cpp:5473
+msgid "Nozzle d.  [0.60]"
+msgstr ""
+
+# 
+#: ultralcd.cpp:5421
+msgid "Nozzle     [none]"
+msgstr ""
+
+# 
+#: ultralcd.cpp:5427
+msgid "Nozzle   [strict]"
+msgstr ""
+
+# 
+#: ultralcd.cpp:5424
+msgid "Nozzle     [warn]"
+msgstr ""
+
+# 
+#: util.cpp:510
+msgid "G-code sliced for a different level. Continue?"
+msgstr ""
+
+# 
+#: util.cpp:516
+msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
+msgstr ""
+
+# 
+#: util.cpp:427
+msgid "G-code sliced for a different printer type. Continue?"
+msgstr ""
+
+# 
+#: util.cpp:433
+msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
+msgstr ""
+
+# 
+#: util.cpp:477
+msgid "G-code sliced for a newer firmware. Continue?"
+msgstr ""
+
+# 
+#: util.cpp:483
+msgid "G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
+msgstr ""
+
+# 
+#: ultralcd.cpp:4026
+msgid "PINDA:"
+msgstr ""
+
+# 
+#: ultralcd.cpp:2465
+msgid "Preheating to cut"
+msgstr ""
+
+# 
+#: ultralcd.cpp:2462
+msgid "Preheating to eject"
+msgstr ""
+
+# 
+#: util.cpp:390
+msgid "Printer nozzle diameter differs from the G-code. Continue?"
+msgstr ""
+
+# 
+#: util.cpp:397
+msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
+msgstr ""
+
+# 
+#: ultralcd.cpp:6683
+msgid "Rename"
+msgstr ""
+
+# 
+#: ultralcd.cpp:6679
+msgid "Select"
+msgstr ""
+
+# 
+#: ultralcd.cpp:2245
+msgid "Sensor info"
+msgstr ""
+
+# 
+#: messages.c:58
+msgid "Sheet"
+msgstr ""
+
+# 
+#: sound.h:9
+msgid "Sound    [assist]"
+msgstr ""
+
+# 
+#: ultralcd.cpp:5637
+msgid "Steel sheets"
+msgstr ""
+
+# 
+#: ultralcd.cpp:5132
+msgid "Z-correct:"
+msgstr ""
+
+# 
+#: ultralcd.cpp:7038
+msgid "Z-probe nr.    [1]"
+msgstr ""
+
+# 
+#: ultralcd.cpp:7040
+msgid "Z-probe nr.    [3]"
 msgstr ""
 

+ 569 - 504
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: čt 7. úno 2019 14:43:00\n"
-"PO-Revision-Date: čt 7. úno 2019 14:43:00\n"
+"POT-Creation-Date: Sun, Sep 22, 2019 2:03:01 PM\n"
+"PO-Revision-Date: Sun, Sep 22, 2019 2:03:01 PM\n"
 "Language-Team: \n"
 "X-Generator: Poedit 2.0.7\n"
 "X-Poedit-SourceCharset: UTF-8\n"
@@ -21,72 +21,72 @@ msgid " of 4"
 msgstr " z 4"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:56
+#: messages.c:60
 msgid " of 9"
 msgstr " z 9"
 
 # MSG_MEASURED_OFFSET
-#: ultralcd.cpp:2914
+#: ultralcd.cpp:3089
 msgid "[0;0] point offset"
 msgstr "[0;0] odsazeni bodu"
 
 # MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
-#: ultralcd.cpp:4219
-msgid "\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode"
-msgstr "\x1b[2JCrash detekce muze\x1b[1;0Hbyt zapnuta pouze v\x1b[2;0HNormal modu"
+#: 
+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
-#: ultralcd.cpp:4231
-msgid "\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode"
-msgstr "\x1b[2JPOZOR:\x1b[1;0HCrash detekce\x1b[2;0Hdeaktivovana ve\x1b[3;0HStealth modu"
+#: 
+msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
+msgstr "POZOR:\x0aCrash detekce\x0adeaktivovana ve\x0aStealth modu"
 
 # 
-#: ultralcd.cpp:2353
+#: ultralcd.cpp:2472
 msgid ">Cancel"
-msgstr ""
+msgstr ">Zrusit"
 
-# MSG_BABYSTEPPING_Z c=20
-#: ultralcd.cpp:3043
-msgid "Adjusting Z"
-msgstr "Dostavovani Z"
+# MSG_BABYSTEPPING_Z c=15
+#: ultralcd.cpp:3209
+msgid "Adjusting Z:"
+msgstr "Doladeni Z:"
 
 # MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:7459
+#: ultralcd.cpp:8295
 msgid "All correct      "
 msgstr "Vse OK "
 
 # MSG_WIZARD_DONE c=20 r=8
-#: messages.c:95
+#: messages.c:101
 msgid "All is done. Happy printing!"
 msgstr "Vse je hotovo."
 
 # 
-#: ultralcd.cpp:2109
+#: ultralcd.cpp:2009
 msgid "Ambient"
-msgstr ""
+msgstr "Okoli"
 
 # MSG_PRESS c=20
-#: ultralcd.cpp:2463
+#: ultralcd.cpp:2618
 msgid "and press the knob"
 msgstr "a stisknete tlacitko"
 
 # MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3330
+#: ultralcd.cpp:3529
 msgid "Are left and right Z~carriages all up?"
 msgstr "Dojely oba Z voziky k~hornimu dorazu?"
 
 # MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:4959
+#: ultralcd.cpp:5200
 msgid "SpoolJoin    [on]"
 msgstr "SpoolJoin   [zap]"
 
 # 
-#: ultralcd.cpp:4955
+#: ultralcd.cpp:5196
 msgid "SpoolJoin   [N/A]"
-msgstr "SpoolJoin   [N/A]"
+msgstr ""
 
-#  MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:4963
+# MSG_AUTO_DEPLETE_OFF c=17 r=1
+#: ultralcd.cpp:5204
 msgid "SpoolJoin   [off]"
 msgstr "SpoolJoin   [vyp]"
 
@@ -96,32 +96,32 @@ msgid "Auto home"
 msgstr ""
 
 # MSG_AUTOLOAD_FILAMENT c=17
-#: ultralcd.cpp:6091
+#: ultralcd.cpp:6822
 msgid "AutoLoad filament"
 msgstr "AutoZavedeni fil."
 
 # MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4246
+#: ultralcd.cpp:4462
 msgid "Autoloading filament available only when filament sensor is turned on..."
 msgstr "Automaticke zavadeni filamentu je dostupne pouze pri zapnutem filament senzoru..."
 
 # MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2655
+#: ultralcd.cpp:2813
 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:7128
+#: ultralcd.cpp:7949
 msgid "Axis length"
 msgstr "Delka osy"
 
 # MSG_SELFTEST_AXIS
-#: ultralcd.cpp:7130
+#: ultralcd.cpp:7951
 msgid "Axis"
 msgstr "Osa"
 
 # MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:7072
+#: ultralcd.cpp:7893
 msgid "Bed / Heater"
 msgstr "Podlozka / Topeni"
 
@@ -133,10 +133,10 @@ msgstr "Bed OK."
 # MSG_BED_HEATING
 #: messages.c:17
 msgid "Bed Heating"
-msgstr "Zahrivani bed"
+msgstr "Zahrivani bedu"
 
 # MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5197
+#: ultralcd.cpp:5768
 msgid "Bed level correct"
 msgstr "Korekce podlozky"
 
@@ -145,38 +145,28 @@ msgstr "Korekce podlozky"
 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_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4
-#: Marlin_main.cpp:4508
-msgid "Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset."
-msgstr "Kalibrace Z selhala. Sensor je odpojeny nebo preruseny kabel. Cekam na reset."
-
-# MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4
-#: Marlin_main.cpp:4512
-msgid "Bed leveling failed. Sensor triggered too high. Waiting for reset."
-msgstr "Kalibrace Z selhala. Sensor sepnul prilis vysoko. Cekam na reset."
-
 # MSG_BED
 #: messages.c:15
 msgid "Bed"
 msgstr "Podlozka"
 
 # MSG_MENU_BELT_STATUS c=15 r=1
-#: ultralcd.cpp:2135
+#: ultralcd.cpp:2059
 msgid "Belt status"
 msgstr "Stav remenu"
 
 # MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:67
+#: messages.c:71
 msgid "Blackout occurred. Recover print?"
 msgstr "Detekovan vypadek proudu.Obnovit tisk?"
 
 # 
-#: ultralcd.cpp:7461
+#: ultralcd.cpp:8297
 msgid "Calibrating home"
-msgstr ""
+msgstr "Kalibruji vychozi poz."
 
 # MSG_CALIBRATE_BED
-#: ultralcd.cpp:5186
+#: ultralcd.cpp:5757
 msgid "Calibrate XYZ"
 msgstr "Kalibrace XYZ"
 
@@ -186,12 +176,12 @@ msgid "Calibrate Z"
 msgstr "Kalibrovat Z"
 
 # MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4427
+#: ultralcd.cpp:4654
 msgid "Calibrate"
 msgstr "Zkalibrovat"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3290
+#: ultralcd.cpp:3492
 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."
 
@@ -201,37 +191,32 @@ msgid "Calibrating Z"
 msgstr "Kalibruji Z"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3290
+#: ultralcd.cpp:3492
 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:778
+#: ultralcd.cpp:816
 msgid "Calibration done"
 msgstr "Kalibrace OK"
 
 # MSG_MENU_CALIBRATION
-#: messages.c:57
+#: messages.c:61
 msgid "Calibration"
 msgstr "Kalibrace"
 
 # 
-#: ultralcd.cpp:4552
+#: ultralcd.cpp:4781
 msgid "Cancel"
 msgstr "Zrusit"
 
-# MSG_SD_INSERTED
-#: 
-msgid "Card inserted"
-msgstr "Karta vlozena"
-
 # MSG_SD_REMOVED
-#: ultralcd.cpp:7819
+#: ultralcd.cpp:8679
 msgid "Card removed"
 msgstr "Karta vyjmuta"
 
 # MSG_NOT_COLOR
-#: ultralcd.cpp:2563
+#: ultralcd.cpp:2718
 msgid "Color not correct"
 msgstr "Barva neni cista"
 
@@ -241,7 +226,7 @@ msgid "Cooldown"
 msgstr "Zchladit"
 
 # 
-#: ultralcd.cpp:4360
+#: ultralcd.cpp:4587
 msgid "Copy selected language?"
 msgstr "Kopirovat vybrany jazyk?"
 
@@ -253,7 +238,7 @@ msgstr "Crash det.  [zap]"
 # MSG_CRASHDETECT_NA
 #: messages.c:25
 msgid "Crash det.  [N/A]"
-msgstr "Crash det.  [N/A]"
+msgstr ""
 
 # MSG_CRASHDETECT_OFF
 #: messages.c:26
@@ -266,27 +251,27 @@ msgid "Crash detected."
 msgstr "Detekovan naraz."
 
 # 
-#: Marlin_main.cpp:608
+#: Marlin_main.cpp:600
 msgid "Crash detected. Resume print?"
 msgstr "Detekovan naraz. Obnovit tisk?"
 
 # 
-#: ultralcd.cpp:2013
+#: ultralcd.cpp:1853
 msgid "Crash"
-msgstr ""
+msgstr "Naraz"
 
 # MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:5335
+#: ultralcd.cpp:5909
 msgid "Current"
 msgstr "Pouze aktualni"
 
 # MSG_DATE c=17 r=1
-#: ultralcd.cpp:2235
+#: ultralcd.cpp:2213
 msgid "Date:"
 msgstr "Datum:"
 
 # MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5093
+#: ultralcd.cpp:5654
 msgid "Disable steppers"
 msgstr "Vypnout motory"
 
@@ -296,77 +281,52 @@ 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_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:4828
+#: ultralcd.cpp:5070
 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=9
-#: ultralcd.cpp:4889
-msgid "E-correct"
-msgstr "Korekce E"
+# MSG_EXTRUDER_CORRECTION c=10
+#: ultralcd.cpp:5134
+msgid "E-correct:"
+msgstr "Korekce E:"
 
 # MSG_EJECT_FILAMENT c=17 r=1
-#: ultralcd.cpp:6081
+#: messages.c:53
 msgid "Eject filament"
 msgstr "Vysunout filament"
 
-# MSG_EJECT_FILAMENT1 c=17 r=1
-#: ultralcd.cpp:5603
-msgid "Eject filament 1"
-msgstr "Vysunout filament 1"
-
-# MSG_EJECT_FILAMENT2 c=17 r=1
-#: ultralcd.cpp:5604
-msgid "Eject filament 2"
-msgstr "Vysunout filament 2"
-
-# MSG_EJECT_FILAMENT3 c=17 r=1
-#: ultralcd.cpp:5605
-msgid "Eject filament 3"
-msgstr "Vysunout filament 3"
-
-# MSG_EJECT_FILAMENT4 c=17 r=1
-#: ultralcd.cpp:5606
-msgid "Eject filament 4"
-msgstr "Vysunout filament 4"
-
-# MSG_EJECT_FILAMENT5 c=17 r=1
-#: ultralcd.cpp:5607
-msgid "Eject filament 5"
-msgstr "Vysunout filament 5"
-
 # 
-#: ultralcd.cpp:4640
+#: ultralcd.cpp:4869
 msgid "Eject"
 msgstr "Vysunout"
 
 # MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1339
+#: mmu.cpp:1434
 msgid "Ejecting filament"
 msgstr "Vysouvam filament"
 
 # MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
-#: ultralcd.cpp:7096
+#: ultralcd.cpp:7917
 msgid "Endstop not hit"
 msgstr "Kon. spinac nesepnut"
 
 # MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:7090
+#: ultralcd.cpp:7911
 msgid "Endstop"
 msgstr "Koncovy spinac"
 
 # MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:7078
+#: ultralcd.cpp:7899
 msgid "Endstops"
 msgstr "Konc. spinace"
 
 # MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6132
+#: ultralcd.cpp:6859
 msgid "Error - static memory has been overwritten"
 msgstr "Chyba - Doslo k prepisu staticke pameti!"
 
 # MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4259
+#: ultralcd.cpp:4475
 msgid "ERROR: Filament sensor is not responding, please check connection."
 msgstr "CHYBA: Filament senzor nereaguje, zkontrolujte zapojeni."
 
@@ -375,38 +335,13 @@ msgstr "CHYBA: Filament senzor nereaguje, zkontrolujte zapojeni."
 msgid "ERROR:"
 msgstr "CHYBA:"
 
-# 
-#: Marlin_main.cpp:1006
-msgid "External SPI flash W25X20CL not responding."
-msgstr "Externi SPI flash W25X20CL neodpovida."
-
-# 
-#: ultralcd.cpp:5633
-msgid "Extruder 1"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5634
-msgid "Extruder 2"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5635
-msgid "Extruder 3"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5636
-msgid "Extruder 4"
-msgstr ""
-
 # MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:7468
+#: ultralcd.cpp:8304
 msgid "Extruder fan:"
 msgstr "Levy vent.:"
 
 # MSG_INFO_EXTRUDER c=15 r=1
-#: ultralcd.cpp:2266
+#: ultralcd.cpp:2244
 msgid "Extruder info"
 msgstr ""
 
@@ -416,12 +351,12 @@ msgid "Extruder"
 msgstr ""
 
 # 
-#: ultralcd.cpp:6115
+#: ultralcd.cpp:6846
 msgid "Fail stats MMU"
-msgstr ""
+msgstr "Selhani MMU"
 
 # MSG_FSENS_AUTOLOAD_ON c=17 r=1
-#: ultralcd.cpp:4927
+#: ultralcd.cpp:5168
 msgid "F. autoload  [on]"
 msgstr "F. autozav. [zap]"
 
@@ -431,14 +366,14 @@ msgid "F. autoload [N/A]"
 msgstr "F. autozav. [N/A]"
 
 # MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-#: ultralcd.cpp:4929
+#: ultralcd.cpp:5170
 msgid "F. autoload [off]"
 msgstr "F. autozav. [vyp]"
 
 # 
-#: ultralcd.cpp:6112
+#: ultralcd.cpp:6843
 msgid "Fail stats"
-msgstr ""
+msgstr "Selhani"
 
 # MSG_FAN_SPEED c=14
 #: messages.c:31
@@ -446,17 +381,17 @@ msgid "Fan speed"
 msgstr "Rychlost vent."
 
 # MSG_SELFTEST_FAN c=20
-#: messages.c:74
+#: messages.c:78
 msgid "Fan test"
 msgstr "Test ventilatoru"
 
 # MSG_FANS_CHECK_ON c=17 r=1
-#: ultralcd.cpp:5100
+#: ultralcd.cpp:5663
 msgid "Fans check   [on]"
 msgstr "Kontr. vent.[zap]"
 
 # MSG_FANS_CHECK_OFF c=17 r=1
-#: ultralcd.cpp:5102
+#: ultralcd.cpp:5665
 msgid "Fans check  [off]"
 msgstr "Kontr. vent.[vyp]"
 
@@ -465,13 +400,8 @@ msgstr "Kontr. vent.[vyp]"
 msgid "Fil. sensor  [on]"
 msgstr "Fil. senzor [zap]"
 
-# MSG_RESPONSE_POOR c=20 r=2
-#: Marlin_main.cpp:3146
-msgid "Fil. sensor response is poor, disable it?"
-msgstr "Senzor nerozpoznal filament, vypnout?"
-
 # MSG_FSENSOR_NA
-#: ultralcd.cpp:4907
+#: ultralcd.cpp:5148
 msgid "Fil. sensor [N/A]"
 msgstr "Fil. senzor [N/A]"
 
@@ -481,9 +411,9 @@ msgid "Fil. sensor [off]"
 msgstr "Fil. senzor [vyp]"
 
 # 
-#: ultralcd.cpp:2013
+#: ultralcd.cpp:1852
 msgid "Filam. runouts"
-msgstr ""
+msgstr "Vypadky filam."
 
 # MSG_FILAMENT_CLEAN c=20 r=2
 #: messages.c:32
@@ -491,32 +421,27 @@ msgid "Filament extruding & with correct color?"
 msgstr "Filament vytlacen a spravne barvy?"
 
 # MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2559
+#: ultralcd.cpp:2714
 msgid "Filament not loaded"
 msgstr "Filament nezaveden"
 
 # MSG_FILAMENT_SENSOR c=20
-#: ultralcd.cpp:7144
+#: messages.c:84
 msgid "Filament sensor"
 msgstr "Senzor filamentu"
 
-# MSG_SELFTEST_FILAMENT_SENSOR c=18
-#: ultralcd.cpp:7477
-msgid "Filament sensor:"
-msgstr "Senzor filamentu:"
-
 # MSG_FILAMENT_USED c=19 r=1
-#: ultralcd.cpp:2725
+#: ultralcd.cpp:2885
 msgid "Filament used"
 msgstr "Spotrebovano filamentu"
 
 # MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2727
+#: ultralcd.cpp:2886
 msgid "Print time"
 msgstr "Cas tisku"
 
 # MSG_FILE_INCOMPLETE c=20 r=2
-#: ultralcd.cpp:7595
+#: ultralcd.cpp:8432
 msgid "File incomplete. Continue anyway?"
 msgstr "Soubor nekompletni. Pokracovat?"
 
@@ -526,52 +451,52 @@ msgid "Finishing movements"
 msgstr "Dokoncovani pohybu"
 
 # MSG_V2_CALIBRATION c=17 r=1
-#: ultralcd.cpp:5177
+#: messages.c:105
 msgid "First layer cal."
 msgstr "Kal. prvni vrstvy"
 
 # MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:4740
+#: ultralcd.cpp:4982
 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:640
+#: mmu.cpp:724
 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:6205
+#: ultralcd.cpp:6932
 msgid "Flow"
 msgstr "Prutok"
 
 # MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2228
+#: ultralcd.cpp:2206
 msgid "forum.prusa3d.com"
 msgstr ""
 
 # MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:71
+#: messages.c:75
 msgid "Front print fan?"
 msgstr "Predni tiskovy vent?"
 
 # MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3101
+#: ultralcd.cpp:3294
 msgid "Front side[um]"
 msgstr "Vpredu [um]"
 
 # MSG_SELFTEST_FANS
-#: ultralcd.cpp:7136
+#: ultralcd.cpp:7957
 msgid "Front/left fans"
 msgstr "Predni/levy vent."
 
 # MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:7066
+#: ultralcd.cpp:7887
 msgid "Heater/Thermistor"
 msgstr "Topeni/Termistor"
 
 # MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:7475
+#: Marlin_main.cpp:8467
 msgid "Heating disabled by safety timer."
 msgstr "Zahrivani preruseno bezpecnostnim casovacem."
 
@@ -586,67 +511,62 @@ msgid "Heating"
 msgstr "Zahrivani"
 
 # MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:4719
+#: ultralcd.cpp:4961
 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:2229
+#: ultralcd.cpp:2207
 msgid "howto.prusa3d.com"
 msgstr ""
 
-# 
-#: ultralcd.cpp:6087
-msgid "Change extruder"
-msgstr "Zmenit extruder"
-
 # MSG_FILAMENTCHANGE
 #: messages.c:37
 msgid "Change filament"
 msgstr "Vymenit filament"
 
 # MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2474
+#: ultralcd.cpp:2629
 msgid "Change success!"
 msgstr "Zmena uspesna!"
 
 # MSG_CORRECTLY c=20
-#: ultralcd.cpp:2551
+#: ultralcd.cpp:2706
 msgid "Changed correctly?"
 msgstr "Vymena ok?"
 
 # MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:77
+#: messages.c:81
 msgid "Checking bed     "
 msgstr "Kontrola podlozky"
 
 # MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:7450
+#: ultralcd.cpp:8286
 msgid "Checking endstops"
 msgstr "Kontrola endstopu"
 
 # MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:7456
+#: ultralcd.cpp:8292
 msgid "Checking hotend  "
 msgstr "Kontrola hotend "
 
 # MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:78
+#: messages.c:82
 msgid "Checking sensors "
 msgstr "Kontrola senzoru"
 
 # MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:7451
+#: ultralcd.cpp:8287
 msgid "Checking X axis  "
 msgstr "Kontrola osy X"
 
 # MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:7452
+#: ultralcd.cpp:8288
 msgid "Checking Y axis  "
 msgstr "Kontrola osy Y"
 
 # MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:7453
+#: ultralcd.cpp:8289
 msgid "Checking Z axis  "
 msgstr "Kontrola osy Z"
 
@@ -666,112 +586,82 @@ msgid "Filament"
 msgstr ""
 
 # MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:4749
+#: ultralcd.cpp:4991
 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:4757
+#: ultralcd.cpp:4999
 msgid "I will run z calibration now."
 msgstr "Nyni provedu z kalibraci."
 
 # MSG_WIZARD_V2_CAL_2 c=20 r=12
-#: ultralcd.cpp:4822
+#: ultralcd.cpp:5064
 msgid "I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."
 msgstr "Zacnu tisknout linku a Vy budete postupne snizovat trysku otacenim tlacitka dokud nedosahnete optimalni vysky. Prohlednete si obrazky v nasi prirucce v kapitole Kalibrace."
 
-# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: mesh_bed_calibration.cpp:2481
-msgid "Improving bed calibration point"
-msgstr "Zlepsuji presnost kalibracniho bodu"
-
 # MSG_WATCH
-#: messages.c:93
+#: messages.c:99
 msgid "Info screen"
 msgstr "Informace"
 
-# MSG_FILAMENT_LOADING_T0 c=20 r=4
-#: messages.c:33
-msgid "Insert filament into extruder 1. Click when done."
-msgstr "Vlozte filament do extruderu 1. Potvrdte tlacitkem."
-
-# MSG_FILAMENT_LOADING_T1 c=20 r=4
-#: messages.c:34
-msgid "Insert filament into extruder 2. Click when done."
-msgstr "Vlozte filament do extruderu 2. Potvrdte tlacitkem."
-
-# MSG_FILAMENT_LOADING_T2 c=20 r=4
-#: messages.c:35
-msgid "Insert filament into extruder 3. Click when done."
-msgstr "Vlozte filament do extruderu 3. Potvrdte tlacitkem."
-
-# MSG_FILAMENT_LOADING_T3 c=20 r=4
-#: messages.c:36
-msgid "Insert filament into extruder 4. Click when done."
-msgstr "Vlozte filament do extruderu 4. Potvrdte tlacitkem."
-
 # 
-#: ultralcd.cpp:4782
+#: ultralcd.cpp:5024
 msgid "Is filament 1 loaded?"
 msgstr "Je filament 1 zaveden?"
 
 # MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2459
+#: ultralcd.cpp:2614
 msgid "Insert filament"
 msgstr "Vlozte filament"
 
 # MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4785
+#: ultralcd.cpp:5027
 msgid "Is filament loaded?"
 msgstr "Je filament zaveden?"
 
 # MSG_WIZARD_PLA_FILAMENT c=20 r=2
-#: ultralcd.cpp:4816
+#: ultralcd.cpp:5058
 msgid "Is it PLA filament?"
 msgstr "Je to PLA filament?"
 
 # MSG_PLA_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4561
+#: ultralcd.cpp:4790
 msgid "Is PLA filament loaded?"
 msgstr "Je PLA filament zaveden?"
 
 # MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:86
+#: messages.c:92
 msgid "Is steel sheet on heatbed?"
 msgstr "Je tiskovy plat na podlozce?"
 
-# MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20
-#: mesh_bed_calibration.cpp:2223
-msgid "Iteration "
-msgstr "Iterace "
-
 # 
-#: ultralcd.cpp:1976
+#: ultralcd.cpp:1795
 msgid "Last print failures"
-msgstr ""
+msgstr "Selhani posl. tisku"
 
 # 
-#: ultralcd.cpp:1960
+#: ultralcd.cpp:1772
 msgid "Last print"
-msgstr ""
+msgstr "Posledni tisk"
 
 # MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:72
+#: messages.c:76
 msgid "Left hotend fan?"
 msgstr "Levy vent na trysce?"
 
 # 
-#: ultralcd.cpp:2861
+#: ultralcd.cpp:3018
 msgid "Left"
-msgstr "Vlevo:"
+msgstr "Vlevo"
 
 # MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3099
+#: ultralcd.cpp:3292
 msgid "Left side [um]"
 msgstr "Vlevo [um]"
 
 # 
-#: ultralcd.cpp:5107
+#: ultralcd.cpp:5680
 msgid "Lin. correction"
 msgstr "Korekce lin."
 
@@ -786,7 +676,7 @@ msgid "Load filament"
 msgstr "Zavest filament"
 
 # MSG_LOADING_COLOR
-#: ultralcd.cpp:2499
+#: ultralcd.cpp:2654
 msgid "Loading color"
 msgstr "Cisteni barvy"
 
@@ -796,92 +686,92 @@ msgid "Loading filament"
 msgstr "Zavadeni filamentu"
 
 # MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:7120
+#: ultralcd.cpp:7941
 msgid "Loose pulley"
 msgstr "Uvolnena remenicka"
 
 # 
-#: ultralcd.cpp:6079
+#: ultralcd.cpp:6805
 msgid "Load to nozzle"
 msgstr "Zavest do trysky"
 
 # MSG_M117_V2_CALIBRATION c=25 r=1
-#: messages.c:53
+#: messages.c:55
 msgid "M117 First layer cal."
 msgstr "M117 Kal. prvni vrstvy"
 
 # MSG_MAIN
-#: messages.c:54
+#: messages.c:56
 msgid "Main"
 msgstr "Hlavni nabidka"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:55
+#: messages.c:59
 msgid "Measuring reference height of calibration point"
 msgstr "Merim referencni vysku kalibracniho bodu"
 
 # MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5192
+#: ultralcd.cpp:5763
 msgid "Mesh Bed Leveling"
 msgstr ""
 
 # MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:676
+#: mmu.cpp:762
 msgid "MMU OK. Resuming position..."
 msgstr "MMU OK. Pokracuji v tisku..."
 
 # MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:669
+#: mmu.cpp:755
 msgid "MMU OK. Resuming temperature..."
 msgstr "MMU OK. Pokracuji v nahrivani..."
 
 # 
-#: ultralcd.cpp:2896
+#: ultralcd.cpp:3059
 msgid "Measured skew"
 msgstr "Merene zkoseni"
 
 # 
-#: ultralcd.cpp:1977
+#: ultralcd.cpp:1796
 msgid "MMU fails"
-msgstr ""
+msgstr "Selhani MMU"
 
 # 
-#: mmu.cpp:1399
+#: mmu.cpp:1613
 msgid "MMU load failed     "
-msgstr ""
+msgstr "Zavedeni MMU selhalo"
 
 # 
-#: ultralcd.cpp:1977
+#: ultralcd.cpp:1797
 msgid "MMU load fails"
-msgstr ""
+msgstr "MMU selhani zavadeni"
 
 # MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:687
+#: mmu.cpp:773
 msgid "MMU OK. Resuming..."
 msgstr "MMU OK. Pokracuji..."
 
 # MSG_STEALTH_MODE_OFF
-#: messages.c:84
+#: messages.c:90
 msgid "Mode     [Normal]"
 msgstr "Mod      [Normal]"
 
 # MSG_SILENT_MODE_ON
-#: messages.c:83
+#: messages.c:89
 msgid "Mode     [silent]"
 msgstr "Mod       [tichy]"
 
 # 
-#: mmu.cpp:635
+#: mmu.cpp:719
 msgid "MMU needs user attention."
 msgstr "MMU potrebuje zasah uzivatele."
 
 # 
-#: ultralcd.cpp:1994
+#: ultralcd.cpp:1823
 msgid "MMU power fails"
-msgstr ""
+msgstr "MMU vypadky proudu"
 
 # MSG_STEALTH_MODE_ON
-#: messages.c:85
+#: messages.c:91
 msgid "Mode    [Stealth]"
 msgstr "Mod       [tichy]"
 
@@ -891,62 +781,62 @@ msgid "Mode [auto power]"
 msgstr "Mod [automaticky]"
 
 # MSG_SILENT_MODE_OFF
-#: messages.c:82
+#: messages.c:88
 msgid "Mode [high power]"
 msgstr "Mod  [vys. vykon]"
 
 # 
-#: ultralcd.cpp:2241
+#: ultralcd.cpp:2219
 msgid "MMU2 connected"
-msgstr ""
+msgstr "MMU2 pripojeno"
 
 # MSG_SELFTEST_MOTOR
-#: messages.c:79
+#: messages.c:83
 msgid "Motor"
 msgstr ""
 
 # MSG_MOVE_AXIS
-#: ultralcd.cpp:5091
+#: ultralcd.cpp:5652
 msgid "Move axis"
 msgstr "Posunout osu"
 
 # MSG_MOVE_X
-#: ultralcd.cpp:4164
+#: ultralcd.cpp:4378
 msgid "Move X"
 msgstr "Posunout X"
 
 # MSG_MOVE_Y
-#: ultralcd.cpp:4165
+#: ultralcd.cpp:4379
 msgid "Move Y"
 msgstr "Posunout Y"
 
 # MSG_MOVE_Z
-#: ultralcd.cpp:4166
+#: ultralcd.cpp:4380
 msgid "Move Z"
 msgstr "Posunout Z"
 
 # MSG_NO_MOVE
-#: Marlin_main.cpp:4908
+#: Marlin_main.cpp:5292
 msgid "No move."
 msgstr "Bez pohybu."
 
 # MSG_NO_CARD
-#: ultralcd.cpp:6059
+#: ultralcd.cpp:6772
 msgid "No SD card"
 msgstr "Zadna SD karta"
 
 # 
-#: ultralcd.cpp:2867
+#: ultralcd.cpp:3024
 msgid "N/A"
 msgstr ""
 
 # MSG_NO
-#: messages.c:58
+#: messages.c:62
 msgid "No"
 msgstr "Ne"
 
 # MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:7068
+#: ultralcd.cpp:7889
 msgid "Not connected"
 msgstr "Nezapojeno "
 
@@ -955,78 +845,73 @@ msgstr "Nezapojeno "
 msgid "New firmware version available:"
 msgstr "Vysla nova verze firmware:"
 
-# 
-#: 
-msgid "No "
-msgstr "Ne"
-
 # MSG_SELFTEST_FAN_NO c=19
-#: messages.c:75
+#: messages.c:79
 msgid "Not spinning"
 msgstr "Netoci se"
 
 # MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4821
+#: ultralcd.cpp:5063
 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:4765
+#: ultralcd.cpp:5007
 msgid "Now I will preheat nozzle for PLA."
 msgstr "Nyni predehreji trysku pro PLA."
 
 # MSG_NOZZLE
-#: messages.c:59
+#: messages.c:63
 msgid "Nozzle"
 msgstr "Tryska"
 
 # MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
-#: Marlin_main.cpp:1516
+#: Marlin_main.cpp:1519
 msgid "Old settings found. Default PID, Esteps etc. will be set."
 msgstr "Neplatne hodnoty nastaveni. Bude pouzito vychozi PID, Esteps atd."
 
 # 
-#: ultralcd.cpp:4756
+#: ultralcd.cpp:4998
 msgid "Now remove the test print from steel sheet."
 msgstr "Nyni odstrante testovaci vytisk z tiskoveho platu."
 
 # 
-#: ultralcd.cpp:1919
+#: ultralcd.cpp:1722
 msgid "Nozzle FAN"
-msgstr ""
+msgstr "Vent. trysky"
 
 # MSG_PAUSE_PRINT
-#: ultralcd.cpp:6029
+#: ultralcd.cpp:6735
 msgid "Pause print"
 msgstr "Pozastavit tisk"
 
 # MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1741
+#: ultralcd.cpp:1606
 msgid "PID cal.           "
 msgstr "PID kal. "
 
 # MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1747
+#: ultralcd.cpp:1612
 msgid "PID cal. finished"
 msgstr "PID kal. ukoncena"
 
 # MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5198
+#: ultralcd.cpp:5769
 msgid "PID calibration"
 msgstr "PID kalibrace"
 
 # MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:808
+#: ultralcd.cpp:846
 msgid "PINDA Heating"
 msgstr "Nahrivani PINDA"
 
 # MSG_PAPER c=20 r=8
-#: messages.c:60
+#: messages.c:64
 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:4830
+#: ultralcd.cpp:5072
 msgid "Please clean heatbed and then press the knob."
 msgstr "Prosim ocistete podlozku a stisknete tlacitko."
 
@@ -1036,94 +921,94 @@ 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:7060
+#: ultralcd.cpp:7881
 msgid "Please check :"
 msgstr "Zkontrolujte :"
 
 # MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:94
+#: messages.c:100
 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_WIZARD_LOAD_FILAMENT c=20 r=8
-#: ultralcd.cpp:4664
+#: ultralcd.cpp:4894
 msgid "Please insert PLA filament to the extruder, then press knob to load it."
 msgstr "Prosim vlozte PLA filament do extruderu, pote stisknete tlacitko pro zavedeni filamentu."
 
 # MSG_PLEASE_LOAD_PLA c=20 r=4
-#: ultralcd.cpp:4566
+#: ultralcd.cpp:4795
 msgid "Please load PLA filament first."
 msgstr "Nejdrive prosim zavedte PLA filament."
 
 # MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3025
+#: Marlin_main.cpp:3064
 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:65
 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:68
 msgid "Please press the knob to unload filament"
 msgstr "Pro vysunuti filamentu stisknete prosim tlacitko"
 
 # 
-#: ultralcd.cpp:4660
+#: ultralcd.cpp:4889
 msgid "Please insert PLA filament to the first tube of MMU, then press the knob to load it."
 msgstr "Prosim vlozte PLA filament do trubicky MMU, pote stisknete tlacitko pro zavedeni filamentu."
 
 # MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:66
+#: messages.c:70
 msgid "Please pull out filament immediately"
 msgstr "Prosim vyjmete urychlene filament"
 
 # MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1347
+#: mmu.cpp:1440
 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:74
 msgid "Please remove steel sheet from heatbed."
 msgstr "Odstrante prosim tiskovy plat z podlozky."
 
 # MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4052
+#: Marlin_main.cpp:4355
 msgid "Please run XYZ calibration first."
 msgstr "Nejprve spustte kalibraci XYZ."
 
 # MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1293
+#: mmu.cpp:1359
 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:66
 msgid "Please wait"
 msgstr "Prosim cekejte"
 
 # 
-#: ultralcd.cpp:4755
+#: ultralcd.cpp:4997
 msgid "Please remove shipping helpers first."
 msgstr "Nejprve prosim sundejte transportni soucastky."
 
 # MSG_PREHEAT_NOZZLE c=20
-#: messages.c:63
+#: messages.c:67
 msgid "Preheat the nozzle!"
 msgstr "Predehrejte trysku!"
 
 # MSG_PREHEAT
-#: ultralcd.cpp:6018
+#: ultralcd.cpp:6722
 msgid "Preheat"
 msgstr "Predehrev"
 
 # MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:96
+#: messages.c:102
 msgid "Preheating nozzle. Please wait."
-msgstr "Predehrivam trysku. Prosim cekejte."
+msgstr "Predehrev trysky. Prosim cekejte."
 
 # 
 #: util.cpp:297
@@ -1131,32 +1016,32 @@ msgid "Please upgrade."
 msgstr "Prosim aktualizujte."
 
 # MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:9150
+#: Marlin_main.cpp:10364
 msgid "Press knob to preheat nozzle and continue."
 msgstr "Pro nahrati trysky a pokracovani stisknete tlacitko."
 
 # 
-#: ultralcd.cpp:2013
+#: ultralcd.cpp:1851
 msgid "Power failures"
-msgstr ""
+msgstr "Vypadky proudu"
 
 # MSG_PRINT_ABORTED c=20
-#: messages.c:65
+#: messages.c:69
 msgid "Print aborted"
 msgstr "Tisk prerusen"
 
 # 
-#: ultralcd.cpp:2350
+#: ultralcd.cpp:2455
 msgid "Preheating to load"
-msgstr ""
+msgstr "Predehrev k zavedeni"
 
 # 
-#: ultralcd.cpp:2351
+#: ultralcd.cpp:2459
 msgid "Preheating to unload"
-msgstr ""
+msgstr "Predehrev k vyjmuti"
 
 # MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:7471
+#: ultralcd.cpp:8307
 msgid "Print fan:"
 msgstr "Tiskovy vent.:"
 
@@ -1166,17 +1051,17 @@ msgid "Print from SD"
 msgstr "Tisk z SD"
 
 # 
-#: ultralcd.cpp:2313
+#: ultralcd.cpp:2317
 msgid "Press the knob"
-msgstr ""
+msgstr "Stisknete hl. tlacitko"
 
 # MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1022
+#: ultralcd.cpp:1069
 msgid "Print paused"
 msgstr "Tisk pozastaven"
 
 # 
-#: mmu.cpp:639
+#: mmu.cpp:723
 msgid "Press the knob to resume nozzle temperature."
 msgstr "Pro pokracovani nahrivani trysky stisknete tlacitko."
 
@@ -1186,37 +1071,27 @@ msgid "Printer has not been calibrated yet. Please follow the manual, chapter Fi
 msgstr "Tiskarna nebyla jeste zkalibrovana. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Postup kalibrace."
 
 # 
-#: ultralcd.cpp:1921
+#: ultralcd.cpp:1723
 msgid "Print FAN"
-msgstr ""
-
-# WELCOME_MSG c=20
-#: 
-msgid "Prusa i3 MK2.5 ready."
-msgstr "Prusa i3 MK2.5 ok."
-
-# WELCOME_MSG c=20
-#: 
-msgid "Prusa i3 MK3 ready."
-msgstr "Prusa i3 MK3 ok."
+msgstr "Tiskovy vent."
 
 # MSG_PRUSA3D
-#: ultralcd.cpp:2227
+#: ultralcd.cpp:2205
 msgid "prusa3d.com"
 msgstr ""
 
 # MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3102
+#: ultralcd.cpp:3295
 msgid "Rear side [um]"
 msgstr "Vzadu [um]"
 
 # MSG_RECOVERING_PRINT c=20 r=1
-#: Marlin_main.cpp:8575
+#: Marlin_main.cpp:9764
 msgid "Recovering print    "
 msgstr "Obnovovani tisku "
 
 # MSG_REMOVE_OLD_FILAMENT c=20 r=4
-#: mmu.cpp:744
+#: mmu.cpp:830
 msgid "Remove old filament and press the knob to start loading new filament."
 msgstr "Vyjmete stary filament a stisknete tlacitko pro zavedeni noveho."
 
@@ -1225,63 +1100,58 @@ msgstr "Vyjmete stary filament a stisknete tlacitko pro zavedeni noveho."
 msgid "Prusa i3 MK3S OK."
 msgstr ""
 
-# 
-#: 
-msgid "Prusa i3 MK2 ready."
-msgstr "Prusa i3 MK2 ok."
-
 # MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5203
+#: ultralcd.cpp:5774
 msgid "Reset XYZ calibr."
 msgstr "Reset XYZ kalibr."
 
 # MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3103
+#: ultralcd.cpp:3296
 msgid "Reset"
 msgstr ""
 
 # MSG_RESUME_PRINT
-#: ultralcd.cpp:6033
+#: ultralcd.cpp:6742
 msgid "Resume print"
 msgstr "Pokracovat"
 
 # MSG_RESUMING_PRINT c=20 r=1
-#: messages.c:69
+#: messages.c:73
 msgid "Resuming print"
 msgstr "Obnoveni tisku"
 
 # MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3100
+#: ultralcd.cpp:3293
 msgid "Right side[um]"
 msgstr "Vpravo [um]"
 
 # MSG_SECOND_SERIAL_ON c=17 r=1
-#: ultralcd.cpp:5119
+#: ultralcd.cpp:5692
 msgid "RPi port     [on]"
 msgstr "RPi port    [zap]"
 
 # MSG_SECOND_SERIAL_OFF c=17 r=1
-#: ultralcd.cpp:5117
+#: ultralcd.cpp:5690
 msgid "RPi port    [off]"
 msgstr "RPi port    [vyp]"
 
 # MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4583
+#: ultralcd.cpp:4812
 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_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-#: ultralcd.cpp:5033
+#: ultralcd.cpp:5322
 msgid "SD card  [normal]"
-msgstr "SD card  [normal]"
+msgstr ""
 
 # MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:5031
+#: ultralcd.cpp:5320
 msgid "SD card [flshAir]"
 msgstr "SD card [FlshAir]"
 
 # 
-#: ultralcd.cpp:2862
+#: ultralcd.cpp:3019
 msgid "Right"
 msgstr "Vpravo"
 
@@ -1291,217 +1161,207 @@ msgid "Searching bed calibration point"
 msgstr "Hledam kalibracni bod podlozky"
 
 # MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5126
+#: ultralcd.cpp:5699
 msgid "Select language"
 msgstr "Vyber jazyka"
 
 # MSG_SELFTEST_OK
-#: ultralcd.cpp:6631
+#: ultralcd.cpp:7452
 msgid "Self test OK"
 msgstr ""
 
 # MSG_SELFTEST_START c=20
-#: ultralcd.cpp:6449
+#: ultralcd.cpp:7238
 msgid "Self test start  "
 msgstr "Self test start "
 
 # MSG_SELFTEST
-#: ultralcd.cpp:5179
+#: ultralcd.cpp:5750
 msgid "Selftest         "
 msgstr "Selftest "
 
 # MSG_SELFTEST_ERROR
-#: ultralcd.cpp:7058
+#: ultralcd.cpp:7879
 msgid "Selftest error !"
 msgstr "Chyba Selftestu!"
 
 # MSG_SELFTEST_FAILED c=20
-#: messages.c:73
+#: messages.c:77
 msgid "Selftest failed  "
 msgstr "Selftest selhal "
 
 # MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1548
+#: Marlin_main.cpp:1551
 msgid "Selftest will be run to calibrate accurate sensorless rehoming."
 msgstr "Pro kalibraci presneho rehomovani bude nyni spusten selftest."
 
 # 
-#: ultralcd.cpp:4803
+#: ultralcd.cpp:5045
 msgid "Select nozzle preheat temperature which matches your material."
 msgstr "Vyberte teplotu predehrati trysky ktera odpovida vasemu materialu."
 
 # 
-#: ultralcd.cpp:4552
+#: ultralcd.cpp:4780
 msgid "Select PLA filament:"
 msgstr "Vyberte PLA filament:"
 
 # MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3111
+#: ultralcd.cpp:3314
 msgid "Set temperature:"
 msgstr "Nastavte teplotu:"
 
 # MSG_SETTINGS
-#: messages.c:81
+#: messages.c:86
 msgid "Settings"
 msgstr "Nastaveni"
 
 # MSG_SHOW_END_STOPS c=17 r=1
-#: ultralcd.cpp:5200
+#: ultralcd.cpp:5771
 msgid "Show end stops"
 msgstr "Stav konc. spin."
 
 # 
-#: ultralcd.cpp:3819
+#: ultralcd.cpp:4025
 msgid "Sensor state"
-msgstr ""
-
-# 
-#: 
-msgid "Sensors info"
-msgstr ""
-
-# 
-#: 
-msgid "Show pinda state"
-msgstr "Zobrazit stav PINDA"
+msgstr "Stav senzoru"
 
 # MSG_FILE_CNT c=20 r=4
-#: 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_NONE c=17 r=1
-#: ultralcd.cpp:5043
-msgid "Sort:      [none]"
+#: ultralcd.cpp:5332
+msgid "Sort       [none]"
 msgstr "Trideni   [Zadne]"
 
 # MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:5041
-msgid "Sort:      [time]"
-msgstr "Trideni:    [cas]"
+#: ultralcd.cpp:5330
+msgid "Sort       [time]"
+msgstr "Trideni     [cas]"
 
 # 
-#: ultralcd.cpp:2899
-msgid "Severe skew"
-msgstr "Tezke zkoseni"
+#: ultralcd.cpp:3062
+msgid "Severe skew:"
+msgstr "Tezke zkoseni:"
 
 # MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:5042
-msgid "Sort:  [alphabet]"
+#: ultralcd.cpp:5331
+msgid "Sort   [alphabet]"
 msgstr "Trideni [Abeceda]"
 
 # MSG_SORTING c=20 r=1
-#: cardreader.cpp:745
+#: cardreader.cpp:746
 msgid "Sorting files"
 msgstr "Trideni souboru"
 
 # MSG_SOUND_LOUD c=17 r=1
-#: sound.h:5
+#: sound.h:6
 msgid "Sound      [loud]"
 msgstr "Zvuk    [hlasity]"
 
 # 
-#: ultralcd.cpp:2898
-msgid "Slight skew"
-msgstr "Lehke zkoseni"
+#: ultralcd.cpp:3061
+msgid "Slight skew:"
+msgstr "Lehke zkoseni:"
 
 # MSG_SOUND_MUTE c=17 r=1
-#: sound.h:8
+#: 
 msgid "Sound      [mute]"
 msgstr "Zvuk    [vypnuto]"
 
 # 
-#: Marlin_main.cpp:4560
+#: Marlin_main.cpp:4871
 msgid "Some problem encountered, Z-leveling enforced ..."
 msgstr "Vyskytl se problem, srovnavam osu Z ..."
 
 # MSG_SOUND_ONCE c=17 r=1
-#: sound.h:6
+#: sound.h:7
 msgid "Sound      [once]"
 msgstr "Zvuk     [jednou]"
 
 # MSG_SOUND_SILENT c=17 r=1
-#: sound.h:7
+#: sound.h:8
 msgid "Sound    [silent]"
 msgstr "Zvuk      [tichy]"
 
 # MSG_SPEED
-#: ultralcd.cpp:6199
+#: ultralcd.cpp:6926
 msgid "Speed"
 msgstr "Rychlost"
 
 # MSG_SELFTEST_FAN_YES c=19
-#: messages.c:76
+#: messages.c:80
 msgid "Spinning"
 msgstr "Toci se"
 
 # MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4065
+#: Marlin_main.cpp:4368
 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:6108
+#: ultralcd.cpp:6839
 msgid "Statistics  "
 msgstr "Statistika "
 
 # MSG_STOP_PRINT
-#: messages.c:87
+#: messages.c:93
 msgid "Stop print"
 msgstr "Zastavit tisk"
 
 # MSG_STOPPED
-#: messages.c:88
+#: messages.c:94
 msgid "STOPPED. "
 msgstr "ZASTAVENO."
 
 # MSG_SUPPORT
-#: ultralcd.cpp:6117
+#: ultralcd.cpp:6848
 msgid "Support"
 msgstr "Podpora"
 
 # MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:7138
+#: ultralcd.cpp:7959
 msgid "Swapped"
 msgstr "Prohozene"
 
 # MSG_TEMP_CALIBRATION c=20 r=1
-#: messages.c:89
+#: messages.c:95
 msgid "Temp. cal.          "
 msgstr "Tepl. kal. "
 
 # MSG_TEMP_CALIBRATION_ON c=20 r=1
-#: ultralcd.cpp:5113
+#: ultralcd.cpp:5686
 msgid "Temp. cal.   [on]"
 msgstr "Tepl. kal.  [zap]"
 
 # MSG_TEMP_CALIBRATION_OFF c=20 r=1
-#: ultralcd.cpp:5111
+#: ultralcd.cpp:5684
 msgid "Temp. cal.  [off]"
 msgstr "Tepl. kal.  [vyp]"
 
 # MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5209
+#: ultralcd.cpp:5780
 msgid "Temp. calibration"
 msgstr "Teplot. kalibrace"
 
 # MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3744
+#: ultralcd.cpp:3951
 msgid "Temperature calibration failed"
 msgstr "Teplotni kalibrace selhala"
 
 # MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:90
+#: messages.c:96
 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."
 
 # MSG_TEMPERATURE
-#: ultralcd.cpp:5089
+#: ultralcd.cpp:5650
 msgid "Temperature"
 msgstr "Teplota"
 
 # MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2273
+#: ultralcd.cpp:2251
 msgid "Temperatures"
 msgstr "Teploty"
 
@@ -1511,127 +1371,122 @@ msgid "There is still a need to make Z calibration. Please follow the manual, ch
 msgstr "Je potreba kalibrovat osu Z. Prosim postupujte dle prirucky, kapitola Zaciname, sekce Postup kalibrace."
 
 # 
-#: ultralcd.cpp:2752
+#: ultralcd.cpp:2908
 msgid "Total filament"
 msgstr "Filament celkem"
 
 # 
-#: ultralcd.cpp:2754
+#: ultralcd.cpp:2908
 msgid "Total print time"
 msgstr "Celkovy cas tisku"
 
 # MSG_TUNE
-#: ultralcd.cpp:6015
+#: ultralcd.cpp:6719
 msgid "Tune"
 msgstr "Ladit"
 
 # 
-#: ultralcd.cpp:4640
+#: ultralcd.cpp:4869
 msgid "Unload"
 msgstr "Vysunout"
 
 # 
-#: ultralcd.cpp:5617
-msgid "Unload all"
-msgstr "Vyjmout vse"
-
-# 
-#: ultralcd.cpp:1994
+#: ultralcd.cpp:1820
 msgid "Total failures"
-msgstr ""
+msgstr "Celkem selhani"
 
 # 
-#: ultralcd.cpp:2316
+#: ultralcd.cpp:2324
 msgid "to load filament"
-msgstr ""
+msgstr "k zavedeni filamentu"
 
 # 
-#: ultralcd.cpp:2317
+#: ultralcd.cpp:2328
 msgid "to unload filament"
-msgstr ""
+msgstr "k vyjmuti filamentu"
 
 # MSG_UNLOAD_FILAMENT c=17
-#: messages.c:91
+#: messages.c:97
 msgid "Unload filament"
 msgstr "Vyjmout filament"
 
 # MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:92
+#: messages.c:98
 msgid "Unloading filament"
 msgstr "Vysouvam filament"
 
 # 
-#: ultralcd.cpp:1961
+#: ultralcd.cpp:1773
 msgid "Total"
-msgstr ""
+msgstr "Celkem"
 
 # MSG_USED c=19 r=1
-#: ultralcd.cpp:5334
+#: ultralcd.cpp:5908
 msgid "Used during print"
 msgstr "Pouzite behem tisku"
 
 # MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2276
+#: ultralcd.cpp:2254
 msgid "Voltages"
 msgstr "Napeti"
 
 # 
-#: ultralcd.cpp:2249
+#: ultralcd.cpp:2227
 msgid "unknown"
-msgstr ""
+msgstr "neznamy"
 
 # MSG_USERWAIT
-#: Marlin_main.cpp:4876
+#: Marlin_main.cpp:5263
 msgid "Wait for user..."
 msgstr "Ceka se na uzivatele..."
 
 # MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3255
+#: ultralcd.cpp:3458
 msgid "Waiting for nozzle and bed cooling"
 msgstr "Cekani na zchladnuti trysky a podlozky."
 
 # MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3219
+#: ultralcd.cpp:3422
 msgid "Waiting for PINDA probe cooling"
 msgstr "Cekani na zchladnuti PINDA"
 
 # 
-#: ultralcd.cpp:4639
+#: ultralcd.cpp:4868
 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:1508
+#: Marlin_main.cpp:1511
 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:1500
+#: Marlin_main.cpp:1503
 msgid "Warning: motherboard type changed."
 msgstr "Varovani: doslo ke zmene typu motherboardu."
 
 # MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1504
+#: Marlin_main.cpp:1507
 msgid "Warning: printer type changed."
 msgstr "Varovani: doslo ke zmene typu tiskarny."
 
 # MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3014
+#: Marlin_main.cpp:3054
 msgid "Was filament unload successful?"
 msgstr "Bylo vysunuti filamentu uspesne?"
 
 # MSG_SELFTEST_WIRINGERROR
-#: messages.c:80
+#: messages.c:85
 msgid "Wiring error"
 msgstr "Chyba zapojeni"
 
 # MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5176
+#: ultralcd.cpp:5747
 msgid "Wizard"
 msgstr "Pruvodce"
 
 # MSG_XYZ_DETAILS c=19 r=1
-#: ultralcd.cpp:2265
+#: ultralcd.cpp:2243
 msgid "XYZ cal. details"
 msgstr "Detaily XYZ kal."
 
@@ -1641,107 +1496,317 @@ msgid "XYZ calibration failed. Please consult the manual."
 msgstr "Kalibrace XYZ selhala. Nahlednete do manualu."
 
 # MSG_YES
-#: messages.c:98
+#: messages.c:104
 msgid "Yes"
 msgstr "Ano"
 
 # MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:97
+#: messages.c:103
 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:3715
+#: ultralcd.cpp:3922
 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:3712
+#: ultralcd.cpp:3919
 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!"
 
 # 
-#: ultralcd.cpp:4885
-msgid "X-correct"
-msgstr "Korekce X"
+#: ultralcd.cpp:5130
+msgid "X-correct:"
+msgstr "Korekce X:"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3709
+#: ultralcd.cpp:3916
 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:3693
+#: ultralcd.cpp:3900
 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:3696
+#: ultralcd.cpp:3903
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "Kalibrace XYZ nepresna. Pravy predni bod moc vpredu."
 
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8
-#: ultralcd.cpp:3699
-msgid "XYZ calibration compromised. Left front calibration point not reachable."
-msgstr "Kalibrace XYZ nepresna. Levy predni bod moc vpredu."
-
 # MSG_LOAD_ALL c=17
-#: ultralcd.cpp:5575
+#: ultralcd.cpp:6166
 msgid "Load all"
 msgstr "Zavest vse"
 
-# MSG_LOAD_FILAMENT_1 c=17
-#: ultralcd.cpp:5576
-msgid "Load filament 1"
-msgstr "Zavest filament 1"
-
 # 
-#: ultralcd.cpp:3675
+#: ultralcd.cpp:3882
 msgid "XYZ calibration failed. Bed calibration point was not found."
 msgstr "Kalibrace XYZ selhala. Kalibracni bod podlozky nenalezen."
 
 # 
-#: ultralcd.cpp:3681
+#: ultralcd.cpp:3888
 msgid "XYZ calibration failed. Front calibration points not reachable."
 msgstr "Kalibrace XYZ selhala. Predni kalibracni body moc vpredu. Srovnejte tiskarnu."
 
 # 
-#: ultralcd.cpp:3687
-msgid "XYZ calibration failed. Left front calibration point not reachable."
-msgstr "Kalibrace XYZ selhala. Levy predni bod moc vpredu. Srovnejte tiskarnu."
-
-# MSG_LOAD_FILAMENT_2 c=17
-#: ultralcd.cpp:5577
-msgid "Load filament 2"
-msgstr "Zavest filament 2"
-
-# 
-#: ultralcd.cpp:3684
+#: ultralcd.cpp:3891
 msgid "XYZ calibration failed. Right front calibration point not reachable."
 msgstr "Kalibrace XYZ selhala. Pravy predni bod moc vpredu. Srovnejte tiskarnu."
 
-# MSG_LOAD_FILAMENT_3 c=17
-#: ultralcd.cpp:5578
-msgid "Load filament 3"
-msgstr "Zavest filament 3"
-
 # 
-#: ultralcd.cpp:2859
+#: ultralcd.cpp:3016
 msgid "Y distance from min"
 msgstr "Y vzdalenost od min"
 
 # 
-#: ultralcd.cpp:4886
-msgid "Y-correct"
-msgstr "Korekce Y"
+#: ultralcd.cpp:5131
+msgid "Y-correct:"
+msgstr "Korekce Y:"
+
+# MSG_OFF
+#: menu.cpp:426
+msgid " [off]"
+msgstr " [vyp]"
 
-# MSG_LOAD_FILAMENT_4 c=17
-#: ultralcd.cpp:5579
-msgid "Load filament 4"
-msgstr "Zavest filament 4"
+# 
+#: messages.c:57
+msgid "Back"
+msgstr "Zpet"
+
+# 
+#: ultralcd.cpp:5639
+msgid "Checks"
+msgstr "Kontrola"
+
+# 
+#: ultralcd.cpp:7973
+msgid "False triggering"
+msgstr "Falesne spusteni"
+
+# 
+#: ultralcd.cpp:4030
+msgid "FINDA:"
+msgstr ""
+
+# 
+#: ultralcd.cpp:5545
+msgid "Firmware   [none]"
+msgstr "Firmware  [Zadne]"
+
+# 
+#: ultralcd.cpp:5551
+msgid "Firmware [strict]"
+msgstr "Firmware [Prisne]"
+
+# 
+#: ultralcd.cpp:5548
+msgid "Firmware   [warn]"
+msgstr "Firmware[Varovat]"
+
+# 
+#: messages.c:87
+msgid "HW Setup"
+msgstr "HW nastaveni"
+
+# 
+#: ultralcd.cpp:4034
+msgid "IR:"
+msgstr ""
+
+# 
+#: ultralcd.cpp:7046
+msgid "Magnets comp.[N/A]"
+msgstr "Komp. magnetu[N/A]"
+
+# 
+#: ultralcd.cpp:7044
+msgid "Magnets comp.[Off]"
+msgstr "Komp. magnetu[Vyp]"
+
+# 
+#: ultralcd.cpp:7043
+msgid "Magnets comp. [On]"
+msgstr "Komp. magnetu[Zap]"
+
+# 
+#: ultralcd.cpp:7035
+msgid "Mesh         [3x3]"
+msgstr "Mesh         [3x3]"
 
-# MSG_LOAD_FILAMENT_5 c=17
-#: ultralcd.cpp:5582
-msgid "Load filament 5"
-msgstr "Zavest filament 5"
+# 
+#: ultralcd.cpp:7036
+msgid "Mesh         [7x7]"
+msgstr "Mesh         [7x7]"
+
+# 
+#: ultralcd.cpp:5677
+msgid "Mesh bed leveling"
+msgstr "Mesh Bed Leveling"
+
+# 
+#: Marlin_main.cpp:856
+msgid "MK3S firmware detected on MK3 printer"
+msgstr "MK3S firmware detekovan na tiskarne MK3"
+
+# 
+#: ultralcd.cpp:5306
+msgid "MMU Mode [Normal]"
+msgstr "MMU mod  [Normal]"
+
+# 
+#: ultralcd.cpp:5307
+msgid "MMU Mode[Stealth]"
+msgstr "MMU Mod   [Tichy]"
+
+# 
+#: ultralcd.cpp:4511
+msgid "Mode change in progress ..."
+msgstr "Probiha zmena modu..."
+
+# 
+#: ultralcd.cpp:5506
+msgid "Model      [none]"
+msgstr "Model     [Zadne]"
+
+# 
+#: ultralcd.cpp:5512
+msgid "Model    [strict]"
+msgstr "Model    [Prisne]"
+
+# 
+#: ultralcd.cpp:5509
+msgid "Model      [warn]"
+msgstr "Model   [Varovat]"
+
+# 
+#: ultralcd.cpp:5467
+msgid "Nozzle d.  [0.25]"
+msgstr "Tryska     [0.25]"
+
+# 
+#: ultralcd.cpp:5470
+msgid "Nozzle d.  [0.40]"
+msgstr "Tryska     [0.40]"
+
+# 
+#: ultralcd.cpp:5473
+msgid "Nozzle d.  [0.60]"
+msgstr "Tryska     [0.60]"
+
+# 
+#: ultralcd.cpp:5421
+msgid "Nozzle     [none]"
+msgstr "Tryska    [Zadne]"
+
+# 
+#: ultralcd.cpp:5427
+msgid "Nozzle   [strict]"
+msgstr "Tryska   [Prisne]"
+
+# 
+#: ultralcd.cpp:5424
+msgid "Nozzle     [warn]"
+msgstr "Tryska  [Varovat]"
+
+# 
+#: util.cpp:510
+msgid "G-code sliced for a different level. Continue?"
+msgstr ""
+
+# 
+#: util.cpp:516
+msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
+msgstr ""
+
+# 
+#: util.cpp:427
+msgid "G-code sliced for a different printer type. Continue?"
+msgstr "G-code je pripraven pro jiny typ tiskarny. Pokracovat?"
+
+# 
+#: util.cpp:433
+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:477
+msgid "G-code sliced for a newer firmware. Continue?"
+msgstr "G-code je pripraven pro novejsi firmware. Pokracovat?"
+
+# 
+#: util.cpp:483
+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:4026
+msgid "PINDA:"
+msgstr ""
+
+# 
+#: ultralcd.cpp:2465
+msgid "Preheating to cut"
+msgstr "Predehrev k ustrizeni"
+
+# 
+#: ultralcd.cpp:2462
+msgid "Preheating to eject"
+msgstr "Predehrev k vysunuti"
+
+# 
+#: util.cpp:390
+msgid "Printer nozzle diameter differs from the G-code. Continue?"
+msgstr "Prumer trysky tiskarny se lisi od G-code. Pokracovat?"
+
+# 
+#: util.cpp:397
+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."
+
+# 
+#: ultralcd.cpp:6683
+msgid "Rename"
+msgstr "Prejmenovat"
+
+# 
+#: ultralcd.cpp:6679
+msgid "Select"
+msgstr "Vybrat"
+
+# 
+#: ultralcd.cpp:2245
+msgid "Sensor info"
+msgstr "Senzor info"
+
+# 
+#: messages.c:58
+msgid "Sheet"
+msgstr "Plat"
+
+# 
+#: sound.h:9
+msgid "Sound    [assist]"
+msgstr "Zvuk     [Asist.]"
+
+# 
+#: ultralcd.cpp:5637
+msgid "Steel sheets"
+msgstr "Tiskove platy"
+
+# 
+#: ultralcd.cpp:5132
+msgid "Z-correct:"
+msgstr "Korekce Z:"
+
+# 
+#: ultralcd.cpp:7038
+msgid "Z-probe nr.    [1]"
+msgstr "Pocet mereni Z [1]"
+
+# 
+#: ultralcd.cpp:7040
+msgid "Z-probe nr.    [3]"
+msgstr "Pocet mereni Z [3]"
 

+ 582 - 512
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: čt 7. úno 2019 14:44:19\n"
-"PO-Revision-Date: čt 7. úno 2019 14:44:19\n"
+"POT-Creation-Date: Sun, Sep 22, 2019 2:04:09 PM\n"
+"PO-Revision-Date: Sun, Sep 22, 2019 2:04:09 PM\n"
 "Language-Team: \n"
 "X-Generator: Poedit 2.0.7\n"
 "X-Poedit-SourceCharset: UTF-8\n"
@@ -21,72 +21,72 @@ msgid " of 4"
 msgstr " von 4"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:56
+#: messages.c:60
 msgid " of 9"
 msgstr " von 9"
 
 # MSG_MEASURED_OFFSET
-#: ultralcd.cpp:2914
+#: ultralcd.cpp:3089
 msgid "[0;0] point offset"
 msgstr "[0;0] Punktversatz"
 
 # MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
-#: ultralcd.cpp:4219
-msgid "\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode"
-msgstr "\x1b[2JCrash Erkennung kann\x1b[1;0Hnur im Modus Normal\x1b[2;0Hgenutzt werden"
+#: 
+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
-#: ultralcd.cpp:4231
-msgid "\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode"
-msgstr "\x1b[2JWARNUNG:\x1b[1;0HCrash Erkennung\x1b[2;0Hdeaktiviert im\x1b[3;0HStealth Modus"
+#: 
+msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
+msgstr "WARNUNG:\x0aCrash Erkennung\x0adeaktiviert im\x0aStealth Modus"
 
 # 
-#: ultralcd.cpp:2353
+#: ultralcd.cpp:2472
 msgid ">Cancel"
-msgstr ""
+msgstr ">Abbruch"
 
-# MSG_BABYSTEPPING_Z c=20
-#: ultralcd.cpp:3043
-msgid "Adjusting Z"
-msgstr "Z wurde eingestellt"
+# MSG_BABYSTEPPING_Z c=15
+#: ultralcd.cpp:3209
+msgid "Adjusting Z:"
+msgstr "Z Anpassen:"
 
 # MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:7459
+#: ultralcd.cpp:8295
 msgid "All correct      "
-msgstr "Alles richtig "
+msgstr "Alles richtig    "
 
 # MSG_WIZARD_DONE c=20 r=8
-#: messages.c:95
+#: messages.c:101
 msgid "All is done. Happy printing!"
 msgstr "Alles abgeschlossen. Viel Spass beim Drucken!"
 
 # 
-#: ultralcd.cpp:2109
+#: ultralcd.cpp:2009
 msgid "Ambient"
-msgstr ""
+msgstr "Raumtemp."
 
 # MSG_PRESS c=20
-#: ultralcd.cpp:2463
+#: ultralcd.cpp:2618
 msgid "and press the knob"
 msgstr "und Knopf druecken"
 
 # MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3330
+#: ultralcd.cpp:3529
 msgid "Are left and right Z~carriages all up?"
 msgstr "Sind linke+rechte Z- Schlitten ganz oben?"
 
 # MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:4959
+#: ultralcd.cpp:5200
 msgid "SpoolJoin    [on]"
 msgstr "SpoolJoin    [an]"
 
 # 
-#: ultralcd.cpp:4955
+#: ultralcd.cpp:5196
 msgid "SpoolJoin   [N/A]"
 msgstr "SpoolJoin   [N/V]"
 
-#  MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:4963
+# MSG_AUTO_DEPLETE_OFF c=17 r=1
+#: ultralcd.cpp:5204
 msgid "SpoolJoin   [off]"
 msgstr "SpoolJoin   [aus]"
 
@@ -96,32 +96,32 @@ msgid "Auto home"
 msgstr "Startposition"
 
 # MSG_AUTOLOAD_FILAMENT c=17
-#: ultralcd.cpp:6091
+#: ultralcd.cpp:6822
 msgid "AutoLoad filament"
-msgstr "Auto-Laden Filament"
+msgstr "AutoLaden Filament"
 
 # MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4246
+#: ultralcd.cpp:4462
 msgid "Autoloading filament available only when filament sensor is turned on..."
 msgstr "Automatisches Laden Filament nur bei einge schaltetem Filament- sensor verfuegbar..."
 
 # MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2655
+#: ultralcd.cpp:2813
 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:7128
+#: ultralcd.cpp:7949
 msgid "Axis length"
 msgstr "Achsenlaenge"
 
 # MSG_SELFTEST_AXIS
-#: ultralcd.cpp:7130
+#: ultralcd.cpp:7951
 msgid "Axis"
 msgstr "Achse"
 
 # MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:7072
+#: ultralcd.cpp:7893
 msgid "Bed / Heater"
 msgstr "Bett / Heizung"
 
@@ -136,7 +136,7 @@ msgid "Bed Heating"
 msgstr "Bett aufwaermen"
 
 # MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5197
+#: ultralcd.cpp:5768
 msgid "Bed level correct"
 msgstr "Ausgleich Bett ok"
 
@@ -145,38 +145,28 @@ msgstr "Ausgleich Bett ok"
 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_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4
-#: Marlin_main.cpp:4508
-msgid "Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset."
-msgstr "Z-Kalibrierung fehl- geschlagen. Sensor getrennt/Kabelbruch? Warte auf Reset."
-
-# MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4
-#: Marlin_main.cpp:4512
-msgid "Bed leveling failed. Sensor triggered too high. Waiting for reset."
-msgstr "Z-Kalibrierung fehl- geschlagen. Sensor zu hoch ausgeloest. Warte auf Reset."
-
 # MSG_BED
 #: messages.c:15
 msgid "Bed"
 msgstr "Bett"
 
 # MSG_MENU_BELT_STATUS c=15 r=1
-#: ultralcd.cpp:2135
+#: ultralcd.cpp:2059
 msgid "Belt status"
 msgstr "Gurtstatus"
 
 # MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:67
+#: messages.c:71
 msgid "Blackout occurred. Recover print?"
 msgstr "Stromausfall! Druck wiederherstellen?"
 
 # 
-#: ultralcd.cpp:7461
+#: ultralcd.cpp:8297
 msgid "Calibrating home"
-msgstr ""
+msgstr "Kalibriere Start"
 
 # MSG_CALIBRATE_BED
-#: ultralcd.cpp:5186
+#: ultralcd.cpp:5757
 msgid "Calibrate XYZ"
 msgstr "Kalibrierung XYZ"
 
@@ -186,12 +176,12 @@ msgid "Calibrate Z"
 msgstr "Kalibrierung Z"
 
 # MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4427
+#: ultralcd.cpp:4654
 msgid "Calibrate"
 msgstr "Kalibrieren"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3290
+#: ultralcd.cpp:3492
 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."
 
@@ -201,37 +191,32 @@ msgid "Calibrating Z"
 msgstr "Kalibrierung Z"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3290
+#: ultralcd.cpp:3492
 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:778
+#: ultralcd.cpp:816
 msgid "Calibration done"
 msgstr "Kalibrierung OK"
 
 # MSG_MENU_CALIBRATION
-#: messages.c:57
+#: messages.c:61
 msgid "Calibration"
 msgstr "Kalibrierung"
 
 # 
-#: ultralcd.cpp:4552
+#: ultralcd.cpp:4781
 msgid "Cancel"
 msgstr "Abbruch"
 
-# MSG_SD_INSERTED
-#: 
-msgid "Card inserted"
-msgstr "SD Karte eingesetzt"
-
 # MSG_SD_REMOVED
-#: ultralcd.cpp:7819
+#: ultralcd.cpp:8679
 msgid "Card removed"
 msgstr "SD Karte entfernt"
 
 # MSG_NOT_COLOR
-#: ultralcd.cpp:2563
+#: ultralcd.cpp:2718
 msgid "Color not correct"
 msgstr "Falsche Farbe"
 
@@ -241,7 +226,7 @@ msgid "Cooldown"
 msgstr "Abkuehlen"
 
 # 
-#: ultralcd.cpp:4360
+#: ultralcd.cpp:4587
 msgid "Copy selected language?"
 msgstr "Gewaehlte Sprache kopieren?"
 
@@ -266,27 +251,27 @@ msgid "Crash detected."
 msgstr "Crash erkannt."
 
 # 
-#: Marlin_main.cpp:608
+#: Marlin_main.cpp:600
 msgid "Crash detected. Resume print?"
 msgstr "Crash erkannt. Druck fortfuehren?"
 
 # 
-#: ultralcd.cpp:2013
+#: ultralcd.cpp:1853
 msgid "Crash"
 msgstr ""
 
 # MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:5335
+#: ultralcd.cpp:5909
 msgid "Current"
 msgstr "Aktuelles"
 
 # MSG_DATE c=17 r=1
-#: ultralcd.cpp:2235
+#: ultralcd.cpp:2213
 msgid "Date:"
 msgstr "Datum:"
 
 # MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5093
+#: ultralcd.cpp:5654
 msgid "Disable steppers"
 msgstr "Motoren aus"
 
@@ -296,77 +281,52 @@ 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_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:4828
+#: ultralcd.cpp:5070
 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=9
-#: ultralcd.cpp:4889
-msgid "E-correct"
-msgstr "E-Korrektur"
+# MSG_EXTRUDER_CORRECTION c=10
+#: ultralcd.cpp:5134
+msgid "E-correct:"
+msgstr "E-Korrektur:"
 
 # MSG_EJECT_FILAMENT c=17 r=1
-#: ultralcd.cpp:6081
+#: messages.c:53
 msgid "Eject filament"
 msgstr "Filamentauswurf"
 
-# MSG_EJECT_FILAMENT1 c=17 r=1
-#: ultralcd.cpp:5603
-msgid "Eject filament 1"
-msgstr "Filamentauswurf 1"
-
-# MSG_EJECT_FILAMENT2 c=17 r=1
-#: ultralcd.cpp:5604
-msgid "Eject filament 2"
-msgstr "Fil.2 auswerfen"
-
-# MSG_EJECT_FILAMENT3 c=17 r=1
-#: ultralcd.cpp:5605
-msgid "Eject filament 3"
-msgstr "Fil.3 auswerfen"
-
-# MSG_EJECT_FILAMENT4 c=17 r=1
-#: ultralcd.cpp:5606
-msgid "Eject filament 4"
-msgstr "Fil.4 auswerfen"
-
-# MSG_EJECT_FILAMENT5 c=17 r=1
-#: ultralcd.cpp:5607
-msgid "Eject filament 5"
-msgstr "Fil.5 auswerfen"
-
 # 
-#: ultralcd.cpp:4640
+#: ultralcd.cpp:4869
 msgid "Eject"
 msgstr "Auswurf"
 
 # MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1339
+#: mmu.cpp:1434
 msgid "Ejecting filament"
 msgstr "werfe Filament aus"
 
 # MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
-#: ultralcd.cpp:7096
+#: ultralcd.cpp:7917
 msgid "Endstop not hit"
 msgstr "Ende nicht getroffen"
 
 # MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:7090
+#: ultralcd.cpp:7911
 msgid "Endstop"
 msgstr "Endanschlag"
 
 # MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:7078
+#: ultralcd.cpp:7899
 msgid "Endstops"
 msgstr "Endschalter"
 
 # MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6132
+#: ultralcd.cpp:6859
 msgid "Error - static memory has been overwritten"
 msgstr "Fehler - statischer Speicher wurde ueberschrieben"
 
 # MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4259
+#: ultralcd.cpp:4475
 msgid "ERROR: Filament sensor is not responding, please check connection."
 msgstr "FEHLER: Filament- sensor reagiert nicht, bitte Verbindung pruefen."
 
@@ -375,38 +335,13 @@ msgstr "FEHLER: Filament- sensor reagiert nicht, bitte Verbindung pruefen."
 msgid "ERROR:"
 msgstr "FEHLER:"
 
-# 
-#: Marlin_main.cpp:1006
-msgid "External SPI flash W25X20CL not responding."
-msgstr "Der externe SPI Flash W25X20CL antwortet nicht."
-
-# 
-#: ultralcd.cpp:5633
-msgid "Extruder 1"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5634
-msgid "Extruder 2"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5635
-msgid "Extruder 3"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5636
-msgid "Extruder 4"
-msgstr ""
-
 # MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:7468
+#: ultralcd.cpp:8304
 msgid "Extruder fan:"
 msgstr "Extruder Luefter:"
 
 # MSG_INFO_EXTRUDER c=15 r=1
-#: ultralcd.cpp:2266
+#: ultralcd.cpp:2244
 msgid "Extruder info"
 msgstr "Extruder Info"
 
@@ -416,12 +351,12 @@ msgid "Extruder"
 msgstr ""
 
 # 
-#: ultralcd.cpp:6115
+#: ultralcd.cpp:6846
 msgid "Fail stats MMU"
-msgstr ""
+msgstr "MMU-Fehler"
 
 # MSG_FSENS_AUTOLOAD_ON c=17 r=1
-#: ultralcd.cpp:4927
+#: ultralcd.cpp:5168
 msgid "F. autoload  [on]"
 msgstr "F.Autoladen  [an]"
 
@@ -431,14 +366,14 @@ msgid "F. autoload [N/A]"
 msgstr "F. Autoload  [nv]"
 
 # MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-#: ultralcd.cpp:4929
+#: ultralcd.cpp:5170
 msgid "F. autoload [off]"
 msgstr "F. Autoload [aus]"
 
 # 
-#: ultralcd.cpp:6112
+#: ultralcd.cpp:6843
 msgid "Fail stats"
-msgstr ""
+msgstr "Fehlerstatistik"
 
 # MSG_FAN_SPEED c=14
 #: messages.c:31
@@ -446,17 +381,17 @@ msgid "Fan speed"
 msgstr "Luefter-Tempo"
 
 # MSG_SELFTEST_FAN c=20
-#: messages.c:74
+#: messages.c:78
 msgid "Fan test"
 msgstr "Lueftertest"
 
 # MSG_FANS_CHECK_ON c=17 r=1
-#: ultralcd.cpp:5100
+#: ultralcd.cpp:5663
 msgid "Fans check   [on]"
 msgstr "Luefter Chk. [an]"
 
 # MSG_FANS_CHECK_OFF c=17 r=1
-#: ultralcd.cpp:5102
+#: ultralcd.cpp:5665
 msgid "Fans check  [off]"
 msgstr "Luefter Chk.[aus]"
 
@@ -465,13 +400,8 @@ msgstr "Luefter Chk.[aus]"
 msgid "Fil. sensor  [on]"
 msgstr "Fil. Sensor  [an]"
 
-# MSG_RESPONSE_POOR c=20 r=2
-#: Marlin_main.cpp:3146
-msgid "Fil. sensor response is poor, disable it?"
-msgstr "Fil. Sensorsignal ist schlecht, ausschalten?"
-
 # MSG_FSENSOR_NA
-#: ultralcd.cpp:4907
+#: ultralcd.cpp:5148
 msgid "Fil. sensor [N/A]"
 msgstr "Fil. Sensor  [nv]"
 
@@ -481,42 +411,37 @@ msgid "Fil. sensor [off]"
 msgstr "Fil. Sensor [aus]"
 
 # 
-#: ultralcd.cpp:2013
+#: ultralcd.cpp:1852
 msgid "Filam. runouts"
-msgstr ""
+msgstr "Filam. Maengel"
 
 # MSG_FILAMENT_CLEAN c=20 r=2
 #: messages.c:32
 msgid "Filament extruding & with correct color?"
-msgstr "Filament extrudiert + richtige Farbe?"
+msgstr "Filament extrudiert mit richtiger Farbe?"
 
 # MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2559
+#: ultralcd.cpp:2714
 msgid "Filament not loaded"
 msgstr "Fil. nicht geladen"
 
 # MSG_FILAMENT_SENSOR c=20
-#: ultralcd.cpp:7144
+#: messages.c:84
 msgid "Filament sensor"
 msgstr "Filamentsensor"
 
-# MSG_SELFTEST_FILAMENT_SENSOR c=18
-#: ultralcd.cpp:7477
-msgid "Filament sensor:"
-msgstr "Filamentsensor:"
-
 # MSG_FILAMENT_USED c=19 r=1
-#: ultralcd.cpp:2725
+#: ultralcd.cpp:2885
 msgid "Filament used"
 msgstr "Filament benutzt"
 
 # MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2727
+#: ultralcd.cpp:2886
 msgid "Print time"
 msgstr "Druckzeit"
 
 # MSG_FILE_INCOMPLETE c=20 r=2
-#: ultralcd.cpp:7595
+#: ultralcd.cpp:8432
 msgid "File incomplete. Continue anyway?"
 msgstr "Datei unvollstaendig Trotzdem fortfahren?"
 
@@ -526,52 +451,52 @@ msgid "Finishing movements"
 msgstr "Bewegung beenden"
 
 # MSG_V2_CALIBRATION c=17 r=1
-#: ultralcd.cpp:5177
+#: messages.c:105
 msgid "First layer cal."
 msgstr "Erste-Schicht Kal."
 
 # MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:4740
+#: ultralcd.cpp:4982
 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:640
+#: mmu.cpp:724
 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:6205
+#: ultralcd.cpp:6932
 msgid "Flow"
 msgstr "Durchfluss"
 
 # MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2228
+#: ultralcd.cpp:2206
 msgid "forum.prusa3d.com"
 msgstr ""
 
 # MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:71
+#: messages.c:75
 msgid "Front print fan?"
 msgstr "Vorderer Luefter?"
 
 # MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3101
+#: ultralcd.cpp:3294
 msgid "Front side[um]"
 msgstr "Vorne [um]"
 
 # MSG_SELFTEST_FANS
-#: ultralcd.cpp:7136
+#: ultralcd.cpp:7957
 msgid "Front/left fans"
 msgstr "Vorderer/linke Luefter"
 
 # MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:7066
+#: ultralcd.cpp:7887
 msgid "Heater/Thermistor"
 msgstr "Heizung/Thermistor"
 
 # MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:7475
+#: Marlin_main.cpp:8467
 msgid "Heating disabled by safety timer."
 msgstr "Heizung durch Sicherheitstimer deaktiviert."
 
@@ -586,67 +511,62 @@ msgid "Heating"
 msgstr "Aufwaermen"
 
 # MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:4719
+#: ultralcd.cpp:4961
 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:2229
+#: ultralcd.cpp:2207
 msgid "howto.prusa3d.com"
 msgstr ""
 
-# 
-#: ultralcd.cpp:6087
-msgid "Change extruder"
-msgstr "Wechsel Extruder"
-
 # MSG_FILAMENTCHANGE
 #: messages.c:37
 msgid "Change filament"
 msgstr "Filament-Wechsel"
 
 # MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2474
+#: ultralcd.cpp:2629
 msgid "Change success!"
 msgstr "Wechsel erfolgr.!"
 
 # MSG_CORRECTLY c=20
-#: ultralcd.cpp:2551
+#: ultralcd.cpp:2706
 msgid "Changed correctly?"
 msgstr "Wechsel ok?"
 
 # MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:77
+#: messages.c:81
 msgid "Checking bed     "
 msgstr "Pruefe Bett "
 
 # MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:7450
+#: ultralcd.cpp:8286
 msgid "Checking endstops"
 msgstr "Pruefe Endschalter"
 
 # MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:7456
+#: ultralcd.cpp:8292
 msgid "Checking hotend  "
 msgstr "Pruefe Duese  "
 
 # MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:78
+#: messages.c:82
 msgid "Checking sensors "
 msgstr "Pruefe Sensoren "
 
 # MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:7451
+#: ultralcd.cpp:8287
 msgid "Checking X axis  "
 msgstr "Pruefe X Achse "
 
 # MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:7452
+#: ultralcd.cpp:8288
 msgid "Checking Y axis  "
 msgstr "Pruefe Y Achse "
 
 # MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:7453
+#: ultralcd.cpp:8289
 msgid "Checking Z axis  "
 msgstr "Pruefe Z Achse "
 
@@ -666,112 +586,82 @@ msgid "Filament"
 msgstr ""
 
 # MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:4749
+#: ultralcd.cpp:4991
 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:4757
+#: ultralcd.cpp:4999
 msgid "I will run z calibration now."
 msgstr "Ich werde jetzt die Z Kalibrierung durchfuehren."
 
 # MSG_WIZARD_V2_CAL_2 c=20 r=12
-#: ultralcd.cpp:4822
+#: ultralcd.cpp:5064
 msgid "I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."
 msgstr "Ich werde jetzt eine Linie drucken. Waehrend des Druckes koennen Sie die Duese allmaehlich senken, indem Sie den Knopf drehen, bis Sie die optimale Hoehe erreichen. Sehen Sie sich die Bilder in unserem Handbuch im Kapitel Kalibrierung an."
 
-# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: mesh_bed_calibration.cpp:2481
-msgid "Improving bed calibration point"
-msgstr "Verbessere Bett Kalibrierpunkt"
-
 # MSG_WATCH
-#: messages.c:93
+#: messages.c:99
 msgid "Info screen"
 msgstr "Infoanzeige"
 
-# MSG_FILAMENT_LOADING_T0 c=20 r=4
-#: messages.c:33
-msgid "Insert filament into extruder 1. Click when done."
-msgstr "Filament in Extruder 1 einlegen. Klicken wenn fertig."
-
-# MSG_FILAMENT_LOADING_T1 c=20 r=4
-#: messages.c:34
-msgid "Insert filament into extruder 2. Click when done."
-msgstr "Filament in Extruder 2 einlegen. Klicken wenn fertig."
-
-# MSG_FILAMENT_LOADING_T2 c=20 r=4
-#: messages.c:35
-msgid "Insert filament into extruder 3. Click when done."
-msgstr "Filament in Extruder 3 einlegen. Klicken wenn fertig."
-
-# MSG_FILAMENT_LOADING_T3 c=20 r=4
-#: messages.c:36
-msgid "Insert filament into extruder 4. Click when done."
-msgstr "Filament in Extruder 4 einlegen. Klicken wenn fertig."
-
 # 
-#: ultralcd.cpp:4782
+#: ultralcd.cpp:5024
 msgid "Is filament 1 loaded?"
 msgstr "Wurde Filament 1 geladen?"
 
 # MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2459
+#: ultralcd.cpp:2614
 msgid "Insert filament"
 msgstr "Filament einlegen"
 
 # MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4785
+#: ultralcd.cpp:5027
 msgid "Is filament loaded?"
 msgstr "Ist das Filament geladen?"
 
 # MSG_WIZARD_PLA_FILAMENT c=20 r=2
-#: ultralcd.cpp:4816
+#: ultralcd.cpp:5058
 msgid "Is it PLA filament?"
 msgstr "Ist es wirklich PLA Filament?"
 
 # MSG_PLA_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4561
+#: ultralcd.cpp:4790
 msgid "Is PLA filament loaded?"
 msgstr "Ist PLA Filament geladen?"
 
 # MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:86
+#: messages.c:92
 msgid "Is steel sheet on heatbed?"
 msgstr "Liegt das Stahlblech auf dem Heizbett?"
 
-# MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20
-#: mesh_bed_calibration.cpp:2223
-msgid "Iteration "
-msgstr ""
-
 # 
-#: ultralcd.cpp:1976
+#: ultralcd.cpp:1795
 msgid "Last print failures"
-msgstr ""
+msgstr "Letzte Druckfehler"
 
 # 
-#: ultralcd.cpp:1960
+#: ultralcd.cpp:1772
 msgid "Last print"
-msgstr ""
+msgstr "Letzter Druck"
 
 # MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:72
+#: messages.c:76
 msgid "Left hotend fan?"
 msgstr "Linker Luefter?"
 
 # 
-#: ultralcd.cpp:2861
+#: ultralcd.cpp:3018
 msgid "Left"
 msgstr "Links"
 
 # MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3099
+#: ultralcd.cpp:3292
 msgid "Left side [um]"
 msgstr "Links [um]"
 
 # 
-#: ultralcd.cpp:5107
+#: ultralcd.cpp:5680
 msgid "Lin. correction"
 msgstr "Lineare Korrektur"
 
@@ -786,7 +676,7 @@ msgid "Load filament"
 msgstr "Filament laden"
 
 # MSG_LOADING_COLOR
-#: ultralcd.cpp:2499
+#: ultralcd.cpp:2654
 msgid "Loading color"
 msgstr "Lade Farbe"
 
@@ -796,92 +686,92 @@ msgid "Loading filament"
 msgstr "Filament laedt"
 
 # MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:7120
+#: ultralcd.cpp:7941
 msgid "Loose pulley"
 msgstr "Lose Riemenscheibe"
 
 # 
-#: ultralcd.cpp:6079
+#: ultralcd.cpp:6805
 msgid "Load to nozzle"
 msgstr "In Druckduese laden"
 
 # MSG_M117_V2_CALIBRATION c=25 r=1
-#: messages.c:53
+#: messages.c:55
 msgid "M117 First layer cal."
 msgstr "M117 Erste-Schicht Kal."
 
 # MSG_MAIN
-#: messages.c:54
+#: messages.c:56
 msgid "Main"
 msgstr "Hauptmenue"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:55
+#: messages.c:59
 msgid "Measuring reference height of calibration point"
 msgstr "Messen der Referenzhoehe des Kalibrierpunktes"
 
 # MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5192
+#: ultralcd.cpp:5763
 msgid "Mesh Bed Leveling"
-msgstr "Mesh Bett Ausgleich"
+msgstr "MeshBett Ausgleich"
 
 # MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:676
+#: mmu.cpp:762
 msgid "MMU OK. Resuming position..."
-msgstr "MMU OK. Position    wiederherstellen... "
+msgstr "MMU OK. Position wiederherstellen..."
 
 # MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:669
+#: mmu.cpp:755
 msgid "MMU OK. Resuming temperature..."
 msgstr "MMU OK. Temperatur wiederherstellen..."
 
 # 
-#: ultralcd.cpp:2896
+#: ultralcd.cpp:3059
 msgid "Measured skew"
 msgstr "Schraeglauf"
 
 # 
-#: ultralcd.cpp:1977
+#: ultralcd.cpp:1796
 msgid "MMU fails"
-msgstr ""
+msgstr "MMU Fehler"
 
 # 
-#: mmu.cpp:1399
+#: mmu.cpp:1613
 msgid "MMU load failed     "
-msgstr ""
+msgstr "MMU Ladefehler"
 
 # 
-#: ultralcd.cpp:1977
+#: ultralcd.cpp:1797
 msgid "MMU load fails"
-msgstr ""
+msgstr "MMU Ladefehler"
 
 # MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:687
+#: mmu.cpp:773
 msgid "MMU OK. Resuming..."
 msgstr "MMU OK.  Weiterdrucken..."
 
 # MSG_STEALTH_MODE_OFF
-#: messages.c:84
+#: messages.c:90
 msgid "Mode     [Normal]"
 msgstr "Modus    [Normal]"
 
 # MSG_SILENT_MODE_ON
-#: messages.c:83
+#: messages.c:89
 msgid "Mode     [silent]"
 msgstr "Modus     [leise]"
 
 # 
-#: mmu.cpp:635
+#: mmu.cpp:719
 msgid "MMU needs user attention."
 msgstr "MMU erfordert Benutzereingriff."
 
 # 
-#: ultralcd.cpp:1994
+#: ultralcd.cpp:1823
 msgid "MMU power fails"
-msgstr ""
+msgstr "MMU Netzfehler"
 
 # MSG_STEALTH_MODE_ON
-#: messages.c:85
+#: messages.c:91
 msgid "Mode    [Stealth]"
 msgstr "Modus   [Stealth]"
 
@@ -891,62 +781,62 @@ msgid "Mode [auto power]"
 msgstr "Modus[Auto Power]"
 
 # MSG_SILENT_MODE_OFF
-#: messages.c:82
+#: messages.c:88
 msgid "Mode [high power]"
 msgstr "Modus[Hohe Leist]"
 
 # 
-#: ultralcd.cpp:2241
+#: ultralcd.cpp:2219
 msgid "MMU2 connected"
-msgstr ""
+msgstr "MMU2 verbunden"
 
 # MSG_SELFTEST_MOTOR
-#: messages.c:79
+#: messages.c:83
 msgid "Motor"
 msgstr ""
 
 # MSG_MOVE_AXIS
-#: ultralcd.cpp:5091
+#: ultralcd.cpp:5652
 msgid "Move axis"
 msgstr "Achse bewegen"
 
 # MSG_MOVE_X
-#: ultralcd.cpp:4164
+#: ultralcd.cpp:4378
 msgid "Move X"
 msgstr "Bewege X"
 
 # MSG_MOVE_Y
-#: ultralcd.cpp:4165
+#: ultralcd.cpp:4379
 msgid "Move Y"
 msgstr "Bewege Y"
 
 # MSG_MOVE_Z
-#: ultralcd.cpp:4166
+#: ultralcd.cpp:4380
 msgid "Move Z"
 msgstr "Bewege Z"
 
 # MSG_NO_MOVE
-#: Marlin_main.cpp:4908
+#: Marlin_main.cpp:5292
 msgid "No move."
 msgstr "Keine Bewegung."
 
 # MSG_NO_CARD
-#: ultralcd.cpp:6059
+#: ultralcd.cpp:6772
 msgid "No SD card"
 msgstr "Keine SD Karte"
 
 # 
-#: ultralcd.cpp:2867
+#: ultralcd.cpp:3024
 msgid "N/A"
-msgstr ""
+msgstr "N.V."
 
 # MSG_NO
-#: messages.c:58
+#: messages.c:62
 msgid "No"
 msgstr "Nein"
 
 # MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:7068
+#: ultralcd.cpp:7889
 msgid "Not connected"
 msgstr "Nicht angeschlossen"
 
@@ -955,78 +845,73 @@ msgstr "Nicht angeschlossen"
 msgid "New firmware version available:"
 msgstr "Neue Firmware- Version verfuegbar:"
 
-# 
-#: 
-msgid "No "
-msgstr "Nein"
-
 # MSG_SELFTEST_FAN_NO c=19
-#: messages.c:75
+#: messages.c:79
 msgid "Not spinning"
 msgstr "Dreht sich nicht"
 
 # MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4821
+#: ultralcd.cpp:5063
 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:4765
+#: ultralcd.cpp:5007
 msgid "Now I will preheat nozzle for PLA."
 msgstr "Jetzt werde ich die Duese fuer PLA vorheizen."
 
 # MSG_NOZZLE
-#: messages.c:59
+#: messages.c:63
 msgid "Nozzle"
 msgstr "Duese"
 
 # MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
-#: Marlin_main.cpp:1516
+#: Marlin_main.cpp:1519
 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:4756
+#: ultralcd.cpp:4998
 msgid "Now remove the test print from steel sheet."
 msgstr "Testdruck jetzt von Stahlblech entfernen."
 
 # 
-#: ultralcd.cpp:1919
+#: ultralcd.cpp:1722
 msgid "Nozzle FAN"
-msgstr ""
+msgstr "Duesevent."
 
 # MSG_PAUSE_PRINT
-#: ultralcd.cpp:6029
+#: ultralcd.cpp:6735
 msgid "Pause print"
 msgstr "Druck pausieren"
 
 # MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1741
+#: ultralcd.cpp:1606
 msgid "PID cal.           "
 msgstr "PID Kal.           "
 
 # MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1747
+#: ultralcd.cpp:1612
 msgid "PID cal. finished"
 msgstr "PID Kalib. fertig"
 
 # MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5198
+#: ultralcd.cpp:5769
 msgid "PID calibration"
 msgstr "PID Kalibrierung"
 
 # MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:808
+#: ultralcd.cpp:846
 msgid "PINDA Heating"
 msgstr "PINDA erwaermen"
 
 # MSG_PAPER c=20 r=8
-#: messages.c:60
+#: messages.c:64
 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:4830
+#: ultralcd.cpp:5072
 msgid "Please clean heatbed and then press the knob."
 msgstr "Bitte reinigen Sie das Heizbett und druecken Sie dann den Knopf."
 
@@ -1036,92 +921,92 @@ 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:7060
+#: ultralcd.cpp:7881
 msgid "Please check :"
 msgstr "Bitte pruefe:"
 
 # MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:94
+#: messages.c:100
 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_WIZARD_LOAD_FILAMENT c=20 r=8
-#: ultralcd.cpp:4664
+#: ultralcd.cpp:4894
 msgid "Please insert PLA filament to the extruder, then press knob to load it."
 msgstr "Legen Sie bitte PLA Filament in den Extruder und druecken Sie den Knopf,  um es zu laden."
 
 # MSG_PLEASE_LOAD_PLA c=20 r=4
-#: ultralcd.cpp:4566
+#: ultralcd.cpp:4795
 msgid "Please load PLA filament first."
 msgstr "Bitte laden Sie zuerst PLA Filament."
 
 # MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3025
+#: Marlin_main.cpp:3064
 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:65
 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:68
 msgid "Please press the knob to unload filament"
 msgstr "Bitte druecken Sie den Knopf um das Filament zu entladen."
 
 # 
-#: ultralcd.cpp:4660
+#: ultralcd.cpp:4889
 msgid "Please insert PLA filament to the first tube of MMU, then press the knob to load it."
 msgstr "Legen Sie bitte PLA Filament in den ersten Schlauch der MMU und druecken Sie den Knopf,  um es zu laden."
 
 # MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:66
+#: messages.c:70
 msgid "Please pull out filament immediately"
 msgstr "Bitte ziehen Sie das Filament sofort heraus"
 
 # MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1347
+#: mmu.cpp:1440
 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:74
 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:4052
+#: Marlin_main.cpp:4355
 msgid "Please run XYZ calibration first."
 msgstr "Bitte zuerst XYZ Kalibrierung ausfuehren."
 
 # MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1293
+#: mmu.cpp:1359
 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:66
 msgid "Please wait"
 msgstr "Bitte warten"
 
 # 
-#: ultralcd.cpp:4755
+#: ultralcd.cpp:4997
 msgid "Please remove shipping helpers first."
 msgstr "Bitte zuerst Transportsicherungen entfernen."
 
 # MSG_PREHEAT_NOZZLE c=20
-#: messages.c:63
+#: messages.c:67
 msgid "Preheat the nozzle!"
 msgstr "Duese vorheizen!"
 
 # MSG_PREHEAT
-#: ultralcd.cpp:6018
+#: ultralcd.cpp:6722
 msgid "Preheat"
 msgstr "Vorheizen"
 
 # MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:96
+#: messages.c:102
 msgid "Preheating nozzle. Please wait."
 msgstr "Vorheizen der Duese. Bitte warten."
 
@@ -1131,32 +1016,32 @@ msgid "Please upgrade."
 msgstr "Bitte aktualisieren."
 
 # MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:9150
+#: Marlin_main.cpp:10364
 msgid "Press knob to preheat nozzle and continue."
 msgstr "Bitte druecken Sie den Knopf um die Duese vorzuheizen und fortzufahren."
 
 # 
-#: ultralcd.cpp:2013
+#: ultralcd.cpp:1851
 msgid "Power failures"
-msgstr ""
+msgstr "Netzfehler"
 
 # MSG_PRINT_ABORTED c=20
-#: messages.c:65
+#: messages.c:69
 msgid "Print aborted"
 msgstr "Druck abgebrochen"
 
 # 
-#: ultralcd.cpp:2350
+#: ultralcd.cpp:2455
 msgid "Preheating to load"
-msgstr ""
+msgstr "Heizen zum Laden"
 
 # 
-#: ultralcd.cpp:2351
+#: ultralcd.cpp:2459
 msgid "Preheating to unload"
-msgstr ""
+msgstr "Heizen zum Entladen"
 
 # MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:7471
+#: ultralcd.cpp:8307
 msgid "Print fan:"
 msgstr "Druckvent.:"
 
@@ -1166,17 +1051,17 @@ msgid "Print from SD"
 msgstr "Drucken von SD"
 
 # 
-#: ultralcd.cpp:2313
+#: ultralcd.cpp:2317
 msgid "Press the knob"
-msgstr ""
+msgstr "Knopf druecken zum"
 
 # MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1022
+#: ultralcd.cpp:1069
 msgid "Print paused"
 msgstr "Druck pausiert"
 
 # 
-#: mmu.cpp:639
+#: mmu.cpp:723
 msgid "Press the knob to resume nozzle temperature."
 msgstr "Druecken Sie den Knopf um die Duesentemperatur wiederherzustellen"
 
@@ -1186,37 +1071,27 @@ msgid "Printer has not been calibrated yet. Please follow the manual, chapter Fi
 msgstr "Drucker wurde noch nicht kalibriert. Bitte folgen Sie dem Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrie- rungsablauf."
 
 # 
-#: ultralcd.cpp:1921
+#: ultralcd.cpp:1723
 msgid "Print FAN"
-msgstr ""
-
-# WELCOME_MSG c=20
-#: 
-msgid "Prusa i3 MK2.5 ready."
-msgstr "Prusa i3 MK2.5 bereit."
-
-# WELCOME_MSG c=20
-#: 
-msgid "Prusa i3 MK3 ready."
-msgstr "Prusa i3 MK3 bereit."
+msgstr "Druckvent."
 
 # MSG_PRUSA3D
-#: ultralcd.cpp:2227
+#: ultralcd.cpp:2205
 msgid "prusa3d.com"
 msgstr ""
 
 # MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3102
+#: ultralcd.cpp:3295
 msgid "Rear side [um]"
 msgstr "Hinten [um]"
 
 # MSG_RECOVERING_PRINT c=20 r=1
-#: Marlin_main.cpp:8575
+#: Marlin_main.cpp:9764
 msgid "Recovering print    "
 msgstr "Druck wiederherst    "
 
 # MSG_REMOVE_OLD_FILAMENT c=20 r=4
-#: mmu.cpp:744
+#: mmu.cpp:830
 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."
 
@@ -1225,63 +1100,58 @@ msgstr "Entfernen Sie das alte Filament und druecken Sie den Knopf, um das neue
 msgid "Prusa i3 MK3S OK."
 msgstr ""
 
-# 
-#: 
-msgid "Prusa i3 MK2 ready."
-msgstr "Prusa i3 MK2 bereit."
-
 # MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5203
+#: ultralcd.cpp:5774
 msgid "Reset XYZ calibr."
-msgstr "XYZ Kalibr. zuruecksetzen."
+msgstr "Reset XYZ Kalibr."
 
 # MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3103
+#: ultralcd.cpp:3296
 msgid "Reset"
 msgstr "Ruecksetzen"
 
 # MSG_RESUME_PRINT
-#: ultralcd.cpp:6033
+#: ultralcd.cpp:6742
 msgid "Resume print"
 msgstr "Druck fortsetzen"
 
 # MSG_RESUMING_PRINT c=20 r=1
-#: messages.c:69
+#: messages.c:73
 msgid "Resuming print"
 msgstr "Druck fortgesetzt"
 
 # MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3100
+#: ultralcd.cpp:3293
 msgid "Right side[um]"
-msgstr "Rechts [um]"
+msgstr "Rechts    [um]"
 
 # MSG_SECOND_SERIAL_ON c=17 r=1
-#: ultralcd.cpp:5119
+#: ultralcd.cpp:5692
 msgid "RPi port     [on]"
 msgstr "RPi Port     [an]"
 
 # MSG_SECOND_SERIAL_OFF c=17 r=1
-#: ultralcd.cpp:5117
+#: ultralcd.cpp:5690
 msgid "RPi port    [off]"
 msgstr "RPi Port    [aus]"
 
 # MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4583
+#: ultralcd.cpp:4812
 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_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-#: ultralcd.cpp:5033
+#: ultralcd.cpp:5322
 msgid "SD card  [normal]"
 msgstr "SD Karte [normal]"
 
 # MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:5031
+#: ultralcd.cpp:5320
 msgid "SD card [flshAir]"
 msgstr "SD Karte[flshAir]"
 
 # 
-#: ultralcd.cpp:2862
+#: ultralcd.cpp:3019
 msgid "Right"
 msgstr "Rechts"
 
@@ -1291,217 +1161,207 @@ msgid "Searching bed calibration point"
 msgstr "Suche Bett Kalibrierpunkt"
 
 # MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5126
+#: ultralcd.cpp:5699
 msgid "Select language"
 msgstr "Waehle Sprache"
 
 # MSG_SELFTEST_OK
-#: ultralcd.cpp:6631
+#: ultralcd.cpp:7452
 msgid "Self test OK"
 msgstr "Selbsttest OK"
 
 # MSG_SELFTEST_START c=20
-#: ultralcd.cpp:6449
+#: ultralcd.cpp:7238
 msgid "Self test start  "
 msgstr "Selbsttest start "
 
 # MSG_SELFTEST
-#: ultralcd.cpp:5179
+#: ultralcd.cpp:5750
 msgid "Selftest         "
-msgstr "Selbsttest "
+msgstr "Selbsttest       "
 
 # MSG_SELFTEST_ERROR
-#: ultralcd.cpp:7058
+#: ultralcd.cpp:7879
 msgid "Selftest error !"
 msgstr "Selbsttest Fehler!"
 
 # MSG_SELFTEST_FAILED c=20
-#: messages.c:73
+#: messages.c:77
 msgid "Selftest failed  "
-msgstr "Selbsttest misslung  "
+msgstr "Selbsttest Error "
 
 # MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1548
+#: Marlin_main.cpp:1551
 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:4803
+#: ultralcd.cpp:5045
 msgid "Select nozzle preheat temperature which matches your material."
 msgstr "Bitte Vorheiztemperatur auswaehlen, die Ihrem Material entspricht."
 
 # 
-#: ultralcd.cpp:4552
+#: ultralcd.cpp:4780
 msgid "Select PLA filament:"
 msgstr "PLA Filament auswaehlen:"
 
 # MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3111
+#: ultralcd.cpp:3314
 msgid "Set temperature:"
 msgstr "Temp. einstellen:"
 
 # MSG_SETTINGS
-#: messages.c:81
+#: messages.c:86
 msgid "Settings"
 msgstr "Einstellungen"
 
 # MSG_SHOW_END_STOPS c=17 r=1
-#: ultralcd.cpp:5200
+#: ultralcd.cpp:5771
 msgid "Show end stops"
 msgstr "Endschalter Status"
 
 # 
-#: ultralcd.cpp:3819
+#: ultralcd.cpp:4025
 msgid "Sensor state"
-msgstr ""
-
-# 
-#: 
-msgid "Sensors info"
-msgstr ""
-
-# 
-#: 
-msgid "Show pinda state"
-msgstr "Pinda-Status anzeigen"
+msgstr "Sensorstatus"
 
 # MSG_FILE_CNT c=20 r=4
-#: 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_NONE c=17 r=1
-#: ultralcd.cpp:5043
-msgid "Sort:      [none]"
-msgstr "Sort.:    [Keine]"
+#: ultralcd.cpp:5332
+msgid "Sort       [none]"
+msgstr "Sort.      [ohne]"
 
 # MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:5041
-msgid "Sort:      [time]"
-msgstr "Sort.:     [Zeit]"
+#: ultralcd.cpp:5330
+msgid "Sort       [time]"
+msgstr "Sort.      [Zeit]"
 
 # 
-#: ultralcd.cpp:2899
-msgid "Severe skew"
-msgstr "Schwerer Schraeglauf"
+#: ultralcd.cpp:3062
+msgid "Severe skew:"
+msgstr "Schwer.Schr:"
 
 # MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:5042
-msgid "Sort:  [alphabet]"
-msgstr "Sort.: [Alphabet]"
+#: ultralcd.cpp:5331
+msgid "Sort   [alphabet]"
+msgstr "Sort.  [Alphabet]"
 
 # MSG_SORTING c=20 r=1
-#: cardreader.cpp:745
+#: cardreader.cpp:746
 msgid "Sorting files"
 msgstr "Sortiere Dateien"
 
 # MSG_SOUND_LOUD c=17 r=1
-#: sound.h:5
+#: sound.h:6
 msgid "Sound      [loud]"
 msgstr "Sound      [laut]"
 
 # 
-#: ultralcd.cpp:2898
-msgid "Slight skew"
-msgstr "Leichter Schraeglauf"
+#: ultralcd.cpp:3061
+msgid "Slight skew:"
+msgstr "Leicht.Schr:"
 
 # MSG_SOUND_MUTE c=17 r=1
-#: sound.h:8
+#: 
 msgid "Sound      [mute]"
 msgstr "Sound     [stumm]"
 
 # 
-#: Marlin_main.cpp:4560
+#: Marlin_main.cpp:4871
 msgid "Some problem encountered, Z-leveling enforced ..."
 msgstr "Fehler aufgetreten, Z-Kalibrierung erforderlich..."
 
 # MSG_SOUND_ONCE c=17 r=1
-#: sound.h:6
+#: sound.h:7
 msgid "Sound      [once]"
 msgstr "Sound    [einmal]"
 
 # MSG_SOUND_SILENT c=17 r=1
-#: sound.h:7
+#: sound.h:8
 msgid "Sound    [silent]"
 msgstr "Sound     [leise]"
 
 # MSG_SPEED
-#: ultralcd.cpp:6199
+#: ultralcd.cpp:6926
 msgid "Speed"
 msgstr "Geschwindigkeit"
 
 # MSG_SELFTEST_FAN_YES c=19
-#: messages.c:76
+#: messages.c:80
 msgid "Spinning"
 msgstr "Dreht sich"
 
 # MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4065
+#: Marlin_main.cpp:4368
 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:6108
+#: ultralcd.cpp:6839
 msgid "Statistics  "
 msgstr "Statistiken "
 
 # MSG_STOP_PRINT
-#: messages.c:87
+#: messages.c:93
 msgid "Stop print"
 msgstr "Druck abbrechen"
 
 # MSG_STOPPED
-#: messages.c:88
+#: messages.c:94
 msgid "STOPPED. "
-msgstr "GESTOPPT. "
+msgstr "GESTOPPT."
 
 # MSG_SUPPORT
-#: ultralcd.cpp:6117
+#: ultralcd.cpp:6848
 msgid "Support"
 msgstr ""
 
 # MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:7138
+#: ultralcd.cpp:7959
 msgid "Swapped"
 msgstr "Ausgetauscht"
 
 # MSG_TEMP_CALIBRATION c=20 r=1
-#: messages.c:89
+#: messages.c:95
 msgid "Temp. cal.          "
-msgstr "Temp Kalib. "
+msgstr "Temp Kalib.         "
 
 # MSG_TEMP_CALIBRATION_ON c=20 r=1
-#: ultralcd.cpp:5113
+#: ultralcd.cpp:5686
 msgid "Temp. cal.   [on]"
-msgstr "Temp. Kal.   [AN]"
+msgstr "Temp. Kal.   [an]"
 
 # MSG_TEMP_CALIBRATION_OFF c=20 r=1
-#: ultralcd.cpp:5111
+#: ultralcd.cpp:5684
 msgid "Temp. cal.  [off]"
-msgstr "Temp. Kal.  [AUS]"
+msgstr "Temp. Kal.  [aus]"
 
 # MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5209
+#: ultralcd.cpp:5780
 msgid "Temp. calibration"
 msgstr "Temp. kalibrieren"
 
 # MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3744
+#: ultralcd.cpp:3951
 msgid "Temperature calibration failed"
 msgstr "Temperaturkalibrierung fehlgeschlagen"
 
 # MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:90
+#: messages.c:96
 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."
 
 # MSG_TEMPERATURE
-#: ultralcd.cpp:5089
+#: ultralcd.cpp:5650
 msgid "Temperature"
 msgstr "Temperatur"
 
 # MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2273
+#: ultralcd.cpp:2251
 msgid "Temperatures"
 msgstr "Temperaturen"
 
@@ -1511,127 +1371,122 @@ msgid "There is still a need to make Z calibration. Please follow the manual, ch
 msgstr "Es ist noch notwendig die Z-Kalibrierung auszufuehren. Bitte befolgen Sie das Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrierablauf."
 
 # 
-#: ultralcd.cpp:2752
+#: ultralcd.cpp:2908
 msgid "Total filament"
 msgstr "Gesamtes Filament"
 
 # 
-#: ultralcd.cpp:2754
+#: ultralcd.cpp:2908
 msgid "Total print time"
 msgstr "Gesamte Druckzeit"
 
 # MSG_TUNE
-#: ultralcd.cpp:6015
+#: ultralcd.cpp:6719
 msgid "Tune"
 msgstr "Feineinstellung"
 
 # 
-#: ultralcd.cpp:4640
+#: ultralcd.cpp:4869
 msgid "Unload"
 msgstr "Entladen"
 
 # 
-#: ultralcd.cpp:5617
-msgid "Unload all"
-msgstr "Alles entladen"
-
-# 
-#: ultralcd.cpp:1994
+#: ultralcd.cpp:1820
 msgid "Total failures"
-msgstr ""
+msgstr "Gesamte Fehler"
 
 # 
-#: ultralcd.cpp:2316
+#: ultralcd.cpp:2324
 msgid "to load filament"
-msgstr ""
+msgstr "Filament laden"
 
 # 
-#: ultralcd.cpp:2317
+#: ultralcd.cpp:2328
 msgid "to unload filament"
-msgstr ""
+msgstr "Filament entladen"
 
 # MSG_UNLOAD_FILAMENT c=17
-#: messages.c:91
+#: messages.c:97
 msgid "Unload filament"
 msgstr "Filament entladen"
 
 # MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:92
+#: messages.c:98
 msgid "Unloading filament"
 msgstr "Filament auswerfen"
 
 # 
-#: ultralcd.cpp:1961
+#: ultralcd.cpp:1773
 msgid "Total"
-msgstr ""
+msgstr "Gesamt"
 
 # MSG_USED c=19 r=1
-#: ultralcd.cpp:5334
+#: ultralcd.cpp:5908
 msgid "Used during print"
 msgstr "Beim Druck benutzt"
 
 # MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2276
+#: ultralcd.cpp:2254
 msgid "Voltages"
 msgstr "Spannungen"
 
 # 
-#: ultralcd.cpp:2249
+#: ultralcd.cpp:2227
 msgid "unknown"
-msgstr ""
+msgstr "unbekannt"
 
 # MSG_USERWAIT
-#: Marlin_main.cpp:4876
+#: Marlin_main.cpp:5263
 msgid "Wait for user..."
 msgstr "Warte auf Benutzer.."
 
 # MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3255
+#: ultralcd.cpp:3458
 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:3219
+#: ultralcd.cpp:3422
 msgid "Waiting for PINDA probe cooling"
 msgstr "Warten, bis PINDA- Sonde abgekuehlt ist"
 
 # 
-#: ultralcd.cpp:4639
+#: ultralcd.cpp:4868
 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:1508
+#: Marlin_main.cpp:1511
 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:1500
+#: Marlin_main.cpp:1503
 msgid "Warning: motherboard type changed."
 msgstr "Warnung: Platinentyp wurde geaendert."
 
 # MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1504
+#: Marlin_main.cpp:1507
 msgid "Warning: printer type changed."
 msgstr "Warnung: Druckertyp wurde geaendert."
 
 # MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3014
+#: Marlin_main.cpp:3054
 msgid "Was filament unload successful?"
 msgstr "Konnten Sie das Filament entnehmen?"
 
 # MSG_SELFTEST_WIRINGERROR
-#: messages.c:80
+#: messages.c:85
 msgid "Wiring error"
 msgstr "Verdrahtungsfehler"
 
 # MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5176
+#: ultralcd.cpp:5747
 msgid "Wizard"
 msgstr "Assistent"
 
 # MSG_XYZ_DETAILS c=19 r=1
-#: ultralcd.cpp:2265
+#: ultralcd.cpp:2243
 msgid "XYZ cal. details"
 msgstr "XYZ Kal. Details"
 
@@ -1641,107 +1496,322 @@ msgid "XYZ calibration failed. Please consult the manual."
 msgstr "XYZ-Kalibrierung fehlgeschlagen. Bitte schauen Sie in das Handbuch."
 
 # MSG_YES
-#: messages.c:98
+#: messages.c:104
 msgid "Yes"
 msgstr "Ja"
 
 # MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:97
+#: messages.c:103
 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:3715
+#: ultralcd.cpp:3922
 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:3712
+#: ultralcd.cpp:3919
 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
 msgstr "XYZ Kalibrierung in Ordnung. X/Y Achsen sind etwas schraeg."
 
 # 
-#: ultralcd.cpp:4885
-msgid "X-correct"
-msgstr "X-Korrektur"
+#: ultralcd.cpp:5130
+msgid "X-correct:"
+msgstr "X-Korrektur:"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3709
+#: ultralcd.cpp:3916
 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:3693
+#: ultralcd.cpp:3900
 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:3696
+#: ultralcd.cpp:3903
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "XYZ-Kalibrierung beeintraechtigt. Rechter vorderer Kalibrierpunkt nicht erreichbar."
 
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8
-#: ultralcd.cpp:3699
-msgid "XYZ calibration compromised. Left front calibration point not reachable."
-msgstr "XYZ-Kalibrierung beeintraechtigt. Linker vorderer Kalibrierpunkt nicht erreichbar."
-
 # MSG_LOAD_ALL c=17
-#: ultralcd.cpp:5575
+#: ultralcd.cpp:6166
 msgid "Load all"
 msgstr "Alle laden"
 
-# MSG_LOAD_FILAMENT_1 c=17
-#: ultralcd.cpp:5576
-msgid "Load filament 1"
-msgstr "Filament 1 laden"
-
 # 
-#: ultralcd.cpp:3675
+#: ultralcd.cpp:3882
 msgid "XYZ calibration failed. Bed calibration point was not found."
 msgstr "XYZ-Kalibrierung fehlgeschlagen. Bett-Kalibrierpunkt nicht gefunden."
 
 # 
-#: ultralcd.cpp:3681
+#: ultralcd.cpp:3888
 msgid "XYZ calibration failed. Front calibration points not reachable."
 msgstr "XYZ-Kalibrierung fehlgeschlagen. Vordere Kalibrierpunkte nicht erreichbar."
 
 # 
-#: ultralcd.cpp:3687
-msgid "XYZ calibration failed. Left front calibration point not reachable."
-msgstr "XYZ-Kalibrierung fehlgeschlagen. Linker vorderer Kalibrierpunkt nicht erreichbar."
-
-# MSG_LOAD_FILAMENT_2 c=17
-#: ultralcd.cpp:5577
-msgid "Load filament 2"
-msgstr "Filament 2 laden"
-
-# 
-#: ultralcd.cpp:3684
+#: ultralcd.cpp:3891
 msgid "XYZ calibration failed. Right front calibration point not reachable."
 msgstr "XYZ-Kalibrierung fehlgeschlagen. Rechter vorderer Kalibrierpunkt ist nicht erreichbar."
 
-# MSG_LOAD_FILAMENT_3 c=17
-#: ultralcd.cpp:5578
-msgid "Load filament 3"
-msgstr "Filament 3 laden"
+"XYZ calibration failed. Right front calibration point not reachable."
+#: 
+msgid "XYZ-Kalibrierung fehlgeschlagen. Rechter vorderer Kalibrierpunkt ist nicht erreichbar."
+msgstr 
 
 # 
-#: ultralcd.cpp:2859
+#: ultralcd.cpp:3016
 msgid "Y distance from min"
 msgstr "Y Entfernung vom Min"
 
 # 
-#: ultralcd.cpp:4886
-msgid "Y-correct"
-msgstr "Y-Korrektur"
+#: ultralcd.cpp:5131
+msgid "Y-correct:"
+msgstr "Y-Korrektur:"
+
+# MSG_OFF
+#: menu.cpp:426
+msgid " [off]"
+msgstr " [aus]"
+
+# 
+#: messages.c:57
+msgid "Back"
+msgstr "Zurueck"
+
+# 
+#: ultralcd.cpp:5639
+msgid "Checks"
+msgstr "Kontrolle"
+
+# 
+#: ultralcd.cpp:7973
+msgid "False triggering"
+msgstr "Falschtriggerung"
+
+# 
+#: ultralcd.cpp:4030
+msgid "FINDA:"
+msgstr ""
+
+# 
+#: ultralcd.cpp:5545
+msgid "Firmware   [none]"
+msgstr "Firmware   [ohne]"
+
+# 
+#: ultralcd.cpp:5551
+msgid "Firmware [strict]"
+msgstr "Firmware [strikt]"
+
+# 
+#: ultralcd.cpp:5548
+msgid "Firmware   [warn]"
+msgstr "Firmware [warnen]"
+
+# 
+#: messages.c:87
+msgid "HW Setup"
+msgstr "HW Einstellungen"
+
+# 
+#: ultralcd.cpp:4034
+msgid "IR:"
+msgstr ""
+
+# 
+#: ultralcd.cpp:7046
+msgid "Magnets comp.[N/A]"
+msgstr "Magnet Komp.  [nv]"
+
+# 
+#: ultralcd.cpp:7044
+msgid "Magnets comp.[Off]"
+msgstr "Magnet Komp. [Aus]"
+
+# 
+#: ultralcd.cpp:7043
+msgid "Magnets comp. [On]"
+msgstr "Magnet Komp.  [An]"
+
+# 
+#: ultralcd.cpp:7035
+msgid "Mesh         [3x3]"
+msgstr "Gitter       [3x3]"
+
+# 
+#: ultralcd.cpp:7036
+msgid "Mesh         [7x7]"
+msgstr "Gitter       [7x7]"
 
-# MSG_LOAD_FILAMENT_4 c=17
-#: ultralcd.cpp:5579
-msgid "Load filament 4"
-msgstr "Filament 4 laden"
+# 
+#: ultralcd.cpp:5677
+msgid "Mesh bed leveling"
+msgstr "MeshBett Ausgleich"
+
+# 
+#: Marlin_main.cpp:856
+msgid "MK3S firmware detected on MK3 printer"
+msgstr "MK3S-Firmware auf MK3-Drucker erkannt"
+
+# 
+#: ultralcd.cpp:5306
+msgid "MMU Mode [Normal]"
+msgstr "MMU Modus[Normal]"
 
-# MSG_LOAD_FILAMENT_5 c=17
-#: ultralcd.cpp:5582
-msgid "Load filament 5"
-msgstr "Filament 5 laden"
+# 
+#: ultralcd.cpp:5307
+msgid "MMU Mode[Stealth]"
+msgstr "MMU Mod.[Stealth]"
+
+# 
+#: ultralcd.cpp:4511
+msgid "Mode change in progress ..."
+msgstr "Moduswechsel erfolgt..."
+
+# 
+#: ultralcd.cpp:5506
+msgid "Model      [none]"
+msgstr "Modell     [ohne]"
+
+# 
+#: ultralcd.cpp:5512
+msgid "Model    [strict]"
+msgstr "Modell   [strikt]"
+
+# 
+#: ultralcd.cpp:5509
+msgid "Model      [warn]"
+msgstr "Modell   [warnen]"
+
+# 
+#: ultralcd.cpp:5467
+msgid "Nozzle d.  [0.25]"
+msgstr "Duese D.   [0.25]"
+
+# 
+#: ultralcd.cpp:5470
+msgid "Nozzle d.  [0.40]"
+msgstr "Duese D.   [0.40]"
+
+# 
+#: ultralcd.cpp:5473
+msgid "Nozzle d.  [0.60]"
+msgstr "Duese D.   [0.60]"
+
+# 
+#: ultralcd.cpp:5421
+msgid "Nozzle     [none]"
+msgstr "Duese      [ohne]"
+
+# 
+#: ultralcd.cpp:5427
+msgid "Nozzle   [strict]"
+msgstr "Duese    [strikt]"
+
+# 
+#: ultralcd.cpp:5424
+msgid "Nozzle     [warn]"
+msgstr "Duese    [warnen]"
+
+# 
+#: util.cpp:510
+msgid "G-code sliced for a different level. Continue?"
+msgstr "G-Code ist fuer einen anderen Level geslict. Fortfahren?"
+
+# 
+#: util.cpp:516
+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:427
+msgid "G-code sliced for a different printer type. Continue?"
+msgstr "G-Code ist fuer einen anderen Drucker geslict. Fortfahren?"
+
+# 
+#: util.cpp:433
+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:477
+msgid "G-code sliced for a newer firmware. Continue?"
+msgstr "G-Code ist fuer eine neuere Firmware geslict. Fortfahren?"
+
+# 
+#: util.cpp:483
+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:4026
+msgid "PINDA:"
+msgstr ""
+
+# 
+#: ultralcd.cpp:2465
+msgid "Preheating to cut"
+msgstr "Heizen zum Schnitt"
+
+# 
+#: ultralcd.cpp:2462
+msgid "Preheating to eject"
+msgstr "Heizen zum Auswurf"
+
+# 
+#: util.cpp:390
+msgid "Printer nozzle diameter differs from the G-code. Continue?"
+msgstr "Der Durchmesser der Druckerduese weicht vom G-Code ab. Fortfahren?"
+
+# 
+#: util.cpp:397
+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."
+
+# 
+#: ultralcd.cpp:6683
+msgid "Rename"
+msgstr "Umbenennen"
+
+# 
+#: ultralcd.cpp:6679
+msgid "Select"
+msgstr "Auswahl"
+
+# 
+#: ultralcd.cpp:2245
+msgid "Sensor info"
+msgstr "Sensor Info"
+
+# 
+#: messages.c:58
+msgid "Sheet"
+msgstr "Blech"
+
+# 
+#: sound.h:9
+msgid "Sound    [assist]"
+msgstr "Sound    [Assist]"
+
+# 
+#: ultralcd.cpp:5637
+msgid "Steel sheets"
+msgstr "Stahlbleche"
+
+# 
+#: ultralcd.cpp:5132
+msgid "Z-correct:"
+msgstr "Z-Korrektur:"
+
+# 
+#: ultralcd.cpp:7038
+msgid "Z-probe nr.    [1]"
+msgstr "Z-Probe Nr.    [1]"
+
+# 
+#: ultralcd.cpp:7040
+msgid "Z-probe nr.    [3]"
+msgstr "Z-Probe Nr.    [3]"
 

+ 576 - 511
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: čt 7. úno 2019 14:45:41\n"
-"PO-Revision-Date: čt 7. úno 2019 14:45:41\n"
+"POT-Creation-Date: Sun, Sep 22, 2019 2:05:16 PM\n"
+"PO-Revision-Date: Sun, Sep 22, 2019 2:05:16 PM\n"
 "Language-Team: \n"
 "X-Generator: Poedit 2.0.7\n"
 "X-Poedit-SourceCharset: UTF-8\n"
@@ -21,74 +21,74 @@ msgid " of 4"
 msgstr " de 4"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:56
+#: messages.c:60
 msgid " of 9"
 msgstr " de 9"
 
 # MSG_MEASURED_OFFSET
-#: ultralcd.cpp:2914
+#: ultralcd.cpp:3089
 msgid "[0;0] point offset"
 msgstr "[0;0] punto offset"
 
 # MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
-#: ultralcd.cpp:4219
-msgid "\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode"
-msgstr "\x1b[2JDec. choque\x1b[1;0Hpuede ser activada solo en\x1b[2;0HModo normal"
+#: 
+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
-#: ultralcd.cpp:4231
-msgid "\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode"
-msgstr "\x1b[2JATENCION:\x1b[1;0HDec. choque\x1b[2;0Hdesactivada en\x1b[3;0HModo silencio"
+#: 
+msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
+msgstr "ATENCION:\x0aDec. choque\x0adesactivada en\x0aModo silencio"
 
 # 
-#: ultralcd.cpp:2353
+#: ultralcd.cpp:2472
 msgid ">Cancel"
-msgstr ""
+msgstr ">Cancelar"
 
-# MSG_BABYSTEPPING_Z c=20
-#: ultralcd.cpp:3043
-msgid "Adjusting Z"
-msgstr "Ajustar Z"
+# MSG_BABYSTEPPING_Z c=15
+#: ultralcd.cpp:3209
+msgid "Adjusting Z:"
+msgstr "Ajustar-Z:"
 
 # MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:7459
+#: ultralcd.cpp:8295
 msgid "All correct      "
 msgstr "Todo bien"
 
 # MSG_WIZARD_DONE c=20 r=8
-#: messages.c:95
+#: messages.c:101
 msgid "All is done. Happy printing!"
 msgstr "Terminado! Feliz impresion!"
 
 # 
-#: ultralcd.cpp:2109
+#: ultralcd.cpp:2009
 msgid "Ambient"
-msgstr ""
+msgstr "Ambiente"
 
 # MSG_PRESS c=20
-#: ultralcd.cpp:2463
+#: ultralcd.cpp:2618
 msgid "and press the knob"
 msgstr "Haz clic"
 
 # MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3330
+#: ultralcd.cpp:3529
 msgid "Are left and right Z~carriages all up?"
 msgstr "Carros Z izq./der. estan arriba maximo?"
 
 # MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:4959
+#: ultralcd.cpp:5200
 msgid "SpoolJoin    [on]"
-msgstr "SpoolJoin    [on]"
+msgstr ""
 
 # 
-#: ultralcd.cpp:4955
+#: ultralcd.cpp:5196
 msgid "SpoolJoin   [N/A]"
-msgstr "SpoolJoin   [N/A]"
+msgstr ""
 
-#  MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:4963
+# MSG_AUTO_DEPLETE_OFF c=17 r=1
+#: ultralcd.cpp:5204
 msgid "SpoolJoin   [off]"
-msgstr "SpoolJoin   [off]"
+msgstr ""
 
 # MSG_AUTO_HOME
 #: messages.c:11
@@ -96,32 +96,32 @@ msgid "Auto home"
 msgstr "Llevar al origen"
 
 # MSG_AUTOLOAD_FILAMENT c=17
-#: ultralcd.cpp:6091
+#: ultralcd.cpp:6822
 msgid "AutoLoad filament"
 msgstr "Carga automatica de filamento"
 
 # MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4246
+#: ultralcd.cpp:4462
 msgid "Autoloading filament available only when filament sensor is turned on..."
 msgstr "La carga automatica de filamento solo funciona si el sensor de filamento esta activado..."
 
 # MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2655
+#: ultralcd.cpp:2813
 msgid "Autoloading filament is active, just press the knob and insert filament..."
 msgstr "La carga automatica de filamento esta activada, pulse el dial e inserte el filamento..."
 
 # MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:7128
+#: ultralcd.cpp:7949
 msgid "Axis length"
 msgstr "Longitud del eje"
 
 # MSG_SELFTEST_AXIS
-#: ultralcd.cpp:7130
+#: ultralcd.cpp:7951
 msgid "Axis"
 msgstr "Eje"
 
 # MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:7072
+#: ultralcd.cpp:7893
 msgid "Bed / Heater"
 msgstr "Base / Calentador"
 
@@ -136,7 +136,7 @@ msgid "Bed Heating"
 msgstr "Calentando Base"
 
 # MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5197
+#: ultralcd.cpp:5768
 msgid "Bed level correct"
 msgstr "Corr. de la cama"
 
@@ -145,38 +145,28 @@ msgstr "Corr. de la cama"
 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_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4
-#: Marlin_main.cpp:4508
-msgid "Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset."
-msgstr "Nivelacion fallada. Sensor desconectado o cables danados. Esperando reset."
-
-# MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4
-#: Marlin_main.cpp:4512
-msgid "Bed leveling failed. Sensor triggered too high. Waiting for reset."
-msgstr "Nivelacion fallada. Sensor funciona demasiado pronto. Esperando reset."
-
 # MSG_BED
 #: messages.c:15
 msgid "Bed"
-msgstr "Base calefactable "
+msgstr "Base"
 
 # MSG_MENU_BELT_STATUS c=15 r=1
-#: ultralcd.cpp:2135
+#: ultralcd.cpp:2059
 msgid "Belt status"
 msgstr "Estado de la correa"
 
 # MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:67
+#: messages.c:71
 msgid "Blackout occurred. Recover print?"
 msgstr "Se fue la luz. ?Reanudar la impresion?"
 
 # 
-#: ultralcd.cpp:7461
+#: ultralcd.cpp:8297
 msgid "Calibrating home"
-msgstr ""
+msgstr "Calibrando posicion inicial"
 
 # MSG_CALIBRATE_BED
-#: ultralcd.cpp:5186
+#: ultralcd.cpp:5757
 msgid "Calibrate XYZ"
 msgstr "Calibrar XYZ"
 
@@ -186,12 +176,12 @@ msgid "Calibrate Z"
 msgstr "Calibrar Z"
 
 # MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4427
+#: ultralcd.cpp:4654
 msgid "Calibrate"
 msgstr "Calibrar"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3290
+#: ultralcd.cpp:3492
 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."
 
@@ -201,37 +191,32 @@ msgid "Calibrating Z"
 msgstr "Calibrando Z"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3290
+#: ultralcd.cpp:3492
 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:778
+#: ultralcd.cpp:816
 msgid "Calibration done"
 msgstr "Calibracion OK"
 
 # MSG_MENU_CALIBRATION
-#: messages.c:57
+#: messages.c:61
 msgid "Calibration"
 msgstr "Calibracion"
 
 # 
-#: ultralcd.cpp:4552
+#: ultralcd.cpp:4781
 msgid "Cancel"
 msgstr "Cancelar"
 
-# MSG_SD_INSERTED
-#: 
-msgid "Card inserted"
-msgstr "Tarjeta insertada"
-
 # MSG_SD_REMOVED
-#: ultralcd.cpp:7819
+#: ultralcd.cpp:8679
 msgid "Card removed"
 msgstr "Tarjeta retirada"
 
 # MSG_NOT_COLOR
-#: ultralcd.cpp:2563
+#: ultralcd.cpp:2718
 msgid "Color not correct"
 msgstr "Color no homogeneo"
 
@@ -241,7 +226,7 @@ msgid "Cooldown"
 msgstr "Enfriar"
 
 # 
-#: ultralcd.cpp:4360
+#: ultralcd.cpp:4587
 msgid "Copy selected language?"
 msgstr "Copiar idioma seleccionado?"
 
@@ -266,27 +251,27 @@ msgid "Crash detected."
 msgstr "Choque detectado."
 
 # 
-#: Marlin_main.cpp:608
+#: Marlin_main.cpp:600
 msgid "Crash detected. Resume print?"
 msgstr "Choque detectado. Continuar impresion?"
 
 # 
-#: ultralcd.cpp:2013
+#: ultralcd.cpp:1853
 msgid "Crash"
-msgstr ""
+msgstr "Choque"
 
 # MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:5335
+#: ultralcd.cpp:5909
 msgid "Current"
 msgstr "Actual"
 
 # MSG_DATE c=17 r=1
-#: ultralcd.cpp:2235
+#: ultralcd.cpp:2213
 msgid "Date:"
 msgstr "Fecha:"
 
 # MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5093
+#: ultralcd.cpp:5654
 msgid "Disable steppers"
 msgstr "Apagar motores"
 
@@ -296,77 +281,52 @@ 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_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:4828
+#: ultralcd.cpp:5070
 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=9
-#: ultralcd.cpp:4889
-msgid "E-correct"
-msgstr "E-correcion"
+# MSG_EXTRUDER_CORRECTION c=10
+#: ultralcd.cpp:5134
+msgid "E-correct:"
+msgstr "Corregir-E:"
 
 # MSG_EJECT_FILAMENT c=17 r=1
-#: ultralcd.cpp:6081
+#: messages.c:53
 msgid "Eject filament"
 msgstr "Expulsar filamento"
 
-# MSG_EJECT_FILAMENT1 c=17 r=1
-#: ultralcd.cpp:5603
-msgid "Eject filament 1"
-msgstr "Expulsar filamento 1"
-
-# MSG_EJECT_FILAMENT2 c=17 r=1
-#: ultralcd.cpp:5604
-msgid "Eject filament 2"
-msgstr "Expulsar filamento 2"
-
-# MSG_EJECT_FILAMENT3 c=17 r=1
-#: ultralcd.cpp:5605
-msgid "Eject filament 3"
-msgstr "Expulsar filamento 3"
-
-# MSG_EJECT_FILAMENT4 c=17 r=1
-#: ultralcd.cpp:5606
-msgid "Eject filament 4"
-msgstr "Expulsar filamento 4"
-
-# MSG_EJECT_FILAMENT5 c=17 r=1
-#: ultralcd.cpp:5607
-msgid "Eject filament 5"
-msgstr "Expulsar filamento 5"
-
 # 
-#: ultralcd.cpp:4640
+#: ultralcd.cpp:4869
 msgid "Eject"
 msgstr "Expulsar"
 
 # MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1339
+#: mmu.cpp:1434
 msgid "Ejecting filament"
 msgstr "Expulsando filamento"
 
 # MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
-#: ultralcd.cpp:7096
+#: ultralcd.cpp:7917
 msgid "Endstop not hit"
 msgstr "Endstop no alcanzado"
 
 # MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:7090
+#: ultralcd.cpp:7911
 msgid "Endstop"
 msgstr ""
 
 # MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:7078
+#: ultralcd.cpp:7899
 msgid "Endstops"
 msgstr ""
 
 # MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6132
+#: ultralcd.cpp:6859
 msgid "Error - static memory has been overwritten"
 msgstr "Error - se ha sobre-escrito la memoria estatica"
 
 # MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4259
+#: ultralcd.cpp:4475
 msgid "ERROR: Filament sensor is not responding, please check connection."
 msgstr "ERROR: El sensor de filamento no responde, por favor comprueba la conexion."
 
@@ -375,38 +335,13 @@ msgstr "ERROR: El sensor de filamento no responde, por favor comprueba la conexi
 msgid "ERROR:"
 msgstr ""
 
-# 
-#: Marlin_main.cpp:1006
-msgid "External SPI flash W25X20CL not responding."
-msgstr "No responde el flasheo externo SPI W25X20CL"
-
-# 
-#: ultralcd.cpp:5633
-msgid "Extruder 1"
-msgstr "Extrusor 1"
-
-# 
-#: ultralcd.cpp:5634
-msgid "Extruder 2"
-msgstr "Extrusor 2"
-
-# 
-#: ultralcd.cpp:5635
-msgid "Extruder 3"
-msgstr "Extrusor 3"
-
-# 
-#: ultralcd.cpp:5636
-msgid "Extruder 4"
-msgstr "Extrusor 4"
-
 # MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:7468
+#: ultralcd.cpp:8304
 msgid "Extruder fan:"
-msgstr "Ventilador del extrusor:"
+msgstr "Vent.extrusor:"
 
 # MSG_INFO_EXTRUDER c=15 r=1
-#: ultralcd.cpp:2266
+#: ultralcd.cpp:2244
 msgid "Extruder info"
 msgstr "Informacion del extrusor"
 
@@ -416,12 +351,12 @@ msgid "Extruder"
 msgstr "Extruir"
 
 # 
-#: ultralcd.cpp:6115
+#: ultralcd.cpp:6846
 msgid "Fail stats MMU"
-msgstr ""
+msgstr "Estadistica de fallos MMU"
 
 # MSG_FSENS_AUTOLOAD_ON c=17 r=1
-#: ultralcd.cpp:4927
+#: ultralcd.cpp:5168
 msgid "F. autoload  [on]"
 msgstr "Autocarg.Fil[act]"
 
@@ -431,14 +366,14 @@ msgid "F. autoload [N/A]"
 msgstr "Autocarg.Fil[N/D]"
 
 # MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-#: ultralcd.cpp:4929
+#: ultralcd.cpp:5170
 msgid "F. autoload [off]"
 msgstr "Autocarg.Fil[ina]"
 
 # 
-#: ultralcd.cpp:6112
+#: ultralcd.cpp:6843
 msgid "Fail stats"
-msgstr ""
+msgstr "Estadistica de fallos"
 
 # MSG_FAN_SPEED c=14
 #: messages.c:31
@@ -446,17 +381,17 @@ msgid "Fan speed"
 msgstr "Velocidad Vent."
 
 # MSG_SELFTEST_FAN c=20
-#: messages.c:74
+#: messages.c:78
 msgid "Fan test"
 msgstr "Test ventiladores"
 
 # MSG_FANS_CHECK_ON c=17 r=1
-#: ultralcd.cpp:5100
+#: ultralcd.cpp:5663
 msgid "Fans check   [on]"
 msgstr "Comprob.vent[act]"
 
 # MSG_FANS_CHECK_OFF c=17 r=1
-#: ultralcd.cpp:5102
+#: ultralcd.cpp:5665
 msgid "Fans check  [off]"
 msgstr "Comprob.vent[ina]"
 
@@ -465,13 +400,8 @@ msgstr "Comprob.vent[ina]"
 msgid "Fil. sensor  [on]"
 msgstr "Sensor Fil. [act]"
 
-# MSG_RESPONSE_POOR c=20 r=2
-#: Marlin_main.cpp:3146
-msgid "Fil. sensor response is poor, disable it?"
-msgstr "La respuesta del sensor de fil es deficiente, ?desactivarlo?"
-
 # MSG_FSENSOR_NA
-#: ultralcd.cpp:4907
+#: ultralcd.cpp:5148
 msgid "Fil. sensor [N/A]"
 msgstr "Sensor Fil. [N/D]"
 
@@ -481,9 +411,9 @@ msgid "Fil. sensor [off]"
 msgstr "Sensor Fil. [ina]"
 
 # 
-#: ultralcd.cpp:2013
+#: ultralcd.cpp:1852
 msgid "Filam. runouts"
-msgstr ""
+msgstr "Filam. acabado"
 
 # MSG_FILAMENT_CLEAN c=20 r=2
 #: messages.c:32
@@ -491,32 +421,27 @@ msgid "Filament extruding & with correct color?"
 msgstr "Es nitido el color nuevo?"
 
 # MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2559
+#: ultralcd.cpp:2714
 msgid "Filament not loaded"
 msgstr "Fil. no introducido"
 
 # MSG_FILAMENT_SENSOR c=20
-#: ultralcd.cpp:7144
+#: messages.c:84
 msgid "Filament sensor"
 msgstr "Sensor de filamento"
 
-# MSG_SELFTEST_FILAMENT_SENSOR c=18
-#: ultralcd.cpp:7477
-msgid "Filament sensor:"
-msgstr "Sensor de filamento:"
-
 # MSG_FILAMENT_USED c=19 r=1
-#: ultralcd.cpp:2725
+#: ultralcd.cpp:2885
 msgid "Filament used"
 msgstr "Filamento usado"
 
 # MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2727
+#: ultralcd.cpp:2886
 msgid "Print time"
 msgstr "Tiempo de imp.:"
 
 # MSG_FILE_INCOMPLETE c=20 r=2
-#: ultralcd.cpp:7595
+#: ultralcd.cpp:8432
 msgid "File incomplete. Continue anyway?"
 msgstr "Archivo incompleto. ?Continuar de todos modos?"
 
@@ -526,52 +451,52 @@ msgid "Finishing movements"
 msgstr "Term. movimientos"
 
 # MSG_V2_CALIBRATION c=17 r=1
-#: ultralcd.cpp:5177
+#: messages.c:105
 msgid "First layer cal."
 msgstr "Cal. primera cap."
 
 # MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:4740
+#: ultralcd.cpp:4982
 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:640
+#: mmu.cpp:724
 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:6205
+#: ultralcd.cpp:6932
 msgid "Flow"
 msgstr "Flujo"
 
 # MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2228
+#: ultralcd.cpp:2206
 msgid "forum.prusa3d.com"
 msgstr ""
 
 # MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:71
+#: messages.c:75
 msgid "Front print fan?"
 msgstr "Vent. frontal?"
 
 # MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3101
+#: ultralcd.cpp:3294
 msgid "Front side[um]"
 msgstr "Frontal [um]"
 
 # MSG_SELFTEST_FANS
-#: ultralcd.cpp:7136
+#: ultralcd.cpp:7957
 msgid "Front/left fans"
 msgstr "Ventiladores frontal/izquierdo"
 
 # MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:7066
+#: ultralcd.cpp:7887
 msgid "Heater/Thermistor"
 msgstr "Calentador/Termistor"
 
 # MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:7475
+#: Marlin_main.cpp:8467
 msgid "Heating disabled by safety timer."
 msgstr "Calentadores desactivados por el temporizador de seguridad."
 
@@ -586,67 +511,62 @@ msgid "Heating"
 msgstr "Calentando..."
 
 # MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:4719
+#: ultralcd.cpp:4961
 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:2229
+#: ultralcd.cpp:2207
 msgid "howto.prusa3d.com"
 msgstr ""
 
-# 
-#: ultralcd.cpp:6087
-msgid "Change extruder"
-msgstr "Cambiar extrusor."
-
 # MSG_FILAMENTCHANGE
 #: messages.c:37
 msgid "Change filament"
 msgstr "Cambiar filamento"
 
 # MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2474
+#: ultralcd.cpp:2629
 msgid "Change success!"
 msgstr "Cambio correcto"
 
 # MSG_CORRECTLY c=20
-#: ultralcd.cpp:2551
+#: ultralcd.cpp:2706
 msgid "Changed correctly?"
 msgstr "Cambio correcto?"
 
 # MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:77
+#: messages.c:81
 msgid "Checking bed     "
 msgstr "Control base cal."
 
 # MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:7450
+#: ultralcd.cpp:8286
 msgid "Checking endstops"
 msgstr "Control endstops"
 
 # MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:7456
+#: ultralcd.cpp:8292
 msgid "Checking hotend  "
 msgstr "Control fusor"
 
 # MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:78
+#: messages.c:82
 msgid "Checking sensors "
 msgstr "Comprobando los sensores"
 
 # MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:7451
+#: ultralcd.cpp:8287
 msgid "Checking X axis  "
 msgstr "Control sensor X"
 
 # MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:7452
+#: ultralcd.cpp:8288
 msgid "Checking Y axis  "
 msgstr "Control sensor Y"
 
 # MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:7453
+#: ultralcd.cpp:8289
 msgid "Checking Z axis  "
 msgstr "Control sensor Z"
 
@@ -666,112 +586,82 @@ msgid "Filament"
 msgstr "Filamento"
 
 # MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:4749
+#: ultralcd.cpp:4991
 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:4757
+#: ultralcd.cpp:4999
 msgid "I will run z calibration now."
 msgstr "Voy a hacer Calibracion Z ahora."
 
 # MSG_WIZARD_V2_CAL_2 c=20 r=12
-#: ultralcd.cpp:4822
+#: ultralcd.cpp:5064
 msgid "I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."
 msgstr "Voy a comenzar a imprimir la linea y tu bajaras el nozzle gradualmente al rotar el dial, hasta que llegues a la altura optima. Mira las imagenes del capitulo Calibracion en el manual."
 
-# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: mesh_bed_calibration.cpp:2481
-msgid "Improving bed calibration point"
-msgstr "Mejorando punto de calibracion base"
-
 # MSG_WATCH
-#: messages.c:93
+#: messages.c:99
 msgid "Info screen"
 msgstr "Monitorizar"
 
-# MSG_FILAMENT_LOADING_T0 c=20 r=4
-#: messages.c:33
-msgid "Insert filament into extruder 1. Click when done."
-msgstr "Insertar filamento en el extrusor 1. Haz clic una vez terminado."
-
-# MSG_FILAMENT_LOADING_T1 c=20 r=4
-#: messages.c:34
-msgid "Insert filament into extruder 2. Click when done."
-msgstr "Insertar filamento en el extrusor 2. Haz clic una vez terminado."
-
-# MSG_FILAMENT_LOADING_T2 c=20 r=4
-#: messages.c:35
-msgid "Insert filament into extruder 3. Click when done."
-msgstr "Insertar filamento en el extrusor 3. Haz clic una vez terminado."
-
-# MSG_FILAMENT_LOADING_T3 c=20 r=4
-#: messages.c:36
-msgid "Insert filament into extruder 4. Click when done."
-msgstr "Insertar filamento en el extrusor 4. Haz clic una vez terminado."
-
 # 
-#: ultralcd.cpp:4782
+#: ultralcd.cpp:5024
 msgid "Is filament 1 loaded?"
 msgstr "?Esta cargado el filamento 1?"
 
 # MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2459
+#: ultralcd.cpp:2614
 msgid "Insert filament"
 msgstr "Introducir filamento"
 
 # MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4785
+#: ultralcd.cpp:5027
 msgid "Is filament loaded?"
 msgstr "Esta el filamento cargado?"
 
 # MSG_WIZARD_PLA_FILAMENT c=20 r=2
-#: ultralcd.cpp:4816
+#: ultralcd.cpp:5058
 msgid "Is it PLA filament?"
 msgstr "Es el filamento PLA?"
 
 # MSG_PLA_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4561
+#: ultralcd.cpp:4790
 msgid "Is PLA filament loaded?"
 msgstr "Esta el filamento PLA cargado?"
 
 # MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:86
+#: messages.c:92
 msgid "Is steel sheet on heatbed?"
 msgstr "?Esta colocada la lamina de acero sobre la base?"
 
-# MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20
-#: mesh_bed_calibration.cpp:2223
-msgid "Iteration "
-msgstr "Reiteracion "
-
 # 
-#: ultralcd.cpp:1976
+#: ultralcd.cpp:1795
 msgid "Last print failures"
-msgstr ""
+msgstr "Ultimas impresiones fallidas"
 
 # 
-#: ultralcd.cpp:1960
+#: ultralcd.cpp:1772
 msgid "Last print"
-msgstr ""
+msgstr "Ultima impresion"
 
 # MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:72
+#: messages.c:76
 msgid "Left hotend fan?"
 msgstr "Vent. izquierdo?"
 
 # 
-#: ultralcd.cpp:2861
+#: ultralcd.cpp:3018
 msgid "Left"
 msgstr "Izquierda"
 
 # MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3099
+#: ultralcd.cpp:3292
 msgid "Left side [um]"
 msgstr "Izquierda [um]"
 
 # 
-#: ultralcd.cpp:5107
+#: ultralcd.cpp:5680
 msgid "Lin. correction"
 msgstr "Correccion de Linealidad"
 
@@ -786,7 +676,7 @@ msgid "Load filament"
 msgstr "Introducir filam."
 
 # MSG_LOADING_COLOR
-#: ultralcd.cpp:2499
+#: ultralcd.cpp:2654
 msgid "Loading color"
 msgstr "Cambiando color"
 
@@ -796,92 +686,92 @@ msgid "Loading filament"
 msgstr "Introduciendo filam."
 
 # MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:7120
+#: ultralcd.cpp:7941
 msgid "Loose pulley"
 msgstr "Polea suelta"
 
 # 
-#: ultralcd.cpp:6079
+#: ultralcd.cpp:6805
 msgid "Load to nozzle"
 msgstr "Cargar a la boquilla"
 
 # MSG_M117_V2_CALIBRATION c=25 r=1
-#: messages.c:53
+#: messages.c:55
 msgid "M117 First layer cal."
 msgstr "M117 Cal. primera cap."
 
 # MSG_MAIN
-#: messages.c:54
+#: messages.c:56
 msgid "Main"
 msgstr "Menu principal"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:55
+#: messages.c:59
 msgid "Measuring reference height of calibration point"
 msgstr "Midiendo altura del punto de calibracion"
 
 # MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5192
+#: ultralcd.cpp:5763
 msgid "Mesh Bed Leveling"
 msgstr "Nivelacion Mesh Level"
 
 # MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:676
+#: mmu.cpp:762
 msgid "MMU OK. Resuming position..."
 msgstr "MMU OK. Restaurando posicion..."
 
 # MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:669
+#: mmu.cpp:755
 msgid "MMU OK. Resuming temperature..."
 msgstr "MMU OK. Restaurando temperatura..."
 
 # 
-#: ultralcd.cpp:2896
+#: ultralcd.cpp:3059
 msgid "Measured skew"
-msgstr "Desviacion medida:"
+msgstr "Desviacion med:"
 
 # 
-#: ultralcd.cpp:1977
+#: ultralcd.cpp:1796
 msgid "MMU fails"
-msgstr ""
+msgstr "Fallos MMU"
 
 # 
-#: mmu.cpp:1399
+#: mmu.cpp:1613
 msgid "MMU load failed     "
-msgstr ""
+msgstr "Carga MMU fallida"
 
 # 
-#: ultralcd.cpp:1977
+#: ultralcd.cpp:1797
 msgid "MMU load fails"
-msgstr ""
+msgstr "Carga MMU falla"
 
 # MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:687
+#: mmu.cpp:773
 msgid "MMU OK. Resuming..."
 msgstr "MMU OK. Resumiendo..."
 
 # MSG_STEALTH_MODE_OFF
-#: messages.c:84
+#: messages.c:90
 msgid "Mode     [Normal]"
 msgstr "Modo     [Normal]"
 
 # MSG_SILENT_MODE_ON
-#: messages.c:83
+#: messages.c:89
 msgid "Mode     [silent]"
 msgstr "Modo   [silencio]"
 
 # 
-#: mmu.cpp:635
+#: mmu.cpp:719
 msgid "MMU needs user attention."
 msgstr "MMU necesita atencion del usuario."
 
 # 
-#: ultralcd.cpp:1994
+#: ultralcd.cpp:1823
 msgid "MMU power fails"
-msgstr ""
+msgstr "Fallo de energia en MMU"
 
 # MSG_STEALTH_MODE_ON
-#: messages.c:85
+#: messages.c:91
 msgid "Mode    [Stealth]"
 msgstr "Modo   [Silencio]"
 
@@ -891,62 +781,62 @@ msgid "Mode [auto power]"
 msgstr "Modo[fuerza auto]"
 
 # MSG_SILENT_MODE_OFF
-#: messages.c:82
+#: messages.c:88
 msgid "Mode [high power]"
 msgstr "Modo [rend.pleno]"
 
 # 
-#: ultralcd.cpp:2241
+#: ultralcd.cpp:2219
 msgid "MMU2 connected"
-msgstr ""
+msgstr "MMU2 conectado"
 
 # MSG_SELFTEST_MOTOR
-#: messages.c:79
+#: messages.c:83
 msgid "Motor"
 msgstr ""
 
 # MSG_MOVE_AXIS
-#: ultralcd.cpp:5091
+#: ultralcd.cpp:5652
 msgid "Move axis"
 msgstr "Mover ejes"
 
 # MSG_MOVE_X
-#: ultralcd.cpp:4164
+#: ultralcd.cpp:4378
 msgid "Move X"
 msgstr "Mover X"
 
 # MSG_MOVE_Y
-#: ultralcd.cpp:4165
+#: ultralcd.cpp:4379
 msgid "Move Y"
 msgstr "Mover Y"
 
 # MSG_MOVE_Z
-#: ultralcd.cpp:4166
+#: ultralcd.cpp:4380
 msgid "Move Z"
 msgstr "Mover Z"
 
 # MSG_NO_MOVE
-#: Marlin_main.cpp:4908
+#: Marlin_main.cpp:5292
 msgid "No move."
 msgstr "Sin movimiento"
 
 # MSG_NO_CARD
-#: ultralcd.cpp:6059
+#: ultralcd.cpp:6772
 msgid "No SD card"
 msgstr "No hay tarjeta SD"
 
 # 
-#: ultralcd.cpp:2867
+#: ultralcd.cpp:3024
 msgid "N/A"
-msgstr ""
+msgstr "N/A"
 
 # MSG_NO
-#: messages.c:58
+#: messages.c:62
 msgid "No"
 msgstr ""
 
 # MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:7068
+#: ultralcd.cpp:7889
 msgid "Not connected"
 msgstr "No hay conexion "
 
@@ -955,78 +845,73 @@ msgstr "No hay conexion "
 msgid "New firmware version available:"
 msgstr "Nuevo firmware disponible:"
 
-# 
-#: 
-msgid "No "
-msgstr "No"
-
 # MSG_SELFTEST_FAN_NO c=19
-#: messages.c:75
+#: messages.c:79
 msgid "Not spinning"
 msgstr "Ventilador no gira"
 
 # MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4821
+#: ultralcd.cpp:5063
 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:4765
+#: ultralcd.cpp:5007
 msgid "Now I will preheat nozzle for PLA."
-msgstr "Voy a precalentar la boquilla para PLA ahora."
+msgstr "Ahora precalentare la boquilla para PLA."
 
 # MSG_NOZZLE
-#: messages.c:59
+#: messages.c:63
 msgid "Nozzle"
 msgstr "Boquilla"
 
 # MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
-#: Marlin_main.cpp:1516
+#: Marlin_main.cpp:1519
 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:4756
+#: ultralcd.cpp:4998
 msgid "Now remove the test print from steel sheet."
 msgstr "Ahora retira la prueba de la lamina de acero."
 
 # 
-#: ultralcd.cpp:1919
+#: ultralcd.cpp:1722
 msgid "Nozzle FAN"
-msgstr ""
+msgstr "Vent. capa"
 
 # MSG_PAUSE_PRINT
-#: ultralcd.cpp:6029
+#: ultralcd.cpp:6735
 msgid "Pause print"
 msgstr "Pausar impresion"
 
 # MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1741
+#: ultralcd.cpp:1606
 msgid "PID cal.           "
 msgstr "Cal. PID "
 
 # MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1747
+#: ultralcd.cpp:1612
 msgid "PID cal. finished"
 msgstr "Cal. PID terminada"
 
 # MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5198
+#: ultralcd.cpp:5769
 msgid "PID calibration"
 msgstr "Calibracion PID"
 
 # MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:808
+#: ultralcd.cpp:846
 msgid "PINDA Heating"
 msgstr "Calentando PINDA"
 
 # MSG_PAPER c=20 r=8
-#: messages.c:60
+#: messages.c:64
 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:4830
+#: ultralcd.cpp:5072
 msgid "Please clean heatbed and then press the knob."
 msgstr "Limpia la superficie de la base, por favor, y haz clic"
 
@@ -1036,92 +921,92 @@ msgid "Please clean the nozzle for calibration. Click when done."
 msgstr "Limpia boquilla para calibracion. Click cuando acabes."
 
 # MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:7060
+#: ultralcd.cpp:7881
 msgid "Please check :"
 msgstr "Controla :"
 
 # MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:94
+#: messages.c:100
 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_WIZARD_LOAD_FILAMENT c=20 r=8
-#: ultralcd.cpp:4664
+#: ultralcd.cpp:4894
 msgid "Please insert PLA filament to the extruder, then press knob to load it."
 msgstr "Inserta, por favor, filamento PLA en el extrusor. Despues haz clic para cargarlo."
 
 # MSG_PLEASE_LOAD_PLA c=20 r=4
-#: ultralcd.cpp:4566
+#: ultralcd.cpp:4795
 msgid "Please load PLA filament first."
 msgstr "Carga el filamento PLA primero por favor."
 
 # MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3025
+#: Marlin_main.cpp:3064
 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:65
 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:68
 msgid "Please press the knob to unload filament"
 msgstr "Por favor, pulsa el dial para descargar el filamento"
 
 # 
-#: ultralcd.cpp:4660
+#: ultralcd.cpp:4889
 msgid "Please insert PLA filament to the first tube of MMU, then press the knob to load it."
 msgstr "Por favor introduce el filamento al primer tubo MMU, despues presiona el dial para imprimirlo."
 
 # MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:66
+#: messages.c:70
 msgid "Please pull out filament immediately"
 msgstr "Por favor retire el filamento de inmediato"
 
 # MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1347
+#: mmu.cpp:1440
 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:74
 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:4052
+#: Marlin_main.cpp:4355
 msgid "Please run XYZ calibration first."
 msgstr "Por favor realiza la calibracion XYZ primero."
 
 # MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1293
+#: mmu.cpp:1359
 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:66
 msgid "Please wait"
 msgstr "Por Favor Espere"
 
 # 
-#: ultralcd.cpp:4755
+#: ultralcd.cpp:4997
 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:67
 msgid "Preheat the nozzle!"
 msgstr "Precalienta extrusor!"
 
 # MSG_PREHEAT
-#: ultralcd.cpp:6018
+#: ultralcd.cpp:6722
 msgid "Preheat"
 msgstr "Precalentar"
 
 # MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:96
+#: messages.c:102
 msgid "Preheating nozzle. Please wait."
 msgstr "Precalentando nozzle. Espera por favor."
 
@@ -1131,34 +1016,34 @@ msgid "Please upgrade."
 msgstr "Actualize por favor"
 
 # MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:9150
+#: Marlin_main.cpp:10364
 msgid "Press knob to preheat nozzle and continue."
 msgstr "Pulsa el dial para precalentar la boquilla y continue."
 
 # 
-#: ultralcd.cpp:2013
+#: ultralcd.cpp:1851
 msgid "Power failures"
-msgstr ""
+msgstr "Cortes de energia"
 
 # MSG_PRINT_ABORTED c=20
-#: messages.c:65
+#: messages.c:69
 msgid "Print aborted"
 msgstr "Impresion cancelada"
 
 # 
-#: ultralcd.cpp:2350
+#: ultralcd.cpp:2455
 msgid "Preheating to load"
-msgstr ""
+msgstr "Precalentar para cargar"
 
 # 
-#: ultralcd.cpp:2351
+#: ultralcd.cpp:2459
 msgid "Preheating to unload"
-msgstr ""
+msgstr "Precalentar para descargar"
 
 # MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:7471
+#: ultralcd.cpp:8307
 msgid "Print fan:"
-msgstr "Ventilador del fusor:"
+msgstr "Vent.fusor:"
 
 # MSG_CARD_MENU
 #: messages.c:21
@@ -1166,17 +1051,17 @@ msgid "Print from SD"
 msgstr "Menu tarjeta SD"
 
 # 
-#: ultralcd.cpp:2313
+#: ultralcd.cpp:2317
 msgid "Press the knob"
-msgstr ""
+msgstr "Pulsa el dial"
 
 # MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1022
+#: ultralcd.cpp:1069
 msgid "Print paused"
 msgstr "Impresion en pausa"
 
 # 
-#: mmu.cpp:639
+#: mmu.cpp:723
 msgid "Press the knob to resume nozzle temperature."
 msgstr "Presiona el dial para continuar con la temperatura de la boquilla."
 
@@ -1186,37 +1071,27 @@ msgid "Printer has not been calibrated yet. Please follow the manual, chapter Fi
 msgstr "Impresora no esta calibrada todavia. Por favor usa el manual capitulo Primeros pasos Calibracion flujo."
 
 # 
-#: ultralcd.cpp:1921
+#: ultralcd.cpp:1723
 msgid "Print FAN"
-msgstr ""
-
-# WELCOME_MSG c=20
-#: 
-msgid "Prusa i3 MK2.5 ready."
-msgstr "Preparado para Prusa i3 MK2.5."
-
-# WELCOME_MSG c=20
-#: 
-msgid "Prusa i3 MK3 ready."
-msgstr "Prusa i3 MK3 prep."
+msgstr "Vent.extr"
 
 # MSG_PRUSA3D
-#: ultralcd.cpp:2227
+#: ultralcd.cpp:2205
 msgid "prusa3d.com"
 msgstr "prusa3d.es"
 
 # MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3102
+#: ultralcd.cpp:3295
 msgid "Rear side [um]"
 msgstr "Trasera [um]"
 
 # MSG_RECOVERING_PRINT c=20 r=1
-#: Marlin_main.cpp:8575
+#: Marlin_main.cpp:9764
 msgid "Recovering print    "
 msgstr "Recuperando impresion"
 
 # MSG_REMOVE_OLD_FILAMENT c=20 r=4
-#: mmu.cpp:744
+#: mmu.cpp:830
 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."
 
@@ -1225,63 +1100,58 @@ msgstr "Retire el filamento viejo y presione el dial para comenzar a cargar el n
 msgid "Prusa i3 MK3S OK."
 msgstr ""
 
-# 
-#: 
-msgid "Prusa i3 MK2 ready."
-msgstr "Preparado para i3 MK2."
-
 # MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5203
+#: ultralcd.cpp:5774
 msgid "Reset XYZ calibr."
 msgstr ""
 
 # MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3103
+#: ultralcd.cpp:3296
 msgid "Reset"
 msgstr ""
 
 # MSG_RESUME_PRINT
-#: ultralcd.cpp:6033
+#: ultralcd.cpp:6742
 msgid "Resume print"
 msgstr "Reanudar impres."
 
 # MSG_RESUMING_PRINT c=20 r=1
-#: messages.c:69
+#: messages.c:73
 msgid "Resuming print"
-msgstr "Resumiendo impresion"
+msgstr "Continuando impresion"
 
 # MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3100
+#: ultralcd.cpp:3293
 msgid "Right side[um]"
 msgstr "Derecha [um]"
 
 # MSG_SECOND_SERIAL_ON c=17 r=1
-#: ultralcd.cpp:5119
+#: ultralcd.cpp:5692
 msgid "RPi port     [on]"
 msgstr "Puerto RPi  [act]"
 
 # MSG_SECOND_SERIAL_OFF c=17 r=1
-#: ultralcd.cpp:5117
+#: ultralcd.cpp:5690
 msgid "RPi port    [off]"
 msgstr "Puerto RPi  [ina]"
 
 # MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4583
+#: ultralcd.cpp:4812
 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_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-#: ultralcd.cpp:5033
+#: ultralcd.cpp:5322
 msgid "SD card  [normal]"
 msgstr "Tarj. SD [normal]"
 
 # MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:5031
+#: ultralcd.cpp:5320
 msgid "SD card [flshAir]"
 msgstr "Tarj. SD[FlshAir]"
 
 # 
-#: ultralcd.cpp:2862
+#: ultralcd.cpp:3019
 msgid "Right"
 msgstr "Derecha"
 
@@ -1291,217 +1161,207 @@ msgid "Searching bed calibration point"
 msgstr "Buscando punto de calibracion base"
 
 # MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5126
+#: ultralcd.cpp:5699
 msgid "Select language"
 msgstr "Cambiar el idioma"
 
 # MSG_SELFTEST_OK
-#: ultralcd.cpp:6631
+#: ultralcd.cpp:7452
 msgid "Self test OK"
 msgstr ""
 
 # MSG_SELFTEST_START c=20
-#: ultralcd.cpp:6449
+#: ultralcd.cpp:7238
 msgid "Self test start  "
 msgstr "Iniciar Selftest"
 
 # MSG_SELFTEST
-#: ultralcd.cpp:5179
+#: ultralcd.cpp:5750
 msgid "Selftest         "
 msgstr "Selftest"
 
 # MSG_SELFTEST_ERROR
-#: ultralcd.cpp:7058
+#: ultralcd.cpp:7879
 msgid "Selftest error !"
 msgstr "Error Selftest !"
 
 # MSG_SELFTEST_FAILED c=20
-#: messages.c:73
+#: messages.c:77
 msgid "Selftest failed  "
 msgstr "Fallo Selftest"
 
 # MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1548
+#: Marlin_main.cpp:1551
 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:4803
+#: ultralcd.cpp:5045
 msgid "Select nozzle preheat temperature which matches your material."
 msgstr "Selecciona la temperatura para precalentar la boquilla que se ajuste a tu material. "
 
 # 
-#: ultralcd.cpp:4552
+#: ultralcd.cpp:4780
 msgid "Select PLA filament:"
 msgstr "Seleccionar filamento PLA:"
 
 # MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3111
+#: ultralcd.cpp:3314
 msgid "Set temperature:"
 msgstr "Establecer temp.:"
 
 # MSG_SETTINGS
-#: messages.c:81
+#: messages.c:86
 msgid "Settings"
 msgstr "Configuracion"
 
 # MSG_SHOW_END_STOPS c=17 r=1
-#: ultralcd.cpp:5200
+#: ultralcd.cpp:5771
 msgid "Show end stops"
 msgstr "Mostrar endstops"
 
 # 
-#: ultralcd.cpp:3819
+#: ultralcd.cpp:4025
 msgid "Sensor state"
-msgstr ""
-
-# 
-#: 
-msgid "Sensors info"
-msgstr ""
-
-# 
-#: 
-msgid "Show pinda state"
-msgstr "Mostrar estado pinda"
+msgstr "Estado del sensor"
 
 # MSG_FILE_CNT c=20 r=4
-#: 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_NONE c=17 r=1
-#: ultralcd.cpp:5043
-msgid "Sort:      [none]"
-msgstr "Ordenar:   [nada]"
+#: ultralcd.cpp:5332
+msgid "Sort       [none]"
+msgstr "Ordenar [ninguno]"
 
 # MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:5041
-msgid "Sort:      [time]"
-msgstr "Orden:    [Fecha]"
+#: ultralcd.cpp:5330
+msgid "Sort       [time]"
+msgstr "Ordenar   [fecha]"
 
 # 
-#: ultralcd.cpp:2899
-msgid "Severe skew"
-msgstr "Inclinacion severa"
+#: ultralcd.cpp:3062
+msgid "Severe skew:"
+msgstr "Incl.severa:"
 
 # MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:5042
-msgid "Sort:  [alphabet]"
-msgstr "Ordenar:[alfabet]"
+#: ultralcd.cpp:5331
+msgid "Sort   [alphabet]"
+msgstr "Ordenar [alfabet]"
 
 # MSG_SORTING c=20 r=1
-#: cardreader.cpp:745
+#: cardreader.cpp:746
 msgid "Sorting files"
 msgstr "Ordenando archivos"
 
 # MSG_SOUND_LOUD c=17 r=1
-#: sound.h:5
+#: sound.h:6
 msgid "Sound      [loud]"
 msgstr "Sonido     [alto]"
 
 # 
-#: ultralcd.cpp:2898
-msgid "Slight skew"
-msgstr "Ligeramente inclinado"
+#: ultralcd.cpp:3061
+msgid "Slight skew:"
+msgstr "Liger.incl.:"
 
 # MSG_SOUND_MUTE c=17 r=1
-#: sound.h:8
+#: 
 msgid "Sound      [mute]"
 msgstr "Sonido[silenciad]"
 
 # 
-#: Marlin_main.cpp:4560
+#: Marlin_main.cpp:4871
 msgid "Some problem encountered, Z-leveling enforced ..."
 msgstr "Problema encontrado, nivelacion Z forzosa ..."
 
 # MSG_SOUND_ONCE c=17 r=1
-#: sound.h:6
+#: sound.h:7
 msgid "Sound      [once]"
 msgstr "Sonido  [una vez]"
 
 # MSG_SOUND_SILENT c=17 r=1
-#: sound.h:7
+#: sound.h:8
 msgid "Sound    [silent]"
 msgstr "Sonido[silencios]"
 
 # MSG_SPEED
-#: ultralcd.cpp:6199
+#: ultralcd.cpp:6926
 msgid "Speed"
 msgstr "Velocidad"
 
 # MSG_SELFTEST_FAN_YES c=19
-#: messages.c:76
+#: messages.c:80
 msgid "Spinning"
 msgstr "Ventilador girando"
 
 # MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4065
+#: Marlin_main.cpp:4368
 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:6108
+#: ultralcd.cpp:6839
 msgid "Statistics  "
 msgstr "Estadisticas "
 
 # MSG_STOP_PRINT
-#: messages.c:87
+#: messages.c:93
 msgid "Stop print"
 msgstr "Detener impresion"
 
 # MSG_STOPPED
-#: messages.c:88
+#: messages.c:94
 msgid "STOPPED. "
 msgstr "PARADA"
 
 # MSG_SUPPORT
-#: ultralcd.cpp:6117
+#: ultralcd.cpp:6848
 msgid "Support"
 msgstr "Soporte"
 
 # MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:7138
+#: ultralcd.cpp:7959
 msgid "Swapped"
 msgstr "Intercambiado"
 
 # MSG_TEMP_CALIBRATION c=20 r=1
-#: messages.c:89
+#: messages.c:95
 msgid "Temp. cal.          "
 msgstr "Cal. temp. "
 
 # MSG_TEMP_CALIBRATION_ON c=20 r=1
-#: ultralcd.cpp:5113
+#: ultralcd.cpp:5686
 msgid "Temp. cal.   [on]"
-msgstr "Cal. temp.   [ON]"
+msgstr "Cal. temp.   [on]"
 
 # MSG_TEMP_CALIBRATION_OFF c=20 r=1
-#: ultralcd.cpp:5111
+#: ultralcd.cpp:5684
 msgid "Temp. cal.  [off]"
-msgstr "Cal. temp.  [OFF]"
+msgstr "Cal. temp.  [off]"
 
 # MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5209
+#: ultralcd.cpp:5780
 msgid "Temp. calibration"
 msgstr "Calibracion temp."
 
 # MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3744
+#: ultralcd.cpp:3951
 msgid "Temperature calibration failed"
 msgstr "Fallo de la calibracion de temperatura"
 
 # MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:90
+#: messages.c:96
 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."
 
 # MSG_TEMPERATURE
-#: ultralcd.cpp:5089
+#: ultralcd.cpp:5650
 msgid "Temperature"
 msgstr "Temperatura"
 
 # MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2273
+#: ultralcd.cpp:2251
 msgid "Temperatures"
 msgstr "Temperaturas"
 
@@ -1511,127 +1371,122 @@ msgid "There is still a need to make Z calibration. Please follow the manual, ch
 msgstr "Todavia es necesario hacer una calibracion Z. Por favor siga el manual, capitulo Primeros pasos, seccion Calibracion del flujo."
 
 # 
-#: ultralcd.cpp:2752
+#: ultralcd.cpp:2908
 msgid "Total filament"
 msgstr "Filamento total:"
 
 # 
-#: ultralcd.cpp:2754
+#: ultralcd.cpp:2908
 msgid "Total print time"
 msgstr "Tiempo total :"
 
 # MSG_TUNE
-#: ultralcd.cpp:6015
+#: ultralcd.cpp:6719
 msgid "Tune"
 msgstr "Ajustar"
 
 # 
-#: ultralcd.cpp:4640
+#: ultralcd.cpp:4869
 msgid "Unload"
 msgstr "Descargar"
 
 # 
-#: ultralcd.cpp:5617
-msgid "Unload all"
-msgstr "Soltar todos fil."
-
-# 
-#: ultralcd.cpp:1994
+#: ultralcd.cpp:1820
 msgid "Total failures"
-msgstr ""
+msgstr "Fallos totales"
 
 # 
-#: ultralcd.cpp:2316
+#: ultralcd.cpp:2324
 msgid "to load filament"
-msgstr ""
+msgstr "para cargar el filamento"
 
 # 
-#: ultralcd.cpp:2317
+#: ultralcd.cpp:2328
 msgid "to unload filament"
-msgstr ""
+msgstr "para descargar el filamento"
 
 # MSG_UNLOAD_FILAMENT c=17
-#: messages.c:91
+#: messages.c:97
 msgid "Unload filament"
 msgstr "Soltar filamento"
 
 # MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:92
+#: messages.c:98
 msgid "Unloading filament"
 msgstr "Soltando filamento"
 
 # 
-#: ultralcd.cpp:1961
+#: ultralcd.cpp:1773
 msgid "Total"
 msgstr ""
 
 # MSG_USED c=19 r=1
-#: ultralcd.cpp:5334
+#: ultralcd.cpp:5908
 msgid "Used during print"
 msgstr "Usado en impresion"
 
 # MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2276
+#: ultralcd.cpp:2254
 msgid "Voltages"
 msgstr "Voltajes"
 
 # 
-#: ultralcd.cpp:2249
+#: ultralcd.cpp:2227
 msgid "unknown"
-msgstr ""
+msgstr "desconocido"
 
 # MSG_USERWAIT
-#: Marlin_main.cpp:4876
+#: Marlin_main.cpp:5263
 msgid "Wait for user..."
 msgstr "Esperando ordenes"
 
 # MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3255
+#: ultralcd.cpp:3458
 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:3219
+#: ultralcd.cpp:3422
 msgid "Waiting for PINDA probe cooling"
 msgstr "Esperando a que se enfrie la sonda PINDA"
 
 # 
-#: ultralcd.cpp:4639
+#: ultralcd.cpp:4868
 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:1508
+#: Marlin_main.cpp:1511
 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:1500
+#: Marlin_main.cpp:1503
 msgid "Warning: motherboard type changed."
 msgstr "Cuidado: el tipo de placa ha cambiado."
 
 # MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1504
+#: Marlin_main.cpp:1507
 msgid "Warning: printer type changed."
 msgstr "Cuidado: Ha cambiado el tipo de impresora."
 
 # MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3014
+#: Marlin_main.cpp:3054
 msgid "Was filament unload successful?"
 msgstr "?Se cargocon exito el filamento?"
 
 # MSG_SELFTEST_WIRINGERROR
-#: messages.c:80
+#: messages.c:85
 msgid "Wiring error"
 msgstr "Error de conexion"
 
 # MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5176
+#: ultralcd.cpp:5747
 msgid "Wizard"
 msgstr ""
 
 # MSG_XYZ_DETAILS c=19 r=1
-#: ultralcd.cpp:2265
+#: ultralcd.cpp:2243
 msgid "XYZ cal. details"
 msgstr "Detalles de calibracion XYZ"
 
@@ -1641,107 +1496,317 @@ msgid "XYZ calibration failed. Please consult the manual."
 msgstr "Calibracion XYZ fallada. Consulta el manual por favor."
 
 # MSG_YES
-#: messages.c:98
+#: messages.c:104
 msgid "Yes"
 msgstr "Si"
 
 # MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:97
+#: messages.c:103
 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:3715
+#: ultralcd.cpp:3922
 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:3712
+#: ultralcd.cpp:3919
 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!"
 
 # 
-#: ultralcd.cpp:4885
-msgid "X-correct"
-msgstr "X-correcion"
+#: ultralcd.cpp:5130
+msgid "X-correct:"
+msgstr "Corregir-X:"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3709
+#: ultralcd.cpp:3916
 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:3693
+#: ultralcd.cpp:3900
 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:3696
+#: ultralcd.cpp:3903
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "Calibrazion XYZ comprometida. Punto frontal derecho no alcanzable."
 
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8
-#: ultralcd.cpp:3699
-msgid "XYZ calibration compromised. Left front calibration point not reachable."
-msgstr "Calibrazion XYZ comprometida. Punto frontal izquierdo no alcanzable."
-
 # MSG_LOAD_ALL c=17
-#: ultralcd.cpp:5575
+#: ultralcd.cpp:6166
 msgid "Load all"
 msgstr "Intr. todos fil."
 
-# MSG_LOAD_FILAMENT_1 c=17
-#: ultralcd.cpp:5576
-msgid "Load filament 1"
-msgstr "Introducir fil. 1"
-
 # 
-#: ultralcd.cpp:3675
+#: ultralcd.cpp:3882
 msgid "XYZ calibration failed. Bed calibration point was not found."
 msgstr "Calibracion XYZ fallada. Puntos de calibracion en la base no encontrados."
 
 # 
-#: ultralcd.cpp:3681
+#: ultralcd.cpp:3888
 msgid "XYZ calibration failed. Front calibration points not reachable."
 msgstr "Calibracion XYZ fallada. Puntos frontales no alcanzables."
 
 # 
-#: ultralcd.cpp:3687
-msgid "XYZ calibration failed. Left front calibration point not reachable."
-msgstr "Calibracion XYZ fallada. Punto frontal izquierdo no alcanzable."
-
-# MSG_LOAD_FILAMENT_2 c=17
-#: ultralcd.cpp:5577
-msgid "Load filament 2"
-msgstr "Introducir fil. 2"
-
-# 
-#: ultralcd.cpp:3684
+#: ultralcd.cpp:3891
 msgid "XYZ calibration failed. Right front calibration point not reachable."
 msgstr "Calibracion XYZ fallad. Punto frontal derecho no alcanzable."
 
-# MSG_LOAD_FILAMENT_3 c=17
-#: ultralcd.cpp:5578
-msgid "Load filament 3"
-msgstr "Introducir fil. 3"
-
 # 
-#: ultralcd.cpp:2859
+#: ultralcd.cpp:3016
 msgid "Y distance from min"
 msgstr "Distancia en Y desde el min"
 
 # 
-#: ultralcd.cpp:4886
-msgid "Y-correct"
-msgstr "Y-correcion"
+#: ultralcd.cpp:5131
+msgid "Y-correct:"
+msgstr "Corregir-Y:"
+
+# MSG_OFF
+#: menu.cpp:426
+msgid " [off]"
+msgstr "[apag]"
+
+# 
+#: messages.c:57
+msgid "Back"
+msgstr "atras"
+
+# 
+#: ultralcd.cpp:5639
+msgid "Checks"
+msgstr "Comprobaciones"
+
+# 
+#: ultralcd.cpp:7973
+msgid "False triggering"
+msgstr "Falsa activacion"
+
+# 
+#: ultralcd.cpp:4030
+msgid "FINDA:"
+msgstr "FINDA:"
 
-# MSG_LOAD_FILAMENT_4 c=17
-#: ultralcd.cpp:5579
-msgid "Load filament 4"
-msgstr "Introducir fil. 4"
+# 
+#: ultralcd.cpp:5545
+msgid "Firmware   [none]"
+msgstr "Firmware[ninguno]"
+
+# 
+#: ultralcd.cpp:5551
+msgid "Firmware [strict]"
+msgstr "Firmware[estrict]"
+
+# 
+#: ultralcd.cpp:5548
+msgid "Firmware   [warn]"
+msgstr "Firmware  [aviso]"
+
+# 
+#: messages.c:87
+msgid "HW Setup"
+msgstr "Configuracion HW"
+
+# 
+#: ultralcd.cpp:4034
+msgid "IR:"
+msgstr ""
 
-# MSG_LOAD_FILAMENT_5 c=17
-#: ultralcd.cpp:5582
-msgid "Load filament 5"
-msgstr "Cargar filamento 5"
+# 
+#: ultralcd.cpp:7046
+msgid "Magnets comp.[N/A]"
+msgstr "Comp. imanes [N/A]"
+
+# 
+#: ultralcd.cpp:7044
+msgid "Magnets comp.[Off]"
+msgstr "Comp. imanes [Off]"
+
+# 
+#: ultralcd.cpp:7043
+msgid "Magnets comp. [On]"
+msgstr "Comp. imanes  [On]"
+
+# 
+#: ultralcd.cpp:7035
+msgid "Mesh         [3x3]"
+msgstr "Malla        [3x3]"
+
+# 
+#: ultralcd.cpp:7036
+msgid "Mesh         [7x7]"
+msgstr "Malla        [7x7]"
+
+# 
+#: ultralcd.cpp:5677
+msgid "Mesh bed leveling"
+msgstr "Nivelacion Malla Base"
+
+# 
+#: Marlin_main.cpp:856
+msgid "MK3S firmware detected on MK3 printer"
+msgstr "Firmware MK3S detectado en impresora MK3"
+
+# 
+#: ultralcd.cpp:5306
+msgid "MMU Mode [Normal]"
+msgstr "Modo MMU [Normal]"
+
+# 
+#: ultralcd.cpp:5307
+msgid "MMU Mode[Stealth]"
+msgstr "Modo MMU[Silenci]"
+
+# 
+#: ultralcd.cpp:4511
+msgid "Mode change in progress ..."
+msgstr "Cambio de modo progresando ..."
+
+# 
+#: ultralcd.cpp:5506
+msgid "Model      [none]"
+msgstr "Modelo  [ninguno]"
+
+# 
+#: ultralcd.cpp:5512
+msgid "Model    [strict]"
+msgstr "Modelo [estricto]"
+
+# 
+#: ultralcd.cpp:5509
+msgid "Model      [warn]"
+msgstr "Modelo    [aviso]"
+
+# 
+#: ultralcd.cpp:5467
+msgid "Nozzle d.  [0.25]"
+msgstr "Diam. nozzl[0.25]"
+
+# 
+#: ultralcd.cpp:5470
+msgid "Nozzle d.  [0.40]"
+msgstr "Diam. nozzl[0.40]"
+
+# 
+#: ultralcd.cpp:5473
+msgid "Nozzle d.  [0.60]"
+msgstr "Diam. nozzl[0.60]"
+
+# 
+#: ultralcd.cpp:5421
+msgid "Nozzle     [none]"
+msgstr "Nozzle  [ninguno]"
+
+# 
+#: ultralcd.cpp:5427
+msgid "Nozzle   [strict]"
+msgstr "Nozzle [estricto]"
+
+# 
+#: ultralcd.cpp:5424
+msgid "Nozzle     [warn]"
+msgstr "Nozzle    [aviso]"
+
+# 
+#: util.cpp:510
+msgid "G-code sliced for a different level. Continue?"
+msgstr "Codigo G laminado para un nivel diferente. ?Continuar?"
+
+# 
+#: util.cpp:516
+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:427
+msgid "G-code sliced for a different printer type. Continue?"
+msgstr "Codigo G laminado para un tipo de impresora diferente. ?Continuar?"
+
+# 
+#: util.cpp:433
+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:477
+msgid "G-code sliced for a newer firmware. Continue?"
+msgstr "Codigo G laminado para nuevo firmware. ?Continuar?"
+
+# 
+#: util.cpp:483
+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:4026
+msgid "PINDA:"
+msgstr "PINDA:"
+
+# 
+#: ultralcd.cpp:2465
+msgid "Preheating to cut"
+msgstr "Precalentando para laminar"
+
+# 
+#: ultralcd.cpp:2462
+msgid "Preheating to eject"
+msgstr "Precalentar para expulsar"
+
+# 
+#: util.cpp:390
+msgid "Printer nozzle diameter differs from the G-code. Continue?"
+msgstr "Diametro nozzle impresora difiere de cod.G. ?Continuar?"
+
+# 
+#: util.cpp:397
+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."
+
+# 
+#: ultralcd.cpp:6683
+msgid "Rename"
+msgstr "Renombrar"
+
+# 
+#: ultralcd.cpp:6679
+msgid "Select"
+msgstr "Seleccionar"
+
+# 
+#: ultralcd.cpp:2245
+msgid "Sensor info"
+msgstr "Info sensor"
+
+# 
+#: messages.c:58
+msgid "Sheet"
+msgstr "Lamina"
+
+# 
+#: sound.h:9
+msgid "Sound    [assist]"
+msgstr "Sonido [asistido]"
+
+# 
+#: ultralcd.cpp:5637
+msgid "Steel sheets"
+msgstr "Lamina de acero"
+
+# 
+#: ultralcd.cpp:5132
+msgid "Z-correct:"
+msgstr "Corregir-Z:"
+
+# 
+#: ultralcd.cpp:7038
+msgid "Z-probe nr.    [1]"
+msgstr "Z-sensor nr.   [1]"
+
+# 
+#: ultralcd.cpp:7040
+msgid "Z-probe nr.    [3]"
+msgstr "Z-sensor nr.   [3]"
 

+ 683 - 613
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: �t 7. úno 2019 14:47:01\n"
-"PO-Revision-Date: �t 7. úno 2019 14:47:01\n"
+"POT-Creation-Date: Sun, Sep 22, 2019 2:06:22 PM\n"
+"PO-Revision-Date: Sun, Sep 22, 2019 2:06:22 PM\n"
 "Language-Team: \n"
 "X-Generator: Poedit 2.0.7\n"
 "X-Poedit-SourceCharset: UTF-8\n"
@@ -21,74 +21,74 @@ msgid " of 4"
 msgstr "de 4"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:56
+#: messages.c:60
 msgid " of 9"
 msgstr "de 9"
 
 # MSG_MEASURED_OFFSET
-#: ultralcd.cpp:2914
+#: ultralcd.cpp:3089
 msgid "[0;0] point offset"
 msgstr "Offset point [0;0]"
 
 # MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
-#: ultralcd.cpp:4219
-msgid "\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode"
-msgstr "\x1b[2JLa detection de crash\x1b[1;0Hpeut etre active\x1b[2;0Hqu'en mode Normal"
+#: 
+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
-#: ultralcd.cpp:4231
-msgid "\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode"
-msgstr "\x1b[2JATTENTION :\x1b[1;0H Detection de crash\x1b[2;0H desactivee en mode\x1b[3;0H Furtif"
+#: 
+msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
+msgstr "ATTENTION:\x0aDetection de crash\x0adesactivee en\x0amode feutre"
 
 # 
-#: ultralcd.cpp:2353
+#: ultralcd.cpp:2472
 msgid ">Cancel"
-msgstr ""
+msgstr ">Annuler"
 
-# MSG_BABYSTEPPING_Z c=20
-#: ultralcd.cpp:3043
-msgid "Adjusting Z"
-msgstr "Ajustement de Z"
+# MSG_BABYSTEPPING_Z c=15
+#: ultralcd.cpp:3209
+msgid "Adjusting Z:"
+msgstr "Ajuster Z:"
 
 # MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:7459
+#: ultralcd.cpp:8295
 msgid "All correct      "
 msgstr "Tout est correct"
 
 # MSG_WIZARD_DONE c=20 r=8
-#: messages.c:95
+#: messages.c:101
 msgid "All is done. Happy printing!"
-msgstr "Tout est termine. Bonne impression !"
+msgstr "Tout est pret. Bonne impression!"
 
 # 
-#: ultralcd.cpp:2109
+#: ultralcd.cpp:2009
 msgid "Ambient"
 msgstr "Ambiant"
 
 # MSG_PRESS c=20
-#: ultralcd.cpp:2463
+#: ultralcd.cpp:2618
 msgid "and press the knob"
 msgstr "et pressez le bouton"
 
 # MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3330
+#: ultralcd.cpp:3529
 msgid "Are left and right Z~carriages all up?"
-msgstr "Chariots Z gauche et droite tout en haut?"
+msgstr "Z~carriages gauche + droite tout en haut?"
 
 # MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:4959
+#: ultralcd.cpp:5200
 msgid "SpoolJoin    [on]"
-msgstr "SpoolJoin    [on]"
+msgstr ""
 
 # 
-#: ultralcd.cpp:4955
+#: ultralcd.cpp:5196
 msgid "SpoolJoin   [N/A]"
-msgstr "SpoolJoin   [N/A]"
+msgstr ""
 
-#  MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:4963
+# MSG_AUTO_DEPLETE_OFF c=17 r=1
+#: ultralcd.cpp:5204
 msgid "SpoolJoin   [off]"
-msgstr "SpoolJoin   [off]"
+msgstr ""
 
 # MSG_AUTO_HOME
 #: messages.c:11
@@ -96,39 +96,39 @@ msgid "Auto home"
 msgstr "Mise a 0 des axes"
 
 # MSG_AUTOLOAD_FILAMENT c=17
-#: ultralcd.cpp:6091
+#: ultralcd.cpp:6822
 msgid "AutoLoad filament"
-msgstr "AutoCharge du filament"
+msgstr "Autocharge du fil."
 
 # MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4246
+#: ultralcd.cpp:4462
 msgid "Autoloading filament available only when filament sensor is turned on..."
-msgstr "AutoCharge du filament uniquement si le capteur de filament est active."
+msgstr "Chargement auto du filament uniquement si le capteur de filament est active."
 
 # MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2655
+#: ultralcd.cpp:2813
 msgid "Autoloading filament is active, just press the knob and insert filament..."
-msgstr "AutoCharge actif, appuyez sur le bouton et inserez le filament."
+msgstr "Chargement auto. du fil. active, appuyez sur le bouton et inserez le fil."
 
 # MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:7128
+#: ultralcd.cpp:7949
 msgid "Axis length"
 msgstr "Longueur de l'axe"
 
 # MSG_SELFTEST_AXIS
-#: ultralcd.cpp:7130
+#: ultralcd.cpp:7951
 msgid "Axis"
 msgstr "Axe"
 
 # MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:7072
+#: ultralcd.cpp:7893
 msgid "Bed / Heater"
 msgstr "Lit / Chauffage"
 
 # MSG_BED_DONE
 #: messages.c:16
 msgid "Bed done"
-msgstr "Lit termine"
+msgstr "Plateau termine"
 
 # MSG_BED_HEATING
 #: messages.c:17
@@ -136,24 +136,14 @@ msgid "Bed Heating"
 msgstr "Chauffe du lit"
 
 # MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5197
+#: ultralcd.cpp:5768
 msgid "Bed level correct"
-msgstr "Cor courbure du lit"
+msgstr "Corr. niveau plateau"
 
 # MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
 #: messages.c:18
 msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
-msgstr "Echec du nivellement. Capt. non declenche. Debris sur buse ? En attente d'un reset."
-
-# MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4
-#: Marlin_main.cpp:4508
-msgid "Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset."
-msgstr "Echec du nivellement. Capteur deconnecte ou cable casse. En attente d'un reset."
-
-# MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4
-#: Marlin_main.cpp:4512
-msgid "Bed leveling failed. Sensor triggered too high. Waiting for reset."
-msgstr "Echec du nivellement. Capt. declenche trop trop haut. En attente d'un reset."
+msgstr "Echec bed leveling. Capt. non declenche. Debris sur buse? En attente d'un reset."
 
 # MSG_BED
 #: messages.c:15
@@ -161,22 +151,22 @@ msgid "Bed"
 msgstr "Lit"
 
 # MSG_MENU_BELT_STATUS c=15 r=1
-#: ultralcd.cpp:2135
+#: ultralcd.cpp:2059
 msgid "Belt status"
 msgstr "Statut courroie"
 
 # MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:67
+#: messages.c:71
 msgid "Blackout occurred. Recover print?"
-msgstr "Coupure detectee. Recup. impression ?"
+msgstr "Coupure detectee. Reprendre impression?"
 
 # 
-#: ultralcd.cpp:7461
+#: ultralcd.cpp:8297
 msgid "Calibrating home"
-msgstr ""
+msgstr "Calib. mise a 0"
 
 # MSG_CALIBRATE_BED
-#: ultralcd.cpp:5186
+#: ultralcd.cpp:5757
 msgid "Calibrate XYZ"
 msgstr "Calibrer XYZ"
 
@@ -186,52 +176,47 @@ msgid "Calibrate Z"
 msgstr "Calibrer Z"
 
 # MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4427
+#: ultralcd.cpp:4654
 msgid "Calibrate"
 msgstr "Calibrer"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3290
+#: ultralcd.cpp:3492
 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 monter le chariot de l'axe Z jusqu'aux butees. Cliquez une fois fait."
+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 de Z"
+msgstr "Calibration Z"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3290
+#: ultralcd.cpp:3492
 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 monter le chariot de l'axe Z jusqu'aux butees. Cliquez une fois fait."
+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:778
+#: ultralcd.cpp:816
 msgid "Calibration done"
 msgstr "Calibration terminee"
 
 # MSG_MENU_CALIBRATION
-#: messages.c:57
+#: messages.c:61
 msgid "Calibration"
-msgstr "Calibration"
+msgstr ""
 
 # 
-#: ultralcd.cpp:4552
+#: ultralcd.cpp:4781
 msgid "Cancel"
 msgstr "Annuler"
 
-# MSG_SD_INSERTED
-#: 
-msgid "Card inserted"
-msgstr "Carte  inseree"
-
 # MSG_SD_REMOVED
-#: ultralcd.cpp:7819
+#: ultralcd.cpp:8679
 msgid "Card removed"
 msgstr "Carte retiree"
 
 # MSG_NOT_COLOR
-#: ultralcd.cpp:2563
+#: ultralcd.cpp:2718
 msgid "Color not correct"
 msgstr "Couleur incorrecte"
 
@@ -241,14 +226,14 @@ msgid "Cooldown"
 msgstr "Refroidissement"
 
 # 
-#: ultralcd.cpp:4360
+#: ultralcd.cpp:4587
 msgid "Copy selected language?"
 msgstr "Copier la langue selectionne?"
 
 # MSG_CRASHDETECT_ON
 #: messages.c:27
 msgid "Crash det.   [on]"
-msgstr "Detect. crash[on]"
+msgstr "Detect.crash [on]"
 
 # MSG_CRASHDETECT_NA
 #: messages.c:25
@@ -266,147 +251,97 @@ msgid "Crash detected."
 msgstr "Crash detecte."
 
 # 
-#: Marlin_main.cpp:608
+#: Marlin_main.cpp:600
 msgid "Crash detected. Resume print?"
-msgstr "Crash detecte. Poursuivre l'impression ?"
+msgstr "Crash detecte. Poursuivre l'impression?"
 
 # 
-#: ultralcd.cpp:2013
+#: ultralcd.cpp:1853
 msgid "Crash"
-msgstr "Colision"
+msgstr ""
 
 # MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:5335
+#: ultralcd.cpp:5909
 msgid "Current"
 msgstr "Actuel"
 
 # MSG_DATE c=17 r=1
-#: ultralcd.cpp:2235
+#: ultralcd.cpp:2213
 msgid "Date:"
-msgstr "Date :"
+msgstr "Date:"
 
 # MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5093
+#: ultralcd.cpp:5654
 msgid "Disable steppers"
 msgstr "Desactiver moteurs"
 
 # MSG_BABYSTEP_Z_NOT_SET c=20 r=12
 #: messages.c:14
 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 lit n'a pas encore ete reglee. Suivez le manuel, chapitre Premiers pas, section Calibration de la premiere couche."
+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_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:4828
+#: ultralcd.cpp:5070
 msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
-msgstr "Voulez-vous repeter la derniere etape pour reajuster la distance entre la buse et le lit chauffant ?"
+msgstr "Voulez-vous repeter la derniere etape pour reajuster la distance entre la buse et le plateau chauffant?"
 
-# MSG_EXTRUDER_CORRECTION c=9
-#: ultralcd.cpp:4889
-msgid "E-correct"
-msgstr "Correct-E"
+# MSG_EXTRUDER_CORRECTION c=10
+#: ultralcd.cpp:5134
+msgid "E-correct:"
+msgstr "Correct-E:"
 
 # MSG_EJECT_FILAMENT c=17 r=1
-#: ultralcd.cpp:6081
+#: messages.c:53
 msgid "Eject filament"
-msgstr "Ejecter le fil"
-
-# MSG_EJECT_FILAMENT1 c=17 r=1
-#: ultralcd.cpp:5603
-msgid "Eject filament 1"
-msgstr "Ejecter fil. 1"
-
-# MSG_EJECT_FILAMENT2 c=17 r=1
-#: ultralcd.cpp:5604
-msgid "Eject filament 2"
-msgstr "Ejecter fil. 2"
-
-# MSG_EJECT_FILAMENT3 c=17 r=1
-#: ultralcd.cpp:5605
-msgid "Eject filament 3"
-msgstr "Ejecter fil. 3"
-
-# MSG_EJECT_FILAMENT4 c=17 r=1
-#: ultralcd.cpp:5606
-msgid "Eject filament 4"
-msgstr "Ejecter fil. 4"
-
-# MSG_EJECT_FILAMENT5 c=17 r=1
-#: ultralcd.cpp:5607
-msgid "Eject filament 5"
-msgstr "Ejecter fil. 5"
+msgstr "Remonter le fil."
 
 # 
-#: ultralcd.cpp:4640
+#: ultralcd.cpp:4869
 msgid "Eject"
-msgstr "Ejecter"
+msgstr "Remonter"
 
 # MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1339
+#: mmu.cpp:1434
 msgid "Ejecting filament"
-msgstr "Filament en cours d'ejection"
+msgstr "Le fil. remonte"
 
 # MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
-#: ultralcd.cpp:7096
+#: ultralcd.cpp:7917
 msgid "Endstop not hit"
 msgstr "Butee non atteinte"
 
 # MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:7090
+#: ultralcd.cpp:7911
 msgid "Endstop"
 msgstr "Butee"
 
 # MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:7078
+#: ultralcd.cpp:7899
 msgid "Endstops"
 msgstr "Butees"
 
 # MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6132
+#: ultralcd.cpp:6859
 msgid "Error - static memory has been overwritten"
 msgstr "Erreur - la memoire statique a ete ecrasee"
 
 # MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4259
+#: ultralcd.cpp:4475
 msgid "ERROR: Filament sensor is not responding, please check connection."
-msgstr "ERREUR : Le capteur de filament ne repond pas, verifiez la connexion."
+msgstr "ERREUR: Le capteur de filament ne repond pas, verifiez le branchement."
 
 # MSG_ERROR
 #: messages.c:28
 msgid "ERROR:"
-msgstr "ERREUR :"
-
-# 
-#: Marlin_main.cpp:1006
-msgid "External SPI flash W25X20CL not responding."
-msgstr "La Flash SPI externe W25X20CL ne repond pas."
-
-# 
-#: ultralcd.cpp:5633
-msgid "Extruder 1"
-msgstr "Extrudeur 1"
-
-# 
-#: ultralcd.cpp:5634
-msgid "Extruder 2"
-msgstr "Extrudeur 2"
-
-# 
-#: ultralcd.cpp:5635
-msgid "Extruder 3"
-msgstr "Extrudeur 3"
-
-# 
-#: ultralcd.cpp:5636
-msgid "Extruder 4"
-msgstr "Extrudeur 4"
+msgstr "ERREUR:"
 
 # MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:7468
+#: ultralcd.cpp:8304
 msgid "Extruder fan:"
 msgstr "Ventilo extrudeur:"
 
 # MSG_INFO_EXTRUDER c=15 r=1
-#: ultralcd.cpp:2266
+#: ultralcd.cpp:2244
 msgid "Extruder info"
 msgstr "Infos extrudeur"
 
@@ -416,62 +351,57 @@ msgid "Extruder"
 msgstr "Extrudeur"
 
 # 
-#: ultralcd.cpp:6115
+#: ultralcd.cpp:6846
 msgid "Fail stats MMU"
-msgstr ""
+msgstr "Stat. d'echec MMU"
 
 # MSG_FSENS_AUTOLOAD_ON c=17 r=1
-#: ultralcd.cpp:4927
+#: ultralcd.cpp:5168
 msgid "F. autoload  [on]"
-msgstr "AutoCharg F  [on]"
+msgstr "Autochargeur [on]"
 
 # MSG_FSENS_AUTOLOAD_NA c=17 r=1
 #: messages.c:43
 msgid "F. autoload [N/A]"
-msgstr "AutoCharg F [N/A]"
+msgstr "Autochargeur[N/A]"
 
 # MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-#: ultralcd.cpp:4929
+#: ultralcd.cpp:5170
 msgid "F. autoload [off]"
-msgstr "AutoCharg F [off]"
+msgstr "Autochargeur[off]"
 
 # 
-#: ultralcd.cpp:6112
+#: ultralcd.cpp:6843
 msgid "Fail stats"
-msgstr "Statist. d'echec"
+msgstr "Stat. d'echec"
 
 # MSG_FAN_SPEED c=14
 #: messages.c:31
 msgid "Fan speed"
-msgstr "Vitesse ventil"
+msgstr "Vitesse vent."
 
 # MSG_SELFTEST_FAN c=20
-#: messages.c:74
+#: messages.c:78
 msgid "Fan test"
-msgstr "Test ventilateur"
+msgstr "Test du ventilateur"
 
 # MSG_FANS_CHECK_ON c=17 r=1
-#: ultralcd.cpp:5100
+#: ultralcd.cpp:5663
 msgid "Fans check   [on]"
-msgstr "Verif venti  [on]"
+msgstr "Verif vent.  [on]"
 
 # MSG_FANS_CHECK_OFF c=17 r=1
-#: ultralcd.cpp:5102
+#: ultralcd.cpp:5665
 msgid "Fans check  [off]"
-msgstr "Verif venti [off]"
+msgstr "Verif vent. [off]"
 
 # MSG_FSENSOR_ON
 #: messages.c:45
 msgid "Fil. sensor  [on]"
 msgstr "Capteur Fil. [on]"
 
-# MSG_RESPONSE_POOR c=20 r=2
-#: Marlin_main.cpp:3146
-msgid "Fil. sensor response is poor, disable it?"
-msgstr "La reponse du capteur de fil. est pauvre, le desactiver ?"
-
 # MSG_FSENSOR_NA
-#: ultralcd.cpp:4907
+#: ultralcd.cpp:5148
 msgid "Fil. sensor [N/A]"
 msgstr "Capteur Fil.[N/A]"
 
@@ -481,99 +411,94 @@ msgid "Fil. sensor [off]"
 msgstr "Capteur Fil.[off]"
 
 # 
-#: ultralcd.cpp:2013
+#: ultralcd.cpp:1852
 msgid "Filam. runouts"
-msgstr "Manque de flm"
+msgstr "Fins de filament"
 
 # MSG_FILAMENT_CLEAN c=20 r=2
 #: messages.c:32
 msgid "Filament extruding & with correct color?"
-msgstr "Filament extrude et avec bonne couleur ?"
+msgstr "Filament extrude et avec bonne couleur?"
 
 # MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2559
+#: ultralcd.cpp:2714
 msgid "Filament not loaded"
 msgstr "Filament non charge"
 
 # MSG_FILAMENT_SENSOR c=20
-#: ultralcd.cpp:7144
+#: messages.c:84
 msgid "Filament sensor"
 msgstr "Capteur de filament"
 
-# MSG_SELFTEST_FILAMENT_SENSOR c=18
-#: ultralcd.cpp:7477
-msgid "Filament sensor:"
-msgstr "Capteur filament :"
-
 # MSG_FILAMENT_USED c=19 r=1
-#: ultralcd.cpp:2725
+#: ultralcd.cpp:2885
 msgid "Filament used"
 msgstr "Filament utilise"
 
 # MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2727
+#: ultralcd.cpp:2886
 msgid "Print time"
 msgstr "Temps d'impression"
 
 # MSG_FILE_INCOMPLETE c=20 r=2
-#: ultralcd.cpp:7595
+#: ultralcd.cpp:8432
 msgid "File incomplete. Continue anyway?"
-msgstr "Fichier incomplet. Continuer qd meme ?"
+msgstr "Fichier incomplet. Continuer qd meme?"
 
 # MSG_FINISHING_MOVEMENTS c=20 r=1
 #: messages.c:40
 msgid "Finishing movements"
-msgstr "Mouvements de fin"
+msgstr "Mouvement final"
 
 # MSG_V2_CALIBRATION c=17 r=1
-#: ultralcd.cpp:5177
+#: messages.c:105
 msgid "First layer cal."
 msgstr "Cal. 1ere couche"
 
 # MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:4740
+#: ultralcd.cpp:4982
 msgid "First, I will run the selftest to check most common assembly problems."
-msgstr "D'abord, je vais lancer l'autotest pour verifier les problemes d'assemblage les plus communs."
+msgstr "D'abord, je vais lancer le Auto-test pour verifier les problemes d'assemblage les plus communs."
 
 # 
-#: mmu.cpp:640
+#: mmu.cpp:724
 msgid "Fix the issue and then press button on MMU unit."
-msgstr "Corrigez le probleme et appuyez sur le bouton de l'unite MMU."
+msgstr "Corrigez le probleme et appuyez sur le bouton sur la MMU."
 
 # MSG_FLOW
-#: ultralcd.cpp:6205
+#: ultralcd.cpp:6932
 msgid "Flow"
 msgstr "Flux"
 
 # MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2228
+#: ultralcd.cpp:2206
 msgid "forum.prusa3d.com"
 msgstr ""
 
 # MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:71
+#: messages.c:75
 msgid "Front print fan?"
-msgstr "Ventilo impr avant ?"
+msgstr "Ventilo impr avant?"
 
 # MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3101
+#: ultralcd.cpp:3294
 msgid "Front side[um]"
 msgstr "Avant [um]"
 
 # MSG_SELFTEST_FANS
-#: ultralcd.cpp:7136
+#: ultralcd.cpp:7957
 msgid "Front/left fans"
 msgstr "Ventilos avt/gauche"
 
 # MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:7066
+#: ultralcd.cpp:7887
 msgid "Heater/Thermistor"
 msgstr "Chauffage/Thermistor"
 
 # MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:7475
+#: Marlin_main.cpp:8467
 msgid "Heating disabled by safety timer."
-msgstr "Chauffe desactivee par le compteur de securite."
+msgstr "Chauffage desactivee par le compteur de securite."
 
 # MSG_HEATING_COMPLETE c=20
 #: messages.c:47
@@ -586,79 +511,74 @@ msgid "Heating"
 msgstr "Chauffe"
 
 # MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:4719
+#: ultralcd.cpp:4961
 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 ?"
+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:2229
+#: ultralcd.cpp:2207
 msgid "howto.prusa3d.com"
 msgstr ""
 
-# 
-#: ultralcd.cpp:6087
-msgid "Change extruder"
-msgstr "Changer extrudeur"
-
 # MSG_FILAMENTCHANGE
 #: messages.c:37
 msgid "Change filament"
 msgstr "Changer filament"
 
 # MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2474
+#: ultralcd.cpp:2629
 msgid "Change success!"
 msgstr "Changement reussi!"
 
 # MSG_CORRECTLY c=20
-#: ultralcd.cpp:2551
+#: ultralcd.cpp:2706
 msgid "Changed correctly?"
 msgstr "Change correctement?"
 
 # MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:77
+#: messages.c:81
 msgid "Checking bed     "
 msgstr "Verification du lit"
 
 # MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:7450
+#: ultralcd.cpp:8286
 msgid "Checking endstops"
-msgstr "Verifications butees"
+msgstr "Verification butees"
 
 # MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:7456
+#: ultralcd.cpp:8292
 msgid "Checking hotend  "
-msgstr "Verif. tete impr."
+msgstr "Verif. du hotend"
 
 # MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:78
+#: messages.c:82
 msgid "Checking sensors "
 msgstr "Verif. des capteurs"
 
 # MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:7451
+#: ultralcd.cpp:8287
 msgid "Checking X axis  "
 msgstr "Verification axe X"
 
 # MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:7452
+#: ultralcd.cpp:8288
 msgid "Checking Y axis  "
 msgstr "Verification axe Y"
 
 # MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:7453
+#: ultralcd.cpp:8289
 msgid "Checking Z axis  "
 msgstr "Verification axe Z"
 
 # MSG_CHOOSE_EXTRUDER c=20 r=1
 #: messages.c:49
 msgid "Choose extruder:"
-msgstr "Choisir extrudeur :"
+msgstr "Choisir extrudeur:"
 
 # MSG_CHOOSE_FILAMENT c=20 r=1
 #: messages.c:50
 msgid "Choose filament:"
-msgstr "Choix du filament :"
+msgstr "Choix du filament:"
 
 # MSG_FILAMENT c=17 r=1
 #: messages.c:30
@@ -666,119 +586,89 @@ msgid "Filament"
 msgstr ""
 
 # MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:4749
+#: ultralcd.cpp:4991
 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."
+msgstr "Je vais maintenant lancer la calibration XYZ. Cela prendra 12 min environ."
 
 # MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:4757
+#: ultralcd.cpp:4999
 msgid "I will run z calibration now."
-msgstr "Je vais maintenant lancer la calibration z."
+msgstr "Je vais maintenant lancer la calibration Z."
 
 # MSG_WIZARD_V2_CAL_2 c=20 r=12
-#: ultralcd.cpp:4822
+#: ultralcd.cpp:5064
 msgid "I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."
-msgstr "Je vais commencer a imprimer une ligne et vous baisserez au fur et a mesure la buse en tournant le bouton jusqu'a atteindre la hauteur optimale. Regardez les photos dans notre manuel au chapitre Calibration."
-
-# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: mesh_bed_calibration.cpp:2481
-msgid "Improving bed calibration point"
-msgstr "Amelioration du point de calibration du lit"
+msgstr "Je vais commencer a imprimer une ligne et vous baisserez au fur et a mesure la buse en tournant le bouton jusqu'a atteindre la hauteur optimale. Regardez les photos dans notre manuel au chapitre Calibration"
 
 # MSG_WATCH
-#: messages.c:93
+#: messages.c:99
 msgid "Info screen"
 msgstr "Ecran d'info"
 
-# MSG_FILAMENT_LOADING_T0 c=20 r=4
-#: messages.c:33
-msgid "Insert filament into extruder 1. Click when done."
-msgstr "Inserez le filament dans l'extrudeur 1. Cliquez une fois fait."
-
-# MSG_FILAMENT_LOADING_T1 c=20 r=4
-#: messages.c:34
-msgid "Insert filament into extruder 2. Click when done."
-msgstr "Inserez le filament dans l'extrudeur 2. Cliquez une fois fait."
-
-# MSG_FILAMENT_LOADING_T2 c=20 r=4
-#: messages.c:35
-msgid "Insert filament into extruder 3. Click when done."
-msgstr "Inserez le filament dans l'extrudeur 3. Cliquez une fois fait."
-
-# MSG_FILAMENT_LOADING_T3 c=20 r=4
-#: messages.c:36
-msgid "Insert filament into extruder 4. Click when done."
-msgstr "Inserez le filament dans l'extrudeur 4. Cliquez une fois fait."
-
 # 
-#: ultralcd.cpp:4782
+#: ultralcd.cpp:5024
 msgid "Is filament 1 loaded?"
-msgstr "Le filament 1 est-il charge ?"
+msgstr "Fil.1 est-il charge?"
 
 # MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2459
+#: ultralcd.cpp:2614
 msgid "Insert filament"
 msgstr "Inserez le filament"
 
 # MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4785
+#: ultralcd.cpp:5027
 msgid "Is filament loaded?"
-msgstr "Le filament est-il charge ?"
+msgstr "Fil. est-il charge?"
 
 # MSG_WIZARD_PLA_FILAMENT c=20 r=2
-#: ultralcd.cpp:4816
+#: ultralcd.cpp:5058
 msgid "Is it PLA filament?"
-msgstr "Est-ce du filament PLA ?"
+msgstr "Est-ce du filament PLA?"
 
 # MSG_PLA_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4561
+#: ultralcd.cpp:4790
 msgid "Is PLA filament loaded?"
-msgstr "Le filament PLA est-il charge ?"
+msgstr "Fil. PLA est-il charge?"
 
 # MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:86
+#: messages.c:92
 msgid "Is steel sheet on heatbed?"
-msgstr "Feuille d'acier sur le lit chauffant ?"
-
-# MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20
-#: mesh_bed_calibration.cpp:2223
-msgid "Iteration "
-msgstr ""
+msgstr "Plaque d'impression sur le lit chauffant?"
 
 # 
-#: ultralcd.cpp:1976
+#: ultralcd.cpp:1795
 msgid "Last print failures"
-msgstr "Echecs d'impr. dern."
+msgstr "Echecs derniere imp."
 
 # 
-#: ultralcd.cpp:1960
+#: ultralcd.cpp:1772
 msgid "Last print"
-msgstr "Derniere impress."
+msgstr "Derniere impres."
 
 # MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:72
+#: messages.c:76
 msgid "Left hotend fan?"
 msgstr "Ventilo tete gauche?"
 
 # 
-#: ultralcd.cpp:2861
+#: ultralcd.cpp:3018
 msgid "Left"
 msgstr "Gauche"
 
 # MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3099
+#: ultralcd.cpp:3292
 msgid "Left side [um]"
 msgstr "Gauche [um]"
 
 # 
-#: ultralcd.cpp:5107
+#: ultralcd.cpp:5680
 msgid "Lin. correction"
 msgstr "Correction lin."
 
 # MSG_BABYSTEP_Z
 #: messages.c:13
 msgid "Live adjust Z"
-msgstr "Ajuster Z en dir"
+msgstr "Ajuster Z en dir."
 
 # MSG_LOAD_FILAMENT c=17
 #: messages.c:51
@@ -786,249 +676,244 @@ msgid "Load filament"
 msgstr "Charger filament"
 
 # MSG_LOADING_COLOR
-#: ultralcd.cpp:2499
+#: ultralcd.cpp:2654
 msgid "Loading color"
-msgstr "Chargement couleur"
+msgstr "Charg. de la couleur"
 
 # MSG_LOADING_FILAMENT c=20
 #: messages.c:52
 msgid "Loading filament"
-msgstr "Chargement filament"
+msgstr "Chargement du fil."
 
 # MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:7120
+#: ultralcd.cpp:7941
 msgid "Loose pulley"
 msgstr "Poulie lache"
 
 # 
-#: ultralcd.cpp:6079
+#: ultralcd.cpp:6805
 msgid "Load to nozzle"
-msgstr "Charger le fil"
+msgstr "Charger la buse"
 
 # MSG_M117_V2_CALIBRATION c=25 r=1
-#: messages.c:53
+#: messages.c:55
 msgid "M117 First layer cal."
 msgstr "M117 Cal. 1ere couche"
 
 # MSG_MAIN
-#: messages.c:54
+#: messages.c:56
 msgid "Main"
-msgstr "Principal"
+msgstr "Menu principal"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:55
+#: messages.c:59
 msgid "Measuring reference height of calibration point"
 msgstr "Mesure de la hauteur de reference du point de calibration"
 
 # MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5192
+#: ultralcd.cpp:5763
 msgid "Mesh Bed Leveling"
-msgstr "Nivelage du lit"
+msgstr ""
 
 # MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:676
+#: mmu.cpp:762
 msgid "MMU OK. Resuming position..."
 msgstr "MMU OK. Reprise de la position ..."
 
 # MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:669
+#: mmu.cpp:755
 msgid "MMU OK. Resuming temperature..."
-msgstr "MMU OK. Reprise de la temperature ..."
+msgstr "MMU OK. Rechauffage de la buse..."
 
 # 
-#: ultralcd.cpp:2896
+#: ultralcd.cpp:3059
 msgid "Measured skew"
-msgstr "Deviation mesuree"
+msgstr "Deviat.mesuree"
 
 # 
-#: ultralcd.cpp:1977
+#: ultralcd.cpp:1796
 msgid "MMU fails"
-msgstr ""
+msgstr "Echecs MMU"
 
 # 
-#: mmu.cpp:1399
+#: mmu.cpp:1613
 msgid "MMU load failed     "
-msgstr ""
+msgstr "Echec chargement MMU"
 
 # 
-#: ultralcd.cpp:1977
+#: ultralcd.cpp:1797
 msgid "MMU load fails"
-msgstr ""
+msgstr "Echecs charg. MMU"
 
 # MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:687
+#: mmu.cpp:773
 msgid "MMU OK. Resuming..."
 msgstr "MMU OK. Reprise ..."
 
 # MSG_STEALTH_MODE_OFF
-#: messages.c:84
+#: messages.c:90
 msgid "Mode     [Normal]"
-msgstr "Mode     [Normal]"
+msgstr ""
 
 # MSG_SILENT_MODE_ON
-#: messages.c:83
+#: messages.c:89
 msgid "Mode     [silent]"
-msgstr "Mode [silencieux]"
+msgstr "Mode     [feutre]"
 
 # 
-#: mmu.cpp:635
+#: mmu.cpp:719
 msgid "MMU needs user attention."
 msgstr "Le MMU necessite l'attention de l'utilisateur."
 
 # 
-#: ultralcd.cpp:1994
+#: ultralcd.cpp:1823
 msgid "MMU power fails"
-msgstr ""
+msgstr "Echecs alim. MMU"
 
 # MSG_STEALTH_MODE_ON
-#: messages.c:85
+#: messages.c:91
 msgid "Mode    [Stealth]"
-msgstr "Mode     [Furtif]"
+msgstr "Mode     [furtif]"
 
 # MSG_AUTO_MODE_ON
 #: messages.c:12
 msgid "Mode [auto power]"
-msgstr "Mode[puissan.aut]"
+msgstr "Mode [puiss.auto]"
 
 # MSG_SILENT_MODE_OFF
-#: messages.c:82
+#: messages.c:88
 msgid "Mode [high power]"
 msgstr "Mode[haute puiss]"
 
 # 
-#: ultralcd.cpp:2241
+#: ultralcd.cpp:2219
 msgid "MMU2 connected"
-msgstr "MMU2 connectée"
+msgstr "MMU2 connecte"
 
 # MSG_SELFTEST_MOTOR
-#: messages.c:79
+#: messages.c:83
 msgid "Motor"
 msgstr "Moteur"
 
 # MSG_MOVE_AXIS
-#: ultralcd.cpp:5091
+#: ultralcd.cpp:5652
 msgid "Move axis"
 msgstr "Deplacer l'axe"
 
 # MSG_MOVE_X
-#: ultralcd.cpp:4164
+#: ultralcd.cpp:4378
 msgid "Move X"
 msgstr "Deplacer X"
 
 # MSG_MOVE_Y
-#: ultralcd.cpp:4165
+#: ultralcd.cpp:4379
 msgid "Move Y"
 msgstr "Deplacer Y"
 
 # MSG_MOVE_Z
-#: ultralcd.cpp:4166
+#: ultralcd.cpp:4380
 msgid "Move Z"
 msgstr "Deplacer Z"
 
 # MSG_NO_MOVE
-#: Marlin_main.cpp:4908
+#: Marlin_main.cpp:5292
 msgid "No move."
 msgstr "Pas de mouvement."
 
 # MSG_NO_CARD
-#: ultralcd.cpp:6059
+#: ultralcd.cpp:6772
 msgid "No SD card"
 msgstr "Pas de carte SD"
 
 # 
-#: ultralcd.cpp:2867
+#: ultralcd.cpp:3024
 msgid "N/A"
 msgstr ""
 
 # MSG_NO
-#: messages.c:58
+#: messages.c:62
 msgid "No"
 msgstr "Non"
 
 # MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:7068
+#: ultralcd.cpp:7889
 msgid "Not connected"
 msgstr "Non connecte"
 
 # 
 #: util.cpp:293
 msgid "New firmware version available:"
-msgstr "Nouvelle version de firmware disponible :"
-
-# 
-#: 
-msgid "No "
-msgstr "Non"
+msgstr "Nouvelle version de firmware disponible:"
 
 # MSG_SELFTEST_FAN_NO c=19
-#: messages.c:75
+#: messages.c:79
 msgid "Not spinning"
 msgstr "Ne tourne pas"
 
 # MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4821
+#: ultralcd.cpp:5063
 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 le surface du lit chauffant."
+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:4765
+#: ultralcd.cpp:5007
 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:63
 msgid "Nozzle"
 msgstr "Buse"
 
 # MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
-#: Marlin_main.cpp:1516
+#: Marlin_main.cpp:1519
 msgid "Old settings found. Default PID, Esteps etc. will be set."
-msgstr "Anciens reglages trouves. Le PID, les Esteps etc. par defaut seront pris."
+msgstr "Anciens reglages trouves. Le PID, les Esteps etc. par defaut seront regles"
 
 # 
-#: ultralcd.cpp:4756
+#: ultralcd.cpp:4998
 msgid "Now remove the test print from steel sheet."
-msgstr "Retirez maintenant l'impression de test de la feuille d'acier."
+msgstr "Retirez maintenant l'impression de test de la plaque en acier."
 
 # 
-#: ultralcd.cpp:1919
+#: ultralcd.cpp:1722
 msgid "Nozzle FAN"
-msgstr "Vent buse"
+msgstr "Vent. buse"
 
 # MSG_PAUSE_PRINT
-#: ultralcd.cpp:6029
+#: ultralcd.cpp:6735
 msgid "Pause print"
-msgstr "Pause de l'impres"
+msgstr "Pause de l'impr."
 
 # MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1741
+#: ultralcd.cpp:1606
 msgid "PID cal.           "
 msgstr "Calib. PID"
 
 # MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1747
+#: ultralcd.cpp:1612
 msgid "PID cal. finished"
 msgstr "Calib. PID terminee"
 
 # MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5198
+#: ultralcd.cpp:5769
 msgid "PID calibration"
 msgstr "Calibration PID"
 
 # MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:808
+#: ultralcd.cpp:846
 msgid "PINDA Heating"
 msgstr "Chauffe de la PINDA"
 
 # MSG_PAPER c=20 r=8
-#: messages.c:60
+#: messages.c:64
 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 de suite l'imprimante."
+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:4830
+#: ultralcd.cpp:5072
 msgid "Please clean heatbed and then press the knob."
-msgstr "Nettoyez le lit chauffant et appuyez sur le bouton."
+msgstr "Nettoyez la plaque en acier et appuyez sur le bouton."
 
 # MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
 #: messages.c:22
@@ -1036,92 +921,92 @@ 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:7060
+#: ultralcd.cpp:7881
 msgid "Please check :"
-msgstr "Verifiez :"
+msgstr "Verifiez:"
 
 # MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:94
+#: messages.c:100
 msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
-msgstr "Merci de verifier notre manuel et de corriger le probleme. Poursuivez alors l'assistant en redemarrant l'imprimante."
+msgstr "Merci de consulter notre manuel et de corriger le probleme. Poursuivez alors l'assistant en redemarrant l'imprimante."
 
 # MSG_WIZARD_LOAD_FILAMENT c=20 r=8
-#: ultralcd.cpp:4664
+#: ultralcd.cpp:4894
 msgid "Please insert PLA filament to the extruder, then press knob to load it."
-msgstr "Inserez du filament PLA dans l'extrudeur, puis appuyez sur le bouton pour le charger."
+msgstr "Inserez du filament PLA dans l'extrudeur puis appuyez sur le bouton pour le charger."
 
 # MSG_PLEASE_LOAD_PLA c=20 r=4
-#: ultralcd.cpp:4566
+#: ultralcd.cpp:4795
 msgid "Please load PLA filament first."
 msgstr "Chargez d'abord le filament PLA."
 
 # MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3025
+#: Marlin_main.cpp:3064
 msgid "Please open idler and remove filament manually."
-msgstr "Ouvrez le support de poulie et retirez le filament manuellement."
+msgstr "Ouvrez l'idler et retirez le filament manuellement."
 
 # MSG_PLACE_STEEL_SHEET c=20 r=4
-#: messages.c:61
+#: messages.c:65
 msgid "Please place steel sheet on heatbed."
-msgstr "Placez la feuille d'acier sur le lit chauffant."
+msgstr "Placez la plaque en acier sur le plateau chauffant."
 
 # MSG_PRESS_TO_UNLOAD c=20 r=4
-#: messages.c:64
+#: messages.c:68
 msgid "Please press the knob to unload filament"
 msgstr "Appuyez sur le bouton pour decharger le filament"
 
 # 
-#: ultralcd.cpp:4660
+#: ultralcd.cpp:4889
 msgid "Please insert PLA filament to the first tube of MMU, then press the knob to load it."
-msgstr "Veuillez inserer du filament PLA dans le premier tube du MMU, et pressez sur le bouton pour le charger."
+msgstr "Inserez du PLA dans le 1er tube du MMU, appuyez sur le bouton pour le charger."
 
 # MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:66
+#: messages.c:70
 msgid "Please pull out filament immediately"
 msgstr "Retirez immediatement le filament"
 
 # MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1347
+#: mmu.cpp:1440
 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:74
 msgid "Please remove steel sheet from heatbed."
-msgstr "Retirez la feuille d'acier du lit chauffant"
+msgstr "Retirez la plaque en acier du plateau chauffant."
 
 # MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4052
+#: Marlin_main.cpp:4355
 msgid "Please run XYZ calibration first."
 msgstr "Veuillez d'abord lancer la calibration XYZ."
 
 # MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1293
+#: mmu.cpp:1359
 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:66
 msgid "Please wait"
 msgstr "Merci de patienter"
 
 # 
-#: ultralcd.cpp:4755
+#: ultralcd.cpp:4997
 msgid "Please remove shipping helpers first."
-msgstr "Veuillez retirer d'abord les protections d'envoi."
+msgstr "Retirez d'abord les protections de transport."
 
 # MSG_PREHEAT_NOZZLE c=20
-#: messages.c:63
+#: messages.c:67
 msgid "Preheat the nozzle!"
 msgstr "Prechauffez la buse!"
 
 # MSG_PREHEAT
-#: ultralcd.cpp:6018
+#: ultralcd.cpp:6722
 msgid "Preheat"
 msgstr "Prechauffage"
 
 # MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:96
+#: messages.c:102
 msgid "Preheating nozzle. Please wait."
 msgstr "Prechauffage de la buse. Merci de patienter."
 
@@ -1131,92 +1016,82 @@ msgid "Please upgrade."
 msgstr "Mettez a jour le FW."
 
 # MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:9150
+#: Marlin_main.cpp:10364
 msgid "Press knob to preheat nozzle and continue."
 msgstr "Appuyez sur le bouton pour prechauffer la buse et continuer."
 
 # 
-#: ultralcd.cpp:2013
+#: ultralcd.cpp:1851
 msgid "Power failures"
-msgstr "Coupures"
+msgstr "Coup.de courant"
 
 # MSG_PRINT_ABORTED c=20
-#: messages.c:65
+#: messages.c:69
 msgid "Print aborted"
 msgstr "Impression annulee"
 
-# 
-#: ultralcd.cpp:2350
+#  c=20 r=1
+#: ultralcd.cpp:2455
 msgid "Preheating to load"
-msgstr ""
+msgstr "Chauffe pour charger"
 
-# 
-#: ultralcd.cpp:2351
+#  c=20 r=1
+#: ultralcd.cpp:2459
 msgid "Preheating to unload"
-msgstr ""
+msgstr "Chauf.pour decharger"
 
 # MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:7471
+#: ultralcd.cpp:8307
 msgid "Print fan:"
-msgstr "Ventilo impr. :"
+msgstr "Vent. impr:"
 
 # MSG_CARD_MENU
 #: messages.c:21
 msgid "Print from SD"
-msgstr "Impr depuis la SD"
+msgstr "Impr. depuis la SD"
 
 # 
-#: ultralcd.cpp:2313
+#: ultralcd.cpp:2317
 msgid "Press the knob"
-msgstr ""
+msgstr "App. sur sur bouton"
 
 # MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1022
+#: ultralcd.cpp:1069
 msgid "Print paused"
 msgstr "Impression en pause"
 
 # 
-#: mmu.cpp:639
+#: mmu.cpp:723
 msgid "Press the knob to resume nozzle temperature."
-msgstr "Appuyez sur le bouton pour poursuivre la mise en temperature de la buse."
+msgstr "Appuyez sur le bouton pour rechauffer la buse."
 
 # MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
 #: messages.c:41
 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"
+msgstr "L'imprimante n'a pas encore ete calibree. Suivez le manuel, chapitre Premiers pas, section Processus de calibration."
 
 # 
-#: ultralcd.cpp:1921
+#: ultralcd.cpp:1723
 msgid "Print FAN"
-msgstr "Vent extru"
-
-# WELCOME_MSG c=20
-#: 
-msgid "Prusa i3 MK2.5 ready."
-msgstr "Prusa i3 MK2.5 prete."
-
-# WELCOME_MSG c=20
-#: 
-msgid "Prusa i3 MK3 ready."
-msgstr "Prusa i3 MK3 prete."
+msgstr "Vent. impr"
 
 # MSG_PRUSA3D
-#: ultralcd.cpp:2227
+#: ultralcd.cpp:2205
 msgid "prusa3d.com"
 msgstr ""
 
 # MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3102
+#: ultralcd.cpp:3295
 msgid "Rear side [um]"
 msgstr "Arriere [um]"
 
 # MSG_RECOVERING_PRINT c=20 r=1
-#: Marlin_main.cpp:8575
+#: Marlin_main.cpp:9764
 msgid "Recovering print    "
 msgstr "Recup. impression"
 
 # MSG_REMOVE_OLD_FILAMENT c=20 r=4
-#: mmu.cpp:744
+#: mmu.cpp:830
 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."
 
@@ -1225,63 +1100,58 @@ msgstr "Retirez l'ancien filament puis appuyez sur le bouton pour charger le nou
 msgid "Prusa i3 MK3S OK."
 msgstr ""
 
-# 
-#: 
-msgid "Prusa i3 MK2 ready."
-msgstr "Prusa i3 MK2 prete."
-
 # MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5203
+#: ultralcd.cpp:5774
 msgid "Reset XYZ calibr."
-msgstr "Reinit. calibr. XYZ"
+msgstr "Reinit. calib. XYZ"
 
 # MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3103
+#: ultralcd.cpp:3296
 msgid "Reset"
 msgstr "Reinitialiser"
 
 # MSG_RESUME_PRINT
-#: ultralcd.cpp:6033
+#: ultralcd.cpp:6742
 msgid "Resume print"
 msgstr "Reprendre impression"
 
 # MSG_RESUMING_PRINT c=20 r=1
-#: messages.c:69
+#: messages.c:73
 msgid "Resuming print"
 msgstr "Reprise de l'impr."
 
 # MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3100
+#: ultralcd.cpp:3293
 msgid "Right side[um]"
 msgstr "Droite [um]"
 
 # MSG_SECOND_SERIAL_ON c=17 r=1
-#: ultralcd.cpp:5119
+#: ultralcd.cpp:5692
 msgid "RPi port     [on]"
 msgstr "Port RPi     [on]"
 
 # MSG_SECOND_SERIAL_OFF c=17 r=1
-#: ultralcd.cpp:5117
+#: ultralcd.cpp:5690
 msgid "RPi port    [off]"
 msgstr "Port RPi    [off]"
 
 # MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4583
+#: ultralcd.cpp:4812
 msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
-msgstr "Lancer l'Assistant supprimera les resultats actuels de calibration et commencera du debut. Continuer ?"
+msgstr "Lancement de l'Assistant supprimera les resultats actuels de calibration et commencera du debut. Continuer?"
 
 # MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-#: ultralcd.cpp:5033
+#: ultralcd.cpp:5322
 msgid "SD card  [normal]"
 msgstr "Carte SD [normal]"
 
 # MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:5031
+#: ultralcd.cpp:5320
 msgid "SD card [flshAir]"
-msgstr "Carte SD[flshAir]"
+msgstr "CarteSD [flshAir]"
 
 # 
-#: ultralcd.cpp:2862
+#: ultralcd.cpp:3019
 msgid "Right"
 msgstr "Droite"
 
@@ -1291,347 +1161,332 @@ msgid "Searching bed calibration point"
 msgstr "Recherche du point de calibration du lit"
 
 # MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5126
+#: ultralcd.cpp:5699
 msgid "Select language"
 msgstr "Choisir langue"
 
 # MSG_SELFTEST_OK
-#: ultralcd.cpp:6631
+#: ultralcd.cpp:7452
 msgid "Self test OK"
 msgstr "Auto-test OK"
 
 # MSG_SELFTEST_START c=20
-#: ultralcd.cpp:6449
+#: ultralcd.cpp:7238
 msgid "Self test start  "
 msgstr "Debut auto-test"
 
 # MSG_SELFTEST
-#: ultralcd.cpp:5179
+#: ultralcd.cpp:5750
 msgid "Selftest         "
 msgstr "Auto-test"
 
 # MSG_SELFTEST_ERROR
-#: ultralcd.cpp:7058
+#: ultralcd.cpp:7879
 msgid "Selftest error !"
-msgstr "Erreur auto-test !"
+msgstr "Erreur auto-test!"
 
 # MSG_SELFTEST_FAILED c=20
-#: messages.c:73
+#: messages.c:77
 msgid "Selftest failed  "
 msgstr "Echec de l'auto-test"
 
 # MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1548
+#: Marlin_main.cpp:1551
 msgid "Selftest will be run to calibrate accurate sensorless rehoming."
-msgstr "L'auto-test sera lance pour calibrer la remise a zero precise sans capteur."
+msgstr "Le Selftest sera lance pour calibrer la remise a zero precise sans capteur"
 
 # 
-#: ultralcd.cpp:4803
+#: ultralcd.cpp:5045
 msgid "Select nozzle preheat temperature which matches your material."
 msgstr "Selectionnez la temperature de prechauffage de la buse qui correspond a votre materiau."
 
 # 
-#: ultralcd.cpp:4552
+#: ultralcd.cpp:4780
 msgid "Select PLA filament:"
-msgstr "Selectionnez le filament PLA :"
+msgstr "Selectionnez le fil. PLA:"
 
 # MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3111
+#: ultralcd.cpp:3314
 msgid "Set temperature:"
-msgstr "Regler temp. :"
+msgstr "Regler temp.:"
 
 # MSG_SETTINGS
-#: messages.c:81
+#: messages.c:86
 msgid "Settings"
 msgstr "Reglages"
 
 # MSG_SHOW_END_STOPS c=17 r=1
-#: ultralcd.cpp:5200
+#: ultralcd.cpp:5771
 msgid "Show end stops"
 msgstr "Afficher butees"
 
 # 
-#: ultralcd.cpp:3819
+#: ultralcd.cpp:4025
 msgid "Sensor state"
-msgstr ""
-
-# 
-#: 
-msgid "Sensors info"
-msgstr ""
-
-# 
-#: 
-msgid "Show pinda state"
-msgstr "Etat de la PINDA"
+msgstr "Etat capteur"
 
 # MSG_FILE_CNT c=20 r=4
-#: 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_NONE c=17 r=1
-#: ultralcd.cpp:5043
-msgid "Sort:      [none]"
-msgstr "Tri :     [aucun]"
+#: ultralcd.cpp:5332
+msgid "Sort       [none]"
+msgstr "Tri       [aucun]"
 
 # MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:5041
-msgid "Sort:      [time]"
-msgstr "Tri :     [heure]"
+#: ultralcd.cpp:5330
+msgid "Sort       [time]"
+msgstr "Tri       [heure]"
 
 # 
-#: ultralcd.cpp:2899
-msgid "Severe skew"
-msgstr "Deviation severe"
+#: ultralcd.cpp:3062
+msgid "Severe skew:"
+msgstr "Deviat.sev.:"
 
 # MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:5042
-msgid "Sort:  [alphabet]"
-msgstr "Tri :  [alphabet]"
+#: ultralcd.cpp:5331
+msgid "Sort   [alphabet]"
+msgstr "Tri    [alphabet]"
 
 # MSG_SORTING c=20 r=1
-#: cardreader.cpp:745
+#: cardreader.cpp:746
 msgid "Sorting files"
 msgstr "Tri des fichiers"
 
 # MSG_SOUND_LOUD c=17 r=1
-#: sound.h:5
+#: sound.h:6
 msgid "Sound      [loud]"
 msgstr "Son        [fort]"
 
 # 
-#: ultralcd.cpp:2898
-msgid "Slight skew"
-msgstr "Deviation legere"
+#: ultralcd.cpp:3061
+msgid "Slight skew:"
+msgstr "Deviat.leg.:"
 
 # MSG_SOUND_MUTE c=17 r=1
-#: sound.h:8
+#: 
 msgid "Sound      [mute]"
 msgstr "Son        [muet]"
 
 # 
-#: Marlin_main.cpp:4560
+#: Marlin_main.cpp:4871
 msgid "Some problem encountered, Z-leveling enforced ..."
-msgstr "Problemes rencontres, nivellement de l'axe Z applique..."
+msgstr "Probleme rencontre, cliquez sur le bouton pour niveller l'axe Z..."
 
 # MSG_SOUND_ONCE c=17 r=1
-#: sound.h:6
+#: sound.h:7
 msgid "Sound      [once]"
 msgstr "Son    [une fois]"
 
 # MSG_SOUND_SILENT c=17 r=1
-#: sound.h:7
+#: sound.h:8
 msgid "Sound    [silent]"
-msgstr "Son  [silencieux]"
+msgstr "Son      [feutre]"
 
 # MSG_SPEED
-#: ultralcd.cpp:6199
+#: ultralcd.cpp:6926
 msgid "Speed"
 msgstr "Vitesse"
 
 # MSG_SELFTEST_FAN_YES c=19
-#: messages.c:76
+#: messages.c:80
 msgid "Spinning"
 msgstr "Tourne"
 
 # MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4065
+#: Marlin_main.cpp:4368
 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
-msgstr "Une temperature ambiante stable de 21-26C et une base stable sont requis."
+msgstr "Une temperature ambiante stable de 21-26C et un support stable sont requis."
 
 # MSG_STATISTICS
-#: ultralcd.cpp:6108
+#: ultralcd.cpp:6839
 msgid "Statistics  "
 msgstr "Statistiques"
 
 # MSG_STOP_PRINT
-#: messages.c:87
+#: messages.c:93
 msgid "Stop print"
 msgstr "Arreter impression"
 
 # MSG_STOPPED
-#: messages.c:88
+#: messages.c:94
 msgid "STOPPED. "
 msgstr "ARRETE."
 
 # MSG_SUPPORT
-#: ultralcd.cpp:6117
+#: ultralcd.cpp:6848
 msgid "Support"
 msgstr ""
 
 # MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:7138
+#: ultralcd.cpp:7959
 msgid "Swapped"
 msgstr "Echange"
 
 # MSG_TEMP_CALIBRATION c=20 r=1
-#: messages.c:89
+#: messages.c:95
 msgid "Temp. cal.          "
 msgstr "Calib. Temp."
 
 # MSG_TEMP_CALIBRATION_ON c=20 r=1
-#: ultralcd.cpp:5113
+#: ultralcd.cpp:5686
 msgid "Temp. cal.   [on]"
 msgstr "Calib. Temp. [on]"
 
 # MSG_TEMP_CALIBRATION_OFF c=20 r=1
-#: ultralcd.cpp:5111
+#: ultralcd.cpp:5684
 msgid "Temp. cal.  [off]"
 msgstr "Calib. Temp.[off]"
 
 # MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5209
+#: ultralcd.cpp:5780
 msgid "Temp. calibration"
 msgstr "Calibration temp."
 
 # MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3744
+#: ultralcd.cpp:3951
 msgid "Temperature calibration failed"
-msgstr "Echec calibration en temperature"
+msgstr "Echec de la calibration en temperature"
 
 # MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:90
+#: messages.c:96
 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 active. La calibration en temperature peut etre desactivee dans le menu Reglages->Cal. Temp."
+msgstr "La calibration en temperature est terminee et activee. La calibration en temperature peut etre desactivee dans le menu Reglages-> Cal. Temp."
 
 # MSG_TEMPERATURE
-#: ultralcd.cpp:5089
+#: ultralcd.cpp:5650
 msgid "Temperature"
 msgstr ""
 
 # MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2273
+#: ultralcd.cpp:2251
 msgid "Temperatures"
 msgstr ""
 
 # MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
 #: messages.c:42
 msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
-msgstr "Il y a encore besoin d'effectuer la calibration Z. Veuillez suivre le manuel, chapitre Premiers pas, section Processus de calibration."
+msgstr "Il faut toujours effectuer la Calibration Z. Veuillez suivre le manuel, chapitre Premiers pas, section Processus de calibration."
 
 # 
-#: ultralcd.cpp:2752
+#: ultralcd.cpp:2908
 msgid "Total filament"
 msgstr "Filament total"
 
 # 
-#: ultralcd.cpp:2754
+#: ultralcd.cpp:2908
 msgid "Total print time"
-msgstr "Temps total"
+msgstr "Temps total impr."
 
 # MSG_TUNE
-#: ultralcd.cpp:6015
+#: ultralcd.cpp:6719
 msgid "Tune"
 msgstr "Regler"
 
 # 
-#: ultralcd.cpp:4640
+#: ultralcd.cpp:4869
 msgid "Unload"
 msgstr "Decharger"
 
 # 
-#: ultralcd.cpp:5617
-msgid "Unload all"
-msgstr "Decharger tout"
-
-# 
-#: ultralcd.cpp:1994
+#: ultralcd.cpp:1820
 msgid "Total failures"
-msgstr "Echecs au total"
+msgstr "Total des echecs"
 
 # 
-#: ultralcd.cpp:2316
+#: ultralcd.cpp:2324
 msgid "to load filament"
-msgstr ""
+msgstr "pour charger le fil."
 
 # 
-#: ultralcd.cpp:2317
+#: ultralcd.cpp:2328
 msgid "to unload filament"
-msgstr ""
+msgstr "pour decharger fil."
 
 # MSG_UNLOAD_FILAMENT c=17
-#: messages.c:91
+#: messages.c:97
 msgid "Unload filament"
 msgstr "Decharger fil."
 
 # MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:92
+#: messages.c:98
 msgid "Unloading filament"
 msgstr "Dechargement fil."
 
 # 
-#: ultralcd.cpp:1961
+#: ultralcd.cpp:1773
 msgid "Total"
-msgstr "Total"
+msgstr ""
 
 # MSG_USED c=19 r=1
-#: ultralcd.cpp:5334
+#: ultralcd.cpp:5908
 msgid "Used during print"
 msgstr "Utilise pdt impr."
 
 # MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2276
+#: ultralcd.cpp:2254
 msgid "Voltages"
 msgstr "Tensions"
 
 # 
-#: ultralcd.cpp:2249
+#: ultralcd.cpp:2227
 msgid "unknown"
-msgstr ""
+msgstr "inconnu"
 
 # MSG_USERWAIT
-#: Marlin_main.cpp:4876
+#: Marlin_main.cpp:5263
 msgid "Wait for user..."
 msgstr "Attente utilisateur..."
 
 # MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3255
+#: ultralcd.cpp:3458
 msgid "Waiting for nozzle and bed cooling"
-msgstr "Attente du refroidissement de la buse et du lit"
+msgstr "Attente du refroidissement des buse et plateau"
 
 # MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3219
+#: ultralcd.cpp:3422
 msgid "Waiting for PINDA probe cooling"
 msgstr "Attente du refroidissement de la sonde PINDA"
 
 # 
-#: ultralcd.cpp:4639
+#: ultralcd.cpp:4868
 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 decharger pour retirer le filament 1 s'il depasse du  tube arriere du MMU. Utilisez ejecter s'il est cache dans le 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:1508
+#: Marlin_main.cpp:1511
 msgid "Warning: both printer type and motherboard type changed."
-msgstr "Attention : Types d'imprimante et de carte mere modifies"
+msgstr "Attention: Types d'imprimante et de carte mere modifies"
 
 # MSG_CHANGED_MOTHERBOARD c=20 r=4
-#: Marlin_main.cpp:1500
+#: Marlin_main.cpp:1503
 msgid "Warning: motherboard type changed."
-msgstr "Attention : Type de carte mere modifie."
+msgstr "Attention: Type de carte mere modifie."
 
 # MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1504
+#: Marlin_main.cpp:1507
 msgid "Warning: printer type changed."
-msgstr "Attention : Type d'imprimante modifie"
+msgstr "Attention: Type d'imprimante modifie"
 
 # MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3014
+#: Marlin_main.cpp:3054
 msgid "Was filament unload successful?"
-msgstr "Dechargement du filament reussi ?"
+msgstr "Dechargement du filament reussi?"
 
 # MSG_SELFTEST_WIRINGERROR
-#: messages.c:80
+#: messages.c:85
 msgid "Wiring error"
 msgstr "Erreur de cablage"
 
 # MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5176
+#: ultralcd.cpp:5747
 msgid "Wizard"
 msgstr "Assistant"
 
 # MSG_XYZ_DETAILS c=19 r=1
-#: ultralcd.cpp:2265
+#: ultralcd.cpp:2243
 msgid "XYZ cal. details"
 msgstr "Details calib. XYZ"
 
@@ -1641,107 +1496,322 @@ msgid "XYZ calibration failed. Please consult the manual."
 msgstr "Echec calibration XYZ. Consultez le manuel."
 
 # MSG_YES
-#: messages.c:98
+#: messages.c:104
 msgid "Yes"
 msgstr "Oui"
 
 # MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:97
+#: messages.c:103
 msgid "You can always resume the Wizard from Calibration -> Wizard."
-msgstr "Vous pouvez toujours poursuivre l'assistant dans Calibration-> Assistant."
+msgstr "Vous pouvez toujours relancer l'Assistant dans Calibration > Assistant."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
-#: ultralcd.cpp:3715
+#: ultralcd.cpp:3922
 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:3712
+#: ultralcd.cpp:3919
 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 !"
+msgstr "Calibration XYZ OK. Les axes X/Y sont legerement non perpendiculaires. Bon boulot!"
 
 # 
-#: ultralcd.cpp:4885
-msgid "X-correct"
-msgstr "Correction-X"
+#: ultralcd.cpp:5130
+msgid "X-correct:"
+msgstr "Correct-X:"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3709
+#: ultralcd.cpp:3916
 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
-msgstr "Calibration XYZ OK. Les axes X/Y sont perpendiculaires. Felicitations !"
+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:3693
+#: ultralcd.cpp:3900
 msgid "XYZ calibration compromised. Front calibration points not reachable."
-msgstr "Calibration XYZ compromise. Les points de calibration avant ne sont pas atteignables."
+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:3696
+#: ultralcd.cpp:3903
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
-msgstr "Calibration XYZ compromise. Le point de calibration avant droite n'est pas atteignable."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8
-#: ultralcd.cpp:3699
-msgid "XYZ calibration compromised. Left front calibration point not reachable."
-msgstr "Calibration XYZ compromise. Le point de calibration avant gauche n'est pas atteignable."
+msgstr "Calibration XYZ compromise. Le point de calibration avant droit n'est pas atteignable."
 
 # MSG_LOAD_ALL c=17
-#: ultralcd.cpp:5575
+#: ultralcd.cpp:6166
 msgid "Load all"
-msgstr "Tout charger"
-
-# MSG_LOAD_FILAMENT_1 c=17
-#: ultralcd.cpp:5576
-msgid "Load filament 1"
-msgstr "Charger fil. 1"
+msgstr "Charger un par un"
 
 # 
-#: ultralcd.cpp:3675
+#: ultralcd.cpp:3882
 msgid "XYZ calibration failed. Bed calibration point was not found."
-msgstr "Echec calibration XYZ. Le point de calibration du lit n'a pas ete trouve."
+msgstr "Echec calibration XYZ. Le point de calibration du plateau n'a pas ete trouve."
 
 # 
-#: ultralcd.cpp:3681
+#: ultralcd.cpp:3888
 msgid "XYZ calibration failed. Front calibration points not reachable."
-msgstr "Echec calibration XYZ. Les points de calibration avant ne sont pas atteignables."
+msgstr "Echec calibration XYZ. Les points de calibration en avant ne sont pas atteignables."
 
 # 
-#: ultralcd.cpp:3687
-msgid "XYZ calibration failed. Left front calibration point not reachable."
-msgstr "Echec calibration XYZ. Le point de calibration avant gauche n'est pas atteignable."
+#: ultralcd.cpp:3891
+msgid "XYZ calibration failed. Right front calibration point not reachable."
+msgstr "Echec calibration XYZ. Le point de calibration avant droit n'est pas atteignable."
 
-# MSG_LOAD_FILAMENT_2 c=17
-#: ultralcd.cpp:5577
-msgid "Load filament 2"
-msgstr "Charger fil. 2"
+# 
+#: ultralcd.cpp:3016
+msgid "Y distance from min"
+msgstr "Distance Y du min"
 
 # 
-#: ultralcd.cpp:3684
-msgid "XYZ calibration failed. Right front calibration point not reachable."
-msgstr "Echec calibration XYZ. Le point de calibration avant droite n'est pas atteignable."
+#: ultralcd.cpp:5131
+msgid "Y-correct:"
+msgstr "Correct-Y:"
 
-# MSG_LOAD_FILAMENT_3 c=17
-#: ultralcd.cpp:5578
-msgid "Load filament 3"
-msgstr "Charger fil. 3"
+# MSG_OFF
+#: menu.cpp:426
+msgid " [off]"
+msgstr " [off]"
 
 # 
-#: ultralcd.cpp:2859
-msgid "Y distance from min"
-msgstr "Distance Y du min"
+#: messages.c:57
+msgid "Back"
+msgstr "Retour"
+
+# 
+#: ultralcd.cpp:5639
+msgid "Checks"
+msgstr "Verifications"
+
+# 
+#: ultralcd.cpp:7973
+msgid "False triggering"
+msgstr "Faux declenchement"
+
+# 
+#: ultralcd.cpp:4030
+msgid "FINDA:"
+msgstr "FINDA:"
+
+# 
+#: ultralcd.cpp:5545
+msgid "Firmware   [none]"
+msgstr "Firmware [aucune]"
+
+# 
+#: ultralcd.cpp:5551
+msgid "Firmware [strict]"
+msgstr "Firmware[stricte]"
+
+# 
+#: ultralcd.cpp:5548
+msgid "Firmware   [warn]"
+msgstr "Firmware  [avert]"
+
+# 
+#: messages.c:87
+msgid "HW Setup"
+msgstr "Config HW"
+
+# 
+#: ultralcd.cpp:4034
+msgid "IR:"
+msgstr "IR:"
+
+# 
+#: ultralcd.cpp:7046
+msgid "Magnets comp.[N/A]"
+msgstr "Compens. aim.[N/A]"
+
+# 
+#: ultralcd.cpp:7044
+msgid "Magnets comp.[Off]"
+msgstr "Compens. aim.[off]"
+
+# 
+#: ultralcd.cpp:7043
+msgid "Magnets comp. [On]"
+msgstr "Compens. aim. [on]"
+
+# 
+#: ultralcd.cpp:7035
+msgid "Mesh         [3x3]"
+msgstr ""
 
 # 
-#: ultralcd.cpp:4886
-msgid "Y-correct"
-msgstr "Correction-Y"
+#: ultralcd.cpp:7036
+msgid "Mesh         [7x7]"
+msgstr ""
+
+# 
+#: ultralcd.cpp:5677
+msgid "Mesh bed leveling"
+msgstr ""
+
+# 
+#: Marlin_main.cpp:856
+msgid "MK3S firmware detected on MK3 printer"
+msgstr "Firmware MK3S detecte sur imprimante MK3"
+
+# 
+#: ultralcd.cpp:5306
+msgid "MMU Mode [Normal]"
+msgstr "Mode MMU [normal]"
+
+# 
+#: ultralcd.cpp:5307
+msgid "MMU Mode[Stealth]"
+msgstr "Mode MMU [feutre]"
+
+# 
+#: ultralcd.cpp:4511
+msgid "Mode change in progress ..."
+msgstr "Changement de mode en cours..."
+
+# 
+#: ultralcd.cpp:5506
+msgid "Model      [none]"
+msgstr "Modele   [aucune]"
+
+# 
+#: ultralcd.cpp:5512
+msgid "Model    [strict]"
+msgstr "Modele  [stricte]"
+
+# 
+#: ultralcd.cpp:5509
+msgid "Model      [warn]"
+msgstr "Modele    [avert]"
 
-# MSG_LOAD_FILAMENT_4 c=17
-#: ultralcd.cpp:5579
-msgid "Load filament 4"
-msgstr "Charger fil. 4"
+# 
+#: ultralcd.cpp:5467
+msgid "Nozzle d.  [0.25]"
+msgstr "Diam. buse [0.25]"
+
+# 
+#: ultralcd.cpp:5470
+msgid "Nozzle d.  [0.40]"
+msgstr "Diam. buse [0.40]"
+
+# 
+#: ultralcd.cpp:5473
+msgid "Nozzle d.  [0.60]"
+msgstr "Diam. buse [0.60]"
+
+# 
+#: ultralcd.cpp:5421
+msgid "Nozzle     [none]"
+msgstr "Buse     [aucune]"
+
+# 
+#: ultralcd.cpp:5427
+msgid "Nozzle   [strict]"
+msgstr "Buse    [stricte]"
 
-# MSG_LOAD_FILAMENT_5 c=17
-#: ultralcd.cpp:5582
-msgid "Load filament 5"
-msgstr "Charger fil. 5"
+# 
+#: ultralcd.cpp:5424
+msgid "Nozzle     [warn]"
+msgstr "Buse      [avert]"
+
+# 
+#: util.cpp:510
+msgid "G-code sliced for a different level. Continue?"
+msgstr ""
+
+# 
+#: util.cpp:516
+msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
+msgstr ""
+
+# 
+#: util.cpp:427
+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:433
+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:477
+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:483
+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:4026
+msgid "PINDA:"
+msgstr "PINDA:"
+
+#  c=20 r=1
+#: ultralcd.cpp:2465
+msgid "Preheating to cut"
+msgstr "Chauffe pour couper"
+
+#  c=20 r=1
+#: ultralcd.cpp:2462
+msgid "Preheating to eject"
+msgstr "Chauf. pour remonter"
+
+# 
+#: util.cpp:390
+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:397
+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."
+
+# 
+#: ultralcd.cpp:6683
+msgid "Rename"
+msgstr "Renommer"
+
+# 
+#: ultralcd.cpp:6679
+msgid "Select"
+msgstr "Selectionner"
+
+# 
+#: ultralcd.cpp:2245
+msgid "Sensor info"
+msgstr "Info capteur"
+
+# 
+#: messages.c:58
+msgid "Sheet"
+msgstr "Plaque"
+
+# 
+#: sound.h:9
+msgid "Sound    [assist]"
+msgstr "Son      [assist]"
+
+# 
+#: ultralcd.cpp:5637
+msgid "Steel sheets"
+msgstr "Plaques en acier"
+
+# 
+#: ultralcd.cpp:5132
+msgid "Z-correct:"
+msgstr "Correct-Z:"
+
+# 
+#: ultralcd.cpp:7038
+msgid "Z-probe nr.    [1]"
+msgstr "Mesurer x-fois [1]"
+
+# 
+#: ultralcd.cpp:7040
+msgid "Z-probe nr.    [3]"
+msgstr "Mesurer x-fois [3]"
+
+# 
+#: ultralcd.cpp:7039
+msgid "Z-probe nr.    [5]"
+msgstr "Mesurer x-fois [5]"
 

+ 599 - 534
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: čt 7. úno 2019 14:48:23\n"
-"PO-Revision-Date: čt 7. úno 2019 14:48:23\n"
+"POT-Creation-Date: Sun, Sep 22, 2019 2:07:29 PM\n"
+"PO-Revision-Date: Sun, Sep 22, 2019 2:07:29 PM\n"
 "Language-Team: \n"
 "X-Generator: Poedit 2.0.7\n"
 "X-Poedit-SourceCharset: UTF-8\n"
@@ -21,74 +21,74 @@ msgid " of 4"
 msgstr " su 4"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:56
+#: messages.c:60
 msgid " of 9"
 msgstr "su 9"
 
 # MSG_MEASURED_OFFSET
-#: ultralcd.cpp:2914
+#: ultralcd.cpp:3089
 msgid "[0;0] point offset"
 msgstr "[0;0] punto offset"
 
 # MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
-#: ultralcd.cpp:4219
-msgid "\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode"
-msgstr "\x1b[2JRilev. impatto\x1b[1;0Hattivabile solo\x1b[2;0Hin Modalita normale"
+#: 
+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
-#: ultralcd.cpp:4231
-msgid "\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode"
-msgstr "\x1b[2JATTENZIONE:\x1b[1;0HRilev. impatto\x1b[2;0Hdisattivato in\x1b[3;0HModalita silenziosa"
+#: 
+msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
+msgstr "ATTENZIONE:\x0aRilev. impatto\x0adisattivato in\x0aModalita silenziosa"
 
 # 
-#: ultralcd.cpp:2353
+#: ultralcd.cpp:2472
 msgid ">Cancel"
-msgstr ""
+msgstr ">Annulla"
 
-# MSG_BABYSTEPPING_Z c=20
-#: ultralcd.cpp:3043
-msgid "Adjusting Z"
-msgstr "Compensazione Z"
+# MSG_BABYSTEPPING_Z c=15
+#: ultralcd.cpp:3209
+msgid "Adjusting Z:"
+msgstr "Compensaz. Z:"
 
 # MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:7459
+#: ultralcd.cpp:8295
 msgid "All correct      "
 msgstr "Nessun errore"
 
 # MSG_WIZARD_DONE c=20 r=8
-#: messages.c:95
+#: messages.c:101
 msgid "All is done. Happy printing!"
 msgstr "Tutto fatto. Buona stampa!"
 
 # 
-#: ultralcd.cpp:2109
+#: ultralcd.cpp:2009
 msgid "Ambient"
-msgstr ""
+msgstr "Ambiente"
 
 # MSG_PRESS c=20
-#: ultralcd.cpp:2463
+#: ultralcd.cpp:2618
 msgid "and press the knob"
 msgstr "e cliccare manopola"
 
 # MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3330
+#: ultralcd.cpp:3529
 msgid "Are left and right Z~carriages all up?"
 msgstr "I carrelli Z sin/des sono altezza max?"
 
 # MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:4959
+#: ultralcd.cpp:5200
 msgid "SpoolJoin    [on]"
-msgstr "SpoolJoin    [on]"
+msgstr ""
 
 # 
-#: ultralcd.cpp:4955
+#: ultralcd.cpp:5196
 msgid "SpoolJoin   [N/A]"
-msgstr "SpoolJoin   [N/A]"
+msgstr ""
 
-#  MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:4963
+# MSG_AUTO_DEPLETE_OFF c=17 r=1
+#: ultralcd.cpp:5204
 msgid "SpoolJoin   [off]"
-msgstr "SpoolJoin   [off]"
+msgstr ""
 
 # MSG_AUTO_HOME
 #: messages.c:11
@@ -96,32 +96,32 @@ msgid "Auto home"
 msgstr "Trova origine"
 
 # MSG_AUTOLOAD_FILAMENT c=17
-#: ultralcd.cpp:6091
+#: ultralcd.cpp:6822
 msgid "AutoLoad filament"
 msgstr "Autocaric. filam."
 
 # MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4246
+#: ultralcd.cpp:4462
 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:2655
+#: ultralcd.cpp:2813
 msgid "Autoloading filament is active, just press the knob and insert filament..."
-msgstr "Il caricamento automatico e attivo, premete la manopola e inserite il filamento..."
+msgstr "Caricamento automatico attivo, premi la manopola e inserisci il filamento."
 
 # MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:7128
+#: ultralcd.cpp:7949
 msgid "Axis length"
 msgstr "Lunghezza dell'asse"
 
 # MSG_SELFTEST_AXIS
-#: ultralcd.cpp:7130
+#: ultralcd.cpp:7951
 msgid "Axis"
 msgstr "Assi"
 
 # MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:7072
+#: ultralcd.cpp:7893
 msgid "Bed / Heater"
 msgstr "Letto/Riscald."
 
@@ -136,7 +136,7 @@ msgid "Bed Heating"
 msgstr "Riscald. letto"
 
 # MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5197
+#: ultralcd.cpp:5768
 msgid "Bed level correct"
 msgstr "Correz. liv.letto"
 
@@ -145,38 +145,28 @@ msgstr "Correz. liv.letto"
 msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
 msgstr "Livellamento letto fallito.NoRispSensore.Residui su ugello? In attesa di reset."
 
-# MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4
-#: Marlin_main.cpp:4508
-msgid "Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset."
-msgstr "Livellamento piano fallito. Sensore disconnesso o Cavo Danneggiato. In attesa di reset."
-
-# MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4
-#: Marlin_main.cpp:4512
-msgid "Bed leveling failed. Sensor triggered too high. Waiting for reset."
-msgstr "Livellamento piano fallito. Risposta sensore troppo presto. In attesa di reset."
-
 # MSG_BED
 #: messages.c:15
 msgid "Bed"
 msgstr "Letto"
 
 # MSG_MENU_BELT_STATUS c=15 r=1
-#: ultralcd.cpp:2135
+#: ultralcd.cpp:2059
 msgid "Belt status"
-msgstr "Stato delle cinghie"
+msgstr "Stato cinghie"
 
 # MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:67
+#: messages.c:71
 msgid "Blackout occurred. Recover print?"
 msgstr "C'e stato un Blackout. Recuperare la stampa?"
 
 # 
-#: ultralcd.cpp:7461
+#: ultralcd.cpp:8297
 msgid "Calibrating home"
-msgstr ""
+msgstr "Calibrazione Home"
 
 # MSG_CALIBRATE_BED
-#: ultralcd.cpp:5186
+#: ultralcd.cpp:5757
 msgid "Calibrate XYZ"
 msgstr "Calibra XYZ"
 
@@ -186,12 +176,12 @@ msgid "Calibrate Z"
 msgstr "Calibra Z"
 
 # MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4427
+#: ultralcd.cpp:4654
 msgid "Calibrate"
 msgstr "Calibra"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3290
+#: ultralcd.cpp:3492
 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."
 
@@ -201,37 +191,32 @@ msgid "Calibrating Z"
 msgstr "Calibrando Z"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3290
+#: ultralcd.cpp:3492
 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:778
+#: ultralcd.cpp:816
 msgid "Calibration done"
 msgstr "Calibrazione completa"
 
 # MSG_MENU_CALIBRATION
-#: messages.c:57
+#: messages.c:61
 msgid "Calibration"
 msgstr "Calibrazione"
 
 # 
-#: ultralcd.cpp:4552
+#: ultralcd.cpp:4781
 msgid "Cancel"
 msgstr "Annulla"
 
-# MSG_SD_INSERTED
-#: 
-msgid "Card inserted"
-msgstr "SD inserita"
-
 # MSG_SD_REMOVED
-#: ultralcd.cpp:7819
+#: ultralcd.cpp:8679
 msgid "Card removed"
 msgstr "SD rimossa"
 
 # MSG_NOT_COLOR
-#: ultralcd.cpp:2563
+#: ultralcd.cpp:2718
 msgid "Color not correct"
 msgstr "Colore non puro"
 
@@ -241,24 +226,24 @@ msgid "Cooldown"
 msgstr "Raffredda"
 
 # 
-#: ultralcd.cpp:4360
+#: ultralcd.cpp:4587
 msgid "Copy selected language?"
 msgstr "Copiare la lingua selezionata?"
 
 # MSG_CRASHDETECT_ON
 #: messages.c:27
 msgid "Crash det.   [on]"
-msgstr "Rilevam.imp. [on]"
+msgstr "Rileva.crash [on]"
 
 # MSG_CRASHDETECT_NA
 #: messages.c:25
 msgid "Crash det.  [N/A]"
-msgstr "Rilevam.imp.[N/A]"
+msgstr "Rileva.crash[N/A]"
 
 # MSG_CRASHDETECT_OFF
 #: messages.c:26
 msgid "Crash det.  [off]"
-msgstr "Rilevam.imp.[off]"
+msgstr "Rileva.crash[off]"
 
 # MSG_CRASH_DETECTED c=20 r=1
 #: messages.c:24
@@ -266,27 +251,27 @@ msgid "Crash detected."
 msgstr "Rilevato impatto."
 
 # 
-#: Marlin_main.cpp:608
+#: Marlin_main.cpp:600
 msgid "Crash detected. Resume print?"
 msgstr "Scontro rilevato. Riprendere la stampa?"
 
 # 
-#: ultralcd.cpp:2013
+#: ultralcd.cpp:1853
 msgid "Crash"
-msgstr ""
+msgstr "Impatto"
 
 # MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:5335
+#: ultralcd.cpp:5909
 msgid "Current"
 msgstr "Attuale"
 
 # MSG_DATE c=17 r=1
-#: ultralcd.cpp:2235
+#: ultralcd.cpp:2213
 msgid "Date:"
 msgstr "Data:"
 
 # MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5093
+#: ultralcd.cpp:5654
 msgid "Disable steppers"
 msgstr "Disabilita motori"
 
@@ -296,77 +281,52 @@ 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 letto non ancora imposta. Si prega di seguire il manuale, capitolo Primi Passi, sezione Calibrazione primo layer."
 
 # MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:4828
+#: ultralcd.cpp:5070
 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=9
-#: ultralcd.cpp:4889
-msgid "E-correct"
-msgstr "Correzione-E"
+# MSG_EXTRUDER_CORRECTION c=10
+#: ultralcd.cpp:5134
+msgid "E-correct:"
+msgstr "Correzione-E:"
 
 # MSG_EJECT_FILAMENT c=17 r=1
-#: ultralcd.cpp:6081
+#: messages.c:53
 msgid "Eject filament"
 msgstr "Espelli filamento "
 
-# MSG_EJECT_FILAMENT1 c=17 r=1
-#: ultralcd.cpp:5603
-msgid "Eject filament 1"
-msgstr "Espelli filamento 1"
-
-# MSG_EJECT_FILAMENT2 c=17 r=1
-#: ultralcd.cpp:5604
-msgid "Eject filament 2"
-msgstr "Espellere filamento 2"
-
-# MSG_EJECT_FILAMENT3 c=17 r=1
-#: ultralcd.cpp:5605
-msgid "Eject filament 3"
-msgstr "Espelli filamento 3"
-
-# MSG_EJECT_FILAMENT4 c=17 r=1
-#: ultralcd.cpp:5606
-msgid "Eject filament 4"
-msgstr "Espellere filamento 4"
-
-# MSG_EJECT_FILAMENT5 c=17 r=1
-#: ultralcd.cpp:5607
-msgid "Eject filament 5"
-msgstr "Espelli filamento 5"
-
 # 
-#: ultralcd.cpp:4640
+#: ultralcd.cpp:4869
 msgid "Eject"
 msgstr "Espellere"
 
 # MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1339
+#: mmu.cpp:1434
 msgid "Ejecting filament"
 msgstr "Espellendo filamento "
 
 # MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
-#: ultralcd.cpp:7096
+#: ultralcd.cpp:7917
 msgid "Endstop not hit"
 msgstr "Finecorsa fuori portata"
 
 # MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:7090
+#: ultralcd.cpp:7911
 msgid "Endstop"
 msgstr "Finecorsa"
 
 # MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:7078
+#: ultralcd.cpp:7899
 msgid "Endstops"
 msgstr "Finecorsa"
 
 # MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6132
+#: ultralcd.cpp:6859
 msgid "Error - static memory has been overwritten"
 msgstr "Errore - la memoria statica e stata sovrascritta"
 
 # MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4259
+#: ultralcd.cpp:4475
 msgid "ERROR: Filament sensor is not responding, please check connection."
 msgstr "ERRORE: il sensore filam. non risponde,Controllare conness."
 
@@ -375,38 +335,13 @@ msgstr "ERRORE: il sensore filam. non risponde,Controllare conness."
 msgid "ERROR:"
 msgstr "ERRORE:"
 
-# 
-#: Marlin_main.cpp:1006
-msgid "External SPI flash W25X20CL not responding."
-msgstr "Flash SPI W25X20CL esterno non risponde."
-
-# 
-#: ultralcd.cpp:5633
-msgid "Extruder 1"
-msgstr "Estrusore 1"
-
-# 
-#: ultralcd.cpp:5634
-msgid "Extruder 2"
-msgstr "Estrusore 2"
-
-# 
-#: ultralcd.cpp:5635
-msgid "Extruder 3"
-msgstr "Estrusore 3"
-
-# 
-#: ultralcd.cpp:5636
-msgid "Extruder 4"
-msgstr "Estrusore 4"
-
 # MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:7468
+#: ultralcd.cpp:8304
 msgid "Extruder fan:"
-msgstr "Ventola estrusore:"
+msgstr "Ventola estr:"
 
 # MSG_INFO_EXTRUDER c=15 r=1
-#: ultralcd.cpp:2266
+#: ultralcd.cpp:2244
 msgid "Extruder info"
 msgstr "Info estrusore"
 
@@ -416,14 +351,14 @@ msgid "Extruder"
 msgstr "Estrusore"
 
 # 
-#: ultralcd.cpp:6115
+#: ultralcd.cpp:6846
 msgid "Fail stats MMU"
-msgstr ""
+msgstr "Stat.fall. MMU"
 
 # MSG_FSENS_AUTOLOAD_ON c=17 r=1
-#: ultralcd.cpp:4927
+#: ultralcd.cpp:5168
 msgid "F. autoload  [on]"
-msgstr "Autocar.filam[on]"
+msgstr "Autocar.fil. [on]"
 
 # MSG_FSENS_AUTOLOAD_NA c=17 r=1
 #: messages.c:43
@@ -431,59 +366,54 @@ msgid "F. autoload [N/A]"
 msgstr "Autocar.fil.[N/A]"
 
 # MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-#: ultralcd.cpp:4929
+#: ultralcd.cpp:5170
 msgid "F. autoload [off]"
 msgstr "Autocar.fil.[off]"
 
 # 
-#: ultralcd.cpp:6112
+#: ultralcd.cpp:6843
 msgid "Fail stats"
-msgstr ""
+msgstr "Stat. fallimenti"
 
 # MSG_FAN_SPEED c=14
 #: messages.c:31
 msgid "Fan speed"
-msgstr "Velocita ventola"
+msgstr "Velocita vent."
 
 # MSG_SELFTEST_FAN c=20
-#: messages.c:74
+#: messages.c:78
 msgid "Fan test"
 msgstr "Test ventola"
 
 # MSG_FANS_CHECK_ON c=17 r=1
-#: ultralcd.cpp:5100
+#: ultralcd.cpp:5663
 msgid "Fans check   [on]"
-msgstr "Controllo ventole [on]"
+msgstr "Control.vent [on]"
 
 # MSG_FANS_CHECK_OFF c=17 r=1
-#: ultralcd.cpp:5102
+#: ultralcd.cpp:5665
 msgid "Fans check  [off]"
 msgstr "Control.vent[off]"
 
 # MSG_FSENSOR_ON
 #: messages.c:45
 msgid "Fil. sensor  [on]"
-msgstr "Sensor filam.[On]"
-
-# MSG_RESPONSE_POOR c=20 r=2
-#: Marlin_main.cpp:3146
-msgid "Fil. sensor response is poor, disable it?"
-msgstr "Risposta Sens. Fil. debole, disattivare? "
+msgstr "Sensore fil. [on]"
 
 # MSG_FSENSOR_NA
-#: ultralcd.cpp:4907
+#: ultralcd.cpp:5148
 msgid "Fil. sensor [N/A]"
-msgstr "Sensor filam[N/A]"
+msgstr "Sensore fil.[N/A]"
 
 # MSG_FSENSOR_OFF
 #: messages.c:44
 msgid "Fil. sensor [off]"
-msgstr "Sensor filam[off]"
+msgstr "Sensore fil.[off]"
 
 # 
-#: ultralcd.cpp:2013
+#: ultralcd.cpp:1852
 msgid "Filam. runouts"
-msgstr ""
+msgstr "Filam. esauriti"
 
 # MSG_FILAMENT_CLEAN c=20 r=2
 #: messages.c:32
@@ -491,32 +421,27 @@ msgid "Filament extruding & with correct color?"
 msgstr "Filamento estruso & con il giusto colore?"
 
 # MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2559
+#: ultralcd.cpp:2714
 msgid "Filament not loaded"
 msgstr "Fil. non caricato"
 
 # MSG_FILAMENT_SENSOR c=20
-#: ultralcd.cpp:7144
+#: messages.c:84
 msgid "Filament sensor"
 msgstr "Sensore filam."
 
-# MSG_SELFTEST_FILAMENT_SENSOR c=18
-#: ultralcd.cpp:7477
-msgid "Filament sensor:"
-msgstr "Sensore filam.:"
-
 # MSG_FILAMENT_USED c=19 r=1
-#: ultralcd.cpp:2725
+#: ultralcd.cpp:2885
 msgid "Filament used"
 msgstr "Filamento utilizzato"
 
 # MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2727
+#: ultralcd.cpp:2886
 msgid "Print time"
 msgstr "Tempo di stampa"
 
 # MSG_FILE_INCOMPLETE c=20 r=2
-#: ultralcd.cpp:7595
+#: ultralcd.cpp:8432
 msgid "File incomplete. Continue anyway?"
 msgstr "File incompleto. Continuare comunque?"
 
@@ -526,52 +451,52 @@ msgid "Finishing movements"
 msgstr "Finalizzando gli spostamenti"
 
 # MSG_V2_CALIBRATION c=17 r=1
-#: ultralcd.cpp:5177
+#: messages.c:105
 msgid "First layer cal."
-msgstr "Calibrazione primo layer."
+msgstr "Cal. primo strato"
 
 # MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:4740
+#: ultralcd.cpp:4982
 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:640
+#: mmu.cpp:724
 msgid "Fix the issue and then press button on MMU unit."
 msgstr "Risolvi il problema e quindi premi il bottone sull'unita MMU. "
 
 # MSG_FLOW
-#: ultralcd.cpp:6205
+#: ultralcd.cpp:6932
 msgid "Flow"
 msgstr "Flusso"
 
 # MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2228
+#: ultralcd.cpp:2206
 msgid "forum.prusa3d.com"
 msgstr ""
 
 # MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:71
+#: messages.c:75
 msgid "Front print fan?"
 msgstr "Ventola frontale?"
 
 # MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3101
+#: ultralcd.cpp:3294
 msgid "Front side[um]"
 msgstr "Fronte [um]"
 
 # MSG_SELFTEST_FANS
-#: ultralcd.cpp:7136
+#: ultralcd.cpp:7957
 msgid "Front/left fans"
 msgstr "Ventola frontale/sinistra"
 
 # MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:7066
+#: ultralcd.cpp:7887
 msgid "Heater/Thermistor"
 msgstr "Riscald./Termist."
 
 # MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:7475
+#: Marlin_main.cpp:8467
 msgid "Heating disabled by safety timer."
 msgstr "Riscaldamento fermato dal timer di sicurezza."
 
@@ -586,67 +511,62 @@ msgid "Heating"
 msgstr "Riscaldamento..."
 
 # MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:4719
+#: ultralcd.cpp:4961
 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:2229
+#: ultralcd.cpp:2207
 msgid "howto.prusa3d.com"
 msgstr ""
 
-# 
-#: ultralcd.cpp:6087
-msgid "Change extruder"
-msgstr "Cambio estrusore"
-
 # MSG_FILAMENTCHANGE
 #: messages.c:37
 msgid "Change filament"
 msgstr "Cambia filamento"
 
 # MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2474
+#: ultralcd.cpp:2629
 msgid "Change success!"
 msgstr "Cambio riuscito!"
 
 # MSG_CORRECTLY c=20
-#: ultralcd.cpp:2551
+#: ultralcd.cpp:2706
 msgid "Changed correctly?"
 msgstr "Cambiato correttamente?"
 
 # MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:77
+#: messages.c:81
 msgid "Checking bed     "
 msgstr "Verifica piano"
 
 # MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:7450
+#: ultralcd.cpp:8286
 msgid "Checking endstops"
 msgstr "Verifica finecorsa"
 
 # MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:7456
+#: ultralcd.cpp:8292
 msgid "Checking hotend  "
 msgstr "Verifica ugello"
 
 # MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:78
+#: messages.c:82
 msgid "Checking sensors "
 msgstr "Controllo sensori"
 
 # MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:7451
+#: ultralcd.cpp:8287
 msgid "Checking X axis  "
 msgstr "Verifica asse X"
 
 # MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:7452
+#: ultralcd.cpp:8288
 msgid "Checking Y axis  "
 msgstr "Verifica asse Y"
 
 # MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:7453
+#: ultralcd.cpp:8289
 msgid "Checking Z axis  "
 msgstr "Verifica asse Z"
 
@@ -666,114 +586,84 @@ msgid "Filament"
 msgstr "Filamento"
 
 # MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:4749
+#: ultralcd.cpp:4991
 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:4757
+#: ultralcd.cpp:4999
 msgid "I will run z calibration now."
 msgstr "Adesso avviero la Calibrazione Z."
 
 # MSG_WIZARD_V2_CAL_2 c=20 r=12
-#: ultralcd.cpp:4822
+#: ultralcd.cpp:5064
 msgid "I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."
 msgstr "Adesso iniziero a stampare una linea e tu dovrai abbassare l'ugello poco per volta ruotando la manopola sino a raggiungere una altezza ottimale. Per favore dai uno sguardo all'immagine del nostro manuale, cap.Calibrazione."
 
-# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: mesh_bed_calibration.cpp:2481
-msgid "Improving bed calibration point"
-msgstr "Perfezion. punto di calibraz. letto"
-
 # MSG_WATCH
-#: messages.c:93
+#: messages.c:99
 msgid "Info screen"
 msgstr "Schermata info"
 
-# MSG_FILAMENT_LOADING_T0 c=20 r=4
-#: messages.c:33
-msgid "Insert filament into extruder 1. Click when done."
-msgstr "Inserire filamento nell'estrusore 1. Click per continuare"
-
-# MSG_FILAMENT_LOADING_T1 c=20 r=4
-#: messages.c:34
-msgid "Insert filament into extruder 2. Click when done."
-msgstr "Inserire filamento nell'estrusore 2. Click per continuare"
-
-# MSG_FILAMENT_LOADING_T2 c=20 r=4
-#: messages.c:35
-msgid "Insert filament into extruder 3. Click when done."
-msgstr "Inserire filamento nell'estrusore 3. Click per continuare"
-
-# MSG_FILAMENT_LOADING_T3 c=20 r=4
-#: messages.c:36
-msgid "Insert filament into extruder 4. Click when done."
-msgstr "Inserire filamento nell'estrusore 4. Click per continuare"
-
 # 
-#: ultralcd.cpp:4782
+#: ultralcd.cpp:5024
 msgid "Is filament 1 loaded?"
 msgstr "Il filamento 1 e caricato?"
 
 # MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2459
+#: ultralcd.cpp:2614
 msgid "Insert filament"
 msgstr "Inserire filamento"
 
 # MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4785
+#: ultralcd.cpp:5027
 msgid "Is filament loaded?"
 msgstr "Il filamento e stato caricato?"
 
 # MSG_WIZARD_PLA_FILAMENT c=20 r=2
-#: ultralcd.cpp:4816
+#: ultralcd.cpp:5058
 msgid "Is it PLA filament?"
 msgstr "E' un filamento di PLA?"
 
 # MSG_PLA_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4561
+#: ultralcd.cpp:4790
 msgid "Is PLA filament loaded?"
 msgstr "E' stato caricato il filamento di PLA?"
 
 # MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:86
+#: messages.c:92
 msgid "Is steel sheet on heatbed?"
 msgstr "La piastra d'acciaio e sul piano riscaldato?"
 
-# MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20
-#: mesh_bed_calibration.cpp:2223
-msgid "Iteration "
-msgstr "Iterazione"
-
 # 
-#: ultralcd.cpp:1976
+#: ultralcd.cpp:1795
 msgid "Last print failures"
-msgstr ""
+msgstr "Fallimenti ultima stampa"
 
 # 
-#: ultralcd.cpp:1960
+#: ultralcd.cpp:1772
 msgid "Last print"
-msgstr ""
+msgstr "Ultima stampa"
 
 # MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:72
+#: messages.c:76
 msgid "Left hotend fan?"
 msgstr "Vent SX hotend?"
 
 # 
-#: ultralcd.cpp:2861
+#: ultralcd.cpp:3018
 msgid "Left"
 msgstr "Sinistra"
 
 # MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3099
+#: ultralcd.cpp:3292
 msgid "Left side [um]"
-msgstr "Lato sinistro [um]"
+msgstr "Sinistra  [um]"
 
 # 
-#: ultralcd.cpp:5107
+#: ultralcd.cpp:5680
 msgid "Lin. correction"
-msgstr "Correzione lin."
+msgstr "Correzione lineare"
 
 # MSG_BABYSTEP_Z
 #: messages.c:13
@@ -786,7 +676,7 @@ msgid "Load filament"
 msgstr "Carica filamento"
 
 # MSG_LOADING_COLOR
-#: ultralcd.cpp:2499
+#: ultralcd.cpp:2654
 msgid "Loading color"
 msgstr "Caricando colore"
 
@@ -796,157 +686,157 @@ msgid "Loading filament"
 msgstr "Caricando filamento"
 
 # MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:7120
+#: ultralcd.cpp:7941
 msgid "Loose pulley"
 msgstr "Puleggia lenta"
 
 # 
-#: ultralcd.cpp:6079
+#: ultralcd.cpp:6805
 msgid "Load to nozzle"
 msgstr "Carica ugello"
 
 # MSG_M117_V2_CALIBRATION c=25 r=1
-#: messages.c:53
+#: messages.c:55
 msgid "M117 First layer cal."
 msgstr "M117 Calibrazione primo layer."
 
 # MSG_MAIN
-#: messages.c:54
+#: messages.c:56
 msgid "Main"
 msgstr "Menu principale"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:55
+#: messages.c:59
 msgid "Measuring reference height of calibration point"
 msgstr "Misura altezza di rif. del punto di calib."
 
 # MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5192
+#: ultralcd.cpp:5763
 msgid "Mesh Bed Leveling"
-msgstr "Mesh livel. letto"
+msgstr "Livel. piatto"
 
 # MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:676
+#: mmu.cpp:762
 msgid "MMU OK. Resuming position..."
 msgstr "MMU OK. riprendendo la posizione... "
 
 # MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:669
+#: mmu.cpp:755
 msgid "MMU OK. Resuming temperature..."
 msgstr "MMU OK. Ripristino temperatura... "
 
 # 
-#: ultralcd.cpp:2896
+#: ultralcd.cpp:3059
 msgid "Measured skew"
-msgstr "Disassamento misurato"
+msgstr "Deviazione mis"
 
 # 
-#: ultralcd.cpp:1977
+#: ultralcd.cpp:1796
 msgid "MMU fails"
-msgstr ""
+msgstr "Fallimenti MMU"
 
 # 
-#: mmu.cpp:1399
+#: mmu.cpp:1613
 msgid "MMU load failed     "
-msgstr ""
+msgstr "Caricamento MMU fallito"
 
 # 
-#: ultralcd.cpp:1977
+#: ultralcd.cpp:1797
 msgid "MMU load fails"
-msgstr ""
+msgstr "Caricamenti MMU falliti"
 
 # MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:687
+#: mmu.cpp:773
 msgid "MMU OK. Resuming..."
 msgstr "MMU OK. Riprendendo... "
 
 # MSG_STEALTH_MODE_OFF
-#: messages.c:84
+#: messages.c:90
 msgid "Mode     [Normal]"
-msgstr "Modo    [normale]"
+msgstr "Mod.    [normale]"
 
 # MSG_SILENT_MODE_ON
-#: messages.c:83
+#: messages.c:89
 msgid "Mode     [silent]"
-msgstr "Modo [silenzioso]"
+msgstr "Mod. [silenziosa]"
 
 # 
-#: mmu.cpp:635
+#: mmu.cpp:719
 msgid "MMU needs user attention."
 msgstr "Il MMU richiede attenzione dall'utente."
 
 # 
-#: ultralcd.cpp:1994
+#: ultralcd.cpp:1823
 msgid "MMU power fails"
-msgstr ""
+msgstr "Manc. corr. MMU"
 
 # MSG_STEALTH_MODE_ON
-#: messages.c:85
+#: messages.c:91
 msgid "Mode    [Stealth]"
-msgstr "Modo [Silenziosa]"
+msgstr "Mod. [silenziosa]"
 
 # MSG_AUTO_MODE_ON
 #: messages.c:12
 msgid "Mode [auto power]"
-msgstr "Modo       [auto]"
+msgstr "Mod.       [auto]"
 
 # MSG_SILENT_MODE_OFF
-#: messages.c:82
+#: messages.c:88
 msgid "Mode [high power]"
-msgstr "Mode      [forte]"
+msgstr "Mod.      [forte]"
 
 # 
-#: ultralcd.cpp:2241
+#: ultralcd.cpp:2219
 msgid "MMU2 connected"
-msgstr ""
+msgstr "MMU2 connessa"
 
 # MSG_SELFTEST_MOTOR
-#: messages.c:79
+#: messages.c:83
 msgid "Motor"
 msgstr "Motore"
 
 # MSG_MOVE_AXIS
-#: ultralcd.cpp:5091
+#: ultralcd.cpp:5652
 msgid "Move axis"
 msgstr "Muovi asse"
 
 # MSG_MOVE_X
-#: ultralcd.cpp:4164
+#: ultralcd.cpp:4378
 msgid "Move X"
-msgstr "Muovi X"
+msgstr "Sposta X"
 
 # MSG_MOVE_Y
-#: ultralcd.cpp:4165
+#: ultralcd.cpp:4379
 msgid "Move Y"
-msgstr "Muovi Y"
+msgstr "Sposta Y"
 
 # MSG_MOVE_Z
-#: ultralcd.cpp:4166
+#: ultralcd.cpp:4380
 msgid "Move Z"
-msgstr "Muovi Z"
+msgstr "Sposta Z"
 
 # MSG_NO_MOVE
-#: Marlin_main.cpp:4908
+#: Marlin_main.cpp:5292
 msgid "No move."
 msgstr "Nessun movimento."
 
 # MSG_NO_CARD
-#: ultralcd.cpp:6059
+#: ultralcd.cpp:6772
 msgid "No SD card"
 msgstr "Nessuna SD"
 
 # 
-#: ultralcd.cpp:2867
+#: ultralcd.cpp:3024
 msgid "N/A"
 msgstr ""
 
 # MSG_NO
-#: messages.c:58
+#: messages.c:62
 msgid "No"
 msgstr ""
 
 # MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:7068
+#: ultralcd.cpp:7889
 msgid "Not connected"
 msgstr "Non connesso"
 
@@ -955,78 +845,73 @@ msgstr "Non connesso"
 msgid "New firmware version available:"
 msgstr "Nuova versione firmware disponibile:"
 
-# 
-#: 
-msgid "No "
-msgstr "No"
-
 # MSG_SELFTEST_FAN_NO c=19
-#: messages.c:75
+#: messages.c:79
 msgid "Not spinning"
 msgstr "Non gira"
 
 # MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4821
+#: ultralcd.cpp:5063
 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:4765
+#: ultralcd.cpp:5007
 msgid "Now I will preheat nozzle for PLA."
 msgstr "Adesso preriscaldero l'ugello per PLA."
 
 # MSG_NOZZLE
-#: messages.c:59
+#: messages.c:63
 msgid "Nozzle"
 msgstr "Ugello"
 
 # MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
-#: Marlin_main.cpp:1516
+#: Marlin_main.cpp:1519
 msgid "Old settings found. Default PID, Esteps etc. will be set."
-msgstr "Sono state trovate impostazioni vecchie. I valori di default di PID, Esteps etc. saranno impostati"
+msgstr "Sono state trovate impostazioni vecchie. Verranno impostati i valori predefiniti di PID, Esteps etc."
 
 # 
-#: ultralcd.cpp:4756
+#: ultralcd.cpp:4998
 msgid "Now remove the test print from steel sheet."
 msgstr "Ora rimuovete la stampa di prova dalla piastra in acciaio."
 
 # 
-#: ultralcd.cpp:1919
+#: ultralcd.cpp:1722
 msgid "Nozzle FAN"
-msgstr ""
+msgstr "Ventola estrusore"
 
 # MSG_PAUSE_PRINT
-#: ultralcd.cpp:6029
+#: ultralcd.cpp:6735
 msgid "Pause print"
 msgstr "Metti in pausa"
 
 # MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1741
+#: ultralcd.cpp:1606
 msgid "PID cal.           "
 msgstr "Calibrazione PID"
 
 # MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1747
+#: ultralcd.cpp:1612
 msgid "PID cal. finished"
 msgstr "Calib. PID completa"
 
 # MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5198
+#: ultralcd.cpp:5769
 msgid "PID calibration"
 msgstr "Calibrazione PID"
 
 # MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:808
+#: ultralcd.cpp:846
 msgid "PINDA Heating"
 msgstr "Riscaldamento PINDA"
 
 # MSG_PAPER c=20 r=8
-#: messages.c:60
+#: messages.c:64
 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:4830
+#: ultralcd.cpp:5072
 msgid "Please clean heatbed and then press the knob."
 msgstr "Per favore pulisci il piatto, poi premi la manopola."
 
@@ -1036,92 +921,92 @@ 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:7060
+#: ultralcd.cpp:7881
 msgid "Please check :"
 msgstr "Verifica:"
 
 # MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:94
+#: messages.c:100
 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_WIZARD_LOAD_FILAMENT c=20 r=8
-#: ultralcd.cpp:4664
+#: ultralcd.cpp:4894
 msgid "Please insert PLA filament to the extruder, then press knob to load it."
 msgstr "Per favore inserisci il filamento di PLA nell'estrusore, poi premi la manopola per caricare."
 
 # MSG_PLEASE_LOAD_PLA c=20 r=4
-#: ultralcd.cpp:4566
+#: ultralcd.cpp:4795
 msgid "Please load PLA filament first."
 msgstr "Per favore prima carica il filamento di PLA."
 
 # MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3025
+#: Marlin_main.cpp:3064
 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:65
 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:68
 msgid "Please press the knob to unload filament"
 msgstr "Premete la manopola per scaricare il filamento "
 
 # 
-#: ultralcd.cpp:4660
+#: ultralcd.cpp:4889
 msgid "Please insert PLA filament to the first tube of MMU, then press the knob to load it."
 msgstr "Per favore inserite del filamento PLA nel primo tubo del MMU, poi premete la manopola per caricarlo."
 
 # MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:66
+#: messages.c:70
 msgid "Please pull out filament immediately"
 msgstr "Estrarre il filamento immediatamente"
 
 # MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1347
+#: mmu.cpp:1440
 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:74
 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:4052
+#: Marlin_main.cpp:4355
 msgid "Please run XYZ calibration first."
 msgstr "Esegui la calibrazione XYZ prima. "
 
 # MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1293
+#: mmu.cpp:1359
 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:66
 msgid "Please wait"
 msgstr "Attendere"
 
 # 
-#: ultralcd.cpp:4755
+#: ultralcd.cpp:4997
 msgid "Please remove shipping helpers first."
 msgstr "Per favore rimuovete i materiali da spedizione"
 
 # MSG_PREHEAT_NOZZLE c=20
-#: messages.c:63
+#: messages.c:67
 msgid "Preheat the nozzle!"
 msgstr "Prerisc. ugello!"
 
 # MSG_PREHEAT
-#: ultralcd.cpp:6018
+#: ultralcd.cpp:6722
 msgid "Preheat"
 msgstr "Preriscalda"
 
 # MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:96
+#: messages.c:102
 msgid "Preheating nozzle. Please wait."
 msgstr "Preriscaldando l'ugello. Attendere prego."
 
@@ -1131,34 +1016,34 @@ msgid "Please upgrade."
 msgstr "Prego aggiornare."
 
 # MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:9150
+#: Marlin_main.cpp:10364
 msgid "Press knob to preheat nozzle and continue."
 msgstr "Premete la manopola per preriscaldare l'ugello e continuare."
 
 # 
-#: ultralcd.cpp:2013
+#: ultralcd.cpp:1851
 msgid "Power failures"
-msgstr ""
+msgstr "Mancanza corrente"
 
 # MSG_PRINT_ABORTED c=20
-#: messages.c:65
+#: messages.c:69
 msgid "Print aborted"
 msgstr "Stampa interrotta"
 
 # 
-#: ultralcd.cpp:2350
+#: ultralcd.cpp:2455
 msgid "Preheating to load"
-msgstr ""
+msgstr "Preriscaldamento per caricare"
 
 # 
-#: ultralcd.cpp:2351
+#: ultralcd.cpp:2459
 msgid "Preheating to unload"
-msgstr ""
+msgstr "Preriscaldamento per scaricare"
 
 # MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:7471
+#: ultralcd.cpp:8307
 msgid "Print fan:"
-msgstr "Ventola di stampa:"
+msgstr "Vent.stam:"
 
 # MSG_CARD_MENU
 #: messages.c:21
@@ -1166,17 +1051,17 @@ msgid "Print from SD"
 msgstr "Stampa da SD"
 
 # 
-#: ultralcd.cpp:2313
+#: ultralcd.cpp:2317
 msgid "Press the knob"
-msgstr ""
+msgstr "Premere la manopola"
 
 # MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1022
+#: ultralcd.cpp:1069
 msgid "Print paused"
 msgstr "Stampa in pausa"
 
 # 
-#: mmu.cpp:639
+#: mmu.cpp:723
 msgid "Press the knob to resume nozzle temperature."
 msgstr "Premete la manopola per recuperare la temperatura dell'ugello."
 
@@ -1186,37 +1071,27 @@ msgid "Printer has not been calibrated yet. Please follow the manual, chapter Fi
 msgstr "Stampante non ancora calibrata. Si prega di seguire il manuale, capitolo Primi Passi, sezione Sequenza di Calibrazione."
 
 # 
-#: ultralcd.cpp:1921
+#: ultralcd.cpp:1723
 msgid "Print FAN"
-msgstr ""
-
-# WELCOME_MSG c=20
-#: 
-msgid "Prusa i3 MK2.5 ready."
-msgstr ""
-
-# WELCOME_MSG c=20
-#: 
-msgid "Prusa i3 MK3 ready."
-msgstr "Prusa i3 MK3 pronta."
+msgstr "Ventola di stampa"
 
 # MSG_PRUSA3D
-#: ultralcd.cpp:2227
+#: ultralcd.cpp:2205
 msgid "prusa3d.com"
 msgstr ""
 
 # MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3102
+#: ultralcd.cpp:3295
 msgid "Rear side [um]"
 msgstr "Retro [um]"
 
 # MSG_RECOVERING_PRINT c=20 r=1
-#: Marlin_main.cpp:8575
+#: Marlin_main.cpp:9764
 msgid "Recovering print    "
 msgstr "Recupero stampa"
 
 # MSG_REMOVE_OLD_FILAMENT c=20 r=4
-#: mmu.cpp:744
+#: mmu.cpp:830
 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. "
 
@@ -1225,63 +1100,58 @@ msgstr "Rimuovi il filamento precedente e premi la manopola per caricare il nuov
 msgid "Prusa i3 MK3S OK."
 msgstr ""
 
-# 
-#: 
-msgid "Prusa i3 MK2 ready."
-msgstr "Prusa i3 MK2 pronta."
-
 # MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5203
+#: ultralcd.cpp:5774
 msgid "Reset XYZ calibr."
 msgstr "Reset calibrazione XYZ."
 
 # MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3103
+#: ultralcd.cpp:3296
 msgid "Reset"
 msgstr ""
 
 # MSG_RESUME_PRINT
-#: ultralcd.cpp:6033
+#: ultralcd.cpp:6742
 msgid "Resume print"
 msgstr "Riprendi stampa"
 
 # MSG_RESUMING_PRINT c=20 r=1
-#: messages.c:69
+#: messages.c:73
 msgid "Resuming print"
 msgstr "Riprendi stampa"
 
 # MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3100
+#: ultralcd.cpp:3293
 msgid "Right side[um]"
 msgstr "Destra [um]"
 
 # MSG_SECOND_SERIAL_ON c=17 r=1
-#: ultralcd.cpp:5119
+#: ultralcd.cpp:5692
 msgid "RPi port     [on]"
 msgstr "Porta RPi    [on]"
 
 # MSG_SECOND_SERIAL_OFF c=17 r=1
-#: ultralcd.cpp:5117
+#: ultralcd.cpp:5690
 msgid "RPi port    [off]"
 msgstr "Porta RPi   [off]"
 
 # MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4583
+#: ultralcd.cpp:4812
 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_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-#: ultralcd.cpp:5033
+#: ultralcd.cpp:5322
 msgid "SD card  [normal]"
 msgstr "Mem. SD [normale]"
 
 # MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:5031
+#: ultralcd.cpp:5320
 msgid "SD card [flshAir]"
 msgstr "Mem. SD [flshAir]"
 
 # 
-#: ultralcd.cpp:2862
+#: ultralcd.cpp:3019
 msgid "Right"
 msgstr "Destra"
 
@@ -1291,217 +1161,207 @@ msgid "Searching bed calibration point"
 msgstr "Ricerca dei punti di calibrazione del piano"
 
 # MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5126
+#: ultralcd.cpp:5699
 msgid "Select language"
 msgstr "Seleziona lingua"
 
 # MSG_SELFTEST_OK
-#: ultralcd.cpp:6631
+#: ultralcd.cpp:7452
 msgid "Self test OK"
 msgstr "Autotest OK"
 
 # MSG_SELFTEST_START c=20
-#: ultralcd.cpp:6449
+#: ultralcd.cpp:7238
 msgid "Self test start  "
 msgstr "Avvia autotest"
 
 # MSG_SELFTEST
-#: ultralcd.cpp:5179
+#: ultralcd.cpp:5750
 msgid "Selftest         "
 msgstr "Autotest"
 
 # MSG_SELFTEST_ERROR
-#: ultralcd.cpp:7058
+#: ultralcd.cpp:7879
 msgid "Selftest error !"
 msgstr "Errore Autotest !"
 
 # MSG_SELFTEST_FAILED c=20
-#: messages.c:73
+#: messages.c:77
 msgid "Selftest failed  "
 msgstr "Autotest fallito"
 
 # MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1548
+#: Marlin_main.cpp:1551
 msgid "Selftest will be run to calibrate accurate sensorless rehoming."
 msgstr "Verra effettuato un self test per calibrare l'homing senza sensori"
 
 # 
-#: ultralcd.cpp:4803
+#: ultralcd.cpp:5045
 msgid "Select nozzle preheat temperature which matches your material."
 msgstr "Selezionate la temperatura per il preriscaldamento dell'ugello adatta al vostro materiale."
 
 # 
-#: ultralcd.cpp:4552
+#: ultralcd.cpp:4780
 msgid "Select PLA filament:"
 msgstr "Selezionate filamento PLA:"
 
 # MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3111
+#: ultralcd.cpp:3314
 msgid "Set temperature:"
 msgstr "Imposta temperatura:"
 
 # MSG_SETTINGS
-#: messages.c:81
+#: messages.c:86
 msgid "Settings"
 msgstr "Impostazioni"
 
 # MSG_SHOW_END_STOPS c=17 r=1
-#: ultralcd.cpp:5200
+#: ultralcd.cpp:5771
 msgid "Show end stops"
 msgstr "Stato finecorsa"
 
 # 
-#: ultralcd.cpp:3819
+#: ultralcd.cpp:4025
 msgid "Sensor state"
-msgstr ""
-
-# 
-#: 
-msgid "Sensors info"
-msgstr ""
-
-# 
-#: 
-msgid "Show pinda state"
-msgstr "Mostra stato pinda"
+msgstr "Stato sensore"
 
 # MSG_FILE_CNT c=20 r=4
-#: 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_NONE c=17 r=1
-#: ultralcd.cpp:5043
-msgid "Sort:      [none]"
-msgstr "Ordina:    [none]"
+#: ultralcd.cpp:5332
+msgid "Sort       [none]"
+msgstr "Ordina  [nessuno]"
 
 # MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:5041
-msgid "Sort:      [time]"
-msgstr "Ordina:    [time]"
+#: ultralcd.cpp:5330
+msgid "Sort       [time]"
+msgstr "Ordina    [cron.]"
 
 # 
-#: ultralcd.cpp:2899
-msgid "Severe skew"
-msgstr "Disassamento grave"
+#: ultralcd.cpp:3062
+msgid "Severe skew:"
+msgstr "Devia.grave:"
 
 # MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:5042
-msgid "Sort:  [alphabet]"
-msgstr "Ordine: [alfabet]"
+#: ultralcd.cpp:5331
+msgid "Sort   [alphabet]"
+msgstr "Ordine [alfabeti]"
 
 # MSG_SORTING c=20 r=1
-#: cardreader.cpp:745
+#: cardreader.cpp:746
 msgid "Sorting files"
 msgstr "Ordinando i file"
 
 # MSG_SOUND_LOUD c=17 r=1
-#: sound.h:5
+#: sound.h:6
 msgid "Sound      [loud]"
 msgstr "Suono     [forte]"
 
 # 
-#: ultralcd.cpp:2898
-msgid "Slight skew"
-msgstr "Disassamento lieve"
+#: ultralcd.cpp:3061
+msgid "Slight skew:"
+msgstr "Devia.lieve:"
 
 # MSG_SOUND_MUTE c=17 r=1
-#: sound.h:8
+#: 
 msgid "Sound      [mute]"
 msgstr "Suono      [mute]"
 
 # 
-#: Marlin_main.cpp:4560
+#: Marlin_main.cpp:4871
 msgid "Some problem encountered, Z-leveling enforced ..."
 msgstr "Sono stati rilevati problemi, avviato livellamento Z ..."
 
 # MSG_SOUND_ONCE c=17 r=1
-#: sound.h:6
+#: sound.h:7
 msgid "Sound      [once]"
 msgstr "Suono   [singolo]"
 
 # MSG_SOUND_SILENT c=17 r=1
-#: sound.h:7
+#: sound.h:8
 msgid "Sound    [silent]"
 msgstr "Suono[silenzioso]"
 
 # MSG_SPEED
-#: ultralcd.cpp:6199
+#: ultralcd.cpp:6926
 msgid "Speed"
 msgstr "Velocita"
 
 # MSG_SELFTEST_FAN_YES c=19
-#: messages.c:76
+#: messages.c:80
 msgid "Spinning"
 msgstr "Gira"
 
 # MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4065
+#: Marlin_main.cpp:4368
 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:6108
+#: ultralcd.cpp:6839
 msgid "Statistics  "
 msgstr "Statistiche"
 
 # MSG_STOP_PRINT
-#: messages.c:87
+#: messages.c:93
 msgid "Stop print"
 msgstr "Arresta stampa"
 
 # MSG_STOPPED
-#: messages.c:88
+#: messages.c:94
 msgid "STOPPED. "
 msgstr "ARRESTATO."
 
 # MSG_SUPPORT
-#: ultralcd.cpp:6117
+#: ultralcd.cpp:6848
 msgid "Support"
 msgstr "Supporto"
 
 # MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:7138
+#: ultralcd.cpp:7959
 msgid "Swapped"
 msgstr "Scambiato"
 
 # MSG_TEMP_CALIBRATION c=20 r=1
-#: messages.c:89
+#: messages.c:95
 msgid "Temp. cal.          "
 msgstr "Calib. temp. "
 
 # MSG_TEMP_CALIBRATION_ON c=20 r=1
-#: ultralcd.cpp:5113
+#: ultralcd.cpp:5686
 msgid "Temp. cal.   [on]"
-msgstr "Calib. temp. [ON]"
+msgstr "Calib. temp. [on]"
 
 # MSG_TEMP_CALIBRATION_OFF c=20 r=1
-#: ultralcd.cpp:5111
+#: ultralcd.cpp:5684
 msgid "Temp. cal.  [off]"
-msgstr "Calib. temp.[OFF]"
+msgstr "Calib. temp.[off]"
 
 # MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5209
+#: ultralcd.cpp:5780
 msgid "Temp. calibration"
 msgstr "Calib. Temp."
 
 # MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3744
+#: ultralcd.cpp:3951
 msgid "Temperature calibration failed"
 msgstr "Calibrazione temperatura fallita"
 
 # MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:90
+#: messages.c:96
 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."
 
 # MSG_TEMPERATURE
-#: ultralcd.cpp:5089
+#: ultralcd.cpp:5650
 msgid "Temperature"
 msgstr ""
 
 # MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2273
+#: ultralcd.cpp:2251
 msgid "Temperatures"
 msgstr "Temperature"
 
@@ -1511,127 +1371,122 @@ msgid "There is still a need to make Z calibration. Please follow the manual, ch
 msgstr "E ancora necessario effettuare la calibrazione Z. Segui il manuale, capitolo Primi Passi, sezione Sequenza di Calibrazione. "
 
 # 
-#: ultralcd.cpp:2752
+#: ultralcd.cpp:2908
 msgid "Total filament"
 msgstr "Filamento totale"
 
 # 
-#: ultralcd.cpp:2754
+#: ultralcd.cpp:2908
 msgid "Total print time"
-msgstr "Tempo di stampa totale"
+msgstr "Tempo stampa totale"
 
 # MSG_TUNE
-#: ultralcd.cpp:6015
+#: ultralcd.cpp:6719
 msgid "Tune"
 msgstr "Regola"
 
 # 
-#: ultralcd.cpp:4640
+#: ultralcd.cpp:4869
 msgid "Unload"
 msgstr "Scarica"
 
 # 
-#: ultralcd.cpp:5617
-msgid "Unload all"
-msgstr "Rilasciare tutti"
-
-# 
-#: ultralcd.cpp:1994
+#: ultralcd.cpp:1820
 msgid "Total failures"
-msgstr ""
+msgstr "Totale fallimenti"
 
 # 
-#: ultralcd.cpp:2316
+#: ultralcd.cpp:2324
 msgid "to load filament"
-msgstr ""
+msgstr "per caricare il filamento"
 
 # 
-#: ultralcd.cpp:2317
+#: ultralcd.cpp:2328
 msgid "to unload filament"
-msgstr ""
+msgstr "per scaricare il filamento"
 
 # MSG_UNLOAD_FILAMENT c=17
-#: messages.c:91
+#: messages.c:97
 msgid "Unload filament"
-msgstr "Scarica filam."
+msgstr "Scarica filamento"
 
 # MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:92
+#: messages.c:98
 msgid "Unloading filament"
 msgstr "Scaricando filamento"
 
 # 
-#: ultralcd.cpp:1961
+#: ultralcd.cpp:1773
 msgid "Total"
-msgstr ""
+msgstr "Totale"
 
 # MSG_USED c=19 r=1
-#: ultralcd.cpp:5334
+#: ultralcd.cpp:5908
 msgid "Used during print"
 msgstr "Usati nella stampa"
 
 # MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2276
+#: ultralcd.cpp:2254
 msgid "Voltages"
 msgstr "Voltaggi"
 
 # 
-#: ultralcd.cpp:2249
+#: ultralcd.cpp:2227
 msgid "unknown"
-msgstr ""
+msgstr "sconosciuto"
 
 # MSG_USERWAIT
-#: Marlin_main.cpp:4876
+#: Marlin_main.cpp:5263
 msgid "Wait for user..."
 msgstr "Attendendo utente..."
 
 # MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3255
+#: ultralcd.cpp:3458
 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:3219
+#: ultralcd.cpp:3422
 msgid "Waiting for PINDA probe cooling"
 msgstr "In attesa del raffreddamento della sonda PINDA"
 
 # 
-#: ultralcd.cpp:4639
+#: ultralcd.cpp:4868
 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:1508
+#: Marlin_main.cpp:1511
 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:1500
+#: Marlin_main.cpp:1503
 msgid "Warning: motherboard type changed."
 msgstr "Avviso: tipo di scheda madre cambiato"
 
 # MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1504
+#: Marlin_main.cpp:1507
 msgid "Warning: printer type changed."
 msgstr "Avviso: tipo di stampante cambiato."
 
 # MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3014
+#: Marlin_main.cpp:3054
 msgid "Was filament unload successful?"
 msgstr "Filamento scaricato con successo?"
 
 # MSG_SELFTEST_WIRINGERROR
-#: messages.c:80
+#: messages.c:85
 msgid "Wiring error"
 msgstr "Errore cablaggio"
 
 # MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5176
+#: ultralcd.cpp:5747
 msgid "Wizard"
 msgstr ""
 
 # MSG_XYZ_DETAILS c=19 r=1
-#: ultralcd.cpp:2265
+#: ultralcd.cpp:2243
 msgid "XYZ cal. details"
 msgstr "XYZ Cal. dettagli"
 
@@ -1641,107 +1496,317 @@ msgid "XYZ calibration failed. Please consult the manual."
 msgstr "Calibrazione XYZ fallita. Si prega di consultare il manuale."
 
 # MSG_YES
-#: messages.c:98
+#: messages.c:104
 msgid "Yes"
 msgstr "Si"
 
 # MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:97
+#: messages.c:103
 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:3715
+#: ultralcd.cpp:3922
 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:3712
+#: ultralcd.cpp:3919
 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
 msgstr "Calibrazion XYZ corretta. Assi X/Y leggermente storti. Ben fatto!"
 
 # 
-#: ultralcd.cpp:4885
-msgid "X-correct"
-msgstr "Correzione-X"
+#: ultralcd.cpp:5130
+msgid "X-correct:"
+msgstr "Correzione-X:"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3709
+#: ultralcd.cpp:3916
 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:3693
+#: ultralcd.cpp:3900
 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:3696
+#: ultralcd.cpp:3903
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "Calibrazione XYZ compromessa. Punto anteriore destro non raggiungibile."
 
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8
-#: ultralcd.cpp:3699
-msgid "XYZ calibration compromised. Left front calibration point not reachable."
-msgstr "Calibrazione XYZ compromessa. Punto anteriore sinistro non raggiungibile."
-
 # MSG_LOAD_ALL c=17
-#: ultralcd.cpp:5575
+#: ultralcd.cpp:6166
 msgid "Load all"
 msgstr "Caricare tutti"
 
-# MSG_LOAD_FILAMENT_1 c=17
-#: ultralcd.cpp:5576
-msgid "Load filament 1"
-msgstr "Caricare fil. 1"
-
 # 
-#: ultralcd.cpp:3675
+#: ultralcd.cpp:3882
 msgid "XYZ calibration failed. Bed calibration point was not found."
 msgstr "Calibrazione XYZ fallita. Il punto di calibrazione sul letto non e' stato trovato."
 
 # 
-#: ultralcd.cpp:3681
+#: ultralcd.cpp:3888
 msgid "XYZ calibration failed. Front calibration points not reachable."
 msgstr "Calibrazione XYZ fallita. Punti anteriori non raggiungibili."
 
 # 
-#: ultralcd.cpp:3687
-msgid "XYZ calibration failed. Left front calibration point not reachable."
-msgstr "Calibrazione XYZ fallita. Punto anteriore sinistro non raggiungibile."
-
-# MSG_LOAD_FILAMENT_2 c=17
-#: ultralcd.cpp:5577
-msgid "Load filament 2"
-msgstr "Caricare fil. 2"
-
-# 
-#: ultralcd.cpp:3684
+#: ultralcd.cpp:3891
 msgid "XYZ calibration failed. Right front calibration point not reachable."
 msgstr "Calibrazione XYZ fallita. Punto anteriore destro non raggiungibile."
 
-# MSG_LOAD_FILAMENT_3 c=17
-#: ultralcd.cpp:5578
-msgid "Load filament 3"
-msgstr "Carica fil. 3"
-
 # 
-#: ultralcd.cpp:2859
+#: ultralcd.cpp:3016
 msgid "Y distance from min"
 msgstr "Distanza Y dal min"
 
 # 
-#: ultralcd.cpp:4886
-msgid "Y-correct"
-msgstr "Correzione-Y"
+#: ultralcd.cpp:5131
+msgid "Y-correct:"
+msgstr "Correzione-Y:"
+
+# MSG_OFF
+#: menu.cpp:426
+msgid " [off]"
+msgstr ""
+
+# 
+#: messages.c:57
+msgid "Back"
+msgstr "Indietro"
+
+# 
+#: ultralcd.cpp:5639
+msgid "Checks"
+msgstr "Controlli"
+
+# 
+#: ultralcd.cpp:7973
+msgid "False triggering"
+msgstr "Falso innesco"
+
+# 
+#: ultralcd.cpp:4030
+msgid "FINDA:"
+msgstr ""
+
+# 
+#: ultralcd.cpp:5545
+msgid "Firmware   [none]"
+msgstr "Firmware[nessuno]"
+
+# 
+#: ultralcd.cpp:5551
+msgid "Firmware [strict]"
+msgstr "Firmware [esatto]"
+
+# 
+#: ultralcd.cpp:5548
+msgid "Firmware   [warn]"
+msgstr "Firmware [avviso]"
+
+# 
+#: messages.c:87
+msgid "HW Setup"
+msgstr "Installazione HW"
+
+# 
+#: ultralcd.cpp:4034
+msgid "IR:"
+msgstr ""
+
+# 
+#: ultralcd.cpp:7046
+msgid "Magnets comp.[N/A]"
+msgstr "Comp. Magneti[N/A]"
+
+# 
+#: ultralcd.cpp:7044
+msgid "Magnets comp.[Off]"
+msgstr "Comp. Magneti[off]"
+
+# 
+#: ultralcd.cpp:7043
+msgid "Magnets comp. [On]"
+msgstr "Comp. Magneti [on]"
 
-# MSG_LOAD_FILAMENT_4 c=17
-#: ultralcd.cpp:5579
-msgid "Load filament 4"
-msgstr "Caricare fil. 4"
+# 
+#: ultralcd.cpp:7035
+msgid "Mesh         [3x3]"
+msgstr "Griglia      [3x3]"
+
+# 
+#: ultralcd.cpp:7036
+msgid "Mesh         [7x7]"
+msgstr "Griglia      [7x7]"
+
+# 
+#: ultralcd.cpp:5677
+msgid "Mesh bed leveling"
+msgstr "Mesh livel. letto"
+
+# 
+#: Marlin_main.cpp:856
+msgid "MK3S firmware detected on MK3 printer"
+msgstr "Firmware MK3S rilevato su stampante MK3"
+
+# 
+#: ultralcd.cpp:5306
+msgid "MMU Mode [Normal]"
+msgstr "Modalita MMU [Normale]"
 
-# MSG_LOAD_FILAMENT_5 c=17
-#: ultralcd.cpp:5582
-msgid "Load filament 5"
-msgstr "Caricare fil. 5"
+# 
+#: ultralcd.cpp:5307
+msgid "MMU Mode[Stealth]"
+msgstr "Modalita MMU [Silenziosa]"
+
+# 
+#: ultralcd.cpp:4511
+msgid "Mode change in progress ..."
+msgstr "Cambio modalita in corso ..."
+
+# 
+#: ultralcd.cpp:5506
+msgid "Model      [none]"
+msgstr "Modello [nessuno]"
+
+# 
+#: ultralcd.cpp:5512
+msgid "Model    [strict]"
+msgstr "Modello  [esatto]"
+
+# 
+#: ultralcd.cpp:5509
+msgid "Model      [warn]"
+msgstr "Modello  [avviso]"
+
+# 
+#: ultralcd.cpp:5467
+msgid "Nozzle d.  [0.25]"
+msgstr "Diam.Ugello[0.25]"
+
+# 
+#: ultralcd.cpp:5470
+msgid "Nozzle d.  [0.40]"
+msgstr "Diam.Ugello[0.40]"
+
+# 
+#: ultralcd.cpp:5473
+msgid "Nozzle d.  [0.60]"
+msgstr "Diam.Ugello[0.60]"
+
+# 
+#: ultralcd.cpp:5421
+msgid "Nozzle     [none]"
+msgstr "Ugello  [nessuno]"
+
+# 
+#: ultralcd.cpp:5427
+msgid "Nozzle   [strict]"
+msgstr "Ugello   [esatto]"
+
+# 
+#: ultralcd.cpp:5424
+msgid "Nozzle     [warn]"
+msgstr "Ugello   [avviso]"
+
+# 
+#: util.cpp:510
+msgid "G-code sliced for a different level. Continue?"
+msgstr "G-code processato per un livello diverso. Continuare?"
+
+# 
+#: util.cpp:516
+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:427
+msgid "G-code sliced for a different printer type. Continue?"
+msgstr "G-code processato per una stampante diversa. Continuare?"
+
+# 
+#: util.cpp:433
+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:477
+msgid "G-code sliced for a newer firmware. Continue?"
+msgstr "G-code processato per un firmware piu recente. Continuare?"
+
+# 
+#: util.cpp:483
+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:4026
+msgid "PINDA:"
+msgstr ""
+
+# 
+#: ultralcd.cpp:2465
+msgid "Preheating to cut"
+msgstr "Preriscaldamento per taglio"
+
+# 
+#: ultralcd.cpp:2462
+msgid "Preheating to eject"
+msgstr "Preriscaldamento per espulsione"
+
+# 
+#: util.cpp:390
+msgid "Printer nozzle diameter differs from the G-code. Continue?"
+msgstr "Diametro ugello diverso da G-Code. Continuare?"
+
+# 
+#: util.cpp:397
+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."
+
+# 
+#: ultralcd.cpp:6683
+msgid "Rename"
+msgstr "Rinomina"
+
+# 
+#: ultralcd.cpp:6679
+msgid "Select"
+msgstr "Seleziona"
+
+# 
+#: ultralcd.cpp:2245
+msgid "Sensor info"
+msgstr "Info Sensore"
+
+# 
+#: messages.c:58
+msgid "Sheet"
+msgstr "Piano"
+
+# 
+#: sound.h:9
+msgid "Sound    [assist]"
+msgstr "Suono   [assist.]"
+
+# 
+#: ultralcd.cpp:5637
+msgid "Steel sheets"
+msgstr "Piani d'acciaio"
+
+# 
+#: ultralcd.cpp:5132
+msgid "Z-correct:"
+msgstr "Correzione-Z:"
+
+# 
+#: ultralcd.cpp:7038
+msgid "Z-probe nr.    [1]"
+msgstr "Z-probe nr.    [1]"
+
+# 
+#: ultralcd.cpp:7040
+msgid "Z-probe nr.    [3]"
+msgstr "Z-probe nr.    [3]"
 

+ 594 - 529
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: čt 7. úno 2019 14:49:46\n"
-"PO-Revision-Date: čt 7. úno 2019 14:49:46\n"
+"POT-Creation-Date: Sun, Sep 22, 2019 2:08:35 PM\n"
+"PO-Revision-Date: Sun, Sep 22, 2019 2:08:35 PM\n"
 "Language-Team: \n"
 "X-Generator: Poedit 2.0.7\n"
 "X-Poedit-SourceCharset: UTF-8\n"
@@ -21,72 +21,72 @@ msgid " of 4"
 msgstr " z 4"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:56
+#: messages.c:60
 msgid " of 9"
 msgstr " z 9"
 
 # MSG_MEASURED_OFFSET
-#: ultralcd.cpp:2914
+#: ultralcd.cpp:3089
 msgid "[0;0] point offset"
-msgstr "[0;0] przesuniecie punktu"
+msgstr "[0;0] przesun.punktu"
 
 # MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
-#: ultralcd.cpp:4219
-msgid "\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode"
-msgstr "\x1b[2JWykrywanie zderzen moze\x1b[1;0Hbyc wlaczone tylko w\x1b[2;0Htrybie Normalnym"
+#: 
+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
-#: ultralcd.cpp:4231
-msgid "\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode"
-msgstr "\x1b[2JUWAGA:\x1b[1;0HWykrywanie zderzen\x1b[2;0Hwylaczone w\x1b[3;0Htrybie Stealth"
+#: 
+msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
+msgstr "UWAGA:\x0aWykrywanie zderzen\x0awylaczone w\x0atrybie Stealth"
 
 # 
-#: ultralcd.cpp:2353
+#: ultralcd.cpp:2472
 msgid ">Cancel"
-msgstr ""
+msgstr ">Anuluj"
 
-# MSG_BABYSTEPPING_Z c=20
-#: ultralcd.cpp:3043
-msgid "Adjusting Z"
-msgstr "Dostrajanie Z"
+# MSG_BABYSTEPPING_Z c=15
+#: ultralcd.cpp:3209
+msgid "Adjusting Z:"
+msgstr "Ustawianie Z:"
 
 # MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:7459
+#: ultralcd.cpp:8295
 msgid "All correct      "
 msgstr "Wszystko OK "
 
 # MSG_WIZARD_DONE c=20 r=8
-#: messages.c:95
+#: messages.c:101
 msgid "All is done. Happy printing!"
 msgstr "Gotowe. Udanego drukowania!"
 
 # 
-#: ultralcd.cpp:2109
+#: ultralcd.cpp:2009
 msgid "Ambient"
-msgstr ""
+msgstr "Otoczenie"
 
 # MSG_PRESS c=20
-#: ultralcd.cpp:2463
+#: ultralcd.cpp:2618
 msgid "and press the knob"
 msgstr "i nacisnij pokretlo"
 
 # MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3330
+#: ultralcd.cpp:3529
 msgid "Are left and right Z~carriages all up?"
-msgstr "Obydwa konce osi dojechaly do gornych ogranicznikow?"
+msgstr "Obydwa konce osi sa na szczycie?"
 
 # MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:4959
+#: ultralcd.cpp:5200
 msgid "SpoolJoin    [on]"
 msgstr "SpoolJoin    [wl]"
 
 # 
-#: ultralcd.cpp:4955
+#: ultralcd.cpp:5196
 msgid "SpoolJoin   [N/A]"
-msgstr "SpoolJoin    [nd]"
+msgstr "SpoolJoin   [N/D]"
 
-#  MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:4963
+# MSG_AUTO_DEPLETE_OFF c=17 r=1
+#: ultralcd.cpp:5204
 msgid "SpoolJoin   [off]"
 msgstr "SpoolJoin   [wyl]"
 
@@ -96,32 +96,32 @@ msgid "Auto home"
 msgstr "Auto zerowanie"
 
 # MSG_AUTOLOAD_FILAMENT c=17
-#: ultralcd.cpp:6091
+#: ultralcd.cpp:6822
 msgid "AutoLoad filament"
-msgstr "AutoLadowanie fil."
+msgstr "Autoladowanie fil."
 
 # MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4246
+#: ultralcd.cpp:4462
 msgid "Autoloading filament available only when filament sensor is turned on..."
 msgstr "Autoladowanie filamentu dostepne tylko gdy czujnik filamentu jest wlaczony..."
 
 # MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2655
+#: ultralcd.cpp:2813
 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:7128
+#: ultralcd.cpp:7949
 msgid "Axis length"
 msgstr "Dlugosc osi"
 
 # MSG_SELFTEST_AXIS
-#: ultralcd.cpp:7130
+#: ultralcd.cpp:7951
 msgid "Axis"
 msgstr "Os"
 
 # MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:7072
+#: ultralcd.cpp:7893
 msgid "Bed / Heater"
 msgstr "Stol / Grzanie"
 
@@ -136,47 +136,37 @@ msgid "Bed Heating"
 msgstr "Grzanie stolu.."
 
 # MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5197
+#: ultralcd.cpp:5768
 msgid "Bed level correct"
-msgstr "Korekta poziomowania stolu"
+msgstr "Korekta stolu"
 
 # MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
 #: messages.c:18
 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_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4
-#: Marlin_main.cpp:4508
-msgid "Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset."
-msgstr "Poziomowanie stolu nieudane. Sensor odlacz. lub uszkodz. przewod. Czekam na reset."
-
-# MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4
-#: Marlin_main.cpp:4512
-msgid "Bed leveling failed. Sensor triggered too high. Waiting for reset."
-msgstr "Kalibracja Z nieudana. Sensor aktywowal za wysoko. Czekam na reset."
-
 # MSG_BED
 #: messages.c:15
 msgid "Bed"
 msgstr "Stol"
 
 # MSG_MENU_BELT_STATUS c=15 r=1
-#: ultralcd.cpp:2135
+#: ultralcd.cpp:2059
 msgid "Belt status"
 msgstr "Stan paskow"
 
 # MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:67
+#: messages.c:71
 msgid "Blackout occurred. Recover print?"
 msgstr "Wykryto zanik napiecia. Kontynowac?"
 
 # 
-#: ultralcd.cpp:7461
+#: ultralcd.cpp:8297
 msgid "Calibrating home"
-msgstr ""
+msgstr "Zerowanie osi"
 
 # MSG_CALIBRATE_BED
-#: ultralcd.cpp:5186
+#: ultralcd.cpp:5757
 msgid "Calibrate XYZ"
 msgstr "Kalibracja XYZ"
 
@@ -186,12 +176,12 @@ msgid "Calibrate Z"
 msgstr "Kalibruj Z"
 
 # MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4427
+#: ultralcd.cpp:4654
 msgid "Calibrate"
 msgstr "Kalibruj"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3290
+#: ultralcd.cpp:3492
 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."
 
@@ -201,37 +191,32 @@ msgid "Calibrating Z"
 msgstr "Kalibruje Z"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3290
+#: ultralcd.cpp:3492
 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:778
+#: ultralcd.cpp:816
 msgid "Calibration done"
 msgstr "Kalibracja OK"
 
 # MSG_MENU_CALIBRATION
-#: messages.c:57
+#: messages.c:61
 msgid "Calibration"
 msgstr "Kalibracja"
 
 # 
-#: ultralcd.cpp:4552
+#: ultralcd.cpp:4781
 msgid "Cancel"
 msgstr "Anuluj"
 
-# MSG_SD_INSERTED
-#: 
-msgid "Card inserted"
-msgstr "Karta wlozona"
-
 # MSG_SD_REMOVED
-#: ultralcd.cpp:7819
+#: ultralcd.cpp:8679
 msgid "Card removed"
 msgstr "Karta wyjeta"
 
 # MSG_NOT_COLOR
-#: ultralcd.cpp:2563
+#: ultralcd.cpp:2718
 msgid "Color not correct"
 msgstr "Kolor zanieczysz."
 
@@ -241,7 +226,7 @@ msgid "Cooldown"
 msgstr "Chlodzenie"
 
 # 
-#: ultralcd.cpp:4360
+#: ultralcd.cpp:4587
 msgid "Copy selected language?"
 msgstr "Skopiowac wybrany jezyk?"
 
@@ -253,7 +238,7 @@ msgstr "Wykr.zderzen [wl]"
 # MSG_CRASHDETECT_NA
 #: messages.c:25
 msgid "Crash det.  [N/A]"
-msgstr "Wykr.zderzen[n/d]"
+msgstr "Wykr.zderzen[N/D]"
 
 # MSG_CRASHDETECT_OFF
 #: messages.c:26
@@ -266,29 +251,29 @@ msgid "Crash detected."
 msgstr "Zderzenie wykryte"
 
 # 
-#: Marlin_main.cpp:608
+#: Marlin_main.cpp:600
 msgid "Crash detected. Resume print?"
 msgstr "Wykryto zderzenie. Wznowic druk?"
 
 # 
-#: ultralcd.cpp:2013
+#: ultralcd.cpp:1853
 msgid "Crash"
-msgstr ""
+msgstr "Zderzenie"
 
 # MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:5335
+#: ultralcd.cpp:5909
 msgid "Current"
 msgstr "Aktualne"
 
 # MSG_DATE c=17 r=1
-#: ultralcd.cpp:2235
+#: ultralcd.cpp:2213
 msgid "Date:"
 msgstr "Data:"
 
 # MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5093
+#: ultralcd.cpp:5654
 msgid "Disable steppers"
-msgstr "Wylaczenie silnikow"
+msgstr "Wylacz silniki"
 
 # MSG_BABYSTEP_Z_NOT_SET c=20 r=12
 #: messages.c:14
@@ -296,77 +281,52 @@ 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_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:4828
+#: ultralcd.cpp:5070
 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=9
-#: ultralcd.cpp:4889
-msgid "E-correct"
-msgstr "Korekcja E"
+# MSG_EXTRUDER_CORRECTION c=10
+#: ultralcd.cpp:5134
+msgid "E-correct:"
+msgstr "Korekcja-E:"
 
 # MSG_EJECT_FILAMENT c=17 r=1
-#: ultralcd.cpp:6081
+#: messages.c:53
 msgid "Eject filament"
 msgstr "Wysun filament"
 
-# MSG_EJECT_FILAMENT1 c=17 r=1
-#: ultralcd.cpp:5603
-msgid "Eject filament 1"
-msgstr "Wysun filament 1"
-
-# MSG_EJECT_FILAMENT2 c=17 r=1
-#: ultralcd.cpp:5604
-msgid "Eject filament 2"
-msgstr "Wysun filament 2"
-
-# MSG_EJECT_FILAMENT3 c=17 r=1
-#: ultralcd.cpp:5605
-msgid "Eject filament 3"
-msgstr "Wysun filament 3"
-
-# MSG_EJECT_FILAMENT4 c=17 r=1
-#: ultralcd.cpp:5606
-msgid "Eject filament 4"
-msgstr "Wysun filament 4"
-
-# MSG_EJECT_FILAMENT5 c=17 r=1
-#: ultralcd.cpp:5607
-msgid "Eject filament 5"
-msgstr "Wysun filament 5"
-
 # 
-#: ultralcd.cpp:4640
+#: ultralcd.cpp:4869
 msgid "Eject"
 msgstr "Wysun"
 
 # MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1339
+#: mmu.cpp:1434
 msgid "Ejecting filament"
 msgstr "Wysuwanie filamentu"
 
 # MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
-#: ultralcd.cpp:7096
+#: ultralcd.cpp:7917
 msgid "Endstop not hit"
 msgstr "Krancowka nie aktyw."
 
 # MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:7090
+#: ultralcd.cpp:7911
 msgid "Endstop"
 msgstr "Krancowka"
 
 # MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:7078
+#: ultralcd.cpp:7899
 msgid "Endstops"
 msgstr "Krancowki"
 
 # MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6132
+#: ultralcd.cpp:6859
 msgid "Error - static memory has been overwritten"
 msgstr "Blad - pamiec statyczna zostala nadpisana"
 
 # MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4259
+#: ultralcd.cpp:4475
 msgid "ERROR: Filament sensor is not responding, please check connection."
 msgstr "BLAD: Czujnik filamentu nie odpowiada, sprawdz polaczenie."
 
@@ -375,40 +335,15 @@ msgstr "BLAD: Czujnik filamentu nie odpowiada, sprawdz polaczenie."
 msgid "ERROR:"
 msgstr "BLAD:"
 
-# 
-#: Marlin_main.cpp:1006
-msgid "External SPI flash W25X20CL not responding."
-msgstr "Zewnetrzna pamiec flash SPI W25X20CL nie odpowiada."
-
-# 
-#: ultralcd.cpp:5633
-msgid "Extruder 1"
-msgstr "Ekstruder 1"
-
-# 
-#: ultralcd.cpp:5634
-msgid "Extruder 2"
-msgstr "Ekstruder 2"
-
-# 
-#: ultralcd.cpp:5635
-msgid "Extruder 3"
-msgstr "Ekstruder 3"
-
-# 
-#: ultralcd.cpp:5636
-msgid "Extruder 4"
-msgstr "Ekstruder 4"
-
 # MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:7468
+#: ultralcd.cpp:8304
 msgid "Extruder fan:"
-msgstr "Went. ekstrudera:"
+msgstr "WentHotend:"
 
 # MSG_INFO_EXTRUDER c=15 r=1
-#: ultralcd.cpp:2266
+#: ultralcd.cpp:2244
 msgid "Extruder info"
-msgstr "Informacje o ekstruderze"
+msgstr "Ekstruder - info"
 
 # MSG_MOVE_E
 #: messages.c:29
@@ -416,14 +351,14 @@ msgid "Extruder"
 msgstr "Ekstruder"
 
 # 
-#: ultralcd.cpp:6115
+#: ultralcd.cpp:6846
 msgid "Fail stats MMU"
-msgstr ""
+msgstr "Bledy MMU"
 
 # MSG_FSENS_AUTOLOAD_ON c=17 r=1
-#: ultralcd.cpp:4927
+#: ultralcd.cpp:5168
 msgid "F. autoload  [on]"
-msgstr "Autolad. fil [wl]"
+msgstr "Autolad.fil. [wl]"
 
 # MSG_FSENS_AUTOLOAD_NA c=17 r=1
 #: messages.c:43
@@ -431,14 +366,14 @@ msgid "F. autoload [N/A]"
 msgstr "Autolad.fil.[N/D]"
 
 # MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-#: ultralcd.cpp:4929
+#: ultralcd.cpp:5170
 msgid "F. autoload [off]"
 msgstr "Autolad.fil.[wyl]"
 
 # 
-#: ultralcd.cpp:6112
+#: ultralcd.cpp:6843
 msgid "Fail stats"
-msgstr ""
+msgstr "Statystyki bledow"
 
 # MSG_FAN_SPEED c=14
 #: messages.c:31
@@ -446,17 +381,17 @@ msgid "Fan speed"
 msgstr "Predkosc went."
 
 # MSG_SELFTEST_FAN c=20
-#: messages.c:74
+#: messages.c:78
 msgid "Fan test"
 msgstr "Test wentylatora"
 
 # MSG_FANS_CHECK_ON c=17 r=1
-#: ultralcd.cpp:5100
+#: ultralcd.cpp:5663
 msgid "Fans check   [on]"
 msgstr "Sprawd.went. [wl]"
 
 # MSG_FANS_CHECK_OFF c=17 r=1
-#: ultralcd.cpp:5102
+#: ultralcd.cpp:5665
 msgid "Fans check  [off]"
 msgstr "Sprawd.went.[wyl]"
 
@@ -465,13 +400,8 @@ msgstr "Sprawd.went.[wyl]"
 msgid "Fil. sensor  [on]"
 msgstr "Czuj. filam. [wl]"
 
-# MSG_RESPONSE_POOR c=20 r=2
-#: Marlin_main.cpp:3146
-msgid "Fil. sensor response is poor, disable it?"
-msgstr "Reakcja czujnika slaba, wylaczyc?"
-
 # MSG_FSENSOR_NA
-#: ultralcd.cpp:4907
+#: ultralcd.cpp:5148
 msgid "Fil. sensor [N/A]"
 msgstr "Czuj. filam.[N/D]"
 
@@ -481,42 +411,37 @@ msgid "Fil. sensor [off]"
 msgstr "Czuj. filam.[wyl]"
 
 # 
-#: ultralcd.cpp:2013
+#: ultralcd.cpp:1852
 msgid "Filam. runouts"
-msgstr ""
+msgstr "Konc. filamentu"
 
 # MSG_FILAMENT_CLEAN c=20 r=2
 #: messages.c:32
 msgid "Filament extruding & with correct color?"
-msgstr "Filament wychodzi z dyszy a kolor jest czysty?"
+msgstr "Filament wychodzi z dyszy, kolor jest ok?"
 
 # MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2559
+#: ultralcd.cpp:2714
 msgid "Filament not loaded"
 msgstr "Fil. nie zaladowany"
 
 # MSG_FILAMENT_SENSOR c=20
-#: ultralcd.cpp:7144
+#: messages.c:84
 msgid "Filament sensor"
 msgstr "Czujnik filamentu"
 
-# MSG_SELFTEST_FILAMENT_SENSOR c=18
-#: ultralcd.cpp:7477
-msgid "Filament sensor:"
-msgstr "Czujnik filamentu:"
-
 # MSG_FILAMENT_USED c=19 r=1
-#: ultralcd.cpp:2725
+#: ultralcd.cpp:2885
 msgid "Filament used"
 msgstr "Uzyty filament"
 
 # MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2727
+#: ultralcd.cpp:2886
 msgid "Print time"
 msgstr "Czas druku"
 
 # MSG_FILE_INCOMPLETE c=20 r=2
-#: ultralcd.cpp:7595
+#: ultralcd.cpp:8432
 msgid "File incomplete. Continue anyway?"
 msgstr "Plik niekompletny. Kontynowac?"
 
@@ -526,52 +451,52 @@ msgid "Finishing movements"
 msgstr "Konczenie druku"
 
 # MSG_V2_CALIBRATION c=17 r=1
-#: ultralcd.cpp:5177
+#: messages.c:105
 msgid "First layer cal."
 msgstr "Kal. 1. warstwy"
 
 # MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:4740
+#: ultralcd.cpp:4982
 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:640
+#: mmu.cpp:724
 msgid "Fix the issue and then press button on MMU unit."
 msgstr "Rozwiaz problem i wcisnij przycisk na MMU."
 
 # MSG_FLOW
-#: ultralcd.cpp:6205
+#: ultralcd.cpp:6932
 msgid "Flow"
 msgstr "Przeplyw"
 
 # MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2228
+#: ultralcd.cpp:2206
 msgid "forum.prusa3d.com"
 msgstr ""
 
 # MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:71
+#: messages.c:75
 msgid "Front print fan?"
 msgstr "Przedni went. druku?"
 
 # MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3101
+#: ultralcd.cpp:3294
 msgid "Front side[um]"
 msgstr "Przod [um]"
 
 # MSG_SELFTEST_FANS
-#: ultralcd.cpp:7136
+#: ultralcd.cpp:7957
 msgid "Front/left fans"
 msgstr "Przedni/lewy wentylator"
 
 # MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:7066
+#: ultralcd.cpp:7887
 msgid "Heater/Thermistor"
 msgstr "Grzalka/Termistor"
 
 # MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:7475
+#: Marlin_main.cpp:8467
 msgid "Heating disabled by safety timer."
 msgstr "Grzanie wylaczone przez wyl. czasowy"
 
@@ -586,67 +511,62 @@ msgid "Heating"
 msgstr "Grzanie..."
 
 # MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:4719
+#: ultralcd.cpp:4961
 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:2229
+#: ultralcd.cpp:2207
 msgid "howto.prusa3d.com"
 msgstr ""
 
-# 
-#: ultralcd.cpp:6087
-msgid "Change extruder"
-msgstr "Zmiana ekstrudera"
-
 # MSG_FILAMENTCHANGE
 #: messages.c:37
 msgid "Change filament"
 msgstr "Wymiana filamentu"
 
 # MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2474
+#: ultralcd.cpp:2629
 msgid "Change success!"
 msgstr "Wymiana ok!"
 
 # MSG_CORRECTLY c=20
-#: ultralcd.cpp:2551
+#: ultralcd.cpp:2706
 msgid "Changed correctly?"
 msgstr "Wymiana ok?"
 
 # MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:77
+#: messages.c:81
 msgid "Checking bed     "
 msgstr "Kontrola stolu"
 
 # MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:7450
+#: ultralcd.cpp:8286
 msgid "Checking endstops"
 msgstr "Kontrola krancowek"
 
 # MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:7456
+#: ultralcd.cpp:8292
 msgid "Checking hotend  "
 msgstr "Kontrola hotendu"
 
 # MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:78
+#: messages.c:82
 msgid "Checking sensors "
 msgstr "Sprawdzanie czujnikow"
 
 # MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:7451
+#: ultralcd.cpp:8287
 msgid "Checking X axis  "
 msgstr "Kontrola osi X"
 
 # MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:7452
+#: ultralcd.cpp:8288
 msgid "Checking Y axis  "
 msgstr "Kontrola osi Y"
 
 # MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:7453
+#: ultralcd.cpp:8289
 msgid "Checking Z axis  "
 msgstr "Kontrola osi Z"
 
@@ -666,114 +586,84 @@ msgid "Filament"
 msgstr ""
 
 # MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:4749
+#: ultralcd.cpp:4991
 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:4757
+#: ultralcd.cpp:4999
 msgid "I will run z calibration now."
 msgstr "Przeprowadze kalibracje Z."
 
 # MSG_WIZARD_V2_CAL_2 c=20 r=12
-#: ultralcd.cpp:4822
+#: ultralcd.cpp:5064
 msgid "I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."
 msgstr "Zaczne drukowac linie. Stopniowo opuszczaj dysze przekrecajac pokretlo, poki nie uzyskasz optymalnej wysokosci. Sprawdz obrazki w naszym Podreczniku w rozdz. Kalibracja"
 
-# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: mesh_bed_calibration.cpp:2481
-msgid "Improving bed calibration point"
-msgstr "Poprawiam precyzje punktu kalibracyjnego"
-
 # MSG_WATCH
-#: messages.c:93
+#: messages.c:99
 msgid "Info screen"
 msgstr "Ekran informacyjny"
 
-# MSG_FILAMENT_LOADING_T0 c=20 r=4
-#: messages.c:33
-msgid "Insert filament into extruder 1. Click when done."
-msgstr "Wloz filament do ekstrudera 1. Potwierdz naciskajac pokretlo."
-
-# MSG_FILAMENT_LOADING_T1 c=20 r=4
-#: messages.c:34
-msgid "Insert filament into extruder 2. Click when done."
-msgstr "Wloz filament do ekstrudera 2. Potwierdz naciskajac pokretlo."
-
-# MSG_FILAMENT_LOADING_T2 c=20 r=4
-#: messages.c:35
-msgid "Insert filament into extruder 3. Click when done."
-msgstr "Wloz filament do ekstrudera 3. Potwierdz naciskajac pokretlo."
-
-# MSG_FILAMENT_LOADING_T3 c=20 r=4
-#: messages.c:36
-msgid "Insert filament into extruder 4. Click when done."
-msgstr "Wloz filament do ekstrudera 4. Potwierdz naciskajac pokretlo."
-
 # 
-#: ultralcd.cpp:4782
+#: ultralcd.cpp:5024
 msgid "Is filament 1 loaded?"
 msgstr "Filament 1 zaladowany?"
 
 # MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2459
+#: ultralcd.cpp:2614
 msgid "Insert filament"
 msgstr "Wprowadz filament"
 
 # MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4785
+#: ultralcd.cpp:5027
 msgid "Is filament loaded?"
 msgstr "Filament jest zaladowany?"
 
 # MSG_WIZARD_PLA_FILAMENT c=20 r=2
-#: ultralcd.cpp:4816
+#: ultralcd.cpp:5058
 msgid "Is it PLA filament?"
 msgstr "Czy to filament PLA?"
 
 # MSG_PLA_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4561
+#: ultralcd.cpp:4790
 msgid "Is PLA filament loaded?"
 msgstr "Fialment PLA jest zaladowany?"
 
 # MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:86
+#: messages.c:92
 msgid "Is steel sheet on heatbed?"
 msgstr "Czy plyta stal. jest na podgrzew. stole?"
 
-# MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20
-#: mesh_bed_calibration.cpp:2223
-msgid "Iteration "
-msgstr "Iteracja "
-
 # 
-#: ultralcd.cpp:1976
+#: ultralcd.cpp:1795
 msgid "Last print failures"
-msgstr ""
+msgstr "Ostatnie bledy druku"
 
 # 
-#: ultralcd.cpp:1960
+#: ultralcd.cpp:1772
 msgid "Last print"
-msgstr ""
+msgstr "Ost. wydruk"
 
 # MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:72
+#: messages.c:76
 msgid "Left hotend fan?"
 msgstr "Lewy went hotendu?"
 
 # 
-#: ultralcd.cpp:2861
+#: ultralcd.cpp:3018
 msgid "Left"
 msgstr "Lewa"
 
 # MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3099
+#: ultralcd.cpp:3292
 msgid "Left side [um]"
 msgstr "Lewo [um]"
 
 # 
-#: ultralcd.cpp:5107
+#: ultralcd.cpp:5680
 msgid "Lin. correction"
-msgstr "Korekcja lin."
+msgstr "Korekcja liniowa"
 
 # MSG_BABYSTEP_Z
 #: messages.c:13
@@ -786,7 +676,7 @@ msgid "Load filament"
 msgstr "Ladowanie fil."
 
 # MSG_LOADING_COLOR
-#: ultralcd.cpp:2499
+#: ultralcd.cpp:2654
 msgid "Loading color"
 msgstr "Czyszcz. koloru"
 
@@ -796,94 +686,94 @@ msgid "Loading filament"
 msgstr "Laduje filament"
 
 # MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:7120
+#: ultralcd.cpp:7941
 msgid "Loose pulley"
 msgstr "Luzne kolo pasowe"
 
 # 
-#: ultralcd.cpp:6079
+#: ultralcd.cpp:6805
 msgid "Load to nozzle"
 msgstr "Zaladuj do dyszy"
 
 # MSG_M117_V2_CALIBRATION c=25 r=1
-#: messages.c:53
+#: messages.c:55
 msgid "M117 First layer cal."
 msgstr "M117 Kal. 1. warstwy"
 
 # MSG_MAIN
-#: messages.c:54
+#: messages.c:56
 msgid "Main"
 msgstr "Menu glowne"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:55
+#: messages.c:59
 msgid "Measuring reference height of calibration point"
 msgstr "Okreslam wysokosc odniesienia punktu kalibracyjnego"
 
 # MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5192
+#: ultralcd.cpp:5763
 msgid "Mesh Bed Leveling"
 msgstr "Poziomowanie stolu wg siatki"
 
 # MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:676
+#: mmu.cpp:762
 msgid "MMU OK. Resuming position..."
 msgstr "MMU OK. Wznawianie pozycji."
 
 # MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:669
+#: mmu.cpp:755
 msgid "MMU OK. Resuming temperature..."
 msgstr "MMU OK. Wznawiam nagrzewanie..."
 
 # 
-#: ultralcd.cpp:2896
+#: ultralcd.cpp:3059
 msgid "Measured skew"
 msgstr "Zmierzony skos"
 
 # 
-#: ultralcd.cpp:1977
+#: ultralcd.cpp:1796
 msgid "MMU fails"
-msgstr ""
+msgstr "Bledy MMU"
 
 # 
-#: mmu.cpp:1399
+#: mmu.cpp:1613
 msgid "MMU load failed     "
-msgstr ""
+msgstr "Blad ladowania MMU"
 
 # 
-#: ultralcd.cpp:1977
+#: ultralcd.cpp:1797
 msgid "MMU load fails"
-msgstr ""
+msgstr "Bledy ladow. MMU"
 
 # MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:687
+#: mmu.cpp:773
 msgid "MMU OK. Resuming..."
 msgstr "MMU OK. Wznawianie..."
 
 # MSG_STEALTH_MODE_OFF
-#: messages.c:84
+#: messages.c:90
 msgid "Mode     [Normal]"
 msgstr "Tryb   [normalny]"
 
 # MSG_SILENT_MODE_ON
-#: messages.c:83
+#: messages.c:89
 msgid "Mode     [silent]"
 msgstr "Tryb      [cichy]"
 
 # 
-#: mmu.cpp:635
+#: mmu.cpp:719
 msgid "MMU needs user attention."
 msgstr "MMU wymaga uwagi uzytkownika."
 
 # 
-#: ultralcd.cpp:1994
+#: ultralcd.cpp:1823
 msgid "MMU power fails"
-msgstr ""
+msgstr "Zaniki zasil. MMU"
 
 # MSG_STEALTH_MODE_ON
-#: messages.c:85
+#: messages.c:91
 msgid "Mode    [Stealth]"
-msgstr "Tryb    [Stealth]"
+msgstr "Tryb      [cichy]"
 
 # MSG_AUTO_MODE_ON
 #: messages.c:12
@@ -891,62 +781,62 @@ msgid "Mode [auto power]"
 msgstr "Tryb [automatycz]"
 
 # MSG_SILENT_MODE_OFF
-#: messages.c:82
+#: messages.c:88
 msgid "Mode [high power]"
 msgstr "Tryb[wysoka wyd.]"
 
 # 
-#: ultralcd.cpp:2241
+#: ultralcd.cpp:2219
 msgid "MMU2 connected"
-msgstr ""
+msgstr "MMU podlaczone"
 
 # MSG_SELFTEST_MOTOR
-#: messages.c:79
+#: messages.c:83
 msgid "Motor"
 msgstr "Silnik"
 
 # MSG_MOVE_AXIS
-#: ultralcd.cpp:5091
+#: ultralcd.cpp:5652
 msgid "Move axis"
 msgstr "Ruch osi"
 
 # MSG_MOVE_X
-#: ultralcd.cpp:4164
+#: ultralcd.cpp:4378
 msgid "Move X"
 msgstr "Ruch osi X"
 
 # MSG_MOVE_Y
-#: ultralcd.cpp:4165
+#: ultralcd.cpp:4379
 msgid "Move Y"
 msgstr "Ruch osi Y"
 
 # MSG_MOVE_Z
-#: ultralcd.cpp:4166
+#: ultralcd.cpp:4380
 msgid "Move Z"
 msgstr "Ruch osi Z"
 
 # MSG_NO_MOVE
-#: Marlin_main.cpp:4908
+#: Marlin_main.cpp:5292
 msgid "No move."
 msgstr "Brak ruchu."
 
 # MSG_NO_CARD
-#: ultralcd.cpp:6059
+#: ultralcd.cpp:6772
 msgid "No SD card"
 msgstr "Brak karty SD"
 
 # 
-#: ultralcd.cpp:2867
+#: ultralcd.cpp:3024
 msgid "N/A"
-msgstr ""
+msgstr "N/D"
 
 # MSG_NO
-#: messages.c:58
+#: messages.c:62
 msgid "No"
 msgstr "Nie"
 
 # MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:7068
+#: ultralcd.cpp:7889
 msgid "Not connected"
 msgstr "Nie podlaczono "
 
@@ -955,173 +845,168 @@ msgstr "Nie podlaczono "
 msgid "New firmware version available:"
 msgstr "Dostepna nowa wersja firmware:"
 
-# 
-#: 
-msgid "No "
-msgstr "Nie"
-
 # MSG_SELFTEST_FAN_NO c=19
-#: messages.c:75
+#: messages.c:79
 msgid "Not spinning"
 msgstr "Nie kreci sie"
 
 # MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4821
+#: ultralcd.cpp:5063
 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:4765
+#: ultralcd.cpp:5007
 msgid "Now I will preheat nozzle for PLA."
 msgstr "Nagrzewam dysze dla PLA."
 
 # MSG_NOZZLE
-#: messages.c:59
+#: messages.c:63
 msgid "Nozzle"
 msgstr "Dysza"
 
 # MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
-#: Marlin_main.cpp:1516
+#: Marlin_main.cpp:1519
 msgid "Old settings found. Default PID, Esteps etc. will be set."
 msgstr "Znaleziono stare ustawienia. Zostana przywrocone domyslne ust. PID, Esteps, itp."
 
 # 
-#: ultralcd.cpp:4756
+#: ultralcd.cpp:4998
 msgid "Now remove the test print from steel sheet."
 msgstr "Teraz zdejmij wydruk testowy ze stolu."
 
 # 
-#: ultralcd.cpp:1919
+#: ultralcd.cpp:1722
 msgid "Nozzle FAN"
-msgstr ""
+msgstr "WentHotend"
 
 # MSG_PAUSE_PRINT
-#: ultralcd.cpp:6029
+#: ultralcd.cpp:6735
 msgid "Pause print"
 msgstr "Wstrzymanie wydruku"
 
 # MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1741
+#: ultralcd.cpp:1606
 msgid "PID cal.           "
 msgstr "Kalibracja PID"
 
 # MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1747
+#: ultralcd.cpp:1612
 msgid "PID cal. finished"
 msgstr "Kal. PID zakonczona"
 
 # MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5198
+#: ultralcd.cpp:5769
 msgid "PID calibration"
 msgstr "Kalibracja PID"
 
 # MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:808
+#: ultralcd.cpp:846
 msgid "PINDA Heating"
 msgstr "Grzanie sondy PINDA"
 
 # MSG_PAPER c=20 r=8
-#: messages.c:60
+#: messages.c:64
 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:4830
+#: ultralcd.cpp:5072
 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:22
 msgid "Please clean the nozzle for calibration. Click when done."
-msgstr "Dla prawidl. kalibracji nalezy oczyscic dysze. Potw. guzikiem."
+msgstr "Dla prawidlowej kalibracji nalezy oczyscic dysze. Potwierdz guzikiem."
 
 # MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:7060
+#: ultralcd.cpp:7881
 msgid "Please check :"
 msgstr "Sprawdz :"
 
 # MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:94
+#: messages.c:100
 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_WIZARD_LOAD_FILAMENT c=20 r=8
-#: ultralcd.cpp:4664
+#: ultralcd.cpp:4894
 msgid "Please insert PLA filament to the extruder, then press knob to load it."
 msgstr "Umiesc filament PLA w ekstruderze i nacisnij pokretlo, aby zaladowac."
 
 # MSG_PLEASE_LOAD_PLA c=20 r=4
-#: ultralcd.cpp:4566
+#: ultralcd.cpp:4795
 msgid "Please load PLA filament first."
 msgstr "Najpierw zaladuj filament PLA."
 
 # MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3025
+#: Marlin_main.cpp:3064
 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:65
 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:68
 msgid "Please press the knob to unload filament"
 msgstr "Nacisnij pokretlo aby rozladowac filament"
 
 # 
-#: ultralcd.cpp:4660
+#: ultralcd.cpp:4889
 msgid "Please insert PLA filament to the first tube of MMU, then press the knob to load it."
 msgstr "Wsun filament PLA do pierwszej rurki MMU i nacisnij pokretlo aby go zaladowac."
 
 # MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:66
+#: messages.c:70
 msgid "Please pull out filament immediately"
 msgstr "Wyciagnij filament teraz"
 
 # MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1347
+#: mmu.cpp:1440
 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:74
 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:4052
+#: Marlin_main.cpp:4355
 msgid "Please run XYZ calibration first."
 msgstr "Prosze najpierw uruchomic kalibracje XYZ"
 
 # MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1293
+#: mmu.cpp:1359
 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:66
 msgid "Please wait"
 msgstr "Prosze czekac"
 
 # 
-#: ultralcd.cpp:4755
+#: ultralcd.cpp:4997
 msgid "Please remove shipping helpers first."
 msgstr "Najpierw usun zabezpieczenia transportowe"
 
 # MSG_PREHEAT_NOZZLE c=20
-#: messages.c:63
+#: messages.c:67
 msgid "Preheat the nozzle!"
 msgstr "Nagrzej dysze!"
 
 # MSG_PREHEAT
-#: ultralcd.cpp:6018
+#: ultralcd.cpp:6722
 msgid "Preheat"
 msgstr "Grzanie"
 
 # MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:96
+#: messages.c:102
 msgid "Preheating nozzle. Please wait."
 msgstr "Nagrzewanie dyszy. Prosze czekac."
 
@@ -1131,34 +1016,34 @@ msgid "Please upgrade."
 msgstr "Prosze zaktualizowac."
 
 # MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:9150
+#: Marlin_main.cpp:10364
 msgid "Press knob to preheat nozzle and continue."
 msgstr "Wcisnij pokretlo aby rozgrzac dysze i kontynuowac."
 
 # 
-#: ultralcd.cpp:2013
+#: ultralcd.cpp:1851
 msgid "Power failures"
-msgstr ""
+msgstr "Zaniki zasilania"
 
 # MSG_PRINT_ABORTED c=20
-#: messages.c:65
+#: messages.c:69
 msgid "Print aborted"
 msgstr "Druk przerwany"
 
 # 
-#: ultralcd.cpp:2350
+#: ultralcd.cpp:2455
 msgid "Preheating to load"
-msgstr ""
+msgstr "Nagrzew. do ladowania"
 
 # 
-#: ultralcd.cpp:2351
+#: ultralcd.cpp:2459
 msgid "Preheating to unload"
-msgstr ""
+msgstr "Nagrzew. do rozlad."
 
 # MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:7471
+#: ultralcd.cpp:8307
 msgid "Print fan:"
-msgstr "Went. wydruku:"
+msgstr "WentWydruk:"
 
 # MSG_CARD_MENU
 #: messages.c:21
@@ -1166,122 +1051,107 @@ msgid "Print from SD"
 msgstr "Druk z karty SD"
 
 # 
-#: ultralcd.cpp:2313
+#: ultralcd.cpp:2317
 msgid "Press the knob"
-msgstr ""
+msgstr "Wcisnij pokretlo"
 
 # MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1022
+#: ultralcd.cpp:1069
 msgid "Print paused"
 msgstr "Druk wstrzymany"
 
 # 
-#: mmu.cpp:639
+#: mmu.cpp:723
 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:41
 msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
-msgstr "Drukarka nie zostala jeszcze skalibrowana. Kieruj sie Samouczkiem: rozdzial Pierwsze Kroki, sekcja Konfiguracja przed drukowaniem."
+msgstr "Drukarka nie byla jeszcze kalibrowana. Kieruj sie Samouczkiem: rozdzial Pierwsze Kroki, sekcja Konfiguracja przed drukowaniem."
 
 # 
-#: ultralcd.cpp:1921
+#: ultralcd.cpp:1723
 msgid "Print FAN"
-msgstr ""
-
-# WELCOME_MSG c=20
-#: 
-msgid "Prusa i3 MK2.5 ready."
-msgstr "Prusa i3 MK2.5 gotowa"
-
-# WELCOME_MSG c=20
-#: 
-msgid "Prusa i3 MK3 ready."
-msgstr "Prusa i3 MK3 gotowa"
+msgstr "WentWydruk"
 
 # MSG_PRUSA3D
-#: ultralcd.cpp:2227
+#: ultralcd.cpp:2205
 msgid "prusa3d.com"
 msgstr ""
 
 # MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3102
+#: ultralcd.cpp:3295
 msgid "Rear side [um]"
 msgstr "Tyl [um]"
 
 # MSG_RECOVERING_PRINT c=20 r=1
-#: Marlin_main.cpp:8575
+#: Marlin_main.cpp:9764
 msgid "Recovering print    "
 msgstr "Wznawianie wydruku"
 
 # MSG_REMOVE_OLD_FILAMENT c=20 r=4
-#: mmu.cpp:744
+#: mmu.cpp:830
 msgid "Remove old filament and press the knob to start loading new filament."
 msgstr "Wyciagnij poprzedni filament i nacisnij pokretlo aby zaladowac nowy."
 
 # 
 #: 
 msgid "Prusa i3 MK3S OK."
-msgstr ""
-
-# 
-#: 
-msgid "Prusa i3 MK2 ready."
-msgstr "Prusa i3 MK2 gotowa"
+msgstr "Prusa i3 MK3S OK"
 
 # MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5203
+#: ultralcd.cpp:5774
 msgid "Reset XYZ calibr."
 msgstr "Reset kalibr. XYZ"
 
 # MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3103
+#: ultralcd.cpp:3296
 msgid "Reset"
 msgstr ""
 
 # MSG_RESUME_PRINT
-#: ultralcd.cpp:6033
+#: ultralcd.cpp:6742
 msgid "Resume print"
 msgstr "Wznowic wydruk"
 
 # MSG_RESUMING_PRINT c=20 r=1
-#: messages.c:69
+#: messages.c:73
 msgid "Resuming print"
 msgstr "Wznawianie druku"
 
 # MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3100
+#: ultralcd.cpp:3293
 msgid "Right side[um]"
 msgstr "Prawo [um]"
 
 # MSG_SECOND_SERIAL_ON c=17 r=1
-#: ultralcd.cpp:5119
+#: ultralcd.cpp:5692
 msgid "RPi port     [on]"
 msgstr "Port RPi     [wl]"
 
 # MSG_SECOND_SERIAL_OFF c=17 r=1
-#: ultralcd.cpp:5117
+#: ultralcd.cpp:5690
 msgid "RPi port    [off]"
 msgstr "Port RPi    [wyl]"
 
 # MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4583
+#: ultralcd.cpp:4812
 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_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-#: ultralcd.cpp:5033
+#: ultralcd.cpp:5322
 msgid "SD card  [normal]"
 msgstr "Karta SD [normal]"
 
 # MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:5031
+#: ultralcd.cpp:5320
 msgid "SD card [flshAir]"
 msgstr "Karta SD[FlshAir]"
 
 # 
-#: ultralcd.cpp:2862
+#: ultralcd.cpp:3019
 msgid "Right"
 msgstr "Prawa"
 
@@ -1291,217 +1161,207 @@ msgid "Searching bed calibration point"
 msgstr "Szukam punktu kalibracyjnego na stole"
 
 # MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5126
+#: ultralcd.cpp:5699
 msgid "Select language"
 msgstr "Wybor jezyka"
 
 # MSG_SELFTEST_OK
-#: ultralcd.cpp:6631
+#: ultralcd.cpp:7452
 msgid "Self test OK"
 msgstr "Selftest OK"
 
 # MSG_SELFTEST_START c=20
-#: ultralcd.cpp:6449
+#: ultralcd.cpp:7238
 msgid "Self test start  "
-msgstr "Rozpoczynanie Selftestu"
+msgstr "Selftest startuje"
 
 # MSG_SELFTEST
-#: ultralcd.cpp:5179
+#: ultralcd.cpp:5750
 msgid "Selftest         "
 msgstr "Selftest "
 
 # MSG_SELFTEST_ERROR
-#: ultralcd.cpp:7058
+#: ultralcd.cpp:7879
 msgid "Selftest error !"
-msgstr "Blad selftest !"
+msgstr "Blad selftest!"
 
 # MSG_SELFTEST_FAILED c=20
-#: messages.c:73
+#: messages.c:77
 msgid "Selftest failed  "
 msgstr "Selftest nieudany"
 
 # MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1548
+#: Marlin_main.cpp:1551
 msgid "Selftest will be run to calibrate accurate sensorless rehoming."
 msgstr "Zostanie uruchomiony Selftest aby dokladnie skalibrowac punkt bazowy bez krancowek"
 
 # 
-#: ultralcd.cpp:4803
+#: ultralcd.cpp:5045
 msgid "Select nozzle preheat temperature which matches your material."
 msgstr "Wybierz temperature grzania dyszy odpowiednia dla materialu."
 
 # 
-#: ultralcd.cpp:4552
+#: ultralcd.cpp:4780
 msgid "Select PLA filament:"
 msgstr "Wybierz filament PLA:"
 
 # MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3111
+#: ultralcd.cpp:3314
 msgid "Set temperature:"
-msgstr "Ustaw. temperatury:"
+msgstr "Ustaw temperature:"
 
 # MSG_SETTINGS
-#: messages.c:81
+#: messages.c:86
 msgid "Settings"
 msgstr "Ustawienia"
 
 # MSG_SHOW_END_STOPS c=17 r=1
-#: ultralcd.cpp:5200
+#: ultralcd.cpp:5771
 msgid "Show end stops"
 msgstr "Pokaz krancowki"
 
 # 
-#: ultralcd.cpp:3819
+#: ultralcd.cpp:4025
 msgid "Sensor state"
-msgstr ""
-
-# 
-#: 
-msgid "Sensors info"
-msgstr ""
-
-# 
-#: 
-msgid "Show pinda state"
-msgstr "Stan sondy PINDA"
+msgstr "Stan czujnikow"
 
 # MSG_FILE_CNT c=20 r=4
-#: 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_NONE c=17 r=1
-#: ultralcd.cpp:5043
-msgid "Sort:      [none]"
-msgstr "Sortuj:    [brak]"
+#: ultralcd.cpp:5332
+msgid "Sort       [none]"
+msgstr "Sortowanie [brak]"
 
 # MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:5041
-msgid "Sort:      [time]"
-msgstr "Sortuj:    [czas]"
+#: ultralcd.cpp:5330
+msgid "Sort       [time]"
+msgstr "Sortowanie [czas]"
 
 # 
-#: ultralcd.cpp:2899
-msgid "Severe skew"
-msgstr "Znaczny skos"
+#: ultralcd.cpp:3062
+msgid "Severe skew:"
+msgstr "Znaczny skos:"
 
 # MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:5042
-msgid "Sort:  [alphabet]"
-msgstr "Sortuj: [alfabet]"
+#: ultralcd.cpp:5331
+msgid "Sort   [alphabet]"
+msgstr "Sortowanie[alfab]"
 
 # MSG_SORTING c=20 r=1
-#: cardreader.cpp:745
+#: cardreader.cpp:746
 msgid "Sorting files"
 msgstr "Sortowanie plikow"
 
 # MSG_SOUND_LOUD c=17 r=1
-#: sound.h:5
+#: sound.h:6
 msgid "Sound      [loud]"
-msgstr "Dzwiek   [Glosny]"
+msgstr "Dzwiek   [glosny]"
 
 # 
-#: ultralcd.cpp:2898
-msgid "Slight skew"
-msgstr "Lekki skos"
+#: ultralcd.cpp:3061
+msgid "Slight skew:"
+msgstr "Lekki skos:"
 
 # MSG_SOUND_MUTE c=17 r=1
-#: sound.h:8
+#: 
 msgid "Sound      [mute]"
-msgstr "Dzwiek[Wylaczony]"
+msgstr "Dzwiek[wylaczony]"
 
 # 
-#: Marlin_main.cpp:4560
+#: Marlin_main.cpp:4871
 msgid "Some problem encountered, Z-leveling enforced ..."
-msgstr "Wykryto problem, wymuszono poziomowanie osi Z ..."
+msgstr "Wykryto problem, wymuszono poziomowanie osi Z."
 
 # MSG_SOUND_ONCE c=17 r=1
-#: sound.h:6
+#: sound.h:7
 msgid "Sound      [once]"
 msgstr "Dzwiek    [1-raz]"
 
 # MSG_SOUND_SILENT c=17 r=1
-#: sound.h:7
+#: sound.h:8
 msgid "Sound    [silent]"
-msgstr "Dzwiek    [Cichy]"
+msgstr "Dzwiek    [cichy]"
 
 # MSG_SPEED
-#: ultralcd.cpp:6199
+#: ultralcd.cpp:6926
 msgid "Speed"
 msgstr "Predkosc"
 
 # MSG_SELFTEST_FAN_YES c=19
-#: messages.c:76
+#: messages.c:80
 msgid "Spinning"
 msgstr "Kreci sie"
 
 # MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4065
+#: Marlin_main.cpp:4368
 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:6108
+#: ultralcd.cpp:6839
 msgid "Statistics  "
 msgstr "Statystyki"
 
 # MSG_STOP_PRINT
-#: messages.c:87
+#: messages.c:93
 msgid "Stop print"
-msgstr "Zatrzymac druk"
+msgstr "Przerwanie druku"
 
 # MSG_STOPPED
-#: messages.c:88
+#: messages.c:94
 msgid "STOPPED. "
 msgstr "ZATRZYMANO."
 
 # MSG_SUPPORT
-#: ultralcd.cpp:6117
+#: ultralcd.cpp:6848
 msgid "Support"
 msgstr "Wsparcie"
 
 # MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:7138
+#: ultralcd.cpp:7959
 msgid "Swapped"
 msgstr "Zamieniono"
 
 # MSG_TEMP_CALIBRATION c=20 r=1
-#: messages.c:89
+#: messages.c:95
 msgid "Temp. cal.          "
 msgstr "Kalibracja temp."
 
 # MSG_TEMP_CALIBRATION_ON c=20 r=1
-#: ultralcd.cpp:5113
+#: ultralcd.cpp:5686
 msgid "Temp. cal.   [on]"
-msgstr "Kalibr. temp.[wl]"
+msgstr "Kalibr.temp. [wl]"
 
 # MSG_TEMP_CALIBRATION_OFF c=20 r=1
-#: ultralcd.cpp:5111
+#: ultralcd.cpp:5684
 msgid "Temp. cal.  [off]"
 msgstr "Kalibr.temp.[wyl]"
 
 # MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5209
+#: ultralcd.cpp:5780
 msgid "Temp. calibration"
 msgstr "Kalibracja temp."
 
 # MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3744
+#: ultralcd.cpp:3951
 msgid "Temperature calibration failed"
 msgstr "Kalibracja temperaturowa nieudana"
 
 # MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:90
+#: messages.c:96
 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."
 
 # MSG_TEMPERATURE
-#: ultralcd.cpp:5089
+#: ultralcd.cpp:5650
 msgid "Temperature"
 msgstr "Temperatura"
 
 # MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2273
+#: ultralcd.cpp:2251
 msgid "Temperatures"
 msgstr "Temperatury"
 
@@ -1511,127 +1371,122 @@ msgid "There is still a need to make Z calibration. Please follow the manual, ch
 msgstr "Musimy przeprowadzic kalibracje Z. Kieruj sie Samouczkiem: rozdzial Pierwsze Kroki, sekcja Kalibracja."
 
 # 
-#: ultralcd.cpp:2752
+#: ultralcd.cpp:2908
 msgid "Total filament"
-msgstr "Calkowita dlugosc filamentu"
+msgstr "Zuzycie filamentu"
 
 # 
-#: ultralcd.cpp:2754
+#: ultralcd.cpp:2908
 msgid "Total print time"
-msgstr "Calkowity czas druku"
+msgstr "Laczny czas druku"
 
 # MSG_TUNE
-#: ultralcd.cpp:6015
+#: ultralcd.cpp:6719
 msgid "Tune"
 msgstr "Strojenie"
 
 # 
-#: ultralcd.cpp:4640
+#: ultralcd.cpp:4869
 msgid "Unload"
 msgstr "Rozladuj"
 
 # 
-#: ultralcd.cpp:5617
-msgid "Unload all"
-msgstr "Rozladuj wszystkie"
-
-# 
-#: ultralcd.cpp:1994
+#: ultralcd.cpp:1820
 msgid "Total failures"
-msgstr ""
+msgstr "Suma bledow"
 
 # 
-#: ultralcd.cpp:2316
+#: ultralcd.cpp:2324
 msgid "to load filament"
-msgstr ""
+msgstr "aby zaladow. fil."
 
 # 
-#: ultralcd.cpp:2317
+#: ultralcd.cpp:2328
 msgid "to unload filament"
-msgstr ""
+msgstr "aby rozlad. filament"
 
 # MSG_UNLOAD_FILAMENT c=17
-#: messages.c:91
+#: messages.c:97
 msgid "Unload filament"
 msgstr "Rozladowanie fil."
 
 # MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:92
+#: messages.c:98
 msgid "Unloading filament"
 msgstr "Rozladowuje filament"
 
 # 
-#: ultralcd.cpp:1961
+#: ultralcd.cpp:1773
 msgid "Total"
-msgstr ""
+msgstr "Suma"
 
 # MSG_USED c=19 r=1
-#: ultralcd.cpp:5334
+#: ultralcd.cpp:5908
 msgid "Used during print"
 msgstr "Uzyte podczas druku"
 
 # MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2276
+#: ultralcd.cpp:2254
 msgid "Voltages"
 msgstr "Napiecia"
 
 # 
-#: ultralcd.cpp:2249
+#: ultralcd.cpp:2227
 msgid "unknown"
-msgstr ""
+msgstr "nieznane"
 
 # MSG_USERWAIT
-#: Marlin_main.cpp:4876
+#: Marlin_main.cpp:5263
 msgid "Wait for user..."
 msgstr "Czekam na uzytkownika..."
 
 # MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3255
+#: ultralcd.cpp:3458
 msgid "Waiting for nozzle and bed cooling"
 msgstr "Oczekiwanie na wychlodzenie dyszy i stolu"
 
 # MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3219
+#: ultralcd.cpp:3422
 msgid "Waiting for PINDA probe cooling"
 msgstr "Czekam az spadnie temp. sondy PINDA"
 
 # 
-#: ultralcd.cpp:4639
+#: ultralcd.cpp:4868
 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:1508
+#: Marlin_main.cpp:1511
 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:1500
+#: Marlin_main.cpp:1503
 msgid "Warning: motherboard type changed."
 msgstr "Ostrzezenie: plyta glowna ulegla zmianie."
 
 # MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1504
+#: Marlin_main.cpp:1507
 msgid "Warning: printer type changed."
 msgstr "Ostrzezenie: rodzaj drukarki ulegl zmianie"
 
 # MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3014
+#: Marlin_main.cpp:3054
 msgid "Was filament unload successful?"
 msgstr "Rozladowanie fil. ok?"
 
 # MSG_SELFTEST_WIRINGERROR
-#: messages.c:80
+#: messages.c:85
 msgid "Wiring error"
 msgstr "Blad polaczenia"
 
 # MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5176
+#: ultralcd.cpp:5747
 msgid "Wizard"
 msgstr "Asystent"
 
 # MSG_XYZ_DETAILS c=19 r=1
-#: ultralcd.cpp:2265
+#: ultralcd.cpp:2243
 msgid "XYZ cal. details"
 msgstr "Szczegoly kal. XYZ"
 
@@ -1641,107 +1496,317 @@ msgid "XYZ calibration failed. Please consult the manual."
 msgstr "Kalibracja XYZ nieudana. Sprawdz przyczyny i rozwiazania w instrukcji."
 
 # MSG_YES
-#: messages.c:98
+#: messages.c:104
 msgid "Yes"
 msgstr "Tak"
 
 # MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:97
+#: messages.c:103
 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:3715
+#: ultralcd.cpp:3922
 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:3712
+#: ultralcd.cpp:3919
 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
 msgstr "Kalibracja XYZ prawidlowa. Osie X/Y lekko skosne. Dobra robota!"
 
 # 
-#: ultralcd.cpp:4885
-msgid "X-correct"
-msgstr "Korekcja X"
+#: ultralcd.cpp:5130
+msgid "X-correct:"
+msgstr "Korekcja-X:"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3709
+#: ultralcd.cpp:3916
 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:3693
+#: ultralcd.cpp:3900
 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:3696
+#: ultralcd.cpp:3903
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "Kalibracja XYZ niedokladna. Prawy przedni punkt nieosiagalny."
 
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8
-#: ultralcd.cpp:3699
-msgid "XYZ calibration compromised. Left front calibration point not reachable."
-msgstr "Kalibracja XYZ niedokladna. Lewy przedni punkt nieosiagalny."
-
 # MSG_LOAD_ALL c=17
-#: ultralcd.cpp:5575
+#: ultralcd.cpp:6166
 msgid "Load all"
 msgstr "Zalad. wszystkie"
 
-# MSG_LOAD_FILAMENT_1 c=17
-#: ultralcd.cpp:5576
-msgid "Load filament 1"
-msgstr "Zaladuj fil. 1"
-
 # 
-#: ultralcd.cpp:3675
+#: ultralcd.cpp:3882
 msgid "XYZ calibration failed. Bed calibration point was not found."
 msgstr "Kalibracja XYZ nieudana. Nie znaleziono punktow kalibracyjnych."
 
 # 
-#: ultralcd.cpp:3681
+#: ultralcd.cpp:3888
 msgid "XYZ calibration failed. Front calibration points not reachable."
 msgstr "Kalibr. XYZ nieudana. Przednie punkty kalibr. nieosiagalne. Nalezy poprawic montaz drukarki."
 
 # 
-#: ultralcd.cpp:3687
-msgid "XYZ calibration failed. Left front calibration point not reachable."
-msgstr "Kalibr. XYZ nieudana. Lewy przedni punkt nieosiagalny. Nalezy poprawic montaz drukarki."
-
-# MSG_LOAD_FILAMENT_2 c=17
-#: ultralcd.cpp:5577
-msgid "Load filament 2"
-msgstr "Zaladuj fil. 2"
-
-# 
-#: ultralcd.cpp:3684
+#: ultralcd.cpp:3891
 msgid "XYZ calibration failed. Right front calibration point not reachable."
 msgstr "Kalibr. XYZ nieudana. Prawy przedni punkt nieosiagalny. Nalezy poprawic montaz drukarki."
 
-# MSG_LOAD_FILAMENT_3 c=17
-#: ultralcd.cpp:5578
-msgid "Load filament 3"
-msgstr "Zaladuj fil. 3"
-
 # 
-#: ultralcd.cpp:2859
+#: ultralcd.cpp:3016
 msgid "Y distance from min"
 msgstr "Dystans od 0 w osi Y"
 
 # 
-#: ultralcd.cpp:4886
-msgid "Y-correct"
-msgstr "Korekcja Y"
+#: ultralcd.cpp:5131
+msgid "Y-correct:"
+msgstr "Korekcja-Y:"
+
+# MSG_OFF
+#: menu.cpp:426
+msgid " [off]"
+msgstr " [wyl]"
+
+# 
+#: messages.c:57
+msgid "Back"
+msgstr "Wstecz"
+
+# 
+#: ultralcd.cpp:5639
+msgid "Checks"
+msgstr "Testy"
+
+# 
+#: ultralcd.cpp:7973
+msgid "False triggering"
+msgstr "Falszywy alarm"
+
+# 
+#: ultralcd.cpp:4030
+msgid "FINDA:"
+msgstr ""
+
+# 
+#: ultralcd.cpp:5545
+msgid "Firmware   [none]"
+msgstr "Firmware   [brak]"
+
+# 
+#: ultralcd.cpp:5551
+msgid "Firmware [strict]"
+msgstr "Firmware [restr.]"
+
+# 
+#: ultralcd.cpp:5548
+msgid "Firmware   [warn]"
+msgstr "Firmware[ostrzez]"
+
+# 
+#: messages.c:87
+msgid "HW Setup"
+msgstr "Ustawienia HW"
+
+# 
+#: ultralcd.cpp:4034
+msgid "IR:"
+msgstr ""
 
-# MSG_LOAD_FILAMENT_4 c=17
-#: ultralcd.cpp:5579
-msgid "Load filament 4"
-msgstr "Zaladuj fil. 4"
+# 
+#: ultralcd.cpp:7046
+msgid "Magnets comp.[N/A]"
+msgstr "Kor. magnesow[N/D]"
+
+# 
+#: ultralcd.cpp:7044
+msgid "Magnets comp.[Off]"
+msgstr "Kor. magnesow[wyl]"
+
+# 
+#: ultralcd.cpp:7043
+msgid "Magnets comp. [On]"
+msgstr "Kor. magnesow [wl]"
+
+# 
+#: ultralcd.cpp:7035
+msgid "Mesh         [3x3]"
+msgstr "Siatka       [3x3]"
 
-# MSG_LOAD_FILAMENT_5 c=17
-#: ultralcd.cpp:5582
-msgid "Load filament 5"
-msgstr "Laduj filament 5"
+# 
+#: ultralcd.cpp:7036
+msgid "Mesh         [7x7]"
+msgstr "Siatka       [7x7]"
+
+# 
+#: ultralcd.cpp:5677
+msgid "Mesh bed leveling"
+msgstr "Poziomowanie stolu"
+
+# 
+#: Marlin_main.cpp:856
+msgid "MK3S firmware detected on MK3 printer"
+msgstr "Wykryto firmware MK3S w drukarce MK3"
+
+# 
+#: ultralcd.cpp:5306
+msgid "MMU Mode [Normal]"
+msgstr "Tryb MMU[Normaln]"
+
+# 
+#: ultralcd.cpp:5307
+msgid "MMU Mode[Stealth]"
+msgstr "Tryb MMU[Stealth]"
+
+# 
+#: ultralcd.cpp:4511
+msgid "Mode change in progress ..."
+msgstr "Trwa zmiana trybu..."
+
+# 
+#: ultralcd.cpp:5506
+msgid "Model      [none]"
+msgstr "Model      [brak]"
+
+# 
+#: ultralcd.cpp:5512
+msgid "Model    [strict]"
+msgstr "Model [restrykc.]"
+
+# 
+#: ultralcd.cpp:5509
+msgid "Model      [warn]"
+msgstr "Model  [ostrzez.]"
+
+# 
+#: ultralcd.cpp:5467
+msgid "Nozzle d.  [0.25]"
+msgstr "Sr. dyszy  [0,25]"
+
+# 
+#: ultralcd.cpp:5470
+msgid "Nozzle d.  [0.40]"
+msgstr "Sr. dyszy  [0,40]"
+
+# 
+#: ultralcd.cpp:5473
+msgid "Nozzle d.  [0.60]"
+msgstr "Sr. dyszy  [0,60]"
+
+# 
+#: ultralcd.cpp:5421
+msgid "Nozzle     [none]"
+msgstr "Dysza      [brak]"
+
+# 
+#: ultralcd.cpp:5427
+msgid "Nozzle   [strict]"
+msgstr "Dysza [restrykc.]"
+
+# 
+#: ultralcd.cpp:5424
+msgid "Nozzle     [warn]"
+msgstr "Dysza  [ostrzez.]"
+
+# 
+#: util.cpp:510
+msgid "G-code sliced for a different level. Continue?"
+msgstr ""
+
+# 
+#: util.cpp:516
+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:427
+msgid "G-code sliced for a different printer type. Continue?"
+msgstr "G-code pociety dla innej drukarki. Kontynuowac?"
+
+# 
+#: util.cpp:433
+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:477
+msgid "G-code sliced for a newer firmware. Continue?"
+msgstr "G-code pociety dla nowszego firmware. Kontynuowac?"
+
+# 
+#: util.cpp:483
+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:4026
+msgid "PINDA:"
+msgstr ""
+
+# 
+#: ultralcd.cpp:2465
+msgid "Preheating to cut"
+msgstr "Nagrzewanie do obciecia"
+
+# 
+#: ultralcd.cpp:2462
+msgid "Preheating to eject"
+msgstr "Nagrzewanie do wysuniecia"
+
+# 
+#: util.cpp:390
+msgid "Printer nozzle diameter differs from the G-code. Continue?"
+msgstr "Srednica dyszy drukarki rozni sie od tej w G-code. Kontynuowac?"
+
+# 
+#: util.cpp:397
+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."
+
+# 
+#: ultralcd.cpp:6683
+msgid "Rename"
+msgstr "Zmien nazwe"
+
+# 
+#: ultralcd.cpp:6679
+msgid "Select"
+msgstr "Wybierz"
+
+# 
+#: ultralcd.cpp:2245
+msgid "Sensor info"
+msgstr "Info o sensorach"
+
+# 
+#: messages.c:58
+msgid "Sheet"
+msgstr "Plyta"
+
+# 
+#: sound.h:9
+msgid "Sound    [assist]"
+msgstr "Dzwiek   [asyst.]"
+
+# 
+#: ultralcd.cpp:5637
+msgid "Steel sheets"
+msgstr "Plyty stalowe"
+
+# 
+#: ultralcd.cpp:5132
+msgid "Z-correct:"
+msgstr "Korekcja-Z:"
+
+# 
+#: ultralcd.cpp:7038
+msgid "Z-probe nr.    [1]"
+msgstr "Ilosc Pomiarow [1]"
+
+# 
+#: ultralcd.cpp:7040
+msgid "Z-probe nr.    [3]"
+msgstr "Ilosc Pomiarow [3]"
 

+ 832 - 1238
lang/po/new/cs.po

@@ -1,46 +1,19 @@
+# Translation of Prusa-Firmware into Czech.
+#
 msgid ""
 msgstr ""
-"Language: cs\n"
 "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: Sun, Sep 22, 2019 1:28:20 PM\n"
+"PO-Revision-Date: Sun, Sep 22, 2019 1:28:20 PM\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"
-"X-Generator: PhraseApp (phraseapp.com)\n"
-
-# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
-#: ultralcd.cpp:4219
-msgid "\e[2JCrash detection can\e[1;0Hbe turned on only in\e[2;0HNormal mode"
-msgstr "\e[2JCrash detekce muze\e[1;0Hbyt zapnuta pouze v\e[2;0HNormal modu"
-
-# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
-#: ultralcd.cpp:4231
-msgid "\e[2JWARNING:\e[1;0HCrash detection\e[2;0Hdisabled in\e[3;0HStealth mode"
-msgstr "\e[2JPOZOR:\e[1;0HCrash detekce\e[2;0Hdeaktivovana ve\e[3;0HStealth modu"
-
-# MSG_PLANNER_BUFFER_BYTES
-#: Marlin_main.cpp:1184
-msgid "  PlannerBufferBytes: "
-msgstr " PlannerBufferBytes: "
-
-# MSG_EXTRUDER_CORRECTION_OFF c=6
-#: ultralcd.cpp:6312
-msgid "  [off"
-msgstr "[vyp"
-
-# MSG_ERR_COLD_EXTRUDE_STOP
-#: planner.cpp:761
-msgid " cold extrusion prevented"
-msgstr "zabraneno extruzi za studena"
-
-# MSG_FREE_MEMORY
-#: Marlin_main.cpp:1182
-msgid " Free Memory: "
-msgstr "Volna pamet: "
-
-# MSG_CONFIGURATION_VER
-#: Marlin_main.cpp:1172
-msgid " Last Updated: "
-msgstr "Naposledy aktualizovano:"
 
 # MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
 #: messages.c:39
@@ -48,132 +21,107 @@ msgid " of 4"
 msgstr " z 4"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:56
+#: messages.c:60
 msgid " of 9"
 msgstr " z 9"
 
-# MSG_FACTOR
-#: ultralcd.cpp:6008
-msgid " \002 Fact"
-msgstr " \002 Fact"
+# MSG_MEASURED_OFFSET
+#: ultralcd.cpp:3089
+msgid "[0;0] point offset"
+msgstr "[0;0] odsazeni bodu"
 
-# MSG_MAX
-#: ultralcd.cpp:6007
-msgid " \002 Max"
-msgstr " \002 Max"
+# 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_MIN
-#: ultralcd.cpp:6006
-msgid " \002 Min"
-msgstr " \002 Min"
+# 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:2353
+#: ultralcd.cpp:2472
 msgid ">Cancel"
 msgstr ">Zrusit"
 
-# MSG_BABYSTEPPING_Z c=20
-#: ultralcd.cpp:3043
-msgid "Adjusting Z"
-msgstr "Dostavovani Z"
-
-# MSG_ALL c=19 r=1
-#: messages.c:11
-msgid "All"
-msgstr "Vse"
+# MSG_BABYSTEPPING_Z c=15
+#: ultralcd.cpp:3209
+msgid "Adjusting Z:"
+msgstr "Doladeni Z:"
 
 # MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:7459
+#: ultralcd.cpp:8295
 msgid "All correct      "
 msgstr "Vse OK "
 
 # MSG_WIZARD_DONE c=20 r=8
-#: messages.c:95
+#: messages.c:101
 msgid "All is done. Happy printing!"
 msgstr "Vse je hotovo."
 
 # 
-#: ultralcd.cpp:2109
+#: ultralcd.cpp:2009
 msgid "Ambient"
 msgstr "Okoli"
 
 # MSG_PRESS c=20
-#: ultralcd.cpp:2463
+#: ultralcd.cpp:2618
 msgid "and press the knob"
 msgstr "a stisknete tlacitko"
 
 # MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3330
+#: ultralcd.cpp:3529
 msgid "Are left and right Z~carriages all up?"
 msgstr "Dojely oba Z voziky k~hornimu dorazu?"
 
-# MSG_ADJUSTZ
-#: ultralcd.cpp:2600
-msgid "Auto adjust Z?"
-msgstr "Auto doladit Z ?"
-
 # MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:4706
-msgid "Auto deplete [on]"
-msgstr "Spoj Civky [zap]"
+#: ultralcd.cpp:5200
+msgid "SpoolJoin    [on]"
+msgstr "SpoolJoin   [zap]"
 
 # 
-#: ultralcd.cpp:4702
-msgid "Auto deplete[N/A]"
-msgstr "Spoj Civky [N/A]"
+#: ultralcd.cpp:5196
+msgid "SpoolJoin   [N/A]"
+msgstr ""
 
 # MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:4710
-msgid "Auto deplete[off]"
-msgstr "Spoj Civky [vyp]"
+#: ultralcd.cpp:5204
+msgid "SpoolJoin   [off]"
+msgstr "SpoolJoin   [vyp]"
 
 # MSG_AUTO_HOME
 #: messages.c:11
 msgid "Auto home"
-msgstr "Auto home"
+msgstr ""
 
 # MSG_AUTOLOAD_FILAMENT c=17
-#: ultralcd.cpp:6091
+#: ultralcd.cpp:6822
 msgid "AutoLoad filament"
 msgstr "AutoZavedeni fil."
 
 # MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4246
+#: ultralcd.cpp:4462
 msgid "Autoloading filament available only when filament sensor is turned on..."
 msgstr "Automaticke zavadeni filamentu je dostupne pouze pri zapnutem filament senzoru..."
 
 # MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2655
+#: ultralcd.cpp:2813
 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
-#: ultralcd.cpp:7130
-msgid "Axis"
-msgstr "Osa"
-
 # MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:7128
+#: ultralcd.cpp:7949
 msgid "Axis length"
 msgstr "Delka osy"
 
-# MSG_BABYSTEPPING_X
-#: ultralcd.cpp:2481
-msgid "Babystepping X"
-msgstr "Babystepping X"
-
-# MSG_BABYSTEPPING_Y
-#: ultralcd.cpp:2484
-msgid "Babystepping Y"
-msgstr "Babystepping Y"
-
-# MSG_BED
-#: messages.c:15
-msgid "Bed"
-msgstr "Podlozka"
+# MSG_SELFTEST_AXIS
+#: ultralcd.cpp:7951
+msgid "Axis"
+msgstr "Osa"
 
 # MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:7072
+#: ultralcd.cpp:7893
 msgid "Bed / Heater"
 msgstr "Podlozka / Topeni"
 
@@ -185,10 +133,10 @@ msgstr "Bed OK."
 # MSG_BED_HEATING
 #: messages.c:17
 msgid "Bed Heating"
-msgstr "Zahrivani bed"
+msgstr "Zahrivani bedu"
 
 # MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5197
+#: ultralcd.cpp:5768
 msgid "Bed level correct"
 msgstr "Korekce podlozky"
 
@@ -197,43 +145,28 @@ msgstr "Korekce podlozky"
 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_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4
-#: Marlin_main.cpp:4508
-msgid "Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset."
-msgstr "Kalibrace Z selhala. Sensor je odpojeny nebo preruseny kabel. Cekam na reset."
-
-# MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4
-#: Marlin_main.cpp:4512
-msgid "Bed leveling failed. Sensor triggered too high. Waiting for reset."
-msgstr "Kalibrace Z selhala. Sensor sepnul prilis vysoko. Cekam na reset."
-
-# MSG_BEGIN_FILE_LIST
-#: Marlin_main.cpp:4405
-msgid "Begin file list"
-msgstr "Pocatek seznamu souboru"
+# MSG_BED
+#: messages.c:15
+msgid "Bed"
+msgstr "Podlozka"
 
 # MSG_MENU_BELT_STATUS c=15 r=1
-#: ultralcd.cpp:2135
+#: ultralcd.cpp:2059
 msgid "Belt status"
 msgstr "Stav remenu"
 
 # MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:67
+#: messages.c:71
 msgid "Blackout occurred. Recover print?"
 msgstr "Detekovan vypadek proudu.Obnovit tisk?"
 
-# MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4427
-msgid "Calibrate"
-msgstr "Zkalibrovat"
-
-# MSG_CALIBRATE_E c=20 r=1
-#: ultralcd.cpp:4526
-msgid "Calibrate E"
-msgstr "Kalibrovat E"
+# 
+#: ultralcd.cpp:8297
+msgid "Calibrating home"
+msgstr "Kalibruji vychozi poz."
 
 # MSG_CALIBRATE_BED
-#: ultralcd.cpp:5186
+#: ultralcd.cpp:5757
 msgid "Calibrate XYZ"
 msgstr "Kalibrace XYZ"
 
@@ -242,13 +175,13 @@ msgstr "Kalibrace XYZ"
 msgid "Calibrate Z"
 msgstr "Kalibrovat Z"
 
-# 
-#: ultralcd.cpp:7461
-msgid "Calibrating home"
-msgstr "Kalibruji vychozi poz."
+# MSG_CALIBRATE_PINDA c=17 r=1
+#: ultralcd.cpp:4654
+msgid "Calibrate"
+msgstr "Zkalibrovat"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3290
+#: ultralcd.cpp:3492
 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."
 
@@ -258,127 +191,32 @@ msgid "Calibrating Z"
 msgstr "Kalibruji Z"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3290
+#: ultralcd.cpp:3492
 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_MENU_CALIBRATION
-#: messages.c:57
-msgid "Calibration"
-msgstr "Kalibrace"
-
 # MSG_HOMEYZ_DONE
-#: ultralcd.cpp:778
+#: ultralcd.cpp:816
 msgid "Calibration done"
 msgstr "Kalibrace OK"
 
+# MSG_MENU_CALIBRATION
+#: messages.c:61
+msgid "Calibration"
+msgstr "Kalibrace"
+
 # 
-#: ultralcd.cpp:4552
+#: ultralcd.cpp:4781
 msgid "Cancel"
 msgstr "Zrusit"
 
-# MSG_SD_CANT_ENTER_SUBDIR
-#: cardreader.cpp:662
-msgid "Cannot enter subdir: "
-msgstr "Nelze otevrit slozku:"
-
-# MSG_SD_CANT_OPEN_SUBDIR
-#: cardreader.cpp:97
-msgid "Cannot open subdir"
-msgstr "Nelze otevrit slozku"
-
-# MSG_SD_INSERTED
-#:
-msgid "Card inserted"
-msgstr "Karta vlozena"
-
 # MSG_SD_REMOVED
-#: ultralcd.cpp:7819
+#: ultralcd.cpp:8679
 msgid "Card removed"
 msgstr "Karta vyjmuta"
 
-# 
-#: ultralcd.cpp:6087
-msgid "Change extruder"
-msgstr "Zmenit extruder"
-
-# MSG_FILAMENTCHANGE
-#: messages.c:37
-msgid "Change filament"
-msgstr "Vymenit filament"
-
-# MSG_CNG_SDCARD
-#: ultralcd.cpp:5777
-msgid "Change SD card"
-msgstr "Vymenit SD"
-
-# MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2474
-msgid "Change success!"
-msgstr "Zmena uspesna!"
-
-# MSG_CORRECTLY c=20
-#: ultralcd.cpp:2551
-msgid "Changed correctly?"
-msgstr "Vymena ok?"
-
-# MSG_CHANGING_FILAMENT c=20
-#: ultralcd.cpp:1899
-msgid "Changing filament!"
-msgstr "Vymena filamentu!"
-
-# MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:77
-msgid "Checking bed     "
-msgstr "Kontrola podlozky"
-
-# MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:7450
-msgid "Checking endstops"
-msgstr "Kontrola endstopu"
-
-# MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:7456
-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:7451
-msgid "Checking X axis  "
-msgstr "Kontrola osy X"
-
-# MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:7452
-msgid "Checking Y axis  "
-msgstr "Kontrola osy Y"
-
-# MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:7453
-msgid "Checking Z axis  "
-msgstr "Kontrola osy Z"
-
-# MSG_ERR_CHECKSUM_MISMATCH
-#: cmdqueue.cpp:444
-msgid "checksum mismatch, Last Line: "
-msgstr "neplatny kontrolni soucet, posl. radek:\n"
-
-# MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:49
-msgid "Choose extruder:"
-msgstr "Vyberte extruder:"
-
-# MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:50
-msgid "Choose filament:"
-msgstr "Vyber filament:"
-
 # MSG_NOT_COLOR
-#: ultralcd.cpp:2563
+#: ultralcd.cpp:2718
 msgid "Color not correct"
 msgstr "Barva neni cista"
 
@@ -388,20 +226,10 @@ msgid "Cooldown"
 msgstr "Zchladit"
 
 # 
-#: ultralcd.cpp:4108
-msgid "Copy selected language from XFLASH?"
-msgstr "Kopirovat vybrany jazyk do XFLASH?"
-
-# 
-#: ultralcd.cpp:4360
+#: ultralcd.cpp:4587
 msgid "Copy selected language?"
 msgstr "Kopirovat vybrany jazyk?"
 
-# 
-#: ultralcd.cpp:2013
-msgid "Crash"
-msgstr "Naraz"
-
 # MSG_CRASHDETECT_ON
 #: messages.c:27
 msgid "Crash det.   [on]"
@@ -410,7 +238,7 @@ msgstr "Crash det.  [zap]"
 # MSG_CRASHDETECT_NA
 #: messages.c:25
 msgid "Crash det.  [N/A]"
-msgstr "Crash det.  [N/A]"
+msgstr ""
 
 # MSG_CRASHDETECT_OFF
 #: messages.c:26
@@ -423,22 +251,27 @@ msgid "Crash detected."
 msgstr "Detekovan naraz."
 
 # 
-#: Marlin_main.cpp:608
+#: Marlin_main.cpp:600
 msgid "Crash detected. Resume print?"
 msgstr "Detekovan naraz. Obnovit tisk?"
 
+# 
+#: ultralcd.cpp:1853
+msgid "Crash"
+msgstr "Naraz"
+
 # MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:5335
+#: ultralcd.cpp:5909
 msgid "Current"
 msgstr "Pouze aktualni"
 
 # MSG_DATE c=17 r=1
-#: ultralcd.cpp:2235
+#: ultralcd.cpp:2213
 msgid "Date:"
 msgstr "Datum:"
 
 # MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5093
+#: ultralcd.cpp:5654
 msgid "Disable steppers"
 msgstr "Vypnout motory"
 
@@ -448,157 +281,82 @@ 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_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:4828
+#: ultralcd.cpp:5070
 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_CLEAN_NOZZLE_E c=20 r=8
-#: ultralcd.cpp:3890
-msgid "E calibration finished. Please clean the nozzle. Click when done."
-msgstr "E kalibrace ukoncena. Prosim ocistete trysku. Pote potvrdte tlacitkem."
-
-# MSG_EXTRUDER_CORRECTION c=9
-#: ultralcd.cpp:4889
-msgid "E-correct"
-msgstr "Korekce E"
-
-# 
-#: ultralcd.cpp:4640
-msgid "Eject"
-msgstr "Vysunout"
+# MSG_EXTRUDER_CORRECTION c=10
+#: ultralcd.cpp:5134
+msgid "E-correct:"
+msgstr "Korekce E:"
 
 # MSG_EJECT_FILAMENT c=17 r=1
-#: ultralcd.cpp:6081
+#: messages.c:53
 msgid "Eject filament"
 msgstr "Vysunout filament"
 
-# MSG_EJECT_FILAMENT1 c=17 r=1
-#: ultralcd.cpp:5603
-msgid "Eject filament 1"
-msgstr "Vysunout filament 1"
-
-# MSG_EJECT_FILAMENT2 c=17 r=1
-#: ultralcd.cpp:5604
-msgid "Eject filament 2"
-msgstr "Vysunout filament 2"
-
-# MSG_EJECT_FILAMENT3 c=17 r=1
-#: ultralcd.cpp:5605
-msgid "Eject filament 3"
-msgstr "Vysunout filament 3"
-
-# MSG_EJECT_FILAMENT4 c=17 r=1
-#: ultralcd.cpp:5606
-msgid "Eject filament 4"
-msgstr "Vysunout filament 4"
-
-# MSG_EJECT_FILAMENT5 c=17 r=1
-#: ultralcd.cpp:5607
-msgid "Eject filament 5"
-msgstr "Vysunout filament 5"
+# 
+#: ultralcd.cpp:4869
+msgid "Eject"
+msgstr "Vysunout"
 
 # MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1339
+#: mmu.cpp:1434
 msgid "Ejecting filament"
 msgstr "Vysouvam filament"
 
-# MSG_END_FILE_LIST
-#: Marlin_main.cpp:4407
-msgid "End file list"
-msgstr "Konec sezn. souboru"
+# MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
+#: ultralcd.cpp:7917
+msgid "Endstop not hit"
+msgstr "Kon. spinac nesepnut"
 
 # MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:7090
+#: ultralcd.cpp:7911
 msgid "Endstop"
 msgstr "Koncovy spinac"
 
-# MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
-#: ultralcd.cpp:7096
-msgid "Endstop not hit"
-msgstr "Kon. spinac nesepnut"
-
 # MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:7078
+#: ultralcd.cpp:7899
 msgid "Endstops"
 msgstr "Konc. spinace"
 
-# MSG_ENDSTOPS_HIT
-#: messages.c:30
-msgid "endstops hit: "
-msgstr "konc. spinace aktivovany: "
-
-# MSG_LANGUAGE_NAME
-#: language.c:153
-msgid "English"
-msgstr "Cestina"
-
-# MSG_Enqueing
-#:
-msgid "enqueing \""
-msgstr "zarazovani \""
-
 # MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6132
+#: ultralcd.cpp:6859
 msgid "Error - static memory has been overwritten"
 msgstr "Chyba - Doslo k prepisu staticke pameti!"
 
-# MSG_SD_ERR_WRITE_TO_FILE
-#: messages.c:78
-msgid "error writing to file"
-msgstr "chyba zapisu do souboru"
+# MSG_FSENS_NOT_RESPONDING c=20 r=4
+#: ultralcd.cpp:4475
+msgid "ERROR: Filament sensor is not responding, please check connection."
+msgstr "CHYBA: Filament senzor nereaguje, zkontrolujte zapojeni."
 
 # MSG_ERROR
 #: messages.c:28
 msgid "ERROR:"
 msgstr "CHYBA:"
 
-# MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4259
-msgid "ERROR: Filament sensor is not responding, please check connection."
-msgstr "CHYBA: Filament senzor nereaguje, zkontrolujte zapojeni."
+# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
+#: ultralcd.cpp:8304
+msgid "Extruder fan:"
+msgstr "Levy vent.:"
 
-# 
-#: Marlin_main.cpp:1006
-msgid "External SPI flash W25X20CL not responding."
-msgstr "Externi SPI flash W25X20CL neodpovida."
+# MSG_INFO_EXTRUDER c=15 r=1
+#: ultralcd.cpp:2244
+msgid "Extruder info"
+msgstr ""
 
 # MSG_MOVE_E
 #: messages.c:29
 msgid "Extruder"
-msgstr "Extruder"
-
-# 
-#: ultralcd.cpp:5633
-msgid "Extruder 1"
-msgstr "Extruder 1"
-
-# 
-#: ultralcd.cpp:5634
-msgid "Extruder 2"
-msgstr "Extruder 2"
-
-# 
-#: ultralcd.cpp:5635
-msgid "Extruder 3"
-msgstr "Extruder 3"
+msgstr ""
 
 # 
-#: ultralcd.cpp:5636
-msgid "Extruder 4"
-msgstr "Extruder 4"
-
-# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:7468
-msgid "Extruder fan:"
-msgstr "Levy vent.:"
-
-# MSG_INFO_EXTRUDER c=15 r=1
-#: ultralcd.cpp:2266
-msgid "Extruder info"
-msgstr "Extruder info"
+#: ultralcd.cpp:6846
+msgid "Fail stats MMU"
+msgstr "Selhani MMU"
 
 # MSG_FSENS_AUTOLOAD_ON c=17 r=1
-#: ultralcd.cpp:4927
+#: ultralcd.cpp:5168
 msgid "F. autoload  [on]"
 msgstr "F. autozav. [zap]"
 
@@ -608,37 +366,32 @@ msgid "F. autoload [N/A]"
 msgstr "F. autozav. [N/A]"
 
 # MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-#: ultralcd.cpp:4929
+#: ultralcd.cpp:5170
 msgid "F. autoload [off]"
 msgstr "F. autozav. [vyp]"
 
 # 
-#: ultralcd.cpp:6112
+#: ultralcd.cpp:6843
 msgid "Fail stats"
 msgstr "Selhani"
 
-# 
-#: ultralcd.cpp:6115
-msgid "Fail stats MMU"
-msgstr "Selhani MMU"
-
 # MSG_FAN_SPEED c=14
 #: messages.c:31
 msgid "Fan speed"
 msgstr "Rychlost vent."
 
 # MSG_SELFTEST_FAN c=20
-#: messages.c:74
+#: messages.c:78
 msgid "Fan test"
 msgstr "Test ventilatoru"
 
 # MSG_FANS_CHECK_ON c=17 r=1
-#: ultralcd.cpp:5100
+#: ultralcd.cpp:5663
 msgid "Fans check   [on]"
 msgstr "Kontr. vent.[zap]"
 
 # MSG_FANS_CHECK_OFF c=17 r=1
-#: ultralcd.cpp:5102
+#: ultralcd.cpp:5665
 msgid "Fans check  [off]"
 msgstr "Kontr. vent.[vyp]"
 
@@ -647,13 +400,8 @@ msgstr "Kontr. vent.[vyp]"
 msgid "Fil. sensor  [on]"
 msgstr "Fil. senzor [zap]"
 
-# MSG_RESPONSE_POOR c=20 r=2
-#: Marlin_main.cpp:3146
-msgid "Fil. sensor response is poor, disable it?"
-msgstr "Senzor nerozpoznal filament, vypnout?"
-
 # MSG_FSENSOR_NA
-#: ultralcd.cpp:4907
+#: ultralcd.cpp:5148
 msgid "Fil. sensor [N/A]"
 msgstr "Fil. senzor [N/A]"
 
@@ -663,14 +411,9 @@ msgid "Fil. sensor [off]"
 msgstr "Fil. senzor [vyp]"
 
 # 
-#: ultralcd.cpp:2013
+#: ultralcd.cpp:1852
 msgid "Filam. runouts"
-msgstr "Vypadky filamentu"
-
-# MSG_FILAMENT c=17 r=1
-#: messages.c:30
-msgid "Filament"
-msgstr "Filament"
+msgstr "Vypadky filam."
 
 # MSG_FILAMENT_CLEAN c=20 r=2
 #: messages.c:32
@@ -678,102 +421,82 @@ msgid "Filament extruding & with correct color?"
 msgstr "Filament vytlacen a spravne barvy?"
 
 # MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2559
+#: ultralcd.cpp:2714
 msgid "Filament not loaded"
 msgstr "Filament nezaveden"
 
 # MSG_FILAMENT_SENSOR c=20
-#: ultralcd.cpp:7144
+#: messages.c:84
 msgid "Filament sensor"
 msgstr "Senzor filamentu"
 
-# MSG_SELFTEST_FILAMENT_SENSOR c=18
-#: ultralcd.cpp:7477
-msgid "Filament sensor:"
-msgstr "Senzor filamentu:"
-
 # MSG_FILAMENT_USED c=19 r=1
-#: ultralcd.cpp:2725
+#: ultralcd.cpp:2885
 msgid "Filament used"
 msgstr "Spotrebovano filamentu"
 
-# MSG_STATS_FILAMENTUSED c=20
-#: ultralcd.cpp:2142
-msgid "Filament used:  "
-msgstr "Filament : "
+# MSG_PRINT_TIME c=19 r=1
+#: ultralcd.cpp:2886
+msgid "Print time"
+msgstr "Cas tisku"
 
 # MSG_FILE_INCOMPLETE c=20 r=2
-#: ultralcd.cpp:7595
+#: ultralcd.cpp:8432
 msgid "File incomplete. Continue anyway?"
 msgstr "Soubor nekompletni. Pokracovat?"
 
-# MSG_SD_FILE_OPENED
-#: cardreader.cpp:395
-msgid "File opened: "
-msgstr "Soubor otevren:"
-
-# MSG_SD_FILE_SELECTED
-#: cardreader.cpp:401
-msgid "File selected"
-msgstr "Soubor vybran"
-
 # MSG_FINISHING_MOVEMENTS c=20 r=1
 #: messages.c:40
 msgid "Finishing movements"
 msgstr "Dokoncovani pohybu"
 
 # MSG_V2_CALIBRATION c=17 r=1
-#: ultralcd.cpp:5177
+#: messages.c:105
 msgid "First layer cal."
 msgstr "Kal. prvni vrstvy"
 
 # MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:4740
+#: ultralcd.cpp:4982
 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:640
+#: mmu.cpp:724
 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:6205
+#: ultralcd.cpp:6932
 msgid "Flow"
 msgstr "Prutok"
 
 # MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2228
+#: ultralcd.cpp:2206
 msgid "forum.prusa3d.com"
-msgstr "forum.prusa3d.com"
+msgstr ""
 
 # MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:71
+#: messages.c:75
 msgid "Front print fan?"
 msgstr "Predni tiskovy vent?"
 
 # MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3101
+#: ultralcd.cpp:3294
 msgid "Front side[um]"
 msgstr "Vpredu [um]"
 
 # MSG_SELFTEST_FANS
-#: ultralcd.cpp:7136
+#: ultralcd.cpp:7957
 msgid "Front/left fans"
 msgstr "Predni/levy vent."
 
 # MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:7066
+#: ultralcd.cpp:7887
 msgid "Heater/Thermistor"
 msgstr "Topeni/Termistor"
 
-# MSG_HEATING
-#: messages.c:46
-msgid "Heating"
-msgstr "Zahrivani"
-
 # MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:7475
+#: Marlin_main.cpp:8467
 msgid "Heating disabled by safety timer."
 msgstr "Zahrivani preruseno bezpecnostnim casovacem."
 
@@ -782,138 +505,163 @@ msgstr "Zahrivani preruseno bezpecnostnim casovacem."
 msgid "Heating done."
 msgstr "Zahrivani OK."
 
+# MSG_HEATING
+#: messages.c:46
+msgid "Heating"
+msgstr "Zahrivani"
+
 # MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:4719
+#: ultralcd.cpp:4961
 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:2229
+#: ultralcd.cpp:2207
 msgid "howto.prusa3d.com"
-msgstr "howto.prusa3d.com"
+msgstr ""
 
-# MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:4749
-msgid "I will run xyz calibration now. It will take approx. 12 mins."
-msgstr "Nyni provedu xyz kalibraci. Zabere to priblizne 12 min."
+# MSG_FILAMENTCHANGE
+#: messages.c:37
+msgid "Change filament"
+msgstr "Vymenit filament"
 
-# MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:4757
-msgid "I will run z calibration now."
-msgstr "Nyni provedu z kalibraci."
+# MSG_CHANGE_SUCCESS
+#: ultralcd.cpp:2629
+msgid "Change success!"
+msgstr "Zmena uspesna!"
 
-# MSG_WIZARD_V2_CAL_2 c=20 r=12
-#: ultralcd.cpp:4822
-msgid "I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."
-msgstr "Zacnu tisknout linku a Vy budete postupne snizovat trysku otacenim tlacitka dokud nedosahnete optimalni vysky. Prohlednete si obrazky v nasi prirucce v kapitole Kalibrace."
+# MSG_CORRECTLY c=20
+#: ultralcd.cpp:2706
+msgid "Changed correctly?"
+msgstr "Vymena ok?"
 
-# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: mesh_bed_calibration.cpp:2481
-msgid "Improving bed calibration point"
-msgstr "Zlepsuji presnost kalibracniho bodu"
+# MSG_SELFTEST_CHECK_BED c=20
+#: messages.c:81
+msgid "Checking bed     "
+msgstr "Kontrola podlozky"
 
-# MSG_WATCH
-#: messages.c:93
-msgid "Info screen"
-msgstr "Informace"
+# MSG_SELFTEST_CHECK_ENDSTOPS c=20
+#: ultralcd.cpp:8286
+msgid "Checking endstops"
+msgstr "Kontrola endstopu"
 
-# MSG_INIT_SDCARD
-#: ultralcd.cpp:5785
-msgid "Init. SD card"
-msgstr "Inic. SD"
+# MSG_SELFTEST_CHECK_HOTEND c=20
+#: ultralcd.cpp:8292
+msgid "Checking hotend  "
+msgstr "Kontrola hotend "
 
-# MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2459
-msgid "Insert filament"
-msgstr "Vlozte filament"
+# MSG_SELFTEST_CHECK_FSENSOR c=20
+#: messages.c:82
+msgid "Checking sensors "
+msgstr "Kontrola senzoru"
+
+# MSG_SELFTEST_CHECK_X c=20
+#: ultralcd.cpp:8287
+msgid "Checking X axis  "
+msgstr "Kontrola osy X"
+
+# MSG_SELFTEST_CHECK_Y c=20
+#: ultralcd.cpp:8288
+msgid "Checking Y axis  "
+msgstr "Kontrola osy Y"
+
+# MSG_SELFTEST_CHECK_Z c=20
+#: ultralcd.cpp:8289
+msgid "Checking Z axis  "
+msgstr "Kontrola osy Z"
+
+# MSG_CHOOSE_EXTRUDER c=20 r=1
+#: messages.c:49
+msgid "Choose extruder:"
+msgstr "Vyberte extruder:"
+
+# MSG_CHOOSE_FILAMENT c=20 r=1
+#: messages.c:50
+msgid "Choose filament:"
+msgstr "Vyber filament:"
+
+# MSG_FILAMENT c=17 r=1
+#: messages.c:30
+msgid "Filament"
+msgstr ""
 
-# MSG_FILAMENT_LOADING_T0 c=20 r=4
-#: messages.c:33
-msgid "Insert filament into extruder 1. Click when done."
-msgstr "Vlozte filament do extruderu 1. Potvrdte tlacitkem."
+# MSG_WIZARD_XYZ_CAL c=20 r=8
+#: ultralcd.cpp:4991
+msgid "I will run xyz calibration now. It will take approx. 12 mins."
+msgstr "Nyni provedu xyz kalibraci. Zabere to priblizne 12 min."
 
-# MSG_FILAMENT_LOADING_T1 c=20 r=4
-#: messages.c:34
-msgid "Insert filament into extruder 2. Click when done."
-msgstr "Vlozte filament do extruderu 2. Potvrdte tlacitkem."
+# MSG_WIZARD_Z_CAL c=20 r=8
+#: ultralcd.cpp:4999
+msgid "I will run z calibration now."
+msgstr "Nyni provedu z kalibraci."
 
-# MSG_FILAMENT_LOADING_T2 c=20 r=4
-#: messages.c:35
-msgid "Insert filament into extruder 3. Click when done."
-msgstr "Vlozte filament do extruderu 3. Potvrdte tlacitkem."
+# MSG_WIZARD_V2_CAL_2 c=20 r=12
+#: ultralcd.cpp:5064
+msgid "I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."
+msgstr "Zacnu tisknout linku a Vy budete postupne snizovat trysku otacenim tlacitka dokud nedosahnete optimalni vysky. Prohlednete si obrazky v nasi prirucce v kapitole Kalibrace."
 
-# MSG_FILAMENT_LOADING_T3 c=20 r=4
-#: messages.c:36
-msgid "Insert filament into extruder 4. Click when done."
-msgstr "Vlozte filament do extruderu 4. Potvrdte tlacitkem."
+# MSG_WATCH
+#: messages.c:99
+msgid "Info screen"
+msgstr "Informace"
 
 # 
-#: ultralcd.cpp:4782
+#: ultralcd.cpp:5024
 msgid "Is filament 1 loaded?"
 msgstr "Je filament 1 zaveden?"
 
+# MSG_INSERT_FILAMENT c=20
+#: ultralcd.cpp:2614
+msgid "Insert filament"
+msgstr "Vlozte filament"
+
 # MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4785
+#: ultralcd.cpp:5027
 msgid "Is filament loaded?"
 msgstr "Je filament zaveden?"
 
 # MSG_WIZARD_PLA_FILAMENT c=20 r=2
-#: ultralcd.cpp:4816
+#: ultralcd.cpp:5058
 msgid "Is it PLA filament?"
 msgstr "Je to PLA filament?"
 
 # MSG_PLA_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4561
+#: ultralcd.cpp:4790
 msgid "Is PLA filament loaded?"
 msgstr "Je PLA filament zaveden?"
 
 # MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:86
+#: messages.c:92
 msgid "Is steel sheet on heatbed?"
 msgstr "Je tiskovy plat na podlozce?"
 
-# MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20
-#: mesh_bed_calibration.cpp:2223
-msgid "Iteration "
-msgstr "Iterace "
-
-# MSG_KILLED
-#: Marlin_main.cpp:7552
-msgid "KILLED. "
-msgstr "ZRUSENO."
-
-# 
-#: ultralcd.cpp:1960
-msgid "Last print"
-msgstr "Posledni tisk"
-
 # 
-#: ultralcd.cpp:1976
+#: ultralcd.cpp:1795
 msgid "Last print failures"
 msgstr "Selhani posl. tisku"
 
 # 
-#: ultralcd.cpp:2861
-msgid "Left"
-msgstr "Vlevo:"
+#: ultralcd.cpp:1772
+msgid "Last print"
+msgstr "Posledni tisk"
 
 # MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:72
+#: messages.c:76
 msgid "Left hotend fan?"
 msgstr "Levy vent na trysce?"
 
+# 
+#: ultralcd.cpp:3018
+msgid "Left"
+msgstr "Vlevo"
+
 # MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3099
+#: ultralcd.cpp:3292
 msgid "Left side [um]"
 msgstr "Vlevo [um]"
 
-# MSG_LEFT c=12 r=1
-#: ultralcd.cpp:2308
-msgid "Left:"
-msgstr "Vlevo:"
-
 # 
-#: ultralcd.cpp:5107
+#: ultralcd.cpp:5680
 msgid "Lin. correction"
 msgstr "Korekce lin."
 
@@ -922,48 +670,13 @@ msgstr "Korekce lin."
 msgid "Live adjust Z"
 msgstr "Doladeni osy Z"
 
-# MSG_LOAD_ALL c=17
-#: ultralcd.cpp:5575
-msgid "Load all"
-msgstr "Zavest vse"
-
 # MSG_LOAD_FILAMENT c=17
 #: messages.c:51
 msgid "Load filament"
 msgstr "Zavest filament"
 
-# MSG_LOAD_FILAMENT_1 c=17
-#: ultralcd.cpp:5576
-msgid "Load filament 1"
-msgstr "Zavest filament 1"
-
-# MSG_LOAD_FILAMENT_2 c=17
-#: ultralcd.cpp:5577
-msgid "Load filament 2"
-msgstr "Zavest filament 2"
-
-# MSG_LOAD_FILAMENT_3 c=17
-#: ultralcd.cpp:5578
-msgid "Load filament 3"
-msgstr "Zavest filament 3"
-
-# MSG_LOAD_FILAMENT_4 c=17
-#: ultralcd.cpp:5579
-msgid "Load filament 4"
-msgstr "Zavest filament 4"
-
-# MSG_LOAD_FILAMENT_5 c=17
-#: ultralcd.cpp:5582
-msgid "Load filament 5"
-msgstr "Zavest filament 5"
-
-# 
-#: ultralcd.cpp:6079
-msgid "Load to nozzle"
-msgstr "Zavest do trysky"
-
 # MSG_LOADING_COLOR
-#: ultralcd.cpp:2499
+#: ultralcd.cpp:2654
 msgid "Loading color"
 msgstr "Cisteni barvy"
 
@@ -973,137 +686,92 @@ msgid "Loading filament"
 msgstr "Zavadeni filamentu"
 
 # MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:7120
+#: ultralcd.cpp:7941
 msgid "Loose pulley"
 msgstr "Uvolnena remenicka"
 
-# MSG_M104_INVALID_EXTRUDER
-#: Marlin_main.cpp:7675
-msgid "M104 Invalid extruder "
-msgstr "M104 Neplatny extruder "
-
-# MSG_M105_INVALID_EXTRUDER
-#: Marlin_main.cpp:7678
-msgid "M105 Invalid extruder "
-msgstr "M105 Neplatny extruder "
-
-# MSG_M109_INVALID_EXTRUDER
-#: Marlin_main.cpp:7681
-msgid "M109 Invalid extruder "
-msgstr "M109 Neplatny extruder "
+# 
+#: ultralcd.cpp:6805
+msgid "Load to nozzle"
+msgstr "Zavest do trysky"
 
 # MSG_M117_V2_CALIBRATION c=25 r=1
-#: messages.c:53
+#: messages.c:55
 msgid "M117 First layer cal."
 msgstr "M117 Kal. prvni vrstvy"
 
-# MSG_M200_INVALID_EXTRUDER
-#: Marlin_main.cpp:5857
-msgid "M200 Invalid extruder "
-msgstr "M200 Neplatny extruder "
-
-# MSG_M218_INVALID_EXTRUDER
-#: Marlin_main.cpp:7684
-msgid "M218 Invalid extruder "
-msgstr "M218 Neplatny extruder "
-
-# MSG_M221_INVALID_EXTRUDER
-#: Marlin_main.cpp:7687
-msgid "M221 Invalid extruder "
-msgstr "M221 Neplatny extruder "
-
 # MSG_MAIN
-#: messages.c:54
+#: messages.c:56
 msgid "Main"
 msgstr "Hlavni nabidka"
 
-# MSG_MARK_FIL c=20 r=8
-#: ultralcd.cpp:3840
-msgid "Mark filament 100mm from extruder body. Click when done."
-msgstr "Oznacte filament 100 mm od tela extruderu a pote potvrdte tlacitkem."
-
-# 
-#: ultralcd.cpp:2896
-msgid "Measured skew"
-msgstr "Merene zkoseni"
-
-# MSG_MEASURED_SKEW c=15 r=1
-#: ultralcd.cpp:2335
-msgid "Measured skew:"
-msgstr "Merene zkoseni:"
-
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:55
+#: messages.c:59
 msgid "Measuring reference height of calibration point"
 msgstr "Merim referencni vysku kalibracniho bodu"
 
 # MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5192
+#: ultralcd.cpp:5763
 msgid "Mesh Bed Leveling"
-msgstr "Mesh Bed Leveling"
+msgstr ""
+
+# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
+#: mmu.cpp:762
+msgid "MMU OK. Resuming position..."
+msgstr "MMU OK. Pokracuji v tisku..."
+
+# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
+#: mmu.cpp:755
+msgid "MMU OK. Resuming temperature..."
+msgstr "MMU OK. Pokracuji v nahrivani..."
+
+# 
+#: ultralcd.cpp:3059
+msgid "Measured skew"
+msgstr "Merene zkoseni"
 
 # 
-#: ultralcd.cpp:1977
+#: ultralcd.cpp:1796
 msgid "MMU fails"
 msgstr "Selhani MMU"
 
 # 
-#: mmu.cpp:1399
+#: mmu.cpp:1613
 msgid "MMU load failed     "
 msgstr "Zavedeni MMU selhalo"
 
 # 
-#: ultralcd.cpp:1977
+#: ultralcd.cpp:1797
 msgid "MMU load fails"
 msgstr "MMU selhani zavadeni"
 
-# 
-#: mmu.cpp:635
-msgid "MMU needs user attention."
-msgstr "MMU potrebuje zasah uzivatele."
-
-# MSG_MMU_NEEDS_ATTENTION c=20 r=4
-#: mmu.cpp:359
-msgid "MMU needs user attention. Fix the issue and then press button on MMU unit."
-msgstr "MMU potrebuje zasah uzivatele. Opravte chybu a pote stisknete tlacitko na jednotce MMU."
-
-# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:676
-msgid "MMU OK. Resuming position..."
-msgstr "MMU OK. Pokracuji v tisku..."
-
-# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:669
-msgid "MMU OK. Resuming temperature..."
-msgstr "MMU OK. Pokracuji v nahrivani..."
-
 # MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:687
+#: mmu.cpp:773
 msgid "MMU OK. Resuming..."
 msgstr "MMU OK. Pokracuji..."
 
-# 
-#: ultralcd.cpp:1994
-msgid "MMU power fails"
-msgstr "MMU vypadky proudu"
-
-# 
-#: ultralcd.cpp:2241
-msgid "MMU2 connected"
-msgstr "MMU2 pripojeno"
-
 # MSG_STEALTH_MODE_OFF
-#: messages.c:84
+#: messages.c:90
 msgid "Mode     [Normal]"
 msgstr "Mod      [Normal]"
 
 # MSG_SILENT_MODE_ON
-#: messages.c:83
+#: messages.c:89
 msgid "Mode     [silent]"
 msgstr "Mod       [tichy]"
 
+# 
+#: mmu.cpp:719
+msgid "MMU needs user attention."
+msgstr "MMU potrebuje zasah uzivatele."
+
+# 
+#: ultralcd.cpp:1823
+msgid "MMU power fails"
+msgstr "MMU vypadky proudu"
+
 # MSG_STEALTH_MODE_ON
-#: messages.c:85
+#: messages.c:91
 msgid "Mode    [Stealth]"
 msgstr "Mod       [tichy]"
 
@@ -1113,197 +781,137 @@ msgid "Mode [auto power]"
 msgstr "Mod [automaticky]"
 
 # MSG_SILENT_MODE_OFF
-#: messages.c:82
+#: messages.c:88
 msgid "Mode [high power]"
 msgstr "Mod  [vys. vykon]"
 
+# 
+#: ultralcd.cpp:2219
+msgid "MMU2 connected"
+msgstr "MMU2 pripojeno"
+
 # MSG_SELFTEST_MOTOR
-#: messages.c:79
+#: messages.c:83
 msgid "Motor"
-msgstr "Motor"
+msgstr ""
 
 # MSG_MOVE_AXIS
-#: ultralcd.cpp:5091
+#: ultralcd.cpp:5652
 msgid "Move axis"
 msgstr "Posunout osu"
 
 # MSG_MOVE_X
-#: ultralcd.cpp:4164
+#: ultralcd.cpp:4378
 msgid "Move X"
 msgstr "Posunout X"
 
 # MSG_MOVE_Y
-#: ultralcd.cpp:4165
+#: ultralcd.cpp:4379
 msgid "Move Y"
 msgstr "Posunout Y"
 
 # MSG_MOVE_Z
-#: ultralcd.cpp:4166
+#: ultralcd.cpp:4380
 msgid "Move Z"
 msgstr "Posunout Z"
 
-# 
-#: ultralcd.cpp:2867
-msgid "N/A"
-msgstr "N/A"
-
-# 
-#: util.cpp:293
-msgid "New firmware version available:"
-msgstr "Vysla nova verze firmware:"
-
-# MSG_NO
-#: messages.c:58
-msgid "No"
-msgstr "Ne"
-
-# 
-#:
-msgid "No "
-msgstr "Ne"
-
-# MSG_ERR_NO_CHECKSUM
-#: cmdqueue.cpp:456
-msgid "No Checksum with line number, Last Line: "
-msgstr "Zadny kontrolni soucet s cislem radku, Posl. radek:"
-
 # MSG_NO_MOVE
-#: Marlin_main.cpp:4908
+#: Marlin_main.cpp:5292
 msgid "No move."
 msgstr "Bez pohybu."
 
 # MSG_NO_CARD
-#: ultralcd.cpp:6059
+#: ultralcd.cpp:6772
 msgid "No SD card"
 msgstr "Zadna SD karta"
 
-# MSG_ERR_NO_THERMISTORS
-#: Marlin_main.cpp:4946
-msgid "No thermistors - no temperature"
-msgstr "Bez termistoru - bez odectu teploty"
+# 
+#: ultralcd.cpp:3024
+msgid "N/A"
+msgstr ""
+
+# MSG_NO
+#: messages.c:62
+msgid "No"
+msgstr "Ne"
 
 # MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:7068
+#: ultralcd.cpp:7889
 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
+#: messages.c:79
 msgid "Not spinning"
 msgstr "Netoci se"
 
 # MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4821
+#: ultralcd.cpp:5063
 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:4765
+#: ultralcd.cpp:5007
 msgid "Now I will preheat nozzle for PLA."
 msgstr "Nyni predehreji trysku pro PLA."
 
-# 
-#: ultralcd.cpp:4756
-msgid "Now remove the test print from steel sheet."
-msgstr "Nyni odstrante testovaci vytisk z tiskoveho platu."
-
 # MSG_NOZZLE
-#: messages.c:59
+#: messages.c:63
 msgid "Nozzle"
 msgstr "Tryska"
 
-# 
-#: ultralcd.cpp:1919
-msgid "Nozzle FAN"
-msgstr "Trysk. vent."
-
-# MSG_INFO_NOZZLE_FAN c=11 r=1
-#: ultralcd.cpp:1537
-msgid "Nozzle FAN:"
-msgstr "Trysk. vent:"
-
-# MSG_NOZZLE1
-#: ultralcd.cpp:5995
-msgid "Nozzle2"
-msgstr "Tryska2"
-
-# MSG_NOZZLE2
-#: ultralcd.cpp:5998
-msgid "Nozzle3"
-msgstr "Tryska3"
-
-# MSG_OK
-#: Marlin_main.cpp:6333
-msgid "ok"
-msgstr "ok"
-
 # MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
-#: Marlin_main.cpp:1516
+#: Marlin_main.cpp:1519
 msgid "Old settings found. Default PID, Esteps etc. will be set."
 msgstr "Neplatne hodnoty nastaveni. Bude pouzito vychozi PID, Esteps atd."
 
-# MSG_ENDSTOP_OPEN
-#: messages.c:29
-msgid "open"
-msgstr "otevrit"
-
-# MSG_SD_OPEN_FILE_FAIL
-#: messages.c:79
-msgid "open failed, File: "
-msgstr "nelze otevrit, Soubor: "
+# 
+#: ultralcd.cpp:4998
+msgid "Now remove the test print from steel sheet."
+msgstr "Nyni odstrante testovaci vytisk z tiskoveho platu."
 
-# MSG_SD_OPENROOT_FAIL
-#: cardreader.cpp:196
-msgid "openRoot failed"
-msgstr "openRoot selhal"
+# 
+#: ultralcd.cpp:1722
+msgid "Nozzle FAN"
+msgstr "Vent. trysky"
 
 # MSG_PAUSE_PRINT
-#: ultralcd.cpp:6029
+#: ultralcd.cpp:6735
 msgid "Pause print"
 msgstr "Pozastavit tisk"
 
-# MSG_PICK_Z
-#: ultralcd.cpp:3463
-msgid "Pick print"
-msgstr "Vyberte vytisk"
-
 # MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1741
+#: ultralcd.cpp:1606
 msgid "PID cal.           "
 msgstr "PID kal. "
 
 # MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1747
+#: ultralcd.cpp:1612
 msgid "PID cal. finished"
 msgstr "PID kal. ukoncena"
 
 # MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5198
+#: ultralcd.cpp:5769
 msgid "PID calibration"
 msgstr "PID kalibrace"
 
 # MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:808
+#: ultralcd.cpp:846
 msgid "PINDA Heating"
 msgstr "Nahrivani PINDA"
 
 # MSG_PAPER c=20 r=8
-#: messages.c:60
+#: messages.c:64
 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_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:7060
-msgid "Please check :"
-msgstr "Zkontrolujte :"
-
-# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:94
-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_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:4830
+#: ultralcd.cpp:5072
 msgid "Please clean heatbed and then press the knob."
 msgstr "Prosim ocistete podlozku a stisknete tlacitko."
 
@@ -1312,153 +920,128 @@ msgstr "Prosim ocistete podlozku a stisknete tlacitko."
 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:7881
+msgid "Please check :"
+msgstr "Zkontrolujte :"
+
+# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
+#: messages.c:100
+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_WIZARD_LOAD_FILAMENT c=20 r=8
-#: ultralcd.cpp:4664
+#: ultralcd.cpp:4894
 msgid "Please insert PLA filament to the extruder, then press knob to load it."
 msgstr "Prosim vlozte PLA filament do extruderu, pote stisknete tlacitko pro zavedeni filamentu."
 
-# 
-#: ultralcd.cpp:4660
-msgid "Please insert PLA filament to the first tube of MMU, then press the knob to load it."
-msgstr "Prosim vlozte PLA filament do trubicky MMU, pote stisknete tlacitko pro zavedeni filamentu."
-
-# MSG_WIZARD_INSERT_CORRECT_FILAMENT c=20 r=8
-#: ultralcd.cpp:4109
-msgid "Please load PLA filament and then resume Wizard by rebooting the printer."
-msgstr "Prosim zavedte PLA filament a po te obnovte Pruvodce stisknutim reset tlacitka."
-
 # MSG_PLEASE_LOAD_PLA c=20 r=4
-#: ultralcd.cpp:4566
+#: ultralcd.cpp:4795
 msgid "Please load PLA filament first."
 msgstr "Nejdrive prosim zavedte PLA filament."
 
 # MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3025
+#: Marlin_main.cpp:3064
 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:65
 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:68
 msgid "Please press the knob to unload filament"
 msgstr "Pro vysunuti filamentu stisknete prosim tlacitko"
 
+# 
+#: ultralcd.cpp:4889
+msgid "Please insert PLA filament to the first tube of MMU, then press the knob to load it."
+msgstr "Prosim vlozte PLA filament do trubicky MMU, pote stisknete tlacitko pro zavedeni filamentu."
+
 # MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:66
+#: messages.c:70
 msgid "Please pull out filament immediately"
 msgstr "Prosim vyjmete urychlene filament"
 
 # MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1347
+#: mmu.cpp:1440
 msgid "Please remove filament and then press the knob."
 msgstr "Prosim vyjmete filament a pote stisknete tlacitko."
 
-# 
-#: ultralcd.cpp:4755
-msgid "Please remove shipping helpers first."
-msgstr "Nejprve prosim sundejte transportni soucastky."
-
 # MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:70
+#: messages.c:74
 msgid "Please remove steel sheet from heatbed."
 msgstr "Odstrante prosim tiskovy plat z podlozky."
 
 # MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4052
+#: Marlin_main.cpp:4355
 msgid "Please run XYZ calibration first."
 msgstr "Nejprve spustte kalibraci XYZ."
 
 # MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1293
+#: mmu.cpp:1359
 msgid "Please update firmware in your MMU2. Waiting for reset."
 msgstr "Prosim aktualizujte firmware ve vasi MMU2 jednotce. Cekam na reset."
 
-# 
-#: util.cpp:297
-msgid "Please upgrade."
-msgstr "Prosim aktualizujte."
-
 # MSG_PLEASE_WAIT c=20
-#: messages.c:62
+#: messages.c:66
 msgid "Please wait"
 msgstr "Prosim cekejte"
 
 # 
-#: ultralcd.cpp:2013
-msgid "Power failures"
-msgstr "Vypadky proudu"
+#: ultralcd.cpp:4997
+msgid "Please remove shipping helpers first."
+msgstr "Nejprve prosim sundejte transportni soucastky."
 
-# MSG_POWERUP
-#: messages.c:69
-msgid "PowerUp"
-msgstr "Zapnuti"
+# MSG_PREHEAT_NOZZLE c=20
+#: messages.c:67
+msgid "Preheat the nozzle!"
+msgstr "Predehrejte trysku!"
 
 # MSG_PREHEAT
-#: ultralcd.cpp:6018
+#: ultralcd.cpp:6722
 msgid "Preheat"
 msgstr "Predehrev"
 
-# MSG_PREHEAT_NOZZLE c=20
-#: messages.c:63
-msgid "Preheat the nozzle!"
-msgstr "Predehrejte trysku!"
-
 # MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:96
+#: messages.c:102
 msgid "Preheating nozzle. Please wait."
-msgstr "Predehrivam trysku. Prosim cekejte."
-
-# 
-#: ultralcd.cpp:2350
-msgid "Preheating to load"
-msgstr "Predehrivam k zavedeni"
+msgstr "Predehrev trysky. Prosim cekejte."
 
 # 
-#: ultralcd.cpp:2351
-msgid "Preheating to unload"
-msgstr "Predehrivam k vyjmuti"
-
-# MSG_PREPARE_FILAMENT c=20 r=1
-#: ultralcd.cpp:1911
-msgid "Prepare new filament"
-msgstr "Pripravte filament"
+#: util.cpp:297
+msgid "Please upgrade."
+msgstr "Prosim aktualizujte."
 
 # MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:9150
+#: Marlin_main.cpp:10364
 msgid "Press knob to preheat nozzle and continue."
 msgstr "Pro nahrati trysky a pokracovani stisknete tlacitko."
 
 # 
-#: ultralcd.cpp:2313
-msgid "Press the knob"
-msgstr "Stisknete hl. tlacitko"
-
-# 
-#: mmu.cpp:639
-msgid "Press the knob to resume nozzle temperature."
-msgstr "Pro pokracovani nahrivani trysky stisknete tlacitko."
+#: ultralcd.cpp:1851
+msgid "Power failures"
+msgstr "Vypadky proudu"
 
 # MSG_PRINT_ABORTED c=20
-#: messages.c:65
+#: messages.c:69
 msgid "Print aborted"
 msgstr "Tisk prerusen"
 
 # 
-#: ultralcd.cpp:1921
-msgid "Print FAN"
-msgstr "Tiskovy vent."
+#: ultralcd.cpp:2455
+msgid "Preheating to load"
+msgstr "Predehrev k zavedeni"
 
-# MSG_INFO_PRINT_FAN c=11 r=1
-#: ultralcd.cpp:1549
-msgid "Print FAN: "
-msgstr "Tisk. vent:"
+# 
+#: ultralcd.cpp:2459
+msgid "Preheating to unload"
+msgstr "Predehrev k vyjmuti"
 
 # MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:7471
+#: ultralcd.cpp:8307
 msgid "Print fan:"
 msgstr "Tiskovy vent.:"
 
@@ -1467,185 +1050,110 @@ msgstr "Tiskovy vent.:"
 msgid "Print from SD"
 msgstr "Tisk z SD"
 
+# 
+#: ultralcd.cpp:2317
+msgid "Press the knob"
+msgstr "Stisknete hl. tlacitko"
+
 # MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1022
+#: ultralcd.cpp:1069
 msgid "Print paused"
 msgstr "Tisk pozastaven"
 
-# MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2727
-msgid "Print time"
-msgstr "Cas tisku"
-
-# MSG_STATS_PRINTTIME c=20
-#: ultralcd.cpp:2151
-msgid "Print time:  "
-msgstr "Cas tisku: "
-
-# MSG_PRINTER_DISCONNECTED c=20 r=1
-#: ultralcd.cpp:607
-msgid "Printer disconnected"
-msgstr "Tiskarna odpojena"
-
-# MSG_ERR_KILLED
-#: Marlin_main.cpp:7547
-msgid "Printer halted. kill() called!"
-msgstr "Tiskarna zastavena. Volano kill()!"
+# 
+#: mmu.cpp:723
+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:41
 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."
 
-# MSG_ERR_STOPPED
-#: messages.c:32
-msgid "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"
-msgstr "Tisk zastaven kvuli chybam. Opravte chybu a pouzijte M999 pro restart. (Teplota resetovana, nastavte ji po restartu)"
-
-# 
-#:
-msgid "Prusa i3 MK2 ready."
-msgstr "Prusa i3 MK2 ok."
-
-# WELCOME_MSG c=20
-#:
-msgid "Prusa i3 MK2.5 ready."
-msgstr "Prusa i3 MK2.5 ok."
-
-# WELCOME_MSG c=20
-#:
-msgid "Prusa i3 MK3 ready."
-msgstr "Prusa i3 MK3 ok."
-
 # 
-#:
-msgid "Prusa i3 MK3S OK."
-msgstr "Prusa i3 MK3S OK."
+#: ultralcd.cpp:1723
+msgid "Print FAN"
+msgstr "Tiskovy vent."
 
 # MSG_PRUSA3D
-#: ultralcd.cpp:2227
+#: ultralcd.cpp:2205
 msgid "prusa3d.com"
-msgstr "prusa3d.com"
+msgstr ""
 
 # MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3102
+#: ultralcd.cpp:3295
 msgid "Rear side [um]"
 msgstr "Vzadu [um]"
 
 # MSG_RECOVERING_PRINT c=20 r=1
-#: Marlin_main.cpp:8575
+#: Marlin_main.cpp:9764
 msgid "Recovering print    "
 msgstr "Obnovovani tisku "
 
-# MSG_REFRESH
-#:
-msgid "Refresh"
-msgstr "Obnovit"
-
 # MSG_REMOVE_OLD_FILAMENT c=20 r=4
-#: mmu.cpp:744
+#: mmu.cpp:830
 msgid "Remove old filament and press the knob to start loading new filament."
 msgstr "Vyjmete stary filament a stisknete tlacitko pro zavedeni noveho."
 
-# MSG_M119_REPORT
-#: Marlin_main.cpp:5297
-msgid "Reporting endstop status"
-msgstr "Report stavu konc. spinacu"
-
 # 
-#: Marlin_main.cpp:7076
-msgid "Resend"
-msgstr "Poslat znovu"
-
-# MSG_RESEND
-#: Marlin_main.cpp:6911
-msgid "Resend: "
-msgstr "Poslat znovu: "
-
-# MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3103
-msgid "Reset"
-msgstr "Reset"
+#: 
+msgid "Prusa i3 MK3S OK."
+msgstr ""
 
 # MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5203
+#: ultralcd.cpp:5774
 msgid "Reset XYZ calibr."
 msgstr "Reset XYZ kalibr."
 
+# MSG_BED_CORRECTION_RESET
+#: ultralcd.cpp:3296
+msgid "Reset"
+msgstr ""
+
 # MSG_RESUME_PRINT
-#: ultralcd.cpp:6033
+#: ultralcd.cpp:6742
 msgid "Resume print"
 msgstr "Pokracovat"
 
 # MSG_RESUMING_PRINT c=20 r=1
-#: messages.c:69
+#: messages.c:73
 msgid "Resuming print"
 msgstr "Obnoveni tisku"
 
-# 
-#: ultralcd.cpp:2862
-msgid "Right"
-msgstr "Vpravo"
-
 # MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3100
+#: ultralcd.cpp:3293
 msgid "Right side[um]"
 msgstr "Vpravo [um]"
 
-# MSG_RIGHT c=12 r=1
-#: ultralcd.cpp:2309
-msgid "Right:"
-msgstr "Pravy:"
-
-# MSG_E_CAL_KNOB c=20 r=8
-#: ultralcd.cpp:3835
-msgid "Rotate knob until mark reaches extruder body. Click when done."
-msgstr "Otacejte tlacitkem dokud znacka nedosahne tela extruderu. Potvrdte tlacitkem."
-
 # MSG_SECOND_SERIAL_ON c=17 r=1
-#: ultralcd.cpp:5119
+#: ultralcd.cpp:5692
 msgid "RPi port     [on]"
 msgstr "RPi port    [zap]"
 
 # MSG_SECOND_SERIAL_OFF c=17 r=1
-#: ultralcd.cpp:5117
+#: ultralcd.cpp:5690
 msgid "RPi port    [off]"
 msgstr "RPi port    [vyp]"
 
 # MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4583
+#: ultralcd.cpp:4812
 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_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-#: ultralcd.cpp:5033
+#: ultralcd.cpp:5322
 msgid "SD card  [normal]"
-msgstr "SD card  [normal]"
-
-# MSG_SD_CARD_OK
-#: cardreader.cpp:202
-msgid "SD card ok"
-msgstr "SD karta ok"
-
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:4238
-msgid "SD card [FlshAir]"
-msgstr "SD card [FlshAir]"
+msgstr ""
 
 # MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:5031
+#: ultralcd.cpp:5320
 msgid "SD card [flshAir]"
 msgstr "SD card [FlshAir]"
 
-# MSG_SD_INIT_FAIL
-#: cardreader.cpp:186
-msgid "SD init fail"
-msgstr "Selhala inicializace SD"
-
-# MSG_SD_PRINTING_BYTE
-#: cardreader.cpp:516
-msgid "SD printing byte "
-msgstr "SD printing byte "
+# 
+#: ultralcd.cpp:3019
+msgid "Right"
+msgstr "Vpravo"
 
 # MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
 #: messages.c:38
@@ -1653,282 +1161,207 @@ msgid "Searching bed calibration point"
 msgstr "Hledam kalibracni bod podlozky"
 
 # MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5126
+#: ultralcd.cpp:5699
 msgid "Select language"
 msgstr "Vyber jazyka"
 
-# 
-#: ultralcd.cpp:4803
-msgid "Select nozzle preheat temperature which matches your material."
-msgstr "Vyberte teplotu predehrati trysky ktera odpovida vasemu materialu."
-
-# 
-#: ultralcd.cpp:4552
-msgid "Select PLA filament:"
-msgstr "Vyberte PLA filament:"
-
 # MSG_SELFTEST_OK
-#: ultralcd.cpp:6631
+#: ultralcd.cpp:7452
 msgid "Self test OK"
-msgstr "Self test OK"
+msgstr ""
 
 # MSG_SELFTEST_START c=20
-#: ultralcd.cpp:6449
+#: ultralcd.cpp:7238
 msgid "Self test start  "
 msgstr "Self test start "
 
 # MSG_SELFTEST
-#: ultralcd.cpp:5179
+#: ultralcd.cpp:5750
 msgid "Selftest         "
 msgstr "Selftest "
 
 # MSG_SELFTEST_ERROR
-#: ultralcd.cpp:7058
+#: ultralcd.cpp:7879
 msgid "Selftest error !"
 msgstr "Chyba Selftestu!"
 
 # MSG_SELFTEST_FAILED c=20
-#: messages.c:73
+#: messages.c:77
 msgid "Selftest failed  "
 msgstr "Selftest selhal "
 
 # MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1548
+#: Marlin_main.cpp:1551
 msgid "Selftest will be run to calibrate accurate sensorless rehoming."
 msgstr "Pro kalibraci presneho rehomovani bude nyni spusten selftest."
 
 # 
-#: ultralcd.cpp:3819
-msgid "Sensor state"
-msgstr "Stav senzoru"
+#: ultralcd.cpp:5045
+msgid "Select nozzle preheat temperature which matches your material."
+msgstr "Vyberte teplotu predehrati trysky ktera odpovida vasemu materialu."
 
 # 
-#:
-msgid "Sensors info"
-msgstr "Senzor info"
+#: ultralcd.cpp:4780
+msgid "Select PLA filament:"
+msgstr "Vyberte PLA filament:"
 
 # MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3111
+#: ultralcd.cpp:3314
 msgid "Set temperature:"
 msgstr "Nastavte teplotu:"
 
 # MSG_SETTINGS
-#: messages.c:81
+#: messages.c:86
 msgid "Settings"
 msgstr "Nastaveni"
 
-# 
-#: ultralcd.cpp:2899
-msgid "Severe skew"
-msgstr "Tezke zkoseni"
-
-# MSG_SEVERE_SKEW c=15 r=1
-#: ultralcd.cpp:2346
-msgid "Severe skew:"
-msgstr "Tezke zkoseni:"
-
 # MSG_SHOW_END_STOPS c=17 r=1
-#: ultralcd.cpp:5200
+#: ultralcd.cpp:5771
 msgid "Show end stops"
 msgstr "Stav konc. spin."
 
 # 
-#:
-msgid "Show pinda state"
-msgstr "Zobrazit stav PINDA"
-
-# MSG_DWELL
-#: Marlin_main.cpp:3752
-msgid "Sleep..."
-msgstr "Spankovy rezim..."
-
-# 
-#: ultralcd.cpp:2898
-msgid "Slight skew"
-msgstr "Lehke zkoseni"
-
-# MSG_SLIGHT_SKEW c=15 r=1
-#: ultralcd.cpp:2342
-msgid "Slight skew:"
-msgstr "Lehke zkoseni:"
+#: ultralcd.cpp:4025
+msgid "Sensor state"
+msgstr "Stav senzoru"
 
 # MSG_FILE_CNT c=20 r=4
-#: 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."
 
-# 
-#: Marlin_main.cpp:4560
-msgid "Some problem encountered, Z-leveling enforced ..."
-msgstr "Vyskytl se problem, srovnavam osu Z ..."
-
-# MSG_SORT_NONE c=17 r=1
-#: ultralcd.cpp:4250
-msgid "Sort:      [None]"
-msgstr "Trideni [Zadne]"
-
 # MSG_SORT_NONE c=17 r=1
-#: ultralcd.cpp:5043
-msgid "Sort:      [none]"
+#: ultralcd.cpp:5332
+msgid "Sort       [none]"
 msgstr "Trideni   [Zadne]"
 
 # MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:4248
-msgid "Sort:      [Time]"
-msgstr "Trideni [Cas]\n"
+#: ultralcd.cpp:5330
+msgid "Sort       [time]"
+msgstr "Trideni     [cas]"
 
-# MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:5041
-msgid "Sort:      [time]"
-msgstr "Trideni:    [cas]"
-
-# MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:4249
-msgid "Sort:  [Alphabet]"
-msgstr "Trideni [Abeceda]"
+# 
+#: ultralcd.cpp:3062
+msgid "Severe skew:"
+msgstr "Tezke zkoseni:"
 
 # MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:5042
-msgid "Sort:  [alphabet]"
+#: ultralcd.cpp:5331
+msgid "Sort   [alphabet]"
 msgstr "Trideni [Abeceda]"
 
-# MSG_SORT_NONE c=17 r=1
-#:
-msgid "Sort:  [none]"
-msgstr "Trideni [Zadne]"
-
-# MSG_SORT_TIME c=17 r=1
-#:
-msgid "Sort:  [time]"
-msgstr "Trideni [Cas]\n"
-
 # MSG_SORTING c=20 r=1
-#: cardreader.cpp:745
+#: cardreader.cpp:746
 msgid "Sorting files"
 msgstr "Trideni souboru"
 
 # MSG_SOUND_LOUD c=17 r=1
-#: sound.h:5
+#: sound.h:6
 msgid "Sound      [loud]"
 msgstr "Zvuk    [hlasity]"
 
+# 
+#: ultralcd.cpp:3061
+msgid "Slight skew:"
+msgstr "Lehke zkoseni:"
+
 # MSG_SOUND_MUTE c=17 r=1
-#: sound.h:8
+#: 
 msgid "Sound      [mute]"
 msgstr "Zvuk    [vypnuto]"
 
+# 
+#: Marlin_main.cpp:4871
+msgid "Some problem encountered, Z-leveling enforced ..."
+msgstr "Vyskytl se problem, srovnavam osu Z ..."
+
 # MSG_SOUND_ONCE c=17 r=1
-#: sound.h:6
+#: sound.h:7
 msgid "Sound      [once]"
 msgstr "Zvuk     [jednou]"
 
 # MSG_SOUND_SILENT c=17 r=1
-#: sound.h:7
+#: sound.h:8
 msgid "Sound    [silent]"
 msgstr "Zvuk      [tichy]"
 
 # MSG_SPEED
-#: ultralcd.cpp:6199
+#: ultralcd.cpp:6926
 msgid "Speed"
 msgstr "Rychlost"
 
 # MSG_SELFTEST_FAN_YES c=19
-#: messages.c:76
+#: messages.c:80
 msgid "Spinning"
 msgstr "Toci se"
 
-# MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:4959
-msgid "SpoolJoin    [on]"
-msgstr "SpoolJoin   [zap]"
-
-# 
-#: ultralcd.cpp:4955
-msgid "SpoolJoin   [N/A]"
-msgstr "SpoolJoin   [N/A]"
-
-# MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:4963
-msgid "SpoolJoin   [off]"
-msgstr "SpoolJoin   [vyp]"
-
 # MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4065
+#: Marlin_main.cpp:4368
 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:6108
+#: ultralcd.cpp:6839
 msgid "Statistics  "
 msgstr "Statistika "
 
-# MSG_STEPPER_TOO_HIGH
-#: stepper.cpp:345
-msgid "Steprate too high: "
-msgstr "Krokovani prilis vysoko:"
-
 # MSG_STOP_PRINT
-#: messages.c:87
+#: messages.c:93
 msgid "Stop print"
 msgstr "Zastavit tisk"
 
 # MSG_STOPPED
-#: messages.c:88
+#: messages.c:94
 msgid "STOPPED. "
 msgstr "ZASTAVENO."
 
 # MSG_SUPPORT
-#: ultralcd.cpp:6117
+#: ultralcd.cpp:6848
 msgid "Support"
 msgstr "Podpora"
 
 # MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:7138
+#: ultralcd.cpp:7959
 msgid "Swapped"
 msgstr "Prohozene"
 
 # MSG_TEMP_CALIBRATION c=20 r=1
-#: messages.c:89
+#: messages.c:95
 msgid "Temp. cal.          "
 msgstr "Tepl. kal. "
 
 # MSG_TEMP_CALIBRATION_ON c=20 r=1
-#: ultralcd.cpp:5113
+#: ultralcd.cpp:5686
 msgid "Temp. cal.   [on]"
 msgstr "Tepl. kal.  [zap]"
 
 # MSG_TEMP_CALIBRATION_OFF c=20 r=1
-#: ultralcd.cpp:5111
+#: ultralcd.cpp:5684
 msgid "Temp. cal.  [off]"
 msgstr "Tepl. kal.  [vyp]"
 
 # MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5209
+#: ultralcd.cpp:5780
 msgid "Temp. calibration"
 msgstr "Teplot. kalibrace"
 
-# MSG_TEMPERATURE
-#: ultralcd.cpp:5089
-msgid "Temperature"
-msgstr "Teplota"
-
 # MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3744
+#: ultralcd.cpp:3951
 msgid "Temperature calibration failed"
 msgstr "Teplotni kalibrace selhala"
 
-# MSG_PINDA_NOT_CALIBRATED c=20 r=4
-#: Marlin_main.cpp:1403
-msgid "Temperature calibration has not been run yet"
-msgstr "Tiskarna nebyla teplotne zkalibrovana"
-
 # MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:90
+#: messages.c:96
 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."
 
+# MSG_TEMPERATURE
+#: ultralcd.cpp:5650
+msgid "Temperature"
+msgstr "Teplota"
+
 # MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2273
+#: ultralcd.cpp:2251
 msgid "Temperatures"
 msgstr "Teploty"
 
@@ -1938,281 +1371,442 @@ msgid "There is still a need to make Z calibration. Please follow the manual, ch
 msgstr "Je potreba kalibrovat osu Z. Prosim postupujte dle prirucky, kapitola Zaciname, sekce Postup kalibrace."
 
 # 
-#: ultralcd.cpp:2316
-msgid "to load filament"
-msgstr "k zavedeni filamentu"
-
-# 
-#: ultralcd.cpp:2317
-msgid "to unload filament"
-msgstr "k vyjmuti filamentu"
-
-# 
-#: ultralcd.cpp:1961
-msgid "Total"
-msgstr "Celkem"
-
-# 
-#: ultralcd.cpp:1994
-msgid "Total failures"
-msgstr "Celkem selhani"
-
-# 
-#: ultralcd.cpp:2752
+#: ultralcd.cpp:2908
 msgid "Total filament"
 msgstr "Filament celkem"
 
-# MSG_STATS_TOTALFILAMENT c=20
-#: ultralcd.cpp:2186
-msgid "Total filament :"
-msgstr "Filament celkem :"
-
 # 
-#: ultralcd.cpp:2754
+#: ultralcd.cpp:2908
 msgid "Total print time"
 msgstr "Celkovy cas tisku"
 
-# MSG_STATS_TOTALPRINTTIME c=20
-#: ultralcd.cpp:2203
-msgid "Total print time :"
-msgstr "Celkovy cas :"
-
-# MSG_ENDSTOP_HIT
-#: messages.c:28
-msgid "TRIGGERED"
-msgstr "AKTIVNI"
-
 # MSG_TUNE
-#: ultralcd.cpp:6015
+#: ultralcd.cpp:6719
 msgid "Tune"
 msgstr "Ladit"
 
 # 
-#: ultralcd.cpp:2249
-msgid "unknown"
-msgstr "neznamy"
-
-# 
-#: ultralcd.cpp:4640
+#: ultralcd.cpp:4869
 msgid "Unload"
 msgstr "Vysunout"
 
 # 
-#: ultralcd.cpp:5617
-msgid "Unload all"
-msgstr "Vyjmout vse"
+#: ultralcd.cpp:1820
+msgid "Total failures"
+msgstr "Celkem selhani"
+
+# 
+#: ultralcd.cpp:2324
+msgid "to load filament"
+msgstr "k zavedeni filamentu"
+
+# 
+#: ultralcd.cpp:2328
+msgid "to unload filament"
+msgstr "k vyjmuti filamentu"
 
 # MSG_UNLOAD_FILAMENT c=17
-#: messages.c:91
+#: messages.c:97
 msgid "Unload filament"
 msgstr "Vyjmout filament"
 
-# MSG_UNLOAD_FILAMENT_1 c=17
-#: ultralcd.cpp:5406
-msgid "Unload filament 1"
-msgstr "Vyjmout filam. 1"
-
-# MSG_UNLOAD_FILAMENT_2 c=17
-#: ultralcd.cpp:5407
-msgid "Unload filament 2"
-msgstr "Vyjmout filam. 2"
-
-# MSG_UNLOAD_FILAMENT_3 c=17
-#: ultralcd.cpp:5408
-msgid "Unload filament 3"
-msgstr "Vyjmout filam. 3"
-
-# MSG_UNLOAD_FILAMENT_4 c=17
-#: ultralcd.cpp:5409
-msgid "Unload filament 4"
-msgstr "Vyjmout filam. 4"
-
 # MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:92
+#: messages.c:98
 msgid "Unloading filament"
 msgstr "Vysouvam filament"
 
 # 
-#: ultralcd.cpp:4639
-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."
+#: ultralcd.cpp:1773
+msgid "Total"
+msgstr "Celkem"
 
 # MSG_USED c=19 r=1
-#: ultralcd.cpp:5334
+#: ultralcd.cpp:5908
 msgid "Used during print"
 msgstr "Pouzite behem tisku"
 
 # MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2276
+#: ultralcd.cpp:2254
 msgid "Voltages"
 msgstr "Napeti"
 
-# MSG_SD_VOL_INIT_FAIL
-#: cardreader.cpp:191
-msgid "volume.init failed"
-msgstr "volume.init selhalo"
+# 
+#: ultralcd.cpp:2227
+msgid "unknown"
+msgstr "neznamy"
 
 # MSG_USERWAIT
-#: Marlin_main.cpp:4876
+#: Marlin_main.cpp:5263
 msgid "Wait for user..."
 msgstr "Ceka se na uzivatele..."
 
 # MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3255
+#: ultralcd.cpp:3458
 msgid "Waiting for nozzle and bed cooling"
 msgstr "Cekani na zchladnuti trysky a podlozky."
 
 # MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3219
+#: ultralcd.cpp:3422
 msgid "Waiting for PINDA probe cooling"
 msgstr "Cekani na zchladnuti PINDA"
 
+# 
+#: ultralcd.cpp:4868
+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:1508
+#: Marlin_main.cpp:1511
 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:1500
+#: Marlin_main.cpp:1503
 msgid "Warning: motherboard type changed."
 msgstr "Varovani: doslo ke zmene typu motherboardu."
 
 # MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1504
+#: Marlin_main.cpp:1507
 msgid "Warning: printer type changed."
 msgstr "Varovani: doslo ke zmene typu tiskarny."
 
-# MSG_FW_VERSION_UNKNOWN c=20 r=8
-#: Marlin_main.cpp:946
-msgid "WARNING: This is an unofficial, unsupported build. Use at your own risk!"
-msgstr "VAROVANI: Neznama, nepodporovana verze firmware. Pouziti na vlastni nebezpeci!"
-
 # MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3014
+#: Marlin_main.cpp:3054
 msgid "Was filament unload successful?"
 msgstr "Bylo vysunuti filamentu uspesne?"
 
 # MSG_SELFTEST_WIRINGERROR
-#: messages.c:80
+#: messages.c:85
 msgid "Wiring error"
 msgstr "Chyba zapojeni"
 
 # MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5176
+#: ultralcd.cpp:5747
 msgid "Wizard"
 msgstr "Pruvodce"
 
-# MSG_SD_WORKDIR_FAIL
-#: messages.c:78
-msgid "workDir open failed"
-msgstr "Nelze otevrit workDir"
-
-# MSG_SD_WRITE_TO_FILE
-#: cardreader.cpp:424
-msgid "Writing to file: "
-msgstr "Zapis do souboru:"
-
-# 
-#: ultralcd.cpp:4885
-msgid "X-correct"
-msgstr "Korekce X"
-
 # MSG_XYZ_DETAILS c=19 r=1
-#: ultralcd.cpp:2265
+#: ultralcd.cpp:2243
 msgid "XYZ cal. details"
 msgstr "Detaily XYZ kal."
 
+# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
+#: messages.c:19
+msgid "XYZ calibration failed. Please consult the manual."
+msgstr "Kalibrace XYZ selhala. Nahlednete do manualu."
+
+# MSG_YES
+#: messages.c:104
+msgid "Yes"
+msgstr "Ano"
+
+# MSG_WIZARD_QUIT c=20 r=8
+#: messages.c:103
+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:3715
+#: ultralcd.cpp:3922
 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:3712
+#: ultralcd.cpp:3919
 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!"
 
+# 
+#: ultralcd.cpp:5130
+msgid "X-correct:"
+msgstr "Korekce X:"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
+#: ultralcd.cpp:3916
+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:3693
+#: ultralcd.cpp:3900
 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_LEFT_FAR c=20 r=8
-#: ultralcd.cpp:3699
-msgid "XYZ calibration compromised. Left front calibration point not reachable."
-msgstr "Kalibrace XYZ nepresna. Levy predni bod moc vpredu."
-
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3696
+#: ultralcd.cpp:3903
 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:6166
+msgid "Load all"
+msgstr "Zavest vse"
+
 # 
-#: ultralcd.cpp:3675
+#: ultralcd.cpp:3882
 msgid "XYZ calibration failed. Bed calibration point was not found."
 msgstr "Kalibrace XYZ selhala. Kalibracni bod podlozky nenalezen."
 
 # 
-#: ultralcd.cpp:3681
+#: ultralcd.cpp:3888
 msgid "XYZ calibration failed. Front calibration points not reachable."
 msgstr "Kalibrace XYZ selhala. Predni kalibracni body moc vpredu. Srovnejte tiskarnu."
 
 # 
-#: ultralcd.cpp:3687
-msgid "XYZ calibration failed. Left front calibration point not reachable."
-msgstr "Kalibrace XYZ selhala. Levy predni bod moc vpredu. Srovnejte tiskarnu."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
-#: messages.c:19
-msgid "XYZ calibration failed. Please consult the manual."
-msgstr "Kalibrace XYZ selhala. Nahlednete do manualu."
-
-# 
-#: ultralcd.cpp:3684
+#: ultralcd.cpp:3891
 msgid "XYZ calibration failed. Right front calibration point not reachable."
 msgstr "Kalibrace XYZ selhala. Pravy predni bod moc vpredu. Srovnejte tiskarnu."
 
-# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3709
-msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
-msgstr "Kalibrace XYZ v poradku. X/Y osy jsou kolme. Gratuluji!"
-
 # 
-#: ultralcd.cpp:2859
+#: ultralcd.cpp:3016
 msgid "Y distance from min"
 msgstr "Y vzdalenost od min"
 
-# MSG_Y_DISTANCE_FROM_MIN c=20 r=1
-#: ultralcd.cpp:2306
-msgid "Y distance from min:"
-msgstr "Y vzdalenost od min:"
+# 
+#: ultralcd.cpp:5131
+msgid "Y-correct:"
+msgstr "Korekce Y:"
+
+# MSG_OFF
+#: menu.cpp:426
+msgid " [off]"
+msgstr " [vyp]"
 
 # 
-#: ultralcd.cpp:4886
-msgid "Y-correct"
-msgstr "Korekce Y"
+#: messages.c:57
+msgid "Back"
+msgstr "Zpet"
 
-# MSG_YES
-#: messages.c:98
-msgid "Yes"
-msgstr "Ano"
+# 
+#: ultralcd.cpp:5639
+msgid "Checks"
+msgstr "Kontrola"
+
+# 
+#: ultralcd.cpp:7973
+msgid "False triggering"
+msgstr "Falesne spusteni"
+
+# 
+#: ultralcd.cpp:4030
+msgid "FINDA:"
+msgstr ""
 
-# MSG_FW_VERSION_ALPHA c=20 r=8
-#: Marlin_main.cpp:930
-msgid "You are using firmware alpha version. This is development version. Using this version is not recommended and may cause printer damage."
-msgstr "Pouzivate alpha verzi firmwaru. Jedna se o vyvojovou verzi. Pouzivani teto verze firmware neni doporuceno a muze zpusobit poskozeni tiskarny."
+# 
+#: ultralcd.cpp:5545
+msgid "Firmware   [none]"
+msgstr "Firmware  [Zadne]"
 
-# MSG_FW_VERSION_BETA c=20 r=8
-#: Marlin_main.cpp:931
-msgid "You are using firmware beta version. This is development version. Using this version is not recommended and may cause printer damage."
-msgstr "Pouzivate beta verzi firmwaru. Jedna se o vyvojovou verzi. Pouzivani teto verze firmware neni doporuceno a muze zpusobit poskozeni tiskarny."
+# 
+#: ultralcd.cpp:5551
+msgid "Firmware [strict]"
+msgstr "Firmware [Prisne]"
 
-# MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:97
-msgid "You can always resume the Wizard from Calibration -> Wizard."
-msgstr "Pruvodce muzete kdykoliv znovu spustit z menu Kalibrace -> Pruvodce"
+# 
+#: ultralcd.cpp:5548
+msgid "Firmware   [warn]"
+msgstr "Firmware[Varovat]"
+
+# 
+#: messages.c:87
+msgid "HW Setup"
+msgstr "HW nastaveni"
+
+# 
+#: ultralcd.cpp:4034
+msgid "IR:"
+msgstr ""
+
+# 
+#: ultralcd.cpp:7046
+msgid "Magnets comp.[N/A]"
+msgstr "Komp. magnetu[N/A]"
+
+# 
+#: ultralcd.cpp:7044
+msgid "Magnets comp.[Off]"
+msgstr "Komp. magnetu[Vyp]"
+
+# 
+#: ultralcd.cpp:7043
+msgid "Magnets comp. [On]"
+msgstr "Komp. magnetu[Zap]"
+
+# 
+#: ultralcd.cpp:7035
+msgid "Mesh         [3x3]"
+msgstr "Mesh         [3x3]"
+
+# 
+#: ultralcd.cpp:7036
+msgid "Mesh         [7x7]"
+msgstr "Mesh         [7x7]"
+
+# 
+#: ultralcd.cpp:5677
+msgid "Mesh bed leveling"
+msgstr "Mesh Bed Leveling"
+
+# 
+#: Marlin_main.cpp:856
+msgid "MK3S firmware detected on MK3 printer"
+msgstr "MK3S firmware detekovan na tiskarne MK3"
+
+# 
+#: ultralcd.cpp:5306
+msgid "MMU Mode [Normal]"
+msgstr "MMU mod  [Normal]"
+
+# 
+#: ultralcd.cpp:5307
+msgid "MMU Mode[Stealth]"
+msgstr "MMU Mod   [Tichy]"
+
+# 
+#: ultralcd.cpp:4511
+msgid "Mode change in progress ..."
+msgstr "Probiha zmena modu..."
+
+# 
+#: ultralcd.cpp:5506
+msgid "Model      [none]"
+msgstr "Model     [Zadne]"
+
+# 
+#: ultralcd.cpp:5512
+msgid "Model    [strict]"
+msgstr "Model    [Prisne]"
+
+# 
+#: ultralcd.cpp:5509
+msgid "Model      [warn]"
+msgstr "Model   [Varovat]"
+
+# 
+#: ultralcd.cpp:5467
+msgid "Nozzle d.  [0.25]"
+msgstr "Tryska     [0.25]"
+
+# 
+#: ultralcd.cpp:5470
+msgid "Nozzle d.  [0.40]"
+msgstr "Tryska     [0.40]"
+
+# 
+#: ultralcd.cpp:5473
+msgid "Nozzle d.  [0.60]"
+msgstr "Tryska     [0.60]"
+
+# 
+#: ultralcd.cpp:5421
+msgid "Nozzle     [none]"
+msgstr "Tryska    [Zadne]"
+
+# 
+#: ultralcd.cpp:5427
+msgid "Nozzle   [strict]"
+msgstr "Tryska   [Prisne]"
+
+# 
+#: ultralcd.cpp:5424
+msgid "Nozzle     [warn]"
+msgstr "Tryska  [Varovat]"
+
+# 
+#: util.cpp:510
+msgid "G-code sliced for a different level. Continue?"
+msgstr ""
+
+# 
+#: util.cpp:516
+msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
+msgstr ""
+
+# 
+#: util.cpp:427
+msgid "G-code sliced for a different printer type. Continue?"
+msgstr "G-code je pripraven pro jiny typ tiskarny. Pokracovat?"
+
+# 
+#: util.cpp:433
+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:477
+msgid "G-code sliced for a newer firmware. Continue?"
+msgstr "G-code je pripraven pro novejsi firmware. Pokracovat?"
+
+# 
+#: util.cpp:483
+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:4026
+msgid "PINDA:"
+msgstr ""
+
+# 
+#: ultralcd.cpp:2465
+msgid "Preheating to cut"
+msgstr "Predehrev k ustrizeni"
+
+# 
+#: ultralcd.cpp:2462
+msgid "Preheating to eject"
+msgstr "Predehrev k vysunuti"
+
+# 
+#: util.cpp:390
+msgid "Printer nozzle diameter differs from the G-code. Continue?"
+msgstr "Prumer trysky tiskarny se lisi od G-code. Pokracovat?"
+
+# 
+#: util.cpp:397
+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."
+
+# 
+#: ultralcd.cpp:6683
+msgid "Rename"
+msgstr "Prejmenovat"
+
+# 
+#: ultralcd.cpp:6679
+msgid "Select"
+msgstr "Vybrat"
+
+# 
+#: ultralcd.cpp:2245
+msgid "Sensor info"
+msgstr "Senzor info"
+
+# 
+#: messages.c:58
+msgid "Sheet"
+msgstr "Plat"
+
+# 
+#: sound.h:9
+msgid "Sound    [assist]"
+msgstr "Zvuk     [Asist.]"
+
+# 
+#: ultralcd.cpp:5637
+msgid "Steel sheets"
+msgstr "Tiskove platy"
+
+# 
+#: ultralcd.cpp:5132
+msgid "Z-correct:"
+msgstr "Korekce Z:"
+
+# 
+#: ultralcd.cpp:7038
+msgid "Z-probe nr.    [1]"
+msgstr "Pocet mereni Z [1]"
+
+# 
+#: ultralcd.cpp:7040
+msgid "Z-probe nr.    [3]"
+msgstr "Pocet mereni Z [3]"
 
-# MSG_MEASURED_OFFSET
-#: ultralcd.cpp:2914
-msgid "[0;0] point offset"
-msgstr "[0;0] odsazeni bodu"

+ 844 - 1245
lang/po/new/de.po

@@ -1,46 +1,19 @@
+# Translation of Prusa-Firmware into German.
+#
 msgid ""
 msgstr ""
-"Language: de\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: PhraseApp (phraseapp.com)\n"
-
-# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
-#: ultralcd.cpp:4219
-msgid "\e[2JCrash detection can\e[1;0Hbe turned on only in\e[2;0HNormal mode"
-msgstr "\e[2JCrash Erkennung kann\e[1;0Hnur im Modus Normal\e[2;0Hgenutzt werden"
-
-# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
-#: ultralcd.cpp:4231
-msgid "\e[2JWARNING:\e[1;0HCrash detection\e[2;0Hdisabled in\e[3;0HStealth mode"
-msgstr "\e[2JWARNUNG:\e[1;0HCrash Erkennung\e[2;0Hdeaktiviert im\e[3;0HStealth Modus"
-
-# MSG_PLANNER_BUFFER_BYTES
-#: Marlin_main.cpp:1184
-msgid "  PlannerBufferBytes: "
-msgstr " PlannerPufferBytes: "
-
-# MSG_EXTRUDER_CORRECTION_OFF c=6
-#: ultralcd.cpp:6312
-msgid "  [off"
-msgstr "  [aus"
-
-# MSG_ERR_COLD_EXTRUDE_STOP
-#: planner.cpp:761
-msgid " cold extrusion prevented"
-msgstr " stopp, Extruder kalt!"
-
-# MSG_FREE_MEMORY
-#: Marlin_main.cpp:1182
-msgid " Free Memory: "
-msgstr " Freier Speicher: "
-
-# MSG_CONFIGURATION_VER
-#: Marlin_main.cpp:1172
-msgid " Last Updated: "
-msgstr " Letztes Update: "
+"Language: de\n"
+"Project-Id-Version: Prusa-Firmware\n"
+"POT-Creation-Date: Sun, Sep 22, 2019 1:29:42 PM\n"
+"PO-Revision-Date: Sun, Sep 22, 2019 1:29:42 PM\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"
 
 # MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
 #: messages.c:39
@@ -48,84 +21,74 @@ msgid " of 4"
 msgstr " von 4"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:56
+#: messages.c:60
 msgid " of 9"
 msgstr " von 9"
 
-# MSG_FACTOR
-#: ultralcd.cpp:6008
-msgid " \002 Fact"
-msgstr " \002 Faktor"
+# MSG_MEASURED_OFFSET
+#: ultralcd.cpp:3089
+msgid "[0;0] point offset"
+msgstr "[0;0] Punktversatz"
 
-# MSG_MAX
-#: ultralcd.cpp:6007
-msgid " \002 Max"
-msgstr " \002 Max"
+# 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_MIN
-#: ultralcd.cpp:6006
-msgid " \002 Min"
-msgstr " \002 Min"
+# 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:2353
+#: ultralcd.cpp:2472
 msgid ">Cancel"
 msgstr ">Abbruch"
 
-# MSG_BABYSTEPPING_Z c=20
-#: ultralcd.cpp:3043
-msgid "Adjusting Z"
-msgstr "Z wurde eingestellt"
-
-# MSG_ALL c=19 r=1
-#: messages.c:11
-msgid "All"
-msgstr "Alle"
+# MSG_BABYSTEPPING_Z c=15
+#: ultralcd.cpp:3209
+msgid "Adjusting Z:"
+msgstr "Z Anpassen:"
 
 # MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:7459
+#: ultralcd.cpp:8295
 msgid "All correct      "
-msgstr "Alles richtig "
+msgstr "Alles richtig    "
 
 # MSG_WIZARD_DONE c=20 r=8
-#: messages.c:95
+#: messages.c:101
 msgid "All is done. Happy printing!"
 msgstr "Alles abgeschlossen. Viel Spass beim Drucken!"
 
 # 
-#: ultralcd.cpp:2109
+#: ultralcd.cpp:2009
 msgid "Ambient"
 msgstr "Raumtemp."
 
 # MSG_PRESS c=20
-#: ultralcd.cpp:2463
+#: ultralcd.cpp:2618
 msgid "and press the knob"
 msgstr "und Knopf druecken"
 
 # MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3330
+#: ultralcd.cpp:3529
 msgid "Are left and right Z~carriages all up?"
 msgstr "Sind linke+rechte Z- Schlitten ganz oben?"
 
-# MSG_ADJUSTZ
-#: ultralcd.cpp:2600
-msgid "Auto adjust Z?"
-msgstr "Auto Z einstellen?"
-
 # MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:4706
-msgid "Auto deplete [on]"
-msgstr "Restemodus   [an]"
+#: ultralcd.cpp:5200
+msgid "SpoolJoin    [on]"
+msgstr "SpoolJoin    [an]"
 
 # 
-#: ultralcd.cpp:4702
-msgid "Auto deplete[N/A]"
-msgstr "Restemodus[N/V]"
+#: ultralcd.cpp:5196
+msgid "SpoolJoin   [N/A]"
+msgstr "SpoolJoin   [N/V]"
 
 # MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:4710
-msgid "Auto deplete[off]"
-msgstr "Restemodus  [aus]"
+#: ultralcd.cpp:5204
+msgid "SpoolJoin   [off]"
+msgstr "SpoolJoin   [aus]"
 
 # MSG_AUTO_HOME
 #: messages.c:11
@@ -133,47 +96,32 @@ msgid "Auto home"
 msgstr "Startposition"
 
 # MSG_AUTOLOAD_FILAMENT c=17
-#: ultralcd.cpp:6091
+#: ultralcd.cpp:6822
 msgid "AutoLoad filament"
-msgstr "Auto-Laden Filament"
+msgstr "AutoLaden Filament"
 
 # MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4246
+#: ultralcd.cpp:4462
 msgid "Autoloading filament available only when filament sensor is turned on..."
 msgstr "Automatisches Laden Filament nur bei einge schaltetem Filament- sensor verfuegbar..."
 
 # MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2655
+#: ultralcd.cpp:2813
 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
-#: ultralcd.cpp:7130
-msgid "Axis"
-msgstr "Achse"
-
 # MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:7128
+#: ultralcd.cpp:7949
 msgid "Axis length"
 msgstr "Achsenlaenge"
 
-# MSG_BABYSTEPPING_X
-#: ultralcd.cpp:2481
-msgid "Babystepping X"
-msgstr "Babystepping X"
-
-# MSG_BABYSTEPPING_Y
-#: ultralcd.cpp:2484
-msgid "Babystepping Y"
-msgstr "Babystepping Y"
-
-# MSG_BED
-#: messages.c:15
-msgid "Bed"
-msgstr "Bett"
+# MSG_SELFTEST_AXIS
+#: ultralcd.cpp:7951
+msgid "Axis"
+msgstr "Achse"
 
 # MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:7072
+#: ultralcd.cpp:7893
 msgid "Bed / Heater"
 msgstr "Bett / Heizung"
 
@@ -188,7 +136,7 @@ msgid "Bed Heating"
 msgstr "Bett aufwaermen"
 
 # MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5197
+#: ultralcd.cpp:5768
 msgid "Bed level correct"
 msgstr "Ausgleich Bett ok"
 
@@ -197,43 +145,28 @@ msgstr "Ausgleich Bett ok"
 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_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4
-#: Marlin_main.cpp:4508
-msgid "Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset."
-msgstr "Z-Kalibrierung fehl- geschlagen. Sensor getrennt/Kabelbruch? Warte auf Reset."
-
-# MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4
-#: Marlin_main.cpp:4512
-msgid "Bed leveling failed. Sensor triggered too high. Waiting for reset."
-msgstr "Z-Kalibrierung fehl- geschlagen. Sensor zu hoch ausgeloest. Warte auf Reset."
-
-# MSG_BEGIN_FILE_LIST
-#: Marlin_main.cpp:4405
-msgid "Begin file list"
-msgstr "Beginn Dateiliste"
+# MSG_BED
+#: messages.c:15
+msgid "Bed"
+msgstr "Bett"
 
 # MSG_MENU_BELT_STATUS c=15 r=1
-#: ultralcd.cpp:2135
+#: ultralcd.cpp:2059
 msgid "Belt status"
 msgstr "Gurtstatus"
 
 # MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:67
+#: messages.c:71
 msgid "Blackout occurred. Recover print?"
 msgstr "Stromausfall! Druck wiederherstellen?"
 
-# MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4427
-msgid "Calibrate"
-msgstr "Kalibrieren"
-
-# MSG_CALIBRATE_E c=20 r=1
-#: ultralcd.cpp:4526
-msgid "Calibrate E"
-msgstr "Kalibrierung E"
+# 
+#: ultralcd.cpp:8297
+msgid "Calibrating home"
+msgstr "Kalibriere Start"
 
 # MSG_CALIBRATE_BED
-#: ultralcd.cpp:5186
+#: ultralcd.cpp:5757
 msgid "Calibrate XYZ"
 msgstr "Kalibrierung XYZ"
 
@@ -242,13 +175,13 @@ msgstr "Kalibrierung XYZ"
 msgid "Calibrate Z"
 msgstr "Kalibrierung Z"
 
-# 
-#: ultralcd.cpp:7461
-msgid "Calibrating home"
-msgstr "Kalibriere Start"
+# MSG_CALIBRATE_PINDA c=17 r=1
+#: ultralcd.cpp:4654
+msgid "Calibrate"
+msgstr "Kalibrieren"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3290
+#: ultralcd.cpp:3492
 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."
 
@@ -258,127 +191,32 @@ msgid "Calibrating Z"
 msgstr "Kalibrierung Z"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3290
+#: ultralcd.cpp:3492
 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_MENU_CALIBRATION
-#: messages.c:57
-msgid "Calibration"
-msgstr "Kalibrierung"
-
 # MSG_HOMEYZ_DONE
-#: ultralcd.cpp:778
+#: ultralcd.cpp:816
 msgid "Calibration done"
 msgstr "Kalibrierung OK"
 
+# MSG_MENU_CALIBRATION
+#: messages.c:61
+msgid "Calibration"
+msgstr "Kalibrierung"
+
 # 
-#: ultralcd.cpp:4552
+#: ultralcd.cpp:4781
 msgid "Cancel"
 msgstr "Abbruch"
 
-# MSG_SD_CANT_ENTER_SUBDIR
-#: cardreader.cpp:662
-msgid "Cannot enter subdir: "
-msgstr "Kann Unterverzeichnis nicht oeffnen: "
-
-# MSG_SD_CANT_OPEN_SUBDIR
-#: cardreader.cpp:97
-msgid "Cannot open subdir"
-msgstr "Kann Unterverz. nicht oeffnen"
-
-# MSG_SD_INSERTED
-#:
-msgid "Card inserted"
-msgstr "SD Karte eingesetzt"
-
 # MSG_SD_REMOVED
-#: ultralcd.cpp:7819
+#: ultralcd.cpp:8679
 msgid "Card removed"
 msgstr "SD Karte entfernt"
 
-# 
-#: ultralcd.cpp:6087
-msgid "Change extruder"
-msgstr "Wechsel Extruder"
-
-# MSG_FILAMENTCHANGE
-#: messages.c:37
-msgid "Change filament"
-msgstr "Filament-Wechsel"
-
-# MSG_CNG_SDCARD
-#: ultralcd.cpp:5777
-msgid "Change SD card"
-msgstr "Wechsel SD Karte"
-
-# MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2474
-msgid "Change success!"
-msgstr "Wechsel erfolgr.!"
-
-# MSG_CORRECTLY c=20
-#: ultralcd.cpp:2551
-msgid "Changed correctly?"
-msgstr "Wechsel ok?"
-
-# MSG_CHANGING_FILAMENT c=20
-#: ultralcd.cpp:1899
-msgid "Changing filament!"
-msgstr "Filament-Wechsel!"
-
-# MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:77
-msgid "Checking bed     "
-msgstr "Pruefe Bett "
-
-# MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:7450
-msgid "Checking endstops"
-msgstr "Pruefe Endschalter"
-
-# MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:7456
-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:7451
-msgid "Checking X axis  "
-msgstr "Pruefe X Achse "
-
-# MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:7452
-msgid "Checking Y axis  "
-msgstr "Pruefe Y Achse "
-
-# MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:7453
-msgid "Checking Z axis  "
-msgstr "Pruefe Z Achse "
-
-# MSG_ERR_CHECKSUM_MISMATCH
-#: cmdqueue.cpp:444
-msgid "checksum mismatch, Last Line: "
-msgstr "Pruefsummenfehler, Letzte Zeile: "
-
-# MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:49
-msgid "Choose extruder:"
-msgstr "Extruder waehlen:"
-
-# MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:50
-msgid "Choose filament:"
-msgstr "Waehle Filament:"
-
 # MSG_NOT_COLOR
-#: ultralcd.cpp:2563
+#: ultralcd.cpp:2718
 msgid "Color not correct"
 msgstr "Falsche Farbe"
 
@@ -388,20 +226,10 @@ msgid "Cooldown"
 msgstr "Abkuehlen"
 
 # 
-#: ultralcd.cpp:4108
-msgid "Copy selected language from XFLASH?"
-msgstr "Gewaehlte Sprache vom Xflash kopieren?"
-
-# 
-#: ultralcd.cpp:4360
+#: ultralcd.cpp:4587
 msgid "Copy selected language?"
 msgstr "Gewaehlte Sprache kopieren?"
 
-# 
-#: ultralcd.cpp:2013
-msgid "Crash"
-msgstr "Crash"
-
 # MSG_CRASHDETECT_ON
 #: messages.c:27
 msgid "Crash det.   [on]"
@@ -423,22 +251,27 @@ msgid "Crash detected."
 msgstr "Crash erkannt."
 
 # 
-#: Marlin_main.cpp:608
+#: Marlin_main.cpp:600
 msgid "Crash detected. Resume print?"
 msgstr "Crash erkannt. Druck fortfuehren?"
 
+# 
+#: ultralcd.cpp:1853
+msgid "Crash"
+msgstr ""
+
 # MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:5335
+#: ultralcd.cpp:5909
 msgid "Current"
 msgstr "Aktuelles"
 
 # MSG_DATE c=17 r=1
-#: ultralcd.cpp:2235
+#: ultralcd.cpp:2213
 msgid "Date:"
 msgstr "Datum:"
 
 # MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5093
+#: ultralcd.cpp:5654
 msgid "Disable steppers"
 msgstr "Motoren aus"
 
@@ -448,157 +281,82 @@ 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_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:4828
+#: ultralcd.cpp:5070
 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_CLEAN_NOZZLE_E c=20 r=8
-#: ultralcd.cpp:3890
-msgid "E calibration finished. Please clean the nozzle. Click when done."
-msgstr "E-Kalibrierung beendet. Bitte reinigen Sie die Duese. Klicken wenn fertig."
-
-# MSG_EXTRUDER_CORRECTION c=9
-#: ultralcd.cpp:4889
-msgid "E-correct"
-msgstr "E-Korrektur"
-
-# 
-#: ultralcd.cpp:4640
-msgid "Eject"
-msgstr "Auswurf"
+# MSG_EXTRUDER_CORRECTION c=10
+#: ultralcd.cpp:5134
+msgid "E-correct:"
+msgstr "E-Korrektur:"
 
 # MSG_EJECT_FILAMENT c=17 r=1
-#: ultralcd.cpp:6081
+#: messages.c:53
 msgid "Eject filament"
 msgstr "Filamentauswurf"
 
-# MSG_EJECT_FILAMENT1 c=17 r=1
-#: ultralcd.cpp:5603
-msgid "Eject filament 1"
-msgstr "Filamentauswurf 1"
-
-# MSG_EJECT_FILAMENT2 c=17 r=1
-#: ultralcd.cpp:5604
-msgid "Eject filament 2"
-msgstr "Fil.2 auswerfen"
-
-# MSG_EJECT_FILAMENT3 c=17 r=1
-#: ultralcd.cpp:5605
-msgid "Eject filament 3"
-msgstr "Fil.3 auswerfen"
-
-# MSG_EJECT_FILAMENT4 c=17 r=1
-#: ultralcd.cpp:5606
-msgid "Eject filament 4"
-msgstr "Fil.4 auswerfen"
-
-# MSG_EJECT_FILAMENT5 c=17 r=1
-#: ultralcd.cpp:5607
-msgid "Eject filament 5"
-msgstr "Fil.5 auswerfen"
+# 
+#: ultralcd.cpp:4869
+msgid "Eject"
+msgstr "Auswurf"
 
 # MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1339
+#: mmu.cpp:1434
 msgid "Ejecting filament"
 msgstr "werfe Filament aus"
 
-# MSG_END_FILE_LIST
-#: Marlin_main.cpp:4407
-msgid "End file list"
-msgstr "Ende Dateiliste"
+# MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
+#: ultralcd.cpp:7917
+msgid "Endstop not hit"
+msgstr "Ende nicht getroffen"
 
 # MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:7090
+#: ultralcd.cpp:7911
 msgid "Endstop"
 msgstr "Endanschlag"
 
-# MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
-#: ultralcd.cpp:7096
-msgid "Endstop not hit"
-msgstr "Ende nicht getroffen"
-
 # MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:7078
+#: ultralcd.cpp:7899
 msgid "Endstops"
 msgstr "Endschalter"
 
-# MSG_ENDSTOPS_HIT
-#: messages.c:30
-msgid "endstops hit: "
-msgstr "Endanschlag erreicht: "
-
-# MSG_LANGUAGE_NAME
-#: language.c:153
-msgid "English"
-msgstr "Deutsch"
-
-# MSG_Enqueing
-#:
-msgid "enqueing \""
-msgstr "In Warteschlange \""
-
 # MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6132
+#: ultralcd.cpp:6859
 msgid "Error - static memory has been overwritten"
 msgstr "Fehler - statischer Speicher wurde ueberschrieben"
 
-# MSG_SD_ERR_WRITE_TO_FILE
-#: messages.c:78
-msgid "error writing to file"
-msgstr "Fehler beim Schreiben in Datei"
+# MSG_FSENS_NOT_RESPONDING c=20 r=4
+#: ultralcd.cpp:4475
+msgid "ERROR: Filament sensor is not responding, please check connection."
+msgstr "FEHLER: Filament- sensor reagiert nicht, bitte Verbindung pruefen."
 
 # MSG_ERROR
 #: messages.c:28
 msgid "ERROR:"
 msgstr "FEHLER:"
 
-# MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4259
-msgid "ERROR: Filament sensor is not responding, please check connection."
-msgstr "FEHLER: Filament- sensor reagiert nicht, bitte Verbindung pruefen."
-
-# 
-#: Marlin_main.cpp:1006
-msgid "External SPI flash W25X20CL not responding."
-msgstr "Der externe SPI Flash W25X20CL antwortet nicht."
-
-# MSG_MOVE_E
-#: messages.c:29
-msgid "Extruder"
-msgstr "Extruder"
-
-# 
-#: ultralcd.cpp:5633
-msgid "Extruder 1"
-msgstr "Extruder 1"
-
-# 
-#: ultralcd.cpp:5634
-msgid "Extruder 2"
-msgstr "Extruder 2"
-
-# 
-#: ultralcd.cpp:5635
-msgid "Extruder 3"
-msgstr "Extruder 3"
-
-# 
-#: ultralcd.cpp:5636
-msgid "Extruder 4"
-msgstr "Extruder 4"
-
 # MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:7468
+#: ultralcd.cpp:8304
 msgid "Extruder fan:"
 msgstr "Extruder Luefter:"
 
 # MSG_INFO_EXTRUDER c=15 r=1
-#: ultralcd.cpp:2266
+#: ultralcd.cpp:2244
 msgid "Extruder info"
 msgstr "Extruder Info"
 
+# MSG_MOVE_E
+#: messages.c:29
+msgid "Extruder"
+msgstr ""
+
+# 
+#: ultralcd.cpp:6846
+msgid "Fail stats MMU"
+msgstr "MMU-Fehler"
+
 # MSG_FSENS_AUTOLOAD_ON c=17 r=1
-#: ultralcd.cpp:4927
+#: ultralcd.cpp:5168
 msgid "F. autoload  [on]"
 msgstr "F.Autoladen  [an]"
 
@@ -608,37 +366,32 @@ msgid "F. autoload [N/A]"
 msgstr "F. Autoload  [nv]"
 
 # MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-#: ultralcd.cpp:4929
+#: ultralcd.cpp:5170
 msgid "F. autoload [off]"
 msgstr "F. Autoload [aus]"
 
 # 
-#: ultralcd.cpp:6112
+#: ultralcd.cpp:6843
 msgid "Fail stats"
 msgstr "Fehlerstatistik"
 
-# 
-#: ultralcd.cpp:6115
-msgid "Fail stats MMU"
-msgstr "MMU-Fehler"
-
 # MSG_FAN_SPEED c=14
 #: messages.c:31
 msgid "Fan speed"
 msgstr "Luefter-Tempo"
 
 # MSG_SELFTEST_FAN c=20
-#: messages.c:74
+#: messages.c:78
 msgid "Fan test"
 msgstr "Lueftertest"
 
 # MSG_FANS_CHECK_ON c=17 r=1
-#: ultralcd.cpp:5100
+#: ultralcd.cpp:5663
 msgid "Fans check   [on]"
 msgstr "Luefter Chk. [an]"
 
 # MSG_FANS_CHECK_OFF c=17 r=1
-#: ultralcd.cpp:5102
+#: ultralcd.cpp:5665
 msgid "Fans check  [off]"
 msgstr "Luefter Chk.[aus]"
 
@@ -647,13 +400,8 @@ msgstr "Luefter Chk.[aus]"
 msgid "Fil. sensor  [on]"
 msgstr "Fil. Sensor  [an]"
 
-# MSG_RESPONSE_POOR c=20 r=2
-#: Marlin_main.cpp:3146
-msgid "Fil. sensor response is poor, disable it?"
-msgstr "Fil. Sensorsignal ist schlecht, ausschalten?"
-
 # MSG_FSENSOR_NA
-#: ultralcd.cpp:4907
+#: ultralcd.cpp:5148
 msgid "Fil. sensor [N/A]"
 msgstr "Fil. Sensor  [nv]"
 
@@ -663,117 +411,92 @@ msgid "Fil. sensor [off]"
 msgstr "Fil. Sensor [aus]"
 
 # 
-#: ultralcd.cpp:2013
+#: ultralcd.cpp:1852
 msgid "Filam. runouts"
 msgstr "Filam. Maengel"
 
-# MSG_FILAMENT c=17 r=1
-#: messages.c:30
-msgid "Filament"
-msgstr "Filament"
-
 # MSG_FILAMENT_CLEAN c=20 r=2
 #: messages.c:32
 msgid "Filament extruding & with correct color?"
-msgstr "Filament extrudiert + richtige Farbe?"
+msgstr "Filament extrudiert mit richtiger Farbe?"
 
 # MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2559
+#: ultralcd.cpp:2714
 msgid "Filament not loaded"
 msgstr "Fil. nicht geladen"
 
 # MSG_FILAMENT_SENSOR c=20
-#: ultralcd.cpp:7144
+#: messages.c:84
 msgid "Filament sensor"
 msgstr "Filamentsensor"
 
-# MSG_SELFTEST_FILAMENT_SENSOR c=18
-#: ultralcd.cpp:7477
-msgid "Filament sensor:"
-msgstr "Filamentsensor:"
-
 # MSG_FILAMENT_USED c=19 r=1
-#: ultralcd.cpp:2725
+#: ultralcd.cpp:2885
 msgid "Filament used"
 msgstr "Filament benutzt"
 
-# MSG_STATS_FILAMENTUSED c=20
-#: ultralcd.cpp:2142
-msgid "Filament used:  "
-msgstr "Filamentverbrauch:  "
+# MSG_PRINT_TIME c=19 r=1
+#: ultralcd.cpp:2886
+msgid "Print time"
+msgstr "Druckzeit"
 
 # MSG_FILE_INCOMPLETE c=20 r=2
-#: ultralcd.cpp:7595
+#: ultralcd.cpp:8432
 msgid "File incomplete. Continue anyway?"
 msgstr "Datei unvollstaendig Trotzdem fortfahren?"
 
-# MSG_SD_FILE_OPENED
-#: cardreader.cpp:395
-msgid "File opened: "
-msgstr "Datei geoeffnet: "
-
-# MSG_SD_FILE_SELECTED
-#: cardreader.cpp:401
-msgid "File selected"
-msgstr "Datei ausgewaehlt"
-
 # MSG_FINISHING_MOVEMENTS c=20 r=1
 #: messages.c:40
 msgid "Finishing movements"
 msgstr "Bewegung beenden"
 
 # MSG_V2_CALIBRATION c=17 r=1
-#: ultralcd.cpp:5177
+#: messages.c:105
 msgid "First layer cal."
 msgstr "Erste-Schicht Kal."
 
 # MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:4740
+#: ultralcd.cpp:4982
 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:640
+#: mmu.cpp:724
 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:6205
+#: ultralcd.cpp:6932
 msgid "Flow"
 msgstr "Durchfluss"
 
 # MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2228
+#: ultralcd.cpp:2206
 msgid "forum.prusa3d.com"
-msgstr "forum.prusa3d.com"
+msgstr ""
 
 # MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:71
+#: messages.c:75
 msgid "Front print fan?"
 msgstr "Vorderer Luefter?"
 
 # MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3101
+#: ultralcd.cpp:3294
 msgid "Front side[um]"
 msgstr "Vorne [um]"
 
 # MSG_SELFTEST_FANS
-#: ultralcd.cpp:7136
+#: ultralcd.cpp:7957
 msgid "Front/left fans"
 msgstr "Vorderer/linke Luefter"
 
 # MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:7066
+#: ultralcd.cpp:7887
 msgid "Heater/Thermistor"
 msgstr "Heizung/Thermistor"
 
-# MSG_HEATING
-#: messages.c:46
-msgid "Heating"
-msgstr "Aufwaermen"
-
 # MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:7475
+#: Marlin_main.cpp:8467
 msgid "Heating disabled by safety timer."
 msgstr "Heizung durch Sicherheitstimer deaktiviert."
 
@@ -782,138 +505,163 @@ msgstr "Heizung durch Sicherheitstimer deaktiviert."
 msgid "Heating done."
 msgstr "Aufwaermen OK."
 
+# MSG_HEATING
+#: messages.c:46
+msgid "Heating"
+msgstr "Aufwaermen"
+
 # MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:4719
+#: ultralcd.cpp:4961
 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:2229
+#: ultralcd.cpp:2207
 msgid "howto.prusa3d.com"
-msgstr "howto.prusa3d.com"
-
-# MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:4749
-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:4757
-msgid "I will run z calibration now."
-msgstr "Ich werde jetzt die Z Kalibrierung durchfuehren."
+msgstr ""
 
-# MSG_WIZARD_V2_CAL_2 c=20 r=12
-#: ultralcd.cpp:4822
-msgid "I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."
-msgstr "Ich werde jetzt eine Linie drucken. Waehrend des Druckes koennen Sie die Duese allmaehlich senken, indem Sie den Knopf drehen, bis Sie die optimale Hoehe erreichen. Sehen Sie sich die Bilder in unserem Handbuch im Kapitel Kalibrierung an."
+# MSG_FILAMENTCHANGE
+#: messages.c:37
+msgid "Change filament"
+msgstr "Filament-Wechsel"
 
-# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: mesh_bed_calibration.cpp:2481
-msgid "Improving bed calibration point"
-msgstr "Verbessere Bett Kalibrierpunkt"
+# MSG_CHANGE_SUCCESS
+#: ultralcd.cpp:2629
+msgid "Change success!"
+msgstr "Wechsel erfolgr.!"
 
-# MSG_WATCH
-#: messages.c:93
-msgid "Info screen"
-msgstr "Infoanzeige"
+# MSG_CORRECTLY c=20
+#: ultralcd.cpp:2706
+msgid "Changed correctly?"
+msgstr "Wechsel ok?"
 
-# MSG_INIT_SDCARD
-#: ultralcd.cpp:5785
-msgid "Init. SD card"
-msgstr "Init. SD Karte"
+# MSG_SELFTEST_CHECK_BED c=20
+#: messages.c:81
+msgid "Checking bed     "
+msgstr "Pruefe Bett "
 
-# MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2459
-msgid "Insert filament"
-msgstr "Filament einlegen"
+# MSG_SELFTEST_CHECK_ENDSTOPS c=20
+#: ultralcd.cpp:8286
+msgid "Checking endstops"
+msgstr "Pruefe Endschalter"
+
+# MSG_SELFTEST_CHECK_HOTEND c=20
+#: ultralcd.cpp:8292
+msgid "Checking hotend  "
+msgstr "Pruefe Duese  "
+
+# MSG_SELFTEST_CHECK_FSENSOR c=20
+#: messages.c:82
+msgid "Checking sensors "
+msgstr "Pruefe Sensoren "
+
+# MSG_SELFTEST_CHECK_X c=20
+#: ultralcd.cpp:8287
+msgid "Checking X axis  "
+msgstr "Pruefe X Achse "
+
+# MSG_SELFTEST_CHECK_Y c=20
+#: ultralcd.cpp:8288
+msgid "Checking Y axis  "
+msgstr "Pruefe Y Achse "
+
+# MSG_SELFTEST_CHECK_Z c=20
+#: ultralcd.cpp:8289
+msgid "Checking Z axis  "
+msgstr "Pruefe Z Achse "
+
+# MSG_CHOOSE_EXTRUDER c=20 r=1
+#: messages.c:49
+msgid "Choose extruder:"
+msgstr "Extruder waehlen:"
+
+# MSG_CHOOSE_FILAMENT c=20 r=1
+#: messages.c:50
+msgid "Choose filament:"
+msgstr "Waehle Filament:"
+
+# MSG_FILAMENT c=17 r=1
+#: messages.c:30
+msgid "Filament"
+msgstr ""
 
-# MSG_FILAMENT_LOADING_T0 c=20 r=4
-#: messages.c:33
-msgid "Insert filament into extruder 1. Click when done."
-msgstr "Filament in Extruder 1 einlegen. Klicken wenn fertig."
+# MSG_WIZARD_XYZ_CAL c=20 r=8
+#: ultralcd.cpp:4991
+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_FILAMENT_LOADING_T1 c=20 r=4
-#: messages.c:34
-msgid "Insert filament into extruder 2. Click when done."
-msgstr "Filament in Extruder 2 einlegen. Klicken wenn fertig."
+# MSG_WIZARD_Z_CAL c=20 r=8
+#: ultralcd.cpp:4999
+msgid "I will run z calibration now."
+msgstr "Ich werde jetzt die Z Kalibrierung durchfuehren."
 
-# MSG_FILAMENT_LOADING_T2 c=20 r=4
-#: messages.c:35
-msgid "Insert filament into extruder 3. Click when done."
-msgstr "Filament in Extruder 3 einlegen. Klicken wenn fertig."
+# MSG_WIZARD_V2_CAL_2 c=20 r=12
+#: ultralcd.cpp:5064
+msgid "I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."
+msgstr "Ich werde jetzt eine Linie drucken. Waehrend des Druckes koennen Sie die Duese allmaehlich senken, indem Sie den Knopf drehen, bis Sie die optimale Hoehe erreichen. Sehen Sie sich die Bilder in unserem Handbuch im Kapitel Kalibrierung an."
 
-# MSG_FILAMENT_LOADING_T3 c=20 r=4
-#: messages.c:36
-msgid "Insert filament into extruder 4. Click when done."
-msgstr "Filament in Extruder 4 einlegen. Klicken wenn fertig."
+# MSG_WATCH
+#: messages.c:99
+msgid "Info screen"
+msgstr "Infoanzeige"
 
 # 
-#: ultralcd.cpp:4782
+#: ultralcd.cpp:5024
 msgid "Is filament 1 loaded?"
 msgstr "Wurde Filament 1 geladen?"
 
+# MSG_INSERT_FILAMENT c=20
+#: ultralcd.cpp:2614
+msgid "Insert filament"
+msgstr "Filament einlegen"
+
 # MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4785
+#: ultralcd.cpp:5027
 msgid "Is filament loaded?"
 msgstr "Ist das Filament geladen?"
 
 # MSG_WIZARD_PLA_FILAMENT c=20 r=2
-#: ultralcd.cpp:4816
+#: ultralcd.cpp:5058
 msgid "Is it PLA filament?"
 msgstr "Ist es wirklich PLA Filament?"
 
 # MSG_PLA_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4561
+#: ultralcd.cpp:4790
 msgid "Is PLA filament loaded?"
 msgstr "Ist PLA Filament geladen?"
 
 # MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:86
+#: messages.c:92
 msgid "Is steel sheet on heatbed?"
 msgstr "Liegt das Stahlblech auf dem Heizbett?"
 
-# MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20
-#: mesh_bed_calibration.cpp:2223
-msgid "Iteration "
-msgstr "Iteration "
-
-# MSG_KILLED
-#: Marlin_main.cpp:7552
-msgid "KILLED. "
-msgstr "ABGEBROCHEN. "
-
-# 
-#: ultralcd.cpp:1960
-msgid "Last print"
-msgstr "Letzter Druck"
-
 # 
-#: ultralcd.cpp:1976
+#: ultralcd.cpp:1795
 msgid "Last print failures"
 msgstr "Letzte Druckfehler"
 
 # 
-#: ultralcd.cpp:2861
-msgid "Left"
-msgstr "Links"
+#: ultralcd.cpp:1772
+msgid "Last print"
+msgstr "Letzter Druck"
 
 # MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:72
+#: messages.c:76
 msgid "Left hotend fan?"
 msgstr "Linker Luefter?"
 
+# 
+#: ultralcd.cpp:3018
+msgid "Left"
+msgstr "Links"
+
 # MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3099
+#: ultralcd.cpp:3292
 msgid "Left side [um]"
 msgstr "Links [um]"
 
-# MSG_LEFT c=12 r=1
-#: ultralcd.cpp:2308
-msgid "Left:"
-msgstr "Links:"
-
 # 
-#: ultralcd.cpp:5107
+#: ultralcd.cpp:5680
 msgid "Lin. correction"
 msgstr "Lineare Korrektur"
 
@@ -922,48 +670,13 @@ msgstr "Lineare Korrektur"
 msgid "Live adjust Z"
 msgstr "Z einstellen"
 
-# MSG_LOAD_ALL c=17
-#: ultralcd.cpp:5575
-msgid "Load all"
-msgstr "Alle laden"
-
 # MSG_LOAD_FILAMENT c=17
 #: messages.c:51
 msgid "Load filament"
 msgstr "Filament laden"
 
-# MSG_LOAD_FILAMENT_1 c=17
-#: ultralcd.cpp:5576
-msgid "Load filament 1"
-msgstr "Filament 1 laden"
-
-# MSG_LOAD_FILAMENT_2 c=17
-#: ultralcd.cpp:5577
-msgid "Load filament 2"
-msgstr "Filament 2 laden"
-
-# MSG_LOAD_FILAMENT_3 c=17
-#: ultralcd.cpp:5578
-msgid "Load filament 3"
-msgstr "Filament 3 laden"
-
-# MSG_LOAD_FILAMENT_4 c=17
-#: ultralcd.cpp:5579
-msgid "Load filament 4"
-msgstr "Filament 4 laden"
-
-# MSG_LOAD_FILAMENT_5 c=17
-#: ultralcd.cpp:5582
-msgid "Load filament 5"
-msgstr "Filament 5 laden"
-
-# 
-#: ultralcd.cpp:6079
-msgid "Load to nozzle"
-msgstr "In Druckduese laden"
-
 # MSG_LOADING_COLOR
-#: ultralcd.cpp:2499
+#: ultralcd.cpp:2654
 msgid "Loading color"
 msgstr "Lade Farbe"
 
@@ -973,137 +686,92 @@ msgid "Loading filament"
 msgstr "Filament laedt"
 
 # MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:7120
+#: ultralcd.cpp:7941
 msgid "Loose pulley"
 msgstr "Lose Riemenscheibe"
 
-# MSG_M104_INVALID_EXTRUDER
-#: Marlin_main.cpp:7675
-msgid "M104 Invalid extruder "
-msgstr "M104 Falscher Extruder "
-
-# MSG_M105_INVALID_EXTRUDER
-#: Marlin_main.cpp:7678
-msgid "M105 Invalid extruder "
-msgstr "M105 Falscher Extruder "
-
-# MSG_M109_INVALID_EXTRUDER
-#: Marlin_main.cpp:7681
-msgid "M109 Invalid extruder "
-msgstr "M109 Falscher Extruder "
+# 
+#: ultralcd.cpp:6805
+msgid "Load to nozzle"
+msgstr "In Druckduese laden"
 
 # MSG_M117_V2_CALIBRATION c=25 r=1
-#: messages.c:53
+#: messages.c:55
 msgid "M117 First layer cal."
 msgstr "M117 Erste-Schicht Kal."
 
-# MSG_M200_INVALID_EXTRUDER
-#: Marlin_main.cpp:5857
-msgid "M200 Invalid extruder "
-msgstr "M200 Falscher Extruder "
-
-# MSG_M218_INVALID_EXTRUDER
-#: Marlin_main.cpp:7684
-msgid "M218 Invalid extruder "
-msgstr "M218 Falscher Extruder "
-
-# MSG_M221_INVALID_EXTRUDER
-#: Marlin_main.cpp:7687
-msgid "M221 Invalid extruder "
-msgstr "M221 Falscher Extruder "
-
 # MSG_MAIN
-#: messages.c:54
+#: messages.c:56
 msgid "Main"
 msgstr "Hauptmenue"
 
-# MSG_MARK_FIL c=20 r=8
-#: ultralcd.cpp:3840
-msgid "Mark filament 100mm from extruder body. Click when done."
-msgstr "Filament 100mm vom Extrudergehaeuse markieren. Klicken wenn Fertig."
-
-# 
-#: ultralcd.cpp:2896
-msgid "Measured skew"
-msgstr "Schraeglauf"
-
-# MSG_MEASURED_SKEW c=15 r=1
-#: ultralcd.cpp:2335
-msgid "Measured skew:"
-msgstr "Schraeglauf:"
-
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:55
+#: messages.c:59
 msgid "Measuring reference height of calibration point"
 msgstr "Messen der Referenzhoehe des Kalibrierpunktes"
 
 # MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5192
+#: ultralcd.cpp:5763
 msgid "Mesh Bed Leveling"
-msgstr "Mesh Bett Ausgleich"
+msgstr "MeshBett Ausgleich"
+
+# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
+#: mmu.cpp:762
+msgid "MMU OK. Resuming position..."
+msgstr "MMU OK. Position wiederherstellen..."
+
+# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
+#: mmu.cpp:755
+msgid "MMU OK. Resuming temperature..."
+msgstr "MMU OK. Temperatur wiederherstellen..."
+
+# 
+#: ultralcd.cpp:3059
+msgid "Measured skew"
+msgstr "Schraeglauf"
 
 # 
-#: ultralcd.cpp:1977
+#: ultralcd.cpp:1796
 msgid "MMU fails"
 msgstr "MMU Fehler"
 
 # 
-#: mmu.cpp:1399
+#: mmu.cpp:1613
 msgid "MMU load failed     "
 msgstr "MMU Ladefehler"
 
 # 
-#: ultralcd.cpp:1977
+#: ultralcd.cpp:1797
 msgid "MMU load fails"
 msgstr "MMU Ladefehler"
 
-# 
-#: mmu.cpp:635
-msgid "MMU needs user attention."
-msgstr "MMU erfordert Benutzereingriff."
-
-# MSG_MMU_NEEDS_ATTENTION c=20 r=4
-#: mmu.cpp:359
-msgid "MMU needs user attention. Fix the issue and then press button on MMU unit."
-msgstr "MMU hat eine Störung. Beseitigen Sie das Problem und drücken Sie den Knopf an der MMU."
-
-# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:676
-msgid "MMU OK. Resuming position..."
-msgstr "MMU OK. Position    wiederherstellen... "
-
-# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:669
-msgid "MMU OK. Resuming temperature..."
-msgstr "MMU OK. Temperatur wiederherstellen..."
-
 # MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:687
+#: mmu.cpp:773
 msgid "MMU OK. Resuming..."
 msgstr "MMU OK.  Weiterdrucken..."
 
-# 
-#: ultralcd.cpp:1994
-msgid "MMU power fails"
-msgstr "MMU Netzfehler"
-
-# 
-#: ultralcd.cpp:2241
-msgid "MMU2 connected"
-msgstr "MMU2 verbunden"
-
 # MSG_STEALTH_MODE_OFF
-#: messages.c:84
+#: messages.c:90
 msgid "Mode     [Normal]"
 msgstr "Modus    [Normal]"
 
 # MSG_SILENT_MODE_ON
-#: messages.c:83
+#: messages.c:89
 msgid "Mode     [silent]"
 msgstr "Modus     [leise]"
 
+# 
+#: mmu.cpp:719
+msgid "MMU needs user attention."
+msgstr "MMU erfordert Benutzereingriff."
+
+# 
+#: ultralcd.cpp:1823
+msgid "MMU power fails"
+msgstr "MMU Netzfehler"
+
 # MSG_STEALTH_MODE_ON
-#: messages.c:85
+#: messages.c:91
 msgid "Mode    [Stealth]"
 msgstr "Modus   [Stealth]"
 
@@ -1113,197 +781,137 @@ msgid "Mode [auto power]"
 msgstr "Modus[Auto Power]"
 
 # MSG_SILENT_MODE_OFF
-#: messages.c:82
+#: messages.c:88
 msgid "Mode [high power]"
 msgstr "Modus[Hohe Leist]"
 
+# 
+#: ultralcd.cpp:2219
+msgid "MMU2 connected"
+msgstr "MMU2 verbunden"
+
 # MSG_SELFTEST_MOTOR
-#: messages.c:79
+#: messages.c:83
 msgid "Motor"
-msgstr "Motor"
+msgstr ""
 
 # MSG_MOVE_AXIS
-#: ultralcd.cpp:5091
+#: ultralcd.cpp:5652
 msgid "Move axis"
 msgstr "Achse bewegen"
 
 # MSG_MOVE_X
-#: ultralcd.cpp:4164
+#: ultralcd.cpp:4378
 msgid "Move X"
 msgstr "Bewege X"
 
 # MSG_MOVE_Y
-#: ultralcd.cpp:4165
+#: ultralcd.cpp:4379
 msgid "Move Y"
 msgstr "Bewege Y"
 
 # MSG_MOVE_Z
-#: ultralcd.cpp:4166
+#: ultralcd.cpp:4380
 msgid "Move Z"
 msgstr "Bewege Z"
 
-# 
-#: ultralcd.cpp:2867
-msgid "N/A"
-msgstr "N.V."
-
-# 
-#: util.cpp:293
-msgid "New firmware version available:"
-msgstr "Neue Firmware- Version verfuegbar:"
-
-# MSG_NO
-#: messages.c:58
-msgid "No"
-msgstr "Nein"
-
-# 
-#:
-msgid "No "
-msgstr "Nein"
-
-# MSG_ERR_NO_CHECKSUM
-#: cmdqueue.cpp:456
-msgid "No Checksum with line number, Last Line: "
-msgstr "Keine Pruefsumme mit Zeilennummer, Letzte Zeile: "
-
 # MSG_NO_MOVE
-#: Marlin_main.cpp:4908
+#: Marlin_main.cpp:5292
 msgid "No move."
 msgstr "Keine Bewegung."
 
 # MSG_NO_CARD
-#: ultralcd.cpp:6059
+#: ultralcd.cpp:6772
 msgid "No SD card"
 msgstr "Keine SD Karte"
 
-# MSG_ERR_NO_THERMISTORS
-#: Marlin_main.cpp:4946
-msgid "No thermistors - no temperature"
-msgstr "Keine Thermistoren - keine Temperatur"
+# 
+#: ultralcd.cpp:3024
+msgid "N/A"
+msgstr "N.V."
+
+# MSG_NO
+#: messages.c:62
+msgid "No"
+msgstr "Nein"
 
 # MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:7068
+#: ultralcd.cpp:7889
 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
+#: messages.c:79
 msgid "Not spinning"
 msgstr "Dreht sich nicht"
 
 # MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4821
+#: ultralcd.cpp:5063
 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:4765
+#: ultralcd.cpp:5007
 msgid "Now I will preheat nozzle for PLA."
 msgstr "Jetzt werde ich die Duese fuer PLA vorheizen."
 
-# 
-#: ultralcd.cpp:4756
-msgid "Now remove the test print from steel sheet."
-msgstr "Testdruck jetzt von Stahlblech entfernen."
-
 # MSG_NOZZLE
-#: messages.c:59
+#: messages.c:63
 msgid "Nozzle"
 msgstr "Duese"
 
-# 
-#: ultralcd.cpp:1919
-msgid "Nozzle FAN"
-msgstr "Duesen Luefter"
-
-# MSG_INFO_NOZZLE_FAN c=11 r=1
-#: ultralcd.cpp:1537
-msgid "Nozzle FAN:"
-msgstr "Duesen Luefter:"
-
-# MSG_NOZZLE1
-#: ultralcd.cpp:5995
-msgid "Nozzle2"
-msgstr "Duese2"
-
-# MSG_NOZZLE2
-#: ultralcd.cpp:5998
-msgid "Nozzle3"
-msgstr "Duese3"
-
-# MSG_OK
-#: Marlin_main.cpp:6333
-msgid "ok"
-msgstr "ok"
-
 # MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
-#: Marlin_main.cpp:1516
+#: Marlin_main.cpp:1519
 msgid "Old settings found. Default PID, Esteps etc. will be set."
 msgstr "Alte Einstellungen gefunden. Standard PID, E-Steps u.s.w. werden gesetzt."
 
-# MSG_ENDSTOP_OPEN
-#: messages.c:29
-msgid "open"
-msgstr "offen"
-
-# MSG_SD_OPEN_FILE_FAIL
-#: messages.c:79
-msgid "open failed, File: "
-msgstr "Fehler beim Oeffnen der Datei: "
+# 
+#: ultralcd.cpp:4998
+msgid "Now remove the test print from steel sheet."
+msgstr "Testdruck jetzt von Stahlblech entfernen."
 
-# MSG_SD_OPENROOT_FAIL
-#: cardreader.cpp:196
-msgid "openRoot failed"
-msgstr "Zugriff auf Hauptverzeichnis misslungen"
+# 
+#: ultralcd.cpp:1722
+msgid "Nozzle FAN"
+msgstr "Duesevent."
 
 # MSG_PAUSE_PRINT
-#: ultralcd.cpp:6029
+#: ultralcd.cpp:6735
 msgid "Pause print"
 msgstr "Druck pausieren"
 
-# MSG_PICK_Z
-#: ultralcd.cpp:3463
-msgid "Pick print"
-msgstr "Druck auswaehlen"
-
 # MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1741
+#: ultralcd.cpp:1606
 msgid "PID cal.           "
 msgstr "PID Kal.           "
 
 # MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1747
+#: ultralcd.cpp:1612
 msgid "PID cal. finished"
 msgstr "PID Kalib. fertig"
 
 # MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5198
+#: ultralcd.cpp:5769
 msgid "PID calibration"
 msgstr "PID Kalibrierung"
 
 # MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:808
+#: ultralcd.cpp:846
 msgid "PINDA Heating"
 msgstr "PINDA erwaermen"
 
 # MSG_PAPER c=20 r=8
-#: messages.c:60
+#: messages.c:64
 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_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:7060
-msgid "Please check :"
-msgstr "Bitte pruefe:"
-
-# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:94
-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_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:4830
+#: ultralcd.cpp:5072
 msgid "Please clean heatbed and then press the knob."
 msgstr "Bitte reinigen Sie das Heizbett und druecken Sie dann den Knopf."
 
@@ -1312,153 +920,128 @@ msgstr "Bitte reinigen Sie das Heizbett und druecken Sie dann den Knopf."
 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:7881
+msgid "Please check :"
+msgstr "Bitte pruefe:"
+
+# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
+#: messages.c:100
+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_WIZARD_LOAD_FILAMENT c=20 r=8
-#: ultralcd.cpp:4664
+#: ultralcd.cpp:4894
 msgid "Please insert PLA filament to the extruder, then press knob to load it."
 msgstr "Legen Sie bitte PLA Filament in den Extruder und druecken Sie den Knopf,  um es zu laden."
 
-# 
-#: ultralcd.cpp:4660
-msgid "Please insert PLA filament to the first tube of MMU, then press the knob to load it."
-msgstr "Legen Sie bitte PLA Filament in den ersten Schlauch der MMU und druecken Sie den Knopf,  um es zu laden."
-
-# MSG_WIZARD_INSERT_CORRECT_FILAMENT c=20 r=8
-#: ultralcd.cpp:4109
-msgid "Please load PLA filament and then resume Wizard by rebooting the printer."
-msgstr "Bitte PLA-Filament\nladen und Assistent\nfortsetzen, indem\nSie den Drucker neu\nstarten."
-
 # MSG_PLEASE_LOAD_PLA c=20 r=4
-#: ultralcd.cpp:4566
+#: ultralcd.cpp:4795
 msgid "Please load PLA filament first."
 msgstr "Bitte laden Sie zuerst PLA Filament."
 
 # MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3025
+#: Marlin_main.cpp:3064
 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:65
 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:68
 msgid "Please press the knob to unload filament"
 msgstr "Bitte druecken Sie den Knopf um das Filament zu entladen."
 
+# 
+#: ultralcd.cpp:4889
+msgid "Please insert PLA filament to the first tube of MMU, then press the knob to load it."
+msgstr "Legen Sie bitte PLA Filament in den ersten Schlauch der MMU und druecken Sie den Knopf,  um es zu laden."
+
 # MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:66
+#: messages.c:70
 msgid "Please pull out filament immediately"
 msgstr "Bitte ziehen Sie das Filament sofort heraus"
 
 # MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1347
+#: mmu.cpp:1440
 msgid "Please remove filament and then press the knob."
 msgstr "Bitte Filament entfernen und dann den Knopf druecken"
 
-# 
-#: ultralcd.cpp:4755
-msgid "Please remove shipping helpers first."
-msgstr "Bitte zuerst Transportsicherungen entfernen."
-
 # MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:70
+#: messages.c:74
 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:4052
+#: Marlin_main.cpp:4355
 msgid "Please run XYZ calibration first."
 msgstr "Bitte zuerst XYZ Kalibrierung ausfuehren."
 
 # MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1293
+#: mmu.cpp:1359
 msgid "Please update firmware in your MMU2. Waiting for reset."
 msgstr "Bitte aktualisieren Sie die Firmware in der MMU2. Warte auf Reset."
 
-# 
-#: util.cpp:297
-msgid "Please upgrade."
-msgstr "Bitte aktualisieren."
-
 # MSG_PLEASE_WAIT c=20
-#: messages.c:62
+#: messages.c:66
 msgid "Please wait"
 msgstr "Bitte warten"
 
 # 
-#: ultralcd.cpp:2013
-msgid "Power failures"
-msgstr "Netzfehler"
+#: ultralcd.cpp:4997
+msgid "Please remove shipping helpers first."
+msgstr "Bitte zuerst Transportsicherungen entfernen."
 
-# MSG_POWERUP
-#: messages.c:69
-msgid "PowerUp"
-msgstr "Einschalten"
+# MSG_PREHEAT_NOZZLE c=20
+#: messages.c:67
+msgid "Preheat the nozzle!"
+msgstr "Duese vorheizen!"
 
 # MSG_PREHEAT
-#: ultralcd.cpp:6018
+#: ultralcd.cpp:6722
 msgid "Preheat"
 msgstr "Vorheizen"
 
-# MSG_PREHEAT_NOZZLE c=20
-#: messages.c:63
-msgid "Preheat the nozzle!"
-msgstr "Duese vorheizen!"
-
 # MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:96
+#: messages.c:102
 msgid "Preheating nozzle. Please wait."
 msgstr "Vorheizen der Duese. Bitte warten."
 
 # 
-#: ultralcd.cpp:2350
-msgid "Preheating to load"
-msgstr "Heizen zum Laden"
-
-# 
-#: ultralcd.cpp:2351
-msgid "Preheating to unload"
-msgstr "Heizen zum Entladen"
-
-# MSG_PREPARE_FILAMENT c=20 r=1
-#: ultralcd.cpp:1911
-msgid "Prepare new filament"
-msgstr "Filam. bereithalten"
+#: util.cpp:297
+msgid "Please upgrade."
+msgstr "Bitte aktualisieren."
 
 # MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:9150
+#: Marlin_main.cpp:10364
 msgid "Press knob to preheat nozzle and continue."
 msgstr "Bitte druecken Sie den Knopf um die Duese vorzuheizen und fortzufahren."
 
 # 
-#: ultralcd.cpp:2313
-msgid "Press the knob"
-msgstr "Knopf druecken"
-
-# 
-#: mmu.cpp:639
-msgid "Press the knob to resume nozzle temperature."
-msgstr "Druecken Sie den Knopf um die Duesentemperatur wiederherzustellen"
+#: ultralcd.cpp:1851
+msgid "Power failures"
+msgstr "Netzfehler"
 
 # MSG_PRINT_ABORTED c=20
-#: messages.c:65
+#: messages.c:69
 msgid "Print aborted"
 msgstr "Druck abgebrochen"
 
 # 
-#: ultralcd.cpp:1921
-msgid "Print FAN"
-msgstr "Druckluefter"
+#: ultralcd.cpp:2455
+msgid "Preheating to load"
+msgstr "Heizen zum Laden"
 
-# MSG_INFO_PRINT_FAN c=11 r=1
-#: ultralcd.cpp:1549
-msgid "Print FAN: "
-msgstr "Druckvent.: "
+# 
+#: ultralcd.cpp:2459
+msgid "Preheating to unload"
+msgstr "Heizen zum Entladen"
 
 # MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:7471
+#: ultralcd.cpp:8307
 msgid "Print fan:"
 msgstr "Druckvent.:"
 
@@ -1467,185 +1050,110 @@ msgstr "Druckvent.:"
 msgid "Print from SD"
 msgstr "Drucken von SD"
 
+# 
+#: ultralcd.cpp:2317
+msgid "Press the knob"
+msgstr "Knopf druecken zum"
+
 # MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1022
+#: ultralcd.cpp:1069
 msgid "Print paused"
 msgstr "Druck pausiert"
 
-# MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2727
-msgid "Print time"
-msgstr "Druckzeit"
-
-# MSG_STATS_PRINTTIME c=20
-#: ultralcd.cpp:2151
-msgid "Print time:  "
-msgstr "Druckzeit: "
-
-# MSG_PRINTER_DISCONNECTED c=20 r=1
-#: ultralcd.cpp:607
-msgid "Printer disconnected"
-msgstr "Drucker getrennt"
-
-# MSG_ERR_KILLED
-#: Marlin_main.cpp:7547
-msgid "Printer halted. kill() called!"
-msgstr "Printer gestoppt. kill() aufgerufen!"
+# 
+#: mmu.cpp:723
+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:41
 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."
 
-# MSG_ERR_STOPPED
-#: messages.c:32
-msgid "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"
-msgstr "Drucker aufgrund von Fehlern gestoppt. Fehler beheben und mit M999 neu starten. (Temperatur wird zurueckgesetzt. Nach dem Neustart neu einstellen!)"
-
-# 
-#:
-msgid "Prusa i3 MK2 ready."
-msgstr "Prusa i3 MK2 bereit."
-
-# WELCOME_MSG c=20
-#:
-msgid "Prusa i3 MK2.5 ready."
-msgstr "Prusa i3 MK2.5 bereit."
-
-# WELCOME_MSG c=20
-#:
-msgid "Prusa i3 MK3 ready."
-msgstr "Prusa i3 MK3 bereit."
-
 # 
-#:
-msgid "Prusa i3 MK3S OK."
-msgstr "Prusa i3 MK3S OK."
+#: ultralcd.cpp:1723
+msgid "Print FAN"
+msgstr "Druckvent."
 
 # MSG_PRUSA3D
-#: ultralcd.cpp:2227
+#: ultralcd.cpp:2205
 msgid "prusa3d.com"
-msgstr "prusa3d.com"
+msgstr ""
 
 # MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3102
+#: ultralcd.cpp:3295
 msgid "Rear side [um]"
 msgstr "Hinten [um]"
 
 # MSG_RECOVERING_PRINT c=20 r=1
-#: Marlin_main.cpp:8575
+#: Marlin_main.cpp:9764
 msgid "Recovering print    "
 msgstr "Druck wiederherst    "
 
-# MSG_REFRESH
-#:
-msgid "Refresh"
-msgstr "Erneuern"
-
 # MSG_REMOVE_OLD_FILAMENT c=20 r=4
-#: mmu.cpp:744
+#: mmu.cpp:830
 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."
 
-# MSG_M119_REPORT
-#: Marlin_main.cpp:5297
-msgid "Reporting endstop status"
-msgstr "Statusbericht Endanschlag"
-
 # 
-#: Marlin_main.cpp:7076
-msgid "Resend"
-msgstr "Wiederholen"
+#: 
+msgid "Prusa i3 MK3S OK."
+msgstr ""
 
-# MSG_RESEND
-#: Marlin_main.cpp:6911
-msgid "Resend: "
-msgstr "Wiederholen: "
+# MSG_CALIBRATE_BED_RESET
+#: ultralcd.cpp:5774
+msgid "Reset XYZ calibr."
+msgstr "Reset XYZ Kalibr."
 
 # MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3103
+#: ultralcd.cpp:3296
 msgid "Reset"
 msgstr "Ruecksetzen"
 
-# MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5203
-msgid "Reset XYZ calibr."
-msgstr "XYZ Kalibr. zuruecksetzen."
-
 # MSG_RESUME_PRINT
-#: ultralcd.cpp:6033
+#: ultralcd.cpp:6742
 msgid "Resume print"
 msgstr "Druck fortsetzen"
 
 # MSG_RESUMING_PRINT c=20 r=1
-#: messages.c:69
+#: messages.c:73
 msgid "Resuming print"
 msgstr "Druck fortgesetzt"
 
-# 
-#: ultralcd.cpp:2862
-msgid "Right"
-msgstr "Rechts"
-
 # MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3100
+#: ultralcd.cpp:3293
 msgid "Right side[um]"
-msgstr "Rechts [um]"
-
-# MSG_RIGHT c=12 r=1
-#: ultralcd.cpp:2309
-msgid "Right:"
-msgstr "Rechts:"
-
-# MSG_E_CAL_KNOB c=20 r=8
-#: ultralcd.cpp:3835
-msgid "Rotate knob until mark reaches extruder body. Click when done."
-msgstr "Knopf drehen bis die Markierung das Extrudergehaeuse erreicht. Klicken wenn fertig."
+msgstr "Rechts    [um]"
 
 # MSG_SECOND_SERIAL_ON c=17 r=1
-#: ultralcd.cpp:5119
+#: ultralcd.cpp:5692
 msgid "RPi port     [on]"
 msgstr "RPi Port     [an]"
 
 # MSG_SECOND_SERIAL_OFF c=17 r=1
-#: ultralcd.cpp:5117
+#: ultralcd.cpp:5690
 msgid "RPi port    [off]"
 msgstr "RPi Port    [aus]"
 
 # MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4583
+#: ultralcd.cpp:4812
 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_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-#: ultralcd.cpp:5033
+#: ultralcd.cpp:5322
 msgid "SD card  [normal]"
 msgstr "SD Karte [normal]"
 
-# MSG_SD_CARD_OK
-#: cardreader.cpp:202
-msgid "SD card ok"
-msgstr "SD Karte ok"
-
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:4238
-msgid "SD card [FlshAir]"
-msgstr "SD Karte [FlashAir]"
-
 # MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:5031
+#: ultralcd.cpp:5320
 msgid "SD card [flshAir]"
 msgstr "SD Karte[flshAir]"
 
-# MSG_SD_INIT_FAIL
-#: cardreader.cpp:186
-msgid "SD init fail"
-msgstr "SD Init fehlerhaft"
-
-# MSG_SD_PRINTING_BYTE
-#: cardreader.cpp:516
-msgid "SD printing byte "
-msgstr "SD drucke Byte "
+# 
+#: ultralcd.cpp:3019
+msgid "Right"
+msgstr "Rechts"
 
 # MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
 #: messages.c:38
@@ -1653,282 +1161,207 @@ msgid "Searching bed calibration point"
 msgstr "Suche Bett Kalibrierpunkt"
 
 # MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5126
+#: ultralcd.cpp:5699
 msgid "Select language"
 msgstr "Waehle Sprache"
 
-# 
-#: ultralcd.cpp:4803
-msgid "Select nozzle preheat temperature which matches your material."
-msgstr "Bitte Vorheiztemperatur auswaehlen, die Ihrem Material entspricht."
-
-# 
-#: ultralcd.cpp:4552
-msgid "Select PLA filament:"
-msgstr "PLA Filament auswaehlen:"
-
 # MSG_SELFTEST_OK
-#: ultralcd.cpp:6631
+#: ultralcd.cpp:7452
 msgid "Self test OK"
 msgstr "Selbsttest OK"
 
 # MSG_SELFTEST_START c=20
-#: ultralcd.cpp:6449
+#: ultralcd.cpp:7238
 msgid "Self test start  "
 msgstr "Selbsttest start "
 
 # MSG_SELFTEST
-#: ultralcd.cpp:5179
+#: ultralcd.cpp:5750
 msgid "Selftest         "
-msgstr "Selbsttest "
+msgstr "Selbsttest       "
 
 # MSG_SELFTEST_ERROR
-#: ultralcd.cpp:7058
+#: ultralcd.cpp:7879
 msgid "Selftest error !"
 msgstr "Selbsttest Fehler!"
 
 # MSG_SELFTEST_FAILED c=20
-#: messages.c:73
+#: messages.c:77
 msgid "Selftest failed  "
-msgstr "Selbsttest misslung  "
+msgstr "Selbsttest Error "
 
 # MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1548
+#: Marlin_main.cpp:1551
 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:3819
-msgid "Sensor state"
-msgstr "Sensorstatus"
+#: ultralcd.cpp:5045
+msgid "Select nozzle preheat temperature which matches your material."
+msgstr "Bitte Vorheiztemperatur auswaehlen, die Ihrem Material entspricht."
 
 # 
-#:
-msgid "Sensors info"
-msgstr "Sensoren Info"
+#: ultralcd.cpp:4780
+msgid "Select PLA filament:"
+msgstr "PLA Filament auswaehlen:"
 
 # MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3111
+#: ultralcd.cpp:3314
 msgid "Set temperature:"
 msgstr "Temp. einstellen:"
 
 # MSG_SETTINGS
-#: messages.c:81
+#: messages.c:86
 msgid "Settings"
 msgstr "Einstellungen"
 
-# 
-#: ultralcd.cpp:2899
-msgid "Severe skew"
-msgstr "Schwerer Schraeglauf"
-
-# MSG_SEVERE_SKEW c=15 r=1
-#: ultralcd.cpp:2346
-msgid "Severe skew:"
-msgstr "Schwerer Verzug:"
-
 # MSG_SHOW_END_STOPS c=17 r=1
-#: ultralcd.cpp:5200
+#: ultralcd.cpp:5771
 msgid "Show end stops"
 msgstr "Endschalter Status"
 
 # 
-#:
-msgid "Show pinda state"
-msgstr "Pinda-Status anzeigen"
-
-# MSG_DWELL
-#: Marlin_main.cpp:3752
-msgid "Sleep..."
-msgstr "Schlafzustand..."
-
-# 
-#: ultralcd.cpp:2898
-msgid "Slight skew"
-msgstr "Leichter Schraeglauf"
-
-# MSG_SLIGHT_SKEW c=15 r=1
-#: ultralcd.cpp:2342
-msgid "Slight skew:"
-msgstr "Etwas verzogen:"
+#: ultralcd.cpp:4025
+msgid "Sensor state"
+msgstr "Sensorstatus"
 
 # MSG_FILE_CNT c=20 r=4
-#: 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."
 
-# 
-#: Marlin_main.cpp:4560
-msgid "Some problem encountered, Z-leveling enforced ..."
-msgstr "Fehler aufgetreten, Z-Kalibrierung erforderlich..."
-
-# MSG_SORT_NONE c=17 r=1
-#: ultralcd.cpp:4250
-msgid "Sort:      [None]"
-msgstr "Sort.:    [Keine]"
-
 # MSG_SORT_NONE c=17 r=1
-#: ultralcd.cpp:5043
-msgid "Sort:      [none]"
-msgstr "Sort.:    [Keine]"
-
-# MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:4248
-msgid "Sort:      [Time]"
-msgstr "Sort.: [Zeit]"
+#: ultralcd.cpp:5332
+msgid "Sort       [none]"
+msgstr "Sort.      [ohne]"
 
 # MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:5041
-msgid "Sort:      [time]"
-msgstr "Sort.:     [Zeit]"
+#: ultralcd.cpp:5330
+msgid "Sort       [time]"
+msgstr "Sort.      [Zeit]"
 
-# MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:4249
-msgid "Sort:  [Alphabet]"
-msgstr "Sort.: [Alphab.]"
+# 
+#: ultralcd.cpp:3062
+msgid "Severe skew:"
+msgstr "Schwer.Schr:"
 
 # MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:5042
-msgid "Sort:  [alphabet]"
-msgstr "Sort.: [Alphabet]"
-
-# MSG_SORT_NONE c=17 r=1
-#:
-msgid "Sort:  [none]"
-msgstr "Sort.: [ohne]"
-
-# MSG_SORT_TIME c=17 r=1
-#:
-msgid "Sort:  [time]"
-msgstr "Sort.: [Zeit]"
+#: ultralcd.cpp:5331
+msgid "Sort   [alphabet]"
+msgstr "Sort.  [Alphabet]"
 
 # MSG_SORTING c=20 r=1
-#: cardreader.cpp:745
+#: cardreader.cpp:746
 msgid "Sorting files"
 msgstr "Sortiere Dateien"
 
 # MSG_SOUND_LOUD c=17 r=1
-#: sound.h:5
+#: sound.h:6
 msgid "Sound      [loud]"
 msgstr "Sound      [laut]"
 
+# 
+#: ultralcd.cpp:3061
+msgid "Slight skew:"
+msgstr "Leicht.Schr:"
+
 # MSG_SOUND_MUTE c=17 r=1
-#: sound.h:8
+#: 
 msgid "Sound      [mute]"
 msgstr "Sound     [stumm]"
 
+# 
+#: Marlin_main.cpp:4871
+msgid "Some problem encountered, Z-leveling enforced ..."
+msgstr "Fehler aufgetreten, Z-Kalibrierung erforderlich..."
+
 # MSG_SOUND_ONCE c=17 r=1
-#: sound.h:6
+#: sound.h:7
 msgid "Sound      [once]"
 msgstr "Sound    [einmal]"
 
 # MSG_SOUND_SILENT c=17 r=1
-#: sound.h:7
+#: sound.h:8
 msgid "Sound    [silent]"
 msgstr "Sound     [leise]"
 
 # MSG_SPEED
-#: ultralcd.cpp:6199
+#: ultralcd.cpp:6926
 msgid "Speed"
 msgstr "Geschwindigkeit"
 
 # MSG_SELFTEST_FAN_YES c=19
-#: messages.c:76
+#: messages.c:80
 msgid "Spinning"
 msgstr "Dreht sich"
 
-# MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:4959
-msgid "SpoolJoin    [on]"
-msgstr "SpoolJoin    [an]"
-
-# 
-#: ultralcd.cpp:4955
-msgid "SpoolJoin   [N/A]"
-msgstr "SpoolJoin   [N/V]"
-
-# MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:4963
-msgid "SpoolJoin   [off]"
-msgstr "SpoolJoin   [aus]"
-
 # MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4065
+#: Marlin_main.cpp:4368
 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:6108
+#: ultralcd.cpp:6839
 msgid "Statistics  "
 msgstr "Statistiken "
 
-# MSG_STEPPER_TOO_HIGH
-#: stepper.cpp:345
-msgid "Steprate too high: "
-msgstr "Schrittrate zu hoch: "
-
 # MSG_STOP_PRINT
-#: messages.c:87
+#: messages.c:93
 msgid "Stop print"
 msgstr "Druck abbrechen"
 
 # MSG_STOPPED
-#: messages.c:88
+#: messages.c:94
 msgid "STOPPED. "
-msgstr "GESTOPPT. "
+msgstr "GESTOPPT."
 
 # MSG_SUPPORT
-#: ultralcd.cpp:6117
+#: ultralcd.cpp:6848
 msgid "Support"
-msgstr "Support"
+msgstr ""
 
 # MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:7138
+#: ultralcd.cpp:7959
 msgid "Swapped"
 msgstr "Ausgetauscht"
 
 # MSG_TEMP_CALIBRATION c=20 r=1
-#: messages.c:89
+#: messages.c:95
 msgid "Temp. cal.          "
-msgstr "Temp Kalib. "
+msgstr "Temp Kalib.         "
 
 # MSG_TEMP_CALIBRATION_ON c=20 r=1
-#: ultralcd.cpp:5113
+#: ultralcd.cpp:5686
 msgid "Temp. cal.   [on]"
-msgstr "Temp. Kal.   [AN]"
+msgstr "Temp. Kal.   [an]"
 
 # MSG_TEMP_CALIBRATION_OFF c=20 r=1
-#: ultralcd.cpp:5111
+#: ultralcd.cpp:5684
 msgid "Temp. cal.  [off]"
-msgstr "Temp. Kal.  [AUS]"
+msgstr "Temp. Kal.  [aus]"
 
 # MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5209
+#: ultralcd.cpp:5780
 msgid "Temp. calibration"
 msgstr "Temp. kalibrieren"
 
-# MSG_TEMPERATURE
-#: ultralcd.cpp:5089
-msgid "Temperature"
-msgstr "Temperatur"
-
 # MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3744
+#: ultralcd.cpp:3951
 msgid "Temperature calibration failed"
 msgstr "Temperaturkalibrierung fehlgeschlagen"
 
-# MSG_PINDA_NOT_CALIBRATED c=20 r=4
-#: Marlin_main.cpp:1403
-msgid "Temperature calibration has not been run yet"
-msgstr "Temperatur wurde\nnoch nicht\nkalibriert"
-
 # MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:90
+#: messages.c:96
 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."
 
+# MSG_TEMPERATURE
+#: ultralcd.cpp:5650
+msgid "Temperature"
+msgstr "Temperatur"
+
 # MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2273
+#: ultralcd.cpp:2251
 msgid "Temperatures"
 msgstr "Temperaturen"
 
@@ -1938,281 +1371,447 @@ msgid "There is still a need to make Z calibration. Please follow the manual, ch
 msgstr "Es ist noch notwendig die Z-Kalibrierung auszufuehren. Bitte befolgen Sie das Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrierablauf."
 
 # 
-#: ultralcd.cpp:2316
-msgid "to load filament"
-msgstr "zum Filament laden"
-
-# 
-#: ultralcd.cpp:2317
-msgid "to unload filament"
-msgstr "zum Filament entladen"
-
-# 
-#: ultralcd.cpp:1961
-msgid "Total"
-msgstr "Gesamt"
-
-# 
-#: ultralcd.cpp:1994
-msgid "Total failures"
-msgstr "Gesamte Fehler"
-
-# 
-#: ultralcd.cpp:2752
+#: ultralcd.cpp:2908
 msgid "Total filament"
 msgstr "Gesamtes Filament"
 
-# MSG_STATS_TOTALFILAMENT c=20
-#: ultralcd.cpp:2186
-msgid "Total filament :"
-msgstr "Gesamtes Filament:"
-
 # 
-#: ultralcd.cpp:2754
+#: ultralcd.cpp:2908
 msgid "Total print time"
 msgstr "Gesamte Druckzeit"
 
-# MSG_STATS_TOTALPRINTTIME c=20
-#: ultralcd.cpp:2203
-msgid "Total print time :"
-msgstr "Gesamte Druckzeit:"
-
-# MSG_ENDSTOP_HIT
-#: messages.c:28
-msgid "TRIGGERED"
-msgstr "AUSGELOEST"
-
 # MSG_TUNE
-#: ultralcd.cpp:6015
+#: ultralcd.cpp:6719
 msgid "Tune"
 msgstr "Feineinstellung"
 
 # 
-#: ultralcd.cpp:2249
-msgid "unknown"
-msgstr "unbekannt"
-
-# 
-#: ultralcd.cpp:4640
+#: ultralcd.cpp:4869
 msgid "Unload"
 msgstr "Entladen"
 
 # 
-#: ultralcd.cpp:5617
-msgid "Unload all"
-msgstr "Alles entladen"
+#: ultralcd.cpp:1820
+msgid "Total failures"
+msgstr "Gesamte Fehler"
+
+# 
+#: ultralcd.cpp:2324
+msgid "to load filament"
+msgstr "Filament laden"
+
+# 
+#: ultralcd.cpp:2328
+msgid "to unload filament"
+msgstr "Filament entladen"
 
 # MSG_UNLOAD_FILAMENT c=17
-#: messages.c:91
+#: messages.c:97
 msgid "Unload filament"
 msgstr "Filament entladen"
 
-# MSG_UNLOAD_FILAMENT_1 c=17
-#: ultralcd.cpp:5406
-msgid "Unload filament 1"
-msgstr "Filam. 1 entladen"
-
-# MSG_UNLOAD_FILAMENT_2 c=17
-#: ultralcd.cpp:5407
-msgid "Unload filament 2"
-msgstr "Filam. 2 entladen"
-
-# MSG_UNLOAD_FILAMENT_3 c=17
-#: ultralcd.cpp:5408
-msgid "Unload filament 3"
-msgstr "Filam. 3 entladen"
-
-# MSG_UNLOAD_FILAMENT_4 c=17
-#: ultralcd.cpp:5409
-msgid "Unload filament 4"
-msgstr "Filam. 4 entladen"
-
 # MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:92
+#: messages.c:98
 msgid "Unloading filament"
 msgstr "Filament auswerfen"
 
 # 
-#: ultralcd.cpp:4639
-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."
+#: ultralcd.cpp:1773
+msgid "Total"
+msgstr "Gesamt"
 
 # MSG_USED c=19 r=1
-#: ultralcd.cpp:5334
+#: ultralcd.cpp:5908
 msgid "Used during print"
 msgstr "Beim Druck benutzt"
 
 # MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2276
+#: ultralcd.cpp:2254
 msgid "Voltages"
 msgstr "Spannungen"
 
-# MSG_SD_VOL_INIT_FAIL
-#: cardreader.cpp:191
-msgid "volume.init failed"
-msgstr "Dateisystem Init fehlerhaft"
+# 
+#: ultralcd.cpp:2227
+msgid "unknown"
+msgstr "unbekannt"
 
 # MSG_USERWAIT
-#: Marlin_main.cpp:4876
+#: Marlin_main.cpp:5263
 msgid "Wait for user..."
 msgstr "Warte auf Benutzer.."
 
 # MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3255
+#: ultralcd.cpp:3458
 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:3219
+#: ultralcd.cpp:3422
 msgid "Waiting for PINDA probe cooling"
 msgstr "Warten, bis PINDA- Sonde abgekuehlt ist"
 
+# 
+#: ultralcd.cpp:4868
+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:1508
+#: Marlin_main.cpp:1511
 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:1500
+#: Marlin_main.cpp:1503
 msgid "Warning: motherboard type changed."
 msgstr "Warnung: Platinentyp wurde geaendert."
 
 # MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1504
+#: Marlin_main.cpp:1507
 msgid "Warning: printer type changed."
 msgstr "Warnung: Druckertyp wurde geaendert."
 
-# MSG_FW_VERSION_UNKNOWN c=20 r=8
-#: Marlin_main.cpp:946
-msgid "WARNING: This is an unofficial, unsupported build. Use at your own risk!"
-msgstr "WARNUNG: Dies ist\neine inoffizielle,\nnicht unterstuetzte\nVersion. Benutzung\nauf eigene Gefahr!"
-
 # MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3014
+#: Marlin_main.cpp:3054
 msgid "Was filament unload successful?"
 msgstr "Konnten Sie das Filament entnehmen?"
 
 # MSG_SELFTEST_WIRINGERROR
-#: messages.c:80
+#: messages.c:85
 msgid "Wiring error"
 msgstr "Verdrahtungsfehler"
 
 # MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5176
+#: ultralcd.cpp:5747
 msgid "Wizard"
 msgstr "Assistent"
 
-# MSG_SD_WORKDIR_FAIL
-#: messages.c:78
-msgid "workDir open failed"
-msgstr "Arbeitsverzeichnis oeffnen misslungen"
-
-# MSG_SD_WRITE_TO_FILE
-#: cardreader.cpp:424
-msgid "Writing to file: "
-msgstr "Schreibe in Datei: "
-
-# 
-#: ultralcd.cpp:4885
-msgid "X-correct"
-msgstr "X-Korrektur"
-
 # MSG_XYZ_DETAILS c=19 r=1
-#: ultralcd.cpp:2265
+#: ultralcd.cpp:2243
 msgid "XYZ cal. details"
 msgstr "XYZ Kal. Details"
 
+# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
+#: messages.c:19
+msgid "XYZ calibration failed. Please consult the manual."
+msgstr "XYZ-Kalibrierung fehlgeschlagen. Bitte schauen Sie in das Handbuch."
+
+# MSG_YES
+#: messages.c:104
+msgid "Yes"
+msgstr "Ja"
+
+# MSG_WIZARD_QUIT c=20 r=8
+#: messages.c:103
+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:3715
+#: ultralcd.cpp:3922
 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:3712
+#: ultralcd.cpp:3919
 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
 msgstr "XYZ Kalibrierung in Ordnung. X/Y Achsen sind etwas schraeg."
 
+# 
+#: ultralcd.cpp:5130
+msgid "X-correct:"
+msgstr "X-Korrektur:"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
+#: ultralcd.cpp:3916
+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:3693
+#: ultralcd.cpp:3900
 msgid "XYZ calibration compromised. Front calibration points not reachable."
 msgstr "XYZ-Kalibrierung beeintraechtigt. Vordere Kalibrierpunkte nicht erreichbar."
 
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8
-#: ultralcd.cpp:3699
-msgid "XYZ calibration compromised. Left front calibration point not reachable."
-msgstr "XYZ-Kalibrierung beeintraechtigt. Linker vorderer Kalibrierpunkt nicht erreichbar."
-
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3696
+#: ultralcd.cpp:3903
 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:6166
+msgid "Load all"
+msgstr "Alle laden"
+
 # 
-#: ultralcd.cpp:3675
+#: ultralcd.cpp:3882
 msgid "XYZ calibration failed. Bed calibration point was not found."
 msgstr "XYZ-Kalibrierung fehlgeschlagen. Bett-Kalibrierpunkt nicht gefunden."
 
 # 
-#: ultralcd.cpp:3681
+#: ultralcd.cpp:3888
 msgid "XYZ calibration failed. Front calibration points not reachable."
 msgstr "XYZ-Kalibrierung fehlgeschlagen. Vordere Kalibrierpunkte nicht erreichbar."
 
 # 
-#: ultralcd.cpp:3687
-msgid "XYZ calibration failed. Left front calibration point not reachable."
-msgstr "XYZ-Kalibrierung fehlgeschlagen. Linker vorderer Kalibrierpunkt nicht erreichbar."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
-#: messages.c:19
-msgid "XYZ calibration failed. Please consult the manual."
-msgstr "XYZ-Kalibrierung fehlgeschlagen. Bitte schauen Sie in das Handbuch."
-
-# 
-#: ultralcd.cpp:3684
+#: ultralcd.cpp:3891
 msgid "XYZ calibration failed. Right front calibration point not reachable."
 msgstr "XYZ-Kalibrierung fehlgeschlagen. Rechter vorderer Kalibrierpunkt ist nicht erreichbar."
 
-# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3709
-msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
-msgstr "XYZ-Kalibrierung ok. X/Y-Achsen sind senkrecht zueinander Glueckwunsch!"
+"XYZ calibration failed. Right front calibration point not reachable."
+#: 
+msgid "XYZ-Kalibrierung fehlgeschlagen. Rechter vorderer Kalibrierpunkt ist nicht erreichbar."
+msgstr 
 
 # 
-#: ultralcd.cpp:2859
+#: ultralcd.cpp:3016
 msgid "Y distance from min"
 msgstr "Y Entfernung vom Min"
 
-# MSG_Y_DISTANCE_FROM_MIN c=20 r=1
-#: ultralcd.cpp:2306
-msgid "Y distance from min:"
-msgstr "Y Entfernung vom Min:"
+# 
+#: ultralcd.cpp:5131
+msgid "Y-correct:"
+msgstr "Y-Korrektur:"
+
+# MSG_OFF
+#: menu.cpp:426
+msgid " [off]"
+msgstr " [aus]"
 
 # 
-#: ultralcd.cpp:4886
-msgid "Y-correct"
-msgstr "Y-Korrektur"
+#: messages.c:57
+msgid "Back"
+msgstr "Zurueck"
 
-# MSG_YES
-#: messages.c:98
-msgid "Yes"
-msgstr "Ja"
+# 
+#: ultralcd.cpp:5639
+msgid "Checks"
+msgstr "Kontrolle"
+
+# 
+#: ultralcd.cpp:7973
+msgid "False triggering"
+msgstr "Falschtriggerung"
+
+# 
+#: ultralcd.cpp:4030
+msgid "FINDA:"
+msgstr ""
 
-# MSG_FW_VERSION_ALPHA c=20 r=8
-#: Marlin_main.cpp:930
-msgid "You are using firmware alpha version. This is development version. Using this version is not recommended and may cause printer damage."
-msgstr "Sie benutzen eine\nAlpha Firmware\nVersion. Dies ist\neine Entwicklungs-\nversion. Die Ver-\nwendung ist nicht\nempfohlen und kann\nzu Schaeden fuehren."
+# 
+#: ultralcd.cpp:5545
+msgid "Firmware   [none]"
+msgstr "Firmware   [ohne]"
 
-# MSG_FW_VERSION_BETA c=20 r=8
-#: Marlin_main.cpp:931
-msgid "You are using firmware beta version. This is development version. Using this version is not recommended and may cause printer damage."
-msgstr "Sie benutzen eine\nBeta Firmware\nVersion. Dies ist\neine Entwicklungs-\nversion. Die Ver-\nwendung ist nicht\nempfohlen und kann\nzu Schaeden fuehren."
+# 
+#: ultralcd.cpp:5551
+msgid "Firmware [strict]"
+msgstr "Firmware [strikt]"
 
-# MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:97
-msgid "You can always resume the Wizard from Calibration -> Wizard."
-msgstr "Sie koennen den Assistenten immer im Menu neu starten: Kalibrierung -> Assistent"
+# 
+#: ultralcd.cpp:5548
+msgid "Firmware   [warn]"
+msgstr "Firmware [warnen]"
+
+# 
+#: messages.c:87
+msgid "HW Setup"
+msgstr "HW Einstellungen"
+
+# 
+#: ultralcd.cpp:4034
+msgid "IR:"
+msgstr ""
+
+# 
+#: ultralcd.cpp:7046
+msgid "Magnets comp.[N/A]"
+msgstr "Magnet Komp.  [nv]"
+
+# 
+#: ultralcd.cpp:7044
+msgid "Magnets comp.[Off]"
+msgstr "Magnet Komp. [Aus]"
+
+# 
+#: ultralcd.cpp:7043
+msgid "Magnets comp. [On]"
+msgstr "Magnet Komp.  [An]"
+
+# 
+#: ultralcd.cpp:7035
+msgid "Mesh         [3x3]"
+msgstr "Gitter       [3x3]"
+
+# 
+#: ultralcd.cpp:7036
+msgid "Mesh         [7x7]"
+msgstr "Gitter       [7x7]"
+
+# 
+#: ultralcd.cpp:5677
+msgid "Mesh bed leveling"
+msgstr "MeshBett Ausgleich"
+
+# 
+#: Marlin_main.cpp:856
+msgid "MK3S firmware detected on MK3 printer"
+msgstr "MK3S-Firmware auf MK3-Drucker erkannt"
+
+# 
+#: ultralcd.cpp:5306
+msgid "MMU Mode [Normal]"
+msgstr "MMU Modus[Normal]"
+
+# 
+#: ultralcd.cpp:5307
+msgid "MMU Mode[Stealth]"
+msgstr "MMU Mod.[Stealth]"
+
+# 
+#: ultralcd.cpp:4511
+msgid "Mode change in progress ..."
+msgstr "Moduswechsel erfolgt..."
+
+# 
+#: ultralcd.cpp:5506
+msgid "Model      [none]"
+msgstr "Modell     [ohne]"
+
+# 
+#: ultralcd.cpp:5512
+msgid "Model    [strict]"
+msgstr "Modell   [strikt]"
+
+# 
+#: ultralcd.cpp:5509
+msgid "Model      [warn]"
+msgstr "Modell   [warnen]"
+
+# 
+#: ultralcd.cpp:5467
+msgid "Nozzle d.  [0.25]"
+msgstr "Duese D.   [0.25]"
+
+# 
+#: ultralcd.cpp:5470
+msgid "Nozzle d.  [0.40]"
+msgstr "Duese D.   [0.40]"
+
+# 
+#: ultralcd.cpp:5473
+msgid "Nozzle d.  [0.60]"
+msgstr "Duese D.   [0.60]"
+
+# 
+#: ultralcd.cpp:5421
+msgid "Nozzle     [none]"
+msgstr "Duese      [ohne]"
+
+# 
+#: ultralcd.cpp:5427
+msgid "Nozzle   [strict]"
+msgstr "Duese    [strikt]"
+
+# 
+#: ultralcd.cpp:5424
+msgid "Nozzle     [warn]"
+msgstr "Duese    [warnen]"
+
+# 
+#: util.cpp:510
+msgid "G-code sliced for a different level. Continue?"
+msgstr "G-Code ist fuer einen anderen Level geslict. Fortfahren?"
+
+# 
+#: util.cpp:516
+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:427
+msgid "G-code sliced for a different printer type. Continue?"
+msgstr "G-Code ist fuer einen anderen Drucker geslict. Fortfahren?"
+
+# 
+#: util.cpp:433
+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:477
+msgid "G-code sliced for a newer firmware. Continue?"
+msgstr "G-Code ist fuer eine neuere Firmware geslict. Fortfahren?"
+
+# 
+#: util.cpp:483
+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:4026
+msgid "PINDA:"
+msgstr ""
+
+# 
+#: ultralcd.cpp:2465
+msgid "Preheating to cut"
+msgstr "Heizen zum Schnitt"
+
+# 
+#: ultralcd.cpp:2462
+msgid "Preheating to eject"
+msgstr "Heizen zum Auswurf"
+
+# 
+#: util.cpp:390
+msgid "Printer nozzle diameter differs from the G-code. Continue?"
+msgstr "Der Durchmesser der Druckerduese weicht vom G-Code ab. Fortfahren?"
+
+# 
+#: util.cpp:397
+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."
+
+# 
+#: ultralcd.cpp:6683
+msgid "Rename"
+msgstr "Umbenennen"
+
+# 
+#: ultralcd.cpp:6679
+msgid "Select"
+msgstr "Auswahl"
+
+# 
+#: ultralcd.cpp:2245
+msgid "Sensor info"
+msgstr "Sensor Info"
+
+# 
+#: messages.c:58
+msgid "Sheet"
+msgstr "Blech"
+
+# 
+#: sound.h:9
+msgid "Sound    [assist]"
+msgstr "Sound    [Assist]"
+
+# 
+#: ultralcd.cpp:5637
+msgid "Steel sheets"
+msgstr "Stahlbleche"
+
+# 
+#: ultralcd.cpp:5132
+msgid "Z-correct:"
+msgstr "Z-Korrektur:"
+
+# 
+#: ultralcd.cpp:7038
+msgid "Z-probe nr.    [1]"
+msgstr "Z-Probe Nr.    [1]"
+
+# 
+#: ultralcd.cpp:7040
+msgid "Z-probe nr.    [3]"
+msgstr "Z-Probe Nr.    [3]"
 
-# MSG_MEASURED_OFFSET
-#: ultralcd.cpp:2914
-msgid "[0;0] point offset"
-msgstr "[0;0] Punktversatz"

+ 838 - 1244
lang/po/new/es.po

@@ -1,46 +1,19 @@
+# Translation of Prusa-Firmware into Spanish.
+#
 msgid ""
 msgstr ""
-"Language: es\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: PhraseApp (phraseapp.com)\n"
-
-# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
-#: ultralcd.cpp:4219
-msgid "\e[2JCrash detection can\e[1;0Hbe turned on only in\e[2;0HNormal mode"
-msgstr "\e[2JDec. choque\e[1;0Hpuede ser activada solo en\e[2;0HModo normal"
-
-# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
-#: ultralcd.cpp:4231
-msgid "\e[2JWARNING:\e[1;0HCrash detection\e[2;0Hdisabled in\e[3;0HStealth mode"
-msgstr "\e[2JATENCION:\e[1;0HDec. choque\e[2;0Hdesactivada en\e[3;0HModo silencio"
-
-# MSG_PLANNER_BUFFER_BYTES
-#: Marlin_main.cpp:1184
-msgid "  PlannerBufferBytes: "
-msgstr " PlannerBufferBytes: "
-
-# MSG_EXTRUDER_CORRECTION_OFF c=6
-#: ultralcd.cpp:6312
-msgid "  [off"
-msgstr "[inactivo"
-
-# MSG_ERR_COLD_EXTRUDE_STOP
-#: planner.cpp:761
-msgid " cold extrusion prevented"
-msgstr "extrusion en frio prevenida"
-
-# MSG_FREE_MEMORY
-#: Marlin_main.cpp:1182
-msgid " Free Memory: "
-msgstr "Memoria Libre: "
-
-# MSG_CONFIGURATION_VER
-#: Marlin_main.cpp:1172
-msgid " Last Updated: "
-msgstr "Ultima actualizacion: "
+"Language: es\n"
+"Project-Id-Version: Prusa-Firmware\n"
+"POT-Creation-Date: Sun, Sep 22, 2019 1:30:59 PM\n"
+"PO-Revision-Date: Sun, Sep 22, 2019 1:30:59 PM\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"
 
 # MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
 #: messages.c:39
@@ -48,84 +21,74 @@ msgid " of 4"
 msgstr " de 4"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:56
+#: messages.c:60
 msgid " of 9"
 msgstr " de 9"
 
-# MSG_FACTOR
-#: ultralcd.cpp:6008
-msgid " \002 Fact"
-msgstr " \002 Fact"
+# MSG_MEASURED_OFFSET
+#: ultralcd.cpp:3089
+msgid "[0;0] point offset"
+msgstr "[0;0] punto offset"
 
-# MSG_MAX
-#: ultralcd.cpp:6007
-msgid " \002 Max"
-msgstr " \002 Max"
+# 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_MIN
-#: ultralcd.cpp:6006
-msgid " \002 Min"
-msgstr " \002 Min"
+# 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:2353
+#: ultralcd.cpp:2472
 msgid ">Cancel"
 msgstr ">Cancelar"
 
-# MSG_BABYSTEPPING_Z c=20
-#: ultralcd.cpp:3043
-msgid "Adjusting Z"
-msgstr "Ajustar Z"
-
-# MSG_ALL c=19 r=1
-#: messages.c:11
-msgid "All"
-msgstr "Todos"
+# MSG_BABYSTEPPING_Z c=15
+#: ultralcd.cpp:3209
+msgid "Adjusting Z:"
+msgstr "Ajustar-Z:"
 
 # MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:7459
+#: ultralcd.cpp:8295
 msgid "All correct      "
 msgstr "Todo bien"
 
 # MSG_WIZARD_DONE c=20 r=8
-#: messages.c:95
+#: messages.c:101
 msgid "All is done. Happy printing!"
 msgstr "Terminado! Feliz impresion!"
 
 # 
-#: ultralcd.cpp:2109
+#: ultralcd.cpp:2009
 msgid "Ambient"
 msgstr "Ambiente"
 
 # MSG_PRESS c=20
-#: ultralcd.cpp:2463
+#: ultralcd.cpp:2618
 msgid "and press the knob"
 msgstr "Haz clic"
 
 # MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3330
+#: ultralcd.cpp:3529
 msgid "Are left and right Z~carriages all up?"
 msgstr "Carros Z izq./der. estan arriba maximo?"
 
-# MSG_ADJUSTZ
-#: ultralcd.cpp:2600
-msgid "Auto adjust Z?"
-msgstr "Ajustar Eje Z"
-
 # MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:4706
-msgid "Auto deplete [on]"
-msgstr "Auto desplegar[on]"
+#: ultralcd.cpp:5200
+msgid "SpoolJoin    [on]"
+msgstr ""
 
 # 
-#: ultralcd.cpp:4702
-msgid "Auto deplete[N/A]"
-msgstr "Auto desplegar[N/A]"
+#: ultralcd.cpp:5196
+msgid "SpoolJoin   [N/A]"
+msgstr ""
 
 # MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:4710
-msgid "Auto deplete[off]"
-msgstr "Auto desplegar[off]"
+#: ultralcd.cpp:5204
+msgid "SpoolJoin   [off]"
+msgstr ""
 
 # MSG_AUTO_HOME
 #: messages.c:11
@@ -133,47 +96,32 @@ msgid "Auto home"
 msgstr "Llevar al origen"
 
 # MSG_AUTOLOAD_FILAMENT c=17
-#: ultralcd.cpp:6091
+#: ultralcd.cpp:6822
 msgid "AutoLoad filament"
 msgstr "Carga automatica de filamento"
 
 # MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4246
+#: ultralcd.cpp:4462
 msgid "Autoloading filament available only when filament sensor is turned on..."
 msgstr "La carga automatica de filamento solo funciona si el sensor de filamento esta activado..."
 
 # MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2655
+#: ultralcd.cpp:2813
 msgid "Autoloading filament is active, just press the knob and insert filament..."
 msgstr "La carga automatica de filamento esta activada, pulse el dial e inserte el filamento..."
 
-# MSG_SELFTEST_AXIS
-#: ultralcd.cpp:7130
-msgid "Axis"
-msgstr "Eje"
-
 # MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:7128
+#: ultralcd.cpp:7949
 msgid "Axis length"
 msgstr "Longitud del eje"
 
-# MSG_BABYSTEPPING_X
-#: ultralcd.cpp:2481
-msgid "Babystepping X"
-msgstr "Micropasos X"
-
-# MSG_BABYSTEPPING_Y
-#: ultralcd.cpp:2484
-msgid "Babystepping Y"
-msgstr "Micropasos Y"
-
-# MSG_BED
-#: messages.c:15
-msgid "Bed"
-msgstr "Base calefactable "
+# MSG_SELFTEST_AXIS
+#: ultralcd.cpp:7951
+msgid "Axis"
+msgstr "Eje"
 
 # MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:7072
+#: ultralcd.cpp:7893
 msgid "Bed / Heater"
 msgstr "Base / Calentador"
 
@@ -188,7 +136,7 @@ msgid "Bed Heating"
 msgstr "Calentando Base"
 
 # MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5197
+#: ultralcd.cpp:5768
 msgid "Bed level correct"
 msgstr "Corr. de la cama"
 
@@ -197,43 +145,28 @@ msgstr "Corr. de la cama"
 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_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4
-#: Marlin_main.cpp:4508
-msgid "Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset."
-msgstr "Nivelacion fallada. Sensor desconectado o cables danados. Esperando reset."
-
-# MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4
-#: Marlin_main.cpp:4512
-msgid "Bed leveling failed. Sensor triggered too high. Waiting for reset."
-msgstr "Nivelacion fallada. Sensor funciona demasiado pronto. Esperando reset."
-
-# MSG_BEGIN_FILE_LIST
-#: Marlin_main.cpp:4405
-msgid "Begin file list"
-msgstr "Comienzo lista arch. "
+# MSG_BED
+#: messages.c:15
+msgid "Bed"
+msgstr "Base"
 
 # MSG_MENU_BELT_STATUS c=15 r=1
-#: ultralcd.cpp:2135
+#: ultralcd.cpp:2059
 msgid "Belt status"
 msgstr "Estado de la correa"
 
 # MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:67
+#: messages.c:71
 msgid "Blackout occurred. Recover print?"
 msgstr "Se fue la luz. ?Reanudar la impresion?"
 
-# MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4427
-msgid "Calibrate"
-msgstr "Calibrar"
-
-# MSG_CALIBRATE_E c=20 r=1
-#: ultralcd.cpp:4526
-msgid "Calibrate E"
-msgstr "Calibrar E"
+# 
+#: ultralcd.cpp:8297
+msgid "Calibrating home"
+msgstr "Calibrando posicion inicial"
 
 # MSG_CALIBRATE_BED
-#: ultralcd.cpp:5186
+#: ultralcd.cpp:5757
 msgid "Calibrate XYZ"
 msgstr "Calibrar XYZ"
 
@@ -242,13 +175,13 @@ msgstr "Calibrar XYZ"
 msgid "Calibrate Z"
 msgstr "Calibrar Z"
 
-# 
-#: ultralcd.cpp:7461
-msgid "Calibrating home"
-msgstr "Calibrando posicion inicial"
+# MSG_CALIBRATE_PINDA c=17 r=1
+#: ultralcd.cpp:4654
+msgid "Calibrate"
+msgstr "Calibrar"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3290
+#: ultralcd.cpp:3492
 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."
 
@@ -258,127 +191,32 @@ msgid "Calibrating Z"
 msgstr "Calibrando Z"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3290
+#: ultralcd.cpp:3492
 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_MENU_CALIBRATION
-#: messages.c:57
-msgid "Calibration"
-msgstr "Calibracion"
-
 # MSG_HOMEYZ_DONE
-#: ultralcd.cpp:778
+#: ultralcd.cpp:816
 msgid "Calibration done"
 msgstr "Calibracion OK"
 
+# MSG_MENU_CALIBRATION
+#: messages.c:61
+msgid "Calibration"
+msgstr "Calibracion"
+
 # 
-#: ultralcd.cpp:4552
+#: ultralcd.cpp:4781
 msgid "Cancel"
 msgstr "Cancelar"
 
-# MSG_SD_CANT_ENTER_SUBDIR
-#: cardreader.cpp:662
-msgid "Cannot enter subdir: "
-msgstr "Sin acceso subdir: "
-
-# MSG_SD_CANT_OPEN_SUBDIR
-#: cardreader.cpp:97
-msgid "Cannot open subdir"
-msgstr "No se puede abrir subdir"
-
-# MSG_SD_INSERTED
-#:
-msgid "Card inserted"
-msgstr "Tarjeta insertada"
-
 # MSG_SD_REMOVED
-#: ultralcd.cpp:7819
+#: ultralcd.cpp:8679
 msgid "Card removed"
 msgstr "Tarjeta retirada"
 
-# 
-#: ultralcd.cpp:6087
-msgid "Change extruder"
-msgstr "Cambiar extrusor."
-
-# MSG_FILAMENTCHANGE
-#: messages.c:37
-msgid "Change filament"
-msgstr "Cambiar filamento"
-
-# MSG_CNG_SDCARD
-#: ultralcd.cpp:5777
-msgid "Change SD card"
-msgstr "Cambiar tarjeta SD"
-
-# MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2474
-msgid "Change success!"
-msgstr "Cambio correcto"
-
-# MSG_CORRECTLY c=20
-#: ultralcd.cpp:2551
-msgid "Changed correctly?"
-msgstr "Cambio correcto?"
-
-# MSG_CHANGING_FILAMENT c=20
-#: ultralcd.cpp:1899
-msgid "Changing filament!"
-msgstr "Cambiando filamento"
-
-# MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:77
-msgid "Checking bed     "
-msgstr "Control base cal."
-
-# MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:7450
-msgid "Checking endstops"
-msgstr "Control endstops"
-
-# MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:7456
-msgid "Checking hotend  "
-msgstr "Control fusor"
-
-# MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:78
-msgid "Checking sensors "
-msgstr "Comprobando los sensores"
-
-# MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:7451
-msgid "Checking X axis  "
-msgstr "Control sensor X"
-
-# MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:7452
-msgid "Checking Y axis  "
-msgstr "Control sensor Y"
-
-# MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:7453
-msgid "Checking Z axis  "
-msgstr "Control sensor Z"
-
-# MSG_ERR_CHECKSUM_MISMATCH
-#: cmdqueue.cpp:444
-msgid "checksum mismatch, Last Line: "
-msgstr "inconcluencia checksum, Ult. Linea: "
-
-# MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:49
-msgid "Choose extruder:"
-msgstr "Elegir extrusor:"
-
-# MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:50
-msgid "Choose filament:"
-msgstr "Elije filamento:"
-
 # MSG_NOT_COLOR
-#: ultralcd.cpp:2563
+#: ultralcd.cpp:2718
 msgid "Color not correct"
 msgstr "Color no homogeneo"
 
@@ -388,20 +226,10 @@ msgid "Cooldown"
 msgstr "Enfriar"
 
 # 
-#: ultralcd.cpp:4108
-msgid "Copy selected language from XFLASH?"
-msgstr "Copiar idioma seleccionado desde XFLASH?"
-
-# 
-#: ultralcd.cpp:4360
+#: ultralcd.cpp:4587
 msgid "Copy selected language?"
 msgstr "Copiar idioma seleccionado?"
 
-# 
-#: ultralcd.cpp:2013
-msgid "Crash"
-msgstr "Choque"
-
 # MSG_CRASHDETECT_ON
 #: messages.c:27
 msgid "Crash det.   [on]"
@@ -423,22 +251,27 @@ msgid "Crash detected."
 msgstr "Choque detectado."
 
 # 
-#: Marlin_main.cpp:608
+#: Marlin_main.cpp:600
 msgid "Crash detected. Resume print?"
 msgstr "Choque detectado. Continuar impresion?"
 
+# 
+#: ultralcd.cpp:1853
+msgid "Crash"
+msgstr "Choque"
+
 # MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:5335
+#: ultralcd.cpp:5909
 msgid "Current"
 msgstr "Actual"
 
 # MSG_DATE c=17 r=1
-#: ultralcd.cpp:2235
+#: ultralcd.cpp:2213
 msgid "Date:"
 msgstr "Fecha:"
 
 # MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5093
+#: ultralcd.cpp:5654
 msgid "Disable steppers"
 msgstr "Apagar motores"
 
@@ -448,119 +281,69 @@ 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_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:4828
+#: ultralcd.cpp:5070
 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_CLEAN_NOZZLE_E c=20 r=8
-#: ultralcd.cpp:3890
-msgid "E calibration finished. Please clean the nozzle. Click when done."
-msgstr "E calibrado. Limpia nozzle. Haz clic una vez terminado."
-
-# MSG_EXTRUDER_CORRECTION c=9
-#: ultralcd.cpp:4889
-msgid "E-correct"
-msgstr "E-correcion"
-
-# 
-#: ultralcd.cpp:4640
-msgid "Eject"
-msgstr "Expulsar"
+# MSG_EXTRUDER_CORRECTION c=10
+#: ultralcd.cpp:5134
+msgid "E-correct:"
+msgstr "Corregir-E:"
 
 # MSG_EJECT_FILAMENT c=17 r=1
-#: ultralcd.cpp:6081
+#: messages.c:53
 msgid "Eject filament"
 msgstr "Expulsar filamento"
 
-# MSG_EJECT_FILAMENT1 c=17 r=1
-#: ultralcd.cpp:5603
-msgid "Eject filament 1"
-msgstr "Expulsar filamento 1"
-
-# MSG_EJECT_FILAMENT2 c=17 r=1
-#: ultralcd.cpp:5604
-msgid "Eject filament 2"
-msgstr "Expulsar filamento 2"
-
-# MSG_EJECT_FILAMENT3 c=17 r=1
-#: ultralcd.cpp:5605
-msgid "Eject filament 3"
-msgstr "Expulsar filamento 3"
-
-# MSG_EJECT_FILAMENT4 c=17 r=1
-#: ultralcd.cpp:5606
-msgid "Eject filament 4"
-msgstr "Expulsar filamento 4"
-
-# MSG_EJECT_FILAMENT5 c=17 r=1
-#: ultralcd.cpp:5607
-msgid "Eject filament 5"
-msgstr "Expulsar filamento 5"
+# 
+#: ultralcd.cpp:4869
+msgid "Eject"
+msgstr "Expulsar"
 
 # MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1339
+#: mmu.cpp:1434
 msgid "Ejecting filament"
 msgstr "Expulsando filamento"
 
-# MSG_END_FILE_LIST
-#: Marlin_main.cpp:4407
-msgid "End file list"
-msgstr "Fin lista arch. "
-
-# MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:7090
-msgid "Endstop"
-msgstr "Endstop"
-
 # MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
-#: ultralcd.cpp:7096
+#: ultralcd.cpp:7917
 msgid "Endstop not hit"
 msgstr "Endstop no alcanzado"
 
+# MSG_SELFTEST_ENDSTOP
+#: ultralcd.cpp:7911
+msgid "Endstop"
+msgstr ""
+
 # MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:7078
+#: ultralcd.cpp:7899
 msgid "Endstops"
-msgstr "Endstops"
-
-# MSG_ENDSTOPS_HIT
-#: messages.c:30
-msgid "endstops hit: "
-msgstr "endstops golpean: "
-
-# MSG_LANGUAGE_NAME
-#: language.c:153
-msgid "English"
-msgstr "Espanol"
-
-# MSG_Enqueing
-#:
-msgid "enqueing \""
-msgstr "en cola \""
+msgstr ""
 
 # MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6132
+#: ultralcd.cpp:6859
 msgid "Error - static memory has been overwritten"
 msgstr "Error - se ha sobre-escrito la memoria estatica"
 
-# MSG_SD_ERR_WRITE_TO_FILE
-#: messages.c:78
-msgid "error writing to file"
-msgstr "error al escribir arch."
+# MSG_FSENS_NOT_RESPONDING c=20 r=4
+#: ultralcd.cpp:4475
+msgid "ERROR: Filament sensor is not responding, please check connection."
+msgstr "ERROR: El sensor de filamento no responde, por favor comprueba la conexion."
 
 # MSG_ERROR
 #: messages.c:28
 msgid "ERROR:"
-msgstr "ERROR:"
+msgstr ""
 
-# MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4259
-msgid "ERROR: Filament sensor is not responding, please check connection."
-msgstr "ERROR: El sensor de filamento no responde, por favor comprueba la conexion."
+# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
+#: ultralcd.cpp:8304
+msgid "Extruder fan:"
+msgstr "Vent.extrusor:"
 
-# 
-#: Marlin_main.cpp:1006
-msgid "External SPI flash W25X20CL not responding."
-msgstr "No responde el flasheo externo SPI W25X20CL"
+# MSG_INFO_EXTRUDER c=15 r=1
+#: ultralcd.cpp:2244
+msgid "Extruder info"
+msgstr "Informacion del extrusor"
 
 # MSG_MOVE_E
 #: messages.c:29
@@ -568,37 +351,12 @@ msgid "Extruder"
 msgstr "Extruir"
 
 # 
-#: ultralcd.cpp:5633
-msgid "Extruder 1"
-msgstr "Extrusor 1"
-
-# 
-#: ultralcd.cpp:5634
-msgid "Extruder 2"
-msgstr "Extrusor 2"
-
-# 
-#: ultralcd.cpp:5635
-msgid "Extruder 3"
-msgstr "Extrusor 3"
-
-# 
-#: ultralcd.cpp:5636
-msgid "Extruder 4"
-msgstr "Extrusor 4"
-
-# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:7468
-msgid "Extruder fan:"
-msgstr "Ventilador del extrusor:"
-
-# MSG_INFO_EXTRUDER c=15 r=1
-#: ultralcd.cpp:2266
-msgid "Extruder info"
-msgstr "Informacion del extrusor"
+#: ultralcd.cpp:6846
+msgid "Fail stats MMU"
+msgstr "Estadistica de fallos MMU"
 
 # MSG_FSENS_AUTOLOAD_ON c=17 r=1
-#: ultralcd.cpp:4927
+#: ultralcd.cpp:5168
 msgid "F. autoload  [on]"
 msgstr "Autocarg.Fil[act]"
 
@@ -608,37 +366,32 @@ msgid "F. autoload [N/A]"
 msgstr "Autocarg.Fil[N/D]"
 
 # MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-#: ultralcd.cpp:4929
+#: ultralcd.cpp:5170
 msgid "F. autoload [off]"
 msgstr "Autocarg.Fil[ina]"
 
 # 
-#: ultralcd.cpp:6112
+#: ultralcd.cpp:6843
 msgid "Fail stats"
 msgstr "Estadistica de fallos"
 
-# 
-#: ultralcd.cpp:6115
-msgid "Fail stats MMU"
-msgstr "Estadistica de fallos MMU"
-
 # MSG_FAN_SPEED c=14
 #: messages.c:31
 msgid "Fan speed"
 msgstr "Velocidad Vent."
 
 # MSG_SELFTEST_FAN c=20
-#: messages.c:74
+#: messages.c:78
 msgid "Fan test"
 msgstr "Test ventiladores"
 
 # MSG_FANS_CHECK_ON c=17 r=1
-#: ultralcd.cpp:5100
+#: ultralcd.cpp:5663
 msgid "Fans check   [on]"
 msgstr "Comprob.vent[act]"
 
 # MSG_FANS_CHECK_OFF c=17 r=1
-#: ultralcd.cpp:5102
+#: ultralcd.cpp:5665
 msgid "Fans check  [off]"
 msgstr "Comprob.vent[ina]"
 
@@ -647,13 +400,8 @@ msgstr "Comprob.vent[ina]"
 msgid "Fil. sensor  [on]"
 msgstr "Sensor Fil. [act]"
 
-# MSG_RESPONSE_POOR c=20 r=2
-#: Marlin_main.cpp:3146
-msgid "Fil. sensor response is poor, disable it?"
-msgstr "La respuesta del sensor de fil es deficiente, ?desactivarlo?"
-
 # MSG_FSENSOR_NA
-#: ultralcd.cpp:4907
+#: ultralcd.cpp:5148
 msgid "Fil. sensor [N/A]"
 msgstr "Sensor Fil. [N/D]"
 
@@ -663,117 +411,92 @@ msgid "Fil. sensor [off]"
 msgstr "Sensor Fil. [ina]"
 
 # 
-#: ultralcd.cpp:2013
+#: ultralcd.cpp:1852
 msgid "Filam. runouts"
 msgstr "Filam. acabado"
 
-# MSG_FILAMENT c=17 r=1
-#: messages.c:30
-msgid "Filament"
-msgstr "Filamento"
-
 # MSG_FILAMENT_CLEAN c=20 r=2
 #: messages.c:32
 msgid "Filament extruding & with correct color?"
 msgstr "Es nitido el color nuevo?"
 
 # MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2559
+#: ultralcd.cpp:2714
 msgid "Filament not loaded"
 msgstr "Fil. no introducido"
 
 # MSG_FILAMENT_SENSOR c=20
-#: ultralcd.cpp:7144
+#: messages.c:84
 msgid "Filament sensor"
 msgstr "Sensor de filamento"
 
-# MSG_SELFTEST_FILAMENT_SENSOR c=18
-#: ultralcd.cpp:7477
-msgid "Filament sensor:"
-msgstr "Sensor de filamento:"
-
 # MSG_FILAMENT_USED c=19 r=1
-#: ultralcd.cpp:2725
+#: ultralcd.cpp:2885
 msgid "Filament used"
 msgstr "Filamento usado"
 
-# MSG_STATS_FILAMENTUSED c=20
-#: ultralcd.cpp:2142
-msgid "Filament used:  "
-msgstr "Filamento usado: "
+# MSG_PRINT_TIME c=19 r=1
+#: ultralcd.cpp:2886
+msgid "Print time"
+msgstr "Tiempo de imp.:"
 
 # MSG_FILE_INCOMPLETE c=20 r=2
-#: ultralcd.cpp:7595
+#: ultralcd.cpp:8432
 msgid "File incomplete. Continue anyway?"
 msgstr "Archivo incompleto. ?Continuar de todos modos?"
 
-# MSG_SD_FILE_OPENED
-#: cardreader.cpp:395
-msgid "File opened: "
-msgstr "Arch. abierto: "
-
-# MSG_SD_FILE_SELECTED
-#: cardreader.cpp:401
-msgid "File selected"
-msgstr "Arch. elegido"
-
 # MSG_FINISHING_MOVEMENTS c=20 r=1
 #: messages.c:40
 msgid "Finishing movements"
 msgstr "Term. movimientos"
 
 # MSG_V2_CALIBRATION c=17 r=1
-#: ultralcd.cpp:5177
+#: messages.c:105
 msgid "First layer cal."
 msgstr "Cal. primera cap."
 
 # MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:4740
+#: ultralcd.cpp:4982
 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:640
+#: mmu.cpp:724
 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:6205
+#: ultralcd.cpp:6932
 msgid "Flow"
 msgstr "Flujo"
 
 # MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2228
+#: ultralcd.cpp:2206
 msgid "forum.prusa3d.com"
-msgstr "forum.prusa3d.com"
+msgstr ""
 
 # MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:71
+#: messages.c:75
 msgid "Front print fan?"
 msgstr "Vent. frontal?"
 
 # MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3101
+#: ultralcd.cpp:3294
 msgid "Front side[um]"
 msgstr "Frontal [um]"
 
 # MSG_SELFTEST_FANS
-#: ultralcd.cpp:7136
+#: ultralcd.cpp:7957
 msgid "Front/left fans"
 msgstr "Ventiladores frontal/izquierdo"
 
 # MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:7066
+#: ultralcd.cpp:7887
 msgid "Heater/Thermistor"
 msgstr "Calentador/Termistor"
 
-# MSG_HEATING
-#: messages.c:46
-msgid "Heating"
-msgstr "Calentando..."
-
 # MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:7475
+#: Marlin_main.cpp:8467
 msgid "Heating disabled by safety timer."
 msgstr "Calentadores desactivados por el temporizador de seguridad."
 
@@ -782,138 +505,163 @@ msgstr "Calentadores desactivados por el temporizador de seguridad."
 msgid "Heating done."
 msgstr "Calentamiento acabado."
 
+# MSG_HEATING
+#: messages.c:46
+msgid "Heating"
+msgstr "Calentando..."
+
 # MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:4719
+#: ultralcd.cpp:4961
 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:2229
+#: ultralcd.cpp:2207
 msgid "howto.prusa3d.com"
-msgstr "howto.prusa3d.com"
-
-# MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:4749
-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:4757
-msgid "I will run z calibration now."
-msgstr "Voy a hacer Calibracion Z ahora."
+msgstr ""
 
-# MSG_WIZARD_V2_CAL_2 c=20 r=12
-#: ultralcd.cpp:4822
-msgid "I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."
-msgstr "Voy a comenzar a imprimir la linea y tu bajaras el nozzle gradualmente al rotar el dial, hasta que llegues a la altura optima. Mira las imagenes del capitulo Calibracion en el manual."
+# MSG_FILAMENTCHANGE
+#: messages.c:37
+msgid "Change filament"
+msgstr "Cambiar filamento"
 
-# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: mesh_bed_calibration.cpp:2481
-msgid "Improving bed calibration point"
-msgstr "Mejorando punto de calibracion base"
+# MSG_CHANGE_SUCCESS
+#: ultralcd.cpp:2629
+msgid "Change success!"
+msgstr "Cambio correcto"
 
-# MSG_WATCH
-#: messages.c:93
-msgid "Info screen"
-msgstr "Monitorizar"
+# MSG_CORRECTLY c=20
+#: ultralcd.cpp:2706
+msgid "Changed correctly?"
+msgstr "Cambio correcto?"
 
-# MSG_INIT_SDCARD
-#: ultralcd.cpp:5785
-msgid "Init. SD card"
-msgstr "Iniciar tarj. SD"
+# MSG_SELFTEST_CHECK_BED c=20
+#: messages.c:81
+msgid "Checking bed     "
+msgstr "Control base cal."
 
-# MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2459
-msgid "Insert filament"
-msgstr "Introducir filamento"
+# MSG_SELFTEST_CHECK_ENDSTOPS c=20
+#: ultralcd.cpp:8286
+msgid "Checking endstops"
+msgstr "Control endstops"
+
+# MSG_SELFTEST_CHECK_HOTEND c=20
+#: ultralcd.cpp:8292
+msgid "Checking hotend  "
+msgstr "Control fusor"
+
+# MSG_SELFTEST_CHECK_FSENSOR c=20
+#: messages.c:82
+msgid "Checking sensors "
+msgstr "Comprobando los sensores"
+
+# MSG_SELFTEST_CHECK_X c=20
+#: ultralcd.cpp:8287
+msgid "Checking X axis  "
+msgstr "Control sensor X"
+
+# MSG_SELFTEST_CHECK_Y c=20
+#: ultralcd.cpp:8288
+msgid "Checking Y axis  "
+msgstr "Control sensor Y"
+
+# MSG_SELFTEST_CHECK_Z c=20
+#: ultralcd.cpp:8289
+msgid "Checking Z axis  "
+msgstr "Control sensor Z"
+
+# MSG_CHOOSE_EXTRUDER c=20 r=1
+#: messages.c:49
+msgid "Choose extruder:"
+msgstr "Elegir extrusor:"
+
+# MSG_CHOOSE_FILAMENT c=20 r=1
+#: messages.c:50
+msgid "Choose filament:"
+msgstr "Elije filamento:"
+
+# MSG_FILAMENT c=17 r=1
+#: messages.c:30
+msgid "Filament"
+msgstr "Filamento"
 
-# MSG_FILAMENT_LOADING_T0 c=20 r=4
-#: messages.c:33
-msgid "Insert filament into extruder 1. Click when done."
-msgstr "Insertar filamento en el extrusor 1. Haz clic una vez terminado."
+# MSG_WIZARD_XYZ_CAL c=20 r=8
+#: ultralcd.cpp:4991
+msgid "I will run xyz calibration now. It will take approx. 12 mins."
+msgstr "Hare la calibracion XYZ. Tardara 12 min. aproximadamente."
 
-# MSG_FILAMENT_LOADING_T1 c=20 r=4
-#: messages.c:34
-msgid "Insert filament into extruder 2. Click when done."
-msgstr "Insertar filamento en el extrusor 2. Haz clic una vez terminado."
+# MSG_WIZARD_Z_CAL c=20 r=8
+#: ultralcd.cpp:4999
+msgid "I will run z calibration now."
+msgstr "Voy a hacer Calibracion Z ahora."
 
-# MSG_FILAMENT_LOADING_T2 c=20 r=4
-#: messages.c:35
-msgid "Insert filament into extruder 3. Click when done."
-msgstr "Insertar filamento en el extrusor 3. Haz clic una vez terminado."
+# MSG_WIZARD_V2_CAL_2 c=20 r=12
+#: ultralcd.cpp:5064
+msgid "I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."
+msgstr "Voy a comenzar a imprimir la linea y tu bajaras el nozzle gradualmente al rotar el dial, hasta que llegues a la altura optima. Mira las imagenes del capitulo Calibracion en el manual."
 
-# MSG_FILAMENT_LOADING_T3 c=20 r=4
-#: messages.c:36
-msgid "Insert filament into extruder 4. Click when done."
-msgstr "Insertar filamento en el extrusor 4. Haz clic una vez terminado."
+# MSG_WATCH
+#: messages.c:99
+msgid "Info screen"
+msgstr "Monitorizar"
 
 # 
-#: ultralcd.cpp:4782
+#: ultralcd.cpp:5024
 msgid "Is filament 1 loaded?"
 msgstr "?Esta cargado el filamento 1?"
 
+# MSG_INSERT_FILAMENT c=20
+#: ultralcd.cpp:2614
+msgid "Insert filament"
+msgstr "Introducir filamento"
+
 # MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4785
+#: ultralcd.cpp:5027
 msgid "Is filament loaded?"
 msgstr "Esta el filamento cargado?"
 
 # MSG_WIZARD_PLA_FILAMENT c=20 r=2
-#: ultralcd.cpp:4816
+#: ultralcd.cpp:5058
 msgid "Is it PLA filament?"
 msgstr "Es el filamento PLA?"
 
 # MSG_PLA_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4561
+#: ultralcd.cpp:4790
 msgid "Is PLA filament loaded?"
 msgstr "Esta el filamento PLA cargado?"
 
 # MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:86
+#: messages.c:92
 msgid "Is steel sheet on heatbed?"
 msgstr "?Esta colocada la lamina de acero sobre la base?"
 
-# MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20
-#: mesh_bed_calibration.cpp:2223
-msgid "Iteration "
-msgstr "Reiteracion "
-
-# MSG_KILLED
-#: Marlin_main.cpp:7552
-msgid "KILLED. "
-msgstr "PARADA DE EMERGENCIA"
-
-# 
-#: ultralcd.cpp:1960
-msgid "Last print"
-msgstr "Ultima impresion"
-
 # 
-#: ultralcd.cpp:1976
+#: ultralcd.cpp:1795
 msgid "Last print failures"
 msgstr "Ultimas impresiones fallidas"
 
 # 
-#: ultralcd.cpp:2861
-msgid "Left"
-msgstr "Izquierda"
+#: ultralcd.cpp:1772
+msgid "Last print"
+msgstr "Ultima impresion"
 
 # MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:72
+#: messages.c:76
 msgid "Left hotend fan?"
 msgstr "Vent. izquierdo?"
 
+# 
+#: ultralcd.cpp:3018
+msgid "Left"
+msgstr "Izquierda"
+
 # MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3099
+#: ultralcd.cpp:3292
 msgid "Left side [um]"
 msgstr "Izquierda [um]"
 
-# MSG_LEFT c=12 r=1
-#: ultralcd.cpp:2308
-msgid "Left:"
-msgstr "Izda:"
-
 # 
-#: ultralcd.cpp:5107
+#: ultralcd.cpp:5680
 msgid "Lin. correction"
 msgstr "Correccion de Linealidad"
 
@@ -922,48 +670,13 @@ msgstr "Correccion de Linealidad"
 msgid "Live adjust Z"
 msgstr "Micropaso Eje Z"
 
-# MSG_LOAD_ALL c=17
-#: ultralcd.cpp:5575
-msgid "Load all"
-msgstr "Intr. todos fil."
-
 # MSG_LOAD_FILAMENT c=17
 #: messages.c:51
 msgid "Load filament"
 msgstr "Introducir filam."
 
-# MSG_LOAD_FILAMENT_1 c=17
-#: ultralcd.cpp:5576
-msgid "Load filament 1"
-msgstr "Introducir fil. 1"
-
-# MSG_LOAD_FILAMENT_2 c=17
-#: ultralcd.cpp:5577
-msgid "Load filament 2"
-msgstr "Introducir fil. 2"
-
-# MSG_LOAD_FILAMENT_3 c=17
-#: ultralcd.cpp:5578
-msgid "Load filament 3"
-msgstr "Introducir fil. 3"
-
-# MSG_LOAD_FILAMENT_4 c=17
-#: ultralcd.cpp:5579
-msgid "Load filament 4"
-msgstr "Introducir fil. 4"
-
-# MSG_LOAD_FILAMENT_5 c=17
-#: ultralcd.cpp:5582
-msgid "Load filament 5"
-msgstr "Cargar filamento 5"
-
-# 
-#: ultralcd.cpp:6079
-msgid "Load to nozzle"
-msgstr "Cargar a la boquilla"
-
 # MSG_LOADING_COLOR
-#: ultralcd.cpp:2499
+#: ultralcd.cpp:2654
 msgid "Loading color"
 msgstr "Cambiando color"
 
@@ -973,137 +686,92 @@ msgid "Loading filament"
 msgstr "Introduciendo filam."
 
 # MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:7120
+#: ultralcd.cpp:7941
 msgid "Loose pulley"
 msgstr "Polea suelta"
 
-# MSG_M104_INVALID_EXTRUDER
-#: Marlin_main.cpp:7675
-msgid "M104 Invalid extruder "
-msgstr "M104 Extrusor invalido"
-
-# MSG_M105_INVALID_EXTRUDER
-#: Marlin_main.cpp:7678
-msgid "M105 Invalid extruder "
-msgstr "M105 Extrusor invalido"
-
-# MSG_M109_INVALID_EXTRUDER
-#: Marlin_main.cpp:7681
-msgid "M109 Invalid extruder "
-msgstr "M109 Extrusor invalido"
+# 
+#: ultralcd.cpp:6805
+msgid "Load to nozzle"
+msgstr "Cargar a la boquilla"
 
 # MSG_M117_V2_CALIBRATION c=25 r=1
-#: messages.c:53
+#: messages.c:55
 msgid "M117 First layer cal."
 msgstr "M117 Cal. primera cap."
 
-# MSG_M200_INVALID_EXTRUDER
-#: Marlin_main.cpp:5857
-msgid "M200 Invalid extruder "
-msgstr "M200 Extrusor invalido"
-
-# MSG_M218_INVALID_EXTRUDER
-#: Marlin_main.cpp:7684
-msgid "M218 Invalid extruder "
-msgstr "M218 Extrusor invalido"
-
-# MSG_M221_INVALID_EXTRUDER
-#: Marlin_main.cpp:7687
-msgid "M221 Invalid extruder "
-msgstr "M221 Extrusor invalido"
-
 # MSG_MAIN
-#: messages.c:54
+#: messages.c:56
 msgid "Main"
 msgstr "Menu principal"
 
-# MSG_MARK_FIL c=20 r=8
-#: ultralcd.cpp:3840
-msgid "Mark filament 100mm from extruder body. Click when done."
-msgstr "Marque el filamento 100 mm por encima del final del extrusor. Haz clic una vez terminado."
-
-# 
-#: ultralcd.cpp:2896
-msgid "Measured skew"
-msgstr "Desviacion medida:"
-
-# MSG_MEASURED_SKEW c=15 r=1
-#: ultralcd.cpp:2335
-msgid "Measured skew:"
-msgstr "Desviación medida:"
-
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:55
+#: messages.c:59
 msgid "Measuring reference height of calibration point"
 msgstr "Midiendo altura del punto de calibracion"
 
 # MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5192
+#: ultralcd.cpp:5763
 msgid "Mesh Bed Leveling"
 msgstr "Nivelacion Mesh Level"
 
+# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
+#: mmu.cpp:762
+msgid "MMU OK. Resuming position..."
+msgstr "MMU OK. Restaurando posicion..."
+
+# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
+#: mmu.cpp:755
+msgid "MMU OK. Resuming temperature..."
+msgstr "MMU OK. Restaurando temperatura..."
+
 # 
-#: ultralcd.cpp:1977
+#: ultralcd.cpp:3059
+msgid "Measured skew"
+msgstr "Desviacion med:"
+
+# 
+#: ultralcd.cpp:1796
 msgid "MMU fails"
 msgstr "Fallos MMU"
 
 # 
-#: mmu.cpp:1399
+#: mmu.cpp:1613
 msgid "MMU load failed     "
 msgstr "Carga MMU fallida"
 
 # 
-#: ultralcd.cpp:1977
+#: ultralcd.cpp:1797
 msgid "MMU load fails"
 msgstr "Carga MMU falla"
 
-# 
-#: mmu.cpp:635
-msgid "MMU needs user attention."
-msgstr "MMU necesita atencion del usuario."
-
-# MSG_MMU_NEEDS_ATTENTION c=20 r=4
-#: mmu.cpp:359
-msgid "MMU needs user attention. Fix the issue and then press button on MMU unit."
-msgstr "MMU necesita atencion del usuario. Corrija el problema y luego presione el boton en la unidad MMU."
-
-# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:676
-msgid "MMU OK. Resuming position..."
-msgstr "MMU OK. Restaurando posicion..."
-
-# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:669
-msgid "MMU OK. Resuming temperature..."
-msgstr "MMU OK. Restaurando temperatura..."
-
 # MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:687
+#: mmu.cpp:773
 msgid "MMU OK. Resuming..."
 msgstr "MMU OK. Resumiendo..."
 
-# 
-#: ultralcd.cpp:1994
-msgid "MMU power fails"
-msgstr "Fallo de energia en MMU"
-
-# 
-#: ultralcd.cpp:2241
-msgid "MMU2 connected"
-msgstr "MMU2 conectado"
-
 # MSG_STEALTH_MODE_OFF
-#: messages.c:84
+#: messages.c:90
 msgid "Mode     [Normal]"
 msgstr "Modo     [Normal]"
 
 # MSG_SILENT_MODE_ON
-#: messages.c:83
+#: messages.c:89
 msgid "Mode     [silent]"
 msgstr "Modo   [silencio]"
 
+# 
+#: mmu.cpp:719
+msgid "MMU needs user attention."
+msgstr "MMU necesita atencion del usuario."
+
+# 
+#: ultralcd.cpp:1823
+msgid "MMU power fails"
+msgstr "Fallo de energia en MMU"
+
 # MSG_STEALTH_MODE_ON
-#: messages.c:85
+#: messages.c:91
 msgid "Mode    [Stealth]"
 msgstr "Modo   [Silencio]"
 
@@ -1113,197 +781,137 @@ msgid "Mode [auto power]"
 msgstr "Modo[fuerza auto]"
 
 # MSG_SILENT_MODE_OFF
-#: messages.c:82
+#: messages.c:88
 msgid "Mode [high power]"
 msgstr "Modo [rend.pleno]"
 
+# 
+#: ultralcd.cpp:2219
+msgid "MMU2 connected"
+msgstr "MMU2 conectado"
+
 # MSG_SELFTEST_MOTOR
-#: messages.c:79
+#: messages.c:83
 msgid "Motor"
-msgstr "Motor"
+msgstr ""
 
 # MSG_MOVE_AXIS
-#: ultralcd.cpp:5091
+#: ultralcd.cpp:5652
 msgid "Move axis"
 msgstr "Mover ejes"
 
 # MSG_MOVE_X
-#: ultralcd.cpp:4164
+#: ultralcd.cpp:4378
 msgid "Move X"
 msgstr "Mover X"
 
 # MSG_MOVE_Y
-#: ultralcd.cpp:4165
+#: ultralcd.cpp:4379
 msgid "Move Y"
 msgstr "Mover Y"
 
 # MSG_MOVE_Z
-#: ultralcd.cpp:4166
+#: ultralcd.cpp:4380
 msgid "Move Z"
 msgstr "Mover Z"
 
-# 
-#: ultralcd.cpp:2867
-msgid "N/A"
-msgstr "No disponible"
-
-# 
-#: util.cpp:293
-msgid "New firmware version available:"
-msgstr "Nuevo firmware disponible:"
-
-# MSG_NO
-#: messages.c:58
-msgid "No"
-msgstr "No"
-
-# 
-#:
-msgid "No "
-msgstr "No"
-
-# MSG_ERR_NO_CHECKSUM
-#: cmdqueue.cpp:456
-msgid "No Checksum with line number, Last Line: "
-msgstr "Sin Checksum con linea numero, Ult. Linea: "
-
 # MSG_NO_MOVE
-#: Marlin_main.cpp:4908
+#: Marlin_main.cpp:5292
 msgid "No move."
 msgstr "Sin movimiento"
 
 # MSG_NO_CARD
-#: ultralcd.cpp:6059
+#: ultralcd.cpp:6772
 msgid "No SD card"
 msgstr "No hay tarjeta SD"
 
-# MSG_ERR_NO_THERMISTORS
-#: Marlin_main.cpp:4946
-msgid "No thermistors - no temperature"
-msgstr "Sin termistores - sin temperatura"
+# 
+#: ultralcd.cpp:3024
+msgid "N/A"
+msgstr "N/A"
+
+# MSG_NO
+#: messages.c:62
+msgid "No"
+msgstr ""
 
 # MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:7068
+#: ultralcd.cpp:7889
 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
+#: messages.c:79
 msgid "Not spinning"
 msgstr "Ventilador no gira"
 
 # MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4821
+#: ultralcd.cpp:5063
 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:4765
+#: ultralcd.cpp:5007
 msgid "Now I will preheat nozzle for PLA."
-msgstr "Voy a precalentar la boquilla para PLA ahora."
-
-# 
-#: ultralcd.cpp:4756
-msgid "Now remove the test print from steel sheet."
-msgstr "Ahora retira la prueba de la lamina de acero."
+msgstr "Ahora precalentare la boquilla para PLA."
 
 # MSG_NOZZLE
-#: messages.c:59
+#: messages.c:63
 msgid "Nozzle"
 msgstr "Boquilla"
 
-# 
-#: ultralcd.cpp:1919
-msgid "Nozzle FAN"
-msgstr "Ventilador de capa"
-
-# MSG_INFO_NOZZLE_FAN c=11 r=1
-#: ultralcd.cpp:1537
-msgid "Nozzle FAN:"
-msgstr "Ventilador de capa:"
-
-# MSG_NOZZLE1
-#: ultralcd.cpp:5995
-msgid "Nozzle2"
-msgstr "Boquilla2"
-
-# MSG_NOZZLE2
-#: ultralcd.cpp:5998
-msgid "Nozzle3"
-msgstr "Boquilla3"
-
-# MSG_OK
-#: Marlin_main.cpp:6333
-msgid "ok"
-msgstr "ok"
-
 # MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
-#: Marlin_main.cpp:1516
+#: Marlin_main.cpp:1519
 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"
 
-# MSG_ENDSTOP_OPEN
-#: messages.c:29
-msgid "open"
-msgstr "abrir"
-
-# MSG_SD_OPEN_FILE_FAIL
-#: messages.c:79
-msgid "open failed, File: "
-msgstr "error apertura, Arch.: "
+# 
+#: ultralcd.cpp:4998
+msgid "Now remove the test print from steel sheet."
+msgstr "Ahora retira la prueba de la lamina de acero."
 
-# MSG_SD_OPENROOT_FAIL
-#: cardreader.cpp:196
-msgid "openRoot failed"
-msgstr "fallo openRoot "
+# 
+#: ultralcd.cpp:1722
+msgid "Nozzle FAN"
+msgstr "Vent. capa"
 
 # MSG_PAUSE_PRINT
-#: ultralcd.cpp:6029
+#: ultralcd.cpp:6735
 msgid "Pause print"
 msgstr "Pausar impresion"
 
-# MSG_PICK_Z
-#: ultralcd.cpp:3463
-msgid "Pick print"
-msgstr "Esc. Modelo Adecuado"
-
 # MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1741
+#: ultralcd.cpp:1606
 msgid "PID cal.           "
 msgstr "Cal. PID "
 
 # MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1747
+#: ultralcd.cpp:1612
 msgid "PID cal. finished"
 msgstr "Cal. PID terminada"
 
 # MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5198
+#: ultralcd.cpp:5769
 msgid "PID calibration"
 msgstr "Calibracion PID"
 
 # MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:808
+#: ultralcd.cpp:846
 msgid "PINDA Heating"
 msgstr "Calentando PINDA"
 
 # MSG_PAPER c=20 r=8
-#: messages.c:60
+#: messages.c:64
 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_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:7060
-msgid "Please check :"
-msgstr "Controla :"
-
-# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:94
-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_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:4830
+#: ultralcd.cpp:5072
 msgid "Please clean heatbed and then press the knob."
 msgstr "Limpia la superficie de la base, por favor, y haz clic"
 
@@ -1312,340 +920,240 @@ msgstr "Limpia la superficie de la base, por favor, y haz clic"
 msgid "Please clean the nozzle for calibration. Click when done."
 msgstr "Limpia boquilla para calibracion. Click cuando acabes."
 
+# MSG_SELFTEST_PLEASECHECK
+#: ultralcd.cpp:7881
+msgid "Please check :"
+msgstr "Controla :"
+
+# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
+#: messages.c:100
+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_WIZARD_LOAD_FILAMENT c=20 r=8
-#: ultralcd.cpp:4664
+#: ultralcd.cpp:4894
 msgid "Please insert PLA filament to the extruder, then press knob to load it."
 msgstr "Inserta, por favor, filamento PLA en el extrusor. Despues haz clic para cargarlo."
 
-# 
-#: ultralcd.cpp:4660
-msgid "Please insert PLA filament to the first tube of MMU, then press the knob to load it."
-msgstr "Por favor introduce el filamento al primer tubo MMU, despues presiona el dial para imprimirlo."
-
-# MSG_WIZARD_INSERT_CORRECT_FILAMENT c=20 r=8
-#: ultralcd.cpp:4109
-msgid "Please load PLA filament and then resume Wizard by rebooting the printer."
-msgstr "Carga filamento PLA, por favor, y reinicia la impresora para continuar con el Wizard"
-
 # MSG_PLEASE_LOAD_PLA c=20 r=4
-#: ultralcd.cpp:4566
+#: ultralcd.cpp:4795
 msgid "Please load PLA filament first."
 msgstr "Carga el filamento PLA primero por favor."
 
 # MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3025
+#: Marlin_main.cpp:3064
 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:65
 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:68
 msgid "Please press the knob to unload filament"
 msgstr "Por favor, pulsa el dial para descargar el filamento"
 
+# 
+#: ultralcd.cpp:4889
+msgid "Please insert PLA filament to the first tube of MMU, then press the knob to load it."
+msgstr "Por favor introduce el filamento al primer tubo MMU, despues presiona el dial para imprimirlo."
+
 # MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:66
+#: messages.c:70
 msgid "Please pull out filament immediately"
 msgstr "Por favor retire el filamento de inmediato"
 
 # MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1347
+#: mmu.cpp:1440
 msgid "Please remove filament and then press the knob."
 msgstr "Por favor quite el filamento y luego presione el dial."
 
-# 
-#: ultralcd.cpp:4755
-msgid "Please remove shipping helpers first."
-msgstr "Por favor retira los soportes de envio primero."
-
 # MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:70
+#: messages.c:74
 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:4052
+#: Marlin_main.cpp:4355
 msgid "Please run XYZ calibration first."
 msgstr "Por favor realiza la calibracion XYZ primero."
 
 # MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1293
+#: mmu.cpp:1359
 msgid "Please update firmware in your MMU2. Waiting for reset."
 msgstr "Por favor actualice el firmware en tu MMU2. Esperando el reseteo."
 
-# 
-#: util.cpp:297
-msgid "Please upgrade."
-msgstr "Actualize por favor"
-
 # MSG_PLEASE_WAIT c=20
-#: messages.c:62
+#: messages.c:66
 msgid "Please wait"
 msgstr "Por Favor Espere"
 
 # 
-#: ultralcd.cpp:2013
-msgid "Power failures"
-msgstr "Cortes de energia"
+#: ultralcd.cpp:4997
+msgid "Please remove shipping helpers first."
+msgstr "Por favor retira los soportes de envio primero."
 
-# MSG_POWERUP
-#: messages.c:69
-msgid "PowerUp"
-msgstr "Encendido"
+# MSG_PREHEAT_NOZZLE c=20
+#: messages.c:67
+msgid "Preheat the nozzle!"
+msgstr "Precalienta extrusor!"
 
 # MSG_PREHEAT
-#: ultralcd.cpp:6018
+#: ultralcd.cpp:6722
 msgid "Preheat"
 msgstr "Precalentar"
 
-# MSG_PREHEAT_NOZZLE c=20
-#: messages.c:63
-msgid "Preheat the nozzle!"
-msgstr "Precalienta extrusor!"
-
 # MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:96
+#: messages.c:102
 msgid "Preheating nozzle. Please wait."
 msgstr "Precalentando nozzle. Espera por favor."
 
 # 
-#: ultralcd.cpp:2350
-msgid "Preheating to load"
-msgstr "Precalentar para cargar"
-
-# 
-#: ultralcd.cpp:2351
-msgid "Preheating to unload"
-msgstr "Precalentar para descargar"
-
-# MSG_PREPARE_FILAMENT c=20 r=1
-#: ultralcd.cpp:1911
-msgid "Prepare new filament"
-msgstr "Preparar filamento"
+#: util.cpp:297
+msgid "Please upgrade."
+msgstr "Actualize por favor"
 
 # MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:9150
+#: Marlin_main.cpp:10364
 msgid "Press knob to preheat nozzle and continue."
 msgstr "Pulsa el dial para precalentar la boquilla y continue."
 
 # 
-#: ultralcd.cpp:2313
-msgid "Press the knob"
-msgstr "Pulsa el dial"
-
-# 
-#: mmu.cpp:639
-msgid "Press the knob to resume nozzle temperature."
-msgstr "Presiona el dial para continuar con la temperatura de la boquilla."
+#: ultralcd.cpp:1851
+msgid "Power failures"
+msgstr "Cortes de energia"
 
 # MSG_PRINT_ABORTED c=20
-#: messages.c:65
+#: messages.c:69
 msgid "Print aborted"
 msgstr "Impresion cancelada"
 
 # 
-#: ultralcd.cpp:1921
-msgid "Print FAN"
-msgstr "Ventilador del extrusor"
+#: ultralcd.cpp:2455
+msgid "Preheating to load"
+msgstr "Precalentar para cargar"
+
+# 
+#: ultralcd.cpp:2459
+msgid "Preheating to unload"
+msgstr "Precalentar para descargar"
 
 # MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:7471
+#: ultralcd.cpp:8307
 msgid "Print fan:"
-msgstr "Ventilador del fusor:"
-
-# MSG_INFO_PRINT_FAN c=11 r=1
-#: ultralcd.cpp:1549
-msgid "Print FAN: "
-msgstr "Ventilador del fusor:"
+msgstr "Vent.fusor:"
 
 # MSG_CARD_MENU
 #: messages.c:21
 msgid "Print from SD"
 msgstr "Menu tarjeta SD"
 
+# 
+#: ultralcd.cpp:2317
+msgid "Press the knob"
+msgstr "Pulsa el dial"
+
 # MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1022
+#: ultralcd.cpp:1069
 msgid "Print paused"
 msgstr "Impresion en pausa"
 
-# MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2727
-msgid "Print time"
-msgstr "Tiempo de imp.:"
-
-# MSG_STATS_PRINTTIME c=20
-#: ultralcd.cpp:2151
-msgid "Print time:  "
-msgstr "Tiempo de imp.:"
-
-# MSG_PRINTER_DISCONNECTED c=20 r=1
-#: ultralcd.cpp:607
-msgid "Printer disconnected"
-msgstr "Impresora desconectada"
-
-# MSG_ERR_KILLED
-#: Marlin_main.cpp:7547
-msgid "Printer halted. kill() called!"
-msgstr "Impresora detenida. kill() activado!"
+# 
+#: mmu.cpp:723
+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:41
 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."
 
-# MSG_ERR_STOPPED
-#: messages.c:32
-msgid "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"
-msgstr "Impresora parada debido a errores. Arregle el error y use M999 para reinicio. (Temperatura se resetea. Ajustar despues de reinicio)"
-
-# 
-#:
-msgid "Prusa i3 MK2 ready."
-msgstr "Preparado para i3 MK2."
-
-# WELCOME_MSG c=20
-#:
-msgid "Prusa i3 MK2.5 ready."
-msgstr "Preparado para Prusa i3 MK2.5."
-
-# WELCOME_MSG c=20
-#:
-msgid "Prusa i3 MK3 ready."
-msgstr "Prusa i3 MK3 prep."
-
 # 
-#:
-msgid "Prusa i3 MK3S OK."
-msgstr "Prusa i3 MK3S OK."
+#: ultralcd.cpp:1723
+msgid "Print FAN"
+msgstr "Vent.extr"
 
 # MSG_PRUSA3D
-#: ultralcd.cpp:2227
+#: ultralcd.cpp:2205
 msgid "prusa3d.com"
 msgstr "prusa3d.es"
 
 # MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3102
+#: ultralcd.cpp:3295
 msgid "Rear side [um]"
 msgstr "Trasera [um]"
 
 # MSG_RECOVERING_PRINT c=20 r=1
-#: Marlin_main.cpp:8575
+#: Marlin_main.cpp:9764
 msgid "Recovering print    "
 msgstr "Recuperando impresion"
 
-# MSG_REFRESH
-#:
-msgid "Refresh"
-msgstr "Refrescar"
-
 # MSG_REMOVE_OLD_FILAMENT c=20 r=4
-#: mmu.cpp:744
+#: mmu.cpp:830
 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."
 
-# MSG_M119_REPORT
-#: Marlin_main.cpp:5297
-msgid "Reporting endstop status"
-msgstr "Estado endstop"
-
 # 
-#: Marlin_main.cpp:7076
-msgid "Resend"
-msgstr "Reenviar: "
+#: 
+msgid "Prusa i3 MK3S OK."
+msgstr ""
 
-# MSG_RESEND
-#: Marlin_main.cpp:6911
-msgid "Resend: "
-msgstr "Reenviar: "
+# MSG_CALIBRATE_BED_RESET
+#: ultralcd.cpp:5774
+msgid "Reset XYZ calibr."
+msgstr ""
 
 # MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3103
+#: ultralcd.cpp:3296
 msgid "Reset"
-msgstr "Reset"
-
-# MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5203
-msgid "Reset XYZ calibr."
-msgstr "Reset XYZ calibr."
+msgstr ""
 
 # MSG_RESUME_PRINT
-#: ultralcd.cpp:6033
+#: ultralcd.cpp:6742
 msgid "Resume print"
 msgstr "Reanudar impres."
 
 # MSG_RESUMING_PRINT c=20 r=1
-#: messages.c:69
+#: messages.c:73
 msgid "Resuming print"
-msgstr "Resumiendo impresion"
-
-# 
-#: ultralcd.cpp:2862
-msgid "Right"
-msgstr "Derecha"
+msgstr "Continuando impresion"
 
 # MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3100
+#: ultralcd.cpp:3293
 msgid "Right side[um]"
 msgstr "Derecha [um]"
 
-# MSG_RIGHT c=12 r=1
-#: ultralcd.cpp:2309
-msgid "Right:"
-msgstr "Der:"
-
-# MSG_E_CAL_KNOB c=20 r=8
-#: ultralcd.cpp:3835
-msgid "Rotate knob until mark reaches extruder body. Click when done."
-msgstr "Rotar el dial hasta que la marca llegue al cuerpo del extrusor. Haz clic una vez terminado."
-
 # MSG_SECOND_SERIAL_ON c=17 r=1
-#: ultralcd.cpp:5119
+#: ultralcd.cpp:5692
 msgid "RPi port     [on]"
 msgstr "Puerto RPi  [act]"
 
 # MSG_SECOND_SERIAL_OFF c=17 r=1
-#: ultralcd.cpp:5117
+#: ultralcd.cpp:5690
 msgid "RPi port    [off]"
 msgstr "Puerto RPi  [ina]"
 
 # MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4583
+#: ultralcd.cpp:4812
 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_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-#: ultralcd.cpp:5033
+#: ultralcd.cpp:5322
 msgid "SD card  [normal]"
 msgstr "Tarj. SD [normal]"
 
-# MSG_SD_CARD_OK
-#: cardreader.cpp:202
-msgid "SD card ok"
-msgstr "Tarj. SD ok"
-
 # MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:4238
-msgid "SD card [FlshAir]"
-msgstr "Tarj. SD [FlshAir]"
-
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:5031
+#: ultralcd.cpp:5320
 msgid "SD card [flshAir]"
 msgstr "Tarj. SD[FlshAir]"
 
-# MSG_SD_INIT_FAIL
-#: cardreader.cpp:186
-msgid "SD init fail"
-msgstr "Error init SD"
-
-# MSG_SD_PRINTING_BYTE
-#: cardreader.cpp:516
-msgid "SD printing byte "
-msgstr "SD byte impresion"
+# 
+#: ultralcd.cpp:3019
+msgid "Right"
+msgstr "Derecha"
 
 # MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
 #: messages.c:38
@@ -1653,282 +1161,207 @@ msgid "Searching bed calibration point"
 msgstr "Buscando punto de calibracion base"
 
 # MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5126
+#: ultralcd.cpp:5699
 msgid "Select language"
 msgstr "Cambiar el idioma"
 
-# 
-#: ultralcd.cpp:4803
-msgid "Select nozzle preheat temperature which matches your material."
-msgstr "Selecciona la temperatura para precalentar la boquilla que se ajuste a tu material. "
-
-# 
-#: ultralcd.cpp:4552
-msgid "Select PLA filament:"
-msgstr "Seleccionar filamento PLA:"
-
 # MSG_SELFTEST_OK
-#: ultralcd.cpp:6631
+#: ultralcd.cpp:7452
 msgid "Self test OK"
-msgstr "Self test OK"
+msgstr ""
 
 # MSG_SELFTEST_START c=20
-#: ultralcd.cpp:6449
+#: ultralcd.cpp:7238
 msgid "Self test start  "
 msgstr "Iniciar Selftest"
 
 # MSG_SELFTEST
-#: ultralcd.cpp:5179
+#: ultralcd.cpp:5750
 msgid "Selftest         "
 msgstr "Selftest"
 
 # MSG_SELFTEST_ERROR
-#: ultralcd.cpp:7058
+#: ultralcd.cpp:7879
 msgid "Selftest error !"
 msgstr "Error Selftest !"
 
 # MSG_SELFTEST_FAILED c=20
-#: messages.c:73
+#: messages.c:77
 msgid "Selftest failed  "
 msgstr "Fallo Selftest"
 
 # MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1548
+#: Marlin_main.cpp:1551
 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:3819
-msgid "Sensor state"
-msgstr "Estado del sensor"
+#: ultralcd.cpp:5045
+msgid "Select nozzle preheat temperature which matches your material."
+msgstr "Selecciona la temperatura para precalentar la boquilla que se ajuste a tu material. "
 
 # 
-#:
-msgid "Sensors info"
-msgstr "Informacion sensores"
+#: ultralcd.cpp:4780
+msgid "Select PLA filament:"
+msgstr "Seleccionar filamento PLA:"
 
 # MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3111
+#: ultralcd.cpp:3314
 msgid "Set temperature:"
 msgstr "Establecer temp.:"
 
 # MSG_SETTINGS
-#: messages.c:81
+#: messages.c:86
 msgid "Settings"
 msgstr "Configuracion"
 
-# 
-#: ultralcd.cpp:2899
-msgid "Severe skew"
-msgstr "Inclinacion severa"
-
-# MSG_SEVERE_SKEW c=15 r=1
-#: ultralcd.cpp:2346
-msgid "Severe skew:"
-msgstr "Inclinación severa:"
-
 # MSG_SHOW_END_STOPS c=17 r=1
-#: ultralcd.cpp:5200
+#: ultralcd.cpp:5771
 msgid "Show end stops"
 msgstr "Mostrar endstops"
 
 # 
-#:
-msgid "Show pinda state"
-msgstr "Mostrar estado pinda"
-
-# MSG_DWELL
-#: Marlin_main.cpp:3752
-msgid "Sleep..."
-msgstr "En reposo..."
-
-# 
-#: ultralcd.cpp:2898
-msgid "Slight skew"
-msgstr "Ligeramente inclinado"
-
-# MSG_SLIGHT_SKEW c=15 r=1
-#: ultralcd.cpp:2342
-msgid "Slight skew:"
-msgstr "Ligeramente inclinado:"
+#: ultralcd.cpp:4025
+msgid "Sensor state"
+msgstr "Estado del sensor"
 
 # MSG_FILE_CNT c=20 r=4
-#: 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. "
 
-# 
-#: Marlin_main.cpp:4560
-msgid "Some problem encountered, Z-leveling enforced ..."
-msgstr "Problema encontrado, nivelacion Z forzosa ..."
-
-# MSG_SORT_NONE c=17 r=1
-#: ultralcd.cpp:4250
-msgid "Sort:      [None]"
-msgstr "Ordena: [Ninguno]"
-
 # MSG_SORT_NONE c=17 r=1
-#: ultralcd.cpp:5043
-msgid "Sort:      [none]"
-msgstr "Ordenar:   [nada]"
+#: ultralcd.cpp:5332
+msgid "Sort       [none]"
+msgstr "Ordenar [ninguno]"
 
 # MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:4248
-msgid "Sort:      [Time]"
-msgstr "Orden: [Fecha]"
+#: ultralcd.cpp:5330
+msgid "Sort       [time]"
+msgstr "Ordenar   [fecha]"
 
-# MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:5041
-msgid "Sort:      [time]"
-msgstr "Orden:    [Fecha]"
-
-# MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:4249
-msgid "Sort:  [Alphabet]"
-msgstr "Orden: [Alfabético]"
+# 
+#: ultralcd.cpp:3062
+msgid "Severe skew:"
+msgstr "Incl.severa:"
 
 # MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:5042
-msgid "Sort:  [alphabet]"
-msgstr "Ordenar:[alfabet]"
-
-# MSG_SORT_NONE c=17 r=1
-#:
-msgid "Sort:  [none]"
-msgstr "Ordenar: [nada]"
-
-# MSG_SORT_TIME c=17 r=1
-#:
-msgid "Sort:  [time]"
-msgstr "Ordenar: [tiempo]"
+#: ultralcd.cpp:5331
+msgid "Sort   [alphabet]"
+msgstr "Ordenar [alfabet]"
 
 # MSG_SORTING c=20 r=1
-#: cardreader.cpp:745
+#: cardreader.cpp:746
 msgid "Sorting files"
 msgstr "Ordenando archivos"
 
 # MSG_SOUND_LOUD c=17 r=1
-#: sound.h:5
+#: sound.h:6
 msgid "Sound      [loud]"
 msgstr "Sonido     [alto]"
 
+# 
+#: ultralcd.cpp:3061
+msgid "Slight skew:"
+msgstr "Liger.incl.:"
+
 # MSG_SOUND_MUTE c=17 r=1
-#: sound.h:8
+#: 
 msgid "Sound      [mute]"
 msgstr "Sonido[silenciad]"
 
+# 
+#: Marlin_main.cpp:4871
+msgid "Some problem encountered, Z-leveling enforced ..."
+msgstr "Problema encontrado, nivelacion Z forzosa ..."
+
 # MSG_SOUND_ONCE c=17 r=1
-#: sound.h:6
+#: sound.h:7
 msgid "Sound      [once]"
 msgstr "Sonido  [una vez]"
 
 # MSG_SOUND_SILENT c=17 r=1
-#: sound.h:7
+#: sound.h:8
 msgid "Sound    [silent]"
 msgstr "Sonido[silencios]"
 
 # MSG_SPEED
-#: ultralcd.cpp:6199
+#: ultralcd.cpp:6926
 msgid "Speed"
 msgstr "Velocidad"
 
 # MSG_SELFTEST_FAN_YES c=19
-#: messages.c:76
+#: messages.c:80
 msgid "Spinning"
 msgstr "Ventilador girando"
 
-# MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:4959
-msgid "SpoolJoin    [on]"
-msgstr "SpoolJoin    [on]"
-
-# 
-#: ultralcd.cpp:4955
-msgid "SpoolJoin   [N/A]"
-msgstr "SpoolJoin   [N/A]"
-
-# MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:4963
-msgid "SpoolJoin   [off]"
-msgstr "SpoolJoin   [off]"
-
 # MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4065
+#: Marlin_main.cpp:4368
 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:6108
+#: ultralcd.cpp:6839
 msgid "Statistics  "
 msgstr "Estadisticas "
 
-# MSG_STEPPER_TOO_HIGH
-#: stepper.cpp:345
-msgid "Steprate too high: "
-msgstr "Pasos muy altos: "
-
 # MSG_STOP_PRINT
-#: messages.c:87
+#: messages.c:93
 msgid "Stop print"
 msgstr "Detener impresion"
 
 # MSG_STOPPED
-#: messages.c:88
+#: messages.c:94
 msgid "STOPPED. "
 msgstr "PARADA"
 
 # MSG_SUPPORT
-#: ultralcd.cpp:6117
+#: ultralcd.cpp:6848
 msgid "Support"
 msgstr "Soporte"
 
 # MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:7138
+#: ultralcd.cpp:7959
 msgid "Swapped"
 msgstr "Intercambiado"
 
 # MSG_TEMP_CALIBRATION c=20 r=1
-#: messages.c:89
+#: messages.c:95
 msgid "Temp. cal.          "
 msgstr "Cal. temp. "
 
 # MSG_TEMP_CALIBRATION_ON c=20 r=1
-#: ultralcd.cpp:5113
+#: ultralcd.cpp:5686
 msgid "Temp. cal.   [on]"
-msgstr "Cal. temp.   [ON]"
+msgstr "Cal. temp.   [on]"
 
 # MSG_TEMP_CALIBRATION_OFF c=20 r=1
-#: ultralcd.cpp:5111
+#: ultralcd.cpp:5684
 msgid "Temp. cal.  [off]"
-msgstr "Cal. temp.  [OFF]"
+msgstr "Cal. temp.  [off]"
 
 # MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5209
+#: ultralcd.cpp:5780
 msgid "Temp. calibration"
 msgstr "Calibracion temp."
 
-# MSG_TEMPERATURE
-#: ultralcd.cpp:5089
-msgid "Temperature"
-msgstr "Temperatura"
-
 # MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3744
+#: ultralcd.cpp:3951
 msgid "Temperature calibration failed"
 msgstr "Fallo de la calibracion de temperatura"
 
-# MSG_PINDA_NOT_CALIBRATED c=20 r=4
-#: Marlin_main.cpp:1403
-msgid "Temperature calibration has not been run yet"
-msgstr "La temperatura de calibracion no ha sido ajustada"
-
 # MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:90
+#: messages.c:96
 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."
 
+# MSG_TEMPERATURE
+#: ultralcd.cpp:5650
+msgid "Temperature"
+msgstr "Temperatura"
+
 # MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2273
+#: ultralcd.cpp:2251
 msgid "Temperatures"
 msgstr "Temperaturas"
 
@@ -1938,281 +1371,442 @@ msgid "There is still a need to make Z calibration. Please follow the manual, ch
 msgstr "Todavia es necesario hacer una calibracion Z. Por favor siga el manual, capitulo Primeros pasos, seccion Calibracion del flujo."
 
 # 
-#: ultralcd.cpp:2316
-msgid "to load filament"
-msgstr "para cargar el filamento"
-
-# 
-#: ultralcd.cpp:2317
-msgid "to unload filament"
-msgstr "para descargar el filamento"
-
-# 
-#: ultralcd.cpp:1961
-msgid "Total"
-msgstr "Total"
-
-# 
-#: ultralcd.cpp:1994
-msgid "Total failures"
-msgstr "Fallos totales"
-
-# 
-#: ultralcd.cpp:2752
+#: ultralcd.cpp:2908
 msgid "Total filament"
 msgstr "Filamento total:"
 
-# MSG_STATS_TOTALFILAMENT c=20
-#: ultralcd.cpp:2186
-msgid "Total filament :"
-msgstr "Filamento total:"
-
 # 
-#: ultralcd.cpp:2754
+#: ultralcd.cpp:2908
 msgid "Total print time"
 msgstr "Tiempo total :"
 
-# MSG_STATS_TOTALPRINTTIME c=20
-#: ultralcd.cpp:2203
-msgid "Total print time :"
-msgstr "Tiempo total :"
-
-# MSG_ENDSTOP_HIT
-#: messages.c:28
-msgid "TRIGGERED"
-msgstr "ACTIVADO"
-
 # MSG_TUNE
-#: ultralcd.cpp:6015
+#: ultralcd.cpp:6719
 msgid "Tune"
 msgstr "Ajustar"
 
 # 
-#: ultralcd.cpp:2249
-msgid "unknown"
-msgstr "desconocido"
-
-# 
-#: ultralcd.cpp:4640
+#: ultralcd.cpp:4869
 msgid "Unload"
 msgstr "Descargar"
 
 # 
-#: ultralcd.cpp:5617
-msgid "Unload all"
-msgstr "Soltar todos fil."
+#: ultralcd.cpp:1820
+msgid "Total failures"
+msgstr "Fallos totales"
+
+# 
+#: ultralcd.cpp:2324
+msgid "to load filament"
+msgstr "para cargar el filamento"
+
+# 
+#: ultralcd.cpp:2328
+msgid "to unload filament"
+msgstr "para descargar el filamento"
 
 # MSG_UNLOAD_FILAMENT c=17
-#: messages.c:91
+#: messages.c:97
 msgid "Unload filament"
 msgstr "Soltar filamento"
 
-# MSG_UNLOAD_FILAMENT_1 c=17
-#: ultralcd.cpp:5406
-msgid "Unload filament 1"
-msgstr "Soltar fil. 1"
-
-# MSG_UNLOAD_FILAMENT_2 c=17
-#: ultralcd.cpp:5407
-msgid "Unload filament 2"
-msgstr "Soltar fil. 2"
-
-# MSG_UNLOAD_FILAMENT_3 c=17
-#: ultralcd.cpp:5408
-msgid "Unload filament 3"
-msgstr "Soltar fil. 3"
-
-# MSG_UNLOAD_FILAMENT_4 c=17
-#: ultralcd.cpp:5409
-msgid "Unload filament 4"
-msgstr "Soltar fil. 4"
-
 # MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:92
+#: messages.c:98
 msgid "Unloading filament"
 msgstr "Soltando filamento"
 
 # 
-#: ultralcd.cpp:4639
-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"
+#: ultralcd.cpp:1773
+msgid "Total"
+msgstr ""
 
 # MSG_USED c=19 r=1
-#: ultralcd.cpp:5334
+#: ultralcd.cpp:5908
 msgid "Used during print"
 msgstr "Usado en impresion"
 
 # MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2276
+#: ultralcd.cpp:2254
 msgid "Voltages"
 msgstr "Voltajes"
 
-# MSG_SD_VOL_INIT_FAIL
-#: cardreader.cpp:191
-msgid "volume.init failed"
-msgstr "fallo volume.init \n"
+# 
+#: ultralcd.cpp:2227
+msgid "unknown"
+msgstr "desconocido"
 
 # MSG_USERWAIT
-#: Marlin_main.cpp:4876
+#: Marlin_main.cpp:5263
 msgid "Wait for user..."
 msgstr "Esperando ordenes"
 
 # MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3255
+#: ultralcd.cpp:3458
 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:3219
+#: ultralcd.cpp:3422
 msgid "Waiting for PINDA probe cooling"
 msgstr "Esperando a que se enfrie la sonda PINDA"
 
+# 
+#: ultralcd.cpp:4868
+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:1508
+#: Marlin_main.cpp:1511
 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:1500
+#: Marlin_main.cpp:1503
 msgid "Warning: motherboard type changed."
 msgstr "Cuidado: el tipo de placa ha cambiado."
 
 # MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1504
+#: Marlin_main.cpp:1507
 msgid "Warning: printer type changed."
 msgstr "Cuidado: Ha cambiado el tipo de impresora."
 
-# MSG_FW_VERSION_UNKNOWN c=20 r=8
-#: Marlin_main.cpp:946
-msgid "WARNING: This is an unofficial, unsupported build. Use at your own risk!"
-msgstr "CUIDADO: Esta es una version no-oficial y sin soporte. ¡Usala bajo tu responsabilidad!"
-
 # MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3014
+#: Marlin_main.cpp:3054
 msgid "Was filament unload successful?"
 msgstr "?Se cargocon exito el filamento?"
 
 # MSG_SELFTEST_WIRINGERROR
-#: messages.c:80
+#: messages.c:85
 msgid "Wiring error"
 msgstr "Error de conexion"
 
 # MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5176
+#: ultralcd.cpp:5747
 msgid "Wizard"
-msgstr "Wizard"
-
-# MSG_SD_WORKDIR_FAIL
-#: messages.c:78
-msgid "workDir open failed"
-msgstr "error al abrir workDir"
-
-# MSG_SD_WRITE_TO_FILE
-#: cardreader.cpp:424
-msgid "Writing to file: "
-msgstr "Escribiendo al arch.: "
-
-# 
-#: ultralcd.cpp:4885
-msgid "X-correct"
-msgstr "X-correcion"
+msgstr ""
 
 # MSG_XYZ_DETAILS c=19 r=1
-#: ultralcd.cpp:2265
+#: ultralcd.cpp:2243
 msgid "XYZ cal. details"
 msgstr "Detalles de calibracion XYZ"
 
+# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
+#: messages.c:19
+msgid "XYZ calibration failed. Please consult the manual."
+msgstr "Calibracion XYZ fallada. Consulta el manual por favor."
+
+# MSG_YES
+#: messages.c:104
+msgid "Yes"
+msgstr "Si"
+
+# MSG_WIZARD_QUIT c=20 r=8
+#: messages.c:103
+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:3715
+#: ultralcd.cpp:3922
 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:3712
+#: ultralcd.cpp:3919
 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!"
 
+# 
+#: ultralcd.cpp:5130
+msgid "X-correct:"
+msgstr "Corregir-X:"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
+#: ultralcd.cpp:3916
+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:3693
+#: ultralcd.cpp:3900
 msgid "XYZ calibration compromised. Front calibration points not reachable."
 msgstr "Calibrazion XYZ comprometida. Puntos frontales no alcanzables."
 
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8
-#: ultralcd.cpp:3699
-msgid "XYZ calibration compromised. Left front calibration point not reachable."
-msgstr "Calibrazion XYZ comprometida. Punto frontal izquierdo no alcanzable."
-
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3696
+#: ultralcd.cpp:3903
 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:6166
+msgid "Load all"
+msgstr "Intr. todos fil."
+
 # 
-#: ultralcd.cpp:3675
+#: ultralcd.cpp:3882
 msgid "XYZ calibration failed. Bed calibration point was not found."
 msgstr "Calibracion XYZ fallada. Puntos de calibracion en la base no encontrados."
 
 # 
-#: ultralcd.cpp:3681
+#: ultralcd.cpp:3888
 msgid "XYZ calibration failed. Front calibration points not reachable."
 msgstr "Calibracion XYZ fallada. Puntos frontales no alcanzables."
 
 # 
-#: ultralcd.cpp:3687
-msgid "XYZ calibration failed. Left front calibration point not reachable."
-msgstr "Calibracion XYZ fallada. Punto frontal izquierdo no alcanzable."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
-#: messages.c:19
-msgid "XYZ calibration failed. Please consult the manual."
-msgstr "Calibracion XYZ fallada. Consulta el manual por favor."
-
-# 
-#: ultralcd.cpp:3684
+#: ultralcd.cpp:3891
 msgid "XYZ calibration failed. Right front calibration point not reachable."
 msgstr "Calibracion XYZ fallad. Punto frontal derecho no alcanzable."
 
-# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3709
-msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
-msgstr "Calibracion XYZ ok. Ejes X/Y perpendiculares. Enhorabuena!"
-
 # 
-#: ultralcd.cpp:2859
+#: ultralcd.cpp:3016
 msgid "Y distance from min"
 msgstr "Distancia en Y desde el min"
 
-# MSG_Y_DISTANCE_FROM_MIN c=20 r=1
-#: ultralcd.cpp:2306
-msgid "Y distance from min:"
-msgstr "Distancia en Y desde el min:"
+# 
+#: ultralcd.cpp:5131
+msgid "Y-correct:"
+msgstr "Corregir-Y:"
+
+# MSG_OFF
+#: menu.cpp:426
+msgid " [off]"
+msgstr "[apag]"
 
 # 
-#: ultralcd.cpp:4886
-msgid "Y-correct"
-msgstr "Y-correcion"
+#: messages.c:57
+msgid "Back"
+msgstr "atras"
 
-# MSG_YES
-#: messages.c:98
-msgid "Yes"
-msgstr "Si"
+# 
+#: ultralcd.cpp:5639
+msgid "Checks"
+msgstr "Comprobaciones"
 
-# MSG_FW_VERSION_ALPHA c=20 r=8
-#: Marlin_main.cpp:930
-msgid "You are using firmware alpha version. This is development version. Using this version is not recommended and may cause printer damage."
-msgstr "Estas usando una version alpha de firmware. Esta es una version de desarrollo. No recomendamos usar esta version y podria causar daños a la impresora."
+# 
+#: ultralcd.cpp:7973
+msgid "False triggering"
+msgstr "Falsa activacion"
 
-# MSG_FW_VERSION_BETA c=20 r=8
-#: Marlin_main.cpp:931
-msgid "You are using firmware beta version. This is development version. Using this version is not recommended and may cause printer damage."
-msgstr "Estás usando una versión beta de firmware. Es una versión en desarrollo. No recomendamos que la uses y podría causar daños a la impresora."
+# 
+#: ultralcd.cpp:4030
+msgid "FINDA:"
+msgstr "FINDA:"
 
-# MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:97
-msgid "You can always resume the Wizard from Calibration -> Wizard."
-msgstr "Siempre puedes acceder al asistente desde Calibracion -> Wizard"
+# 
+#: ultralcd.cpp:5545
+msgid "Firmware   [none]"
+msgstr "Firmware[ninguno]"
+
+# 
+#: ultralcd.cpp:5551
+msgid "Firmware [strict]"
+msgstr "Firmware[estrict]"
+
+# 
+#: ultralcd.cpp:5548
+msgid "Firmware   [warn]"
+msgstr "Firmware  [aviso]"
+
+# 
+#: messages.c:87
+msgid "HW Setup"
+msgstr "Configuracion HW"
+
+# 
+#: ultralcd.cpp:4034
+msgid "IR:"
+msgstr ""
+
+# 
+#: ultralcd.cpp:7046
+msgid "Magnets comp.[N/A]"
+msgstr "Comp. imanes [N/A]"
+
+# 
+#: ultralcd.cpp:7044
+msgid "Magnets comp.[Off]"
+msgstr "Comp. imanes [Off]"
+
+# 
+#: ultralcd.cpp:7043
+msgid "Magnets comp. [On]"
+msgstr "Comp. imanes  [On]"
+
+# 
+#: ultralcd.cpp:7035
+msgid "Mesh         [3x3]"
+msgstr "Malla        [3x3]"
+
+# 
+#: ultralcd.cpp:7036
+msgid "Mesh         [7x7]"
+msgstr "Malla        [7x7]"
+
+# 
+#: ultralcd.cpp:5677
+msgid "Mesh bed leveling"
+msgstr "Nivelacion Malla Base"
+
+# 
+#: Marlin_main.cpp:856
+msgid "MK3S firmware detected on MK3 printer"
+msgstr "Firmware MK3S detectado en impresora MK3"
+
+# 
+#: ultralcd.cpp:5306
+msgid "MMU Mode [Normal]"
+msgstr "Modo MMU [Normal]"
+
+# 
+#: ultralcd.cpp:5307
+msgid "MMU Mode[Stealth]"
+msgstr "Modo MMU[Silenci]"
+
+# 
+#: ultralcd.cpp:4511
+msgid "Mode change in progress ..."
+msgstr "Cambio de modo progresando ..."
+
+# 
+#: ultralcd.cpp:5506
+msgid "Model      [none]"
+msgstr "Modelo  [ninguno]"
+
+# 
+#: ultralcd.cpp:5512
+msgid "Model    [strict]"
+msgstr "Modelo [estricto]"
+
+# 
+#: ultralcd.cpp:5509
+msgid "Model      [warn]"
+msgstr "Modelo    [aviso]"
+
+# 
+#: ultralcd.cpp:5467
+msgid "Nozzle d.  [0.25]"
+msgstr "Diam. nozzl[0.25]"
+
+# 
+#: ultralcd.cpp:5470
+msgid "Nozzle d.  [0.40]"
+msgstr "Diam. nozzl[0.40]"
+
+# 
+#: ultralcd.cpp:5473
+msgid "Nozzle d.  [0.60]"
+msgstr "Diam. nozzl[0.60]"
+
+# 
+#: ultralcd.cpp:5421
+msgid "Nozzle     [none]"
+msgstr "Nozzle  [ninguno]"
+
+# 
+#: ultralcd.cpp:5427
+msgid "Nozzle   [strict]"
+msgstr "Nozzle [estricto]"
+
+# 
+#: ultralcd.cpp:5424
+msgid "Nozzle     [warn]"
+msgstr "Nozzle    [aviso]"
+
+# 
+#: util.cpp:510
+msgid "G-code sliced for a different level. Continue?"
+msgstr "Codigo G laminado para un nivel diferente. ?Continuar?"
+
+# 
+#: util.cpp:516
+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:427
+msgid "G-code sliced for a different printer type. Continue?"
+msgstr "Codigo G laminado para un tipo de impresora diferente. ?Continuar?"
+
+# 
+#: util.cpp:433
+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:477
+msgid "G-code sliced for a newer firmware. Continue?"
+msgstr "Codigo G laminado para nuevo firmware. ?Continuar?"
+
+# 
+#: util.cpp:483
+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:4026
+msgid "PINDA:"
+msgstr "PINDA:"
+
+# 
+#: ultralcd.cpp:2465
+msgid "Preheating to cut"
+msgstr "Precalentando para laminar"
+
+# 
+#: ultralcd.cpp:2462
+msgid "Preheating to eject"
+msgstr "Precalentar para expulsar"
+
+# 
+#: util.cpp:390
+msgid "Printer nozzle diameter differs from the G-code. Continue?"
+msgstr "Diametro nozzle impresora difiere de cod.G. ?Continuar?"
+
+# 
+#: util.cpp:397
+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."
+
+# 
+#: ultralcd.cpp:6683
+msgid "Rename"
+msgstr "Renombrar"
+
+# 
+#: ultralcd.cpp:6679
+msgid "Select"
+msgstr "Seleccionar"
+
+# 
+#: ultralcd.cpp:2245
+msgid "Sensor info"
+msgstr "Info sensor"
+
+# 
+#: messages.c:58
+msgid "Sheet"
+msgstr "Lamina"
+
+# 
+#: sound.h:9
+msgid "Sound    [assist]"
+msgstr "Sonido [asistido]"
+
+# 
+#: ultralcd.cpp:5637
+msgid "Steel sheets"
+msgstr "Lamina de acero"
+
+# 
+#: ultralcd.cpp:5132
+msgid "Z-correct:"
+msgstr "Corregir-Z:"
+
+# 
+#: ultralcd.cpp:7038
+msgid "Z-probe nr.    [1]"
+msgstr "Z-sensor nr.   [1]"
+
+# 
+#: ultralcd.cpp:7040
+msgid "Z-probe nr.    [3]"
+msgstr "Z-sensor nr.   [3]"
 
-# MSG_MEASURED_OFFSET
-#: ultralcd.cpp:2914
-msgid "[0;0] point offset"
-msgstr "[0;0] punto offset"

+ 936 - 1337
lang/po/new/fr.po

@@ -1,46 +1,19 @@
+# Translation of Prusa-Firmware into French.
+#
 msgid ""
 msgstr ""
-"Language: fr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: PhraseApp (phraseapp.com)\n"
-
-# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
-#: ultralcd.cpp:4219
-msgid "\e[2JCrash detection can\e[1;0Hbe turned on only in\e[2;0HNormal mode"
-msgstr "\e[2JLa detection de crash peut etre\e[1;0Hactive seulement\e[2;0Hen mode Normal"
-
-# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
-#: ultralcd.cpp:4231
-msgid "\e[2JWARNING:\e[1;0HCrash detection\e[2;0Hdisabled in\e[3;0HStealth mode"
-msgstr "\e[2JATTENTION :\e[1;0HDetection de crash\e[2;0H desactivee en\e[3;0Hmode Furtif"
-
-# MSG_PLANNER_BUFFER_BYTES
-#: Marlin_main.cpp:1184
-msgid "  PlannerBufferBytes: "
-msgstr "  PlannerBufferBytes : "
-
-# MSG_EXTRUDER_CORRECTION_OFF c=6
-#: ultralcd.cpp:6312
-msgid "  [off"
-msgstr "  [off"
-
-# MSG_ERR_COLD_EXTRUDE_STOP
-#: planner.cpp:761
-msgid " cold extrusion prevented"
-msgstr "extrusion a froid \nevitee"
-
-# MSG_FREE_MEMORY
-#: Marlin_main.cpp:1182
-msgid " Free Memory: "
-msgstr "Memoire libre :"
-
-# MSG_CONFIGURATION_VER
-#: Marlin_main.cpp:1172
-msgid " Last Updated: "
-msgstr "Derniere MAJ :"
+"Language: fr\n"
+"Project-Id-Version: Prusa-Firmware\n"
+"POT-Creation-Date: Sun, Sep 22, 2019 1:32:08 PM\n"
+"PO-Revision-Date: Sun, Sep 22, 2019 1:32:08 PM\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"
 
 # MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
 #: messages.c:39
@@ -48,84 +21,74 @@ msgid " of 4"
 msgstr "de 4"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:56
+#: messages.c:60
 msgid " of 9"
 msgstr "de 9"
 
-# MSG_FACTOR
-#: ultralcd.cpp:6008
-msgid " \002 Fact"
-msgstr " \002 Facteur"
+# MSG_MEASURED_OFFSET
+#: ultralcd.cpp:3089
+msgid "[0;0] point offset"
+msgstr "Offset point [0;0]"
 
-# MSG_MAX
-#: ultralcd.cpp:6007
-msgid " \002 Max"
-msgstr " \002 Max"
+# 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_MIN
-#: ultralcd.cpp:6006
-msgid " \002 Min"
-msgstr " \002 Min"
+# 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 feutre"
 
 # 
-#: ultralcd.cpp:2353
+#: ultralcd.cpp:2472
 msgid ">Cancel"
 msgstr ">Annuler"
 
-# MSG_BABYSTEPPING_Z c=20
-#: ultralcd.cpp:3043
-msgid "Adjusting Z"
-msgstr "Ajustement de Z"
-
-# MSG_ALL c=19 r=1
-#: messages.c:11
-msgid "All"
-msgstr "Tous"
+# MSG_BABYSTEPPING_Z c=15
+#: ultralcd.cpp:3209
+msgid "Adjusting Z:"
+msgstr "Ajuster Z:"
 
 # MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:7459
+#: ultralcd.cpp:8295
 msgid "All correct      "
 msgstr "Tout est correct"
 
 # MSG_WIZARD_DONE c=20 r=8
-#: messages.c:95
+#: messages.c:101
 msgid "All is done. Happy printing!"
-msgstr "Tout est pret. Bonne\nimpression !"
+msgstr "Tout est pret. Bonne impression!"
 
 # 
-#: ultralcd.cpp:2109
+#: ultralcd.cpp:2009
 msgid "Ambient"
 msgstr "Ambiant"
 
 # MSG_PRESS c=20
-#: ultralcd.cpp:2463
+#: ultralcd.cpp:2618
 msgid "and press the knob"
 msgstr "et pressez le bouton"
 
 # MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3330
+#: ultralcd.cpp:3529
 msgid "Are left and right Z~carriages all up?"
-msgstr "Z~carriages gauche +\ndroite tout en haut?"
-
-# MSG_ADJUSTZ
-#: ultralcd.cpp:2600
-msgid "Auto adjust Z?"
-msgstr "Ajustement Z auto ?"
+msgstr "Z~carriages gauche + droite tout en haut?"
 
 # MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:4706
-msgid "Auto deplete [on]"
-msgstr "Purge auto [on]"
+#: ultralcd.cpp:5200
+msgid "SpoolJoin    [on]"
+msgstr ""
 
 # 
-#: ultralcd.cpp:4702
-msgid "Auto deplete[N/A]"
-msgstr "Vidage auto[N/A]"
+#: ultralcd.cpp:5196
+msgid "SpoolJoin   [N/A]"
+msgstr ""
 
 # MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:4710
-msgid "Auto deplete[off]"
-msgstr "Purge auto [off]"
+#: ultralcd.cpp:5204
+msgid "SpoolJoin   [off]"
+msgstr ""
 
 # MSG_AUTO_HOME
 #: messages.c:11
@@ -133,47 +96,32 @@ msgid "Auto home"
 msgstr "Mise a 0 des axes"
 
 # MSG_AUTOLOAD_FILAMENT c=17
-#: ultralcd.cpp:6091
+#: ultralcd.cpp:6822
 msgid "AutoLoad filament"
-msgstr "AutoCharge du filament"
+msgstr "Autocharge du fil."
 
 # MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4246
+#: ultralcd.cpp:4462
 msgid "Autoloading filament available only when filament sensor is turned on..."
-msgstr "Chargement auto du\nfilament uniquement\nsi le capteur de\nfilament est active."
+msgstr "Chargement auto du filament uniquement si le capteur de filament est active."
 
 # MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2655
+#: ultralcd.cpp:2813
 msgid "Autoloading filament is active, just press the knob and insert filament..."
-msgstr "Chargement auto du\nfilament actif,\nappuyez sur le btn\net inserez le fil."
-
-# MSG_SELFTEST_AXIS
-#: ultralcd.cpp:7130
-msgid "Axis"
-msgstr "Axe"
+msgstr "Chargement auto. du fil. active, appuyez sur le bouton et inserez le fil."
 
 # MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:7128
+#: ultralcd.cpp:7949
 msgid "Axis length"
 msgstr "Longueur de l'axe"
 
-# MSG_BABYSTEPPING_X
-#: ultralcd.cpp:2481
-msgid "Babystepping X"
-msgstr "Babystepping X"
-
-# MSG_BABYSTEPPING_Y
-#: ultralcd.cpp:2484
-msgid "Babystepping Y"
-msgstr "Babystepping Y"
-
-# MSG_BED
-#: messages.c:15
-msgid "Bed"
-msgstr "Lit"
+# MSG_SELFTEST_AXIS
+#: ultralcd.cpp:7951
+msgid "Axis"
+msgstr "Axe"
 
 # MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:7072
+#: ultralcd.cpp:7893
 msgid "Bed / Heater"
 msgstr "Lit / Chauffage"
 
@@ -188,52 +136,37 @@ msgid "Bed Heating"
 msgstr "Chauffe du lit"
 
 # MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5197
+#: ultralcd.cpp:5768
 msgid "Bed level correct"
 msgstr "Corr. niveau plateau"
 
 # MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
 #: messages.c:18
 msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
-msgstr "Echec bed leveling.\nCapt. non declenche.\nDebris sur buse ? En\nattente d'un reset."
-
-# MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4
-#: Marlin_main.cpp:4508
-msgid "Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset."
-msgstr "Echec du nivellement\nCapteur deconnecte\nou cable casse. En\nattente d'un reset."
+msgstr "Echec bed leveling. Capt. non declenche. Debris sur buse? En attente d'un reset."
 
-# MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4
-#: Marlin_main.cpp:4512
-msgid "Bed leveling failed. Sensor triggered too high. Waiting for reset."
-msgstr "Echec bed leveling.\nCapt. declenche\ntrop trop haut. En\nattente d'un reset."
-
-# MSG_BEGIN_FILE_LIST
-#: Marlin_main.cpp:4405
-msgid "Begin file list"
-msgstr "Debut liste fichiers"
+# MSG_BED
+#: messages.c:15
+msgid "Bed"
+msgstr "Lit"
 
 # MSG_MENU_BELT_STATUS c=15 r=1
-#: ultralcd.cpp:2135
+#: ultralcd.cpp:2059
 msgid "Belt status"
 msgstr "Statut courroie"
 
 # MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:67
+#: messages.c:71
 msgid "Blackout occurred. Recover print?"
-msgstr "Coupure detectee.\nRecup. impression ?"
-
-# MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4427
-msgid "Calibrate"
-msgstr "Calibrer"
+msgstr "Coupure detectee. Reprendre impression?"
 
-# MSG_CALIBRATE_E c=20 r=1
-#: ultralcd.cpp:4526
-msgid "Calibrate E"
-msgstr "Calibrer E"
+# 
+#: ultralcd.cpp:8297
+msgid "Calibrating home"
+msgstr "Calib. mise a 0"
 
 # MSG_CALIBRATE_BED
-#: ultralcd.cpp:5186
+#: ultralcd.cpp:5757
 msgid "Calibrate XYZ"
 msgstr "Calibrer XYZ"
 
@@ -242,143 +175,48 @@ msgstr "Calibrer XYZ"
 msgid "Calibrate Z"
 msgstr "Calibrer Z"
 
-# 
-#: ultralcd.cpp:7461
-msgid "Calibrating home"
-msgstr "Calib. mise a 0"
+# MSG_CALIBRATE_PINDA c=17 r=1
+#: ultralcd.cpp:4654
+msgid "Calibrate"
+msgstr "Calibrer"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3290
+#: ultralcd.cpp:3492
 msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
-msgstr "Calibration de XYZ.\nTournez le bouton\npour monter le\nchariot de l'axe Z\njusqu'aux butees.\nCliquez une fois\nfait."
+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 de Z"
+msgstr "Calibration Z"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3290
+#: ultralcd.cpp:3492
 msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
-msgstr "Calibration de Z.\nTournez le bouton\npour monter le\nchariot de l'axe Z\njusqu'aux butees.\nCliquez une fois\nfait."
-
-# MSG_MENU_CALIBRATION
-#: messages.c:57
-msgid "Calibration"
-msgstr "Calibration"
+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:778
+#: ultralcd.cpp:816
 msgid "Calibration done"
 msgstr "Calibration terminee"
 
+# MSG_MENU_CALIBRATION
+#: messages.c:61
+msgid "Calibration"
+msgstr ""
+
 # 
-#: ultralcd.cpp:4552
+#: ultralcd.cpp:4781
 msgid "Cancel"
 msgstr "Annuler"
 
-# MSG_SD_CANT_ENTER_SUBDIR
-#: cardreader.cpp:662
-msgid "Cannot enter subdir: "
-msgstr "Impossible d'entrer\ndans le repertoire :"
-
-# MSG_SD_CANT_OPEN_SUBDIR
-#: cardreader.cpp:97
-msgid "Cannot open subdir"
-msgstr "Impossible d'ouvrir\nle repertoire"
-
-# MSG_SD_INSERTED
-#:
-msgid "Card inserted"
-msgstr "Carte  inseree"
-
 # MSG_SD_REMOVED
-#: ultralcd.cpp:7819
+#: ultralcd.cpp:8679
 msgid "Card removed"
 msgstr "Carte retiree"
 
-# 
-#: ultralcd.cpp:6087
-msgid "Change extruder"
-msgstr "Changer extrudeur"
-
-# MSG_FILAMENTCHANGE
-#: messages.c:37
-msgid "Change filament"
-msgstr "Changer filament"
-
-# MSG_CNG_SDCARD
-#: ultralcd.cpp:5777
-msgid "Change SD card"
-msgstr "Changer carte SD"
-
-# MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2474
-msgid "Change success!"
-msgstr "Changement reussi!"
-
-# MSG_CORRECTLY c=20
-#: ultralcd.cpp:2551
-msgid "Changed correctly?"
-msgstr "Change correctement?"
-
-# MSG_CHANGING_FILAMENT c=20
-#: ultralcd.cpp:1899
-msgid "Changing filament!"
-msgstr "Changement filament!"
-
-# MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:77
-msgid "Checking bed     "
-msgstr "Verification du lit"
-
-# MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:7450
-msgid "Checking endstops"
-msgstr "Verifications butees"
-
-# MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:7456
-msgid "Checking hotend  "
-msgstr "Verif. tete impr."
-
-# MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:78
-msgid "Checking sensors "
-msgstr "Verif. des capteurs"
-
-# MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:7451
-msgid "Checking X axis  "
-msgstr "Verification axe X"
-
-# MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:7452
-msgid "Checking Y axis  "
-msgstr "Verification axe Y"
-
-# MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:7453
-msgid "Checking Z axis  "
-msgstr "Verification axe Z"
-
-# MSG_ERR_CHECKSUM_MISMATCH
-#: cmdqueue.cpp:444
-msgid "checksum mismatch, Last Line: "
-msgstr "dissemblance du checksum, Derniere Ligne :"
-
-# MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:49
-msgid "Choose extruder:"
-msgstr "Choisir extrudeur :"
-
-# MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:50
-msgid "Choose filament:"
-msgstr "Choix du filament :"
-
 # MSG_NOT_COLOR
-#: ultralcd.cpp:2563
+#: ultralcd.cpp:2718
 msgid "Color not correct"
 msgstr "Couleur incorrecte"
 
@@ -388,34 +226,24 @@ msgid "Cooldown"
 msgstr "Refroidissement"
 
 # 
-#: ultralcd.cpp:4108
-msgid "Copy selected language from XFLASH?"
-msgstr "Copier la langue selectionne depuis la XFLASH ?"
-
-# 
-#: ultralcd.cpp:4360
+#: ultralcd.cpp:4587
 msgid "Copy selected language?"
-msgstr "Copier la langue\nselectionne ?"
-
-# 
-#: ultralcd.cpp:2013
-msgid "Crash"
-msgstr "Crash"
+msgstr "Copier la langue selectionne?"
 
 # MSG_CRASHDETECT_ON
 #: messages.c:27
 msgid "Crash det.   [on]"
-msgstr "Detect. crash[on]"
+msgstr "Detect.crash [on]"
 
 # MSG_CRASHDETECT_NA
 #: messages.c:25
 msgid "Crash det.  [N/A]"
-msgstr "Detect. crash [N/A]"
+msgstr "Detect.crash[N/A]"
 
 # MSG_CRASHDETECT_OFF
 #: messages.c:26
 msgid "Crash det.  [off]"
-msgstr "Detect. crash[off]"
+msgstr "Detect.crash[off]"
 
 # MSG_CRASH_DETECTED c=20 r=1
 #: messages.c:24
@@ -423,144 +251,99 @@ msgid "Crash detected."
 msgstr "Crash detecte."
 
 # 
-#: Marlin_main.cpp:608
+#: Marlin_main.cpp:600
 msgid "Crash detected. Resume print?"
-msgstr "Crash detecte. Poursuivre l'impression ?"
+msgstr "Crash detecte. Poursuivre l'impression?"
+
+# 
+#: ultralcd.cpp:1853
+msgid "Crash"
+msgstr ""
 
 # MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:5335
+#: ultralcd.cpp:5909
 msgid "Current"
 msgstr "Actuel"
 
 # MSG_DATE c=17 r=1
-#: ultralcd.cpp:2235
+#: ultralcd.cpp:2213
 msgid "Date:"
-msgstr "Date :"
+msgstr "Date:"
 
 # MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5093
+#: ultralcd.cpp:5654
 msgid "Disable steppers"
 msgstr "Desactiver moteurs"
 
 # MSG_BABYSTEP_Z_NOT_SET c=20 r=12
 #: messages.c:14
 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\npointe de la buse et\nla surface du\nplateau n'a pas\nencore ete reglee.\nSuivez le manuel,\nchapitre Premiers\npas, section\nCalibration de la\npremiere couche."
+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_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:4828
+#: ultralcd.cpp:5070
 msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
-msgstr "Voulez-vous repeter\nla derniere etape\npour reajuster la\ndistance entre la\nbuse et le plateau\nchauffant ?"
-
-# MSG_CLEAN_NOZZLE_E c=20 r=8
-#: ultralcd.cpp:3890
-msgid "E calibration finished. Please clean the nozzle. Click when done."
-msgstr "Calibration de E\nterminee. Nettoyez\nla buse. Cliquez une\nfois fait."
-
-# MSG_EXTRUDER_CORRECTION c=9
-#: ultralcd.cpp:4889
-msgid "E-correct"
-msgstr "Correct-E"
+msgstr "Voulez-vous repeter la derniere etape pour reajuster la distance entre la buse et le plateau chauffant?"
 
-# 
-#: ultralcd.cpp:4640
-msgid "Eject"
-msgstr "Ejecter"
+# MSG_EXTRUDER_CORRECTION c=10
+#: ultralcd.cpp:5134
+msgid "E-correct:"
+msgstr "Correct-E:"
 
 # MSG_EJECT_FILAMENT c=17 r=1
-#: ultralcd.cpp:6081
+#: messages.c:53
 msgid "Eject filament"
-msgstr "Ejecter le fil."
-
-# MSG_EJECT_FILAMENT1 c=17 r=1
-#: ultralcd.cpp:5603
-msgid "Eject filament 1"
-msgstr "Ejecter fil. 1"
-
-# MSG_EJECT_FILAMENT2 c=17 r=1
-#: ultralcd.cpp:5604
-msgid "Eject filament 2"
-msgstr "Ejecter fil. 2"
-
-# MSG_EJECT_FILAMENT3 c=17 r=1
-#: ultralcd.cpp:5605
-msgid "Eject filament 3"
-msgstr "Ejecter fil. 3"
-
-# MSG_EJECT_FILAMENT4 c=17 r=1
-#: ultralcd.cpp:5606
-msgid "Eject filament 4"
-msgstr "Ejecter fil. 4"
+msgstr "Remonter le fil."
 
-# MSG_EJECT_FILAMENT5 c=17 r=1
-#: ultralcd.cpp:5607
-msgid "Eject filament 5"
-msgstr "Ejecter fil. 5"
+# 
+#: ultralcd.cpp:4869
+msgid "Eject"
+msgstr "Remonter"
 
 # MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1339
+#: mmu.cpp:1434
 msgid "Ejecting filament"
-msgstr "Ejection filament"
+msgstr "Le fil. remonte"
 
-# MSG_END_FILE_LIST
-#: Marlin_main.cpp:4407
-msgid "End file list"
-msgstr "Fin liste fichiers"
+# MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
+#: ultralcd.cpp:7917
+msgid "Endstop not hit"
+msgstr "Butee non atteinte"
 
 # MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:7090
+#: ultralcd.cpp:7911
 msgid "Endstop"
 msgstr "Butee"
 
-# MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
-#: ultralcd.cpp:7096
-msgid "Endstop not hit"
-msgstr "Butee non atteinte"
-
 # MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:7078
+#: ultralcd.cpp:7899
 msgid "Endstops"
 msgstr "Butees"
 
-# MSG_ENDSTOPS_HIT
-#: messages.c:30
-msgid "endstops hit: "
-msgstr "butees atteintes :"
-
-# MSG_LANGUAGE_NAME
-#: language.c:153
-msgid "English"
-msgstr "Francais"
-
-# MSG_Enqueing
-#:
-msgid "enqueing \""
-msgstr "mise en file \""
-
 # MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6132
+#: ultralcd.cpp:6859
 msgid "Error - static memory has been overwritten"
-msgstr "Erreur - la memoire\nstatique a ete\necrasee"
+msgstr "Erreur - la memoire statique a ete ecrasee"
 
-# MSG_SD_ERR_WRITE_TO_FILE
-#: messages.c:78
-msgid "error writing to file"
-msgstr "erreur d'ecriture du fichier"
+# MSG_FSENS_NOT_RESPONDING c=20 r=4
+#: ultralcd.cpp:4475
+msgid "ERROR: Filament sensor is not responding, please check connection."
+msgstr "ERREUR: Le capteur de filament ne repond pas, verifiez le branchement."
 
 # MSG_ERROR
 #: messages.c:28
 msgid "ERROR:"
-msgstr "ERREUR :"
+msgstr "ERREUR:"
 
-# MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4259
-msgid "ERROR: Filament sensor is not responding, please check connection."
-msgstr "ERREUR : Le capteur\nde filament ne\nrepond pas, verifiez\nle branchement."
+# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
+#: ultralcd.cpp:8304
+msgid "Extruder fan:"
+msgstr "Ventilo extrudeur:"
 
-# 
-#: Marlin_main.cpp:1006
-msgid "External SPI flash W25X20CL not responding."
-msgstr "La Flash SPI externe W25X20CL ne repond pas."
+# MSG_INFO_EXTRUDER c=15 r=1
+#: ultralcd.cpp:2244
+msgid "Extruder info"
+msgstr "Infos extrudeur"
 
 # MSG_MOVE_E
 #: messages.c:29
@@ -568,94 +351,59 @@ msgid "Extruder"
 msgstr "Extrudeur"
 
 # 
-#: ultralcd.cpp:5633
-msgid "Extruder 1"
-msgstr "Extrudeur 1"
-
-# 
-#: ultralcd.cpp:5634
-msgid "Extruder 2"
-msgstr "Extrudeur 2"
-
-# 
-#: ultralcd.cpp:5635
-msgid "Extruder 3"
-msgstr "Extrudeur 3"
-
-# 
-#: ultralcd.cpp:5636
-msgid "Extruder 4"
-msgstr "Extrudeur 4"
-
-# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:7468
-msgid "Extruder fan:"
-msgstr "Ventilo extrudeur:"
-
-# MSG_INFO_EXTRUDER c=15 r=1
-#: ultralcd.cpp:2266
-msgid "Extruder info"
-msgstr "Infos extrudeur"
+#: ultralcd.cpp:6846
+msgid "Fail stats MMU"
+msgstr "Stat. d'echec MMU"
 
 # MSG_FSENS_AUTOLOAD_ON c=17 r=1
-#: ultralcd.cpp:4927
+#: ultralcd.cpp:5168
 msgid "F. autoload  [on]"
-msgstr "ChargAuto f. [on]"
+msgstr "Autochargeur [on]"
 
 # MSG_FSENS_AUTOLOAD_NA c=17 r=1
 #: messages.c:43
 msgid "F. autoload [N/A]"
-msgstr "AutoCharg F [N/A]"
+msgstr "Autochargeur[N/A]"
 
 # MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-#: ultralcd.cpp:4929
+#: ultralcd.cpp:5170
 msgid "F. autoload [off]"
-msgstr "AutoCharg F [off]"
+msgstr "Autochargeur[off]"
 
 # 
-#: ultralcd.cpp:6112
+#: ultralcd.cpp:6843
 msgid "Fail stats"
-msgstr "Statist. d'echec"
-
-# 
-#: ultralcd.cpp:6115
-msgid "Fail stats MMU"
-msgstr "Stat. echecs MMU"
+msgstr "Stat. d'echec"
 
 # MSG_FAN_SPEED c=14
 #: messages.c:31
 msgid "Fan speed"
-msgstr "Vitesse ventil"
+msgstr "Vitesse vent."
 
 # MSG_SELFTEST_FAN c=20
-#: messages.c:74
+#: messages.c:78
 msgid "Fan test"
-msgstr "Test ventilateur"
+msgstr "Test du ventilateur"
 
 # MSG_FANS_CHECK_ON c=17 r=1
-#: ultralcd.cpp:5100
+#: ultralcd.cpp:5663
 msgid "Fans check   [on]"
-msgstr "Verif ventilo[on]"
+msgstr "Verif vent.  [on]"
 
 # MSG_FANS_CHECK_OFF c=17 r=1
-#: ultralcd.cpp:5102
+#: ultralcd.cpp:5665
 msgid "Fans check  [off]"
-msgstr "Verif venti [off]"
+msgstr "Verif vent. [off]"
 
 # MSG_FSENSOR_ON
 #: messages.c:45
 msgid "Fil. sensor  [on]"
 msgstr "Capteur Fil. [on]"
 
-# MSG_RESPONSE_POOR c=20 r=2
-#: Marlin_main.cpp:3146
-msgid "Fil. sensor response is poor, disable it?"
-msgstr "Capteur de fil. non\nprecis, desactiver ?"
-
 # MSG_FSENSOR_NA
-#: ultralcd.cpp:4907
+#: ultralcd.cpp:5148
 msgid "Fil. sensor [N/A]"
-msgstr "Capteur Fil. [N/A]"
+msgstr "Capteur Fil.[N/A]"
 
 # MSG_FSENSOR_OFF
 #: messages.c:44
@@ -663,449 +411,369 @@ msgid "Fil. sensor [off]"
 msgstr "Capteur Fil.[off]"
 
 # 
-#: ultralcd.cpp:2013
+#: ultralcd.cpp:1852
 msgid "Filam. runouts"
 msgstr "Fins de filament"
 
-# MSG_FILAMENT c=17 r=1
-#: messages.c:30
-msgid "Filament"
-msgstr "Filament"
-
 # MSG_FILAMENT_CLEAN c=20 r=2
 #: messages.c:32
 msgid "Filament extruding & with correct color?"
-msgstr "Filament extrude et\navec bonne couleur ?"
+msgstr "Filament extrude et avec bonne couleur?"
 
 # MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2559
+#: ultralcd.cpp:2714
 msgid "Filament not loaded"
 msgstr "Filament non charge"
 
 # MSG_FILAMENT_SENSOR c=20
-#: ultralcd.cpp:7144
+#: messages.c:84
 msgid "Filament sensor"
 msgstr "Capteur de filament"
 
-# MSG_SELFTEST_FILAMENT_SENSOR c=18
-#: ultralcd.cpp:7477
-msgid "Filament sensor:"
-msgstr "Capteur filament :"
-
 # MSG_FILAMENT_USED c=19 r=1
-#: ultralcd.cpp:2725
+#: ultralcd.cpp:2885
 msgid "Filament used"
 msgstr "Filament utilise"
 
-# MSG_STATS_FILAMENTUSED c=20
-#: ultralcd.cpp:2142
-msgid "Filament used:  "
-msgstr "Filament utilise :"
+# MSG_PRINT_TIME c=19 r=1
+#: ultralcd.cpp:2886
+msgid "Print time"
+msgstr "Temps d'impression"
 
 # MSG_FILE_INCOMPLETE c=20 r=2
-#: ultralcd.cpp:7595
+#: ultralcd.cpp:8432
 msgid "File incomplete. Continue anyway?"
-msgstr "Fichier incomplet.\nContinuer qd meme ?"
-
-# MSG_SD_FILE_OPENED
-#: cardreader.cpp:395
-msgid "File opened: "
-msgstr "Fichier ouvert :"
-
-# MSG_SD_FILE_SELECTED
-#: cardreader.cpp:401
-msgid "File selected"
-msgstr "Fichier selectionne"
+msgstr "Fichier incomplet. Continuer qd meme?"
 
 # MSG_FINISHING_MOVEMENTS c=20 r=1
 #: messages.c:40
 msgid "Finishing movements"
-msgstr "Mouvements de fin"
+msgstr "Mouvement final"
 
 # MSG_V2_CALIBRATION c=17 r=1
-#: ultralcd.cpp:5177
+#: messages.c:105
 msgid "First layer cal."
 msgstr "Cal. 1ere couche"
 
 # MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:4740
+#: ultralcd.cpp:4982
 msgid "First, I will run the selftest to check most common assembly problems."
-msgstr "D'abord, je vais\nlancer le Selftest\npour verifier les\nproblemes\nd'assemblage les\nplus communs."
+msgstr "D'abord, je vais lancer le Auto-test pour verifier les problemes d'assemblage les plus communs."
 
 # 
-#: mmu.cpp:640
+#: mmu.cpp:724
 msgid "Fix the issue and then press button on MMU unit."
-msgstr "Corrigez le probleme et appuyez sur le bouton de l'unite MMU."
+msgstr "Corrigez le probleme et appuyez sur le bouton sur la MMU."
 
 # MSG_FLOW
-#: ultralcd.cpp:6205
+#: ultralcd.cpp:6932
 msgid "Flow"
 msgstr "Flux"
 
 # MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2228
+#: ultralcd.cpp:2206
 msgid "forum.prusa3d.com"
-msgstr "forum.prusa3d.com"
+msgstr ""
 
 # MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:71
+#: messages.c:75
 msgid "Front print fan?"
-msgstr "Ventilo impr avant ?"
+msgstr "Ventilo impr avant?"
 
 # MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3101
+#: ultralcd.cpp:3294
 msgid "Front side[um]"
 msgstr "Avant [um]"
 
 # MSG_SELFTEST_FANS
-#: ultralcd.cpp:7136
+#: ultralcd.cpp:7957
 msgid "Front/left fans"
 msgstr "Ventilos avt/gauche"
 
 # MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:7066
+#: ultralcd.cpp:7887
 msgid "Heater/Thermistor"
 msgstr "Chauffage/Thermistor"
 
-# MSG_HEATING
-#: messages.c:46
-msgid "Heating"
-msgstr "Chauffe"
-
 # MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:7475
+#: Marlin_main.cpp:8467
 msgid "Heating disabled by safety timer."
-msgstr "Chauffe desactivee\npar le compteur de\nsecurite."
+msgstr "Chauffage desactivee par le compteur de securite."
 
 # MSG_HEATING_COMPLETE c=20
 #: messages.c:47
 msgid "Heating done."
 msgstr "Chauffe terminee."
 
+# MSG_HEATING
+#: messages.c:46
+msgid "Heating"
+msgstr "Chauffe"
+
 # MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:4719
+#: ultralcd.cpp:4961
 msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
-msgstr "Bonjour, je suis\nvotre imprimante\nOriginal Prusa i3.\nVoulez-vous que je\nvous guide a travers\nle processus\nd'installation ?"
+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:2229
+#: ultralcd.cpp:2207
 msgid "howto.prusa3d.com"
-msgstr "howto.prusa3d.com"
-
-# MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:4749
-msgid "I will run xyz calibration now. It will take approx. 12 mins."
-msgstr "Je vais maintenant\nlancer la\ncalibration xyz.\nCela prendra 12 min\nenviron."
-
-# MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:4757
-msgid "I will run z calibration now."
-msgstr "Je vais maintenant\nlancer la\ncalibration z."
+msgstr ""
 
-# MSG_WIZARD_V2_CAL_2 c=20 r=12
-#: ultralcd.cpp:4822
-msgid "I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."
-msgstr "Je vais commencer a \nimprimer une ligne\net vous baisserez au\nfur et a mesure la\nbuse en tournant le\nbouton jusqu'a\natteindre la hauteur\noptimale. Regardez\nles photos dans\nnotre manuel au\nchapitre Calibration"
+# MSG_FILAMENTCHANGE
+#: messages.c:37
+msgid "Change filament"
+msgstr "Changer filament"
 
-# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: mesh_bed_calibration.cpp:2481
-msgid "Improving bed calibration point"
-msgstr "Amelioration du point de calibration du lit"
+# MSG_CHANGE_SUCCESS
+#: ultralcd.cpp:2629
+msgid "Change success!"
+msgstr "Changement reussi!"
 
-# MSG_WATCH
-#: messages.c:93
-msgid "Info screen"
-msgstr "Ecran d'info"
+# MSG_CORRECTLY c=20
+#: ultralcd.cpp:2706
+msgid "Changed correctly?"
+msgstr "Change correctement?"
 
-# MSG_INIT_SDCARD
-#: ultralcd.cpp:5785
-msgid "Init. SD card"
-msgstr "Init. carte SD"
+# MSG_SELFTEST_CHECK_BED c=20
+#: messages.c:81
+msgid "Checking bed     "
+msgstr "Verification du lit"
 
-# MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2459
-msgid "Insert filament"
-msgstr "Inserez le filament"
+# MSG_SELFTEST_CHECK_ENDSTOPS c=20
+#: ultralcd.cpp:8286
+msgid "Checking endstops"
+msgstr "Verification butees"
 
-# MSG_FILAMENT_LOADING_T0 c=20 r=4
-#: messages.c:33
-msgid "Insert filament into extruder 1. Click when done."
-msgstr "Inserez le filament\ndans l'extrudeur 1.\nCliquez une fois\npret."
+# MSG_SELFTEST_CHECK_HOTEND c=20
+#: ultralcd.cpp:8292
+msgid "Checking hotend  "
+msgstr "Verif. du hotend"
 
-# MSG_FILAMENT_LOADING_T1 c=20 r=4
-#: messages.c:34
-msgid "Insert filament into extruder 2. Click when done."
-msgstr "Inserez le filament\ndans l'extrudeur 2.\nCliquez une fois\npret."
+# MSG_SELFTEST_CHECK_FSENSOR c=20
+#: messages.c:82
+msgid "Checking sensors "
+msgstr "Verif. des capteurs"
 
-# MSG_FILAMENT_LOADING_T2 c=20 r=4
-#: messages.c:35
-msgid "Insert filament into extruder 3. Click when done."
-msgstr "Inserez le filament\ndans l'extrudeur 3.\nCliquez une fois\npret."
+# MSG_SELFTEST_CHECK_X c=20
+#: ultralcd.cpp:8287
+msgid "Checking X axis  "
+msgstr "Verification axe X"
 
-# MSG_FILAMENT_LOADING_T3 c=20 r=4
-#: messages.c:36
-msgid "Insert filament into extruder 4. Click when done."
-msgstr "Inserez le filament\ndans l'extrudeur 4.\nCliquez une fois\npret."
+# MSG_SELFTEST_CHECK_Y c=20
+#: ultralcd.cpp:8288
+msgid "Checking Y axis  "
+msgstr "Verification axe Y"
+
+# MSG_SELFTEST_CHECK_Z c=20
+#: ultralcd.cpp:8289
+msgid "Checking Z axis  "
+msgstr "Verification axe Z"
+
+# MSG_CHOOSE_EXTRUDER c=20 r=1
+#: messages.c:49
+msgid "Choose extruder:"
+msgstr "Choisir extrudeur:"
+
+# MSG_CHOOSE_FILAMENT c=20 r=1
+#: messages.c:50
+msgid "Choose filament:"
+msgstr "Choix du filament:"
+
+# MSG_FILAMENT c=17 r=1
+#: messages.c:30
+msgid "Filament"
+msgstr ""
+
+# MSG_WIZARD_XYZ_CAL c=20 r=8
+#: ultralcd.cpp:4991
+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:4999
+msgid "I will run z calibration now."
+msgstr "Je vais maintenant lancer la calibration Z."
+
+# MSG_WIZARD_V2_CAL_2 c=20 r=12
+#: ultralcd.cpp:5064
+msgid "I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."
+msgstr "Je vais commencer a imprimer une ligne et vous baisserez au fur et a mesure la buse en tournant le bouton jusqu'a atteindre la hauteur optimale. Regardez les photos dans notre manuel au chapitre Calibration"
+
+# MSG_WATCH
+#: messages.c:99
+msgid "Info screen"
+msgstr "Ecran d'info"
 
 # 
-#: ultralcd.cpp:4782
+#: ultralcd.cpp:5024
 msgid "Is filament 1 loaded?"
-msgstr "Le filament 1 est-il charge ?"
+msgstr "Fil.1 est-il charge?"
+
+# MSG_INSERT_FILAMENT c=20
+#: ultralcd.cpp:2614
+msgid "Insert filament"
+msgstr "Inserez le filament"
 
 # MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4785
+#: ultralcd.cpp:5027
 msgid "Is filament loaded?"
-msgstr "Le filament est-il\ncharge ?"
+msgstr "Fil. est-il charge?"
 
 # MSG_WIZARD_PLA_FILAMENT c=20 r=2
-#: ultralcd.cpp:4816
+#: ultralcd.cpp:5058
 msgid "Is it PLA filament?"
-msgstr "Est-ce du filament\nPLA ?"
+msgstr "Est-ce du filament PLA?"
 
 # MSG_PLA_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4561
+#: ultralcd.cpp:4790
 msgid "Is PLA filament loaded?"
-msgstr "Le filament PLA\nest-il charge ?"
+msgstr "Fil. PLA est-il charge?"
 
 # MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:86
+#: messages.c:92
 msgid "Is steel sheet on heatbed?"
-msgstr "Feuille d'acier sur\nplateau chauffant ?"
-
-# MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20
-#: mesh_bed_calibration.cpp:2223
-msgid "Iteration "
-msgstr "Iteration "
-
-# MSG_KILLED
-#: Marlin_main.cpp:7552
-msgid "KILLED. "
-msgstr "TUE."
-
-# 
-#: ultralcd.cpp:1960
-msgid "Last print"
-msgstr "Derniere impression"
+msgstr "Plaque d'impression sur le lit chauffant?"
 
 # 
-#: ultralcd.cpp:1976
+#: ultralcd.cpp:1795
 msgid "Last print failures"
-msgstr "Echecs derniere impr"
+msgstr "Echecs derniere imp."
 
 # 
-#: ultralcd.cpp:2861
-msgid "Left"
-msgstr "Gauche"
+#: ultralcd.cpp:1772
+msgid "Last print"
+msgstr "Derniere impres."
 
 # MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:72
+#: messages.c:76
 msgid "Left hotend fan?"
 msgstr "Ventilo tete gauche?"
 
+# 
+#: ultralcd.cpp:3018
+msgid "Left"
+msgstr "Gauche"
+
 # MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3099
+#: ultralcd.cpp:3292
 msgid "Left side [um]"
 msgstr "Gauche [um]"
 
-# MSG_LEFT c=12 r=1
-#: ultralcd.cpp:2308
-msgid "Left:"
-msgstr "Gauche :"
-
 # 
-#: ultralcd.cpp:5107
+#: ultralcd.cpp:5680
 msgid "Lin. correction"
 msgstr "Correction lin."
 
 # MSG_BABYSTEP_Z
 #: messages.c:13
 msgid "Live adjust Z"
-msgstr "Ajuster Z en direct"
-
-# MSG_LOAD_ALL c=17
-#: ultralcd.cpp:5575
-msgid "Load all"
-msgstr "Tout charger"
+msgstr "Ajuster Z en dir."
 
 # MSG_LOAD_FILAMENT c=17
 #: messages.c:51
 msgid "Load filament"
 msgstr "Charger filament"
 
-# MSG_LOAD_FILAMENT_1 c=17
-#: ultralcd.cpp:5576
-msgid "Load filament 1"
-msgstr "Charger fil. 1"
-
-# MSG_LOAD_FILAMENT_2 c=17
-#: ultralcd.cpp:5577
-msgid "Load filament 2"
-msgstr "Charger fil. 2"
-
-# MSG_LOAD_FILAMENT_3 c=17
-#: ultralcd.cpp:5578
-msgid "Load filament 3"
-msgstr "Charger fil. 3"
-
-# MSG_LOAD_FILAMENT_4 c=17
-#: ultralcd.cpp:5579
-msgid "Load filament 4"
-msgstr "Charger fil. 4"
-
-# MSG_LOAD_FILAMENT_5 c=17
-#: ultralcd.cpp:5582
-msgid "Load filament 5"
-msgstr "Charger fil. 5"
-
-# 
-#: ultralcd.cpp:6079
-msgid "Load to nozzle"
-msgstr "Charger dans la buse"
-
 # MSG_LOADING_COLOR
-#: ultralcd.cpp:2499
+#: ultralcd.cpp:2654
 msgid "Loading color"
-msgstr "Chargement couleur"
+msgstr "Charg. de la couleur"
 
 # MSG_LOADING_FILAMENT c=20
 #: messages.c:52
 msgid "Loading filament"
-msgstr "Chargement filament"
+msgstr "Chargement du fil."
 
 # MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:7120
+#: ultralcd.cpp:7941
 msgid "Loose pulley"
 msgstr "Poulie lache"
 
-# MSG_M104_INVALID_EXTRUDER
-#: Marlin_main.cpp:7675
-msgid "M104 Invalid extruder "
-msgstr "M104 extrudeur invalide"
-
-# MSG_M105_INVALID_EXTRUDER
-#: Marlin_main.cpp:7678
-msgid "M105 Invalid extruder "
-msgstr "M105 extrudeur invalide"
-
-# MSG_M109_INVALID_EXTRUDER
-#: Marlin_main.cpp:7681
-msgid "M109 Invalid extruder "
-msgstr "M109 extrudeur invalide"
+# 
+#: ultralcd.cpp:6805
+msgid "Load to nozzle"
+msgstr "Charger la buse"
 
 # MSG_M117_V2_CALIBRATION c=25 r=1
-#: messages.c:53
+#: messages.c:55
 msgid "M117 First layer cal."
 msgstr "M117 Cal. 1ere couche"
 
-# MSG_M200_INVALID_EXTRUDER
-#: Marlin_main.cpp:5857
-msgid "M200 Invalid extruder "
-msgstr "M200 extrudeur invalide"
-
-# MSG_M218_INVALID_EXTRUDER
-#: Marlin_main.cpp:7684
-msgid "M218 Invalid extruder "
-msgstr "M218 extrudeur invalide"
-
-# MSG_M221_INVALID_EXTRUDER
-#: Marlin_main.cpp:7687
-msgid "M221 Invalid extruder "
-msgstr "M221 extrudeur invalide"
-
 # MSG_MAIN
-#: messages.c:54
+#: messages.c:56
 msgid "Main"
-msgstr "Principal"
-
-# MSG_MARK_FIL c=20 r=8
-#: ultralcd.cpp:3840
-msgid "Mark filament 100mm from extruder body. Click when done."
-msgstr "Marquez le filament\na 100 mm du corps de\nl'extrudeur. Cliquez\nune fois fait."
-
-# 
-#: ultralcd.cpp:2896
-msgid "Measured skew"
-msgstr "Deviation mesuree"
-
-# MSG_MEASURED_SKEW c=15 r=1
-#: ultralcd.cpp:2335
-msgid "Measured skew:"
-msgstr "Ecart mesure :"
+msgstr "Menu principal"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:55
+#: messages.c:59
 msgid "Measuring reference height of calibration point"
 msgstr "Mesure de la hauteur de reference du point de calibration"
 
 # MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5192
+#: ultralcd.cpp:5763
 msgid "Mesh Bed Leveling"
-msgstr "Mesh Bed Leveling"
+msgstr ""
+
+# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
+#: mmu.cpp:762
+msgid "MMU OK. Resuming position..."
+msgstr "MMU OK. Reprise de la position ..."
+
+# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
+#: mmu.cpp:755
+msgid "MMU OK. Resuming temperature..."
+msgstr "MMU OK. Rechauffage de la buse..."
+
+# 
+#: ultralcd.cpp:3059
+msgid "Measured skew"
+msgstr "Deviat.mesuree"
 
 # 
-#: ultralcd.cpp:1977
+#: ultralcd.cpp:1796
 msgid "MMU fails"
-msgstr "Echec MMU"
+msgstr "Echecs MMU"
 
 # 
-#: mmu.cpp:1399
+#: mmu.cpp:1613
 msgid "MMU load failed     "
 msgstr "Echec chargement MMU"
 
 # 
-#: ultralcd.cpp:1977
+#: ultralcd.cpp:1797
 msgid "MMU load fails"
 msgstr "Echecs charg. MMU"
 
-# 
-#: mmu.cpp:635
-msgid "MMU needs user attention."
-msgstr "Le MMU necessite l'attention de l'utilisateur."
-
-# MSG_MMU_NEEDS_ATTENTION c=20 r=4
-#: mmu.cpp:359
-msgid "MMU needs user attention. Fix the issue and then press button on MMU unit."
-msgstr "La MMU requiert votre attention. Réglez le problème puis appuyez sur le bouton on sur l'unité MMU."
-
-# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:676
-msgid "MMU OK. Resuming position..."
-msgstr "MMU OK. Reprise de la position ..."
-
-# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:669
-msgid "MMU OK. Resuming temperature..."
-msgstr "MMU OK. Remontee en\ntemperature..."
-
 # MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:687
+#: mmu.cpp:773
 msgid "MMU OK. Resuming..."
 msgstr "MMU OK. Reprise ..."
 
-# 
-#: ultralcd.cpp:1994
-msgid "MMU power fails"
-msgstr "Echecs alim. MMU"
-
-# 
-#: ultralcd.cpp:2241
-msgid "MMU2 connected"
-msgstr "MMU2 connecte"
-
 # MSG_STEALTH_MODE_OFF
-#: messages.c:84
+#: messages.c:90
 msgid "Mode     [Normal]"
-msgstr "Mode     [Normal]"
+msgstr ""
 
 # MSG_SILENT_MODE_ON
-#: messages.c:83
+#: messages.c:89
 msgid "Mode     [silent]"
-msgstr "Mode [silencieux]"
+msgstr "Mode     [feutre]"
+
+# 
+#: mmu.cpp:719
+msgid "MMU needs user attention."
+msgstr "Le MMU necessite l'attention de l'utilisateur."
+
+# 
+#: ultralcd.cpp:1823
+msgid "MMU power fails"
+msgstr "Echecs alim. MMU"
 
 # MSG_STEALTH_MODE_ON
-#: messages.c:85
+#: messages.c:91
 msgid "Mode    [Stealth]"
-msgstr "Mode [Furtif]"
+msgstr "Mode     [furtif]"
 
 # MSG_AUTO_MODE_ON
 #: messages.c:12
@@ -1113,539 +781,379 @@ msgid "Mode [auto power]"
 msgstr "Mode [puiss.auto]"
 
 # MSG_SILENT_MODE_OFF
-#: messages.c:82
+#: messages.c:88
 msgid "Mode [high power]"
-msgstr "Mode [haute puiss]"
+msgstr "Mode[haute puiss]"
+
+# 
+#: ultralcd.cpp:2219
+msgid "MMU2 connected"
+msgstr "MMU2 connecte"
 
 # MSG_SELFTEST_MOTOR
-#: messages.c:79
+#: messages.c:83
 msgid "Motor"
 msgstr "Moteur"
 
 # MSG_MOVE_AXIS
-#: ultralcd.cpp:5091
+#: ultralcd.cpp:5652
 msgid "Move axis"
 msgstr "Deplacer l'axe"
 
 # MSG_MOVE_X
-#: ultralcd.cpp:4164
+#: ultralcd.cpp:4378
 msgid "Move X"
 msgstr "Deplacer X"
 
 # MSG_MOVE_Y
-#: ultralcd.cpp:4165
+#: ultralcd.cpp:4379
 msgid "Move Y"
 msgstr "Deplacer Y"
 
 # MSG_MOVE_Z
-#: ultralcd.cpp:4166
+#: ultralcd.cpp:4380
 msgid "Move Z"
 msgstr "Deplacer Z"
 
-# 
-#: ultralcd.cpp:2867
-msgid "N/A"
-msgstr "N/A"
-
-# 
-#: util.cpp:293
-msgid "New firmware version available:"
-msgstr "Nouvelle version de\nfirmware disponible:"
-
-# MSG_NO
-#: messages.c:58
-msgid "No"
-msgstr "Non"
-
-# 
-#:
-msgid "No "
-msgstr "Non"
-
-# MSG_ERR_NO_CHECKSUM
-#: cmdqueue.cpp:456
-msgid "No Checksum with line number, Last Line: "
-msgstr "Pas de checksum avec\nnumero de ligne, \nDerniere ligne :"
-
 # MSG_NO_MOVE
-#: Marlin_main.cpp:4908
+#: Marlin_main.cpp:5292
 msgid "No move."
 msgstr "Pas de mouvement."
 
 # MSG_NO_CARD
-#: ultralcd.cpp:6059
+#: ultralcd.cpp:6772
 msgid "No SD card"
 msgstr "Pas de carte SD"
 
-# MSG_ERR_NO_THERMISTORS
-#: Marlin_main.cpp:4946
-msgid "No thermistors - no temperature"
-msgstr "Pas de thermistors\n- pas de temperature"
+# 
+#: ultralcd.cpp:3024
+msgid "N/A"
+msgstr ""
+
+# MSG_NO
+#: messages.c:62
+msgid "No"
+msgstr "Non"
 
 # MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:7068
+#: ultralcd.cpp:7889
 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
+#: messages.c:79
 msgid "Not spinning"
 msgstr "Ne tourne pas"
 
 # MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4821
+#: ultralcd.cpp:5063
 msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
-msgstr "Maintenant je vais\ncalibrer la distance \nentre la pointe de\nla buse et la\nsurface du plateau\nchauffant."
+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:4765
+#: ultralcd.cpp:5007
 msgid "Now I will preheat nozzle for PLA."
-msgstr "Maintenant je vais\nprechauffer la buse\npour du PLA."
-
-# 
-#: ultralcd.cpp:4756
-msgid "Now remove the test print from steel sheet."
-msgstr "Retirez maintenant l'impression de test de la feuille d'acier."
+msgstr "Maintenant je vais prechauffer la buse pour du PLA."
 
 # MSG_NOZZLE
-#: messages.c:59
+#: messages.c:63
 msgid "Nozzle"
 msgstr "Buse"
 
-# 
-#: ultralcd.cpp:1919
-msgid "Nozzle FAN"
-msgstr "Ventilateur buse"
-
-# MSG_INFO_NOZZLE_FAN c=11 r=1
-#: ultralcd.cpp:1537
-msgid "Nozzle FAN:"
-msgstr "Vent. buse:"
-
-# MSG_NOZZLE1
-#: ultralcd.cpp:5995
-msgid "Nozzle2"
-msgstr "Buse2"
-
-# MSG_NOZZLE2
-#: ultralcd.cpp:5998
-msgid "Nozzle3"
-msgstr "Buse3"
-
-# MSG_OK
-#: Marlin_main.cpp:6333
-msgid "ok"
-msgstr "ok"
-
 # MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
-#: Marlin_main.cpp:1516
+#: Marlin_main.cpp:1519
 msgid "Old settings found. Default PID, Esteps etc. will be set."
-msgstr "Anciens reglages\ntrouves. Le PID, les\nEsteps etc. par\ndefaut seront regles"
-
-# MSG_ENDSTOP_OPEN
-#: messages.c:29
-msgid "open"
-msgstr "ouvrir"
+msgstr "Anciens reglages trouves. Le PID, les Esteps etc. par defaut seront regles"
 
-# MSG_SD_OPEN_FILE_FAIL
-#: messages.c:79
-msgid "open failed, File: "
-msgstr "Echec ouverture, Fichier :"
+# 
+#: ultralcd.cpp:4998
+msgid "Now remove the test print from steel sheet."
+msgstr "Retirez maintenant l'impression de test de la plaque en acier."
 
-# MSG_SD_OPENROOT_FAIL
-#: cardreader.cpp:196
-msgid "openRoot failed"
-msgstr "Echec openRoot"
+# 
+#: ultralcd.cpp:1722
+msgid "Nozzle FAN"
+msgstr "Vent. buse"
 
 # MSG_PAUSE_PRINT
-#: ultralcd.cpp:6029
+#: ultralcd.cpp:6735
 msgid "Pause print"
 msgstr "Pause de l'impr."
 
-# MSG_PICK_Z
-#: ultralcd.cpp:3463
-msgid "Pick print"
-msgstr "Choisir impression"
-
 # MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1741
+#: ultralcd.cpp:1606
 msgid "PID cal.           "
 msgstr "Calib. PID"
 
 # MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1747
+#: ultralcd.cpp:1612
 msgid "PID cal. finished"
 msgstr "Calib. PID terminee"
 
 # MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5198
+#: ultralcd.cpp:5769
 msgid "PID calibration"
 msgstr "Calibration PID"
 
 # MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:808
+#: ultralcd.cpp:846
 msgid "PINDA Heating"
 msgstr "Chauffe de la PINDA"
 
 # MSG_PAPER c=20 r=8
-#: messages.c:60
+#: messages.c:64
 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\nde papier sous la\nbuse pendant la\ncalibration des 4\npremiers points.\nSi la buse accroche\nle papier, eteignez\nvite l'imprimante."
-
-# MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:7060
-msgid "Please check :"
-msgstr "Verifiez :"
-
-# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:94
-msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
-msgstr "Merci de verifier\nnotre manuel et de\ncorriger le\nprobleme. Poursuivez\nalors l'assistant en\nredemarrant\nl'imprimante."
+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:4830
+#: ultralcd.cpp:5072
 msgid "Please clean heatbed and then press the knob."
-msgstr "Nettoyez le plateau\nchauffant et appuyez\nsur le bouton."
+msgstr "Nettoyez la plaque en acier et appuyez sur le bouton."
 
 # MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
 #: messages.c:22
 msgid "Please clean the nozzle for calibration. Click when done."
-msgstr "Nettoyez la buse\npour la calibration.\nCliquez une fois\nfait."
+msgstr "Nettoyez la buse pour la calibration. Cliquez une fois fait."
 
-# MSG_WIZARD_LOAD_FILAMENT c=20 r=8
-#: ultralcd.cpp:4664
-msgid "Please insert PLA filament to the extruder, then press knob to load it."
-msgstr "Inserez du filament\nPLA dans l'extrudeur\npuis appuyez sur le\nbouton pour le\ncharger."
+# MSG_SELFTEST_PLEASECHECK
+#: ultralcd.cpp:7881
+msgid "Please check :"
+msgstr "Verifiez:"
 
-# 
-#: ultralcd.cpp:4660
-msgid "Please insert PLA filament to the first tube of MMU, then press the knob to load it."
-msgstr "Veuillez inserer du filament PLA dans le premier tube du MMU, et pressez sur le bouton pour le charger."
+# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
+#: messages.c:100
+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_WIZARD_INSERT_CORRECT_FILAMENT c=20 r=8
-#: ultralcd.cpp:4109
-msgid "Please load PLA filament and then resume Wizard by rebooting the printer."
-msgstr "Chargez le filament\nPLA et poursuivez\nl'assistant en\nredemarrant\nl'imprimante."
+# MSG_WIZARD_LOAD_FILAMENT c=20 r=8
+#: ultralcd.cpp:4894
+msgid "Please insert PLA filament to the extruder, then press knob to load it."
+msgstr "Inserez du filament PLA dans l'extrudeur puis appuyez sur le bouton pour le charger."
 
 # MSG_PLEASE_LOAD_PLA c=20 r=4
-#: ultralcd.cpp:4566
+#: ultralcd.cpp:4795
 msgid "Please load PLA filament first."
-msgstr "Chargez d'abord le\nfilament PLA."
+msgstr "Chargez d'abord le filament PLA."
 
 # MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3025
+#: Marlin_main.cpp:3064
 msgid "Please open idler and remove filament manually."
-msgstr "Ouvrez l'idler et\nretirez le filament\nmanuellement."
+msgstr "Ouvrez l'idler et retirez le filament manuellement."
 
 # MSG_PLACE_STEEL_SHEET c=20 r=4
-#: messages.c:61
+#: messages.c:65
 msgid "Please place steel sheet on heatbed."
-msgstr "Placez la feuille\nd'acier sur le\nplateau chauffant."
+msgstr "Placez la plaque en acier sur le plateau chauffant."
 
 # MSG_PRESS_TO_UNLOAD c=20 r=4
-#: messages.c:64
+#: messages.c:68
 msgid "Please press the knob to unload filament"
-msgstr "Appuyez sur le\nbouton pour \ndecharger le \nfilament"
+msgstr "Appuyez sur le bouton pour decharger le filament"
+
+# 
+#: ultralcd.cpp:4889
+msgid "Please insert PLA filament to the first tube of MMU, then press the knob to load it."
+msgstr "Inserez du PLA dans le 1er tube du MMU, appuyez sur le bouton pour le charger."
 
 # MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:66
+#: messages.c:70
 msgid "Please pull out filament immediately"
-msgstr "Retirez\nimmediatement le\nfilament"
+msgstr "Retirez immediatement le filament"
 
 # MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1347
+#: mmu.cpp:1440
 msgid "Please remove filament and then press the knob."
 msgstr "Veuillez retirer le filament puis appuyez sur le bouton."
 
-# 
-#: ultralcd.cpp:4755
-msgid "Please remove shipping helpers first."
-msgstr "Veuillez retirer d'abord les protections d'envoi."
-
 # MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:70
+#: messages.c:74
 msgid "Please remove steel sheet from heatbed."
-msgstr "Retirez la feuille\nd'acier du plateau\nchauffant."
+msgstr "Retirez la plaque en acier du plateau chauffant."
 
 # MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4052
+#: Marlin_main.cpp:4355
 msgid "Please run XYZ calibration first."
 msgstr "Veuillez d'abord lancer la calibration XYZ."
 
 # MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1293
+#: mmu.cpp:1359
 msgid "Please update firmware in your MMU2. Waiting for reset."
-msgstr "Veuillez mettre a\njour le firmware de\nvotre MMU2. En\nattente d'un reset."
-
-# 
-#: util.cpp:297
-msgid "Please upgrade."
-msgstr "Mettez a jour le FW."
+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:66
 msgid "Please wait"
 msgstr "Merci de patienter"
 
 # 
-#: ultralcd.cpp:2013
-msgid "Power failures"
-msgstr "Coupures de courant"
+#: ultralcd.cpp:4997
+msgid "Please remove shipping helpers first."
+msgstr "Retirez d'abord les protections de transport."
 
-# MSG_POWERUP
-#: messages.c:69
-msgid "PowerUp"
-msgstr "Demarrage"
+# MSG_PREHEAT_NOZZLE c=20
+#: messages.c:67
+msgid "Preheat the nozzle!"
+msgstr "Prechauffez la buse!"
 
 # MSG_PREHEAT
-#: ultralcd.cpp:6018
+#: ultralcd.cpp:6722
 msgid "Preheat"
 msgstr "Prechauffage"
 
-# MSG_PREHEAT_NOZZLE c=20
-#: messages.c:63
-msgid "Preheat the nozzle!"
-msgstr "Prechauffez la buse!"
-
 # MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:96
+#: messages.c:102
 msgid "Preheating nozzle. Please wait."
-msgstr "Prechauffage de la\nbuse. Merci de\npatienter."
-
-# 
-#: ultralcd.cpp:2350
-msgid "Preheating to load"
-msgstr "Chauffe pour charger"
+msgstr "Prechauffage de la buse. Merci de patienter."
 
 # 
-#: ultralcd.cpp:2351
-msgid "Preheating to unload"
-msgstr "Chauffe pr decharger"
-
-# MSG_PREPARE_FILAMENT c=20 r=1
-#: ultralcd.cpp:1911
-msgid "Prepare new filament"
-msgstr "Preparez le filament"
+#: util.cpp:297
+msgid "Please upgrade."
+msgstr "Mettez a jour le FW."
 
 # MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:9150
+#: Marlin_main.cpp:10364
 msgid "Press knob to preheat nozzle and continue."
-msgstr "Appuyez sur le\nbouton pour\nprechauffer la buse\net continuer."
-
-# 
-#: ultralcd.cpp:2313
-msgid "Press the knob"
-msgstr "App. sur sur bouton"
+msgstr "Appuyez sur le bouton pour prechauffer la buse et continuer."
 
 # 
-#: mmu.cpp:639
-msgid "Press the knob to resume nozzle temperature."
-msgstr "Appuyez sur le bouton pour poursuivre la mise en temperature de la buse."
+#: ultralcd.cpp:1851
+msgid "Power failures"
+msgstr "Coup.de courant"
 
 # MSG_PRINT_ABORTED c=20
-#: messages.c:65
+#: messages.c:69
 msgid "Print aborted"
 msgstr "Impression annulee"
 
-# 
-#: ultralcd.cpp:1921
-msgid "Print FAN"
-msgstr "Ventilo impression"
+#  c=20 r=1
+#: ultralcd.cpp:2455
+msgid "Preheating to load"
+msgstr "Chauffe pour charger"
 
-# MSG_INFO_PRINT_FAN c=11 r=1
-#: ultralcd.cpp:1549
-msgid "Print FAN: "
-msgstr "Vent impr :"
+#  c=20 r=1
+#: ultralcd.cpp:2459
+msgid "Preheating to unload"
+msgstr "Chauf.pour decharger"
 
 # MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:7471
+#: ultralcd.cpp:8307
 msgid "Print fan:"
-msgstr "Ventilo impr. :"
+msgstr "Vent. impr:"
 
 # MSG_CARD_MENU
 #: messages.c:21
 msgid "Print from SD"
-msgstr "Impr depuis la SD"
+msgstr "Impr. depuis la SD"
+
+# 
+#: ultralcd.cpp:2317
+msgid "Press the knob"
+msgstr "App. sur sur bouton"
 
 # MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1022
+#: ultralcd.cpp:1069
 msgid "Print paused"
 msgstr "Impression en pause"
 
-# MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2727
-msgid "Print time"
-msgstr "Temps d'impression"
-
-# MSG_STATS_PRINTTIME c=20
-#: ultralcd.cpp:2151
-msgid "Print time:  "
-msgstr "Temps d'impression :"
-
-# MSG_PRINTER_DISCONNECTED c=20 r=1
-#: ultralcd.cpp:607
-msgid "Printer disconnected"
-msgstr "Impri. deconnectee"
-
-# MSG_ERR_KILLED
-#: Marlin_main.cpp:7547
-msgid "Printer halted. kill() called!"
-msgstr "Imprimante stoppee.\nkill() appelee !"
+# 
+#: mmu.cpp:723
+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:41
 msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
-msgstr "L'imprimante n'a pas\nencore ete calibree.\nSuivez le manuel,\nchapitre Premiers\npas, section\nProcessus de\ncalibration."
-
-# MSG_ERR_STOPPED
-#: messages.c:32
-msgid "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"
-msgstr "Imprimante arretee a\ncause d'erreurs.\nCorrigez l'erreur et\nutilisez M999 pour\nredemarrer. (La\ntemperature est\nreinitilisee.\nParametrez la apres\nle redemarrage)"
-
-# 
-#:
-msgid "Prusa i3 MK2 ready."
-msgstr "Prusa i3 MK2 prete."
-
-# WELCOME_MSG c=20
-#:
-msgid "Prusa i3 MK2.5 ready."
-msgstr "Prusa i3 MK2.5 prete."
-
-# WELCOME_MSG c=20
-#:
-msgid "Prusa i3 MK3 ready."
-msgstr "Prusa i3 MK3 prete."
+msgstr "L'imprimante n'a pas encore ete calibree. Suivez le manuel, chapitre Premiers pas, section Processus de calibration."
 
 # 
-#:
-msgid "Prusa i3 MK3S OK."
-msgstr "Prusa i3 MK3S OK."
+#: ultralcd.cpp:1723
+msgid "Print FAN"
+msgstr "Vent. impr"
 
 # MSG_PRUSA3D
-#: ultralcd.cpp:2227
+#: ultralcd.cpp:2205
 msgid "prusa3d.com"
-msgstr "prusa3d.com"
+msgstr ""
 
 # MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3102
+#: ultralcd.cpp:3295
 msgid "Rear side [um]"
 msgstr "Arriere [um]"
 
 # MSG_RECOVERING_PRINT c=20 r=1
-#: Marlin_main.cpp:8575
+#: Marlin_main.cpp:9764
 msgid "Recovering print    "
 msgstr "Recup. impression"
 
-# MSG_REFRESH
-#:
-msgid "Refresh"
-msgstr "Rafraichir"
-
 # MSG_REMOVE_OLD_FILAMENT c=20 r=4
-#: mmu.cpp:744
+#: mmu.cpp:830
 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."
 
-# MSG_M119_REPORT
-#: Marlin_main.cpp:5297
-msgid "Reporting endstop status"
-msgstr "Retour du statut des\nbutees"
-
 # 
-#: Marlin_main.cpp:7076
-msgid "Resend"
-msgstr "Renvoyer"
+#: 
+msgid "Prusa i3 MK3S OK."
+msgstr ""
 
-# MSG_RESEND
-#: Marlin_main.cpp:6911
-msgid "Resend: "
-msgstr "Renvoi :"
+# MSG_CALIBRATE_BED_RESET
+#: ultralcd.cpp:5774
+msgid "Reset XYZ calibr."
+msgstr "Reinit. calib. XYZ"
 
 # MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3103
+#: ultralcd.cpp:3296
 msgid "Reset"
 msgstr "Reinitialiser"
 
-# MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5203
-msgid "Reset XYZ calibr."
-msgstr "Reinit. calibr. XYZ"
-
 # MSG_RESUME_PRINT
-#: ultralcd.cpp:6033
+#: ultralcd.cpp:6742
 msgid "Resume print"
 msgstr "Reprendre impression"
 
 # MSG_RESUMING_PRINT c=20 r=1
-#: messages.c:69
+#: messages.c:73
 msgid "Resuming print"
 msgstr "Reprise de l'impr."
 
-# 
-#: ultralcd.cpp:2862
-msgid "Right"
-msgstr "Droite"
-
 # MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3100
+#: ultralcd.cpp:3293
 msgid "Right side[um]"
 msgstr "Droite [um]"
 
-# MSG_RIGHT c=12 r=1
-#: ultralcd.cpp:2309
-msgid "Right:"
-msgstr "Droite :"
-
-# MSG_E_CAL_KNOB c=20 r=8
-#: ultralcd.cpp:3835
-msgid "Rotate knob until mark reaches extruder body. Click when done."
-msgstr "Tournez le bouton\njusqu'a ce que la\nmarque atteigne le\ncorps de\nl'extrudeur. Cliquez\nune fois fait."
-
 # MSG_SECOND_SERIAL_ON c=17 r=1
-#: ultralcd.cpp:5119
+#: ultralcd.cpp:5692
 msgid "RPi port     [on]"
-msgstr "Port RPi [on]"
+msgstr "Port RPi     [on]"
 
 # MSG_SECOND_SERIAL_OFF c=17 r=1
-#: ultralcd.cpp:5117
+#: ultralcd.cpp:5690
 msgid "RPi port    [off]"
-msgstr "Port RPi [off]"
+msgstr "Port RPi    [off]"
 
 # MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4583
+#: ultralcd.cpp:4812
 msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
-msgstr "Lancer l'Assistant\nsupprimera les\nresultats actuels de\ncalibration et\ncommencera du debut.\nContinuer ?"
+msgstr "Lancement de l'Assistant supprimera les resultats actuels de calibration et commencera du debut. Continuer?"
 
 # MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-#: ultralcd.cpp:5033
+#: ultralcd.cpp:5322
 msgid "SD card  [normal]"
 msgstr "Carte SD [normal]"
 
-# MSG_SD_CARD_OK
-#: cardreader.cpp:202
-msgid "SD card ok"
-msgstr "Carte SD ok"
-
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:4238
-msgid "SD card [FlshAir]"
-msgstr "Carte SD [FlashAir]"
-
 # MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:5031
+#: ultralcd.cpp:5320
 msgid "SD card [flshAir]"
-msgstr "Carte SD [flashAir]"
+msgstr "CarteSD [flshAir]"
 
-# MSG_SD_INIT_FAIL
-#: cardreader.cpp:186
-msgid "SD init fail"
-msgstr "Echec init SD"
-
-# MSG_SD_PRINTING_BYTE
-#: cardreader.cpp:516
-msgid "SD printing byte "
-msgstr "Octet d'impression de la SD"
+# 
+#: ultralcd.cpp:3019
+msgid "Right"
+msgstr "Droite"
 
 # MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
 #: messages.c:38
@@ -1653,566 +1161,657 @@ msgid "Searching bed calibration point"
 msgstr "Recherche du point de calibration du lit"
 
 # MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5126
+#: ultralcd.cpp:5699
 msgid "Select language"
 msgstr "Choisir langue"
 
-# 
-#: ultralcd.cpp:4803
-msgid "Select nozzle preheat temperature which matches your material."
-msgstr "Selectionnez la temperature de prechauffage de la buse qui correspond a votre materiau."
-
-# 
-#: ultralcd.cpp:4552
-msgid "Select PLA filament:"
-msgstr "Selectionnez le filament PLA :"
-
 # MSG_SELFTEST_OK
-#: ultralcd.cpp:6631
+#: ultralcd.cpp:7452
 msgid "Self test OK"
 msgstr "Auto-test OK"
 
 # MSG_SELFTEST_START c=20
-#: ultralcd.cpp:6449
+#: ultralcd.cpp:7238
 msgid "Self test start  "
 msgstr "Debut auto-test"
 
 # MSG_SELFTEST
-#: ultralcd.cpp:5179
+#: ultralcd.cpp:5750
 msgid "Selftest         "
 msgstr "Auto-test"
 
 # MSG_SELFTEST_ERROR
-#: ultralcd.cpp:7058
+#: ultralcd.cpp:7879
 msgid "Selftest error !"
-msgstr "Erreur auto-test !"
+msgstr "Erreur auto-test!"
 
 # MSG_SELFTEST_FAILED c=20
-#: messages.c:73
+#: messages.c:77
 msgid "Selftest failed  "
 msgstr "Echec de l'auto-test"
 
 # MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1548
+#: Marlin_main.cpp:1551
 msgid "Selftest will be run to calibrate accurate sensorless rehoming."
-msgstr "Le Selftest sera\nlance pour calibrer\nla remise a zero\nprecise sans capteur"
+msgstr "Le Selftest sera lance pour calibrer la remise a zero precise sans capteur"
 
 # 
-#: ultralcd.cpp:3819
-msgid "Sensor state"
-msgstr "Etat capteur"
+#: ultralcd.cpp:5045
+msgid "Select nozzle preheat temperature which matches your material."
+msgstr "Selectionnez la temperature de prechauffage de la buse qui correspond a votre materiau."
 
 # 
-#:
-msgid "Sensors info"
-msgstr "Infos capteurs"
+#: ultralcd.cpp:4780
+msgid "Select PLA filament:"
+msgstr "Selectionnez le fil. PLA:"
 
 # MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3111
+#: ultralcd.cpp:3314
 msgid "Set temperature:"
-msgstr "Regler temp. :"
+msgstr "Regler temp.:"
 
 # MSG_SETTINGS
-#: messages.c:81
+#: messages.c:86
 msgid "Settings"
 msgstr "Reglages"
 
-# 
-#: ultralcd.cpp:2899
-msgid "Severe skew"
-msgstr "Deviation severe"
-
-# MSG_SEVERE_SKEW c=15 r=1
-#: ultralcd.cpp:2346
-msgid "Severe skew:"
-msgstr "Ecart severe :"
-
 # MSG_SHOW_END_STOPS c=17 r=1
-#: ultralcd.cpp:5200
+#: ultralcd.cpp:5771
 msgid "Show end stops"
 msgstr "Afficher butees"
 
 # 
-#:
-msgid "Show pinda state"
-msgstr "Etat de la PINDA"
-
-# MSG_DWELL
-#: Marlin_main.cpp:3752
-msgid "Sleep..."
-msgstr "Repos..."
-
-# 
-#: ultralcd.cpp:2898
-msgid "Slight skew"
-msgstr "Deviation legere"
-
-# MSG_SLIGHT_SKEW c=15 r=1
-#: ultralcd.cpp:2342
-msgid "Slight skew:"
-msgstr "Leger ecart :"
+#: ultralcd.cpp:4025
+msgid "Sensor state"
+msgstr "Etat capteur"
 
 # MSG_FILE_CNT c=20 r=4
-#: 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\nseront pas tries.\nMax 100 fichiers\ntries par dossier."
-
-# 
-#: Marlin_main.cpp:4560
-msgid "Some problem encountered, Z-leveling enforced ..."
-msgstr "Problemes rencontres, nivellement de l'axe Z applique..."
+msgstr "Certains fichiers ne seront pas tries. Max 100 fichiers tries par dossier."
 
 # MSG_SORT_NONE c=17 r=1
-#: ultralcd.cpp:4250
-msgid "Sort:      [None]"
-msgstr "Tri : [Aucun]"
-
-# MSG_SORT_NONE c=17 r=1
-#: ultralcd.cpp:5043
-msgid "Sort:      [none]"
-msgstr "Tri :     [aucun]"
-
-# MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:4248
-msgid "Sort:      [Time]"
-msgstr "Tri : [Heure]"
+#: ultralcd.cpp:5332
+msgid "Sort       [none]"
+msgstr "Tri       [aucun]"
 
 # MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:5041
-msgid "Sort:      [time]"
-msgstr "Tri :     [heure]"
+#: ultralcd.cpp:5330
+msgid "Sort       [time]"
+msgstr "Tri       [heure]"
 
-# MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:4249
-msgid "Sort:  [Alphabet]"
-msgstr "Tri : [Alphabet]"
+# 
+#: ultralcd.cpp:3062
+msgid "Severe skew:"
+msgstr "Deviat.sev.:"
 
 # MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:5042
-msgid "Sort:  [alphabet]"
-msgstr "Tri : [alphabet]"
-
-# MSG_SORT_NONE c=17 r=1
-#:
-msgid "Sort:  [none]"
-msgstr "Tri : [aucun]"
-
-# MSG_SORT_TIME c=17 r=1
-#:
-msgid "Sort:  [time]"
-msgstr "Tri : [heure]"
+#: ultralcd.cpp:5331
+msgid "Sort   [alphabet]"
+msgstr "Tri    [alphabet]"
 
 # MSG_SORTING c=20 r=1
-#: cardreader.cpp:745
+#: cardreader.cpp:746
 msgid "Sorting files"
 msgstr "Tri des fichiers"
 
 # MSG_SOUND_LOUD c=17 r=1
-#: sound.h:5
+#: sound.h:6
 msgid "Sound      [loud]"
-msgstr "Son [fort]"
+msgstr "Son        [fort]"
+
+# 
+#: ultralcd.cpp:3061
+msgid "Slight skew:"
+msgstr "Deviat.leg.:"
 
 # MSG_SOUND_MUTE c=17 r=1
-#: sound.h:8
+#: 
 msgid "Sound      [mute]"
-msgstr "Son [muet]"
+msgstr "Son        [muet]"
+
+# 
+#: Marlin_main.cpp:4871
+msgid "Some problem encountered, Z-leveling enforced ..."
+msgstr "Probleme rencontre, cliquez sur le bouton pour niveller l'axe Z..."
 
 # MSG_SOUND_ONCE c=17 r=1
-#: sound.h:6
+#: sound.h:7
 msgid "Sound      [once]"
-msgstr "Son [une fois]"
+msgstr "Son    [une fois]"
 
 # MSG_SOUND_SILENT c=17 r=1
-#: sound.h:7
+#: sound.h:8
 msgid "Sound    [silent]"
-msgstr "Son [silencieux]"
+msgstr "Son      [feutre]"
 
 # MSG_SPEED
-#: ultralcd.cpp:6199
+#: ultralcd.cpp:6926
 msgid "Speed"
 msgstr "Vitesse"
 
 # MSG_SELFTEST_FAN_YES c=19
-#: messages.c:76
+#: messages.c:80
 msgid "Spinning"
 msgstr "Tourne"
 
-# MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:4959
-msgid "SpoolJoin    [on]"
-msgstr "SpoolJoin    [on]"
-
-# 
-#: ultralcd.cpp:4955
-msgid "SpoolJoin   [N/A]"
-msgstr "SpoolJoin   [N/A]"
-
-# MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:4963
-msgid "SpoolJoin   [off]"
-msgstr "SpoolJoin   [off]"
-
 # MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4065
+#: Marlin_main.cpp:4368
 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
-msgstr "Une temperature\nambiante stable de\n21-26C et un support\nstable sont requis."
+msgstr "Une temperature ambiante stable de 21-26C et un support stable sont requis."
 
 # MSG_STATISTICS
-#: ultralcd.cpp:6108
+#: ultralcd.cpp:6839
 msgid "Statistics  "
 msgstr "Statistiques"
 
-# MSG_STEPPER_TOO_HIGH
-#: stepper.cpp:345
-msgid "Steprate too high: "
-msgstr "Nombre de pas trop eleve :"
-
 # MSG_STOP_PRINT
-#: messages.c:87
+#: messages.c:93
 msgid "Stop print"
 msgstr "Arreter impression"
 
 # MSG_STOPPED
-#: messages.c:88
+#: messages.c:94
 msgid "STOPPED. "
 msgstr "ARRETE."
 
 # MSG_SUPPORT
-#: ultralcd.cpp:6117
+#: ultralcd.cpp:6848
 msgid "Support"
-msgstr "Support"
+msgstr ""
 
 # MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:7138
+#: ultralcd.cpp:7959
 msgid "Swapped"
 msgstr "Echange"
 
 # MSG_TEMP_CALIBRATION c=20 r=1
-#: messages.c:89
+#: messages.c:95
 msgid "Temp. cal.          "
 msgstr "Calib. Temp."
 
 # MSG_TEMP_CALIBRATION_ON c=20 r=1
-#: ultralcd.cpp:5113
+#: ultralcd.cpp:5686
 msgid "Temp. cal.   [on]"
 msgstr "Calib. Temp. [on]"
 
 # MSG_TEMP_CALIBRATION_OFF c=20 r=1
-#: ultralcd.cpp:5111
+#: ultralcd.cpp:5684
 msgid "Temp. cal.  [off]"
 msgstr "Calib. Temp.[off]"
 
 # MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5209
+#: ultralcd.cpp:5780
 msgid "Temp. calibration"
 msgstr "Calibration temp."
 
-# MSG_TEMPERATURE
-#: ultralcd.cpp:5089
-msgid "Temperature"
-msgstr "Temperature"
-
 # MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3744
+#: ultralcd.cpp:3951
 msgid "Temperature calibration failed"
-msgstr "Echec de la\ncalibration en\ntemperature"
-
-# MSG_PINDA_NOT_CALIBRATED c=20 r=4
-#: Marlin_main.cpp:1403
-msgid "Temperature calibration has not been run yet"
-msgstr "La calibration en\ntemperature n'a pas\nencore ete lancee"
+msgstr "Echec de la calibration en temperature"
 
 # MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:90
+#: messages.c:96
 msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
-msgstr "La calibration en\ntemperature est\nterminee et activee.\nLa calibration en\ntemperature peut\netre desactivee dans\nle menu Reglages->\nCal. Temp."
+msgstr "La calibration en temperature est terminee et activee. La calibration en temperature peut etre desactivee dans le menu Reglages-> Cal. Temp."
+
+# MSG_TEMPERATURE
+#: ultralcd.cpp:5650
+msgid "Temperature"
+msgstr ""
 
 # MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2273
+#: ultralcd.cpp:2251
 msgid "Temperatures"
-msgstr "Temperatures"
+msgstr ""
 
 # MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
 #: messages.c:42
 msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
-msgstr "Il y a encore besoin d'effectuer la calibration Z. Veuillez suivre le manuel, chapitre Premiers pas, section Processus de calibration."
+msgstr "Il faut toujours effectuer la Calibration Z. Veuillez suivre le manuel, chapitre Premiers pas, section Processus de calibration."
 
 # 
-#: ultralcd.cpp:2316
-msgid "to load filament"
-msgstr "pour charger le fil."
-
-# 
-#: ultralcd.cpp:2317
-msgid "to unload filament"
-msgstr "pour decharger fil."
-
-# 
-#: ultralcd.cpp:1961
-msgid "Total"
-msgstr "Total"
-
-# 
-#: ultralcd.cpp:1994
-msgid "Total failures"
-msgstr "Total des echecs"
-
-# 
-#: ultralcd.cpp:2752
+#: ultralcd.cpp:2908
 msgid "Total filament"
 msgstr "Filament total"
 
-# MSG_STATS_TOTALFILAMENT c=20
-#: ultralcd.cpp:2186
-msgid "Total filament :"
-msgstr "Total filament :"
-
 # 
-#: ultralcd.cpp:2754
+#: ultralcd.cpp:2908
 msgid "Total print time"
 msgstr "Temps total impr."
 
-# MSG_STATS_TOTALPRINTTIME c=20
-#: ultralcd.cpp:2203
-msgid "Total print time :"
-msgstr "Temps total impr. :"
-
-# MSG_ENDSTOP_HIT
-#: messages.c:28
-msgid "TRIGGERED"
-msgstr "ACTIVE"
-
 # MSG_TUNE
-#: ultralcd.cpp:6015
+#: ultralcd.cpp:6719
 msgid "Tune"
 msgstr "Regler"
 
 # 
-#: ultralcd.cpp:2249
-msgid "unknown"
-msgstr "inconnu"
-
-# 
-#: ultralcd.cpp:4640
+#: ultralcd.cpp:4869
 msgid "Unload"
 msgstr "Decharger"
 
 # 
-#: ultralcd.cpp:5617
-msgid "Unload all"
-msgstr "Decharger tout"
+#: ultralcd.cpp:1820
+msgid "Total failures"
+msgstr "Total des echecs"
+
+# 
+#: ultralcd.cpp:2324
+msgid "to load filament"
+msgstr "pour charger le fil."
+
+# 
+#: ultralcd.cpp:2328
+msgid "to unload filament"
+msgstr "pour decharger fil."
 
 # MSG_UNLOAD_FILAMENT c=17
-#: messages.c:91
+#: messages.c:97
 msgid "Unload filament"
 msgstr "Decharger fil."
 
-# MSG_UNLOAD_FILAMENT_1 c=17
-#: ultralcd.cpp:5406
-msgid "Unload filament 1"
-msgstr "Decharger fil. 1"
-
-# MSG_UNLOAD_FILAMENT_2 c=17
-#: ultralcd.cpp:5407
-msgid "Unload filament 2"
-msgstr "Decharger fil. 2"
-
-# MSG_UNLOAD_FILAMENT_3 c=17
-#: ultralcd.cpp:5408
-msgid "Unload filament 3"
-msgstr "Decharger fil. 3"
-
-# MSG_UNLOAD_FILAMENT_4 c=17
-#: ultralcd.cpp:5409
-msgid "Unload filament 4"
-msgstr "Decharger fil. 4"
-
 # MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:92
+#: messages.c:98
 msgid "Unloading filament"
 msgstr "Dechargement fil."
 
 # 
-#: ultralcd.cpp:4639
-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 decharger pour retirer le filament 1 s'il depasse du  tube arriere du MMU. Utilisez ejecter s'il est cache dans le tube."
+#: ultralcd.cpp:1773
+msgid "Total"
+msgstr ""
 
 # MSG_USED c=19 r=1
-#: ultralcd.cpp:5334
+#: ultralcd.cpp:5908
 msgid "Used during print"
 msgstr "Utilise pdt impr."
 
 # MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2276
+#: ultralcd.cpp:2254
 msgid "Voltages"
 msgstr "Tensions"
 
-# MSG_SD_VOL_INIT_FAIL
-#: cardreader.cpp:191
-msgid "volume.init failed"
-msgstr "Echec volume.init"
+# 
+#: ultralcd.cpp:2227
+msgid "unknown"
+msgstr "inconnu"
 
 # MSG_USERWAIT
-#: Marlin_main.cpp:4876
+#: Marlin_main.cpp:5263
 msgid "Wait for user..."
 msgstr "Attente utilisateur..."
 
 # MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3255
+#: ultralcd.cpp:3458
 msgid "Waiting for nozzle and bed cooling"
-msgstr "Attente du\nrefroidissement des\nbuse et plateau"
+msgstr "Attente du refroidissement des buse et plateau"
 
 # MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3219
+#: ultralcd.cpp:3422
 msgid "Waiting for PINDA probe cooling"
-msgstr "Attente du\nrefroidissement de\nla sonde PINDA"
+msgstr "Attente du refroidissement de la sonde PINDA"
+
+# 
+#: ultralcd.cpp:4868
+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:1508
+#: Marlin_main.cpp:1511
 msgid "Warning: both printer type and motherboard type changed."
-msgstr "Attention : Types\nd'imprimante et de\ncarte mere modifies"
+msgstr "Attention: Types d'imprimante et de carte mere modifies"
 
 # MSG_CHANGED_MOTHERBOARD c=20 r=4
-#: Marlin_main.cpp:1500
+#: Marlin_main.cpp:1503
 msgid "Warning: motherboard type changed."
-msgstr "Attention : Type de\ncarte mere modifie."
+msgstr "Attention: Type de carte mere modifie."
 
 # MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1504
+#: Marlin_main.cpp:1507
 msgid "Warning: printer type changed."
-msgstr "Attention : Type\nd'imprimante modifie"
-
-# MSG_FW_VERSION_UNKNOWN c=20 r=8
-#: Marlin_main.cpp:946
-msgid "WARNING: This is an unofficial, unsupported build. Use at your own risk!"
-msgstr "ATTENTION : ceci est\nune build non\nofficielle et non\nsupportee. Utilisez\nla a votre propre\nrisque !"
+msgstr "Attention: Type d'imprimante modifie"
 
 # MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3014
+#: Marlin_main.cpp:3054
 msgid "Was filament unload successful?"
-msgstr "Dechargement du\nfilament reussi ?"
+msgstr "Dechargement du filament reussi?"
 
 # MSG_SELFTEST_WIRINGERROR
-#: messages.c:80
+#: messages.c:85
 msgid "Wiring error"
 msgstr "Erreur de cablage"
 
 # MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5176
+#: ultralcd.cpp:5747
 msgid "Wizard"
 msgstr "Assistant"
 
-# MSG_SD_WORKDIR_FAIL
-#: messages.c:78
-msgid "workDir open failed"
-msgstr "Echec ouverture workDir"
-
-# MSG_SD_WRITE_TO_FILE
-#: cardreader.cpp:424
-msgid "Writing to file: "
-msgstr "Ecriture dans le fichier :"
-
-# 
-#: ultralcd.cpp:4885
-msgid "X-correct"
-msgstr "Correction-X"
-
 # MSG_XYZ_DETAILS c=19 r=1
-#: ultralcd.cpp:2265
+#: ultralcd.cpp:2243
 msgid "XYZ cal. details"
 msgstr "Details calib. XYZ"
 
+# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
+#: messages.c:19
+msgid "XYZ calibration failed. Please consult the manual."
+msgstr "Echec calibration XYZ. Consultez le manuel."
+
+# MSG_YES
+#: messages.c:104
+msgid "Yes"
+msgstr "Oui"
+
+# MSG_WIZARD_QUIT c=20 r=8
+#: messages.c:103
+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:3715
+#: ultralcd.cpp:3922
 msgid "XYZ calibration all right. Skew will be corrected automatically."
-msgstr "Calibration XYZ OK.\nL'ecart sera corrige\nautomatiquement."
+msgstr "Calibration XYZ OK. L'ecart sera corrige automatiquement."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
-#: ultralcd.cpp:3712
+#: ultralcd.cpp:3919
 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
-msgstr "Calibration XYZ OK.\nLes axes X/Y sont\nlegerement non\nperpendiculaires.\nBon boulot !"
+msgstr "Calibration XYZ OK. Les axes X/Y sont legerement non perpendiculaires. Bon boulot!"
+
+# 
+#: ultralcd.cpp:5130
+msgid "X-correct:"
+msgstr "Correct-X:"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
+#: ultralcd.cpp:3916
+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:3693
+#: ultralcd.cpp:3900
 msgid "XYZ calibration compromised. Front calibration points not reachable."
-msgstr "Calibration XYZ\ncompromise. Les\npoints de\ncalibration avant ne\nsont pas\natteignables."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8
-#: ultralcd.cpp:3699
-msgid "XYZ calibration compromised. Left front calibration point not reachable."
-msgstr "Calibration XYZ\ncompromise. Le point\n de calibration\n avant gauche n'est\n pas atteignable."
+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:3696
+#: ultralcd.cpp:3903
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
-msgstr "Calibration XYZ\ncompromise. Le point\nde calibration avant\ndroit n'est pas\natteignable."
+msgstr "Calibration XYZ compromise. Le point de calibration avant droit n'est pas atteignable."
+
+# MSG_LOAD_ALL c=17
+#: ultralcd.cpp:6166
+msgid "Load all"
+msgstr "Charger un par un"
 
 # 
-#: ultralcd.cpp:3675
+#: ultralcd.cpp:3882
 msgid "XYZ calibration failed. Bed calibration point was not found."
-msgstr "Echec calibration\nXYZ. Le point de\ncalibration du\nplateau n'a pas ete\ntrouve."
+msgstr "Echec calibration XYZ. Le point de calibration du plateau n'a pas ete trouve."
 
 # 
-#: ultralcd.cpp:3681
+#: ultralcd.cpp:3888
 msgid "XYZ calibration failed. Front calibration points not reachable."
-msgstr "Echec calibration\nXYZ. Les points de\ncalibration avant ne\nsont pas\natteignables."
+msgstr "Echec calibration XYZ. Les points de calibration en avant ne sont pas atteignables."
 
 # 
-#: ultralcd.cpp:3687
-msgid "XYZ calibration failed. Left front calibration point not reachable."
-msgstr "Echec calibration\nXYZ. Le point de\ncalibration avant\ngauche n'est pas\natteignable."
+#: ultralcd.cpp:3891
+msgid "XYZ calibration failed. Right front calibration point not reachable."
+msgstr "Echec calibration XYZ. Le point de calibration avant droit n'est pas atteignable."
 
-# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
-#: messages.c:19
-msgid "XYZ calibration failed. Please consult the manual."
-msgstr "Echec calibration\nXYZ. Consultez le\nmanuel."
+# 
+#: ultralcd.cpp:3016
+msgid "Y distance from min"
+msgstr "Distance Y du min"
 
 # 
-#: ultralcd.cpp:3684
-msgid "XYZ calibration failed. Right front calibration point not reachable."
-msgstr "Echec calibration\nXYZ. Le point de\ncalibration avant\ndroit n'est pas\natteignable."
+#: ultralcd.cpp:5131
+msgid "Y-correct:"
+msgstr "Correct-Y:"
 
-# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3709
-msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
-msgstr "Calibration XYZ OK.\nLes axes X/Y sont\nperpendiculaires.\nFelicitations !"
+# MSG_OFF
+#: menu.cpp:426
+msgid " [off]"
+msgstr " [off]"
 
 # 
-#: ultralcd.cpp:2859
-msgid "Y distance from min"
-msgstr "Distance Y du min"
+#: messages.c:57
+msgid "Back"
+msgstr "Retour"
 
-# MSG_Y_DISTANCE_FROM_MIN c=20 r=1
-#: ultralcd.cpp:2306
-msgid "Y distance from min:"
-msgstr "Distance Y du mini :"
+# 
+#: ultralcd.cpp:5639
+msgid "Checks"
+msgstr "Verifications"
 
 # 
-#: ultralcd.cpp:4886
-msgid "Y-correct"
-msgstr "Correction-Y"
+#: ultralcd.cpp:7973
+msgid "False triggering"
+msgstr "Faux declenchement"
 
-# MSG_YES
-#: messages.c:98
-msgid "Yes"
-msgstr "Oui"
+# 
+#: ultralcd.cpp:4030
+msgid "FINDA:"
+msgstr "FINDA:"
 
-# MSG_FW_VERSION_ALPHA c=20 r=8
-#: Marlin_main.cpp:930
-msgid "You are using firmware alpha version. This is development version. Using this version is not recommended and may cause printer damage."
-msgstr "Vous utilisez un\nfirmware en version\nalpha. C'est une\nversion de dev.\nCeci n'est pas\nrecommande et peut\nendommager\nl'imprimante."
+# 
+#: ultralcd.cpp:5545
+msgid "Firmware   [none]"
+msgstr "Firmware [aucune]"
 
-# MSG_FW_VERSION_BETA c=20 r=8
-#: Marlin_main.cpp:931
-msgid "You are using firmware beta version. This is development version. Using this version is not recommended and may cause printer damage."
-msgstr "Vous utilisez un\nfirmware en version\nbeta. C'est une\nversion de dev.\nCeci n'est pas\nrecommande et peut\nendommager\nl'imprimante."
+# 
+#: ultralcd.cpp:5551
+msgid "Firmware [strict]"
+msgstr "Firmware[stricte]"
 
-# MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:97
-msgid "You can always resume the Wizard from Calibration -> Wizard."
-msgstr "Vous pouvez toujours\nrelancer l'assistant\ndans Calibration->\nAssistant."
+# 
+#: ultralcd.cpp:5548
+msgid "Firmware   [warn]"
+msgstr "Firmware  [avert]"
+
+# 
+#: messages.c:87
+msgid "HW Setup"
+msgstr "Config HW"
+
+# 
+#: ultralcd.cpp:4034
+msgid "IR:"
+msgstr "IR:"
+
+# 
+#: ultralcd.cpp:7046
+msgid "Magnets comp.[N/A]"
+msgstr "Compens. aim.[N/A]"
+
+# 
+#: ultralcd.cpp:7044
+msgid "Magnets comp.[Off]"
+msgstr "Compens. aim.[off]"
+
+# 
+#: ultralcd.cpp:7043
+msgid "Magnets comp. [On]"
+msgstr "Compens. aim. [on]"
+
+# 
+#: ultralcd.cpp:7035
+msgid "Mesh         [3x3]"
+msgstr ""
+
+# 
+#: ultralcd.cpp:7036
+msgid "Mesh         [7x7]"
+msgstr ""
+
+# 
+#: ultralcd.cpp:5677
+msgid "Mesh bed leveling"
+msgstr ""
+
+# 
+#: Marlin_main.cpp:856
+msgid "MK3S firmware detected on MK3 printer"
+msgstr "Firmware MK3S detecte sur imprimante MK3"
+
+# 
+#: ultralcd.cpp:5306
+msgid "MMU Mode [Normal]"
+msgstr "Mode MMU [normal]"
+
+# 
+#: ultralcd.cpp:5307
+msgid "MMU Mode[Stealth]"
+msgstr "Mode MMU [feutre]"
+
+# 
+#: ultralcd.cpp:4511
+msgid "Mode change in progress ..."
+msgstr "Changement de mode en cours..."
+
+# 
+#: ultralcd.cpp:5506
+msgid "Model      [none]"
+msgstr "Modele   [aucune]"
+
+# 
+#: ultralcd.cpp:5512
+msgid "Model    [strict]"
+msgstr "Modele  [stricte]"
+
+# 
+#: ultralcd.cpp:5509
+msgid "Model      [warn]"
+msgstr "Modele    [avert]"
+
+# 
+#: ultralcd.cpp:5467
+msgid "Nozzle d.  [0.25]"
+msgstr "Diam. buse [0.25]"
+
+# 
+#: ultralcd.cpp:5470
+msgid "Nozzle d.  [0.40]"
+msgstr "Diam. buse [0.40]"
+
+# 
+#: ultralcd.cpp:5473
+msgid "Nozzle d.  [0.60]"
+msgstr "Diam. buse [0.60]"
+
+# 
+#: ultralcd.cpp:5421
+msgid "Nozzle     [none]"
+msgstr "Buse     [aucune]"
+
+# 
+#: ultralcd.cpp:5427
+msgid "Nozzle   [strict]"
+msgstr "Buse    [stricte]"
+
+# 
+#: ultralcd.cpp:5424
+msgid "Nozzle     [warn]"
+msgstr "Buse      [avert]"
+
+# 
+#: util.cpp:510
+msgid "G-code sliced for a different level. Continue?"
+msgstr ""
+
+# 
+#: util.cpp:516
+msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
+msgstr ""
+
+# 
+#: util.cpp:427
+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:433
+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:477
+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:483
+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:4026
+msgid "PINDA:"
+msgstr "PINDA:"
+
+#  c=20 r=1
+#: ultralcd.cpp:2465
+msgid "Preheating to cut"
+msgstr "Chauffe pour couper"
+
+#  c=20 r=1
+#: ultralcd.cpp:2462
+msgid "Preheating to eject"
+msgstr "Chauf. pour remonter"
+
+# 
+#: util.cpp:390
+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:397
+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."
+
+# 
+#: ultralcd.cpp:6683
+msgid "Rename"
+msgstr "Renommer"
+
+# 
+#: ultralcd.cpp:6679
+msgid "Select"
+msgstr "Selectionner"
+
+# 
+#: ultralcd.cpp:2245
+msgid "Sensor info"
+msgstr "Info capteur"
+
+# 
+#: messages.c:58
+msgid "Sheet"
+msgstr "Plaque"
+
+# 
+#: sound.h:9
+msgid "Sound    [assist]"
+msgstr "Son      [assist]"
+
+# 
+#: ultralcd.cpp:5637
+msgid "Steel sheets"
+msgstr "Plaques en acier"
+
+# 
+#: ultralcd.cpp:5132
+msgid "Z-correct:"
+msgstr "Correct-Z:"
+
+# 
+#: ultralcd.cpp:7038
+msgid "Z-probe nr.    [1]"
+msgstr "Mesurer x-fois [1]"
+
+# 
+#: ultralcd.cpp:7040
+msgid "Z-probe nr.    [3]"
+msgstr "Mesurer x-fois [3]"
+
+# 
+#: ultralcd.cpp:7039
+msgid "Z-probe nr.    [5]"
+msgstr "Mesurer x-fois [5]"
 
-# MSG_MEASURED_OFFSET
-#: ultralcd.cpp:2914
-msgid "[0;0] point offset"
-msgstr "Offset point [0;0]"

+ 857 - 1263
lang/po/new/it.po

@@ -1,46 +1,19 @@
+# Translation of Prusa-Firmware into Italian.
+#
 msgid ""
 msgstr ""
-"Language: it\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: PhraseApp (phraseapp.com)\n"
-
-# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
-#: ultralcd.cpp:4219
-msgid "\e[2JCrash detection can\e[1;0Hbe turned on only in\e[2;0HNormal mode"
-msgstr "\e[2JRilev. impatto\e[1;0Hattivabile solo\e[2;0Hin Modalita normale"
-
-# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
-#: ultralcd.cpp:4231
-msgid "\e[2JWARNING:\e[1;0HCrash detection\e[2;0Hdisabled in\e[3;0HStealth mode"
-msgstr "\e[2JATTENZIONE:\e[1;0HRilev. impatto\e[2;0Hdisattivato in\e[3;0HModalita silenziosa"
-
-# MSG_PLANNER_BUFFER_BYTES
-#: Marlin_main.cpp:1184
-msgid "  PlannerBufferBytes: "
-msgstr " PlannerBufferBytes: "
-
-# MSG_EXTRUDER_CORRECTION_OFF c=6
-#: ultralcd.cpp:6312
-msgid "  [off"
-msgstr "  [off"
-
-# MSG_ERR_COLD_EXTRUDE_STOP
-#: planner.cpp:761
-msgid " cold extrusion prevented"
-msgstr "evitata estrusione fredda"
-
-# MSG_FREE_MEMORY
-#: Marlin_main.cpp:1182
-msgid " Free Memory: "
-msgstr "Memoria Libera: "
-
-# MSG_CONFIGURATION_VER
-#: Marlin_main.cpp:1172
-msgid " Last Updated: "
-msgstr "Ultimo aggiornamento: "
+"Language: it\n"
+"Project-Id-Version: Prusa-Firmware\n"
+"POT-Creation-Date: Sun, Sep 22, 2019 1:33:15 PM\n"
+"PO-Revision-Date: Sun, Sep 22, 2019 1:33:15 PM\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"
 
 # MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
 #: messages.c:39
@@ -48,84 +21,74 @@ msgid " of 4"
 msgstr " su 4"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:56
+#: messages.c:60
 msgid " of 9"
 msgstr "su 9"
 
-# MSG_FACTOR
-#: ultralcd.cpp:6008
-msgid " \002 Fact"
-msgstr " \002 Fattore"
+# MSG_MEASURED_OFFSET
+#: ultralcd.cpp:3089
+msgid "[0;0] point offset"
+msgstr "[0;0] punto offset"
 
-# MSG_MAX
-#: ultralcd.cpp:6007
-msgid " \002 Max"
-msgstr " \002 Max"
+# 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_MIN
-#: ultralcd.cpp:6006
-msgid " \002 Min"
-msgstr " \002 Min"
+# 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:2353
+#: ultralcd.cpp:2472
 msgid ">Cancel"
 msgstr ">Annulla"
 
-# MSG_BABYSTEPPING_Z c=20
-#: ultralcd.cpp:3043
-msgid "Adjusting Z"
-msgstr "Compensazione Z"
-
-# MSG_ALL c=19 r=1
-#: messages.c:11
-msgid "All"
-msgstr "Tutti"
+# MSG_BABYSTEPPING_Z c=15
+#: ultralcd.cpp:3209
+msgid "Adjusting Z:"
+msgstr "Compensaz. Z:"
 
 # MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:7459
+#: ultralcd.cpp:8295
 msgid "All correct      "
 msgstr "Nessun errore"
 
 # MSG_WIZARD_DONE c=20 r=8
-#: messages.c:95
+#: messages.c:101
 msgid "All is done. Happy printing!"
 msgstr "Tutto fatto. Buona stampa!"
 
 # 
-#: ultralcd.cpp:2109
+#: ultralcd.cpp:2009
 msgid "Ambient"
 msgstr "Ambiente"
 
 # MSG_PRESS c=20
-#: ultralcd.cpp:2463
+#: ultralcd.cpp:2618
 msgid "and press the knob"
 msgstr "e cliccare manopola"
 
 # MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3330
+#: ultralcd.cpp:3529
 msgid "Are left and right Z~carriages all up?"
 msgstr "I carrelli Z sin/des sono altezza max?"
 
-# MSG_ADJUSTZ
-#: ultralcd.cpp:2600
-msgid "Auto adjust Z?"
-msgstr "Autoregolare Z?"
-
 # MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:4706
-msgid "Auto deplete [on]"
-msgstr "Esaurimento automatico [on]"
+#: ultralcd.cpp:5200
+msgid "SpoolJoin    [on]"
+msgstr ""
 
 # 
-#: ultralcd.cpp:4702
-msgid "Auto deplete[N/A]"
-msgstr "Auto svuotamento[N/A]"
+#: ultralcd.cpp:5196
+msgid "SpoolJoin   [N/A]"
+msgstr ""
 
 # MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:4710
-msgid "Auto deplete[off]"
-msgstr "Esaurimento automatico [off]"
+#: ultralcd.cpp:5204
+msgid "SpoolJoin   [off]"
+msgstr ""
 
 # MSG_AUTO_HOME
 #: messages.c:11
@@ -133,47 +96,32 @@ msgid "Auto home"
 msgstr "Trova origine"
 
 # MSG_AUTOLOAD_FILAMENT c=17
-#: ultralcd.cpp:6091
+#: ultralcd.cpp:6822
 msgid "AutoLoad filament"
 msgstr "Autocaric. filam."
 
 # MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4246
+#: ultralcd.cpp:4462
 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:2655
+#: ultralcd.cpp:2813
 msgid "Autoloading filament is active, just press the knob and insert filament..."
-msgstr "Il caricamento automatico e attivo, premete la manopola e inserite il filamento..."
-
-# MSG_SELFTEST_AXIS
-#: ultralcd.cpp:7130
-msgid "Axis"
-msgstr "Assi"
+msgstr "Caricamento automatico attivo, premi la manopola e inserisci il filamento."
 
 # MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:7128
+#: ultralcd.cpp:7949
 msgid "Axis length"
 msgstr "Lunghezza dell'asse"
 
-# MSG_BABYSTEPPING_X
-#: ultralcd.cpp:2481
-msgid "Babystepping X"
-msgstr "Babystepping X"
-
-# MSG_BABYSTEPPING_Y
-#: ultralcd.cpp:2484
-msgid "Babystepping Y"
-msgstr "Babystepping Y"
-
-# MSG_BED
-#: messages.c:15
-msgid "Bed"
-msgstr "Letto"
+# MSG_SELFTEST_AXIS
+#: ultralcd.cpp:7951
+msgid "Axis"
+msgstr "Assi"
 
 # MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:7072
+#: ultralcd.cpp:7893
 msgid "Bed / Heater"
 msgstr "Letto/Riscald."
 
@@ -188,7 +136,7 @@ msgid "Bed Heating"
 msgstr "Riscald. letto"
 
 # MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5197
+#: ultralcd.cpp:5768
 msgid "Bed level correct"
 msgstr "Correz. liv.letto"
 
@@ -197,43 +145,28 @@ msgstr "Correz. liv.letto"
 msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
 msgstr "Livellamento letto fallito.NoRispSensore.Residui su ugello? In attesa di reset."
 
-# MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4
-#: Marlin_main.cpp:4508
-msgid "Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset."
-msgstr "Livellamento piano fallito. Sensore disconnesso o Cavo Danneggiato. In attesa di reset."
-
-# MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4
-#: Marlin_main.cpp:4512
-msgid "Bed leveling failed. Sensor triggered too high. Waiting for reset."
-msgstr "Livellamento piano fallito. Risposta sensore troppo presto. In attesa di reset."
-
-# MSG_BEGIN_FILE_LIST
-#: Marlin_main.cpp:4405
-msgid "Begin file list"
-msgstr "Inizio lista file"
+# MSG_BED
+#: messages.c:15
+msgid "Bed"
+msgstr "Letto"
 
 # MSG_MENU_BELT_STATUS c=15 r=1
-#: ultralcd.cpp:2135
+#: ultralcd.cpp:2059
 msgid "Belt status"
-msgstr "Stato delle cinghie"
+msgstr "Stato cinghie"
 
 # MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:67
+#: messages.c:71
 msgid "Blackout occurred. Recover print?"
 msgstr "C'e stato un Blackout. Recuperare la stampa?"
 
-# MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4427
-msgid "Calibrate"
-msgstr "Calibra"
-
-# MSG_CALIBRATE_E c=20 r=1
-#: ultralcd.cpp:4526
-msgid "Calibrate E"
-msgstr "Calibra E"
+# 
+#: ultralcd.cpp:8297
+msgid "Calibrating home"
+msgstr "Calibrazione Home"
 
 # MSG_CALIBRATE_BED
-#: ultralcd.cpp:5186
+#: ultralcd.cpp:5757
 msgid "Calibrate XYZ"
 msgstr "Calibra XYZ"
 
@@ -242,13 +175,13 @@ msgstr "Calibra XYZ"
 msgid "Calibrate Z"
 msgstr "Calibra Z"
 
-# 
-#: ultralcd.cpp:7461
-msgid "Calibrating home"
-msgstr "Calibrazione Home"
+# MSG_CALIBRATE_PINDA c=17 r=1
+#: ultralcd.cpp:4654
+msgid "Calibrate"
+msgstr "Calibra"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3290
+#: ultralcd.cpp:3492
 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."
 
@@ -258,127 +191,32 @@ msgid "Calibrating Z"
 msgstr "Calibrando Z"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3290
+#: ultralcd.cpp:3492
 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_MENU_CALIBRATION
-#: messages.c:57
-msgid "Calibration"
-msgstr "Calibrazione"
-
 # MSG_HOMEYZ_DONE
-#: ultralcd.cpp:778
+#: ultralcd.cpp:816
 msgid "Calibration done"
 msgstr "Calibrazione completa"
 
+# MSG_MENU_CALIBRATION
+#: messages.c:61
+msgid "Calibration"
+msgstr "Calibrazione"
+
 # 
-#: ultralcd.cpp:4552
+#: ultralcd.cpp:4781
 msgid "Cancel"
 msgstr "Annulla"
 
-# MSG_SD_CANT_ENTER_SUBDIR
-#: cardreader.cpp:662
-msgid "Cannot enter subdir: "
-msgstr "Impossibile accedere alla sottocartella: "
-
-# MSG_SD_CANT_OPEN_SUBDIR
-#: cardreader.cpp:97
-msgid "Cannot open subdir"
-msgstr "Impossibile aprire la subdir"
-
-# MSG_SD_INSERTED
-#:
-msgid "Card inserted"
-msgstr "SD inserita"
-
 # MSG_SD_REMOVED
-#: ultralcd.cpp:7819
+#: ultralcd.cpp:8679
 msgid "Card removed"
 msgstr "SD rimossa"
 
-# 
-#: ultralcd.cpp:6087
-msgid "Change extruder"
-msgstr "Cambio estrusore"
-
-# MSG_FILAMENTCHANGE
-#: messages.c:37
-msgid "Change filament"
-msgstr "Cambia filamento"
-
-# MSG_CNG_SDCARD
-#: ultralcd.cpp:5777
-msgid "Change SD card"
-msgstr "Cambia memoria SD"
-
-# MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2474
-msgid "Change success!"
-msgstr "Cambio riuscito!"
-
-# MSG_CORRECTLY c=20
-#: ultralcd.cpp:2551
-msgid "Changed correctly?"
-msgstr "Cambiato correttamente?"
-
-# MSG_CHANGING_FILAMENT c=20
-#: ultralcd.cpp:1899
-msgid "Changing filament!"
-msgstr "Cambiando filam."
-
-# MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:77
-msgid "Checking bed     "
-msgstr "Verifica piano"
-
-# MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:7450
-msgid "Checking endstops"
-msgstr "Verifica finecorsa"
-
-# MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:7456
-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:7451
-msgid "Checking X axis  "
-msgstr "Verifica asse X"
-
-# MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:7452
-msgid "Checking Y axis  "
-msgstr "Verifica asse Y"
-
-# MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:7453
-msgid "Checking Z axis  "
-msgstr "Verifica asse Z"
-
-# MSG_ERR_CHECKSUM_MISMATCH
-#: cmdqueue.cpp:444
-msgid "checksum mismatch, Last Line: "
-msgstr "mancata corrispondenza di checksum, ultima riga:"
-
-# MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:49
-msgid "Choose extruder:"
-msgstr "Seleziona estrusore:"
-
-# MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:50
-msgid "Choose filament:"
-msgstr "Scegliere filamento:"
-
 # MSG_NOT_COLOR
-#: ultralcd.cpp:2563
+#: ultralcd.cpp:2718
 msgid "Color not correct"
 msgstr "Colore non puro"
 
@@ -388,34 +226,24 @@ msgid "Cooldown"
 msgstr "Raffredda"
 
 # 
-#: ultralcd.cpp:4108
-msgid "Copy selected language from XFLASH?"
-msgstr "Copiare la lingua selezionata da XFLASH?"
-
-# 
-#: ultralcd.cpp:4360
+#: ultralcd.cpp:4587
 msgid "Copy selected language?"
 msgstr "Copiare la lingua selezionata?"
 
-# 
-#: ultralcd.cpp:2013
-msgid "Crash"
-msgstr "Impatto"
-
 # MSG_CRASHDETECT_ON
 #: messages.c:27
 msgid "Crash det.   [on]"
-msgstr "Rilevam.imp. [on]"
+msgstr "Rileva.crash [on]"
 
 # MSG_CRASHDETECT_NA
 #: messages.c:25
 msgid "Crash det.  [N/A]"
-msgstr "Rilevam.imp.[N/A]"
+msgstr "Rileva.crash[N/A]"
 
 # MSG_CRASHDETECT_OFF
 #: messages.c:26
 msgid "Crash det.  [off]"
-msgstr "Rilevam.imp.[off]"
+msgstr "Rileva.crash[off]"
 
 # MSG_CRASH_DETECTED c=20 r=1
 #: messages.c:24
@@ -423,22 +251,27 @@ msgid "Crash detected."
 msgstr "Rilevato impatto."
 
 # 
-#: Marlin_main.cpp:608
+#: Marlin_main.cpp:600
 msgid "Crash detected. Resume print?"
 msgstr "Scontro rilevato. Riprendere la stampa?"
 
+# 
+#: ultralcd.cpp:1853
+msgid "Crash"
+msgstr "Impatto"
+
 # MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:5335
+#: ultralcd.cpp:5909
 msgid "Current"
 msgstr "Attuale"
 
 # MSG_DATE c=17 r=1
-#: ultralcd.cpp:2235
+#: ultralcd.cpp:2213
 msgid "Date:"
 msgstr "Data:"
 
 # MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5093
+#: ultralcd.cpp:5654
 msgid "Disable steppers"
 msgstr "Disabilita motori"
 
@@ -448,119 +281,69 @@ 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 letto non ancora imposta. Si prega di seguire il manuale, capitolo Primi Passi, sezione Calibrazione primo layer."
 
 # MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:4828
+#: ultralcd.cpp:5070
 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_CLEAN_NOZZLE_E c=20 r=8
-#: ultralcd.cpp:3890
-msgid "E calibration finished. Please clean the nozzle. Click when done."
-msgstr "Calibrazione E terminata. Si prega di pulire l'ugello. Click per continuare."
-
-# MSG_EXTRUDER_CORRECTION c=9
-#: ultralcd.cpp:4889
-msgid "E-correct"
-msgstr "Correzione-E"
-
-# 
-#: ultralcd.cpp:4640
-msgid "Eject"
-msgstr "Espellere"
+# MSG_EXTRUDER_CORRECTION c=10
+#: ultralcd.cpp:5134
+msgid "E-correct:"
+msgstr "Correzione-E:"
 
 # MSG_EJECT_FILAMENT c=17 r=1
-#: ultralcd.cpp:6081
+#: messages.c:53
 msgid "Eject filament"
 msgstr "Espelli filamento "
 
-# MSG_EJECT_FILAMENT1 c=17 r=1
-#: ultralcd.cpp:5603
-msgid "Eject filament 1"
-msgstr "Espelli filamento 1"
-
-# MSG_EJECT_FILAMENT2 c=17 r=1
-#: ultralcd.cpp:5604
-msgid "Eject filament 2"
-msgstr "Espellere filamento 2"
-
-# MSG_EJECT_FILAMENT3 c=17 r=1
-#: ultralcd.cpp:5605
-msgid "Eject filament 3"
-msgstr "Espelli filamento 3"
-
-# MSG_EJECT_FILAMENT4 c=17 r=1
-#: ultralcd.cpp:5606
-msgid "Eject filament 4"
-msgstr "Espellere filamento 4"
-
-# MSG_EJECT_FILAMENT5 c=17 r=1
-#: ultralcd.cpp:5607
-msgid "Eject filament 5"
-msgstr "Espelli filamento 5"
+# 
+#: ultralcd.cpp:4869
+msgid "Eject"
+msgstr "Espellere"
 
 # MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1339
+#: mmu.cpp:1434
 msgid "Ejecting filament"
 msgstr "Espellendo filamento "
 
-# MSG_END_FILE_LIST
-#: Marlin_main.cpp:4407
-msgid "End file list"
-msgstr "Fine lista file"
+# MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
+#: ultralcd.cpp:7917
+msgid "Endstop not hit"
+msgstr "Finecorsa fuori portata"
 
 # MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:7090
+#: ultralcd.cpp:7911
 msgid "Endstop"
 msgstr "Finecorsa"
 
-# MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
-#: ultralcd.cpp:7096
-msgid "Endstop not hit"
-msgstr "Finecorsa fuori portata"
-
 # MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:7078
+#: ultralcd.cpp:7899
 msgid "Endstops"
 msgstr "Finecorsa"
 
-# MSG_ENDSTOPS_HIT
-#: messages.c:30
-msgid "endstops hit: "
-msgstr "finecorsa colpito: "
-
-# MSG_LANGUAGE_NAME
-#: language.c:153
-msgid "English"
-msgstr "Italiano"
-
-# MSG_Enqueing
-#:
-msgid "enqueing \""
-msgstr "accodamento\""
-
 # MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6132
+#: ultralcd.cpp:6859
 msgid "Error - static memory has been overwritten"
 msgstr "Errore - la memoria statica e stata sovrascritta"
 
-# MSG_SD_ERR_WRITE_TO_FILE
-#: messages.c:78
-msgid "error writing to file"
-msgstr "errore scrittura sul file"
+# MSG_FSENS_NOT_RESPONDING c=20 r=4
+#: ultralcd.cpp:4475
+msgid "ERROR: Filament sensor is not responding, please check connection."
+msgstr "ERRORE: il sensore filam. non risponde,Controllare conness."
 
 # MSG_ERROR
 #: messages.c:28
 msgid "ERROR:"
 msgstr "ERRORE:"
 
-# MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4259
-msgid "ERROR: Filament sensor is not responding, please check connection."
-msgstr "ERRORE: il sensore filam. non risponde,Controllare conness."
+# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
+#: ultralcd.cpp:8304
+msgid "Extruder fan:"
+msgstr "Ventola estr:"
 
-# 
-#: Marlin_main.cpp:1006
-msgid "External SPI flash W25X20CL not responding."
-msgstr "Flash SPI W25X20CL esterno non risponde."
+# MSG_INFO_EXTRUDER c=15 r=1
+#: ultralcd.cpp:2244
+msgid "Extruder info"
+msgstr "Info estrusore"
 
 # MSG_MOVE_E
 #: messages.c:29
@@ -568,39 +351,14 @@ msgid "Extruder"
 msgstr "Estrusore"
 
 # 
-#: ultralcd.cpp:5633
-msgid "Extruder 1"
-msgstr "Estrusore 1"
-
-# 
-#: ultralcd.cpp:5634
-msgid "Extruder 2"
-msgstr "Estrusore 2"
-
-# 
-#: ultralcd.cpp:5635
-msgid "Extruder 3"
-msgstr "Estrusore 3"
-
-# 
-#: ultralcd.cpp:5636
-msgid "Extruder 4"
-msgstr "Estrusore 4"
-
-# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:7468
-msgid "Extruder fan:"
-msgstr "Ventola estrusore:"
-
-# MSG_INFO_EXTRUDER c=15 r=1
-#: ultralcd.cpp:2266
-msgid "Extruder info"
-msgstr "Info estrusore"
+#: ultralcd.cpp:6846
+msgid "Fail stats MMU"
+msgstr "Stat.fall. MMU"
 
 # MSG_FSENS_AUTOLOAD_ON c=17 r=1
-#: ultralcd.cpp:4927
+#: ultralcd.cpp:5168
 msgid "F. autoload  [on]"
-msgstr "Autocar.filam[on]"
+msgstr "Autocar.fil. [on]"
 
 # MSG_FSENS_AUTOLOAD_NA c=17 r=1
 #: messages.c:43
@@ -608,172 +366,137 @@ msgid "F. autoload [N/A]"
 msgstr "Autocar.fil.[N/A]"
 
 # MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-#: ultralcd.cpp:4929
+#: ultralcd.cpp:5170
 msgid "F. autoload [off]"
 msgstr "Autocar.fil.[off]"
 
 # 
-#: ultralcd.cpp:6112
+#: ultralcd.cpp:6843
 msgid "Fail stats"
-msgstr "Statistiche fallimenti"
-
-# 
-#: ultralcd.cpp:6115
-msgid "Fail stats MMU"
-msgstr "Statistiche fallimenti MMU"
+msgstr "Stat. fallimenti"
 
 # MSG_FAN_SPEED c=14
 #: messages.c:31
 msgid "Fan speed"
-msgstr "Velocita ventola"
+msgstr "Velocita vent."
 
 # MSG_SELFTEST_FAN c=20
-#: messages.c:74
+#: messages.c:78
 msgid "Fan test"
 msgstr "Test ventola"
 
 # MSG_FANS_CHECK_ON c=17 r=1
-#: ultralcd.cpp:5100
+#: ultralcd.cpp:5663
 msgid "Fans check   [on]"
-msgstr "Controllo ventole [on]"
+msgstr "Control.vent [on]"
 
 # MSG_FANS_CHECK_OFF c=17 r=1
-#: ultralcd.cpp:5102
+#: ultralcd.cpp:5665
 msgid "Fans check  [off]"
 msgstr "Control.vent[off]"
 
 # MSG_FSENSOR_ON
 #: messages.c:45
 msgid "Fil. sensor  [on]"
-msgstr "Sensor filam.[On]"
-
-# MSG_RESPONSE_POOR c=20 r=2
-#: Marlin_main.cpp:3146
-msgid "Fil. sensor response is poor, disable it?"
-msgstr "Risposta Sens. Fil. debole, disattivare? "
+msgstr "Sensore fil. [on]"
 
 # MSG_FSENSOR_NA
-#: ultralcd.cpp:4907
+#: ultralcd.cpp:5148
 msgid "Fil. sensor [N/A]"
-msgstr "Sensor filam[N/A]"
+msgstr "Sensore fil.[N/A]"
 
 # MSG_FSENSOR_OFF
 #: messages.c:44
 msgid "Fil. sensor [off]"
-msgstr "Sensor filam[off]"
+msgstr "Sensore fil.[off]"
 
 # 
-#: ultralcd.cpp:2013
+#: ultralcd.cpp:1852
 msgid "Filam. runouts"
 msgstr "Filam. esauriti"
 
-# MSG_FILAMENT c=17 r=1
-#: messages.c:30
-msgid "Filament"
-msgstr "Filamento"
-
 # MSG_FILAMENT_CLEAN c=20 r=2
 #: messages.c:32
 msgid "Filament extruding & with correct color?"
 msgstr "Filamento estruso & con il giusto colore?"
 
 # MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2559
+#: ultralcd.cpp:2714
 msgid "Filament not loaded"
 msgstr "Fil. non caricato"
 
 # MSG_FILAMENT_SENSOR c=20
-#: ultralcd.cpp:7144
+#: messages.c:84
 msgid "Filament sensor"
 msgstr "Sensore filam."
 
-# MSG_SELFTEST_FILAMENT_SENSOR c=18
-#: ultralcd.cpp:7477
-msgid "Filament sensor:"
-msgstr "Sensore filam.:"
-
 # MSG_FILAMENT_USED c=19 r=1
-#: ultralcd.cpp:2725
+#: ultralcd.cpp:2885
 msgid "Filament used"
 msgstr "Filamento utilizzato"
 
-# MSG_STATS_FILAMENTUSED c=20
-#: ultralcd.cpp:2142
-msgid "Filament used:  "
-msgstr "Filamento usato:"
+# MSG_PRINT_TIME c=19 r=1
+#: ultralcd.cpp:2886
+msgid "Print time"
+msgstr "Tempo di stampa"
 
 # MSG_FILE_INCOMPLETE c=20 r=2
-#: ultralcd.cpp:7595
+#: ultralcd.cpp:8432
 msgid "File incomplete. Continue anyway?"
 msgstr "File incompleto. Continuare comunque?"
 
-# MSG_SD_FILE_OPENED
-#: cardreader.cpp:395
-msgid "File opened: "
-msgstr "File aperto: "
-
-# MSG_SD_FILE_SELECTED
-#: cardreader.cpp:401
-msgid "File selected"
-msgstr "File selezionato"
-
 # MSG_FINISHING_MOVEMENTS c=20 r=1
 #: messages.c:40
 msgid "Finishing movements"
 msgstr "Finalizzando gli spostamenti"
 
 # MSG_V2_CALIBRATION c=17 r=1
-#: ultralcd.cpp:5177
+#: messages.c:105
 msgid "First layer cal."
-msgstr "Calibrazione primo layer."
+msgstr "Cal. primo strato"
 
 # MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:4740
+#: ultralcd.cpp:4982
 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:640
+#: mmu.cpp:724
 msgid "Fix the issue and then press button on MMU unit."
 msgstr "Risolvi il problema e quindi premi il bottone sull'unita MMU. "
 
 # MSG_FLOW
-#: ultralcd.cpp:6205
+#: ultralcd.cpp:6932
 msgid "Flow"
 msgstr "Flusso"
 
 # MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2228
+#: ultralcd.cpp:2206
 msgid "forum.prusa3d.com"
-msgstr "forum.prusa3d.com"
+msgstr ""
 
 # MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:71
+#: messages.c:75
 msgid "Front print fan?"
 msgstr "Ventola frontale?"
 
 # MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3101
+#: ultralcd.cpp:3294
 msgid "Front side[um]"
 msgstr "Fronte [um]"
 
 # MSG_SELFTEST_FANS
-#: ultralcd.cpp:7136
+#: ultralcd.cpp:7957
 msgid "Front/left fans"
 msgstr "Ventola frontale/sinistra"
 
 # MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:7066
+#: ultralcd.cpp:7887
 msgid "Heater/Thermistor"
 msgstr "Riscald./Termist."
 
-# MSG_HEATING
-#: messages.c:46
-msgid "Heating"
-msgstr "Riscaldamento..."
-
 # MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:7475
+#: Marlin_main.cpp:8467
 msgid "Heating disabled by safety timer."
 msgstr "Riscaldamento fermato dal timer di sicurezza."
 
@@ -782,188 +505,178 @@ msgstr "Riscaldamento fermato dal timer di sicurezza."
 msgid "Heating done."
 msgstr "Riscald. completo"
 
+# MSG_HEATING
+#: messages.c:46
+msgid "Heating"
+msgstr "Riscaldamento..."
+
 # MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:4719
+#: ultralcd.cpp:4961
 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:2229
+#: ultralcd.cpp:2207
 msgid "howto.prusa3d.com"
-msgstr "howto.prusa3d.com"
-
-# MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:4749
-msgid "I will run xyz calibration now. It will take approx. 12 mins."
-msgstr "Adesso avviero una Calibrazione XYZ. Puo durare circa 12 min."
+msgstr ""
 
-# MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:4757
-msgid "I will run z calibration now."
-msgstr "Adesso avviero la Calibrazione Z."
+# MSG_FILAMENTCHANGE
+#: messages.c:37
+msgid "Change filament"
+msgstr "Cambia filamento"
 
-# MSG_WIZARD_V2_CAL_2 c=20 r=12
-#: ultralcd.cpp:4822
-msgid "I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."
-msgstr "Adesso iniziero a stampare una linea e tu dovrai abbassare l'ugello poco per volta ruotando la manopola sino a raggiungere una altezza ottimale. Per favore dai uno sguardo all'immagine del nostro manuale, cap.Calibrazione."
+# MSG_CHANGE_SUCCESS
+#: ultralcd.cpp:2629
+msgid "Change success!"
+msgstr "Cambio riuscito!"
 
-# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: mesh_bed_calibration.cpp:2481
-msgid "Improving bed calibration point"
-msgstr "Perfezion. punto di calibraz. letto"
+# MSG_CORRECTLY c=20
+#: ultralcd.cpp:2706
+msgid "Changed correctly?"
+msgstr "Cambiato correttamente?"
 
-# MSG_WATCH
-#: messages.c:93
-msgid "Info screen"
-msgstr "Schermata info"
+# MSG_SELFTEST_CHECK_BED c=20
+#: messages.c:81
+msgid "Checking bed     "
+msgstr "Verifica piano"
 
-# MSG_INIT_SDCARD
-#: ultralcd.cpp:5785
-msgid "Init. SD card"
-msgstr "Inizializza scheda SD"
+# MSG_SELFTEST_CHECK_ENDSTOPS c=20
+#: ultralcd.cpp:8286
+msgid "Checking endstops"
+msgstr "Verifica finecorsa"
 
-# MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2459
-msgid "Insert filament"
-msgstr "Inserire filamento"
+# MSG_SELFTEST_CHECK_HOTEND c=20
+#: ultralcd.cpp:8292
+msgid "Checking hotend  "
+msgstr "Verifica ugello"
+
+# MSG_SELFTEST_CHECK_FSENSOR c=20
+#: messages.c:82
+msgid "Checking sensors "
+msgstr "Controllo sensori"
+
+# MSG_SELFTEST_CHECK_X c=20
+#: ultralcd.cpp:8287
+msgid "Checking X axis  "
+msgstr "Verifica asse X"
+
+# MSG_SELFTEST_CHECK_Y c=20
+#: ultralcd.cpp:8288
+msgid "Checking Y axis  "
+msgstr "Verifica asse Y"
+
+# MSG_SELFTEST_CHECK_Z c=20
+#: ultralcd.cpp:8289
+msgid "Checking Z axis  "
+msgstr "Verifica asse Z"
+
+# MSG_CHOOSE_EXTRUDER c=20 r=1
+#: messages.c:49
+msgid "Choose extruder:"
+msgstr "Seleziona estrusore:"
+
+# MSG_CHOOSE_FILAMENT c=20 r=1
+#: messages.c:50
+msgid "Choose filament:"
+msgstr "Scegliere filamento:"
+
+# MSG_FILAMENT c=17 r=1
+#: messages.c:30
+msgid "Filament"
+msgstr "Filamento"
 
-# MSG_FILAMENT_LOADING_T0 c=20 r=4
-#: messages.c:33
-msgid "Insert filament into extruder 1. Click when done."
-msgstr "Inserire filamento nell'estrusore 1. Click per continuare"
+# MSG_WIZARD_XYZ_CAL c=20 r=8
+#: ultralcd.cpp:4991
+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_FILAMENT_LOADING_T1 c=20 r=4
-#: messages.c:34
-msgid "Insert filament into extruder 2. Click when done."
-msgstr "Inserire filamento nell'estrusore 2. Click per continuare"
+# MSG_WIZARD_Z_CAL c=20 r=8
+#: ultralcd.cpp:4999
+msgid "I will run z calibration now."
+msgstr "Adesso avviero la Calibrazione Z."
 
-# MSG_FILAMENT_LOADING_T2 c=20 r=4
-#: messages.c:35
-msgid "Insert filament into extruder 3. Click when done."
-msgstr "Inserire filamento nell'estrusore 3. Click per continuare"
+# MSG_WIZARD_V2_CAL_2 c=20 r=12
+#: ultralcd.cpp:5064
+msgid "I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."
+msgstr "Adesso iniziero a stampare una linea e tu dovrai abbassare l'ugello poco per volta ruotando la manopola sino a raggiungere una altezza ottimale. Per favore dai uno sguardo all'immagine del nostro manuale, cap.Calibrazione."
 
-# MSG_FILAMENT_LOADING_T3 c=20 r=4
-#: messages.c:36
-msgid "Insert filament into extruder 4. Click when done."
-msgstr "Inserire filamento nell'estrusore 4. Click per continuare"
+# MSG_WATCH
+#: messages.c:99
+msgid "Info screen"
+msgstr "Schermata info"
 
 # 
-#: ultralcd.cpp:4782
+#: ultralcd.cpp:5024
 msgid "Is filament 1 loaded?"
 msgstr "Il filamento 1 e caricato?"
 
+# MSG_INSERT_FILAMENT c=20
+#: ultralcd.cpp:2614
+msgid "Insert filament"
+msgstr "Inserire filamento"
+
 # MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4785
+#: ultralcd.cpp:5027
 msgid "Is filament loaded?"
 msgstr "Il filamento e stato caricato?"
 
 # MSG_WIZARD_PLA_FILAMENT c=20 r=2
-#: ultralcd.cpp:4816
+#: ultralcd.cpp:5058
 msgid "Is it PLA filament?"
 msgstr "E' un filamento di PLA?"
 
 # MSG_PLA_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4561
+#: ultralcd.cpp:4790
 msgid "Is PLA filament loaded?"
 msgstr "E' stato caricato il filamento di PLA?"
 
 # MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:86
+#: messages.c:92
 msgid "Is steel sheet on heatbed?"
 msgstr "La piastra d'acciaio e sul piano riscaldato?"
 
-# MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20
-#: mesh_bed_calibration.cpp:2223
-msgid "Iteration "
-msgstr "Iterazione"
-
-# MSG_KILLED
-#: Marlin_main.cpp:7552
-msgid "KILLED. "
-msgstr "IN TILT."
-
-# 
-#: ultralcd.cpp:1960
-msgid "Last print"
-msgstr "Ultima stampa"
-
 # 
-#: ultralcd.cpp:1976
+#: ultralcd.cpp:1795
 msgid "Last print failures"
 msgstr "Fallimenti ultima stampa"
 
 # 
-#: ultralcd.cpp:2861
-msgid "Left"
-msgstr "Sinistra"
+#: ultralcd.cpp:1772
+msgid "Last print"
+msgstr "Ultima stampa"
 
 # MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:72
+#: messages.c:76
 msgid "Left hotend fan?"
 msgstr "Vent SX hotend?"
 
+# 
+#: ultralcd.cpp:3018
+msgid "Left"
+msgstr "Sinistra"
+
 # MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3099
+#: ultralcd.cpp:3292
 msgid "Left side [um]"
-msgstr "Lato sinistro [um]"
-
-# MSG_LEFT c=12 r=1
-#: ultralcd.cpp:2308
-msgid "Left:"
-msgstr "Sinistra:"
+msgstr "Sinistra  [um]"
 
 # 
-#: ultralcd.cpp:5107
+#: ultralcd.cpp:5680
 msgid "Lin. correction"
-msgstr "Correzione lin."
+msgstr "Correzione lineare"
 
 # MSG_BABYSTEP_Z
 #: messages.c:13
 msgid "Live adjust Z"
 msgstr "Compensazione Z"
 
-# MSG_LOAD_ALL c=17
-#: ultralcd.cpp:5575
-msgid "Load all"
-msgstr "Caricare tutti"
-
 # MSG_LOAD_FILAMENT c=17
 #: messages.c:51
 msgid "Load filament"
 msgstr "Carica filamento"
 
-# MSG_LOAD_FILAMENT_1 c=17
-#: ultralcd.cpp:5576
-msgid "Load filament 1"
-msgstr "Caricare fil. 1"
-
-# MSG_LOAD_FILAMENT_2 c=17
-#: ultralcd.cpp:5577
-msgid "Load filament 2"
-msgstr "Caricare fil. 2"
-
-# MSG_LOAD_FILAMENT_3 c=17
-#: ultralcd.cpp:5578
-msgid "Load filament 3"
-msgstr "Carica fil. 3"
-
-# MSG_LOAD_FILAMENT_4 c=17
-#: ultralcd.cpp:5579
-msgid "Load filament 4"
-msgstr "Caricare fil. 4"
-
-# MSG_LOAD_FILAMENT_5 c=17
-#: ultralcd.cpp:5582
-msgid "Load filament 5"
-msgstr "Caricare fil. 5"
-
-# 
-#: ultralcd.cpp:6079
-msgid "Load to nozzle"
-msgstr "Carica ugello"
-
 # MSG_LOADING_COLOR
-#: ultralcd.cpp:2499
+#: ultralcd.cpp:2654
 msgid "Loading color"
 msgstr "Caricando colore"
 
@@ -973,337 +686,232 @@ msgid "Loading filament"
 msgstr "Caricando filamento"
 
 # MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:7120
+#: ultralcd.cpp:7941
 msgid "Loose pulley"
 msgstr "Puleggia lenta"
 
-# MSG_M104_INVALID_EXTRUDER
-#: Marlin_main.cpp:7675
-msgid "M104 Invalid extruder "
-msgstr "M104 Estrusore non valido"
-
-# MSG_M105_INVALID_EXTRUDER
-#: Marlin_main.cpp:7678
-msgid "M105 Invalid extruder "
-msgstr "M105 Estrusore non valido"
-
-# MSG_M109_INVALID_EXTRUDER
-#: Marlin_main.cpp:7681
-msgid "M109 Invalid extruder "
-msgstr "M109 Estrusore non valido"
+# 
+#: ultralcd.cpp:6805
+msgid "Load to nozzle"
+msgstr "Carica ugello"
 
 # MSG_M117_V2_CALIBRATION c=25 r=1
-#: messages.c:53
+#: messages.c:55
 msgid "M117 First layer cal."
 msgstr "M117 Calibrazione primo layer."
 
-# MSG_M200_INVALID_EXTRUDER
-#: Marlin_main.cpp:5857
-msgid "M200 Invalid extruder "
-msgstr "M200 Estrusore non valido"
-
-# MSG_M218_INVALID_EXTRUDER
-#: Marlin_main.cpp:7684
-msgid "M218 Invalid extruder "
-msgstr "M218 Estrusore non valido"
-
-# MSG_M221_INVALID_EXTRUDER
-#: Marlin_main.cpp:7687
-msgid "M221 Invalid extruder "
-msgstr "M221 Estrusore non valido"
-
 # MSG_MAIN
-#: messages.c:54
+#: messages.c:56
 msgid "Main"
 msgstr "Menu principale"
 
-# MSG_MARK_FIL c=20 r=8
-#: ultralcd.cpp:3840
-msgid "Mark filament 100mm from extruder body. Click when done."
-msgstr "Segnare il filamento a 100 mm di distanza dal corpo dell'estrusore. Click per continuare."
-
-# 
-#: ultralcd.cpp:2896
-msgid "Measured skew"
-msgstr "Disassamento misurato"
-
-# MSG_MEASURED_SKEW c=15 r=1
-#: ultralcd.cpp:2335
-msgid "Measured skew:"
-msgstr "Distorsione misurata:"
-
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:55
+#: messages.c:59
 msgid "Measuring reference height of calibration point"
 msgstr "Misura altezza di rif. del punto di calib."
 
 # MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5192
+#: ultralcd.cpp:5763
 msgid "Mesh Bed Leveling"
-msgstr "Mesh livel. letto"
+msgstr "Livel. piatto"
+
+# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
+#: mmu.cpp:762
+msgid "MMU OK. Resuming position..."
+msgstr "MMU OK. riprendendo la posizione... "
+
+# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
+#: mmu.cpp:755
+msgid "MMU OK. Resuming temperature..."
+msgstr "MMU OK. Ripristino temperatura... "
+
+# 
+#: ultralcd.cpp:3059
+msgid "Measured skew"
+msgstr "Deviazione mis"
 
 # 
-#: ultralcd.cpp:1977
+#: ultralcd.cpp:1796
 msgid "MMU fails"
 msgstr "Fallimenti MMU"
 
 # 
-#: mmu.cpp:1399
+#: mmu.cpp:1613
 msgid "MMU load failed     "
 msgstr "Caricamento MMU fallito"
 
 # 
-#: ultralcd.cpp:1977
+#: ultralcd.cpp:1797
 msgid "MMU load fails"
 msgstr "Caricamenti MMU falliti"
 
-# 
-#: mmu.cpp:635
-msgid "MMU needs user attention."
-msgstr "Il MMU richiede attenzione dall'utente."
-
-# MSG_MMU_NEEDS_ATTENTION c=20 r=4
-#: mmu.cpp:359
-msgid "MMU needs user attention. Fix the issue and then press button on MMU unit."
-msgstr "MMU richiede l'attenzione dell'utente. Risolvi il problema e quindi premi il bottone sull'unità MMU. "
-
-# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:676
-msgid "MMU OK. Resuming position..."
-msgstr "MMU OK. riprendendo la posizione... "
-
-# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:669
-msgid "MMU OK. Resuming temperature..."
-msgstr "MMU OK. Ripristino temperatura... "
-
 # MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:687
+#: mmu.cpp:773
 msgid "MMU OK. Resuming..."
 msgstr "MMU OK. Riprendendo... "
 
-# 
-#: ultralcd.cpp:1994
-msgid "MMU power fails"
-msgstr "Mancanza corrente MMU"
-
-# 
-#: ultralcd.cpp:2241
-msgid "MMU2 connected"
-msgstr "MMU2 connessa"
-
 # MSG_STEALTH_MODE_OFF
-#: messages.c:84
+#: messages.c:90
 msgid "Mode     [Normal]"
-msgstr "Modo    [normale]"
+msgstr "Mod.    [normale]"
 
 # MSG_SILENT_MODE_ON
-#: messages.c:83
+#: messages.c:89
 msgid "Mode     [silent]"
-msgstr "Modo [silenzioso]"
+msgstr "Mod. [silenziosa]"
+
+# 
+#: mmu.cpp:719
+msgid "MMU needs user attention."
+msgstr "Il MMU richiede attenzione dall'utente."
+
+# 
+#: ultralcd.cpp:1823
+msgid "MMU power fails"
+msgstr "Manc. corr. MMU"
 
 # MSG_STEALTH_MODE_ON
-#: messages.c:85
+#: messages.c:91
 msgid "Mode    [Stealth]"
-msgstr "Modo [Silenziosa]"
+msgstr "Mod. [silenziosa]"
 
 # MSG_AUTO_MODE_ON
 #: messages.c:12
 msgid "Mode [auto power]"
-msgstr "Modo       [auto]"
+msgstr "Mod.       [auto]"
 
 # MSG_SILENT_MODE_OFF
-#: messages.c:82
+#: messages.c:88
 msgid "Mode [high power]"
-msgstr "Mode      [forte]"
+msgstr "Mod.      [forte]"
+
+# 
+#: ultralcd.cpp:2219
+msgid "MMU2 connected"
+msgstr "MMU2 connessa"
 
 # MSG_SELFTEST_MOTOR
-#: messages.c:79
+#: messages.c:83
 msgid "Motor"
 msgstr "Motore"
 
 # MSG_MOVE_AXIS
-#: ultralcd.cpp:5091
+#: ultralcd.cpp:5652
 msgid "Move axis"
 msgstr "Muovi asse"
 
 # MSG_MOVE_X
-#: ultralcd.cpp:4164
+#: ultralcd.cpp:4378
 msgid "Move X"
-msgstr "Muovi X"
+msgstr "Sposta X"
 
 # MSG_MOVE_Y
-#: ultralcd.cpp:4165
+#: ultralcd.cpp:4379
 msgid "Move Y"
-msgstr "Muovi Y"
+msgstr "Sposta Y"
 
 # MSG_MOVE_Z
-#: ultralcd.cpp:4166
+#: ultralcd.cpp:4380
 msgid "Move Z"
-msgstr "Muovi Z"
-
-# 
-#: ultralcd.cpp:2867
-msgid "N/A"
-msgstr "N/A"
-
-# 
-#: util.cpp:293
-msgid "New firmware version available:"
-msgstr "Nuova versione firmware disponibile:"
-
-# MSG_NO
-#: messages.c:58
-msgid "No"
-msgstr "No"
-
-# 
-#:
-msgid "No "
-msgstr "No"
-
-# MSG_ERR_NO_CHECKSUM
-#: cmdqueue.cpp:456
-msgid "No Checksum with line number, Last Line: "
-msgstr "Nessun checksum con numero di riga, ultima riga:"
+msgstr "Sposta Z"
 
 # MSG_NO_MOVE
-#: Marlin_main.cpp:4908
+#: Marlin_main.cpp:5292
 msgid "No move."
 msgstr "Nessun movimento."
 
 # MSG_NO_CARD
-#: ultralcd.cpp:6059
+#: ultralcd.cpp:6772
 msgid "No SD card"
 msgstr "Nessuna SD"
 
-# MSG_ERR_NO_THERMISTORS
-#: Marlin_main.cpp:4946
-msgid "No thermistors - no temperature"
-msgstr "No termistore - no temperatura"
+# 
+#: ultralcd.cpp:3024
+msgid "N/A"
+msgstr ""
+
+# MSG_NO
+#: messages.c:62
+msgid "No"
+msgstr ""
 
 # MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:7068
+#: ultralcd.cpp:7889
 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
+#: messages.c:79
 msgid "Not spinning"
 msgstr "Non gira"
 
 # MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4821
+#: ultralcd.cpp:5063
 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:4765
+#: ultralcd.cpp:5007
 msgid "Now I will preheat nozzle for PLA."
 msgstr "Adesso preriscaldero l'ugello per PLA."
 
-# 
-#: ultralcd.cpp:4756
-msgid "Now remove the test print from steel sheet."
-msgstr "Ora rimuovete la stampa di prova dalla piastra in acciaio."
-
 # MSG_NOZZLE
-#: messages.c:59
+#: messages.c:63
 msgid "Nozzle"
 msgstr "Ugello"
 
-# 
-#: ultralcd.cpp:1919
-msgid "Nozzle FAN"
-msgstr "Ventola estrusore"
-
-# MSG_INFO_NOZZLE_FAN c=11 r=1
-#: ultralcd.cpp:1537
-msgid "Nozzle FAN:"
-msgstr "Ventola dell'ugello:"
-
-# MSG_NOZZLE1
-#: ultralcd.cpp:5995
-msgid "Nozzle2"
-msgstr "Ugello2"
-
-# MSG_NOZZLE2
-#: ultralcd.cpp:5998
-msgid "Nozzle3"
-msgstr "Nozzle3"
-
-# MSG_OK
-#: Marlin_main.cpp:6333
-msgid "ok"
-msgstr "ok"
-
 # MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
-#: Marlin_main.cpp:1516
+#: Marlin_main.cpp:1519
 msgid "Old settings found. Default PID, Esteps etc. will be set."
-msgstr "Sono state trovate impostazioni vecchie. I valori di default di PID, Esteps etc. saranno impostati"
-
-# MSG_ENDSTOP_OPEN
-#: messages.c:29
-msgid "open"
-msgstr "apri"
+msgstr "Sono state trovate impostazioni vecchie. Verranno impostati i valori predefiniti di PID, Esteps etc."
 
-# MSG_SD_OPEN_FILE_FAIL
-#: messages.c:79
-msgid "open failed, File: "
-msgstr "apertura fallita, File: "
+# 
+#: ultralcd.cpp:4998
+msgid "Now remove the test print from steel sheet."
+msgstr "Ora rimuovete la stampa di prova dalla piastra in acciaio."
 
-# MSG_SD_OPENROOT_FAIL
-#: cardreader.cpp:196
-msgid "openRoot failed"
-msgstr "openRoot fallito"
+# 
+#: ultralcd.cpp:1722
+msgid "Nozzle FAN"
+msgstr "Ventola estrusore"
 
 # MSG_PAUSE_PRINT
-#: ultralcd.cpp:6029
+#: ultralcd.cpp:6735
 msgid "Pause print"
 msgstr "Metti in pausa"
 
-# MSG_PICK_Z
-#: ultralcd.cpp:3463
-msgid "Pick print"
-msgstr "Scegli stampa"
-
 # MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1741
+#: ultralcd.cpp:1606
 msgid "PID cal.           "
 msgstr "Calibrazione PID"
 
 # MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1747
+#: ultralcd.cpp:1612
 msgid "PID cal. finished"
 msgstr "Calib. PID completa"
 
 # MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5198
+#: ultralcd.cpp:5769
 msgid "PID calibration"
 msgstr "Calibrazione PID"
 
 # MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:808
+#: ultralcd.cpp:846
 msgid "PINDA Heating"
 msgstr "Riscaldamento PINDA"
 
 # MSG_PAPER c=20 r=8
-#: messages.c:60
+#: messages.c:64
 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_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:7060
-msgid "Please check :"
-msgstr "Verifica:"
-
-# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:94
-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_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:4830
+#: ultralcd.cpp:5072
 msgid "Please clean heatbed and then press the knob."
 msgstr "Per favore pulisci il piatto, poi premi la manopola."
 
@@ -1312,340 +920,240 @@ msgstr "Per favore pulisci il piatto, poi premi la manopola."
 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:7881
+msgid "Please check :"
+msgstr "Verifica:"
+
+# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
+#: messages.c:100
+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_WIZARD_LOAD_FILAMENT c=20 r=8
-#: ultralcd.cpp:4664
+#: ultralcd.cpp:4894
 msgid "Please insert PLA filament to the extruder, then press knob to load it."
 msgstr "Per favore inserisci il filamento di PLA nell'estrusore, poi premi la manopola per caricare."
 
-# 
-#: ultralcd.cpp:4660
-msgid "Please insert PLA filament to the first tube of MMU, then press the knob to load it."
-msgstr "Per favore inserite del filamento PLA nel primo tubo del MMU, poi premete la manopola per caricarlo."
-
-# MSG_WIZARD_INSERT_CORRECT_FILAMENT c=20 r=8
-#: ultralcd.cpp:4109
-msgid "Please load PLA filament and then resume Wizard by rebooting the printer."
-msgstr "Per favore carica filamento di PLA e riprendi il Wizard dopo aver riavviato la stampante."
-
 # MSG_PLEASE_LOAD_PLA c=20 r=4
-#: ultralcd.cpp:4566
+#: ultralcd.cpp:4795
 msgid "Please load PLA filament first."
 msgstr "Per favore prima carica il filamento di PLA."
 
 # MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3025
+#: Marlin_main.cpp:3064
 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:65
 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:68
 msgid "Please press the knob to unload filament"
 msgstr "Premete la manopola per scaricare il filamento "
 
+# 
+#: ultralcd.cpp:4889
+msgid "Please insert PLA filament to the first tube of MMU, then press the knob to load it."
+msgstr "Per favore inserite del filamento PLA nel primo tubo del MMU, poi premete la manopola per caricarlo."
+
 # MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:66
+#: messages.c:70
 msgid "Please pull out filament immediately"
 msgstr "Estrarre il filamento immediatamente"
 
 # MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1347
+#: mmu.cpp:1440
 msgid "Please remove filament and then press the knob."
 msgstr "Rimuovi il filamento e quindi premi la manopola. "
 
-# 
-#: ultralcd.cpp:4755
-msgid "Please remove shipping helpers first."
-msgstr "Per favore rimuovete i materiali da spedizione"
-
 # MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:70
+#: messages.c:74
 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:4052
+#: Marlin_main.cpp:4355
 msgid "Please run XYZ calibration first."
 msgstr "Esegui la calibrazione XYZ prima. "
 
 # MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1293
+#: mmu.cpp:1359
 msgid "Please update firmware in your MMU2. Waiting for reset."
 msgstr "Aggiorna il firmware sul tuo MMU2. In attesa di reset. "
 
-# 
-#: util.cpp:297
-msgid "Please upgrade."
-msgstr "Prego aggiornare."
-
 # MSG_PLEASE_WAIT c=20
-#: messages.c:62
+#: messages.c:66
 msgid "Please wait"
 msgstr "Attendere"
 
 # 
-#: ultralcd.cpp:2013
-msgid "Power failures"
-msgstr "Mancanza corrente"
+#: ultralcd.cpp:4997
+msgid "Please remove shipping helpers first."
+msgstr "Per favore rimuovete i materiali da spedizione"
 
-# MSG_POWERUP
-#: messages.c:69
-msgid "PowerUp"
-msgstr "Accendi"
+# MSG_PREHEAT_NOZZLE c=20
+#: messages.c:67
+msgid "Preheat the nozzle!"
+msgstr "Prerisc. ugello!"
 
 # MSG_PREHEAT
-#: ultralcd.cpp:6018
+#: ultralcd.cpp:6722
 msgid "Preheat"
 msgstr "Preriscalda"
 
-# MSG_PREHEAT_NOZZLE c=20
-#: messages.c:63
-msgid "Preheat the nozzle!"
-msgstr "Prerisc. ugello!"
-
 # MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:96
+#: messages.c:102
 msgid "Preheating nozzle. Please wait."
 msgstr "Preriscaldando l'ugello. Attendere prego."
 
 # 
-#: ultralcd.cpp:2350
-msgid "Preheating to load"
-msgstr "Preriscaldamento per caricare"
-
-# 
-#: ultralcd.cpp:2351
-msgid "Preheating to unload"
-msgstr "Preriscaldamento per scaricare"
-
-# MSG_PREPARE_FILAMENT c=20 r=1
-#: ultralcd.cpp:1911
-msgid "Prepare new filament"
-msgstr "Preparare il nuovo filamento"
+#: util.cpp:297
+msgid "Please upgrade."
+msgstr "Prego aggiornare."
 
 # MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:9150
+#: Marlin_main.cpp:10364
 msgid "Press knob to preheat nozzle and continue."
 msgstr "Premete la manopola per preriscaldare l'ugello e continuare."
 
 # 
-#: ultralcd.cpp:2313
-msgid "Press the knob"
-msgstr "Premere la manopola"
-
-# 
-#: mmu.cpp:639
-msgid "Press the knob to resume nozzle temperature."
-msgstr "Premete la manopola per recuperare la temperatura dell'ugello."
+#: ultralcd.cpp:1851
+msgid "Power failures"
+msgstr "Mancanza corrente"
 
 # MSG_PRINT_ABORTED c=20
-#: messages.c:65
+#: messages.c:69
 msgid "Print aborted"
 msgstr "Stampa interrotta"
 
 # 
-#: ultralcd.cpp:1921
-msgid "Print FAN"
-msgstr "Ventola di stampa"
+#: ultralcd.cpp:2455
+msgid "Preheating to load"
+msgstr "Preriscaldamento per caricare"
 
-# MSG_INFO_PRINT_FAN c=11 r=1
-#: ultralcd.cpp:1549
-msgid "Print FAN: "
-msgstr "Ventola di stampa:"
+# 
+#: ultralcd.cpp:2459
+msgid "Preheating to unload"
+msgstr "Preriscaldamento per scaricare"
 
 # MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:7471
+#: ultralcd.cpp:8307
 msgid "Print fan:"
-msgstr "Ventola di stampa:"
+msgstr "Vent.stam:"
 
 # MSG_CARD_MENU
 #: messages.c:21
 msgid "Print from SD"
 msgstr "Stampa da SD"
 
+# 
+#: ultralcd.cpp:2317
+msgid "Press the knob"
+msgstr "Premere la manopola"
+
 # MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1022
+#: ultralcd.cpp:1069
 msgid "Print paused"
 msgstr "Stampa in pausa"
 
-# MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2727
-msgid "Print time"
-msgstr "Tempo di stampa"
-
-# MSG_STATS_PRINTTIME c=20
-#: ultralcd.cpp:2151
-msgid "Print time:  "
-msgstr "Tempo di stampa:"
-
-# MSG_PRINTER_DISCONNECTED c=20 r=1
-#: ultralcd.cpp:607
-msgid "Printer disconnected"
-msgstr "Stampante sconnessa"
-
-# MSG_ERR_KILLED
-#: Marlin_main.cpp:7547
-msgid "Printer halted. kill() called!"
-msgstr "Stampante ferma. kill () chiamato!"
+# 
+#: mmu.cpp:723
+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:41
 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."
 
-# MSG_ERR_STOPPED
-#: messages.c:32
-msgid "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"
-msgstr "La stampante si è fermata a causa di errori. Correggete l'errore e usate M999 per riavviare. (La temperatura viene resettate. Impostatela dopo il riavvio)"
-
 # 
-#:
-msgid "Prusa i3 MK2 ready."
-msgstr "Prusa i3 MK2 pronta."
-
-# WELCOME_MSG c=20
-#:
-msgid "Prusa i3 MK2.5 ready."
-msgstr "Prusa i3 MK2.5 ready."
-
-# WELCOME_MSG c=20
-#:
-msgid "Prusa i3 MK3 ready."
-msgstr "Prusa i3 MK3 pronta."
-
-# 
-#:
-msgid "Prusa i3 MK3S OK."
-msgstr "Prusa i3 MK3S OK."
+#: ultralcd.cpp:1723
+msgid "Print FAN"
+msgstr "Ventola di stampa"
 
 # MSG_PRUSA3D
-#: ultralcd.cpp:2227
+#: ultralcd.cpp:2205
 msgid "prusa3d.com"
-msgstr "prusa3d.com"
+msgstr ""
 
 # MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3102
+#: ultralcd.cpp:3295
 msgid "Rear side [um]"
 msgstr "Retro [um]"
 
 # MSG_RECOVERING_PRINT c=20 r=1
-#: Marlin_main.cpp:8575
+#: Marlin_main.cpp:9764
 msgid "Recovering print    "
 msgstr "Recupero stampa"
 
-# MSG_REFRESH
-#:
-msgid "Refresh"
-msgstr "Refresh"
-
 # MSG_REMOVE_OLD_FILAMENT c=20 r=4
-#: mmu.cpp:744
+#: mmu.cpp:830
 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. "
 
-# MSG_M119_REPORT
-#: Marlin_main.cpp:5297
-msgid "Reporting endstop status"
-msgstr "Segnalazione dello stato finecorsa"
-
 # 
-#: Marlin_main.cpp:7076
-msgid "Resend"
-msgstr "Ripeti"
-
-# MSG_RESEND
-#: Marlin_main.cpp:6911
-msgid "Resend: "
-msgstr "Invia di nuovo: "
-
-# MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3103
-msgid "Reset"
-msgstr "Reset"
+#: 
+msgid "Prusa i3 MK3S OK."
+msgstr ""
 
 # MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5203
+#: ultralcd.cpp:5774
 msgid "Reset XYZ calibr."
 msgstr "Reset calibrazione XYZ."
 
+# MSG_BED_CORRECTION_RESET
+#: ultralcd.cpp:3296
+msgid "Reset"
+msgstr ""
+
 # MSG_RESUME_PRINT
-#: ultralcd.cpp:6033
+#: ultralcd.cpp:6742
 msgid "Resume print"
 msgstr "Riprendi stampa"
 
 # MSG_RESUMING_PRINT c=20 r=1
-#: messages.c:69
+#: messages.c:73
 msgid "Resuming print"
 msgstr "Riprendi stampa"
 
-# 
-#: ultralcd.cpp:2862
-msgid "Right"
-msgstr "Destra"
-
 # MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3100
+#: ultralcd.cpp:3293
 msgid "Right side[um]"
 msgstr "Destra [um]"
 
-# MSG_RIGHT c=12 r=1
-#: ultralcd.cpp:2309
-msgid "Right:"
-msgstr "Destra:"
-
-# MSG_E_CAL_KNOB c=20 r=8
-#: ultralcd.cpp:3835
-msgid "Rotate knob until mark reaches extruder body. Click when done."
-msgstr "Ruota la manopola finchè il segno raggiunga il corpo dell'estrusore. Clicca per continuare."
-
 # MSG_SECOND_SERIAL_ON c=17 r=1
-#: ultralcd.cpp:5119
+#: ultralcd.cpp:5692
 msgid "RPi port     [on]"
 msgstr "Porta RPi    [on]"
 
 # MSG_SECOND_SERIAL_OFF c=17 r=1
-#: ultralcd.cpp:5117
+#: ultralcd.cpp:5690
 msgid "RPi port    [off]"
 msgstr "Porta RPi   [off]"
 
 # MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4583
+#: ultralcd.cpp:4812
 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_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-#: ultralcd.cpp:5033
+#: ultralcd.cpp:5322
 msgid "SD card  [normal]"
 msgstr "Mem. SD [normale]"
 
-# MSG_SD_CARD_OK
-#: cardreader.cpp:202
-msgid "SD card ok"
-msgstr "Memoria SD ok"
-
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:4238
-msgid "SD card [FlshAir]"
-msgstr "Mem. SD [FlashAir]"
-
 # MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:5031
+#: ultralcd.cpp:5320
 msgid "SD card [flshAir]"
 msgstr "Mem. SD [flshAir]"
 
-# MSG_SD_INIT_FAIL
-#: cardreader.cpp:186
-msgid "SD init fail"
-msgstr "Inizializzazione Memoria SD Fallita"
-
-# MSG_SD_PRINTING_BYTE
-#: cardreader.cpp:516
-msgid "SD printing byte "
-msgstr "SD stampa byte "
+# 
+#: ultralcd.cpp:3019
+msgid "Right"
+msgstr "Destra"
 
 # MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
 #: messages.c:38
@@ -1653,282 +1161,207 @@ msgid "Searching bed calibration point"
 msgstr "Ricerca dei punti di calibrazione del piano"
 
 # MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5126
+#: ultralcd.cpp:5699
 msgid "Select language"
 msgstr "Seleziona lingua"
 
-# 
-#: ultralcd.cpp:4803
-msgid "Select nozzle preheat temperature which matches your material."
-msgstr "Selezionate la temperatura per il preriscaldamento dell'ugello adatta al vostro materiale."
-
-# 
-#: ultralcd.cpp:4552
-msgid "Select PLA filament:"
-msgstr "Selezionate filamento PLA:"
-
 # MSG_SELFTEST_OK
-#: ultralcd.cpp:6631
+#: ultralcd.cpp:7452
 msgid "Self test OK"
 msgstr "Autotest OK"
 
 # MSG_SELFTEST_START c=20
-#: ultralcd.cpp:6449
+#: ultralcd.cpp:7238
 msgid "Self test start  "
 msgstr "Avvia autotest"
 
 # MSG_SELFTEST
-#: ultralcd.cpp:5179
+#: ultralcd.cpp:5750
 msgid "Selftest         "
 msgstr "Autotest"
 
 # MSG_SELFTEST_ERROR
-#: ultralcd.cpp:7058
+#: ultralcd.cpp:7879
 msgid "Selftest error !"
 msgstr "Errore Autotest !"
 
 # MSG_SELFTEST_FAILED c=20
-#: messages.c:73
+#: messages.c:77
 msgid "Selftest failed  "
 msgstr "Autotest fallito"
 
 # MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1548
+#: Marlin_main.cpp:1551
 msgid "Selftest will be run to calibrate accurate sensorless rehoming."
 msgstr "Verra effettuato un self test per calibrare l'homing senza sensori"
 
 # 
-#: ultralcd.cpp:3819
-msgid "Sensor state"
-msgstr "Stato sensore"
+#: ultralcd.cpp:5045
+msgid "Select nozzle preheat temperature which matches your material."
+msgstr "Selezionate la temperatura per il preriscaldamento dell'ugello adatta al vostro materiale."
 
 # 
-#:
-msgid "Sensors info"
-msgstr "Info Sensori"
+#: ultralcd.cpp:4780
+msgid "Select PLA filament:"
+msgstr "Selezionate filamento PLA:"
 
 # MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3111
+#: ultralcd.cpp:3314
 msgid "Set temperature:"
 msgstr "Imposta temperatura:"
 
 # MSG_SETTINGS
-#: messages.c:81
+#: messages.c:86
 msgid "Settings"
 msgstr "Impostazioni"
 
-# 
-#: ultralcd.cpp:2899
-msgid "Severe skew"
-msgstr "Disassamento grave"
-
-# MSG_SEVERE_SKEW c=15 r=1
-#: ultralcd.cpp:2346
-msgid "Severe skew:"
-msgstr "Distorsione grave:"
-
 # MSG_SHOW_END_STOPS c=17 r=1
-#: ultralcd.cpp:5200
+#: ultralcd.cpp:5771
 msgid "Show end stops"
 msgstr "Stato finecorsa"
 
 # 
-#:
-msgid "Show pinda state"
-msgstr "Mostra stato pinda"
-
-# MSG_DWELL
-#: Marlin_main.cpp:3752
-msgid "Sleep..."
-msgstr "Sospensione..."
-
-# 
-#: ultralcd.cpp:2898
-msgid "Slight skew"
-msgstr "Disassamento lieve"
-
-# MSG_SLIGHT_SKEW c=15 r=1
-#: ultralcd.cpp:2342
-msgid "Slight skew:"
-msgstr "Distorsione leggera:"
+#: ultralcd.cpp:4025
+msgid "Sensor state"
+msgstr "Stato sensore"
 
 # MSG_FILE_CNT c=20 r=4
-#: 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."
 
-# 
-#: Marlin_main.cpp:4560
-msgid "Some problem encountered, Z-leveling enforced ..."
-msgstr "Sono stati rilevati problemi, avviato livellamento Z ..."
-
-# MSG_SORT_NONE c=17 r=1
-#: ultralcd.cpp:4250
-msgid "Sort:      [None]"
-msgstr "Ordine: [Nessuno]"
-
 # MSG_SORT_NONE c=17 r=1
-#: ultralcd.cpp:5043
-msgid "Sort:      [none]"
-msgstr "Ordina:    [none]"
-
-# MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:4248
-msgid "Sort:      [Time]"
-msgstr "Ordine: [Tempo]"
+#: ultralcd.cpp:5332
+msgid "Sort       [none]"
+msgstr "Ordina  [nessuno]"
 
 # MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:5041
-msgid "Sort:      [time]"
-msgstr "Ordina:    [time]"
+#: ultralcd.cpp:5330
+msgid "Sort       [time]"
+msgstr "Ordina    [cron.]"
 
-# MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:4249
-msgid "Sort:  [Alphabet]"
-msgstr "Ordine: [Alfabetico]"
+# 
+#: ultralcd.cpp:3062
+msgid "Severe skew:"
+msgstr "Devia.grave:"
 
 # MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:5042
-msgid "Sort:  [alphabet]"
-msgstr "Ordine: [alfabet]"
-
-# MSG_SORT_NONE c=17 r=1
-#:
-msgid "Sort:  [none]"
-msgstr "Ordine: [nessuno]"
-
-# MSG_SORT_TIME c=17 r=1
-#:
-msgid "Sort:  [time]"
-msgstr "Ordina: [time]"
+#: ultralcd.cpp:5331
+msgid "Sort   [alphabet]"
+msgstr "Ordine [alfabeti]"
 
 # MSG_SORTING c=20 r=1
-#: cardreader.cpp:745
+#: cardreader.cpp:746
 msgid "Sorting files"
 msgstr "Ordinando i file"
 
 # MSG_SOUND_LOUD c=17 r=1
-#: sound.h:5
+#: sound.h:6
 msgid "Sound      [loud]"
 msgstr "Suono     [forte]"
 
+# 
+#: ultralcd.cpp:3061
+msgid "Slight skew:"
+msgstr "Devia.lieve:"
+
 # MSG_SOUND_MUTE c=17 r=1
-#: sound.h:8
+#: 
 msgid "Sound      [mute]"
 msgstr "Suono      [mute]"
 
+# 
+#: Marlin_main.cpp:4871
+msgid "Some problem encountered, Z-leveling enforced ..."
+msgstr "Sono stati rilevati problemi, avviato livellamento Z ..."
+
 # MSG_SOUND_ONCE c=17 r=1
-#: sound.h:6
+#: sound.h:7
 msgid "Sound      [once]"
 msgstr "Suono   [singolo]"
 
 # MSG_SOUND_SILENT c=17 r=1
-#: sound.h:7
+#: sound.h:8
 msgid "Sound    [silent]"
 msgstr "Suono[silenzioso]"
 
 # MSG_SPEED
-#: ultralcd.cpp:6199
+#: ultralcd.cpp:6926
 msgid "Speed"
 msgstr "Velocita"
 
 # MSG_SELFTEST_FAN_YES c=19
-#: messages.c:76
+#: messages.c:80
 msgid "Spinning"
 msgstr "Gira"
 
-# MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:4959
-msgid "SpoolJoin    [on]"
-msgstr "SpoolJoin    [on]"
-
-# 
-#: ultralcd.cpp:4955
-msgid "SpoolJoin   [N/A]"
-msgstr "SpoolJoin   [N/A]"
-
-# MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:4963
-msgid "SpoolJoin   [off]"
-msgstr "SpoolJoin   [off]"
-
 # MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4065
+#: Marlin_main.cpp:4368
 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:6108
+#: ultralcd.cpp:6839
 msgid "Statistics  "
 msgstr "Statistiche"
 
-# MSG_STEPPER_TOO_HIGH
-#: stepper.cpp:345
-msgid "Steprate too high: "
-msgstr "Velocità passo troppo alta: "
-
 # MSG_STOP_PRINT
-#: messages.c:87
+#: messages.c:93
 msgid "Stop print"
 msgstr "Arresta stampa"
 
 # MSG_STOPPED
-#: messages.c:88
+#: messages.c:94
 msgid "STOPPED. "
 msgstr "ARRESTATO."
 
 # MSG_SUPPORT
-#: ultralcd.cpp:6117
+#: ultralcd.cpp:6848
 msgid "Support"
 msgstr "Supporto"
 
 # MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:7138
+#: ultralcd.cpp:7959
 msgid "Swapped"
 msgstr "Scambiato"
 
 # MSG_TEMP_CALIBRATION c=20 r=1
-#: messages.c:89
+#: messages.c:95
 msgid "Temp. cal.          "
 msgstr "Calib. temp. "
 
 # MSG_TEMP_CALIBRATION_ON c=20 r=1
-#: ultralcd.cpp:5113
+#: ultralcd.cpp:5686
 msgid "Temp. cal.   [on]"
-msgstr "Calib. temp. [ON]"
+msgstr "Calib. temp. [on]"
 
 # MSG_TEMP_CALIBRATION_OFF c=20 r=1
-#: ultralcd.cpp:5111
+#: ultralcd.cpp:5684
 msgid "Temp. cal.  [off]"
-msgstr "Calib. temp.[OFF]"
+msgstr "Calib. temp.[off]"
 
 # MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5209
+#: ultralcd.cpp:5780
 msgid "Temp. calibration"
 msgstr "Calib. Temp."
 
-# MSG_TEMPERATURE
-#: ultralcd.cpp:5089
-msgid "Temperature"
-msgstr "Temperatura"
-
 # MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3744
+#: ultralcd.cpp:3951
 msgid "Temperature calibration failed"
 msgstr "Calibrazione temperatura fallita"
 
-# MSG_PINDA_NOT_CALIBRATED c=20 r=4
-#: Marlin_main.cpp:1403
-msgid "Temperature calibration has not been run yet"
-msgstr "Calibrazione della temperatura non ancora eseguita"
-
 # MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:90
+#: messages.c:96
 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."
 
+# MSG_TEMPERATURE
+#: ultralcd.cpp:5650
+msgid "Temperature"
+msgstr ""
+
 # MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2273
+#: ultralcd.cpp:2251
 msgid "Temperatures"
 msgstr "Temperature"
 
@@ -1938,281 +1371,442 @@ msgid "There is still a need to make Z calibration. Please follow the manual, ch
 msgstr "E ancora necessario effettuare la calibrazione Z. Segui il manuale, capitolo Primi Passi, sezione Sequenza di Calibrazione. "
 
 # 
-#: ultralcd.cpp:2316
-msgid "to load filament"
-msgstr "per caricare il filamento"
-
-# 
-#: ultralcd.cpp:2317
-msgid "to unload filament"
-msgstr "per scaricare il filamento"
-
-# 
-#: ultralcd.cpp:1961
-msgid "Total"
-msgstr "Totale"
-
-# 
-#: ultralcd.cpp:1994
-msgid "Total failures"
-msgstr "Totale fallimenti"
-
-# 
-#: ultralcd.cpp:2752
+#: ultralcd.cpp:2908
 msgid "Total filament"
 msgstr "Filamento totale"
 
-# MSG_STATS_TOTALFILAMENT c=20
-#: ultralcd.cpp:2186
-msgid "Total filament :"
-msgstr "Filamento tot:"
-
 # 
-#: ultralcd.cpp:2754
+#: ultralcd.cpp:2908
 msgid "Total print time"
-msgstr "Tempo di stampa totale"
-
-# MSG_STATS_TOTALPRINTTIME c=20
-#: ultralcd.cpp:2203
-msgid "Total print time :"
-msgstr "Tempo stampa tot:"
-
-# MSG_ENDSTOP_HIT
-#: messages.c:28
-msgid "TRIGGERED"
-msgstr "ATTIVATO"
+msgstr "Tempo stampa totale"
 
 # MSG_TUNE
-#: ultralcd.cpp:6015
+#: ultralcd.cpp:6719
 msgid "Tune"
 msgstr "Regola"
 
 # 
-#: ultralcd.cpp:2249
-msgid "unknown"
-msgstr "sconosciuto"
-
-# 
-#: ultralcd.cpp:4640
+#: ultralcd.cpp:4869
 msgid "Unload"
 msgstr "Scarica"
 
 # 
-#: ultralcd.cpp:5617
-msgid "Unload all"
-msgstr "Rilasciare tutti"
-
-# MSG_UNLOAD_FILAMENT c=17
-#: messages.c:91
-msgid "Unload filament"
-msgstr "Scarica filam."
-
-# MSG_UNLOAD_FILAMENT_1 c=17
-#: ultralcd.cpp:5406
-msgid "Unload filament 1"
-msgstr "Rilasciare fil. 1"
+#: ultralcd.cpp:1820
+msgid "Total failures"
+msgstr "Totale fallimenti"
 
-# MSG_UNLOAD_FILAMENT_2 c=17
-#: ultralcd.cpp:5407
-msgid "Unload filament 2"
-msgstr "Scarica filam. 2"
+# 
+#: ultralcd.cpp:2324
+msgid "to load filament"
+msgstr "per caricare il filamento"
 
-# MSG_UNLOAD_FILAMENT_3 c=17
-#: ultralcd.cpp:5408
-msgid "Unload filament 3"
-msgstr "Scarica filam. 3"
+# 
+#: ultralcd.cpp:2328
+msgid "to unload filament"
+msgstr "per scaricare il filamento"
 
-# MSG_UNLOAD_FILAMENT_4 c=17
-#: ultralcd.cpp:5409
-msgid "Unload filament 4"
-msgstr "Scarica filam. 4"
+# MSG_UNLOAD_FILAMENT c=17
+#: messages.c:97
+msgid "Unload filament"
+msgstr "Scarica filamento"
 
 # MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:92
+#: messages.c:98
 msgid "Unloading filament"
 msgstr "Scaricando filamento"
 
 # 
-#: ultralcd.cpp:4639
-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."
+#: ultralcd.cpp:1773
+msgid "Total"
+msgstr "Totale"
 
 # MSG_USED c=19 r=1
-#: ultralcd.cpp:5334
+#: ultralcd.cpp:5908
 msgid "Used during print"
 msgstr "Usati nella stampa"
 
 # MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2276
+#: ultralcd.cpp:2254
 msgid "Voltages"
 msgstr "Voltaggi"
 
-# MSG_SD_VOL_INIT_FAIL
-#: cardreader.cpp:191
-msgid "volume.init failed"
-msgstr "volume.init fallito"
+# 
+#: ultralcd.cpp:2227
+msgid "unknown"
+msgstr "sconosciuto"
 
 # MSG_USERWAIT
-#: Marlin_main.cpp:4876
+#: Marlin_main.cpp:5263
 msgid "Wait for user..."
 msgstr "Attendendo utente..."
 
 # MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3255
+#: ultralcd.cpp:3458
 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:3219
+#: ultralcd.cpp:3422
 msgid "Waiting for PINDA probe cooling"
 msgstr "In attesa del raffreddamento della sonda PINDA"
 
+# 
+#: ultralcd.cpp:4868
+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:1508
+#: Marlin_main.cpp:1511
 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:1500
+#: Marlin_main.cpp:1503
 msgid "Warning: motherboard type changed."
 msgstr "Avviso: tipo di scheda madre cambiato"
 
 # MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1504
+#: Marlin_main.cpp:1507
 msgid "Warning: printer type changed."
 msgstr "Avviso: tipo di stampante cambiato."
 
-# MSG_FW_VERSION_UNKNOWN c=20 r=8
-#: Marlin_main.cpp:946
-msgid "WARNING: This is an unofficial, unsupported build. Use at your own risk!"
-msgstr "ATTENZIONE: Questo è un build non ufficiale, non supportato. Utilizzatelo a vostro rischio!"
-
 # MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3014
+#: Marlin_main.cpp:3054
 msgid "Was filament unload successful?"
 msgstr "Filamento scaricato con successo?"
 
 # MSG_SELFTEST_WIRINGERROR
-#: messages.c:80
+#: messages.c:85
 msgid "Wiring error"
 msgstr "Errore cablaggio"
 
 # MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5176
+#: ultralcd.cpp:5747
 msgid "Wizard"
-msgstr "Wizard"
-
-# MSG_SD_WORKDIR_FAIL
-#: messages.c:78
-msgid "workDir open failed"
-msgstr "workDir open fallito"
-
-# MSG_SD_WRITE_TO_FILE
-#: cardreader.cpp:424
-msgid "Writing to file: "
-msgstr "Scrittura su file: "
-
-# 
-#: ultralcd.cpp:4885
-msgid "X-correct"
-msgstr "Correzione-X"
+msgstr ""
 
 # MSG_XYZ_DETAILS c=19 r=1
-#: ultralcd.cpp:2265
+#: ultralcd.cpp:2243
 msgid "XYZ cal. details"
 msgstr "XYZ Cal. dettagli"
 
+# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
+#: messages.c:19
+msgid "XYZ calibration failed. Please consult the manual."
+msgstr "Calibrazione XYZ fallita. Si prega di consultare il manuale."
+
+# MSG_YES
+#: messages.c:104
+msgid "Yes"
+msgstr "Si"
+
+# MSG_WIZARD_QUIT c=20 r=8
+#: messages.c:103
+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:3715
+#: ultralcd.cpp:3922
 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:3712
+#: ultralcd.cpp:3919
 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
 msgstr "Calibrazion XYZ corretta. Assi X/Y leggermente storti. Ben fatto!"
 
+# 
+#: ultralcd.cpp:5130
+msgid "X-correct:"
+msgstr "Correzione-X:"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
+#: ultralcd.cpp:3916
+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:3693
+#: ultralcd.cpp:3900
 msgid "XYZ calibration compromised. Front calibration points not reachable."
 msgstr "Calibrazione XYZ compromessa. Punti anteriori non raggiungibili."
 
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8
-#: ultralcd.cpp:3699
-msgid "XYZ calibration compromised. Left front calibration point not reachable."
-msgstr "Calibrazione XYZ compromessa. Punto anteriore sinistro non raggiungibile."
-
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3696
+#: ultralcd.cpp:3903
 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:6166
+msgid "Load all"
+msgstr "Caricare tutti"
+
 # 
-#: ultralcd.cpp:3675
+#: ultralcd.cpp:3882
 msgid "XYZ calibration failed. Bed calibration point was not found."
 msgstr "Calibrazione XYZ fallita. Il punto di calibrazione sul letto non e' stato trovato."
 
 # 
-#: ultralcd.cpp:3681
+#: ultralcd.cpp:3888
 msgid "XYZ calibration failed. Front calibration points not reachable."
 msgstr "Calibrazione XYZ fallita. Punti anteriori non raggiungibili."
 
 # 
-#: ultralcd.cpp:3687
-msgid "XYZ calibration failed. Left front calibration point not reachable."
-msgstr "Calibrazione XYZ fallita. Punto anteriore sinistro non raggiungibile."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
-#: messages.c:19
-msgid "XYZ calibration failed. Please consult the manual."
-msgstr "Calibrazione XYZ fallita. Si prega di consultare il manuale."
-
-# 
-#: ultralcd.cpp:3684
+#: ultralcd.cpp:3891
 msgid "XYZ calibration failed. Right front calibration point not reachable."
 msgstr "Calibrazione XYZ fallita. Punto anteriore destro non raggiungibile."
 
-# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3709
-msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
-msgstr "Calibrazione XYZ OK. Gli assi X/Y sono perpendicolari. Complimenti!"
-
 # 
-#: ultralcd.cpp:2859
+#: ultralcd.cpp:3016
 msgid "Y distance from min"
 msgstr "Distanza Y dal min"
 
-# MSG_Y_DISTANCE_FROM_MIN c=20 r=1
-#: ultralcd.cpp:2306
-msgid "Y distance from min:"
-msgstr "Distanza Y da min:"
+# 
+#: ultralcd.cpp:5131
+msgid "Y-correct:"
+msgstr "Correzione-Y:"
+
+# MSG_OFF
+#: menu.cpp:426
+msgid " [off]"
+msgstr ""
 
 # 
-#: ultralcd.cpp:4886
-msgid "Y-correct"
-msgstr "Correzione-Y"
+#: messages.c:57
+msgid "Back"
+msgstr "Indietro"
 
-# MSG_YES
-#: messages.c:98
-msgid "Yes"
-msgstr "Si"
+# 
+#: ultralcd.cpp:5639
+msgid "Checks"
+msgstr "Controlli"
 
-# MSG_FW_VERSION_ALPHA c=20 r=8
-#: Marlin_main.cpp:930
-msgid "You are using firmware alpha version. This is development version. Using this version is not recommended and may cause printer damage."
-msgstr "State utilizzando una versione alpha del firmware. Questa versione è in via di sviluppo. L'utilizzo non è raccomandato e potrebbe causare danni alla stampante."
+# 
+#: ultralcd.cpp:7973
+msgid "False triggering"
+msgstr "Falso innesco"
 
-# MSG_FW_VERSION_BETA c=20 r=8
-#: Marlin_main.cpp:931
-msgid "You are using firmware beta version. This is development version. Using this version is not recommended and may cause printer damage."
-msgstr "State utilizzando una versione beta del firmware. Questa versione è in via di sviluppo. L'utilizzo non è raccomandato e potrebbe causare danni alla stampante."
+# 
+#: ultralcd.cpp:4030
+msgid "FINDA:"
+msgstr ""
 
-# MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:97
-msgid "You can always resume the Wizard from Calibration -> Wizard."
-msgstr "E possibile riprendere il Wizard in qualsiasi momento attraverso Calibrazione -> Wizard."
+# 
+#: ultralcd.cpp:5545
+msgid "Firmware   [none]"
+msgstr "Firmware[nessuno]"
+
+# 
+#: ultralcd.cpp:5551
+msgid "Firmware [strict]"
+msgstr "Firmware [esatto]"
+
+# 
+#: ultralcd.cpp:5548
+msgid "Firmware   [warn]"
+msgstr "Firmware [avviso]"
+
+# 
+#: messages.c:87
+msgid "HW Setup"
+msgstr "Installazione HW"
+
+# 
+#: ultralcd.cpp:4034
+msgid "IR:"
+msgstr ""
+
+# 
+#: ultralcd.cpp:7046
+msgid "Magnets comp.[N/A]"
+msgstr "Comp. Magneti[N/A]"
+
+# 
+#: ultralcd.cpp:7044
+msgid "Magnets comp.[Off]"
+msgstr "Comp. Magneti[off]"
+
+# 
+#: ultralcd.cpp:7043
+msgid "Magnets comp. [On]"
+msgstr "Comp. Magneti [on]"
+
+# 
+#: ultralcd.cpp:7035
+msgid "Mesh         [3x3]"
+msgstr "Griglia      [3x3]"
+
+# 
+#: ultralcd.cpp:7036
+msgid "Mesh         [7x7]"
+msgstr "Griglia      [7x7]"
+
+# 
+#: ultralcd.cpp:5677
+msgid "Mesh bed leveling"
+msgstr "Mesh livel. letto"
+
+# 
+#: Marlin_main.cpp:856
+msgid "MK3S firmware detected on MK3 printer"
+msgstr "Firmware MK3S rilevato su stampante MK3"
+
+# 
+#: ultralcd.cpp:5306
+msgid "MMU Mode [Normal]"
+msgstr "Modalita MMU [Normale]"
+
+# 
+#: ultralcd.cpp:5307
+msgid "MMU Mode[Stealth]"
+msgstr "Modalita MMU [Silenziosa]"
+
+# 
+#: ultralcd.cpp:4511
+msgid "Mode change in progress ..."
+msgstr "Cambio modalita in corso ..."
+
+# 
+#: ultralcd.cpp:5506
+msgid "Model      [none]"
+msgstr "Modello [nessuno]"
+
+# 
+#: ultralcd.cpp:5512
+msgid "Model    [strict]"
+msgstr "Modello  [esatto]"
+
+# 
+#: ultralcd.cpp:5509
+msgid "Model      [warn]"
+msgstr "Modello  [avviso]"
+
+# 
+#: ultralcd.cpp:5467
+msgid "Nozzle d.  [0.25]"
+msgstr "Diam.Ugello[0.25]"
+
+# 
+#: ultralcd.cpp:5470
+msgid "Nozzle d.  [0.40]"
+msgstr "Diam.Ugello[0.40]"
+
+# 
+#: ultralcd.cpp:5473
+msgid "Nozzle d.  [0.60]"
+msgstr "Diam.Ugello[0.60]"
+
+# 
+#: ultralcd.cpp:5421
+msgid "Nozzle     [none]"
+msgstr "Ugello  [nessuno]"
+
+# 
+#: ultralcd.cpp:5427
+msgid "Nozzle   [strict]"
+msgstr "Ugello   [esatto]"
+
+# 
+#: ultralcd.cpp:5424
+msgid "Nozzle     [warn]"
+msgstr "Ugello   [avviso]"
+
+# 
+#: util.cpp:510
+msgid "G-code sliced for a different level. Continue?"
+msgstr "G-code processato per un livello diverso. Continuare?"
+
+# 
+#: util.cpp:516
+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:427
+msgid "G-code sliced for a different printer type. Continue?"
+msgstr "G-code processato per una stampante diversa. Continuare?"
+
+# 
+#: util.cpp:433
+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:477
+msgid "G-code sliced for a newer firmware. Continue?"
+msgstr "G-code processato per un firmware piu recente. Continuare?"
+
+# 
+#: util.cpp:483
+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:4026
+msgid "PINDA:"
+msgstr ""
+
+# 
+#: ultralcd.cpp:2465
+msgid "Preheating to cut"
+msgstr "Preriscaldamento per taglio"
+
+# 
+#: ultralcd.cpp:2462
+msgid "Preheating to eject"
+msgstr "Preriscaldamento per espulsione"
+
+# 
+#: util.cpp:390
+msgid "Printer nozzle diameter differs from the G-code. Continue?"
+msgstr "Diametro ugello diverso da G-Code. Continuare?"
+
+# 
+#: util.cpp:397
+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."
+
+# 
+#: ultralcd.cpp:6683
+msgid "Rename"
+msgstr "Rinomina"
+
+# 
+#: ultralcd.cpp:6679
+msgid "Select"
+msgstr "Seleziona"
+
+# 
+#: ultralcd.cpp:2245
+msgid "Sensor info"
+msgstr "Info Sensore"
+
+# 
+#: messages.c:58
+msgid "Sheet"
+msgstr "Piano"
+
+# 
+#: sound.h:9
+msgid "Sound    [assist]"
+msgstr "Suono   [assist.]"
+
+# 
+#: ultralcd.cpp:5637
+msgid "Steel sheets"
+msgstr "Piani d'acciaio"
+
+# 
+#: ultralcd.cpp:5132
+msgid "Z-correct:"
+msgstr "Correzione-Z:"
+
+# 
+#: ultralcd.cpp:7038
+msgid "Z-probe nr.    [1]"
+msgstr "Z-probe nr.    [1]"
+
+# 
+#: ultralcd.cpp:7040
+msgid "Z-probe nr.    [3]"
+msgstr "Z-probe nr.    [3]"
 
-# MSG_MEASURED_OFFSET
-#: ultralcd.cpp:2914
-msgid "[0;0] point offset"
-msgstr "[0;0] punto offset"

+ 847 - 1253
lang/po/new/pl.po

@@ -1,46 +1,19 @@
+# Translation of Prusa-Firmware into Polish.
+#
 msgid ""
 msgstr ""
-"Language: pl\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || n%10 == 1 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 12 && n%100 <= 14)) ? 2 : 3);\n"
-"X-Generator: PhraseApp (phraseapp.com)\n"
-
-# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
-#: ultralcd.cpp:4219
-msgid "\e[2JCrash detection can\e[1;0Hbe turned on only in\e[2;0HNormal mode"
-msgstr "\e[2JWykrywanie zderzen moze\e[1;0Hbyc wlaczone tylko w\e[2;0Htrybie Normalnym"
-
-# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
-#: ultralcd.cpp:4231
-msgid "\e[2JWARNING:\e[1;0HCrash detection\e[2;0Hdisabled in\e[3;0HStealth mode"
-msgstr "\e[2JUWAGA:\e[1;0HWykrywanie zderzen\e[2;0Hwylaczone w\e[3;0Htrybie Stealth"
-
-# MSG_PLANNER_BUFFER_BYTES
-#: Marlin_main.cpp:1184
-msgid "  PlannerBufferBytes: "
-msgstr " PlannerBufferBytes: "
-
-# MSG_EXTRUDER_CORRECTION_OFF c=6
-#: ultralcd.cpp:6312
-msgid "  [off"
-msgstr "[wyl"
-
-# MSG_ERR_COLD_EXTRUDE_STOP
-#: planner.cpp:761
-msgid " cold extrusion prevented"
-msgstr " nie dopuszczono do zimnej ekstruzji"
-
-# MSG_FREE_MEMORY
-#: Marlin_main.cpp:1182
-msgid " Free Memory: "
-msgstr " Wolna pamiec:"
-
-# MSG_CONFIGURATION_VER
-#: Marlin_main.cpp:1172
-msgid " Last Updated: "
-msgstr "Ostatnia aktualizacja: "
+"Language: pl\n"
+"Project-Id-Version: Prusa-Firmware\n"
+"POT-Creation-Date: Sun, Sep 22, 2019 1:34:25 PM\n"
+"PO-Revision-Date: Sun, Sep 22, 2019 1:34:25 PM\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"
 
 # MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
 #: messages.c:39
@@ -48,84 +21,74 @@ msgid " of 4"
 msgstr " z 4"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:56
+#: messages.c:60
 msgid " of 9"
 msgstr " z 9"
 
-# MSG_FACTOR
-#: ultralcd.cpp:6008
-msgid " \002 Fact"
-msgstr " \002 Fact"
+# MSG_MEASURED_OFFSET
+#: ultralcd.cpp:3089
+msgid "[0;0] point offset"
+msgstr "[0;0] przesun.punktu"
 
-# MSG_MAX
-#: ultralcd.cpp:6007
-msgid " \002 Max"
-msgstr " \002 Max"
+# 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_MIN
-#: ultralcd.cpp:6006
-msgid " \002 Min"
-msgstr " \002 Min"
+# 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:2353
+#: ultralcd.cpp:2472
 msgid ">Cancel"
 msgstr ">Anuluj"
 
-# MSG_BABYSTEPPING_Z c=20
-#: ultralcd.cpp:3043
-msgid "Adjusting Z"
-msgstr "Dostrajanie Z"
-
-# MSG_ALL c=19 r=1
-#: messages.c:11
-msgid "All"
-msgstr "Wszystko"
+# MSG_BABYSTEPPING_Z c=15
+#: ultralcd.cpp:3209
+msgid "Adjusting Z:"
+msgstr "Ustawianie Z:"
 
 # MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:7459
+#: ultralcd.cpp:8295
 msgid "All correct      "
 msgstr "Wszystko OK "
 
 # MSG_WIZARD_DONE c=20 r=8
-#: messages.c:95
+#: messages.c:101
 msgid "All is done. Happy printing!"
 msgstr "Gotowe. Udanego drukowania!"
 
 # 
-#: ultralcd.cpp:2109
+#: ultralcd.cpp:2009
 msgid "Ambient"
 msgstr "Otoczenie"
 
 # MSG_PRESS c=20
-#: ultralcd.cpp:2463
+#: ultralcd.cpp:2618
 msgid "and press the knob"
 msgstr "i nacisnij pokretlo"
 
 # MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3330
+#: ultralcd.cpp:3529
 msgid "Are left and right Z~carriages all up?"
-msgstr "Obydwa konce osi dojechaly do gornych ogranicznikow?"
-
-# MSG_ADJUSTZ
-#: ultralcd.cpp:2600
-msgid "Auto adjust Z?"
-msgstr "Autodostroic Z?"
+msgstr "Obydwa konce osi sa na szczycie?"
 
 # MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:4706
-msgid "Auto deplete [on]"
-msgstr "SpoolJoin [wl]"
+#: ultralcd.cpp:5200
+msgid "SpoolJoin    [on]"
+msgstr "SpoolJoin    [wl]"
 
 # 
-#: ultralcd.cpp:4702
-msgid "Auto deplete[N/A]"
-msgstr "SpoolJoin [nd]"
+#: ultralcd.cpp:5196
+msgid "SpoolJoin   [N/A]"
+msgstr "SpoolJoin   [N/D]"
 
 # MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:4710
-msgid "Auto deplete[off]"
-msgstr "SpoolJoin [wyl]"
+#: ultralcd.cpp:5204
+msgid "SpoolJoin   [off]"
+msgstr "SpoolJoin   [wyl]"
 
 # MSG_AUTO_HOME
 #: messages.c:11
@@ -133,47 +96,32 @@ msgid "Auto home"
 msgstr "Auto zerowanie"
 
 # MSG_AUTOLOAD_FILAMENT c=17
-#: ultralcd.cpp:6091
+#: ultralcd.cpp:6822
 msgid "AutoLoad filament"
-msgstr "AutoLadowanie fil."
+msgstr "Autoladowanie fil."
 
 # MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4246
+#: ultralcd.cpp:4462
 msgid "Autoloading filament available only when filament sensor is turned on..."
 msgstr "Autoladowanie filamentu dostepne tylko gdy czujnik filamentu jest wlaczony..."
 
 # MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2655
+#: ultralcd.cpp:2813
 msgid "Autoloading filament is active, just press the knob and insert filament..."
 msgstr "Autoladowanie filamentu wlaczone, nacisnij pokretlo i wsun filament..."
 
-# MSG_SELFTEST_AXIS
-#: ultralcd.cpp:7130
-msgid "Axis"
-msgstr "Os"
-
 # MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:7128
+#: ultralcd.cpp:7949
 msgid "Axis length"
 msgstr "Dlugosc osi"
 
-# MSG_BABYSTEPPING_X
-#: ultralcd.cpp:2481
-msgid "Babystepping X"
-msgstr "Babystepping X"
-
-# MSG_BABYSTEPPING_Y
-#: ultralcd.cpp:2484
-msgid "Babystepping Y"
-msgstr "Babystepping Y"
-
-# MSG_BED
-#: messages.c:15
-msgid "Bed"
-msgstr "Stol"
+# MSG_SELFTEST_AXIS
+#: ultralcd.cpp:7951
+msgid "Axis"
+msgstr "Os"
 
 # MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:7072
+#: ultralcd.cpp:7893
 msgid "Bed / Heater"
 msgstr "Stol / Grzanie"
 
@@ -188,52 +136,37 @@ msgid "Bed Heating"
 msgstr "Grzanie stolu.."
 
 # MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5197
+#: ultralcd.cpp:5768
 msgid "Bed level correct"
-msgstr "Korekta poziomowania stolu"
+msgstr "Korekta stolu"
 
 # MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
 #: messages.c:18
 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_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4
-#: Marlin_main.cpp:4508
-msgid "Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset."
-msgstr "Poziomowanie stolu nieudane. Sensor odlacz. lub uszkodz. przewod. Czekam na reset."
-
-# MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4
-#: Marlin_main.cpp:4512
-msgid "Bed leveling failed. Sensor triggered too high. Waiting for reset."
-msgstr "Kalibracja Z nieudana. Sensor aktywowal za wysoko. Czekam na reset."
-
-# MSG_BEGIN_FILE_LIST
-#: Marlin_main.cpp:4405
-msgid "Begin file list"
-msgstr "Poczatek listy plikowogranicznikow"
+# MSG_BED
+#: messages.c:15
+msgid "Bed"
+msgstr "Stol"
 
 # MSG_MENU_BELT_STATUS c=15 r=1
-#: ultralcd.cpp:2135
+#: ultralcd.cpp:2059
 msgid "Belt status"
 msgstr "Stan paskow"
 
 # MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:67
+#: messages.c:71
 msgid "Blackout occurred. Recover print?"
 msgstr "Wykryto zanik napiecia. Kontynowac?"
 
-# MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4427
-msgid "Calibrate"
-msgstr "Kalibruj"
-
-# MSG_CALIBRATE_E c=20 r=1
-#: ultralcd.cpp:4526
-msgid "Calibrate E"
-msgstr "Kalibruj E"
+# 
+#: ultralcd.cpp:8297
+msgid "Calibrating home"
+msgstr "Zerowanie osi"
 
 # MSG_CALIBRATE_BED
-#: ultralcd.cpp:5186
+#: ultralcd.cpp:5757
 msgid "Calibrate XYZ"
 msgstr "Kalibracja XYZ"
 
@@ -242,13 +175,13 @@ msgstr "Kalibracja XYZ"
 msgid "Calibrate Z"
 msgstr "Kalibruj Z"
 
-# 
-#: ultralcd.cpp:7461
-msgid "Calibrating home"
-msgstr "Zerowanie osi"
+# MSG_CALIBRATE_PINDA c=17 r=1
+#: ultralcd.cpp:4654
+msgid "Calibrate"
+msgstr "Kalibruj"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3290
+#: ultralcd.cpp:3492
 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."
 
@@ -258,127 +191,32 @@ msgid "Calibrating Z"
 msgstr "Kalibruje Z"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3290
+#: ultralcd.cpp:3492
 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_MENU_CALIBRATION
-#: messages.c:57
-msgid "Calibration"
-msgstr "Kalibracja"
-
 # MSG_HOMEYZ_DONE
-#: ultralcd.cpp:778
+#: ultralcd.cpp:816
 msgid "Calibration done"
 msgstr "Kalibracja OK"
 
+# MSG_MENU_CALIBRATION
+#: messages.c:61
+msgid "Calibration"
+msgstr "Kalibracja"
+
 # 
-#: ultralcd.cpp:4552
+#: ultralcd.cpp:4781
 msgid "Cancel"
 msgstr "Anuluj"
 
-# MSG_SD_CANT_ENTER_SUBDIR
-#: cardreader.cpp:662
-msgid "Cannot enter subdir: "
-msgstr "Brak dostepu do subdir: "
-
-# MSG_SD_CANT_OPEN_SUBDIR
-#: cardreader.cpp:97
-msgid "Cannot open subdir"
-msgstr "Nie moge otworzyc subdir"
-
-# MSG_SD_INSERTED
-#:
-msgid "Card inserted"
-msgstr "Karta wlozona"
-
 # MSG_SD_REMOVED
-#: ultralcd.cpp:7819
+#: ultralcd.cpp:8679
 msgid "Card removed"
 msgstr "Karta wyjeta"
 
-# 
-#: ultralcd.cpp:6087
-msgid "Change extruder"
-msgstr "Zmiana ekstrudera"
-
-# MSG_FILAMENTCHANGE
-#: messages.c:37
-msgid "Change filament"
-msgstr "Wymiana filamentu"
-
-# MSG_CNG_SDCARD
-#: ultralcd.cpp:5777
-msgid "Change SD card"
-msgstr "Wymien karte SD"
-
-# MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2474
-msgid "Change success!"
-msgstr "Wymiana ok!"
-
-# MSG_CORRECTLY c=20
-#: ultralcd.cpp:2551
-msgid "Changed correctly?"
-msgstr "Wymiana ok?"
-
-# MSG_CHANGING_FILAMENT c=20
-#: ultralcd.cpp:1899
-msgid "Changing filament!"
-msgstr "Wymiana filamentu!"
-
-# MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:77
-msgid "Checking bed     "
-msgstr "Kontrola stolu"
-
-# MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:7450
-msgid "Checking endstops"
-msgstr "Kontrola krancowek"
-
-# MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:7456
-msgid "Checking hotend  "
-msgstr "Kontrola hotendu"
-
-# MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:78
-msgid "Checking sensors "
-msgstr "Sprawdzanie czujnikow"
-
-# MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:7451
-msgid "Checking X axis  "
-msgstr "Kontrola osi X"
-
-# MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:7452
-msgid "Checking Y axis  "
-msgstr "Kontrola osi Y"
-
-# MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:7453
-msgid "Checking Z axis  "
-msgstr "Kontrola osi Z"
-
-# MSG_ERR_CHECKSUM_MISMATCH
-#: cmdqueue.cpp:444
-msgid "checksum mismatch, Last Line: "
-msgstr "suma kontrolna niezgodna, ostatnia linia:"
-
-# MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:49
-msgid "Choose extruder:"
-msgstr "Wybierz ekstruder:"
-
-# MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:50
-msgid "Choose filament:"
-msgstr "Wybierz filament:"
-
 # MSG_NOT_COLOR
-#: ultralcd.cpp:2563
+#: ultralcd.cpp:2718
 msgid "Color not correct"
 msgstr "Kolor zanieczysz."
 
@@ -388,20 +226,10 @@ msgid "Cooldown"
 msgstr "Chlodzenie"
 
 # 
-#: ultralcd.cpp:4108
-msgid "Copy selected language from XFLASH?"
-msgstr "Skopiowac wybrany jezyk z XFLASH?"
-
-# 
-#: ultralcd.cpp:4360
+#: ultralcd.cpp:4587
 msgid "Copy selected language?"
 msgstr "Skopiowac wybrany jezyk?"
 
-# 
-#: ultralcd.cpp:2013
-msgid "Crash"
-msgstr "Zderzenie"
-
 # MSG_CRASHDETECT_ON
 #: messages.c:27
 msgid "Crash det.   [on]"
@@ -410,7 +238,7 @@ msgstr "Wykr.zderzen [wl]"
 # MSG_CRASHDETECT_NA
 #: messages.c:25
 msgid "Crash det.  [N/A]"
-msgstr "Wykr.zderzen[n/d]"
+msgstr "Wykr.zderzen[N/D]"
 
 # MSG_CRASHDETECT_OFF
 #: messages.c:26
@@ -423,24 +251,29 @@ msgid "Crash detected."
 msgstr "Zderzenie wykryte"
 
 # 
-#: Marlin_main.cpp:608
+#: Marlin_main.cpp:600
 msgid "Crash detected. Resume print?"
 msgstr "Wykryto zderzenie. Wznowic druk?"
 
+# 
+#: ultralcd.cpp:1853
+msgid "Crash"
+msgstr "Zderzenie"
+
 # MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:5335
+#: ultralcd.cpp:5909
 msgid "Current"
 msgstr "Aktualne"
 
 # MSG_DATE c=17 r=1
-#: ultralcd.cpp:2235
+#: ultralcd.cpp:2213
 msgid "Date:"
 msgstr "Data:"
 
 # MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5093
+#: ultralcd.cpp:5654
 msgid "Disable steppers"
-msgstr "Wylaczenie silnikow"
+msgstr "Wylacz silniki"
 
 # MSG_BABYSTEP_Z_NOT_SET c=20 r=12
 #: messages.c:14
@@ -448,119 +281,69 @@ 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_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:4828
+#: ultralcd.cpp:5070
 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_CLEAN_NOZZLE_E c=20 r=8
-#: ultralcd.cpp:3890
-msgid "E calibration finished. Please clean the nozzle. Click when done."
-msgstr "Kalibracja E zakonczona. Oczysc dysze i potwierdz naciskajac pokretlo. "
-
-# MSG_EXTRUDER_CORRECTION c=9
-#: ultralcd.cpp:4889
-msgid "E-correct"
-msgstr "Korekcja E"
-
-# 
-#: ultralcd.cpp:4640
-msgid "Eject"
-msgstr "Wysun"
+# MSG_EXTRUDER_CORRECTION c=10
+#: ultralcd.cpp:5134
+msgid "E-correct:"
+msgstr "Korekcja-E:"
 
 # MSG_EJECT_FILAMENT c=17 r=1
-#: ultralcd.cpp:6081
+#: messages.c:53
 msgid "Eject filament"
 msgstr "Wysun filament"
 
-# MSG_EJECT_FILAMENT1 c=17 r=1
-#: ultralcd.cpp:5603
-msgid "Eject filament 1"
-msgstr "Wysun filament 1"
-
-# MSG_EJECT_FILAMENT2 c=17 r=1
-#: ultralcd.cpp:5604
-msgid "Eject filament 2"
-msgstr "Wysun filament 2"
-
-# MSG_EJECT_FILAMENT3 c=17 r=1
-#: ultralcd.cpp:5605
-msgid "Eject filament 3"
-msgstr "Wysun filament 3"
-
-# MSG_EJECT_FILAMENT4 c=17 r=1
-#: ultralcd.cpp:5606
-msgid "Eject filament 4"
-msgstr "Wysun filament 4"
-
-# MSG_EJECT_FILAMENT5 c=17 r=1
-#: ultralcd.cpp:5607
-msgid "Eject filament 5"
-msgstr "Wysun filament 5"
+# 
+#: ultralcd.cpp:4869
+msgid "Eject"
+msgstr "Wysun"
 
 # MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1339
+#: mmu.cpp:1434
 msgid "Ejecting filament"
 msgstr "Wysuwanie filamentu"
 
-# MSG_END_FILE_LIST
-#: Marlin_main.cpp:4407
-msgid "End file list"
-msgstr "Koniec listy plikow"
+# MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
+#: ultralcd.cpp:7917
+msgid "Endstop not hit"
+msgstr "Krancowka nie aktyw."
 
 # MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:7090
+#: ultralcd.cpp:7911
 msgid "Endstop"
 msgstr "Krancowka"
 
-# MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
-#: ultralcd.cpp:7096
-msgid "Endstop not hit"
-msgstr "Krancowka nie aktyw."
-
 # MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:7078
+#: ultralcd.cpp:7899
 msgid "Endstops"
 msgstr "Krancowki"
 
-# MSG_ENDSTOPS_HIT
-#: messages.c:30
-msgid "endstops hit: "
-msgstr "krancowki aktywowane:"
-
-# MSG_LANGUAGE_NAME
-#: language.c:153
-msgid "English"
-msgstr "Angielski"
-
-# MSG_Enqueing
-#:
-msgid "enqueing \""
-msgstr "kolejkowanie \""
-
 # MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6132
+#: ultralcd.cpp:6859
 msgid "Error - static memory has been overwritten"
 msgstr "Blad - pamiec statyczna zostala nadpisana"
 
-# MSG_SD_ERR_WRITE_TO_FILE
-#: messages.c:78
-msgid "error writing to file"
-msgstr "blad zapisywania pliku"
+# MSG_FSENS_NOT_RESPONDING c=20 r=4
+#: ultralcd.cpp:4475
+msgid "ERROR: Filament sensor is not responding, please check connection."
+msgstr "BLAD: Czujnik filamentu nie odpowiada, sprawdz polaczenie."
 
 # MSG_ERROR
 #: messages.c:28
 msgid "ERROR:"
 msgstr "BLAD:"
 
-# MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4259
-msgid "ERROR: Filament sensor is not responding, please check connection."
-msgstr "BLAD: Czujnik filamentu nie odpowiada, sprawdz polaczenie."
+# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
+#: ultralcd.cpp:8304
+msgid "Extruder fan:"
+msgstr "WentHotend:"
 
-# 
-#: Marlin_main.cpp:1006
-msgid "External SPI flash W25X20CL not responding."
-msgstr "Zewnetrzna pamiec flash SPI W25X20CL nie odpowiada."
+# MSG_INFO_EXTRUDER c=15 r=1
+#: ultralcd.cpp:2244
+msgid "Extruder info"
+msgstr "Ekstruder - info"
 
 # MSG_MOVE_E
 #: messages.c:29
@@ -568,39 +351,14 @@ msgid "Extruder"
 msgstr "Ekstruder"
 
 # 
-#: ultralcd.cpp:5633
-msgid "Extruder 1"
-msgstr "Ekstruder 1"
-
-# 
-#: ultralcd.cpp:5634
-msgid "Extruder 2"
-msgstr "Ekstruder 2"
-
-# 
-#: ultralcd.cpp:5635
-msgid "Extruder 3"
-msgstr "Ekstruder 3"
-
-# 
-#: ultralcd.cpp:5636
-msgid "Extruder 4"
-msgstr "Ekstruder 4"
-
-# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:7468
-msgid "Extruder fan:"
-msgstr "Went. ekstrudera:"
-
-# MSG_INFO_EXTRUDER c=15 r=1
-#: ultralcd.cpp:2266
-msgid "Extruder info"
-msgstr "Informacje o ekstruderze"
+#: ultralcd.cpp:6846
+msgid "Fail stats MMU"
+msgstr "Bledy MMU"
 
 # MSG_FSENS_AUTOLOAD_ON c=17 r=1
-#: ultralcd.cpp:4927
+#: ultralcd.cpp:5168
 msgid "F. autoload  [on]"
-msgstr "Autolad. fil [wl]"
+msgstr "Autolad.fil. [wl]"
 
 # MSG_FSENS_AUTOLOAD_NA c=17 r=1
 #: messages.c:43
@@ -608,37 +366,32 @@ msgid "F. autoload [N/A]"
 msgstr "Autolad.fil.[N/D]"
 
 # MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-#: ultralcd.cpp:4929
+#: ultralcd.cpp:5170
 msgid "F. autoload [off]"
 msgstr "Autolad.fil.[wyl]"
 
 # 
-#: ultralcd.cpp:6112
+#: ultralcd.cpp:6843
 msgid "Fail stats"
 msgstr "Statystyki bledow"
 
-# 
-#: ultralcd.cpp:6115
-msgid "Fail stats MMU"
-msgstr "Bledy MMU"
-
 # MSG_FAN_SPEED c=14
 #: messages.c:31
 msgid "Fan speed"
 msgstr "Predkosc went."
 
 # MSG_SELFTEST_FAN c=20
-#: messages.c:74
+#: messages.c:78
 msgid "Fan test"
 msgstr "Test wentylatora"
 
 # MSG_FANS_CHECK_ON c=17 r=1
-#: ultralcd.cpp:5100
+#: ultralcd.cpp:5663
 msgid "Fans check   [on]"
 msgstr "Sprawd.went. [wl]"
 
 # MSG_FANS_CHECK_OFF c=17 r=1
-#: ultralcd.cpp:5102
+#: ultralcd.cpp:5665
 msgid "Fans check  [off]"
 msgstr "Sprawd.went.[wyl]"
 
@@ -647,13 +400,8 @@ msgstr "Sprawd.went.[wyl]"
 msgid "Fil. sensor  [on]"
 msgstr "Czuj. filam. [wl]"
 
-# MSG_RESPONSE_POOR c=20 r=2
-#: Marlin_main.cpp:3146
-msgid "Fil. sensor response is poor, disable it?"
-msgstr "Reakcja czujnika slaba, wylaczyc?"
-
 # MSG_FSENSOR_NA
-#: ultralcd.cpp:4907
+#: ultralcd.cpp:5148
 msgid "Fil. sensor [N/A]"
 msgstr "Czuj. filam.[N/D]"
 
@@ -663,117 +411,92 @@ msgid "Fil. sensor [off]"
 msgstr "Czuj. filam.[wyl]"
 
 # 
-#: ultralcd.cpp:2013
+#: ultralcd.cpp:1852
 msgid "Filam. runouts"
 msgstr "Konc. filamentu"
 
-# MSG_FILAMENT c=17 r=1
-#: messages.c:30
-msgid "Filament"
-msgstr "Filament"
-
 # MSG_FILAMENT_CLEAN c=20 r=2
 #: messages.c:32
 msgid "Filament extruding & with correct color?"
-msgstr "Filament wychodzi z dyszy a kolor jest czysty?"
+msgstr "Filament wychodzi z dyszy, kolor jest ok?"
 
 # MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2559
+#: ultralcd.cpp:2714
 msgid "Filament not loaded"
 msgstr "Fil. nie zaladowany"
 
 # MSG_FILAMENT_SENSOR c=20
-#: ultralcd.cpp:7144
+#: messages.c:84
 msgid "Filament sensor"
 msgstr "Czujnik filamentu"
 
-# MSG_SELFTEST_FILAMENT_SENSOR c=18
-#: ultralcd.cpp:7477
-msgid "Filament sensor:"
-msgstr "Czujnik filamentu:"
-
 # MSG_FILAMENT_USED c=19 r=1
-#: ultralcd.cpp:2725
+#: ultralcd.cpp:2885
 msgid "Filament used"
 msgstr "Uzyty filament"
 
-# MSG_STATS_FILAMENTUSED c=20
-#: ultralcd.cpp:2142
-msgid "Filament used:  "
-msgstr "Uzywany filament:"
+# MSG_PRINT_TIME c=19 r=1
+#: ultralcd.cpp:2886
+msgid "Print time"
+msgstr "Czas druku"
 
 # MSG_FILE_INCOMPLETE c=20 r=2
-#: ultralcd.cpp:7595
+#: ultralcd.cpp:8432
 msgid "File incomplete. Continue anyway?"
 msgstr "Plik niekompletny. Kontynowac?"
 
-# MSG_SD_FILE_OPENED
-#: cardreader.cpp:395
-msgid "File opened: "
-msgstr "Otwarty plik:"
-
-# MSG_SD_FILE_SELECTED
-#: cardreader.cpp:401
-msgid "File selected"
-msgstr "Wybrano plik"
-
 # MSG_FINISHING_MOVEMENTS c=20 r=1
 #: messages.c:40
 msgid "Finishing movements"
 msgstr "Konczenie druku"
 
 # MSG_V2_CALIBRATION c=17 r=1
-#: ultralcd.cpp:5177
+#: messages.c:105
 msgid "First layer cal."
 msgstr "Kal. 1. warstwy"
 
 # MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:4740
+#: ultralcd.cpp:4982
 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:640
+#: mmu.cpp:724
 msgid "Fix the issue and then press button on MMU unit."
 msgstr "Rozwiaz problem i wcisnij przycisk na MMU."
 
 # MSG_FLOW
-#: ultralcd.cpp:6205
+#: ultralcd.cpp:6932
 msgid "Flow"
 msgstr "Przeplyw"
 
 # MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2228
+#: ultralcd.cpp:2206
 msgid "forum.prusa3d.com"
-msgstr "forum.prusa3d.com"
+msgstr ""
 
 # MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:71
+#: messages.c:75
 msgid "Front print fan?"
 msgstr "Przedni went. druku?"
 
 # MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3101
+#: ultralcd.cpp:3294
 msgid "Front side[um]"
 msgstr "Przod [um]"
 
 # MSG_SELFTEST_FANS
-#: ultralcd.cpp:7136
+#: ultralcd.cpp:7957
 msgid "Front/left fans"
 msgstr "Przedni/lewy wentylator"
 
 # MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:7066
+#: ultralcd.cpp:7887
 msgid "Heater/Thermistor"
 msgstr "Grzalka/Termistor"
 
-# MSG_HEATING
-#: messages.c:46
-msgid "Heating"
-msgstr "Grzanie..."
-
 # MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:7475
+#: Marlin_main.cpp:8467
 msgid "Heating disabled by safety timer."
 msgstr "Grzanie wylaczone przez wyl. czasowy"
 
@@ -782,188 +505,178 @@ msgstr "Grzanie wylaczone przez wyl. czasowy"
 msgid "Heating done."
 msgstr "Grzanie zakonczone"
 
+# MSG_HEATING
+#: messages.c:46
+msgid "Heating"
+msgstr "Grzanie..."
+
 # MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:4719
+#: ultralcd.cpp:4961
 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:2229
+#: ultralcd.cpp:2207
 msgid "howto.prusa3d.com"
-msgstr "howto.prusa3d.com"
+msgstr ""
 
-# MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:4749
-msgid "I will run xyz calibration now. It will take approx. 12 mins."
-msgstr "Przeprowadze teraz kalibracje XYZ. Zajmie ok. 12 min."
+# MSG_FILAMENTCHANGE
+#: messages.c:37
+msgid "Change filament"
+msgstr "Wymiana filamentu"
 
-# MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:4757
-msgid "I will run z calibration now."
-msgstr "Przeprowadze kalibracje Z."
+# MSG_CHANGE_SUCCESS
+#: ultralcd.cpp:2629
+msgid "Change success!"
+msgstr "Wymiana ok!"
 
-# MSG_WIZARD_V2_CAL_2 c=20 r=12
-#: ultralcd.cpp:4822
-msgid "I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."
-msgstr "Zaczne drukowac linie. Stopniowo opuszczaj dysze przekrecajac pokretlo, poki nie uzyskasz optymalnej wysokosci. Sprawdz obrazki w naszym Podreczniku w rozdz. Kalibracja"
+# MSG_CORRECTLY c=20
+#: ultralcd.cpp:2706
+msgid "Changed correctly?"
+msgstr "Wymiana ok?"
 
-# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: mesh_bed_calibration.cpp:2481
-msgid "Improving bed calibration point"
-msgstr "Poprawiam precyzje punktu kalibracyjnego"
+# MSG_SELFTEST_CHECK_BED c=20
+#: messages.c:81
+msgid "Checking bed     "
+msgstr "Kontrola stolu"
 
-# MSG_WATCH
-#: messages.c:93
-msgid "Info screen"
-msgstr "Ekran informacyjny"
+# MSG_SELFTEST_CHECK_ENDSTOPS c=20
+#: ultralcd.cpp:8286
+msgid "Checking endstops"
+msgstr "Kontrola krancowek"
 
-# MSG_INIT_SDCARD
-#: ultralcd.cpp:5785
-msgid "Init. SD card"
-msgstr "Inicjalizacja karty SD"
+# MSG_SELFTEST_CHECK_HOTEND c=20
+#: ultralcd.cpp:8292
+msgid "Checking hotend  "
+msgstr "Kontrola hotendu"
 
-# MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2459
-msgid "Insert filament"
-msgstr "Wprowadz filament"
+# MSG_SELFTEST_CHECK_FSENSOR c=20
+#: messages.c:82
+msgid "Checking sensors "
+msgstr "Sprawdzanie czujnikow"
+
+# MSG_SELFTEST_CHECK_X c=20
+#: ultralcd.cpp:8287
+msgid "Checking X axis  "
+msgstr "Kontrola osi X"
+
+# MSG_SELFTEST_CHECK_Y c=20
+#: ultralcd.cpp:8288
+msgid "Checking Y axis  "
+msgstr "Kontrola osi Y"
+
+# MSG_SELFTEST_CHECK_Z c=20
+#: ultralcd.cpp:8289
+msgid "Checking Z axis  "
+msgstr "Kontrola osi Z"
+
+# MSG_CHOOSE_EXTRUDER c=20 r=1
+#: messages.c:49
+msgid "Choose extruder:"
+msgstr "Wybierz ekstruder:"
+
+# MSG_CHOOSE_FILAMENT c=20 r=1
+#: messages.c:50
+msgid "Choose filament:"
+msgstr "Wybierz filament:"
+
+# MSG_FILAMENT c=17 r=1
+#: messages.c:30
+msgid "Filament"
+msgstr ""
 
-# MSG_FILAMENT_LOADING_T0 c=20 r=4
-#: messages.c:33
-msgid "Insert filament into extruder 1. Click when done."
-msgstr "Wloz filament do ekstrudera 1. Potwierdz naciskajac pokretlo."
+# MSG_WIZARD_XYZ_CAL c=20 r=8
+#: ultralcd.cpp:4991
+msgid "I will run xyz calibration now. It will take approx. 12 mins."
+msgstr "Przeprowadze teraz kalibracje XYZ. Zajmie ok. 12 min."
 
-# MSG_FILAMENT_LOADING_T1 c=20 r=4
-#: messages.c:34
-msgid "Insert filament into extruder 2. Click when done."
-msgstr "Wloz filament do ekstrudera 2. Potwierdz naciskajac pokretlo."
+# MSG_WIZARD_Z_CAL c=20 r=8
+#: ultralcd.cpp:4999
+msgid "I will run z calibration now."
+msgstr "Przeprowadze kalibracje Z."
 
-# MSG_FILAMENT_LOADING_T2 c=20 r=4
-#: messages.c:35
-msgid "Insert filament into extruder 3. Click when done."
-msgstr "Wloz filament do ekstrudera 3. Potwierdz naciskajac pokretlo."
+# MSG_WIZARD_V2_CAL_2 c=20 r=12
+#: ultralcd.cpp:5064
+msgid "I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration."
+msgstr "Zaczne drukowac linie. Stopniowo opuszczaj dysze przekrecajac pokretlo, poki nie uzyskasz optymalnej wysokosci. Sprawdz obrazki w naszym Podreczniku w rozdz. Kalibracja"
 
-# MSG_FILAMENT_LOADING_T3 c=20 r=4
-#: messages.c:36
-msgid "Insert filament into extruder 4. Click when done."
-msgstr "Wloz filament do ekstrudera 4. Potwierdz naciskajac pokretlo."
+# MSG_WATCH
+#: messages.c:99
+msgid "Info screen"
+msgstr "Ekran informacyjny"
 
 # 
-#: ultralcd.cpp:4782
+#: ultralcd.cpp:5024
 msgid "Is filament 1 loaded?"
 msgstr "Filament 1 zaladowany?"
 
+# MSG_INSERT_FILAMENT c=20
+#: ultralcd.cpp:2614
+msgid "Insert filament"
+msgstr "Wprowadz filament"
+
 # MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4785
+#: ultralcd.cpp:5027
 msgid "Is filament loaded?"
 msgstr "Filament jest zaladowany?"
 
 # MSG_WIZARD_PLA_FILAMENT c=20 r=2
-#: ultralcd.cpp:4816
+#: ultralcd.cpp:5058
 msgid "Is it PLA filament?"
 msgstr "Czy to filament PLA?"
 
 # MSG_PLA_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4561
+#: ultralcd.cpp:4790
 msgid "Is PLA filament loaded?"
 msgstr "Fialment PLA jest zaladowany?"
 
 # MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:86
+#: messages.c:92
 msgid "Is steel sheet on heatbed?"
 msgstr "Czy plyta stal. jest na podgrzew. stole?"
 
-# MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20
-#: mesh_bed_calibration.cpp:2223
-msgid "Iteration "
-msgstr "Iteracja "
-
-# MSG_KILLED
-#: Marlin_main.cpp:7552
-msgid "KILLED. "
-msgstr "PRZERWANE."
-
-# 
-#: ultralcd.cpp:1960
-msgid "Last print"
-msgstr "Ost. wydruk"
-
 # 
-#: ultralcd.cpp:1976
+#: ultralcd.cpp:1795
 msgid "Last print failures"
 msgstr "Ostatnie bledy druku"
 
 # 
-#: ultralcd.cpp:2861
-msgid "Left"
-msgstr "Lewa"
+#: ultralcd.cpp:1772
+msgid "Last print"
+msgstr "Ost. wydruk"
 
 # MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:72
+#: messages.c:76
 msgid "Left hotend fan?"
 msgstr "Lewy went hotendu?"
 
+# 
+#: ultralcd.cpp:3018
+msgid "Left"
+msgstr "Lewa"
+
 # MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3099
+#: ultralcd.cpp:3292
 msgid "Left side [um]"
 msgstr "Lewo [um]"
 
-# MSG_LEFT c=12 r=1
-#: ultralcd.cpp:2308
-msgid "Left:"
-msgstr "Lewo:"
-
 # 
-#: ultralcd.cpp:5107
+#: ultralcd.cpp:5680
 msgid "Lin. correction"
-msgstr "Korekcja lin."
+msgstr "Korekcja liniowa"
 
 # MSG_BABYSTEP_Z
 #: messages.c:13
 msgid "Live adjust Z"
 msgstr "Ustaw. Live Z"
 
-# MSG_LOAD_ALL c=17
-#: ultralcd.cpp:5575
-msgid "Load all"
-msgstr "Zalad. wszystkie"
-
 # MSG_LOAD_FILAMENT c=17
 #: messages.c:51
 msgid "Load filament"
 msgstr "Ladowanie fil."
 
-# MSG_LOAD_FILAMENT_1 c=17
-#: ultralcd.cpp:5576
-msgid "Load filament 1"
-msgstr "Zaladuj fil. 1"
-
-# MSG_LOAD_FILAMENT_2 c=17
-#: ultralcd.cpp:5577
-msgid "Load filament 2"
-msgstr "Zaladuj fil. 2"
-
-# MSG_LOAD_FILAMENT_3 c=17
-#: ultralcd.cpp:5578
-msgid "Load filament 3"
-msgstr "Zaladuj fil. 3"
-
-# MSG_LOAD_FILAMENT_4 c=17
-#: ultralcd.cpp:5579
-msgid "Load filament 4"
-msgstr "Zaladuj fil. 4"
-
-# MSG_LOAD_FILAMENT_5 c=17
-#: ultralcd.cpp:5582
-msgid "Load filament 5"
-msgstr "Laduj filament 5"
-
-# 
-#: ultralcd.cpp:6079
-msgid "Load to nozzle"
-msgstr "Zaladuj do dyszy"
-
 # MSG_LOADING_COLOR
-#: ultralcd.cpp:2499
+#: ultralcd.cpp:2654
 msgid "Loading color"
 msgstr "Czyszcz. koloru"
 
@@ -973,139 +686,94 @@ msgid "Loading filament"
 msgstr "Laduje filament"
 
 # MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:7120
+#: ultralcd.cpp:7941
 msgid "Loose pulley"
 msgstr "Luzne kolo pasowe"
 
-# MSG_M104_INVALID_EXTRUDER
-#: Marlin_main.cpp:7675
-msgid "M104 Invalid extruder "
-msgstr "M104 Nieprawidlowy ekstruder"
-
-# MSG_M105_INVALID_EXTRUDER
-#: Marlin_main.cpp:7678
-msgid "M105 Invalid extruder "
-msgstr "M105 Nieprawidlowy ekstruder"
-
-# MSG_M109_INVALID_EXTRUDER
-#: Marlin_main.cpp:7681
-msgid "M109 Invalid extruder "
-msgstr "M109 Nieprawidlowy ekstruder"
+# 
+#: ultralcd.cpp:6805
+msgid "Load to nozzle"
+msgstr "Zaladuj do dyszy"
 
 # MSG_M117_V2_CALIBRATION c=25 r=1
-#: messages.c:53
+#: messages.c:55
 msgid "M117 First layer cal."
 msgstr "M117 Kal. 1. warstwy"
 
-# MSG_M200_INVALID_EXTRUDER
-#: Marlin_main.cpp:5857
-msgid "M200 Invalid extruder "
-msgstr "M200 Nieprawidlowy ekstruder"
-
-# MSG_M218_INVALID_EXTRUDER
-#: Marlin_main.cpp:7684
-msgid "M218 Invalid extruder "
-msgstr "M218 Nieprawidlowy ekstruder"
-
-# MSG_M221_INVALID_EXTRUDER
-#: Marlin_main.cpp:7687
-msgid "M221 Invalid extruder "
-msgstr "M221 Nieprawidlowy ekstruder"
-
 # MSG_MAIN
-#: messages.c:54
+#: messages.c:56
 msgid "Main"
 msgstr "Menu glowne"
 
-# MSG_MARK_FIL c=20 r=8
-#: ultralcd.cpp:3840
-msgid "Mark filament 100mm from extruder body. Click when done."
-msgstr "Zaznacz filament na wysokosci 100 mm od korpusu ekstrudera i potwierdz naciskajac pokretlo."
-
-# 
-#: ultralcd.cpp:2896
-msgid "Measured skew"
-msgstr "Zmierzony skos"
-
-# MSG_MEASURED_SKEW c=15 r=1
-#: ultralcd.cpp:2335
-msgid "Measured skew:"
-msgstr "Zmierzony skos:"
-
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:55
+#: messages.c:59
 msgid "Measuring reference height of calibration point"
 msgstr "Okreslam wysokosc odniesienia punktu kalibracyjnego"
 
 # MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5192
+#: ultralcd.cpp:5763
 msgid "Mesh Bed Leveling"
 msgstr "Poziomowanie stolu wg siatki"
 
+# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
+#: mmu.cpp:762
+msgid "MMU OK. Resuming position..."
+msgstr "MMU OK. Wznawianie pozycji."
+
+# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
+#: mmu.cpp:755
+msgid "MMU OK. Resuming temperature..."
+msgstr "MMU OK. Wznawiam nagrzewanie..."
+
+# 
+#: ultralcd.cpp:3059
+msgid "Measured skew"
+msgstr "Zmierzony skos"
+
 # 
-#: ultralcd.cpp:1977
+#: ultralcd.cpp:1796
 msgid "MMU fails"
 msgstr "Bledy MMU"
 
 # 
-#: mmu.cpp:1399
+#: mmu.cpp:1613
 msgid "MMU load failed     "
 msgstr "Blad ladowania MMU"
 
 # 
-#: ultralcd.cpp:1977
+#: ultralcd.cpp:1797
 msgid "MMU load fails"
 msgstr "Bledy ladow. MMU"
 
-# 
-#: mmu.cpp:635
-msgid "MMU needs user attention."
-msgstr "MMU wymaga uwagi uzytkownika."
-
-# MSG_MMU_NEEDS_ATTENTION c=20 r=4
-#: mmu.cpp:359
-msgid "MMU needs user attention. Fix the issue and then press button on MMU unit."
-msgstr "MMU wymaga uwagi. Napraw usterke i wcisnij przycisk na korpusie MMU."
-
-# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:676
-msgid "MMU OK. Resuming position..."
-msgstr "MMU OK. Wznawianie pozycji."
-
-# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:669
-msgid "MMU OK. Resuming temperature..."
-msgstr "MMU OK. Wznawiam nagrzewanie..."
-
 # MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:687
+#: mmu.cpp:773
 msgid "MMU OK. Resuming..."
 msgstr "MMU OK. Wznawianie..."
 
-# 
-#: ultralcd.cpp:1994
-msgid "MMU power fails"
-msgstr "Zaniki zasil. MMU"
-
-# 
-#: ultralcd.cpp:2241
-msgid "MMU2 connected"
-msgstr "MMU podlaczone"
-
 # MSG_STEALTH_MODE_OFF
-#: messages.c:84
+#: messages.c:90
 msgid "Mode     [Normal]"
 msgstr "Tryb   [normalny]"
 
 # MSG_SILENT_MODE_ON
-#: messages.c:83
+#: messages.c:89
 msgid "Mode     [silent]"
 msgstr "Tryb      [cichy]"
 
+# 
+#: mmu.cpp:719
+msgid "MMU needs user attention."
+msgstr "MMU wymaga uwagi uzytkownika."
+
+# 
+#: ultralcd.cpp:1823
+msgid "MMU power fails"
+msgstr "Zaniki zasil. MMU"
+
 # MSG_STEALTH_MODE_ON
-#: messages.c:85
+#: messages.c:91
 msgid "Mode    [Stealth]"
-msgstr "Tryb    [Stealth]"
+msgstr "Tryb      [cichy]"
 
 # MSG_AUTO_MODE_ON
 #: messages.c:12
@@ -1113,539 +781,379 @@ msgid "Mode [auto power]"
 msgstr "Tryb [automatycz]"
 
 # MSG_SILENT_MODE_OFF
-#: messages.c:82
+#: messages.c:88
 msgid "Mode [high power]"
 msgstr "Tryb[wysoka wyd.]"
 
+# 
+#: ultralcd.cpp:2219
+msgid "MMU2 connected"
+msgstr "MMU podlaczone"
+
 # MSG_SELFTEST_MOTOR
-#: messages.c:79
+#: messages.c:83
 msgid "Motor"
 msgstr "Silnik"
 
 # MSG_MOVE_AXIS
-#: ultralcd.cpp:5091
+#: ultralcd.cpp:5652
 msgid "Move axis"
 msgstr "Ruch osi"
 
 # MSG_MOVE_X
-#: ultralcd.cpp:4164
+#: ultralcd.cpp:4378
 msgid "Move X"
 msgstr "Ruch osi X"
 
 # MSG_MOVE_Y
-#: ultralcd.cpp:4165
+#: ultralcd.cpp:4379
 msgid "Move Y"
 msgstr "Ruch osi Y"
 
 # MSG_MOVE_Z
-#: ultralcd.cpp:4166
+#: ultralcd.cpp:4380
 msgid "Move Z"
 msgstr "Ruch osi Z"
 
-# 
-#: ultralcd.cpp:2867
-msgid "N/A"
-msgstr "N/D"
-
-# 
-#: util.cpp:293
-msgid "New firmware version available:"
-msgstr "Dostepna nowa wersja firmware:"
-
-# MSG_NO
-#: messages.c:58
-msgid "No"
-msgstr "Nie"
-
-# 
-#:
-msgid "No "
-msgstr "Nie"
-
-# MSG_ERR_NO_CHECKSUM
-#: cmdqueue.cpp:456
-msgid "No Checksum with line number, Last Line: "
-msgstr "Brak sumy kontrolnej z numerem linii, ostatnia linia:"
-
 # MSG_NO_MOVE
-#: Marlin_main.cpp:4908
+#: Marlin_main.cpp:5292
 msgid "No move."
 msgstr "Brak ruchu."
 
 # MSG_NO_CARD
-#: ultralcd.cpp:6059
+#: ultralcd.cpp:6772
 msgid "No SD card"
 msgstr "Brak karty SD"
 
-# MSG_ERR_NO_THERMISTORS
-#: Marlin_main.cpp:4946
-msgid "No thermistors - no temperature"
-msgstr "Brak termistorow - brak odczytu temperatury"
+# 
+#: ultralcd.cpp:3024
+msgid "N/A"
+msgstr "N/D"
+
+# MSG_NO
+#: messages.c:62
+msgid "No"
+msgstr "Nie"
 
 # MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:7068
+#: ultralcd.cpp:7889
 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
+#: messages.c:79
 msgid "Not spinning"
 msgstr "Nie kreci sie"
 
 # MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4821
+#: ultralcd.cpp:5063
 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:4765
+#: ultralcd.cpp:5007
 msgid "Now I will preheat nozzle for PLA."
 msgstr "Nagrzewam dysze dla PLA."
 
-# 
-#: ultralcd.cpp:4756
-msgid "Now remove the test print from steel sheet."
-msgstr "Teraz zdejmij wydruk testowy ze stolu."
-
 # MSG_NOZZLE
-#: messages.c:59
+#: messages.c:63
 msgid "Nozzle"
 msgstr "Dysza"
 
-# 
-#: ultralcd.cpp:1919
-msgid "Nozzle FAN"
-msgstr "Went. hotendu"
-
-# MSG_INFO_NOZZLE_FAN c=11 r=1
-#: ultralcd.cpp:1537
-msgid "Nozzle FAN:"
-msgstr "Went. dyszy:"
-
-# MSG_NOZZLE1
-#: ultralcd.cpp:5995
-msgid "Nozzle2"
-msgstr "Dysza2"
-
-# MSG_NOZZLE2
-#: ultralcd.cpp:5998
-msgid "Nozzle3"
-msgstr "Dysza3"
-
-# MSG_OK
-#: Marlin_main.cpp:6333
-msgid "ok"
-msgstr "ok"
-
 # MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
-#: Marlin_main.cpp:1516
+#: Marlin_main.cpp:1519
 msgid "Old settings found. Default PID, Esteps etc. will be set."
 msgstr "Znaleziono stare ustawienia. Zostana przywrocone domyslne ust. PID, Esteps, itp."
 
-# MSG_ENDSTOP_OPEN
-#: messages.c:29
-msgid "open"
-msgstr "otworz"
-
-# MSG_SD_OPEN_FILE_FAIL
-#: messages.c:79
-msgid "open failed, File: "
-msgstr "niepowodzenie otwarcia, Plik:"
+# 
+#: ultralcd.cpp:4998
+msgid "Now remove the test print from steel sheet."
+msgstr "Teraz zdejmij wydruk testowy ze stolu."
 
-# MSG_SD_OPENROOT_FAIL
-#: cardreader.cpp:196
-msgid "openRoot failed"
-msgstr "niepowodzenie openRoot "
+# 
+#: ultralcd.cpp:1722
+msgid "Nozzle FAN"
+msgstr "WentHotend"
 
 # MSG_PAUSE_PRINT
-#: ultralcd.cpp:6029
+#: ultralcd.cpp:6735
 msgid "Pause print"
 msgstr "Wstrzymanie wydruku"
 
-# MSG_PICK_Z
-#: ultralcd.cpp:3463
-msgid "Pick print"
-msgstr "Wybierz wydruk"
-
 # MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1741
+#: ultralcd.cpp:1606
 msgid "PID cal.           "
 msgstr "Kalibracja PID"
 
 # MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1747
+#: ultralcd.cpp:1612
 msgid "PID cal. finished"
 msgstr "Kal. PID zakonczona"
 
 # MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5198
+#: ultralcd.cpp:5769
 msgid "PID calibration"
 msgstr "Kalibracja PID"
 
 # MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:808
+#: ultralcd.cpp:846
 msgid "PINDA Heating"
 msgstr "Grzanie sondy PINDA"
 
 # MSG_PAPER c=20 r=8
-#: messages.c:60
+#: messages.c:64
 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_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:7060
-msgid "Please check :"
-msgstr "Sprawdz :"
-
-# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:94
-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_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:4830
+#: ultralcd.cpp:5072
 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:22
 msgid "Please clean the nozzle for calibration. Click when done."
-msgstr "Dla prawidl. kalibracji nalezy oczyscic dysze. Potw. guzikiem."
+msgstr "Dla prawidlowej kalibracji nalezy oczyscic dysze. Potwierdz guzikiem."
+
+# MSG_SELFTEST_PLEASECHECK
+#: ultralcd.cpp:7881
+msgid "Please check :"
+msgstr "Sprawdz :"
+
+# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
+#: messages.c:100
+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_WIZARD_LOAD_FILAMENT c=20 r=8
-#: ultralcd.cpp:4664
+#: ultralcd.cpp:4894
 msgid "Please insert PLA filament to the extruder, then press knob to load it."
 msgstr "Umiesc filament PLA w ekstruderze i nacisnij pokretlo, aby zaladowac."
 
-# 
-#: ultralcd.cpp:4660
-msgid "Please insert PLA filament to the first tube of MMU, then press the knob to load it."
-msgstr "Wsun filament PLA do pierwszej rurki MMU i nacisnij pokretlo aby go zaladowac."
-
-# MSG_WIZARD_INSERT_CORRECT_FILAMENT c=20 r=8
-#: ultralcd.cpp:4109
-msgid "Please load PLA filament and then resume Wizard by rebooting the printer."
-msgstr "Zaladuj filament PLA i przywroc Asystenta przez restart drukarki."
-
 # MSG_PLEASE_LOAD_PLA c=20 r=4
-#: ultralcd.cpp:4566
+#: ultralcd.cpp:4795
 msgid "Please load PLA filament first."
 msgstr "Najpierw zaladuj filament PLA."
 
 # MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3025
+#: Marlin_main.cpp:3064
 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:65
 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:68
 msgid "Please press the knob to unload filament"
 msgstr "Nacisnij pokretlo aby rozladowac filament"
 
+# 
+#: ultralcd.cpp:4889
+msgid "Please insert PLA filament to the first tube of MMU, then press the knob to load it."
+msgstr "Wsun filament PLA do pierwszej rurki MMU i nacisnij pokretlo aby go zaladowac."
+
 # MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:66
+#: messages.c:70
 msgid "Please pull out filament immediately"
 msgstr "Wyciagnij filament teraz"
 
 # MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1347
+#: mmu.cpp:1440
 msgid "Please remove filament and then press the knob."
 msgstr "Wyciagnij filament i wcisnij pokretlo."
 
-# 
-#: ultralcd.cpp:4755
-msgid "Please remove shipping helpers first."
-msgstr "Najpierw usun zabezpieczenia transportowe"
-
 # MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:70
+#: messages.c:74
 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:4052
+#: Marlin_main.cpp:4355
 msgid "Please run XYZ calibration first."
 msgstr "Prosze najpierw uruchomic kalibracje XYZ"
 
 # MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1293
+#: mmu.cpp:1359
 msgid "Please update firmware in your MMU2. Waiting for reset."
 msgstr "Prosze zaktualizowac Firmware MMU2. Czekam na reset."
 
-# 
-#: util.cpp:297
-msgid "Please upgrade."
-msgstr "Prosze zaktualizowac."
-
 # MSG_PLEASE_WAIT c=20
-#: messages.c:62
+#: messages.c:66
 msgid "Please wait"
 msgstr "Prosze czekac"
 
 # 
-#: ultralcd.cpp:2013
-msgid "Power failures"
-msgstr "Zaniki zasilania"
+#: ultralcd.cpp:4997
+msgid "Please remove shipping helpers first."
+msgstr "Najpierw usun zabezpieczenia transportowe"
 
-# MSG_POWERUP
-#: messages.c:69
-msgid "PowerUp"
-msgstr "Uruchamianie"
+# MSG_PREHEAT_NOZZLE c=20
+#: messages.c:67
+msgid "Preheat the nozzle!"
+msgstr "Nagrzej dysze!"
 
 # MSG_PREHEAT
-#: ultralcd.cpp:6018
+#: ultralcd.cpp:6722
 msgid "Preheat"
 msgstr "Grzanie"
 
-# MSG_PREHEAT_NOZZLE c=20
-#: messages.c:63
-msgid "Preheat the nozzle!"
-msgstr "Nagrzej dysze!"
-
 # MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:96
+#: messages.c:102
 msgid "Preheating nozzle. Please wait."
 msgstr "Nagrzewanie dyszy. Prosze czekac."
 
 # 
-#: ultralcd.cpp:2350
-msgid "Preheating to load"
-msgstr "Nagrzew. do ladowania"
-
-# 
-#: ultralcd.cpp:2351
-msgid "Preheating to unload"
-msgstr "Nagrzew. do rozlad."
-
-# MSG_PREPARE_FILAMENT c=20 r=1
-#: ultralcd.cpp:1911
-msgid "Prepare new filament"
-msgstr "Przygotuj filament"
+#: util.cpp:297
+msgid "Please upgrade."
+msgstr "Prosze zaktualizowac."
 
 # MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:9150
+#: Marlin_main.cpp:10364
 msgid "Press knob to preheat nozzle and continue."
 msgstr "Wcisnij pokretlo aby rozgrzac dysze i kontynuowac."
 
 # 
-#: ultralcd.cpp:2313
-msgid "Press the knob"
-msgstr "Wcisnij pokretlo"
-
-# 
-#: mmu.cpp:639
-msgid "Press the knob to resume nozzle temperature."
-msgstr "Wcisnij pokretlo aby wznowic podgrzewanie dyszy."
+#: ultralcd.cpp:1851
+msgid "Power failures"
+msgstr "Zaniki zasilania"
 
 # MSG_PRINT_ABORTED c=20
-#: messages.c:65
+#: messages.c:69
 msgid "Print aborted"
 msgstr "Druk przerwany"
 
 # 
-#: ultralcd.cpp:1921
-msgid "Print FAN"
-msgstr "Went. wydruku"
+#: ultralcd.cpp:2455
+msgid "Preheating to load"
+msgstr "Nagrzew. do ladowania"
 
-# MSG_INFO_PRINT_FAN c=11 r=1
-#: ultralcd.cpp:1549
-msgid "Print FAN: "
-msgstr "Went. wydr:"
+# 
+#: ultralcd.cpp:2459
+msgid "Preheating to unload"
+msgstr "Nagrzew. do rozlad."
 
 # MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:7471
+#: ultralcd.cpp:8307
 msgid "Print fan:"
-msgstr "Went. wydruku:"
+msgstr "WentWydruk:"
 
 # MSG_CARD_MENU
 #: messages.c:21
 msgid "Print from SD"
 msgstr "Druk z karty SD"
 
+# 
+#: ultralcd.cpp:2317
+msgid "Press the knob"
+msgstr "Wcisnij pokretlo"
+
 # MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1022
+#: ultralcd.cpp:1069
 msgid "Print paused"
 msgstr "Druk wstrzymany"
 
-# MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2727
-msgid "Print time"
-msgstr "Czas druku"
-
-# MSG_STATS_PRINTTIME c=20
-#: ultralcd.cpp:2151
-msgid "Print time:  "
-msgstr "Czas druku: "
-
-# MSG_PRINTER_DISCONNECTED c=20 r=1
-#: ultralcd.cpp:607
-msgid "Printer disconnected"
-msgstr "Drukarka rozlaczona"
-
-# MSG_ERR_KILLED
-#: Marlin_main.cpp:7547
-msgid "Printer halted. kill() called!"
-msgstr "Drukarka zatrzymana. Wywolano komende kill()!"
+# 
+#: mmu.cpp:723
+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:41
 msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
-msgstr "Drukarka nie zostala jeszcze skalibrowana. Kieruj sie Samouczkiem: rozdzial Pierwsze Kroki, sekcja Konfiguracja przed drukowaniem."
-
-# MSG_ERR_STOPPED
-#: messages.c:32
-msgid "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"
-msgstr "Drukarka zatrzymana z powodu bledow. Usun problem i uzyj M999 aby zrestartowac. (Temperatura jest zresetowana, ustaw ja po restarcie)"
+msgstr "Drukarka nie byla jeszcze kalibrowana. Kieruj sie Samouczkiem: rozdzial Pierwsze Kroki, sekcja Konfiguracja przed drukowaniem."
 
 # 
-#:
-msgid "Prusa i3 MK2 ready."
-msgstr "Prusa i3 MK2 gotowa"
-
-# WELCOME_MSG c=20
-#:
-msgid "Prusa i3 MK2.5 ready."
-msgstr "Prusa i3 MK2.5 gotowa"
-
-# WELCOME_MSG c=20
-#:
-msgid "Prusa i3 MK3 ready."
-msgstr "Prusa i3 MK3 gotowa"
-
-# 
-#:
-msgid "Prusa i3 MK3S OK."
-msgstr "Prusa i3 MK3S OK"
+#: ultralcd.cpp:1723
+msgid "Print FAN"
+msgstr "WentWydruk"
 
 # MSG_PRUSA3D
-#: ultralcd.cpp:2227
+#: ultralcd.cpp:2205
 msgid "prusa3d.com"
-msgstr "prusa3d.com"
+msgstr ""
 
 # MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3102
+#: ultralcd.cpp:3295
 msgid "Rear side [um]"
 msgstr "Tyl [um]"
 
 # MSG_RECOVERING_PRINT c=20 r=1
-#: Marlin_main.cpp:8575
+#: Marlin_main.cpp:9764
 msgid "Recovering print    "
 msgstr "Wznawianie wydruku"
 
-# MSG_REFRESH
-#:
-msgid "Refresh"
-msgstr "Odswiez"
-
 # MSG_REMOVE_OLD_FILAMENT c=20 r=4
-#: mmu.cpp:744
+#: mmu.cpp:830
 msgid "Remove old filament and press the knob to start loading new filament."
 msgstr "Wyciagnij poprzedni filament i nacisnij pokretlo aby zaladowac nowy."
 
-# MSG_M119_REPORT
-#: Marlin_main.cpp:5297
-msgid "Reporting endstop status"
-msgstr "Raportowanie statusu krancowek"
-
 # 
-#: Marlin_main.cpp:7076
-msgid "Resend"
-msgstr "Wyslij ponownie"
-
-# MSG_RESEND
-#: Marlin_main.cpp:6911
-msgid "Resend: "
-msgstr "Wyslij ponownie:"
-
-# MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3103
-msgid "Reset"
-msgstr "Reset"
+#: 
+msgid "Prusa i3 MK3S OK."
+msgstr "Prusa i3 MK3S OK"
 
 # MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5203
+#: ultralcd.cpp:5774
 msgid "Reset XYZ calibr."
 msgstr "Reset kalibr. XYZ"
 
+# MSG_BED_CORRECTION_RESET
+#: ultralcd.cpp:3296
+msgid "Reset"
+msgstr ""
+
 # MSG_RESUME_PRINT
-#: ultralcd.cpp:6033
+#: ultralcd.cpp:6742
 msgid "Resume print"
 msgstr "Wznowic wydruk"
 
 # MSG_RESUMING_PRINT c=20 r=1
-#: messages.c:69
+#: messages.c:73
 msgid "Resuming print"
 msgstr "Wznawianie druku"
 
-# 
-#: ultralcd.cpp:2862
-msgid "Right"
-msgstr "Prawa"
-
 # MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3100
+#: ultralcd.cpp:3293
 msgid "Right side[um]"
 msgstr "Prawo [um]"
 
-# MSG_RIGHT c=12 r=1
-#: ultralcd.cpp:2309
-msgid "Right:"
-msgstr "Prawo:"
-
-# MSG_E_CAL_KNOB c=20 r=8
-#: ultralcd.cpp:3835
-msgid "Rotate knob until mark reaches extruder body. Click when done."
-msgstr "Obracaj pokretlo az znacznik zrowna sie z korpusem ekstrudera i potwierdz naciskajac pokretlo."
-
 # MSG_SECOND_SERIAL_ON c=17 r=1
-#: ultralcd.cpp:5119
+#: ultralcd.cpp:5692
 msgid "RPi port     [on]"
 msgstr "Port RPi     [wl]"
 
 # MSG_SECOND_SERIAL_OFF c=17 r=1
-#: ultralcd.cpp:5117
+#: ultralcd.cpp:5690
 msgid "RPi port    [off]"
 msgstr "Port RPi    [wyl]"
 
 # MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4583
+#: ultralcd.cpp:4812
 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_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-#: ultralcd.cpp:5033
+#: ultralcd.cpp:5322
 msgid "SD card  [normal]"
 msgstr "Karta SD [normal]"
 
-# MSG_SD_CARD_OK
-#: cardreader.cpp:202
-msgid "SD card ok"
-msgstr "Karta SD OK"
-
 # MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:4238
-msgid "SD card [FlshAir]"
-msgstr "Karta SD [FlashAir]"
-
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:5031
+#: ultralcd.cpp:5320
 msgid "SD card [flshAir]"
 msgstr "Karta SD[FlshAir]"
 
-# MSG_SD_INIT_FAIL
-#: cardreader.cpp:186
-msgid "SD init fail"
-msgstr "Inicjalizacja karty SD nieudana"
-
-# MSG_SD_PRINTING_BYTE
-#: cardreader.cpp:516
-msgid "SD printing byte "
-msgstr "SD printing byte "
+# 
+#: ultralcd.cpp:3019
+msgid "Right"
+msgstr "Prawa"
 
 # MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
 #: messages.c:38
@@ -1653,282 +1161,207 @@ msgid "Searching bed calibration point"
 msgstr "Szukam punktu kalibracyjnego na stole"
 
 # MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5126
+#: ultralcd.cpp:5699
 msgid "Select language"
 msgstr "Wybor jezyka"
 
-# 
-#: ultralcd.cpp:4803
-msgid "Select nozzle preheat temperature which matches your material."
-msgstr "Wybierz temperature grzania dyszy odpowiednia dla materialu."
-
-# 
-#: ultralcd.cpp:4552
-msgid "Select PLA filament:"
-msgstr "Wybierz filament PLA:"
-
 # MSG_SELFTEST_OK
-#: ultralcd.cpp:6631
+#: ultralcd.cpp:7452
 msgid "Self test OK"
 msgstr "Selftest OK"
 
 # MSG_SELFTEST_START c=20
-#: ultralcd.cpp:6449
+#: ultralcd.cpp:7238
 msgid "Self test start  "
-msgstr "Rozpoczynanie Selftestu"
+msgstr "Selftest startuje"
 
 # MSG_SELFTEST
-#: ultralcd.cpp:5179
+#: ultralcd.cpp:5750
 msgid "Selftest         "
 msgstr "Selftest "
 
 # MSG_SELFTEST_ERROR
-#: ultralcd.cpp:7058
+#: ultralcd.cpp:7879
 msgid "Selftest error !"
-msgstr "Blad selftest !"
+msgstr "Blad selftest!"
 
 # MSG_SELFTEST_FAILED c=20
-#: messages.c:73
+#: messages.c:77
 msgid "Selftest failed  "
 msgstr "Selftest nieudany"
 
 # MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1548
+#: Marlin_main.cpp:1551
 msgid "Selftest will be run to calibrate accurate sensorless rehoming."
 msgstr "Zostanie uruchomiony Selftest aby dokladnie skalibrowac punkt bazowy bez krancowek"
 
 # 
-#: ultralcd.cpp:3819
-msgid "Sensor state"
-msgstr "Stan czujnikow"
+#: ultralcd.cpp:5045
+msgid "Select nozzle preheat temperature which matches your material."
+msgstr "Wybierz temperature grzania dyszy odpowiednia dla materialu."
 
 # 
-#:
-msgid "Sensors info"
-msgstr "Info o czujnikach"
+#: ultralcd.cpp:4780
+msgid "Select PLA filament:"
+msgstr "Wybierz filament PLA:"
 
 # MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3111
+#: ultralcd.cpp:3314
 msgid "Set temperature:"
-msgstr "Ustaw. temperatury:"
+msgstr "Ustaw temperature:"
 
 # MSG_SETTINGS
-#: messages.c:81
+#: messages.c:86
 msgid "Settings"
 msgstr "Ustawienia"
 
-# 
-#: ultralcd.cpp:2899
-msgid "Severe skew"
-msgstr "Znaczny skos"
-
-# MSG_SEVERE_SKEW c=15 r=1
-#: ultralcd.cpp:2346
-msgid "Severe skew:"
-msgstr "Powazny skos:"
-
 # MSG_SHOW_END_STOPS c=17 r=1
-#: ultralcd.cpp:5200
+#: ultralcd.cpp:5771
 msgid "Show end stops"
 msgstr "Pokaz krancowki"
 
 # 
-#:
-msgid "Show pinda state"
-msgstr "Stan sondy PINDA"
-
-# MSG_DWELL
-#: Marlin_main.cpp:3752
-msgid "Sleep..."
-msgstr "Czuwanie..."
-
-# 
-#: ultralcd.cpp:2898
-msgid "Slight skew"
-msgstr "Lekki skos"
-
-# MSG_SLIGHT_SKEW c=15 r=1
-#: ultralcd.cpp:2342
-msgid "Slight skew:"
-msgstr "Lekki skos:"
+#: ultralcd.cpp:4025
+msgid "Sensor state"
+msgstr "Stan czujnikow"
 
 # MSG_FILE_CNT c=20 r=4
-#: 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."
 
-# 
-#: Marlin_main.cpp:4560
-msgid "Some problem encountered, Z-leveling enforced ..."
-msgstr "Wykryto problem, wymuszono poziomowanie osi Z ..."
-
-# MSG_SORT_NONE c=17 r=1
-#: ultralcd.cpp:4250
-msgid "Sort:      [None]"
-msgstr "Sortuj: [brak]"
-
 # MSG_SORT_NONE c=17 r=1
-#: ultralcd.cpp:5043
-msgid "Sort:      [none]"
-msgstr "Sortuj:    [brak]"
+#: ultralcd.cpp:5332
+msgid "Sort       [none]"
+msgstr "Sortowanie [brak]"
 
 # MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:4248
-msgid "Sort:      [Time]"
-msgstr "Sortuj: [czas]"
+#: ultralcd.cpp:5330
+msgid "Sort       [time]"
+msgstr "Sortowanie [czas]"
 
-# MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:5041
-msgid "Sort:      [time]"
-msgstr "Sortuj:    [czas]"
-
-# MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:4249
-msgid "Sort:  [Alphabet]"
-msgstr "Sortuj:[alfabet]"
+# 
+#: ultralcd.cpp:3062
+msgid "Severe skew:"
+msgstr "Znaczny skos:"
 
 # MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:5042
-msgid "Sort:  [alphabet]"
-msgstr "Sortuj: [alfabet]"
-
-# MSG_SORT_NONE c=17 r=1
-#:
-msgid "Sort:  [none]"
-msgstr "Sortuj: [brak]"
-
-# MSG_SORT_TIME c=17 r=1
-#:
-msgid "Sort:  [time]"
-msgstr "Sortuj: [czas]"
+#: ultralcd.cpp:5331
+msgid "Sort   [alphabet]"
+msgstr "Sortowanie[alfab]"
 
 # MSG_SORTING c=20 r=1
-#: cardreader.cpp:745
+#: cardreader.cpp:746
 msgid "Sorting files"
 msgstr "Sortowanie plikow"
 
 # MSG_SOUND_LOUD c=17 r=1
-#: sound.h:5
+#: sound.h:6
 msgid "Sound      [loud]"
-msgstr "Dzwiek   [Glosny]"
+msgstr "Dzwiek   [glosny]"
+
+# 
+#: ultralcd.cpp:3061
+msgid "Slight skew:"
+msgstr "Lekki skos:"
 
 # MSG_SOUND_MUTE c=17 r=1
-#: sound.h:8
+#: 
 msgid "Sound      [mute]"
-msgstr "Dzwiek[Wylaczony]"
+msgstr "Dzwiek[wylaczony]"
+
+# 
+#: Marlin_main.cpp:4871
+msgid "Some problem encountered, Z-leveling enforced ..."
+msgstr "Wykryto problem, wymuszono poziomowanie osi Z."
 
 # MSG_SOUND_ONCE c=17 r=1
-#: sound.h:6
+#: sound.h:7
 msgid "Sound      [once]"
 msgstr "Dzwiek    [1-raz]"
 
 # MSG_SOUND_SILENT c=17 r=1
-#: sound.h:7
+#: sound.h:8
 msgid "Sound    [silent]"
-msgstr "Dzwiek    [Cichy]"
+msgstr "Dzwiek    [cichy]"
 
 # MSG_SPEED
-#: ultralcd.cpp:6199
+#: ultralcd.cpp:6926
 msgid "Speed"
 msgstr "Predkosc"
 
 # MSG_SELFTEST_FAN_YES c=19
-#: messages.c:76
+#: messages.c:80
 msgid "Spinning"
 msgstr "Kreci sie"
 
-# MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:4959
-msgid "SpoolJoin    [on]"
-msgstr "SpoolJoin    [wl]"
-
-# 
-#: ultralcd.cpp:4955
-msgid "SpoolJoin   [N/A]"
-msgstr "SpoolJoin    [nd]"
-
-# MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:4963
-msgid "SpoolJoin   [off]"
-msgstr "SpoolJoin   [wyl]"
-
 # MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4065
+#: Marlin_main.cpp:4368
 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:6108
+#: ultralcd.cpp:6839
 msgid "Statistics  "
 msgstr "Statystyki"
 
-# MSG_STEPPER_TOO_HIGH
-#: stepper.cpp:345
-msgid "Steprate too high: "
-msgstr "Liczba krokow zbyt wysoka:"
-
 # MSG_STOP_PRINT
-#: messages.c:87
+#: messages.c:93
 msgid "Stop print"
-msgstr "Zatrzymac druk"
+msgstr "Przerwanie druku"
 
 # MSG_STOPPED
-#: messages.c:88
+#: messages.c:94
 msgid "STOPPED. "
 msgstr "ZATRZYMANO."
 
 # MSG_SUPPORT
-#: ultralcd.cpp:6117
+#: ultralcd.cpp:6848
 msgid "Support"
 msgstr "Wsparcie"
 
 # MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:7138
+#: ultralcd.cpp:7959
 msgid "Swapped"
 msgstr "Zamieniono"
 
 # MSG_TEMP_CALIBRATION c=20 r=1
-#: messages.c:89
+#: messages.c:95
 msgid "Temp. cal.          "
 msgstr "Kalibracja temp."
 
 # MSG_TEMP_CALIBRATION_ON c=20 r=1
-#: ultralcd.cpp:5113
+#: ultralcd.cpp:5686
 msgid "Temp. cal.   [on]"
-msgstr "Kalibr. temp.[wl]"
+msgstr "Kalibr.temp. [wl]"
 
 # MSG_TEMP_CALIBRATION_OFF c=20 r=1
-#: ultralcd.cpp:5111
+#: ultralcd.cpp:5684
 msgid "Temp. cal.  [off]"
 msgstr "Kalibr.temp.[wyl]"
 
 # MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5209
+#: ultralcd.cpp:5780
 msgid "Temp. calibration"
 msgstr "Kalibracja temp."
 
-# MSG_TEMPERATURE
-#: ultralcd.cpp:5089
-msgid "Temperature"
-msgstr "Temperatura"
-
 # MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3744
+#: ultralcd.cpp:3951
 msgid "Temperature calibration failed"
 msgstr "Kalibracja temperaturowa nieudana"
 
-# MSG_PINDA_NOT_CALIBRATED c=20 r=4
-#: Marlin_main.cpp:1403
-msgid "Temperature calibration has not been run yet"
-msgstr "Kalibracja temperaturowa nie zostala jeszcze przeprowadzona"
-
 # MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:90
+#: messages.c:96
 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."
 
+# MSG_TEMPERATURE
+#: ultralcd.cpp:5650
+msgid "Temperature"
+msgstr "Temperatura"
+
 # MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2273
+#: ultralcd.cpp:2251
 msgid "Temperatures"
 msgstr "Temperatury"
 
@@ -1938,281 +1371,442 @@ msgid "There is still a need to make Z calibration. Please follow the manual, ch
 msgstr "Musimy przeprowadzic kalibracje Z. Kieruj sie Samouczkiem: rozdzial Pierwsze Kroki, sekcja Kalibracja."
 
 # 
-#: ultralcd.cpp:2316
-msgid "to load filament"
-msgstr "aby zaladow. fil."
-
-# 
-#: ultralcd.cpp:2317
-msgid "to unload filament"
-msgstr "aby rozlad. filament"
-
-# 
-#: ultralcd.cpp:1961
-msgid "Total"
-msgstr "Suma"
-
-# 
-#: ultralcd.cpp:1994
-msgid "Total failures"
-msgstr "Suma bledow"
-
-# 
-#: ultralcd.cpp:2752
+#: ultralcd.cpp:2908
 msgid "Total filament"
-msgstr "Calkowita dlugosc filamentu"
-
-# MSG_STATS_TOTALFILAMENT c=20
-#: ultralcd.cpp:2186
-msgid "Total filament :"
-msgstr "Filament lacznie :"
+msgstr "Zuzycie filamentu"
 
 # 
-#: ultralcd.cpp:2754
+#: ultralcd.cpp:2908
 msgid "Total print time"
-msgstr "Calkowity czas druku"
-
-# MSG_STATS_TOTALPRINTTIME c=20
-#: ultralcd.cpp:2203
-msgid "Total print time :"
-msgstr "Calkowity czas druku:"
-
-# MSG_ENDSTOP_HIT
-#: messages.c:28
-msgid "TRIGGERED"
-msgstr "AKTYWOWANO"
+msgstr "Laczny czas druku"
 
 # MSG_TUNE
-#: ultralcd.cpp:6015
+#: ultralcd.cpp:6719
 msgid "Tune"
 msgstr "Strojenie"
 
 # 
-#: ultralcd.cpp:2249
-msgid "unknown"
-msgstr "nieznane"
-
-# 
-#: ultralcd.cpp:4640
+#: ultralcd.cpp:4869
 msgid "Unload"
 msgstr "Rozladuj"
 
 # 
-#: ultralcd.cpp:5617
-msgid "Unload all"
-msgstr "Rozladuj wszystkie"
+#: ultralcd.cpp:1820
+msgid "Total failures"
+msgstr "Suma bledow"
+
+# 
+#: ultralcd.cpp:2324
+msgid "to load filament"
+msgstr "aby zaladow. fil."
+
+# 
+#: ultralcd.cpp:2328
+msgid "to unload filament"
+msgstr "aby rozlad. filament"
 
 # MSG_UNLOAD_FILAMENT c=17
-#: messages.c:91
+#: messages.c:97
 msgid "Unload filament"
 msgstr "Rozladowanie fil."
 
-# MSG_UNLOAD_FILAMENT_1 c=17
-#: ultralcd.cpp:5406
-msgid "Unload filament 1"
-msgstr "Rozladuj fil. 1"
-
-# MSG_UNLOAD_FILAMENT_2 c=17
-#: ultralcd.cpp:5407
-msgid "Unload filament 2"
-msgstr "Rozladuj fil. 2"
-
-# MSG_UNLOAD_FILAMENT_3 c=17
-#: ultralcd.cpp:5408
-msgid "Unload filament 3"
-msgstr "Rozladuj fil. 3"
-
-# MSG_UNLOAD_FILAMENT_4 c=17
-#: ultralcd.cpp:5409
-msgid "Unload filament 4"
-msgstr "Rozladuj fil. 4"
-
 # MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:92
+#: messages.c:98
 msgid "Unloading filament"
 msgstr "Rozladowuje filament"
 
 # 
-#: ultralcd.cpp:4639
-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."
+#: ultralcd.cpp:1773
+msgid "Total"
+msgstr "Suma"
 
 # MSG_USED c=19 r=1
-#: ultralcd.cpp:5334
+#: ultralcd.cpp:5908
 msgid "Used during print"
 msgstr "Uzyte podczas druku"
 
 # MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2276
+#: ultralcd.cpp:2254
 msgid "Voltages"
 msgstr "Napiecia"
 
-# MSG_SD_VOL_INIT_FAIL
-#: cardreader.cpp:191
-msgid "volume.init failed"
-msgstr "niepowodzenie volume.init "
+# 
+#: ultralcd.cpp:2227
+msgid "unknown"
+msgstr "nieznane"
 
 # MSG_USERWAIT
-#: Marlin_main.cpp:4876
+#: Marlin_main.cpp:5263
 msgid "Wait for user..."
 msgstr "Czekam na uzytkownika..."
 
 # MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3255
+#: ultralcd.cpp:3458
 msgid "Waiting for nozzle and bed cooling"
 msgstr "Oczekiwanie na wychlodzenie dyszy i stolu"
 
 # MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3219
+#: ultralcd.cpp:3422
 msgid "Waiting for PINDA probe cooling"
 msgstr "Czekam az spadnie temp. sondy PINDA"
 
+# 
+#: ultralcd.cpp:4868
+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:1508
+#: Marlin_main.cpp:1511
 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:1500
+#: Marlin_main.cpp:1503
 msgid "Warning: motherboard type changed."
 msgstr "Ostrzezenie: plyta glowna ulegla zmianie."
 
 # MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1504
+#: Marlin_main.cpp:1507
 msgid "Warning: printer type changed."
 msgstr "Ostrzezenie: rodzaj drukarki ulegl zmianie"
 
-# MSG_FW_VERSION_UNKNOWN c=20 r=8
-#: Marlin_main.cpp:946
-msgid "WARNING: This is an unofficial, unsupported build. Use at your own risk!"
-msgstr "OSTRZEZENIE: To jest nieoficjalna, niewspierana wersja firmware. Uzywasz na wlasna odpowiedzialnosc!"
-
 # MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3014
+#: Marlin_main.cpp:3054
 msgid "Was filament unload successful?"
 msgstr "Rozladowanie fil. ok?"
 
 # MSG_SELFTEST_WIRINGERROR
-#: messages.c:80
+#: messages.c:85
 msgid "Wiring error"
 msgstr "Blad polaczenia"
 
 # MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5176
+#: ultralcd.cpp:5747
 msgid "Wizard"
 msgstr "Asystent"
 
-# MSG_SD_WORKDIR_FAIL
-#: messages.c:78
-msgid "workDir open failed"
-msgstr "blad otwierania workDir"
-
-# MSG_SD_WRITE_TO_FILE
-#: cardreader.cpp:424
-msgid "Writing to file: "
-msgstr "Zapis do pliku:"
-
-# 
-#: ultralcd.cpp:4885
-msgid "X-correct"
-msgstr "Korekcja X"
-
 # MSG_XYZ_DETAILS c=19 r=1
-#: ultralcd.cpp:2265
+#: ultralcd.cpp:2243
 msgid "XYZ cal. details"
 msgstr "Szczegoly kal. XYZ"
 
+# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
+#: messages.c:19
+msgid "XYZ calibration failed. Please consult the manual."
+msgstr "Kalibracja XYZ nieudana. Sprawdz przyczyny i rozwiazania w instrukcji."
+
+# MSG_YES
+#: messages.c:104
+msgid "Yes"
+msgstr "Tak"
+
+# MSG_WIZARD_QUIT c=20 r=8
+#: messages.c:103
+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:3715
+#: ultralcd.cpp:3922
 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:3712
+#: ultralcd.cpp:3919
 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
 msgstr "Kalibracja XYZ prawidlowa. Osie X/Y lekko skosne. Dobra robota!"
 
+# 
+#: ultralcd.cpp:5130
+msgid "X-correct:"
+msgstr "Korekcja-X:"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
+#: ultralcd.cpp:3916
+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:3693
+#: ultralcd.cpp:3900
 msgid "XYZ calibration compromised. Front calibration points not reachable."
 msgstr "Kalibr. XYZ niedokladna. Przednie punkty kalibr. nieosiagalne."
 
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8
-#: ultralcd.cpp:3699
-msgid "XYZ calibration compromised. Left front calibration point not reachable."
-msgstr "Kalibracja XYZ niedokladna. Lewy przedni punkt nieosiagalny."
-
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3696
+#: ultralcd.cpp:3903
 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:6166
+msgid "Load all"
+msgstr "Zalad. wszystkie"
+
 # 
-#: ultralcd.cpp:3675
+#: ultralcd.cpp:3882
 msgid "XYZ calibration failed. Bed calibration point was not found."
 msgstr "Kalibracja XYZ nieudana. Nie znaleziono punktow kalibracyjnych."
 
 # 
-#: ultralcd.cpp:3681
+#: ultralcd.cpp:3888
 msgid "XYZ calibration failed. Front calibration points not reachable."
 msgstr "Kalibr. XYZ nieudana. Przednie punkty kalibr. nieosiagalne. Nalezy poprawic montaz drukarki."
 
 # 
-#: ultralcd.cpp:3687
-msgid "XYZ calibration failed. Left front calibration point not reachable."
-msgstr "Kalibr. XYZ nieudana. Lewy przedni punkt nieosiagalny. Nalezy poprawic montaz drukarki."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
-#: messages.c:19
-msgid "XYZ calibration failed. Please consult the manual."
-msgstr "Kalibracja XYZ nieudana. Sprawdz przyczyny i rozwiazania w instrukcji."
-
-# 
-#: ultralcd.cpp:3684
+#: ultralcd.cpp:3891
 msgid "XYZ calibration failed. Right front calibration point not reachable."
 msgstr "Kalibr. XYZ nieudana. Prawy przedni punkt nieosiagalny. Nalezy poprawic montaz drukarki."
 
-# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3709
-msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
-msgstr "Kalibracja XYZ ok. Osie X/Y sa prostopadle. Gratulacje!"
-
 # 
-#: ultralcd.cpp:2859
+#: ultralcd.cpp:3016
 msgid "Y distance from min"
 msgstr "Dystans od 0 w osi Y"
 
-# MSG_Y_DISTANCE_FROM_MIN c=20 r=1
-#: ultralcd.cpp:2306
-msgid "Y distance from min:"
-msgstr "Min. odleglosc od Y:"
+# 
+#: ultralcd.cpp:5131
+msgid "Y-correct:"
+msgstr "Korekcja-Y:"
+
+# MSG_OFF
+#: menu.cpp:426
+msgid " [off]"
+msgstr " [wyl]"
 
 # 
-#: ultralcd.cpp:4886
-msgid "Y-correct"
-msgstr "Korekcja Y"
+#: messages.c:57
+msgid "Back"
+msgstr "Wstecz"
 
-# MSG_YES
-#: messages.c:98
-msgid "Yes"
-msgstr "Tak"
+# 
+#: ultralcd.cpp:5639
+msgid "Checks"
+msgstr "Testy"
+
+# 
+#: ultralcd.cpp:7973
+msgid "False triggering"
+msgstr "Falszywy alarm"
+
+# 
+#: ultralcd.cpp:4030
+msgid "FINDA:"
+msgstr ""
 
-# MSG_FW_VERSION_ALPHA c=20 r=8
-#: Marlin_main.cpp:930
-msgid "You are using firmware alpha version. This is development version. Using this version is not recommended and may cause printer damage."
-msgstr "Uzywasz firmware w wersji alpha. Jest to niezalecana wersja rozwojowa. Moze spowodowac uszkodzenie drukarki."
+# 
+#: ultralcd.cpp:5545
+msgid "Firmware   [none]"
+msgstr "Firmware   [brak]"
 
-# MSG_FW_VERSION_BETA c=20 r=8
-#: Marlin_main.cpp:931
-msgid "You are using firmware beta version. This is development version. Using this version is not recommended and may cause printer damage."
-msgstr "Uzywasz firmware w wersji beta. Ta wersja jest rozwojowa. Uzywanie jej nie jest zalecane i moze spowodowac uszkodzenie drukarki."
+# 
+#: ultralcd.cpp:5551
+msgid "Firmware [strict]"
+msgstr "Firmware [restr.]"
 
-# MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:97
-msgid "You can always resume the Wizard from Calibration -> Wizard."
-msgstr "Zawsze mozesz uruchomic Asystenta ponownie przez Kalibracja -> Asystent."
+# 
+#: ultralcd.cpp:5548
+msgid "Firmware   [warn]"
+msgstr "Firmware[ostrzez]"
+
+# 
+#: messages.c:87
+msgid "HW Setup"
+msgstr "Ustawienia HW"
+
+# 
+#: ultralcd.cpp:4034
+msgid "IR:"
+msgstr ""
+
+# 
+#: ultralcd.cpp:7046
+msgid "Magnets comp.[N/A]"
+msgstr "Kor. magnesow[N/D]"
+
+# 
+#: ultralcd.cpp:7044
+msgid "Magnets comp.[Off]"
+msgstr "Kor. magnesow[wyl]"
+
+# 
+#: ultralcd.cpp:7043
+msgid "Magnets comp. [On]"
+msgstr "Kor. magnesow [wl]"
+
+# 
+#: ultralcd.cpp:7035
+msgid "Mesh         [3x3]"
+msgstr "Siatka       [3x3]"
+
+# 
+#: ultralcd.cpp:7036
+msgid "Mesh         [7x7]"
+msgstr "Siatka       [7x7]"
+
+# 
+#: ultralcd.cpp:5677
+msgid "Mesh bed leveling"
+msgstr "Poziomowanie stolu"
+
+# 
+#: Marlin_main.cpp:856
+msgid "MK3S firmware detected on MK3 printer"
+msgstr "Wykryto firmware MK3S w drukarce MK3"
+
+# 
+#: ultralcd.cpp:5306
+msgid "MMU Mode [Normal]"
+msgstr "Tryb MMU[Normaln]"
+
+# 
+#: ultralcd.cpp:5307
+msgid "MMU Mode[Stealth]"
+msgstr "Tryb MMU[Stealth]"
+
+# 
+#: ultralcd.cpp:4511
+msgid "Mode change in progress ..."
+msgstr "Trwa zmiana trybu..."
+
+# 
+#: ultralcd.cpp:5506
+msgid "Model      [none]"
+msgstr "Model      [brak]"
+
+# 
+#: ultralcd.cpp:5512
+msgid "Model    [strict]"
+msgstr "Model [restrykc.]"
+
+# 
+#: ultralcd.cpp:5509
+msgid "Model      [warn]"
+msgstr "Model  [ostrzez.]"
+
+# 
+#: ultralcd.cpp:5467
+msgid "Nozzle d.  [0.25]"
+msgstr "Sr. dyszy  [0,25]"
+
+# 
+#: ultralcd.cpp:5470
+msgid "Nozzle d.  [0.40]"
+msgstr "Sr. dyszy  [0,40]"
+
+# 
+#: ultralcd.cpp:5473
+msgid "Nozzle d.  [0.60]"
+msgstr "Sr. dyszy  [0,60]"
+
+# 
+#: ultralcd.cpp:5421
+msgid "Nozzle     [none]"
+msgstr "Dysza      [brak]"
+
+# 
+#: ultralcd.cpp:5427
+msgid "Nozzle   [strict]"
+msgstr "Dysza [restrykc.]"
+
+# 
+#: ultralcd.cpp:5424
+msgid "Nozzle     [warn]"
+msgstr "Dysza  [ostrzez.]"
+
+# 
+#: util.cpp:510
+msgid "G-code sliced for a different level. Continue?"
+msgstr ""
+
+# 
+#: util.cpp:516
+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:427
+msgid "G-code sliced for a different printer type. Continue?"
+msgstr "G-code pociety dla innej drukarki. Kontynuowac?"
+
+# 
+#: util.cpp:433
+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:477
+msgid "G-code sliced for a newer firmware. Continue?"
+msgstr "G-code pociety dla nowszego firmware. Kontynuowac?"
+
+# 
+#: util.cpp:483
+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:4026
+msgid "PINDA:"
+msgstr ""
+
+# 
+#: ultralcd.cpp:2465
+msgid "Preheating to cut"
+msgstr "Nagrzewanie do obciecia"
+
+# 
+#: ultralcd.cpp:2462
+msgid "Preheating to eject"
+msgstr "Nagrzewanie do wysuniecia"
+
+# 
+#: util.cpp:390
+msgid "Printer nozzle diameter differs from the G-code. Continue?"
+msgstr "Srednica dyszy drukarki rozni sie od tej w G-code. Kontynuowac?"
+
+# 
+#: util.cpp:397
+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."
+
+# 
+#: ultralcd.cpp:6683
+msgid "Rename"
+msgstr "Zmien nazwe"
+
+# 
+#: ultralcd.cpp:6679
+msgid "Select"
+msgstr "Wybierz"
+
+# 
+#: ultralcd.cpp:2245
+msgid "Sensor info"
+msgstr "Info o sensorach"
+
+# 
+#: messages.c:58
+msgid "Sheet"
+msgstr "Plyta"
+
+# 
+#: sound.h:9
+msgid "Sound    [assist]"
+msgstr "Dzwiek   [asyst.]"
+
+# 
+#: ultralcd.cpp:5637
+msgid "Steel sheets"
+msgstr "Plyty stalowe"
+
+# 
+#: ultralcd.cpp:5132
+msgid "Z-correct:"
+msgstr "Korekcja-Z:"
+
+# 
+#: ultralcd.cpp:7038
+msgid "Z-probe nr.    [1]"
+msgstr "Ilosc Pomiarow [1]"
+
+# 
+#: ultralcd.cpp:7040
+msgid "Z-probe nr.    [3]"
+msgstr "Ilosc Pomiarow [3]"
 
-# MSG_MEASURED_OFFSET
-#: ultralcd.cpp:2914
-msgid "[0;0] point offset"
-msgstr "[0;0] przesuniecie punktu"

+ 252 - 0
lang/translations.md

@@ -0,0 +1,252 @@
+# Translations
+
+## Workflow
+
+- Build firmware
+  - using `build.sh`
+  - using `PF-build.sh` with a `break` before `# build languages`
+- change to `lang` folder
+- check if lang scripts being able to run with `config.sh`
+  - if you get `Arduino main folder: NG` message change in `config.sh` `export ARDUINO=C:/arduino-1.8.5` to `export ARDUINO=<Path to your Arduino IDE folder>`
+    -example: `export ARDUINO=D:/Github/Prusa-Firmware/PF-build-env-1.0.6/windows-64`
+- run `lang-build.sh en` to create english `lang_en.tmp`, `lang_en.dat` and `lang_en.bin` files
+- change in `fw-build.sh` `IGNORE_MISSING_TEXT=1` to `IGNORE_MISSING_TEXT=0` so it stops with error and generates `not_used.txt` and `not_tran.txt`
+- run modified `fw-build.sh`
+  - `not_tran.txt` should be reviewed and added as these are potential missing translations
+    - copy `not_tran.txt` as `lang_add.txt` 
+	  - check if there are things you don't want to translate or must be modifed
+	  - als check that the strings do not start with `spaces` as the scripts doesn't handle these well at this moment.
+	  - run `lang-add.sh lang_add.txt` to add the missing translations to `lang_en.txt` and `lang_en_??.txt`
+  - `not_used.txt` should only contain mesages that aren't used in this variant like MK2.5 vs MK3
+- run `fw-clean.sh` to cleanup firmware related files
+- delete `not_used.txt` and `not_tran.txt`
+- run `lang-clean.sh` to cleanup language related files
+- run `lang-export.sh all` to create PO files for translation these are stored in `/lang/po` folder
+  - Send them to translators and reviewers or
+  - copy these to `/lang/po/new` and 
+  - translate these with POEdit the newly added messages
+    - easiest way is to choose `Validate`in POEdit as it shows you `errors` and the `missing transalations` / most likely the newly added at the top.
+- The new translated files are expected in `/lang/po/new` folder so store the received files these
+- run `lang-import.sh <language code (iso639-1)>` for each newly translated language
+  - script improvement to import "all" and other things would be great.
+- Double check if something is missing or faulty
+  - run `lang-build.sh` to to create `lang_en.tmp/.dat/.bin` and `lang_en_??.tmp/.dat/.bin` files
+  - run `fw-build.sh` and check if there are still some messages in `not_tran.txt` that need attention
+- After approval
+  - run `fw-clean.sh` to cleanup firmware related files
+  - run `lang-clean.sh` to cleanup language related files
+  - change in `fw-build.sh` back to `IGNORE_MISSING_TEXT=1`
+  - remove `break` from `PF-build.sh` script if that has been modified
+  - build your firmware with `build.sh`, `PF-build.sh` or how you normally do it.
+  - Check/Test firmware on printer
+
+## Code / usage
+There are 2 modes of operation. If `LANG_MODE==0`, only one language is being used (the default compilation approach from plain Arduino IDE).
+The reset of this explanation is devoted to `LANG_MODE==1`:
+
+`language.h`:
+```C++
+// section .loc_sec (originaly .progmem0) will be used for localized translated strings
+#define PROGMEM_I2 __attribute__((section(".loc_sec")))
+// section .loc_pri (originaly .progmem1) will be used for localized strings in english
+#define PROGMEM_I1 __attribute__((section(".loc_pri")))
+// section .noloc (originaly progmem2) will be used for not localized strings in english
+#define PROGMEM_N1 __attribute__((section(".noloc")))
+#define _I(s) (__extension__({static const char __c[] PROGMEM_I1 = "\xff\xff" s; &__c[0];}))
+#define ISTR(s) "\xff\xff" s
+#define _i(s) lang_get_translation(_I(s))
+#define _T(s) lang_get_translation(s)
+```
+That explains the macros:
+- `_i` expands into `lang_get_translation((__extension__({static const char __c[] PROGMEM_I1 = "\xff\xff" s; &__c[0];})))` . Note the two 0xff's in the beginning of the string. `_i` allows for declaring a string directly inplace of C++ code, no string table is used. The downside of this approach is obvious - the compiler is not able/willing to merge duplicit strings into one.
+- `_T` expands into `lang_get_translation(s)` without the two 0xff's at the beginning. Must be used in conjunction with MSG tables in `messages.h`. Allows to declare a string only once and use many times.
+- `_N` means not-translated. These strings reside in a different segment of memory.
+
+The two 0xff's are somehow magically replaced by real string ID's where the translations are available (still don't know where).
+```C++
+const char* lang_get_translation(const char* s){
+	if (lang_selected == 0) return s + 2; //primary language selected, return orig. str.
+	if (lang_table == 0) return s + 2; //sec. lang table not found, return orig. str.
+	uint16_t ui = pgm_read_word(((uint16_t*)s)); //read string id
+	if (ui == 0xffff) return s + 2; //translation not found, return orig. str.
+	ui = pgm_read_word(((uint16_t*)(((char*)lang_table + 16 + ui*2)))); //read relative offset
+	if (pgm_read_byte(((uint8_t*)((char*)lang_table + ui))) == 0) //read first character
+		return s + 2;//zero length string == not translated, return orig. str.
+	return (const char*)((char*)lang_table + ui); //return calculated pointer
+}
+```
+
+## Files
+
+### `lang_en.txt`
+```
+#MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
+"Crash detection can\x0abe turned on only in\x0aNormal mode"
+```
+
+### `lang_en_*.txt`
+```
+#MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
+"Crash detection can\x0abe turned on only in\x0aNormal mode"
+"Crash detekce muze\x0abyt zapnuta pouze v\x0aNormal modu"
+```
+1. a comment - usually a MSG define with number of characters (c) and rows (r)
+2. English text
+3. translated text
+
+### `not_tran.txt`
+A simple list of strings that are not translated yet.
+
+### `not_used.txt`
+A list os strings not currently used in this variant of the firmware or are obsolete.
+Example: There are MK2.5 specific messages that aren't used when you compile a MK3 variant and vice versa. So be carefull and double check the code if this message is obsolete or just not used due to the chosen variant.
+
+## Scripts
+
+### `config.sh`
+- Checks setup and sets auxiliary env vars used in many other scripts. 
+- Looks for env var `ARDUINO`. If not found/empty, a default `C:/arduino-1.8.5` is used.
+- Sets env var `CONFIG_OK=1` when all good, otherwise sets `CONFIG_OK=0`
+
+### `fw-build.sh`
+Joins firmware HEX and language binaries into one file.
+
+### `fw-clean.sh`
+
+### `lang-add.sh`
+Adds new messages into the dictionary regardless of whether there have been any older versions.
+
+### `lang-build.sh`
+Generates lang_xx.bin (language binary files) for the whole firmware build.
+
+Arguments:
+- `$1` : language code (`en`, `cz`, `de`, `es`, `fr`, `it`, `pl`) or `all`
+- empty/no arguments defaults to `all`
+
+Input: `lang_en.txt` or `lang_en_xx.txt`
+
+Output: `lang_xx.bin`
+
+Temporary files: `lang_xx.tmp` and `lang_xx.dat`
+
+Description of the process:
+The script first runs `lang-check.py $1` and removes empty lines and comments (and non-translated texts) into `lang_$1.tmp`.
+The tmp file now contains all translated texts (some of them empty, i.e. "").
+The tmp file is then transformed into `lang_$1.dat`, which is a simple dump of all texts together, each terminated with a `\x00`.
+Format of the `bin` file:
+- 00-01: `A5 5A`
+- 02-03: `B4 4B`
+- 04-05: 2B size
+- 06-07: 2B number of strings
+- 08-09: 2B checksum
+- 0A-0B: 2B lang code hex data: basically `en` converted into `ne`, i.e. characters swapped. Only `cz` is changed into `sc` (old `cs` ISO code).
+- 0C-0D: 2B signature low
+- 0E-0F: 2B signature high
+- 10-(10 + 2*number of strings): table of string offsets from the beginning of this file
+- after the table there are the strings themselves, each terminated with `\x00`
+
+The signature is composed of 2B number of strings and 2B checksum in lang_en.bin. Signature in lang_en.bin is zero.
+
+### `lang-check.sh` and `lang-check.py`
+Both do the same, only lang-check.py is newer, i.e. lang-check.sh is not used anymore.
+lang-check.py makes a binary comparison between what's in the dictionary and what's in the binary.
+
+### `lang-clean.sh`
+Removes all language output files from lang folder. That means deleting:
+-  if [ "$1" = "en" ]; then
+  rm_if_exists lang_$1.tmp
+ else
+  rm_if_exists lang_$1.tmp
+  rm_if_exists lang_en_$1.tmp
+  rm_if_exists lang_en_$1.dif
+  rm_if_exists lang_$1.ofs
+  rm_if_exists lang_$1.txt
+ fi
+ rm_if_exists lang_$1_check.dif
+ rm_if_exists lang_$1.bin
+ rm_if_exists lang_$1.dat
+ rm_if_exists lang_$1_1.tmp
+ rm_if_exists lang_$1_2.tmp
+
+### `lang-export.sh`
+Exports PO (gettext) for external translators.
+
+### `lang-import.sh`
+Import from PO.
+
+Arguments:
+- `$1` : language code (`en`, `cz`, `de`, `es`, `fr`, `it`, `pl`)
+- empty/no arguments quits the script
+
+Input files: `<language code>.po` files like `de.po`, `es.po`, etc.
+
+Input folder: ´/lang/po/new´
+
+Output files:
+
+Output foler: ´/lang/po/new´
+
+Needed improments to scrpit:
+ - add `all` argument
+ - update `replace in <language> translations` to all known special characters the LCD display with Japanese ROM cannot display
+ - move `lang_en_<language code>.txt` to folder `/lang`
+ - cleanup `<language code>_filtered.po`, `<language code>_new.po` and `nonasci.txt`
+
+### `progmem.sh`
+
+Examine content of progmem sections (default is progmem1).
+
+Input:
+- $OUTDIR/Firmware.ino.elf
+- $OUTDIR/sketch/*.o (all object files)
+
+Outputs:
+- text.sym     - formated symbol listing of section '.text'
+- $PROGMEM.sym - formated symbol listing of section '.progmemX'
+- $PROGMEM.lss - disassembly listing file
+- $PROGMEM.hex - variables - hex
+- $PROGMEM.chr - variables - char escape
+- $PROGMEM.var - variables - strings
+- $PROGMEM.txt - text data only (not used)
+
+Description of process:
+- check input files
+- remove output files
+- list symbol table of section '.text' from output elf file to text.sym (sorted by address)
+- calculate start and stop address of section '.$PROGMEM'
+- dump $PROGMEM data in hex format, cut disassembly (keep hex data only) into $PROGMEM.lss
+- convert $PROGMEM.lss to $PROGMEM.hex:
+ - replace empty lines with '|' (variables separated by empty lines)
+ - remove address from multiline variables (keep address at first variable line only)
+ - remove '<' and '>:', remove whitespace at end of lines
+ - remove line-endings, replace separator with '\n' (join hex data lines - each line will contain single variable)
+- convert $PROGMEM.hex to $PROGMEM.chr (prepare string data for character check and conversion)
+ - replace first space with tab
+ - replace second and third space with tab and space
+ - replace all remaining spaces with '\x'
+ - replace all tabs with spaces
+- convert $PROGMEM.chr to $PROGMEM.var (convert data to text) - a set of special characters is escaped here including `\x0a`
+
+
+### `textaddr.sh`
+
+Compiles `progmem1.var` and `lang_en.txt` files to `textaddr.txt` file (mapping of progmem addreses to text idenifiers).
+
+Description of process:
+- check if input files exists
+- create sorted list of strings from progmem1.var and lang_en.txt
+- lines from progmem1.var will contain addres (8 chars) and english text
+- lines from lang_en.txt will contain linenumber and english text
+- after sort this will generate pairs of lines (line from progmem1 first)
+- result of sort is compiled with simple script and stored into file textaddr.txt
+
+Input:
+- progmem1.var
+- lang_en.txt
+
+Output:
+- textaddr.txt
+
+
+
+update_lang.sh