diff --git a/Marlin/language.h b/Marlin/language.h
index 3268971ff12f9399bbc612dca5fda79c0fb96dea..15ebb98711c41e5d4862f75934713b1f808cbb27 100644
--- a/Marlin/language.h
+++ b/Marlin/language.h
@@ -114,6 +114,8 @@
 	#define MSG_CONTROL_RETRACT_RECOVERF "UnRet  F"
 	#define MSG_AUTORETRACT "AutoRetr."
 	#define MSG_FILAMENTCHANGE "Change filament"
+	#define MSG_INIT_SDCARD "Init. SD-Card"	
+	#define MSG_CNG_SDCARD "Change SD-Card"
 
 // Serial Console Messages
 
@@ -259,6 +261,7 @@
 	#define MSG_NO_CARD "Brak karty"
 	#define MSG_DWELL "Uspij..."
 	#define MSG_USERWAIT "Czekaj na uzytkownika..."
+	#define MSG_RESUMING "Wznawiam drukowanie"
 	#define MSG_NO_MOVE "Brak ruchu."
 	#define MSG_PART_RELEASE "Czesciowe zwolnienie"
 	#define MSG_KILLED "Ubity. "
@@ -985,88 +988,83 @@
 	#define WELCOME_MSG MACHINE_NAME " Pronto."
 	#define MSG_SD_INSERTED          "SD Card inserita"
 	#define MSG_SD_REMOVED           "SD Card rimossa"
-	#define MSG_MAIN                 " Menu principale \003"
-	#define MSG_AUTOSTART            " Autostart"
-	#define MSG_DISABLE_STEPPERS     " Disabilita Motori Passo-Passo"
-	#define MSG_AUTO_HOME            " Auto Home"
-	#define MSG_SET_ORIGIN           " Imposta Origini Assi"
-	#define MSG_PREHEAT_PLA          " Preriscalda PLA"
-	#define MSG_PREHEAT_PLA_SETTINGS " Impostazioni Preriscaldamento PLA"
-	#define MSG_PREHEAT_ABS          " Preriscalda ABS"
-	#define MSG_PREHEAT_ABS_SETTINGS " Impostazioni Preriscaldamento ABS"
-	#define MSG_COOLDOWN             " Rafredda"
-	#define MSG_EXTRUDE              " Estrudi"
-	#define MSG_RETRACT              " Ritrai"
-	#define MSG_MOVE_AXIS            " Muovi Asse      \x7E"
-	#define MSG_SPEED                " Velcità:"
-	#define MSG_NOZZLE               " \002Ugello:"
-	#define MSG_NOZZLE1              " \002Ugello2:"
-	#define MSG_NOZZLE2              " \002Ugello3:"
-	#define MSG_BED                  " \002Piatto:"
-	#define MSG_FAN_SPEED            " Velocità Ventola:"
-	#define MSG_FLOW                 " Flusso:"
-	#define MSG_CONTROL              " Controllo \003"
+	#define MSG_MAIN                 "Menu principale"
+	#define MSG_AUTOSTART            "Autostart"
+	#define MSG_DISABLE_STEPPERS     "Disabilita Motori"
+	#define MSG_AUTO_HOME            "Auto Home"
+	#define MSG_SET_ORIGIN           "Imposta Origine"
+	#define MSG_PREHEAT_PLA          "Preriscalda PLA"
+	#define MSG_PREHEAT_PLA_SETTINGS "Preris. PLA Conf"
+	#define MSG_PREHEAT_ABS          "Preriscalda ABS"
+	#define MSG_PREHEAT_ABS_SETTINGS "Preris. ABS Conf"
+	#define MSG_COOLDOWN             "Rafredda"
+	#define MSG_EXTRUDE              "Estrudi"
+	#define MSG_RETRACT              "Ritrai"
+	#define MSG_MOVE_AXIS            "Muovi Asse"
+	#define MSG_SPEED                "Velcità"
+	#define MSG_NOZZLE               "Ugello"
+	#define MSG_NOZZLE1              "Ugello2"
+	#define MSG_NOZZLE2              "Ugello3"
+	#define MSG_BED                  "Piatto"
+	#define MSG_FAN_SPEED            "Ventola"
+	#define MSG_FLOW                 "Flusso"
+	#define MSG_CONTROL              "Controllo"
 	#define MSG_MIN                  " \002 Min:"
 	#define MSG_MAX                  " \002 Max:"
 	#define MSG_FACTOR               " \002 Fact:"
