Ver código fonte

Merge branch 'MK3' into time_remaining

XPila 6 anos atrás
pai
commit
31357379ff
47 arquivos alterados com 12669 adições e 2074 exclusões
  1. 2 2
      .gitignore
  2. 2 0
      Firmware/Configuration.h
  3. 168 1
      Firmware/LiquidCrystal_Prusa.cpp
  4. 30 5
      Firmware/LiquidCrystal_Prusa.h
  5. 2 2
      Firmware/MarlinSerial.cpp
  6. 2 2
      Firmware/MarlinSerial.h
  7. 114 36
      Firmware/Marlin_main.cpp
  8. 2 2
      Firmware/SdFile.h
  9. 10 3
      Firmware/bootapp.c
  10. 3 0
      Firmware/config.h
  11. 373 0
      Firmware/io_atmega2560.h
  12. 143 47
      Firmware/language.c
  13. 50 10
      Firmware/language.h
  14. 1 1
      Firmware/mesh_bed_calibration.cpp
  15. 1 0
      Firmware/messages.c
  16. 1 0
      Firmware/messages.h
  17. 1 0
      Firmware/pins_Einsy_1_0.h
  18. 11 3
      Firmware/spi.h
  19. 77 36
      Firmware/ultralcd.cpp
  20. 1 1
      Firmware/ultralcd.h
  21. 1 1
      Firmware/ultralcd_implementation_hitachi_HD44780.h
  22. 1 0
      Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h
  23. 1 0
      Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h
  24. 5 2
      Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h
  25. 178 0
      Firmware/w25x20cl.c
  26. 40 0
      Firmware/w25x20cl.h
  27. 1 1
      README.md
  28. 64 0
      lang/config.sh
  29. 0 12
      lang/lang_en.txt
  30. 2 18
      lang/lang_en_cz.txt
  31. 3 19
      lang/lang_en_de.txt
  32. 2 18
      lang/lang_en_es.txt
  33. 2 18
      lang/lang_en_it.txt
  34. 2 18
      lang/lang_en_pl.txt
  35. 160 138
      lang/make_lang.sh
  36. 1717 0
      lang/po/lang.pot
  37. 1722 28
      lang/po/lang_cz.po
  38. 1788 292
      lang/po/lang_de.po
  39. 1796 324
      lang/po/lang_es.po
  40. 1791 304
      lang/po/lang_it.po
  41. 1788 292
      lang/po/lang_pl.po
  42. 114 61
      lang/po/make_po.sh
  43. 86 0
      lang/po/make_pot.sh
  44. 142 116
      lang/postbuild.sh
  45. 131 126
      lang/progmem.sh
  46. 67 67
      lang/textaddr.sh
  47. 71 68
      lang/update_lang.sh

+ 2 - 2
.gitignore

@@ -4,8 +4,8 @@
 Debug
 Firmware/Configuration_prusa.h
 Firmware/Doc
-/Firmware/.vs/Firmware/v14/.suo
+/Firmware/.vs/Firmware/v14
+/Firmware/__vm
 /Firmware/Firmware.sln
 /Firmware/Firmware.vcxproj
 /Firmware/Firmware.vcxproj.filters
-/Firmware/__vm

+ 2 - 0
Firmware/Configuration.h

@@ -178,6 +178,8 @@
 #define EEPROM_EXTRUDER_MULTIPLIER_0 (EEPROM_BOARD_TYPE - 4)                                   //float
 #define EEPROM_EXTRUDER_MULTIPLIER_1 (EEPROM_EXTRUDER_MULTIPLIER_0 - 4)                        //float
 #define EEPROM_EXTRUDER_MULTIPLIER_2 (EEPROM_EXTRUDER_MULTIPLIER_1 - 4)                        //float
+#define EEPROM_EXTRUDEMULTIPLY (EEPROM_EXTRUDER_MULTIPLIER_2 - 2)                              // uint16
+
 
 //TMC2130 configuration
 #define EEPROM_TMC_AXIS_SIZE  //axis configuration block size

+ 168 - 1
Firmware/LiquidCrystal_Prusa.cpp

@@ -543,4 +543,171 @@ void LiquidCrystal_Prusa::write8bits(uint8_t value) {
   }
   
   pulseEnable();
-}
+}
+
+void LiquidCrystal_Prusa::print(const char* s)
+{
+	while (*s) write(*(s++));
+}
+
+void LiquidCrystal_Prusa::print(char c, int base)
+{
+  print((long) c, base);
+}
+
+void LiquidCrystal_Prusa::print(unsigned char b, int base)
+{
+  print((unsigned long) b, base);
+}
+
+void LiquidCrystal_Prusa::print(int n, int base)
+{
+  print((long) n, base);
+}
+
+void LiquidCrystal_Prusa::print(unsigned int n, int base)
+{
+  print((unsigned long) n, base);
+}
+
+void LiquidCrystal_Prusa::print(long n, int base)
+{
+  if (base == 0) {
+    write(n);
+  } else if (base == 10) {
+    if (n < 0) {
+      print('-');
+      n = -n;
+    }
+    printNumber(n, 10);
+  } else {
+    printNumber(n, base);
+  }
+}
+
+void LiquidCrystal_Prusa::print(unsigned long n, int base)
+{
+  if (base == 0) write(n);
+  else printNumber(n, base);
+}
+
+void LiquidCrystal_Prusa::print(double n, int digits)
+{
+  printFloat(n, digits);
+}
+
+void LiquidCrystal_Prusa::println(void)
+{
+  print('\r');
+  print('\n');  
+}
+
+/*void LiquidCrystal_Prusa::println(const String &s)
+{
+  print(s);
+  println();
+}*/
+
+void LiquidCrystal_Prusa::println(const char c[])
+{
+  print(c);
+  println();
+}
+
+void LiquidCrystal_Prusa::println(char c, int base)
+{
+  print(c, base);
+  println();
+}
+
+void LiquidCrystal_Prusa::println(unsigned char b, int base)
+{
+  print(b, base);
+  println();
+}
+
+void LiquidCrystal_Prusa::println(int n, int base)
+{
+  print(n, base);
+  println();
+}
+
+void LiquidCrystal_Prusa::println(unsigned int n, int base)
+{
+  print(n, base);
+  println();
+}
+
+void LiquidCrystal_Prusa::println(long n, int base)
+{
+  print(n, base);
+  println();
+}
+
+void LiquidCrystal_Prusa::println(unsigned long n, int base)
+{
+  print(n, base);
+  println();
+}
+
+void LiquidCrystal_Prusa::println(double n, int digits)
+{
+  print(n, digits);
+  println();
+}
+
+void LiquidCrystal_Prusa::printNumber(unsigned long n, uint8_t base)
+{
+  unsigned char buf[8 * sizeof(long)]; // Assumes 8-bit chars. 
+  unsigned long i = 0;
+
+  if (n == 0) {
+    print('0');
+    return;
+  } 
+
+  while (n > 0) {
+    buf[i++] = n % base;
+    n /= base;
+  }
+
+  for (; i > 0; i--)
+    print((char) (buf[i - 1] < 10 ?
+      '0' + buf[i - 1] :
+      'A' + buf[i - 1] - 10));
+}
+
+void LiquidCrystal_Prusa::printFloat(double number, uint8_t digits) 
+{ 
+  // Handle negative numbers
+  if (number < 0.0)
+  {
+     print('-');
+     number = -number;
+  }
+
+  // Round correctly so that print(1.999, 2) prints as "2.00"
+  double rounding = 0.5;
+  for (uint8_t i=0; i<digits; ++i)
+    rounding /= 10.0;
+  
+  number += rounding;
+
+  // Extract the integer part of the number and print it
+  unsigned long int_part = (unsigned long)number;
+  double remainder = number - (double)int_part;
+  print(int_part);
+
+  // Print the decimal point, but only if there are digits beyond
+  if (digits > 0)
+    print("."); 
+
+  // Extract digits from the remainder one at a time
+  while (digits-- > 0)
+  {
+    remainder *= 10.0;
+    int toPrint = int(remainder);
+    print(toPrint);
+    remainder -= toPrint; 
+  } 
+}

+ 30 - 5
Firmware/LiquidCrystal_Prusa.h

@@ -2,7 +2,8 @@
 #define LiquidCrystal_Prusa_h
 
 #include <inttypes.h>
-#include "Print.h"
+#include <stddef.h>
+//#include "Print.h"
 
 // commands
 #define LCD_CLEARDISPLAY 0x01
@@ -42,7 +43,7 @@
 #define LCD_5x10DOTS 0x04
 #define LCD_5x8DOTS 0x00
 
-class LiquidCrystal_Prusa : public Print {
+class LiquidCrystal_Prusa/* : public Print */{
 public:
   LiquidCrystal_Prusa(uint8_t rs, uint8_t enable,
 		uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
@@ -81,10 +82,34 @@ public:
 
   void createChar(uint8_t, uint8_t[]);
   void setCursor(uint8_t, uint8_t); 
-  virtual size_t write(uint8_t);
+//  virtual size_t write(uint8_t);
+  size_t write(uint8_t);
   void command(uint8_t);
-  
-  using Print::write;
+
+    void print(const char*);
+    void print(char, int = 0);
+    void print(unsigned char, int = 0);
+    void print(int, int = 10);
+    void print(unsigned int, int = 10);
+    void print(long, int = 10);
+    void print(unsigned long, int = 10);
+    void print(double, int = 2);
+
+//    void println(const String &s);
+    void println(const char[]);
+    void println(char, int = 0);
+    void println(unsigned char, int = 0);
+    void println(int, int = 10);
+    void println(unsigned int, int = 10);
+    void println(long, int = 10);
+    void println(unsigned long, int = 10);
+    void println(double, int = 2);
+    void println(void);
+
+	void printNumber(unsigned long n, uint8_t base);
+	void printFloat(double number, uint8_t digits);
+
+//  using Print::write;
 private:
   void send(uint8_t, uint8_t);
   void write4bits(uint8_t);

+ 2 - 2
Firmware/MarlinSerial.cpp

@@ -259,11 +259,11 @@ void MarlinSerial::println(void)
   print('\n');  
 }
 
-void MarlinSerial::println(const String &s)
+/*void MarlinSerial::println(const String &s)
 {
   print(s);
   println();
-}
+}*/
 
 void MarlinSerial::println(const char c[])
 {

+ 2 - 2
Firmware/MarlinSerial.h

@@ -197,12 +197,12 @@ class MarlinSerial //: public Stream
         write(*buffer++);
     }
 
-    static FORCE_INLINE void print(const String &s)
+/*    static FORCE_INLINE void print(const String &s)
     {
       for (int i = 0; i < (int)s.length(); i++) {
         write(s[i]);
       }
-    }
+    }*/
     
     static FORCE_INLINE void print(const char *str)
     {

+ 114 - 36
Firmware/Marlin_main.cpp

@@ -99,6 +99,9 @@
 #include "tmc2130.h"
 #endif //TMC2130
 
+#ifdef W25X20CL
+#include "w25x20cl.h"
+#endif //W25X20CL
 
 #ifdef BLINKM
 #include "BlinkM.h"
@@ -323,6 +326,7 @@ unsigned long pause_time = 0;
 unsigned long start_pause_print = millis();
 unsigned long t_fan_rising_edge = millis();
 static LongTimer safetyTimer;
+static LongTimer crashDetTimer;
 
 //unsigned long load_filament_time;
 
@@ -684,6 +688,25 @@ void crashdet_detected(uint8_t mask)
 	    cmdqueue_pop_front();
 	}*/
 	st_synchronize();
+	static uint8_t crashDet_counter = 0;
+	bool automatic_recovery_after_crash = true;
+	bool yesno;
+
+	if (crashDet_counter++ == 0) {
+		crashDetTimer.start();
+	}
+	else if (crashDetTimer.expired(CRASHDET_TIMER * 1000ul)){
+		crashDetTimer.stop();
+		crashDet_counter = 0;
+	}
+	else if(crashDet_counter == CRASHDET_COUNTER_MAX){
+		automatic_recovery_after_crash = false;
+		crashDetTimer.stop();
+		crashDet_counter = 0;
+	}
+	else {
+		crashDetTimer.start();
+	}
 
 	lcd_update_enable(true);
 	lcd_implementation_clear();
@@ -700,17 +723,21 @@ void crashdet_detected(uint8_t mask)
 		eeprom_update_word((uint16_t*)EEPROM_CRASH_COUNT_Y_TOT, eeprom_read_word((uint16_t*)EEPROM_CRASH_COUNT_Y_TOT) + 1);
 	}
     
-#ifdef AUTOMATIC_RECOVERY_AFTER_CRASH
-    bool yesno = true;
-#else
-    bool yesno = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_CRASH_DETECTED), false);
-#endif
+
+
 	lcd_update_enable(true);
 	lcd_update(2);
 	lcd_setstatuspgm(_T(MSG_CRASH_DETECTED));
+	gcode_G28(true, true, false, false); //home X and Y
+	st_synchronize();
+
+	if(automatic_recovery_after_crash) 
+		yesno = true;
+	else 
+		yesno = lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Crash detected. Resume print?"), false);
+	lcd_update_enable(true);
 	if (yesno)
 	{
-		enquecommand_P(PSTR("G28 X Y"));
 		enquecommand_P(PSTR("CRASH_RECOVER"));
 	}
 	else
@@ -727,10 +754,15 @@ void crashdet_recover()
 
 void crashdet_cancel()
 {
-	card.sdprinting = false;
-	card.closefile();
 	tmc2130_sg_stop_on_crash = true;
+	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_PROTOCOLLNRPGM(_T(MSG_OK));
+	}
 }
+
 #endif //TMC2130
 
 void failstats_reset_print()
@@ -1009,6 +1041,8 @@ void __test()
 	while(1);
 }
 
+#ifdef W25X20CL
+
 void upgrade_sec_lang_from_external_flash()
 {
 	if ((boot_app_magic == 0x55aa55aa) && (boot_app_flags & BOOT_APP_FLG_USER0))
@@ -1026,15 +1060,58 @@ void upgrade_sec_lang_from_external_flash()
 	boot_app_flags &= ~BOOT_APP_FLG_USER0;
 }
 
+uint8_t lang_xflash_enum_codes(uint16_t* codes)
+{
+	lang_table_header_t header;
+	uint8_t count = 0;
+	uint32_t addr = 0x00000;
+	while (1)
+	{
+		printf_P(_n("LANGTABLE%d:"), count);
+		w25x20cl_rd_data(addr, (uint8_t*)&header, sizeof(lang_table_header_t));
+		if (header.magic != LANG_MAGIC)
+		{
+			printf_P(_n("NG!\n"));
+			break;
+		}
+		printf_P(_n("OK\n"));
+		printf_P(_n(" _lt_magic        = 0x%08lx %S\n"), header.magic, (header.magic==LANG_MAGIC)?_n("OK"):_n("NA"));
+		printf_P(_n(" _lt_size         = 0x%04x (%d)\n"), header.size, header.size);
+		printf_P(_n(" _lt_count        = 0x%04x (%d)\n"), header.count, header.count);
+		printf_P(_n(" _lt_chsum        = 0x%04x\n"), header.checksum);
+		printf_P(_n(" _lt_code         = 0x%04x\n"), header.code);
+		printf_P(_n(" _lt_resv1        = 0x%08lx\n"), header.reserved1);
+
+		addr += header.size;
+		codes[count] = header.code;
+		count ++;
+	}
+	return count;
+}
+
+void list_sec_lang_from_external_flash()
+{
+	uint16_t codes[8];
+	uint8_t count = lang_xflash_enum_codes(codes);
+	printf_P(_n("XFlash lang count = %hhd\n"), count);
+}
+
+#endif //W25X20CL
+
+
 // "Setup" function is called by the Arduino framework on startup.
 // Before startup, the Timers-functions (PWM)/Analog RW and HardwareSerial provided by the Arduino-code 
 // are initialized by the main() routine provided by the Arduino framework.
 void setup()
 {
+#ifdef NEW_SPI
+	spi_init();
+#endif //NEW_SPI
+
     lcd_init();
 	fdev_setup_stream(lcdout, lcd_putchar, NULL, _FDEV_SETUP_WRITE); //setup lcdout stream
 
-//	upgrade_sec_lang_from_external_flash();
+	upgrade_sec_lang_from_external_flash();
 
 	lcd_splash();
 	setup_killpin();
@@ -1184,9 +1261,6 @@ void setup()
 
 #endif //TMC2130
 
-#ifdef NEW_SPI
-	spi_init();
-#endif //NEW_SPI
 
 	st_init();    // Initialize stepper, this enables interrupts!
 
@@ -1330,33 +1404,36 @@ void setup()
   // If they differ, an update procedure may need to be performed. At the end of this block, the current firmware version
   // is being written into the EEPROM, so the update procedure will be triggered only once.
 
+	spi_setup(TMC2130_SPCR, TMC2130_SPSR);
+	puts_P(_n("w25x20cl init: "));
+	if (w25x20cl_ini())
+	{
+		uint8_t uid[8]; // 64bit unique id
+		w25x20cl_rd_uid(uid);
+		puts_P(_n("OK, UID="));
+		for (uint8_t i = 0; i < 8; i ++)
+			printf_P(PSTR("%02hhx"), uid[i]);
+		putchar('\n');
+		list_sec_lang_from_external_flash();
+	}
+	else
+		puts_P(_n("NG!\n"));
+
+
 	lang_selected = eeprom_read_byte((uint8_t*)EEPROM_LANG);
 	if (lang_selected >= LANG_NUM)
 	{
-		lcd_mylang();
+//		lcd_mylang();
+		lang_selected = 0;
 	}
 	lang_select(lang_selected);
 
-	puts_P(_n("\nNew ML support"));
-	printf_P(_n(" lang_selected     = %d\n"), lang_selected);
-	printf_P(_n(" &_SEC_LANG        = 0x%04x\n"), &_SEC_LANG);
-	printf_P(_n(" sizeof(_SEC_LANG) = 0x%04x\n"), sizeof(_SEC_LANG));
-	uint16_t ptr_lang_table0 = ((uint16_t)(&_SEC_LANG) + 0xff) & 0xff00;
-	printf_P(_n(" &_lang_table0     = 0x%04x\n"), ptr_lang_table0);
-	uint32_t _lt_magic = pgm_read_dword(((uint32_t*)(ptr_lang_table0 + 0)));
-	uint16_t _lt_size = pgm_read_word(((uint16_t*)(ptr_lang_table0 + 4)));
-	uint16_t _lt_count = pgm_read_word(((uint16_t*)(ptr_lang_table0 + 6)));
-	uint16_t _lt_chsum = pgm_read_word(((uint16_t*)(ptr_lang_table0 + 8)));
-	uint16_t _lt_resv0 = pgm_read_word(((uint16_t*)(ptr_lang_table0 + 10)));
-	uint32_t _lt_resv1 = pgm_read_dword(((uint32_t*)(ptr_lang_table0 + 12)));
-	printf_P(_n("  _lt_magic        = 0x%08lx %S\n"), _lt_magic, (_lt_magic==0x4bb45aa5)?_n("OK"):_n("NA"));
-	printf_P(_n("  _lt_size         = 0x%04x (%d)\n"), _lt_size, _lt_size);
-	printf_P(_n("  _lt_count        = 0x%04x (%d)\n"), _lt_count, _lt_count);
-	printf_P(_n("  _lt_chsum        = 0x%04x\n"), _lt_chsum);
-	printf_P(_n("  _lt_resv0        = 0x%04x\n"), _lt_resv0);
-	printf_P(_n("  _lt_resv1        = 0x%08lx\n"), _lt_resv1);
-	puts_P(_n("\n"));
+	uint16_t sec_lang_code = lang_get_code(1);
+	printf_P(_n("SEC_LANG_CODE=0x%04x (%c%c)\n"), sec_lang_code, sec_lang_code >> 8, sec_lang_code & 0xff);
 
+#ifdef DEBUG_SEC_LANG
+	lang_print_sec_lang(uartout);
+#endif //DEBUG_SEC_LANG
 	
 	if (eeprom_read_byte((uint8_t*)EEPROM_TEMP_CAL_ACTIVE) == 255) {
 		eeprom_write_byte((uint8_t*)EEPROM_TEMP_CAL_ACTIVE, 0);
@@ -3297,10 +3374,10 @@ void process_commands()
             if( !(code_seen('X') || code_seen('Y') || code_seen('Z')) && code_seen('E')) {
               float echange=destination[E_AXIS]-current_position[E_AXIS];
 
-              if((echange<-MIN_RETRACT && !retracted) || (echange>MIN_RETRACT && retracted)) { //move appears to be an attempt to retract or recover
+              if((echange<-MIN_RETRACT && !retracted[active_extruder]) || (echange>MIN_RETRACT && retracted[active_extruder])) { //move appears to be an attempt to retract or recover
                   current_position[E_AXIS] = destination[E_AXIS]; //hide the slicer-generated retract/recover from calculations
                   plan_set_e_position(current_position[E_AXIS]); //AND from the planner
-                  retract(!retracted);
+                  retract(!retracted[active_extruder]);
                   return;
               }
 
@@ -4433,7 +4510,7 @@ void process_commands()
 		KEEPALIVE_STATE(IN_HANDLER);
       }
       if (IS_SD_PRINTING)
-        LCD_MESSAGERPGM(_i("Resuming print"));////MSG_RESUMING c=0 r=0
+        LCD_MESSAGERPGM(_T(MSG_RESUMING_PRINT));
       else
         LCD_MESSAGERPGM(_T(WELCOME_MSG));
     }
@@ -8262,6 +8339,7 @@ void uvlo_()
 	eeprom_update_float((float*)(EEPROM_EXTRUDER_MULTIPLIER_2), extruder_multiplier[2]);
 #endif
 #endif
+	eeprom_update_word((uint16_t*)(EEPROM_EXTRUDEMULTIPLY), (uint16_t)extrudemultiply);
 
     // Finaly store the "power outage" flag.
 	if(sd_print) eeprom_update_byte((uint8_t*)EEPROM_UVLO, 1);
@@ -8477,7 +8555,7 @@ void recover_machine_state_after_power_panic()
   extruder_multiplier[2] = eeprom_read_float((float*)(EEPROM_EXTRUDER_MULTIPLIER_2));
 #endif
 #endif
-
+  extrudemultiply = (int)eeprom_read_word((uint16_t*)(EEPROM_EXTRUDEMULTIPLY));
 }
 
 void restore_print_from_eeprom() {

+ 2 - 2
Firmware/SdFile.h

@@ -25,7 +25,7 @@
 
 #ifdef SDSUPPORT
 #include "SdBaseFile.h"
-#include <Print.h>
+//#include <Print.h>
 #ifndef SdFile_h
 #define SdFile_h
 //------------------------------------------------------------------------------
@@ -33,7 +33,7 @@
  * \class SdFile
  * \brief SdBaseFile with Print.
  */
-class SdFile : public SdBaseFile, public Print {
+class SdFile : public SdBaseFile/*, public Print*/ {
  public:
   SdFile() {}
   SdFile(const char* name, uint8_t oflag);

+ 10 - 3
Firmware/bootapp.c

@@ -20,10 +20,17 @@ void bootapp_print_vars()
 void bootapp_ram2flash(uint16_t rptr, uint16_t fptr, uint16_t size)
 {
 	cli();
-//	uint16_t ui; for (ui = 0; ui < size; ui++)
-//		ram_array[ui+rptr] = 0xff;
 	boot_app_magic = 0x55aa55aa;
-	boot_app_flags = BOOT_APP_FLG_ERASE | BOOT_APP_FLG_COPY;
+	boot_app_flags |= BOOT_APP_FLG_COPY;
+	uint16_t ui; for (ui = 0; ui < size; ui++)
+	{
+		uint8_t uc = ram_array[ui+rptr];
+		if (pgm_readbyte(ui+fptr) & uc != uc)
+		{
+			boot_app_flags |= BOOT_APP_FLG_ERASE;
+			break;
+		}
+	}
 	boot_copy_size = (uint16_t)size;
 	boot_src_addr = (uint32_t)rptr;
 	boot_dst_addr = (uint32_t)fptr;

+ 3 - 0
Firmware/config.h

@@ -18,6 +18,9 @@
 #define TMC2130_SPCR           SPI_SPCR(TMC2130_SPI_RATE, 1, 1, 1, 0)
 #define TMC2130_SPSR           SPI_SPSR(TMC2130_SPI_RATE)
 
+//W25X20CL configuration
+#define W25X20CL_PIN_CS        32
+
 //LANG - Multi-language support
 //#define LANG_MODE               0 // primary language only
 #define LANG_MODE               1 // sec. language support

+ 373 - 0
Firmware/io_atmega2560.h

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

+ 143 - 47
Firmware/language.c

@@ -1,55 +1,47 @@
 //language.c
 #include "language.h"
-#include <inttypes.h>
 #include <avr/pgmspace.h>
 #include "bootapp.h"
 
 
-// Currectly active language selection.
-unsigned char lang_selected = 0;
+#ifdef W25X20CL
+#include "w25x20cl.h"
+#endif //W25X20CL
+
+// Currently active language selection.
+uint8_t lang_selected = 0;
+
 
 #if (LANG_MODE == 0) //primary language only
-#else //(LANG_MODE == 0)
+
+uint8_t lang_select(uint8_t lang) { return 0; }
+uint8_t lang_get_count() { return 1; }
+uint16_t lang_get_code(uint8_t lang) { return LANG_CODE_EN; }
+const char* lang_get_name_by_code(uint16_t code) { return _n("English"); }
+
+#else //(LANG_MODE == 0) //secondary languages in progmem or xflash
+
 //reserved xx kbytes for secondary language table
 const char _SEC_LANG[LANG_SIZE_RESERVED] PROGMEM_I2 = "_SEC_LANG";
-#endif //(LANG_MODE == 0)
-
-//lang_table_t structure - 16byte header
-typedef struct
-{
-	struct
-	{
-		uint32_t magic;
-		uint16_t size;
-		uint16_t count;
-		uint16_t checksum;
-		uint16_t reserved0;
-		uint32_t reserved1;
-	} header;
-	uint16_t table[];
-} lang_table_t;
 
 //lang_table pointer
 lang_table_t* lang_table = 0;
 
-
 const char* lang_get_translation(const char* s)
 {
-	if (lang_selected == 0) return s + 2; //primary language selected
-	if (lang_table == 0) return s + 2; //sec. lang table not found
+	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
+	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)
-		return s + 2;//not translated string
+	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
 }
 
 const char* lang_get_sec_lang_str(const char* s)
 {
-	uint16_t ui = (uint16_t)&_SEC_LANG; //pointer to _SEC_LANG reserved space
-	ui += 0x00ff; //add 1 page
-	ui &= 0xff00; //align to page
+	uint16_t ui = ((((uint16_t)&_SEC_LANG) + 0x00ff) & 0xff00); //table pointer
 	lang_table_t* _lang_table = ui; //table pointer
 	ui = pgm_read_word(((uint16_t*)s)); //read string id
 	if (ui == 0xffff) return s + 2; //translation not found
@@ -57,41 +49,145 @@ const char* lang_get_sec_lang_str(const char* s)
 	return (const char*)((char*)_lang_table + ui); //return calculated pointer
 }
 
-const char* lang_select(unsigned char lang)
+uint8_t lang_select(uint8_t lang)
 {
-#if (LANG_MODE == 0) //primary language only
-	return 0;
-#else //(LANG_MODE == 0)
-	if (lang == 0) //primary language
+	if (lang == LANG_ID_PRI) //primary language
 	{
 		lang_table = 0;
 		lang_selected = 0;
-		return;
+		return 1;
+	}
+#ifdef W25X20CL
+	if (lang == LANG_ID_SEC) //current secondary language
+	{
+		uint16_t ui = ((((uint16_t)&_SEC_LANG) + 0x00ff) & 0xff00); //table pointer
+		if (pgm_read_dword(((uint32_t*)(ui + 0))) != LANG_MAGIC) return 0; //magic not valid
+		lang_table = ui; // set table pointer
+		lang_selected = 1; // set language id
+		return 1;
 	}
+#else //W25X20CL
+#endif //W25X20CL
+/*
 	uint16_t ui = (uint16_t)&_SEC_LANG; //pointer to _SEC_LANG reserved space
 	ui += 0x00ff; //add 1 page
 	ui &= 0xff00; //align to page
 	lang_table = ui; //set table pointer
 	ui = pgm_read_word(((uint16_t*)(((char*)lang_table + 16)))); //read relative offset of first string (language name)
 	return (const char*)((char*)lang_table + ui); //return calculated pointer
-#endif //(LANG_MODE == 0)
+*/
+	return 0;
 }
 
-unsigned char lang_get_count()
+uint8_t lang_get_count()
 {
-	uint16_t ui = (uint16_t)&_SEC_LANG; //pointer to _SEC_LANG reserved space
-	ui += 0x00ff; //add 1 page
-	ui &= 0xff00; //align to page
-	lang_table_t* _lang_table = ui; //table pointer
-	if (pgm_read_dword(((uint32_t*)(_lang_table + 0))) == 0x4bb45aa5) return 2;
-	return 1;
+#ifdef W25X20CL
+	uint8_t count = 2; //count = 1+n (primary + secondary + all in xflash)
+	uint32_t addr = 0x00000; //start of xflash
+	lang_table_header_t header; //table header structure
+	while (1)
+	{
+		w25x20cl_rd_data(addr, (uint8_t*)&header, sizeof(lang_table_header_t)); //read table header from xflash
+		if (header.magic != LANG_MAGIC) break; //break if magic not valid
+		addr += header.size; //calc address of next table
+		count++; //inc counter
+	}
+	return count;
+#else //W25X20CL
+#endif //W25X20CL
+}
+
+uint16_t lang_get_code(uint8_t lang)
+{
+#ifdef W25X20CL
+	if (lang == LANG_ID_PRI) return LANG_CODE_EN; //primary lang = EN
+	if (lang == LANG_ID_SEC)
+	{
+		uint16_t ui = ((((uint16_t)&_SEC_LANG) + 0x00ff) & 0xff00); //table pointer
+		if (pgm_read_dword(((uint32_t*)(ui + 0))) != LANG_MAGIC) return LANG_CODE_XX; //magic not valid
+		return pgm_read_word(((uint32_t*)(ui + 10))); //return lang code from progmem
+	}
+	uint32_t addr = 0x00000; //start of xflash
+	lang_table_header_t header; //table header structure
+	lang--;
+	while (1)
+	{
+		w25x20cl_rd_data(addr, (uint8_t*)&header, sizeof(lang_table_header_t)); //read table header from xflash
+		if (header.magic != LANG_MAGIC) break; //break if not valid
+		if (--lang == 0) return header.code;
+		addr += header.size; //calc address of next table
+	}
+#else //W25X20CL
+#endif //W25X20CL
+
+//	if (lang == LANG_ID_SEC)
+//	{
+//		uint16_t ui = ((((uint16_t)&_SEC_LANG) + 0x00ff) & 0xff00); //table pointer
+//		if (pgm_read_dword(((uint32_t*)(ui + 0))) == LANG_MAGIC) //magic num is OK
+//			return pgm_read_word(((uint16_t*)(ui + 10))); //read language code
+//	}
+	return LANG_CODE_XX;
 }
 
-const char* lang_get_name(unsigned char lang)
+const char* lang_get_name_by_code(uint16_t code)
 {
-	if (lang == 0) return MSG_LANGUAGE_NAME + 2;
-	return lang_get_sec_lang_str(MSG_LANGUAGE_NAME);
+	switch (code)
+	{
+	case LANG_CODE_EN: return _n("English");
+	case LANG_CODE_CZ: return _n("Cestina");
+	case LANG_CODE_DE: return _n("Deutsch");
+	case LANG_CODE_ES: return _n("Espanol");
+	case LANG_CODE_IT: return _n("Italiano");
+	case LANG_CODE_PL: return _n("Polski");
+	}
+	return _n("??");
+
+//	if (lang == LANG_ID_UNDEFINED) lang = lang_selected;
+//	if (lang == LANG_ID_PRI) return _T(MSG_LANGUAGE_NAME + 2);
+//	if (lang == LANG_ID_SEC)
+//	{
+//		uint16_t ui = ((((uint16_t)&_SEC_LANG) + 0x00ff) & 0xff00); //table pointer
+//		if (pgm_read_dword(((uint32_t*)(ui + 0))) == LANG_MAGIC) //magic num is OK
+//			return lang_get_sec_lang_str(MSG_LANGUAGE_NAME);
+//	}
+//	return 0;
+}
+
+#ifdef DEBUG_SEC_LANG
+const char* lang_get_sec_lang_str_by_id(uint16_t id)
+{
+	uint16_t ui = ((((uint16_t)&_SEC_LANG) + 0x00ff) & 0xff00); //table pointer
+	return ui + pgm_read_word(((uint16_t*)(ui + 16 + id * 2))); //read relative offset and return calculated pointer
 }
 
-const char MSG_LANGUAGE_NAME[] PROGMEM_I1 = ISTR("English"); ////c=0 r=0
+uint16_t lang_print_sec_lang(FILE* out)
+{
+	printf_P(_n("&_SEC_LANG        = 0x%04x\n"), &_SEC_LANG);
+	printf_P(_n("sizeof(_SEC_LANG) = 0x%04x\n"), sizeof(_SEC_LANG));
+	uint16_t ptr_lang_table0 = ((uint16_t)(&_SEC_LANG) + 0xff) & 0xff00;
+	printf_P(_n("&_lang_table0     = 0x%04x\n"), ptr_lang_table0);
+	uint32_t _lt_magic = pgm_read_dword(((uint32_t*)(ptr_lang_table0 + 0)));
+	uint16_t _lt_size = pgm_read_word(((uint16_t*)(ptr_lang_table0 + 4)));
+	uint16_t _lt_count = pgm_read_word(((uint16_t*)(ptr_lang_table0 + 6)));
+	uint16_t _lt_chsum = pgm_read_word(((uint16_t*)(ptr_lang_table0 + 8)));
+	uint16_t _lt_resv0 = pgm_read_word(((uint16_t*)(ptr_lang_table0 + 10)));
+	uint32_t _lt_resv1 = pgm_read_dword(((uint32_t*)(ptr_lang_table0 + 12)));
+	printf_P(_n(" _lt_magic        = 0x%08lx %S\n"), _lt_magic, (_lt_magic==LANG_MAGIC)?_n("OK"):_n("NA"));
+	printf_P(_n(" _lt_size         = 0x%04x (%d)\n"), _lt_size, _lt_size);
+	printf_P(_n(" _lt_count        = 0x%04x (%d)\n"), _lt_count, _lt_count);
+	printf_P(_n(" _lt_chsum        = 0x%04x\n"), _lt_chsum);
+	printf_P(_n(" _lt_resv0        = 0x%04x\n"), _lt_resv0);
+	printf_P(_n(" _lt_resv1        = 0x%08lx\n"), _lt_resv1);
+	if (_lt_magic != LANG_MAGIC) return 0;
+	puts_P(_n(" strings:\n"));
+	uint16_t ui = ((((uint16_t)&_SEC_LANG) + 0x00ff) & 0xff00); //table pointer
+	for (ui = 0; ui < _lt_count; ui++)
+		fprintf_P(out, _n("  %3d %S\n"), ui, lang_get_sec_lang_str_by_id(ui));
+	return _lt_count;
+}
+#endif //DEBUG_SEC_LANG
+
+#endif //(LANG_MODE == 0)
+
+//const char MSG_LANGUAGE_NAME[] PROGMEM_I1 = ISTR("English"); ////c=0 r=0
 

+ 50 - 10
Firmware/language.h

@@ -2,13 +2,15 @@
 #ifndef LANGUAGE_H
 #define LANGUAGE_H
 
+#define W25X20CL
+
 #include "config.h"
+#include <inttypes.h>
+//#include <stdio.h>
 
 #define PROTOCOL_VERSION "1.0"
 
-#ifdef CUSTOM_MENDEL_NAME
-   // #define CUSTOM_MENDEL_NAME CUSTOM_MENDEL_NAME
-#else
+#ifndef CUSTOM_MENDEL_NAME
     #define MACHINE_NAME "Mendel"
 #endif
 
@@ -42,6 +44,23 @@
 #define _N(s) (__extension__({static const char __c[] PROGMEM_N1 = s; &__c[0];}))
 #define _n(s) _N(s)
 
+//lang_table_header_t structure - (size= 16byte)
+typedef struct
+{
+	uint32_t magic;      //+0 
+	uint16_t size;       //+4
+	uint16_t count;      //+6
+	uint16_t checksum;   //+8
+	uint16_t code;       //+10
+	uint32_t reserved1;  //+12
+} lang_table_header_t;
+
+//lang_table_t structure - (size= 16byte + 2*count)
+typedef struct
+{
+	lang_table_header_t header;
+	uint16_t table[];
+} lang_table_t;
 
 // Language indices into their particular symbol tables.
 #define LANG_ID_PRI 0
@@ -49,6 +68,7 @@
 
 // Language is not defined and it shall be selected from the menu.
 #define LANG_ID_FORCE_SELECTION 254
+
 // Language is not defined on a virgin RAMBo board.
 #define LANG_ID_UNDEFINED 255
 
@@ -58,24 +78,43 @@
 // Number of languages available in the language table.
 #define LANG_NUM 2
 
+// Magic number at begin of lang table.
+#define LANG_MAGIC 0x4bb45aa5
+
+// Language codes (ISO639-1)
+#define LANG_CODE_XX 0x3f3f //'??'
+#define LANG_CODE_EN 0x656e //'en'
+#define LANG_CODE_CZ 0x6373 //'cs'
+#define LANG_CODE_DE 0x6465 //'de'
+#define LANG_CODE_ES 0x6573 //'es'
+#define LANG_CODE_IT 0x6974 //'it'
+#define LANG_CODE_PL 0x706c //'pl'
 
 #if defined(__cplusplus)
 extern "C" {
 #endif //defined(__cplusplus)
 
 // Currectly active language selection.
-extern unsigned char lang_selected;
+extern uint8_t lang_selected;
 
 #if (LANG_MODE != 0)
 extern const char _SEC_LANG[LANG_SIZE_RESERVED];
-#endif //(LANG_MODE == 0)
-
 extern const char* lang_get_translation(const char* s);
 extern const char* lang_get_sec_lang_str(const char* s);
-extern const char* lang_select(unsigned char lang);
-extern unsigned char lang_get_count();
-extern const char* lang_get_name(unsigned char lang);
+#endif //(LANG_MODE != 0)
+
+//selects 
+extern uint8_t lang_select(uint8_t lang);
+
+//get total number of languages (primary + all in xflash)
+extern uint8_t lang_get_count();
+extern uint16_t lang_get_code(uint8_t lang);
+extern const char* lang_get_name_by_code(uint16_t code);
 
+#ifdef DEBUG_SEC_LANG
+extern const char* lang_get_sec_lang_str_by_id(uint16_t id);
+extern uint16_t lang_print_sec_lang(FILE* out);
+#endif //DEBUG_SEC_LANG
 
 #if defined(__cplusplus)
 }
@@ -84,7 +123,8 @@ extern const char* lang_get_name(unsigned char lang);
 #define CAT2(_s1, _s2) _s1
 #define CAT4(_s1, _s2, _s3, _s4) _s1
 
-extern const char MSG_LANGUAGE_NAME[];
+//Localized language name
+//extern const char MSG_LANGUAGE_NAME[];
 
 #include "messages.h"
 

+ 1 - 1
Firmware/mesh_bed_calibration.cpp

@@ -2479,7 +2479,7 @@ BedSkewOffsetDetectionResultType improve_bed_offset_and_skew(int8_t method, int8
         // Print the decrasing ID of the measurement point.
 #ifdef MESH_BED_CALIBRATION_SHOW_LCD
         lcd_implementation_print_at(0, next_line, mesh_point+1);
-        lcd_printPGM(_i(" of 4"));////MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0
+        lcd_printPGM(_T(MSG_FIND_BED_OFFSET_AND_SKEW_LINE2));////MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0
 #endif /* MESH_BED_CALIBRATION_SHOW_LCD */
 
         // Move up.

+ 1 - 0
Firmware/messages.c

@@ -71,6 +71,7 @@ const char MSG_PRINT_ABORTED[] PROGMEM_I1 = ISTR("Print aborted"); ////c=20 r=0
 const char MSG_PULL_OUT_FILAMENT[] PROGMEM_I1 = ISTR("Please pull out filament immediately"); ////c=20 r=4
 const char MSG_RECOVER_PRINT[] PROGMEM_I1 = ISTR("Blackout occurred. Recover print?"); ////c=20 r=2
 const char MSG_REFRESH[] PROGMEM_I1 = ISTR("\xF8" "Refresh"); ////c=0 r=0
+const char MSG_RESUMING_PRINT[] PROGMEM_I1 = ISTR("Resuming print"); ////c=0 r=0
 const char MSG_REMOVE_STEEL_SHEET[] PROGMEM_I1 = ISTR("Please remove steel sheet from heatbed."); ////c=20 r=4
 const char MSG_SD_ERR_WRITE_TO_FILE[] PROGMEM_I1 = ISTR("error writing to file"); ////c=0 r=0
 const char MSG_SD_OPEN_FILE_FAIL[] PROGMEM_I1 = ISTR("open failed, File: "); ////c=0 r=0

+ 1 - 0
Firmware/messages.h

@@ -69,6 +69,7 @@ extern const char MSG_PULL_OUT_FILAMENT[];
 extern const char MSG_RECOVER_PRINT[];
 extern const char MSG_REFRESH[];
 extern const char MSG_REMOVE_STEEL_SHEET[];
+extern const char MSG_RESUMING_PRINT[];
 extern const char MSG_SD_ERR_WRITE_TO_FILE[];
 extern const char MSG_SD_OPEN_FILE_FAIL[];
 extern const char MSG_SD_WORKDIR_FAIL[];

+ 1 - 0
Firmware/pins_Einsy_1_0.h

@@ -15,6 +15,7 @@
 #define AMBIENT_THERMISTOR
 #define PINDA_THERMISTOR
 
+#define W25X20CL                 // external 256kB flash
 
 #define SWI2C                    // enable software i2c
 #define SWI2C_A8                 // 8bit address functions

+ 11 - 3
Firmware/spi.h

@@ -15,7 +15,11 @@
 #define DD_MOSI 2
 #define DD_MISO 3
 
-inline void spi_init()
+#if defined(__cplusplus)
+extern "C" {
+#endif //defined(__cplusplus)
+
+static inline void spi_init()
 {
 	DDRB &= ~((1 << DD_SCK) | (1 << DD_MOSI) | (1 << DD_MISO));
 	DDRB |= (1 << DD_SS) | (1 << DD_SCK) | (1 << DD_MOSI);
@@ -25,17 +29,21 @@ inline void spi_init()
 	SPSR = 0x00;
 }
 
-inline void spi_setup(uint8_t spcr, uint8_t spsr)
+static inline void spi_setup(uint8_t spcr, uint8_t spsr)
 {
 	SPCR = spcr;
 	SPSR = spsr;
 }
 
-inline uint8_t spi_txrx(uint8_t tx)
+static inline uint8_t spi_txrx(uint8_t tx)
 {
 	SPDR = tx;
 	while (!(SPSR & (1 << SPIF)));
 	return SPDR;
 }
 
+#if defined(__cplusplus)
+}
+#endif //defined(__cplusplus)
+
 #endif //SPI_H

+ 77 - 36
Firmware/ultralcd.cpp

@@ -702,7 +702,7 @@ void lcd_commands()
 			strcat(cmd1, ftostr32(pause_lastpos[Y_AXIS]));
 			enquecommand(cmd1);
 			
-			lcd_setstatuspgm(_i("Resuming print"));////MSG_RESUMING_PRINT c=20 r=1
+			lcd_setstatuspgm(_T(MSG_RESUMING_PRINT));
 			lcd_commands_step = 3;
 		}
 	}
@@ -1721,9 +1721,9 @@ static void lcd_menu_temperatures()
 static void lcd_menu_voltages()
 {
 	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;
-	//fprintf_P(lcdout, PSTR(ESC_H(1,1) "PWR:      %d.%01dV" ESC_H(1,2) "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)));
-    fprintf_P(lcdout, PSTR( ESC_H(1,1) "PWR:      %d.%01dV"), (int)volt_pwr, (int)(10*fabs(volt_pwr - (int)volt_pwr))) ;
+//	float volt_bed = VOLT_DIV_REF * ((float)current_voltage_raw_bed / (1023 * OVERSAMPLENR)) / VOLT_DIV_FAC;
+//	fprintf_P(lcdout, PSTR(ESC_H(1,1)"PWR:      %d.%01dV" ESC_H(1,2)"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)));
+    fprintf_P(lcdout, PSTR( ESC_H(1,1)"PWR:      %d.%01dV"), (int)volt_pwr, (int)(10*fabs(volt_pwr - (int)volt_pwr))) ;
     if (lcd_clicked())
     {
         menu_action_back();
@@ -3714,14 +3714,25 @@ static void lcd_crash_mode_set()
 #endif //TMC2130
  
 
-static void lcd_set_lang(unsigned char lang) {
-  lang_selected = lang;
-  firstrun = 1;
-  eeprom_update_byte((unsigned char *)EEPROM_LANG, lang);
-  /*langsel=0;*/
-  if (langsel == LANGSEL_MODAL)
-    // From modal mode to an active mode? This forces the menu to return to the setup menu.
-    langsel = LANGSEL_ACTIVE;
+static void lcd_set_lang(unsigned char lang)
+{
+	if (lang > LANG_ID_SEC)
+		if (!lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Copy selected language from XFLASH?"), false, true))
+		{
+			lcd_return_to_status();
+			lcd_update_enable(true);
+			return;
+		}
+	lang_select(lang);
+/*
+	lang_selected = lang;
+	firstrun = 1;
+	eeprom_update_byte((unsigned char *)EEPROM_LANG, lang);
+	// langsel=0;
+	if (langsel == LANGSEL_MODAL)
+	// From modal mode to an active mode? This forces the menu to return to the setup menu.
+	langsel = LANGSEL_ACTIVE;
+*/
 }
 
 #ifdef PAT9125
@@ -3755,17 +3766,22 @@ void lcd_force_language_selection() {
   eeprom_update_byte((unsigned char *)EEPROM_LANG, LANG_ID_FORCE_SELECTION);
 }
 
+#if (LANG_MODE != 0)
 static void lcd_language_menu()
 {
-  START_MENU();
-  if (langsel == LANGSEL_OFF)
-    MENU_ITEM(back, _T(MSG_SETTINGS), 0);
-  else if (langsel == LANGSEL_ACTIVE)
-    MENU_ITEM(back, _T(MSG_WATCH), 0);
-  for (int i=0; i < lang_get_count(); i++)
-    MENU_ITEM(setlang, lang_get_name(i), i);
-  END_MENU();
+	START_MENU();
+	if (langsel == LANGSEL_OFF)
+		MENU_ITEM(back, _T(MSG_SETTINGS), 0);
+	else if (langsel == LANGSEL_ACTIVE)
+		MENU_ITEM(back, _T(MSG_WATCH), 0);
+	MENU_ITEM(setlang, lang_get_name_by_code(lang_get_code(0)), 0);
+//	MENU_ITEM(setlang, lang_get_name_by_code(lang_get_code(1)), 1);
+	for (int i = 2; i < lang_get_count(); i++) //skip seconday language - solved in menu_action_setlang
+		MENU_ITEM(setlang, lang_get_name_by_code(lang_get_code(i)), i);
+	END_MENU();
 }
+#endif //(LANG_MODE != 0)
+
 
 void lcd_mesh_bedleveling()
 {
@@ -4231,7 +4247,10 @@ static void lcd_settings_menu()
 	{
 		MENU_ITEM(submenu, _T(MSG_BABYSTEP_Z), lcd_babystep_z);
 	}
+
+#if (LANG_MODE != 0)
 	MENU_ITEM(submenu, _i("Select language"), lcd_language_menu);////MSG_LANGUAGE_SELECT c=0 r=0
+#endif //(LANG_MODE != 0)
 
   if (card.ToshibaFlashAir_isEnabled()) {
     MENU_ITEM(function, _i("SD card [FlshAir]"), lcd_toshiba_flash_air_compatibility_toggle);////MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
@@ -4590,7 +4609,7 @@ void lcd_mylang_drawmenu(int cursor) {
   }  
 }
 */
-
+/*
 void lcd_mylang_drawmenu(int cursor)
 {
 	unsigned char lang_cnt = lang_get_count();
@@ -4641,7 +4660,8 @@ void lcd_mylang_drawmenu(int cursor)
     lcd.print("^");
   }
 }
- 
+*/
+/*
 void lcd_mylang_drawcursor(int cursor) {
   
 	unsigned char lang_cnt = lang_get_count();
@@ -4651,8 +4671,9 @@ void lcd_mylang_drawcursor(int cursor) {
 
   lcd.print(">");
   
-}  
-
+}
+*/
+/*
 void lcd_mylang()
 {
   int enc_dif = 0;
@@ -4709,15 +4730,13 @@ void lcd_mylang()
       delay(500);
 
     }
-    /*
-    if (++counter == 80) {
-      hlaska++;
-      if(hlaska>LANG_NUM) hlaska=1;
-      lcd_mylang_top(hlaska);
-      lcd_mylang_drawcursor(cursor_pos);
-      counter=0;
-    }
-    */
+//    if (++counter == 80) {
+//      hlaska++;
+//      if(hlaska>LANG_NUM) hlaska=1;
+//      lcd_mylang_top(hlaska);
+//      lcd_mylang_drawcursor(cursor_pos);
+//      counter=0;
+//    }
   };
 
   if(MYSERIAL.available() > 1){
@@ -4730,7 +4749,7 @@ void lcd_mylang()
   lcd_return_to_status();
 
 }
-
+*/
 void bowden_menu() {
 	int enc_dif = encoderDiff;
 	int cursor_pos = 0;
@@ -5638,6 +5657,13 @@ void lcd_confirm_print()
 
 }
 
+extern void __test();
+
+static void lcd_test_menu()
+{
+	__test();
+}
+
 static void lcd_main_menu()
 {
 
@@ -5807,6 +5833,7 @@ static void lcd_main_menu()
 #endif
 
   MENU_ITEM(submenu, _i("Support"), lcd_support_menu);////MSG_SUPPORT c=0 r=0
+//  MENU_ITEM(submenu, _i("Test"), lcd_test_menu);////MSG_SUPPORT c=0 r=0
 
   END_MENU();
 
@@ -7315,9 +7342,23 @@ static void menu_action_submenu(menuFunc_t data) {
 static void menu_action_gcode(const char* pgcode) {
   enquecommand_P(pgcode);
 }
-static void menu_action_setlang(unsigned char lang) {
-  lcd_set_lang(lang);
+
+static void menu_action_setlang(unsigned char lang)
+{
+	if (lang <= LANG_ID_SEC)
+	{
+		lcd_set_lang(lang);
+		return;
+	}
+	uint16_t code = lang_get_code(lang);
+	if (code == lang_get_code(1))
+	{
+		lcd_set_lang(1);
+		return;
+	}
+	lcd_set_lang(lang);
 }
+
 static void menu_action_function(menuFunc_t data) {
   (*data)();
 }

+ 1 - 1
Firmware/ultralcd.h

@@ -32,7 +32,7 @@
   void prusa_statistics(int _message, uint8_t _col_nr = 0);
   void lcd_confirm_print();
   unsigned char lcd_choose_color();
-void lcd_mylang();
+//void lcd_mylang();
   bool lcd_detected(void);
 
   static void lcd_selftest_v();

+ 1 - 1
Firmware/ultralcd_implementation_hitachi_HD44780.h

@@ -987,7 +987,7 @@ if (print_sd_status)
 					lcd.setCursor(0, 3);
 					lcd_printPGM(PSTR("                    "));
 					lcd.setCursor(0, 3);
-					lcd_printPGM(_i("Calibrating Z"));////MSG_HOMEYZ_PROGRESS c=0 r=0
+					lcd_printPGM(_T(MSG_CALIBRATE_Z_AUTO));
 					lcd_printPGM(PSTR(" : "));
 					lcd.print(custom_message_state-10);
 				}

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

@@ -141,6 +141,7 @@
 //#define DEBUG_DUMP_TO_2ND_SERIAL   //dump received characters to 2nd serial line
 //#define DEBUG_STEPPER_TIMER_MISSED // Stop on stepper timer overflow, beep and display a message.
 //#define PLANNER_DIAGNOSTICS // Show the planner queue status on printer display.
+//#define CMD_DIAGNOSTICS //Show cmd queue length on printer display
 #endif /* DEBUG_BUILD */
 
 

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

@@ -141,6 +141,7 @@
 //#define DEBUG_DUMP_TO_2ND_SERIAL   //dump received characters to 2nd serial line
 //#define DEBUG_STEPPER_TIMER_MISSED // Stop on stepper timer overflow, beep and display a message.
 //#define PLANNER_DIAGNOSTICS // Show the planner queue status on printer display.
+//#define CMD_DIAGNOSTICS //Show cmd queue length on printer display
 #endif /* DEBUG_BUILD */
 
 

+ 5 - 2
Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h

@@ -112,8 +112,9 @@
 
 #define Z_AXIS_ALWAYS_ON 1
 
-// Automatic recovery after crash is detected
-#define AUTOMATIC_RECOVERY_AFTER_CRASH
+//Crash detection
+#define CRASHDET_TIMER 45 //seconds
+#define CRASHDET_COUNTER_MAX 3 
 
 // New XYZ calibration
 #define NEW_XYZCAL
@@ -148,6 +149,7 @@
 #define MINTEMP_MINAMBIENT_RAW  978
 
 //#define DEBUG_BUILD
+//#define DEBUG_SEC_LANG   //secondary language debug output at startup
 #ifdef DEBUG_BUILD
 //#define _NO_ASM
 #define DEBUG_DCODES //D codes
@@ -177,6 +179,7 @@
 #define DEBUG_DUMP_TO_2ND_SERIAL   //dump received characters to 2nd serial line
 #define DEBUG_STEPPER_TIMER_MISSED // Stop on stepper timer overflow, beep and display a message.
 #define PLANNER_DIAGNOSTICS // Show the planner queue status on printer display.
+#define CMD_DIAGNOSTICS //Show cmd queue length on printer display
 #endif /* DEBUG_BUILD */
 
 //#define EXPERIMENTAL_FEATURES

+ 178 - 0
Firmware/w25x20cl.c

@@ -0,0 +1,178 @@
+//w25x20cl.c
+
+#include "w25x20cl.h"
+#include <avr/io.h>
+#include <avr/pgmspace.h>
+#include "io_atmega2560.h"
+#include "spi.h"
+
+#define _MFRID             0xEF
+#define _DEVID             0x11
+
+#define _CMD_ENABLE_WR     0x06
+#define _CMD_ENABLE_WR_VSR 0x50
+#define _CMD_DISABLE_WR    0x04
+#define _CMD_RD_STATUS_REG 0x05
+#define _CMD_WR_STATUS_REG 0x01
+#define _CMD_RD_DATA       0x03
+#define _CMD_RD_FAST       0x0b
+#define _CMD_RD_FAST_D_O   0x3b
+#define _CMD_RD_FAST_D_IO  0xbb
+#define _CMD_PAGE_PROGRAM  0x02
+#define _CMD_SECTOR_ERASE  0x20
+#define _CMD_BLOCK32_ERASE 0x52
+#define _CMD_BLOCK64_ERASE 0xd8
+#define _CMD_CHIP_ERASE    0xc7
+#define _CMD_CHIP_ERASE2   0x60
+#define _CMD_PWR_DOWN      0xb9
+#define _CMD_PWR_DOWN_REL  0xab
+#define _CMD_MFRID_DEVID   0x90
+#define _CMD_MFRID_DEVID_D 0x92
+#define _CMD_JEDEC_ID      0x9f
+#define _CMD_RD_UID        0x4b
+
+#define _CS_LOW()  PORT(W25X20CL_PIN_CS) &= ~__MSK(W25X20CL_PIN_CS)
+#define _CS_HIGH() PORT(W25X20CL_PIN_CS) |= __MSK(W25X20CL_PIN_CS)
+
+//#define _SPI_TX swspi_tx
+//#define _SPI_RX swspi_rx
+#define _SPI_TX(b) spi_txrx(b)
+#define _SPI_RX() spi_txrx(0xff)
+
+
+int w25x20cl_mfrid_devid(void);
+
+
+int8_t w25x20cl_ini(void)
+{
+	PIN_OUT(W25X20CL_PIN_CS);
+	_CS_HIGH();
+	if (!w25x20cl_mfrid_devid()) return 0;
+	return 1;
+}
+
+void w25x20cl_enable_wr(void)
+{
+	_CS_LOW();
+	_SPI_TX(_CMD_ENABLE_WR);             // send command 0x06
+	_CS_HIGH();
+}
+
+void w25x20cl_disable_wr(void)
+{
+	_CS_LOW();
+	_SPI_TX(_CMD_DISABLE_WR);            // send command 0x04
+	_CS_HIGH();
+}
+
+uint8_t w25x20cl_rd_status_reg(void)
+{
+	_CS_LOW();
+	_SPI_TX(_CMD_RD_STATUS_REG);         // send command 0x90
+	uint8_t val = _SPI_RX();             // receive value
+	_CS_HIGH();
+	return val;
+}
+
+void w25x20cl_wr_status_reg(uint8_t val)
+{
+	_CS_LOW();
+	_SPI_TX(_CMD_WR_STATUS_REG);         // send command 0x90
+	_SPI_TX(val);                        // send value
+	_CS_HIGH();
+}
+
+void w25x20cl_rd_data(uint32_t addr, uint8_t* data, uint16_t cnt)
+{
+	_CS_LOW();
+	_SPI_TX(_CMD_RD_DATA);               // send command 0x03
+	_SPI_TX(((uint8_t*)&addr)[2]);       // send addr bits 16..23
+	_SPI_TX(((uint8_t*)&addr)[1]);       // send addr bits 8..15
+	_SPI_TX(((uint8_t*)&addr)[0]);       // send addr bits 0..7
+	while (cnt--)                        // receive data
+		*(data++) = _SPI_RX();
+	_CS_HIGH();
+}
+
+void w25x20cl_page_program(uint32_t addr, uint8_t* data, uint16_t cnt)
+{
+	_CS_LOW();
+	_SPI_TX(_CMD_PAGE_PROGRAM);          // send command 0x02
+	_SPI_TX(((uint8_t*)&addr)[2]);       // send addr bits 16..23
+	_SPI_TX(((uint8_t*)&addr)[1]);       // send addr bits 8..15
+	_SPI_TX(((uint8_t*)&addr)[0]);       // send addr bits 0..7
+	while (cnt--)                        // send data
+		_SPI_TX(*(data++));
+	_CS_HIGH();
+}
+
+void w25x20cl_page_program_P(uint32_t addr, uint8_t* data, uint16_t cnt)
+{
+	_CS_LOW();
+	_SPI_TX(_CMD_PAGE_PROGRAM);          // send command 0x02
+	_SPI_TX(((uint8_t*)&addr)[2]);       // send addr bits 16..23
+	_SPI_TX(((uint8_t*)&addr)[1]);       // send addr bits 8..15
+	_SPI_TX(((uint8_t*)&addr)[0]);       // send addr bits 0..7
+	while (cnt--)                        // send data
+		_SPI_TX(pgm_read_byte(data++));
+	_CS_HIGH();
+}
+
+void w25x20cl_erase(uint8_t cmd, uint32_t addr)
+{
+	_CS_LOW();
+	_SPI_TX(_CMD_SECTOR_ERASE);          // send command 0x20
+	_SPI_TX(((uint8_t*)&addr)[2]);       // send addr bits 16..23
+	_SPI_TX(((uint8_t*)&addr)[1]);       // send addr bits 8..15
+	_SPI_TX(((uint8_t*)&addr)[0]);       // send addr bits 0..7
+	_CS_HIGH();
+}
+
+void w25x20cl_sector_erase(uint32_t addr)
+{
+	return w25x20cl_erase(_CMD_SECTOR_ERASE, addr);
+}
+
+void w25x20cl_block32_erase(uint32_t addr)
+{
+	return w25x20cl_erase(_CMD_BLOCK32_ERASE, addr);
+}
+
+void w25x20cl_block64_erase(uint32_t addr)
+{
+	return w25x20cl_erase(_CMD_BLOCK64_ERASE, addr);
+}
+
+void w25x20cl_chip_erase(void)
+{
+	_CS_LOW();
+	_SPI_TX(_CMD_CHIP_ERASE);            // send command 0xc7
+	_CS_HIGH();
+}
+
+
+void w25x20cl_rd_uid(uint8_t* uid)
+{
+	_CS_LOW();
+	_SPI_TX(_CMD_RD_UID);                // send command 0x4b
+	uint8_t cnt = 4;                     // 4 dummy bytes
+	while (cnt--)                        // receive dummy bytes
+		_SPI_RX();
+	cnt = 8;                             // 8 bytes UID
+	while (cnt--)                        // receive UID
+		uid[7 - cnt] = _SPI_RX();
+	_CS_HIGH();
+}
+
+int w25x20cl_mfrid_devid(void)
+{
+	_CS_LOW();
+	_SPI_TX(_CMD_MFRID_DEVID);           // send command 0x90
+	uint8_t cnt = 3;                     // 3 address bytes
+	while (cnt--)                        // send address bytes
+		_SPI_TX(0x00);
+	uint8_t w25x20cl_mfrid = _SPI_RX();  // receive mfrid
+	uint8_t w25x20cl_devid = _SPI_RX();  // receive devid
+	_CS_HIGH();
+	return ((w25x20cl_mfrid == _MFRID) && (w25x20cl_devid == _DEVID));
+}

+ 40 - 0
Firmware/w25x20cl.h

@@ -0,0 +1,40 @@
+//w25x20cl.h
+#ifndef _W25X20CL_H
+#define _W25X20CL_H
+
+#include <inttypes.h>
+#include "config.h"
+
+
+#define W25_STATUS_BUSY   0x01
+#define W25_STATUS_WEL    0x02
+#define W25_STATUS_BP0    0x04
+#define W25_STATUS_BP1    0x08
+#define W25_STATUS_TB     0x20
+#define W25_STATUS_SRP    0x80
+
+
+#if defined(__cplusplus)
+extern "C" {
+#endif //defined(__cplusplus)
+
+
+extern int8_t w25x20cl_ini(void);
+extern void w25x20cl_enable_wr(void);
+extern void w25x20cl_disable_wr(void);
+extern uint8_t w25x20cl_rd_status_reg(void);
+extern void w25x20cl_wr_status_reg(uint8_t val);
+extern void w25x20cl_rd_data(uint32_t addr, uint8_t* data, uint16_t cnt);
+extern void w25x20cl_page_program(uint32_t addr, uint8_t* data, uint16_t cnt);
+extern void w25x20cl_page_program_P(uint32_t addr, uint8_t* data, uint16_t cnt);
+extern void w25x20cl_sector_erase(uint32_t addr);
+extern void w25x20cl_block32_erase(uint32_t addr);
+extern void w25x20cl_block64_erase(uint32_t addr);
+extern void w25x20cl_chip_erase(void);
+extern void w25x20cl_rd_uid(uint8_t* uid);
+
+
+#if defined(__cplusplus)
+}
+#endif //defined(__cplusplus)
+#endif //_W25X20CL_H

+ 1 - 1
README.md

@@ -1,4 +1,4 @@
-# 1. Developement environment preparing
+# 1. Development environment preparation
 
    1. install `"Arduino Software IDE"` for your preferred operating system  
 `https://www.arduino.cc -> Software->Downloads`  

+ 64 - 0
lang/config.sh

@@ -0,0 +1,64 @@
+#!/bin/sh
+#
+# config.sh - multi-language support configuration script
+#  Definition of absolute paths etc.
+#  This file is 'included' in all scripts.
+#
+# Arduino main folder:
+export ARDUINO=C:/arduino-1.6.8
+#
+# Arduino builder:
+export BUILDER=$ARDUINO/arduino_debug.exe
+#
+# AVR gcc tools:
+export OBJCOPY=$ARDUINO/hardware/tools/avr/bin/avr-objcopy.exe
+export OBJDUMP=$ARDUINO/hardware/tools/avr/bin/avr-objdump.exe
+#
+# Output folder:
+export OUTDIR="../../output"
+#
+# Objects folder:
+export OBJDIR="$OUTDIR/sketch"
+#
+# Generated elf file:
+export INOELF="$OUTDIR/Firmware.ino.elf"
+#
+# Generated hex file:
+export INOHEX="$OUTDIR/Firmware.ino.hex"
+
+
+echo "config.sh started" >&2
+
+_err=0
+
+echo -n " Arduino main folder: " >&2
+if [ -e $ARDUINO ]; then echo 'OK' >&2; else echo 'NG!' >&2; _err=1; fi
+
+echo -n " Arduino builder: " >&2
+if [ -e $BUILDER ]; then echo 'OK' >&2; else echo 'NG!' >&2; _err=2; fi
+
+echo " AVR gcc tools:" >&2
+echo -n "   objcopy " >&2
+if [ -e $OBJCOPY ]; then echo 'OK' >&2; else echo 'NG!' >&2; _err=3; fi
+echo -n "   objdump " >&2
+if [ -e $OBJDUMP ]; then echo 'OK' >&2; else echo 'NG!' >&2; _err=4; fi
+
+echo -n " Output folder: " >&2
+if [ -e $OUTDIR ]; then echo 'OK' >&2; else echo 'NG!' >&2; _err=5; fi
+
+echo -n " Objects folder: " >&2
+if [ -e $OBJDIR ]; then echo 'OK' >&2; else echo 'NG!' >&2; _err=6; fi
+
+echo -n " Generated elf file: " >&2
+if [ -e $INOELF ]; then echo 'OK' >&2; else echo 'NG!' >&2; _err=7; fi
+
+echo -n " Generated hex file: " >&2
+if [ -e $INOHEX ]; then echo 'OK' >&2; else echo 'NG!' >&2; _err=8; fi
+
+if [ $_err -eq 0 ]; then
+ echo "config.sh finished with success" >&2
+ export CONFIG_OK=1
+else
+ echo "config.sh finished with errors!" >&2
+ export CONFIG_OK=0
+fi

+ 0 - 12
lang/lang_en.txt

@@ -22,9 +22,6 @@
 #MSG_CONFIGURATION_VER c=0 r=0
 " Last Updated: "
 
-#MSG_FIND_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0
-" of 4"
-
 #MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0
 " of 4"
 
@@ -139,9 +136,6 @@
 #MSG_CALIBRATE_Z_AUTO c=20 r=2
 "Calibrating Z"
 
-#MSG_HOMEYZ_PROGRESS c=0 r=0
-"Calibrating 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."
 
@@ -253,9 +247,6 @@
 #MSG_INFO_EXTRUDER c=15 r=1
 "Extruder info"
 
-#MSG_EXTRUDER c=17 r=1
-"Extruder"
-
 #MSG_MOVE_E c=0 r=0
 "Extruder"
 
@@ -751,9 +742,6 @@
 #MSG_RESUME_PRINT c=0 r=0
 "Resume print"
 
-#MSG_RESUMING c=0 r=0
-"Resuming print"
-
 #MSG_RESUMING_PRINT c=20 r=1
 "Resuming print"
 

+ 2 - 18
lang/lang_en_cz.txt

@@ -34,10 +34,6 @@
 " of 4"
 " z 4"
 
-#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0
-" of 4"
-" z 4"
-
 #MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14 r=0
 " of 9"
 " z 9"
@@ -182,11 +178,7 @@
 "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 "Kalibrace XYZ. Otacenim tlacitka posunte Z osu az k~hornimu dorazu. Potvrdte tlacitkem."
 
-#MSG_HOMEYZ_PROGRESS c=0 r=0
-"Calibrating Z"
-"Kalibruji Z"
-
-#MSG_HOMEYZ_PROGRESS c=0 r=0
+#MSG_CALIBRATE_Z_AUTO c=0 r=0
 "Calibrating Z"
 "Kalibruji Z"
 
@@ -342,10 +334,6 @@
 "Extruder"
 "Extruder"
 
-#MSG_MOVE_E c=0 r=0
-"Extruder"
-"Extruder"
-
 #MSG_FSENS_AUTOLOAD_ON c=17 r=1
 "F. autoload  [on]"
 "F. autozav. [zap]"
@@ -1002,11 +990,7 @@
 "Resume print"
 "Pokracovat"
 
-#MSG_RESUMING c=0 r=0
-"Resuming print"
-"Obnoveni tisku"
-
-#MSG_RESUMING c=0 r=0
+#MSG_RESUMING_PRINT c=0 r=0
 "Resuming print"
 "Obnoveni tisku"
 

+ 3 - 19
lang/lang_en_de.txt

@@ -34,10 +34,6 @@
 " of 4"
 " von 4"
 
-#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0
-" of 4"
-" von 4"
-
 #MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14 r=0
 " of 9"
 " von 9"
@@ -182,11 +178,7 @@
 "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 "Kalibrieren von XYZ. Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Klicken Sie den Knopf wenn es ganz oben wird."
 
-#MSG_HOMEYZ_PROGRESS c=0 r=0
-"Calibrating Z"
-"Kalibriere Z"
-
-#MSG_HOMEYZ_PROGRESS c=0 r=0
+#MSG_CALIBRATE_Z_AUTO c=0 r=0
 "Calibrating Z"
 "Kalibriere Z"
 
@@ -296,7 +288,7 @@
 
 #MSG_Enqueing c=0 r=0
 "enqueing \x22"
-"enqueuing \x22
+"enqueuing \x22"
 
 #MSG_STACK_ERROR c=20 r=4
 "Error - static memory has been overwritten"
@@ -342,10 +334,6 @@
 "Extruder"
 "Extruder"
 
-#MSG_MOVE_E c=0 r=0
-"Extruder"
-"Extruder"
-
 #MSG_FSENS_AUTOLOAD_ON c=17 r=1
 "F. autoload  [on]"
 "\x00"
@@ -1002,11 +990,7 @@
 "Resume print"
 "Fortsetzen"
 
-#MSG_RESUMING c=0 r=0
-"Resuming print"
-"Druck fortgesetzt"
-
-#MSG_RESUMING c=0 r=0
+#MSG_RESUMING_PRINT c=0 r=0
 "Resuming print"
 "Druck fortgesetzt"
 

+ 2 - 18
lang/lang_en_es.txt

@@ -34,10 +34,6 @@
 " of 4"
 " de 4"
 
-#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0
-" of 4"
-" de 4"
-
 #MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14 r=0
 " of 9"
 " de 9"
@@ -182,11 +178,7 @@
 "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 "Calibrando XYZ. Gira el boton para subir el extrusor hasta tocar los topes superiores. Despues haz clic."
 
-#MSG_HOMEYZ_PROGRESS c=0 r=0
-"Calibrating Z"
-"Calibrando Z"
-
-#MSG_HOMEYZ_PROGRESS c=0 r=0
+#MSG_CALIBRATE_Z_AUTO c=0 r=0
 "Calibrating Z"
 "Calibrando Z"
 
@@ -342,10 +334,6 @@
 "Extruder"
 "Extruir"
 
-#MSG_MOVE_E c=0 r=0
-"Extruder"
-"Extruir"
-
 #MSG_FSENS_AUTOLOAD_ON c=17 r=1
 "F. autoload  [on]"
 "\x00"
@@ -1002,11 +990,7 @@
 "Resume print"
 "Reanudar impres."
 
-#MSG_RESUMING c=0 r=0
-"Resuming print"
-"Resumiendo impresion"
-
-#MSG_RESUMING c=0 r=0
+#MSG_RESUMING_PRINT c=0 r=0
 "Resuming print"
 "Resumiendo impresion"
 

+ 2 - 18
lang/lang_en_it.txt

@@ -34,10 +34,6 @@
 " of 4"
 " su 4"
 
-#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0
-" of 4"
-" su 4"
-
 #MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14 r=0
 " of 9"
 " su 9"
@@ -182,11 +178,7 @@
 "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 "Calibrazione XYZ. Ruotare la manopola per alzare il carrello Z fino all'altezza massima. Click per terminare."
 
-#MSG_HOMEYZ_PROGRESS c=0 r=0
-"Calibrating Z"
-"Calibrando Z"
-
-#MSG_HOMEYZ_PROGRESS c=0 r=0
+#MSG_CALIBRATE_Z_AUTO c=0 r=0
 "Calibrating Z"
 "Calibrando Z"
 
@@ -342,10 +334,6 @@
 "Extruder"
 "Muovi Estrusore"
 
-#MSG_MOVE_E c=0 r=0
-"Extruder"
-"Muovi Estrusore"
-
 #MSG_FSENS_AUTOLOAD_ON c=17 r=1
 "F. autoload  [on]"
 "\x00"
@@ -1002,11 +990,7 @@
 "Resume print"
 "Riprendi stampa"
 
-#MSG_RESUMING c=0 r=0
-"Resuming print"
-"Riprendi stampa"
-
-#MSG_RESUMING c=0 r=0
+#MSG_RESUMING_PRINT c=0 r=0
 "Resuming print"
 "Riprendi stampa"
 

+ 2 - 18
lang/lang_en_pl.txt

@@ -34,10 +34,6 @@
 " of 4"
 " z 4"
 
-#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0
-" of 4"
-" z 4"
-
 #MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14 r=0
 " of 9"
 " z 9"
@@ -182,11 +178,7 @@
 "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 "Kalibracja XYZ. Przekrec galke, aby przesunac os Z do gornych krancowek. Nacisnij, by potwierdzic."
 
-#MSG_HOMEYZ_PROGRESS c=0 r=0
-"Calibrating Z"
-"Kalibruje Z"
-
-#MSG_HOMEYZ_PROGRESS c=0 r=0
+#MSG_CALIBRATE_Z_AUTO c=0 r=0
 "Calibrating Z"
 "Kalibruje Z"
 
@@ -342,10 +334,6 @@
 "Extruder"
 "Extruder"
 
-#MSG_MOVE_E c=0 r=0
-"Extruder"
-"Extruder"
-
 #MSG_FSENS_AUTOLOAD_ON c=17 r=1
 "F. autoload  [on]"
 "\x00"
@@ -1002,11 +990,7 @@
 "Resume print"
 "Kontynuowac"
 
-#MSG_RESUMING c=0 r=0
-"Resuming print"
-"Wznowienie druku"
-
-#MSG_RESUMING c=0 r=0
+#MSG_RESUMING_PRINT c=0 r=0
 "Resuming print"
 "Wznowienie druku"
 

+ 160 - 138
lang/make_lang.sh

@@ -1,138 +1,160 @@
-#!/bin/sh
-# makelang.sh - multi-language support high-level script
-#  for generating lang_xx.bin (secondary language binary file)
-#
-# Input files:
-#  lang_en.txt
-#  lang_en_$LANG.txt
-#
-# Output files:
-#  lang_en.tmp (temporary, will be removed when finished)
-#  lang_en_$LANG.tmp ==||==
-#  lang_en_$LANG.dif ==||==
-#  lang_$LANG.txt
-#
-#
-# Selected language:
-LANG=$1
-if [ -z "$LANG" ]; then LANG='cz'; fi
-#
-#
-
-function finish
-{
- if [ "$1" == "0" ]; then
-  if [ -e lang_en.tmp ]; then rm lang_en.tmp; fi
-  if [ -e lang_en_$LANG.tmp ]; then rm lang_en_$LANG.tmp; fi
-  if [ -e lang_en_$LANG.dif ]; then rm lang_en_$LANG.dif; fi
- fi
- echo
- if [ "$1" == "0" ]; then
-  echo "make_lang.sh finished with success" >&2
- else
-  echo "make_lang.sh finished with errors!" >&2
- fi
- case "$-" in
-  *i*) echo "press enter key"; read ;;
- esac
- exit $1
-}
-
-echo "make_lang.sh started" >&2
-echo "selected language=$LANG" >&2
-
-#check if input files exists
-echo -n " checking input files..." >&2
-if [ ! -e lang_en.txt ]; then echo "NG!  file lang_en.txt not found!" >&2; exit 1; fi
-if [ ! -e lang_en_$LANG.txt ]; then echo "NG!  file lang_en_$LANG.txt not found!" >&2; exit 1; fi
-echo "OK" >&2
-
-#filter comment and empty lines from key and dictionary files, create temporary files
-echo -n " creating tmp files..." >&2
-cat lang_en.txt | sed "/^$/d;/^#/d" > lang_en.tmp
-cat lang_en_$LANG.txt | sed "/^$/d;/^#/d" > lang_en_$LANG.tmp
-echo "OK" >&2
-#cat lang_en_$LANG.tmp | sed 'n;d' >test1.txt
-
-#compare files using diff and check for differences
-echo -n " comparing tmp files..." >&2
-if ! cat lang_en_$LANG.tmp | sed 'n;d' | diff lang_en.tmp - > lang_en_$LANG.dif; then
- echo "NG!" >&2
- echo "Entries in lang_en_$LANG.txt are different from lang_en.txt!" >&2
- echo "please check lang_en_$LANG.dif" >&2
- finish 1
-fi
-echo "OK" >&2
-
-#generate lang_xx.txt (secondary language text data sorted by ids)
-echo -n " generating lang_$LANG.txt..." >&2
-cat lang_en_$LANG.tmp | sed '1~2d' | sed "s/^\"\\\\x00/\"/" > lang_$LANG.txt
-echo "OK" >&2
-
-#generate lang_xx.dat (secondary language text data in binary form)
-echo -n " generating lang_$LANG.dat..." >&2
-cat lang_$LANG.txt | sed "s/\\\\/\\\\\\\\/g" | while read s; do
- s=${s#\"}
- s=${s%\"}
- echo -n -e "$s"'\x00'
-done >lang_$LANG.dat
-echo "OK" >&2
-
-#calculate variables
-lt_magic='\xa5\x5a\xb4\x4b'
-lt_count=$(grep -c '^' lang_$LANG.txt)
-lt_data_size=$(wc -c lang_$LANG.dat | cut -f1 -d' ')
-lt_offs_size=$((2 * $lt_count))
-lt_size=$((16 + $lt_offs_size + $lt_data_size))
-lt_chsum=1
-lt_resv0='\xff\xff'
-lt_resv1='\xff\xff\xff\xff'
-
-#generate lang_xx.ofs (secondary language text data offset table)
-echo -n " generating lang_$LANG.ofs..." >&2
-cat lang_$LANG.txt | sed "s/\\\\x[0-9a-f][0-9a-f]/\./g;s/\\\\[0-7][0-7][0-7]/\./g" |\
- awk 'BEGIN { o='$((16 + $lt_offs_size))';} { printf("%d\n",o); o+=(length($0)-1); }' > lang_$LANG.ofs
-echo "OK" >&2
-
-#generate lang_xx.bin (secondary language result binary file)
-echo " generating lang_$LANG.bin:" >&2
-#create empty file
-dd if=/dev/zero of=lang_$LANG.bin bs=1 count=$lt_size 2>/dev/null
-#awk code to format ui16 variables for dd
-awk_ui16='{ h=int($1/256); printf("\\x%02x\\x%02x\n", int($1-256*h), h); }'
-
-#write data to binary file with dd
-
-echo -n "  writing header (16 bytes)..." >&2
-echo -n -e "$lt_magic" |\
- dd of=lang_$LANG.bin bs=1 count=4 seek=0 conv=notrunc 2>/dev/null
-echo -n -e $(echo -n "$lt_size" | awk "$awk_ui16") |\
- dd of=lang_$LANG.bin bs=1 count=2 seek=4 conv=notrunc 2>/dev/null
-echo -n -e $(echo -n "$lt_count" | awk "$awk_ui16") |\
- dd of=lang_$LANG.bin bs=1 count=2 seek=6 conv=notrunc 2>/dev/null
-echo -n -e $(echo -n "$lt_chsum" | awk "$awk_ui16") |\
- dd of=lang_$LANG.bin bs=1 count=2 seek=8 conv=notrunc 2>/dev/null
-echo -n -e "$lt_resv0" |\
- dd of=lang_$LANG.bin bs=1 count=2 seek=10 conv=notrunc 2>/dev/null
-echo -n -e "$lt_resv1" |\
- dd of=lang_$LANG.bin bs=1 count=4 seek=12 conv=notrunc 2>/dev/null
-echo "OK" >&2
-
-echo -n "  writing offset table ($lt_offs_size bytes)..." >&2
-echo -n -e $(cat lang_$LANG.ofs | awk "$awk_ui16" | tr -d '\n'; echo) |\
- dd of=./lang_$LANG.bin bs=1 count=$lt_offs_size seek=16 conv=notrunc 2>/dev/null
-echo "OK" >&2
-
-echo -n "  writing text data ($lt_data_size bytes)..." >&2
-dd if=./lang_$LANG.dat of=./lang_$LANG.bin bs=1 count=$lt_data_size seek=$((16 + $lt_offs_size)) conv=notrunc 2>/dev/null
-echo "OK" >&2
-
-echo " lang_table details:" >&2
-echo "  lt_count = $lt_count" >&2
-echo "  lt_size  = $lt_size" >&2
-echo "  lt_chsum = $lt_chsum" >&2
-
-finish 0
-
-
-
+#!/bin/sh
+#
+# makelang.sh - multi-language support script
+#  for generating lang_xx.bin (secondary language binary file)
+#
+# Input files:
+#  lang_en.txt
+#  lang_en_$LANG.txt
+#
+# Output files:
+#  lang_en.tmp (temporary, will be removed when finished)
+#  lang_en_$LANG.tmp ==||==
+#  lang_en_$LANG.dif ==||==
+#  lang_$LANG.txt
+#
+#
+# Selected language:
+LANG=$1
+if [ -z "$LANG" ]; then LANG='cz'; fi
+#
+#
+
+finish()
+{
+ if [ $1 -eq 0 ]; then
+  if [ -e lang_en.tmp ]; then rm lang_en.tmp; fi
+  if [ -e lang_en_$LANG.tmp ]; then rm lang_en_$LANG.tmp; fi
+  if [ -e lang_en_$LANG.dif ]; then rm lang_en_$LANG.dif; fi
+ fi
+# echo >&2
+ if [ $1 -eq 0 ]; then
+  echo "make_lang.sh finished with success" >&2
+ else
+  echo "make_lang.sh finished with errors!" >&2
+ fi
+ exit $1
+}
+
+make_lang()
+{
+LANG=$1
+
+echo "make_lang.sh started" >&2
+echo "selected language=$LANG" >&2
+
+#check if input files exists
+echo -n " checking input files..." >&2
+if [ ! -e lang_en.txt ]; then echo "NG!  file lang_en.txt not found!" >&2; exit 1; fi
+if [ ! -e lang_en_$LANG.txt ]; then echo "NG!  file lang_en_$LANG.txt not found!" >&2; exit 1; fi
+echo "OK" >&2
+
+#filter comment and empty lines from key and dictionary files, create temporary files
+echo -n " creating tmp files..." >&2
+cat lang_en.txt | sed "/^$/d;/^#/d" > lang_en.tmp
+cat lang_en_$LANG.txt | sed "/^$/d;/^#/d" > lang_en_$LANG.tmp
+echo "OK" >&2
+#cat lang_en_$LANG.tmp | sed 'n;d' >test1.txt
+
+#compare files using diff and check for differences
+echo -n " comparing tmp files..." >&2
+if ! cat lang_en_$LANG.tmp | sed 'n;d' | diff lang_en.tmp - > lang_en_$LANG.dif; then
+ echo "NG!" >&2
+ echo "Entries in lang_en_$LANG.txt are different from lang_en.txt!" >&2
+ echo "please check lang_en_$LANG.dif" >&2
+ finish 1
+fi
+echo "OK" >&2
+
+#generate lang_xx.txt (secondary language text data sorted by ids)
+echo -n " generating lang_$LANG.txt..." >&2
+cat lang_en_$LANG.tmp | sed '1~2d' | sed "s/^\"\\\\x00/\"/" > lang_$LANG.txt
+echo "OK" >&2
+
+#generate lang_xx.dat (secondary language text data in binary form)
+echo -n " generating lang_$LANG.dat..." >&2
+cat lang_$LANG.txt | sed "s/\\\\/\\\\\\\\/g" | while read s; do
+ s=${s#\"}
+ s=${s%\"}
+ /bin/echo -e -n "$s\x00"
+done >lang_$LANG.dat
+echo "OK" >&2
+
+#calculate variables
+lt_magic='\xa5\x5a\xb4\x4b'
+lt_count=$(grep -c '^' lang_$LANG.txt)
+lt_data_size=$(wc -c lang_$LANG.dat | cut -f1 -d' ')
+lt_offs_size=$((2 * $lt_count))
+lt_size=$((16 + $lt_offs_size + $lt_data_size))
+lt_chsum=1
+lt_code='\xff\xff'
+lt_resv1='\xff\xff\xff\xff'
+
+case "$LANG" in
+ *en*) lt_code='\x6e\x65' ;;
+ *cz*) lt_code='\x73\x63' ;;
+ *de*) lt_code='\x65\x64' ;;
+ *es*) lt_code='\x73\x65' ;;
+ *it*) lt_code='\x74\x69' ;;
+ *pl*) lt_code='\x6c\x70' ;;
+esac
+
+#generate lang_xx.ofs (secondary language text data offset table)
+echo -n " generating lang_$LANG.ofs..." >&2
+cat lang_$LANG.txt | sed "s/\\\\x[0-9a-f][0-9a-f]/\./g;s/\\\\[0-7][0-7][0-7]/\./g" |\
+ awk 'BEGIN { o='$((16 + $lt_offs_size))';} { printf("%d\n",o); o+=(length($0)-1); }' > lang_$LANG.ofs
+echo "OK" >&2
+
+#generate lang_xx.bin (secondary language result binary file)
+echo " generating lang_$LANG.bin:" >&2
+#create empty file
+dd if=/dev/zero of=lang_$LANG.bin bs=1 count=$lt_size 2>/dev/null
+#awk code to format ui16 variables for dd
+awk_ui16='{ h=int($1/256); printf("\\x%02x\\x%02x\n", int($1-256*h), h); }'
+
+#write data to binary file with dd
+
+echo -n "  writing header (16 bytes)..." >&2
+/bin/echo -n -e "$lt_magic" |\
+ dd of=lang_$LANG.bin bs=1 count=4 seek=0 conv=notrunc 2>/dev/null
+/bin/echo -n -e $(echo -n "$lt_size" | awk "$awk_ui16") |\
+ dd of=lang_$LANG.bin bs=1 count=2 seek=4 conv=notrunc 2>/dev/null
+/bin/echo -n -e $(echo -n "$lt_count" | awk "$awk_ui16") |\
+ dd of=lang_$LANG.bin bs=1 count=2 seek=6 conv=notrunc 2>/dev/null
+/bin/echo -n -e $(echo -n "$lt_chsum" | awk "$awk_ui16") |\
+ dd of=lang_$LANG.bin bs=1 count=2 seek=8 conv=notrunc 2>/dev/null
+/bin/echo -n -e "$lt_code" |\
+ dd of=lang_$LANG.bin bs=1 count=2 seek=10 conv=notrunc 2>/dev/null
+/bin/echo -n -e "$lt_resv1" |\
+ dd of=lang_$LANG.bin bs=1 count=4 seek=12 conv=notrunc 2>/dev/null
+echo "OK" >&2
+
+echo -n "  writing offset table ($lt_offs_size bytes)..." >&2
+/bin/echo -n -e $(cat lang_$LANG.ofs | awk "$awk_ui16" | tr -d '\n'; echo) |\
+ dd of=./lang_$LANG.bin bs=1 count=$lt_offs_size seek=16 conv=notrunc 2>/dev/null
+echo "OK" >&2
+
+echo -n "  writing text data ($lt_data_size bytes)..." >&2
+dd if=./lang_$LANG.dat of=./lang_$LANG.bin bs=1 count=$lt_data_size seek=$((16 + $lt_offs_size)) conv=notrunc 2>/dev/null
+echo "OK" >&2
+
+echo " lang_table details:" >&2
+echo "  lt_count = $lt_count" >&2
+echo "  lt_size  = $lt_size" >&2
+echo "  lt_chsum = $lt_chsum" >&2
+}
+
+echo $LANG
+
+if [ "$LANG" = "all" ]; then
+ make_lang cz
+ make_lang de
+ make_lang es
+ make_lang it
+ make_lang pl
+ exit 0
+else
+ make_lang $LANG
+fi
+
+finish 0

+ 1717 - 0
lang/po/lang.pot

@@ -0,0 +1,1717 @@
+# Translation of Prusa-Firmware into English.
+#
+msgid ""
+msgstr ""
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: en\n"
+"Project-Id-Version: Prusa-Firmware\n"
+"POT-Creation-Date: ne 3. čvn 2018 22:16:17\n"
+"PO-Revision-Date: ne 3. čvn 2018 22:16:17\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_EXTRUDER_CORRECTION_OFF c=6
+#: ultralcd.cpp:6312
+msgid "  [off"
+msgstr ""
+
+# MSG_PLANNER_BUFFER_BYTES
+#: Marlin_main.cpp:1085
+msgid "  PlannerBufferBytes: "
+msgstr ""
+
+# MSG_FACTOR
+#: ultralcd.cpp:6008
+msgid " \002 Fact"
+msgstr ""
+
+# MSG_MAX
+#: ultralcd.cpp:6007
+msgid " \002 Max"
+msgstr ""
+
+# MSG_MIN
+#: ultralcd.cpp:6006
+msgid " \002 Min"
+msgstr ""
+
+# MSG_ERR_COLD_EXTRUDE_STOP
+#: planner.cpp:745
+msgid " cold extrusion prevented"
+msgstr ""
+
+# MSG_FREE_MEMORY
+#: Marlin_main.cpp:1083
+msgid " Free Memory: "
+msgstr ""
+
+# MSG_CONFIGURATION_VER
+#: Marlin_main.cpp:1073
+msgid " Last Updated: "
+msgstr ""
+
+# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
+#: messages.c:44
+msgid " of 4"
+msgstr ""
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
+#: messages.c:59
+msgid " of 9"
+msgstr ""
+
+# MSG_MEASURED_OFFSET
+#: ultralcd.cpp:2362
+msgid "[0;0] point offset"
+msgstr ""
+
+# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
+#: ultralcd.cpp:3613
+msgid "\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode"
+msgstr ""
+
+# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
+#: ultralcd.cpp:3626
+msgid "\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode"
+msgstr ""
+
+# MSG_REFRESH
+#: 
+msgid "\xf8Refresh"
+msgstr ""
+
+# MSG_BABYSTEPPING_Z c=20
+#: ultralcd.cpp:2487
+msgid "Adjusting Z"
+msgstr ""
+
+# MSG_SELFTEST_CHECK_ALLCORRECT c=20
+#: ultralcd.cpp:7235
+msgid "All correct      "
+msgstr ""
+
+# MSG_WIZARD_DONE c=20 r=8
+#: messages.c:103
+msgid "All is done. Happy printing!"
+msgstr ""
+
+# MSG_ALL c=19 r=1
+#: messages.c:11
+msgid "All"
+msgstr ""
+
+# MSG_PRESS c=20
+#: ultralcd.cpp:1916
+msgid "and press the knob"
+msgstr ""
+
+# MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
+#: ultralcd.cpp:2803
+msgid "Are left and right Z~carriages all up?"
+msgstr ""
+
+# MSG_ADJUSTZ
+#: ultralcd.cpp:2600
+msgid "Auto adjust Z?"
+msgstr ""
+
+# MSG_AUTO_HOME
+#: messages.c:12
+msgid "Auto home"
+msgstr ""
+
+# MSG_AUTOLOAD_FILAMENT c=17
+#: ultralcd.cpp:5803
+msgid "AutoLoad filament"
+msgstr ""
+
+# MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
+#: ultralcd.cpp:3642
+msgid "Autoloading filament available only when filament sensor is turned on..."
+msgstr ""
+
+# MSG_AUTOLOADING_ENABLED c=20 r=4
+#: ultralcd.cpp:2089
+msgid "Autoloading filament is active, just press the knob and insert filament..."
+msgstr ""
+
+# MSG_SELFTEST_AXIS_LENGTH
+#: ultralcd.cpp:7007
+msgid "Axis length"
+msgstr ""
+
+# MSG_SELFTEST_AXIS
+#: ultralcd.cpp:7009
+msgid "Axis"
+msgstr ""
+
+# MSG_BABYSTEPPING_X
+#: ultralcd.cpp:2481
+msgid "Babystepping X"
+msgstr ""
+
+# MSG_BABYSTEPPING_Y
+#: ultralcd.cpp:2484
+msgid "Babystepping Y"
+msgstr ""
+
+# MSG_SELFTEST_BEDHEATER
+#: ultralcd.cpp:6951
+msgid "Bed / Heater"
+msgstr ""
+
+# MSG_BED_DONE
+#: messages.c:17
+msgid "Bed done"
+msgstr ""
+
+# MSG_BED_HEATING
+#: messages.c:18
+msgid "Bed Heating"
+msgstr ""
+
+# MSG_BED_CORRECTION_MENU
+#: ultralcd.cpp:4533
+msgid "Bed level correct"
+msgstr ""
+
+# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
+#: messages.c:19
+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:4031
+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:4035
+msgid "Bed leveling failed. Sensor triggered too high. Waiting for reset."
+msgstr ""
+
+# MSG_BED
+#: messages.c:16
+msgid "Bed"
+msgstr ""
+
+# MSG_BEGIN_FILE_LIST
+#: Marlin_main.cpp:4405
+msgid "Begin file list"
+msgstr ""
+
+# MSG_MENU_BELT_STATUS c=15 r=1
+#: ultralcd.cpp:1738
+msgid "Belt status"
+msgstr ""
+
+# MSG_RECOVER_PRINT c=20 r=2
+#: messages.c:72
+msgid "Blackout occurred. Recover print?"
+msgstr ""
+
+# MSG_CALIBRATE_E c=20 r=1
+#: ultralcd.cpp:4526
+msgid "Calibrate E"
+msgstr ""
+
+# MSG_CALIBRATE_BED
+#: ultralcd.cpp:4522
+msgid "Calibrate XYZ"
+msgstr ""
+
+# MSG_HOMEYZ
+#: messages.c:52
+msgid "Calibrate Z"
+msgstr ""
+
+# MSG_CALIBRATE_PINDA c=17 r=1
+#: ultralcd.cpp:3794
+msgid "Calibrate"
+msgstr ""
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
+#: ultralcd.cpp:2756
+msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr ""
+
+# MSG_CALIBRATE_Z_AUTO c=20 r=2
+#: messages.c:21
+msgid "Calibrating Z"
+msgstr ""
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
+#: ultralcd.cpp:2756
+msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr ""
+
+# MSG_HOMEYZ_DONE
+#: ultralcd_implementation_hitachi_HD44780.h:989
+msgid "Calibration done"
+msgstr ""
+
+# MSG_MENU_CALIBRATION
+#: messages.c:60
+msgid "Calibration"
+msgstr ""
+
+# MSG_SD_CANT_ENTER_SUBDIR
+#: cardreader.cpp:679
+msgid "Cannot enter subdir: "
+msgstr ""
+
+# MSG_SD_CANT_OPEN_SUBDIR
+#: cardreader.cpp:97
+msgid "Cannot open subdir"
+msgstr ""
+
+# MSG_SD_INSERTED
+#: ultralcd.cpp:7550
+msgid "Card inserted"
+msgstr ""
+
+# MSG_SD_REMOVED
+#: ultralcd.cpp:7556
+msgid "Card removed"
+msgstr ""
+
+# MSG_NOT_COLOR
+#: ultralcd.cpp:2018
+msgid "Color not correct"
+msgstr ""
+
+# MSG_COOLDOWN
+#: messages.c:24
+msgid "Cooldown"
+msgstr ""
+
+# MSG_CRASHDETECT_ON
+#: messages.c:28
+msgid "Crash det.   [on]"
+msgstr ""
+
+# MSG_CRASHDETECT_NA
+#: messages.c:26
+msgid "Crash det.  [N/A]"
+msgstr ""
+
+# MSG_CRASHDETECT_OFF
+#: messages.c:27
+msgid "Crash det.  [off]"
+msgstr ""
+
+# MSG_CRASH_DETECTED c=20 r=1
+#: messages.c:25
+msgid "Crash detected."
+msgstr ""
+
+# MSG_CURRENT c=19 r=1
+#: ultralcd.cpp:4859
+msgid "Current"
+msgstr ""
+
+# MSG_DATE c=17 r=1
+#: ultralcd.cpp:1828
+msgid "Date:"
+msgstr ""
+
+# MSG_DISABLE_STEPPERS
+#: ultralcd.cpp:4146
+msgid "Disable steppers"
+msgstr ""
+
+# MSG_BABYSTEP_Z_NOT_SET c=20 r=12
+#: messages.c:15
+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 ""
+
+# MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
+#: ultralcd.cpp:4071
+msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
+msgstr ""
+
+# MSG_CLEAN_NOZZLE_E c=20 r=8
+#: ultralcd.cpp:3890
+msgid "E calibration finished. Please clean the nozzle. Click when done."
+msgstr ""
+
+# MSG_EXTRUDER_CORRECTION c=9
+#: ultralcd.cpp:4213
+msgid "E-correct"
+msgstr ""
+
+# MSG_END_FILE_LIST
+#: Marlin_main.cpp:4407
+msgid "End file list"
+msgstr ""
+
+# MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
+#: ultralcd.cpp:6975
+msgid "Endstop not hit"
+msgstr ""
+
+# MSG_SELFTEST_ENDSTOP
+#: ultralcd.cpp:6969
+msgid "Endstop"
+msgstr ""
+
+# MSG_ENDSTOPS_HIT
+#: messages.c:31
+msgid "endstops hit: "
+msgstr ""
+
+# MSG_SELFTEST_ENDSTOPS
+#: ultralcd.cpp:6957
+msgid "Endstops"
+msgstr ""
+
+# MSG_LANGUAGE_NAME
+#: language.c:153
+msgid "English"
+msgstr ""
+
+# MSG_Enqueing
+#: 
+msgid "enqueing \x22"
+msgstr ""
+
+# MSG_STACK_ERROR c=20 r=4
+#: ultralcd.cpp:5843
+msgid "Error - static memory has been overwritten"
+msgstr ""
+
+# MSG_SD_ERR_WRITE_TO_FILE
+#: messages.c:76
+msgid "error writing to file"
+msgstr ""
+
+# MSG_FSENS_NOT_RESPONDING c=20 r=4
+#: ultralcd.cpp:3656
+msgid "ERROR: Filament sensor is not responding, please check connection."
+msgstr ""
+
+# MSG_ERROR
+#: messages.c:34
+msgid "ERROR:"
+msgstr ""
+
+# MSG_EXTRUDER_1 c=17 r=1
+#: ultralcd.cpp:5417
+msgid "Extruder 1"
+msgstr ""
+
+# MSG_EXTRUDER_2 c=17 r=1
+#: ultralcd.cpp:5418
+msgid "Extruder 2"
+msgstr ""
+
+# MSG_EXTRUDER_3 c=17 r=1
+#: ultralcd.cpp:5419
+msgid "Extruder 3"
+msgstr ""
+
+# MSG_EXTRUDER_4 c=17 r=1
+#: ultralcd.cpp:5420
+msgid "Extruder 4"
+msgstr ""
+
+# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
+#: ultralcd.cpp:7244
+msgid "Extruder fan:"
+msgstr ""
+
+# MSG_INFO_EXTRUDER c=15 r=1
+#: ultralcd.cpp:1840
+msgid "Extruder info"
+msgstr ""
+
+# MSG_MOVE_E
+#: messages.c:35
+msgid "Extruder"
+msgstr ""
+
+# MSG_FSENS_AUTOLOAD_ON c=17 r=1
+#: ultralcd.cpp:4178
+msgid "F. autoload  [on]"
+msgstr ""
+
+# MSG_FSENS_AUTOLOAD_NA c=17 r=1
+#: messages.c:47
+msgid "F. autoload [N/A]"
+msgstr ""
+
+# MSG_FSENS_AUTOLOAD_OFF c=17 r=1
+#: ultralcd.cpp:4181
+msgid "F. autoload [off]"
+msgstr ""
+
+# MSG_FAN_SPEED c=14
+#: messages.c:36
+msgid "Fan speed"
+msgstr ""
+
+# MSG_SELFTEST_FAN c=20
+#: messages.c:82
+msgid "Fan test"
+msgstr ""
+
+# MSG_FANS_CHECK_ON c=17 r=1
+#: ultralcd.cpp:4189
+msgid "Fans check   [on]"
+msgstr ""
+
+# MSG_FANS_CHECK_OFF c=17 r=1
+#: ultralcd.cpp:4192
+msgid "Fans check  [off]"
+msgstr ""
+
+# MSG_FSENSOR_ON
+#: messages.c:49
+msgid "Fil. sensor  [on]"
+msgstr ""
+
+# MSG_FSENSOR_NA
+#: ultralcd.cpp:4164
+msgid "Fil. sensor [N/A]"
+msgstr ""
+
+# MSG_FSENSOR_OFF
+#: messages.c:48
+msgid "Fil. sensor [off]"
+msgstr ""
+
+# MSG_FILAMENT_CLEAN c=20 r=2
+#: messages.c:37
+msgid "Filament extruding & with correct color?"
+msgstr ""
+
+# MSG_NOT_LOADED c=19
+#: ultralcd.cpp:2014
+msgid "Filament not loaded"
+msgstr ""
+
+# MSG_FILAMENT_SENSOR c=20
+#: ultralcd.cpp:7023
+msgid "Filament sensor"
+msgstr ""
+
+# MSG_SELFTEST_FILAMENT_SENSOR c=18
+#: ultralcd.cpp:7253
+msgid "Filament sensor:"
+msgstr ""
+
+# MSG_STATS_FILAMENTUSED c=20
+#: ultralcd.cpp:2142
+msgid "Filament used:  "
+msgstr ""
+
+# MSG_FILE_INCOMPLETE c=20 r=2
+#: ultralcd.cpp:7396
+msgid "File incomplete. Continue anyway?"
+msgstr ""
+
+# MSG_SD_FILE_OPENED
+#: cardreader.cpp:395
+msgid "File opened: "
+msgstr ""
+
+# MSG_SD_FILE_SELECTED
+#: cardreader.cpp:401
+msgid "File selected"
+msgstr ""
+
+# MSG_FINISHING_MOVEMENTS c=20 r=1
+#: messages.c:45
+msgid "Finishing movements"
+msgstr ""
+
+# MSG_V2_CALIBRATION c=17 r=1
+#: ultralcd.cpp:4513
+msgid "First layer cal."
+msgstr ""
+
+# MSG_WIZARD_SELFTEST c=20 r=8
+#: ultralcd.cpp:3989
+msgid "First, I will run the selftest to check most common assembly problems."
+msgstr ""
+
+# MSG_FLOW
+#: ultralcd.cpp:5932
+msgid "Flow"
+msgstr ""
+
+# MSG_PRUSA3D_FORUM
+#: ultralcd.cpp:1821
+msgid "forum.prusa3d.com"
+msgstr ""
+
+# MSG_SELFTEST_COOLING_FAN c=20
+#: messages.c:79
+msgid "Front print fan?"
+msgstr ""
+
+# MSG_BED_CORRECTION_FRONT c=14 r=1
+#: ultralcd.cpp:2565
+msgid "Front side[um]"
+msgstr ""
+
+# MSG_SELFTEST_FANS
+#: ultralcd.cpp:7015
+msgid "Front/left fans"
+msgstr ""
+
+# MSG_SELFTEST_HEATERTHERMISTOR
+#: ultralcd.cpp:6945
+msgid "Heater/Thermistor"
+msgstr ""
+
+# MSG_BED_HEATING_SAFETY_DISABLED
+#: Marlin_main.cpp:7232
+msgid "Heating disabled by safety timer."
+msgstr ""
+
+# MSG_HEATING_COMPLETE c=20
+#: messages.c:51
+msgid "Heating done."
+msgstr ""
+
+# MSG_HEATING
+#: messages.c:50
+msgid "Heating"
+msgstr ""
+
+# MSG_WIZARD_WELCOME c=20 r=7
+#: ultralcd.cpp:3968
+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:1822
+msgid "howto.prusa3d.com"
+msgstr ""
+
+# MSG_CHANGE_EXTR c=20 r=1
+#: ultralcd.cpp:5812
+msgid "Change extruder"
+msgstr ""
+
+# MSG_FILAMENTCHANGE
+#: messages.c:42
+msgid "Change filament"
+msgstr ""
+
+# MSG_CNG_SDCARD
+#: ultralcd.cpp:5777
+msgid "Change SD card"
+msgstr ""
+
+# MSG_CHANGE_SUCCESS
+#: ultralcd.cpp:1927
+msgid "Change success!"
+msgstr ""
+
+# MSG_CORRECTLY c=20
+#: ultralcd.cpp:2006
+msgid "Changed correctly?"
+msgstr ""
+
+# MSG_CHANGING_FILAMENT c=20
+#: ultralcd.cpp:1899
+msgid "Changing filament!"
+msgstr ""
+
+# MSG_SELFTEST_CHECK_BED c=20
+#: messages.c:85
+msgid "Checking bed     "
+msgstr ""
+
+# MSG_SELFTEST_CHECK_ENDSTOPS c=20
+#: ultralcd.cpp:7226
+msgid "Checking endstops"
+msgstr ""
+
+# MSG_SELFTEST_CHECK_HOTEND c=20
+#: ultralcd.cpp:7227
+msgid "Checking hotend  "
+msgstr ""
+
+# MSG_SELFTEST_CHECK_FSENSOR c=20
+#: messages.c:86
+msgid "Checking sensors "
+msgstr ""
+
+# MSG_SELFTEST_CHECK_X c=20
+#: ultralcd.cpp:7228
+msgid "Checking X axis  "
+msgstr ""
+
+# MSG_SELFTEST_CHECK_Y c=20
+#: ultralcd.cpp:7229
+msgid "Checking Y axis  "
+msgstr ""
+
+# MSG_SELFTEST_CHECK_Z c=20
+#: ultralcd.cpp:7230
+msgid "Checking Z axis  "
+msgstr ""
+
+# MSG_ERR_CHECKSUM_MISMATCH
+#: cmdqueue.cpp:444
+msgid "checksum mismatch, Last Line: "
+msgstr ""
+
+# MSG_CHOOSE_EXTRUDER c=20 r=1
+#: messages.c:53
+msgid "Choose extruder:"
+msgstr ""
+
+# MSG_WIZARD_XYZ_CAL c=20 r=8
+#: ultralcd.cpp:3998
+msgid "I will run xyz calibration now. It will take approx. 12 mins."
+msgstr ""
+
+# MSG_WIZARD_Z_CAL c=20 r=8
+#: ultralcd.cpp:4004
+msgid "I will run z calibration now."
+msgstr ""
+
+# MSG_WIZARD_V2_CAL_2 c=20 r=12
+#: ultralcd.cpp:4066
+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:2469
+msgid "Improving bed calibration point"
+msgstr ""
+
+# MSG_WATCH
+#: messages.c:101
+msgid "Info screen"
+msgstr ""
+
+# MSG_INIT_SDCARD
+#: ultralcd.cpp:5785
+msgid "Init. SD card"
+msgstr ""
+
+# MSG_FILAMENT_LOADING_T0 c=20 r=4
+#: messages.c:38
+msgid "Insert filament into extruder 1. Click when done."
+msgstr ""
+
+# MSG_FILAMENT_LOADING_T1 c=20 r=4
+#: messages.c:39
+msgid "Insert filament into extruder 2. Click when done."
+msgstr ""
+
+# MSG_FILAMENT_LOADING_T2 c=20 r=4
+#: messages.c:40
+msgid "Insert filament into extruder 3. Click when done."
+msgstr ""
+
+# MSG_FILAMENT_LOADING_T3 c=20 r=4
+#: messages.c:41
+msgid "Insert filament into extruder 4. Click when done."
+msgstr ""
+
+# MSG_INSERT_FILAMENT c=20
+#: ultralcd.cpp:1913
+msgid "Insert filament"
+msgstr ""
+
+# MSG_WIZARD_FILAMENT_LOADED c=20 r=2
+#: ultralcd.cpp:4015
+msgid "Is filament loaded?"
+msgstr ""
+
+# MSG_WIZARD_PLA_FILAMENT c=20 r=2
+#: ultralcd.cpp:4060
+msgid "Is it PLA filament?"
+msgstr ""
+
+# MSG_PLA_FILAMENT_LOADED c=20 r=2
+#: ultralcd.cpp:3924
+msgid "Is PLA filament loaded?"
+msgstr ""
+
+# MSG_STEEL_SHEET_CHECK c=20 r=2
+#: messages.c:94
+msgid "Is steel sheet on heatbed?"
+msgstr ""
+
+# MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20
+#: mesh_bed_calibration.cpp:2211
+msgid "Iteration "
+msgstr ""
+
+# MSG_KILLED
+#: Marlin_main.cpp:7393
+msgid "KILLED. "
+msgstr ""
+
+# MSG_SELFTEST_EXTRUDER_FAN c=20
+#: messages.c:80
+msgid "Left hotend fan?"
+msgstr ""
+
+# MSG_BED_CORRECTION_LEFT c=14 r=1
+#: ultralcd.cpp:2563
+msgid "Left side [um]"
+msgstr ""
+
+# MSG_LEFT c=12 r=1
+#: ultralcd.cpp:2308
+msgid "Left:"
+msgstr ""
+
+# MSG_BABYSTEP_Z
+#: messages.c:14
+msgid "Live adjust Z"
+msgstr ""
+
+# MSG_LOAD_ALL
+#: ultralcd.cpp:5392
+msgid "Load all"
+msgstr ""
+
+# MSG_LOAD_FILAMENT_1 c=17
+#: ultralcd.cpp:5393
+msgid "Load filament 1"
+msgstr ""
+
+# MSG_LOAD_FILAMENT_2 c=17
+#: ultralcd.cpp:5394
+msgid "Load filament 2"
+msgstr ""
+
+# MSG_LOAD_FILAMENT_3 c=17
+#: ultralcd.cpp:5395
+msgid "Load filament 3"
+msgstr ""
+
+# MSG_LOAD_FILAMENT_4 c=17
+#: ultralcd.cpp:5396
+msgid "Load filament 4"
+msgstr ""
+
+# MSG_LOAD_FILAMENT c=17
+#: messages.c:54
+msgid "Load filament"
+msgstr ""
+
+# MSG_LOADING_COLOR
+#: ultralcd.cpp:1939
+msgid "Loading color"
+msgstr ""
+
+# MSG_LOADING_FILAMENT c=20
+#: messages.c:55
+msgid "Loading filament"
+msgstr ""
+
+# MSG_LOOSE_PULLEY c=20 r=1
+#: ultralcd.cpp:6999
+msgid "Loose pulley"
+msgstr ""
+
+# MSG_M104_INVALID_EXTRUDER
+#: Marlin_main.cpp:7506
+msgid "M104 Invalid extruder "
+msgstr ""
+
+# MSG_M105_INVALID_EXTRUDER
+#: Marlin_main.cpp:7509
+msgid "M105 Invalid extruder "
+msgstr ""
+
+# MSG_M109_INVALID_EXTRUDER
+#: Marlin_main.cpp:7512
+msgid "M109 Invalid extruder "
+msgstr ""
+
+# MSG_M117_V2_CALIBRATION c=25 r=1
+#: messages.c:56
+msgid "M117 First layer cal."
+msgstr ""
+
+# MSG_M200_INVALID_EXTRUDER
+#: Marlin_main.cpp:5378
+msgid "M200 Invalid extruder "
+msgstr ""
+
+# MSG_M218_INVALID_EXTRUDER
+#: Marlin_main.cpp:7515
+msgid "M218 Invalid extruder "
+msgstr ""
+
+# MSG_M221_INVALID_EXTRUDER
+#: Marlin_main.cpp:7518
+msgid "M221 Invalid extruder "
+msgstr ""
+
+# MSG_MAIN
+#: messages.c:57
+msgid "Main"
+msgstr ""
+
+# MSG_MARK_FIL c=20 r=8
+#: ultralcd.cpp:3840
+msgid "Mark filament 100mm from extruder body. Click when done."
+msgstr ""
+
+# MSG_MEASURED_SKEW c=15 r=1
+#: ultralcd.cpp:2335
+msgid "Measured skew:"
+msgstr ""
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
+#: messages.c:58
+msgid "Measuring reference height of calibration point"
+msgstr ""
+
+# MSG_MESH_BED_LEVELING
+#: ultralcd.cpp:4528
+msgid "Mesh Bed Leveling"
+msgstr ""
+
+# MSG_STEALTH_MODE_OFF
+#: messages.c:92
+msgid "Mode     [Normal]"
+msgstr ""
+
+# MSG_SILENT_MODE_ON
+#: messages.c:91
+msgid "Mode     [silent]"
+msgstr ""
+
+# MSG_STEALTH_MODE_ON
+#: messages.c:93
+msgid "Mode    [Stealth]"
+msgstr ""
+
+# MSG_AUTO_MODE_ON
+#: messages.c:13
+msgid "Mode [auto power]"
+msgstr ""
+
+# MSG_SILENT_MODE_OFF
+#: messages.c:90
+msgid "Mode [high power]"
+msgstr ""
+
+# MSG_SELFTEST_MOTOR
+#: messages.c:87
+msgid "Motor"
+msgstr ""
+
+# MSG_MOVE_AXIS
+#: ultralcd.cpp:4142
+msgid "Move axis"
+msgstr ""
+
+# MSG_MOVE_X
+#: ultralcd.cpp:3557
+msgid "Move X"
+msgstr ""
+
+# MSG_MOVE_Y
+#: ultralcd.cpp:3558
+msgid "Move Y"
+msgstr ""
+
+# MSG_MOVE_Z
+#: ultralcd.cpp:3559
+msgid "Move Z"
+msgstr ""
+
+# MSG_NEW_FIRMWARE_AVAILABLE c=20 r=2
+#: util.cpp:292
+msgid "New firmware version available:"
+msgstr ""
+
+# MSG_ERR_NO_CHECKSUM
+#: cmdqueue.cpp:456
+msgid "No Checksum with line number, Last Line: "
+msgstr ""
+
+# MSG_NO_MOVE
+#: Marlin_main.cpp:4394
+msgid "No move."
+msgstr ""
+
+# MSG_NO_CARD
+#: ultralcd.cpp:5783
+msgid "No SD card"
+msgstr ""
+
+# MSG_ERR_NO_THERMISTORS
+#: Marlin_main.cpp:4946
+msgid "No thermistors - no temperature"
+msgstr ""
+
+# MSG_NO
+#: messages.c:61
+msgid "No"
+msgstr ""
+
+# MSG_SELFTEST_NOTCONNECTED
+#: ultralcd.cpp:6947
+msgid "Not connected"
+msgstr ""
+
+# MSG_SELFTEST_FAN_NO c=19
+#: messages.c:83
+msgid "Not spinning"
+msgstr ""
+
+# MSG_WIZARD_V2_CAL c=20 r=8
+#: ultralcd.cpp:4065
+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:4022
+msgid "Now I will preheat nozzle for PLA."
+msgstr ""
+
+# MSG_INFO_NOZZLE_FAN c=11 r=1
+#: ultralcd.cpp:1537
+msgid "Nozzle FAN:"
+msgstr ""
+
+# MSG_NOZZLE
+#: messages.c:62
+msgid "Nozzle"
+msgstr ""
+
+# MSG_NOZZLE1
+#: ultralcd.cpp:5995
+msgid "Nozzle2"
+msgstr ""
+
+# MSG_NOZZLE2
+#: ultralcd.cpp:5998
+msgid "Nozzle3"
+msgstr ""
+
+# MSG_OK
+#: messages.c:63
+msgid "ok"
+msgstr ""
+
+# MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
+#: Marlin_main.cpp:1382
+msgid "Old settings found. Default PID, Esteps etc. will be set."
+msgstr ""
+
+# MSG_SD_OPEN_FILE_FAIL
+#: cardreader.cpp:461
+msgid "open failed, File: "
+msgstr ""
+
+# MSG_ENDSTOP_OPEN
+#: messages.c:30
+msgid "open"
+msgstr ""
+
+# MSG_SD_OPENROOT_FAIL
+#: cardreader.cpp:196
+msgid "openRoot failed"
+msgstr ""
+
+# MSG_PAUSE_PRINT
+#: ultralcd.cpp:5757
+msgid "Pause print"
+msgstr ""
+
+# MSG_PICK_Z
+#: ultralcd.cpp:3463
+msgid "Pick print"
+msgstr ""
+
+# MSG_PID_RUNNING c=20 r=1
+#: ultralcd.cpp:1366
+msgid "PID cal.           "
+msgstr ""
+
+# MSG_PID_FINISHED c=20 r=1
+#: ultralcd.cpp:1372
+msgid "PID cal. finished"
+msgstr ""
+
+# MSG_PID_EXTRUDER c=17 r=1
+#: ultralcd.cpp:4534
+msgid "PID calibration"
+msgstr ""
+
+# MSG_PINDA_PREHEAT c=20 r=1
+#: ultralcd_implementation_hitachi_HD44780.h:1023
+msgid "PINDA Heating"
+msgstr ""
+
+# MSG_PAPER c=20 r=8
+#: 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:4073
+msgid "Please clean heatbed and then press the knob."
+msgstr ""
+
+# MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
+#: messages.c:23
+msgid "Please clean the nozzle for calibration. Click when done."
+msgstr ""
+
+# MSG_SELFTEST_PLEASECHECK
+#: ultralcd.cpp:6939
+msgid "Please check :"
+msgstr ""
+
+# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
+#: messages.c:102
+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:4046
+msgid "Please insert PLA filament to the extruder, then press knob to load it."
+msgstr ""
+
+# 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 ""
+
+# MSG_PLEASE_LOAD_PLA c=20 r=4
+#: ultralcd.cpp:3929
+msgid "Please load PLA filament first."
+msgstr ""
+
+# MSG_CHECK_IDLER c=20 r=4
+#: Marlin_main.cpp:6166
+msgid "Please open idler and remove filament manually."
+msgstr ""
+
+# MSG_PLACE_STEEL_SHEET c=20 r=4
+#: messages.c:65
+msgid "Please place steel sheet on heatbed."
+msgstr ""
+
+# MSG_PRESS_TO_UNLOAD c=20 r=4
+#: messages.c:69
+msgid "Please press the knob to unload filament"
+msgstr ""
+
+# MSG_PULL_OUT_FILAMENT c=20 r=4
+#: messages.c:71
+msgid "Please pull out filament immediately"
+msgstr ""
+
+# MSG_REMOVE_STEEL_SHEET c=20 r=4
+#: messages.c:75
+msgid "Please remove steel sheet from heatbed."
+msgstr ""
+
+# MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20
+#: util.cpp:296
+msgid "Please upgrade."
+msgstr ""
+
+# MSG_PLEASE_WAIT c=20
+#: messages.c:66
+msgid "Please wait"
+msgstr ""
+
+# MSG_POWERUP
+#: messages.c:67
+msgid "PowerUp"
+msgstr ""
+
+# MSG_PREHEAT_NOZZLE c=20
+#: messages.c:68
+msgid "Preheat the nozzle!"
+msgstr ""
+
+# MSG_PREHEAT
+#: ultralcd.cpp:5746
+msgid "Preheat"
+msgstr ""
+
+# MSG_WIZARD_HEATING c=20 r=3
+#: messages.c:104
+msgid "Preheating nozzle. Please wait."
+msgstr ""
+
+# MSG_PREPARE_FILAMENT c=20 r=1
+#: ultralcd.cpp:1911
+msgid "Prepare new filament"
+msgstr ""
+
+# MSG_PRESS_TO_PREHEAT c=20 r=4
+#: Marlin_main.cpp:6025
+msgid "Press knob to preheat nozzle and continue."
+msgstr ""
+
+# MSG_PRINT_ABORTED c=20
+#: messages.c:70
+msgid "Print aborted"
+msgstr ""
+
+# MSG_INFO_PRINT_FAN c=11 r=1
+#: ultralcd.cpp:1549
+msgid "Print FAN: "
+msgstr ""
+
+# MSG_SELFTEST_PRINT_FAN_SPEED c=18
+#: ultralcd.cpp:7247
+msgid "Print fan:"
+msgstr ""
+
+# MSG_CARD_MENU
+#: messages.c:22
+msgid "Print from SD"
+msgstr ""
+
+# MSG_PRINT_PAUSED c=20 r=1
+#: ultralcd.cpp:642
+msgid "Print paused"
+msgstr ""
+
+# MSG_STATS_PRINTTIME c=20
+#: ultralcd.cpp:2151
+msgid "Print time:  "
+msgstr ""
+
+# MSG_PRINTER_DISCONNECTED c=20 r=1
+#: ultralcd.cpp:607
+msgid "Printer disconnected"
+msgstr ""
+
+# MSG_ERR_KILLED
+#: Marlin_main.cpp:7388
+msgid "Printer halted. kill() called!"
+msgstr ""
+
+# MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
+#: messages.c:46
+msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
+msgstr ""
+
+# MSG_ERR_STOPPED
+#: messages.c:33
+msgid "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"
+msgstr ""
+
+# WELCOME_MSG c=20
+#: 
+msgid "Prusa i3 MK3 ready."
+msgstr ""
+
+# MSG_PRUSA3D
+#: ultralcd.cpp:1820
+msgid "prusa3d.com"
+msgstr ""
+
+# MSG_BED_CORRECTION_REAR c=14 r=1
+#: ultralcd.cpp:2566
+msgid "Rear side [um]"
+msgstr ""
+
+# MSG_RECOVERING_PRINT c=20 r=1
+#: Marlin_main.cpp:8289
+msgid "Recovering print    "
+msgstr ""
+
+# MSG_M119_REPORT
+#: Marlin_main.cpp:5297
+msgid "Reporting endstop status"
+msgstr ""
+
+# MSG_RESEND
+#: Marlin_main.cpp:6911
+msgid "Resend: "
+msgstr ""
+
+# MSG_CALIBRATE_BED_RESET
+#: ultralcd.cpp:4539
+msgid "Reset XYZ calibr."
+msgstr ""
+
+# MSG_BED_CORRECTION_RESET
+#: ultralcd.cpp:2567
+msgid "Reset"
+msgstr ""
+
+# MSG_RESUME_PRINT
+#: ultralcd.cpp:5761
+msgid "Resume print"
+msgstr ""
+
+# MSG_RESUMING_PRINT c=20 r=1
+#: messages.c:74
+msgid "Resuming print"
+msgstr ""
+
+# MSG_BED_CORRECTION_RIGHT c=14 r=1
+#: ultralcd.cpp:2564
+msgid "Right side[um]"
+msgstr ""
+
+# MSG_RIGHT c=12 r=1
+#: ultralcd.cpp:2309
+msgid "Right:"
+msgstr ""
+
+# MSG_E_CAL_KNOB c=20 r=8
+#: ultralcd.cpp:3835
+msgid "Rotate knob until mark reaches extruder body. Click when done."
+msgstr ""
+
+# MSG_SECOND_SERIAL_ON c=17 r=1
+#: ultralcd.cpp:4227
+msgid "RPi port     [on]"
+msgstr ""
+
+# MSG_SECOND_SERIAL_OFF c=17 r=1
+#: ultralcd.cpp:4224
+msgid "RPi port    [off]"
+msgstr ""
+
+# MSG_WIZARD_RERUN c=20 r=7
+#: ultralcd.cpp:3947
+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:4240
+msgid "SD card  [normal]"
+msgstr ""
+
+# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
+#: ultralcd.cpp:4238
+msgid "SD card [FlshAir]"
+msgstr ""
+
+# MSG_SD_CARD_OK
+#: cardreader.cpp:202
+msgid "SD card ok"
+msgstr ""
+
+# MSG_SD_INIT_FAIL
+#: cardreader.cpp:186
+msgid "SD init fail"
+msgstr ""
+
+# MSG_SD_PRINTING_BYTE
+#: cardreader.cpp:516
+msgid "SD printing byte "
+msgstr ""
+
+# MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
+#: messages.c:43
+msgid "Searching bed calibration point"
+msgstr ""
+
+# MSG_LANGUAGE_SELECT
+#: ultralcd.cpp:4235
+msgid "Select language"
+msgstr ""
+
+# MSG_SELFTEST_OK
+#: ultralcd.cpp:6505
+msgid "Self test OK"
+msgstr ""
+
+# MSG_SELFTEST_START c=20
+#: ultralcd.cpp:6342
+msgid "Self test start  "
+msgstr ""
+
+# MSG_SELFTEST
+#: ultralcd.cpp:4515
+msgid "Selftest         "
+msgstr ""
+
+# MSG_SELFTEST_ERROR
+#: ultralcd.cpp:6937
+msgid "Selftest error !"
+msgstr ""
+
+# MSG_SELFTEST_FAILED c=20
+#: messages.c:81
+msgid "Selftest failed  "
+msgstr ""
+
+# MSG_FORCE_SELFTEST c=20 r=8
+#: Marlin_main.cpp:1414
+msgid "Selftest will be run to calibrate accurate sensorless rehoming."
+msgstr ""
+
+# MSG_SET_TEMPERATURE c=19 r=1
+#: ultralcd.cpp:2575
+msgid "Set temperature:"
+msgstr ""
+
+# MSG_SETTINGS
+#: messages.c:89
+msgid "Settings"
+msgstr ""
+
+# MSG_SEVERE_SKEW c=15 r=1
+#: ultralcd.cpp:2346
+msgid "Severe skew:"
+msgstr ""
+
+# MSG_SHOW_END_STOPS c=17 r=1
+#: ultralcd.cpp:4536
+msgid "Show end stops"
+msgstr ""
+
+# MSG_DWELL
+#: Marlin_main.cpp:3281
+msgid "Sleep..."
+msgstr ""
+
+# MSG_SLIGHT_SKEW c=15 r=1
+#: ultralcd.cpp:2342
+msgid "Slight skew:"
+msgstr ""
+
+# MSG_FILE_CNT c=20 r=4
+#: cardreader.cpp:754
+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:4250
+msgid "Sort:      [None]"
+msgstr ""
+
+# MSG_SORT_TIME c=17 r=1
+#: ultralcd.cpp:4248
+msgid "Sort:      [Time]"
+msgstr ""
+
+# MSG_SORT_ALPHA c=17 r=1
+#: ultralcd.cpp:4249
+msgid "Sort:  [Alphabet]"
+msgstr ""
+
+# MSG_SORTING c=20 r=1
+#: cardreader.cpp:761
+msgid "Sorting files"
+msgstr ""
+
+# MSG_SPEED
+#: ultralcd.cpp:5926
+msgid "Speed"
+msgstr ""
+
+# MSG_SELFTEST_FAN_YES c=19
+#: messages.c:84
+msgid "Spinning"
+msgstr ""
+
+# MSG_TEMP_CAL_WARNING c=20 r=4
+#: Marlin_main.cpp:3551
+msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
+msgstr ""
+
+# MSG_STATISTICS
+#: ultralcd.cpp:5824
+msgid "Statistics  "
+msgstr ""
+
+# MSG_STEPPER_TOO_HIGH
+#: stepper.cpp:345
+msgid "Steprate too high: "
+msgstr ""
+
+# MSG_STOP_PRINT
+#: messages.c:95
+msgid "Stop print"
+msgstr ""
+
+# MSG_STOPPED
+#: messages.c:96
+msgid "STOPPED. "
+msgstr ""
+
+# MSG_SUPPORT
+#: ultralcd.cpp:5831
+msgid "Support"
+msgstr ""
+
+# MSG_SELFTEST_SWAPPED
+#: ultralcd.cpp:7017
+msgid "Swapped"
+msgstr ""
+
+# MSG_TEMP_CALIBRATION c=20 r=1
+#: messages.c:97
+msgid "Temp. cal.          "
+msgstr ""
+
+# MSG_TEMP_CALIBRATION_ON c=20 r=1
+#: ultralcd.cpp:4220
+msgid "Temp. cal.   [on]"
+msgstr ""
+
+# MSG_TEMP_CALIBRATION_OFF c=20 r=1
+#: ultralcd.cpp:4217
+msgid "Temp. cal.  [off]"
+msgstr ""
+
+# MSG_CALIBRATION_PINDA_MENU c=17 r=1
+#: ultralcd.cpp:4545
+msgid "Temp. calibration"
+msgstr ""
+
+# MSG_TEMP_CAL_FAILED c=20 r=8
+#: ultralcd.cpp:3189
+msgid "Temperature calibration failed"
+msgstr ""
+
+# MSG_PINDA_NOT_CALIBRATED c=20 r=4
+#: Marlin_main.cpp:1403
+msgid "Temperature calibration has not been run yet"
+msgstr ""
+
+# MSG_TEMP_CALIBRATION_DONE c=20 r=12
+#: messages.c:98
+msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
+msgstr ""
+
+# MSG_TEMPERATURE
+#: ultralcd.cpp:4139
+msgid "Temperature"
+msgstr ""
+
+# MSG_MENU_TEMPERATURES c=15 r=1
+#: ultralcd.cpp:1846
+msgid "Temperatures"
+msgstr ""
+
+# MSG_STATS_TOTALFILAMENT c=20
+#: ultralcd.cpp:2186
+msgid "Total filament :"
+msgstr ""
+
+# MSG_STATS_TOTALPRINTTIME c=20
+#: ultralcd.cpp:2203
+msgid "Total print time :"
+msgstr ""
+
+# MSG_ENDSTOP_HIT
+#: messages.c:29
+msgid "TRIGGERED"
+msgstr ""
+
+# MSG_TUNE
+#: ultralcd.cpp:5743
+msgid "Tune"
+msgstr ""
+
+# MSG_UNLOAD_ALL
+#: ultralcd.cpp:5405
+msgid "Unload all"
+msgstr ""
+
+# MSG_UNLOAD_FILAMENT_1 c=17
+#: ultralcd.cpp:5406
+msgid "Unload filament 1"
+msgstr ""
+
+# MSG_UNLOAD_FILAMENT_2 c=17
+#: ultralcd.cpp:5407
+msgid "Unload filament 2"
+msgstr ""
+
+# MSG_UNLOAD_FILAMENT_3 c=17
+#: ultralcd.cpp:5408
+msgid "Unload filament 3"
+msgstr ""
+
+# MSG_UNLOAD_FILAMENT_4 c=17
+#: ultralcd.cpp:5409
+msgid "Unload filament 4"
+msgstr ""
+
+# MSG_UNLOAD_FILAMENT c=17
+#: messages.c:99
+msgid "Unload filament"
+msgstr ""
+
+# MSG_UNLOADING_FILAMENT c=20 r=1
+#: messages.c:100
+msgid "Unloading filament"
+msgstr ""
+
+# MSG_USED c=19 r=1
+#: ultralcd.cpp:4858
+msgid "Used during print"
+msgstr ""
+
+# MSG_MENU_VOLTAGES c=15 r=1
+#: ultralcd.cpp:1849
+msgid "Voltages"
+msgstr ""
+
+# MSG_SD_VOL_INIT_FAIL
+#: cardreader.cpp:191
+msgid "volume.init failed"
+msgstr ""
+
+# MSG_USERWAIT
+#: Marlin_main.cpp:4359
+msgid "Wait for user..."
+msgstr ""
+
+# MSG_WAITING_TEMP c=20 r=3
+#: ultralcd.cpp:2719
+msgid "Waiting for nozzle and bed cooling"
+msgstr ""
+
+# MSG_WAITING_TEMP_PINDA c=20 r=3
+#: ultralcd.cpp:2683
+msgid "Waiting for PINDA probe cooling"
+msgstr ""
+
+# MSG_CHANGED_BOTH c=20 r=4
+#: Marlin_main.cpp:1374
+msgid "Warning: both printer type and motherboard type changed."
+msgstr ""
+
+# MSG_CHANGED_MOTHERBOARD c=20 r=4
+#: Marlin_main.cpp:1366
+msgid "Warning: motherboard type changed."
+msgstr ""
+
+# MSG_CHANGED_PRINTER c=20 r=4
+#: Marlin_main.cpp:1370
+msgid "Warning: printer type changed."
+msgstr ""
+
+# 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 ""
+
+# MSG_UNLOAD_SUCCESSFUL c=20 r=2
+#: Marlin_main.cpp:6165
+msgid "Was filament unload successful?"
+msgstr ""
+
+# MSG_SELFTEST_WIRINGERROR
+#: messages.c:88
+msgid "Wiring error"
+msgstr ""
+
+# MSG_WIZARD c=17 r=1
+#: ultralcd.cpp:4512
+msgid "Wizard"
+msgstr ""
+
+# MSG_SD_WORKDIR_FAIL
+#: messages.c:78
+msgid "workDir open failed"
+msgstr ""
+
+# MSG_SD_WRITE_TO_FILE
+#: cardreader.cpp:424
+msgid "Writing to file: "
+msgstr ""
+
+# MSG_XYZ_DETAILS c=19 r=1
+#: ultralcd.cpp:1839
+msgid "XYZ cal. details"
+msgstr ""
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
+#: ultralcd.cpp:3159
+msgid "XYZ calibration all right. Skew will be corrected automatically."
+msgstr ""
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
+#: ultralcd.cpp:3156
+msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
+msgstr ""
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
+#: ultralcd.cpp:3137
+msgid "XYZ calibration compromised. Front calibration points not reachable."
+msgstr ""
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8
+#: ultralcd.cpp:3143
+msgid "XYZ calibration compromised. Left front calibration point not reachable."
+msgstr ""
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
+#: ultralcd.cpp:3140
+msgid "XYZ calibration compromised. Right front calibration point not reachable."
+msgstr ""
+
+# MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=8
+#: ultralcd.cpp:3119
+msgid "XYZ calibration failed. Bed calibration point was not found."
+msgstr ""
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=8
+#: ultralcd.cpp:3125
+msgid "XYZ calibration failed. Front calibration points not reachable."
+msgstr ""
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8
+#: ultralcd.cpp:3131
+msgid "XYZ calibration failed. Left front calibration point not reachable."
+msgstr ""
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
+#: messages.c:20
+msgid "XYZ calibration failed. Please consult the manual."
+msgstr ""
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=8
+#: ultralcd.cpp:3128
+msgid "XYZ calibration failed. Right front calibration point not reachable."
+msgstr ""
+
+# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
+#: ultralcd.cpp:3153
+msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
+msgstr ""
+
+# MSG_Y_DISTANCE_FROM_MIN c=20 r=1
+#: ultralcd.cpp:2306
+msgid "Y distance from min:"
+msgstr ""
+
+# MSG_YES
+#: messages.c:106
+msgid "Yes"
+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 ""
+
+# 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 ""
+
+# MSG_WIZARD_QUIT c=20 r=8
+#: messages.c:105
+msgid "You can always resume the Wizard from Calibration -> Wizard."
+msgstr ""
+

+ 1722 - 28
lang/po/lang_cz.po

@@ -1,28 +1,1722 @@
-# Translation into Czech.
-#
-msgid ""
-msgstr ""
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ultralcd.cpp:6304
-msgid "  [off"
-msgstr ""
-
-#: ultralcd.cpp:2362
-msgid "[0;0] point offset"
-msgstr ""
-
-#: ultralcd.cpp:4213
-msgid "E-correct"
-msgstr ""
-
-#: ultralcd.cpp:607
-msgid "Printer disconnected"
-msgstr ""
-
-#: Marlin_main.cpp:3504
-msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
-msgstr ""
-
+# Translation of Prusa-Firmware into Czech.
+#
+msgid ""
+msgstr ""
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: cs\n"
+"Project-Id-Version: Prusa-Firmware\n"
+"POT-Creation-Date: Sun Jun 3 19:29:26 2018\n"
+"PO-Revision-Date: Sun Jun 3 19:29:26 2018\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_EXTRUDER_CORRECTION_OFF c=6
+#: ultralcd.cpp:6312
+#, fuzzy
+msgid "  [off"
+msgstr ""
+
+# MSG_PLANNER_BUFFER_BYTES
+#: Marlin_main.cpp:1085
+msgid "  PlannerBufferBytes: "
+msgstr " PlannerBufferBytes: "
+
+# MSG_FACTOR
+#: ultralcd.cpp:6008
+msgid " \002 Fact"
+msgstr " \002 Fact"
+
+# MSG_MAX
+#: ultralcd.cpp:6007
+msgid " \002 Max"
+msgstr " \002 Max"
+
+# MSG_MIN
+#: ultralcd.cpp:6006
+msgid " \002 Min"
+msgstr " \002 Min"
+
+# MSG_ERR_COLD_EXTRUDE_STOP
+#: planner.cpp:745
+msgid " cold extrusion prevented"
+msgstr " cold extrusion prevented"
+
+# MSG_FREE_MEMORY
+#: Marlin_main.cpp:1083
+msgid " Free Memory: "
+msgstr " Free Memory: "
+
+# MSG_CONFIGURATION_VER
+#: Marlin_main.cpp:1073
+msgid " Last Updated: "
+msgstr " Last Updated: "
+
+# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
+#: messages.c:44
+msgid " of 4"
+msgstr " z 4"
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
+#: messages.c:59
+msgid " of 9"
+msgstr " z 9"
+
+# MSG_MEASURED_OFFSET
+#: ultralcd.cpp:2362
+#, fuzzy
+msgid "[0;0] point offset"
+msgstr ""
+
+# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
+#: ultralcd.cpp:3613
+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"
+
+# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
+#: ultralcd.cpp:3626
+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"
+
+# MSG_REFRESH
+#: 
+msgid "\xf8Refresh"
+msgstr "\xf8Obnovit"
+
+# MSG_BABYSTEPPING_Z c=20
+#: ultralcd.cpp:2487
+msgid "Adjusting Z"
+msgstr "Dostavovani Z"
+
+# MSG_SELFTEST_CHECK_ALLCORRECT c=20
+#: ultralcd.cpp:7235
+msgid "All correct      "
+msgstr "Vse OK "
+
+# MSG_WIZARD_DONE c=20 r=8
+#: messages.c:103
+msgid "All is done. Happy printing!"
+msgstr "Vse je hotovo."
+
+# MSG_ALL c=19 r=1
+#: messages.c:11
+msgid "All"
+msgstr "Vse"
+
+# MSG_PRESS c=20
+#: ultralcd.cpp:1916
+msgid "and press the knob"
+msgstr "a stisknete tlacitko"
+
+# MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
+#: ultralcd.cpp:2803
+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_HOME
+#: messages.c:12
+msgid "Auto home"
+msgstr "Auto home"
+
+# MSG_AUTOLOAD_FILAMENT c=17
+#: ultralcd.cpp:5803
+msgid "AutoLoad filament"
+msgstr "AutoZavedeni fil."
+
+# MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
+#: ultralcd.cpp:3642
+msgid "Autoloading filament available only when filament sensor is turned on..."
+msgstr "Automaticke zavadeni filamentu dostupne pouze pri zapnutem filament senzoru..."
+
+# MSG_AUTOLOADING_ENABLED c=20 r=4
+#: ultralcd.cpp:2089
+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:7007
+msgid "Axis length"
+msgstr "Delka osy"
+
+# MSG_SELFTEST_AXIS
+#: ultralcd.cpp:7009
+msgid "Axis"
+msgstr "Osa"
+
+# 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_SELFTEST_BEDHEATER
+#: ultralcd.cpp:6951
+msgid "Bed / Heater"
+msgstr "Bed / Heater"
+
+# MSG_BED_DONE
+#: messages.c:17
+msgid "Bed done"
+msgstr "Bed OK."
+
+# MSG_BED_HEATING
+#: messages.c:18
+msgid "Bed Heating"
+msgstr "Zahrivani bed"
+
+# MSG_BED_CORRECTION_MENU
+#: ultralcd.cpp:4533
+msgid "Bed level correct"
+msgstr "Korekce podlozky"
+
+# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
+#: messages.c:19
+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:4031
+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:4035
+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:16
+msgid "Bed"
+msgstr "Bed"
+
+# MSG_BEGIN_FILE_LIST
+#: Marlin_main.cpp:4405
+msgid "Begin file list"
+msgstr "Begin file list"
+
+# MSG_MENU_BELT_STATUS c=15 r=1
+#: ultralcd.cpp:1738
+msgid "Belt status"
+msgstr "Stav remenu"
+
+# MSG_RECOVER_PRINT c=20 r=2
+#: messages.c:72
+msgid "Blackout occurred. Recover print?"
+msgstr "Detekovan vypadek proudu.Obnovit tisk?"
+
+# MSG_CALIBRATE_E c=20 r=1
+#: ultralcd.cpp:4526
+msgid "Calibrate E"
+msgstr "Kalibrovat E"
+
+# MSG_CALIBRATE_BED
+#: ultralcd.cpp:4522
+msgid "Calibrate XYZ"
+msgstr "Kalibrace XYZ"
+
+# MSG_HOMEYZ
+#: messages.c:52
+msgid "Calibrate Z"
+msgstr "Kalibrovat Z"
+
+# MSG_CALIBRATE_PINDA c=17 r=1
+#: ultralcd.cpp:3794
+msgid "Calibrate"
+msgstr "Zkalibrovat"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
+#: ultralcd.cpp:2756
+msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "Kalibrace XYZ. Otacenim tlacitka posunte Z osu az k~hornimu dorazu. Potvrdte tlacitkem."
+
+# MSG_CALIBRATE_Z_AUTO
+#: messages.c:21
+msgid "Calibrating Z"
+msgstr "Kalibruji Z"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
+#: ultralcd.cpp:2756
+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_implementation_hitachi_HD44780.h:989
+msgid "Calibration done"
+msgstr "Kalibrace OK"
+
+# MSG_MENU_CALIBRATION
+#: messages.c:60
+msgid "Calibration"
+msgstr "Kalibrace"
+
+# MSG_SD_CANT_ENTER_SUBDIR
+#: cardreader.cpp:679
+msgid "Cannot enter subdir: "
+msgstr "Cannot enter subdir: "
+
+# MSG_SD_CANT_OPEN_SUBDIR
+#: cardreader.cpp:97
+msgid "Cannot open subdir"
+msgstr "Cannot open subdir"
+
+# MSG_SD_INSERTED
+#: ultralcd.cpp:7550
+msgid "Card inserted"
+msgstr "Karta vlozena"
+
+# MSG_SD_REMOVED
+#: ultralcd.cpp:7556
+msgid "Card removed"
+msgstr "Karta vyjmuta"
+
+# MSG_NOT_COLOR
+#: ultralcd.cpp:2018
+msgid "Color not correct"
+msgstr "Barva neni cista"
+
+# MSG_COOLDOWN
+#: messages.c:24
+msgid "Cooldown"
+msgstr "Zchladit"
+
+# MSG_CRASHDETECT_ON
+#: messages.c:28
+msgid "Crash det.   [on]"
+msgstr "Crash det. [zap]"
+
+# MSG_CRASHDETECT_NA
+#: messages.c:26
+msgid "Crash det.  [N/A]"
+msgstr "Crash det. [N/A]"
+
+# MSG_CRASHDETECT_OFF
+#: messages.c:27
+msgid "Crash det.  [off]"
+msgstr "Crash det. [vyp]"
+
+# MSG_CRASH_DETECTED c=20 r=1
+#: messages.c:25
+msgid "Crash detected."
+msgstr "Detekovan naraz."
+
+# MSG_CURRENT c=19 r=1
+#: ultralcd.cpp:4859
+msgid "Current"
+msgstr "Pouze aktualni"
+
+# MSG_DATE c=17 r=1
+#: ultralcd.cpp:1828
+msgid "Date:"
+msgstr "Datum:"
+
+# MSG_DISABLE_STEPPERS
+#: ultralcd.cpp:4146
+msgid "Disable steppers"
+msgstr "Vypnout motory"
+
+# MSG_BABYSTEP_Z_NOT_SET c=20 r=12
+#: messages.c:15
+msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
+msgstr "Neni zkalibrovana vzdalenost trysky od tiskove podlozky. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Nastaveni prvni vrstvy."
+
+# MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
+#: ultralcd.cpp:4071
+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 heatbed?"
+
+# 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. Po te potvrdte tlacitkem."
+
+# MSG_EXTRUDER_CORRECTION c=9
+#: ultralcd.cpp:4213
+#, fuzzy
+msgid "E-correct"
+msgstr ""
+
+# MSG_END_FILE_LIST
+#: Marlin_main.cpp:4407
+msgid "End file list"
+msgstr "End file list"
+
+# MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
+#: ultralcd.cpp:6975
+msgid "Endstop not hit"
+msgstr "Endstop not hit"
+
+# MSG_SELFTEST_ENDSTOP
+#: ultralcd.cpp:6969
+msgid "Endstop"
+msgstr "Endstop"
+
+# MSG_ENDSTOPS_HIT
+#: messages.c:31
+msgid "endstops hit: "
+msgstr "endstops hit: "
+
+# MSG_SELFTEST_ENDSTOPS
+#: ultralcd.cpp:6957
+msgid "Endstops"
+msgstr "Endstops"
+
+# MSG_LANGUAGE_NAME
+#: language.c:153
+msgid "English"
+msgstr "Cestina"
+
+# MSG_Enqueing
+#: 
+msgid "enqueing \x22"
+msgstr "enqueing \x22"
+
+# MSG_STACK_ERROR c=20 r=4
+#: ultralcd.cpp:5843
+msgid "Error - static memory has been overwritten"
+msgstr "Chyba - Doslo k prepisu staticke pameti!"
+
+# MSG_SD_ERR_WRITE_TO_FILE
+#: messages.c:76
+msgid "error writing to file"
+msgstr "error writing to file"
+
+# MSG_FSENS_NOT_RESPONDING c=20 r=4
+#: ultralcd.cpp:3656
+msgid "ERROR: Filament sensor is not responding, please check connection."
+msgstr "CHYBA: Filament senzor nereaguje, zkontrolujte zapojeni."
+
+# MSG_ERROR
+#: messages.c:34
+msgid "ERROR:"
+msgstr "CHYBA:"
+
+# MSG_EXTRUDER_1 c=17 r=1
+#: ultralcd.cpp:5417
+msgid "Extruder 1"
+msgstr "Extruder 1"
+
+# MSG_EXTRUDER_2 c=17 r=1
+#: ultralcd.cpp:5418
+msgid "Extruder 2"
+msgstr "Extruder 2"
+
+# MSG_EXTRUDER_3 c=17 r=1
+#: ultralcd.cpp:5419
+msgid "Extruder 3"
+msgstr "Extruder 3"
+
+# MSG_EXTRUDER_4 c=17 r=1
+#: ultralcd.cpp:5420
+msgid "Extruder 4"
+msgstr "Extruder 4"
+
+# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
+#: ultralcd.cpp:7244
+msgid "Extruder fan:"
+msgstr "Levy vent.:"
+
+# MSG_INFO_EXTRUDER c=15 r=1
+#: ultralcd.cpp:1840
+msgid "Extruder info"
+msgstr "Extruder info"
+
+# MSG_MOVE_E
+#: messages.c:35
+msgid "Extruder"
+msgstr "Extruder"
+
+# MSG_FSENS_AUTOLOAD_ON c=17 r=1
+#: ultralcd.cpp:4178
+msgid "F. autoload  [on]"
+msgstr "F. autozav. [zap]"
+
+# MSG_FSENS_AUTOLOAD_NA c=17 r=1
+#: messages.c:47
+msgid "F. autoload [N/A]"
+msgstr "F. autozav. [N/A]"
+
+# MSG_FSENS_AUTOLOAD_OFF c=17 r=1
+#: ultralcd.cpp:4181
+msgid "F. autoload [off]"
+msgstr "F. autozav. [vyp]"
+
+# MSG_FAN_SPEED c=14
+#: messages.c:36
+msgid "Fan speed"
+msgstr "Rychlost vent."
+
+# MSG_SELFTEST_FAN c=20
+#: messages.c:82
+msgid "Fan test"
+msgstr "Test ventilatoru"
+
+# MSG_FANS_CHECK_ON c=17 r=1
+#: ultralcd.cpp:4189
+msgid "Fans check   [on]"
+msgstr "Kontr. vent.[zap]"
+
+# MSG_FANS_CHECK_OFF c=17 r=1
+#: ultralcd.cpp:4192
+msgid "Fans check  [off]"
+msgstr "Kontr. vent.[vyp]"
+
+# MSG_FSENSOR_ON
+#: messages.c:49
+msgid "Fil. sensor  [on]"
+msgstr "Fil. senzor [zap]"
+
+# MSG_FSENSOR_NA
+#: ultralcd.cpp:4164
+msgid "Fil. sensor [N/A]"
+msgstr "Fil. senzor [N/A]"
+
+# MSG_FSENSOR_OFF
+#: messages.c:48
+msgid "Fil. sensor [off]"
+msgstr "Fil. senzor [vyp]"
+
+# MSG_FILAMENT_CLEAN c=20 r=2
+#: messages.c:37
+msgid "Filament extruding & with correct color?"
+msgstr "Filament vytlacen a spravne barvy?"
+
+# MSG_NOT_LOADED c=19
+#: ultralcd.cpp:2014
+msgid "Filament not loaded"
+msgstr "Filament nezaveden"
+
+# MSG_FILAMENT_SENSOR c=20
+#: ultralcd.cpp:7023
+msgid "Filament sensor"
+msgstr "Senzor filamentu"
+
+# MSG_SELFTEST_FILAMENT_SENSOR c=18
+#: ultralcd.cpp:7253
+msgid "Filament sensor:"
+msgstr "Senzor filamentu:"
+
+# MSG_STATS_FILAMENTUSED c=20
+#: ultralcd.cpp:2142
+msgid "Filament used:  "
+msgstr "Filament : "
+
+# MSG_FILE_INCOMPLETE c=20 r=2
+#: ultralcd.cpp:7396
+msgid "File incomplete. Continue anyway?"
+msgstr "Soubor nekompletni. Pokracovat?"
+
+# MSG_SD_FILE_OPENED
+#: cardreader.cpp:395
+msgid "File opened: "
+msgstr "File opened: "
+
+# MSG_SD_FILE_SELECTED
+#: cardreader.cpp:401
+msgid "File selected"
+msgstr "File selected"
+
+# MSG_FINISHING_MOVEMENTS c=20 r=1
+#: messages.c:45
+msgid "Finishing movements"
+msgstr "Dokoncovani pohybu"
+
+# MSG_V2_CALIBRATION c=17 r=1
+#: ultralcd.cpp:4513
+msgid "First layer cal."
+msgstr "Kal. prvni vrstvy"
+
+# MSG_WIZARD_SELFTEST c=20 r=8
+#: ultralcd.cpp:3989
+msgid "First, I will run the selftest to check most common assembly problems."
+msgstr "Nejdriv pomoci selftestu zkontoluji nejcastejsi chyby vznikajici pri sestaveni tiskarny."
+
+# MSG_FLOW
+#: ultralcd.cpp:5932
+msgid "Flow"
+msgstr "Prutok"
+
+# MSG_PRUSA3D_FORUM
+#: ultralcd.cpp:1821
+msgid "forum.prusa3d.com"
+msgstr "forum.prusa3d.com"
+
+# MSG_SELFTEST_COOLING_FAN c=20
+#: messages.c:79
+msgid "Front print fan?"
+msgstr "Predni tiskovy vent?"
+
+# MSG_BED_CORRECTION_FRONT c=14 r=1
+#: ultralcd.cpp:2565
+msgid "Front side[um]"
+msgstr "Vpredu [um]"
+
+# MSG_SELFTEST_FANS
+#: ultralcd.cpp:7015
+msgid "Front/left fans"
+msgstr "Predni/levy vent."
+
+# MSG_SELFTEST_HEATERTHERMISTOR
+#: ultralcd.cpp:6945
+msgid "Heater/Thermistor"
+msgstr "Heater/Thermistor"
+
+# MSG_BED_HEATING_SAFETY_DISABLED
+#: Marlin_main.cpp:7232
+msgid "Heating disabled by safety timer."
+msgstr "Zahrivani preruseno bezpecnostnim casovacem."
+
+# MSG_HEATING_COMPLETE c=20
+#: messages.c:51
+msgid "Heating done."
+msgstr "Zahrivani OK."
+
+# MSG_HEATING
+#: messages.c:50
+msgid "Heating"
+msgstr "Zahrivani"
+
+# MSG_WIZARD_WELCOME c=20 r=7
+#: ultralcd.cpp:3968
+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:1822
+msgid "howto.prusa3d.com"
+msgstr "howto.prusa3d.com"
+
+# MSG_CHANGE_EXTR c=20 r=1
+#: ultralcd.cpp:5812
+msgid "Change extruder"
+msgstr "Zmenit extruder"
+
+# MSG_FILAMENTCHANGE
+#: messages.c:42
+msgid "Change filament"
+msgstr "Vymenit filament"
+
+# MSG_CNG_SDCARD
+#: ultralcd.cpp:5777
+msgid "Change SD card"
+msgstr "Vymenit SD"
+
+# MSG_CHANGE_SUCCESS
+#: ultralcd.cpp:1927
+msgid "Change success!"
+msgstr "Zmena uspesna!"
+
+# MSG_CORRECTLY c=20
+#: ultralcd.cpp:2006
+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:85
+msgid "Checking bed     "
+msgstr "Kontrola bed "
+
+# MSG_SELFTEST_CHECK_ENDSTOPS c=20
+#: ultralcd.cpp:7226
+msgid "Checking endstops"
+msgstr "Kontrola endstops"
+
+# MSG_SELFTEST_CHECK_HOTEND c=20
+#: ultralcd.cpp:7227
+msgid "Checking hotend  "
+msgstr "Kontrola hotend "
+
+# MSG_SELFTEST_CHECK_FSENSOR c=20
+#: messages.c:86
+msgid "Checking sensors "
+msgstr "Kontrola senzoru"
+
+# MSG_SELFTEST_CHECK_X c=20
+#: ultralcd.cpp:7228
+msgid "Checking X axis  "
+msgstr "Kontrola X axis "
+
+# MSG_SELFTEST_CHECK_Y c=20
+#: ultralcd.cpp:7229
+msgid "Checking Y axis  "
+msgstr "Kontrola Y axis "
+
+# MSG_SELFTEST_CHECK_Z c=20
+#: ultralcd.cpp:7230
+msgid "Checking Z axis  "
+msgstr "Kontrola Z axis "
+
+# MSG_ERR_CHECKSUM_MISMATCH
+#: cmdqueue.cpp:444
+msgid "checksum mismatch, Last Line: "
+msgstr "checksum mismatch, Last Line: "
+
+# MSG_CHOOSE_EXTRUDER c=20 r=1
+#: messages.c:53
+msgid "Choose extruder:"
+msgstr "Vyberte extruder:"
+
+# MSG_WIZARD_XYZ_CAL c=20 r=8
+#: ultralcd.cpp:3998
+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:4004
+msgid "I will run z calibration now."
+msgstr "Nyni provedu z kalibraci."
+
+# MSG_WIZARD_V2_CAL_2 c=20 r=12
+#: ultralcd.cpp:4066
+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:2469
+msgid "Improving bed calibration point"
+msgstr "Zlepsuji presnost kalibracniho bodu"
+
+# MSG_WATCH
+#: messages.c:101
+msgid "Info screen"
+msgstr "Informace"
+
+# MSG_INIT_SDCARD
+#: ultralcd.cpp:5785
+msgid "Init. SD card"
+msgstr "Inic. SD"
+
+# MSG_FILAMENT_LOADING_T0 c=20 r=4
+#: messages.c:38
+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:39
+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:40
+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:41
+msgid "Insert filament into extruder 4. Click when done."
+msgstr "Vlozte filament do extruderu 4. Potvrdte tlacitkem."
+
+# MSG_INSERT_FILAMENT c=20
+#: ultralcd.cpp:1913
+msgid "Insert filament"
+msgstr "Vlozte filament"
+
+# MSG_WIZARD_FILAMENT_LOADED c=20 r=2
+#: ultralcd.cpp:4015
+msgid "Is filament loaded?"
+msgstr "Je filament zaveden?"
+
+# MSG_WIZARD_PLA_FILAMENT c=20 r=2
+#: ultralcd.cpp:4060
+msgid "Is it PLA filament?"
+msgstr "Je to PLA filament?"
+
+# MSG_PLA_FILAMENT_LOADED c=20 r=2
+#: ultralcd.cpp:3924
+msgid "Is PLA filament loaded?"
+msgstr "Je PLA filament zaveden?"
+
+# MSG_STEEL_SHEET_CHECK c=20 r=2
+#: messages.c:94
+msgid "Is steel sheet on heatbed?"
+msgstr "Je tiskovy plat na heatbed?"
+
+# MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20
+#: mesh_bed_calibration.cpp:2211
+msgid "Iteration "
+msgstr "Iterace "
+
+# MSG_KILLED
+#: Marlin_main.cpp:7393
+msgid "KILLED. "
+msgstr "KILLED. "
+
+# MSG_SELFTEST_EXTRUDER_FAN c=20
+#: messages.c:80
+msgid "Left hotend fan?"
+msgstr "Levy vent na trysce?"
+
+# MSG_BED_CORRECTION_LEFT c=14 r=1
+#: ultralcd.cpp:2563
+msgid "Left side [um]"
+msgstr "Vlevo [um]"
+
+# MSG_LEFT c=12 r=1
+#: ultralcd.cpp:2308
+msgid "Left:"
+msgstr "Levy:"
+
+# MSG_BABYSTEP_Z
+#: messages.c:14
+msgid "Live adjust Z"
+msgstr "Doladeni osy Z"
+
+# MSG_LOAD_ALL
+#: ultralcd.cpp:5392
+msgid "Load all"
+msgstr "Zavest vse"
+
+# MSG_LOAD_FILAMENT_1 c=17
+#: ultralcd.cpp:5393
+msgid "Load filament 1"
+msgstr "Zavest filament 1"
+
+# MSG_LOAD_FILAMENT_2 c=17
+#: ultralcd.cpp:5394
+msgid "Load filament 2"
+msgstr "Zavest filament 2"
+
+# MSG_LOAD_FILAMENT_3 c=17
+#: ultralcd.cpp:5395
+msgid "Load filament 3"
+msgstr "Zavest filament 3"
+
+# MSG_LOAD_FILAMENT_4 c=17
+#: ultralcd.cpp:5396
+msgid "Load filament 4"
+msgstr "Zavest filament 4"
+
+# MSG_LOAD_FILAMENT c=17
+#: messages.c:54
+msgid "Load filament"
+msgstr "Zavest filament"
+
+# MSG_LOADING_COLOR
+#: ultralcd.cpp:1939
+msgid "Loading color"
+msgstr "Cisteni barvy"
+
+# MSG_LOADING_FILAMENT c=20
+#: messages.c:55
+msgid "Loading filament"
+msgstr "Zavadeni filamentu"
+
+# MSG_LOOSE_PULLEY c=20 r=1
+#: ultralcd.cpp:6999
+msgid "Loose pulley"
+msgstr "Uvolnena remenicka"
+
+# MSG_M104_INVALID_EXTRUDER
+#: Marlin_main.cpp:7506
+msgid "M104 Invalid extruder "
+msgstr "M104 Invalid extruder "
+
+# MSG_M105_INVALID_EXTRUDER
+#: Marlin_main.cpp:7509
+msgid "M105 Invalid extruder "
+msgstr "M105 Invalid extruder "
+
+# MSG_M109_INVALID_EXTRUDER
+#: Marlin_main.cpp:7512
+msgid "M109 Invalid extruder "
+msgstr "M109 Invalid extruder "
+
+# MSG_M117_V2_CALIBRATION c=25 r=1
+#: messages.c:56
+msgid "M117 First layer cal."
+msgstr "M117 Kal. prvni vrstvy"
+
+# MSG_M200_INVALID_EXTRUDER
+#: Marlin_main.cpp:5378
+msgid "M200 Invalid extruder "
+msgstr "M200 Invalid extruder "
+
+# MSG_M218_INVALID_EXTRUDER
+#: Marlin_main.cpp:7515
+msgid "M218 Invalid extruder "
+msgstr "M218 Invalid extruder "
+
+# MSG_M221_INVALID_EXTRUDER
+#: Marlin_main.cpp:7518
+msgid "M221 Invalid extruder "
+msgstr "M221 Invalid extruder "
+
+# MSG_MAIN
+#: messages.c:57
+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 po te potvrdte tlacitkem."
+
+# 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:58
+msgid "Measuring reference height of calibration point"
+msgstr "Merim referencni vysku kalibracniho bodu"
+
+# MSG_MESH_BED_LEVELING
+#: ultralcd.cpp:4528
+msgid "Mesh Bed Leveling"
+msgstr "Mesh Bed Leveling"
+
+# MSG_STEALTH_MODE_OFF
+#: messages.c:92
+msgid "Mode     [Normal]"
+msgstr "Mod [Normal]"
+
+# MSG_SILENT_MODE_ON
+#: messages.c:91
+msgid "Mode     [silent]"
+msgstr "Mod [tichy]"
+
+# MSG_STEALTH_MODE_ON
+#: messages.c:93
+msgid "Mode    [Stealth]"
+msgstr "Mod [Stealth]"
+
+# MSG_AUTO_MODE_ON
+#: messages.c:13
+msgid "Mode [auto power]"
+msgstr "Mod [automaticky]"
+
+# MSG_SILENT_MODE_OFF
+#: messages.c:90
+msgid "Mode [high power]"
+msgstr "Mod [vys. vykon]"
+
+# MSG_SELFTEST_MOTOR
+#: messages.c:87
+msgid "Motor"
+msgstr "Motor"
+
+# MSG_MOVE_AXIS
+#: ultralcd.cpp:4142
+msgid "Move axis"
+msgstr "Posunout osu"
+
+# MSG_MOVE_X
+#: ultralcd.cpp:3557
+msgid "Move X"
+msgstr "Posunout X"
+
+# MSG_MOVE_Y
+#: ultralcd.cpp:3558
+msgid "Move Y"
+msgstr "Posunout Y"
+
+# MSG_MOVE_Z
+#: ultralcd.cpp:3559
+msgid "Move Z"
+msgstr "Posunout Z"
+
+# MSG_NEW_FIRMWARE_AVAILABLE c=20 r=2
+#: util.cpp:292
+msgid "New firmware version available:"
+msgstr "Vysla nova verze firmware:"
+
+# MSG_ERR_NO_CHECKSUM
+#: cmdqueue.cpp:456
+msgid "No Checksum with line number, Last Line: "
+msgstr "No Checksum with line number, Last Line: "
+
+# MSG_NO_MOVE
+#: Marlin_main.cpp:4394
+msgid "No move."
+msgstr "No move."
+
+# MSG_NO_CARD
+#: ultralcd.cpp:5783
+msgid "No SD card"
+msgstr "Zadna SD karta"
+
+# MSG_ERR_NO_THERMISTORS
+#: Marlin_main.cpp:4946
+msgid "No thermistors - no temperature"
+msgstr "No thermistors - no temperature"
+
+# MSG_NO
+#: messages.c:61
+msgid "No"
+msgstr "Ne"
+
+# MSG_SELFTEST_NOTCONNECTED
+#: ultralcd.cpp:6947
+msgid "Not connected"
+msgstr "Nezapojeno "
+
+# MSG_SELFTEST_FAN_NO c=19
+#: messages.c:83
+msgid "Not spinning"
+msgstr "Netoci se"
+
+# MSG_WIZARD_V2_CAL c=20 r=8
+#: ultralcd.cpp:4065
+msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
+msgstr "Nyni zkalibruji vzdalenost mezi koncem trysky a povrchem heatbedu."
+
+# MSG_WIZARD_WILL_PREHEAT c=20 r=4
+#: ultralcd.cpp:4022
+msgid "Now I will preheat nozzle for PLA."
+msgstr "Nyni predehreji trysku pro PLA."
+
+# MSG_INFO_NOZZLE_FAN c=11 r=1
+#: ultralcd.cpp:1537
+msgid "Nozzle FAN:"
+msgstr "Trysk. vent:"
+
+# MSG_NOZZLE
+#: messages.c:62
+msgid "Nozzle"
+msgstr "Tryska"
+
+# MSG_NOZZLE1
+#: ultralcd.cpp:5995
+msgid "Nozzle2"
+msgstr "Tryska2"
+
+# MSG_NOZZLE2
+#: ultralcd.cpp:5998
+msgid "Nozzle3"
+msgstr "Tryska3"
+
+# MSG_OK
+#: messages.c:63
+msgid "ok"
+msgstr "ok"
+
+# MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
+#: Marlin_main.cpp:1382
+msgid "Old settings found. Default PID, Esteps etc. will be set."
+msgstr "Neplatne hodnoty nastaveni. Bude pouzito vychozi PID, Esteps atd."
+
+# MSG_SD_OPEN_FILE_FAIL
+#: cardreader.cpp:461
+msgid "open failed, File: "
+msgstr "open failed, File: "
+
+# MSG_ENDSTOP_OPEN
+#: messages.c:30
+msgid "open"
+msgstr "open"
+
+# MSG_SD_OPENROOT_FAIL
+#: cardreader.cpp:196
+msgid "openRoot failed"
+msgstr "openRoot failed"
+
+# MSG_PAUSE_PRINT
+#: ultralcd.cpp:5757
+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:1366
+msgid "PID cal.           "
+msgstr "PID kal. "
+
+# MSG_PID_FINISHED c=20 r=1
+#: ultralcd.cpp:1372
+msgid "PID cal. finished"
+msgstr "PID kal. ukoncena"
+
+# MSG_PID_EXTRUDER c=17 r=1
+#: ultralcd.cpp:4534
+msgid "PID calibration"
+msgstr "PID kalibrace"
+
+# MSG_PINDA_PREHEAT c=20 r=1
+#: ultralcd_implementation_hitachi_HD44780.h:1023
+msgid "PINDA Heating"
+msgstr "Nahrivani PINDA"
+
+# MSG_PAPER c=20 r=8
+#: 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, vypnete tiskarnu."
+
+# MSG_WIZARD_CLEAN_HEATBED c=20 r=8
+#: ultralcd.cpp:4073
+msgid "Please clean heatbed and then press the knob."
+msgstr "Prosim ocistete heatbed a stisknete tlacitko."
+
+# MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
+#: messages.c:23
+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:6939
+msgid "Please check :"
+msgstr "Zkontrolujte :"
+
+# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
+#: messages.c:102
+msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
+msgstr "Prosim nahlednete do manualu a opravte problem. Po te obnovte Wizarda rebootovanim tiskarny."
+
+# MSG_WIZARD_LOAD_FILAMENT c=20 r=8
+#: ultralcd.cpp:4046
+msgid "Please insert PLA filament to the extruder, then press knob to load it."
+msgstr "Prosim vlozte PLA filament do extruderu, po te 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 Wizarda stisknutim reset tlacitka."
+
+# MSG_PLEASE_LOAD_PLA c=20 r=4
+#: ultralcd.cpp:3929
+msgid "Please load PLA filament first."
+msgstr "Nejdrive zavedte PLA filament prosim."
+
+# MSG_CHECK_IDLER c=20 r=4
+#: Marlin_main.cpp:6166
+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:65
+msgid "Please place steel sheet on heatbed."
+msgstr "Umistete prosim tiskovy plat na heatbed"
+
+# MSG_PRESS_TO_UNLOAD c=20 r=4
+#: messages.c:69
+msgid "Please press the knob to unload filament"
+msgstr "Pro vysunuti filamentu stisknete prosim tlacitko"
+
+# MSG_PULL_OUT_FILAMENT c=20 r=4
+#: messages.c:71
+msgid "Please pull out filament immediately"
+msgstr "Prosim vyjmete urychlene filament"
+
+# MSG_REMOVE_STEEL_SHEET c=20 r=4
+#: messages.c:75
+msgid "Please remove steel sheet from heatbed."
+msgstr "Odstrante tiskovy plat z heatbed prosim."
+
+# MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20
+#: util.cpp:296
+msgid "Please upgrade."
+msgstr "Prosim aktualizujte."
+
+# MSG_PLEASE_WAIT c=20
+#: messages.c:66
+msgid "Please wait"
+msgstr "Prosim cekejte"
+
+# MSG_POWERUP
+#: messages.c:67
+msgid "PowerUp"
+msgstr "PowerUp"
+
+# MSG_PREHEAT_NOZZLE c=20
+#: messages.c:68
+msgid "Preheat the nozzle!"
+msgstr "Predehrejte trysku!"
+
+# MSG_PREHEAT
+#: ultralcd.cpp:5746
+msgid "Preheat"
+msgstr "Predehrev"
+
+# MSG_WIZARD_HEATING c=20 r=3
+#: messages.c:104
+msgid "Preheating nozzle. Please wait."
+msgstr "Predehrivam trysku. Prosim cekejte."
+
+# MSG_PREPARE_FILAMENT c=20 r=1
+#: ultralcd.cpp:1911
+msgid "Prepare new filament"
+msgstr "Pripravte filament"
+
+# MSG_PRESS_TO_PREHEAT c=20 r=4
+#: Marlin_main.cpp:6025
+msgid "Press knob to preheat nozzle and continue."
+msgstr "Pro nahrati trysky a pokracovani stisknete tlacitko."
+
+# MSG_PRINT_ABORTED c=20
+#: messages.c:70
+msgid "Print aborted"
+msgstr "Tisk prerusen"
+
+# MSG_INFO_PRINT_FAN c=11 r=1
+#: ultralcd.cpp:1549
+msgid "Print FAN: "
+msgstr "Tisk. vent:"
+
+# MSG_SELFTEST_PRINT_FAN_SPEED c=18
+#: ultralcd.cpp:7247
+msgid "Print fan:"
+msgstr "Tiskovy vent.:"
+
+# MSG_CARD_MENU
+#: messages.c:22
+msgid "Print from SD"
+msgstr "Tisk z SD"
+
+# MSG_PRINT_PAUSED c=20 r=1
+#: ultralcd.cpp:642
+msgid "Print paused"
+msgstr "Tisk pozastaven"
+
+# MSG_STATS_PRINTTIME c=20
+#: ultralcd.cpp:2151
+msgid "Print time:  "
+msgstr "Cas tisku : "
+
+# MSG_PRINTER_DISCONNECTED c=20 r=1
+#: ultralcd.cpp:607
+#, fuzzy
+msgid "Printer disconnected"
+msgstr ""
+
+# MSG_ERR_KILLED
+#: Marlin_main.cpp:7388
+msgid "Printer halted. kill() called!"
+msgstr "Printer halted. kill() called!"
+
+# MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
+#: messages.c:46
+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:33
+msgid "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"
+msgstr "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"
+
+# WELCOME_MSG c=20
+#: 
+msgid "Prusa i3 MK3 ready."
+msgstr "Prusa i3 MK3 ok"
+
+# MSG_PRUSA3D
+#: ultralcd.cpp:1820
+msgid "prusa3d.com"
+msgstr "prusa3d.com"
+
+# MSG_BED_CORRECTION_REAR c=14 r=1
+#: ultralcd.cpp:2566
+msgid "Rear side [um]"
+msgstr "Vzadu [um]"
+
+# MSG_RECOVERING_PRINT c=20 r=1
+#: Marlin_main.cpp:8289
+msgid "Recovering print    "
+msgstr "Obnovovani tisku "
+
+# MSG_M119_REPORT
+#: Marlin_main.cpp:5297
+msgid "Reporting endstop status"
+msgstr "Reporting endstop status"
+
+# MSG_RESEND
+#: Marlin_main.cpp:6911
+msgid "Resend: "
+msgstr "Resend: "
+
+# MSG_CALIBRATE_BED_RESET
+#: ultralcd.cpp:4539
+msgid "Reset XYZ calibr."
+msgstr "Reset XYZ kalibr."
+
+# MSG_BED_CORRECTION_RESET
+#: ultralcd.cpp:2567
+msgid "Reset"
+msgstr "Reset"
+
+# MSG_RESUME_PRINT
+#: ultralcd.cpp:5761
+msgid "Resume print"
+msgstr "Pokracovat"
+
+# MSG_RESUMING_PRINT
+#: messages.c:74
+msgid "Resuming print"
+msgstr "Obnoveni tisku"
+
+# MSG_BED_CORRECTION_RIGHT c=14 r=1
+#: ultralcd.cpp:2564
+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:4227
+msgid "RPi port     [on]"
+msgstr "RPi port [zap]"
+
+# MSG_SECOND_SERIAL_OFF c=17 r=1
+#: ultralcd.cpp:4224
+msgid "RPi port    [off]"
+msgstr "RPi port [vyp]"
+
+# MSG_WIZARD_RERUN c=20 r=7
+#: ultralcd.cpp:3947
+msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
+msgstr "Spusteni Wizarda vymaze ulozene vysledky vsech kalibraci a spusti kalibracni proces od zacatku. Pokracovat?"
+
+# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
+#: ultralcd.cpp:4240
+msgid "SD card  [normal]"
+msgstr "SD card [normal]"
+
+# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
+#: ultralcd.cpp:4238
+msgid "SD card [FlshAir]"
+msgstr "SD card [FlshAir]"
+
+# MSG_SD_CARD_OK
+#: cardreader.cpp:202
+msgid "SD card ok"
+msgstr "SD card ok"
+
+# MSG_SD_INIT_FAIL
+#: cardreader.cpp:186
+msgid "SD init fail"
+msgstr "SD init fail"
+
+# MSG_SD_PRINTING_BYTE
+#: cardreader.cpp:516
+msgid "SD printing byte "
+msgstr "SD printing byte "
+
+# MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
+#: messages.c:43
+msgid "Searching bed calibration point"
+msgstr "Hledam kalibracni bod podlozky"
+
+# MSG_LANGUAGE_SELECT
+#: ultralcd.cpp:4235
+msgid "Select language"
+msgstr "Vyber jazyka"
+
+# MSG_SELFTEST_OK
+#: ultralcd.cpp:6505
+msgid "Self test OK"
+msgstr "Self test OK"
+
+# MSG_SELFTEST_START c=20
+#: ultralcd.cpp:6342
+msgid "Self test start  "
+msgstr "Self test start "
+
+# MSG_SELFTEST
+#: ultralcd.cpp:4515
+msgid "Selftest         "
+msgstr "Selftest "
+
+# MSG_SELFTEST_ERROR
+#: ultralcd.cpp:6937
+msgid "Selftest error !"
+msgstr "Selftest error !"
+
+# MSG_SELFTEST_FAILED c=20
+#: messages.c:81
+msgid "Selftest failed  "
+msgstr "Selftest selhal "
+
+# MSG_FORCE_SELFTEST c=20 r=8
+#: Marlin_main.cpp:1414
+msgid "Selftest will be run to calibrate accurate sensorless rehoming."
+msgstr "Pro kalibraci presneho rehomovani bude nyni spusten selftest."
+
+# MSG_SET_TEMPERATURE c=19 r=1
+#: ultralcd.cpp:2575
+msgid "Set temperature:"
+msgstr "Nastavte teplotu:"
+
+# MSG_SETTINGS
+#: messages.c:89
+msgid "Settings"
+msgstr "Nastaveni"
+
+# 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:4536
+msgid "Show end stops"
+msgstr "Stav konc. spin."
+
+# MSG_DWELL
+#: Marlin_main.cpp:3281
+msgid "Sleep..."
+msgstr "Sleep..."
+
+# MSG_SLIGHT_SKEW c=15 r=1
+#: ultralcd.cpp:2342
+msgid "Slight skew:"
+msgstr "Lehke zkoseni:"
+
+# MSG_FILE_CNT c=20 r=4
+#: cardreader.cpp:754
+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 pro setrideni je 100."
+
+# MSG_SORT_NONE c=17 r=1
+#: ultralcd.cpp:4250
+msgid "Sort:      [None]"
+msgstr "Trideni [Zadne]"
+
+# MSG_SORT_TIME c=17 r=1
+#: ultralcd.cpp:4248
+msgid "Sort:      [Time]"
+msgstr "Trideni [Cas]"
+
+# MSG_SORT_ALPHA c=17 r=1
+#: ultralcd.cpp:4249
+msgid "Sort:  [Alphabet]"
+msgstr "Trideni [Abeceda]"
+
+# MSG_SORTING c=20 r=1
+#: cardreader.cpp:761
+msgid "Sorting files"
+msgstr "Trideni souboru"
+
+# MSG_SPEED
+#: ultralcd.cpp:5926
+msgid "Speed"
+msgstr "Rychlost"
+
+# MSG_SELFTEST_FAN_YES c=19
+#: messages.c:84
+msgid "Spinning"
+msgstr "Toci se"
+
+# MSG_TEMP_CAL_WARNING c=20 r=4
+#: Marlin_main.cpp:3551
+#, fuzzy
+msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
+msgstr ""
+
+# MSG_STATISTICS
+#: ultralcd.cpp:5824
+msgid "Statistics  "
+msgstr "Statistika "
+
+# MSG_STEPPER_TOO_HIGH
+#: stepper.cpp:345
+msgid "Steprate too high: "
+msgstr "Steprate too high: "
+
+# MSG_STOP_PRINT
+#: messages.c:95
+msgid "Stop print"
+msgstr "Zastavit tisk"
+
+# MSG_STOPPED
+#: messages.c:96
+msgid "STOPPED. "
+msgstr "STOPPED. "
+
+# MSG_SUPPORT
+#: ultralcd.cpp:5831
+msgid "Support"
+msgstr "Podpora"
+
+# MSG_SELFTEST_SWAPPED
+#: ultralcd.cpp:7017
+msgid "Swapped"
+msgstr "Prohozene"
+
+# MSG_TEMP_CALIBRATION c=20 r=1
+#: messages.c:97
+msgid "Temp. cal.          "
+msgstr "Tepl. kal. "
+
+# MSG_TEMP_CALIBRATION_ON c=20 r=1
+#: ultralcd.cpp:4220
+msgid "Temp. cal.   [on]"
+msgstr "Tepl. kal. [zap]"
+
+# MSG_TEMP_CALIBRATION_OFF c=20 r=1
+#: ultralcd.cpp:4217
+msgid "Temp. cal.  [off]"
+msgstr "Tepl. kal. [vyp]"
+
+# MSG_CALIBRATION_PINDA_MENU c=17 r=1
+#: ultralcd.cpp:4545
+msgid "Temp. calibration"
+msgstr "Teplot. kalibrace"
+
+# MSG_TEMP_CAL_FAILED c=20 r=8
+#: ultralcd.cpp:3189
+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:98
+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:4139
+msgid "Temperature"
+msgstr "Teplota"
+
+# MSG_MENU_TEMPERATURES c=15 r=1
+#: ultralcd.cpp:1846
+msgid "Temperatures"
+msgstr "Teploty"
+
+# MSG_STATS_TOTALFILAMENT c=20
+#: ultralcd.cpp:2186
+msgid "Total filament :"
+msgstr "Filament celkem :"
+
+# MSG_STATS_TOTALPRINTTIME c=20
+#: ultralcd.cpp:2203
+msgid "Total print time :"
+msgstr "Celkovy cas :"
+
+# MSG_ENDSTOP_HIT
+#: messages.c:29
+msgid "TRIGGERED"
+msgstr "TRIGGERED"
+
+# MSG_TUNE
+#: ultralcd.cpp:5743
+msgid "Tune"
+msgstr "Ladit"
+
+# MSG_UNLOAD_ALL
+#: ultralcd.cpp:5405
+msgid "Unload all"
+msgstr "Vyjmout vse"
+
+# 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_UNLOAD_FILAMENT c=17
+#: messages.c:99
+msgid "Unload filament"
+msgstr "Vyjmout filament"
+
+# MSG_UNLOADING_FILAMENT c=20 r=1
+#: messages.c:100
+msgid "Unloading filament"
+msgstr "Vysouvam filament"
+
+# MSG_USED c=19 r=1
+#: ultralcd.cpp:4858
+msgid "Used during print"
+msgstr "Pouzite behem tisku"
+
+# MSG_MENU_VOLTAGES c=15 r=1
+#: ultralcd.cpp:1849
+msgid "Voltages"
+msgstr "Napeti"
+
+# MSG_SD_VOL_INIT_FAIL
+#: cardreader.cpp:191
+msgid "volume.init failed"
+msgstr "volume.init failed"
+
+# MSG_USERWAIT
+#: Marlin_main.cpp:4359
+msgid "Wait for user..."
+msgstr "Wait for user..."
+
+# MSG_WAITING_TEMP c=20 r=3
+#: ultralcd.cpp:2719
+msgid "Waiting for nozzle and bed cooling"
+msgstr "Cekani na zchladnuti trysky a podlozky."
+
+# MSG_WAITING_TEMP_PINDA c=20 r=3
+#: ultralcd.cpp:2683
+msgid "Waiting for PINDA probe cooling"
+msgstr "Cekani na zchladnuti PINDA"
+
+# MSG_CHANGED_BOTH c=20 r=4
+#: Marlin_main.cpp:1374
+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:1366
+msgid "Warning: motherboard type changed."
+msgstr "Varovani: doslo ke zmene typu motherboardu."
+
+# MSG_CHANGED_PRINTER c=20 r=4
+#: Marlin_main.cpp:1370
+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:6165
+msgid "Was filament unload successful?"
+msgstr "Bylo vysunuti filamentu uspesne?"
+
+# MSG_SELFTEST_WIRINGERROR
+#: messages.c:88
+msgid "Wiring error"
+msgstr "Chyba zapojeni"
+
+# MSG_WIZARD c=17 r=1
+#: ultralcd.cpp:4512
+msgid "Wizard"
+msgstr "Wizard"
+
+# MSG_SD_WORKDIR_FAIL
+#: messages.c:78
+msgid "workDir open failed"
+msgstr "workDir open failed"
+
+# MSG_SD_WRITE_TO_FILE
+#: cardreader.cpp:424
+msgid "Writing to file: "
+msgstr "Writing to file: "
+
+# MSG_XYZ_DETAILS c=19 r=1
+#: ultralcd.cpp:1839
+msgid "XYZ cal. details"
+msgstr "Detaily XYZ kal."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
+#: ultralcd.cpp:3159
+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:3156
+msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
+msgstr "Kalibrace XYZ v poradku. X/Y osy mirne zkosene. Dobra prace!"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
+#: ultralcd.cpp:3137
+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:3143
+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:3140
+msgid "XYZ calibration compromised. Right front calibration point not reachable."
+msgstr "Kalibrace XYZ nepresna. Pravy predni bod moc vpredu."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=8
+#: ultralcd.cpp:3119
+msgid "XYZ calibration failed. Bed calibration point was not found."
+msgstr "Kalibrace XYZ selhala. Kalibracni bod podlozky nenalezen."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=8
+#: ultralcd.cpp:3125
+msgid "XYZ calibration failed. Front calibration points not reachable."
+msgstr "Kalibrace XYZ selhala. Predni kalibracni body moc vpredu. Srovnejte tiskarnu."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8
+#: ultralcd.cpp:3131
+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:20
+msgid "XYZ calibration failed. Please consult the manual."
+msgstr "Kalibrace XYZ selhala. Nahlednete do manualu."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=8
+#: ultralcd.cpp:3128
+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:3153
+msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
+msgstr "Kalibrace XYZ v poradku. X/Y osy jsou kolme. Gratuluji!"
+
+# MSG_Y_DISTANCE_FROM_MIN c=20 r=1
+#: ultralcd.cpp:2306
+msgid "Y distance from min:"
+msgstr "Y vzdalenost od min:"
+
+# MSG_YES
+#: messages.c:106
+msgid "Yes"
+msgstr "Ano"
+
+# 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."
+
+# 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."
+
+# MSG_WIZARD_QUIT c=20 r=8
+#: messages.c:105
+msgid "You can always resume the Wizard from Calibration -> Wizard."
+msgstr "Wizarda muzete kdykoliv znovu spustit z menu Calibration -> Wizard"
+

+ 1788 - 292
lang/po/lang_de.po

@@ -1,292 +1,1788 @@
-# Translation into German.
-#
-msgid ""
-msgstr ""
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ultralcd.cpp:6312
-msgid "  [off"
-msgstr ""
-
-#: ultralcd.cpp:2362
-msgid "[0;0] point offset"
-msgstr ""
-
-#: ultralcd.cpp:3613
-msgid "\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode"
-msgstr ""
-
-#: ultralcd.cpp:3626
-msgid "\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode"
-msgstr ""
-
-#: ultralcd.cpp:5803
-msgid "AutoLoad filament"
-msgstr ""
-
-#: ultralcd.cpp:3642
-msgid "Autoloading filament available only when filament sensor is turned on..."
-msgstr ""
-
-#: ultralcd.cpp:2089
-msgid "Autoloading filament is active, just press the knob and insert filament..."
-msgstr ""
-
-#: ultralcd.cpp:7007
-msgid "Axis length"
-msgstr ""
-
-#: ultralcd.cpp:7009
-msgid "Axis"
-msgstr ""
-
-#: ultralcd.cpp:1738
-msgid "Belt status"
-msgstr ""
-
-#: messages.c:72
-msgid "Blackout occurred. Recover print?"
-msgstr ""
-
-#: messages.c:28
-msgid "Crash det.   [on]"
-msgstr ""
-
-#: messages.c:26
-msgid "Crash det.  [N/A]"
-msgstr ""
-
-#: messages.c:27
-msgid "Crash det.  [off]"
-msgstr ""
-
-#: messages.c:25
-msgid "Crash detected."
-msgstr ""
-
-#: ultralcd.cpp:4213
-msgid "E-correct"
-msgstr ""
-
-#: ultralcd.cpp:5843
-msgid "Error - static memory has been overwritten"
-msgstr ""
-
-#: ultralcd.cpp:3656
-msgid "ERROR: Filament sensor is not responding, please check connection."
-msgstr ""
-
-#: ultralcd.cpp:7244
-msgid "Extruder fan:"
-msgstr ""
-
-#: ultralcd.cpp:1840
-msgid "Extruder info"
-msgstr ""
-
-#: ultralcd.cpp:4178
-msgid "F. autoload  [on]"
-msgstr ""
-
-#: messages.c:47
-msgid "F. autoload [N/A]"
-msgstr ""
-
-#: ultralcd.cpp:4181
-msgid "F. autoload [off]"
-msgstr ""
-
-#: ultralcd.cpp:4189
-msgid "Fans check   [on]"
-msgstr ""
-
-#: ultralcd.cpp:4192
-msgid "Fans check  [off]"
-msgstr ""
-
-#: messages.c:49
-msgid "Fil. sensor  [on]"
-msgstr ""
-
-#: ultralcd.cpp:4164
-msgid "Fil. sensor [N/A]"
-msgstr ""
-
-#: messages.c:48
-msgid "Fil. sensor [off]"
-msgstr ""
-
-#: ultralcd.cpp:7023
-msgid "Filament sensor"
-msgstr ""
-
-#: ultralcd.cpp:7253
-msgid "Filament sensor:"
-msgstr ""
-
-#: ultralcd.cpp:7396
-msgid "File incomplete. Continue anyway?"
-msgstr ""
-
-#: ultralcd.cpp:7015
-msgid "Front/left fans"
-msgstr ""
-
-#: Marlin_main.cpp:7222
-msgid "Heating disabled by safety timer."
-msgstr ""
-
-#: messages.c:85
-msgid "Checking sensors "
-msgstr ""
-
-#: messages.c:93
-msgid "Is steel sheet on heatbed?"
-msgstr ""
-
-#: messages.c:91
-msgid "Mode     [Normal]"
-msgstr ""
-
-#: messages.c:92
-msgid "Mode    [Stealth]"
-msgstr ""
-
-#: messages.c:13
-msgid "Mode [auto power]"
-msgstr ""
-
-#: ultralcd.cpp:1537
-msgid "Nozzle FAN:"
-msgstr ""
-
-#: Marlin_main.cpp:1396
-msgid "Old settings found. Default PID, Esteps etc. will be set."
-msgstr ""
-
-#: Marlin_main.cpp:6156
-msgid "Please open idler and remove filament manually."
-msgstr ""
-
-#: messages.c:65
-msgid "Please place steel sheet on heatbed."
-msgstr ""
-
-#: messages.c:69
-msgid "Please press the knob to unload filament"
-msgstr ""
-
-#: messages.c:71
-msgid "Please pull out filament immediately"
-msgstr ""
-
-#: messages.c:74
-msgid "Please remove steel sheet from heatbed."
-msgstr ""
-
-#: Marlin_main.cpp:6015
-msgid "Press knob to preheat nozzle and continue."
-msgstr ""
-
-#: ultralcd.cpp:1549
-msgid "Print FAN: "
-msgstr ""
-
-#: ultralcd.cpp:7247
-msgid "Print fan:"
-msgstr ""
-
-#: ultralcd.cpp:607
-msgid "Printer disconnected"
-msgstr ""
-
-#: Marlin_main.cpp:8279
-msgid "Recovering print    "
-msgstr ""
-
-#: ultralcd.cpp:4227
-msgid "RPi port     [on]"
-msgstr ""
-
-#: ultralcd.cpp:4224
-msgid "RPi port    [off]"
-msgstr ""
-
-#: Marlin_main.cpp:1428
-msgid "Selftest will be run to calibrate accurate sensorless rehoming."
-msgstr ""
-
-#: cardreader.cpp:754
-msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
-msgstr ""
-
-#: ultralcd.cpp:4250
-msgid "Sort:      [None]"
-msgstr ""
-
-#: ultralcd.cpp:4248
-msgid "Sort:      [Time]"
-msgstr ""
-
-#: ultralcd.cpp:4249
-msgid "Sort:  [Alphabet]"
-msgstr ""
-
-#: cardreader.cpp:761
-msgid "Sorting files"
-msgstr ""
-
-#: Marlin_main.cpp:3536
-msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
-msgstr ""
-
-#: ultralcd.cpp:7017
-msgid "Swapped"
-msgstr ""
-
-#: ultralcd.cpp:3189
-msgid "Temperature calibration failed"
-msgstr ""
-
-#: ultralcd.cpp:1846
-msgid "Temperatures"
-msgstr ""
-
-#: ultralcd.cpp:1849
-msgid "Voltages"
-msgstr ""
-
-#: ultralcd.cpp:2683
-msgid "Waiting for PINDA probe cooling"
-msgstr ""
-
-#: Marlin_main.cpp:1388
-msgid "Warning: both printer type and motherboard type changed."
-msgstr ""
-
-#: Marlin_main.cpp:1380
-msgid "Warning: motherboard type changed."
-msgstr ""
-
-#: Marlin_main.cpp:1384
-msgid "Warning: printer type changed."
-msgstr ""
-
-#: Marlin_main.cpp:946
-msgid "WARNING: This is an unofficial, unsupported build. Use at your own risk!"
-msgstr ""
-
-#: Marlin_main.cpp:6155
-msgid "Was filament unload successful?"
-msgstr ""
-
-#: 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 ""
-
-#: 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 ""
-
+# Translation of Prusa-Firmware into German.
+#
+msgid ""
+msgstr ""
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: de\n"
+"Project-Id-Version: Prusa-Firmware\n"
+"POT-Creation-Date: Sun Jun 3 19:30:54 2018\n"
+"PO-Revision-Date: Sun Jun 3 19:30:54 2018\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_EXTRUDER_CORRECTION_OFF c=6
+#: ultralcd.cpp:6312
+#, fuzzy
+msgid "  [off"
+msgstr ""
+
+# MSG_PLANNER_BUFFER_BYTES
+#: Marlin_main.cpp:1085
+msgid "  PlannerBufferBytes: "
+msgstr " PlannerBufferBytes: "
+
+# MSG_FACTOR
+#: ultralcd.cpp:6008
+msgid " \002 Fact"
+msgstr " \002 Fakt"
+
+# MSG_MAX
+#: ultralcd.cpp:6007
+msgid " \002 Max"
+msgstr " \002 Max"
+
+# MSG_MIN
+#: ultralcd.cpp:6006
+msgid " \002 Min"
+msgstr " \002 Min"
+
+# MSG_ERR_COLD_EXTRUDE_STOP
+#: planner.cpp:745
+msgid " cold extrusion prevented"
+msgstr "Stopp, Extruder kalt!"
+
+# MSG_FREE_MEMORY
+#: Marlin_main.cpp:1083
+msgid " Free Memory: "
+msgstr " Freier Speicher: "
+
+# MSG_CONFIGURATION_VER
+#: Marlin_main.cpp:1073
+msgid " Last Updated: "
+msgstr " Letztes Update:"
+
+# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
+#: messages.c:44
+msgid " of 4"
+msgstr " von 4"
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
+#: messages.c:59
+msgid " of 9"
+msgstr " von 9"
+
+# MSG_MEASURED_OFFSET
+#: ultralcd.cpp:2362
+#, fuzzy
+msgid "[0;0] point offset"
+msgstr ""
+
+# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
+#: ultralcd.cpp:3613
+#, fuzzy
+msgid "\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode"
+msgstr ""
+
+# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
+#: ultralcd.cpp:3626
+#, fuzzy
+msgid "\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode"
+msgstr ""
+
+# MSG_REFRESH
+#: 
+msgid "\xf8Refresh"
+msgstr "\xf8Erneuern"
+
+# MSG_BABYSTEPPING_Z c=20
+#: ultralcd.cpp:2487
+msgid "Adjusting Z"
+msgstr "Z wurde eingestellt"
+
+# MSG_SELFTEST_CHECK_ALLCORRECT c=20
+#: ultralcd.cpp:7235
+msgid "All correct      "
+msgstr "Alles richtig "
+
+# MSG_WIZARD_DONE c=20 r=8
+#: messages.c:103
+msgid "All is done. Happy printing!"
+msgstr "Alles wurde getan. Viel Spass beim Drucken!"
+
+# MSG_ALL c=19 r=1
+#: messages.c:11
+msgid "All"
+msgstr "Alle"
+
+# MSG_PRESS c=20
+#: ultralcd.cpp:1916
+msgid "and press the knob"
+msgstr "und Knopf druecken"
+
+# MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
+#: ultralcd.cpp:2803
+msgid "Are left and right Z~carriages all up?"
+msgstr "Ist der Schlitten ganz oben?"
+
+# MSG_ADJUSTZ
+#: ultralcd.cpp:2600
+msgid "Auto adjust Z?"
+msgstr "Auto Z einstellen?"
+
+# MSG_AUTO_HOME
+#: messages.c:12
+msgid "Auto home"
+msgstr "Startposition"
+
+# MSG_AUTOLOAD_FILAMENT c=17
+#: ultralcd.cpp:5803
+#, fuzzy
+msgid "AutoLoad filament"
+msgstr ""
+
+# MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
+#: ultralcd.cpp:3642
+#, fuzzy
+msgid "Autoloading filament available only when filament sensor is turned on..."
+msgstr ""
+
+# MSG_AUTOLOADING_ENABLED c=20 r=4
+#: ultralcd.cpp:2089
+#, fuzzy
+msgid "Autoloading filament is active, just press the knob and insert filament..."
+msgstr ""
+
+# MSG_SELFTEST_AXIS_LENGTH
+#: ultralcd.cpp:7007
+#, fuzzy
+msgid "Axis length"
+msgstr ""
+
+# MSG_SELFTEST_AXIS
+#: ultralcd.cpp:7009
+#, fuzzy
+msgid "Axis"
+msgstr ""
+
+# 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_SELFTEST_BEDHEATER
+#: ultralcd.cpp:6951
+msgid "Bed / Heater"
+msgstr "Bett / Heater"
+
+# MSG_BED_DONE
+#: messages.c:17
+msgid "Bed done"
+msgstr "Bett OK"
+
+# MSG_BED_HEATING
+#: messages.c:18
+msgid "Bed Heating"
+msgstr "Bett aufwaermen"
+
+# MSG_BED_CORRECTION_MENU
+#: ultralcd.cpp:4533
+msgid "Bed level correct"
+msgstr "Bett level Korrekt"
+
+# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
+#: messages.c:19
+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:4031
+msgid "Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset."
+msgstr "Z-Kalibrierung fehlgeschlg. Sensor nicht angeschlossen. Warte auf Reset."
+
+# MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4
+#: Marlin_main.cpp:4035
+msgid "Bed leveling failed. Sensor triggered too high. Waiting for reset."
+msgstr "Z-Kalibrierung fehlgeschlg. Sensor zu hoch ausgeloest. Warte auf Reset."
+
+# MSG_BED
+#: messages.c:16
+msgid "Bed"
+msgstr "Bett"
+
+# MSG_BEGIN_FILE_LIST
+#: Marlin_main.cpp:4405
+msgid "Begin file list"
+msgstr "Beginn Dateiliste"
+
+# MSG_MENU_BELT_STATUS c=15 r=1
+#: ultralcd.cpp:1738
+#, fuzzy
+msgid "Belt status"
+msgstr ""
+
+# MSG_RECOVER_PRINT c=20 r=2
+#: messages.c:72
+#, fuzzy
+msgid "Blackout occurred. Recover print?"
+msgstr ""
+
+# MSG_CALIBRATE_E c=20 r=1
+#: ultralcd.cpp:4526
+msgid "Calibrate E"
+msgstr "Kalibriere E"
+
+# MSG_CALIBRATE_BED
+#: ultralcd.cpp:4522
+msgid "Calibrate XYZ"
+msgstr "Kalibrierung XYZ"
+
+# MSG_HOMEYZ
+#: messages.c:52
+msgid "Calibrate Z"
+msgstr "Kalibrieren Z"
+
+# MSG_CALIBRATE_PINDA c=17 r=1
+#: ultralcd.cpp:3794
+msgid "Calibrate"
+msgstr "Kalibrieren"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
+#: ultralcd.cpp:2756
+msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "Kalibrieren von XYZ. Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Klicken Sie den Knopf wenn es ganz oben wird."
+
+# MSG_CALIBRATE_Z_AUTO
+#: messages.c:21
+msgid "Calibrating Z"
+msgstr "Kalibriere Z"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
+#: ultralcd.cpp:2756
+msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "Kalibrieren von Z. Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Klicken Sie den Knopf wenn es ganz oben wird."
+
+# MSG_HOMEYZ_DONE
+#: ultralcd_implementation_hitachi_HD44780.h:989
+msgid "Calibration done"
+msgstr "Kalibrierung OK"
+
+# MSG_MENU_CALIBRATION
+#: messages.c:60
+msgid "Calibration"
+msgstr "Kalibrierung"
+
+# MSG_SD_CANT_ENTER_SUBDIR
+#: cardreader.cpp:679
+msgid "Cannot enter subdir: "
+msgstr "Zugangsproblem Unterverzeichnis: "
+
+# MSG_SD_CANT_OPEN_SUBDIR
+#: cardreader.cpp:97
+msgid "Cannot open subdir"
+msgstr "Kann Unterverz. nicht oeffnen"
+
+# MSG_SD_INSERTED
+#: ultralcd.cpp:7550
+msgid "Card inserted"
+msgstr "SD eingesetzt"
+
+# MSG_SD_REMOVED
+#: ultralcd.cpp:7556
+msgid "Card removed"
+msgstr "SD entfernt "
+
+# MSG_NOT_COLOR
+#: ultralcd.cpp:2018
+msgid "Color not correct"
+msgstr "Farbe unklar"
+
+# MSG_COOLDOWN
+#: messages.c:24
+msgid "Cooldown"
+msgstr "Abkuehlen"
+
+# MSG_CRASHDETECT_ON
+#: messages.c:28
+#, fuzzy
+msgid "Crash det.   [on]"
+msgstr ""
+
+# MSG_CRASHDETECT_NA
+#: messages.c:26
+#, fuzzy
+msgid "Crash det.  [N/A]"
+msgstr ""
+
+# MSG_CRASHDETECT_OFF
+#: messages.c:27
+#, fuzzy
+msgid "Crash det.  [off]"
+msgstr ""
+
+# MSG_CRASH_DETECTED c=20 r=1
+#: messages.c:25
+#, fuzzy
+msgid "Crash detected."
+msgstr ""
+
+# MSG_CURRENT c=19 r=1
+#: ultralcd.cpp:4859
+msgid "Current"
+msgstr "Aktuelles"
+
+# MSG_DATE c=17 r=1
+#: ultralcd.cpp:1828
+msgid "Date:"
+msgstr "Datum"
+
+# MSG_DISABLE_STEPPERS
+#: ultralcd.cpp:4146
+msgid "Disable steppers"
+msgstr "Motoren aus"
+
+# MSG_BABYSTEP_Z_NOT_SET c=20 r=12
+#: messages.c:15
+msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
+msgstr "Der Abstand zwischen der Spitze der Duese und der Bett ist noch nicht eingestellt. Bitte folgen Sie dem Handbuch, First steps, section First layer calibration."
+
+# MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
+#: ultralcd.cpp:4071
+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:4213
+#, fuzzy
+msgid "E-correct"
+msgstr ""
+
+# 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:6975
+msgid "Endstop not hit"
+msgstr "Ende nicht getrof."
+
+# MSG_SELFTEST_ENDSTOP
+#: ultralcd.cpp:6969
+msgid "Endstop"
+msgstr "Endstop"
+
+# MSG_ENDSTOPS_HIT
+#: messages.c:31
+msgid "endstops hit: "
+msgstr "Endanschlag erreicht"
+
+# MSG_SELFTEST_ENDSTOPS
+#: ultralcd.cpp:6957
+msgid "Endstops"
+msgstr "Endschalter"
+
+# MSG_LANGUAGE_NAME
+#: language.c:153
+msgid "English"
+msgstr "Deutsch"
+
+# MSG_Enqueing
+#: 
+msgid "enqueing \x22"
+msgstr "enqueuing \x22"
+
+# MSG_STACK_ERROR c=20 r=4
+#: ultralcd.cpp:5843
+#, fuzzy
+msgid "Error - static memory has been overwritten"
+msgstr ""
+
+# MSG_SD_ERR_WRITE_TO_FILE
+#: messages.c:76
+msgid "error writing to file"
+msgstr "Fehler beim Schreiben in Datei"
+
+# MSG_FSENS_NOT_RESPONDING c=20 r=4
+#: ultralcd.cpp:3656
+#, fuzzy
+msgid "ERROR: Filament sensor is not responding, please check connection."
+msgstr ""
+
+# MSG_ERROR
+#: messages.c:34
+msgid "ERROR:"
+msgstr "FEHLER:"
+
+# MSG_EXTRUDER_1 c=17 r=1
+#: ultralcd.cpp:5417
+msgid "Extruder 1"
+msgstr "Extruder 1"
+
+# MSG_EXTRUDER_2 c=17 r=1
+#: ultralcd.cpp:5418
+msgid "Extruder 2"
+msgstr "Extruder 2"
+
+# MSG_EXTRUDER_3 c=17 r=1
+#: ultralcd.cpp:5419
+msgid "Extruder 3"
+msgstr "Extruder 3"
+
+# MSG_EXTRUDER_4 c=17 r=1
+#: ultralcd.cpp:5420
+msgid "Extruder 4"
+msgstr "Extruder 4"
+
+# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
+#: ultralcd.cpp:7244
+#, fuzzy
+msgid "Extruder fan:"
+msgstr ""
+
+# MSG_INFO_EXTRUDER c=15 r=1
+#: ultralcd.cpp:1840
+#, fuzzy
+msgid "Extruder info"
+msgstr ""
+
+# MSG_MOVE_E
+#: messages.c:35
+msgid "Extruder"
+msgstr "Extruder"
+
+# MSG_FSENS_AUTOLOAD_ON c=17 r=1
+#: ultralcd.cpp:4178
+#, fuzzy
+msgid "F. autoload  [on]"
+msgstr ""
+
+# MSG_FSENS_AUTOLOAD_NA c=17 r=1
+#: messages.c:47
+#, fuzzy
+msgid "F. autoload [N/A]"
+msgstr ""
+
+# MSG_FSENS_AUTOLOAD_OFF c=17 r=1
+#: ultralcd.cpp:4181
+#, fuzzy
+msgid "F. autoload [off]"
+msgstr ""
+
+# MSG_FAN_SPEED c=14
+#: messages.c:36
+msgid "Fan speed"
+msgstr "Luefter-Tempo"
+
+# MSG_SELFTEST_FAN c=20
+#: messages.c:82
+msgid "Fan test"
+msgstr "Lueftertest"
+
+# MSG_FANS_CHECK_ON c=17 r=1
+#: ultralcd.cpp:4189
+#, fuzzy
+msgid "Fans check   [on]"
+msgstr ""
+
+# MSG_FANS_CHECK_OFF c=17 r=1
+#: ultralcd.cpp:4192
+#, fuzzy
+msgid "Fans check  [off]"
+msgstr ""
+
+# MSG_FSENSOR_ON
+#: messages.c:49
+#, fuzzy
+msgid "Fil. sensor  [on]"
+msgstr ""
+
+# MSG_FSENSOR_NA
+#: ultralcd.cpp:4164
+#, fuzzy
+msgid "Fil. sensor [N/A]"
+msgstr ""
+
+# MSG_FSENSOR_OFF
+#: messages.c:48
+#, fuzzy
+msgid "Fil. sensor [off]"
+msgstr ""
+
+# MSG_FILAMENT_CLEAN c=20 r=2
+#: messages.c:37
+msgid "Filament extruding & with correct color?"
+msgstr "Ist Farbe rein?"
+
+# MSG_NOT_LOADED c=19
+#: ultralcd.cpp:2014
+msgid "Filament not loaded"
+msgstr "Fil. nicht geladen"
+
+# MSG_FILAMENT_SENSOR c=20
+#: ultralcd.cpp:7023
+#, fuzzy
+msgid "Filament sensor"
+msgstr ""
+
+# MSG_SELFTEST_FILAMENT_SENSOR c=18
+#: ultralcd.cpp:7253
+#, fuzzy
+msgid "Filament sensor:"
+msgstr ""
+
+# MSG_STATS_FILAMENTUSED c=20
+#: ultralcd.cpp:2142
+msgid "Filament used:  "
+msgstr "Filamentverbrauch:"
+
+# MSG_FILE_INCOMPLETE c=20 r=2
+#: ultralcd.cpp:7396
+#, fuzzy
+msgid "File incomplete. Continue anyway?"
+msgstr ""
+
+# 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:45
+msgid "Finishing movements"
+msgstr "Bewegung beenden"
+
+# MSG_V2_CALIBRATION c=17 r=1
+#: ultralcd.cpp:4513
+msgid "First layer cal."
+msgstr "Erste-Schicht Kal"
+
+# MSG_WIZARD_SELFTEST c=20 r=8
+#: ultralcd.cpp:3989
+msgid "First, I will run the selftest to check most common assembly problems."
+msgstr "Zunaechst fuehre ich den Selbsttest durch um die haeufigsten Probleme bei der Aufbau zu ueberpruefen."
+
+# MSG_FLOW
+#: ultralcd.cpp:5932
+msgid "Flow"
+msgstr "Durchfluss"
+
+# MSG_PRUSA3D_FORUM
+#: ultralcd.cpp:1821
+msgid "forum.prusa3d.com"
+msgstr "forum.prusa3d.com"
+
+# MSG_SELFTEST_COOLING_FAN c=20
+#: messages.c:79
+msgid "Front print fan?"
+msgstr "Vorderer Luefter?"
+
+# MSG_BED_CORRECTION_FRONT c=14 r=1
+#: ultralcd.cpp:2565
+msgid "Front side[um]"
+msgstr "Vorne [um]"
+
+# MSG_SELFTEST_FANS
+#: ultralcd.cpp:7015
+#, fuzzy
+msgid "Front/left fans"
+msgstr ""
+
+# MSG_SELFTEST_HEATERTHERMISTOR
+#: ultralcd.cpp:6945
+msgid "Heater/Thermistor"
+msgstr "Heater/Thermistor"
+
+# MSG_BED_HEATING_SAFETY_DISABLED
+#: Marlin_main.cpp:7232
+#, fuzzy
+msgid "Heating disabled by safety timer."
+msgstr ""
+
+# MSG_HEATING_COMPLETE c=20
+#: messages.c:51
+msgid "Heating done."
+msgstr "Aufwaermen OK"
+
+# MSG_HEATING
+#: messages.c:50
+msgid "Heating"
+msgstr "Aufwaermen"
+
+# MSG_WIZARD_WELCOME c=20 r=7
+#: ultralcd.cpp:3968
+msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
+msgstr "Hallo, ich bin dein Original Prusa i3 Drucker. Moechten Sie meine Hilfe durch den Setup-Prozess?"
+
+# MSG_PRUSA3D_HOWTO
+#: ultralcd.cpp:1822
+msgid "howto.prusa3d.com"
+msgstr "howto.prusa3d.com"
+
+# MSG_CHANGE_EXTR c=20 r=1
+#: ultralcd.cpp:5812
+msgid "Change extruder"
+msgstr "Wechsel extruder"
+
+# MSG_FILAMENTCHANGE
+#: messages.c:42
+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:1927
+msgid "Change success!"
+msgstr "Wechsel erfolgr.!"
+
+# MSG_CORRECTLY c=20
+#: ultralcd.cpp:2006
+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:85
+msgid "Checking bed     "
+msgstr "Pruefe Bett "
+
+# MSG_SELFTEST_CHECK_ENDSTOPS c=20
+#: ultralcd.cpp:7226
+msgid "Checking endstops"
+msgstr "Pruefe Endschalter "
+
+# MSG_SELFTEST_CHECK_HOTEND c=20
+#: ultralcd.cpp:7227
+msgid "Checking hotend  "
+msgstr "Pruefe Duese"
+
+# MSG_SELFTEST_CHECK_FSENSOR c=20
+#: messages.c:86
+#, fuzzy
+msgid "Checking sensors "
+msgstr ""
+
+# MSG_SELFTEST_CHECK_X c=20
+#: ultralcd.cpp:7228
+msgid "Checking X axis  "
+msgstr "Pruefe X Achse "
+
+# MSG_SELFTEST_CHECK_Y c=20
+#: ultralcd.cpp:7229
+msgid "Checking Y axis  "
+msgstr "Pruefe Y Achse "
+
+# MSG_SELFTEST_CHECK_Z c=20
+#: ultralcd.cpp:7230
+msgid "Checking Z axis  "
+msgstr "Pruefe Z Achse "
+
+# MSG_ERR_CHECKSUM_MISMATCH
+#: cmdqueue.cpp:444
+msgid "checksum mismatch, Last Line: "
+msgstr "Pruefsummenfehler, Letzte Zeile: " //Checksum Fehler, Letzte Zeile: "
+
+# MSG_CHOOSE_EXTRUDER c=20 r=1
+#: messages.c:53
+msgid "Choose extruder:"
+msgstr "Waehlen Sie Extruder"
+
+# MSG_WIZARD_XYZ_CAL c=20 r=8
+#: ultralcd.cpp:3998
+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:4004
+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:4066
+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 erste Linie drucken. Waehrend des Druckes koennen Sie die Duese allmaehlich senken indem Sie den Knopf drehen, bis Sie die optimale Hoehe erreichen. Ueberpruefen Sie die Bilder in unserem Handbuch im Kapitel Kalibrierung"
+
+# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60
+#: mesh_bed_calibration.cpp:2469
+msgid "Improving bed calibration point"
+msgstr "Verbesserung Bett Kalibrierpunkt"
+
+# MSG_WATCH
+#: messages.c:101
+msgid "Info screen"
+msgstr "Information"
+
+# MSG_INIT_SDCARD
+#: ultralcd.cpp:5785
+msgid "Init. SD card"
+msgstr "Init SD Karte"
+
+# MSG_FILAMENT_LOADING_T0 c=20 r=4
+#: messages.c:38
+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:39
+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:40
+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:41
+msgid "Insert filament into extruder 4. Click when done."
+msgstr "Filament in extruder 4 einlegen. Klicken wenn fertig."
+
+# MSG_INSERT_FILAMENT c=20
+#: ultralcd.cpp:1913
+msgid "Insert filament"
+msgstr "Filament einlegen"
+
+# MSG_WIZARD_FILAMENT_LOADED c=20 r=2
+#: ultralcd.cpp:4015
+msgid "Is filament loaded?"
+msgstr "Ist das Filament geladen?"
+
+# MSG_WIZARD_PLA_FILAMENT c=20 r=2
+#: ultralcd.cpp:4060
+msgid "Is it PLA filament?"
+msgstr "Ist es wirklich PLA Filament?"
+
+# MSG_PLA_FILAMENT_LOADED c=20 r=2
+#: ultralcd.cpp:3924
+msgid "Is PLA filament loaded?"
+msgstr "Ist PLA Filament geladen?"
+
+# MSG_STEEL_SHEET_CHECK c=20 r=2
+#: messages.c:94
+#, fuzzy
+msgid "Is steel sheet on heatbed?"
+msgstr ""
+
+# MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20
+#: mesh_bed_calibration.cpp:2211
+msgid "Iteration "
+msgstr "Iteration "
+
+# MSG_KILLED
+#: Marlin_main.cpp:7393
+msgid "KILLED. "
+msgstr "ABGEBROCHEN. "
+
+# MSG_SELFTEST_EXTRUDER_FAN c=20
+#: messages.c:80
+msgid "Left hotend fan?"
+msgstr "Linker Luefter?"
+
+# MSG_BED_CORRECTION_LEFT c=14 r=1
+#: ultralcd.cpp:2563
+msgid "Left side [um]"
+msgstr "Links [um]"
+
+# MSG_LEFT c=12 r=1
+#: ultralcd.cpp:2308
+msgid "Left:"
+msgstr "Links:"
+
+# MSG_BABYSTEP_Z
+#: messages.c:14
+msgid "Live adjust Z"
+msgstr "Z einstellen"
+
+# MSG_LOAD_ALL
+#: ultralcd.cpp:5392
+msgid "Load all"
+msgstr "Alle laden"
+
+# MSG_LOAD_FILAMENT_1 c=17
+#: ultralcd.cpp:5393
+msgid "Load filament 1"
+msgstr "Filament 1 laden"
+
+# MSG_LOAD_FILAMENT_2 c=17
+#: ultralcd.cpp:5394
+msgid "Load filament 2"
+msgstr "Filament 2 laden"
+
+# MSG_LOAD_FILAMENT_3 c=17
+#: ultralcd.cpp:5395
+msgid "Load filament 3"
+msgstr "Filament 3 laden"
+
+# MSG_LOAD_FILAMENT_4 c=17
+#: ultralcd.cpp:5396
+msgid "Load filament 4"
+msgstr "Filament 4 laden"
+
+# MSG_LOAD_FILAMENT c=17
+#: messages.c:54
+msgid "Load filament"
+msgstr "Filament laden"
+
+# MSG_LOADING_COLOR
+#: ultralcd.cpp:1939
+msgid "Loading color"
+msgstr "Lade Farbe"
+
+# MSG_LOADING_FILAMENT c=20
+#: messages.c:55
+msgid "Loading filament"
+msgstr "Filament leadt"
+
+# MSG_LOOSE_PULLEY c=20 r=1
+#: ultralcd.cpp:6999
+msgid "Loose pulley"
+msgstr "Lose Riemenscheibe"
+
+# MSG_M104_INVALID_EXTRUDER
+#: Marlin_main.cpp:7506
+msgid "M104 Invalid extruder "
+msgstr "M104 Falscher Extruder"
+
+# MSG_M105_INVALID_EXTRUDER
+#: Marlin_main.cpp:7509
+msgid "M105 Invalid extruder "
+msgstr "M105 Falscher Extruder"
+
+# MSG_M109_INVALID_EXTRUDER
+#: Marlin_main.cpp:7512
+msgid "M109 Invalid extruder "
+msgstr "M109 Falscher Extruder"
+
+# MSG_M117_V2_CALIBRATION c=25 r=1
+#: messages.c:56
+msgid "M117 First layer cal."
+msgstr "M117 Erste-Schicht Kal."
+
+# MSG_M200_INVALID_EXTRUDER
+#: Marlin_main.cpp:5378
+msgid "M200 Invalid extruder "
+msgstr "M200 Falscher Extruder"
+
+# MSG_M218_INVALID_EXTRUDER
+#: Marlin_main.cpp:7515
+msgid "M218 Invalid extruder "
+msgstr "M218 Falscher Extruder"
+
+# MSG_M221_INVALID_EXTRUDER
+#: Marlin_main.cpp:7518
+msgid "M221 Invalid extruder "
+msgstr "M221 Falscher Extruder"
+
+# MSG_MAIN
+#: messages.c:57
+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."
+
+# 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:58
+msgid "Measuring reference height of calibration point"
+msgstr "Messen der Referenzhoehe des Kalibrierpunktes"
+
+# MSG_MESH_BED_LEVELING
+#: ultralcd.cpp:4528
+msgid "Mesh Bed Leveling"
+msgstr "Mesh Bett Leveling"
+
+# MSG_STEALTH_MODE_OFF
+#: messages.c:92
+#, fuzzy
+msgid "Mode     [Normal]"
+msgstr ""
+
+# MSG_SILENT_MODE_ON
+#: messages.c:91
+msgid "Mode     [silent]"
+msgstr "Mode [leise]"
+
+# MSG_STEALTH_MODE_ON
+#: messages.c:93
+#, fuzzy
+msgid "Mode    [Stealth]"
+msgstr ""
+
+# MSG_AUTO_MODE_ON
+#: messages.c:13
+#, fuzzy
+msgid "Mode [auto power]"
+msgstr ""
+
+# MSG_SILENT_MODE_OFF
+#: messages.c:90
+msgid "Mode [high power]"
+msgstr "Mode [Hohe Leist]"
+
+# MSG_SELFTEST_MOTOR
+#: messages.c:87
+msgid "Motor"
+msgstr "Motor"
+
+# MSG_MOVE_AXIS
+#: ultralcd.cpp:4142
+msgid "Move axis"
+msgstr "Achsbewegung"
+
+# MSG_MOVE_X
+#: ultralcd.cpp:3557
+msgid "Move X"
+msgstr "Bewege X"
+
+# MSG_MOVE_Y
+#: ultralcd.cpp:3558
+msgid "Move Y"
+msgstr "Bewege Y"
+
+# MSG_MOVE_Z
+#: ultralcd.cpp:3559
+msgid "Move Z"
+msgstr "Bewege Z"
+
+# MSG_NEW_FIRMWARE_AVAILABLE c=20 r=2
+#: util.cpp:292
+msgid "New firmware version available:"
+msgstr "Neue Firmware Version verfuegbar:"
+
+# MSG_ERR_NO_CHECKSUM
+#: cmdqueue.cpp:456
+msgid "No Checksum with line number, Last Line: "
+msgstr "Keine Pruefsumme mit Zeilennummer, Letzte Zeile: " //Keine Checksum mit Zeilennummer, Letzte Zeile: "
+
+# MSG_NO_MOVE
+#: Marlin_main.cpp:4394
+msgid "No move."
+msgstr "Keine Bewegung."
+
+# MSG_NO_CARD
+#: ultralcd.cpp:5783
+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"
+
+# MSG_NO
+#: messages.c:61
+msgid "No"
+msgstr "Nein"
+
+# MSG_SELFTEST_NOTCONNECTED
+#: ultralcd.cpp:6947
+msgid "Not connected"
+msgstr "Nicht angeschlossen"
+
+# MSG_SELFTEST_FAN_NO c=19
+#: messages.c:83
+msgid "Not spinning"
+msgstr "Dreht nicht"
+
+# MSG_WIZARD_V2_CAL c=20 r=8
+#: ultralcd.cpp:4065
+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:4022
+msgid "Now I will preheat nozzle for PLA."
+msgstr "Jetzt werde ich die Duese fuer PLA vorheizen. "
+
+# MSG_INFO_NOZZLE_FAN c=11 r=1
+#: ultralcd.cpp:1537
+#, fuzzy
+msgid "Nozzle FAN:"
+msgstr ""
+
+# MSG_NOZZLE
+#: messages.c:62
+msgid "Nozzle"
+msgstr "Duese"
+
+# MSG_NOZZLE1
+#: ultralcd.cpp:5995
+msgid "Nozzle2"
+msgstr "Duese2"
+
+# MSG_NOZZLE2
+#: ultralcd.cpp:5998
+msgid "Nozzle3"
+msgstr "Duese3"
+
+# MSG_OK
+#: messages.c:63
+msgid "ok"
+msgstr "ok"
+
+# MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
+#: Marlin_main.cpp:1382
+#, fuzzy
+msgid "Old settings found. Default PID, Esteps etc. will be set."
+msgstr ""
+
+# MSG_SD_OPEN_FILE_FAIL
+#: cardreader.cpp:461
+msgid "open failed, File: "
+msgstr "Fehler beim Oeffnen der Datei: "
+
+# MSG_ENDSTOP_OPEN
+#: messages.c:30
+msgid "open"
+msgstr "offen"
+
+# MSG_SD_OPENROOT_FAIL
+#: cardreader.cpp:196
+msgid "openRoot failed"
+msgstr "Zugriff auf Basisverzeichnis misslungen"
+
+# MSG_PAUSE_PRINT
+#: ultralcd.cpp:5757
+msgid "Pause print"
+msgstr "Druck unterbrech."
+
+# MSG_PICK_Z
+#: ultralcd.cpp:3463
+msgid "Pick print"
+msgstr "Waehle Abdruck"
+
+# MSG_PID_RUNNING c=20 r=1
+#: ultralcd.cpp:1366
+msgid "PID cal.           "
+msgstr "PID Kalib."
+
+# MSG_PID_FINISHED c=20 r=1
+#: ultralcd.cpp:1372
+msgid "PID cal. finished"
+msgstr "PID Kalib. fertig"
+
+# MSG_PID_EXTRUDER c=17 r=1
+#: ultralcd.cpp:4534
+msgid "PID calibration"
+msgstr "PID Kalibrierung"
+
+# MSG_PINDA_PREHEAT c=20 r=1
+#: ultralcd_implementation_hitachi_HD44780.h:1023
+msgid "PINDA Heating"
+msgstr "PINDA erwaermen"
+
+# MSG_PAPER c=20 r=8
+#: 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 ein Blatt Papier unter die Duese waehrend der Kalibrierung der ersten 4 Punkte. Wenn die Duese das Papier einklemmt, Drucker sofort ausschalten"
+
+# MSG_WIZARD_CLEAN_HEATBED c=20 r=8
+#: ultralcd.cpp:4073
+msgid "Please clean heatbed and then press the knob."
+msgstr "Bitte reinigen Sie das Heizbett und druecken Sie dann den Knopf."
+
+# MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
+#: messages.c:23
+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:6939
+msgid "Please check :"
+msgstr "Bitte pruefe:"
+
+# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
+#: messages.c:102
+msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
+msgstr "Bitte ueberpruefen 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:4046
+msgid "Please insert PLA filament to the extruder, then press knob to load it."
+msgstr "Fuehren Sie bitte PLA Filament in den Extruder und bestaetigen 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 laden Sie PLA-Filament und fahren Sie mit dem Assistenten fort, indem Sie den Drucker neu starten."
+
+# MSG_PLEASE_LOAD_PLA c=20 r=4
+#: ultralcd.cpp:3929
+msgid "Please load PLA filament first."
+msgstr "Bitte laden Sie zuerst PLA Filament."
+
+# MSG_CHECK_IDLER c=20 r=4
+#: Marlin_main.cpp:6166
+#, fuzzy
+msgid "Please open idler and remove filament manually."
+msgstr ""
+
+# MSG_PLACE_STEEL_SHEET c=20 r=4
+#: messages.c:65
+#, fuzzy
+msgid "Please place steel sheet on heatbed."
+msgstr ""
+
+# MSG_PRESS_TO_UNLOAD c=20 r=4
+#: messages.c:69
+#, fuzzy
+msgid "Please press the knob to unload filament"
+msgstr ""
+
+# MSG_PULL_OUT_FILAMENT c=20 r=4
+#: messages.c:71
+#, fuzzy
+msgid "Please pull out filament immediately"
+msgstr ""
+
+# MSG_REMOVE_STEEL_SHEET c=20 r=4
+#: messages.c:75
+#, fuzzy
+msgid "Please remove steel sheet from heatbed."
+msgstr ""
+
+# MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20
+#: util.cpp:296
+msgid "Please upgrade."
+msgstr "Bitte aktualisieren."
+
+# MSG_PLEASE_WAIT c=20
+#: messages.c:66
+msgid "Please wait"
+msgstr "Bitte warten"
+
+# MSG_POWERUP
+#: messages.c:67
+msgid "PowerUp"
+msgstr "Einschalten"
+
+# MSG_PREHEAT_NOZZLE c=20
+#: messages.c:68
+msgid "Preheat the nozzle!"
+msgstr "Duese Vorwaermen"
+
+# MSG_PREHEAT
+#: ultralcd.cpp:5746
+msgid "Preheat"
+msgstr "Vorwaermen"
+
+# MSG_WIZARD_HEATING c=20 r=3
+#: messages.c:104
+msgid "Preheating nozzle. Please wait."
+msgstr "Vorheizen der Duese. Bitte warten."
+
+# MSG_PREPARE_FILAMENT c=20 r=1
+#: ultralcd.cpp:1911
+msgid "Prepare new filament"
+msgstr "Filam. bereithalten"
+
+# MSG_PRESS_TO_PREHEAT c=20 r=4
+#: Marlin_main.cpp:6025
+#, fuzzy
+msgid "Press knob to preheat nozzle and continue."
+msgstr ""
+
+# MSG_PRINT_ABORTED c=20
+#: messages.c:70
+msgid "Print aborted"
+msgstr "Druck abgebrochen"
+
+# MSG_INFO_PRINT_FAN c=11 r=1
+#: ultralcd.cpp:1549
+#, fuzzy
+msgid "Print FAN: "
+msgstr ""
+
+# MSG_SELFTEST_PRINT_FAN_SPEED c=18
+#: ultralcd.cpp:7247
+#, fuzzy
+msgid "Print fan:"
+msgstr ""
+
+# MSG_CARD_MENU
+#: messages.c:22
+msgid "Print from SD"
+msgstr "Drucken von SD"
+
+# MSG_PRINT_PAUSED c=20 r=1
+#: ultralcd.cpp:642
+msgid "Print paused"
+msgstr "Druck pausiert"
+
+# MSG_STATS_PRINTTIME c=20
+#: ultralcd.cpp:2151
+msgid "Print time:  "
+msgstr "Druckzeit: "
+
+# MSG_PRINTER_DISCONNECTED c=20 r=1
+#: ultralcd.cpp:607
+#, fuzzy
+msgid "Printer disconnected"
+msgstr ""
+
+# MSG_ERR_KILLED
+#: Marlin_main.cpp:7388
+msgid "Printer halted. kill() called!"
+msgstr "Printer gestoppt. kill() aufgerufen!"
+
+# MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
+#: messages.c:46
+msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
+msgstr "Der Drucker wurde noch nicht kalibriert. Bitte folgen Sie das Handbuch, Kapitel First steps, Abschnitt Calibration flow."
+
+# MSG_ERR_STOPPED
+#: messages.c:33
+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!)"
+
+# WELCOME_MSG c=20
+#: 
+msgid "Prusa i3 MK3 ready."
+msgstr "Prusa i3 MK3 bereit."
+
+# MSG_PRUSA3D
+#: ultralcd.cpp:1820
+msgid "prusa3d.com"
+msgstr "prusa3d.com"
+
+# MSG_BED_CORRECTION_REAR c=14 r=1
+#: ultralcd.cpp:2566
+msgid "Rear side [um]"
+msgstr "Hinten [um]"
+
+# MSG_RECOVERING_PRINT c=20 r=1
+#: Marlin_main.cpp:8289
+#, fuzzy
+msgid "Recovering print    "
+msgstr ""
+
+# MSG_M119_REPORT
+#: Marlin_main.cpp:5297
+msgid "Reporting endstop status"
+msgstr "Statusbericht Endanschlag"
+
+# MSG_RESEND
+#: Marlin_main.cpp:6911
+msgid "Resend: "
+msgstr "Wiederholen: "
+
+# MSG_CALIBRATE_BED_RESET
+#: ultralcd.cpp:4539
+msgid "Reset XYZ calibr."
+msgstr "Reset XYZ Kalibr."
+
+# MSG_BED_CORRECTION_RESET
+#: ultralcd.cpp:2567
+msgid "Reset"
+msgstr "Ruecksetzen"
+
+# MSG_RESUME_PRINT
+#: ultralcd.cpp:5761
+msgid "Resume print"
+msgstr "Fortsetzen"
+
+# MSG_RESUMING_PRINT
+#: messages.c:74
+msgid "Resuming print"
+msgstr "Druck fortgesetzt"
+
+# MSG_BED_CORRECTION_RIGHT c=14 r=1
+#: ultralcd.cpp:2564
+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 Filamentmarkierung erreicht ist. Klicken wenn fertig."
+
+# MSG_SECOND_SERIAL_ON c=17 r=1
+#: ultralcd.cpp:4227
+#, fuzzy
+msgid "RPi port     [on]"
+msgstr ""
+
+# MSG_SECOND_SERIAL_OFF c=17 r=1
+#: ultralcd.cpp:4224
+#, fuzzy
+msgid "RPi port    [off]"
+msgstr ""
+
+# MSG_WIZARD_RERUN c=20 r=7
+#: ultralcd.cpp:3947
+msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
+msgstr "Der laufende Assistent loescht die aktuelle Kalibrierergebnisse und wird von Anfang an beginnen. Fortsetzen?"
+
+# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
+#: ultralcd.cpp:4240
+msgid "SD card  [normal]"
+msgstr "SD Karte [normal]"
+
+# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
+#: ultralcd.cpp:4238
+msgid "SD card [FlshAir]"
+msgstr "SD Karte [FlashAir]"
+
+# MSG_SD_CARD_OK
+#: cardreader.cpp:202
+msgid "SD card ok"
+msgstr "SD Karte ok"
+
+# 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 printing byte "
+
+# MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
+#: messages.c:43
+msgid "Searching bed calibration point"
+msgstr "Suchen Bett Kalibrierpunkt"
+
+# MSG_LANGUAGE_SELECT
+#: ultralcd.cpp:4235
+msgid "Select language"
+msgstr "Waehle Sprache"
+
+# MSG_SELFTEST_OK
+#: ultralcd.cpp:6505
+msgid "Self test OK"
+msgstr "Selbsttest OK"
+
+# MSG_SELFTEST_START c=20
+#: ultralcd.cpp:6342
+msgid "Self test start  "
+msgstr "Selbsttest start "
+
+# MSG_SELFTEST
+#: ultralcd.cpp:4515
+msgid "Selftest         "
+msgstr "Selbsttest "
+
+# MSG_SELFTEST_ERROR
+#: ultralcd.cpp:6937
+msgid "Selftest error !"
+msgstr "Selbtest Fehler!"
+
+# MSG_SELFTEST_FAILED c=20
+#: messages.c:81
+msgid "Selftest failed  "
+msgstr "Selbsttest misslung."
+
+# MSG_FORCE_SELFTEST c=20 r=8
+#: Marlin_main.cpp:1414
+#, fuzzy
+msgid "Selftest will be run to calibrate accurate sensorless rehoming."
+msgstr ""
+
+# MSG_SET_TEMPERATURE c=19 r=1
+#: ultralcd.cpp:2575
+msgid "Set temperature:"
+msgstr "Temp. einsetzen"
+
+# MSG_SETTINGS
+#: messages.c:89
+msgid "Settings"
+msgstr "Einstellungen"
+
+# MSG_SEVERE_SKEW c=15 r=1
+#: ultralcd.cpp:2346
+msgid "Severe skew:"
+msgstr "Schwerer Schr.:"
+
+# MSG_SHOW_END_STOPS c=17 r=1
+#: ultralcd.cpp:4536
+msgid "Show end stops"
+msgstr "Endschalter Stat."
+
+# MSG_DWELL
+#: Marlin_main.cpp:3281
+msgid "Sleep..."
+msgstr "Einen Moment bitte."
+
+# MSG_SLIGHT_SKEW c=15 r=1
+#: ultralcd.cpp:2342
+msgid "Slight skew:"
+msgstr "Leichter Schr.:"
+
+# MSG_FILE_CNT c=20 r=4
+#: cardreader.cpp:754
+#, fuzzy
+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:4250
+#, fuzzy
+msgid "Sort:      [None]"
+msgstr ""
+
+# MSG_SORT_TIME c=17 r=1
+#: ultralcd.cpp:4248
+#, fuzzy
+msgid "Sort:      [Time]"
+msgstr ""
+
+# MSG_SORT_ALPHA c=17 r=1
+#: ultralcd.cpp:4249
+#, fuzzy
+msgid "Sort:  [Alphabet]"
+msgstr ""
+
+# MSG_SORTING c=20 r=1
+#: cardreader.cpp:761
+#, fuzzy
+msgid "Sorting files"
+msgstr ""
+
+# MSG_SPEED
+#: ultralcd.cpp:5926
+msgid "Speed"
+msgstr "Geschwindigkeit"
+
+# MSG_SELFTEST_FAN_YES c=19
+#: messages.c:84
+msgid "Spinning"
+msgstr "Dreht"
+
+# MSG_TEMP_CAL_WARNING c=20 r=4
+#: Marlin_main.cpp:3551
+#, fuzzy
+msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
+msgstr ""
+
+# MSG_STATISTICS
+#: ultralcd.cpp:5824
+msgid "Statistics  "
+msgstr "Statistiken "
+
+# MSG_STEPPER_TOO_HIGH
+#: stepper.cpp:345
+msgid "Steprate too high: "
+msgstr "Schrittrate zu hoch"
+
+# MSG_STOP_PRINT
+#: messages.c:95
+msgid "Stop print"
+msgstr "Druck abbrechen"
+
+# MSG_STOPPED
+#: messages.c:96
+msgid "STOPPED. "
+msgstr "GESTOPPT. "
+
+# MSG_SUPPORT
+#: ultralcd.cpp:5831
+msgid "Support"
+msgstr "Support"
+
+# MSG_SELFTEST_SWAPPED
+#: ultralcd.cpp:7017
+#, fuzzy
+msgid "Swapped"
+msgstr ""
+
+# MSG_TEMP_CALIBRATION c=20 r=1
+#: messages.c:97
+msgid "Temp. cal.          "
+msgstr "Temp Kalib. "
+
+# MSG_TEMP_CALIBRATION_ON c=20 r=1
+#: ultralcd.cpp:4220
+msgid "Temp. cal.   [on]"
+msgstr "Temp. Kal. [ON]"
+
+# MSG_TEMP_CALIBRATION_OFF c=20 r=1
+#: ultralcd.cpp:4217
+msgid "Temp. cal.  [off]"
+msgstr "Temp. Kal. [OFF]"
+
+# MSG_CALIBRATION_PINDA_MENU c=17 r=1
+#: ultralcd.cpp:4545
+msgid "Temp. calibration"
+msgstr "Temp. kalibrieren"
+
+# MSG_TEMP_CAL_FAILED c=20 r=8
+#: ultralcd.cpp:3189
+#, fuzzy
+msgid "Temperature calibration failed"
+msgstr ""
+
+# MSG_PINDA_NOT_CALIBRATED c=20 r=4
+#: Marlin_main.cpp:1403
+msgid "Temperature calibration has not been run yet"
+msgstr "Temperatur wurde nicht kalibriert"
+
+# MSG_TEMP_CALIBRATION_DONE c=20 r=12
+#: messages.c:98
+msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
+msgstr "Temp. Kalibrierung fertig. Klicken um weiter zu gehen."
+
+# MSG_TEMPERATURE
+#: ultralcd.cpp:4139
+msgid "Temperature"
+msgstr "Temperatur"
+
+# MSG_MENU_TEMPERATURES c=15 r=1
+#: ultralcd.cpp:1846
+#, fuzzy
+msgid "Temperatures"
+msgstr ""
+
+# MSG_STATS_TOTALFILAMENT c=20
+#: ultralcd.cpp:2186
+msgid "Total filament :"
+msgstr "Gesamtfilament:"
+
+# MSG_STATS_TOTALPRINTTIME c=20
+#: ultralcd.cpp:2203
+msgid "Total print time :"
+msgstr "Totale Druckzeit:"
+
+# MSG_ENDSTOP_HIT
+#: messages.c:29
+msgid "TRIGGERED"
+msgstr "AUSGELOEST"
+
+# MSG_TUNE
+#: ultralcd.cpp:5743
+msgid "Tune"
+msgstr "Feineinstellung"
+
+# MSG_UNLOAD_ALL
+#: ultralcd.cpp:5405
+msgid "Unload all"
+msgstr "Alles 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_UNLOAD_FILAMENT c=17
+#: messages.c:99
+msgid "Unload filament"
+msgstr "Filament entladen"
+
+# MSG_UNLOADING_FILAMENT c=20 r=1
+#: messages.c:100
+msgid "Unloading filament"
+msgstr "Filament auswerfen"
+
+# MSG_USED c=19 r=1
+#: ultralcd.cpp:4858
+msgid "Used during print"
+msgstr "Beim Druck benutzte"
+
+# MSG_MENU_VOLTAGES c=15 r=1
+#: ultralcd.cpp:1849
+#, fuzzy
+msgid "Voltages"
+msgstr ""
+
+# MSG_SD_VOL_INIT_FAIL
+#: cardreader.cpp:191
+msgid "volume.init failed"
+msgstr "Dateisystem Init fehlerhaft"
+
+# MSG_USERWAIT
+#: Marlin_main.cpp:4359
+msgid "Wait for user..."
+msgstr "Warte auf user..."
+
+# MSG_WAITING_TEMP c=20 r=3
+#: ultralcd.cpp:2719
+msgid "Waiting for nozzle and bed cooling"
+msgstr "Warten auf Abkuehlung von Heater und Bett."
+
+# MSG_WAITING_TEMP_PINDA c=20 r=3
+#: ultralcd.cpp:2683
+#, fuzzy
+msgid "Waiting for PINDA probe cooling"
+msgstr ""
+
+# MSG_CHANGED_BOTH c=20 r=4
+#: Marlin_main.cpp:1374
+#, fuzzy
+msgid "Warning: both printer type and motherboard type changed."
+msgstr ""
+
+# MSG_CHANGED_MOTHERBOARD c=20 r=4
+#: Marlin_main.cpp:1366
+#, fuzzy
+msgid "Warning: motherboard type changed."
+msgstr ""
+
+# MSG_CHANGED_PRINTER c=20 r=4
+#: Marlin_main.cpp:1370
+#, fuzzy
+msgid "Warning: printer type changed."
+msgstr ""
+
+# MSG_FW_VERSION_UNKNOWN c=20 r=8
+#: Marlin_main.cpp:946
+#, fuzzy
+msgid "WARNING: This is an unofficial, unsupported build. Use at your own risk!"
+msgstr ""
+
+# MSG_UNLOAD_SUCCESSFUL c=20 r=2
+#: Marlin_main.cpp:6165
+#, fuzzy
+msgid "Was filament unload successful?"
+msgstr ""
+
+# MSG_SELFTEST_WIRINGERROR
+#: messages.c:88
+msgid "Wiring error"
+msgstr "Verdrahtungfehler"
+
+# MSG_WIZARD c=17 r=1
+#: ultralcd.cpp:4512
+msgid "Wizard"
+msgstr "Wizard"
+
+# MSG_SD_WORKDIR_FAIL
+#: messages.c:78
+msgid "workDir open failed"
+msgstr "Oeffnen Arbeitsverzeichnis misslungen"
+
+# MSG_SD_WRITE_TO_FILE
+#: cardreader.cpp:424
+msgid "Writing to file: "
+msgstr "Schreiben der Datei: "
+
+# MSG_XYZ_DETAILS c=19 r=1
+#: ultralcd.cpp:1839
+msgid "XYZ cal. details"
+msgstr "XYZ Kal. Details"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
+#: ultralcd.cpp:3159
+msgid "XYZ calibration all right. Skew will be corrected automatically."
+msgstr "XYZ Kalibrierung in Ordnung. Schiefheit wird automatisch korrigiert."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
+#: ultralcd.cpp:3156
+msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
+msgstr "XYZ Kalibrierung in Ordnung. X/Y Achsen sind etwas schief."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
+#: ultralcd.cpp:3137
+msgid "XYZ calibration compromised. Front calibration points not reachable."
+msgstr "XYZ-Kalibrierung ungenau. Vordere Kalibrierpunkte sind zu weit vorne."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8
+#: ultralcd.cpp:3143
+msgid "XYZ calibration compromised. Left front calibration point not reachable."
+msgstr "XYZ-Kalibrierung ungenau. Linker vorderer Kalibrierpunkt ist zu weit vorne."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
+#: ultralcd.cpp:3140
+msgid "XYZ calibration compromised. Right front calibration point not reachable."
+msgstr "XYZ-Kalibrierung ungenau. Rechter vorderer Kalibrierpunkt ist zu weit vorne."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=8
+#: ultralcd.cpp:3119
+msgid "XYZ calibration failed. Bed calibration point was not found."
+msgstr "XYZ-Kalibrierung fehlgeschlagen. Bett-Kalibrierpunkt nicht gefunden."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=8
+#: ultralcd.cpp:3125
+msgid "XYZ calibration failed. Front calibration points not reachable."
+msgstr "XYZ-Kalibrierung fehlgeschlagen. Vordere Kalibrierpunkte sind zu weit vorne."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8
+#: ultralcd.cpp:3131
+msgid "XYZ calibration failed. Left front calibration point not reachable."
+msgstr "XYZ-Kalibrierung fehlgeschlagen. Linker vorderer Kalibrierpunkt ist zu weit vorne."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
+#: messages.c:20
+msgid "XYZ calibration failed. Please consult the manual."
+msgstr "XYZ-Kalibrierung fehlgeschlagen. Bitte schauen Sie in das Handbuch."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=8
+#: ultralcd.cpp:3128
+msgid "XYZ calibration failed. Right front calibration point not reachable."
+msgstr "XYZ-Kalibrierung fehlgeschlagen. Rechter vorderer Kalibrierpunkt ist zu weit vorne."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
+#: ultralcd.cpp:3153
+msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
+msgstr "XYZ-Kalibrierung ok. X/Y-Achsen sind senkrecht zueinander. Glueckwunsch!"
+
+# MSG_Y_DISTANCE_FROM_MIN c=20 r=1
+#: ultralcd.cpp:2306
+msgid "Y distance from min:"
+msgstr "Y Entfernung vom min"
+
+# MSG_YES
+#: messages.c:106
+msgid "Yes"
+msgstr "Ja"
+
+# MSG_FW_VERSION_ALPHA c=20 r=8
+#: Marlin_main.cpp:930
+#, fuzzy
+msgid "You are using firmware alpha version. This is development version. Using this version is not recommended and may cause printer damage."
+msgstr ""
+
+# MSG_FW_VERSION_BETA c=20 r=8
+#: Marlin_main.cpp:931
+#, fuzzy
+msgid "You are using firmware beta version. This is development version. Using this version is not recommended and may cause printer damage."
+msgstr ""
+
+# MSG_WIZARD_QUIT c=20 r=8
+#: messages.c:105
+msgid "You can always resume the Wizard from Calibration -> Wizard."
+msgstr "Sie koennen immer den Asistenten im Menu neu aufrufen: Kalibrierung -> Assistant"
+

+ 1796 - 324
lang/po/lang_es.po

@@ -1,324 +1,1796 @@
-# Translation into Spanish.
-#
-msgid ""
-msgstr ""
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ultralcd.cpp:6304
-msgid "  [off"
-msgstr ""
-
-#: ultralcd.cpp:2362
-msgid "[0;0] point offset"
-msgstr ""
-
-#: ultralcd.cpp:3613
-msgid "\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode"
-msgstr ""
-
-#: ultralcd.cpp:3626
-msgid "\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode"
-msgstr ""
-
-#: ultralcd.cpp:5796
-msgid "AutoLoad filament"
-msgstr ""
-
-#: ultralcd.cpp:3642
-msgid "Autoloading filament available only when filament sensor is turned on..."
-msgstr ""
-
-#: ultralcd.cpp:2089
-msgid "Autoloading filament is active, just press the knob and insert filament..."
-msgstr ""
-
-#: ultralcd.cpp:6999
-msgid "Axis length"
-msgstr ""
-
-#: ultralcd.cpp:7001
-msgid "Axis"
-msgstr ""
-
-#: ultralcd.cpp:1738
-msgid "Belt status"
-msgstr ""
-
-#: messages.c:72
-msgid "Blackout occurred. Recover print?"
-msgstr ""
-
-#: messages.c:28
-msgid "Crash det.   [on]"
-msgstr ""
-
-#: messages.c:26
-msgid "Crash det.  [N/A]"
-msgstr ""
-
-#: messages.c:27
-msgid "Crash det.  [off]"
-msgstr ""
-
-#: messages.c:25
-msgid "Crash detected."
-msgstr ""
-
-#: ultralcd.cpp:1828
-msgid "Date:"
-msgstr ""
-
-#: ultralcd.cpp:4213
-msgid "E-correct"
-msgstr ""
-
-#: ultralcd.cpp:5835
-msgid "Error - static memory has been overwritten"
-msgstr ""
-
-#: ultralcd.cpp:3656
-msgid "ERROR: Filament sensor is not responding, please check connection."
-msgstr ""
-
-#: ultralcd.cpp:7236
-msgid "Extruder fan:"
-msgstr ""
-
-#: ultralcd.cpp:1840
-msgid "Extruder info"
-msgstr ""
-
-#: ultralcd.cpp:4178
-msgid "F. autoload  [on]"
-msgstr ""
-
-#: messages.c:47
-msgid "F. autoload [N/A]"
-msgstr ""
-
-#: ultralcd.cpp:4181
-msgid "F. autoload [off]"
-msgstr ""
-
-#: ultralcd.cpp:4189
-msgid "Fans check   [on]"
-msgstr ""
-
-#: ultralcd.cpp:4192
-msgid "Fans check  [off]"
-msgstr ""
-
-#: messages.c:49
-msgid "Fil. sensor  [on]"
-msgstr ""
-
-#: ultralcd.cpp:4164
-msgid "Fil. sensor [N/A]"
-msgstr ""
-
-#: messages.c:48
-msgid "Fil. sensor [off]"
-msgstr ""
-
-#: ultralcd.cpp:7015
-msgid "Filament sensor"
-msgstr ""
-
-#: ultralcd.cpp:7245
-msgid "Filament sensor:"
-msgstr ""
-
-#: ultralcd.cpp:7388
-msgid "File incomplete. Continue anyway?"
-msgstr ""
-
-#: ultralcd.cpp:7007
-msgid "Front/left fans"
-msgstr ""
-
-#: Marlin_main.cpp:7190
-msgid "Heating disabled by safety timer."
-msgstr ""
-
-#: messages.c:85
-msgid "Checking sensors "
-msgstr ""
-
-#: messages.c:93
-msgid "Is steel sheet on heatbed?"
-msgstr ""
-
-#: ultralcd.cpp:2308
-msgid "Left:"
-msgstr ""
-
-#: ultralcd.cpp:2335
-msgid "Measured skew:"
-msgstr ""
-
-#: messages.c:91
-msgid "Mode     [Normal]"
-msgstr ""
-
-#: messages.c:92
-msgid "Mode    [Stealth]"
-msgstr ""
-
-#: messages.c:13
-msgid "Mode [auto power]"
-msgstr ""
-
-#: ultralcd.cpp:1537
-msgid "Nozzle FAN:"
-msgstr ""
-
-#: Marlin_main.cpp:1364
-msgid "Old settings found. Default PID, Esteps etc. will be set."
-msgstr ""
-
-#: Marlin_main.cpp:6124
-msgid "Please open idler and remove filament manually."
-msgstr ""
-
-#: messages.c:65
-msgid "Please place steel sheet on heatbed."
-msgstr ""
-
-#: messages.c:69
-msgid "Please press the knob to unload filament"
-msgstr ""
-
-#: messages.c:71
-msgid "Please pull out filament immediately"
-msgstr ""
-
-#: messages.c:74
-msgid "Please remove steel sheet from heatbed."
-msgstr ""
-
-#: Marlin_main.cpp:5983
-msgid "Press knob to preheat nozzle and continue."
-msgstr ""
-
-#: ultralcd.cpp:1549
-msgid "Print FAN: "
-msgstr ""
-
-#: ultralcd.cpp:7239
-msgid "Print fan:"
-msgstr ""
-
-#: ultralcd.cpp:607
-msgid "Printer disconnected"
-msgstr ""
-
-#: Marlin_main.cpp:8247
-msgid "Recovering print    "
-msgstr ""
-
-#: ultralcd.cpp:2309
-msgid "Right:"
-msgstr ""
-
-#: ultralcd.cpp:4227
-msgid "RPi port     [on]"
-msgstr ""
-
-#: ultralcd.cpp:4224
-msgid "RPi port    [off]"
-msgstr ""
-
-#: Marlin_main.cpp:1396
-msgid "Selftest will be run to calibrate accurate sensorless rehoming."
-msgstr ""
-
-#: ultralcd.cpp:2346
-msgid "Severe skew:"
-msgstr ""
-
-#: ultralcd.cpp:2342
-msgid "Slight skew:"
-msgstr ""
-
-#: cardreader.cpp:754
-msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
-msgstr ""
-
-#: ultralcd.cpp:4250
-msgid "Sort:      [None]"
-msgstr ""
-
-#: ultralcd.cpp:4248
-msgid "Sort:      [Time]"
-msgstr ""
-
-#: ultralcd.cpp:4249
-msgid "Sort:  [Alphabet]"
-msgstr ""
-
-#: cardreader.cpp:761
-msgid "Sorting files"
-msgstr ""
-
-#: Marlin_main.cpp:3504
-msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
-msgstr ""
-
-#: ultralcd.cpp:7009
-msgid "Swapped"
-msgstr ""
-
-#: ultralcd.cpp:3189
-msgid "Temperature calibration failed"
-msgstr ""
-
-#: ultralcd.cpp:1846
-msgid "Temperatures"
-msgstr ""
-
-#: ultralcd.cpp:1849
-msgid "Voltages"
-msgstr ""
-
-#: ultralcd.cpp:2683
-msgid "Waiting for PINDA probe cooling"
-msgstr ""
-
-#: Marlin_main.cpp:1356
-msgid "Warning: both printer type and motherboard type changed."
-msgstr ""
-
-#: Marlin_main.cpp:1348
-msgid "Warning: motherboard type changed."
-msgstr ""
-
-#: Marlin_main.cpp:1352
-msgid "Warning: printer type changed."
-msgstr ""
-
-#: Marlin_main.cpp:946
-msgid "WARNING: This is an unofficial, unsupported build. Use at your own risk!"
-msgstr ""
-
-#: Marlin_main.cpp:6123
-msgid "Was filament unload successful?"
-msgstr ""
-
-#: ultralcd.cpp:1839
-msgid "XYZ cal. details"
-msgstr ""
-
-#: ultralcd.cpp:2306
-msgid "Y distance from min:"
-msgstr ""
-
-#: 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 ""
-
-#: 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 ""
-
+# Translation of Prusa-Firmware into Spanish.
+#
+msgid ""
+msgstr ""
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: es\n"
+"Project-Id-Version: Prusa-Firmware\n"
+"POT-Creation-Date: Sun Jun 3 19:32:27 2018\n"
+"PO-Revision-Date: Sun Jun 3 19:32:27 2018\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_EXTRUDER_CORRECTION_OFF c=6
+#: ultralcd.cpp:6312
+#, fuzzy
+msgid "  [off"
+msgstr ""
+
+# MSG_PLANNER_BUFFER_BYTES
+#: Marlin_main.cpp:1085
+msgid "  PlannerBufferBytes: "
+msgstr " PlannerBufferBytes: "
+
+# MSG_FACTOR
+#: ultralcd.cpp:6008
+msgid " \002 Fact"
+msgstr " \002 Fact"
+
+# MSG_MAX
+#: ultralcd.cpp:6007
+msgid " \002 Max"
+msgstr " \002 Max"
+
+# MSG_MIN
+#: ultralcd.cpp:6006
+msgid " \002 Min"
+msgstr " \002 Min"
+
+# MSG_ERR_COLD_EXTRUDE_STOP
+#: planner.cpp:745
+msgid " cold extrusion prevented"
+msgstr " cold extrusion prevented"
+
+# MSG_FREE_MEMORY
+#: Marlin_main.cpp:1083
+msgid " Free Memory: "
+msgstr " Free Memory: "
+
+# MSG_CONFIGURATION_VER
+#: Marlin_main.cpp:1073
+msgid " Last Updated: "
+msgstr " Last Updated: "
+
+# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
+#: messages.c:44
+msgid " of 4"
+msgstr " de 4"
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
+#: messages.c:59
+msgid " of 9"
+msgstr " de 9"
+
+# MSG_MEASURED_OFFSET
+#: ultralcd.cpp:2362
+#, fuzzy
+msgid "[0;0] point offset"
+msgstr ""
+
+# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
+#: ultralcd.cpp:3613
+#, fuzzy
+msgid "\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode"
+msgstr ""
+
+# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
+#: ultralcd.cpp:3626
+#, fuzzy
+msgid "\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode"
+msgstr ""
+
+# MSG_REFRESH
+#: 
+msgid "\xf8Refresh"
+msgstr "\xf8Refresh"
+
+# MSG_BABYSTEPPING_Z c=20
+#: ultralcd.cpp:2487
+msgid "Adjusting Z"
+msgstr "Ajustar Z"
+
+# MSG_SELFTEST_CHECK_ALLCORRECT c=20
+#: ultralcd.cpp:7235
+msgid "All correct      "
+msgstr "Todo bien"
+
+# MSG_WIZARD_DONE c=20 r=8
+#: messages.c:103
+msgid "All is done. Happy printing!"
+msgstr "Terminado! Feliz impresion!"
+
+# MSG_ALL c=19 r=1
+#: messages.c:11
+msgid "All"
+msgstr "Todos"
+
+# MSG_PRESS c=20
+#: ultralcd.cpp:1916
+msgid "and press the knob"
+msgstr "Haz clic"
+
+# MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
+#: ultralcd.cpp:2803
+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_HOME
+#: messages.c:12
+msgid "Auto home"
+msgstr "Llevar al origen"
+
+# MSG_AUTOLOAD_FILAMENT c=17
+#: ultralcd.cpp:5803
+#, fuzzy
+msgid "AutoLoad filament"
+msgstr ""
+
+# MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
+#: ultralcd.cpp:3642
+#, fuzzy
+msgid "Autoloading filament available only when filament sensor is turned on..."
+msgstr ""
+
+# MSG_AUTOLOADING_ENABLED c=20 r=4
+#: ultralcd.cpp:2089
+#, fuzzy
+msgid "Autoloading filament is active, just press the knob and insert filament..."
+msgstr ""
+
+# MSG_SELFTEST_AXIS_LENGTH
+#: ultralcd.cpp:7007
+#, fuzzy
+msgid "Axis length"
+msgstr ""
+
+# MSG_SELFTEST_AXIS
+#: ultralcd.cpp:7009
+#, fuzzy
+msgid "Axis"
+msgstr ""
+
+# 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_SELFTEST_BEDHEATER
+#: ultralcd.cpp:6951
+msgid "Bed / Heater"
+msgstr "Heatbed"
+
+# MSG_BED_DONE
+#: messages.c:17
+msgid "Bed done"
+msgstr "Base preparada"
+
+# MSG_BED_HEATING
+#: messages.c:18
+msgid "Bed Heating"
+msgstr "Calentando Base"
+
+# MSG_BED_CORRECTION_MENU
+#: ultralcd.cpp:4533
+msgid "Bed level correct"
+msgstr "Corr. de la cama"
+
+# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
+#: messages.c:19
+msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
+msgstr "Nivelacion fallada. Sensor no funciona. Escombros en nozzle? Esperando reset."
+
+# MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4
+#: Marlin_main.cpp:4031
+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:4035
+msgid "Bed leveling failed. Sensor triggered too high. Waiting for reset."
+msgstr "Nivelacion fallada. Sensor funciona demasiado temprano. Esperando reset."
+
+# MSG_BED
+#: messages.c:16
+msgid "Bed"
+msgstr "Heatbed"
+
+# MSG_BEGIN_FILE_LIST
+#: Marlin_main.cpp:4405
+msgid "Begin file list"
+msgstr "Begin file list"
+
+# MSG_MENU_BELT_STATUS c=15 r=1
+#: ultralcd.cpp:1738
+#, fuzzy
+msgid "Belt status"
+msgstr ""
+
+# MSG_RECOVER_PRINT c=20 r=2
+#: messages.c:72
+#, fuzzy
+msgid "Blackout occurred. Recover print?"
+msgstr ""
+
+# MSG_CALIBRATE_E c=20 r=1
+#: ultralcd.cpp:4526
+msgid "Calibrate E"
+msgstr "Calibrar E"
+
+# MSG_CALIBRATE_BED
+#: ultralcd.cpp:4522
+msgid "Calibrate XYZ"
+msgstr "Calibra XYZ"
+
+# MSG_HOMEYZ
+#: messages.c:52
+msgid "Calibrate Z"
+msgstr "Calibrar Z"
+
+# MSG_CALIBRATE_PINDA c=17 r=1
+#: ultralcd.cpp:3794
+msgid "Calibrate"
+msgstr "Calibrar"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
+#: ultralcd.cpp:2756
+msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "Calibrando XYZ. Gira el boton para subir el extrusor hasta tocar los topes superiores. Despues haz clic."
+
+# MSG_CALIBRATE_Z_AUTO
+#: messages.c:21
+msgid "Calibrating Z"
+msgstr "Calibrando Z"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
+#: ultralcd.cpp:2756
+msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "Calibrando Z. Gira el boton para subir el extrusor hasta tocar los topes superiores. Despues haz clic."
+
+# MSG_HOMEYZ_DONE
+#: ultralcd_implementation_hitachi_HD44780.h:989
+msgid "Calibration done"
+msgstr "Calibracion OK"
+
+# MSG_MENU_CALIBRATION
+#: messages.c:60
+msgid "Calibration"
+msgstr "Calibracion"
+
+# MSG_SD_CANT_ENTER_SUBDIR
+#: cardreader.cpp:679
+msgid "Cannot enter subdir: "
+msgstr "Cannot enter subdir: "
+
+# MSG_SD_CANT_OPEN_SUBDIR
+#: cardreader.cpp:97
+msgid "Cannot open subdir"
+msgstr "Cannot open subdir"
+
+# MSG_SD_INSERTED
+#: ultralcd.cpp:7550
+msgid "Card inserted"
+msgstr "Tarjeta insertada"
+
+# MSG_SD_REMOVED
+#: ultralcd.cpp:7556
+msgid "Card removed"
+msgstr "Tarjeta retirada"
+
+# MSG_NOT_COLOR
+#: ultralcd.cpp:2018
+msgid "Color not correct"
+msgstr "Color no homogeneo"
+
+# MSG_COOLDOWN
+#: messages.c:24
+msgid "Cooldown"
+msgstr "Enfriar"
+
+# MSG_CRASHDETECT_ON
+#: messages.c:28
+#, fuzzy
+msgid "Crash det.   [on]"
+msgstr ""
+
+# MSG_CRASHDETECT_NA
+#: messages.c:26
+#, fuzzy
+msgid "Crash det.  [N/A]"
+msgstr ""
+
+# MSG_CRASHDETECT_OFF
+#: messages.c:27
+#, fuzzy
+msgid "Crash det.  [off]"
+msgstr ""
+
+# MSG_CRASH_DETECTED c=20 r=1
+#: messages.c:25
+#, fuzzy
+msgid "Crash detected."
+msgstr ""
+
+# MSG_CURRENT c=19 r=1
+#: ultralcd.cpp:4859
+msgid "Current"
+msgstr "Actual"
+
+# MSG_DATE c=17 r=1
+#: ultralcd.cpp:1828
+#, fuzzy
+msgid "Date:"
+msgstr ""
+
+# MSG_DISABLE_STEPPERS
+#: ultralcd.cpp:4146
+msgid "Disable steppers"
+msgstr "Apagar motores"
+
+# MSG_BABYSTEP_Z_NOT_SET c=20 r=12
+#: messages.c:15
+msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
+msgstr "Distancia entre la punta del nozzle y la superficie de la heatbed aun no fijada. Por favor siga el manual, capitulo First steps, First layer calibration."
+
+# MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
+#: ultralcd.cpp:4071
+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 nozzle-heatbed?"
+
+# 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:4213
+#, fuzzy
+msgid "E-correct"
+msgstr ""
+
+# MSG_END_FILE_LIST
+#: Marlin_main.cpp:4407
+msgid "End file list"
+msgstr "End file list"
+
+# MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
+#: ultralcd.cpp:6975
+msgid "Endstop not hit"
+msgstr "Tope no alcanzado"
+
+# MSG_SELFTEST_ENDSTOP
+#: ultralcd.cpp:6969
+msgid "Endstop"
+msgstr "Tope final"
+
+# MSG_ENDSTOPS_HIT
+#: messages.c:31
+msgid "endstops hit: "
+msgstr "endstops hit: "
+
+# MSG_SELFTEST_ENDSTOPS
+#: ultralcd.cpp:6957
+msgid "Endstops"
+msgstr "Topes finales"
+
+# MSG_LANGUAGE_NAME
+#: language.c:153
+msgid "English"
+msgstr "Espanol"
+
+# MSG_Enqueing
+#: 
+msgid "enqueing \x22"
+msgstr "enqueing \x22"
+
+# MSG_STACK_ERROR c=20 r=4
+#: ultralcd.cpp:5843
+#, fuzzy
+msgid "Error - static memory has been overwritten"
+msgstr ""
+
+# MSG_SD_ERR_WRITE_TO_FILE
+#: messages.c:76
+msgid "error writing to file"
+msgstr "error writing to file"
+
+# MSG_FSENS_NOT_RESPONDING c=20 r=4
+#: ultralcd.cpp:3656
+#, fuzzy
+msgid "ERROR: Filament sensor is not responding, please check connection."
+msgstr ""
+
+# MSG_ERROR
+#: messages.c:34
+msgid "ERROR:"
+msgstr "ERROR:"
+
+# MSG_EXTRUDER_1 c=17 r=1
+#: ultralcd.cpp:5417
+msgid "Extruder 1"
+msgstr "Extrusor 1"
+
+# MSG_EXTRUDER_2 c=17 r=1
+#: ultralcd.cpp:5418
+msgid "Extruder 2"
+msgstr "Extrusor 2"
+
+# MSG_EXTRUDER_3 c=17 r=1
+#: ultralcd.cpp:5419
+msgid "Extruder 3"
+msgstr "Extrusor 3"
+
+# MSG_EXTRUDER_4 c=17 r=1
+#: ultralcd.cpp:5420
+msgid "Extruder 4"
+msgstr "Extrusor 4"
+
+# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
+#: ultralcd.cpp:7244
+#, fuzzy
+msgid "Extruder fan:"
+msgstr ""
+
+# MSG_INFO_EXTRUDER c=15 r=1
+#: ultralcd.cpp:1840
+#, fuzzy
+msgid "Extruder info"
+msgstr ""
+
+# MSG_MOVE_E
+#: messages.c:35
+msgid "Extruder"
+msgstr "Extruir"
+
+# MSG_FSENS_AUTOLOAD_ON c=17 r=1
+#: ultralcd.cpp:4178
+#, fuzzy
+msgid "F. autoload  [on]"
+msgstr ""
+
+# MSG_FSENS_AUTOLOAD_NA c=17 r=1
+#: messages.c:47
+#, fuzzy
+msgid "F. autoload [N/A]"
+msgstr ""
+
+# MSG_FSENS_AUTOLOAD_OFF c=17 r=1
+#: ultralcd.cpp:4181
+#, fuzzy
+msgid "F. autoload [off]"
+msgstr ""
+
+# MSG_FAN_SPEED c=14
+#: messages.c:36
+msgid "Fan speed"
+msgstr "Velocidad Vent."
+
+# MSG_SELFTEST_FAN c=20
+#: messages.c:82
+msgid "Fan test"
+msgstr "Test ventiladores"
+
+# MSG_FANS_CHECK_ON c=17 r=1
+#: ultralcd.cpp:4189
+#, fuzzy
+msgid "Fans check   [on]"
+msgstr ""
+
+# MSG_FANS_CHECK_OFF c=17 r=1
+#: ultralcd.cpp:4192
+#, fuzzy
+msgid "Fans check  [off]"
+msgstr ""
+
+# MSG_FSENSOR_ON
+#: messages.c:49
+#, fuzzy
+msgid "Fil. sensor  [on]"
+msgstr ""
+
+# MSG_FSENSOR_NA
+#: ultralcd.cpp:4164
+#, fuzzy
+msgid "Fil. sensor [N/A]"
+msgstr ""
+
+# MSG_FSENSOR_OFF
+#: messages.c:48
+#, fuzzy
+msgid "Fil. sensor [off]"
+msgstr ""
+
+# MSG_FILAMENT_CLEAN c=20 r=2
+#: messages.c:37
+msgid "Filament extruding & with correct color?"
+msgstr "Es el nuevo color nitido?"
+
+# MSG_NOT_LOADED c=19
+#: ultralcd.cpp:2014
+msgid "Filament not loaded"
+msgstr "Fil. no introducido"
+
+# MSG_FILAMENT_SENSOR c=20
+#: ultralcd.cpp:7023
+#, fuzzy
+msgid "Filament sensor"
+msgstr ""
+
+# MSG_SELFTEST_FILAMENT_SENSOR c=18
+#: ultralcd.cpp:7253
+#, fuzzy
+msgid "Filament sensor:"
+msgstr ""
+
+# MSG_STATS_FILAMENTUSED c=20
+#: ultralcd.cpp:2142
+msgid "Filament used:  "
+msgstr "Filamento usado: "
+
+# MSG_FILE_INCOMPLETE c=20 r=2
+#: ultralcd.cpp:7396
+#, fuzzy
+msgid "File incomplete. Continue anyway?"
+msgstr ""
+
+# MSG_SD_FILE_OPENED
+#: cardreader.cpp:395
+msgid "File opened: "
+msgstr "File opened: "
+
+# MSG_SD_FILE_SELECTED
+#: cardreader.cpp:401
+msgid "File selected"
+msgstr "File selected"
+
+# MSG_FINISHING_MOVEMENTS c=20 r=1
+#: messages.c:45
+msgid "Finishing movements"
+msgstr "Term. movimientos"
+
+# MSG_V2_CALIBRATION c=17 r=1
+#: ultralcd.cpp:4513
+msgid "First layer cal."
+msgstr "Cal. primera cap."
+
+# MSG_WIZARD_SELFTEST c=20 r=8
+#: ultralcd.cpp:3989
+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."
+
+# MSG_FLOW
+#: ultralcd.cpp:5932
+msgid "Flow"
+msgstr "Flujo"
+
+# MSG_PRUSA3D_FORUM
+#: ultralcd.cpp:1821
+msgid "forum.prusa3d.com"
+msgstr "forum.prusa3d.com"
+
+# MSG_SELFTEST_COOLING_FAN c=20
+#: messages.c:79
+msgid "Front print fan?"
+msgstr "Vent. frontal?"
+
+# MSG_BED_CORRECTION_FRONT c=14 r=1
+#: ultralcd.cpp:2565
+msgid "Front side[um]"
+msgstr "Frontal [um]"
+
+# MSG_SELFTEST_FANS
+#: ultralcd.cpp:7015
+#, fuzzy
+msgid "Front/left fans"
+msgstr ""
+
+# MSG_SELFTEST_HEATERTHERMISTOR
+#: ultralcd.cpp:6945
+msgid "Heater/Thermistor"
+msgstr "Hotend"
+
+# MSG_BED_HEATING_SAFETY_DISABLED
+#: Marlin_main.cpp:7232
+#, fuzzy
+msgid "Heating disabled by safety timer."
+msgstr ""
+
+# MSG_HEATING_COMPLETE c=20
+#: messages.c:51
+msgid "Heating done."
+msgstr "Calentamiento final."
+
+# MSG_HEATING
+#: messages.c:50
+msgid "Heating"
+msgstr "Calentando..."
+
+# MSG_WIZARD_WELCOME c=20 r=7
+#: ultralcd.cpp:3968
+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:1822
+msgid "howto.prusa3d.com"
+msgstr "howto.prusa3d.com"
+
+# MSG_CHANGE_EXTR c=20 r=1
+#: ultralcd.cpp:5812
+msgid "Change extruder"
+msgstr "Cambiar extrusor."
+
+# MSG_FILAMENTCHANGE
+#: messages.c:42
+msgid "Change filament"
+msgstr "Cambiar filamento"
+
+# MSG_CNG_SDCARD
+#: ultralcd.cpp:5777
+msgid "Change SD card"
+msgstr "Change SD card"
+
+# MSG_CHANGE_SUCCESS
+#: ultralcd.cpp:1927
+msgid "Change success!"
+msgstr "Cambio correcto"
+
+# MSG_CORRECTLY c=20
+#: ultralcd.cpp:2006
+msgid "Changed correctly?"
+msgstr "Cambiado correct.?"
+
+# MSG_CHANGING_FILAMENT c=20
+#: ultralcd.cpp:1899
+msgid "Changing filament!"
+msgstr "Cambiando filamento"
+
+# MSG_SELFTEST_CHECK_BED c=20
+#: messages.c:85
+msgid "Checking bed     "
+msgstr "Control heatbed"
+
+# MSG_SELFTEST_CHECK_ENDSTOPS c=20
+#: ultralcd.cpp:7226
+msgid "Checking endstops"
+msgstr "Control topes"
+
+# MSG_SELFTEST_CHECK_HOTEND c=20
+#: ultralcd.cpp:7227
+msgid "Checking hotend  "
+msgstr "Control hotend "
+
+# MSG_SELFTEST_CHECK_FSENSOR c=20
+#: messages.c:86
+#, fuzzy
+msgid "Checking sensors "
+msgstr ""
+
+# MSG_SELFTEST_CHECK_X c=20
+#: ultralcd.cpp:7228
+msgid "Checking X axis  "
+msgstr "Control tope X"
+
+# MSG_SELFTEST_CHECK_Y c=20
+#: ultralcd.cpp:7229
+msgid "Checking Y axis  "
+msgstr "Control tope Y"
+
+# MSG_SELFTEST_CHECK_Z c=20
+#: ultralcd.cpp:7230
+msgid "Checking Z axis  "
+msgstr "Control tope Z"
+
+# MSG_ERR_CHECKSUM_MISMATCH
+#: cmdqueue.cpp:444
+msgid "checksum mismatch, Last Line: "
+msgstr "checksum mismatch, Last Line: "
+
+# MSG_CHOOSE_EXTRUDER c=20 r=1
+#: messages.c:53
+msgid "Choose extruder:"
+msgstr "Elegir extrusor:"
+
+# MSG_WIZARD_XYZ_CAL c=20 r=8
+#: ultralcd.cpp:3998
+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:4004
+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:4066
+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 mando, 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:2469
+msgid "Improving bed calibration point"
+msgstr "Mejorando punto de calibracion heatbed"
+
+# MSG_WATCH
+#: messages.c:101
+msgid "Info screen"
+msgstr "Monitorizar"
+
+# MSG_INIT_SDCARD
+#: ultralcd.cpp:5785
+msgid "Init. SD card"
+msgstr "Init. SD card"
+
+# MSG_FILAMENT_LOADING_T0 c=20 r=4
+#: messages.c:38
+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:39
+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:40
+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:41
+msgid "Insert filament into extruder 4. Click when done."
+msgstr "Insertar filamento en el extrusor 4. Haz clic una vez terminado."
+
+# MSG_INSERT_FILAMENT c=20
+#: ultralcd.cpp:1913
+msgid "Insert filament"
+msgstr "Introducir filamento"
+
+# MSG_WIZARD_FILAMENT_LOADED c=20 r=2
+#: ultralcd.cpp:4015
+msgid "Is filament loaded?"
+msgstr "Esta el filamento cargado?"
+
+# MSG_WIZARD_PLA_FILAMENT c=20 r=2
+#: ultralcd.cpp:4060
+msgid "Is it PLA filament?"
+msgstr "Es el filamento PLA?"
+
+# MSG_PLA_FILAMENT_LOADED c=20 r=2
+#: ultralcd.cpp:3924
+msgid "Is PLA filament loaded?"
+msgstr "Esta el filamento PLA cargado?"
+
+# MSG_STEEL_SHEET_CHECK c=20 r=2
+#: messages.c:94
+#, fuzzy
+msgid "Is steel sheet on heatbed?"
+msgstr ""
+
+# MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20
+#: mesh_bed_calibration.cpp:2211
+msgid "Iteration "
+msgstr "Reiteracion "
+
+# MSG_KILLED
+#: Marlin_main.cpp:7393
+msgid "KILLED. "
+msgstr "PARADA DE EMERGENCIA"
+
+# MSG_SELFTEST_EXTRUDER_FAN c=20
+#: messages.c:80
+msgid "Left hotend fan?"
+msgstr "Vent. izquierdo?"
+
+# MSG_BED_CORRECTION_LEFT c=14 r=1
+#: ultralcd.cpp:2563
+msgid "Left side [um]"
+msgstr "Izquierda [um]"
+
+# MSG_LEFT c=12 r=1
+#: ultralcd.cpp:2308
+#, fuzzy
+msgid "Left:"
+msgstr ""
+
+# MSG_BABYSTEP_Z
+#: messages.c:14
+msgid "Live adjust Z"
+msgstr "Micropaso Eje Z"
+
+# MSG_LOAD_ALL
+#: ultralcd.cpp:5392
+msgid "Load all"
+msgstr "Intr. todos fil."
+
+# MSG_LOAD_FILAMENT_1 c=17
+#: ultralcd.cpp:5393
+msgid "Load filament 1"
+msgstr "Introducir fil. 1"
+
+# MSG_LOAD_FILAMENT_2 c=17
+#: ultralcd.cpp:5394
+msgid "Load filament 2"
+msgstr "Introducir fil. 2"
+
+# MSG_LOAD_FILAMENT_3 c=17
+#: ultralcd.cpp:5395
+msgid "Load filament 3"
+msgstr "Introducir fil. 3"
+
+# MSG_LOAD_FILAMENT_4 c=17
+#: ultralcd.cpp:5396
+msgid "Load filament 4"
+msgstr "Introducir fil. 4"
+
+# MSG_LOAD_FILAMENT c=17
+#: messages.c:54
+msgid "Load filament"
+msgstr "Introducir filam."
+
+# MSG_LOADING_COLOR
+#: ultralcd.cpp:1939
+msgid "Loading color"
+msgstr "Cambiando color"
+
+# MSG_LOADING_FILAMENT c=20
+#: messages.c:55
+msgid "Loading filament"
+msgstr "Introduciendo filam."
+
+# MSG_LOOSE_PULLEY c=20 r=1
+#: ultralcd.cpp:6999
+msgid "Loose pulley"
+msgstr "Polea suelta"
+
+# MSG_M104_INVALID_EXTRUDER
+#: Marlin_main.cpp:7506
+msgid "M104 Invalid extruder "
+msgstr "M104 Invalid extruder "
+
+# MSG_M105_INVALID_EXTRUDER
+#: Marlin_main.cpp:7509
+msgid "M105 Invalid extruder "
+msgstr "M105 Invalid extruder "
+
+# MSG_M109_INVALID_EXTRUDER
+#: Marlin_main.cpp:7512
+msgid "M109 Invalid extruder "
+msgstr "M109 Invalid extruder "
+
+# MSG_M117_V2_CALIBRATION c=25 r=1
+#: messages.c:56
+msgid "M117 First layer cal."
+msgstr "M117 Cal. primera cap."
+
+# MSG_M200_INVALID_EXTRUDER
+#: Marlin_main.cpp:5378
+msgid "M200 Invalid extruder "
+msgstr "M200 Invalid extruder "
+
+# MSG_M218_INVALID_EXTRUDER
+#: Marlin_main.cpp:7515
+msgid "M218 Invalid extruder "
+msgstr "M218 Invalid extruder "
+
+# MSG_M221_INVALID_EXTRUDER
+#: Marlin_main.cpp:7518
+msgid "M221 Invalid extruder "
+msgstr "M221 Invalid extruder "
+
+# MSG_MAIN
+#: messages.c:57
+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."
+
+# MSG_MEASURED_SKEW c=15 r=1
+#: ultralcd.cpp:2335
+#, fuzzy
+msgid "Measured skew:"
+msgstr ""
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
+#: messages.c:58
+msgid "Measuring reference height of calibration point"
+msgstr "Midiendo altura del punto de calibracion"
+
+# MSG_MESH_BED_LEVELING
+#: ultralcd.cpp:4528
+msgid "Mesh Bed Leveling"
+msgstr "Mesh Bed Leveling"
+
+# MSG_STEALTH_MODE_OFF
+#: messages.c:92
+#, fuzzy
+msgid "Mode     [Normal]"
+msgstr ""
+
+# MSG_SILENT_MODE_ON
+#: messages.c:91
+msgid "Mode     [silent]"
+msgstr "Modo [silencio]"
+
+# MSG_STEALTH_MODE_ON
+#: messages.c:93
+#, fuzzy
+msgid "Mode    [Stealth]"
+msgstr ""
+
+# MSG_AUTO_MODE_ON
+#: messages.c:13
+#, fuzzy
+msgid "Mode [auto power]"
+msgstr ""
+
+# MSG_SILENT_MODE_OFF
+#: messages.c:90
+msgid "Mode [high power]"
+msgstr "Modo [rend.pleno]"
+
+# MSG_SELFTEST_MOTOR
+#: messages.c:87
+msgid "Motor"
+msgstr "Motor"
+
+# MSG_MOVE_AXIS
+#: ultralcd.cpp:4142
+msgid "Move axis"
+msgstr "Mover ejes"
+
+# MSG_MOVE_X
+#: ultralcd.cpp:3557
+msgid "Move X"
+msgstr "Mover X"
+
+# MSG_MOVE_Y
+#: ultralcd.cpp:3558
+msgid "Move Y"
+msgstr "Mover Y"
+
+# MSG_MOVE_Z
+#: ultralcd.cpp:3559
+msgid "Move Z"
+msgstr "Mover Z"
+
+# MSG_NEW_FIRMWARE_AVAILABLE c=20 r=2
+#: util.cpp:292
+msgid "New firmware version available:"
+msgstr "Nuevo firmware disponible:"
+
+# MSG_ERR_NO_CHECKSUM
+#: cmdqueue.cpp:456
+msgid "No Checksum with line number, Last Line: "
+msgstr "No Checksum with line number, Last Line: "
+
+# MSG_NO_MOVE
+#: Marlin_main.cpp:4394
+msgid "No move."
+msgstr "Sin movimiento"
+
+# MSG_NO_CARD
+#: ultralcd.cpp:5783
+msgid "No SD card"
+msgstr "No hay tarjeta SD"
+
+# MSG_ERR_NO_THERMISTORS
+#: Marlin_main.cpp:4946
+msgid "No thermistors - no temperature"
+msgstr "No thermistors - no temperature"
+
+# MSG_NO
+#: messages.c:61
+msgid "No"
+msgstr "No"
+
+# MSG_SELFTEST_NOTCONNECTED
+#: ultralcd.cpp:6947
+msgid "Not connected"
+msgstr "No hay conexion "
+
+# MSG_SELFTEST_FAN_NO c=19
+#: messages.c:83
+msgid "Not spinning"
+msgstr "Ventilador no gira"
+
+# MSG_WIZARD_V2_CAL c=20 r=8
+#: ultralcd.cpp:4065
+msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
+msgstr "Voy a calibrar la distancia entre la punta del nozzle y la superficie de la heatbed."
+
+# MSG_WIZARD_WILL_PREHEAT c=20 r=4
+#: ultralcd.cpp:4022
+msgid "Now I will preheat nozzle for PLA."
+msgstr "Voy a precalentar el nozzle para PLA ahora."
+
+# MSG_INFO_NOZZLE_FAN c=11 r=1
+#: ultralcd.cpp:1537
+#, fuzzy
+msgid "Nozzle FAN:"
+msgstr ""
+
+# MSG_NOZZLE
+#: messages.c:62
+msgid "Nozzle"
+msgstr "Nozzle"
+
+# MSG_NOZZLE1
+#: ultralcd.cpp:5995
+msgid "Nozzle2"
+msgstr "Nozzle2"
+
+# MSG_NOZZLE2
+#: ultralcd.cpp:5998
+msgid "Nozzle3"
+msgstr "Nozzle3"
+
+# MSG_OK
+#: messages.c:63
+msgid "ok"
+msgstr "ok"
+
+# MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
+#: Marlin_main.cpp:1382
+#, fuzzy
+msgid "Old settings found. Default PID, Esteps etc. will be set."
+msgstr ""
+
+# MSG_SD_OPEN_FILE_FAIL
+#: cardreader.cpp:461
+msgid "open failed, File: "
+msgstr "open failed, File: "
+
+# MSG_ENDSTOP_OPEN
+#: messages.c:30
+msgid "open"
+msgstr "open"
+
+# MSG_SD_OPENROOT_FAIL
+#: cardreader.cpp:196
+msgid "openRoot failed"
+msgstr "openRoot failed"
+
+# MSG_PAUSE_PRINT
+#: ultralcd.cpp:5757
+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:1366
+msgid "PID cal.           "
+msgstr "Cal. PID "
+
+# MSG_PID_FINISHED c=20 r=1
+#: ultralcd.cpp:1372
+msgid "PID cal. finished"
+msgstr "Cal. PID terminada"
+
+# MSG_PID_EXTRUDER c=17 r=1
+#: ultralcd.cpp:4534
+msgid "PID calibration"
+msgstr "Calibracion PID"
+
+# MSG_PINDA_PREHEAT c=20 r=1
+#: ultralcd_implementation_hitachi_HD44780.h:1023
+msgid "PINDA Heating"
+msgstr "Calentando PINDA"
+
+# MSG_PAPER c=20 r=8
+#: 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:4073
+msgid "Please clean heatbed and then press the knob."
+msgstr "Limpia la superficie de la heatbed, por favor, y haz clic"
+
+# MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
+#: messages.c:23
+msgid "Please clean the nozzle for calibration. Click when done."
+msgstr "Limpia nozzle para calibracion. Click cuando acabes."
+
+# MSG_SELFTEST_PLEASECHECK
+#: ultralcd.cpp:6939
+msgid "Please check :"
+msgstr "Controla :"
+
+# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
+#: messages.c:102
+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:4046
+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_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:3929
+msgid "Please load PLA filament first."
+msgstr "Carga el filamento PLA primero por favor."
+
+# MSG_CHECK_IDLER c=20 r=4
+#: Marlin_main.cpp:6166
+#, fuzzy
+msgid "Please open idler and remove filament manually."
+msgstr ""
+
+# MSG_PLACE_STEEL_SHEET c=20 r=4
+#: messages.c:65
+#, fuzzy
+msgid "Please place steel sheet on heatbed."
+msgstr ""
+
+# MSG_PRESS_TO_UNLOAD c=20 r=4
+#: messages.c:69
+#, fuzzy
+msgid "Please press the knob to unload filament"
+msgstr ""
+
+# MSG_PULL_OUT_FILAMENT c=20 r=4
+#: messages.c:71
+#, fuzzy
+msgid "Please pull out filament immediately"
+msgstr ""
+
+# MSG_REMOVE_STEEL_SHEET c=20 r=4
+#: messages.c:75
+#, fuzzy
+msgid "Please remove steel sheet from heatbed."
+msgstr ""
+
+# MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20
+#: util.cpp:296
+msgid "Please upgrade."
+msgstr "Actualizar por favor"
+
+# MSG_PLEASE_WAIT c=20
+#: messages.c:66
+msgid "Please wait"
+msgstr "Por Favor Esperar"
+
+# MSG_POWERUP
+#: messages.c:67
+msgid "PowerUp"
+msgstr "PowerUp"
+
+# MSG_PREHEAT_NOZZLE c=20
+#: messages.c:68
+msgid "Preheat the nozzle!"
+msgstr "Precalentar extrusor"
+
+# MSG_PREHEAT
+#: ultralcd.cpp:5746
+msgid "Preheat"
+msgstr "Precalentar"
+
+# MSG_WIZARD_HEATING c=20 r=3
+#: messages.c:104
+msgid "Preheating nozzle. Please wait."
+msgstr "Precalentando nozzle. Espera por favor."
+
+# MSG_PREPARE_FILAMENT c=20 r=1
+#: ultralcd.cpp:1911
+msgid "Prepare new filament"
+msgstr "Preparar filamento"
+
+# MSG_PRESS_TO_PREHEAT c=20 r=4
+#: Marlin_main.cpp:6025
+#, fuzzy
+msgid "Press knob to preheat nozzle and continue."
+msgstr ""
+
+# MSG_PRINT_ABORTED c=20
+#: messages.c:70
+msgid "Print aborted"
+msgstr "Impresion cancelada"
+
+# MSG_INFO_PRINT_FAN c=11 r=1
+#: ultralcd.cpp:1549
+#, fuzzy
+msgid "Print FAN: "
+msgstr ""
+
+# MSG_SELFTEST_PRINT_FAN_SPEED c=18
+#: ultralcd.cpp:7247
+#, fuzzy
+msgid "Print fan:"
+msgstr ""
+
+# MSG_CARD_MENU
+#: messages.c:22
+msgid "Print from SD"
+msgstr "Menu tarjeta SD"
+
+# MSG_PRINT_PAUSED c=20 r=1
+#: ultralcd.cpp:642
+msgid "Print paused"
+msgstr "Impresion en pausa"
+
+# 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
+#, fuzzy
+msgid "Printer disconnected"
+msgstr ""
+
+# MSG_ERR_KILLED
+#: Marlin_main.cpp:7388
+msgid "Printer halted. kill() called!"
+msgstr "Printer halted. kill() called!"
+
+# MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
+#: messages.c:46
+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 First steps, Calibration flow."
+
+# MSG_ERR_STOPPED
+#: messages.c:33
+msgid "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"
+msgstr "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"
+
+# WELCOME_MSG c=20
+#: 
+msgid "Prusa i3 MK3 ready."
+msgstr "Prusa i3 MK3 prep."
+
+# MSG_PRUSA3D
+#: ultralcd.cpp:1820
+msgid "prusa3d.com"
+msgstr "prusa3d.com"
+
+# MSG_BED_CORRECTION_REAR c=14 r=1
+#: ultralcd.cpp:2566
+msgid "Rear side [um]"
+msgstr "Trasera [um]"
+
+# MSG_RECOVERING_PRINT c=20 r=1
+#: Marlin_main.cpp:8289
+#, fuzzy
+msgid "Recovering print    "
+msgstr ""
+
+# MSG_M119_REPORT
+#: Marlin_main.cpp:5297
+msgid "Reporting endstop status"
+msgstr "Reporting endstop status"
+
+# MSG_RESEND
+#: Marlin_main.cpp:6911
+msgid "Resend: "
+msgstr "Resend: "
+
+# MSG_CALIBRATE_BED_RESET
+#: ultralcd.cpp:4539
+msgid "Reset XYZ calibr."
+msgstr "Reset XYZ calibr."
+
+# MSG_BED_CORRECTION_RESET
+#: ultralcd.cpp:2567
+msgid "Reset"
+msgstr "Reset"
+
+# MSG_RESUME_PRINT
+#: ultralcd.cpp:5761
+msgid "Resume print"
+msgstr "Reanudar impres."
+
+# MSG_RESUMING_PRINT
+#: messages.c:74
+msgid "Resuming print"
+msgstr "Resumiendo impresion"
+
+# MSG_BED_CORRECTION_RIGHT c=14 r=1
+#: ultralcd.cpp:2564
+msgid "Right side[um]"
+msgstr "Derecha [um]"
+
+# MSG_RIGHT c=12 r=1
+#: ultralcd.cpp:2309
+#, fuzzy
+msgid "Right:"
+msgstr ""
+
+# 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 mando hasta que la marca llegue al cuerpo del extrusor. Haz clic una vez terminado."
+
+# MSG_SECOND_SERIAL_ON c=17 r=1
+#: ultralcd.cpp:4227
+#, fuzzy
+msgid "RPi port     [on]"
+msgstr ""
+
+# MSG_SECOND_SERIAL_OFF c=17 r=1
+#: ultralcd.cpp:4224
+#, fuzzy
+msgid "RPi port    [off]"
+msgstr ""
+
+# MSG_WIZARD_RERUN c=20 r=7
+#: ultralcd.cpp:3947
+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:4240
+msgid "SD card  [normal]"
+msgstr "SD card [normal]"
+
+# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
+#: ultralcd.cpp:4238
+msgid "SD card [FlshAir]"
+msgstr "SD card [FlshAir]"
+
+# MSG_SD_CARD_OK
+#: cardreader.cpp:202
+msgid "SD card ok"
+msgstr "SD card ok"
+
+# MSG_SD_INIT_FAIL
+#: cardreader.cpp:186
+msgid "SD init fail"
+msgstr "SD init fail"
+
+# MSG_SD_PRINTING_BYTE
+#: cardreader.cpp:516
+msgid "SD printing byte "
+msgstr "SD printing byte "
+
+# MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
+#: messages.c:43
+msgid "Searching bed calibration point"
+msgstr "Buscando punto de calibracion heatbed"
+
+# MSG_LANGUAGE_SELECT
+#: ultralcd.cpp:4235
+msgid "Select language"
+msgstr "Cambiae el idioma"
+
+# MSG_SELFTEST_OK
+#: ultralcd.cpp:6505
+msgid "Self test OK"
+msgstr "Self test OK"
+
+# MSG_SELFTEST_START c=20
+#: ultralcd.cpp:6342
+msgid "Self test start  "
+msgstr "Inicio Selftest"
+
+# MSG_SELFTEST
+#: ultralcd.cpp:4515
+msgid "Selftest         "
+msgstr "Selftest"
+
+# MSG_SELFTEST_ERROR
+#: ultralcd.cpp:6937
+msgid "Selftest error !"
+msgstr "Autotest error!"
+
+# MSG_SELFTEST_FAILED c=20
+#: messages.c:81
+msgid "Selftest failed  "
+msgstr "Fallo Selftest"
+
+# MSG_FORCE_SELFTEST c=20 r=8
+#: Marlin_main.cpp:1414
+#, fuzzy
+msgid "Selftest will be run to calibrate accurate sensorless rehoming."
+msgstr ""
+
+# MSG_SET_TEMPERATURE c=19 r=1
+#: ultralcd.cpp:2575
+msgid "Set temperature:"
+msgstr "Establecer temp.:"
+
+# MSG_SETTINGS
+#: messages.c:89
+msgid "Settings"
+msgstr "Configuracion"
+
+# MSG_SEVERE_SKEW c=15 r=1
+#: ultralcd.cpp:2346
+#, fuzzy
+msgid "Severe skew:"
+msgstr ""
+
+# MSG_SHOW_END_STOPS c=17 r=1
+#: ultralcd.cpp:4536
+msgid "Show end stops"
+msgstr "Ensena tope final"
+
+# MSG_DWELL
+#: Marlin_main.cpp:3281
+msgid "Sleep..."
+msgstr "En espera"
+
+# MSG_SLIGHT_SKEW c=15 r=1
+#: ultralcd.cpp:2342
+#, fuzzy
+msgid "Slight skew:"
+msgstr ""
+
+# MSG_FILE_CNT c=20 r=4
+#: cardreader.cpp:754
+#, fuzzy
+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:4250
+#, fuzzy
+msgid "Sort:      [None]"
+msgstr ""
+
+# MSG_SORT_TIME c=17 r=1
+#: ultralcd.cpp:4248
+#, fuzzy
+msgid "Sort:      [Time]"
+msgstr ""
+
+# MSG_SORT_ALPHA c=17 r=1
+#: ultralcd.cpp:4249
+#, fuzzy
+msgid "Sort:  [Alphabet]"
+msgstr ""
+
+# MSG_SORTING c=20 r=1
+#: cardreader.cpp:761
+#, fuzzy
+msgid "Sorting files"
+msgstr ""
+
+# MSG_SPEED
+#: ultralcd.cpp:5926
+msgid "Speed"
+msgstr "Velocidad"
+
+# MSG_SELFTEST_FAN_YES c=19
+#: messages.c:84
+msgid "Spinning"
+msgstr "Ventilador gira"
+
+# MSG_TEMP_CAL_WARNING c=20 r=4
+#: Marlin_main.cpp:3551
+#, fuzzy
+msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
+msgstr ""
+
+# MSG_STATISTICS
+#: ultralcd.cpp:5824
+msgid "Statistics  "
+msgstr "Estadisticas "
+
+# MSG_STEPPER_TOO_HIGH
+#: stepper.cpp:345
+msgid "Steprate too high: "
+msgstr "Steprate too high: "
+
+# MSG_STOP_PRINT
+#: messages.c:95
+msgid "Stop print"
+msgstr "Detener impresion"
+
+# MSG_STOPPED
+#: messages.c:96
+msgid "STOPPED. "
+msgstr "PARADA"
+
+# MSG_SUPPORT
+#: ultralcd.cpp:5831
+msgid "Support"
+msgstr "Soporte"
+
+# MSG_SELFTEST_SWAPPED
+#: ultralcd.cpp:7017
+#, fuzzy
+msgid "Swapped"
+msgstr ""
+
+# MSG_TEMP_CALIBRATION c=20 r=1
+#: messages.c:97
+msgid "Temp. cal.          "
+msgstr "Cal. temp. "
+
+# MSG_TEMP_CALIBRATION_ON c=20 r=1
+#: ultralcd.cpp:4220
+msgid "Temp. cal.   [on]"
+msgstr "Cal. temp. [ON]"
+
+# MSG_TEMP_CALIBRATION_OFF c=20 r=1
+#: ultralcd.cpp:4217
+msgid "Temp. cal.  [off]"
+msgstr "Cal. temp. [OFF]"
+
+# MSG_CALIBRATION_PINDA_MENU c=17 r=1
+#: ultralcd.cpp:4545
+msgid "Temp. calibration"
+msgstr "Calibracion temp."
+
+# MSG_TEMP_CAL_FAILED c=20 r=8
+#: ultralcd.cpp:3189
+#, fuzzy
+msgid "Temperature calibration failed"
+msgstr ""
+
+# 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:98
+msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
+msgstr "Calibracon temperatura terminada. Haz clic para continuar."
+
+# MSG_TEMPERATURE
+#: ultralcd.cpp:4139
+msgid "Temperature"
+msgstr "Temperatura"
+
+# MSG_MENU_TEMPERATURES c=15 r=1
+#: ultralcd.cpp:1846
+#, fuzzy
+msgid "Temperatures"
+msgstr ""
+
+# MSG_STATS_TOTALFILAMENT c=20
+#: ultralcd.cpp:2186
+msgid "Total filament :"
+msgstr "Filamento total:"
+
+# MSG_STATS_TOTALPRINTTIME c=20
+#: ultralcd.cpp:2203
+msgid "Total print time :"
+msgstr "Tiempo total :"
+
+# MSG_ENDSTOP_HIT
+#: messages.c:29
+msgid "TRIGGERED"
+msgstr "TRIGGERED"
+
+# MSG_TUNE
+#: ultralcd.cpp:5743
+msgid "Tune"
+msgstr "Ajustar"
+
+# MSG_UNLOAD_ALL
+#: ultralcd.cpp:5405
+msgid "Unload all"
+msgstr "Soltar todos fil."
+
+# 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_UNLOAD_FILAMENT c=17
+#: messages.c:99
+msgid "Unload filament"
+msgstr "Soltar filamento"
+
+# MSG_UNLOADING_FILAMENT c=20 r=1
+#: messages.c:100
+msgid "Unloading filament"
+msgstr "Soltando filamento"
+
+# MSG_USED c=19 r=1
+#: ultralcd.cpp:4858
+msgid "Used during print"
+msgstr "Usado en impresion"
+
+# MSG_MENU_VOLTAGES c=15 r=1
+#: ultralcd.cpp:1849
+#, fuzzy
+msgid "Voltages"
+msgstr ""
+
+# MSG_SD_VOL_INIT_FAIL
+#: cardreader.cpp:191
+msgid "volume.init failed"
+msgstr "volume.init failed"
+
+# MSG_USERWAIT
+#: Marlin_main.cpp:4359
+msgid "Wait for user..."
+msgstr "Esperando ordenes"
+
+# MSG_WAITING_TEMP c=20 r=3
+#: ultralcd.cpp:2719
+msgid "Waiting for nozzle and bed cooling"
+msgstr "Esperando enfriamiento de heatbed y extrusor."
+
+# MSG_WAITING_TEMP_PINDA c=20 r=3
+#: ultralcd.cpp:2683
+#, fuzzy
+msgid "Waiting for PINDA probe cooling"
+msgstr ""
+
+# MSG_CHANGED_BOTH c=20 r=4
+#: Marlin_main.cpp:1374
+#, fuzzy
+msgid "Warning: both printer type and motherboard type changed."
+msgstr ""
+
+# MSG_CHANGED_MOTHERBOARD c=20 r=4
+#: Marlin_main.cpp:1366
+#, fuzzy
+msgid "Warning: motherboard type changed."
+msgstr ""
+
+# MSG_CHANGED_PRINTER c=20 r=4
+#: Marlin_main.cpp:1370
+#, fuzzy
+msgid "Warning: printer type changed."
+msgstr ""
+
+# MSG_FW_VERSION_UNKNOWN c=20 r=8
+#: Marlin_main.cpp:946
+#, fuzzy
+msgid "WARNING: This is an unofficial, unsupported build. Use at your own risk!"
+msgstr ""
+
+# MSG_UNLOAD_SUCCESSFUL c=20 r=2
+#: Marlin_main.cpp:6165
+#, fuzzy
+msgid "Was filament unload successful?"
+msgstr ""
+
+# MSG_SELFTEST_WIRINGERROR
+#: messages.c:88
+msgid "Wiring error"
+msgstr "Error de conexion"
+
+# MSG_WIZARD c=17 r=1
+#: ultralcd.cpp:4512
+msgid "Wizard"
+msgstr "Wizard"
+
+# MSG_SD_WORKDIR_FAIL
+#: messages.c:78
+msgid "workDir open failed"
+msgstr "workDir open failed"
+
+# MSG_SD_WRITE_TO_FILE
+#: cardreader.cpp:424
+msgid "Writing to file: "
+msgstr "Writing to file: "
+
+# MSG_XYZ_DETAILS c=19 r=1
+#: ultralcd.cpp:1839
+#, fuzzy
+msgid "XYZ cal. details"
+msgstr ""
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
+#: ultralcd.cpp:3159
+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:3156
+msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
+msgstr "Calibracion XYZ correcta. Los ejes X / Y estan ligeramente inclinados. Buen trabajo!"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
+#: ultralcd.cpp:3137
+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:3143
+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:3140
+msgid "XYZ calibration compromised. Right front calibration point not reachable."
+msgstr "Calibrazion XYZ comprometida. Punto frontal derecho no alcanzable."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=8
+#: ultralcd.cpp:3119
+msgid "XYZ calibration failed. Bed calibration point was not found."
+msgstr "Calibracion XYZ fallada. Puntos de calibracion en heatbed no encontrados."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=8
+#: ultralcd.cpp:3125
+msgid "XYZ calibration failed. Front calibration points not reachable."
+msgstr "Calibracion XYZ fallada. Puntos frontales no alcanzables."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8
+#: ultralcd.cpp:3131
+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:20
+msgid "XYZ calibration failed. Please consult the manual."
+msgstr "Calibracion XYZ fallada. Consulta el manual por favor."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=8
+#: ultralcd.cpp:3128
+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:3153
+msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
+msgstr "Calibracion XYZ ok. Ejes X/Y perpendiculares. Enhorabuena!"
+
+# MSG_Y_DISTANCE_FROM_MIN c=20 r=1
+#: ultralcd.cpp:2306
+#, fuzzy
+msgid "Y distance from min:"
+msgstr ""
+
+# MSG_YES
+#: messages.c:106
+msgid "Yes"
+msgstr "Si"
+
+# MSG_FW_VERSION_ALPHA c=20 r=8
+#: Marlin_main.cpp:930
+#, fuzzy
+msgid "You are using firmware alpha version. This is development version. Using this version is not recommended and may cause printer damage."
+msgstr ""
+
+# MSG_FW_VERSION_BETA c=20 r=8
+#: Marlin_main.cpp:931
+#, fuzzy
+msgid "You are using firmware beta version. This is development version. Using this version is not recommended and may cause printer damage."
+msgstr ""
+
+# MSG_WIZARD_QUIT c=20 r=8
+#: messages.c:105
+msgid "You can always resume the Wizard from Calibration -> Wizard."
+msgstr "Siempre puedes acceder al asistente desde Calibracion -> Wizard"
+

+ 1791 - 304
lang/po/lang_it.po

@@ -1,304 +1,1791 @@
-# Translation into Italian.
-#
-msgid ""
-msgstr ""
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ultralcd.cpp:6304
-msgid "  [off"
-msgstr ""
-
-#: ultralcd.cpp:6000
-msgid " \002 Fact"
-msgstr ""
-
-#: ultralcd.cpp:5999
-msgid " \002 Max"
-msgstr ""
-
-#: ultralcd.cpp:5998
-msgid " \002 Min"
-msgstr ""
-
-#: ultralcd.cpp:2362
-msgid "[0;0] point offset"
-msgstr ""
-
-#: ultralcd.cpp:3613
-msgid "\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode"
-msgstr ""
-
-#: ultralcd.cpp:3626
-msgid "\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode"
-msgstr ""
-
-#: ultralcd.cpp:5796
-msgid "AutoLoad filament"
-msgstr ""
-
-#: ultralcd.cpp:3642
-msgid "Autoloading filament available only when filament sensor is turned on..."
-msgstr ""
-
-#: ultralcd.cpp:2089
-msgid "Autoloading filament is active, just press the knob and insert filament..."
-msgstr ""
-
-#: ultralcd.cpp:6999
-msgid "Axis length"
-msgstr ""
-
-#: ultralcd.cpp:7001
-msgid "Axis"
-msgstr ""
-
-#: ultralcd.cpp:1738
-msgid "Belt status"
-msgstr ""
-
-#: messages.c:72
-msgid "Blackout occurred. Recover print?"
-msgstr ""
-
-#: messages.c:28
-msgid "Crash det.   [on]"
-msgstr ""
-
-#: messages.c:26
-msgid "Crash det.  [N/A]"
-msgstr ""
-
-#: messages.c:27
-msgid "Crash det.  [off]"
-msgstr ""
-
-#: messages.c:25
-msgid "Crash detected."
-msgstr ""
-
-#: ultralcd.cpp:4213
-msgid "E-correct"
-msgstr ""
-
-#: ultralcd.cpp:5835
-msgid "Error - static memory has been overwritten"
-msgstr ""
-
-#: ultralcd.cpp:3656
-msgid "ERROR: Filament sensor is not responding, please check connection."
-msgstr ""
-
-#: ultralcd.cpp:7236
-msgid "Extruder fan:"
-msgstr ""
-
-#: ultralcd.cpp:1840
-msgid "Extruder info"
-msgstr ""
-
-#: ultralcd.cpp:4178
-msgid "F. autoload  [on]"
-msgstr ""
-
-#: messages.c:47
-msgid "F. autoload [N/A]"
-msgstr ""
-
-#: ultralcd.cpp:4181
-msgid "F. autoload [off]"
-msgstr ""
-
-#: ultralcd.cpp:4189
-msgid "Fans check   [on]"
-msgstr ""
-
-#: ultralcd.cpp:4192
-msgid "Fans check  [off]"
-msgstr ""
-
-#: messages.c:49
-msgid "Fil. sensor  [on]"
-msgstr ""
-
-#: ultralcd.cpp:4164
-msgid "Fil. sensor [N/A]"
-msgstr ""
-
-#: messages.c:48
-msgid "Fil. sensor [off]"
-msgstr ""
-
-#: ultralcd.cpp:7015
-msgid "Filament sensor"
-msgstr ""
-
-#: ultralcd.cpp:7245
-msgid "Filament sensor:"
-msgstr ""
-
-#: ultralcd.cpp:7388
-msgid "File incomplete. Continue anyway?"
-msgstr ""
-
-#: ultralcd.cpp:7007
-msgid "Front/left fans"
-msgstr ""
-
-#: Marlin_main.cpp:7190
-msgid "Heating disabled by safety timer."
-msgstr ""
-
-#: messages.c:85
-msgid "Checking sensors "
-msgstr ""
-
-#: messages.c:93
-msgid "Is steel sheet on heatbed?"
-msgstr ""
-
-#: messages.c:91
-msgid "Mode     [Normal]"
-msgstr ""
-
-#: messages.c:92
-msgid "Mode    [Stealth]"
-msgstr ""
-
-#: messages.c:13
-msgid "Mode [auto power]"
-msgstr ""
-
-#: ultralcd.cpp:1537
-msgid "Nozzle FAN:"
-msgstr ""
-
-#: Marlin_main.cpp:1364
-msgid "Old settings found. Default PID, Esteps etc. will be set."
-msgstr ""
-
-#: Marlin_main.cpp:6124
-msgid "Please open idler and remove filament manually."
-msgstr ""
-
-#: messages.c:65
-msgid "Please place steel sheet on heatbed."
-msgstr ""
-
-#: messages.c:69
-msgid "Please press the knob to unload filament"
-msgstr ""
-
-#: messages.c:71
-msgid "Please pull out filament immediately"
-msgstr ""
-
-#: messages.c:74
-msgid "Please remove steel sheet from heatbed."
-msgstr ""
-
-#: Marlin_main.cpp:5983
-msgid "Press knob to preheat nozzle and continue."
-msgstr ""
-
-#: ultralcd.cpp:1549
-msgid "Print FAN: "
-msgstr ""
-
-#: ultralcd.cpp:7239
-msgid "Print fan:"
-msgstr ""
-
-#: ultralcd.cpp:607
-msgid "Printer disconnected"
-msgstr ""
-
-#: Marlin_main.cpp:8247
-msgid "Recovering print    "
-msgstr ""
-
-#: ultralcd.cpp:4227
-msgid "RPi port     [on]"
-msgstr ""
-
-#: ultralcd.cpp:4224
-msgid "RPi port    [off]"
-msgstr ""
-
-#: Marlin_main.cpp:1396
-msgid "Selftest will be run to calibrate accurate sensorless rehoming."
-msgstr ""
-
-#: cardreader.cpp:754
-msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
-msgstr ""
-
-#: ultralcd.cpp:4250
-msgid "Sort:      [None]"
-msgstr ""
-
-#: ultralcd.cpp:4248
-msgid "Sort:      [Time]"
-msgstr ""
-
-#: ultralcd.cpp:4249
-msgid "Sort:  [Alphabet]"
-msgstr ""
-
-#: cardreader.cpp:761
-msgid "Sorting files"
-msgstr ""
-
-#: Marlin_main.cpp:3504
-msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
-msgstr ""
-
-#: ultralcd.cpp:7009
-msgid "Swapped"
-msgstr ""
-
-#: ultralcd.cpp:3189
-msgid "Temperature calibration failed"
-msgstr ""
-
-#: ultralcd.cpp:1846
-msgid "Temperatures"
-msgstr ""
-
-#: ultralcd.cpp:1849
-msgid "Voltages"
-msgstr ""
-
-#: ultralcd.cpp:2683
-msgid "Waiting for PINDA probe cooling"
-msgstr ""
-
-#: Marlin_main.cpp:1356
-msgid "Warning: both printer type and motherboard type changed."
-msgstr ""
-
-#: Marlin_main.cpp:1348
-msgid "Warning: motherboard type changed."
-msgstr ""
-
-#: Marlin_main.cpp:1352
-msgid "Warning: printer type changed."
-msgstr ""
-
-#: Marlin_main.cpp:946
-msgid "WARNING: This is an unofficial, unsupported build. Use at your own risk!"
-msgstr ""
-
-#: Marlin_main.cpp:6123
-msgid "Was filament unload successful?"
-msgstr ""
-
-#: 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 ""
-
-#: 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 ""
-
+# Translation of Prusa-Firmware into Italian.
+#
+msgid ""
+msgstr ""
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: it\n"
+"Project-Id-Version: Prusa-Firmware\n"
+"POT-Creation-Date: Sun Jun 3 19:33:56 2018\n"
+"PO-Revision-Date: Sun Jun 3 19:33:56 2018\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_EXTRUDER_CORRECTION_OFF c=6
+#: ultralcd.cpp:6312
+#, fuzzy
+msgid "  [off"
+msgstr ""
+
+# MSG_PLANNER_BUFFER_BYTES
+#: Marlin_main.cpp:1085
+msgid "  PlannerBufferBytes: "
+msgstr " PlannerBufferBytes: "
+
+# MSG_FACTOR
+#: ultralcd.cpp:6008
+#, fuzzy
+msgid " \002 Fact"
+msgstr ""
+
+# MSG_MAX
+#: ultralcd.cpp:6007
+#, fuzzy
+msgid " \002 Max"
+msgstr ""
+
+# MSG_MIN
+#: ultralcd.cpp:6006
+#, fuzzy
+msgid " \002 Min"
+msgstr ""
+
+# MSG_ERR_COLD_EXTRUDE_STOP
+#: planner.cpp:745
+msgid " cold extrusion prevented"
+msgstr " cold extrusion prevented"
+
+# MSG_FREE_MEMORY
+#: Marlin_main.cpp:1083
+msgid " Free Memory: "
+msgstr " Free Memory: "
+
+# MSG_CONFIGURATION_VER
+#: Marlin_main.cpp:1073
+msgid " Last Updated: "
+msgstr " Last Updated: "
+
+# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
+#: messages.c:44
+msgid " of 4"
+msgstr " su 4"
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
+#: messages.c:59
+msgid " of 9"
+msgstr " su 9"
+
+# MSG_MEASURED_OFFSET
+#: ultralcd.cpp:2362
+#, fuzzy
+msgid "[0;0] point offset"
+msgstr ""
+
+# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
+#: ultralcd.cpp:3613
+#, fuzzy
+msgid "\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode"
+msgstr ""
+
+# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
+#: ultralcd.cpp:3626
+#, fuzzy
+msgid "\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode"
+msgstr ""
+
+# MSG_REFRESH
+#: 
+msgid "\xf8Refresh"
+msgstr "\xf8Refresh"
+
+# MSG_BABYSTEPPING_Z c=20
+#: ultralcd.cpp:2487
+msgid "Adjusting Z"
+msgstr "Compensazione Z"
+
+# MSG_SELFTEST_CHECK_ALLCORRECT c=20
+#: ultralcd.cpp:7235
+msgid "All correct      "
+msgstr "Nessun errore"
+
+# MSG_WIZARD_DONE c=20 r=8
+#: messages.c:103
+msgid "All is done. Happy printing!"
+msgstr "Ben fatto. Buona stampa!"
+
+# MSG_ALL c=19 r=1
+#: messages.c:11
+msgid "All"
+msgstr "Tutti"
+
+# MSG_PRESS c=20
+#: ultralcd.cpp:1916
+msgid "and press the knob"
+msgstr "e cliccare manopola"
+
+# MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
+#: ultralcd.cpp:2803
+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_HOME
+#: messages.c:12
+msgid "Auto home"
+msgstr "Trova origine"
+
+# MSG_AUTOLOAD_FILAMENT c=17
+#: ultralcd.cpp:5803
+#, fuzzy
+msgid "AutoLoad filament"
+msgstr ""
+
+# MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
+#: ultralcd.cpp:3642
+#, fuzzy
+msgid "Autoloading filament available only when filament sensor is turned on..."
+msgstr ""
+
+# MSG_AUTOLOADING_ENABLED c=20 r=4
+#: ultralcd.cpp:2089
+#, fuzzy
+msgid "Autoloading filament is active, just press the knob and insert filament..."
+msgstr ""
+
+# MSG_SELFTEST_AXIS_LENGTH
+#: ultralcd.cpp:7007
+#, fuzzy
+msgid "Axis length"
+msgstr ""
+
+# MSG_SELFTEST_AXIS
+#: ultralcd.cpp:7009
+#, fuzzy
+msgid "Axis"
+msgstr ""
+
+# 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_SELFTEST_BEDHEATER
+#: ultralcd.cpp:6951
+msgid "Bed / Heater"
+msgstr "Letto/Riscald."
+
+# MSG_BED_DONE
+#: messages.c:17
+msgid "Bed done"
+msgstr "Piatto fatto."
+
+# MSG_BED_HEATING
+#: messages.c:18
+msgid "Bed Heating"
+msgstr "Riscald. letto"
+
+# MSG_BED_CORRECTION_MENU
+#: ultralcd.cpp:4533
+msgid "Bed level correct"
+msgstr "Correz. liv.letto"
+
+# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
+#: messages.c:19
+msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
+msgstr "Livellamento letto fallito.NoRispSensor Residui su ugello? In attesa di reset."
+
+# MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4
+#: Marlin_main.cpp:4031
+msgid "Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset."
+msgstr "Livellamento letto fallito. Sensore discon. o Cavo Dann. In attesa di reset."
+
+# MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4
+#: Marlin_main.cpp:4035
+msgid "Bed leveling failed. Sensor triggered too high. Waiting for reset."
+msgstr "Livellamento letto fallito.Risp sensore troppo prestoIn attesa di reset."
+
+# MSG_BED
+#: messages.c:16
+msgid "Bed"
+msgstr "Letto"
+
+# MSG_BEGIN_FILE_LIST
+#: Marlin_main.cpp:4405
+msgid "Begin file list"
+msgstr "Begin file list"
+
+# MSG_MENU_BELT_STATUS c=15 r=1
+#: ultralcd.cpp:1738
+#, fuzzy
+msgid "Belt status"
+msgstr ""
+
+# MSG_RECOVER_PRINT c=20 r=2
+#: messages.c:72
+#, fuzzy
+msgid "Blackout occurred. Recover print?"
+msgstr ""
+
+# MSG_CALIBRATE_E c=20 r=1
+#: ultralcd.cpp:4526
+msgid "Calibrate E"
+msgstr "Calibra E"
+
+# MSG_CALIBRATE_BED
+#: ultralcd.cpp:4522
+msgid "Calibrate XYZ"
+msgstr "Calibra XYZ"
+
+# MSG_HOMEYZ
+#: messages.c:52
+msgid "Calibrate Z"
+msgstr "Calibra Z"
+
+# MSG_CALIBRATE_PINDA c=17 r=1
+#: ultralcd.cpp:3794
+msgid "Calibrate"
+msgstr "Calibrare"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
+#: ultralcd.cpp:2756
+msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "Calibrazione XYZ. Ruotare la manopola per alzare il carrello Z fino all'altezza massima. Click per terminare."
+
+# MSG_CALIBRATE_Z_AUTO
+#: messages.c:21
+msgid "Calibrating Z"
+msgstr "Calibrando Z"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
+#: ultralcd.cpp:2756
+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_implementation_hitachi_HD44780.h:989
+msgid "Calibration done"
+msgstr "Calibrazione OK"
+
+# MSG_MENU_CALIBRATION
+#: messages.c:60
+msgid "Calibration"
+msgstr "Calibrazione"
+
+# MSG_SD_CANT_ENTER_SUBDIR
+#: cardreader.cpp:679
+msgid "Cannot enter subdir: "
+msgstr "Cannot enter subdir: "
+
+# MSG_SD_CANT_OPEN_SUBDIR
+#: cardreader.cpp:97
+msgid "Cannot open subdir"
+msgstr "Cannot open subdir"
+
+# MSG_SD_INSERTED
+#: ultralcd.cpp:7550
+msgid "Card inserted"
+msgstr "SD inserita"
+
+# MSG_SD_REMOVED
+#: ultralcd.cpp:7556
+msgid "Card removed"
+msgstr "SD rimossa"
+
+# MSG_NOT_COLOR
+#: ultralcd.cpp:2018
+msgid "Color not correct"
+msgstr "Colore non puro"
+
+# MSG_COOLDOWN
+#: messages.c:24
+msgid "Cooldown"
+msgstr "Raffredda"
+
+# MSG_CRASHDETECT_ON
+#: messages.c:28
+#, fuzzy
+msgid "Crash det.   [on]"
+msgstr ""
+
+# MSG_CRASHDETECT_NA
+#: messages.c:26
+#, fuzzy
+msgid "Crash det.  [N/A]"
+msgstr ""
+
+# MSG_CRASHDETECT_OFF
+#: messages.c:27
+#, fuzzy
+msgid "Crash det.  [off]"
+msgstr ""
+
+# MSG_CRASH_DETECTED c=20 r=1
+#: messages.c:25
+#, fuzzy
+msgid "Crash detected."
+msgstr ""
+
+# MSG_CURRENT c=19 r=1
+#: ultralcd.cpp:4859
+msgid "Current"
+msgstr "Attuale"
+
+# MSG_DATE c=17 r=1
+#: ultralcd.cpp:1828
+msgid "Date:"
+msgstr "Data"
+
+# MSG_DISABLE_STEPPERS
+#: ultralcd.cpp:4146
+msgid "Disable steppers"
+msgstr "Disabilit motori"
+
+# MSG_BABYSTEP_Z_NOT_SET c=20 r=12
+#: messages.c:15
+msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
+msgstr "Distanza tra la punta dell'ugello e la superficie del letto non ancora imposta. Si prega di seguire il manuale, capitolo First steps, sezione First layer calibration."
+
+# MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
+#: ultralcd.cpp:4071
+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:4213
+#, fuzzy
+msgid "E-correct"
+msgstr ""
+
+# MSG_END_FILE_LIST
+#: Marlin_main.cpp:4407
+msgid "End file list"
+msgstr "End file list"
+
+# MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
+#: ultralcd.cpp:6975
+msgid "Endstop not hit"
+msgstr "Finec. fuori por."
+
+# MSG_SELFTEST_ENDSTOP
+#: ultralcd.cpp:6969
+msgid "Endstop"
+msgstr "Finecorsa"
+
+# MSG_ENDSTOPS_HIT
+#: messages.c:31
+msgid "endstops hit: "
+msgstr "endstops hit: "
+
+# MSG_SELFTEST_ENDSTOPS
+#: ultralcd.cpp:6957
+msgid "Endstops"
+msgstr "Finecorsa (2)"
+
+# MSG_LANGUAGE_NAME
+#: language.c:153
+msgid "English"
+msgstr "Italiano"
+
+# MSG_Enqueing
+#: 
+msgid "enqueing \x22"
+msgstr "enqueing \x22"
+
+# MSG_STACK_ERROR c=20 r=4
+#: ultralcd.cpp:5843
+#, fuzzy
+msgid "Error - static memory has been overwritten"
+msgstr ""
+
+# MSG_SD_ERR_WRITE_TO_FILE
+#: messages.c:76
+msgid "error writing to file"
+msgstr "error writing to file"
+
+# MSG_FSENS_NOT_RESPONDING c=20 r=4
+#: ultralcd.cpp:3656
+#, fuzzy
+msgid "ERROR: Filament sensor is not responding, please check connection."
+msgstr ""
+
+# MSG_ERROR
+#: messages.c:34
+msgid "ERROR:"
+msgstr "ERRORE:"
+
+# MSG_EXTRUDER_1 c=17 r=1
+#: ultralcd.cpp:5417
+msgid "Extruder 1"
+msgstr "Estrusore 1"
+
+# MSG_EXTRUDER_2 c=17 r=1
+#: ultralcd.cpp:5418
+msgid "Extruder 2"
+msgstr "Estrusore 2"
+
+# MSG_EXTRUDER_3 c=17 r=1
+#: ultralcd.cpp:5419
+msgid "Extruder 3"
+msgstr "Estrusore 3"
+
+# MSG_EXTRUDER_4 c=17 r=1
+#: ultralcd.cpp:5420
+msgid "Extruder 4"
+msgstr "Estrusore 4"
+
+# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
+#: ultralcd.cpp:7244
+#, fuzzy
+msgid "Extruder fan:"
+msgstr ""
+
+# MSG_INFO_EXTRUDER c=15 r=1
+#: ultralcd.cpp:1840
+#, fuzzy
+msgid "Extruder info"
+msgstr ""
+
+# MSG_MOVE_E
+#: messages.c:35
+msgid "Extruder"
+msgstr "Muovi Estrusore"
+
+# MSG_FSENS_AUTOLOAD_ON c=17 r=1
+#: ultralcd.cpp:4178
+#, fuzzy
+msgid "F. autoload  [on]"
+msgstr ""
+
+# MSG_FSENS_AUTOLOAD_NA c=17 r=1
+#: messages.c:47
+#, fuzzy
+msgid "F. autoload [N/A]"
+msgstr ""
+
+# MSG_FSENS_AUTOLOAD_OFF c=17 r=1
+#: ultralcd.cpp:4181
+#, fuzzy
+msgid "F. autoload [off]"
+msgstr ""
+
+# MSG_FAN_SPEED c=14
+#: messages.c:36
+msgid "Fan speed"
+msgstr "Velocita vent."
+
+# MSG_SELFTEST_FAN c=20
+#: messages.c:82
+msgid "Fan test"
+msgstr "Prova del ventilator"
+
+# MSG_FANS_CHECK_ON c=17 r=1
+#: ultralcd.cpp:4189
+#, fuzzy
+msgid "Fans check   [on]"
+msgstr ""
+
+# MSG_FANS_CHECK_OFF c=17 r=1
+#: ultralcd.cpp:4192
+#, fuzzy
+msgid "Fans check  [off]"
+msgstr ""
+
+# MSG_FSENSOR_ON
+#: messages.c:49
+#, fuzzy
+msgid "Fil. sensor  [on]"
+msgstr ""
+
+# MSG_FSENSOR_NA
+#: ultralcd.cpp:4164
+#, fuzzy
+msgid "Fil. sensor [N/A]"
+msgstr ""
+
+# MSG_FSENSOR_OFF
+#: messages.c:48
+#, fuzzy
+msgid "Fil. sensor [off]"
+msgstr ""
+
+# MSG_FILAMENT_CLEAN c=20 r=2
+#: messages.c:37
+msgid "Filament extruding & with correct color?"
+msgstr "Il colore e' nitido?"
+
+# MSG_NOT_LOADED c=19
+#: ultralcd.cpp:2014
+msgid "Filament not loaded"
+msgstr "Fil. non caricato"
+
+# MSG_FILAMENT_SENSOR c=20
+#: ultralcd.cpp:7023
+#, fuzzy
+msgid "Filament sensor"
+msgstr ""
+
+# MSG_SELFTEST_FILAMENT_SENSOR c=18
+#: ultralcd.cpp:7253
+#, fuzzy
+msgid "Filament sensor:"
+msgstr ""
+
+# MSG_STATS_FILAMENTUSED c=20
+#: ultralcd.cpp:2142
+msgid "Filament used:  "
+msgstr "Filamento usato:"
+
+# MSG_FILE_INCOMPLETE c=20 r=2
+#: ultralcd.cpp:7396
+#, fuzzy
+msgid "File incomplete. Continue anyway?"
+msgstr ""
+
+# MSG_SD_FILE_OPENED
+#: cardreader.cpp:395
+msgid "File opened: "
+msgstr "File opened: "
+
+# MSG_SD_FILE_SELECTED
+#: cardreader.cpp:401
+msgid "File selected"
+msgstr "File selected"
+
+# MSG_FINISHING_MOVEMENTS c=20 r=1
+#: messages.c:45
+msgid "Finishing movements"
+msgstr "Arresto in corso"
+
+# MSG_V2_CALIBRATION c=17 r=1
+#: ultralcd.cpp:4513
+msgid "First layer cal."
+msgstr "Cal. primo layer."
+
+# MSG_WIZARD_SELFTEST c=20 r=8
+#: ultralcd.cpp:3989
+msgid "First, I will run the selftest to check most common assembly problems."
+msgstr "Anzitutto avviero il Self Test per controllare gli errori di assemblaggio piu comuni."
+
+# MSG_FLOW
+#: ultralcd.cpp:5932
+msgid "Flow"
+msgstr "Flusso"
+
+# MSG_PRUSA3D_FORUM
+#: ultralcd.cpp:1821
+msgid "forum.prusa3d.com"
+msgstr "forum.prusa3d.com"
+
+# MSG_SELFTEST_COOLING_FAN c=20
+#: messages.c:79
+msgid "Front print fan?"
+msgstr "Vent di stampa ant.?"
+
+# MSG_BED_CORRECTION_FRONT c=14 r=1
+#: ultralcd.cpp:2565
+msgid "Front side[um]"
+msgstr "Fronte [um]"
+
+# MSG_SELFTEST_FANS
+#: ultralcd.cpp:7015
+#, fuzzy
+msgid "Front/left fans"
+msgstr ""
+
+# MSG_SELFTEST_HEATERTHERMISTOR
+#: ultralcd.cpp:6945
+msgid "Heater/Thermistor"
+msgstr "Riscald./Termist."
+
+# MSG_BED_HEATING_SAFETY_DISABLED
+#: Marlin_main.cpp:7232
+#, fuzzy
+msgid "Heating disabled by safety timer."
+msgstr ""
+
+# MSG_HEATING_COMPLETE c=20
+#: messages.c:51
+msgid "Heating done."
+msgstr "Riscald. completo"
+
+# MSG_HEATING
+#: messages.c:50
+msgid "Heating"
+msgstr "Riscaldamento..."
+
+# MSG_WIZARD_WELCOME c=20 r=7
+#: ultralcd.cpp:3968
+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 aiuto attraverso il processo di configurazione?"
+
+# MSG_PRUSA3D_HOWTO
+#: ultralcd.cpp:1822
+msgid "howto.prusa3d.com"
+msgstr "howto.prusa3d.com"
+
+# MSG_CHANGE_EXTR c=20 r=1
+#: ultralcd.cpp:5812
+msgid "Change extruder"
+msgstr "Cambio estrusore."
+
+# MSG_FILAMENTCHANGE
+#: messages.c:42
+msgid "Change filament"
+msgstr "Camb. filamento"
+
+# MSG_CNG_SDCARD
+#: ultralcd.cpp:5777
+msgid "Change SD card"
+msgstr "Change SD card"
+
+# MSG_CHANGE_SUCCESS
+#: ultralcd.cpp:1927
+msgid "Change success!"
+msgstr "Cambio riuscito!"
+
+# MSG_CORRECTLY c=20
+#: ultralcd.cpp:2006
+msgid "Changed correctly?"
+msgstr "Cambiato corr.?"
+
+# MSG_CHANGING_FILAMENT c=20
+#: ultralcd.cpp:1899
+msgid "Changing filament!"
+msgstr "Cambiando filam."
+
+# MSG_SELFTEST_CHECK_BED c=20
+#: messages.c:85
+msgid "Checking bed     "
+msgstr "Verifica letto"
+
+# MSG_SELFTEST_CHECK_ENDSTOPS c=20
+#: ultralcd.cpp:7226
+msgid "Checking endstops"
+msgstr "Verifica finecorsa"
+
+# MSG_SELFTEST_CHECK_HOTEND c=20
+#: ultralcd.cpp:7227
+msgid "Checking hotend  "
+msgstr "Verifica ugello"
+
+# MSG_SELFTEST_CHECK_FSENSOR c=20
+#: messages.c:86
+#, fuzzy
+msgid "Checking sensors "
+msgstr ""
+
+# MSG_SELFTEST_CHECK_X c=20
+#: ultralcd.cpp:7228
+msgid "Checking X axis  "
+msgstr "Verifica asse X"
+
+# MSG_SELFTEST_CHECK_Y c=20
+#: ultralcd.cpp:7229
+msgid "Checking Y axis  "
+msgstr "Verifica asse Y"
+
+# MSG_SELFTEST_CHECK_Z c=20
+#: ultralcd.cpp:7230
+msgid "Checking Z axis  "
+msgstr "Verifica asse Z"
+
+# MSG_ERR_CHECKSUM_MISMATCH
+#: cmdqueue.cpp:444
+msgid "checksum mismatch, Last Line: "
+msgstr "checksum mismatch, Last Line: "
+
+# MSG_CHOOSE_EXTRUDER c=20 r=1
+#: messages.c:53
+msgid "Choose extruder:"
+msgstr "Seleziona estrusore:"
+
+# MSG_WIZARD_XYZ_CAL c=20 r=8
+#: ultralcd.cpp:3998
+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:4004
+msgid "I will run z calibration now."
+msgstr "Adesso avviero una Calibrazione Z."
+
+# MSG_WIZARD_V2_CAL_2 c=20 r=12
+#: ultralcd.cpp:4066
+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:2469
+msgid "Improving bed calibration point"
+msgstr "Perfezion. il letto punto di calibraz."
+
+# MSG_WATCH
+#: messages.c:101
+msgid "Info screen"
+msgstr "Schermata info"
+
+# MSG_INIT_SDCARD
+#: ultralcd.cpp:5785
+msgid "Init. SD card"
+msgstr "Init. SD card"
+
+# MSG_FILAMENT_LOADING_T0 c=20 r=4
+#: messages.c:38
+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:39
+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:40
+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:41
+msgid "Insert filament into extruder 4. Click when done."
+msgstr "Inserire filamento nell'estrusore 4. Click per continuare."
+
+# MSG_INSERT_FILAMENT c=20
+#: ultralcd.cpp:1913
+msgid "Insert filament"
+msgstr "Inserire filamento"
+
+# MSG_WIZARD_FILAMENT_LOADED c=20 r=2
+#: ultralcd.cpp:4015
+msgid "Is filament loaded?"
+msgstr "Il filamento e stato caricato?"
+
+# MSG_WIZARD_PLA_FILAMENT c=20 r=2
+#: ultralcd.cpp:4060
+msgid "Is it PLA filament?"
+msgstr "E questo un filamento di PLA?"
+
+# MSG_PLA_FILAMENT_LOADED c=20 r=2
+#: ultralcd.cpp:3924
+msgid "Is PLA filament loaded?"
+msgstr "Il PLA e stato caricato?"
+
+# MSG_STEEL_SHEET_CHECK c=20 r=2
+#: messages.c:94
+#, fuzzy
+msgid "Is steel sheet on heatbed?"
+msgstr ""
+
+# MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20
+#: mesh_bed_calibration.cpp:2211
+msgid "Iteration "
+msgstr "Reiterazione "
+
+# MSG_KILLED
+#: Marlin_main.cpp:7393
+msgid "KILLED. "
+msgstr "IN TILT."
+
+# MSG_SELFTEST_EXTRUDER_FAN c=20
+#: messages.c:80
+msgid "Left hotend fan?"
+msgstr "Vent SX sull'ugello?"
+
+# MSG_BED_CORRECTION_LEFT c=14 r=1
+#: ultralcd.cpp:2563
+msgid "Left side [um]"
+msgstr "Sinistra [um]"
+
+# MSG_LEFT c=12 r=1
+#: ultralcd.cpp:2308
+msgid "Left:"
+msgstr "Sinistra:"
+
+# MSG_BABYSTEP_Z
+#: messages.c:14
+msgid "Live adjust Z"
+msgstr "Compensazione Z"
+
+# MSG_LOAD_ALL
+#: ultralcd.cpp:5392
+msgid "Load all"
+msgstr "Caricare tutti"
+
+# MSG_LOAD_FILAMENT_1 c=17
+#: ultralcd.cpp:5393
+msgid "Load filament 1"
+msgstr "Caricare fil. 1"
+
+# MSG_LOAD_FILAMENT_2 c=17
+#: ultralcd.cpp:5394
+msgid "Load filament 2"
+msgstr "Caricare fil. 2"
+
+# MSG_LOAD_FILAMENT_3 c=17
+#: ultralcd.cpp:5395
+msgid "Load filament 3"
+msgstr "Caricare fil. 3"
+
+# MSG_LOAD_FILAMENT_4 c=17
+#: ultralcd.cpp:5396
+msgid "Load filament 4"
+msgstr "Caricare fil. 4"
+
+# MSG_LOAD_FILAMENT c=17
+#: messages.c:54
+msgid "Load filament"
+msgstr "Carica filamento"
+
+# MSG_LOADING_COLOR
+#: ultralcd.cpp:1939
+msgid "Loading color"
+msgstr "Caricando colore"
+
+# MSG_LOADING_FILAMENT c=20
+#: messages.c:55
+msgid "Loading filament"
+msgstr "Caricando filam."
+
+# MSG_LOOSE_PULLEY c=20 r=1
+#: ultralcd.cpp:6999
+msgid "Loose pulley"
+msgstr "Puleggia lenta"
+
+# MSG_M104_INVALID_EXTRUDER
+#: Marlin_main.cpp:7506
+msgid "M104 Invalid extruder "
+msgstr "M104 Invalid extruder "
+
+# MSG_M105_INVALID_EXTRUDER
+#: Marlin_main.cpp:7509
+msgid "M105 Invalid extruder "
+msgstr "M105 Invalid extruder "
+
+# MSG_M109_INVALID_EXTRUDER
+#: Marlin_main.cpp:7512
+msgid "M109 Invalid extruder "
+msgstr "M109 Invalid extruder "
+
+# MSG_M117_V2_CALIBRATION c=25 r=1
+#: messages.c:56
+msgid "M117 First layer cal."
+msgstr "M117 Cal. primo layer."
+
+# MSG_M200_INVALID_EXTRUDER
+#: Marlin_main.cpp:5378
+msgid "M200 Invalid extruder "
+msgstr "M200 Invalid extruder "
+
+# MSG_M218_INVALID_EXTRUDER
+#: Marlin_main.cpp:7515
+msgid "M218 Invalid extruder "
+msgstr "M218 Invalid extruder "
+
+# MSG_M221_INVALID_EXTRUDER
+#: Marlin_main.cpp:7518
+msgid "M221 Invalid extruder "
+msgstr "M221 Invalid extruder "
+
+# MSG_MAIN
+#: messages.c:57
+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."
+
+# MSG_MEASURED_SKEW c=15 r=1
+#: ultralcd.cpp:2335
+msgid "Measured skew:"
+msgstr "Incl. misurata:"
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
+#: messages.c:58
+msgid "Measuring reference height of calibration point"
+msgstr "Misurare l'altezza di riferimento del punto di calibrazione"
+
+# MSG_MESH_BED_LEVELING
+#: ultralcd.cpp:4528
+msgid "Mesh Bed Leveling"
+msgstr "Mesh livel. letto"
+
+# MSG_STEALTH_MODE_OFF
+#: messages.c:92
+#, fuzzy
+msgid "Mode     [Normal]"
+msgstr ""
+
+# MSG_SILENT_MODE_ON
+#: messages.c:91
+msgid "Mode     [silent]"
+msgstr "Modo [silenzioso]"
+
+# MSG_STEALTH_MODE_ON
+#: messages.c:93
+#, fuzzy
+msgid "Mode    [Stealth]"
+msgstr ""
+
+# MSG_AUTO_MODE_ON
+#: messages.c:13
+#, fuzzy
+msgid "Mode [auto power]"
+msgstr ""
+
+# MSG_SILENT_MODE_OFF
+#: messages.c:90
+msgid "Mode [high power]"
+msgstr "Mode [forte]"
+
+# MSG_SELFTEST_MOTOR
+#: messages.c:87
+msgid "Motor"
+msgstr "Motore"
+
+# MSG_MOVE_AXIS
+#: ultralcd.cpp:4142
+msgid "Move axis"
+msgstr "Muovi asse"
+
+# MSG_MOVE_X
+#: ultralcd.cpp:3557
+msgid "Move X"
+msgstr "Muovi X"
+
+# MSG_MOVE_Y
+#: ultralcd.cpp:3558
+msgid "Move Y"
+msgstr "Muovi Y"
+
+# MSG_MOVE_Z
+#: ultralcd.cpp:3559
+msgid "Move Z"
+msgstr "Muovi Z"
+
+# MSG_NEW_FIRMWARE_AVAILABLE c=20 r=2
+#: util.cpp:292
+msgid "New firmware version available:"
+msgstr "Nuova versione del firmware disponibile"
+
+# MSG_ERR_NO_CHECKSUM
+#: cmdqueue.cpp:456
+msgid "No Checksum with line number, Last Line: "
+msgstr "No Checksum with line number, Last Line: "
+
+# MSG_NO_MOVE
+#: Marlin_main.cpp:4394
+msgid "No move."
+msgstr "Nessun movimento."
+
+# MSG_NO_CARD
+#: ultralcd.cpp:5783
+msgid "No SD card"
+msgstr "Nessuna SD"
+
+# MSG_ERR_NO_THERMISTORS
+#: Marlin_main.cpp:4946
+msgid "No thermistors - no temperature"
+msgstr "No thermistors - no temperature"
+
+# MSG_NO
+#: messages.c:61
+msgid "No"
+msgstr "No"
+
+# MSG_SELFTEST_NOTCONNECTED
+#: ultralcd.cpp:6947
+msgid "Not connected"
+msgstr "Non connesso"
+
+# MSG_SELFTEST_FAN_NO c=19
+#: messages.c:83
+msgid "Not spinning"
+msgstr "Non si gira"
+
+# MSG_WIZARD_V2_CAL c=20 r=8
+#: ultralcd.cpp:4065
+msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
+msgstr "Adesso tarero lo stacco fra ugello e superfice del piatto."
+
+# MSG_WIZARD_WILL_PREHEAT c=20 r=4
+#: ultralcd.cpp:4022
+msgid "Now I will preheat nozzle for PLA."
+msgstr "Adesso preriscaldero l'ugello per PLA."
+
+# MSG_INFO_NOZZLE_FAN c=11 r=1
+#: ultralcd.cpp:1537
+#, fuzzy
+msgid "Nozzle FAN:"
+msgstr ""
+
+# MSG_NOZZLE
+#: messages.c:62
+msgid "Nozzle"
+msgstr "Ugello"
+
+# MSG_NOZZLE1
+#: ultralcd.cpp:5995
+msgid "Nozzle2"
+msgstr "Nozzle2"
+
+# MSG_NOZZLE2
+#: ultralcd.cpp:5998
+msgid "Nozzle3"
+msgstr "Nozzle3"
+
+# MSG_OK
+#: messages.c:63
+msgid "ok"
+msgstr "ok"
+
+# MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
+#: Marlin_main.cpp:1382
+#, fuzzy
+msgid "Old settings found. Default PID, Esteps etc. will be set."
+msgstr ""
+
+# MSG_SD_OPEN_FILE_FAIL
+#: cardreader.cpp:461
+msgid "open failed, File: "
+msgstr "open failed, File: "
+
+# MSG_ENDSTOP_OPEN
+#: messages.c:30
+msgid "open"
+msgstr "open"
+
+# MSG_SD_OPENROOT_FAIL
+#: cardreader.cpp:196
+msgid "openRoot failed"
+msgstr "openRoot failed"
+
+# MSG_PAUSE_PRINT
+#: ultralcd.cpp:5757
+msgid "Pause print"
+msgstr "Metti in pausa"
+
+# MSG_PICK_Z
+#: ultralcd.cpp:3463
+msgid "Pick print"
+msgstr "Pick print"
+
+# MSG_PID_RUNNING c=20 r=1
+#: ultralcd.cpp:1366
+msgid "PID cal.           "
+msgstr "Cal. PID"
+
+# MSG_PID_FINISHED c=20 r=1
+#: ultralcd.cpp:1372
+msgid "PID cal. finished"
+msgstr "Cal. PID completa"
+
+# MSG_PID_EXTRUDER c=17 r=1
+#: ultralcd.cpp:4534
+msgid "PID calibration"
+msgstr "Calibrazione PID"
+
+# MSG_PINDA_PREHEAT c=20 r=1
+#: ultralcd_implementation_hitachi_HD44780.h:1023
+msgid "PINDA Heating"
+msgstr "Riscald. PINDA"
+
+# MSG_PAPER c=20 r=8
+#: 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 "Porre un foglio sotto l'ugello durante la calibrazione dei primi 4 punti. In caso l'ugello muova il foglio spegnere prontamente la stampante."
+
+# MSG_WIZARD_CLEAN_HEATBED c=20 r=8
+#: ultralcd.cpp:4073
+msgid "Please clean heatbed and then press the knob."
+msgstr "Per favore pulisci il piatto, poi premi la manopola."
+
+# MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
+#: messages.c:23
+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:6939
+msgid "Please check :"
+msgstr "Verificare:"
+
+# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
+#: messages.c:102
+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:4046
+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_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:3929
+msgid "Please load PLA filament first."
+msgstr "Per favore prima caricare filamento di PLA."
+
+# MSG_CHECK_IDLER c=20 r=4
+#: Marlin_main.cpp:6166
+#, fuzzy
+msgid "Please open idler and remove filament manually."
+msgstr ""
+
+# MSG_PLACE_STEEL_SHEET c=20 r=4
+#: messages.c:65
+#, fuzzy
+msgid "Please place steel sheet on heatbed."
+msgstr ""
+
+# MSG_PRESS_TO_UNLOAD c=20 r=4
+#: messages.c:69
+#, fuzzy
+msgid "Please press the knob to unload filament"
+msgstr ""
+
+# MSG_PULL_OUT_FILAMENT c=20 r=4
+#: messages.c:71
+#, fuzzy
+msgid "Please pull out filament immediately"
+msgstr ""
+
+# MSG_REMOVE_STEEL_SHEET c=20 r=4
+#: messages.c:75
+#, fuzzy
+msgid "Please remove steel sheet from heatbed."
+msgstr ""
+
+# MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20
+#: util.cpp:296
+msgid "Please upgrade."
+msgstr "Prega aggiorna."
+
+# MSG_PLEASE_WAIT c=20
+#: messages.c:66
+msgid "Please wait"
+msgstr "Aspetta"
+
+# MSG_POWERUP
+#: messages.c:67
+msgid "PowerUp"
+msgstr "PowerUp"
+
+# MSG_PREHEAT_NOZZLE c=20
+#: messages.c:68
+msgid "Preheat the nozzle!"
+msgstr "Preris. ugello!"
+
+# MSG_PREHEAT
+#: ultralcd.cpp:5746
+msgid "Preheat"
+msgstr "Preriscalda"
+
+# MSG_WIZARD_HEATING c=20 r=3
+#: messages.c:104
+msgid "Preheating nozzle. Please wait."
+msgstr "Sto preriscaldando l'ugello. Per favore attendi."
+
+# MSG_PREPARE_FILAMENT c=20 r=1
+#: ultralcd.cpp:1911
+msgid "Prepare new filament"
+msgstr "Preparare filamento"
+
+# MSG_PRESS_TO_PREHEAT c=20 r=4
+#: Marlin_main.cpp:6025
+#, fuzzy
+msgid "Press knob to preheat nozzle and continue."
+msgstr ""
+
+# MSG_PRINT_ABORTED c=20
+#: messages.c:70
+msgid "Print aborted"
+msgstr "Stampa abortita"
+
+# MSG_INFO_PRINT_FAN c=11 r=1
+#: ultralcd.cpp:1549
+#, fuzzy
+msgid "Print FAN: "
+msgstr ""
+
+# MSG_SELFTEST_PRINT_FAN_SPEED c=18
+#: ultralcd.cpp:7247
+#, fuzzy
+msgid "Print fan:"
+msgstr ""
+
+# MSG_CARD_MENU
+#: messages.c:22
+msgid "Print from SD"
+msgstr "Stampa da SD"
+
+# MSG_PRINT_PAUSED c=20 r=1
+#: ultralcd.cpp:642
+msgid "Print paused"
+msgstr "Stampa in pausa"
+
+# 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
+#, fuzzy
+msgid "Printer disconnected"
+msgstr ""
+
+# MSG_ERR_KILLED
+#: Marlin_main.cpp:7388
+msgid "Printer halted. kill() called!"
+msgstr "Printer halted. kill() called!"
+
+# MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
+#: messages.c:46
+msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
+msgstr "Stampante ancora non calibrata. Si prega di seguire il manuale, capitolo PRIMI PASSI, sezione della calibrazione."
+
+# MSG_ERR_STOPPED
+#: messages.c:33
+msgid "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"
+msgstr "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"
+
+# WELCOME_MSG c=20
+#: 
+msgid "Prusa i3 MK3 ready."
+msgstr "Prusa i3 MK3 pronta."
+
+# MSG_PRUSA3D
+#: ultralcd.cpp:1820
+msgid "prusa3d.com"
+msgstr "prusa3d.com"
+
+# MSG_BED_CORRECTION_REAR c=14 r=1
+#: ultralcd.cpp:2566
+msgid "Rear side [um]"
+msgstr "Retro [um]"
+
+# MSG_RECOVERING_PRINT c=20 r=1
+#: Marlin_main.cpp:8289
+#, fuzzy
+msgid "Recovering print    "
+msgstr ""
+
+# MSG_M119_REPORT
+#: Marlin_main.cpp:5297
+msgid "Reporting endstop status"
+msgstr "Reporting endstop status"
+
+# MSG_RESEND
+#: Marlin_main.cpp:6911
+msgid "Resend: "
+msgstr "Resend: "
+
+# MSG_CALIBRATE_BED_RESET
+#: ultralcd.cpp:4539
+msgid "Reset XYZ calibr."
+msgstr "Reset XYZ calibr."
+
+# MSG_BED_CORRECTION_RESET
+#: ultralcd.cpp:2567
+msgid "Reset"
+msgstr "Reset"
+
+# MSG_RESUME_PRINT
+#: ultralcd.cpp:5761
+msgid "Resume print"
+msgstr "Riprendi stampa"
+
+# MSG_RESUMING_PRINT
+#: messages.c:74
+msgid "Resuming print"
+msgstr "Riprendi stampa"
+
+# MSG_BED_CORRECTION_RIGHT c=14 r=1
+#: ultralcd.cpp:2564
+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 "Girare la manopola affinche' il segno raggiunga il corpo dell'estrusore. Click per continuare."
+
+# MSG_SECOND_SERIAL_ON c=17 r=1
+#: ultralcd.cpp:4227
+#, fuzzy
+msgid "RPi port     [on]"
+msgstr ""
+
+# MSG_SECOND_SERIAL_OFF c=17 r=1
+#: ultralcd.cpp:4224
+#, fuzzy
+msgid "RPi port    [off]"
+msgstr ""
+
+# MSG_WIZARD_RERUN c=20 r=7
+#: ultralcd.cpp:3947
+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:4240
+msgid "SD card  [normal]"
+msgstr "SD card [normal]"
+
+# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
+#: ultralcd.cpp:4238
+msgid "SD card [FlshAir]"
+msgstr "SD card [FlshAir]"
+
+# MSG_SD_CARD_OK
+#: cardreader.cpp:202
+msgid "SD card ok"
+msgstr "SD card ok"
+
+# MSG_SD_INIT_FAIL
+#: cardreader.cpp:186
+msgid "SD init fail"
+msgstr "SD init fail"
+
+# MSG_SD_PRINTING_BYTE
+#: cardreader.cpp:516
+msgid "SD printing byte "
+msgstr "SD printing byte "
+
+# MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
+#: messages.c:43
+msgid "Searching bed calibration point"
+msgstr "Ricerca del letto punto di calibraz."
+
+# MSG_LANGUAGE_SELECT
+#: ultralcd.cpp:4235
+msgid "Select language"
+msgstr "Seleziona lingua"
+
+# MSG_SELFTEST_OK
+#: ultralcd.cpp:6505
+msgid "Self test OK"
+msgstr "Autotest OK"
+
+# MSG_SELFTEST_START c=20
+#: ultralcd.cpp:6342
+msgid "Self test start  "
+msgstr "Avvia autotest"
+
+# MSG_SELFTEST
+#: ultralcd.cpp:4515
+msgid "Selftest         "
+msgstr "Autotest"
+
+# MSG_SELFTEST_ERROR
+#: ultralcd.cpp:6937
+msgid "Selftest error !"
+msgstr "Autotest negativo"
+
+# MSG_SELFTEST_FAILED c=20
+#: messages.c:81
+msgid "Selftest failed  "
+msgstr "Autotest fallito"
+
+# MSG_FORCE_SELFTEST c=20 r=8
+#: Marlin_main.cpp:1414
+#, fuzzy
+msgid "Selftest will be run to calibrate accurate sensorless rehoming."
+msgstr ""
+
+# MSG_SET_TEMPERATURE c=19 r=1
+#: ultralcd.cpp:2575
+msgid "Set temperature:"
+msgstr "Imposta temperatura"
+
+# MSG_SETTINGS
+#: messages.c:89
+msgid "Settings"
+msgstr "Impostazioni"
+
+# MSG_SEVERE_SKEW c=15 r=1
+#: ultralcd.cpp:2346
+msgid "Severe skew:"
+msgstr "Inc. rilevante:"
+
+# MSG_SHOW_END_STOPS c=17 r=1
+#: ultralcd.cpp:4536
+msgid "Show end stops"
+msgstr "Stato finecorsa"
+
+# MSG_DWELL
+#: Marlin_main.cpp:3281
+msgid "Sleep..."
+msgstr "Sospensione..."
+
+# MSG_SLIGHT_SKEW c=15 r=1
+#: ultralcd.cpp:2342
+msgid "Slight skew:"
+msgstr "Incl. leggera:"
+
+# MSG_FILE_CNT c=20 r=4
+#: cardreader.cpp:754
+#, fuzzy
+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:4250
+#, fuzzy
+msgid "Sort:      [None]"
+msgstr ""
+
+# MSG_SORT_TIME c=17 r=1
+#: ultralcd.cpp:4248
+#, fuzzy
+msgid "Sort:      [Time]"
+msgstr ""
+
+# MSG_SORT_ALPHA c=17 r=1
+#: ultralcd.cpp:4249
+#, fuzzy
+msgid "Sort:  [Alphabet]"
+msgstr ""
+
+# MSG_SORTING c=20 r=1
+#: cardreader.cpp:761
+#, fuzzy
+msgid "Sorting files"
+msgstr ""
+
+# MSG_SPEED
+#: ultralcd.cpp:5926
+msgid "Speed"
+msgstr "Velocita"
+
+# MSG_SELFTEST_FAN_YES c=19
+#: messages.c:84
+msgid "Spinning"
+msgstr "Gira"
+
+# MSG_TEMP_CAL_WARNING c=20 r=4
+#: Marlin_main.cpp:3551
+#, fuzzy
+msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
+msgstr ""
+
+# MSG_STATISTICS
+#: ultralcd.cpp:5824
+msgid "Statistics  "
+msgstr "Statistiche"
+
+# MSG_STEPPER_TOO_HIGH
+#: stepper.cpp:345
+msgid "Steprate too high: "
+msgstr "Steprate too high: "
+
+# MSG_STOP_PRINT
+#: messages.c:95
+msgid "Stop print"
+msgstr "Arresta stampa"
+
+# MSG_STOPPED
+#: messages.c:96
+msgid "STOPPED. "
+msgstr "ARRESTATO."
+
+# MSG_SUPPORT
+#: ultralcd.cpp:5831
+msgid "Support"
+msgstr "Support"
+
+# MSG_SELFTEST_SWAPPED
+#: ultralcd.cpp:7017
+#, fuzzy
+msgid "Swapped"
+msgstr ""
+
+# MSG_TEMP_CALIBRATION c=20 r=1
+#: messages.c:97
+msgid "Temp. cal.          "
+msgstr "Cal. temp. "
+
+# MSG_TEMP_CALIBRATION_ON c=20 r=1
+#: ultralcd.cpp:4220
+msgid "Temp. cal.   [on]"
+msgstr "Cal. temp. [ON]"
+
+# MSG_TEMP_CALIBRATION_OFF c=20 r=1
+#: ultralcd.cpp:4217
+msgid "Temp. cal.  [off]"
+msgstr "Cal. temp. [OFF]"
+
+# MSG_CALIBRATION_PINDA_MENU c=17 r=1
+#: ultralcd.cpp:4545
+msgid "Temp. calibration"
+msgstr "Taratura temp."
+
+# MSG_TEMP_CAL_FAILED c=20 r=8
+#: ultralcd.cpp:3189
+#, fuzzy
+msgid "Temperature calibration failed"
+msgstr ""
+
+# MSG_PINDA_NOT_CALIBRATED c=20 r=4
+#: Marlin_main.cpp:1403
+msgid "Temperature calibration has not been run yet"
+msgstr "Taratura della temperatura non ancora eseguita"
+
+# MSG_TEMP_CALIBRATION_DONE c=20 r=12
+#: messages.c:98
+msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
+msgstr "Taratura temperatura terminata. Fare click per continuare."
+
+# MSG_TEMPERATURE
+#: ultralcd.cpp:4139
+msgid "Temperature"
+msgstr "Temperatura"
+
+# MSG_MENU_TEMPERATURES c=15 r=1
+#: ultralcd.cpp:1846
+#, fuzzy
+msgid "Temperatures"
+msgstr ""
+
+# MSG_STATS_TOTALFILAMENT c=20
+#: ultralcd.cpp:2186
+msgid "Total filament :"
+msgstr "Filamento tot:"
+
+# MSG_STATS_TOTALPRINTTIME c=20
+#: ultralcd.cpp:2203
+msgid "Total print time :"
+msgstr "Tempo stampa tot:"
+
+# MSG_ENDSTOP_HIT
+#: messages.c:29
+msgid "TRIGGERED"
+msgstr "TRIGGERED"
+
+# MSG_TUNE
+#: ultralcd.cpp:5743
+msgid "Tune"
+msgstr "Regola"
+
+# MSG_UNLOAD_ALL
+#: ultralcd.cpp:5405
+msgid "Unload all"
+msgstr "Rilasciare tutti"
+
+# MSG_UNLOAD_FILAMENT_1 c=17
+#: ultralcd.cpp:5406
+msgid "Unload filament 1"
+msgstr "Rilasciare fil. 1"
+
+# MSG_UNLOAD_FILAMENT_2 c=17
+#: ultralcd.cpp:5407
+msgid "Unload filament 2"
+msgstr "Rilasciare fil. 1"
+
+# MSG_UNLOAD_FILAMENT_3 c=17
+#: ultralcd.cpp:5408
+msgid "Unload filament 3"
+msgstr "Rilasciare fil. 1"
+
+# MSG_UNLOAD_FILAMENT_4 c=17
+#: ultralcd.cpp:5409
+msgid "Unload filament 4"
+msgstr "Rilasciare fil. 1"
+
+# MSG_UNLOAD_FILAMENT c=17
+#: messages.c:99
+msgid "Unload filament"
+msgstr "Scarica filamento"
+
+# MSG_UNLOADING_FILAMENT c=20 r=1
+#: messages.c:100
+msgid "Unloading filament"
+msgstr "Rilasc. filamento"
+
+# MSG_USED c=19 r=1
+#: ultralcd.cpp:4858
+msgid "Used during print"
+msgstr "Usati nella stampa"
+
+# MSG_MENU_VOLTAGES c=15 r=1
+#: ultralcd.cpp:1849
+#, fuzzy
+msgid "Voltages"
+msgstr ""
+
+# MSG_SD_VOL_INIT_FAIL
+#: cardreader.cpp:191
+msgid "volume.init failed"
+msgstr "volume.init failed"
+
+# MSG_USERWAIT
+#: Marlin_main.cpp:4359
+msgid "Wait for user..."
+msgstr "Attendendo utente"
+
+# MSG_WAITING_TEMP c=20 r=3
+#: ultralcd.cpp:2719
+msgid "Waiting for nozzle and bed cooling"
+msgstr "In attesa del raffreddamento della testina e del piatto"
+
+# MSG_WAITING_TEMP_PINDA c=20 r=3
+#: ultralcd.cpp:2683
+#, fuzzy
+msgid "Waiting for PINDA probe cooling"
+msgstr ""
+
+# MSG_CHANGED_BOTH c=20 r=4
+#: Marlin_main.cpp:1374
+#, fuzzy
+msgid "Warning: both printer type and motherboard type changed."
+msgstr ""
+
+# MSG_CHANGED_MOTHERBOARD c=20 r=4
+#: Marlin_main.cpp:1366
+#, fuzzy
+msgid "Warning: motherboard type changed."
+msgstr ""
+
+# MSG_CHANGED_PRINTER c=20 r=4
+#: Marlin_main.cpp:1370
+#, fuzzy
+msgid "Warning: printer type changed."
+msgstr ""
+
+# MSG_FW_VERSION_UNKNOWN c=20 r=8
+#: Marlin_main.cpp:946
+#, fuzzy
+msgid "WARNING: This is an unofficial, unsupported build. Use at your own risk!"
+msgstr ""
+
+# MSG_UNLOAD_SUCCESSFUL c=20 r=2
+#: Marlin_main.cpp:6165
+#, fuzzy
+msgid "Was filament unload successful?"
+msgstr ""
+
+# MSG_SELFTEST_WIRINGERROR
+#: messages.c:88
+msgid "Wiring error"
+msgstr "Errore cablaggio"
+
+# MSG_WIZARD c=17 r=1
+#: ultralcd.cpp:4512
+msgid "Wizard"
+msgstr "Wizard"
+
+# MSG_SD_WORKDIR_FAIL
+#: messages.c:78
+msgid "workDir open failed"
+msgstr "workDir open failed"
+
+# MSG_SD_WRITE_TO_FILE
+#: cardreader.cpp:424
+msgid "Writing to file: "
+msgstr "Writing to file: "
+
+# MSG_XYZ_DETAILS c=19 r=1
+#: ultralcd.cpp:1839
+msgid "XYZ cal. details"
+msgstr "XYZ Cal. dettagli"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
+#: ultralcd.cpp:3159
+msgid "XYZ calibration all right. Skew will be corrected automatically."
+msgstr "Calibrazion XYZ corretta. La distorsione verra' automaticamente compensata."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
+#: ultralcd.cpp:3156
+msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
+msgstr "Calibrazion XYZ corretta. Assi X/Y leggermente storti. Ben fatto!"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
+#: ultralcd.cpp:3137
+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:3143
+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:3140
+msgid "XYZ calibration compromised. Right front calibration point not reachable."
+msgstr "Calibrazione XYZ compromessa. Punto anteriore destro non raggiungibile."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=8
+#: ultralcd.cpp:3119
+msgid "XYZ calibration failed. Bed calibration point was not found."
+msgstr "Calibrazione XYZ fallita. Il punto di calibrazione sul letto non e' stato trovato."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=8
+#: ultralcd.cpp:3125
+msgid "XYZ calibration failed. Front calibration points not reachable."
+msgstr "Calibrazione XYZ fallita. Punti anteriori non raggiungibili."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8
+#: ultralcd.cpp:3131
+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:20
+msgid "XYZ calibration failed. Please consult the manual."
+msgstr "Calibrazione XYZ fallita. Si prega di consultare il manuale."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=8
+#: ultralcd.cpp:3128
+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:3153
+msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
+msgstr "Calibrazione XYZ OK. Gli assi X/Y sono perpendicolari. Complimenti!"
+
+# MSG_Y_DISTANCE_FROM_MIN c=20 r=1
+#: ultralcd.cpp:2306
+msgid "Y distance from min:"
+msgstr "Distanza Y da min:"
+
+# MSG_YES
+#: messages.c:106
+msgid "Yes"
+msgstr "Si"
+
+# MSG_FW_VERSION_ALPHA c=20 r=8
+#: Marlin_main.cpp:930
+#, fuzzy
+msgid "You are using firmware alpha version. This is development version. Using this version is not recommended and may cause printer damage."
+msgstr ""
+
+# MSG_FW_VERSION_BETA c=20 r=8
+#: Marlin_main.cpp:931
+#, fuzzy
+msgid "You are using firmware beta version. This is development version. Using this version is not recommended and may cause printer damage."
+msgstr ""
+
+# MSG_WIZARD_QUIT c=20 r=8
+#: messages.c:105
+msgid "You can always resume the Wizard from Calibration -> Wizard."
+msgstr "E possibile proseguire la guide Wizard in qualsiasi momento attraverso Calibrazione -> Wizard."
+

+ 1788 - 292
lang/po/lang_pl.po

@@ -1,292 +1,1788 @@
-# Translation into Polish.
-#
-msgid ""
-msgstr ""
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ultralcd.cpp:6304
-msgid "  [off"
-msgstr ""
-
-#: ultralcd.cpp:2362
-msgid "[0;0] point offset"
-msgstr ""
-
-#: ultralcd.cpp:3613
-msgid "\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode"
-msgstr ""
-
-#: ultralcd.cpp:3626
-msgid "\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode"
-msgstr ""
-
-#: ultralcd.cpp:5796
-msgid "AutoLoad filament"
-msgstr ""
-
-#: ultralcd.cpp:3642
-msgid "Autoloading filament available only when filament sensor is turned on..."
-msgstr ""
-
-#: ultralcd.cpp:2089
-msgid "Autoloading filament is active, just press the knob and insert filament..."
-msgstr ""
-
-#: ultralcd.cpp:6999
-msgid "Axis length"
-msgstr ""
-
-#: ultralcd.cpp:7001
-msgid "Axis"
-msgstr ""
-
-#: ultralcd.cpp:1738
-msgid "Belt status"
-msgstr ""
-
-#: messages.c:72
-msgid "Blackout occurred. Recover print?"
-msgstr ""
-
-#: messages.c:28
-msgid "Crash det.   [on]"
-msgstr ""
-
-#: messages.c:26
-msgid "Crash det.  [N/A]"
-msgstr ""
-
-#: messages.c:27
-msgid "Crash det.  [off]"
-msgstr ""
-
-#: messages.c:25
-msgid "Crash detected."
-msgstr ""
-
-#: ultralcd.cpp:4213
-msgid "E-correct"
-msgstr ""
-
-#: ultralcd.cpp:5835
-msgid "Error - static memory has been overwritten"
-msgstr ""
-
-#: ultralcd.cpp:3656
-msgid "ERROR: Filament sensor is not responding, please check connection."
-msgstr ""
-
-#: ultralcd.cpp:7236
-msgid "Extruder fan:"
-msgstr ""
-
-#: ultralcd.cpp:1840
-msgid "Extruder info"
-msgstr ""
-
-#: ultralcd.cpp:4178
-msgid "F. autoload  [on]"
-msgstr ""
-
-#: messages.c:47
-msgid "F. autoload [N/A]"
-msgstr ""
-
-#: ultralcd.cpp:4181
-msgid "F. autoload [off]"
-msgstr ""
-
-#: ultralcd.cpp:4189
-msgid "Fans check   [on]"
-msgstr ""
-
-#: ultralcd.cpp:4192
-msgid "Fans check  [off]"
-msgstr ""
-
-#: messages.c:49
-msgid "Fil. sensor  [on]"
-msgstr ""
-
-#: ultralcd.cpp:4164
-msgid "Fil. sensor [N/A]"
-msgstr ""
-
-#: messages.c:48
-msgid "Fil. sensor [off]"
-msgstr ""
-
-#: ultralcd.cpp:7015
-msgid "Filament sensor"
-msgstr ""
-
-#: ultralcd.cpp:7245
-msgid "Filament sensor:"
-msgstr ""
-
-#: ultralcd.cpp:7388
-msgid "File incomplete. Continue anyway?"
-msgstr ""
-
-#: ultralcd.cpp:7007
-msgid "Front/left fans"
-msgstr ""
-
-#: Marlin_main.cpp:7190
-msgid "Heating disabled by safety timer."
-msgstr ""
-
-#: messages.c:85
-msgid "Checking sensors "
-msgstr ""
-
-#: messages.c:93
-msgid "Is steel sheet on heatbed?"
-msgstr ""
-
-#: messages.c:91
-msgid "Mode     [Normal]"
-msgstr ""
-
-#: messages.c:92
-msgid "Mode    [Stealth]"
-msgstr ""
-
-#: messages.c:13
-msgid "Mode [auto power]"
-msgstr ""
-
-#: ultralcd.cpp:1537
-msgid "Nozzle FAN:"
-msgstr ""
-
-#: Marlin_main.cpp:1364
-msgid "Old settings found. Default PID, Esteps etc. will be set."
-msgstr ""
-
-#: Marlin_main.cpp:6124
-msgid "Please open idler and remove filament manually."
-msgstr ""
-
-#: messages.c:65
-msgid "Please place steel sheet on heatbed."
-msgstr ""
-
-#: messages.c:69
-msgid "Please press the knob to unload filament"
-msgstr ""
-
-#: messages.c:71
-msgid "Please pull out filament immediately"
-msgstr ""
-
-#: messages.c:74
-msgid "Please remove steel sheet from heatbed."
-msgstr ""
-
-#: Marlin_main.cpp:5983
-msgid "Press knob to preheat nozzle and continue."
-msgstr ""
-
-#: ultralcd.cpp:1549
-msgid "Print FAN: "
-msgstr ""
-
-#: ultralcd.cpp:7239
-msgid "Print fan:"
-msgstr ""
-
-#: ultralcd.cpp:607
-msgid "Printer disconnected"
-msgstr ""
-
-#: Marlin_main.cpp:8247
-msgid "Recovering print    "
-msgstr ""
-
-#: ultralcd.cpp:4227
-msgid "RPi port     [on]"
-msgstr ""
-
-#: ultralcd.cpp:4224
-msgid "RPi port    [off]"
-msgstr ""
-
-#: Marlin_main.cpp:1396
-msgid "Selftest will be run to calibrate accurate sensorless rehoming."
-msgstr ""
-
-#: cardreader.cpp:754
-msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
-msgstr ""
-
-#: ultralcd.cpp:4250
-msgid "Sort:      [None]"
-msgstr ""
-
-#: ultralcd.cpp:4248
-msgid "Sort:      [Time]"
-msgstr ""
-
-#: ultralcd.cpp:4249
-msgid "Sort:  [Alphabet]"
-msgstr ""
-
-#: cardreader.cpp:761
-msgid "Sorting files"
-msgstr ""
-
-#: Marlin_main.cpp:3504
-msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
-msgstr ""
-
-#: ultralcd.cpp:7009
-msgid "Swapped"
-msgstr ""
-
-#: ultralcd.cpp:3189
-msgid "Temperature calibration failed"
-msgstr ""
-
-#: ultralcd.cpp:1846
-msgid "Temperatures"
-msgstr ""
-
-#: ultralcd.cpp:1849
-msgid "Voltages"
-msgstr ""
-
-#: ultralcd.cpp:2683
-msgid "Waiting for PINDA probe cooling"
-msgstr ""
-
-#: Marlin_main.cpp:1356
-msgid "Warning: both printer type and motherboard type changed."
-msgstr ""
-
-#: Marlin_main.cpp:1348
-msgid "Warning: motherboard type changed."
-msgstr ""
-
-#: Marlin_main.cpp:1352
-msgid "Warning: printer type changed."
-msgstr ""
-
-#: Marlin_main.cpp:946
-msgid "WARNING: This is an unofficial, unsupported build. Use at your own risk!"
-msgstr ""
-
-#: Marlin_main.cpp:6123
-msgid "Was filament unload successful?"
-msgstr ""
-
-#: 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 ""
-
-#: 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 ""
-
+# Translation of Prusa-Firmware into Polish.
+#
+msgid ""
+msgstr ""
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: pl\n"
+"Project-Id-Version: Prusa-Firmware\n"
+"POT-Creation-Date: Sun Jun 3 19:35:55 2018\n"
+"PO-Revision-Date: Sun Jun 3 19:35:55 2018\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_EXTRUDER_CORRECTION_OFF c=6
+#: ultralcd.cpp:6312
+#, fuzzy
+msgid "  [off"
+msgstr ""
+
+# MSG_PLANNER_BUFFER_BYTES
+#: Marlin_main.cpp:1085
+msgid "  PlannerBufferBytes: "
+msgstr " PlannerBufferBytes: "
+
+# MSG_FACTOR
+#: ultralcd.cpp:6008
+msgid " \002 Fact"
+msgstr " \002 Fact"
+
+# MSG_MAX
+#: ultralcd.cpp:6007
+msgid " \002 Max"
+msgstr " \002 Max"
+
+# MSG_MIN
+#: ultralcd.cpp:6006
+msgid " \002 Min"
+msgstr " \002 Min"
+
+# MSG_ERR_COLD_EXTRUDE_STOP
+#: planner.cpp:745
+msgid " cold extrusion prevented"
+msgstr " cold extrusion prevented"
+
+# MSG_FREE_MEMORY
+#: Marlin_main.cpp:1083
+msgid " Free Memory: "
+msgstr " Free Memory: "
+
+# MSG_CONFIGURATION_VER
+#: Marlin_main.cpp:1073
+msgid " Last Updated: "
+msgstr " Last Updated: "
+
+# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
+#: messages.c:44
+msgid " of 4"
+msgstr " z 4"
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
+#: messages.c:59
+msgid " of 9"
+msgstr " z 9"
+
+# MSG_MEASURED_OFFSET
+#: ultralcd.cpp:2362
+#, fuzzy
+msgid "[0;0] point offset"
+msgstr ""
+
+# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
+#: ultralcd.cpp:3613
+#, fuzzy
+msgid "\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode"
+msgstr ""
+
+# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
+#: ultralcd.cpp:3626
+#, fuzzy
+msgid "\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode"
+msgstr ""
+
+# MSG_REFRESH
+#: 
+msgid "\xf8Refresh"
+msgstr "\xf8Obnovit"
+
+# MSG_BABYSTEPPING_Z c=20
+#: ultralcd.cpp:2487
+msgid "Adjusting Z"
+msgstr "Dostrojenie Z"
+
+# MSG_SELFTEST_CHECK_ALLCORRECT c=20
+#: ultralcd.cpp:7235
+msgid "All correct      "
+msgstr "Wszystko OK "
+
+# MSG_WIZARD_DONE c=20 r=8
+#: messages.c:103
+msgid "All is done. Happy printing!"
+msgstr "Gotowe. Udanego druku!"
+
+# MSG_ALL c=19 r=1
+#: messages.c:11
+msgid "All"
+msgstr "Wszystko"
+
+# MSG_PRESS c=20
+#: ultralcd.cpp:1916
+msgid "and press the knob"
+msgstr "Nacisnij przycisk"
+
+# MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
+#: ultralcd.cpp:2803
+msgid "Are left and right Z~carriages all up?"
+msgstr "Oba wozki dojechaly do gornej ramy?"
+
+# MSG_ADJUSTZ
+#: ultralcd.cpp:2600
+msgid "Auto adjust Z?"
+msgstr "Autodostroic Z?"
+
+# MSG_AUTO_HOME
+#: messages.c:12
+msgid "Auto home"
+msgstr "Auto home"
+
+# MSG_AUTOLOAD_FILAMENT c=17
+#: ultralcd.cpp:5803
+#, fuzzy
+msgid "AutoLoad filament"
+msgstr ""
+
+# MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
+#: ultralcd.cpp:3642
+#, fuzzy
+msgid "Autoloading filament available only when filament sensor is turned on..."
+msgstr ""
+
+# MSG_AUTOLOADING_ENABLED c=20 r=4
+#: ultralcd.cpp:2089
+#, fuzzy
+msgid "Autoloading filament is active, just press the knob and insert filament..."
+msgstr ""
+
+# MSG_SELFTEST_AXIS_LENGTH
+#: ultralcd.cpp:7007
+#, fuzzy
+msgid "Axis length"
+msgstr ""
+
+# MSG_SELFTEST_AXIS
+#: ultralcd.cpp:7009
+#, fuzzy
+msgid "Axis"
+msgstr ""
+
+# 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_SELFTEST_BEDHEATER
+#: ultralcd.cpp:6951
+msgid "Bed / Heater"
+msgstr "Bed / Heater"
+
+# MSG_BED_DONE
+#: messages.c:17
+msgid "Bed done"
+msgstr "Stolik OK."
+
+# MSG_BED_HEATING
+#: messages.c:18
+msgid "Bed Heating"
+msgstr "Grzanie stolika.."
+
+# MSG_BED_CORRECTION_MENU
+#: ultralcd.cpp:4533
+msgid "Bed level correct"
+msgstr "Korekta podkladki"
+
+# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
+#: messages.c:19
+msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
+msgstr "Kalibracja nieudana. Sensor nie dotknal. Zanieczysz. dysza? Czekam na reset."
+
+# MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4
+#: Marlin_main.cpp:4031
+msgid "Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset."
+msgstr "Kalibracja nieudana. Sensor odlaczony lub uszkodz. kabel. Czekam na reset."
+
+# MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4
+#: Marlin_main.cpp:4035
+msgid "Bed leveling failed. Sensor triggered too high. Waiting for reset."
+msgstr "Kalibracja Z nieudana. Sensor dotk. za wysoko. Czekam na reset."
+
+# MSG_BED
+#: messages.c:16
+msgid "Bed"
+msgstr "Stolik"
+
+# MSG_BEGIN_FILE_LIST
+#: Marlin_main.cpp:4405
+msgid "Begin file list"
+msgstr "Begin file list"
+
+# MSG_MENU_BELT_STATUS c=15 r=1
+#: ultralcd.cpp:1738
+#, fuzzy
+msgid "Belt status"
+msgstr ""
+
+# MSG_RECOVER_PRINT c=20 r=2
+#: messages.c:72
+#, fuzzy
+msgid "Blackout occurred. Recover print?"
+msgstr ""
+
+# MSG_CALIBRATE_E c=20 r=1
+#: ultralcd.cpp:4526
+msgid "Calibrate E"
+msgstr "Kalibruj E"
+
+# MSG_CALIBRATE_BED
+#: ultralcd.cpp:4522
+msgid "Calibrate XYZ"
+msgstr "Kalibracja XYZ"
+
+# MSG_HOMEYZ
+#: messages.c:52
+msgid "Calibrate Z"
+msgstr "Kalibruj Z"
+
+# MSG_CALIBRATE_PINDA c=17 r=1
+#: ultralcd.cpp:3794
+msgid "Calibrate"
+msgstr "Skalibrowac"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
+#: ultralcd.cpp:2756
+msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "Kalibracja XYZ. Przekrec galke, aby przesunac os Z do gornych krancowek. Nacisnij, by potwierdzic."
+
+# MSG_CALIBRATE_Z_AUTO
+#: messages.c:21
+msgid "Calibrating Z"
+msgstr "Kalibruje Z"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
+#: ultralcd.cpp:2756
+msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "Kalibracja Z. Przekrec galke, aby przesunac os Z do gornych krancowek. Nacisnij, by potwierdzic."
+
+# MSG_HOMEYZ_DONE
+#: ultralcd_implementation_hitachi_HD44780.h:989
+msgid "Calibration done"
+msgstr "Kalibracja OK"
+
+# MSG_MENU_CALIBRATION
+#: messages.c:60
+msgid "Calibration"
+msgstr "Kalibracja"
+
+# MSG_SD_CANT_ENTER_SUBDIR
+#: cardreader.cpp:679
+msgid "Cannot enter subdir: "
+msgstr "Cannot enter subdir: "
+
+# MSG_SD_CANT_OPEN_SUBDIR
+#: cardreader.cpp:97
+msgid "Cannot open subdir"
+msgstr "Cannot open subdir"
+
+# MSG_SD_INSERTED
+#: ultralcd.cpp:7550
+msgid "Card inserted"
+msgstr "Karta wlozona"
+
+# MSG_SD_REMOVED
+#: ultralcd.cpp:7556
+msgid "Card removed"
+msgstr "Karta wyjeta"
+
+# MSG_NOT_COLOR
+#: ultralcd.cpp:2018
+msgid "Color not correct"
+msgstr "Kolor zanieczysz."
+
+# MSG_COOLDOWN
+#: messages.c:24
+msgid "Cooldown"
+msgstr "Wychlodzic"
+
+# MSG_CRASHDETECT_ON
+#: messages.c:28
+#, fuzzy
+msgid "Crash det.   [on]"
+msgstr ""
+
+# MSG_CRASHDETECT_NA
+#: messages.c:26
+#, fuzzy
+msgid "Crash det.  [N/A]"
+msgstr ""
+
+# MSG_CRASHDETECT_OFF
+#: messages.c:27
+#, fuzzy
+msgid "Crash det.  [off]"
+msgstr ""
+
+# MSG_CRASH_DETECTED c=20 r=1
+#: messages.c:25
+#, fuzzy
+msgid "Crash detected."
+msgstr ""
+
+# MSG_CURRENT c=19 r=1
+#: ultralcd.cpp:4859
+msgid "Current"
+msgstr "Tylko aktualne"
+
+# MSG_DATE c=17 r=1
+#: ultralcd.cpp:1828
+msgid "Date:"
+msgstr "Data:"
+
+# MSG_DISABLE_STEPPERS
+#: ultralcd.cpp:4146
+msgid "Disable steppers"
+msgstr "Wylaczyc silniki"
+
+# MSG_BABYSTEP_Z_NOT_SET c=20 r=12
+#: messages.c:15
+msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
+msgstr "Odleglosc dyszy od podkladki nie jest skalibrowana. Postepuj zgodnie z instrukcja rozdzial Zaczynamy, podrozdzial Kalibracja pierwszej warstwy."
+
+# MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
+#: ultralcd.cpp:4071
+msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
+msgstr "Chcesz powtorzyc ostatni krok i przestawic 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 skonczona. Prosze oczyscic dysze. Potem potwierdzic przyciskiem. "
+
+# MSG_EXTRUDER_CORRECTION c=9
+#: ultralcd.cpp:4213
+#, fuzzy
+msgid "E-correct"
+msgstr ""
+
+# MSG_END_FILE_LIST
+#: Marlin_main.cpp:4407
+msgid "End file list"
+msgstr "End file list"
+
+# MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
+#: ultralcd.cpp:6975
+msgid "Endstop not hit"
+msgstr "Endstop not hit"
+
+# MSG_SELFTEST_ENDSTOP
+#: ultralcd.cpp:6969
+msgid "Endstop"
+msgstr "Endstop"
+
+# MSG_ENDSTOPS_HIT
+#: messages.c:31
+msgid "endstops hit: "
+msgstr "endstops hit: "
+
+# MSG_SELFTEST_ENDSTOPS
+#: ultralcd.cpp:6957
+msgid "Endstops"
+msgstr "Endstops"
+
+# MSG_LANGUAGE_NAME
+#: language.c:153
+msgid "English"
+msgstr "Polski"
+
+# MSG_Enqueing
+#: 
+msgid "enqueing \x22"
+msgstr "enqueing \x22"
+
+# MSG_STACK_ERROR c=20 r=4
+#: ultralcd.cpp:5843
+#, fuzzy
+msgid "Error - static memory has been overwritten"
+msgstr ""
+
+# MSG_SD_ERR_WRITE_TO_FILE
+#: messages.c:76
+msgid "error writing to file"
+msgstr "error writing to file"
+
+# MSG_FSENS_NOT_RESPONDING c=20 r=4
+#: ultralcd.cpp:3656
+#, fuzzy
+msgid "ERROR: Filament sensor is not responding, please check connection."
+msgstr ""
+
+# MSG_ERROR
+#: messages.c:34
+msgid "ERROR:"
+msgstr "BLAD:"
+
+# MSG_EXTRUDER_1 c=17 r=1
+#: ultralcd.cpp:5417
+msgid "Extruder 1"
+msgstr "Ekstruder 1"
+
+# MSG_EXTRUDER_2 c=17 r=1
+#: ultralcd.cpp:5418
+msgid "Extruder 2"
+msgstr "Ekstruder 2"
+
+# MSG_EXTRUDER_3 c=17 r=1
+#: ultralcd.cpp:5419
+msgid "Extruder 3"
+msgstr "Ekstruder 3"
+
+# MSG_EXTRUDER_4 c=17 r=1
+#: ultralcd.cpp:5420
+msgid "Extruder 4"
+msgstr "Ekstruder 4"
+
+# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
+#: ultralcd.cpp:7244
+#, fuzzy
+msgid "Extruder fan:"
+msgstr ""
+
+# MSG_INFO_EXTRUDER c=15 r=1
+#: ultralcd.cpp:1840
+#, fuzzy
+msgid "Extruder info"
+msgstr ""
+
+# MSG_MOVE_E
+#: messages.c:35
+msgid "Extruder"
+msgstr "Extruder"
+
+# MSG_FSENS_AUTOLOAD_ON c=17 r=1
+#: ultralcd.cpp:4178
+#, fuzzy
+msgid "F. autoload  [on]"
+msgstr ""
+
+# MSG_FSENS_AUTOLOAD_NA c=17 r=1
+#: messages.c:47
+#, fuzzy
+msgid "F. autoload [N/A]"
+msgstr ""
+
+# MSG_FSENS_AUTOLOAD_OFF c=17 r=1
+#: ultralcd.cpp:4181
+#, fuzzy
+msgid "F. autoload [off]"
+msgstr ""
+
+# MSG_FAN_SPEED c=14
+#: messages.c:36
+msgid "Fan speed"
+msgstr "Predkosc went."
+
+# MSG_SELFTEST_FAN c=20
+#: messages.c:82
+msgid "Fan test"
+msgstr "Test wentylatora"
+
+# MSG_FANS_CHECK_ON c=17 r=1
+#: ultralcd.cpp:4189
+#, fuzzy
+msgid "Fans check   [on]"
+msgstr ""
+
+# MSG_FANS_CHECK_OFF c=17 r=1
+#: ultralcd.cpp:4192
+#, fuzzy
+msgid "Fans check  [off]"
+msgstr ""
+
+# MSG_FSENSOR_ON
+#: messages.c:49
+#, fuzzy
+msgid "Fil. sensor  [on]"
+msgstr ""
+
+# MSG_FSENSOR_NA
+#: ultralcd.cpp:4164
+#, fuzzy
+msgid "Fil. sensor [N/A]"
+msgstr ""
+
+# MSG_FSENSOR_OFF
+#: messages.c:48
+#, fuzzy
+msgid "Fil. sensor [off]"
+msgstr ""
+
+# MSG_FILAMENT_CLEAN c=20 r=2
+#: messages.c:37
+msgid "Filament extruding & with correct color?"
+msgstr "Czy kolor jest czysty?"
+
+# MSG_NOT_LOADED c=19
+#: ultralcd.cpp:2014
+msgid "Filament not loaded"
+msgstr "Brak filamentu"
+
+# MSG_FILAMENT_SENSOR c=20
+#: ultralcd.cpp:7023
+#, fuzzy
+msgid "Filament sensor"
+msgstr ""
+
+# MSG_SELFTEST_FILAMENT_SENSOR c=18
+#: ultralcd.cpp:7253
+#, fuzzy
+msgid "Filament sensor:"
+msgstr ""
+
+# MSG_STATS_FILAMENTUSED c=20
+#: ultralcd.cpp:2142
+msgid "Filament used:  "
+msgstr "Filament : "
+
+# MSG_FILE_INCOMPLETE c=20 r=2
+#: ultralcd.cpp:7396
+#, fuzzy
+msgid "File incomplete. Continue anyway?"
+msgstr ""
+
+# MSG_SD_FILE_OPENED
+#: cardreader.cpp:395
+msgid "File opened: "
+msgstr "File opened: "
+
+# MSG_SD_FILE_SELECTED
+#: cardreader.cpp:401
+msgid "File selected"
+msgstr "File selected"
+
+# MSG_FINISHING_MOVEMENTS c=20 r=1
+#: messages.c:45
+msgid "Finishing movements"
+msgstr "Konczenie druku"
+
+# MSG_V2_CALIBRATION c=17 r=1
+#: ultralcd.cpp:4513
+msgid "First layer cal."
+msgstr "Kal. 1. warstwy"
+
+# MSG_WIZARD_SELFTEST c=20 r=8
+#: ultralcd.cpp:3989
+msgid "First, I will run the selftest to check most common assembly problems."
+msgstr "Najpierw wlacze autotest w celu kontrolli najczestszych problemow z montazem."
+
+# MSG_FLOW
+#: ultralcd.cpp:5932
+msgid "Flow"
+msgstr "Przeplyw"
+
+# MSG_PRUSA3D_FORUM
+#: ultralcd.cpp:1821
+msgid "forum.prusa3d.com"
+msgstr "forum.prusa3d.cz"
+
+# MSG_SELFTEST_COOLING_FAN c=20
+#: messages.c:79
+msgid "Front print fan?"
+msgstr "Przedni went. druku?"
+
+# MSG_BED_CORRECTION_FRONT c=14 r=1
+#: ultralcd.cpp:2565
+msgid "Front side[um]"
+msgstr "Do przodu [um]"
+
+# MSG_SELFTEST_FANS
+#: ultralcd.cpp:7015
+#, fuzzy
+msgid "Front/left fans"
+msgstr ""
+
+# MSG_SELFTEST_HEATERTHERMISTOR
+#: ultralcd.cpp:6945
+msgid "Heater/Thermistor"
+msgstr "Heater/Thermistor"
+
+# MSG_BED_HEATING_SAFETY_DISABLED
+#: Marlin_main.cpp:7232
+#, fuzzy
+msgid "Heating disabled by safety timer."
+msgstr ""
+
+# MSG_HEATING_COMPLETE c=20
+#: messages.c:51
+msgid "Heating done."
+msgstr "Grzanie OK."
+
+# MSG_HEATING
+#: messages.c:50
+msgid "Heating"
+msgstr "Grzanie..."
+
+# MSG_WIZARD_WELCOME c=20 r=7
+#: ultralcd.cpp:3968
+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 instalacja?"
+
+# MSG_PRUSA3D_HOWTO
+#: ultralcd.cpp:1822
+msgid "howto.prusa3d.com"
+msgstr "howto.prusa3d.cz"
+
+# MSG_CHANGE_EXTR c=20 r=1
+#: ultralcd.cpp:5812
+msgid "Change extruder"
+msgstr "Zmienic ekstruder"
+
+# MSG_FILAMENTCHANGE
+#: messages.c:42
+msgid "Change filament"
+msgstr "Wymienic filament"
+
+# MSG_CNG_SDCARD
+#: ultralcd.cpp:5777
+msgid "Change SD card"
+msgstr "Vymenit SD"
+
+# MSG_CHANGE_SUCCESS
+#: ultralcd.cpp:1927
+msgid "Change success!"
+msgstr "Wymiana ok!"
+
+# MSG_CORRECTLY c=20
+#: ultralcd.cpp:2006
+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:85
+msgid "Checking bed     "
+msgstr "Kontrola bed "
+
+# MSG_SELFTEST_CHECK_ENDSTOPS c=20
+#: ultralcd.cpp:7226
+msgid "Checking endstops"
+msgstr "Kontrola endstops"
+
+# MSG_SELFTEST_CHECK_HOTEND c=20
+#: ultralcd.cpp:7227
+msgid "Checking hotend  "
+msgstr "Kontrola hotend "
+
+# MSG_SELFTEST_CHECK_FSENSOR c=20
+#: messages.c:86
+#, fuzzy
+msgid "Checking sensors "
+msgstr ""
+
+# MSG_SELFTEST_CHECK_X c=20
+#: ultralcd.cpp:7228
+msgid "Checking X axis  "
+msgstr "Kontrola X axis "
+
+# MSG_SELFTEST_CHECK_Y c=20
+#: ultralcd.cpp:7229
+msgid "Checking Y axis  "
+msgstr "Kontrola Y axis "
+
+# MSG_SELFTEST_CHECK_Z c=20
+#: ultralcd.cpp:7230
+msgid "Checking Z axis  "
+msgstr "Kontrola Z axis "
+
+# MSG_ERR_CHECKSUM_MISMATCH
+#: cmdqueue.cpp:444
+msgid "checksum mismatch, Last Line: "
+msgstr "checksum mismatch, Last Line: "
+
+# MSG_CHOOSE_EXTRUDER c=20 r=1
+#: messages.c:53
+msgid "Choose extruder:"
+msgstr "Wybierz ekstruder"
+
+# MSG_WIZARD_XYZ_CAL c=20 r=8
+#: ultralcd.cpp:3998
+msgid "I will run xyz calibration now. It will take approx. 12 mins."
+msgstr "Wlaczam kalibracje xyz. Zajmie to ok. 12 min."
+
+# MSG_WIZARD_Z_CAL c=20 r=8
+#: ultralcd.cpp:4004
+msgid "I will run z calibration now."
+msgstr "Wlaczam kalibracje z."
+
+# MSG_WIZARD_V2_CAL_2 c=20 r=12
+#: ultralcd.cpp:4066
+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 guzik, poki nie uzyskasz optymalnej wysokosci. Sprawdz obrazki w naszym poradniku w rozdz. Kalibracja"
+
+# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60
+#: mesh_bed_calibration.cpp:2469
+msgid "Improving bed calibration point"
+msgstr "Poprawiam precyzyjnosc punktu kalibracyjnego"
+
+# MSG_WATCH
+#: messages.c:101
+msgid "Info screen"
+msgstr "Informacje"
+
+# MSG_INIT_SDCARD
+#: ultralcd.cpp:5785
+msgid "Init. SD card"
+msgstr "Inic. SD"
+
+# MSG_FILAMENT_LOADING_T0 c=20 r=4
+#: messages.c:38
+msgid "Insert filament into extruder 1. Click when done."
+msgstr "Wloz filament do ekstrudera 1. Potwierdz przyciskiem."
+
+# MSG_FILAMENT_LOADING_T1 c=20 r=4
+#: messages.c:39
+msgid "Insert filament into extruder 2. Click when done."
+msgstr "Wloz filament do ekstrudera 2. Potwierdz przyciskiem."
+
+# MSG_FILAMENT_LOADING_T2 c=20 r=4
+#: messages.c:40
+msgid "Insert filament into extruder 3. Click when done."
+msgstr "Wloz filament do ekstrudera 3. Potwierdz przyciskiem."
+
+# MSG_FILAMENT_LOADING_T3 c=20 r=4
+#: messages.c:41
+msgid "Insert filament into extruder 4. Click when done."
+msgstr "Wloz filament do ekstrudera 4. Potwierdz przyciskiem."
+
+# MSG_INSERT_FILAMENT c=20
+#: ultralcd.cpp:1913
+msgid "Insert filament"
+msgstr "Wprowadz filament"
+
+# MSG_WIZARD_FILAMENT_LOADED c=20 r=2
+#: ultralcd.cpp:4015
+msgid "Is filament loaded?"
+msgstr "Filament jest zaladowany?"
+
+# MSG_WIZARD_PLA_FILAMENT c=20 r=2
+#: ultralcd.cpp:4060
+msgid "Is it PLA filament?"
+msgstr "Czy to filament PLA?"
+
+# MSG_PLA_FILAMENT_LOADED c=20 r=2
+#: ultralcd.cpp:3924
+msgid "Is PLA filament loaded?"
+msgstr "Fialment PLA jest zaladowany?"
+
+# MSG_STEEL_SHEET_CHECK c=20 r=2
+#: messages.c:94
+#, fuzzy
+msgid "Is steel sheet on heatbed?"
+msgstr ""
+
+# MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20
+#: mesh_bed_calibration.cpp:2211
+msgid "Iteration "
+msgstr "Iteracja "
+
+# MSG_KILLED
+#: Marlin_main.cpp:7393
+msgid "KILLED. "
+msgstr "KILLED. "
+
+# MSG_SELFTEST_EXTRUDER_FAN c=20
+#: messages.c:80
+msgid "Left hotend fan?"
+msgstr "Lewy went na dysze?"
+
+# MSG_BED_CORRECTION_LEFT c=14 r=1
+#: ultralcd.cpp:2563
+msgid "Left side [um]"
+msgstr "W lewo [um]"
+
+# MSG_LEFT c=12 r=1
+#: ultralcd.cpp:2308
+msgid "Left:"
+msgstr "Lewy:"
+
+# MSG_BABYSTEP_Z
+#: messages.c:14
+msgid "Live adjust Z"
+msgstr "Dostrojenie osy Z"
+
+# MSG_LOAD_ALL
+#: ultralcd.cpp:5392
+msgid "Load all"
+msgstr "Zalad. wszystkie"
+
+# MSG_LOAD_FILAMENT_1 c=17
+#: ultralcd.cpp:5393
+msgid "Load filament 1"
+msgstr "Zaladowac fil. 1"
+
+# MSG_LOAD_FILAMENT_2 c=17
+#: ultralcd.cpp:5394
+msgid "Load filament 2"
+msgstr "Zaladowac fil. 2"
+
+# MSG_LOAD_FILAMENT_3 c=17
+#: ultralcd.cpp:5395
+msgid "Load filament 3"
+msgstr "Zaladowac fil. 3"
+
+# MSG_LOAD_FILAMENT_4 c=17
+#: ultralcd.cpp:5396
+msgid "Load filament 4"
+msgstr "Zaladowac fil. 4"
+
+# MSG_LOAD_FILAMENT c=17
+#: messages.c:54
+msgid "Load filament"
+msgstr "Wprowadz filament"
+
+# MSG_LOADING_COLOR
+#: ultralcd.cpp:1939
+msgid "Loading color"
+msgstr "Czyszcz. koloru"
+
+# MSG_LOADING_FILAMENT c=20
+#: messages.c:55
+msgid "Loading filament"
+msgstr "Wprow. filamentu"
+
+# MSG_LOOSE_PULLEY c=20 r=1
+#: ultralcd.cpp:6999
+msgid "Loose pulley"
+msgstr "Kolo pasowe"
+
+# MSG_M104_INVALID_EXTRUDER
+#: Marlin_main.cpp:7506
+msgid "M104 Invalid extruder "
+msgstr "M104 Invalid extruder "
+
+# MSG_M105_INVALID_EXTRUDER
+#: Marlin_main.cpp:7509
+msgid "M105 Invalid extruder "
+msgstr "M105 Invalid extruder "
+
+# MSG_M109_INVALID_EXTRUDER
+#: Marlin_main.cpp:7512
+msgid "M109 Invalid extruder "
+msgstr "M109 Invalid extruder "
+
+# MSG_M117_V2_CALIBRATION c=25 r=1
+#: messages.c:56
+msgid "M117 First layer cal."
+msgstr "M117 Kal. 1. warstwy"
+
+# MSG_M200_INVALID_EXTRUDER
+#: Marlin_main.cpp:5378
+msgid "M200 Invalid extruder "
+msgstr "M200 Invalid extruder "
+
+# MSG_M218_INVALID_EXTRUDER
+#: Marlin_main.cpp:7515
+msgid "M218 Invalid extruder "
+msgstr "M218 Invalid extruder "
+
+# MSG_M221_INVALID_EXTRUDER
+#: Marlin_main.cpp:7518
+msgid "M221 Invalid extruder "
+msgstr "M221 Invalid extruder "
+
+# MSG_MAIN
+#: messages.c:57
+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 "Prosze oznaczyc filament 100 mm od ciala ekstrudera. Potwierdzic przyciskiem."
+
+# MSG_MEASURED_SKEW c=15 r=1
+#: ultralcd.cpp:2335
+msgid "Measured skew:"
+msgstr "Zmier. sciecie:"
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
+#: messages.c:58
+msgid "Measuring reference height of calibration point"
+msgstr "Okreslam wysokosc odniesienia punktu kalibracyjnego"
+
+# MSG_MESH_BED_LEVELING
+#: ultralcd.cpp:4528
+msgid "Mesh Bed Leveling"
+msgstr "Mesh Bed Leveling"
+
+# MSG_STEALTH_MODE_OFF
+#: messages.c:92
+#, fuzzy
+msgid "Mode     [Normal]"
+msgstr ""
+
+# MSG_SILENT_MODE_ON
+#: messages.c:91
+msgid "Mode     [silent]"
+msgstr "Tryb [cichy]"
+
+# MSG_STEALTH_MODE_ON
+#: messages.c:93
+#, fuzzy
+msgid "Mode    [Stealth]"
+msgstr ""
+
+# MSG_AUTO_MODE_ON
+#: messages.c:13
+#, fuzzy
+msgid "Mode [auto power]"
+msgstr ""
+
+# MSG_SILENT_MODE_OFF
+#: messages.c:90
+msgid "Mode [high power]"
+msgstr "Tryb[w wydajnosc]"
+
+# MSG_SELFTEST_MOTOR
+#: messages.c:87
+msgid "Motor"
+msgstr "Silnik"
+
+# MSG_MOVE_AXIS
+#: ultralcd.cpp:4142
+msgid "Move axis"
+msgstr "Ruch osi"
+
+# MSG_MOVE_X
+#: ultralcd.cpp:3557
+msgid "Move X"
+msgstr "Przesunac X"
+
+# MSG_MOVE_Y
+#: ultralcd.cpp:3558
+msgid "Move Y"
+msgstr "Przesunac Y"
+
+# MSG_MOVE_Z
+#: ultralcd.cpp:3559
+msgid "Move Z"
+msgstr "Przesunac Z"
+
+# MSG_NEW_FIRMWARE_AVAILABLE c=20 r=2
+#: util.cpp:292
+msgid "New firmware version available:"
+msgstr "Wyszla nowa wersja firmware:"
+
+# MSG_ERR_NO_CHECKSUM
+#: cmdqueue.cpp:456
+msgid "No Checksum with line number, Last Line: "
+msgstr "No Checksum with line number, Last Line: "
+
+# MSG_NO_MOVE
+#: Marlin_main.cpp:4394
+msgid "No move."
+msgstr "No move."
+
+# MSG_NO_CARD
+#: ultralcd.cpp:5783
+msgid "No SD card"
+msgstr "Brak karty SD"
+
+# MSG_ERR_NO_THERMISTORS
+#: Marlin_main.cpp:4946
+msgid "No thermistors - no temperature"
+msgstr "No thermistors - no temperature"
+
+# MSG_NO
+#: messages.c:61
+msgid "No"
+msgstr "Nie"
+
+# MSG_SELFTEST_NOTCONNECTED
+#: ultralcd.cpp:6947
+msgid "Not connected"
+msgstr "Nie podlaczono "
+
+# MSG_SELFTEST_FAN_NO c=19
+#: messages.c:83
+msgid "Not spinning"
+msgstr "Nie kreci sie"
+
+# MSG_WIZARD_V2_CAL c=20 r=8
+#: ultralcd.cpp:4065
+msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
+msgstr "Kalibruje odleglosc miedzy koncowka dyszy a stolikiem."
+
+# MSG_WIZARD_WILL_PREHEAT c=20 r=4
+#: ultralcd.cpp:4022
+msgid "Now I will preheat nozzle for PLA."
+msgstr "Nagrzewam dysze dla PLA."
+
+# MSG_INFO_NOZZLE_FAN c=11 r=1
+#: ultralcd.cpp:1537
+#, fuzzy
+msgid "Nozzle FAN:"
+msgstr ""
+
+# MSG_NOZZLE
+#: messages.c:62
+msgid "Nozzle"
+msgstr "Dysza"
+
+# MSG_NOZZLE1
+#: ultralcd.cpp:5995
+msgid "Nozzle2"
+msgstr "Tryska2"
+
+# MSG_NOZZLE2
+#: ultralcd.cpp:5998
+msgid "Nozzle3"
+msgstr "Tryska3"
+
+# MSG_OK
+#: messages.c:63
+msgid "ok"
+msgstr "ok"
+
+# MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
+#: Marlin_main.cpp:1382
+#, fuzzy
+msgid "Old settings found. Default PID, Esteps etc. will be set."
+msgstr ""
+
+# MSG_SD_OPEN_FILE_FAIL
+#: cardreader.cpp:461
+msgid "open failed, File: "
+msgstr "open failed, File: "
+
+# MSG_ENDSTOP_OPEN
+#: messages.c:30
+msgid "open"
+msgstr "open"
+
+# MSG_SD_OPENROOT_FAIL
+#: cardreader.cpp:196
+msgid "openRoot failed"
+msgstr "openRoot failed"
+
+# MSG_PAUSE_PRINT
+#: ultralcd.cpp:5757
+msgid "Pause print"
+msgstr "Przerwac druk"
+
+# MSG_PICK_Z
+#: ultralcd.cpp:3463
+msgid "Pick print"
+msgstr "Vyberte vytisk"
+
+# MSG_PID_RUNNING c=20 r=1
+#: ultralcd.cpp:1366
+msgid "PID cal.           "
+msgstr "Kal. PID"
+
+# MSG_PID_FINISHED c=20 r=1
+#: ultralcd.cpp:1372
+msgid "PID cal. finished"
+msgstr "Kal. PID zakonczona"
+
+# MSG_PID_EXTRUDER c=17 r=1
+#: ultralcd.cpp:4534
+msgid "PID calibration"
+msgstr "Kalibracja PID"
+
+# MSG_PINDA_PREHEAT c=20 r=1
+#: ultralcd_implementation_hitachi_HD44780.h:1023
+msgid "PINDA Heating"
+msgstr "Grzanie PINDA"
+
+# MSG_PAPER c=20 r=8
+#: 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 podkladce i trzymaj pod dysza podczas pomiaru pierwszych 4 punktow. Jesli dysza zahaczy o papier, wylacz drukarke."
+
+# MSG_WIZARD_CLEAN_HEATBED c=20 r=8
+#: ultralcd.cpp:4073
+msgid "Please clean heatbed and then press the knob."
+msgstr "Prosze oczysc stolik i nacisnij guzik."
+
+# MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
+#: messages.c:23
+msgid "Please clean the nozzle for calibration. Click when done."
+msgstr "Dla prawidl. kalibracji prosze oczyscic dysze. Potw. guzikiem."
+
+# MSG_SELFTEST_PLEASECHECK
+#: ultralcd.cpp:6939
+msgid "Please check :"
+msgstr "Skontroluj :"
+
+# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
+#: messages.c:102
+msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
+msgstr "Prosze sprawdz nasz poradnik i napraw problem. Potem przywroc Wizard restartujac drukarke."
+
+# MSG_WIZARD_LOAD_FILAMENT c=20 r=8
+#: ultralcd.cpp:4046
+msgid "Please insert PLA filament to the extruder, then press knob to load it."
+msgstr "Prosze umiesc filament PLA w ekstruderze i nacisnij przycisk by 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 "Prosze zaladuj filament PLA i przywroc Wizard przez restart drukarki."
+
+# MSG_PLEASE_LOAD_PLA c=20 r=4
+#: ultralcd.cpp:3929
+msgid "Please load PLA filament first."
+msgstr "Prosze, najpierw zaladuj filament PLA."
+
+# MSG_CHECK_IDLER c=20 r=4
+#: Marlin_main.cpp:6166
+#, fuzzy
+msgid "Please open idler and remove filament manually."
+msgstr ""
+
+# MSG_PLACE_STEEL_SHEET c=20 r=4
+#: messages.c:65
+#, fuzzy
+msgid "Please place steel sheet on heatbed."
+msgstr ""
+
+# MSG_PRESS_TO_UNLOAD c=20 r=4
+#: messages.c:69
+#, fuzzy
+msgid "Please press the knob to unload filament"
+msgstr ""
+
+# MSG_PULL_OUT_FILAMENT c=20 r=4
+#: messages.c:71
+#, fuzzy
+msgid "Please pull out filament immediately"
+msgstr ""
+
+# MSG_REMOVE_STEEL_SHEET c=20 r=4
+#: messages.c:75
+#, fuzzy
+msgid "Please remove steel sheet from heatbed."
+msgstr ""
+
+# MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20
+#: util.cpp:296
+msgid "Please upgrade."
+msgstr "Prosze zaktualizowac"
+
+# MSG_PLEASE_WAIT c=20
+#: messages.c:66
+msgid "Please wait"
+msgstr "Prosze czekac"
+
+# MSG_POWERUP
+#: messages.c:67
+msgid "PowerUp"
+msgstr "PowerUp"
+
+# MSG_PREHEAT_NOZZLE c=20
+#: messages.c:68
+msgid "Preheat the nozzle!"
+msgstr "Nagrzej dysze!"
+
+# MSG_PREHEAT
+#: ultralcd.cpp:5746
+msgid "Preheat"
+msgstr "Grzanie"
+
+# MSG_WIZARD_HEATING c=20 r=3
+#: messages.c:104
+msgid "Preheating nozzle. Please wait."
+msgstr "Nagrzewanie dyszy. Prosze czekac."
+
+# MSG_PREPARE_FILAMENT c=20 r=1
+#: ultralcd.cpp:1911
+msgid "Prepare new filament"
+msgstr "Przygotuj filament"
+
+# MSG_PRESS_TO_PREHEAT c=20 r=4
+#: Marlin_main.cpp:6025
+#, fuzzy
+msgid "Press knob to preheat nozzle and continue."
+msgstr ""
+
+# MSG_PRINT_ABORTED c=20
+#: messages.c:70
+msgid "Print aborted"
+msgstr "Druk przerwany"
+
+# MSG_INFO_PRINT_FAN c=11 r=1
+#: ultralcd.cpp:1549
+#, fuzzy
+msgid "Print FAN: "
+msgstr ""
+
+# MSG_SELFTEST_PRINT_FAN_SPEED c=18
+#: ultralcd.cpp:7247
+#, fuzzy
+msgid "Print fan:"
+msgstr ""
+
+# MSG_CARD_MENU
+#: messages.c:22
+msgid "Print from SD"
+msgstr "Druk z SD"
+
+# MSG_PRINT_PAUSED c=20 r=1
+#: ultralcd.cpp:642
+msgid "Print paused"
+msgstr "Druk zatrzymany"
+
+# MSG_STATS_PRINTTIME c=20
+#: ultralcd.cpp:2151
+msgid "Print time:  "
+msgstr "Czas druku : "
+
+# MSG_PRINTER_DISCONNECTED c=20 r=1
+#: ultralcd.cpp:607
+#, fuzzy
+msgid "Printer disconnected"
+msgstr ""
+
+# MSG_ERR_KILLED
+#: Marlin_main.cpp:7388
+msgid "Printer halted. kill() called!"
+msgstr "Printer halted. kill() called!"
+
+# MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
+#: messages.c:46
+msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
+msgstr "Drukarka nie zostala jeszcze skalibrowana. Prosze kierowac sie instrukcja, rozdzial Zaczynamy, podrozdzial Selftest."
+
+# MSG_ERR_STOPPED
+#: messages.c:33
+msgid "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"
+msgstr "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"
+
+# WELCOME_MSG c=20
+#: 
+msgid "Prusa i3 MK3 ready."
+msgstr "Prusa i3 MK3 gotowa"
+
+# MSG_PRUSA3D
+#: ultralcd.cpp:1820
+msgid "prusa3d.com"
+msgstr "prusa3d.cz"
+
+# MSG_BED_CORRECTION_REAR c=14 r=1
+#: ultralcd.cpp:2566
+msgid "Rear side [um]"
+msgstr "Do tylu [um]"
+
+# MSG_RECOVERING_PRINT c=20 r=1
+#: Marlin_main.cpp:8289
+#, fuzzy
+msgid "Recovering print    "
+msgstr ""
+
+# MSG_M119_REPORT
+#: Marlin_main.cpp:5297
+msgid "Reporting endstop status"
+msgstr "Reporting endstop status"
+
+# MSG_RESEND
+#: Marlin_main.cpp:6911
+msgid "Resend: "
+msgstr "Resend: "
+
+# MSG_CALIBRATE_BED_RESET
+#: ultralcd.cpp:4539
+msgid "Reset XYZ calibr."
+msgstr "Reset kalibr. XYZ"
+
+# MSG_BED_CORRECTION_RESET
+#: ultralcd.cpp:2567
+msgid "Reset"
+msgstr "Reset"
+
+# MSG_RESUME_PRINT
+#: ultralcd.cpp:5761
+msgid "Resume print"
+msgstr "Kontynuowac"
+
+# MSG_RESUMING_PRINT
+#: messages.c:74
+msgid "Resuming print"
+msgstr "Wznowienie druku"
+
+# MSG_BED_CORRECTION_RIGHT c=14 r=1
+#: ultralcd.cpp:2564
+msgid "Right side[um]"
+msgstr "W prawo [um]"
+
+# MSG_RIGHT c=12 r=1
+#: ultralcd.cpp:2309
+msgid "Right:"
+msgstr "Prawy:"
+
+# MSG_E_CAL_KNOB c=20 r=8
+#: ultralcd.cpp:3835
+msgid "Rotate knob until mark reaches extruder body. Click when done."
+msgstr "Prosze otaczac przycisk poki znacznik nie dosiegnie ciala ekstrudera. Potwierdzic przyciskiem."
+
+# MSG_SECOND_SERIAL_ON c=17 r=1
+#: ultralcd.cpp:4227
+#, fuzzy
+msgid "RPi port     [on]"
+msgstr ""
+
+# MSG_SECOND_SERIAL_OFF c=17 r=1
+#: ultralcd.cpp:4224
+#, fuzzy
+msgid "RPi port    [off]"
+msgstr ""
+
+# MSG_WIZARD_RERUN c=20 r=7
+#: ultralcd.cpp:3947
+msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
+msgstr "Wlaczenie Wizard usunie obecne dane kalibracyjne i zacznie od nowa. Kontynuowac?"
+
+# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
+#: ultralcd.cpp:4240
+msgid "SD card  [normal]"
+msgstr "karta SD [normal]"
+
+# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
+#: ultralcd.cpp:4238
+msgid "SD card [FlshAir]"
+msgstr "karta SD[FlshAir]"
+
+# MSG_SD_CARD_OK
+#: cardreader.cpp:202
+msgid "SD card ok"
+msgstr "SD card ok"
+
+# MSG_SD_INIT_FAIL
+#: cardreader.cpp:186
+msgid "SD init fail"
+msgstr "SD init fail"
+
+# MSG_SD_PRINTING_BYTE
+#: cardreader.cpp:516
+msgid "SD printing byte "
+msgstr "SD printing byte "
+
+# MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
+#: messages.c:43
+msgid "Searching bed calibration point"
+msgstr "Szukam punktu kalibracyjnego podkladki"
+
+# MSG_LANGUAGE_SELECT
+#: ultralcd.cpp:4235
+msgid "Select language"
+msgstr "Wybor jezyka"
+
+# MSG_SELFTEST_OK
+#: ultralcd.cpp:6505
+msgid "Self test OK"
+msgstr "Self test OK"
+
+# MSG_SELFTEST_START c=20
+#: ultralcd.cpp:6342
+msgid "Self test start  "
+msgstr "Self test start "
+
+# MSG_SELFTEST
+#: ultralcd.cpp:4515
+msgid "Selftest         "
+msgstr "Selftest "
+
+# MSG_SELFTEST_ERROR
+#: ultralcd.cpp:6937
+msgid "Selftest error !"
+msgstr "Selftest error !"
+
+# MSG_SELFTEST_FAILED c=20
+#: messages.c:81
+msgid "Selftest failed  "
+msgstr "Selftest nieudany"
+
+# MSG_FORCE_SELFTEST c=20 r=8
+#: Marlin_main.cpp:1414
+#, fuzzy
+msgid "Selftest will be run to calibrate accurate sensorless rehoming."
+msgstr ""
+
+# MSG_SET_TEMPERATURE c=19 r=1
+#: ultralcd.cpp:2575
+msgid "Set temperature:"
+msgstr "Ustawic temperature"
+
+# MSG_SETTINGS
+#: messages.c:89
+msgid "Settings"
+msgstr "Ustawienia"
+
+# MSG_SEVERE_SKEW c=15 r=1
+#: ultralcd.cpp:2346
+msgid "Severe skew:"
+msgstr "Ostre sciecie:"
+
+# MSG_SHOW_END_STOPS c=17 r=1
+#: ultralcd.cpp:4536
+msgid "Show end stops"
+msgstr "Pokaz krancowki"
+
+# MSG_DWELL
+#: Marlin_main.cpp:3281
+msgid "Sleep..."
+msgstr "Sleep..."
+
+# MSG_SLIGHT_SKEW c=15 r=1
+#: ultralcd.cpp:2342
+msgid "Slight skew:"
+msgstr "Lekkie sciecie:"
+
+# MSG_FILE_CNT c=20 r=4
+#: cardreader.cpp:754
+#, fuzzy
+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:4250
+#, fuzzy
+msgid "Sort:      [None]"
+msgstr ""
+
+# MSG_SORT_TIME c=17 r=1
+#: ultralcd.cpp:4248
+#, fuzzy
+msgid "Sort:      [Time]"
+msgstr ""
+
+# MSG_SORT_ALPHA c=17 r=1
+#: ultralcd.cpp:4249
+#, fuzzy
+msgid "Sort:  [Alphabet]"
+msgstr ""
+
+# MSG_SORTING c=20 r=1
+#: cardreader.cpp:761
+#, fuzzy
+msgid "Sorting files"
+msgstr ""
+
+# MSG_SPEED
+#: ultralcd.cpp:5926
+msgid "Speed"
+msgstr "Predkosc"
+
+# MSG_SELFTEST_FAN_YES c=19
+#: messages.c:84
+msgid "Spinning"
+msgstr "Kreci sie"
+
+# MSG_TEMP_CAL_WARNING c=20 r=4
+#: Marlin_main.cpp:3551
+#, fuzzy
+msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
+msgstr ""
+
+# MSG_STATISTICS
+#: ultralcd.cpp:5824
+msgid "Statistics  "
+msgstr "Statystyka "
+
+# MSG_STEPPER_TOO_HIGH
+#: stepper.cpp:345
+msgid "Steprate too high: "
+msgstr "Steprate too high: "
+
+# MSG_STOP_PRINT
+#: messages.c:95
+msgid "Stop print"
+msgstr "Zatrzymac druk"
+
+# MSG_STOPPED
+#: messages.c:96
+msgid "STOPPED. "
+msgstr "STOPPED. "
+
+# MSG_SUPPORT
+#: ultralcd.cpp:5831
+msgid "Support"
+msgstr "Pomoc"
+
+# MSG_SELFTEST_SWAPPED
+#: ultralcd.cpp:7017
+#, fuzzy
+msgid "Swapped"
+msgstr ""
+
+# MSG_TEMP_CALIBRATION c=20 r=1
+#: messages.c:97
+msgid "Temp. cal.          "
+msgstr "Ciepl. kal. "
+
+# MSG_TEMP_CALIBRATION_ON c=20 r=1
+#: ultralcd.cpp:4220
+msgid "Temp. cal.   [on]"
+msgstr "Ciepl. kal. [ON]"
+
+# MSG_TEMP_CALIBRATION_OFF c=20 r=1
+#: ultralcd.cpp:4217
+msgid "Temp. cal.  [off]"
+msgstr "Ciepl. kal. [OFF]"
+
+# MSG_CALIBRATION_PINDA_MENU c=17 r=1
+#: ultralcd.cpp:4545
+msgid "Temp. calibration"
+msgstr "Cieplna kalibr."
+
+# MSG_TEMP_CAL_FAILED c=20 r=8
+#: ultralcd.cpp:3189
+#, fuzzy
+msgid "Temperature calibration failed"
+msgstr ""
+
+# MSG_PINDA_NOT_CALIBRATED c=20 r=4
+#: Marlin_main.cpp:1403
+msgid "Temperature calibration has not been run yet"
+msgstr "Cieplna kalibracja nie byla przeprowadzona"
+
+# MSG_TEMP_CALIBRATION_DONE c=20 r=12
+#: messages.c:98
+msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
+msgstr "Cieplna kalibracja zakonczona. Kontynuuj przyciskiem"
+
+# MSG_TEMPERATURE
+#: ultralcd.cpp:4139
+msgid "Temperature"
+msgstr "Temperatura"
+
+# MSG_MENU_TEMPERATURES c=15 r=1
+#: ultralcd.cpp:1846
+#, fuzzy
+msgid "Temperatures"
+msgstr ""
+
+# MSG_STATS_TOTALFILAMENT c=20
+#: ultralcd.cpp:2186
+msgid "Total filament :"
+msgstr "Filament lacznie :"
+
+# MSG_STATS_TOTALPRINTTIME c=20
+#: ultralcd.cpp:2203
+msgid "Total print time :"
+msgstr "Czas calkowity :"
+
+# MSG_ENDSTOP_HIT
+#: messages.c:29
+msgid "TRIGGERED"
+msgstr "TRIGGERED"
+
+# MSG_TUNE
+#: ultralcd.cpp:5743
+msgid "Tune"
+msgstr "Nastroic"
+
+# MSG_UNLOAD_ALL
+#: ultralcd.cpp:5405
+msgid "Unload all"
+msgstr "Wyjac wszystkie"
+
+# MSG_UNLOAD_FILAMENT_1 c=17
+#: ultralcd.cpp:5406
+msgid "Unload filament 1"
+msgstr "Wyjac filament 1"
+
+# MSG_UNLOAD_FILAMENT_2 c=17
+#: ultralcd.cpp:5407
+msgid "Unload filament 2"
+msgstr "Wyjac filament 2"
+
+# MSG_UNLOAD_FILAMENT_3 c=17
+#: ultralcd.cpp:5408
+msgid "Unload filament 3"
+msgstr "Wyjac filament 3"
+
+# MSG_UNLOAD_FILAMENT_4 c=17
+#: ultralcd.cpp:5409
+msgid "Unload filament 4"
+msgstr "Wyjac filament 4"
+
+# MSG_UNLOAD_FILAMENT c=17
+#: messages.c:99
+msgid "Unload filament"
+msgstr "Wyjac filament"
+
+# MSG_UNLOADING_FILAMENT c=20 r=1
+#: messages.c:100
+msgid "Unloading filament"
+msgstr "Wysuwam filament"
+
+# MSG_USED c=19 r=1
+#: ultralcd.cpp:4858
+msgid "Used during print"
+msgstr "Uzyte przy druku"
+
+# MSG_MENU_VOLTAGES c=15 r=1
+#: ultralcd.cpp:1849
+#, fuzzy
+msgid "Voltages"
+msgstr ""
+
+# MSG_SD_VOL_INIT_FAIL
+#: cardreader.cpp:191
+msgid "volume.init failed"
+msgstr "volume.init failed"
+
+# MSG_USERWAIT
+#: Marlin_main.cpp:4359
+msgid "Wait for user..."
+msgstr "Wait for user..."
+
+# MSG_WAITING_TEMP c=20 r=3
+#: ultralcd.cpp:2719
+msgid "Waiting for nozzle and bed cooling"
+msgstr "Oczekiwanie na wychlodzenie dyszy i podkladki."
+
+# MSG_WAITING_TEMP_PINDA c=20 r=3
+#: ultralcd.cpp:2683
+#, fuzzy
+msgid "Waiting for PINDA probe cooling"
+msgstr ""
+
+# MSG_CHANGED_BOTH c=20 r=4
+#: Marlin_main.cpp:1374
+#, fuzzy
+msgid "Warning: both printer type and motherboard type changed."
+msgstr ""
+
+# MSG_CHANGED_MOTHERBOARD c=20 r=4
+#: Marlin_main.cpp:1366
+#, fuzzy
+msgid "Warning: motherboard type changed."
+msgstr ""
+
+# MSG_CHANGED_PRINTER c=20 r=4
+#: Marlin_main.cpp:1370
+#, fuzzy
+msgid "Warning: printer type changed."
+msgstr ""
+
+# MSG_FW_VERSION_UNKNOWN c=20 r=8
+#: Marlin_main.cpp:946
+#, fuzzy
+msgid "WARNING: This is an unofficial, unsupported build. Use at your own risk!"
+msgstr ""
+
+# MSG_UNLOAD_SUCCESSFUL c=20 r=2
+#: Marlin_main.cpp:6165
+#, fuzzy
+msgid "Was filament unload successful?"
+msgstr ""
+
+# MSG_SELFTEST_WIRINGERROR
+#: messages.c:88
+msgid "Wiring error"
+msgstr "Blad polaczenia"
+
+# MSG_WIZARD c=17 r=1
+#: ultralcd.cpp:4512
+msgid "Wizard"
+msgstr "Wizard"
+
+# MSG_SD_WORKDIR_FAIL
+#: messages.c:78
+msgid "workDir open failed"
+msgstr "workDir open failed"
+
+# MSG_SD_WRITE_TO_FILE
+#: cardreader.cpp:424
+msgid "Writing to file: "
+msgstr "Writing to file: "
+
+# MSG_XYZ_DETAILS c=19 r=1
+#: ultralcd.cpp:1839
+msgid "XYZ cal. details"
+msgstr "Szczegoly kal.XYZ"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
+#: ultralcd.cpp:3159
+msgid "XYZ calibration all right. Skew will be corrected automatically."
+msgstr "Kalibracja XYZ prawidlowa. Skosy beda automatycznie wyrownane przy druku."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
+#: ultralcd.cpp:3156
+msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
+msgstr "Kalibracja XYZ prawidlowa. Osie X/Y lekko skosne. Dobra robota!"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
+#: ultralcd.cpp:3137
+msgid "XYZ calibration compromised. Front calibration points not reachable."
+msgstr "Kalibr. XYZ niedokladna. Przednie punkty kalibr. Zbyt wys. do przodu."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8
+#: ultralcd.cpp:3143
+msgid "XYZ calibration compromised. Left front calibration point not reachable."
+msgstr "Kalibracja XYZ niedokladna. Lewy przedni punkt zbyt wysuniety do przodu."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
+#: ultralcd.cpp:3140
+msgid "XYZ calibration compromised. Right front calibration point not reachable."
+msgstr "Kalibracja XYZ niedokladna. Prawy przedni punkt zbyt wysuniety do przodu."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND c=20 r=8
+#: ultralcd.cpp:3119
+msgid "XYZ calibration failed. Bed calibration point was not found."
+msgstr "Kalibr. XYZ nieudana. Kalibracyjny punkt podkladki nieznaleziony."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_BOTH_FAR c=20 r=8
+#: ultralcd.cpp:3125
+msgid "XYZ calibration failed. Front calibration points not reachable."
+msgstr "Kalibr. XYZ nieudana. Przed. punkty kalibr. zbyt do przodu. Wyrownac drukarke."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_LEFT_FAR c=20 r=8
+#: ultralcd.cpp:3131
+msgid "XYZ calibration failed. Left front calibration point not reachable."
+msgstr "Kalibr. XYZ nieudana. Lewy przedni punkt zbyt do przodu. Wyrownac drukarke."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
+#: messages.c:20
+msgid "XYZ calibration failed. Please consult the manual."
+msgstr "Kalibracja XYZ niepowiedziona. Sprawdzic w instrukcji."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FAILED_FRONT_RIGHT_FAR c=20 r=8
+#: ultralcd.cpp:3128
+msgid "XYZ calibration failed. Right front calibration point not reachable."
+msgstr "Kalibr. XYZ nieudana. Prawy przedni punkt zbyt do przodu. Wyrownac drukarke."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
+#: ultralcd.cpp:3153
+msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
+msgstr "Kalibracja XYZ ok. Osie X/Y sa prostopadle. Gratulacje!"
+
+# MSG_Y_DISTANCE_FROM_MIN c=20 r=1
+#: ultralcd.cpp:2306
+msgid "Y distance from min:"
+msgstr "Odleglosc Y od min.:"
+
+# MSG_YES
+#: messages.c:106
+msgid "Yes"
+msgstr "Tak"
+
+# MSG_FW_VERSION_ALPHA c=20 r=8
+#: Marlin_main.cpp:930
+#, fuzzy
+msgid "You are using firmware alpha version. This is development version. Using this version is not recommended and may cause printer damage."
+msgstr ""
+
+# MSG_FW_VERSION_BETA c=20 r=8
+#: Marlin_main.cpp:931
+#, fuzzy
+msgid "You are using firmware beta version. This is development version. Using this version is not recommended and may cause printer damage."
+msgstr ""
+
+# MSG_WIZARD_QUIT c=20 r=8
+#: messages.c:105
+msgid "You can always resume the Wizard from Calibration -> Wizard."
+msgstr "Zawsze mozesz przywrocic Wizard przez Kalibracja -> Wizard."
+

+ 114 - 61
lang/po/make_po.sh

@@ -1,61 +1,114 @@
-#!/bin/sh
-#
-# make_po.sh - multi-language support script
-#  for generating lang_xx.po
-#
-SRCDIR="../../Firmware"
-#
-LANG=$1
-if [ -z "$LANG" ]; then LANG=cz; fi
-#
-
-echo "make_po.sh started" >&2
-
-#remove output file if exists
-if [ -e lang_$LANG.po ]; then rm lang_$LANG.po; fi
-
-langname=$(\
- case "$LANG" in
-  *en*) echo "English" ;;
-  *cz*) echo "Czech" ;;
-  *de*) echo "German" ;;
-  *it*) echo "Italian" ;;
-  *es*) echo "Spanish" ;;
-  *pl*) echo "Polish" ;;
- esac)
-
-#write po header
-echo "# Translation into $langname." > lang_$LANG.po
-echo "#" >> lang_$LANG.po
-echo 'msgid ""' >> lang_$LANG.po
-echo 'msgstr ""' >> lang_$LANG.po
-echo '"MIME-Version: 1.0\n"' >> lang_$LANG.po
-echo '"Content-Type: text/plain; charset=UTF-8\n"' >> lang_$LANG.po
-echo '"Content-Transfer-Encoding: 8bit\n"' >> lang_$LANG.po
-echo >> lang_$LANG.po
-
-#list .cpp, .c and .h files
-files=$(ls "$SRCDIR"/*.cpp "$SRCDIR"/*.c "$SRCDIR"/*.h)
-
-#loop over all messages, print only untranslated (=="\x00")
-s0=''
-s1=''
-s2=''
-cat ../lang_en_$LANG.txt | sed "s/\\\\/\\\\\\\\/g;s/^#/#: /" | while read -r s; do
- if [ "$s" == "" ]; then
-  if [ "$s0" == "\"\\\\x00\"" ]; then
-   search=$(echo -e "$s1")
-   found=$(grep -m1 -n -F "$search" $files | head -n1 | cut -f1-2 -d':' | sed "s/^.*\///")
-   echo "#: $found"
-   echo -e "msgid $s1"
-   echo 'msgstr ""'
-   echo
-  fi
- fi
- s2=$s1
- s1=$s0
- s0=$s 
-done >> lang_$LANG.po
-
-echo "make_po.sh finished" >&2
-exit 0
+#!/bin/sh
+#
+# make_po.sh - multi-language support script
+#  for generating lang_xx.po
+#
+SRCDIR="../../Firmware"
+#
+LANG=$1
+if [ -z "$LANG" ]; then LANG=cz; fi
+#
+
+if [ "$LANG" == "all" ]; then
+ ./make_po.sh cz
+ ./make_po.sh de
+ ./make_po.sh es
+ ./make_po.sh it
+ ./make_po.sh pl
+ exit 0
+fi
+
+echo "make_po.sh started" >&2
+echo " selected language=$LANG" >&2
+
+#remove output file if exists
+if [ -e lang_$LANG.po ]; then rm lang_$LANG.po; fi
+
+lang_name=$(\
+ case "$LANG" in
+  *en*) echo "English" ;;
+  *cz*) echo "Czech" ;;
+  *de*) echo "German" ;;
+  *es*) echo "Spanish" ;;
+  *it*) echo "Italian" ;;
+  *pl*) echo "Polish" ;;
+ esac)
+
+lang_short=$(\
+ case "$LANG" in
+  *en*) echo "en" ;;
+  *cz*) echo "cs" ;;
+  *de*) echo "de" ;;
+  *it*) echo "it" ;;
+  *es*) echo "es" ;;
+  *pl*) echo "pl" ;;
+ esac)
+
+po_date=$(date)
+
+#write po header
+echo "# Translation of Prusa-Firmware into $lang_name." > lang_$LANG.po
+echo "#" >> lang_$LANG.po
+echo 'msgid ""' >> lang_$LANG.po
+echo 'msgstr ""' >> lang_$LANG.po
+echo '"MIME-Version: 1.0\n"' >> lang_$LANG.po
+echo '"Content-Type: text/plain; charset=UTF-8\n"' >> lang_$LANG.po
+echo '"Content-Transfer-Encoding: 8bit\n"' >> lang_$LANG.po
+echo '"Language: '$lang_short'\n"' >> lang_$LANG.po
+echo '"Project-Id-Version: Prusa-Firmware\n"' >> lang_$LANG.po
+echo '"POT-Creation-Date: '$po_date'\n"' >> lang_$LANG.po
+echo '"PO-Revision-Date: '$po_date'\n"' >> lang_$LANG.po
+echo '"Language-Team: \n"' >> lang_$LANG.po
+echo '"X-Generator: Poedit 2.0.7\n"' >> lang_$LANG.po
+echo '"X-Poedit-SourceCharset: UTF-8\n"' >> lang_$LANG.po
+echo '"Last-Translator: \n"' >> lang_$LANG.po
+echo '"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"' >> lang_$LANG.po
+echo >> lang_$LANG.po
+
+#list .cpp, .c and .h files
+files=$(ls "$SRCDIR"/*.cpp "$SRCDIR"/*.c "$SRCDIR"/*.h)
+
+num_texts=$(grep '^#' -c ../lang_en_$LANG.txt)
+num_texts_nt=$(grep '^\"\\x00\"' -c ../lang_en_$LANG.txt)
+echo " $num_texts texts, $num_texts_nt not translated" >&2
+
+#loop over all messages
+s0=''
+s1=''
+s2=''
+num=1
+cat ../lang_en_$LANG.txt | sed "s/\\\\/\\\\\\\\/g" | while read -r s; do
+ if [ "$s" == "" ]; then
+  echo "  processing $num of $num_texts" >&2
+  if [ "$s0" == "\"\\\\x00\"" ]; then
+   search=$(/bin/echo -e "$s1")
+   found=$(grep -m1 -n -F "$search" $files | head -n1 | cut -f1-2 -d':' | sed "s/^.*\///")
+   echo "$s2" | sed 's/ c=0//;s/ r=0//;s/^#/# /'
+   echo "#: $found"
+   echo "#, fuzzy"
+   /bin/echo -e "msgid $s1"
+   echo 'msgstr ""'
+   echo
+  else
+   search=$(/bin/echo -e "$s1")
+   found=$(grep -m1 -n -F "$search" $files | head -n1 | cut -f1-2 -d':' | sed "s/^.*\///")
+   echo "$s2" | sed 's/ c=0//;s/ r=0//;s/^#/# /'
+   echo "#: $found"
+   /bin/echo -e "msgid $s1"
+   /bin/echo -e "msgstr $s0"
+   echo
+  fi
+  num=$((num+1))
+ fi
+ s2=$s1
+ s1=$s0
+ s0=$s
+done >> lang_$LANG.po
+
+#replace LF with CRLF
+sync
+sed -i 's/$/\r/' lang_$LANG.po
+
+echo "make_po.sh finished" >&2
+#read
+exit 0

+ 86 - 0
lang/po/make_pot.sh

@@ -0,0 +1,86 @@
+#!/bin/sh
+#
+# make_pot.sh - multi-language support script
+#  Generate lang.pot
+#
+SRCDIR="../../Firmware"
+#
+#
+
+
+echo "make_pot.sh started" >&2
+
+#remove output file if exists
+if [ -e lang.pot ]; then rm lang.pot; fi
+
+lang_name="English"
+lang_short="en"
+
+po_date=$(date)
+
+#cat ../lang_en_cz.txt | sed "/^$/d;/^#/d" | sed '{N;s/\n/ /}' | sed -n '/\"\\x00\"$/p' | sed 's/ \"\\x00\"$//' > lang_pot_cz.tmp
+#cat ../lang_en_de.txt | sed "/^$/d;/^#/d" | sed '{N;s/\n/ /}' | sed -n '/\"\\x00\"$/p' | sed 's/ \"\\x00\"$//' > lang_pot_de.tmp
+#cat ../lang_en_es.txt | sed "/^$/d;/^#/d" | sed '{N;s/\n/ /}' | sed -n '/\"\\x00\"$/p' | sed 's/ \"\\x00\"$//' > lang_pot_es.tmp
+#cat ../lang_en_it.txt | sed "/^$/d;/^#/d" | sed '{N;s/\n/ /}' | sed -n '/\"\\x00\"$/p' | sed 's/ \"\\x00\"$//' > lang_pot_it.tmp
+#cat ../lang_en_pl.txt | sed "/^$/d;/^#/d" | sed '{N;s/\n/ /}' | sed -n '/\"\\x00\"$/p' | sed 's/ \"\\x00\"$//' > lang_pot_pl.tmp
+
+#cat lang_pot_cz.tmp lang_pot_de.tmp lang_pot_es.tmp lang_pot_it.tmp lang_pot_pl.tmp | sort -u > lang_pot.tmp
+
+#cat ../lang_en.txt | sed "/^$/d;/^#/d" > lang_pot.tmp
+
+
+#write po header
+echo "# Translation of Prusa-Firmware into $lang_name." > lang.pot
+echo "#" >> lang.pot
+echo 'msgid ""' >> lang.pot
+echo 'msgstr ""' >> lang.pot
+echo '"MIME-Version: 1.0\n"' >> lang.pot
+echo '"Content-Type: text/plain; charset=UTF-8\n"' >> lang.pot
+echo '"Content-Transfer-Encoding: 8bit\n"' >> lang.pot
+echo '"Language: '$lang_short'\n"' >> lang.pot
+echo '"Project-Id-Version: Prusa-Firmware\n"' >> lang.pot
+echo '"POT-Creation-Date: '$po_date'\n"' >> lang.pot
+echo '"PO-Revision-Date: '$po_date'\n"' >> lang.pot
+echo '"Language-Team: \n"' >> lang.pot
+echo '"X-Generator: Poedit 2.0.7\n"' >> lang.pot
+echo '"X-Poedit-SourceCharset: UTF-8\n"' >> lang.pot
+echo '"Last-Translator: \n"' >> lang.pot
+echo '"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"' >> lang.pot
+echo >> lang.pot
+
+#list .cpp, .c and .h files
+files=$(ls "$SRCDIR"/*.cpp "$SRCDIR"/*.c "$SRCDIR"/*.h)
+
+num_texts=$(grep '^#' -c ../lang_en.txt)
+#num_texts_nt=$(grep '^"' -c lang_en.txt)
+#echo " $num_texts texts, $num_texts_nt not translated" >&2
+echo " $num_texts texts" >&2
+
+#loop over all messages
+s0=''
+s1=''
+num=1
+cat ../lang_en.txt | sed "s/\\\\/\\\\\\\\/g" | while read -r s; do
+ if [ -z "$s" ]; then
+  echo "  processing $num of $num_texts" >&2
+  search=$(/bin/echo -e "$s0")
+  found=$(grep -m1 -n -F "$search" $files | head -n1 | cut -f1-2 -d':' | sed "s/^.*\///")
+  echo "$s1" | sed 's/ c=0//;s/ r=0//;s/^#/# /'
+  echo "#: $found"
+  #echo "#, fuzzy"
+  /bin/echo -e "msgid $s0"
+  echo 'msgstr ""'
+  echo
+  num=$((num+1))
+ fi
+ s1=$s0
+ s0=$s
+done >> lang.pot
+
+#replace LF with CRLF
+sync
+sed -i 's/$/\r/' lang.pot
+
+echo "make_pot.sh finished" >&2
+read
+exit 0

+ 142 - 116
lang/postbuild.sh

@@ -1,116 +1,142 @@
-#!/bin/sh
-# postbuild.sh - multi-language support high-level script
-#  for generating binary with secondary language
-#
-# Input files:
-#  $OUTDIR/Firmware.ino.elf
-#  $OUTDIR/sketch/*.o (all object files)
-#
-# Output files:
-#  text.sym
-#  $PROGMEM.sym (progmem1.sym)
-#  $PROGMEM.lss (...)
-#  $PROGMEM.hex
-#  $PROGMEM.chr
-#  $PROGMEM.var
-#  $PROGMEM.txt
-#  textaddr.txt
-#
-# Output folder and elf file:
-OUTDIR="../../output"
-OUTELF="$OUTDIR/Firmware.ino.elf"
-#
-# AVR gcc tools used:
-OBJCOPY=C:/arduino-1.6.8/hardware/tools/avr/bin/avr-objcopy.exe
-#
-# Selected language:
-LANG=$1
-#if [ -z "$LANG" ]; then LANG='cz'; fi
-#
-# Params:
-IGNORE_MISSING_TEXT=1
-
-function finish
-{
- echo
- if [ "$1" == "0" ]; then
-  echo "postbuild.sh finished with success" >&2
- else
-  echo "postbuild.sh finished with errors!" >&2
- fi
- case "$-" in
-  *i*) echo "press enter key"; read ;;
- esac
- exit $1
-}
-
-echo "postbuild.sh started" >&2
-
-#check input files
-echo " checking files:" >&2
-if [ ! -e $OUTDIR ]; then echo "  folder '$OUTDIR' not found!" >&2; finish 1; fi
-echo "  folder  OK" >&2
-if [ ! -e $OUTELF ]; then echo "  elf file '$OUTELF' not found!" >&2; finish 1; fi
-echo "  elf     OK" >&2
-if ! ls $OUTDIR/sketch/*.o >/dev/null 2>&1; then echo "  no object files in '$OUTDIR/sketch/'!" >&2; finish 1; fi
-echo "  objects OK" >&2
-
-#run progmem.sh - examine content of progmem1
-echo -n " running progmem.sh..." >&2
-./progmem.sh 1 2>progmem.out
-if [ $? -ne 0 ]; then echo "NG! - check progmem.out file" >&2; finish 1; fi
-echo "OK" >&2
-
-#run textaddr.sh - map progmem addreses to text identifiers
-echo -n " running textaddr.sh..." >&2
-./textaddr.sh 2>textaddr.out
-if [ $? -ne 0 ]; then echo "NG! - check progmem.out file" >&2; finish 1; fi
-echo "OK" >&2
-
-#check for messages declared in progmem1, but not found in lang_en.txt
-echo -n " checking textaddr.txt..." >&2
-if cat textaddr.txt | grep "^ADDR NF" >/dev/null; then
- echo "NG! - some texts not found in lang_en.txt!"
- if [ $(("0$IGNORE_MISSING_TEXT")) -eq 0 ]; then
-  finish 1
- else
-  echo "  missing text ignored!" >&2
- fi
-else
- echo "OK" >&2
-fi
-
-#update progmem1 id entries in binary file
-echo -n " extracting binary..." >&2
-$OBJCOPY -I ihex -O binary $OUTDIR/Firmware.ino.hex ./firmware.bin
-echo "OK" >&2
-
-#update binary file
-echo " updating binary:" >&2
-
-#update progmem1 id entries in binary file
-echo -n "  primary language ids..." >&2
-cat textaddr.txt | grep "^ADDR OK" | cut -f3- -d' ' | sed "s/^0000/0x/" |\
- awk '{ id = $2 - 1; hi = int(id / 256); lo = int(id - 256 * hi); printf("%d \\\\x%02x\\\\x%02x\n", strtonum($1), lo, hi); }' |\
- while read addr data; do
-  echo -n -e $data | dd of=./firmware.bin bs=1 count=2 seek=$addr conv=notrunc oflag=nonblock 2>/dev/null
- done
-echo "OK" >&2
-
-#update _SEC_LANG in binary file if language is selected
-echo -n "  secondary language data..." >&2
-if [ ! -z "$LANG" ]; then
- ./update_lang.sh $LANG 2>./update_lang.out
- if [ $? -ne 0 ]; then echo "NG! - check update_lang.out file" >&2; finish 1; fi
- echo "OK" >&2
- finish 0
-else
- echo "skipped" >&2
-fi
-
-#convert bin to hex
-echo -n " converting to hex..." >&2
-$OBJCOPY -I binary -O ihex ./firmware.bin ./firmware.hex
-echo "OK" >&2
-
-finish 0
+#!/bin/sh
+#
+# postbuild.sh - multi-language support script
+#  Generate binary with secondary language.
+#
+# Input files:
+#  $OUTDIR/Firmware.ino.elf
+#  $OUTDIR/sketch/*.o (all object files)
+#
+# Output files:
+#  text.sym
+#  $PROGMEM.sym (progmem1.sym)
+#  $PROGMEM.lss (...)
+#  $PROGMEM.hex
+#  $PROGMEM.chr
+#  $PROGMEM.var
+#  $PROGMEM.txt
+#  textaddr.txt
+#
+#
+# Config:
+if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi
+if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo 'Config NG!' >&2; exit 1; fi
+#
+# Selected language:
+LANG=$1
+#if [ -z "$LANG" ]; then LANG='cz'; fi
+#
+# Params:
+IGNORE_MISSING_TEXT=1
+
+
+finish()
+{
+ echo
+ if [ "$1" = "0" ]; then
+  echo "postbuild.sh finished with success" >&2
+ else
+  echo "postbuild.sh finished with errors!" >&2
+ fi
+ case "$-" in
+  *i*) echo "press enter key"; read ;;
+ esac
+ exit $1
+}
+
+echo "postbuild.sh started" >&2
+
+#check input files
+echo " checking files:" >&2
+if [ ! -e $OUTDIR ]; then echo "  folder '$OUTDIR' not found!" >&2; finish 1; fi
+echo "  folder  OK" >&2
+if [ ! -e $INOELF ]; then echo "  elf file '$INOELF' not found!" >&2; finish 1; fi
+echo "  elf     OK" >&2
+if ! ls $OBJDIR/*.o >/dev/null 2>&1; then echo "  no object files in '$OBJDIR/'!" >&2; finish 1; fi
+echo "  objects OK" >&2
+
+#run progmem.sh - examine content of progmem1
+echo -n " running progmem.sh..." >&2
+./progmem.sh 1 2>progmem.out
+if [ $? -ne 0 ]; then echo "NG! - check progmem.out file" >&2; finish 1; fi
+echo "OK" >&2
+
+#run textaddr.sh - map progmem addreses to text identifiers
+echo -n " running textaddr.sh..." >&2
+./textaddr.sh 2>textaddr.out
+if [ $? -ne 0 ]; then echo "NG! - check progmem.out file" >&2; finish 1; fi
+echo "OK" >&2
+
+#check for messages declared in progmem1, but not found in lang_en.txt
+echo -n " checking textaddr.txt..." >&2
+if cat textaddr.txt | grep "^ADDR NF" >/dev/null; then
+ echo "NG! - some texts not found in lang_en.txt!"
+ if [ $IGNORE_MISSING_TEXT -eq 0 ]; then
+  finish 1
+ else
+  echo "  missing text ignored!" >&2
+ fi
+else
+ echo "OK" >&2
+fi
+
+#update progmem1 id entries in binary file
+echo -n " extracting binary..." >&2
+$OBJCOPY -I ihex -O binary $INOHEX ./firmware.bin
+echo "OK" >&2
+
+#update binary file
+echo " updating binary:" >&2
+
+#update progmem1 id entries in binary file
+echo -n "  primary language ids..." >&2
+cat textaddr.txt | grep "^ADDR OK" | cut -f3- -d' ' | sed "s/^0000/0x/" |\
+ awk '{ id = $2 - 1; hi = int(id / 256); lo = int(id - 256 * hi); printf("%d \\\\x%02x\\\\x%02x\n", strtonum($1), lo, hi); }' |\
+ while read addr data; do
+  /bin/echo -n -e $data | dd of=./firmware.bin bs=1 count=2 seek=$addr conv=notrunc oflag=nonblock 2>/dev/null
+ done
+echo "OK" >&2
+
+#update _SEC_LANG in binary file if language is selected
+echo -n "  secondary language data..." >&2
+if [ ! -z "$LANG" ]; then
+ ./update_lang.sh $LANG 2>./update_lang.out
+ if [ $? -ne 0 ]; then echo "NG! - check update_lang.out file" >&2; finish 1; fi
+ echo "OK" >&2
+ finish 0
+else
+ echo "Updating languages:" >&2
+ if [ -e lang_cz.bin ]; then
+  echo -n " Czech  : " >&2
+  ./update_lang.sh cz 2>./update_lang_cz.out 1>/dev/null
+  if [ $? -eq 0 ]; then echo 'OK' >&2; else echo 'NG!' >&2; fi
+ fi
+ if [ -e lang_de.bin ]; then
+  echo -n " German : " >&2
+  ./update_lang.sh de 2>./update_lang_de.out 1>/dev/null
+  if [ $? -eq 0 ]; then echo 'OK' >&2; else echo 'NG!' >&2; fi
+ fi
+ if [ -e lang_it.bin ]; then
+  echo -n " Italian: " >&2
+  ./update_lang.sh it 2>./update_lang_it.out 1>/dev/null
+  if [ $? -eq 0 ]; then echo 'OK' >&2; else echo 'NG!' >&2; fi
+ fi
+ if [ -e lang_es.bin ]; then
+  echo -n " Spanish: " >&2
+  ./update_lang.sh es 2>./update_lang_es.out 1>/dev/null
+  if [ $? -eq 0 ]; then echo 'OK' >&2; else echo 'NG!' >&2; fi
+ fi
+ if [ -e lang_pl.bin ]; then
+  echo -n " Polish : " >&2
+  ./update_lang.sh pl 2>./update_lang_pl.out 1>/dev/null
+  if [ $? -eq 0 ]; then echo 'OK' >&2; else echo 'NG!' >&2; fi
+ fi
+# echo "skipped" >&2
+fi
+
+#convert bin to hex
+#echo -n " converting to hex..." >&2
+#$OBJCOPY -I binary -O ihex ./firmware.bin ./firmware.hex
+#echo "OK" >&2
+
+finish 0

+ 131 - 126
lang/progmem.sh

@@ -1,127 +1,132 @@
-#!/bin/sh
-# progmem.sh - multi-language support low-level script
-#  for examining content of progmem sections (default is progmem1)
-#
-# Input files:
-#  $OUTDIR/Firmware.ino.elf
-#  $OUTDIR/sketch/*.o (all object files)
-#
-# Output files:
-#  text.sym
-#  $PROGMEM.sym
-#  $PROGMEM.lss
-#  $PROGMEM.hex
-#  $PROGMEM.chr
-#  $PROGMEM.var
-#  $PROGMEM.txt
-#
-# Program memory used
-PROGMEM=progmem$1
-if [ -z "$1" ]; then PROGMEM=progmem1; fi
-#
-# Output folder and elf file:
-OUTDIR="../../output"
-OUTELF="$OUTDIR/Firmware.ino.elf"
-#
-# AVR gcc tools used:
-OBJDUMP=C:/arduino-1.6.8/hardware/tools/avr/bin/avr-objdump.exe
-#
-#
-# Description of process:
-#  0. check input files
-#  1. remove output files
-#  2. list symbol table of section '.text' from output elf file to text.sym (sorted by address)
-#  3. list symbol table of section '.$PROGMEM' from all output object files to $PROGMEM.sym
-#  4. filter only $PROGMEM symbols from text.sym and store it back to $PROGMEM.sym with absolute address
-#  5. calculate start and stop address of section '.$PROGMEM'
-#  6. extract string data from elf file to $PROGMEM.hex
-#  7. prepare string data for character check and conversion (output to $PROGMEM.chr)
-#  8. perform character check and conversion (output to $PROGMEM.var and $PROGMEM.txt)
-#
-
-echo "progmem.sh started" >&2
-
-# (0)
-echo " progmem.sh (0) - checking input files" >&2
-if [ ! -e $OUTDIR ]; then echo "progmem.sh - file '$OUTELF' not found!" >&2; exit 1; fi
-
-# (1)
-echo " progmem.sh (1) - removing output files" >&2
-#remove output files if exists
-if [ -e text.sym ]; then rm text.sym; fi
-if [ -e $PROGMEM.sym ]; then rm $PROGMEM.sym; fi
-if [ -e $PROGMEM.lss ]; then rm $PROGMEM.lss; fi
-if [ -e $PROGMEM.hex ]; then rm $PROGMEM.hex; fi
-if [ -e $PROGMEM.chr ]; then rm $PROGMEM.chr; fi
-if [ -e $PROGMEM.var ]; then rm $PROGMEM.var; fi
-if [ -e $PROGMEM.txt ]; then rm $PROGMEM.txt; fi
-
-# (2)
-echo " progmem.sh (2) - listing symbol table of section '.text'" >&2
-#list symbols from section '.text' into file text.sym (only address, size and name)
-$OBJDUMP -t -j ".text" $OUTELF | tail -n +5 | grep -E "^[0-9a-f]{8} [gl]     O" | cut -c1-9,28-36,37- | sed "/^$/d" | sort >> text.sym
-
-# (3)
-echo " progmem.sh (3) - listing symbol table of section '.$PROGMEM'" >&2
-#loop over all object files
-ls "$OUTDIR"/sketch/*.o | while read fn; do
- echo "  processing $fn" >&2
- #list symbols from section $PROGMEM (only address, size and name)
- $OBJDUMP -t -j ".$PROGMEM" $fn 2>/dev/null | tail -n +5 | cut -c1-9,28-36,37- | sed "/^$/d" | sort >> $PROGMEM.sym
-done
-
-# (4)
-echo " progmem.sh (4) - filtering $PROGMEM symbols" >&2
-#create list of $PROGMEM symbol names separated by '\|'
-progmem=$(cut -c19- $PROGMEM.sym)
-progmem=$(echo $progmem | sed "s/ /\\\b\\\|\\\b/g")
-progmem='\b'$progmem'\b'
-#filter $PROGMEM symbols from section '.text' (result file will contain list sorted by absolute address) 
-cat text.sym | grep $progmem > $PROGMEM.sym
-
-# (5)
-echo " progmem.sh (5) - calculating start and stop address" >&2
-#calculate start addres of section ".$PROGMEM"
-PROGMEM_BEG=$(head -n1 $PROGMEM.sym | while read offs size name; do echo "0x"$offs; done)
-#calculate stop addres of section ".$PROGMEM"
-PROGMEM_END=$(tail -n1 $PROGMEM.sym | while read offs size name; do printf "0x%x" $(("0x"$offs + "0x"$size)); done)
-echo "  START address = "$PROGMEM_BEG >&2
-echo "  STOP  address = "$PROGMEM_END >&2
-
-# (6)
-echo " progmem.sh (6) - extracting string data from elf" >&2
-#dump $PROGMEM data in hex format, cut textual data (keep hex data only)
-$OBJDUMP -d -j ".text" -w -z --start-address=$PROGMEM_BEG --stop-address=$PROGMEM_END $OUTELF | cut -c1-57 > $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)
-# filter progmem symbols
-cat $PROGMEM.lss | tail -n +7 | sed -E 's/^$/|/;s/^........:\t/ /;s/<//g;s/>:/ /g;s/[ \t]*$//' |\
- tr -d '\n' | sed "s/[|]/\n/g" | grep $progmem > $PROGMEM.hex
-
-# (7)
-echo " progmem.sh (7) - preparing string data" >&2
-#convert $PROGMEM.hex to $PROGMEM.chr (prepare string data for character check and conversion) 
-# replace first space with tab
-# replace second space with tab and space
-# replace all remaining spaces with '\x'
-# replace all tabs with spaces
-cat $PROGMEM.hex | sed 's/ /\t/;s/ /\t /;s/ /\\x/g;s/\t/ /g' > $PROGMEM.chr
-
-# (8)
-#convert $PROGMEM.chr to $PROGMEM.var (convert data to text)
-echo " progmem.sh (8) - converting string data" >&2
-cat $PROGMEM.chr | \
- sed 's/ \\xff\\xff/ /;' | \
- sed 's/\\x22/\\\\\\x22/g;' | \
- sed 's/\\x1b/\\\\\\x1b/g;' | \
- sed 's/\\x01/\\\\\\x01/g;' | \
- sed 's/\\xf8/\\\\\\xf8/g;' | \
- sed 's/\\x00$/\\x0a/;s/^/printf "/;s/$/"/' | sh > $PROGMEM.var
-cat $PROGMEM.var | sed 's/\r/\n/g' |sed -E 's/^[0-9a-f]{8} [^ ]* //' >$PROGMEM.txt
-
-echo "progmem.sh finished" >&2
-
+#!/bin/sh
+#
+# progmem.sh - multi-language support script
+#  Examine content of progmem sections (default is progmem1).
+#
+# Input files:
+#  $OUTDIR/Firmware.ino.elf
+#  $OUTDIR/sketch/*.o (all object files)
+#
+# Output files:
+#  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)
+#
+#
+# Config:
+if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi
+if [ -z "$OUTDIR" ]; then echo 'variable OUTDIR not set!' >&2; exit 1; fi
+if [ -z "$OBJDIR" ]; then echo 'variable OBJDIR not set!' >&2; exit 1; fi
+if [ -z "$INOELF" ]; then echo 'variable INOELF not set!' >&2; exit 1; fi
+if [ -z "$OBJDUMP" ]; then echo 'variable OBJDUMP not set!' >&2; exit 1; fi
+if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo 'Config NG!' >&2; exit 1; fi
+#
+# Program memory used
+PROGMEM=progmem$1
+if [ -z "$1" ]; then PROGMEM=progmem1; fi
+#
+# Description of process:
+#  0. check input files
+#  1. remove output files
+#  2. list symbol table of section '.text' from output elf file to text.sym (sorted by address)
+#  3. list symbol table of section '.$PROGMEM' from all output object files to $PROGMEM.sym
+#  4. filter only $PROGMEM symbols from text.sym and store it back to $PROGMEM.sym with absolute address
+#  5. calculate start and stop address of section '.$PROGMEM'
+#  6. extract string data from elf file to $PROGMEM.hex
+#  7. prepare string data for character check and conversion (output to $PROGMEM.chr)
+#  8. perform character check and conversion (output to $PROGMEM.var and $PROGMEM.txt)
+#
+
+echo "progmem.sh started" >&2
+
+# (0)
+echo " progmem.sh (0) - checking input files" >&2
+if [ ! -e $OUTDIR ]; then echo "progmem.sh - file '$INOELF' not found!" >&2; exit 1; fi
+
+# (1)
+echo " progmem.sh (1) - removing output files" >&2
+#remove output files if exists
+if [ -e text.sym ]; then rm text.sym; fi
+if [ -e $PROGMEM.sym ]; then rm $PROGMEM.sym; fi
+if [ -e $PROGMEM.lss ]; then rm $PROGMEM.lss; fi
+if [ -e $PROGMEM.hex ]; then rm $PROGMEM.hex; fi
+if [ -e $PROGMEM.chr ]; then rm $PROGMEM.chr; fi
+if [ -e $PROGMEM.var ]; then rm $PROGMEM.var; fi
+if [ -e $PROGMEM.txt ]; then rm $PROGMEM.txt; fi
+
+# (2)
+echo " progmem.sh (2) - listing symbol table of section '.text'" >&2
+#list symbols from section '.text' into file text.sym (only address, size and name)
+$OBJDUMP -t -j ".text" $INOELF | tail -n +5 | grep -E "^[0-9a-f]{8} [gl]     O" | cut -c1-9,28-36,37- | sed "/^$/d" | sort >> text.sym
+
+# (3)
+echo " progmem.sh (3) - listing symbol table of section '.$PROGMEM'" >&2
+#loop over all object files
+ls "$OBJDIR"/*.o | while read fn; do
+ echo "  processing $fn" >&2
+ #list symbols from section $PROGMEM (only address, size and name)
+ $OBJDUMP -t -j ".$PROGMEM" $fn 2>/dev/null | tail -n +5 | cut -c1-9,28-36,37- | sed "/^$/d" | sort >> $PROGMEM.sym
+done
+
+# (4)
+echo " progmem.sh (4) - filtering $PROGMEM symbols" >&2
+#create list of $PROGMEM symbol names separated by '\|'
+progmem=$(cut -c19- $PROGMEM.sym)
+progmem=$(echo $progmem | sed "s/ /\\\b\\\|\\\b/g")
+progmem='\b'$progmem'\b'
+#filter $PROGMEM symbols from section '.text' (result file will contain list sorted by absolute address) 
+cat text.sym | grep $progmem > $PROGMEM.sym
+
+# (5)
+echo " progmem.sh (5) - calculating start and stop address" >&2
+#calculate start addres of section ".$PROGMEM"
+PROGMEM_BEG=$(head -n1 $PROGMEM.sym | while read offs size name; do echo "0x"$offs; done)
+#calculate stop addres of section ".$PROGMEM"
+PROGMEM_END=$(tail -n1 $PROGMEM.sym | while read offs size name; do printf "0x%x" $((0x$offs + 0x$size)); done)
+echo "  START address = "$PROGMEM_BEG >&2
+echo "  STOP  address = "$PROGMEM_END >&2
+
+# (6)
+echo " progmem.sh (6) - extracting string data from elf" >&2
+#dump $PROGMEM data in hex format, cut textual data (keep hex data only)
+$OBJDUMP -d -j ".text" -w -z --start-address=$PROGMEM_BEG --stop-address=$PROGMEM_END $INOELF | cut -c1-57 > $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)
+# filter progmem symbols
+cat $PROGMEM.lss | tail -n +7 | sed -E 's/^$/|/;s/^........:\t/ /;s/<//g;s/>:/ /g;s/[ \t]*$//' |\
+ tr -d '\n' | sed "s/[|]/\n/g" | grep $progmem > $PROGMEM.hex
+
+# (7)
+echo " progmem.sh (7) - preparing string data" >&2
+#convert $PROGMEM.hex to $PROGMEM.chr (prepare string data for character check and conversion) 
+# replace first space with tab
+# replace second space with tab and space
+# replace all remaining spaces with '\x'
+# replace all tabs with spaces
+cat $PROGMEM.hex | sed 's/ /\t/;s/ /\t /;s/ /\\x/g;s/\t/ /g' > $PROGMEM.chr
+
+
+# (8)
+#convert $PROGMEM.chr to $PROGMEM.var (convert data to text, TODO: rewrite as awk script)
+echo " progmem.sh (8) - converting string data" >&2
+cat $PROGMEM.chr | \
+ sed 's/ \\xff\\xff/ /;' | \
+ sed 's/\\x22/\\\\\\x22/g;' | \
+ sed 's/\\x1b/\\\\\\x1b/g;' | \
+ sed 's/\\x01/\\\\\\x01/g;' | \
+ sed 's/\\xf8/\\\\\\xf8/g;' | \
+ sed 's/\\x00$//;s/^/\/bin\/echo -e "/;s/$/"/' | sh > $PROGMEM.var
+
+#this step can be omitted because .txt file is not used
+#cat $PROGMEM.var | sed 's/\r/\n/g' | sed -E 's/^[0-9a-f]{8} [^ ]* //' >$PROGMEM.txt
+
+echo "progmem.sh finished" >&2
+
 exit 0

+ 67 - 67
lang/textaddr.sh

@@ -1,68 +1,68 @@
-#!/bin/sh
-# textaddr.sh - multi-language support low level script
-#  for compiling progmem1.var and lang_en.txt files
-#  to textaddr.txt file (mapping of progmem addreses to text idenifiers)
-#
-# Input files:
-#  progmem1.var
-#  lang_en.txt
-#
-# Output files:
-#  textaddr.txt
-#
-#
-# Dscription 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
-#
-
-echo "textaddr.sh started" >&2
-
-if [ ! -e progmem1.var ]; then echo 'textaddr.sh - file progmem1.var not found!' >&2; exit 1; fi 
-if [ ! -e lang_en.txt ]; then echo 'textaddr.sh - file lang_en.txt not found!' >&2; exit 1; fi 
-addr=''
-text=''
-(cat progmem1.var | sed -E "s/^([^ ]*) ([^ ]*) (.*)/\1 \"\3\"/";\
- cat lang_en.txt | sed "/^$/d;/^#/d" | sed = | sed '{N;s/\n/ /}') |\
- sort -k2 |\
- sed "s/\\\/\\\\\\\/g" | while read num txt; do
- if [ ${#num} -eq 8 ]; then
-  if [ -z "$addr" ]; then
-   addr=$num
-  else
-   if [ "$text" == "$txt" ]; then
-    addr="$addr $num"
-   else
-    echo "ADDR NF $addr $text"
-    addr=$num
-   fi
-  fi
-  text=$txt   
- else
-  if [ -z "$addr" ]; then
-   echo "TEXT NF $num $txt"
-  else
-   if [ "$text" == "$txt" ]; then
-    if [ ${#addr} -eq 8 ]; then
-     echo "ADDR OK $addr $num"
-    else
-     echo "$addr" | sed "s/ /\n/g" | while read ad; do
-      echo "ADDR OK $ad $num"
-     done
-    fi
-    addr=''
-    text=''
-   else
-    echo "TEXT NF $num $txt"
-   fi
-  fi
- fi
-done > textaddr.txt
-
-echo "textaddr.sh finished" >&2
-
+#!/bin/sh
+#
+# textaddr.sh - multi-language support script
+#  Compile progmem1.var and lang_en.txt files to textaddr.txt file (mapping of progmem addreses to text idenifiers)
+#
+# Input files:
+#  progmem1.var
+#  lang_en.txt
+#
+# Output files:
+#  textaddr.txt
+#
+#
+# Dscription 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
+#
+
+echo "textaddr.sh started" >&2
+
+if [ ! -e progmem1.var ]; then echo 'textaddr.sh - file progmem1.var not found!' >&2; exit 1; fi 
+if [ ! -e lang_en.txt ]; then echo 'textaddr.sh - file lang_en.txt not found!' >&2; exit 1; fi 
+addr=''
+text=''
+(cat progmem1.var | sed -E "s/^([^ ]*) ([^ ]*) (.*)/\1 \"\3\"/";\
+ cat lang_en.txt | sed "/^$/d;/^#/d" | sed = | sed '{N;s/\n/ /}') |\
+ sort -k2 |\
+ sed "s/\\\/\\\\\\\/g" | while read num txt; do
+ if [ ${#num} -eq 8 ]; then
+  if [ -z "$addr" ]; then
+   addr=$num
+  else
+   if [ "$text" = "$txt" ]; then
+    addr="$addr $num"
+   else
+    echo "ADDR NF $addr $text"
+    addr=$num
+   fi
+  fi
+  text=$txt   
+ else
+  if [ -z "$addr" ]; then
+   echo "TEXT NF $num $txt"
+  else
+   if [ "$text" = "$txt" ]; then
+    if [ ${#addr} -eq 8 ]; then
+     echo "ADDR OK $addr $num"
+    else
+     echo "$addr" | sed "s/ /\n/g" | while read ad; do
+      echo "ADDR OK $ad $num"
+     done
+    fi
+    addr=''
+    text=''
+   else
+    echo "TEXT NF $num $txt"
+   fi
+  fi
+ fi
+done > textaddr.txt
+
+echo "textaddr.sh finished" >&2
+
 exit 0

+ 71 - 68
lang/update_lang.sh

@@ -1,68 +1,71 @@
-#!/bin/sh
-# update_lang.sh - multi-language support low level script
-#  for updating secondary language in binary file
-#
-# AVR gcc tools used:
-OBJCOPY=C:/arduino-1.6.8/hardware/tools/avr/bin/avr-objcopy.exe
-#
-# Selected language:
-LANG=$1
-if [ -z "$LANG" ]; then LANG='cz'; fi
-#
-
-function finish
-{
- echo
- if [ "$1" == "0" ]; then
-  echo "update_lang.sh finished with success" >&2
- else
-  echo "update_lang.sh finished with errors!" >&2
- fi
- case "$-" in
-  *i*) echo "press enter key"; read ;;
- esac
- exit $1
-}
-
-echo "update_lang.sh started" >&2
-echo "selected language=$LANG" >&2
-
-echo -n " checking files..." >&2
-if [ ! -e text.sym ]; then echo "NG!  file text.sym not found!" >&2; finish 1; fi
-if [ ! -e lang_$LANG.bin ]; then echo "NG!  file lang_$LANG.bin not found!" >&2; finish 1; fi
-if [ ! -e firmware.bin ]; then echo "NG!  file firmware.bin not found!" >&2; finish 1; fi
-echo "OK" >&2
-
-echo -n " checking symbols..." >&2
-#find symbol _SEC_LANG in section '.text'
-sec_lang=$(cat text.sym | grep -E "\b_SEC_LANG\b")
-if [ -z "$sec_lang" ]; then echo "NG!\n  symbol _SEC_LANG not found!" >&2; finish 1; fi
-echo "OK" >&2
-
-echo " calculating vars:" >&2
-#get addres and size
-sec_lang_addr='0x'$(echo $sec_lang | cut -f1 -d' ')
-sec_lang_size='0x'$(echo $sec_lang | cut -f2 -d' ')
-echo "  sec_lang_addr   =$sec_lang_addr" >&2
-echo "  sec_lang_size   =$sec_lang_size" >&2
-#calculate lang_table_addr (aligned to 256byte page)
-lang_table_addr=$((256*$((($sec_lang_addr + 255) / 256))))
-printf "  lang_table_addr =0x%04x\n" $lang_table_addr >&2
-#calculate lang_table_size
-lang_table_size=$((256*$((($sec_lang_size - ($lang_table_addr - $sec_lang_addr))/256))))
-printf "  lang_table_size =0x%04x (=%d bytes)\n" $lang_table_size $lang_table_size >&2
-
-#get lang_xx.bin file size
-lang_file_size=$(wc -c lang_$LANG.bin | cut -f1 -d' ')
-printf "  lang_file_size  =0x%04x (=%d bytes)\n" $lang_file_size $lang_file_size >&2
-
-if [ $lang_file_size -gt $lang_table_size ]; then echo "Lanaguage binary file size too big!"; finish 1; fi
-
-echo "updating 'firmware.bin'..." >&2
-dd if=lang_$LANG.bin of=firmware.bin bs=1 seek=$lang_table_addr conv=notrunc 2>/dev/null
-
-#convert bin to hex
-echo "converting to hex..." >&2
-$OBJCOPY -I binary -O ihex ./firmware.bin ./firmware.hex
-
-finish 0
+#!/bin/sh
+#
+# update_lang.sh - multi-language support script
+#  Update secondary language in binary file.
+#
+# Config:
+if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi
+if [ -z "$OBJCOPY" ]; then echo 'variable OBJCOPY not set!' >&2; exit 1; fi
+if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo 'Config NG!' >&2; exit 1; fi
+#
+# Selected language:
+LANG=$1
+if [ -z "$LANG" ]; then LANG='cz'; fi
+#
+
+finish()
+{
+ echo
+ if [ "$1" = "0" ]; then
+  echo "update_lang.sh finished with success" >&2
+ else
+  echo "update_lang.sh finished with errors!" >&2
+ fi
+ case "$-" in
+  *i*) echo "press enter key" >&2; read ;;
+ esac
+ exit $1
+}
+
+echo "update_lang.sh started" >&2
+echo " selected language=$LANG" >&2
+
+echo -n " checking files..." >&2
+if [ ! -e text.sym ]; then echo "NG!  file text.sym not found!" >&2; finish 1; fi
+if [ ! -e lang_$LANG.bin ]; then echo "NG!  file lang_$LANG.bin not found!" >&2; finish 1; fi
+if [ ! -e firmware.bin ]; then echo "NG!  file firmware.bin not found!" >&2; finish 1; fi
+echo "OK" >&2
+
+echo -n " checking symbols..." >&2
+#find symbol _SEC_LANG in section '.text'
+sec_lang=$(cat text.sym | grep -E "\b_SEC_LANG\b")
+if [ -z "$sec_lang" ]; then echo "NG!\n  symbol _SEC_LANG not found!" >&2; finish 1; fi
+echo "OK" >&2
+
+echo " calculating vars:" >&2
+#get addres and size
+sec_lang_addr='0x'$(echo $sec_lang | cut -f1 -d' ')
+sec_lang_size='0x'$(echo $sec_lang | cut -f2 -d' ')
+echo "  sec_lang_addr   =$sec_lang_addr" >&2
+echo "  sec_lang_size   =$sec_lang_size" >&2
+#calculate lang_table_addr (aligned to 256byte page)
+lang_table_addr=$((256*$((($sec_lang_addr + 255) / 256))))
+printf "  lang_table_addr =0x%04x\n" $lang_table_addr >&2
+#calculate lang_table_size
+lang_table_size=$((256*$((($sec_lang_size - ($lang_table_addr - $sec_lang_addr))/256))))
+printf "  lang_table_size =0x%04x (=%d bytes)\n" $lang_table_size $lang_table_size >&2
+
+#get lang_xx.bin file size
+lang_file_size=$(wc -c lang_$LANG.bin | cut -f1 -d' ')
+printf "  lang_file_size  =0x%04x (=%d bytes)\n" $lang_file_size $lang_file_size >&2
+
+if [ $lang_file_size -gt $lang_table_size ]; then echo "Lanaguage binary file size too big!" >&2; finish 1; fi
+
+echo "updating 'firmware.bin'..." >&2
+dd if=lang_$LANG.bin of=firmware.bin bs=1 seek=$lang_table_addr conv=notrunc 2>/dev/null
+
+#convert bin to hex
+echo "converting to hex..." >&2
+$OBJCOPY -I binary -O ihex ./firmware.bin ./firmware_$LANG.hex
+
+finish 0