Single language support (See langtool.pl)

This commit is contained in:
Ted Hess 2017-10-25 11:00:11 -04:00
parent 92e5885b34
commit 2dfb5666b9
6 changed files with 137 additions and 106 deletions

View File

@ -2355,9 +2355,9 @@ bool gcode_M45(bool onlyZ) {
bool final_result = false; bool final_result = false;
if (!onlyZ) { if (!onlyZ) {
setTargetBed(0); setTargetBed(0);
setTargetHotend(0, 0); setTargetHotend0(0);
setTargetHotend(0, 1); setTargetHotend1(0);
setTargetHotend(0, 2); setTargetHotend2(0);
adjust_bed_reset(); //reset bed level correction adjust_bed_reset(); //reset bed level correction
} }
@ -7198,9 +7198,9 @@ void long_pause() //long pause print
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 15, active_extruder); plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 15, active_extruder);
//set nozzle target temperature to 0 //set nozzle target temperature to 0
setTargetHotend(0, 0); setTargetHotend0(0);
setTargetHotend(0, 1); setTargetHotend1(0);
setTargetHotend(0, 2); setTargetHotend2(0);
//Move XY to side //Move XY to side
current_position[X_AXIS] = X_PAUSE_POS; current_position[X_AXIS] = X_PAUSE_POS;

View File