-	#define MSG_AUTOTEMP             " Autotemp:"
+	#define MSG_AUTOTEMP             "Autotemp"
 	#define MSG_ON                   "On "
 	#define MSG_OFF                  "Off"
-	#define MSG_PID_P                " PID-P: "
-	#define MSG_PID_I                " PID-I: "
-	#define MSG_PID_D                " PID-D: "
-	#define MSG_PID_C                " PID-C: "
-	#define MSG_ACC                  " Acc:"
-	#define MSG_VXY_JERK             " Vxy-jerk: "
-	#define MSG_VMAX                 " Vmax "
-	#define MSG_X                    "x:"
-	#define MSG_Y                    "y:"
-	#define MSG_Z                    "z:"
-	#define MSG_E                    "e:"
-	#define MSG_VMIN                 " Vmin:"
-	#define MSG_VTRAV_MIN            " VTrav min:"
-	#define MSG_AMAX                 " Amax "
-	#define MSG_A_RETRACT            " A-ritrai:"
-	#define MSG_XSTEPS               " Xpassi/mm:"
-	#define MSG_YSTEPS               " Ypassi/mm:"
-	#define MSG_ZSTEPS               " Zpassi/mm:"
-	#define MSG_ESTEPS               " Epassi/mm:"
-	#define MSG_MAIN_WIDE            " Menu Principale        \003"
-	#define MSG_RECTRACT_WIDE        " Ritrai    \x7E"
-	#define MSG_TEMPERATURE_WIDE     " Temperatura \x7E"
-	#define MSG_TEMPERATURE_RTN      " Temperatura  \003"
-	#define MSG_MOTION_WIDE          " Movimento      \x7E"
-	#define MSG_STORE_EPROM          " Salva in memoria"
-	#define MSG_LOAD_EPROM           " Carica dalla memoria"
-	#define MSG_RESTORE_FAILSAFE     " Configurazioni di default"
-	#define MSG_REFRESH              "\004Aggiorna"
-	#define MSG_WATCH                " Guarda   \003"
-	#define MSG_PREPARE              " Prepara \x7E"
-	#define MSG_PREPARE_ALT          " Prepara \003"
-	#define MSG_CONTROL_ARROW        " Controllo \x7E"
-	#define MSG_RETRACT_ARROW        " Ritrai \x7E"
-	#define MSG_TUNE                 " Tune    \x7E"
-	#define MSG_PAUSE_PRINT          " Metti in Pausa la Stampa \x7E"
-	#define MSG_RESUME_PRINT         " Riprendi Stampa \x7E"
-	#define MSG_STOP_PRINT           " Arresta Stampa   \x7E"
-	#define MSG_CARD_MENU            " Card Menu    \x7E"
-	#define MSG_NO_CARD              " No Card"
-	#define MSG_DWELL                " Sospensione..."
-	#define MSG_USERWAIT             "Attendi utente..."
-	#define MSG_RESUMING             "Riprendi stampa"
-	#define MSG_NO_MOVE              "Nessun movimento."
-	#define MSG_PART_RELEASE         "Rilascio Parziale"
+	#define MSG_PID_P                "PID-P"
+	#define MSG_PID_I                "PID-I"
+	#define MSG_PID_D                "PID-D"
+	#define MSG_PID_C                "PID-C"
+	#define MSG_ACC                  "Accel"
+	#define MSG_VXY_JERK             "Vxy-jerk"
+	#define MSG_VMAX                 "Vmax"
+	#define MSG_X                    "x"
+	#define MSG_Y                    "y"
+	#define MSG_Z                    "z"
+	#define MSG_E                    "e"
+	#define MSG_VMIN                 "Vmin"
+	#define MSG_VTRAV_MIN            "VTrav min"
+	#define MSG_AMAX                 "Amax"
+	#define MSG_A_RETRACT            "A-retract"
+	#define MSG_XSTEPS               "Xpassi/mm"
+	#define MSG_YSTEPS               "Ypassi/mm"
+	#define MSG_ZSTEPS               "Zpassi/mm"
+	#define MSG_ESTEPS               "Epassi/mm"
+	#define MSG_RECTRACT             "Ritrai"
+	#define MSG_TEMPERATURE          "Temperatura"
+	#define MSG_MOTION               "Movimento"
+	#define MSG_STORE_EPROM          "Salva in EEPROM"
+	#define MSG_LOAD_EPROM           "Carica da EEPROM"
+	#define MSG_RESTORE_FAILSAFE     "Impostaz. default"
+	#define MSG_REFRESH              "Aggiorna"
+	#define MSG_WATCH                "Guarda"
+	#define MSG_PREPARE              "Prepara"
+	#define MSG_TUNE                 "Adatta"
+	#define MSG_PAUSE_PRINT          "Pausa"
+	#define MSG_RESUME_PRINT         "Riprendi Stampa"
+	#define MSG_STOP_PRINT           "Arresta Stampa"
+	#define MSG_CARD_MENU            "SD Card Menu"
+	#define MSG_NO_CARD              "No SD Card"
+	#define MSG_DWELL                "Sospensione..."
+	#define MSG_USERWAIT             "Attendi Utente..."
+	#define MSG_RESUMING             "Riprendi Stampa"
+	#define MSG_NO_MOVE              "Nessun Movimento."
 	#define MSG_KILLED               "UCCISO. "
 	#define MSG_STOPPED              "ARRESTATO. "
