Multi-language support (#15453)

This commit is contained in:
Marcio Teixeira
2019-10-09 18:46:10 -06:00
committed by Scott Lahteine
parent dc14d4a13c
commit 6a865a6146
105 changed files with 11537 additions and 11196 deletions

View File

@@ -52,7 +52,7 @@ inline PGM_P _change_filament_temp_command() {
default:
return PSTR("M600 B0 T%d");
}
return PSTR(MSG_FILAMENTCHANGE);
return GET_TEXT(MSG_FILAMENTCHANGE);
}
// Initiate Filament Load/Unload/Change at the specified temperature
@@ -70,12 +70,12 @@ static void _change_filament_temp(const uint16_t temperature) {
inline PGM_P change_filament_header(const PauseMode mode) {
switch (mode) {
case PAUSE_MODE_LOAD_FILAMENT:
return PSTR(MSG_FILAMENTLOAD);
return GET_TEXT(MSG_FILAMENTLOAD);
case PAUSE_MODE_UNLOAD_FILAMENT:
return PSTR(MSG_FILAMENTUNLOAD);
return GET_TEXT(MSG_FILAMENTUNLOAD);
default: break;
}
return PSTR(MSG_FILAMENTCHANGE);
return GET_TEXT(MSG_FILAMENTCHANGE);
}
void _menu_temp_filament_op(const PauseMode mode, const int8_t extruder) {
@@ -107,14 +107,14 @@ void _menu_temp_filament_op(const PauseMode mode, const int8_t extruder) {
// Change filament
#if E_STEPPERS == 1
PGM_P const msg0 = PSTR(MSG_FILAMENTCHANGE);
PGM_P const msg0 = GET_TEXT(MSG_FILAMENTCHANGE);
if (thermalManager.targetTooColdToExtrude(active_extruder))
MENU_ITEM_P(submenu, msg0, [](){ _menu_temp_filament_op(PauseMode(editable.int8), 0); });
else
MENU_ITEM_P(gcode, msg0, PSTR("M600 B0"));
#else
PGM_P const msg0 = PSTR(MSG_FILAMENTCHANGE " " LCD_STR_E0);
PGM_P const msg1 = PSTR(MSG_FILAMENTCHANGE " " LCD_STR_E1);
PGM_P const msg0 = GET_TEXT(MSG_FILAMENTCHANGE_E0);
PGM_P const msg1 = GET_TEXT(MSG_FILAMENTCHANGE_E1);
if (thermalManager.targetTooColdToExtrude(0))
MENU_ITEM_P(submenu, msg0, [](){ _menu_temp_filament_op(PauseMode(editable.int8), 0); });
else
@@ -124,25 +124,25 @@ void _menu_temp_filament_op(const PauseMode mode, const int8_t extruder) {
else
MENU_ITEM_P(gcode, msg1, PSTR("M600 B0 T1"));
#if E_STEPPERS > 2
PGM_P const msg2 = PSTR(MSG_FILAMENTCHANGE " " LCD_STR_E2);
PGM_P const msg2 = GET_TEXT(MSG_FILAMENTCHANGE_E2);
if (thermalManager.targetTooColdToExtrude(2))
MENU_ITEM_P(submenu, msg2, [](){ _menu_temp_filament_op(PauseMode(editable.int8), 2); });
else
MENU_ITEM_P(gcode, msg2, PSTR("M600 B0 T2"));
#if E_STEPPERS > 3
PGM_P const msg3 = PSTR(MSG_FILAMENTCHANGE " " LCD_STR_E3);
PGM_P const msg3 = GET_TEXT(MSG_FILAMENTCHANGE_E3);
if (thermalManager.targetTooColdToExtrude(3))
MENU_ITEM_P(submenu, msg3, [](){ _menu_temp_filament_op(PauseMode(editable.int8), 3); });
else
MENU_ITEM_P(gcode, msg3, PSTR("M600 B0 T3"));
#if E_STEPPERS > 4
PGM_P const msg4 = PSTR(MSG_FILAMENTCHANGE " " LCD_STR_E4);
PGM_P const msg4 = GET_TEXT(MSG_FILAMENTCHANGE_E4);
if (thermalManager.targetTooColdToExtrude(4))
MENU_ITEM_P(submenu, msg4, [](){ _menu_temp_filament_op(PauseMode(editable.int8), 4); });
else
MENU_ITEM_P(gcode, msg4, PSTR("M600 B0 T4"));
#if E_STEPPERS > 5
PGM_P const msg5 = PSTR(MSG_FILAMENTCHANGE " " LCD_STR_E5);
PGM_P const msg5 = GET_TEXT(MSG_FILAMENTCHANGE_E5);
if (thermalManager.targetTooColdToExtrude(5))
MENU_ITEM_P(submenu, msg5, [](){ _menu_temp_filament_op(PauseMode(editable.int8), 5); });
else
@@ -157,14 +157,14 @@ void _menu_temp_filament_op(const PauseMode mode, const int8_t extruder) {
if (!printer_busy()) {
// Load filament
#if E_STEPPERS == 1
PGM_P const msg0 = PSTR(MSG_FILAMENTLOAD);
PGM_P const msg0 = GET_TEXT(MSG_FILAMENTLOAD);
if (thermalManager.targetTooColdToExtrude(active_extruder))
MENU_ITEM_P(submenu, msg0, [](){ _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 0); });
else
MENU_ITEM_P(gcode, msg0, PSTR("M701"));
#else
PGM_P const msg0 = PSTR(MSG_FILAMENTLOAD " " LCD_STR_E0);
PGM_P const msg1 = PSTR(MSG_FILAMENTLOAD " " LCD_STR_E1);
PGM_P const msg0 = GET_TEXT(MSG_FILAMENTLOAD_E0);
PGM_P const msg1 = GET_TEXT(MSG_FILAMENTLOAD_E1);
if (thermalManager.targetTooColdToExtrude(0))
MENU_ITEM_P(submenu, msg0, [](){ _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 0); });
else
@@ -174,25 +174,25 @@ void _menu_temp_filament_op(const PauseMode mode, const int8_t extruder) {
else
MENU_ITEM_P(gcode, msg1, PSTR("M701 T1"));
#if E_STEPPERS > 2
PGM_P const msg2 = PSTR(MSG_FILAMENTLOAD " " LCD_STR_E2);
PGM_P const msg2 = GET_TEXT(MSG_FILAMENTLOAD_E2);
if (thermalManager.targetTooColdToExtrude(2))
MENU_ITEM_P(submenu, msg2, [](){ _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 2); });
else
MENU_ITEM_P(gcode, msg2, PSTR("M701 T2"));
#if E_STEPPERS > 3
PGM_P const msg3 = PSTR(MSG_FILAMENTLOAD " " LCD_STR_E3);
PGM_P const msg3 = GET_TEXT(MSG_FILAMENTLOAD_E3);
if (thermalManager.targetTooColdToExtrude(3))
MENU_ITEM_P(submenu, msg3, [](){ _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 3); });
else
MENU_ITEM_P(gcode, msg3, PSTR("M701 T3"));
#if E_STEPPERS > 4
PGM_P const msg4 = PSTR(MSG_FILAMENTLOAD " " LCD_STR_E4);
PGM_P const msg4 = GET_TEXT(MSG_FILAMENTLOAD_E4);
if (thermalManager.targetTooColdToExtrude(4))
MENU_ITEM_P(submenu, msg4, [](){ _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 4); });
else
MENU_ITEM_P(gcode, msg4, PSTR("M701 T4"));
#if E_STEPPERS > 5
PGM_P const msg5 = PSTR(MSG_FILAMENTLOAD " " LCD_STR_E5);
PGM_P const msg5 = GET_TEXT(MSG_FILAMENTLOAD_E5);
if (thermalManager.targetTooColdToExtrude(5))
MENU_ITEM_P(submenu, msg5, [](){ _menu_temp_filament_op(PAUSE_MODE_LOAD_FILAMENT, 5); });
else
@@ -223,33 +223,33 @@ void _menu_temp_filament_op(const PauseMode mode, const int8_t extruder) {
SUBMENU(MSG_FILAMENTUNLOAD_ALL, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, -1); });
#endif
if (thermalManager.targetHotEnoughToExtrude(0))
GCODES_ITEM(MSG_FILAMENTUNLOAD " " LCD_STR_E0, PSTR("M702 T0"));
GCODES_ITEM(MSG_FILAMENTUNLOAD_E0, PSTR("M702 T0"));
else
SUBMENU(MSG_FILAMENTUNLOAD " " LCD_STR_E0, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 0); });
SUBMENU(MSG_FILAMENTUNLOAD_E0, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 0); });
if (thermalManager.targetHotEnoughToExtrude(1))
GCODES_ITEM(MSG_FILAMENTUNLOAD " " LCD_STR_E1, PSTR("M702 T1"));
GCODES_ITEM(MSG_FILAMENTUNLOAD_E1, PSTR("M702 T1"));
else
SUBMENU(MSG_FILAMENTUNLOAD " " LCD_STR_E1, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 1); });
SUBMENU(MSG_FILAMENTUNLOAD_E1, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 1); });
#if E_STEPPERS > 2
if (thermalManager.targetHotEnoughToExtrude(2))
GCODES_ITEM(MSG_FILAMENTUNLOAD " " LCD_STR_E2, PSTR("M702 T2"));
GCODES_ITEM(MSG_FILAMENTUNLOAD_E2, PSTR("M702 T2"));
else
SUBMENU(MSG_FILAMENTUNLOAD " " LCD_STR_E2, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 2); });
SUBMENU(MSG_FILAMENTUNLOAD_E2, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 2); });
#if E_STEPPERS > 3
if (thermalManager.targetHotEnoughToExtrude(3))
GCODES_ITEM(MSG_FILAMENTUNLOAD " " LCD_STR_E3, PSTR("M702 T3"));
GCODES_ITEM(MSG_FILAMENTUNLOAD_E3, PSTR("M702 T3"));
else
SUBMENU(MSG_FILAMENTUNLOAD " " LCD_STR_E3, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 3); });
SUBMENU(MSG_FILAMENTUNLOAD_E3, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 3); });
#if E_STEPPERS > 4
if (thermalManager.targetHotEnoughToExtrude(4))
GCODES_ITEM(MSG_FILAMENTUNLOAD " " LCD_STR_E4, PSTR("M702 T4"));
GCODES_ITEM(MSG_FILAMENTUNLOAD_E4, PSTR("M702 T4"));
else
SUBMENU(MSG_FILAMENTUNLOAD " " LCD_STR_E4, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 4); });
SUBMENU(MSG_FILAMENTUNLOAD_E4, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 4); });
#if E_STEPPERS > 5
if (thermalManager.targetHotEnoughToExtrude(5))
GCODES_ITEM(MSG_FILAMENTUNLOAD " " LCD_STR_E5, PSTR("M702 T5"));
GCODES_ITEM(MSG_FILAMENTUNLOAD_E5, PSTR("M702 T5"));
else
SUBMENU(MSG_FILAMENTUNLOAD " " LCD_STR_E5, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 5); });
SUBMENU(MSG_FILAMENTUNLOAD_E5, [](){ _menu_temp_filament_op(PAUSE_MODE_UNLOAD_FILAMENT, 5); });
#endif // E_STEPPERS > 5
#endif // E_STEPPERS > 4
#endif // E_STEPPERS > 3
@@ -267,22 +267,21 @@ static uint8_t hotend_status_extruder = 0;
static PGM_P pause_header() {
switch (pause_mode) {
case PAUSE_MODE_CHANGE_FILAMENT:
return PSTR(MSG_FILAMENT_CHANGE_HEADER);
return GET_TEXT(MSG_FILAMENT_CHANGE_HEADER);
case PAUSE_MODE_LOAD_FILAMENT:
return PSTR(MSG_FILAMENT_CHANGE_HEADER_LOAD);
return GET_TEXT(MSG_FILAMENT_CHANGE_HEADER_LOAD);
case PAUSE_MODE_UNLOAD_FILAMENT:
return PSTR(MSG_FILAMENT_CHANGE_HEADER_UNLOAD);
case PAUSE_MODE_PAUSE_PRINT:
return GET_TEXT(MSG_FILAMENT_CHANGE_HEADER_UNLOAD);
default: break;
}
return PSTR(MSG_FILAMENT_CHANGE_HEADER_PAUSE);
return GET_TEXT(MSG_FILAMENT_CHANGE_HEADER_PAUSE);
}
// Portions from STATIC_ITEM...
#define HOTEND_STATUS_ITEM() do { \
if (_menuLineNr == _thisItemNr) { \
if (ui.should_draw()) { \
draw_menu_item_static(_lcdLineNr, PSTR(MSG_FILAMENT_CHANGE_NOZZLE), SS_INVERT); \
draw_menu_item_static(_lcdLineNr, GET_TEXT(MSG_FILAMENT_CHANGE_NOZZLE), SS_INVERT); \
ui.draw_hotend_status(_lcdLineNr, hotend_status_extruder); \
} \
if (_skipStatic && encoderLine <= _thisItemNr) { \
@@ -312,137 +311,42 @@ void menu_pause_option() {
//
// ADVANCED_PAUSE_FEATURE message screens
//
// Warning: msg must have three null bytes to delimit lines!
//
void _lcd_pause_message(PGM_P const msg) {
PGM_P const msg1 = msg;
PGM_P const msg2 = msg1 + strlen_P(msg1) + 1;
PGM_P const msg3 = msg2 + strlen_P(msg2) + 1;
const bool has2 = msg2[0], has3 = msg3[0],
skip1 = !has2 && (LCD_HEIGHT) >= 5;
void _lcd_pause_message(PGM_P const msg1, PGM_P const msg2=nullptr, PGM_P const msg3=nullptr) {
START_SCREEN();
STATIC_ITEM_P(pause_header(), SS_CENTER|SS_INVERT);
STATIC_ITEM_P(msg1);
if (msg2) STATIC_ITEM_P(msg2);
if (msg3 && (LCD_HEIGHT) >= 5) STATIC_ITEM_P(msg3);
if ((!!msg2) + (!!msg3) + 2 < (LCD_HEIGHT) - 1) STATIC_ITEM(" ");
HOTEND_STATUS_ITEM();
STATIC_ITEM_P(pause_header(), SS_CENTER|SS_INVERT); // 1: Header
if (skip1) SKIP_ITEM(); // Move a single-line message down
STATIC_ITEM_P(msg1); // 2: Message Line 1
if (has2) STATIC_ITEM_P(msg2); // 3: Message Line 2
if (has3 && (LCD_HEIGHT) >= 5) STATIC_ITEM_P(msg3); // 4: Message Line 3 (if LCD has 5 lines)
if (skip1 + 1 + has2 + has3 < (LCD_HEIGHT) - 2) SKIP_ITEM(); // Push Hotend Status down, if needed
HOTEND_STATUS_ITEM(); // 5: Hotend Status
END_SCREEN();
}
void lcd_pause_pausing_message() {
_lcd_pause_message(PSTR(MSG_PAUSE_PRINT_INIT_1)
#ifdef MSG_PAUSE_PRINT_INIT_2
, PSTR(MSG_PAUSE_PRINT_INIT_2)
#ifdef MSG_PAUSE_PRINT_INIT_3
, PSTR(MSG_PAUSE_PRINT_INIT_3)
#endif
#endif
);
}
void lcd_pause_changing_message() {
_lcd_pause_message(PSTR(MSG_FILAMENT_CHANGE_INIT_1)
#ifdef MSG_FILAMENT_CHANGE_INIT_2
, PSTR(MSG_FILAMENT_CHANGE_INIT_2)
#ifdef MSG_FILAMENT_CHANGE_INIT_3
, PSTR(MSG_FILAMENT_CHANGE_INIT_3)
#endif
#endif
);
}
void lcd_pause_unload_message() {
_lcd_pause_message(PSTR(MSG_FILAMENT_CHANGE_UNLOAD_1)
#ifdef MSG_FILAMENT_CHANGE_UNLOAD_2
, PSTR(MSG_FILAMENT_CHANGE_UNLOAD_2)
#ifdef MSG_FILAMENT_CHANGE_UNLOAD_3
, PSTR(MSG_FILAMENT_CHANGE_UNLOAD_3)
#endif
#endif
);
}
void lcd_pause_heating_message() {
_lcd_pause_message(PSTR(MSG_FILAMENT_CHANGE_HEATING_1)
#ifdef MSG_FILAMENT_CHANGE_HEATING_2
, PSTR(MSG_FILAMENT_CHANGE_HEATING_2)
#ifdef MSG_FILAMENT_CHANGE_HEATING_3
, PSTR(MSG_FILAMENT_CHANGE_HEATING_3)
#endif
#endif
);
}
void lcd_pause_heat_message() {
_lcd_pause_message(PSTR(MSG_FILAMENT_CHANGE_HEAT_1)
#ifdef MSG_FILAMENT_CHANGE_HEAT_2
, PSTR(MSG_FILAMENT_CHANGE_HEAT_2)
#ifdef MSG_FILAMENT_CHANGE_HEAT_3
, PSTR(MSG_FILAMENT_CHANGE_HEAT_3)
#endif
#endif
);
}
void lcd_pause_insert_message() {
_lcd_pause_message(PSTR(MSG_FILAMENT_CHANGE_INSERT_1)
#ifdef MSG_FILAMENT_CHANGE_INSERT_2
, PSTR(MSG_FILAMENT_CHANGE_INSERT_2)
#ifdef MSG_FILAMENT_CHANGE_INSERT_3
, PSTR(MSG_FILAMENT_CHANGE_INSERT_3)
#endif
#endif
);
}
void lcd_pause_load_message() {
_lcd_pause_message(PSTR(MSG_FILAMENT_CHANGE_LOAD_1)
#ifdef MSG_FILAMENT_CHANGE_LOAD_2
, PSTR(MSG_FILAMENT_CHANGE_LOAD_2)
#ifdef MSG_FILAMENT_CHANGE_LOAD_3
, PSTR(MSG_FILAMENT_CHANGE_LOAD_3)
#endif
#endif
);
}
void lcd_pause_waiting_message() {
_lcd_pause_message(PSTR(MSG_ADVANCED_PAUSE_WAITING_1)
#ifdef MSG_ADVANCED_PAUSE_WAITING_2
, PSTR(MSG_ADVANCED_PAUSE_WAITING_2)
#ifdef MSG_ADVANCED_PAUSE_WAITING_3
, PSTR(MSG_ADVANCED_PAUSE_WAITING_3)
#endif
#endif
);
}
void lcd_pause_resume_message() {
_lcd_pause_message(PSTR(MSG_FILAMENT_CHANGE_RESUME_1)
#ifdef MSG_FILAMENT_CHANGE_RESUME_2
, PSTR(MSG_FILAMENT_CHANGE_RESUME_2)
#ifdef MSG_FILAMENT_CHANGE_RESUME_3
, PSTR(MSG_FILAMENT_CHANGE_RESUME_3)
#endif
#endif
);
}
void lcd_pause_pausing_message() { _lcd_pause_message(GET_TEXT(MSG_PAUSE_PRINT_INIT)); }
void lcd_pause_changing_message() { _lcd_pause_message(GET_TEXT(MSG_FILAMENT_CHANGE_INIT)); }
void lcd_pause_unload_message() { _lcd_pause_message(GET_TEXT(MSG_FILAMENT_CHANGE_UNLOAD)); }
void lcd_pause_heating_message() { _lcd_pause_message(GET_TEXT(MSG_FILAMENT_CHANGE_HEATING)); }
void lcd_pause_heat_message() { _lcd_pause_message(GET_TEXT(MSG_FILAMENT_CHANGE_HEAT)); }
void lcd_pause_insert_message() { _lcd_pause_message(GET_TEXT(MSG_FILAMENT_CHANGE_INSERT)); }
void lcd_pause_load_message() { _lcd_pause_message(GET_TEXT(MSG_FILAMENT_CHANGE_LOAD)); }
void lcd_pause_waiting_message() { _lcd_pause_message(GET_TEXT(MSG_ADVANCED_PAUSE_WAITING)); }
void lcd_pause_resume_message() { _lcd_pause_message(GET_TEXT(MSG_FILAMENT_CHANGE_RESUME)); }
void lcd_pause_purge_message() {
_lcd_pause_message(
#if ENABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE)
PSTR(MSG_FILAMENT_CHANGE_CONT_PURGE_1)
#ifdef MSG_FILAMENT_CHANGE_CONT_PURGE_2
, PSTR(MSG_FILAMENT_CHANGE_CONT_PURGE_2)
#ifdef MSG_FILAMENT_CHANGE_CONT_PURGE_3
, PSTR(MSG_FILAMENT_CHANGE_CONT_PURGE_3)
#endif
#endif
#else
PSTR(MSG_FILAMENT_CHANGE_PURGE_1)
#ifdef MSG_FILAMENT_CHANGE_PURGE_2
, PSTR(MSG_FILAMENT_CHANGE_PURGE_2)
#ifdef MSG_FILAMENT_CHANGE_PURGE_3
, PSTR(MSG_FILAMENT_CHANGE_PURGE_3)
#endif
#endif
#endif
);
#if ENABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE)
_lcd_pause_message(GET_TEXT(MSG_FILAMENT_CHANGE_CONT_PURGE));
#else
_lcd_pause_message(GET_TEXT(MSG_FILAMENT_CHANGE_PURGE));
#endif
}
FORCE_INLINE screenFunc_t ap_message_screen(const PauseMessage message) {