@ -5,6 +5,8 @@ use strict;
use warnings; use warnings;
my @langs = ("en","cz","it","es","pl","de"); my @langs = ("en","cz","it","es","pl","de");
# New option - single language support
#my @langs = ("en");
sub parselang sub parselang
{ {
@ -200,7 +202,7 @@ print $fh <<END
#define LANG_ID_UNDEFINED 255 #define LANG_ID_UNDEFINED 255
// Default language ID, if no language is selected. // Default language ID, if no language is selected.
#define LANG_ID_DEFAULT LANG_ID_CZ #define LANG_ID_DEFAULT LANG_ID_EN
// Number of languages available in the language table. // Number of languages available in the language table.
#define LANG_NUM ${num_languages} #define LANG_NUM ${num_languages}
@ -218,10 +220,12 @@ foreach my $key (sort(keys %texts)) {
my $strings = $texts{$key}; my $strings = $texts{$key};
if (@{$strings} == grep { $_ eq ${$strings}[0] } @{$strings}) { if (@{$strings} == grep { $_ eq ${$strings}[0] } @{$strings}) {
# All strings are English. # All strings are English.
print $fh "extern const char* const ${key}_LANG_TABLE[1];\n"; print $fh "extern const char* const ${key}_LANG_TABLE[1];\n";
print $fh "#define $key LANG_TABLE_SELECT_EXPLICIT(${key}_LANG_TABLE, 0)\n"; print $fh "#define $key LANG_TABLE_SELECT_EXPLICIT(${key}_LANG_TABLE, 0)\n";
print $fh "#define ${key}_EXPLICIT(LANG) LANG_TABLE_SELECT_EXPLICIT(${key}_LANG_TABLE, 0)\n"
if ($key eq "MSG_LANGUAGE_NAME" || $key eq "MSG_LANGUAGE_SELECT");
} else { } else {
print $fh "extern const char* const ${key}_LANG_TABLE[LANG_NUM];\n"; print $fh "extern const char* const ${key}_LANG_TABLE[LANG_NUM];\n";
print $fh "#define $key LANG_TABLE_SELECT(${key}_LANG_TABLE)\n"; print $fh "#define $key LANG_TABLE_SELECT(${key}_LANG_TABLE)\n";
print $fh "#define ${key}_EXPLICIT(LANG) LANG_TABLE_SELECT_EXPLICIT(${key}_LANG_TABLE, LANG)\n" print $fh "#define ${key}_EXPLICIT(LANG) LANG_TABLE_SELECT_EXPLICIT(${key}_LANG_TABLE, LANG)\n"
if ($key eq "MSG_LANGUAGE_NAME" || $key eq "MSG_LANGUAGE_SELECT"); if ($key eq "MSG_LANGUAGE_NAME" || $key eq "MSG_LANGUAGE_SELECT");

View File

@ -68,14 +68,13 @@ const char MSG_AUTO_MODE_ON_CZ[] PROGMEM = "Mod [automaticky]";
const char MSG_AUTO_MODE_ON_IT[] PROGMEM = "Mode [auto]"; const char MSG_AUTO_MODE_ON_IT[] PROGMEM = "Mode [auto]";
const char MSG_AUTO_MODE_ON_ES[] PROGMEM = "Modo [auto]"; const char MSG_AUTO_MODE_ON_ES[] PROGMEM = "Modo [auto]";
const char MSG_AUTO_MODE_ON_PL[] PROGMEM = "Mod [auto]"; const char MSG_AUTO_MODE_ON_PL[] PROGMEM = "Mod [auto]";
const char MSG_AUTO_MODE_ON_DE[] PROGMEM = "Mode [Auto]";
const char * const MSG_AUTO_MODE_ON_LANG_TABLE[LANG_NUM] PROGMEM = { const char * const MSG_AUTO_MODE_ON_LANG_TABLE[LANG_NUM] PROGMEM = {
MSG_AUTO_MODE_ON_EN, MSG_AUTO_MODE_ON_EN,
MSG_AUTO_MODE_ON_CZ, MSG_AUTO_MODE_ON_CZ,
MSG_AUTO_MODE_ON_IT, MSG_AUTO_MODE_ON_IT,
MSG_AUTO_MODE_ON_ES, MSG_AUTO_MODE_ON_ES,
MSG_AUTO_MODE_ON_PL, MSG_AUTO_MODE_ON_PL,
MSG_AUTO_MODE_ON_DE MSG_AUTO_MODE_ON_EN
}; };
const char MSG_A_RETRACT_EN[] PROGMEM = "A-retract"; const char MSG_A_RETRACT_EN[] PROGMEM = "A-retract";
@ -3668,8 +3667,18 @@ const char * const MSG_WATCHDOG_RESET_LANG_TABLE[1] PROGMEM = {
}; };
const char MSG_WIZARD_EN[] PROGMEM = "Setup Wizard"; const char MSG_WIZARD_EN[] PROGMEM = "Setup Wizard";
const char * const MSG_WIZARD_LANG_TABLE[1] PROGMEM = { const char MSG_WIZARD_CZ[] PROGMEM = "Wizard";
MSG_WIZARD_EN const char MSG_WIZARD_IT[] PROGMEM = "Wizard";
const char MSG_WIZARD_ES[] PROGMEM = "Wizard";
const char MSG_WIZARD_PL[] PROGMEM = "Wizard";
const char MSG_WIZARD_DE[] PROGMEM = "Wizard";
const char * const MSG_WIZARD_LANG_TABLE[LANG_NUM] PROGMEM = {
MSG_WIZARD_EN,
MSG_WIZARD_CZ,
MSG_WIZARD_IT,
MSG_WIZARD_ES,
MSG_WIZARD_PL,
MSG_WIZARD_DE
}; };
const char MSG_WIZARD_CALIBRATION_FAILED_EN[] PROGMEM = "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."; const char MSG_WIZARD_CALIBRATION_FAILED_EN[] PROGMEM = "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer.";

View File

@ -15,7 +15,7 @@
#define LANG_ID_UNDEFINED 255 #define LANG_ID_UNDEFINED 255
// Default language ID, if no language is selected. // Default language ID, if no language is selected.
#define LANG_ID_DEFAULT LANG_ID_CZ #define LANG_ID_DEFAULT LANG_ID_EN
// Number of languages available in the language table. // Number of languages available in the language table.
#define LANG_NUM 6 #define LANG_NUM 6
@ -656,8 +656,8 @@ extern const char* const MSG_WATCH_LANG_TABLE[LANG_NUM];
#define MSG_WATCH LANG_TABLE_SELECT(MSG_WATCH_LANG_TABLE) #define MSG_WATCH LANG_TABLE_SELECT(MSG_WATCH_LANG_TABLE)
extern const char* const MSG_WATCHDOG_RESET_LANG_TABLE[1]; extern const char* const MSG_WATCHDOG_RESET_LANG_TABLE[1];
#define MSG_WATCHDOG_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_WATCHDOG_RESET_LANG_TABLE, 0) #define MSG_WATCHDOG_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_WATCHDOG_RESET_LANG_TABLE, 0)
extern const char* const MSG_WIZARD_LANG_TABLE[1]; extern const char* const MSG_WIZARD_LANG_TABLE[LANG_NUM];
#define MSG_WIZARD LANG_TABLE_SELECT_EXPLICIT(MSG_WIZARD_LANG_TABLE, 0) #define MSG_WIZARD LANG_TABLE_SELECT(MSG_WIZARD_LANG_TABLE)
extern const char* const MSG_WIZARD_CALIBRATION_FAILED_LANG_TABLE[LANG_NUM]; extern const char* const MSG_WIZARD_CALIBRATION_FAILED_LANG_TABLE[LANG_NUM];
#define MSG_WIZARD_CALIBRATION_FAILED LANG_TABLE_SELECT(MSG_WIZARD_CALIBRATION_FAILED_LANG_TABLE) #define MSG_WIZARD_CALIBRATION_FAILED LANG_TABLE_SELECT(MSG_WIZARD_CALIBRATION_FAILED_LANG_TABLE)
extern const char* const MSG_WIZARD_CLEAN_HEATBED_LANG_TABLE[LANG_NUM]; extern const char* const MSG_WIZARD_CLEAN_HEATBED_LANG_TABLE[LANG_NUM];

View File

@ -1,36 +1,36 @@
// These are the system messages, which shall always be in English. // These are the system messages, which shall always be in English.
+define MSG_Enqueing "enqueing \"" define MSG_Enqueing "enqueing \""
+define MSG_POWERUP "PowerUp" define MSG_POWERUP "PowerUp"
define MSG_EXTERNAL_RESET " External Reset" define MSG_EXTERNAL_RESET " External Reset"
define MSG_BROWNOUT_RESET " Brown out Reset" define MSG_BROWNOUT_RESET " Brown out Reset"
define MSG_WATCHDOG_RESET " Watchdog Reset" define MSG_WATCHDOG_RESET " Watchdog Reset"
define MSG_SOFTWARE_RESET " Software Reset" define MSG_SOFTWARE_RESET " Software Reset"
define MSG_AUTHOR " | Author: " define MSG_AUTHOR " | Author: "
+define MSG_CONFIGURATION_VER " Last Updated: " define MSG_CONFIGURATION_VER " Last Updated: "
+define MSG_FREE_MEMORY " Free Memory: " define MSG_FREE_MEMORY " Free Memory: "
+define MSG_PLANNER_BUFFER_BYTES " PlannerBufferBytes: " define MSG_PLANNER_BUFFER_BYTES " PlannerBufferBytes: "
+define MSG_OK "ok" define MSG_OK "ok"
define MSG_FILE_SAVED "Done saving file." define MSG_FILE_SAVED "Done saving file."
define MSG_ERR_LINE_NO "Line Number is not Last Line Number+1, Last Line: " define MSG_ERR_LINE_NO "Line Number is not Last Line Number+1, Last Line: "
+define MSG_ERR_CHECKSUM_MISMATCH "checksum mismatch, Last Line: " define MSG_ERR_CHECKSUM_MISMATCH "checksum mismatch, Last Line: "
+define MSG_ERR_NO_CHECKSUM "No Checksum with line number, Last Line: " define MSG_ERR_NO_CHECKSUM "No Checksum with line number, Last Line: "
define MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM "No Line Number with checksum, Last Line: " define MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM "No Line Number with checksum, Last Line: "
define MSG_FILE_PRINTED "Done printing file" define MSG_FILE_PRINTED "Done printing file"
+define MSG_BEGIN_FILE_LIST "Begin file list" define MSG_BEGIN_FILE_LIST "Begin file list"
+define MSG_END_FILE_LIST "End file list" define MSG_END_FILE_LIST "End file list"
+define MSG_M104_INVALID_EXTRUDER "M104 Invalid extruder " define MSG_M104_INVALID_EXTRUDER "M104 Invalid extruder "
+define MSG_M105_INVALID_EXTRUDER "M105 Invalid extruder " define MSG_M105_INVALID_EXTRUDER "M105 Invalid extruder "
+define MSG_M200_INVALID_EXTRUDER "M200 Invalid extruder " define MSG_M200_INVALID_EXTRUDER "M200 Invalid extruder "
+define MSG_M218_INVALID_EXTRUDER "M218 Invalid extruder " define MSG_M218_INVALID_EXTRUDER "M218 Invalid extruder "
+define MSG_M221_INVALID_EXTRUDER "M221 Invalid extruder " define MSG_M221_INVALID_EXTRUDER "M221 Invalid extruder "
+define MSG_ERR_NO_THERMISTORS "No thermistors - no temperature" define MSG_ERR_NO_THERMISTORS "No thermistors - no temperature"
+define MSG_M109_INVALID_EXTRUDER "M109 Invalid extruder " define MSG_M109_INVALID_EXTRUDER "M109 Invalid extruder "
+define MSG_M115_REPORT "FIRMWARE_NAME:Marlin V1.0.2; Sprinter/grbl mashup for gen6 FIRMWARE_URL:" FIRMWARE_URL " PROTOCOL_VERSION:" PROTOCOL_VERSION " MACHINE_TYPE:" CUSTOM_MENDEL_NAME " EXTRUDER_COUNT:" STRINGIFY(EXTRUDERS) " UUID:" MACHINE_UUID "\n" define MSG_M115_REPORT "FIRMWARE_NAME:Marlin V1.0.2; Sprinter/grbl mashup for gen6 FIRMWARE_URL:" FIRMWARE_URL " PROTOCOL_VERSION:" PROTOCOL_VERSION " MACHINE_TYPE:" CUSTOM_MENDEL_NAME " EXTRUDER_COUNT:" STRINGIFY(EXTRUDERS) " UUID:" MACHINE_UUID "\n"
define MSG_COUNT_X " Count X: " define MSG_COUNT_X " Count X: "
+define MSG_ERR_KILLED "Printer halted. kill() called!" define MSG_ERR_KILLED "Printer halted. kill() called!"
+define MSG_ERR_STOPPED "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)" define MSG_ERR_STOPPED "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"
+define MSG_RESEND "Resend: " define MSG_RESEND "Resend: "
define MSG_UNKNOWN_COMMAND "Unknown command: \"" define MSG_UNKNOWN_COMMAND "Unknown command: \""
define MSG_ACTIVE_EXTRUDER "Active Extruder: " define MSG_ACTIVE_EXTRUDER "Active Extruder: "
define MSG_INVALID_EXTRUDER "Invalid extruder" define MSG_INVALID_EXTRUDER "Invalid extruder"
@ -42,69 +42,69 @@ define MSG_Y_MAX "y_max: "
define MSG_Z_MIN "z_min: " define MSG_Z_MIN "z_min: "
define MSG_Z_MAX "z_max: " define MSG_Z_MAX "z_max: "
+define MSG_M119_REPORT "Reporting endstop status" define MSG_M119_REPORT "Reporting endstop status"
+define MSG_ENDSTOP_HIT "TRIGGERED" define MSG_ENDSTOP_HIT "TRIGGERED"
+define MSG_ENDSTOP_OPEN "open" define MSG_ENDSTOP_OPEN "open"
+define MSG_HOTEND_OFFSET "Hotend offsets:" define MSG_HOTEND_OFFSET "Hotend offsets:"
+define MSG_SD_CANT_OPEN_SUBDIR "Cannot open subdir" define MSG_SD_CANT_OPEN_SUBDIR "Cannot open subdir"
+define MSG_SD_INIT_FAIL "SD init fail" define MSG_SD_INIT_FAIL "SD init fail"
+define MSG_SD_VOL_INIT_FAIL "volume.init failed" define MSG_SD_VOL_INIT_FAIL "volume.init failed"
+define MSG_SD_OPENROOT_FAIL "openRoot failed" define MSG_SD_OPENROOT_FAIL "openRoot failed"
+define MSG_SD_CARD_OK "SD card ok" define MSG_SD_CARD_OK "SD card ok"
+define MSG_SD_WORKDIR_FAIL "workDir open failed" define MSG_SD_WORKDIR_FAIL "workDir open failed"
+define MSG_SD_OPEN_FILE_FAIL "open failed, File: " define MSG_SD_OPEN_FILE_FAIL "open failed, File: "
+define MSG_SD_FILE_OPENED "File opened: " define MSG_SD_FILE_OPENED "File opened: "
define MSG_SD_SIZE " Size: " define MSG_SD_SIZE " Size: "
+define MSG_SD_FILE_SELECTED "File selected" define MSG_SD_FILE_SELECTED "File selected"
+define MSG_SD_WRITE_TO_FILE "Writing to file: " define MSG_SD_WRITE_TO_FILE "Writing to file: "
+define MSG_SD_PRINTING_BYTE "SD printing byte " define MSG_SD_PRINTING_BYTE "SD printing byte "
+define MSG_SD_NOT_PRINTING "Not SD printing" define MSG_SD_NOT_PRINTING "Not SD printing"
+define MSG_SD_ERR_WRITE_TO_FILE "error writing to file" define MSG_SD_ERR_WRITE_TO_FILE "error writing to file"
+define MSG_SD_CANT_ENTER_SUBDIR "Cannot enter subdir: " define MSG_SD_CANT_ENTER_SUBDIR "Cannot enter subdir: "
+define MSG_STEPPER_TOO_HIGH "Steprate too high: " define MSG_STEPPER_TOO_HIGH "Steprate too high: "
+define MSG_ENDSTOPS_HIT "endstops hit: " define MSG_ENDSTOPS_HIT "endstops hit: "
+define MSG_ERR_COLD_EXTRUDE_STOP " cold extrusion prevented" define MSG_ERR_COLD_EXTRUDE_STOP " cold extrusion prevented"
define MSG_ERR_LONG_EXTRUDE_STOP " too long extrusion prevented" define MSG_ERR_LONG_EXTRUDE_STOP " too long extrusion prevented"
+define MSG_BABYSTEPPING_X "Babystepping X" define MSG_BABYSTEPPING_X "Babystepping X"
+define MSG_BABYSTEPPING_Y "Babystepping Y" define MSG_BABYSTEPPING_Y "Babystepping Y"
+define MSG_BABYSTEPPING_Z "Adjusting Z" define MSG_BABYSTEPPING_Z "Adjusting Z"
+define MSG_SERIAL_ERROR_MENU_STRUCTURE "Error in menu structure" define MSG_SERIAL_ERROR_MENU_STRUCTURE "Error in menu structure"
+define MSG_SET_HOME_OFFSETS "Set home offsets" define MSG_SET_HOME_OFFSETS "Set home offsets"
+define MSG_SET_ORIGIN "Set origin" define MSG_SET_ORIGIN "Set origin"
define MSG_ON "On " define MSG_ON "On "
define MSG_OFF "Off" define MSG_OFF "Off"
+define MSG_VMIN "Vmin" define MSG_VMIN "Vmin"
+define MSG_VTRAV_MIN "VTrav min" define MSG_VTRAV_MIN "VTrav min"
+define MSG_AMAX "Amax " define MSG_AMAX "Amax "
+define MSG_A_RETRACT "A-retract" define MSG_A_RETRACT "A-retract"
+define MSG_MOVE_01MM "Move 0.1mm" define MSG_MOVE_01MM "Move 0.1mm"
+define MSG_MOVE_1MM "Move 1mm" define MSG_MOVE_1MM "Move 1mm"
+define MSG_MOVE_10MM "Move 10mm" define MSG_MOVE_10MM "Move 10mm"
+define MSG_NOZZLE1 "Nozzle2" define MSG_NOZZLE1 "Nozzle2"
+define MSG_NOZZLE2 "Nozzle3" define MSG_NOZZLE2 "Nozzle3"
+define MSG_FLOW0 "Flow 0" define MSG_FLOW0 "Flow 0"
+define MSG_FLOW1 "Flow 1" define MSG_FLOW1 "Flow 1"
+define MSG_FLOW2 "Flow 2" define MSG_FLOW2 "Flow 2"
+define MSG_CONTROL "Control" define MSG_CONTROL "Control"
+define MSG_MIN " \002 Min" define MSG_MIN " \002 Min"
+define MSG_MAX " \002 Max" define MSG_MAX " \002 Max"
+define MSG_FACTOR " \002 Fact" define MSG_FACTOR " \002 Fact"
+define MSG_MOTION "Motion" define MSG_MOTION "Motion"
+define MSG_VOLUMETRIC "Filament" define MSG_VOLUMETRIC "Filament"
+define MSG_VOLUMETRIC_ENABLED "E in mm3" define MSG_VOLUMETRIC_ENABLED "E in mm3"
+define MSG_STORE_EPROM "Store memory" define MSG_STORE_EPROM "Store memory"
+define MSG_LOAD_EPROM "Load memory" define MSG_LOAD_EPROM "Load memory"
+define MSG_RESTORE_FAILSAFE "Restore failsafe" define MSG_RESTORE_FAILSAFE "Restore failsafe"
+define MSG_REFRESH "\xF8" "Refresh" define MSG_REFRESH "\xF8" "Refresh"
+define MSG_INIT_SDCARD "Init. SD card" define MSG_INIT_SDCARD "Init. SD card"
+define MSG_CNG_SDCARD "Change SD card" define MSG_CNG_SDCARD "Change SD card"
define MSG_ZPROBE_OUT "Z probe out. bed" define MSG_ZPROBE_OUT "Z probe out. bed"
define MSG_POSITION_UNKNOWN "Home X/Y before Z" define MSG_POSITION_UNKNOWN "Home X/Y before Z"
define MSG_ZPROBE_ZOFFSET "Z Offset" define MSG_ZPROBE_ZOFFSET "Z Offset"
+define MSG_BABYSTEP_X "Babystep X" define MSG_BABYSTEP_X "Babystep X"
+define MSG_BABYSTEP_Y "Babystep Y" define MSG_BABYSTEP_Y "Babystep Y"
+define MSG_RECTRACT "Rectract" define MSG_RECTRACT "Rectract"

View File

@ -184,8 +184,9 @@ static void lcd_main_menu();
static void lcd_tune_menu(); static void lcd_tune_menu();
static void lcd_settings_menu(); static void lcd_settings_menu();
static void lcd_calibration_menu(); static void lcd_calibration_menu();
#if (LNAG_NUM > 1)
static void lcd_language_menu(); static void lcd_language_menu();
#endif
static void lcd_control_temperature_menu(); static void lcd_control_temperature_menu();
static void lcd_babystep_z(); static void lcd_babystep_z();
@ -246,7 +247,9 @@ static void menu_action_back(menuFunc_t data);
static void menu_action_submenu(menuFunc_t data); static void menu_action_submenu(menuFunc_t data);
static void menu_action_gcode(const char* pgcode); static void menu_action_gcode(const char* pgcode);
static void menu_action_function(menuFunc_t data); static void menu_action_function(menuFunc_t data);
#if (LANG_NUM > 1)
static void menu_action_setlang(unsigned char lang); static void menu_action_setlang(unsigned char lang);
#endif
static void menu_action_sdfile(const char* filename, char* longFilename); static void menu_action_sdfile(const char* filename, char* longFilename);
static void menu_action_sddirectory(const char* filename, char* longFilename); static void menu_action_sddirectory(const char* filename, char* longFilename);
static void menu_action_setting_edit_int3(const char* pstr, int* ptr, int minValue, int maxValue); static void menu_action_setting_edit_int3(const char* pstr, int* ptr, int minValue, int maxValue);
@ -380,7 +383,7 @@ static void lcd_goto_menu(menuFunc_t menu, const uint32_t encoder = 0, const boo
} }
/* Main status screen. It's up to the implementation specific part to show what is needed. As this is very display dependent */ /* Main status screen. It's up to the implementation specific part to show what is needed. As this is very display dependent */
#if (LANG_NUM > 1)
// Language selection dialog not active. // Language selection dialog not active.
#define LANGSEL_OFF 0 #define LANGSEL_OFF 0
// Language selection dialog modal, entered from the info screen. This is the case on firmware boot up, // Language selection dialog modal, entered from the info screen. This is the case on firmware boot up,
@ -390,9 +393,11 @@ static void lcd_goto_menu(menuFunc_t menu, const uint32_t encoder = 0, const boo
#define LANGSEL_ACTIVE 2 #define LANGSEL_ACTIVE 2
// Language selection dialog status // Language selection dialog status
unsigned char langsel = LANGSEL_OFF; unsigned char langsel = LANGSEL_OFF;
#endif
void set_language_from_EEPROM() { void set_language_from_EEPROM() {
unsigned char eep = eeprom_read_byte((unsigned char*)EEPROM_LANG); unsigned char eep = eeprom_read_byte((unsigned char*)EEPROM_LANG);
#if (LANG_NUM > 1)
if (eep < LANG_NUM) if (eep < LANG_NUM)
{ {
lang_selected = eep; lang_selected = eep;
@ -405,6 +410,13 @@ void set_language_from_EEPROM() {
// Invalid language, enter the language selection screen in a modal mode. // Invalid language, enter the language selection screen in a modal mode.
langsel = LANGSEL_MODAL; langsel = LANGSEL_MODAL;
} }
#else
lang_selected = LANG_ID_DEFAULT;
if (eep != LANG_ID_DEFAULT)
{
eeprom_update_byte((unsigned char *)EEPROM_LANG, LANG_ID_DEFAULT);
}
#endif
} }
static void lcd_status_screen() static void lcd_status_screen()
@ -423,12 +435,6 @@ static void lcd_status_screen()
eeprom_update_dword((uint32_t *)EEPROM_TOTALTIME, 0); eeprom_update_dword((uint32_t *)EEPROM_TOTALTIME, 0);
eeprom_update_dword((uint32_t *)EEPROM_FILAMENTUSED, 0); eeprom_update_dword((uint32_t *)EEPROM_FILAMENTUSED, 0);
} }
if (langsel) {
//strncpy_P(lcd_status_message, PSTR(">>>>>>>>>>>> PRESS v"), LCD_WIDTH);
// Entering the language selection screen in a modal mode.
}
} }
@ -522,8 +528,6 @@ static void lcd_status_screen()
} }
//if (--langsel ==0) {langsel=1;current_click=true;}
if (current_click && (lcd_commands_type != LCD_COMMAND_STOP_PRINT)) //click is aborted unless stop print finishes if (current_click && (lcd_commands_type != LCD_COMMAND_STOP_PRINT)) //click is aborted unless stop print finishes
{ {
@ -1225,9 +1229,9 @@ void lcd_commands()
cancel_heatup = true; cancel_heatup = true;
setTargetBed(0); setTargetBed(0);
#ifndef SNMM #ifndef SNMM
setTargetHotend(0, 0); //heating when changing filament for multicolor setTargetHotend0(0); //heating when changing filament for multicolor
setTargetHotend(0, 1); setTargetHotend1(0);
setTargetHotend(0, 2); setTargetHotend2(0);
#endif #endif
manage_heater(); manage_heater();
custom_message = true; custom_message = true;
@ -3173,10 +3177,12 @@ static void lcd_set_lang(unsigned char lang) {
lang_selected = lang; lang_selected = lang;
firstrun = 1; firstrun = 1;
eeprom_update_byte((unsigned char *)EEPROM_LANG, lang); eeprom_update_byte((unsigned char *)EEPROM_LANG, lang);
/*langsel=0;*/
#if (LANG_NUM > 1)
if (langsel == LANGSEL_MODAL) if (langsel == LANGSEL_MODAL)
// From modal mode to an active mode? This forces the menu to return to the setup menu. // From modal mode to an active mode? This forces the menu to return to the setup menu.
langsel = LANGSEL_ACTIVE; langsel = LANGSEL_ACTIVE;
#endif
} }
#if !SDSORT_USES_RAM #if !SDSORT_USES_RAM
@ -3193,6 +3199,7 @@ void lcd_force_language_selection() {
eeprom_update_byte((unsigned char *)EEPROM_LANG, LANG_ID_FORCE_SELECTION); eeprom_update_byte((unsigned char *)EEPROM_LANG, LANG_ID_FORCE_SELECTION);
} }
#if (LANG_NUM > 1)
static void lcd_language_menu() static void lcd_language_menu()
{ {
START_MENU(); START_MENU();
@ -3206,6 +3213,7 @@ static void lcd_language_menu()
} }
END_MENU(); END_MENU();
} }
#endif
void lcd_mesh_bedleveling() void lcd_mesh_bedleveling()
{ {
@ -3585,7 +3593,9 @@ static void lcd_settings_menu()
{ {
MENU_ITEM(submenu, MSG_BABYSTEP_Z, lcd_babystep_z); MENU_ITEM(submenu, MSG_BABYSTEP_Z, lcd_babystep_z);
} }
#if (LANG_NUM > 1)
MENU_ITEM(submenu, MSG_LANGUAGE_SELECT, lcd_language_menu); MENU_ITEM(submenu, MSG_LANGUAGE_SELECT, lcd_language_menu);
#endif
if (card.ToshibaFlashAir_isEnabled()) { if (card.ToshibaFlashAir_isEnabled()) {
MENU_ITEM(function, MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON, lcd_toshiba_flash_air_compatibility_toggle); MENU_ITEM(function, MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON, lcd_toshiba_flash_air_compatibility_toggle);
@ -3657,6 +3667,7 @@ static void lcd_calibration_menu()
END_MENU(); END_MENU();
} }
#if (LANG_NUM > 1)
void lcd_mylang_drawmenu(int cursor) { void lcd_mylang_drawmenu(int cursor) {
int first = 0; int first = 0;
if (cursor>3) first = cursor-3; if (cursor>3) first = cursor-3;
@ -3779,6 +3790,11 @@ void lcd_mylang() {
lcd_return_to_status(); lcd_return_to_status();
} }
#else
void lcd_mylang() {
lcd_set_lang(LANG_ID_DEFAULT);
}
#endif
void bowden_menu() { void bowden_menu() {
int enc_dif = encoderDiff; int enc_dif = encoderDiff;
@ -5859,9 +5875,11 @@ static void menu_action_submenu(menuFunc_t data) {
static void menu_action_gcode(const char* pgcode) { static void menu_action_gcode(const char* pgcode) {
enquecommand_P(pgcode); enquecommand_P(pgcode);
} }
#if (LANG_NUM > 1)
static void menu_action_setlang(unsigned char lang) { static void menu_action_setlang(unsigned char lang) {
lcd_set_lang(lang); lcd_set_lang(lang);
} }
#endif
static void menu_action_function(menuFunc_t data) { static void menu_action_function(menuFunc_t data) {
(*data)(); (*data)();
} }