-	#define MSG_STEPPER_RELEASED     "Rilasciato."
-	#define MSG_CONTROL_RETRACT      " Ritrai mm:"
-	#define MSG_CONTROL_RETRACTF     " Ritrai  F:"
-	#define MSG_CONTROL_RETRACT_ZLIFT " Salta mm:"
-	#define MSG_CONTROL_RETRACT_RECOVER " UnRet +mm:"
-	#define MSG_CONTROL_RETRACT_RECOVERF " UnRet  F:"
-	#define MSG_AUTORETRACT          " AutoRilascio.:"
+	#define MSG_CONTROL_RETRACT      "Ritrai mm"
+	#define MSG_CONTROL_RETRACTF     "Ritrai  F"
+	#define MSG_CONTROL_RETRACT_ZLIFT "Salta mm"
+	#define MSG_CONTROL_RETRACT_RECOVER "UnRet +mm"
+	#define MSG_CONTROL_RETRACT_RECOVERF "UnRet  F"
+	#define MSG_AUTORETRACT          "AutoArretramento"
 	#define MSG_SERIAL_ERROR_MENU_STRUCTURE "Qualcosa non va in MenuStructure."
-	#define MSG_FILAMENTCHANGE "Change filament"
+	#define MSG_FILAMENTCHANGE       "Cambia filamento"
+	#define MSG_INIT_SDCARD          "Iniz. SD-Card"
+	#define MSG_CNG_SDCARD           "Cambia SD-Card"
 
 	// Serial Console Messages
 
@@ -1083,10 +1081,10 @@
 	#define MSG_PLANNER_BUFFER_BYTES "  PlannerBufferBytes: "
 	#define MSG_OK                   "ok"
 	#define MSG_FILE_SAVED           "File Salvato."
-	#define MSG_ERR_LINE_NO          "Il Numero della Linea non corrisponde al Numero dell'Ultima Linea+1, Ultima Linea:"
-	#define MSG_ERR_CHECKSUM_MISMATCH "checksum non corrispondente, Ultima Linea:"
-	#define MSG_ERR_NO_CHECKSUM      "Nessun Checksum con Numero di Linea, Ultima Linea:"
-	#define MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM "Nessun Numero di Linea con Checksum, Ultima Linea:"
+	#define MSG_ERR_LINE_NO          "Il Numero della Linea non corrisponde al Numero dell'Ultima Linea+1, Ultima Linea: "
+	#define MSG_ERR_CHECKSUM_MISMATCH "checksum non corrispondente, Ultima Linea: "
+	#define MSG_ERR_NO_CHECKSUM      "Nessun Checksum con Numero di Linea, Ultima Linea: "
+	#define MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM "Nessun Numero di Linea con Checksum, Ultima Linea: "
 	#define MSG_FILE_PRINTED         "File stampato"
 	#define MSG_BEGIN_FILE_LIST      "Inizio Lista File"
 	#define MSG_END_FILE_LIST        "Fine Lista File"
@@ -1096,15 +1094,15 @@
 	#define MSG_ERR_NO_THERMISTORS   "Nessun Termistore - nessuna temperatura"
 	#define MSG_M109_INVALID_EXTRUDER "M109 Estrusore non valido "
 	#define MSG_HEATING              "Riscaldamento..."
-	#define MSG_HEATING_COMPLETE     "Riscaldamento concluso."
+	#define MSG_HEATING_COMPLETE     "Stampante Calda."
 	#define MSG_BED_HEATING          "Riscaldamento Piatto."
 	#define MSG_BED_DONE             "Piatto Pronto."
 	#define MSG_M115_REPORT          "FIRMWARE_NAME:Marlin V1; Sprinter/grbl mashup for gen6 FIRMWARE_URL:" FIRMWARE_URL " PROTOCOL_VERSION:" PROTOCOL_VERSION " MACHINE_TYPE:" MACHINE_NAME " EXTRUDER_COUNT:" STRINGIFY(EXTRUDERS) "\n"
-	#define MSG_COUNT_X              " Calcola X:"
+	#define MSG_COUNT_X              " Calcola X: "
 	#define MSG_ERR_KILLED           "Stampante Calda. kill() chiamata !!"
 	#define MSG_ERR_STOPPED          "Stampante fermata a causa di errori. Risolvi l'errore e usa M999 per ripartire!. (Reset temperatura. Impostala prima di ripartire)"
 	#define MSG_RESEND               "Reinviato:"
-	#define MSG_UNKNOWN_COMMAND      "Comando sconosciuto:\""
+	#define MSG_UNKNOWN_COMMAND      "Comando sconosciuto: \""
 	#define MSG_ACTIVE_EXTRUDER      "Attiva Estrusore: "
 	#define MSG_INVALID_EXTRUDER     "Estrusore non valido"
 	#define MSG_X_MIN                "x_min: "
@@ -1125,16 +1123,16 @@
 	#define MSG_SD_CARD_OK           "SD card ok"
 	#define MSG_SD_WORKDIR_FAIL      "Fallita l'apertura Cartella di Lavoro"
 	#define MSG_SD_OPEN_FILE_FAIL    "Fallita l'apertura del File: "
-	#define MSG_SD_FILE_OPENED       "File aperto:"
-	#define MSG_SD_SIZE              " Dimensione:"
+	#define MSG_SD_FILE_OPENED       "File aperto: "
+	#define MSG_SD_SIZE              " Dimensione: "
 	#define MSG_SD_FILE_SELECTED     "File selezionato"
 	#define MSG_SD_WRITE_TO_FILE     "Scrittura su file: "
 	#define MSG_SD_PRINTING_BYTE     "Si sta scrivendo il byte su SD "
 	#define MSG_SD_NOT_PRINTING      "Non si sta scrivendo su SD"
 	#define MSG_SD_ERR_WRITE_TO_FILE "Errore nella scrittura su file"
-	#define MSG_SD_CANT_ENTER_SUBDIR "Impossibile entrare nella sottocartella:"
+	#define MSG_SD_CANT_ENTER_SUBDIR "Impossibile entrare nella sottocartella: "
 
-	#define MSG_STEPPER_TO_HIGH      "Steprate troppo alto : "
+	#define MSG_STEPPER_TO_HIGH      "Steprate troppo alto: "
 	#define MSG_ENDSTOPS_HIT         "Raggiunto il fondo carrello: "
 	#define MSG_ERR_COLD_EXTRUDE_STOP " prevenuta estrusione fredda"
 	#define MSG_ERR_LONG_EXTRUDE_STOP " prevenuta estrusione troppo lunga"
diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp
index 6176136cd3c658c466155314812500566ac28e4d..31b570ca647521ae0ebafac4e5ddc0be16483561 100644
--- a/Marlin/ultralcd.cpp
+++ b/Marlin/ultralcd.cpp
@@ -199,9 +199,15 @@ static void lcd_main_menu()
             MENU_ITEM(function, MSG_STOP_PRINT, lcd_sdcard_stop);
         }else{
             MENU_ITEM(submenu, MSG_CARD_MENU, lcd_sdcard_menu);
+#if SDCARDDETECT < 1
+			MENU_ITEM(gcode, MSG_CNG_SDCARD, PSTR("M21"));	// SD-card changed by user
+#endif			
         }
     }else{
         MENU_ITEM(submenu, MSG_NO_CARD, lcd_sdcard_menu);
+#if SDCARDDETECT < 1		
+		MENU_ITEM(gcode, MSG_INIT_SDCARD, PSTR("M21"));	// Manually initialize the SD-card via user interface
+#endif		
     }
 #endif
     END_MENU();
@@ -516,9 +522,9 @@ static void lcd_control_motion_menu()
     MENU_ITEM_EDIT(float52, MSG_YSTEPS, &axis_steps_per_unit[Y_AXIS], 5, 9999);
     MENU_ITEM_EDIT(float51, MSG_ZSTEPS, &axis_steps_per_unit[Z_AXIS], 5, 9999);
     MENU_ITEM_EDIT(float51, MSG_ESTEPS, &axis_steps_per_unit[E_AXIS], 5, 9999);    
-#ifdef ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED
-    MENU_ITEM_EDIT(bool, "Endstop abort", &abort_on_endstop_hit);
-#endif
+#ifdef ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED
+    MENU_ITEM_EDIT(bool, "Endstop abort", &abort_on_endstop_hit);
+#endif
     END_MENU();
 }
 
@@ -889,10 +895,10 @@ char *ftostr31(const float &x)
 
 char *ftostr32(const float &x)
 {
-  long xx=x*100;
+  long xx=x*100;
   if (xx >= 0)
-    conv[0]=(xx/10000)%10+'0';
-  else
+    conv[0]=(xx/10000)%10+'0';
+  else
     conv[0]='-';
   xx=abs(xx);
   conv[1]=(xx/1000)%10+'0';
diff --git a/Marlin/ultralcd_implementation_hitachi_HD44780.h b/Marlin/ultralcd_implementation_hitachi_HD44780.h
index 58d75bd3966a36d6f50ffece9fee1d612d5a5458..1d19b7718d917cc1418671325d2af578e281a081 100644
--- a/Marlin/ultralcd_implementation_hitachi_HD44780.h
+++ b/Marlin/ultralcd_implementation_hitachi_HD44780.h
@@ -297,7 +297,12 @@ static void lcd_implementation_status_screen()
 static void lcd_implementation_drawmenu_generic(uint8_t row, const char* pstr, char pre_char, char post_char)
 {
     char c;
-    uint8_t n = LCD_WIDTH - 1 - 2;
+    //Use all characters in narrow LCDs
+  #if LCD_WIDTH < 20
+    	uint8_t n = LCD_WIDTH - 1 - 1;
+    #else
+    	uint8_t n = LCD_WIDTH - 1 - 2;
+  #endif
     lcd.setCursor(0, row);
     lcd.print(pre_char);
     while((c = pgm_read_byte(pstr)) != '\0')
@@ -314,7 +319,12 @@ static void lcd_implementation_drawmenu_generic(uint8_t row, const char* pstr, c
 static void lcd_implementation_drawmenu_setting_edit_generic(uint8_t row, const char* pstr, char pre_char, char* data)
 {
     char c;
-    uint8_t n = LCD_WIDTH - 1 - 2 - strlen(data);
+    //Use all characters in narrow LCDs
+  #if LCD_WIDTH < 20
+    	uint8_t n = LCD_WIDTH - 1 - 1 - strlen(data);
+    #else
+    	uint8_t n = LCD_WIDTH - 1 - 2 - strlen(data);
+  #endif
     lcd.setCursor(0, row);
     lcd.print(pre_char);
     while((c = pgm_read_byte(pstr)) != '\0')
@@ -331,7 +341,12 @@ static void lcd_implementation_drawmenu_setting_edit_generic(uint8_t row, const
 static void lcd_implementation_drawmenu_setting_edit_generic_P(uint8_t row, const char* pstr, char pre_char, const char* data)
 {
     char c;
-    uint8_t n = LCD_WIDTH - 1 - 2 - strlen_P(data);
+    //Use all characters in narrow LCDs
+  #if LCD_WIDTH < 20
+    	uint8_t n = LCD_WIDTH - 1 - 1 - strlen_P(data);
+    #else
+    	uint8_t n = LCD_WIDTH - 1 - 2 - strlen_P(data);
+  #endif
     lcd.setCursor(0, row);
     lcd.print(pre_char);
     while((c = pgm_read_byte(pstr)) != '\0')
@@ -366,7 +381,11 @@ void lcd_implementation_drawedit(const char* pstr, char* value)
     lcd.setCursor(1, 1);
     lcd_printPGM(pstr);
     lcd.print(':');
-    lcd.setCursor(19 - strlen(value), 1);
+   #if LCD_WIDTH < 20
+    	lcd.setCursor(LCD_WIDTH - strlen(value), 1);
+    #else
+    	lcd.setCursor(LCD_WIDTH -1 - strlen(value), 1);
+   #endif
     lcd.print(value);
 }
 static void lcd_implementation_drawmenu_sdfile_selected(uint8_t row, const char* pstr, const char* filename, char* longFilename)