Merge branch 'MK3_3.11.1' into MK3_3.10.2
This commit is contained in:
commit
b52597f1b2
|
|
@ -6,14 +6,14 @@ labels: bug
|
|||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
<!--
|
||||
Please, before you create a new bug report, please make sure you searched in open and closed issues and couldn't find anything that matches.
|
||||
|
||||
-->
|
||||
**Printer type** - [e.g. MK3S, MK3, MK2.5S, MK2.5, MK2S, MK2]
|
||||
**Printer firmware version**- [e.g. 3.8.1, 3.8.1-RC1, ...]
|
||||
**Printer firmware version** - [e.g. 3.8.1, 3.8.1-RC1, ...]
|
||||
|
||||
**MMU Upgrade** - [e.g. MMU2S, MMU2, MMU1]
|
||||
**MMU upgrade firmware version [e.g. 1.0.6, 1.0.6-RC2, ...]
|
||||
**MMU upgrade** - [e.g. MMU2S, MMU2, MMU1]
|
||||
**MMU upgrade firmware version** - [e.g. 1.0.6, 1.0.6-RC2, ...]
|
||||
|
||||
**SD card or USB/Octoprint**
|
||||
Please let us know if you print via SD card or USB/Octoprint
|
||||
|
|
|
|||
|
|
@ -55,3 +55,20 @@ Firmware/Doc
|
|||
/Firmware/variants/printers.h
|
||||
Configuration.tmp
|
||||
config.tmp
|
||||
/lang/lang_en.max
|
||||
/lang/po/new/*_new.po
|
||||
/lang/po/new/*_filered.po
|
||||
/lang/po/new/nonascii.txt
|
||||
/lang/po/new/lang_en*.txt
|
||||
/lang/po/new/output-*.txt
|
||||
/lang/po/new/*.mo
|
||||
.DS_Store
|
||||
**/.DS_Store
|
||||
Firmware/.DS_Store
|
||||
Firmware/variant/.DS_Store
|
||||
lang/.DS_Store
|
||||
lang/po/.DS_Store
|
||||
lang/po/new/.DS_Store
|
||||
Tests/.DS_Store
|
||||
tools/.DS_Store
|
||||
tools/lib/.DS_Store
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
dist: trusty
|
||||
dist: focal
|
||||
before_install:
|
||||
- sudo apt-get install -y ninja-build
|
||||
# Arduino IDE adds a lot of noise caused by network traffic, trying to firewall it off
|
||||
|
|
|
|||
|
|
@ -17,17 +17,17 @@ extern PGM_P sPrinterName;
|
|||
|
||||
// Firmware version
|
||||
#define FW_MAJOR 3
|
||||
#define FW_MINOR 10
|
||||
#define FW_REVISION 1
|
||||
#define FW_MINOR 11
|
||||
#define FW_REVISION 0
|
||||
//#define FW_FLAVOR RC //uncomment if DEBUG, DEVEL, APLHA, BETA or RC
|
||||
//#define FW_FLAVERSION 1 //uncomment if FW_FLAVOR is defined and versioning is needed.
|
||||
#define FW_FLAVERSION 1 //uncomment if FW_FLAVOR is defined and versioning is needed.
|
||||
#ifndef FW_FLAVOR
|
||||
#define FW_VERSION STR(FW_MAJOR) "." STR(FW_MINOR) "." STR(FW_REVISION)
|
||||
#else
|
||||
#define FW_VERSION STR(FW_MAJOR) "." STR(FW_MINOR) "." STR(FW_REVISION) "-" STR(FW_FLAVOR) "" STR(FW_FLAVERSION)
|
||||
#endif
|
||||
|
||||
#define FW_COMMIT_NR 4697
|
||||
#define FW_COMMIT_NR 4955
|
||||
|
||||
// FW_VERSION_UNKNOWN means this is an unofficial build.
|
||||
// The firmware should only be checked into github with this symbol.
|
||||
|
|
|
|||
|
|
@ -538,26 +538,20 @@ const char* dcode_9_ADC_name(uint8_t i)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#ifdef AMBIENT_THERMISTOR
|
||||
extern int current_temperature_raw_ambient;
|
||||
#endif //AMBIENT_THERMISTOR
|
||||
|
||||
#ifdef VOLT_PWR_PIN
|
||||
extern int current_voltage_raw_pwr;
|
||||
#endif //VOLT_PWR_PIN
|
||||
|
||||
#ifdef VOLT_BED_PIN
|
||||
extern int current_voltage_raw_bed;
|
||||
#endif //VOLT_BED_PIN
|
||||
|
||||
uint16_t dcode_9_ADC_val(uint8_t i)
|
||||
{
|
||||
switch (i)
|
||||
{
|
||||
#ifdef SHOW_TEMP_ADC_VALUES
|
||||
case 0: return current_temperature_raw[0];
|
||||
#endif //SHOW_TEMP_ADC_VALUES
|
||||
case 1: return 0;
|
||||
#ifdef SHOW_TEMP_ADC_VALUES
|
||||
case 2: return current_temperature_bed_raw;
|
||||
#endif //SHOW_TEMP_ADC_VALUES
|
||||
#ifdef PINDA_THERMISTOR
|
||||
case 3: return current_temperature_raw_pinda;
|
||||
#endif //PINDA_THERMISTOR
|
||||
#ifdef VOLT_PWR_PIN
|
||||
case 4: return current_voltage_raw_pwr;
|
||||
#endif //VOLT_PWR_PIN
|
||||
|
|
|
|||
|
|
@ -248,7 +248,7 @@ bool IsStopped(); // Returns true if the print has been stopped
|
|||
//put an ASCII command at the begin of the current buffer, read from flash
|
||||
#define enquecommand_front_P(cmd) enquecommand_front(cmd, true)
|
||||
|
||||
void prepare_arc_move(char isclockwise);
|
||||
void prepare_arc_move(bool isclockwise);
|
||||
void clamp_to_software_endstops(float target[3]);
|
||||
void refresh_cmd_timeout(void);
|
||||
|
||||
|
|
@ -352,7 +352,6 @@ extern unsigned long t_fan_rising_edge;
|
|||
extern bool mesh_bed_leveling_flag;
|
||||
extern bool mesh_bed_run_from_menu;
|
||||
|
||||
extern int8_t lcd_change_fil_state;
|
||||
// save/restore printing
|
||||
extern bool saved_printing;
|
||||
extern uint8_t saved_printing_type;
|
||||
|
|
|
|||
|
|
@ -375,7 +375,7 @@ bool target_direction;
|
|||
//Insert variables if CHDK is defined
|
||||
#ifdef CHDK
|
||||
unsigned long chdkHigh = 0;
|
||||
boolean chdkActive = false;
|
||||
bool chdkActive = false;
|
||||
#endif
|
||||
|
||||
//! @name RAM save/restore printing
|
||||
|
|
@ -463,7 +463,9 @@ static void temp_compensation_start();
|
|||
static void temp_compensation_apply();
|
||||
#endif
|
||||
|
||||
#ifdef PRUSA_SN_SUPPORT
|
||||
static uint8_t get_PRUSA_SN(char* SN);
|
||||
#endif //PRUSA_SN_SUPPORT
|
||||
|
||||
uint16_t gcode_in_progress = 0;
|
||||
uint16_t mcode_in_progress = 0;
|
||||
|
|
@ -919,8 +921,8 @@ void update_sec_lang_from_external_flash()
|
|||
{
|
||||
if ((boot_app_magic == BOOT_APP_MAGIC) && (boot_app_flags & BOOT_APP_FLG_USER0))
|
||||
{
|
||||
uint8_t lang = boot_reserved >> 4;
|
||||
uint8_t state = boot_reserved & 0xf;
|
||||
uint8_t lang = boot_reserved >> 3;
|
||||
uint8_t state = boot_reserved & 0x07;
|
||||
lang_table_header_t header;
|
||||
uint32_t src_addr;
|
||||
if (lang_get_header(lang, &header, &src_addr))
|
||||
|
|
@ -928,7 +930,7 @@ void update_sec_lang_from_external_flash()
|
|||
lcd_puts_at_P(1,3,PSTR("Language update."));
|
||||
for (uint8_t i = 0; i < state; i++) fputc('.', lcdout);
|
||||
_delay(100);
|
||||
boot_reserved = (state + 1) | (lang << 4);
|
||||
boot_reserved = (boot_reserved & 0xF8) | ((state + 1) & 0x07);
|
||||
if ((state * LANGBOOT_BLOCKSIZE) < header.size)
|
||||
{
|
||||
cli();
|
||||
|
|
@ -1011,7 +1013,7 @@ static void fw_crash_init()
|
|||
eeprom_read_byte((uint8_t*)EEPROM_FW_CRASH_FLAG) != 0xFF)
|
||||
{
|
||||
lcd_show_fullscreen_message_and_wait_P(
|
||||
_i("FW crash detected! "
|
||||
_n("FW crash detected! "
|
||||
"You can continue printing. "
|
||||
"Debug data available for analysis. "
|
||||
"Contact support to submit details."));
|
||||
|
|
@ -1025,17 +1027,17 @@ static void fw_crash_init()
|
|||
lcd_beeper_quick_feedback();
|
||||
lcd_clear();
|
||||
|
||||
lcd_puts_P(_i("FIRMWARE CRASH!\nCrash reason:\n"));
|
||||
lcd_puts_P(_n("FIRMWARE CRASH!\nCrash reason:\n"));
|
||||
switch(crash_reason)
|
||||
{
|
||||
case dump_crash_reason::stack_error:
|
||||
lcd_puts_P(_i("Static memory has\nbeen overwritten"));
|
||||
lcd_puts_P(_n("Static memory has\nbeen overwritten"));
|
||||
break;
|
||||
case dump_crash_reason::watchdog:
|
||||
lcd_puts_P(_i("Watchdog timeout"));
|
||||
lcd_puts_P(_n("Watchdog timeout"));
|
||||
break;
|
||||
case dump_crash_reason::bad_isr:
|
||||
lcd_puts_P(_i("Bad interrupt"));
|
||||
lcd_puts_P(_n("Bad interrupt"));
|
||||
break;
|
||||
default:
|
||||
lcd_print((uint8_t)crash_reason);
|
||||
|
|
@ -1130,6 +1132,7 @@ void setup()
|
|||
}
|
||||
#endif //TMC2130
|
||||
|
||||
#ifdef PRUSA_SN_SUPPORT
|
||||
//Check for valid SN in EEPROM. Try to retrieve it in case it's invalid.
|
||||
//SN is valid only if it is NULL terminated and starts with "CZPX".
|
||||
{
|
||||
|
|
@ -1146,6 +1149,7 @@ void setup()
|
|||
puts_P(PSTR("SN update failed"));
|
||||
}
|
||||
}
|
||||
#endif //PRUSA_SN_SUPPORT
|
||||
|
||||
|
||||
#ifndef XFLASH
|
||||
|
|
@ -3942,6 +3946,7 @@ void gcode_M701()
|
|||
* @return 0 on success
|
||||
* @return 1 on general failure
|
||||
*/
|
||||
#ifdef PRUSA_SN_SUPPORT
|
||||
static uint8_t get_PRUSA_SN(char* SN)
|
||||
{
|
||||
uint8_t selectedSerialPort_bak = selectedSerialPort;
|
||||
|
|
@ -3976,6 +3981,8 @@ exit:
|
|||
selectedSerialPort = selectedSerialPort_bak;
|
||||
return !SN_valid;
|
||||
}
|
||||
#endif //PRUSA_SN_SUPPORT
|
||||
|
||||
//! Detection of faulty RAMBo 1.1b boards equipped with bigger capacitors
|
||||
//! at the TACH_1 pin, which causes bad detection of print fan speed.
|
||||
//! Warning: This function is not to be used by ordinary users, it is here only for automated testing purposes,
|
||||
|
|
@ -4554,7 +4561,7 @@ void process_commands()
|
|||
#elif defined(BOOTAPP) //this is a safety precaution. This is because the new bootloader turns off the heaters, but the old one doesn't. The watchdog should be used most of the time.
|
||||
asm volatile("jmp 0x3E000");
|
||||
#endif
|
||||
}else if (code_seen_P("fv")) { // PRUSA fv
|
||||
} else if (code_seen_P(PSTR("fv"))) { // PRUSA fv
|
||||
// get file version
|
||||
#ifdef SDSUPPORT
|
||||
card.openFileReadFilteredGcode(strchr_pointer + 3,true);
|
||||
|
|
@ -4574,13 +4581,15 @@ void process_commands()
|
|||
prusa_sd_card_upload = true;
|
||||
card.openFileWrite(strchr_pointer+4);
|
||||
|
||||
} else if (code_seen_P(PSTR("SN"))) { // PRUSA SN
|
||||
#ifdef PRUSA_SN_SUPPORT
|
||||
} else if (code_seen_P(PSTR("SN"))) { // PRUSA SN
|
||||
char SN[20];
|
||||
eeprom_read_block(SN, (uint8_t*)EEPROM_PRUSA_SN, 20);
|
||||
if (SN[19])
|
||||
puts_P(PSTR("SN invalid"));
|
||||
else
|
||||
puts(SN);
|
||||
#endif //PRUSA_SN_SUPPORT
|
||||
|
||||
} else if(code_seen_P(PSTR("Fir"))){ // PRUSA Fir
|
||||
|
||||
|
|
@ -5400,7 +5409,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
|
|||
|
||||
custom_message_type = CustomMsg::TempCal;
|
||||
custom_message_state = 1;
|
||||
lcd_setstatuspgm(_T(MSG_TEMP_CALIBRATION));
|
||||
lcd_setstatuspgm(_T(MSG_PINDA_CALIBRATION));
|
||||
current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
|
||||
plan_buffer_line_curposXYZE(3000 / 60);
|
||||
current_position[X_AXIS] = PINDA_PREHEAT_X;
|
||||
|
|
@ -5501,14 +5510,14 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
|
|||
puts_P(_N("PINDA probe calibration start"));
|
||||
custom_message_type = CustomMsg::TempCal;
|
||||
custom_message_state = 1;
|
||||
lcd_setstatuspgm(_T(MSG_TEMP_CALIBRATION));
|
||||
lcd_setstatuspgm(_T(MSG_PINDA_CALIBRATION));
|
||||
current_position[X_AXIS] = PINDA_PREHEAT_X;
|
||||
current_position[Y_AXIS] = PINDA_PREHEAT_Y;
|
||||
current_position[Z_AXIS] = PINDA_PREHEAT_Z;
|
||||
plan_buffer_line_curposXYZE(3000 / 60);
|
||||
st_synchronize();
|
||||
|
||||
while (abs(degBed() - PINDA_MIN_T) > 1) {
|
||||
while (fabs(degBed() - PINDA_MIN_T) > 1) {
|
||||
delay_keep_alive(1000);
|
||||
serialecho_temperatures();
|
||||
}
|
||||
|
|
@ -5578,7 +5587,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
|
|||
disable_e1();
|
||||
disable_e2();
|
||||
setTargetBed(0); //set bed target temperature back to 0
|
||||
lcd_show_fullscreen_message_and_wait_P(_T(MSG_TEMP_CALIBRATION_DONE));
|
||||
lcd_show_fullscreen_message_and_wait_P(_T(MSG_PINDA_CALIBRATION_DONE));
|
||||
eeprom_update_byte((unsigned char *)EEPROM_TEMP_CAL_ACTIVE, 1);
|
||||
lcd_update_enable(true);
|
||||
lcd_update(2);
|
||||
|
|
@ -5815,7 +5824,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
|
|||
fCheckModeInit(); // alternatively invoke printer reset
|
||||
break;
|
||||
default:
|
||||
printf_P(PSTR("Unknown G code: %s \n"), cmdbuffer + bufindr + CMDHDRSIZE);
|
||||
printf_P(MSG_UNKNOWN_CODE, 'G', cmdbuffer + bufindr + CMDHDRSIZE);
|
||||
}
|
||||
// printf_P(_N("END G-CODE=%u\n"), gcode_in_progress);
|
||||
gcode_in_progress = 0;
|
||||
|
|
@ -5838,7 +5847,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
|
|||
|
||||
/*for (++strchr_pointer; *strchr_pointer == ' ' || *strchr_pointer == '\t'; ++strchr_pointer);*/
|
||||
if (*(strchr_pointer+index) < '0' || *(strchr_pointer+index) > '9') {
|
||||
printf_P(PSTR("Invalid M code: %s \n"), cmdbuffer + bufindr + CMDHDRSIZE);
|
||||
printf_P(PSTR("Invalid M code: %s\n"), cmdbuffer + bufindr + CMDHDRSIZE);
|
||||
|
||||
} else
|
||||
{
|
||||
|
|
@ -6892,7 +6901,7 @@ Sigma_Exit:
|
|||
- `X` - X axis
|
||||
- `Y` - Y axis
|
||||
- `Z` - Z axis
|
||||
- `E` - Exruder
|
||||
- `E` - Extruder
|
||||
|
||||
### M18 - Disable steppers <a href="https://reprap.org/wiki/G-code#M18:_Disable_all_stepper_motors">M18: Disable all stepper motors</a>
|
||||
Equal to M84 (compatibility)
|
||||
|
|
@ -8941,7 +8950,7 @@ Sigma_Exit:
|
|||
#### End of M-Commands
|
||||
*/
|
||||
default:
|
||||
printf_P(PSTR("Unknown M code: %s \n"), cmdbuffer + bufindr + CMDHDRSIZE);
|
||||
printf_P(MSG_UNKNOWN_CODE, 'M', cmdbuffer + bufindr + CMDHDRSIZE);
|
||||
}
|
||||
// printf_P(_N("END M-CODE=%u\n"), mcode_in_progress);
|
||||
mcode_in_progress = 0;
|
||||
|
|
@ -8974,7 +8983,7 @@ Sigma_Exit:
|
|||
else if (*(strchr_pointer + index) == 'x'){ //load to bondtech gears; if mmu is not present do nothing
|
||||
if (mmu_enabled)
|
||||
{
|
||||
tmp_extruder = choose_menu_P(_T(MSG_CHOOSE_FILAMENT), _T(MSG_FILAMENT));
|
||||
tmp_extruder = choose_menu_P(_T(MSG_SELECT_FILAMENT), _T(MSG_FILAMENT));
|
||||
if ((tmp_extruder == mmu_extruder) && mmu_fil_loaded) //dont execute the same T-code twice in a row
|
||||
{
|
||||
puts_P(duplicate_Tcode_ignored);
|
||||
|
|
@ -9001,11 +9010,11 @@ Sigma_Exit:
|
|||
{
|
||||
if(mmu_enabled)
|
||||
{
|
||||
tmp_extruder = choose_menu_P(_T(MSG_CHOOSE_FILAMENT), _T(MSG_FILAMENT));
|
||||
tmp_extruder = choose_menu_P(_T(MSG_SELECT_FILAMENT), _T(MSG_FILAMENT));
|
||||
load_to_nozzle = true;
|
||||
} else
|
||||
{
|
||||
tmp_extruder = choose_menu_P(_T(MSG_CHOOSE_EXTRUDER), _T(MSG_EXTRUDER));
|
||||
tmp_extruder = choose_menu_P(_T(MSG_SELECT_EXTRUDER), _T(MSG_EXTRUDER));
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
|
@ -9096,7 +9105,7 @@ Sigma_Exit:
|
|||
}
|
||||
else {
|
||||
#if EXTRUDERS > 1
|
||||
boolean make_move = false;
|
||||
bool make_move = false;
|
||||
#endif
|
||||
if (code_seen('F')) {
|
||||
#if EXTRUDERS > 1
|
||||
|
|
@ -9526,6 +9535,9 @@ Sigma_Exit:
|
|||
#endif //FILAMENT_SENSOR
|
||||
|
||||
#endif //DEBUG_DCODES
|
||||
|
||||
default:
|
||||
printf_P(MSG_UNKNOWN_CODE, 'D', cmdbuffer + bufindr + CMDHDRSIZE);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -9699,7 +9711,7 @@ void mesh_plan_buffer_line(const float &x, const float &y, const float &z, const
|
|||
int n_segments = 0;
|
||||
|
||||
if (mbl.active) {
|
||||
float len = abs(dx) + abs(dy);
|
||||
float len = fabs(dx) + fabs(dy);
|
||||
if (len > 0)
|
||||
// Split to 3cm segments or shorter.
|
||||
n_segments = int(ceil(len / 30.f));
|
||||
|
|
@ -9753,7 +9765,7 @@ void prepare_move()
|
|||
set_current_to_destination();
|
||||
}
|
||||
|
||||
void prepare_arc_move(char isclockwise) {
|
||||
void prepare_arc_move(bool isclockwise) {
|
||||
float r = hypot(offset[X_AXIS], offset[Y_AXIS]); // Compute arc radius for mc_arc
|
||||
|
||||
// Trace the arc
|
||||
|
|
@ -11283,7 +11295,7 @@ void uvlo_tiny()
|
|||
planner_abort_hard();
|
||||
|
||||
// Allow for small roundoffs to be ignored
|
||||
if(abs(current_position[Z_AXIS] - eeprom_read_float((float*)(EEPROM_UVLO_TINY_CURRENT_POSITION_Z))) >= 1.f/cs.axis_steps_per_unit[Z_AXIS])
|
||||
if(fabs(current_position[Z_AXIS] - eeprom_read_float((float*)(EEPROM_UVLO_TINY_CURRENT_POSITION_Z))) >= 1.f/cs.axis_steps_per_unit[Z_AXIS])
|
||||
{
|
||||
// Clean the input command queue, inhibit serial processing using saved_printing
|
||||
cmdqueue_reset();
|
||||
|
|
@ -12071,7 +12083,7 @@ void M600_wait_for_user(float HotendTempBckp) {
|
|||
break;
|
||||
case 2: //waiting for nozzle to reach target temperature
|
||||
|
||||
if (abs(degTargetHotend(active_extruder) - degHotend(active_extruder)) < 1) {
|
||||
if (fabs(degTargetHotend(active_extruder) - degHotend(active_extruder)) < 1) {
|
||||
lcd_display_message_fullscreen_P(_T(MSG_PRESS_TO_UNLOAD));
|
||||
waiting_start_time = _millis();
|
||||
wait_for_user_state = 0;
|
||||
|
|
|
|||
|
|
@ -231,7 +231,7 @@ static void finISR(timer16_Sequence_t timer)
|
|||
#endif
|
||||
}
|
||||
|
||||
static boolean isTimerActive(timer16_Sequence_t timer)
|
||||
static bool isTimerActive(timer16_Sequence_t timer)
|
||||
{
|
||||
// returns true if any servo is active on this timer
|
||||
for(uint8_t channel=0; channel < SERVOS_PER_TIMER; channel++) {
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ private:
|
|||
|
||||
bool autostart_stilltocheck; //the sd start is delayed, because otherwise the serial cannot answer fast enought to make contact with the hostsoftware.
|
||||
|
||||
int16_t nrFiles; //counter for the files in the current directory and recycled as position counter for getting the nrFiles'th name in the directory.
|
||||
uint16_t nrFiles; //counter for the files in the current directory and recycled as position counter for getting the nrFiles'th name in the directory.
|
||||
char* diveDirName;
|
||||
|
||||
bool diveSubfolder (const char *&fileName);
|
||||
|
|
|
|||
|
|
@ -2,8 +2,6 @@
|
|||
#include "cardreader.h"
|
||||
#include "ultralcd.h"
|
||||
|
||||
extern bool Stopped;
|
||||
|
||||
// Reserve BUFSIZE lines of length MAX_CMD_SIZE plus CMDBUFFER_RESERVE_FRONT.
|
||||
char cmdbuffer[BUFSIZE * (MAX_CMD_SIZE + 1) + CMDBUFFER_RESERVE_FRONT];
|
||||
// Head of the circular buffer, where to read.
|
||||
|
|
@ -23,11 +21,10 @@ bool cmdbuffer_front_already_processed = false;
|
|||
bool cmdqueue_serial_disabled = false;
|
||||
|
||||
int serial_count = 0; //index of character read from serial line
|
||||
boolean comment_mode = false;
|
||||
bool comment_mode = false;
|
||||
char *strchr_pointer; // just a pointer to find chars in the command string like X, Y, Z, E, etc
|
||||
|
||||
unsigned long TimeSent = _millis();
|
||||
unsigned long TimeNow = _millis();
|
||||
ShortTimer serialTimeoutTimer;
|
||||
|
||||
long gcode_N = 0;
|
||||
long gcode_LastN = 0;
|
||||
|
|
@ -402,8 +399,7 @@ void get_command()
|
|||
MYSERIAL.write(serial_char); // for debuging serial line 2 in farm_mode
|
||||
selectedSerialPort = 1;
|
||||
} */ //RP - removed
|
||||
TimeSent = _millis();
|
||||
TimeNow = _millis();
|
||||
serialTimeoutTimer.start();
|
||||
|
||||
if (serial_char < 0)
|
||||
// Ignore extended ASCII characters. These characters have no meaning in the G-code apart from the file names
|
||||
|
|
@ -537,22 +533,11 @@ void get_command()
|
|||
}
|
||||
} // end of serial line processing loop
|
||||
|
||||
if(farm_mode){
|
||||
TimeNow = _millis();
|
||||
if ( ((TimeNow - TimeSent) > 800) && (serial_count > 0) ) {
|
||||
cmdbuffer[bufindw+serial_count+CMDHDRSIZE] = 0;
|
||||
|
||||
bufindw += strlen(cmdbuffer+bufindw+CMDHDRSIZE) + (1 + CMDHDRSIZE);
|
||||
if (bufindw == sizeof(cmdbuffer))
|
||||
bufindw = 0;
|
||||
++ buflen;
|
||||
|
||||
serial_count = 0;
|
||||
|
||||
SERIAL_ECHOPGM("TIMEOUT:");
|
||||
//memset(cmdbuffer, 0 , sizeof(cmdbuffer));
|
||||
return;
|
||||
}
|
||||
if (serial_count > 0 && serialTimeoutTimer.expired(farm_mode ? 800 : 2000)) {
|
||||
comment_mode = false;
|
||||
serial_count = 0;
|
||||
SERIAL_ECHOLNPGM("RX timeout");
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef SDSUPPORT
|
||||
|
|
|
|||
|
|
@ -49,12 +49,9 @@ extern bool cmdqueue_serial_disabled;
|
|||
extern uint32_t sdpos_atomic;
|
||||
|
||||
extern int serial_count;
|
||||
extern boolean comment_mode;
|
||||
extern bool comment_mode;
|
||||
extern char *strchr_pointer;
|
||||
|
||||
extern unsigned long TimeSent;
|
||||
extern unsigned long TimeNow;
|
||||
|
||||
extern long gcode_N;
|
||||
extern long gcode_LastN;
|
||||
extern long Stopped_gcode_LastN;
|
||||
|
|
|
|||
|
|
@ -58,16 +58,29 @@
|
|||
//#define LANG_MODE 0 // primary language only
|
||||
#define LANG_MODE 1 // sec. language support
|
||||
|
||||
#define LANG_SIZE_RESERVED 0x3000 // reserved space for secondary language (12288 bytes)
|
||||
#define LANG_SIZE_RESERVED 0x3000 // reserved space for secondary language (12288 bytes). Maximum 32768 bytes
|
||||
|
||||
//Community language support
|
||||
#define COMMUNITY_LANG_NL // Community Dutch language
|
||||
//#define COMMUNITY_LANG_QR // Community new language //..use this as a template and replace 'QR'
|
||||
#define COMMUNITY_LANG_GROUP 1
|
||||
|
||||
#if defined(COMMUNITY_LANG_NL) //|| defined(COMMUNITY_LANG_QR) //..use last part as a template and replace 'QR'
|
||||
#define COMMUNITY_LANG_SUPPORT
|
||||
#if (COMMUNITY_LANG_GROUP == 1)
|
||||
#define COMMUNITY_LANG_GROUP1_NL // Community Dutch language
|
||||
#define COMMUNITY_LANG_GROUP1_RO // Community Romanian language
|
||||
#define COMMUNITY_LANG_GROUP1_HU // Community Hungarian language
|
||||
#define COMMUNITY_LANG_GROUP1_HR // Community Croatian language
|
||||
#define COMMUNITY_LANG_GROUP1_SK // Community Slovak language
|
||||
#define COMMUNITY_LANG_GROUP1_SV // Community Swedish language
|
||||
//#define COMMUNITY_LANG_GROUP1_NO // Community Norwegian language
|
||||
//#define COMMUNITY_LANG_GROUP1_DA // Community Danish language
|
||||
//#define COMMUNITY_LANG_GROUP1_SL // Community Slovanian language
|
||||
//#define COMMUNITY_LANG_GROUP1_LB // Community Luxembourgish language
|
||||
//#define COMMUNITY_LANG_GROUP1_LT // Community Lithuanian language
|
||||
//#define COMMUNITY_LANG_GROUP1_QR // Community new language //..use this as a template and replace 'QR'
|
||||
#endif
|
||||
|
||||
#if (COMMUNITY_LANG_GROUP >=1 )
|
||||
#define COMMUNITY_LANGUAGE_SUPPORT
|
||||
#endif
|
||||
// Sanity checks for correct configuration of XFLASH_DUMP options
|
||||
#if defined(XFLASH_DUMP) && !defined(XFLASH)
|
||||
#error "XFLASH_DUMP requires XFLASH support"
|
||||
|
|
|
|||
|
|
@ -211,16 +211,46 @@ const char* lang_get_name_by_code(uint16_t code)
|
|||
case LANG_CODE_FR: return _n("Francais");
|
||||
case LANG_CODE_IT: return _n("Italiano");
|
||||
case LANG_CODE_PL: return _n("Polski");
|
||||
#ifdef COMMUNITY_LANG_SUPPORT //Community language support
|
||||
#ifdef COMMUNITY_LANG_NL
|
||||
case LANG_CODE_NL: return _n("Nederlands"); //community contribution
|
||||
#endif // COMMUNITY_LANG_NL
|
||||
#ifdef COMMUNITY_LANGUAGE_SUPPORT //Community language support
|
||||
#ifdef COMMUNITY_LANG_GROUP1_NL
|
||||
case LANG_CODE_NL: return _n("Nederlands"); //community Dutch contribution
|
||||
#endif // COMMUNITY_LANG_GROUP1_NL
|
||||
#ifdef COMMUNITY_LANG_GROUP1_SV
|
||||
case LANG_CODE_SV: return _n("Svenska"); //community Swedish contribution
|
||||
#endif // COMMUNITY_LANG_GROUP1_SV
|
||||
#ifdef COMMUNITY_LANG_GROUP1_NO
|
||||
case LANG_CODE_NO: return _n("Norsk"); //community Swedish contribution
|
||||
#endif // COMMUNITY_LANG_GROUP1_NO
|
||||
#ifdef COMMUNITY_LANG_GROUP1_DA
|
||||
case LANG_CODE_DA: return _n("Dansk"); //community Danish contribution
|
||||
#endif // COMMUNITY_LANG_GROUP1_DA
|
||||
#ifdef COMMUNITY_LANG_GROUP1_SK
|
||||
case LANG_CODE_SK: return _n("Slovencina"); //community Slovak contribution
|
||||
#endif // COMMUNITY_LANG_GROUP1_SK
|
||||
#ifdef COMMUNITY_LANG_GROUP1_SL
|
||||
case LANG_CODE_SL: return _n("Slovenscina"); //community Slovanian contribution
|
||||
#endif // COMMUNITY_LANG_GROUP1_SL
|
||||
#ifdef COMMUNITY_LANG_GROUP1_HU
|
||||
case LANG_CODE_HU: return _n("Magyar"); //community Hungarian contribution
|
||||
#endif // COMMUNITY_LANG_GROUP1_HU
|
||||
#ifdef COMMUNITY_LANG_GROUP1_LB
|
||||
case LANG_CODE_LB: return _n("Letzebuergesch"); //community Luxembourgish contribution
|
||||
#endif // COMMUNITY_LANG_GROUP1_LB
|
||||
#ifdef COMMUNITY_LANG_GROUP1_HR
|
||||
case LANG_CODE_HR: return _n("Hrvatski"); //community Croatian contribution
|
||||
#endif // COMMUNITY_LANG_GROUP1_HR
|
||||
#ifdef COMMUNITY_LANG_GROUP1_LT
|
||||
case LANG_CODE_LT: return _n("Lietuviu"); //community Lithuanian contribution
|
||||
#endif // COMMUNITY_LANG_GROUP1_LT
|
||||
#ifdef COMMUNITY_LANG_GROUP1_RO
|
||||
case LANG_CODE_RO: return _n("Romana"); //community Romanian contribution
|
||||
#endif // COMMUNITY_LANG_GROUP1_RO
|
||||
|
||||
//Use the 3 lines below as a template and replace 'QR' and 'New language'
|
||||
//#ifdef COMMUNITY_LANG_QR
|
||||
//#ifdef COMMUNITY_LANG_GROUP1_QR
|
||||
// case LANG_CODE_QR: return _n("New language"); //community contribution
|
||||
//#endif // COMMUNITY_LANG_QR
|
||||
#endif // COMMUNITY_LANG_SUPPORT
|
||||
//#endif // COMMUNITY_LANG_GROUP1_QR
|
||||
#endif // COMMUNITY_LANGUAGE_SUPPORT
|
||||
}
|
||||
return _n("??");
|
||||
}
|
||||
|
|
@ -279,5 +309,5 @@ void lang_boot_update_start(uint8_t lang)
|
|||
{
|
||||
uint8_t cnt = lang_get_count();
|
||||
if ((lang < 2) || (lang > cnt)) return; //only languages from xflash can be selected
|
||||
bootapp_reboot_user0(lang << 4);
|
||||
bootapp_reboot_user0(lang << 3);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -94,15 +94,45 @@ typedef struct
|
|||
#define LANG_CODE_FR 0x6672 //!<'fr'
|
||||
#define LANG_CODE_IT 0x6974 //!<'it'
|
||||
#define LANG_CODE_PL 0x706c //!<'pl'
|
||||
#ifdef COMMUNITY_LANG_SUPPORT //Community language support
|
||||
#ifdef COMMUNITY_LANG_NL
|
||||
#ifdef COMMUNITY_LANGUAGE_SUPPORT //Community language support
|
||||
#ifdef COMMUNITY_LANG_GROUP1_NL
|
||||
#define LANG_CODE_NL 0x6e6c //!<'nl'
|
||||
#endif // COMMUNITY_LANG_NL
|
||||
#endif // COMMUNITY_LANG_GROUP1_NL
|
||||
#ifdef COMMUNITY_LANG_GROUP1_SV
|
||||
#define LANG_CODE_SV 0x7376 //!<'sv'
|
||||
#endif // COMMUNITY_LANG_GROUP1_SV
|
||||
#ifdef COMMUNITY_LANG_GROUP1_NO
|
||||
#define LANG_CODE_NO 0x6E6F //!<'no'
|
||||
#endif // COMMUNITY_LANG_GROUP1_NO
|
||||
#ifdef COMMUNITY_LANG_GROUP1_DA
|
||||
#define LANG_CODE_DA 0x6461 //!<'da'
|
||||
#endif // COMMUNITY_LANG_GROUP1_DA
|
||||
#ifdef COMMUNITY_LANG_GROUP1_SL
|
||||
#define LANG_CODE_SL 0x736C //!<'sl'
|
||||
#endif // COMMUNITY_LANG_GROUP1_SL
|
||||
#ifdef COMMUNITY_LANG_GROUP1_HU
|
||||
#define LANG_CODE_HU 0x6875 //!<'hu'
|
||||
#endif // COMMUNITY_LANG_GROUP1_HU
|
||||
#ifdef COMMUNITY_LANG_GROUP1_LB
|
||||
#define LANG_CODE_LB 0x6C62 //!<'lb'
|
||||
#endif // COMMUNITY_LANG_GROUP1_LB
|
||||
#ifdef COMMUNITY_LANG_GROUP1_HR
|
||||
#define LANG_CODE_HR 0x6872 //!<'hr'
|
||||
#endif // COMMUNITY_LANG_GROUP1_HR
|
||||
#ifdef COMMUNITY_LANG_GROUP1_LT
|
||||
#define LANG_CODE_LT 0x6C74 //!<'lt'
|
||||
#endif // COMMUNITY_LANG_GROUP1_LT
|
||||
#ifdef COMMUNITY_LANG_GROUP1_SK
|
||||
#define LANG_CODE_SK 0x736b //!<'sk'
|
||||
#endif // COMMUNITY_LANG_GROUP1_SK
|
||||
#ifdef COMMUNITY_LANG_GROUP1_RO
|
||||
#define LANG_CODE_RO 0x726F //!<'ro'
|
||||
#endif // COMMUNITY_LANG_GROUP1_RO
|
||||
//Use the 3 lines below as a template and replace 'QR', '0X7172' and 'qr'
|
||||
//#ifdef COMMUNITY_LANG_QR
|
||||
//#ifdef COMMUNITY_LANG_GROUP1_QR
|
||||
//#define LANG_CODE_QR 0x7172 //!<'qr'
|
||||
//#endif // COMMUNITY_LANG_QR
|
||||
#endif // COMMUNITY_LANG_SUPPORT
|
||||
//#endif // COMMUNITY_LANG_GROUP1_QR
|
||||
#endif // COMMUNITY_LANGUAGE_SUPPORT
|
||||
///@}
|
||||
|
||||
#if defined(__cplusplus)
|
||||
|
|
|
|||
|
|
@ -14,8 +14,6 @@
|
|||
#include "static_assert.h"
|
||||
#include "sound.h"
|
||||
|
||||
extern int32_t lcd_encoder;
|
||||
|
||||
#define MENU_DEPTH_MAX 7
|
||||
|
||||
static menu_record_t menu_stack[MENU_DEPTH_MAX];
|
||||
|
|
|
|||
|
|
@ -993,7 +993,7 @@ bool find_bed_induction_sensor_point_z(float minimum_z, uint8_t n_iter, int
|
|||
// we have to let the planner know where we are right now as it is not where we said to go.
|
||||
update_current_position_z();
|
||||
//printf_P(PSTR("Zs: %f, Z: %f, delta Z: %f"), z_bckp, current_position[Z_AXIS], (z_bckp - current_position[Z_AXIS]));
|
||||
if (abs(current_position[Z_AXIS] - z_bckp) < 0.025) {
|
||||
if (fabs(current_position[Z_AXIS] - z_bckp) < 0.025) {
|
||||
//printf_P(PSTR("PINDA triggered immediately, move Z higher and repeat measurement\n"));
|
||||
current_position[Z_AXIS] += 0.5;
|
||||
go_to_current(homing_feedrate[Z_AXIS]/60);
|
||||
|
|
@ -1019,7 +1019,7 @@ bool find_bed_induction_sensor_point_z(float minimum_z, uint8_t n_iter, int
|
|||
// SERIAL_ECHOPGM("Bed find_bed_induction_sensor_point_z low, height: ");
|
||||
// MYSERIAL.print(current_position[Z_AXIS], 5);
|
||||
// SERIAL_ECHOLNPGM("");
|
||||
float dz = i?abs(current_position[Z_AXIS] - (z / i)):0;
|
||||
float dz = i?fabs(current_position[Z_AXIS] - (z / i)):0;
|
||||
z += current_position[Z_AXIS];
|
||||
//printf_P(PSTR("Z[%d] = %d, dz=%d\n"), i, (int)(current_position[Z_AXIS] * 1000), (int)(dz * 1000));
|
||||
//printf_P(PSTR("Z- measurement deviation from avg value %f um\n"), dz);
|
||||
|
|
|
|||
|
|
@ -8,156 +8,158 @@
|
|||
#include "Configuration_prusa.h"
|
||||
|
||||
//internationalized messages
|
||||
const char MSG_AUTO_HOME[] PROGMEM_I1 = ISTR("Auto home"); ////c=18
|
||||
const char MSG_BABYSTEP_Z[] PROGMEM_I1 = ISTR("Live adjust Z"); ////c=18
|
||||
const char MSG_BABYSTEP_Z_NOT_SET[] PROGMEM_I1 = ISTR("Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."); ////c=20 r=12
|
||||
const char MSG_BED[] PROGMEM_I1 = ISTR("Bed"); ////c=13
|
||||
const char MSG_BED_DONE[] PROGMEM_I1 = ISTR("Bed done"); ////c=20
|
||||
const char MSG_BED_HEATING[] PROGMEM_I1 = ISTR("Bed Heating"); ////c=20
|
||||
const char MSG_BED_LEVELING_FAILED_POINT_LOW[] PROGMEM_I1 = ISTR("Bed leveling failed. Sensor didn't trigger. Debris on nozzle? Waiting for reset."); ////c=20 r=6
|
||||
const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED[] PROGMEM_I1 = ISTR("XYZ calibration failed. Please consult the manual."); ////c=20 r=8
|
||||
const char MSG_BELT_STATUS[] PROGMEM_I1 = ISTR("Belt status");////c=18
|
||||
const char MSG_CANCEL[] PROGMEM_I1 = ISTR(">Cancel");////c=9
|
||||
const char MSG_CALIBRATE_Z_AUTO[] PROGMEM_I1 = ISTR("Calibrating Z"); ////c=20 r=2
|
||||
const char MSG_CARD_MENU[] PROGMEM_I1 = ISTR("Print from SD"); ////c=18
|
||||
const char MSG_CHECKING_X[] PROGMEM_I1 = ISTR("Checking X axis"); ////c=20
|
||||
const char MSG_CHECKING_Y[] PROGMEM_I1 = ISTR("Checking Y axis"); ////c=20
|
||||
const char MSG_COMMUNITY_MADE[] PROGMEM_I1 = ISTR("Community made"); ////c=18
|
||||
const char MSG_CONFIRM_NOZZLE_CLEAN[] PROGMEM_I1 = ISTR("Please clean the nozzle for calibration. Click when done."); ////c=20 r=8
|
||||
const char MSG_COOLDOWN[] PROGMEM_I1 = ISTR("Cooldown"); ////c=18
|
||||
const char MSG_CRASH[] PROGMEM_I1 = ISTR("Crash"); ////c=7
|
||||
const char MSG_CRASH_DETECTED[] PROGMEM_I1 = ISTR("Crash detected."); ////c=20
|
||||
const char MSG_CRASHDETECT[] PROGMEM_I1 = ISTR("Crash det."); ////c=13
|
||||
const char MSG_ERROR[] PROGMEM_I1 = ISTR("ERROR:"); ////c=10
|
||||
const char MSG_EXTRUDER[] PROGMEM_I1 = ISTR("Extruder"); ////c=17
|
||||
const char MSG_FANS_CHECK[] PROGMEM_I1 = ISTR("Fans check"); ////c=13
|
||||
const char MSG_FIL_RUNOUTS[] PROGMEM_I1 = ISTR("Fil. runouts"); ////c=15
|
||||
const char MSG_FILAMENT[] PROGMEM_I1 = ISTR("Filament"); ////c=17
|
||||
const char MSG_FAN_SPEED[] PROGMEM_I1 = ISTR("Fan speed"); ////c=14
|
||||
const char MSG_FILAMENT_CLEAN[] PROGMEM_I1 = ISTR("Filament extruding & with correct color?"); ////c=20 r=2
|
||||
const char MSG_FILAMENT_LOADED[] PROGMEM_I1 = ISTR("Is filament loaded?"); ////c=20 r=2
|
||||
const char MSG_FILAMENT_LOADING_T0[] PROGMEM_I1 = ISTR("Insert filament into extruder 1. Click when done."); ////c=20 r=4
|
||||
const char MSG_FILAMENT_LOADING_T1[] PROGMEM_I1 = ISTR("Insert filament into extruder 2. Click when done."); ////c=20 r=4
|
||||
const char MSG_FILAMENT_LOADING_T2[] PROGMEM_I1 = ISTR("Insert filament into extruder 3. Click when done."); ////c=20 r=4
|
||||
const char MSG_FILAMENT_LOADING_T3[] PROGMEM_I1 = ISTR("Insert filament into extruder 4. Click when done."); ////c=20 r=4
|
||||
const char MSG_FILAMENTCHANGE[] PROGMEM_I1 = ISTR("Change filament"); ////c=18
|
||||
const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1[] PROGMEM_I1 = ISTR("Searching bed calibration point"); ////c=20 r=3
|
||||
const char MSG_FINISHING_MOVEMENTS[] PROGMEM_I1 = ISTR("Finishing movements"); ////c=20
|
||||
const char MSG_FOLLOW_CALIBRATION_FLOW[] PROGMEM_I1 = ISTR("Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."); ////c=20 r=8
|
||||
const char MSG_FOLLOW_Z_CALIBRATION_FLOW[] PROGMEM_I1 = ISTR("There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."); ////c=20 r=9
|
||||
const char MSG_FSENSOR_AUTOLOAD[] PROGMEM_I1 = ISTR("F. autoload"); ////c=13
|
||||
const char MSG_FSENSOR[] PROGMEM_I1 = ISTR("Fil. sensor"); ////c=12
|
||||
const char MSG_HEATING[] PROGMEM_I1 = ISTR("Heating"); ////c=20
|
||||
const char MSG_HEATING_COMPLETE[] PROGMEM_I1 = ISTR("Heating done."); ////c=20
|
||||
const char MSG_HOMEYZ[] PROGMEM_I1 = ISTR("Calibrate Z"); ////c=18
|
||||
const char MSG_ITERATION[] PROGMEM_I1 = ISTR("Iteration"); ////c=12
|
||||
const char MSG_CHOOSE_EXTRUDER[] PROGMEM_I1 = ISTR("Choose extruder:"); ////c=20
|
||||
const char MSG_CHOOSE_FILAMENT[] PROGMEM_I1 = ISTR("Choose filament:"); ////c=20
|
||||
const char MSG_LAST_PRINT[] PROGMEM_I1 = ISTR("Last print"); ////c=18
|
||||
const char MSG_LAST_PRINT_FAILURES[] PROGMEM_I1 = ISTR("Last print failures"); ////c=20
|
||||
const char MSG_LOAD_FILAMENT[] PROGMEM_I1 = ISTR("Load filament"); //// Number 1 to 5 is added behind text e.g. "Load filament 1" c=16
|
||||
const char MSG_LOADING_FILAMENT[] PROGMEM_I1 = ISTR("Loading filament"); ////c=20
|
||||
const char MSG_EJECT_FILAMENT[] PROGMEM_I1 = ISTR("Eject filament"); //// Number 1 to 5 is added behind text e.g. "Eject filament 1" c=16
|
||||
const char MSG_CUT_FILAMENT[] PROGMEM_I1 = ISTR("Cut filament"); //// Number 1 to 5 is added behind text e.g. "Cut filament 1" c=16
|
||||
const char MSG_M117_V2_CALIBRATION[] PROGMEM_I1 = ISTR("M117 First layer cal."); ////c=25
|
||||
const char MSG_MAIN[] PROGMEM_I1 = ISTR("Main"); ////c=18
|
||||
const char MSG_BACK[] PROGMEM_I1 = ISTR("Back"); ////c=18
|
||||
const char MSG_SHEET[] PROGMEM_I1 = ISTR("Sheet"); ////c=10
|
||||
const char MSG_STEEL_SHEETS[] PROGMEM_I1 = ISTR("Steel sheets"); ////c=18
|
||||
const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1[] PROGMEM_I1 = ISTR("Measuring reference height of calibration point"); ////c=20 r=3
|
||||
const char MSG_MENU_CALIBRATION[] PROGMEM_I1 = ISTR("Calibration"); ////c=18
|
||||
const char MSG_MMU_FAILS[] PROGMEM_I1 = ISTR("MMU fails"); ////c=15
|
||||
const char MSG_MMU_LOAD_FAILS[] PROGMEM_I1 = ISTR("MMU load fails"); ////c=15
|
||||
const char MSG_NO[] PROGMEM_I1 = ISTR("No"); ////c=4
|
||||
const char MSG_NOZZLE[] PROGMEM_I1 = ISTR("Nozzle"); ////c=12
|
||||
const char MSG_PAPER[] PROGMEM_I1 = ISTR("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."); ////c=20 r=10
|
||||
const char MSG_PAUSE_PRINT[] PROGMEM_I1 = ISTR("Pause print");////c=18
|
||||
const char MSG_PLACE_STEEL_SHEET[] PROGMEM_I1 = ISTR("Please place steel sheet on heatbed."); ////c=20 r=5
|
||||
const char MSG_PLEASE_WAIT[] PROGMEM_I1 = ISTR("Please wait"); ////c=20
|
||||
const char MSG_POWER_FAILURES[] PROGMEM_I1 = ISTR("Power failures"); ////c=15
|
||||
const char MSG_PREHEAT_NOZZLE[] PROGMEM_I1 = ISTR("Preheat the nozzle!"); ////c=20
|
||||
const char MSG_PRESS_TO_UNLOAD[] PROGMEM_I1 = ISTR("Please press the knob to unload filament"); ////c=20 r=4
|
||||
const char MSG_PRINT_ABORTED[] PROGMEM_I1 = ISTR("Print aborted"); ////c=20
|
||||
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("\x04Refresh"); ////c=18
|
||||
const char MSG_REMOVE_STEEL_SHEET[] PROGMEM_I1 = ISTR("Please remove steel sheet from heatbed."); ////c=20 r=4
|
||||
const char MSG_RESET[] PROGMEM_I1 = ISTR("Reset"); ////c=14
|
||||
const char MSG_RESUME_PRINT[] PROGMEM_I1 = ISTR("Resume print"); ////c=18
|
||||
const char MSG_RESUMING_PRINT[] PROGMEM_I1 = ISTR("Resuming print"); ////c=20
|
||||
const char MSG_SELFTEST_COOLING_FAN[] PROGMEM_I1 = ISTR("Front print fan?"); ////c=20
|
||||
const char MSG_SELFTEST_EXTRUDER_FAN[] PROGMEM_I1 = ISTR("Left hotend fan?"); ////c=20
|
||||
const char MSG_SELFTEST_FAILED[] PROGMEM_I1 = ISTR("Selftest failed"); ////c=20
|
||||
const char MSG_SELFTEST_FAN[] PROGMEM_I1 = ISTR("Fan test"); ////c=20
|
||||
const char MSG_SELFTEST_FAN_NO[] PROGMEM_I1 = ISTR("Not spinning"); ////c=19
|
||||
const char MSG_SELFTEST_FAN_YES[] PROGMEM_I1 = ISTR("Spinning"); ////c=19
|
||||
const char MSG_SELFTEST_CHECK_BED[] PROGMEM_I1 = ISTR("Checking bed"); ////c=20
|
||||
const char MSG_SELFTEST_CHECK_FSENSOR[] PROGMEM_I1 = ISTR("Checking sensors"); ////c=20
|
||||
const char MSG_SELFTEST_MOTOR[] PROGMEM_I1 = ISTR("Motor"); ////c=18
|
||||
const char MSG_SELFTEST_FILAMENT_SENSOR[] PROGMEM_I1 = ISTR("Filament sensor"); ////c=17
|
||||
const char MSG_SELFTEST_WIRINGERROR[] PROGMEM_I1 = ISTR("Wiring error"); ////c=18
|
||||
const char MSG_SETTINGS[] PROGMEM_I1 = ISTR("Settings"); ////c=18
|
||||
const char MSG_TOTAL[] PROGMEM_I1 = ISTR("Total"); ////c=6
|
||||
const char MSG_TOTAL_FAILURES[] PROGMEM_I1 = ISTR("Total failures"); ////c=20
|
||||
const char MSG_HW_SETUP[] PROGMEM_I1 = ISTR("HW Setup"); ////c=18
|
||||
const char MSG_MODE[] PROGMEM_I1 = ISTR("Mode"); ////c=6
|
||||
const char MSG_HIGH_POWER[] PROGMEM_I1 = ISTR("High power"); ////c=10
|
||||
const char MSG_AUTO_POWER[] PROGMEM_I1 = ISTR("Auto power"); ////c=10
|
||||
const char MSG_SILENT[] PROGMEM_I1 = ISTR("Silent"); ////c=7
|
||||
const char MSG_NORMAL[] PROGMEM_I1 = ISTR("Normal"); ////c=7
|
||||
const char MSG_STEALTH[] PROGMEM_I1 = ISTR("Stealth"); ////c=7
|
||||
const char MSG_STEEL_SHEET_CHECK[] PROGMEM_I1 = ISTR("Is steel sheet on heatbed?"); ////c=20 r=2
|
||||
const char MSG_STOP_PRINT[] PROGMEM_I1 = ISTR("Stop print"); ////c=18
|
||||
const char MSG_STOPPED[] PROGMEM_I1 = ISTR("STOPPED."); ////c=20
|
||||
const char MSG_TEMP_CALIBRATION[] PROGMEM_I1 = ISTR("Temp. cal."); ////c=14
|
||||
const char MSG_TEMP_CALIBRATION_DONE[] PROGMEM_I1 = ISTR("Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."); ////c=20 r=12
|
||||
const char MSG_UNLOAD_FILAMENT[] PROGMEM_I1 = ISTR("Unload filament"); ////Number 1 to 5 is added behind text e.g. "Unload filament" c=16
|
||||
const char MSG_UNLOADING_FILAMENT[] PROGMEM_I1 = ISTR("Unloading filament"); ////c=20
|
||||
const char MSG_WATCH[] PROGMEM_I1 = ISTR("Info screen"); ////c=18
|
||||
const char MSG_WIZARD_CALIBRATION_FAILED[] PROGMEM_I1 = ISTR("Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."); ////c=20 r=8
|
||||
const char MSG_WIZARD_DONE[] PROGMEM_I1 = ISTR("All is done. Happy printing!"); ////c=20 r=8
|
||||
const char MSG_WIZARD_HEATING[] PROGMEM_I1 = ISTR("Preheating nozzle. Please wait."); ////c=20 r=3
|
||||
const char MSG_WIZARD_QUIT[] PROGMEM_I1 = ISTR("You can always resume the Wizard from Calibration -> Wizard."); ////c=20 r=8
|
||||
const char MSG_WIZARD_WELCOME[] PROGMEM_I1 = ISTR("Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"); //// c=20 r=7
|
||||
const char MSG_WIZARD_WELCOME_SHIPPING[] PROGMEM_I1 = ISTR("Hi, I am your Original Prusa i3 printer. I will guide you through a short setup process, in which the Z-axis will be calibrated. Then, you will be ready to print."); ////c=20 r=16
|
||||
const char MSG_YES[] PROGMEM_I1 = ISTR("Yes"); ////c=3
|
||||
const char MSG_V2_CALIBRATION[] PROGMEM_I1 = ISTR("First layer cal."); ////c=18
|
||||
const char MSG_OFF[] PROGMEM_I1 = ISTR("Off"); ////c=3
|
||||
const char MSG_ON[] PROGMEM_I1 = ISTR("On"); ////c=3
|
||||
const char MSG_NA[] PROGMEM_I1 = ISTR("N/A"); ////c=3
|
||||
const char MSG_CUTTER[] PROGMEM_I1 = ISTR("Cutter"); ////c=9
|
||||
const char MSG_NONE[] PROGMEM_I1 = ISTR("None"); ////c=8
|
||||
const char MSG_WARN[] PROGMEM_I1 = ISTR("Warn"); ////c=8
|
||||
const char MSG_STRICT[] PROGMEM_I1 = ISTR("Strict"); ////c=8
|
||||
const char MSG_MODEL[] PROGMEM_I1 = ISTR("Model"); ////c=8
|
||||
const char MSG_GCODE[] PROGMEM_I1 = ISTR("Gcode"); ////c=8
|
||||
const char MSG_GCODE_DIFF_PRINTER_CONTINUE[] PROGMEM_I1 = ISTR("G-code sliced for a different printer type. Continue?"); ////c=20 r=5
|
||||
const char MSG_GCODE_DIFF_PRINTER_CANCELLED[] PROGMEM_I1 =ISTR("G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."); ////c=20 r=8
|
||||
const char MSG_NOZZLE_DIAMETER[] PROGMEM_I1 = ISTR("Nozzle d."); ////c=10
|
||||
const char MSG_MMU_MODE[] PROGMEM_I1 = ISTR("MMU Mode"); ////c=8
|
||||
const char MSG_SD_CARD[] PROGMEM_I1 = ISTR("SD card"); ////c=8
|
||||
const char MSG_SORT[] PROGMEM_I1 = ISTR("Sort"); ////c=7
|
||||
const char MSG_SORT_TIME[] PROGMEM_I1 = ISTR("Time"); ////c=8
|
||||
const char MSG_SORT_ALPHA[] PROGMEM_I1 = ISTR("Alphabet"); ////c=8
|
||||
const char MSG_RPI_PORT[] PROGMEM_I1 = ISTR("RPi port"); ////c=13
|
||||
const char MSG_SOUND[] PROGMEM_I1 = ISTR("Sound"); ////c=9
|
||||
const char MSG_SOUND_LOUD[] PROGMEM_I1 = ISTR("Loud"); ////c=7
|
||||
const char MSG_SOUND_ONCE[] PROGMEM_I1 = ISTR("Once"); ////c=7
|
||||
const char MSG_SOUND_BLIND[] PROGMEM_I1 = ISTR("Assist"); ////c=7
|
||||
const char MSG_MESH[] PROGMEM_I1 = ISTR("Mesh"); ////c=12
|
||||
const char MSG_MESH_BED_LEVELING[] PROGMEM_I1 = ISTR("Mesh Bed Leveling"); ////c=18
|
||||
const char MSG_Z_PROBE_NR[] PROGMEM_I1 = ISTR("Z-probe nr."); ////c=14
|
||||
const char MSG_MAGNETS_COMP[] PROGMEM_I1 = ISTR("Magnets comp."); ////c=13
|
||||
const char MSG_FS_ACTION[] PROGMEM_I1 = ISTR("FS Action"); ////c=10
|
||||
const char MSG_FS_CONTINUE[] PROGMEM_I1 = ISTR("Cont."); ////c=5
|
||||
const char MSG_FS_PAUSE[] PROGMEM_I1 = ISTR("Pause"); ////c=5
|
||||
const char MSG_BRIGHTNESS[] PROGMEM_I1 = ISTR("Brightness"); ////c=18
|
||||
const char MSG_BL_HIGH[] PROGMEM_I1 = ISTR("Level Bright"); ////c=12
|
||||
const char MSG_BL_LOW[] PROGMEM_I1 = ISTR("Level Dimmed"); ////c=12
|
||||
const char MSG_TIMEOUT[] PROGMEM_I1 = ISTR("Timeout"); ////c=12
|
||||
const char MSG_BRIGHT[] PROGMEM_I1 = ISTR("Bright"); ////c=6
|
||||
const char MSG_DIM[] PROGMEM_I1 = ISTR("Dim"); ////c=6
|
||||
const char MSG_AUTO[] PROGMEM_I1 = ISTR("Auto"); ////c=6
|
||||
const char MSG_AUTO_HOME[] PROGMEM_I1 = ISTR("Auto home"); ////MSG_AUTO_HOMEc=18
|
||||
const char MSG_BABYSTEP_Z[] PROGMEM_I1 = ISTR("Live adjust Z"); ////MSG_BABYSTEP_Z c=18
|
||||
const char MSG_BABYSTEP_Z_NOT_SET[] PROGMEM_I1 = ISTR("Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."); ////MSG_BABYSTEP_Z_NOT_SET c=20 r=12
|
||||
const char MSG_BED[] PROGMEM_I1 = ISTR("Bed"); ////MSG_BED c=13
|
||||
const char MSG_BED_DONE[] PROGMEM_I1 = ISTR("Bed done"); ////MSG_BED_DONE c=20
|
||||
const char MSG_BED_HEATING[] PROGMEM_I1 = ISTR("Bed Heating"); ////MSG_BED_HEATING c=20
|
||||
const char MSG_BED_LEVELING_FAILED_POINT_LOW[] PROGMEM_I1 = ISTR("Bed leveling failed. Sensor didn't trigger. Debris on nozzle? Waiting for reset."); ////MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=6
|
||||
const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED[] PROGMEM_I1 = ISTR("XYZ calibration failed. Please consult the manual."); ////MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
|
||||
const char MSG_BELT_STATUS[] PROGMEM_I1 = ISTR("Belt status");////MSG_BELT_STATUS c=18
|
||||
const char MSG_CANCEL[] PROGMEM_I1 = ISTR(">Cancel");////MSG_CANCEL c=9
|
||||
const char MSG_CALIBRATE_Z_AUTO[] PROGMEM_I1 = ISTR("Calibrating Z"); ////MSG_CALIBRATE_Z_AUTO c=20 r=2
|
||||
const char MSG_CARD_MENU[] PROGMEM_I1 = ISTR("Print from SD"); ////MSG_CARD_MENU c=18
|
||||
const char MSG_CHECKING_X[] PROGMEM_I1 = ISTR("Checking X axis"); ////MSG_CHECKING_X c=20
|
||||
const char MSG_CHECKING_Y[] PROGMEM_I1 = ISTR("Checking Y axis"); ////MSG_CHECKING_Y c=20
|
||||
const char MSG_COMMUNITY_MADE[] PROGMEM_I1 = ISTR("Community made"); ////MSG_COMMUNITY_MADE c=18
|
||||
const char MSG_CONFIRM_NOZZLE_CLEAN[] PROGMEM_I1 = ISTR("Please clean the nozzle for calibration. Click when done."); ////MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
|
||||
const char MSG_COOLDOWN[] PROGMEM_I1 = ISTR("Cooldown"); ////MSG_COOLDOWN c=18
|
||||
const char MSG_CRASH[] PROGMEM_I1 = ISTR("Crash"); ////MSG_CRASH c=7
|
||||
const char MSG_CRASH_DETECTED[] PROGMEM_I1 = ISTR("Crash detected."); ////MSG_CRASH_DETECTED c=20
|
||||
const char MSG_CRASHDETECT[] PROGMEM_I1 = ISTR("Crash det."); ////MSG_CRASHDETECT c=13
|
||||
const char MSG_ERROR[] PROGMEM_I1 = ISTR("ERROR:"); ////MSG_ERROR c=10
|
||||
const char MSG_EXTRUDER[] PROGMEM_I1 = ISTR("Extruder"); ////MSG_EXTRUDER c=17
|
||||
const char MSG_FANS_CHECK[] PROGMEM_I1 = ISTR("Fans check"); ////MSG_FANS_CHECK c=13
|
||||
const char MSG_FIL_RUNOUTS[] PROGMEM_I1 = ISTR("Fil. runouts"); ////MSG_FIL_RUNOUTS c=15
|
||||
const char MSG_FILAMENT[] PROGMEM_I1 = ISTR("Filament"); ////MSG_FILAMENT c=17
|
||||
const char MSG_FAN_SPEED[] PROGMEM_I1 = ISTR("Fan speed"); ////MSG_FAN_SPEED c=14
|
||||
const char MSG_EXTRUDER_FAN_SPEED[] PROGMEM_I1 = ISTR("Extruder fan:");////MSG_EXTRUDER_FAN_SPEED c=16
|
||||
const char MSG_PRINT_FAN_SPEED[] PROGMEM_I1 = ISTR("Print fan:"); ////MSG_PRINT_FAN_SPEED c=16
|
||||
const char MSG_FILAMENT_CLEAN[] PROGMEM_I1 = ISTR("Filament extruding & with correct color?"); ////MSG_FILAMENT_CLEAN c=20 r=2
|
||||
const char MSG_FILAMENT_LOADED[] PROGMEM_I1 = ISTR("Is filament loaded?"); ////MSG_FILAMENT_LOADED c=20 r=2
|
||||
const char MSG_FILAMENT_LOADING_T0[] PROGMEM_I1 = ISTR("Insert filament into extruder 1. Click when done."); ////MSG_FILAMENT_LOADING_T0 c=20 r=4
|
||||
const char MSG_FILAMENT_LOADING_T1[] PROGMEM_I1 = ISTR("Insert filament into extruder 2. Click when done."); ////MSG_FILAMENT_LOADING_T1 c=20 r=4
|
||||
const char MSG_FILAMENT_LOADING_T2[] PROGMEM_I1 = ISTR("Insert filament into extruder 3. Click when done."); ////MSG_FILAMENT_LOADING_T2 c=20 r=4
|
||||
const char MSG_FILAMENT_LOADING_T3[] PROGMEM_I1 = ISTR("Insert filament into extruder 4. Click when done."); ////MSG_FILAMENT_LOADING_T3 c=20 r=4
|
||||
const char MSG_FILAMENTCHANGE[] PROGMEM_I1 = ISTR("Change filament"); ////MSG_FILAMENTCHANGE c=18
|
||||
const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1[] PROGMEM_I1 = ISTR("Searching bed calibration point"); ////MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=20 r=3
|
||||
const char MSG_FINISHING_MOVEMENTS[] PROGMEM_I1 = ISTR("Finishing movements"); ////MSG_FINISHING_MOVEMENTS c=20
|
||||
const char MSG_FOLLOW_CALIBRATION_FLOW[] PROGMEM_I1 = ISTR("Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."); ////MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
|
||||
const char MSG_FOLLOW_Z_CALIBRATION_FLOW[] PROGMEM_I1 = ISTR("There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."); ////MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
|
||||
const char MSG_FSENSOR_AUTOLOAD[] PROGMEM_I1 = ISTR("F. autoload"); ////MSG_FSENSOR_AUTOLOAD c=13
|
||||
const char MSG_FSENSOR[] PROGMEM_I1 = ISTR("Fil. sensor"); ////MSG_FSENSOR c=12
|
||||
const char MSG_HEATING[] PROGMEM_I1 = ISTR("Heating"); ////MSG_HEATING c=20
|
||||
const char MSG_HEATING_COMPLETE[] PROGMEM_I1 = ISTR("Heating done."); ////MSG_HEATING_COMPLETE c=20
|
||||
const char MSG_HOMEYZ[] PROGMEM_I1 = ISTR("Calibrate Z"); ////MSG_HOMEYZ c=18
|
||||
const char MSG_ITERATION[] PROGMEM_I1 = ISTR("Iteration"); ////MSG_ITERATION c=12
|
||||
const char MSG_SELECT_EXTRUDER[] PROGMEM_I1 = ISTR("Select extruder:"); ////MSG_SELECT_EXTRUDER c=20
|
||||
const char MSG_SELECT_FILAMENT[] PROGMEM_I1 = ISTR("Select filament:"); ////MSG_SELECT_FILAMENT c=20
|
||||
const char MSG_LAST_PRINT[] PROGMEM_I1 = ISTR("Last print"); ////MSG_LAST_PRINT c=18
|
||||
const char MSG_LAST_PRINT_FAILURES[] PROGMEM_I1 = ISTR("Last print failures"); ////MSG_LAST_PRINT_FAILURES c=20
|
||||
const char MSG_LOAD_FILAMENT[] PROGMEM_I1 = ISTR("Load filament"); ////MSG_LOAD_FILAMENT c=17
|
||||
const char MSG_LOADING_FILAMENT[] PROGMEM_I1 = ISTR("Loading filament"); ////MSG_LOADING_FILAMENT c=20
|
||||
const char MSG_EJECT_FILAMENT[] PROGMEM_I1 = ISTR("Eject filament"); ////MSG_EJECT_FILAMENT c=17
|
||||
const char MSG_CUT_FILAMENT[] PROGMEM_I1 = ISTR("Cut filament"); ////MSG_CUT_FILAMENT c=17
|
||||
const char MSG_M117_V2_CALIBRATION[] PROGMEM_I1 = ISTR("M117 First layer cal."); ////MSG_M117_V2_CALIBRATION c=25
|
||||
const char MSG_MAIN[] PROGMEM_I1 = ISTR("Main"); ////MSG_MAIN c=18
|
||||
const char MSG_BACK[] PROGMEM_I1 = ISTR("Back"); ////MSG_BACK c=18
|
||||
const char MSG_SHEET[] PROGMEM_I1 = ISTR("Sheet"); ////MSG_SHEET c=10
|
||||
const char MSG_STEEL_SHEETS[] PROGMEM_I1 = ISTR("Steel sheets"); ////MSG_STEEL_SHEETS c=18
|
||||
const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1[] PROGMEM_I1 = ISTR("Measuring reference height of calibration point"); ////MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=20 r=3
|
||||
const char MSG_CALIBRATION[] PROGMEM_I1 = ISTR("Calibration"); ////MSG_CALIBRATION c=18
|
||||
const char MSG_MMU_FAILS[] PROGMEM_I1 = ISTR("MMU fails"); ////MSG_MMU_FAILS c=15
|
||||
const char MSG_MMU_LOAD_FAILS[] PROGMEM_I1 = ISTR("MMU load fails"); ////MSG_MMU_LOAD_FAILS c=15
|
||||
const char MSG_NO[] PROGMEM_I1 = ISTR("No"); ////MSG_NO c=4
|
||||
const char MSG_NOZZLE[] PROGMEM_I1 = ISTR("Nozzle"); ////MSG_NOZZLE c=10
|
||||
const char MSG_PAPER[] PROGMEM_I1 = ISTR("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."); ////MSG_PAPER c=20 r=10
|
||||
const char MSG_PAUSE_PRINT[] PROGMEM_I1 = ISTR("Pause print");////MSG_PAUSE_PRINT c=18
|
||||
const char MSG_PLACE_STEEL_SHEET[] PROGMEM_I1 = ISTR("Please place steel sheet on heatbed."); ////MSG_PLACE_STEEL_SHEET c=20 r=5
|
||||
const char MSG_PLEASE_WAIT[] PROGMEM_I1 = ISTR("Please wait"); ////MSG_PLEASE_WAIT c=20
|
||||
const char MSG_POWER_FAILURES[] PROGMEM_I1 = ISTR("Power failures"); ////MSG_POWER_FAILURES c=15
|
||||
const char MSG_PREHEAT_NOZZLE[] PROGMEM_I1 = ISTR("Preheat the nozzle!"); ////MSG_PREHEAT_NOZZLE c=20
|
||||
const char MSG_PRESS_TO_UNLOAD[] PROGMEM_I1 = ISTR("Please press the knob to unload filament"); ////MSG_PRESS_TO_UNLOAD c=20 r=4
|
||||
const char MSG_PRINT_ABORTED[] PROGMEM_I1 = ISTR("Print aborted"); ////MSG_PRINT_ABORTED c=20
|
||||
const char MSG_PULL_OUT_FILAMENT[] PROGMEM_I1 = ISTR("Please pull out filament immediately"); ////MSG_PULL_OUT_FILAMENT c=20 r=4
|
||||
const char MSG_RECOVER_PRINT[] PROGMEM_I1 = ISTR("Blackout occurred. Recover print?"); ////MSG_RECOVER_PRINT c=20 r=2
|
||||
const char MSG_REFRESH[] PROGMEM_I1 = ISTR("\x04Refresh"); ////MSG_REFRESH c=18
|
||||
const char MSG_REMOVE_STEEL_SHEET[] PROGMEM_I1 = ISTR("Please remove steel sheet from heatbed."); ////MSG_REMOVE_STEEL_SHEET c=20 r=4
|
||||
const char MSG_RESET[] PROGMEM_I1 = ISTR("Reset"); ////MSG_RESET c=14
|
||||
const char MSG_RESUME_PRINT[] PROGMEM_I1 = ISTR("Resume print"); ////MSG_RESUME_PRINT c=18
|
||||
const char MSG_RESUMING_PRINT[] PROGMEM_I1 = ISTR("Resuming print"); ////MSG_RESUMING_PRINT c=20
|
||||
const char MSG_SELFTEST_PART_FAN[] PROGMEM_I1 = ISTR("Front print fan?"); ////MSG_SELFTEST_PART_FAN c=20
|
||||
const char MSG_SELFTEST_EXTRUDER_FAN[] PROGMEM_I1 = ISTR("Left hotend fan?"); ////MSG_SELFTEST_EXTRUDER_FAN c=20
|
||||
const char MSG_SELFTEST_FAILED[] PROGMEM_I1 = ISTR("Selftest failed"); ////MSG_SELFTEST_FAILED c=20
|
||||
const char MSG_SELFTEST_FAN[] PROGMEM_I1 = ISTR("Fan test"); ////MSG_SELFTEST_FAN c=20
|
||||
const char MSG_SELFTEST_FAN_NO[] PROGMEM_I1 = ISTR("Not spinning"); ////MSG_SELFTEST_FAN_NO c=19
|
||||
const char MSG_SELFTEST_FAN_YES[] PROGMEM_I1 = ISTR("Spinning"); ////MSG_SELFTEST_FAN_YES c=19
|
||||
const char MSG_SELFTEST_CHECK_BED[] PROGMEM_I1 = ISTR("Checking bed"); ////MSG_SELFTEST_CHECK_BED c=20
|
||||
const char MSG_SELFTEST_CHECK_FSENSOR[] PROGMEM_I1 = ISTR("Checking sensors"); ////MSG_SELFTEST_CHECK_FSENSOR c=20
|
||||
const char MSG_SELFTEST_MOTOR[] PROGMEM_I1 = ISTR("Motor"); ////MSG_SELFTEST_MOTOR c=18
|
||||
const char MSG_SELFTEST_FILAMENT_SENSOR[] PROGMEM_I1 = ISTR("Filament sensor"); ////MSG_SELFTEST_FILAMENT_SENSOR c=17
|
||||
const char MSG_SELFTEST_WIRINGERROR[] PROGMEM_I1 = ISTR("Wiring error"); ////MSG_SELFTEST_WIRINGERROR c=18
|
||||
const char MSG_SETTINGS[] PROGMEM_I1 = ISTR("Settings"); ////MSG_SETTINGS c=18
|
||||
const char MSG_TOTAL[] PROGMEM_I1 = ISTR("Total"); ////MSG_TOTAL c=6
|
||||
const char MSG_TOTAL_FAILURES[] PROGMEM_I1 = ISTR("Total failures"); ////MSG_TOTAL_FAILURES c=20
|
||||
const char MSG_HW_SETUP[] PROGMEM_I1 = ISTR("HW Setup"); ////MSG_HW_SETUP c=18
|
||||
const char MSG_MODE[] PROGMEM_I1 = ISTR("Mode"); ////MSG_MODE c=6
|
||||
const char MSG_HIGH_POWER[] PROGMEM_I1 = ISTR("High power"); ////MSG_HIGH_POWER c=10
|
||||
const char MSG_AUTO_POWER[] PROGMEM_I1 = ISTR("Auto power"); ////MSG_AUTO_POWER c=10
|
||||
const char MSG_SILENT[] PROGMEM_I1 = ISTR("Silent"); ////MSG_SILENT c=7
|
||||
const char MSG_NORMAL[] PROGMEM_I1 = ISTR("Normal"); ////MSG_NORMAL c=7
|
||||
const char MSG_STEALTH[] PROGMEM_I1 = ISTR("Stealth"); ////MSG_STEALTH c=7
|
||||
const char MSG_STEEL_SHEET_CHECK[] PROGMEM_I1 = ISTR("Is steel sheet on heatbed?"); ////MSG_STEEL_SHEET_CHECK c=20 r=2
|
||||
const char MSG_STOP_PRINT[] PROGMEM_I1 = ISTR("Stop print"); ////MSG_STOP_PRINT c=18
|
||||
const char MSG_STOPPED[] PROGMEM_I1 = ISTR("STOPPED."); ////MSG_STOPPED c=20
|
||||
const char MSG_PINDA_CALIBRATION[] PROGMEM_I1 = ISTR("PINDA cal."); ////MSG_PINDA_CALIBRATION c=13
|
||||
const char MSG_PINDA_CALIBRATION_DONE[] PROGMEM_I1 = ISTR("PINDA calibration is finished and active. It can be disabled in menu Settings->PINDA cal."); ////MSG_PINDA_CALIBRATION_DONE c=20 r=8
|
||||
const char MSG_UNLOAD_FILAMENT[] PROGMEM_I1 = ISTR("Unload filament"); ////MSG_UNLOAD_FILAMENT c=18
|
||||
const char MSG_UNLOADING_FILAMENT[] PROGMEM_I1 = ISTR("Unloading filament"); ////MSG_UNLOADING_FILAMENT c=20
|
||||
const char MSG_INFO_SCREEN[] PROGMEM_I1 = ISTR("Info screen"); ////MSG_INFO_SCREEN c=18
|
||||
const char MSG_WIZARD_CALIBRATION_FAILED[] PROGMEM_I1 = ISTR("Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."); ////MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
|
||||
const char MSG_WIZARD_DONE[] PROGMEM_I1 = ISTR("All is done. Happy printing!"); ////MSG_WIZARD_DONE c=20 r=3
|
||||
const char MSG_WIZARD_HEATING[] PROGMEM_I1 = ISTR("Preheating nozzle. Please wait."); ////MSG_WIZARD_HEATING c=20 r=3
|
||||
const char MSG_WIZARD_QUIT[] PROGMEM_I1 = ISTR("You can always resume the Wizard from Calibration -> Wizard."); ////MSG_WIZARD_QUIT c=20 r=8
|
||||
const char MSG_WIZARD_WELCOME[] PROGMEM_I1 = ISTR("Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"); ////MSG_WIZARD_WELCOME c=20 r=7
|
||||
const char MSG_WIZARD_WELCOME_SHIPPING[] PROGMEM_I1 = ISTR("Hi, I am your Original Prusa i3 printer. I will guide you through a short setup process, in which the Z-axis will be calibrated. Then, you will be ready to print."); ////MSG_WIZARD_WELCOME_SHIPPING c=20 r=16
|
||||
const char MSG_YES[] PROGMEM_I1 = ISTR("Yes"); ////MSG_YES c=4
|
||||
const char MSG_V2_CALIBRATION[] PROGMEM_I1 = ISTR("First layer cal."); ////MSG_V2_CALIBRATION c=18
|
||||
const char MSG_OFF[] PROGMEM_I1 = ISTR("Off"); ////MSG_OFF c=3
|
||||
const char MSG_ON[] PROGMEM_I1 = ISTR("On"); ////MSG_ON c=3
|
||||
const char MSG_NA[] PROGMEM_I1 = ISTR("N/A"); ////MSG_NA c=3
|
||||
const char MSG_CUTTER[] PROGMEM_I1 = ISTR("Cutter"); ////MSG_CUTTER c=9
|
||||
const char MSG_NONE[] PROGMEM_I1 = ISTR("None"); ////MSG_NONE c=8
|
||||
const char MSG_WARN[] PROGMEM_I1 = ISTR("Warn"); ////MSG_WARN c=8
|
||||
const char MSG_STRICT[] PROGMEM_I1 = ISTR("Strict"); ////MSG_STRICT c=8
|
||||
const char MSG_MODEL[] PROGMEM_I1 = ISTR("Model"); ////MSG_MODEL c=8
|
||||
const char MSG_GCODE[] PROGMEM_I1 = ISTR("Gcode"); ////MSG_GCODE c=8
|
||||
const char MSG_GCODE_DIFF_PRINTER_CONTINUE[] PROGMEM_I1 = ISTR("G-code sliced for a different printer type. Continue?"); ////MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5
|
||||
const char MSG_GCODE_DIFF_PRINTER_CANCELLED[] PROGMEM_I1 =ISTR("G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."); ////MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=8
|
||||
const char MSG_NOZZLE_DIAMETER[] PROGMEM_I1 = ISTR("Nozzle d."); ////MSG_NOZZLE_DIAMETER c=10
|
||||
const char MSG_MMU_MODE[] PROGMEM_I1 = ISTR("MMU Mode"); ////MSG_MMU_MODE c=8
|
||||
const char MSG_SD_CARD[] PROGMEM_I1 = ISTR("SD card"); ////MSG_SD_CARD c=8
|
||||
const char MSG_SORT[] PROGMEM_I1 = ISTR("Sort"); ////MSG_SORT c=7
|
||||
const char MSG_SORT_TIME[] PROGMEM_I1 = ISTR("Time"); ////MSG_SORT_TIME c=8
|
||||
const char MSG_SORT_ALPHA[] PROGMEM_I1 = ISTR("Alphabet"); ////MSG_SORT_ALPHA c=8
|
||||
const char MSG_RPI_PORT[] PROGMEM_I1 = ISTR("RPi port"); ////MSG_RPI_PORT c=13
|
||||
const char MSG_SOUND[] PROGMEM_I1 = ISTR("Sound"); ////MSG_SOUND c=9
|
||||
const char MSG_SOUND_LOUD[] PROGMEM_I1 = ISTR("Loud"); ////MSG_SOUND_LOUD c=7
|
||||
const char MSG_SOUND_ONCE[] PROGMEM_I1 = ISTR("Once"); ////MSG_SOUND_ONCE c=7
|
||||
const char MSG_SOUND_BLIND[] PROGMEM_I1 = ISTR("Assist"); ////MSG_SOUND_BLIND c=7
|
||||
const char MSG_MESH[] PROGMEM_I1 = ISTR("Mesh"); ////MSG_MESH c=12
|
||||
const char MSG_MESH_BED_LEVELING[] PROGMEM_I1 = ISTR("Mesh Bed Leveling"); ////MSG_MESH_BED_LEVELING c=18
|
||||
const char MSG_Z_PROBE_NR[] PROGMEM_I1 = ISTR("Z-probe nr."); ////MSG_Z_PROBE_NR c=14
|
||||
const char MSG_MAGNETS_COMP[] PROGMEM_I1 = ISTR("Magnets comp."); ////MSG_MAGNETS_COMP c=13
|
||||
const char MSG_FS_ACTION[] PROGMEM_I1 = ISTR("FS Action"); ////MSG_FS_ACTION c=10
|
||||
const char MSG_CONTINUE_SHORT[] PROGMEM_I1 = ISTR("Cont."); ////MSG_CONTINUE_SHORT c=5
|
||||
const char MSG_PAUSE[] PROGMEM_I1 = ISTR("Pause"); ////MSG_PAUSE c=5
|
||||
const char MSG_BRIGHTNESS[] PROGMEM_I1 = ISTR("Brightness"); ////MSG_BRIGHTNESS c=18
|
||||
const char MSG_BL_HIGH[] PROGMEM_I1 = ISTR("Level Bright"); ////MSG_BL_HIGH c=12
|
||||
const char MSG_BL_LOW[] PROGMEM_I1 = ISTR("Level Dimmed"); ////MSG_BL_LOW c=12
|
||||
const char MSG_TIMEOUT[] PROGMEM_I1 = ISTR("Timeout"); ////MSG_TIMEOUT c=12
|
||||
const char MSG_BRIGHT[] PROGMEM_I1 = ISTR("Bright"); ////MSG_BRIGHT c=6
|
||||
const char MSG_DIM[] PROGMEM_I1 = ISTR("Dim"); ////MSG_DIM c=6
|
||||
const char MSG_AUTO[] PROGMEM_I1 = ISTR("Auto"); ////MSG_AUTO c=6
|
||||
#ifdef IR_SENSOR_ANALOG
|
||||
// Beware - the space at the beginning is necessary since it is reused in LCD menu items which are to be with a space
|
||||
const char MSG_IR_04_OR_NEWER[] PROGMEM_I1 = ISTR(" 0.4 or newer");////c=18
|
||||
|
|
@ -204,3 +206,4 @@ const char MSG_M112_KILL[] PROGMEM_N1 = "M112 called. Emergency Stop."; ////c=20
|
|||
const char MSG_ADVANCE_K[] PROGMEM_N1 = "Advance K:"; ////c=13
|
||||
const char MSG_POWERPANIC_DETECTED[] PROGMEM_N1 = "POWER PANIC DETECTED"; ////c=20
|
||||
const char MSG_LCD_STATUS_CHANGED[] PROGMEM_N1 = "LCD status changed";
|
||||
const char MSG_UNKNOWN_CODE[] PROGMEM_N1 = "Unknown %c code: %s\n";
|
||||
|
|
|
|||
|
|
@ -35,6 +35,8 @@ extern const char MSG_FANS_CHECK[];
|
|||
extern const char MSG_FIL_RUNOUTS[];
|
||||
extern const char MSG_FILAMENT[];
|
||||
extern const char MSG_FAN_SPEED[];
|
||||
extern const char MSG_EXTRUDER_FAN_SPEED[];
|
||||
extern const char MSG_PRINT_FAN_SPEED[];
|
||||
extern const char MSG_FILAMENT_CLEAN[];
|
||||
extern const char MSG_FILAMENT_LOADED[];
|
||||
extern const char MSG_FILAMENT_LOADING_T0[];
|
||||
|
|
@ -52,8 +54,8 @@ extern const char MSG_HEATING[];
|
|||
extern const char MSG_HEATING_COMPLETE[];
|
||||
extern const char MSG_HOMEYZ[];
|
||||
extern const char MSG_ITERATION[];
|
||||
extern const char MSG_CHOOSE_EXTRUDER[];
|
||||
extern const char MSG_CHOOSE_FILAMENT[];
|
||||
extern const char MSG_SELECT_EXTRUDER[];
|
||||
extern const char MSG_SELECT_FILAMENT[];
|
||||
extern const char MSG_LAST_PRINT[];
|
||||
extern const char MSG_LAST_PRINT_FAILURES[];
|
||||
extern const char MSG_LOAD_FILAMENT[];
|
||||
|
|
@ -64,7 +66,7 @@ extern const char MSG_BACK[];
|
|||
extern const char MSG_SHEET[];
|
||||
extern const char MSG_STEEL_SHEETS[];
|
||||
extern const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1[];
|
||||
extern const char MSG_MENU_CALIBRATION[];
|
||||
extern const char MSG_CALIBRATION[];
|
||||
extern const char MSG_MMU_FAILS[];
|
||||
extern const char MSG_MMU_LOAD_FAILS[];
|
||||
extern const char MSG_NO[];
|
||||
|
|
@ -86,7 +88,7 @@ extern const char MSG_RESET[];
|
|||
extern const char MSG_RESUME_PRINT[];
|
||||
extern const char MSG_RESUMING_PRINT[];
|
||||
extern const char MSG_SD_WORKDIR_FAIL[];
|
||||
extern const char MSG_SELFTEST_COOLING_FAN[];
|
||||
extern const char MSG_SELFTEST_PART_FAN[];
|
||||
extern const char MSG_SELFTEST_EXTRUDER_FAN[];
|
||||
extern const char MSG_SELFTEST_FAILED[];
|
||||
extern const char MSG_SELFTEST_FAN[];
|
||||
|
|
@ -110,11 +112,11 @@ extern const char MSG_STEALTH[];
|
|||
extern const char MSG_STEEL_SHEET_CHECK[];
|
||||
extern const char MSG_STOP_PRINT[];
|
||||
extern const char MSG_STOPPED[];
|
||||
extern const char MSG_TEMP_CALIBRATION[];
|
||||
extern const char MSG_TEMP_CALIBRATION_DONE[];
|
||||
extern const char MSG_PINDA_CALIBRATION[];
|
||||
extern const char MSG_PINDA_CALIBRATION_DONE[];
|
||||
extern const char MSG_UNLOAD_FILAMENT[];
|
||||
extern const char MSG_UNLOADING_FILAMENT[];
|
||||
extern const char MSG_WATCH[];
|
||||
extern const char MSG_INFO_SCREEN[];
|
||||
extern const char MSG_WIZARD_CALIBRATION_FAILED[];
|
||||
extern const char MSG_WIZARD_DONE[];
|
||||
extern const char MSG_WIZARD_HEATING[];
|
||||
|
|
@ -154,8 +156,8 @@ extern const char MSG_MESH_BED_LEVELING[];
|
|||
extern const char MSG_Z_PROBE_NR[];
|
||||
extern const char MSG_MAGNETS_COMP[];
|
||||
extern const char MSG_FS_ACTION[];
|
||||
extern const char MSG_FS_CONTINUE[];
|
||||
extern const char MSG_FS_PAUSE[];
|
||||
extern const char MSG_CONTINUE_SHORT[];
|
||||
extern const char MSG_PAUSE[];
|
||||
extern const char MSG_BRIGHTNESS[];
|
||||
extern const char MSG_BL_HIGH[];
|
||||
extern const char MSG_BL_LOW[];
|
||||
|
|
@ -204,6 +206,7 @@ extern const char MSG_M112_KILL[];
|
|||
extern const char MSG_ADVANCE_K[];
|
||||
extern const char MSG_POWERPANIC_DETECTED[];
|
||||
extern const char MSG_LCD_STATUS_CHANGED[];
|
||||
extern const char MSG_UNKNOWN_CODE[];
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
// The arc is approximated by generating a huge number of tiny, linear segments. The length of each
|
||||
// segment is configured in settings.mm_per_arc_segment.
|
||||
void mc_arc(float *position, float *target, float *offset, uint8_t axis_0, uint8_t axis_1,
|
||||
uint8_t axis_linear, float feed_rate, float radius, uint8_t isclockwise, uint8_t extruder)
|
||||
uint8_t axis_linear, float feed_rate, float radius, bool isclockwise, uint8_t extruder)
|
||||
{
|
||||
// int acceleration_manager_was_enabled = plan_is_acceleration_manager_enabled();
|
||||
// plan_set_acceleration_manager_enabled(false); // disable acceleration management for the duration of the arc
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
// offset == offset from current xyz, axis_XXX defines circle plane in tool space, axis_linear is
|
||||
// the direction of helical travel, radius == circle radius, isclockwise boolean. Used
|
||||
// for vector transformation direction.
|
||||
void mc_arc(float *position, float *target, float *offset, unsigned char axis_0, unsigned char axis_1,
|
||||
unsigned char axis_linear, float feed_rate, float radius, unsigned char isclockwise, uint8_t extruder);
|
||||
void mc_arc(float *position, float *target, float *offset, uint8_t axis_0, uint8_t axis_1,
|
||||
uint8_t axis_linear, float feed_rate, float radius, bool isclockwise, uint8_t extruder);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@
|
|||
#define AMBIENT_THERMISTOR
|
||||
#define PINDA_THERMISTOR
|
||||
|
||||
#define PRUSA_SN_SUPPORT //enables the "PRUSA SN" command and 32u2 enhanced firmware support
|
||||
|
||||
#define XFLASH // external 256kB flash
|
||||
#define BOOTAPP // bootloader support
|
||||
|
||||
|
|
|
|||
|
|
@ -1095,7 +1095,7 @@ Having the real displacement of the head, we can calculate the total movement le
|
|||
*/
|
||||
block->use_advance_lead = extruder_advance_K > 0
|
||||
&& delta_mm[E_AXIS] >= 0
|
||||
&& abs(delta_mm[Z_AXIS]) < 0.5;
|
||||
&& fabs(delta_mm[Z_AXIS]) < 0.5;
|
||||
if (block->use_advance_lead) {
|
||||
#ifdef LA_FLOWADJ
|
||||
// M221/FLOW should change uniformly the extrusion thickness
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@ extern eSOUND_MODE eSoundMode;
|
|||
|
||||
extern void Sound_Init(void);
|
||||
extern void Sound_Default(void);
|
||||
extern void Sound_Save(void);
|
||||
extern void Sound_CycleState(void);
|
||||
extern void Sound_MakeSound(eSOUND_TYPE eSoundType);
|
||||
extern void Sound_MakeCustom(uint16_t ms,uint16_t tone_ ,bool critical);
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ extern const uint16_t speed_lookuptable_slow[256][2] PROGMEM;
|
|||
|
||||
#ifndef _NO_ASM
|
||||
|
||||
// intRes = intIn1 * intIn2 >> 16
|
||||
// intRes = intIn1 * intIn2 >> 8
|
||||
// uses:
|
||||
// r26 to store 0
|
||||
// r27 to store the byte 1 of the 24 bit result
|
||||
|
|
@ -82,7 +82,7 @@ asm volatile ( \
|
|||
|
||||
static inline void MultiU16X8toH16(uint16_t& intRes, uint8_t& charIn1, uint16_t& intIn2)
|
||||
{
|
||||
intRes = ((uint32_t)charIn1 * (uint32_t)intIn2) >> 16;
|
||||
intRes = ((uint32_t)charIn1 * (uint32_t)intIn2) >> 8;
|
||||
}
|
||||
|
||||
static inline void MultiU24X24toH16(uint16_t& intRes, uint32_t& longIn1, uint32_t& longIn2)
|
||||
|
|
|
|||
|
|
@ -472,7 +472,7 @@ void __attribute__((noinline)) PID_autotune(float temp, int extruder, int ncycle
|
|||
//SERIAL_ECHOPGM("s. Difference between current and ambient T: ");
|
||||
//MYSERIAL.println(input - temp_ambient);
|
||||
|
||||
if (abs(input - temp_ambient) < 5.0) {
|
||||
if (fabs(input - temp_ambient) < 5.0) {
|
||||
temp_runaway_stop(false, (extruder<0));
|
||||
pid_tuning_finished = true;
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ bool has_temperature_compensation();
|
|||
#endif
|
||||
|
||||
#ifdef AMBIENT_THERMISTOR
|
||||
//extern int current_temperature_raw_ambient;
|
||||
extern int current_temperature_raw_ambient;
|
||||
extern float current_temperature_ambient;
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -243,8 +243,6 @@ uint8_t tmc2130_sample_diag()
|
|||
return mask;
|
||||
}
|
||||
|
||||
extern bool is_usb_printing;
|
||||
|
||||
void tmc2130_st_isr()
|
||||
{
|
||||
if (tmc2130_mode == TMC2130_MODE_SILENT || tmc2130_sg_stop_on_crash == false) return;
|
||||
|
|
|
|||
|
|
@ -671,13 +671,8 @@ void lcdui_print_status_line(void)
|
|||
}
|
||||
break;
|
||||
case CustomMsg::TempCal: // PINDA temp calibration in progress
|
||||
char statusLine[LCD_WIDTH + 1];
|
||||
sprintf_P(statusLine, PSTR("%-20S"), _T(MSG_TEMP_CALIBRATION));
|
||||
char progress[4];
|
||||
sprintf_P(progress, PSTR("%d/6"), custom_message_state);
|
||||
memcpy(statusLine + 12, progress, sizeof(progress) - 1);
|
||||
lcd_set_cursor(0, 3);
|
||||
lcd_print(statusLine);
|
||||
lcd_printf_P(PSTR("%-12.12S%-d/6"), _T(MSG_PINDA_CALIBRATION), custom_message_state);
|
||||
break;
|
||||
case CustomMsg::TempCompPreheat: // temp compensation preheat
|
||||
lcd_puts_at_P(0, 3, _i("PINDA Heating"));////MSG_PINDA_PREHEAT c=20
|
||||
|
|
@ -1428,8 +1423,8 @@ static void pgmtext_with_colon(const char *ipgmLabel, char *dst, uint8_t dstSize
|
|||
//!
|
||||
//! @code{.unparsed}
|
||||
//! |01234567890123456789|
|
||||
//! |Nozzle FAN: 0000 RPM| MSG_NOZZLE_FAN c=10 SPEED c=3
|
||||
//! |Print FAN: 0000 RPM| MSG_PRINT_FAN c=10 SPEED c=3
|
||||
//! |Extruder fan: 0000| MSG_EXTRUDER_FAN_SPEED c=16
|
||||
//! |Print fan: 0000| MSG_PRINT_FAN_SPEED c=16
|
||||
//! | |
|
||||
//! | |
|
||||
//! ----------------------
|
||||
|
|
@ -1438,14 +1433,9 @@ static void pgmtext_with_colon(const char *ipgmLabel, char *dst, uint8_t dstSize
|
|||
void lcd_menu_extruder_info() // NOT static due to using inside "Marlin_main" module ("manage_inactivity()")
|
||||
{
|
||||
|
||||
// Display Nozzle fan RPM
|
||||
lcd_timeoutToStatus.stop(); //infinite timeout
|
||||
lcd_home();
|
||||
static const size_t maxChars = 12;
|
||||
char nozzle[maxChars], print[maxChars];
|
||||
pgmtext_with_colon(_i("Nozzle FAN"), nozzle, maxChars); ////MSG_NOZZLE_FAN c=10
|
||||
pgmtext_with_colon(_i("Print FAN"), print, maxChars); ////MSG_PRINT_FAN c=10
|
||||
lcd_printf_P(_N("%s %4d RPM\n" "%s %4d RPM\n"), nozzle, 60*fan_speed[0], print, 60*fan_speed[1] );
|
||||
lcd_printf_P(PSTR("%-16.16S%-4d\n" "%-16.16S%-4d\n"), _T(MSG_EXTRUDER_FAN_SPEED), 60*fan_speed[0], _T(MSG_PRINT_FAN_SPEED), 60*fan_speed[1] );
|
||||
menu_back_if_clicked();
|
||||
}
|
||||
|
||||
|
|
@ -1561,7 +1551,7 @@ static void lcd_menu_fails_stats_total()
|
|||
//! @code{.unparsed}
|
||||
//! |01234567890123456789|
|
||||
//! |Last print failures | MSG_LAST_PRINT_FAILURES c=20
|
||||
//! | Power failures 000| MSG_POWER_FAILURES c=14
|
||||
//! | Power failures 000| MSG_POWER_FAILURES c=15
|
||||
//! | Runouts H 000 S 000| MSG_RUNOUTS c=7
|
||||
//! | Crash X:000 Y:000| MSG_CRASH c=7
|
||||
//! ----------------------
|
||||
|
|
@ -1709,8 +1699,8 @@ static void lcd_menu_temperatures_line(const char *ipgmLabel, int value){
|
|||
//!
|
||||
//! @code{.unparsed}
|
||||
//! |01234567890123456789|
|
||||
//! | Nozzle: 000D| MSG_NOZZLE c=14
|
||||
//! | Bed: 000D| MSG_BEDc=14
|
||||
//! | Nozzle: 000D| MSG_NOZZLE c=10
|
||||
//! | Bed: 000D| MSG_BED c=13
|
||||
//! | Ambient: 000D| MSG_AMBIENTc=14
|
||||
//! | PINDA: 000D| MSG_PINDA c=14
|
||||
//! ----------------------
|
||||
|
|
@ -1721,8 +1711,8 @@ static void lcd_menu_temperatures()
|
|||
{
|
||||
lcd_timeoutToStatus.stop(); //infinite timeout
|
||||
lcd_home();
|
||||
lcd_menu_temperatures_line( _T(MSG_NOZZLE), (int)current_temperature[0] ); ////MSG_NOZZLE
|
||||
lcd_menu_temperatures_line( _T(MSG_BED), (int)current_temperature_bed ); ////MSG_BED
|
||||
lcd_menu_temperatures_line( _T(MSG_NOZZLE), (int)current_temperature[0] );
|
||||
lcd_menu_temperatures_line( _T(MSG_BED), (int)current_temperature_bed );
|
||||
#ifdef AMBIENT_THERMISTOR
|
||||
lcd_menu_temperatures_line( _i("Ambient"), (int)current_temperature_ambient ); ////MSG_AMBIENT
|
||||
#endif //AMBIENT_THERMISTOR
|
||||
|
|
@ -2046,7 +2036,7 @@ static void lcd_support_menu()
|
|||
MENU_ITEM_SUBMENU_P(_i("Sensor info"), lcd_menu_show_sensors_state);////MSG_INFO_SENSORS c=18
|
||||
|
||||
#ifdef TMC2130
|
||||
MENU_ITEM_SUBMENU_P(_T(MSG_BELT_STATUS), lcd_menu_belt_status);////MSG_BELT_STATUS c=18
|
||||
MENU_ITEM_SUBMENU_P(_T(MSG_BELT_STATUS), lcd_menu_belt_status);
|
||||
#endif //TMC2130
|
||||
|
||||
MENU_ITEM_SUBMENU_P(_i("Temperatures"), lcd_menu_temperatures);////MSG_MENU_TEMPERATURES c=18
|
||||
|
|
@ -2056,11 +2046,11 @@ static void lcd_support_menu()
|
|||
#endif //defined VOLT_BED_PIN || defined VOLT_PWR_PIN
|
||||
|
||||
#ifdef MENU_DUMP
|
||||
MENU_ITEM_FUNCTION_P(_i("Dump memory"), lcd_dump_memory);
|
||||
MENU_ITEM_FUNCTION_P(_n("Dump memory"), lcd_dump_memory);
|
||||
#endif //MENU_DUMP
|
||||
#ifdef MENU_SERIAL_DUMP
|
||||
if (emergency_serial_dump)
|
||||
MENU_ITEM_FUNCTION_P(_i("Dump to serial"), lcd_serial_dump);
|
||||
MENU_ITEM_FUNCTION_P(_n("Dump to serial"), lcd_serial_dump);
|
||||
#endif
|
||||
#ifdef DEBUG_BUILD
|
||||
#ifdef EMERGENCY_HANDLERS
|
||||
|
|
@ -2290,7 +2280,7 @@ void mFilamentItem(uint16_t nTemp, uint16_t nTempBed)
|
|||
lcd_draw_update = 1;
|
||||
|
||||
lcd_clear();
|
||||
lcd_puts_at_P(0, 3, _T(MSG_CANCEL)); ////MSG_CANCEL
|
||||
lcd_puts_at_P(0, 3, _T(MSG_CANCEL));
|
||||
|
||||
lcd_set_cursor(0, 1);
|
||||
switch (eFilamentAction)
|
||||
|
|
@ -3079,10 +3069,10 @@ void lcd_adjust_bed_reset(void)
|
|||
//! @code{.unparsed}
|
||||
//! |01234567890123456789|
|
||||
//! |Settings: | MSG_SETTINGS
|
||||
//! |Left side [um]: | MSG_BED_CORRECTION_LEFT
|
||||
//! |Right side[um]: | MSG_BED_CORRECTION_RIGHT
|
||||
//! |Front side[um]: | MSG_BED_CORRECTION_FRONT
|
||||
//! |Rear side [um]: | MSG_BED_CORRECTION_REAR
|
||||
//! |Left side [μm]: | MSG_BED_CORRECTION_LEFT
|
||||
//! |Right side[μm]: | MSG_BED_CORRECTION_RIGHT
|
||||
//! |Front side[μm]: | MSG_BED_CORRECTION_FRONT
|
||||
//! |Rear side [μm]: | MSG_BED_CORRECTION_REAR
|
||||
//! |Reset | MSG_BED_CORRECTION_RESET
|
||||
//! ----------------------
|
||||
//! @endcode
|
||||
|
|
@ -3114,12 +3104,12 @@ void lcd_adjust_bed(void)
|
|||
eeprom_update_int8((unsigned char*)EEPROM_BED_CORRECTION_REAR, _md->rear);
|
||||
eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_VALID, 1);
|
||||
);
|
||||
MENU_ITEM_BACK_P(_T(MSG_SETTINGS));
|
||||
MENU_ITEM_EDIT_int3_P(_i("Left side [um]"), &_md->left, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);////MSG_BED_CORRECTION_LEFT c=14
|
||||
MENU_ITEM_EDIT_int3_P(_i("Right side[um]"), &_md->right, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);////MSG_BED_CORRECTION_RIGHT c=14
|
||||
MENU_ITEM_EDIT_int3_P(_i("Front side[um]"), &_md->front, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);////MSG_BED_CORRECTION_FRONT c=14
|
||||
MENU_ITEM_EDIT_int3_P(_i("Rear side [um]"), &_md->rear, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);////MSG_BED_CORRECTION_REAR c=14
|
||||
MENU_ITEM_FUNCTION_P(_T(MSG_RESET), lcd_adjust_bed_reset);////MSG_RESET c=14
|
||||
MENU_ITEM_BACK_P(_T(MSG_BACK));
|
||||
MENU_ITEM_EDIT_int3_P(_i("Left side [\xe4m]"), &_md->left, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);////MSG_BED_CORRECTION_LEFT c=14
|
||||
MENU_ITEM_EDIT_int3_P(_i("Right side[\xe4m]"), &_md->right, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);////MSG_BED_CORRECTION_RIGHT c=14
|
||||
MENU_ITEM_EDIT_int3_P(_i("Front side[\xe4m]"), &_md->front, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);////MSG_BED_CORRECTION_FRONT c=14
|
||||
MENU_ITEM_EDIT_int3_P(_i("Rear side [\xe4m]"), &_md->rear, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);////MSG_BED_CORRECTION_REAR c=14
|
||||
MENU_ITEM_FUNCTION_P(_T(MSG_RESET), lcd_adjust_bed_reset);
|
||||
MENU_END();
|
||||
}
|
||||
|
||||
|
|
@ -3765,14 +3755,14 @@ void lcd_temp_cal_show_result(bool result) {
|
|||
|
||||
if (result == true) {
|
||||
eeprom_update_byte((uint8_t*)EEPROM_CALIBRATION_STATUS_PINDA, 1);
|
||||
SERIAL_ECHOLNPGM("Temperature calibration done. Continue with pressing the knob.");
|
||||
lcd_show_fullscreen_message_and_wait_P(_T(MSG_TEMP_CALIBRATION_DONE));
|
||||
SERIAL_ECHOLNPGM("PINDA calibration done. Continue with pressing the knob.");
|
||||
lcd_show_fullscreen_message_and_wait_P(_T(MSG_PINDA_CALIBRATION_DONE));
|
||||
eeprom_update_byte((unsigned char *)EEPROM_TEMP_CAL_ACTIVE, 1);
|
||||
}
|
||||
else {
|
||||
eeprom_update_byte((uint8_t*)EEPROM_CALIBRATION_STATUS_PINDA, 0);
|
||||
SERIAL_ECHOLNPGM("Temperature calibration failed. Continue with pressing the knob.");
|
||||
lcd_show_fullscreen_message_and_wait_P(_i("Temperature calibration failed"));////MSG_TEMP_CAL_FAILED c=20 r=8
|
||||
SERIAL_ECHOLNPGM("PINDA calibration failed. Continue with pressing the knob.");
|
||||
lcd_show_fullscreen_message_and_wait_P(_i("PINDA calibration failed"));////MSG_PINDA_CAL_FAILED c=20 r=4
|
||||
eeprom_update_byte((unsigned char *)EEPROM_TEMP_CAL_ACTIVE, 0);
|
||||
}
|
||||
lcd_update_enable(true);
|
||||
|
|
@ -4446,7 +4436,7 @@ void menu_setlang(unsigned char lang)
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef COMMUNITY_LANG_SUPPORT
|
||||
#ifdef COMMUNITY_LANGUAGE_SUPPORT
|
||||
#ifdef XFLASH
|
||||
static void lcd_community_language_menu()
|
||||
{
|
||||
|
|
@ -4462,7 +4452,7 @@ static void lcd_community_language_menu()
|
|||
MENU_END();
|
||||
}
|
||||
#endif //XFLASH
|
||||
#endif //COMMUNITY_LANG_SUPPORT && W52X20CL
|
||||
#endif //COMMUNITY_LANGUAGE_SUPPORT && W52X20CL
|
||||
|
||||
|
||||
|
||||
|
|
@ -4496,11 +4486,11 @@ static void lcd_language_menu()
|
|||
return;
|
||||
}
|
||||
|
||||
#ifdef COMMUNITY_LANG_SUPPORT
|
||||
#ifdef COMMUNITY_LANGUAGE_SUPPORT
|
||||
#ifdef XFLASH
|
||||
MENU_ITEM_SUBMENU_P(_T(MSG_COMMUNITY_MADE), lcd_community_language_menu); ////MSG_COMMUNITY_MADE c=18
|
||||
MENU_ITEM_SUBMENU_P(_T(MSG_COMMUNITY_MADE), lcd_community_language_menu);
|
||||
#endif //XFLASH
|
||||
#endif //COMMUNITY_LANG_SUPPORT && W52X20CL
|
||||
#endif //COMMUNITY_LANGUAGE_SUPPORT && W52X20CL
|
||||
|
||||
MENU_END();
|
||||
}
|
||||
|
|
@ -4526,14 +4516,6 @@ void lcd_mesh_calibration_z()
|
|||
lcd_return_to_status();
|
||||
}
|
||||
|
||||
void lcd_pinda_calibration_menu()
|
||||
{
|
||||
MENU_BEGIN();
|
||||
MENU_ITEM_BACK_P(_T(MSG_MENU_CALIBRATION));
|
||||
MENU_ITEM_SUBMENU_P(_i("Calibrate"), lcd_calibrate_pinda);////MSG_CALIBRATE_PINDA c=17
|
||||
MENU_END();
|
||||
}
|
||||
|
||||
void lcd_temp_calibration_set() {
|
||||
bool temp_cal_active = eeprom_read_byte((unsigned char *)EEPROM_TEMP_CAL_ACTIVE);
|
||||
temp_cal_active = !temp_cal_active;
|
||||
|
|
@ -4655,10 +4637,10 @@ void lcd_toshiba_flash_air_compatibility_toggle()
|
|||
//!
|
||||
//! @code{.unparsed}
|
||||
//! |01234567890123456789|
|
||||
//! |Sheet Smooth1 actual| c=a, c=b, a+b = 13
|
||||
//! |Z offset: -1.480 mm | c=a, c=b, a+b = 14
|
||||
//! |>Continue | c=19
|
||||
//! | Start from zero | c=19
|
||||
//! |Sheet Smooth1| MSG_SHEET c=12, MSG_SHEET_NAME c=7
|
||||
//! |Z offset: -1.480mm| MSG_Z_OFFSET c=11
|
||||
//! |>Continue | MSG_CONTINUE
|
||||
//! | Reset | MSG_RESET
|
||||
//! ----------------------
|
||||
//! @endcode
|
||||
void lcd_first_layer_calibration_reset()
|
||||
|
|
@ -4697,8 +4679,8 @@ void lcd_first_layer_calibration_reset()
|
|||
eeprom_read_block(sheet_name, &EEPROM_Sheets_base->s[(eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet)))].name, sizeof(Sheet::name));
|
||||
lcd_set_cursor(0, 0);
|
||||
float offset = static_cast<int16_t>(eeprom_read_word(reinterpret_cast<uint16_t*>(&EEPROM_Sheets_base->s[(eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet)))].z_offset)))/cs.axis_steps_per_unit[Z_AXIS];
|
||||
lcd_printf_P(_i("Sheet %.7s\nZ offset: %+1.3f mm\n%cContinue\n%cStart from zero"), //// \n denotes line break, %.7s is replaced by 7 character long sheet name, %+1.3f is replaced by 6 character long floating point number, %c is replaced by > or white space (one character) based on whether first or second option is selected. % denoted place holders can not be reordered. r=4
|
||||
sheet_name, offset, menuData->reset ? ' ' : '>', menuData->reset ? '>' : ' ');
|
||||
lcd_printf_P(_i("Sheet %.7s\nZ offset: %+1.3fmm\n%cContinue\n%cReset"),////MSG_SHEET_OFFSET c=20 r=4
|
||||
sheet_name, offset, menuData->reset ? ' ' : '>', menuData->reset ? '>' : ' ');// \n denotes line break, %.7s is replaced by 7 character long sheet name, %+1.3f is replaced by 6 character long floating point number, %c is replaced by > or white space (one character) based on whether first or second option is selected. % denoted place holders can not be reordered.
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -4707,7 +4689,7 @@ void lcd_v2_calibration()
|
|||
if (mmu_enabled)
|
||||
{
|
||||
const uint8_t filament = choose_menu_P(
|
||||
_i("Select filament:"), ////MSG_SELECT_FILAMENT c=20
|
||||
_T(MSG_SELECT_FILAMENT),
|
||||
_T(MSG_FILAMENT),(_T(MSG_CANCEL)+1)); //Hack to reuse MSG but strip 1st char off
|
||||
if (filament < 5)
|
||||
{
|
||||
|
|
@ -4799,7 +4781,7 @@ static void wait_preheat()
|
|||
delay_keep_alive(2000);
|
||||
lcd_display_message_fullscreen_P(_T(MSG_WIZARD_HEATING));
|
||||
lcd_set_custom_characters();
|
||||
while (abs(degHotend(0) - degTargetHotend(0)) > 3) {
|
||||
while (fabs(degHotend(0) - degTargetHotend(0)) > 3) {
|
||||
lcd_display_message_fullscreen_P(_T(MSG_WIZARD_HEATING));
|
||||
|
||||
lcd_set_cursor(0, 4);
|
||||
|
|
@ -4843,7 +4825,7 @@ static void wizard_lay1cal_message(bool cold)
|
|||
if (mmu_enabled)
|
||||
{
|
||||
lcd_show_fullscreen_message_and_wait_P(
|
||||
_i("Choose a filament for the First Layer Calibration and select it in the on-screen menu."));////MSG_CHOOSE_FIL_1ST_LAYERCAL c=20 r=7
|
||||
_i("Select a filament for the First Layer Calibration and select it in the on-screen menu."));////MSG_SELECT_FIL_1ST_LAYERCAL c=20 r=7
|
||||
}
|
||||
else if (cold)
|
||||
{
|
||||
|
|
@ -5105,7 +5087,7 @@ do\
|
|||
if (fsensor_not_responding && (mmu_enabled == false))\
|
||||
{\
|
||||
/* Filament sensor not working*/\
|
||||
MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR), _T(MSG_NA), lcd_fsensor_state_set);/*////MSG_FSENSOR_NA*/\
|
||||
MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR), _T(MSG_NA), lcd_fsensor_state_set);\
|
||||
MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_AUTOLOAD), NULL, lcd_fsensor_fail);\
|
||||
}\
|
||||
else\
|
||||
|
|
@ -5125,9 +5107,9 @@ do\
|
|||
if (mmu_enabled == false)\
|
||||
{\
|
||||
if (fsensor_autoload_enabled)\
|
||||
MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_AUTOLOAD), _T(MSG_ON), lcd_set_filament_autoload);/*////MSG_FSENS_AUTOLOAD_ON c=17*/\
|
||||
MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_AUTOLOAD), _T(MSG_ON), lcd_set_filament_autoload);\
|
||||
else\
|
||||
MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_AUTOLOAD), _T(MSG_OFF), lcd_set_filament_autoload);/*////MSG_FSENS_AUTOLOAD_OFF c=17*/\
|
||||
MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR_AUTOLOAD), _T(MSG_OFF), lcd_set_filament_autoload);\
|
||||
/*if (fsensor_oq_meassure_enabled)*/\
|
||||
/*MENU_ITEM_FUNCTION_P(_i("F. OQ meass. [on]"), lcd_set_filament_oq_meass);*//*////MSG_FSENS_OQMEASS_ON c=17*/\
|
||||
/*else*/\
|
||||
|
|
@ -5581,10 +5563,10 @@ do\
|
|||
switch(oFsensorActionNA)\
|
||||
{\
|
||||
case ClFsensorActionNA::_Continue:\
|
||||
MENU_ITEM_TOGGLE_P(_T(MSG_FS_ACTION), _T(MSG_FS_CONTINUE), lcd_fsensor_actionNA_set);\
|
||||
MENU_ITEM_TOGGLE_P(_T(MSG_FS_ACTION), _T(MSG_CONTINUE_SHORT), lcd_fsensor_actionNA_set);\
|
||||
break;\
|
||||
case ClFsensorActionNA::_Pause:\
|
||||
MENU_ITEM_TOGGLE_P(_T(MSG_FS_ACTION), _T(MSG_FS_PAUSE), lcd_fsensor_actionNA_set);\
|
||||
MENU_ITEM_TOGGLE_P(_T(MSG_FS_ACTION), _T(MSG_PAUSE), lcd_fsensor_actionNA_set);\
|
||||
break;\
|
||||
default:\
|
||||
oFsensorActionNA=ClFsensorActionNA::_Continue;\
|
||||
|
|
@ -5707,7 +5689,7 @@ static void lcd_settings_menu()
|
|||
#endif //LINEARITY_CORRECTION && TMC2130
|
||||
if(has_temperature_compensation())
|
||||
{
|
||||
MENU_ITEM_TOGGLE_P(_T(MSG_TEMP_CALIBRATION), eeprom_read_byte((unsigned char *)EEPROM_TEMP_CAL_ACTIVE) ? _T(MSG_ON) : _T(MSG_OFF), lcd_temp_calibration_set);
|
||||
MENU_ITEM_TOGGLE_P(_T(MSG_PINDA_CALIBRATION), eeprom_read_byte((unsigned char *)EEPROM_TEMP_CAL_ACTIVE) ? _T(MSG_ON) : _T(MSG_OFF), lcd_temp_calibration_set);
|
||||
}
|
||||
|
||||
#ifdef HAS_SECOND_SERIAL_PORT
|
||||
|
|
@ -5775,7 +5757,7 @@ static void lcd_calibration_menu()
|
|||
MENU_ITEM_FUNCTION_P(_i("Wizard"), lcd_wizard);////MSG_WIZARD c=17
|
||||
if (lcd_commands_type == LcdCommands::Idle)
|
||||
{
|
||||
MENU_ITEM_SUBMENU_P(_T(MSG_V2_CALIBRATION), lcd_first_layer_calibration_reset);////MSG_V2_CALIBRATION c=18
|
||||
MENU_ITEM_SUBMENU_P(_T(MSG_V2_CALIBRATION), lcd_first_layer_calibration_reset);
|
||||
}
|
||||
MENU_ITEM_GCODE_P(_T(MSG_AUTO_HOME), PSTR("G28 W"));
|
||||
#ifdef TMC2130
|
||||
|
|
@ -5813,7 +5795,7 @@ static void lcd_calibration_menu()
|
|||
#ifndef MK1BP
|
||||
if(has_temperature_compensation())
|
||||
{
|
||||
MENU_ITEM_SUBMENU_P(_i("Temp. calibration"), lcd_pinda_calibration_menu);////MSG_CALIBRATION_PINDA_MENU c=17
|
||||
MENU_ITEM_FUNCTION_P(_T(MSG_PINDA_CALIBRATION), lcd_calibrate_pinda);
|
||||
}
|
||||
#endif //MK1BP
|
||||
}
|
||||
|
|
@ -5924,7 +5906,7 @@ void bowden_menu() {
|
|||
}
|
||||
|
||||
#ifdef SNMM
|
||||
|
||||
#error broken MSG_UNLOAD_FILAMENT translation
|
||||
static char snmm_stop_print_menu() { //menu for choosing which filaments will be unloaded in stop print
|
||||
lcd_clear();
|
||||
lcd_puts_at_P(0,0,_T(MSG_UNLOAD_FILAMENT)); lcd_print(':');
|
||||
|
|
@ -6169,10 +6151,10 @@ static void fil_load_menu()
|
|||
MENU_BEGIN();
|
||||
MENU_ITEM_BACK_P(_T(MSG_MAIN));
|
||||
MENU_ITEM_FUNCTION_P(_i("Load all"), load_all); ////MSG_LOAD_ALL c=17
|
||||
MENU_ITEM_FUNCTION_NR_P(_T(MSG_LOAD_FILAMENT), '1', extr_adj, 0); ////MSG_LOAD_FILAMENT_1 c=16
|
||||
MENU_ITEM_FUNCTION_NR_P(_T(MSG_LOAD_FILAMENT), '2', extr_adj, 1); ////MSG_LOAD_FILAMENT_2 c=17
|
||||
MENU_ITEM_FUNCTION_NR_P(_T(MSG_LOAD_FILAMENT), '3', extr_adj, 2); ////MSG_LOAD_FILAMENT_3 c=17
|
||||
MENU_ITEM_FUNCTION_NR_P(_T(MSG_LOAD_FILAMENT), '4', extr_adj, 3); ////MSG_LOAD_FILAMENT_4 c=17
|
||||
MENU_ITEM_FUNCTION_NR_P(_T(MSG_LOAD_FILAMENT), '1', extr_adj, 0);
|
||||
MENU_ITEM_FUNCTION_NR_P(_T(MSG_LOAD_FILAMENT), '2', extr_adj, 1);
|
||||
MENU_ITEM_FUNCTION_NR_P(_T(MSG_LOAD_FILAMENT), '3', extr_adj, 2);
|
||||
MENU_ITEM_FUNCTION_NR_P(_T(MSG_LOAD_FILAMENT), '4', extr_adj, 3);
|
||||
|
||||
if (mmu_enabled)
|
||||
{
|
||||
|
|
@ -6331,85 +6313,6 @@ void unload_filament(bool automatic)
|
|||
|
||||
}
|
||||
|
||||
unsigned char lcd_choose_color() {
|
||||
//function returns index of currently chosen item
|
||||
//following part can be modified from 2 to 255 items:
|
||||
//-----------------------------------------------------
|
||||
unsigned char items_no = 2;
|
||||
const char *item[items_no];
|
||||
item[0] = "Orange";
|
||||
item[1] = "Black";
|
||||
//-----------------------------------------------------
|
||||
uint_least8_t active_rows;
|
||||
static int first = 0;
|
||||
int enc_dif = 0;
|
||||
unsigned char cursor_pos = 1;
|
||||
enc_dif = lcd_encoder_diff;
|
||||
lcd_clear();
|
||||
lcd_putc_at(0, 1, '>');
|
||||
|
||||
active_rows = items_no < 3 ? items_no : 3;
|
||||
lcd_consume_click();
|
||||
while (1) {
|
||||
lcd_puts_at_P(0, 0, PSTR("Choose color:"));
|
||||
for (uint_least8_t i = 0; i < active_rows; i++) {
|
||||
lcd_set_cursor(1, i+1);
|
||||
lcd_print(item[first + i]);
|
||||
}
|
||||
|
||||
manage_heater();
|
||||
manage_inactivity(true);
|
||||
proc_commands();
|
||||
if (abs((enc_dif - lcd_encoder_diff)) > 12) {
|
||||
|
||||
if (enc_dif > lcd_encoder_diff) {
|
||||
cursor_pos--;
|
||||
}
|
||||
|
||||
if (enc_dif < lcd_encoder_diff) {
|
||||
cursor_pos++;
|
||||
}
|
||||
|
||||
if (cursor_pos > active_rows) {
|
||||
cursor_pos = active_rows;
|
||||
Sound_MakeSound(e_SOUND_TYPE_BlindAlert);
|
||||
if (first < items_no - active_rows) {
|
||||
first++;
|
||||
lcd_clear();
|
||||
}
|
||||
}
|
||||
|
||||
if (cursor_pos < 1) {
|
||||
cursor_pos = 1;
|
||||
Sound_MakeSound(e_SOUND_TYPE_BlindAlert);
|
||||
if (first > 0) {
|
||||
first--;
|
||||
lcd_clear();
|
||||
}
|
||||
}
|
||||
lcd_putc_at(0, 1, ' ');
|
||||
lcd_putc_at(0, 2, ' ');
|
||||
lcd_putc_at(0, 3, ' ');
|
||||
lcd_putc_at(0, cursor_pos, '>');
|
||||
Sound_MakeSound(e_SOUND_TYPE_EncoderMove);
|
||||
enc_dif = lcd_encoder_diff;
|
||||
_delay(100);
|
||||
|
||||
}
|
||||
|
||||
if (lcd_clicked()) {
|
||||
Sound_MakeSound(e_SOUND_TYPE_ButtonEcho);
|
||||
switch(cursor_pos + first - 1) {
|
||||
case 0: return 1; break;
|
||||
case 1: return 0; break;
|
||||
default: return 99; break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#include "xflash.h"
|
||||
|
||||
#ifdef LCD_TEST
|
||||
|
|
@ -6578,10 +6481,10 @@ static void lcd_sheet_menu()
|
|||
|
||||
if (lcd_commands_type == LcdCommands::Idle)
|
||||
{
|
||||
MENU_ITEM_SUBMENU_P(_T(MSG_V2_CALIBRATION), activate_calibrate_sheet);////MSG_V2_CALIBRATION c=18
|
||||
MENU_ITEM_SUBMENU_P(_T(MSG_V2_CALIBRATION), activate_calibrate_sheet);
|
||||
}
|
||||
MENU_ITEM_SUBMENU_P(_i("Rename"), lcd_rename_sheet_menu); ////MSG_RENAME c=18
|
||||
MENU_ITEM_FUNCTION_P(_T(MSG_RESET), lcd_reset_sheet); ////MSG_RESET c=14
|
||||
MENU_ITEM_FUNCTION_P(_T(MSG_RESET), lcd_reset_sheet);
|
||||
|
||||
MENU_END();
|
||||
}
|
||||
|
|
@ -6632,7 +6535,7 @@ static void lcd_main_menu()
|
|||
// Majkl superawesome menu
|
||||
|
||||
|
||||
MENU_ITEM_BACK_P(_T(MSG_WATCH));
|
||||
MENU_ITEM_BACK_P(_T(MSG_INFO_SCREEN));
|
||||
|
||||
#ifdef RESUME_DEBUG
|
||||
if (!saved_printing)
|
||||
|
|
@ -6661,9 +6564,9 @@ static void lcd_main_menu()
|
|||
|
||||
if (mesh_bed_leveling_flag == false && homing_flag == false && !isPrintPaused) {
|
||||
if (is_usb_printing) {
|
||||
MENU_ITEM_FUNCTION_P(_T(MSG_PAUSE_PRINT), lcd_pause_usb_print);////MSG_PAUSE_PRINT c=18
|
||||
MENU_ITEM_FUNCTION_P(_T(MSG_PAUSE_PRINT), lcd_pause_usb_print);
|
||||
} else if (IS_SD_PRINTING) {
|
||||
MENU_ITEM_FUNCTION_P(_T(MSG_PAUSE_PRINT), lcd_pause_print);////MSG_PAUSE_PRINT c=18
|
||||
MENU_ITEM_FUNCTION_P(_T(MSG_PAUSE_PRINT), lcd_pause_print);
|
||||
}
|
||||
}
|
||||
if(isPrintPaused)
|
||||
|
|
@ -6673,9 +6576,9 @@ static void lcd_main_menu()
|
|||
#endif //FANCHECK
|
||||
{
|
||||
if (is_usb_printing) {
|
||||
MENU_ITEM_SUBMENU_P(_T(MSG_RESUME_PRINT), lcd_resume_usb_print);////MSG_RESUME_PRINT c=18
|
||||
MENU_ITEM_SUBMENU_P(_T(MSG_RESUME_PRINT), lcd_resume_usb_print);
|
||||
} else {
|
||||
MENU_ITEM_SUBMENU_P(_T(MSG_RESUME_PRINT), lcd_resume_print);////MSG_RESUME_PRINT c=18
|
||||
MENU_ITEM_SUBMENU_P(_T(MSG_RESUME_PRINT), lcd_resume_print);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -6744,7 +6647,7 @@ static void lcd_main_menu()
|
|||
MENU_ITEM_SUBMENU_P(_T(MSG_UNLOAD_FILAMENT), lcd_unLoadFilament);
|
||||
}
|
||||
MENU_ITEM_SUBMENU_P(_T(MSG_SETTINGS), lcd_settings_menu);
|
||||
if(!isPrintPaused) MENU_ITEM_SUBMENU_P(_T(MSG_MENU_CALIBRATION), lcd_calibration_menu);
|
||||
if(!isPrintPaused) MENU_ITEM_SUBMENU_P(_T(MSG_CALIBRATION), lcd_calibration_menu);
|
||||
}
|
||||
|
||||
if (!is_usb_printing && (lcd_commands_type != LcdCommands::Layer1Cal)) {
|
||||
|
|
@ -6886,7 +6789,7 @@ static void lcd_tune_menu()
|
|||
MENU_ITEM_EDIT_int3_P(_i("Speed"), &feedmultiply, 10, 999);//2////MSG_SPEED c=15
|
||||
|
||||
MENU_ITEM_EDIT_int3_P(_T(MSG_NOZZLE), &target_temperature[0], 0, HEATER_0_MAXTEMP - 10);//3
|
||||
MENU_ITEM_EDIT_int3_P(_T(MSG_BED), &target_temperature_bed, 0, BED_MAXTEMP - 10);//4
|
||||
MENU_ITEM_EDIT_int3_P(_T(MSG_BED), &target_temperature_bed, 0, BED_MAXTEMP - 10);
|
||||
|
||||
MENU_ITEM_EDIT_int3_P(_T(MSG_FAN_SPEED), &fanSpeed, 0, 255);//5
|
||||
MENU_ITEM_EDIT_int3_P(_i("Flow"), &extrudemultiply, 10, 999);//6////MSG_FLOW c=15
|
||||
|
|
@ -7752,7 +7655,7 @@ static bool lcd_selfcheck_axis_sg(unsigned char axis) {
|
|||
eeprom_write_word(((uint16_t*)((axis == X_AXIS)?EEPROM_BELTSTATUS_X:EEPROM_BELTSTATUS_Y)), sg1);
|
||||
|
||||
current_position_final = st_get_position_mm(axis);
|
||||
measured_axis_length[0] = abs(current_position_final - current_position_init);
|
||||
measured_axis_length[0] = fabs(current_position_final - current_position_init);
|
||||
|
||||
|
||||
// first measurement end and second measurement begin
|
||||
|
|
@ -7769,7 +7672,7 @@ static bool lcd_selfcheck_axis_sg(unsigned char axis) {
|
|||
|
||||
current_position_init = st_get_position_mm(axis);
|
||||
|
||||
measured_axis_length[1] = abs(current_position_final - current_position_init);
|
||||
measured_axis_length[1] = fabs(current_position_final - current_position_init);
|
||||
|
||||
tmc2130_home_exit();
|
||||
|
||||
|
|
@ -7777,7 +7680,7 @@ static bool lcd_selfcheck_axis_sg(unsigned char axis) {
|
|||
|
||||
for(uint_least8_t i = 0; i < 2; i++){ //check if measured axis length corresponds to expected length
|
||||
printf_P(_N("Measured axis length:%.3f\n"), measured_axis_length[i]);
|
||||
if (abs(measured_axis_length[i] - axis_length) > max_error_mm) {
|
||||
if (fabs(measured_axis_length[i] - axis_length) > max_error_mm) {
|
||||
enable_endstops(false);
|
||||
|
||||
const char *_error_1;
|
||||
|
|
@ -7796,9 +7699,9 @@ static bool lcd_selfcheck_axis_sg(unsigned char axis) {
|
|||
}
|
||||
}
|
||||
|
||||
printf_P(_N("Axis length difference:%.3f\n"), abs(measured_axis_length[0] - measured_axis_length[1]));
|
||||
printf_P(_N("Axis length difference:%.3f\n"), fabs(measured_axis_length[0] - measured_axis_length[1]));
|
||||
|
||||
if (abs(measured_axis_length[0] - measured_axis_length[1]) > 1) { //check if difference between first and second measurement is low
|
||||
if (fabs(measured_axis_length[0] - measured_axis_length[1]) > 1) { //check if difference between first and second measurement is low
|
||||
//loose pulleys
|
||||
const char *_error_1;
|
||||
|
||||
|
|
@ -8156,7 +8059,7 @@ static void lcd_selftest_error(TestError testError, const char *_error_1, const
|
|||
lcd_print(_error_1);
|
||||
break;
|
||||
case TestError::PrintFan:
|
||||
lcd_puts_at_P(0, 2, _T(MSG_SELFTEST_COOLING_FAN));
|
||||
lcd_puts_at_P(0, 2, _T(MSG_SELFTEST_PART_FAN));
|
||||
lcd_puts_at_P(0, 3, _T(MSG_SELFTEST_WIRINGERROR));
|
||||
lcd_set_cursor(18, 3);
|
||||
lcd_print(_error_1);
|
||||
|
|
@ -8309,12 +8212,12 @@ static bool lcd_selftest_manual_fan_check(int _fan, bool check_opposite,
|
|||
{
|
||||
case 0:
|
||||
// extruder cooling fan
|
||||
lcd_puts_at_P(0, 1, check_opposite ? _T(MSG_SELFTEST_COOLING_FAN) : _T(MSG_SELFTEST_EXTRUDER_FAN));
|
||||
lcd_puts_at_P(0, 1, check_opposite ? _T(MSG_SELFTEST_PART_FAN) : _T(MSG_SELFTEST_EXTRUDER_FAN));
|
||||
setExtruderAutoFanState(3);
|
||||
break;
|
||||
case 1:
|
||||
// object cooling fan
|
||||
lcd_puts_at_P(0, 1, check_opposite ? _T(MSG_SELFTEST_EXTRUDER_FAN) : _T(MSG_SELFTEST_COOLING_FAN));
|
||||
lcd_puts_at_P(0, 1, check_opposite ? _T(MSG_SELFTEST_EXTRUDER_FAN) : _T(MSG_SELFTEST_PART_FAN));
|
||||
SET_OUTPUT(FAN_PIN);
|
||||
#ifdef FAN_SOFT_PWM
|
||||
fanSpeedSoftPwm = 255;
|
||||
|
|
@ -8499,10 +8402,10 @@ static int lcd_selftest_screen(TestScreen screen, int _progress, int _progress_s
|
|||
if ((screen >= TestScreen::ExtruderFan) && (screen <= TestScreen::FansOk))
|
||||
{
|
||||
//SERIAL_ECHOLNPGM("Fan test");
|
||||
lcd_puts_at_P(0, 2, _i("Extruder fan:"));////MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
|
||||
lcd_puts_at_P(0, 2, _T(MSG_EXTRUDER_FAN_SPEED));
|
||||
lcd_set_cursor(18, 2);
|
||||
(screen < TestScreen::PrintFan) ? lcd_print(_indicator) : lcd_print("OK");
|
||||
lcd_puts_at_P(0, 3, _i("Print fan:"));////MSG_SELFTEST_PRINT_FAN_SPEED c=18
|
||||
lcd_puts_at_P(0, 3, _T(MSG_PRINT_FAN_SPEED));
|
||||
lcd_set_cursor(18, 3);
|
||||
(screen < TestScreen::FansOk) ? lcd_print(_indicator) : lcd_print("OK");
|
||||
}
|
||||
|
|
@ -9055,6 +8958,15 @@ bool FarmOrUserECool(){
|
|||
return farm_mode || UserECoolEnabled();
|
||||
}
|
||||
|
||||
#ifdef PRUSA_SN_SUPPORT
|
||||
void WorkaroundPrusaSN() {
|
||||
const char *SN = PSTR("CZPXInvalidSerialNr");
|
||||
for (uint8_t i = 0; i < 20; i++) {
|
||||
eeprom_update_byte((uint8_t*)EEPROM_PRUSA_SN + i, pgm_read_byte(SN++));
|
||||
}
|
||||
}
|
||||
#endif //PRUSA_SN_SUPPORT
|
||||
|
||||
void lcd_experimental_menu()
|
||||
{
|
||||
MENU_BEGIN();
|
||||
|
|
@ -9071,6 +8983,10 @@ void lcd_experimental_menu()
|
|||
#ifdef DEBUG_PULLUP_CRASH
|
||||
MENU_ITEM_FUNCTION_P(_N("Test Pullup Crash"), TestPullupCrash);
|
||||
#endif // DEBUG_PULLUP_CRASH
|
||||
|
||||
#ifdef PRUSA_SN_SUPPORT
|
||||
MENU_ITEM_FUNCTION_P(_N("Fake serial number"), WorkaroundPrusaSN);////MSG_WORKAROUND_PRUSA_SN c=18
|
||||
#endif //PRUSA_SN_SUPPORT
|
||||
MENU_END();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -49,7 +49,6 @@ void lcd_pause_usb_print();
|
|||
void lcd_resume_print();
|
||||
void lcd_print_stop();
|
||||
void prusa_statistics(int _message, uint8_t _col_nr = 0);
|
||||
unsigned char lcd_choose_color();
|
||||
void lcd_load_filament_color_check();
|
||||
//void lcd_mylang();
|
||||
|
||||
|
|
@ -221,7 +220,6 @@ void bowden_menu();
|
|||
char reset_menu();
|
||||
uint8_t choose_menu_P(const char *header, const char *item, const char *last_item = nullptr);
|
||||
|
||||
void lcd_pinda_calibration_menu();
|
||||
void lcd_calibrate_pinda();
|
||||
void lcd_temp_calibration_set();
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
# 3. Install latest updates with 'sudo apt-get upgrade'
|
||||
#
|
||||
#
|
||||
# Version: 1.0.0-Build_13
|
||||
# Version: 1.0.0-Build_14
|
||||
# Change log:
|
||||
# 11 Feb 2021, 3d-gussner, Inital
|
||||
# 11 Feb 2021, 3d-gussner, Optional flags to check for updates
|
||||
|
|
@ -22,6 +22,8 @@
|
|||
# 18 Jun 2021, 3d-gussner, Added -g 3 and 4 for more details extrusion lines
|
||||
# 18 Jun 2021, 3d-gussner, Check for updates is default. Fix update if internet connection is lost.
|
||||
# 21 Jun 2021, 3d-gussner, Change board_flash argument to 'y' and firmware_version to 'f'
|
||||
# 25 Jan 2021, 3d-gussner, Allow upper and lower case in selection
|
||||
# Add update option to release OR devel
|
||||
|
||||
#### Start: Failures
|
||||
failures()
|
||||
|
|
@ -74,7 +76,7 @@ while getopts c:f:g:m:n:p:u:x:y:?h flag
|
|||
# '?' 'h' argument usage and help
|
||||
if [ "$help_flag" == "1" ] ; then
|
||||
echo "***************************************"
|
||||
echo "* MK404-build.sh Version: 1.0.0-Build_13 *"
|
||||
echo "* MK404-build.sh Version: 1.0.0-Build_14 *"
|
||||
echo "***************************************"
|
||||
echo "Arguments:"
|
||||
echo "$(tput setaf 2)-c$(tput sgr0) Check for update"
|
||||
|
|
@ -98,7 +100,7 @@ echo " -g : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' l
|
|||
echo " -m : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes '$(tput setaf 2)2$(tput sgr0)' with MMU2"
|
||||
echo " -n : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes"
|
||||
echo " -p : '$(tput setaf 2)MK25$(tput sgr0)', '$(tput setaf 2)MK25S$(tput sgr0)', '$(tput setaf 2)MK3$(tput sgr0)' or '$(tput setaf 2)MK3S$(tput sgr0)'"
|
||||
echo " -u : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes '"
|
||||
echo " -u : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' release ', '$(tput setaf 2)2$(tput sgr0)' devel '"
|
||||
echo " -x : '$(tput setaf 2)8$(tput sgr0)',$(tput setaf 2)16$(tput sgr0)',$(tput setaf 2)32$(tput sgr0)' or '$(tput setaf 2)64$(tput sgr0)' Kb."
|
||||
echo " -y : '$(tput setaf 2)256$(tput sgr0)','$(tput setaf 2)384$(tput sgr0)','$(tput setaf 2)512$(tput sgr0)','$(tput setaf 2)1024$(tput sgr0)''$(tput setaf 2)32M$(tput sgr0)'"
|
||||
echo
|
||||
|
|
@ -170,9 +172,8 @@ fi
|
|||
#Start: Check if new build is selected
|
||||
if [ "$new_build_flag" == "1" ]; then
|
||||
check_flag=1
|
||||
update_flag=1
|
||||
fi
|
||||
if [ "$update_flag" == "1" ]; then
|
||||
if [[ "$update_flag" == "1" || "$update_flag" == "2" ]]; then
|
||||
check_flag=1
|
||||
fi
|
||||
#End: Check if new build is selected
|
||||
|
|
@ -196,11 +197,13 @@ if [ ! -z $firmware_version_flag ]; then
|
|||
if [ ! -z $MK404_PRINTER_TEMP ]; then
|
||||
MK404_PRINTER=MK25S
|
||||
fi
|
||||
elif [[ ! -z $new_build_flag || ! -z $update_flag || ! -z $check_flag ]]; then
|
||||
echo "continue"
|
||||
else
|
||||
failures 8
|
||||
fi
|
||||
|
||||
if [ -z "$MK404_PRINTER" ]; then
|
||||
if [[ -z $MK404_PRINTER && -z $new_build_flag && -z $update_flag && -z $check_flag ]]; then
|
||||
failures 9
|
||||
fi
|
||||
|
||||
|
|
@ -232,7 +235,7 @@ if [ ! -z $mk404_printer_flag ]; then
|
|||
fi
|
||||
fi
|
||||
|
||||
if [ -z $MK404_PRINTER ]; then
|
||||
if [[ -z $MK404_PRINTER && -z $new_build_flag && -z $update_flag && -z $check_flag ]]; then
|
||||
failures 10
|
||||
fi
|
||||
|
||||
|
|
@ -399,38 +402,58 @@ if [ "$check_flag" == "1" ]; then
|
|||
# Get latest release
|
||||
MK404_release_url=$(curl -Ls -o /dev/null -w %{url_effective} https://github.com/$MK404_owner/$MK404_project/releases/latest)
|
||||
MK404_release_tag=$(basename $MK404_release_url)
|
||||
# Get remote Commit_Hash
|
||||
#MK404_remote_GIT_COMMIT_HASH=$(git ls-remote --heads $(git config --get remote.origin.url) | grep "refs/heads/master" | cut -f 1)
|
||||
MK404_remote_GIT_COMMIT_HASH=$(git ls-remote | grep "refs/tags/$MK404_release_tag" | cut -f 1)
|
||||
# Get remote Commit_Number
|
||||
MK404_remote_GIT_COMMIT_NUMBER=$(git rev-list $MK404_release_tag --count)
|
||||
# Get release Commit_Hash
|
||||
MK404_release_GIT_COMMIT_HASH=$(git ls-remote | grep "refs/tags/$MK404_release_tag" | cut -f 1)
|
||||
# Get release Commit_Number
|
||||
MK404_release_GIT_COMMIT_NUMBER=$(git rev-list $MK404_release_tag --count)
|
||||
# Get latest development Commit_Hash
|
||||
MK404_devel_GIT_COMMIT_HASH=$(git for-each-ref refs/remotes/origin/master | cut -d" " -f 1)
|
||||
# Get latest development Commit_Number
|
||||
MK404_devel_GIT_COMMIT_NUMBER=$(git rev-list refs/remotes/origin/master --count)
|
||||
# Output
|
||||
echo ""
|
||||
echo "Current version : $MK404_current_version"
|
||||
echo ""
|
||||
echo "Current local hash : $MK404_local_GIT_COMMIT_HASH"
|
||||
echo "Current local commit nr : $MK404_local_GIT_COMMIT_NUMBER"
|
||||
if [ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_remote_GIT_COMMIT_HASH" ]; then
|
||||
if [ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_release_GIT_COMMIT_HASH" ]; then
|
||||
echo "$(tput setaf 1)"
|
||||
else
|
||||
echo "$(tput setaf 2)"
|
||||
fi
|
||||
echo "Latest release tag : $MK404_release_tag"
|
||||
echo "Latest release hash : $MK404_remote_GIT_COMMIT_HASH"
|
||||
echo "Latest remote commit nr : $MK404_remote_GIT_COMMIT_NUMBER"
|
||||
echo "Latest release hash : $MK404_release_GIT_COMMIT_HASH"
|
||||
echo "Latest release commit nr: $MK404_release_GIT_COMMIT_NUMBER"
|
||||
if [ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_devel_GIT_COMMIT_HASH" ]; then
|
||||
echo "$(tput setaf 1)"
|
||||
else
|
||||
echo "$(tput setaf 2)"
|
||||
fi
|
||||
echo "Latest devel hash : $MK404_devel_GIT_COMMIT_HASH"
|
||||
echo "Latest devel commit nr : $MK404_devel_GIT_COMMIT_NUMBER"
|
||||
echo "$(tput sgr 0)"
|
||||
|
||||
# Check for updates
|
||||
if [ ! -z $MK404_remote_GIT_COMMIT_HASH ]; then
|
||||
if [[ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_remote_GIT_COMMIT_HASH" && -z "$update_flag" ]]; then
|
||||
echo "$(tput setaf 2)Update is availible.$(tput sgr 0)"
|
||||
read -t 10 -n 1 -p "$(tput setaf 3)Update now Y/n$(tput sgr 0)" update_answer
|
||||
if [ "$update_answer" == "Y" ]; then
|
||||
if [ ! -z $MK404_release_GIT_COMMIT_HASH ]; then
|
||||
if [[ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_release_GIT_COMMIT_HASH" && -z "$update_flag" ]]; then
|
||||
echo "$(tput setaf 2)Update to release is availible.$(tput sgr 0)"
|
||||
read -t 10 -n 1 -p "$(tput setaf 3)Update to release now Y/n$(tput sgr 0)" update_answer
|
||||
if [[ "$update_answer" == "Y" || "$update_answer" == "y" ]]; then
|
||||
update_flag=1
|
||||
fi
|
||||
echo ""
|
||||
fi
|
||||
fi
|
||||
if [ ! -z $MK404_devel_GIT_COMMIT_HASH ]; then
|
||||
if [[ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_devel_GIT_COMMIT_HASH" && -z "$update_flag" ]]; then
|
||||
echo "$(tput setaf 2)Update to devel is availible.$(tput sgr 0)"
|
||||
read -t 10 -n 1 -p "$(tput setaf 3)Update to devel now Y/n$(tput sgr 0)" update_answer
|
||||
if [[ "$update_answer" == "Y" || "$update_answer" == "y" ]]; then
|
||||
update_flag=2
|
||||
fi
|
||||
echo ""
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
#### End: Check for updates
|
||||
|
|
@ -439,14 +462,27 @@ fi
|
|||
fetch_updates()
|
||||
{
|
||||
if [ "$update_flag" == "1" ]; then
|
||||
if [ ! -z $MK404_remote_GIT_COMMIT_HASH ]; then
|
||||
if [ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_remote_GIT_COMMIT_HASH" ]; then
|
||||
if [ ! -z $MK404_release_GIT_COMMIT_HASH ]; then
|
||||
if [ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_release_GIT_COMMIT_HASH" ]; then
|
||||
echo ""
|
||||
git fetch --all
|
||||
read -t 10 -p "$(tput setaf 2)Updating MK404 !$(tput sgr 0)"
|
||||
read -t 5 -p "$(tput setaf 2)Updating MK404 to release!$(tput sgr 0)"
|
||||
echo ""
|
||||
git reset --hard $MK404_release_tag
|
||||
read -t 10 -p "$(tput setaf 2)Compiling MK404 !$(tput sgr 0)"
|
||||
read -t 5 -p "$(tput setaf 2)Compiling MK404 release!$(tput sgr 0)"
|
||||
echo ""
|
||||
new_build_flag=1
|
||||
fi
|
||||
fi
|
||||
elif [ "$update_flag" == "2" ]; then
|
||||
if [ ! -z $MK404_devel_GIT_COMMIT_HASH ]; then
|
||||
if [ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_devel_GIT_COMMIT_HASH" ]; then
|
||||
echo ""
|
||||
git fetch --all
|
||||
read -t 5 -p "$(tput setaf 2)Updating MK404 to devel!$(tput sgr 0)"
|
||||
echo ""
|
||||
git reset --hard origin/master
|
||||
read -t 5 -p "$(tput setaf 2)Compiling MK404 devel!$(tput sgr 0)"
|
||||
echo ""
|
||||
new_build_flag=1
|
||||
fi
|
||||
|
|
|
|||
66
PF-build.sh
66
PF-build.sh
|
|
@ -56,7 +56,7 @@
|
|||
# Some may argue that this is only used by a script, BUT as soon someone accidentally or on purpose starts Arduino IDE
|
||||
# it will use the default Arduino IDE folders and so can corrupt the build environment.
|
||||
#
|
||||
# Version: 2.0.0-Build_63
|
||||
# Version: 2.0.0-Build_70
|
||||
# Change log:
|
||||
# 12 Jan 2019, 3d-gussner, Fixed "compiler.c.elf.flags=-w -Os -Wl,-u,vfprintf -lprintf_flt -lm -Wl,--gc-sections" in 'platform.txt'
|
||||
# 16 Jan 2019, 3d-gussner, Build_2, Added development check to modify 'Configuration.h' to prevent unwanted LCD messages that Firmware is unknown
|
||||
|
|
@ -165,8 +165,18 @@
|
|||
# 23 Jun 2021, 3d-gussner, Improve MK404 usage
|
||||
# 24 Jun 2021, 3d-gussner, Fix MK404 user interaction not to show if compiling 'All' variants
|
||||
# 24 Jun 2021, 3d-gussner, MK404 is only supported on Linux at this moment.
|
||||
# 03 Jan 2022, 3d-gussner, Remove calling lang-community.sh as not needed anymore
|
||||
# 21 Jan 2022, 3d-gussner, Sort variants
|
||||
# Add Arduino 1.8.19 as an option
|
||||
# 25 Jan 2022, 3d-gussner, Allow upper and lower case for MK404
|
||||
# 09 Feb 2022, 3d-gussner, Add community language firmware files for MK2.5/S
|
||||
# Add selection of language in MK404 for MK2.5/S
|
||||
# 10 Feb 2022, 3d-gussner, Add SRCDIR for compatibility with build server
|
||||
# 13 Feb 2022, leptun , Fix -o for "Restoring" messages after failure
|
||||
|
||||
|
||||
SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )"
|
||||
export SRCDIR=$SCRIPT_PATH
|
||||
|
||||
#### Start: Failures
|
||||
failures()
|
||||
|
|
@ -183,8 +193,8 @@ case "$1" in
|
|||
12) echo "$(tput setaf 5)Failed to copy file $(tput sgr0)" ; exit 12 ;;
|
||||
13) echo "$(tput setaf 5)Failed to delete $(tput sgr0)" ; exit 13 ;;
|
||||
20) echo "$(tput setaf 2)Conditional stop initiated by user $(tput sgr0)" ; exit 20 ;;
|
||||
21) echo "$(tput setaf 1)PF-build.sh has been interrupted/failed. $(tput setaf 6)Restoring 'Configuration.h'$(tput sgr0)" ; sleep 5 ;;
|
||||
22) echo "$(tput setaf 1)PF-build.sh has been interrupted/failed. $(tput setaf 6)Restoring 'config.h'$(tput sgr0)" ; sleep 5 ;;
|
||||
21) echo "$(tput setaf 1)PF-build.sh has been interrupted/failed. $(tput setaf 6)Restoring 'Configuration.h'$(tput sgr0)" ; if [ $OUTPUT == "1" ] ; then sleep 5 ; fi ;;
|
||||
22) echo "$(tput setaf 1)PF-build.sh has been interrupted/failed. $(tput setaf 6)Restoring 'config.h'$(tput sgr0)" ; if [ $OUTPUT == "1" ] ; then sleep 5 ; fi ;;
|
||||
24) echo "$(tput setaf 1)PF-build.sh stopped due to compiling errors! Try to restore modified files.$(tput sgr0)"; check_script_failed_nr1 ; check_script_failed_nr2 ; cleanup_firmware ; exit 24 ;;
|
||||
25) echo "$(tput setaf 1)Failed to execute $(tput sgr0)" ; exit 25 ;;
|
||||
esac
|
||||
|
|
@ -220,7 +230,7 @@ while getopts b:c:d:g:h:i:j:l:m:n:o:p:v:x:y:?h flag
|
|||
# '?' 'h' argument usage and help
|
||||
if [ "$help_flag" == "1" ] ; then
|
||||
echo "***************************************"
|
||||
echo "* PF-build.sh Version: 2.0.0-Build_63 *"
|
||||
echo "* PF-build.sh Version: 2.0.0-Build_70 *"
|
||||
echo "***************************************"
|
||||
echo "Arguments:"
|
||||
echo "$(tput setaf 2)-b$(tput sgr0) Build/commit number"
|
||||
|
|
@ -246,7 +256,7 @@ echo " -b : '$(tput setaf 2)Auto$(tput sgr0)' needs git or a number"
|
|||
echo " -c : '$(tput setaf 2)0$(tput sgr0)' clean up, '$(tput setaf 2)1$(tput sgr0)' keep"
|
||||
echo " -d : '$(tput setaf 2)GOLD$(tput sgr0)', '$(tput setaf 2)RC$(tput sgr0)', '$(tput setaf 2)BETA$(tput sgr0)', '$(tput setaf 2)ALPHA$(tput sgr0)', '$(tput setaf 2)DEBUG$(tput sgr0)', '$(tput setaf 2)DEVEL$(tput sgr0)' and '$(tput setaf 2)UNKNOWN$(tput sgr0)'"
|
||||
echo " -g : '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' lite '$(tput setaf 2)2$(tput sgr0)' fancy '$(tput setaf 2)3$(tput sgr0)' lite with Quad_HR '$(tput setaf 2)4$(tput sgr0)' fancy with Quad_HR"
|
||||
echo " -i : '$(tput setaf 2)1.8.5$(tput sgr0)', '$(tput setaf 2)1.8.13$(tput sgr0)'"
|
||||
echo " -i : '$(tput setaf 2)1.8.5$(tput sgr0)', '$(tput setaf 2)1.8.13$(tput sgr0)', '$(tput setaf 2)1.8.19$(tput sgr0)'"
|
||||
echo " -j : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes"
|
||||
echo " -l : '$(tput setaf 2)ALL$(tput sgr0)' for multi language or '$(tput setaf 2)EN_ONLY$(tput sgr0)' for English only"
|
||||
echo " -m : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes '$(tput setaf 2)2$(tput sgr0)' with MMU2"
|
||||
|
|
@ -342,7 +352,7 @@ fi
|
|||
|
||||
#Start: Check if Arduino IDE version is correct
|
||||
if [ ! -z "$IDE_flag" ]; then
|
||||
if [[ "$IDE_flag" == "1.8.5" || "$IDE_flag" == "1.8.13" ]]; then
|
||||
if [[ "$IDE_flag" == "1.8.5" || "$IDE_flag" == "1.8.13" || "$IDE_flag" == "1.8.19" ]]; then
|
||||
ARDUINO_ENV="${IDE_flag}"
|
||||
else
|
||||
ARDUINO_ENV="1.8.5"
|
||||
|
|
@ -817,7 +827,8 @@ if [ -z "$variant_flag" ] ; then
|
|||
while IFS= read -r -d $'\0' f; do
|
||||
options[i++]="$f"
|
||||
done < <(find Firmware/variants/ -maxdepth 1 -type f -name "*.h" -print0 )
|
||||
select opt in "${options[@]}" "All" "Quit"; do
|
||||
IFS=$'\n' sorted=($(sort -n <<<"${options[*]}")); unset IFS
|
||||
select opt in "${sorted[@]}" "All" "Quit"; do
|
||||
case $opt in
|
||||
*.h)
|
||||
VARIANT=$(basename "$opt" ".h")
|
||||
|
|
@ -1302,8 +1313,6 @@ create_multi_firmware()
|
|||
# build languages
|
||||
echo "$(tput setaf 3)"
|
||||
./lang-build.sh || failures 25
|
||||
# build community languages
|
||||
./lang-community.sh || failures 25
|
||||
# Combine compiled firmware with languages
|
||||
./fw-build.sh || failures 25
|
||||
cp not_tran.txt not_tran_$VARIANT.txt
|
||||
|
|
@ -1318,25 +1327,24 @@ create_multi_firmware()
|
|||
cp -f firmware.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME.hex
|
||||
cp -f $BUILD_PATH/Firmware.ino.elf $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME.elf
|
||||
else
|
||||
echo "$(tput setaf 2)Zip multi language firmware for MK2.5/miniRAMbo board to PF-build-hex folder$(tput sgr 0)"
|
||||
cp -f firmware_cz.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-cz.hex
|
||||
cp -f firmware_de.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-de.hex
|
||||
cp -f firmware_es.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-es.hex
|
||||
cp -f firmware_fr.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-fr.hex
|
||||
cp -f firmware_it.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-it.hex
|
||||
cp -f firmware_pl.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-pl.hex
|
||||
cp -f firmware_nl.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-nl.hex
|
||||
#Search for created firmware languages
|
||||
langs=$(find firmware_*.hex | cut -d "_" -f2 | cut -d "." -f1)
|
||||
#Copy found firmware_*.hex files
|
||||
for la in $langs; do
|
||||
cp -f firmware_$la.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-$la.hex
|
||||
done
|
||||
cp -f $BUILD_PATH/Firmware.ino.elf $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME.elf
|
||||
echo "$(tput setaf 2)Zip multi language firmware for MK2.5/miniRAMbo board to PF-build-hex folder$(tput sgr 0)"
|
||||
if [ $TARGET_OS == "windows" ]; then
|
||||
zip a $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME.zip $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-??.hex
|
||||
rm $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-??.hex
|
||||
#rm $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-??.hex
|
||||
elif [ $TARGET_OS == "linux" ]; then
|
||||
# Make a copy for MK404 sim of MK2, MK2.5, MK2.5S firmware
|
||||
if [ ! -z "$mk404_flag" ]; then
|
||||
cp -f firmware_de.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME.hex
|
||||
fi
|
||||
# End of MK2, MK2.5, MK2.5S firmware copy
|
||||
zip -m -j ../../$OUTPUT_FOLDER/$OUTPUT_FILENAME.zip ../../$OUTPUT_FOLDER/$OUTPUT_FILENAME-??.hex
|
||||
zip -j ../../$OUTPUT_FOLDER/$OUTPUT_FILENAME.zip ../../$OUTPUT_FOLDER/$OUTPUT_FILENAME-??.hex
|
||||
fi
|
||||
fi
|
||||
|
||||
|
|
@ -1454,7 +1462,7 @@ if [[ "$output_flag" == "1" || -z "$output_flag" ]]; then
|
|||
if [[ -z "$mk404_flag" && "$variant_flag" != "All" ]]; then
|
||||
echo
|
||||
read -t 10 -n 1 -p "Do you want to start MK404? Y/$(tput setaf 2)n$(tput sgr 0)" mk404_start
|
||||
if [ "$mk404_start" == "Y" ]; then
|
||||
if [[ "$mk404_start" == "Y" || "$mk404_start" == "y" ]]; then
|
||||
echo
|
||||
read -t 10 -n 1 -p "Do you want to start MK404 with or without MMU2S? $(tput setaf 2)1$(tput sgr 0)/2" mk404_choose1
|
||||
if [ "$mk404_choose1" == "1" ]; then
|
||||
|
|
@ -1497,11 +1505,6 @@ fi
|
|||
|
||||
if [[ ! -z "$mk404_flag" && "$variant_flag" != "All " ]]; then
|
||||
|
||||
# For Prusa MK2, MK2.5/S
|
||||
if [ "$MOTHERBOARD" == "BOARD_RAMBO_MINI_1_3" ]; then
|
||||
MK404_PRINTER="${MK404_PRINTER}_mR13"
|
||||
fi
|
||||
|
||||
# Run MK404 with 'debugcore' and/or 'bootloader-file'
|
||||
if [ ! -z "$board_mem_flag" ]; then
|
||||
MK404_options="-x $board_mem_flag"
|
||||
|
|
@ -1532,7 +1535,16 @@ if [[ ! -z "$mk404_flag" && "$variant_flag" != "All " ]]; then
|
|||
|
||||
#Decide which hex file to use EN_ONLY or Multi language
|
||||
if [ "$LANGUAGES" == "ALL" ]; then
|
||||
MK404_firmware_file=$SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME.hex
|
||||
if [[ "$MK404_PRINTER" == "MK3" || "$MK404_PRINTER" == "MK3S" ]]; then
|
||||
MK404_firmware_file=$SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME.hex
|
||||
else
|
||||
PS3="Select a language:"
|
||||
select lan in ${langs[@]}
|
||||
do
|
||||
MK404_firmware_file=$SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-$lan.hex
|
||||
break
|
||||
done
|
||||
fi
|
||||
else
|
||||
MK404_firmware_file=$SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-EN_ONLY.hex
|
||||
fi
|
||||
|
|
@ -1604,4 +1616,4 @@ done
|
|||
finish_pf-build
|
||||
if [ $TARGET_OS == "linux" ]; then
|
||||
MK404_SIM
|
||||
fi
|
||||
fi
|
||||
|
|
|
|||
18
README.md
18
README.md
|
|
@ -63,7 +63,7 @@ _Note: Multi language build is not supported._
|
|||
|
||||
**a.** Install `"Arduino Software IDE"` from the official website `https://www.arduino.cc -> Software->Downloads`
|
||||
|
||||
_It is recommended to use version `"1.8.5"`, as it is used on out build server to produce official builds._
|
||||
_It is recommended to use version `"1.8.5"`, as it is used on our build server to produce official builds._
|
||||
|
||||
**b.** Setup Arduino to use Prusa Rambo board definition
|
||||
|
||||
|
|
@ -118,7 +118,7 @@ _notes: Script and instructions contributed by 3d-gussner. Use at your own risk.
|
|||
- to install zip run `sudo apt-get install zip`
|
||||
- to install dos2unix run `sudo apt-get install dos2unix`
|
||||
- run `dos2unix PF-build.sh` to convert the windows line endings to unix line endings
|
||||
- add few lines at the top of `~/.bashrc` by running `sudo nano ~/.bashrc`
|
||||
- add a few lines at the top of `~/.bashrc` by running `sudo nano ~/.bashrc`
|
||||
|
||||
export OS="Linux"
|
||||
export JAVA_TOOL_OPTIONS="-Djava.net.preferIPv4Stack=true"
|
||||
|
|
@ -134,14 +134,14 @@ _notes: Script and instructions contributed by 3d-gussner. Use at your own risk.
|
|||
- Example: You files are under `C:\Users\<your-username>\Downloads\Prusa-Firmware-MK3`
|
||||
- use under Ubuntu the following command `cd /mnt/c/Users/<your-username>/Downloads/Prusa-Firmware-MK3`
|
||||
to change to the right folder
|
||||
- Unix and windows have different line endings (LF vs CRLF), try dos2unix to convert
|
||||
- Unix and Windows have different line endings (LF vs CRLF), use dos2unix to convert
|
||||
- This should fix the `"$'\r': command not found"` error
|
||||
- to install run `apt-get install dos2unix`
|
||||
- If your Windows isn't in English the Paths may look different
|
||||
Example in other languages
|
||||
- English `/mnt/c/Users/<your-username>/Downloads/Prusa-Firmware-MK3` will be on a German Windows`/mnt/c/Anwender/<your-username>/Downloads/Prusa-Firmware-MK3`
|
||||
#### Compile Prusa-firmware with Ubuntu/Debian Linux subsystem installed
|
||||
- open Ubuntu bash
|
||||
- open Ubuntu bash shell
|
||||
- change to your source code folder (case sensitive)
|
||||
- run `./PF-build.sh`
|
||||
- follow the instructions
|
||||
|
|
@ -211,14 +211,14 @@ Q:I built firmware using Arduino and I see "?" instead of numbers in printer use
|
|||
|
||||
A:Step 1.c was omitted or you updated Arduino and now platform.txt located somewhere in your user profile is used.
|
||||
|
||||
Q:I built firmware using Arduino and printer now speaks Klingon (nonsense characters and symbols are displayed @^#$&*°;~ÿ)
|
||||
Q:I built firmware using Arduino and my printer now speaks "Klingon" (nonsense characters and symbols are displayed @^#$&*°;~ÿ)
|
||||
|
||||
A:Step 2.c was omitted.
|
||||
|
||||
Q:What environment does Prusa use to build the firmware in the first place?
|
||||
Q:What environment does Prusa use to build its official firmware releases?
|
||||
|
||||
A:Our production builds are 99.9% equivalent to https://github.com/prusa3d/Prusa-Firmware#linux this is also easiest way to build as only one step is needed - run single script, which downloads patched Arduino from github, builds using it, then extracts translated strings and creates language variants (for MK2x) or language hex file for external SPI flash (MK3x). But you need Linux or Linux in virtual machine. This is also what happens when you open pull request to our repository - all variants are built by Travis http://travis-ci.org/ (to check for compilation errors). You can see, what is happening in .travis.yml. It would be also possible to get hex built by travis, only deploy step is missing in .travis.yml. You can get inspiration how to deploy hex by travis and how to setup travis in https://github.com/prusa3d/MM-control-01/ repository. Final hex is located in ./lang/firmware.hex Community reproduced this for Windows in https://github.com/prusa3d/Prusa-Firmware#using-linux-subsystem-under-windows-10-64-bit or https://github.com/prusa3d/Prusa-Firmware#using-git-bash-under-windows-10-64-bit .
|
||||
A:Our production builds are 99.9% equivalent to https://github.com/prusa3d/Prusa-Firmware#linux this is also easiest way to build as only one step is needed - run a single script, which downloads patched Arduino from GitHub, builds using it, then extracts translated strings and creates language variants (for MK2x) or language hex file for external SPI flash (MK3x). But you need Linux or Linux in a virtual machine. This is also what happens when you open a pull request to our repository - all variants are built by Travis http://travis-ci.org/ (to check for compilation errors). You can see, what is happening in .travis.yml. It would be also possible to get hex built by Travis, only the deploy step is missing in .travis.yml. You can find inspiration on how to deploy hex in Travis and how to setup Travis in https://github.com/prusa3d/MM-control-01/ repository. The final hex is located in ./lang/firmware.hex - community reproduced this for Windows in https://github.com/prusa3d/Prusa-Firmware#using-linux-subsystem-under-windows-10-64-bit or https://github.com/prusa3d/Prusa-Firmware#using-git-bash-under-windows-10-64-bit .
|
||||
|
||||
Q:Why are build instructions for Arduino mess.
|
||||
Q:Why are build instructions for Arduino a mess?
|
||||
|
||||
Y:We are too lazy to ship proper board definition for Arduino. We plan to switch to cmake + ninja to be inherently multiplatform, easily integrate build tools, suport more IDEs, get 10 times shorter build times and be able to update compiler whenever we want.
|
||||
Y:We are too lazy to ship a proper board definition for Arduino. We plan to switch to CMake + ninja to be inherently multiplatform, easily integrate build tools, suport more IDEs, get 10 times shorter build times and be able to update compiler whenever we want.
|
||||
|
|
|
|||
|
|
@ -4,11 +4,11 @@ We will use Dutch as an example here.
|
|||
|
||||
## Prepare Prusa Firmware
|
||||
|
||||
QR = palceholder for language in upper case
|
||||
QR = placeholder for language in upper case
|
||||
|
||||
qr = placehodler for language in lower case
|
||||
qr = placeholder for language in lower case
|
||||
|
||||
AB = palceholder for hexadecial
|
||||
AB = placeholder for hexadecimal
|
||||
|
||||
Files needs to be modified
|
||||
- `../Firmware/language.h`
|
||||
|
|
@ -36,7 +36,7 @@ https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
|
|||
|
||||
- `../lang/lang-build.sh`
|
||||
|
||||
In section `#returns hexadecial data for lang code` add a case `*qr*) echo '0x71\0x72'`
|
||||
In section `#returns hexadecimal data for lang code` add a case `*qr*) echo '0x71\0x72'`
|
||||
|
||||
Example:
|
||||
`*nl*) echo '\x6c\x6e' ;;` !!! IMPORTANT that the hex values are switched so 'nl' is here in 'ln' !!!
|
||||
|
|
@ -174,7 +174,7 @@ https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
|
|||
|
||||
## Prepare language part
|
||||
|
||||
To prepare the acutal language translation files we need create the `lang_en_qr.txt` file.
|
||||
To prepare the actual language translation files we need create the `lang_en_qr.txt` file.
|
||||
1. Copy and `lang_en.txt` as `lang_en_qr.txt`
|
||||
2. run `../lang/lang-export.sh`
|
||||
3. copy `../lang/po/Firmware_qr.po` file to `../lang/po/new/qr.po`
|
||||
|
|
@ -185,10 +185,10 @@ To prepare the acutal language translation files we need create the `lang_en_qr.
|
|||
```
|
||||
qr_filtered.po
|
||||
qr_new.po
|
||||
noasci.txt
|
||||
nonascii.txt
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
##
|
||||
##
|
||||
|
|
|
|||
104
lang/config.sh
104
lang/config.sh
|
|
@ -1,20 +1,51 @@
|
|||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
#
|
||||
# Version 1.0.1 Build 10
|
||||
#
|
||||
# config.sh - multi-language support configuration script
|
||||
# Definition of absolute paths etc.
|
||||
# This file is 'included' in all scripts.
|
||||
#
|
||||
#############################################################################
|
||||
# Change log:
|
||||
# 31 May 2018, XPila, Initial
|
||||
# 17 Dec. 2021, 3d-gussner, Change default Arduino path to by PF-build.sh
|
||||
# created one
|
||||
# Prepare to use one config file for all languages
|
||||
# 11 Jan. 2022, 3d-gussner, Added version and Change log colored output
|
||||
# Use `git rev-list --count HEAD config.sh`
|
||||
# to get Build Nr
|
||||
# Check if variables are set by other scripts
|
||||
# and use these. More flexible for different build
|
||||
# scripts
|
||||
# Check correctly if files or dirs exist
|
||||
# 10 Feb. 2022, 3d-gussner, Add SRCDIR for compatibility with build server
|
||||
#############################################################################
|
||||
#
|
||||
if [ -z "$SRCDIR" ]; then
|
||||
export SRCDIR=".."
|
||||
fi
|
||||
|
||||
LNGDIR="$( cd "$(dirname "$0")" ; pwd -P )"
|
||||
export LNGDIR=$LNGDIR
|
||||
|
||||
# Arduino main folder:
|
||||
if [ -z "$ARDUINO" ]; then
|
||||
export ARDUINO=C:/arduino-1.8.5
|
||||
export ARDUINO=../../PF-build-env-1.0.6/1.8.5-1.0.4-linux-64 #C:/arduino-1.8.5
|
||||
fi
|
||||
#
|
||||
# Arduino builder:
|
||||
export BUILDER=$ARDUINO/arduino-builder
|
||||
if [ -z "$BUILDER" ]; then
|
||||
export BUILDER=$ARDUINO/arduino-builder
|
||||
fi
|
||||
#
|
||||
# AVR gcc tools:
|
||||
export OBJCOPY=$ARDUINO/hardware/tools/avr/bin/avr-objcopy
|
||||
export OBJDUMP=$ARDUINO/hardware/tools/avr/bin/avr-objdump
|
||||
if [ -z "$OBJCOPY" ]; then
|
||||
export OBJCOPY=$ARDUINO/hardware/tools/avr/bin/avr-objcopy
|
||||
fi
|
||||
if [ -z "$OBJDUMP" ]; then
|
||||
export OBJDUMP=$ARDUINO/hardware/tools/avr/bin/avr-objdump
|
||||
fi
|
||||
#
|
||||
# Output folder:
|
||||
if [ -z "$OUTDIR" ]; then
|
||||
|
|
@ -22,47 +53,82 @@ if [ -z "$OUTDIR" ]; then
|
|||
fi
|
||||
#
|
||||
# Objects folder:
|
||||
export OBJDIR="$OUTDIR/sketch"
|
||||
if [ -z "$OBJDIR" ]; then
|
||||
export OBJDIR="$OUTDIR/sketch"
|
||||
fi
|
||||
#
|
||||
# Generated elf file:
|
||||
export INOELF="$OUTDIR/Firmware.ino.elf"
|
||||
if [ -z "$INOELF" ]; then
|
||||
export INOELF="$OUTDIR/Firmware.ino.elf"
|
||||
fi
|
||||
#
|
||||
# Generated hex file:
|
||||
export INOHEX="$OUTDIR/Firmware.ino.hex"
|
||||
if [ -z "$INOHEX" ]; then
|
||||
export INOHEX="$OUTDIR/Firmware.ino.hex"
|
||||
fi
|
||||
#
|
||||
# Set default languages
|
||||
if [ -z "$LANGUAGES" ]; then
|
||||
export LANGUAGES="cz de es fr it pl"
|
||||
fi
|
||||
#
|
||||
# Check for community languages
|
||||
MAX_COMMINITY_LANG=10 # Total 16 - 6 default
|
||||
COMMUNITY_LANGUAGES=""
|
||||
#Search Firmware/config.h for active community group
|
||||
COMMUNITY_LANG_GROUP=$(grep --max-count=1 "^#define COMMUNITY_LANG_GROUP" $SRCDIR/Firmware/config.h| cut -d ' ' -f3)
|
||||
|
||||
# Search Firmware/config.h for active community languanges
|
||||
if [ "$COMMUNITY_LANG_GROUP" = "1" ]; then
|
||||
COMMUNITY_LANGUAGES=$(grep --max-count=$MAX_COMMINITY_LANG "^#define COMMUNITY_LANG_GROUP1_" $SRCDIR/Firmware/config.h| cut -d '_' -f4 |cut -d ' ' -f1 |tr '[:upper:]' '[:lower:]'| tr '\n' ' ')
|
||||
elif [ "$COMMUNITY_LANG_GROUP" = "2" ]; then
|
||||
COMMUNITY_LANGUAGES=$(grep --max-count=$MAX_COMMINITY_LANG "^#define COMMUNITY_LANG_GROUP2_" $SRCDIR/Firmware/config.h| cut -d '_' -f4 |cut -d ' ' -f1 |tr '[:upper:]' '[:lower:]'| tr '\n' ' ')
|
||||
elif [ "$COMMUNITY_LANG_GROUP" = "3" ]; then
|
||||
COMMUNITY_LANGUAGES=$(grep --max-count=$MAX_COMMINITY_LANG "^#define COMMUNITY_LANG_GROUP3_" $SRCDIR/Firmware/config.h| cut -d '_' -f4 |cut -d ' ' -f1 |tr '[:upper:]' '[:lower:]'| tr '\n' ' ')
|
||||
fi
|
||||
|
||||
echo "config.sh started" >&2
|
||||
if [ -z "$COMMUNITY_LANGUAGES" ]; then
|
||||
export COMMUNITY_LANGUAGES="$COMMUNITY_LANGUAGES"
|
||||
fi
|
||||
|
||||
echo "$(tput setaf 2)config.sh started$(tput sgr0)" >&2
|
||||
|
||||
_err=0
|
||||
|
||||
echo -n " Arduino main folder: " >&2
|
||||
if [ -e $ARDUINO ]; then echo 'OK' >&2; else echo 'NG!' >&2; _err=1; fi
|
||||
if [ -d $ARDUINO ]; then echo "$(tput setaf 2)OK$(tput sgr0)" >&2; else echo "$(tput setaf 1)NG!$(tput sgr0)" >&2; _err=1; fi
|
||||
|
||||
echo -n " Arduino builder: " >&2
|
||||
if [ -e $BUILDER ]; then echo 'OK' >&2; else echo 'NG!' >&2; _err=2; fi
|
||||
if [ -e $BUILDER ]; then echo "$(tput setaf 2)OK$(tput sgr0)" >&2; else echo "$(tput setaf 1)NG!$(tput sgr0)" >&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
|
||||
if [ -e $OBJCOPY ]; then echo "$(tput setaf 2)OK$(tput sgr0)" >&2; else echo "$(tput setaf 1)NG!$(tput sgr0)" >&2; _err=3; fi
|
||||
echo -n " objdump " >&2
|
||||
if [ -e $OBJDUMP ]; then echo 'OK' >&2; else echo 'NG!' >&2; _err=4; fi
|
||||
if [ -e $OBJDUMP ]; then echo "$(tput setaf 2)OK$(tput sgr0)" >&2; else echo "$(tput setaf 1)NG!$(tput sgr0)" >&2; _err=4; fi
|
||||
|
||||
echo -n " Output folder: " >&2
|
||||
if [ -e $OUTDIR ]; then echo 'OK' >&2; else echo 'NG!' >&2; _err=5; fi
|
||||
if [ -d $OUTDIR ]; then echo "$(tput setaf 2)OK$(tput sgr0)" >&2; else echo "$(tput setaf 1)NG!$(tput sgr0)" >&2; _err=5; fi
|
||||
|
||||
echo -n " Objects folder: " >&2
|
||||
if [ -e $OBJDIR ]; then echo 'OK' >&2; else echo 'NG!' >&2; _err=6; fi
|
||||
if [ -d $OBJDIR ]; then echo "$(tput setaf 2)OK$(tput sgr0)" >&2; else echo "$(tput setaf 1)NG!$(tput sgr0)" >&2; _err=6; fi
|
||||
|
||||
echo -n " Generated elf file: " >&2
|
||||
if [ -e $INOELF ]; then echo 'OK' >&2; else echo 'NG!' >&2; _err=7; fi
|
||||
if [ -e $INOELF ]; then echo "$(tput setaf 2)OK$(tput sgr0)" >&2; else echo "$(tput setaf 1)NG!$(tput sgr0)" >&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 [ -e $INOHEX ]; then echo "$(tput setaf 2)OK$(tput sgr0)" >&2; else echo "$(tput setaf 1)NG!$(tput sgr0)" >&2; _err=8; fi
|
||||
|
||||
echo -n " Languages: " >&2
|
||||
echo "$(tput setaf 2)$LANGUAGES$(tput sgr0)" >&2
|
||||
|
||||
echo -n " Community languages: " >&2
|
||||
echo "$(tput setaf 2)$COMMUNITY_LANGUAGES$(tput sgr0)" >&2
|
||||
|
||||
if [ $_err -eq 0 ]; then
|
||||
echo "config.sh finished with success" >&2
|
||||
echo "$(tput setaf 2)config.sh finished with success$(tput sgr0)" >&2
|
||||
export CONFIG_OK=1
|
||||
else
|
||||
echo "config.sh finished with errors!" >&2
|
||||
echo "$(tput setaf 1)config.sh finished with errors!$(tput sgr0)" >&2
|
||||
export CONFIG_OK=0
|
||||
fi
|
||||
|
|
|
|||
183
lang/fw-build.sh
183
lang/fw-build.sh
|
|
@ -1,5 +1,7 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Version 1.0.2 Build 12
|
||||
#
|
||||
# postbuild.sh - multi-language support script
|
||||
# Generate binary with secondary language.
|
||||
#
|
||||
|
|
@ -17,26 +19,52 @@
|
|||
# $PROGMEM.txt
|
||||
# textaddr.txt
|
||||
#
|
||||
#############################################################################
|
||||
# Change log:
|
||||
# 31 May 2018, XPila, Initial
|
||||
# 17 Dec. 2021, 3d-gussner, Use one config file for all languages
|
||||
# 11 Jan. 2022, 3d-gussner, Add check for not translated messages using a
|
||||
# parameter
|
||||
# Added version and Change log
|
||||
# colored output
|
||||
# Add Community language support
|
||||
# Use `git rev-list --count HEAD fw-build.sh`
|
||||
# to get Build Nr
|
||||
#############################################################################
|
||||
#
|
||||
# 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
|
||||
if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo "$(tput setaf 1)Config NG!$(tput sgr0)" >&2; exit 1; fi
|
||||
#
|
||||
# Selected language:
|
||||
LNG=$1
|
||||
#if [ -z "$LNG" ]; then LNG='cz'; fi
|
||||
#
|
||||
# Params:
|
||||
IGNORE_MISSING_TEXT=1
|
||||
|
||||
#Set default to ignore missing text
|
||||
CHECK_MISSING_TEXT=0
|
||||
#Check if script should check for missing messages in the source code aren't translated by using parameter "--check-missing-text"
|
||||
if [ "$1" = "--check-missing-text" ]; then
|
||||
CHECK_MISSING_TEXT=1
|
||||
fi
|
||||
|
||||
# List of supported languages
|
||||
if [ -z "$LANGUAGES" ]; then
|
||||
LANGUAGES="cz de es fr it pl"
|
||||
fi
|
||||
|
||||
# Community languages
|
||||
if [ ! -z "$COMMUNITY_LANGUAGES" ]; then
|
||||
LANGUAGES+=" $COMMUNITY_LANGUAGES"
|
||||
fi
|
||||
echo "$(tput setaf 2)fw-build.sh started$(tput sgr 0)" >&2
|
||||
echo "fw-build languages:$(tput setaf 2)$LANGUAGES$(tput sgr 0)" >&2
|
||||
|
||||
finish()
|
||||
{
|
||||
echo
|
||||
if [ "$1" = "0" ]; then
|
||||
echo "postbuild.sh finished with success" >&2
|
||||
echo "$(tput setaf 2)fw-build.sh finished with success$(tput sgr 0)" >&2
|
||||
else
|
||||
echo "postbuild.sh finished with errors!" >&2
|
||||
echo "$(tput setaf 1)fw-build.sh finished with errors!$(tput sgr 0)" >&2
|
||||
fi
|
||||
case "$-" in
|
||||
*i*) echo "press enter key"; read ;;
|
||||
|
|
@ -44,48 +72,48 @@ finish()
|
|||
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
|
||||
if [ ! -e $OUTDIR ]; then echo "$(tput setaf 1) folder '$OUTDIR' not found!$(tput sgr 0)" >&2; finish 1; fi
|
||||
echo "$(tput setaf 2) folder OK$(tput sgr 0)" >&2
|
||||
if [ ! -e $INOELF ]; then echo "$(tput setaf 1) elf file '$INOELF' not found!$(tput sgr 0)" >&2; finish 1; fi
|
||||
echo "$(tput setaf 2) elf OK$(tput sgr 0)" >&2
|
||||
if ! ls $OBJDIR/*.o >/dev/null 2>&1; then echo "$(tput setaf 1) no object files in '$OBJDIR/'!$(tput sgr 0)" >&2; finish 1; fi
|
||||
echo "$(tput setaf 2) objects OK$(tput sgr 0)" >&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
|
||||
if [ $? -ne 0 ]; then echo "$(tput setaf 1)NG! - check progmem.out file$(tput sgr 0)" >&2; finish 1; fi
|
||||
echo "$(tput setaf 2)OK$(tput sgr 0)" >&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
|
||||
if [ $? -ne 0 ]; then echo "$(tput setaf 1)NG! - check progmem.out file$(tput sgr 0)" >&2; finish 1; fi
|
||||
echo "$(tput setaf 2)OK$(tput sgr 0)" >&2
|
||||
|
||||
#check for messages declared in progmem1, but not found in lang_en.txt
|
||||
echo -n " checking textaddr.txt..." >&2
|
||||
cat textaddr.txt | grep "^TEXT NF" | sed "s/[^\"]*\"//;s/\"$//" >not_used.txt
|
||||
cat textaddr.txt | grep "^ADDR NF" | sed "s/[^\"]*\"//;s/\"$//" >not_tran.txt
|
||||
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
|
||||
echo "$(tput setaf 1)NG! - some texts not found in lang_en.txt!$(tput sgr 0)"
|
||||
if [ $CHECK_MISSING_TEXT -eq 1 ]; then
|
||||
echo "$(tput setaf 1)Missing text found, please update the language files!$(tput setaf 6)" >&2
|
||||
cat not_tran.txt >&2
|
||||
finish 1
|
||||
else
|
||||
echo " missing text ignored!" >&2
|
||||
echo "$(tput setaf 3) missing text ignored!$(tput sgr 0)" >&2
|
||||
fi
|
||||
else
|
||||
echo "OK" >&2
|
||||
echo "$(tput setaf 2)OK$(tput sgr 0)" >&2
|
||||
fi
|
||||
|
||||
#extract binary file
|
||||
echo -n " extracting binary..." >&2
|
||||
$OBJCOPY -I ihex -O binary $INOHEX ./firmware.bin
|
||||
echo "OK" >&2
|
||||
echo "$(tput setaf 2)OK$(tput sgr 0)" >&2
|
||||
|
||||
#update binary file
|
||||
echo " updating binary:" >&2
|
||||
|
|
@ -97,14 +125,14 @@ cat textaddr.txt | grep "^ADDR OK" | cut -f3- -d' ' | sed "s/^0000/0x/" |\
|
|||
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
|
||||
echo "$(tput setaf 2)OK$(tput sgr 0)" >&2
|
||||
|
||||
#update primary language signature in binary file
|
||||
echo -n " primary language signature..." >&2
|
||||
if [ -e lang_en.bin ]; then
|
||||
#find symbol _PRI_LANG_SIGNATURE in section '.text'
|
||||
pri_lang=$(cat text.sym | grep -E "\b_PRI_LANG_SIGNATURE\b")
|
||||
if [ -z "$pri_lang" ]; then echo "NG!\n symbol _PRI_LANG_SIGNATURE not found!" >&2; finish 1; fi
|
||||
if [ -z "$pri_lang" ]; then echo "$(tput setaf 1)NG!\n symbol _PRI_LANG_SIGNATURE not found!$(tput sgr 0)" >&2; finish 1; fi
|
||||
#get pri_lang address
|
||||
pri_lang_addr='0x'$(echo $pri_lang | cut -f1 -d' ')
|
||||
#read header from primary language binary file
|
||||
|
|
@ -113,90 +141,41 @@ if [ -e lang_en.bin ]; then
|
|||
chscnt=$(echo $header | cut -c18-29 | sed "s/ /\\\\x/g")
|
||||
/bin/echo -e -n "$chscnt" |\
|
||||
dd of=firmware.bin bs=1 count=4 seek=$(($pri_lang_addr)) conv=notrunc 2>/dev/null
|
||||
echo "OK" >&2
|
||||
echo "$(tput setaf 2)OK$(tput sgr 0)" >&2
|
||||
else
|
||||
echo "NG! - file lang_en.bin not found!" >&2;
|
||||
echo "$(tput setaf 1)NG! - file lang_en.bin not found!$(tput sgr 0)" >&2;
|
||||
finish 1
|
||||
fi
|
||||
|
||||
#convert bin to hex
|
||||
echo -n " converting to hex..." >&2
|
||||
echo -n " converting primary to hex..." >&2
|
||||
$OBJCOPY -I binary -O ihex ./firmware.bin ./firmware.hex
|
||||
echo "OK" >&2
|
||||
echo "$(tput setaf 2)OK$(tput sgr 0)" >&2
|
||||
|
||||
#update _SEC_LANG in binary file if language is selected
|
||||
echo -n " secondary language data..." >&2
|
||||
echo -n " secondary language data..." >&2
|
||||
if [ ! -z "$LNG" ]; then
|
||||
./update_lang.sh $LNG 2>./update_lang.out
|
||||
if [ $? -ne 0 ]; then echo "NG! - check update_lang.out file" >&2; finish 1; fi
|
||||
echo "OK" >&2
|
||||
if [ $? -ne 0 ]; then echo "$(tput setaf 1)NG! - check update_lang.out file$(tput sgr 0)" >&2; finish 1; fi
|
||||
echo "$(tput setaf 2)OK$(tput sgr 0)" >&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; finish 1; 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; finish 1; 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; finish 1; 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; finish 1; fi
|
||||
fi
|
||||
if [ -e lang_fr.bin ]; then
|
||||
echo -n " French : " >&2
|
||||
./update_lang.sh fr 2>./update_lang_fr.out 1>/dev/null
|
||||
if [ $? -eq 0 ]; then echo 'OK' >&2; else echo 'NG!' >&2; finish 1; 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; finish 1; fi
|
||||
fi
|
||||
#Community language support
|
||||
#Dutch
|
||||
if [ -e lang_nl.bin ]; then
|
||||
echo -n " Dutch : " >&2
|
||||
./update_lang.sh nl 2>./update_lang_nl.out 1>/dev/null
|
||||
if [ $? -eq 0 ]; then echo 'OK' >&2; else echo 'NG!' >&2; fi
|
||||
fi
|
||||
|
||||
#Use the 6 lines below as a template and replace 'qr' and 'New language'
|
||||
#New language
|
||||
# if [ -e lang_qr.bin ]; then
|
||||
# echo -n " New language : " >&2
|
||||
# ./update_lang.sh qr 2>./update_lang_qr.out 1>/dev/null
|
||||
# if [ $? -eq 0 ]; then echo 'OK' >&2; else echo 'NG!' >&2; fi
|
||||
# fi
|
||||
|
||||
# echo "skipped" >&2
|
||||
echo >&2
|
||||
echo " Updating languages:" >&2
|
||||
for lang in $LANGUAGES; do
|
||||
if [ -e lang_$lang.bin ]; then
|
||||
echo -n " $lang : " >&2
|
||||
./update_lang.sh $lang 2>./update_lang_$lang.out 1>/dev/null
|
||||
if [ $? -eq 0 ]; then echo "$(tput setaf 2)OK$(tput sgr 0)" >&2; else echo "$(tput setaf 1)NG!$(tput sgr 0)" >&2; finish 1; fi
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
#create binary file with all languages
|
||||
rm -f lang.bin
|
||||
if [ -e lang_cz.bin ]; then cat lang_cz.bin >> lang.bin; fi
|
||||
if [ -e lang_de.bin ]; then cat lang_de.bin >> lang.bin; fi
|
||||
if [ -e lang_es.bin ]; then cat lang_es.bin >> lang.bin; fi
|
||||
if [ -e lang_fr.bin ]; then cat lang_fr.bin >> lang.bin; fi
|
||||
if [ -e lang_it.bin ]; then cat lang_it.bin >> lang.bin; fi
|
||||
if [ -e lang_pl.bin ]; then cat lang_pl.bin >> lang.bin; fi
|
||||
#Community language support
|
||||
# Dutch
|
||||
if [ -e lang_nl.bin ]; then cat lang_nl.bin >> lang.bin; fi
|
||||
|
||||
#Use the 2 lines below as a template and replace 'qr'
|
||||
## New language
|
||||
#if [ -e lang_qr.bin ]; then cat lang_qr.bin >> lang.bin; fi
|
||||
for lang in $LANGUAGES; do
|
||||
if [ -e lang_$lang.bin ]; then cat lang_$lang.bin >> lang.bin; fi
|
||||
done
|
||||
|
||||
# Check that the language data doesn't exceed the reserved XFLASH space
|
||||
echo " checking language data size:"
|
||||
|
|
@ -206,17 +185,23 @@ lang_size_pad=$(( ($lang_size+4096-1) / 4096 * 4096 ))
|
|||
# TODO: hard-coded! get value by preprocessing LANG_SIZE from xflash_layout.h!
|
||||
lang_reserved=249856
|
||||
|
||||
echo " total size usage: $lang_size_pad ($lang_size)"
|
||||
echo " reserved size: $lang_reserved"
|
||||
echo -n " total size usage: " >&2
|
||||
if [ $lang_size_pad -gt $lang_reserved ]; then
|
||||
echo "NG! - language data too large" >&2
|
||||
echo -n "$(tput setaf 1)" >&2
|
||||
else
|
||||
echo -n "$(tput setaf 2)" >&2
|
||||
fi
|
||||
echo "$lang_size_pad ($lang_size)$(tput sgr 0)" >&2
|
||||
echo " reserved size: $(tput setaf 2)$lang_reserved$(tput sgr 0)" >&2
|
||||
if [ $lang_size_pad -gt $lang_reserved ]; then
|
||||
echo "$(tput setaf 1)NG! - language data too large$(tput sgr 0)" >&2
|
||||
finish 1
|
||||
fi
|
||||
|
||||
#convert lang.bin to lang.hex
|
||||
echo -n " converting to hex..." >&2
|
||||
echo -n " converting multi language to hex..." >&2
|
||||
$OBJCOPY -I binary -O ihex ./lang.bin ./lang.hex
|
||||
echo "OK" >&2
|
||||
echo "$(tput setaf 2)OK$(tput sgr 0)" >&2
|
||||
|
||||
#append languages to hex file
|
||||
cat ./lang.hex >> firmware.hex
|
||||
|
|
|
|||
|
|
@ -1,25 +1,53 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Version 1.0.1 Build 11
|
||||
#
|
||||
# fw-clean.sh - multi-language support script
|
||||
# Remove all firmware output files from lang folder.
|
||||
#
|
||||
#############################################################################
|
||||
# Change log:
|
||||
# 21 June 2018, XPila, Initial
|
||||
# 11 Sep. 2018, XPila, Lang update, french translation
|
||||
# resized reserved space
|
||||
# 18 Oct. 2018, XPila, New lang, arduino 1.8.5 - fw-clean.sh and lang-clean.sh fix
|
||||
# 10 Dec. 2018, jhoblitt, make all shell scripts executable
|
||||
# 26 Jul. 2019, leptun, Fix shifted languages. Use \n and \x0a
|
||||
# 14 Sep. 2019, 3d-gussner, Prepare adding new language
|
||||
# 01 Mar. 2021, 3d-gussner, Move `Dutch` language parts
|
||||
# 22 Mar. 2021, 3d-gussner, Move Dutch removing part to correct loaction
|
||||
# 17 Dec. 2021, 3d-gussner, Use one config file for all languages
|
||||
# 11 Jan. 2022, 3d-gussner, Added version and Change log
|
||||
# colored output
|
||||
# Use `git rev-list --count HEAD fw-clean.sh`
|
||||
# to get Build Nr
|
||||
# 25 Jan. 2022, 3d-gussner, Update documentation
|
||||
#############################################################################
|
||||
# Config:
|
||||
if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi
|
||||
if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo "$(tput setaf 1)Config NG!$(tput sgr0)" >&2; exit 1; fi
|
||||
|
||||
if [ ! -z "$COMMUNITY_LANGUAGES" ]; then
|
||||
LANGUAGES+=" $COMMUNITY_LANGUAGES"
|
||||
fi
|
||||
echo "$(tput setaf 2)fw-clean.sh started$(tput sgr0)" >&2
|
||||
echo "fw-clean languages:$(tput setaf 2)$LANGUAGES$(tput sgr0)" >&2
|
||||
|
||||
result=0
|
||||
|
||||
rm_if_exists()
|
||||
{
|
||||
if [ -e $1 ]; then
|
||||
echo -n " removing '$1'..." >&2
|
||||
echo -n "$(tput sgr0) removing $(tput sgr0) '$1'..." >&2
|
||||
if rm $1; then
|
||||
echo "OK" >&2
|
||||
echo "$(tput setaf 2)OK$(tput sgr0)" >&2
|
||||
else
|
||||
echo "NG!" >&2
|
||||
echo "$(tput setaf 1)NG!$(tput sgr0)" >&2
|
||||
result=1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
echo "fw-clean.sh started" >&2
|
||||
|
||||
rm_if_exists text.sym
|
||||
rm_if_exists progmem1.sym
|
||||
|
|
@ -31,38 +59,22 @@ rm_if_exists progmem1.txt
|
|||
rm_if_exists textaddr.txt
|
||||
rm_if_exists firmware.bin
|
||||
rm_if_exists firmware.hex
|
||||
rm_if_exists firmware_cz.hex
|
||||
rm_if_exists firmware_de.hex
|
||||
rm_if_exists firmware_es.hex
|
||||
rm_if_exists firmware_fr.hex
|
||||
rm_if_exists firmware_it.hex
|
||||
rm_if_exists firmware_pl.hex
|
||||
rm_if_exists progmem.out
|
||||
rm_if_exists textaddr.out
|
||||
rm_if_exists update_lang.out
|
||||
rm_if_exists update_lang_cz.out
|
||||
rm_if_exists update_lang_de.out
|
||||
rm_if_exists update_lang_es.out
|
||||
rm_if_exists update_lang_fr.out
|
||||
rm_if_exists update_lang_it.out
|
||||
rm_if_exists update_lang_pl.out
|
||||
rm_if_exists lang.bin
|
||||
rm_if_exists lang.hex
|
||||
#Community language support
|
||||
#Dutch
|
||||
rm_if_exists firmware_nl.hex
|
||||
rm_if_exists update_lang_nl.out
|
||||
|
||||
#Use the 2 lines below as a template and replace 'qr'
|
||||
##New language
|
||||
#rm_if_exists firmware_qr.hex
|
||||
#rm_if_exists update_lang_qr.out
|
||||
|
||||
echo -n "fw-clean.sh finished" >&2
|
||||
for lang in $LANGUAGES; do
|
||||
rm_if_exists firmware_$lang.hex
|
||||
rm_if_exists update_lang_$lang.out
|
||||
done
|
||||
|
||||
if [ $result -eq 0 ]; then
|
||||
echo " with success" >&2
|
||||
echo "$(tput setaf 2)fw-clean.sh finished with success$(tput sgr0)" >&2
|
||||
else
|
||||
echo " with errors!" >&2
|
||||
echo "$(tput setaf 1)fw-clean.sh finished with errors!$(tput sgr0)" >&2
|
||||
fi
|
||||
|
||||
case "$-" in
|
||||
|
|
|
|||
|
|
@ -7,41 +7,68 @@
|
|||
# lang_add.txt
|
||||
# Updated files:
|
||||
# lang_en.txt and all lang_en_xx.txt
|
||||
#
|
||||
|
||||
# List of supported languages
|
||||
LANGUAGES="cz de es fr it pl"
|
||||
|
||||
# Community languages
|
||||
LANGUAGES+=" nl" #Dutch
|
||||
|
||||
# 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
|
||||
|
||||
if [ ! -z "$COMMUNITY_LANGUAGES" ]; then
|
||||
LANGUAGES+=" $COMMUNITY_LANGUAGES"
|
||||
fi
|
||||
LANGUAGES=$(ls lang_en_*.txt|cut -d '_' -f3|cut -d '.' -f1)
|
||||
echo "lang-add languages:$LANGUAGES" >&2
|
||||
|
||||
# insert single text to english dictionary
|
||||
# $1 - text to insert
|
||||
# $2 - metadata
|
||||
insert_en()
|
||||
{
|
||||
#replace '[' and ']' in string with '\[' and '\]'
|
||||
str=$(echo "$1" | sed "s/\[/\\\[/g;s/\]/\\\]/g")
|
||||
str=$(echo "$1" | sed 's/\[/\\\[/g;s/\]/\\\]/g')
|
||||
# extract english texts, merge new text, grep line number
|
||||
ln=$((cat lang_en.txt; echo "$1") | sed "/^$/d;/^#/d" | sort | grep -n "$str" | sed "s/:.*//")
|
||||
ln=$((cat lang_en.txt; echo "$1") | sed "/^$/d;/^#/d" | sort | grep -n "$str" | sed "s/:.*//;q")
|
||||
# calculate position for insertion
|
||||
ln=$((3*(ln-2)+1))
|
||||
[ "$ln" -lt 1 ] && ln=1
|
||||
# insert new text
|
||||
sed -i "$ln"'i\\' lang_en.txt
|
||||
sed -i "$ln"'i\'"$1"'\' lang_en.txt
|
||||
sed -i "$ln"'i\#\' lang_en.txt
|
||||
sed -i "${ln}i\\#$2" lang_en.txt
|
||||
}
|
||||
|
||||
# insert single text to translated dictionary
|
||||
# $1 - text to insert
|
||||
# $2 - sufix
|
||||
# $2 - suffix
|
||||
# $3 - metadata
|
||||
insert_xx()
|
||||
{
|
||||
#replace '[' and ']' in string with '\[' and '\]'
|
||||
str=$(echo "$1" | sed "s/\[/\\\[/g;s/\]/\\\]/g")
|
||||
str=$(echo "$1" | sed 's/\[/\\\[/g;s/\]/\\\]/g')
|
||||
# extract english texts, merge new text, grep line number
|
||||
ln=$((cat lang_en_$2.txt; echo "$1") | sed "/^$/d;/^#/d" | sed -n 'p;n' | sort | grep -n "$str" | sed "s/:.*//")
|
||||
ln=$((cat lang_en_$2.txt; echo "$1") | sed "/^$/d;/^#/d" | sed -n 'p;n' | sort | grep -n "$str" | sed "s/:.*//;q")
|
||||
# calculate position for insertion
|
||||
ln=$((4*(ln-2)+1))
|
||||
[ "$ln" -lt 1 ] && ln=1
|
||||
# insert new text
|
||||
sed -i "$ln"'i\\' lang_en_$2.txt
|
||||
sed -i "$ln"'i\"\x00"\' lang_en_$2.txt
|
||||
sed -i "$ln"'i\'"$1"'\' lang_en_$2.txt
|
||||
sed -i "$ln"'i\#\' lang_en_$2.txt
|
||||
sed -i "${ln}i\\#$3" lang_en_$2.txt
|
||||
}
|
||||
|
||||
# find the metadata for the specified string
|
||||
# TODO: this is unbeliveably crude
|
||||
# $1 - text to search for
|
||||
find_metadata()
|
||||
{
|
||||
FIND_STR=$(echo $1|sed 's/\\/\\\\/g;s/\\\\x0a/\\\\n/g')
|
||||
sed -ne "s^.*\(_[iI]\|ISTR\)($FIND_STR).*////\(.*\)^\2^p" ../Firmware/*.[ch]* | head -1
|
||||
}
|
||||
|
||||
# check if input file exists
|
||||
|
|
@ -50,31 +77,23 @@ if ! [ -e lang_add.txt ]; then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
cat lang_add.txt | sed 's/^/"/;s/$/"/' | while read new_s; do
|
||||
cat lang_add.txt | sed 's/^/"/;s/$/"/;s/\\/\\\\/g' | while read new_s; do
|
||||
if grep "$new_s" lang_en.txt >/dev/null; then
|
||||
echo "text already exist:"
|
||||
echo "$new_s"
|
||||
echo
|
||||
else
|
||||
meta=$(find_metadata "$new_s")
|
||||
echo "adding text:"
|
||||
echo "$new_s"
|
||||
echo "$new_s ($meta)"
|
||||
echo
|
||||
insert_en "$new_s"
|
||||
insert_xx "$new_s" 'cz'
|
||||
insert_xx "$new_s" 'de'
|
||||
insert_xx "$new_s" 'es'
|
||||
insert_xx "$new_s" 'fr'
|
||||
insert_xx "$new_s" 'it'
|
||||
insert_xx "$new_s" 'pl'
|
||||
#Community language support
|
||||
#Dutch
|
||||
insert_xx "$new_s" 'nl'
|
||||
|
||||
#Use the 2 lines below as a template and replace 'qr'
|
||||
##New language
|
||||
# insert_xx "$new_s" 'qr'
|
||||
insert_en "$new_s" "$meta"
|
||||
for lang in $LANGUAGES; do
|
||||
insert_xx "$new_s" "$lang" "$meta"
|
||||
done
|
||||
fi
|
||||
done
|
||||
|
||||
read -t 5
|
||||
exit 0
|
||||
exit 0
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
#
|
||||
# Version 1.0.2 Build 28
|
||||
#
|
||||
# lang-build.sh - multi-language support script
|
||||
# generate lang_xx.bin (language binary file)
|
||||
|
|
@ -9,24 +11,79 @@
|
|||
# Output files:
|
||||
# lang_xx.bin
|
||||
#
|
||||
# Depending on files:
|
||||
# ../Firmware/config.h to read the max allowed size for translations
|
||||
#
|
||||
# Temporary files:
|
||||
# lang_en.cnt //calculated number of messages in english
|
||||
# lang_en.max //maximum size determined by reading "../Firmware/config.h"
|
||||
# lang_xx.tmp
|
||||
# lang_xx.dat
|
||||
#
|
||||
#############################################################################
|
||||
# Change log:
|
||||
# 18 June 2018, XPila, Initial
|
||||
# 19 June 2018, XPila, New ML support
|
||||
# 18 Oct. 2018, XPila, New lang French
|
||||
# 26 Nov. 2018, mkbel, Automate secondary language support build.
|
||||
# 7 May 2019, ondratu Check translation dictionary files to display definition
|
||||
# 19 June 2019, mkbel Disable language check warnings of type "[W]: No display definition on line".
|
||||
# Those warnings were masking all other much more useful build process output.
|
||||
# 14 Sep. 2019, 3d-gussner, Prepare adding new language
|
||||
# 18 Sep. 2020, 3d-gussner, Update new messages and their translations, fix translations
|
||||
# Update CZ, FR, IT, ES translations
|
||||
# CZ thanks to @DRracer
|
||||
# FR thanks to Carlin Dcustom
|
||||
# ES
|
||||
# IT thanks to @wavexx
|
||||
# Co-authored-by: @DRracer, @wavexx
|
||||
# 1 Mar. 2021, 3d-gussner, Add Dutch translation
|
||||
# 17 Dec. 2021, 3d-gussner, Use one config file for all languages
|
||||
# 21 Dec. 2021, 3d-gussner, Prepare more community languages
|
||||
# Swedish
|
||||
# Danish
|
||||
# Slovanian
|
||||
# Hungarian
|
||||
# Luxembourgian
|
||||
# Croatian
|
||||
# 3 Jan. 2022, 3d-gussner, Prepare Lithuanian
|
||||
# Cleanup outdated code
|
||||
# 11 Jan. 2022, 3d-gussner, Add message and size count comparison
|
||||
# Added version and Change log
|
||||
# colored output
|
||||
# Add Community language support
|
||||
# Use `git rev-list --count HEAD lang-build.sh`
|
||||
# to get Build Nr
|
||||
# 25 Jan. 2022, 3d-gussner, Fix check
|
||||
# Update documentation
|
||||
# 10 Feb. 2022, 3d-gussner, Use SRCDIR for compatibility with build server
|
||||
# 11 Feb. 2022, 3d-gussner, Change to python3
|
||||
#############################################################################
|
||||
#
|
||||
# Config:
|
||||
|
||||
if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi
|
||||
if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo "$(tput setaf 1)Config NG!$(tput sgr 0)" >&2; exit 1; fi
|
||||
|
||||
if [ ! -z "$COMMUNITY_LANGUAGES" ]; then
|
||||
LANGUAGES+=" $COMMUNITY_LANGUAGES"
|
||||
fi
|
||||
|
||||
#startup message
|
||||
echo "$(tput setaf 2)lang-build.sh started$(tput sgr 0)" >&2
|
||||
echo "lang-build languages:$(tput setaf 2)$LANGUAGES$(tput sgr 0)" >&2
|
||||
|
||||
#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); }'
|
||||
|
||||
#startup message
|
||||
echo "lang-build.sh started" >&2
|
||||
|
||||
#exiting function
|
||||
finish()
|
||||
{
|
||||
if [ $1 -eq 0 ]; then
|
||||
echo "lang-build.sh finished with success" >&2
|
||||
echo "$(tput setaf 2)lang-build.sh finished with success$(tput sgr 0)" >&2
|
||||
else
|
||||
echo "lang-build.sh finished with errors!" >&2
|
||||
echo "$(tput setaf 1)lang-build.sh finished with errors!$(tput sgr 0)" >&2
|
||||
fi
|
||||
exit $1
|
||||
}
|
||||
|
|
@ -46,6 +103,26 @@ lang_code_hex_data()
|
|||
#Community language support
|
||||
#Dutch
|
||||
*nl*) echo '\x6c\x6e' ;;
|
||||
#Swedish
|
||||
*sv*) echo '\x76\x73' ;;
|
||||
#Norwegian
|
||||
*no*) echo '\x6f\x6e' ;;
|
||||
#Danish
|
||||
*da*) echo '\x61\x64' ;;
|
||||
#Slovak
|
||||
*sk*) echo '\x6b\x73' ;;
|
||||
#Slovanian
|
||||
*sl*) echo '\x6c\x73' ;;
|
||||
#Hungarian
|
||||
*hu*) echo '\x75\x68' ;;
|
||||
#Luxembourgish
|
||||
*lb*) echo '\x62\x6c' ;;
|
||||
#Croatian
|
||||
*hr*) echo '\x72\x68' ;;
|
||||
#Lithuanian
|
||||
*lt*) echo '\x74\x6c' ;;
|
||||
#Romanian
|
||||
*ro*) echo '\x6f\x72' ;;
|
||||
#Use the 2 lines below as a template and replace 'qr' and `\x71\x72`
|
||||
##New language
|
||||
# *qr*) echo '\x71\x72' ;;
|
||||
|
|
@ -81,18 +158,28 @@ write_header()
|
|||
generate_binary()
|
||||
# $1 - language code ('en', 'cz'...)
|
||||
{
|
||||
echo "lang="$1 >&2
|
||||
echo "lang=$(tput setaf 2)$1$(tput sgr 0)" >&2
|
||||
#remove output and temporary files
|
||||
rm -f lang_$1.bin
|
||||
rm -f lang_$1.tmp
|
||||
rm -f lang_$1.dat
|
||||
LNG=$1
|
||||
#check lang dictionary
|
||||
./lang-check.py $1 #--no-warning
|
||||
python3 lang-check.py $1 #--no-warning
|
||||
#create lang_xx.tmp - different processing for 'en' language
|
||||
if [ "$1" = "en" ]; then
|
||||
if [[ "$1" = "en" || ! -f "lang_en.max" ]]; then
|
||||
#remove comments and empty lines
|
||||
cat lang_en.txt | sed '/^$/d;/^#/d'
|
||||
#calculate number of strings
|
||||
count=$(grep -c '^"' lang_en.txt)
|
||||
echo "count="$count >&2
|
||||
#Calculate the number of strings and save to temporary file
|
||||
echo $count >lang_en.cnt
|
||||
#read the allowed maxsize from "../Firmware/config.h" and save to temporary file
|
||||
maxsize=$(($(grep "#define LANG_SIZE_RESERVED" $SRCDIR/Firmware/config.h|sed -e's/ */ /g' |cut -d ' ' -f3)))
|
||||
|
||||
echo "maxsize="$maxsize >&2
|
||||
echo $maxsize >lang_en.max
|
||||
else
|
||||
#remove comments and empty lines, print lines with translated text only
|
||||
cat lang_en_$1.txt | sed '/^$/d;/^#/d' | sed -n 'n;p'
|
||||
|
|
@ -103,12 +190,29 @@ generate_binary()
|
|||
#calculate number of strings
|
||||
count=$(grep -c '^"' lang_$1.tmp)
|
||||
echo "count="$count >&2
|
||||
# read string count of English and compare it with the translation
|
||||
encount=$(cat lang_en.cnt)
|
||||
if [ "$count" -eq "$encount" ]; then
|
||||
echo "$(tput setaf 2)OK:"$1"="$count"$(tput sgr 0) is equal to $(tput setaf 2)en="$encount"$(tput sgr 0)" >&2
|
||||
else
|
||||
echo "$(tput setaf 1)Error:"$1"="$count"$(tput sgr 0) is NOT equal to $(tput setaf 1)en="$encount"$(tput sgr 0)" >&2
|
||||
finish 1
|
||||
fi
|
||||
#calculate text data offset
|
||||
offs=$((16 + 2 * $count))
|
||||
echo "offs="$offs >&2
|
||||
#calculate text data size
|
||||
size=$(($offs + $(wc -c lang_$1.dat | cut -f1 -d' ')))
|
||||
echo "size="$size >&2
|
||||
# read maxsize and compare with the translation
|
||||
maxsize=$(cat lang_en.max)
|
||||
if [ "$size" -lt "$maxsize" ]; then
|
||||
free_space=$(($maxsize - $size))
|
||||
echo "$(tput setaf 2)OK:"$1"="$size"$(tput sgr 0) is less than $(tput setaf 2)"$maxsize"$(tput sgr 0). Free space:$(tput setaf 2)"$free_space"$(tput sgr 0)" >&2
|
||||
else
|
||||
echo "$(tput setaf 1)Error:"$1"="$size"$(tput sgr 0) is higer than $(tput setaf 3)"$maxsize"$(tput sgr 0)" >&2
|
||||
finish 1
|
||||
fi
|
||||
#write header with empty signature and checksum
|
||||
write_header $1 $size $count 0x0000 0x00000000
|
||||
#write offset table
|
||||
|
|
@ -126,22 +230,16 @@ generate_binary()
|
|||
chsum=$(cat lang_$1.bin | xxd | cut -c11-49 | tr ' ' "\n" | sed '/^$/d' | awk 'BEGIN { sum = 0; } { sum += strtonum("0x"$1); if (sum > 0xffff) sum -= 0x10000; } END { printf("%x\n", sum); }')
|
||||
/bin/echo -n -e $(echo -n $((0x$chsum)) | awk "$awk_ui16") |\
|
||||
dd of=lang_$1.bin bs=1 count=2 seek=8 conv=notrunc 2>/dev/null
|
||||
#remove temporary files
|
||||
# rm -f lang_$1.tmp
|
||||
# rm -f lang_$1.dat
|
||||
}
|
||||
|
||||
if [ -z "$1" ]; then set 'all'; fi
|
||||
|
||||
if [ "$1" = "all" ]; then
|
||||
generate_binary 'en'
|
||||
generate_binary 'cz'
|
||||
generate_binary 'de'
|
||||
generate_binary 'es'
|
||||
generate_binary 'fr'
|
||||
generate_binary 'it'
|
||||
generate_binary 'pl'
|
||||
#DO NOT add Community languages here !!!
|
||||
for lang in $LANGUAGES; do
|
||||
echo " Running : $lang" >&2
|
||||
generate_binary $lang
|
||||
done
|
||||
else
|
||||
generate_binary $1
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -1,24 +1,50 @@
|
|||
#!/usr/bin/env python3
|
||||
#
|
||||
# Version 1.0.1
|
||||
#
|
||||
# Version 1.0.2 - Build 43
|
||||
#############################################################################
|
||||
# Change log:
|
||||
# 7 May 2019, Ondrej Tuma, Initial
|
||||
# 9 June 2020, 3d-gussner, Added version and Change log
|
||||
# 9 June 2020, 3d-gussner, Wrap text to 20 char and rows
|
||||
# 9 June 2020, 3d-gussner, colored output
|
||||
# 7 May 2019, ondratu , Initial
|
||||
# 13 June 2019, 3d-gussner, Fix length false positives
|
||||
# 14 Sep. 2019, 3d-gussner, Prepare adding new language
|
||||
# 18 Sep. 2020, 3d-gussner, Fix execution of lang-check.py
|
||||
# 2 Apr. 2021, 3d-gussner, Fix and improve text warp
|
||||
# 22 Apr. 2021, DRracer , add English source to output
|
||||
# 23 Apr. 2021, wavexx , improve
|
||||
# 24 Apr. 2021, wavexx , improve
|
||||
# 26 Apr. 2021, 3d-gussner, add character ruler
|
||||
# 26 Apr. 2021, wavexx , add character ruler
|
||||
# 21 Dec. 2021, 3d-gussner, Prepare more community languages
|
||||
# Swedish
|
||||
# Danish
|
||||
# Slovanian
|
||||
# Hungarian
|
||||
# Luxembourgian
|
||||
# Croatian
|
||||
# 3 Jan. 2022, 3d-gussner, Prepare Lithuanian
|
||||
# 7 Jan. 2022, 3d-gussner, Check for Syntax errors and exit with error
|
||||
# , add Build number 'git rev-list --count HEAD lang-check.py'
|
||||
# 30 Jan. 2022, 3d-gussner, Add arguments. Requested by @AttilaSVK
|
||||
# --information == output all source and translated messages
|
||||
# --import-check == used by `lang-import.sh`to verify
|
||||
# newly import `lang_en_??.txt` files
|
||||
# 14 Mar. 2022, 3d-gussner, Check if translation isn't equal to origin
|
||||
#############################################################################
|
||||
#
|
||||
# Expected syntax of the files, which other scripts depend on
|
||||
# 'lang_en.txt'
|
||||
# 1st line: '#MSG_'<some text>' c='<max chars in a column>' r='<max rows> ; '#MSG' is mandentory while 'c=' and 'r=' aren't but should be there
|
||||
# 2nd line: '"'<origin message used in the source code>'"' ; '"' double quotes at the beginning and end of message are mandentory
|
||||
# 3rd line: LF ; Line feed is mandantory between messages
|
||||
#
|
||||
# 'lang_en_??.txt'
|
||||
# 1st line: '#MSG_'<some text>' c='<max chars in a column>' r='<max rows> ; '#MSG' is mandentory while 'c=' and 'r=' aren't but should be there
|
||||
# 2nd line: '"'<origin message used in the source code>'"' ; '"' double quotes at the beginning and end of message are mandentory
|
||||
# 3rd line: '"'<translated message>'"' ; '"' double quotes at the beginning and end of message are mandentory
|
||||
# 4th line: LF ; Line feed is mandantory between messages
|
||||
#
|
||||
"""Check lang files."""
|
||||
from argparse import ArgumentParser
|
||||
from traceback import print_exc
|
||||
from sys import stdout, stderr
|
||||
from sys import stdout, stderr, exit
|
||||
import textwrap
|
||||
import re
|
||||
|
||||
|
|
@ -99,22 +125,31 @@ def ign_char_first(c):
|
|||
def ign_char_last(c):
|
||||
return c.isalnum() or c in {'.', "'"}
|
||||
|
||||
|
||||
def parse_txt(lang, no_warning, warn_empty):
|
||||
def parse_txt(lang, no_warning, warn_empty, information, import_check):
|
||||
"""Parse txt file and check strings to display definition."""
|
||||
if lang == "en":
|
||||
file_path = "lang_en.txt"
|
||||
else:
|
||||
file_path = "lang_en_%s.txt" % lang
|
||||
if import_check:
|
||||
file_path = "po/new/lang_en_%s.txt" % lang
|
||||
else:
|
||||
file_path = "lang_en_%s.txt" % lang
|
||||
|
||||
print(green("Start %s lang-check" % lang))
|
||||
|
||||
lines = 1
|
||||
lines = 0
|
||||
with open(file_path) as src:
|
||||
while True:
|
||||
comment = src.readline().split(' ')
|
||||
#print (comment) #Debug
|
||||
|
||||
message = src.readline()
|
||||
lines += 1
|
||||
#print(message) #Debug
|
||||
#check syntax 1st line starts with `#MSG`
|
||||
if (message[0:4] != '#MSG'):
|
||||
print(red("[E]: Critical syntax error: 1st line doesn't start with #MSG on line %d" % lines))
|
||||
print(red(message))
|
||||
exit(1)
|
||||
#Check if columns and rows are defined
|
||||
comment = message.split(' ')
|
||||
#Check if columns and rows are defined
|
||||
cols = None
|
||||
rows = None
|
||||
|
|
@ -133,29 +168,69 @@ def parse_txt(lang, no_warning, warn_empty):
|
|||
if cols is None and rows is None:
|
||||
if not no_warning:
|
||||
print(yellow("[W]: No display definition on line %d" % lines))
|
||||
cols = len(translation) # propably fullscreen
|
||||
cols = len(source) # propably fullscreen
|
||||
if rows is None:
|
||||
rows = 1
|
||||
elif rows > 1 and cols != 20:
|
||||
print(yellow("[W]: Multiple rows with odd number of columns on line %d" % lines))
|
||||
|
||||
#Wrap text to 20 chars and rows
|
||||
source = src.readline()[:-1].strip('"')
|
||||
#print (source) #Debug
|
||||
translation = src.readline()[:-1].strip('"')
|
||||
if translation == '\\x00':
|
||||
# crude hack to handle intentionally-empty translations
|
||||
translation = ''
|
||||
source = src.readline()[:-1] #read whole line
|
||||
lines += 1
|
||||
#check if 2nd line of origin message beginns and ends with " double quote
|
||||
if (source[0]!="\""):
|
||||
print(red('[E]: Critical syntax error: Missing " double quotes at beginning of message in source on line %d' % lines))
|
||||
print(red(source))
|
||||
exit(1)
|
||||
if (source[-1]=="\""):
|
||||
source = source.strip('"') #remove " double quotes from message
|
||||
else:
|
||||
print(red('[E]: Critical syntax error: Missing " double quotes at end of message in source on line %d' % lines))
|
||||
print(red(source))
|
||||
exit(1)
|
||||
#print(source) #Debug
|
||||
if lang != "en":
|
||||
translation = src.readline()[:-1]#read whole line
|
||||
lines += 1
|
||||
#check if 3rd line of translation message beginns and ends with " double quote
|
||||
if (translation[0]!="\""):
|
||||
print(red('[E]: Critical syntax error: Missing " double quotes at beginning of message in translation on line %d' % lines))
|
||||
print(red(translation))
|
||||
exit(1)
|
||||
if (translation[-1]=="\""):
|
||||
#print ("End ok")
|
||||
translation = translation.strip('"') #remove " double quote from message
|
||||
else:
|
||||
print(red('[E]: Critical syntax error: Missing " double quotes at end of message in translation on line %d' % lines))
|
||||
print(red(translation))
|
||||
exit(1)
|
||||
#print(translation) #Debug
|
||||
if translation == '\\x00':
|
||||
# crude hack to handle intentionally-empty translations
|
||||
translation = ''
|
||||
#check if source is ascii only
|
||||
if source.isascii() == False:
|
||||
print(red('[E]: Critical syntax: Non ascii chars found on line %d' % lines))
|
||||
print(red(source))
|
||||
exit(1)
|
||||
#check if translation is ascii only
|
||||
if lang != "en":
|
||||
if translation.isascii() == False:
|
||||
print(red('[E]: Critical syntax: Non ascii chars found on line %d' % lines))
|
||||
print(red(translation))
|
||||
exit(1)
|
||||
|
||||
# handle backslash sequences
|
||||
source = unescape(source)
|
||||
translation = unescape(translation)
|
||||
|
||||
if lang != "en":
|
||||
translation = unescape(translation)
|
||||
|
||||
#print (translation) #Debug
|
||||
wrapped_source = wrap_text(source, cols)
|
||||
rows_count_source = len(wrapped_source)
|
||||
wrapped_translation = wrap_text(translation, cols)
|
||||
rows_count_translation = len(wrapped_translation)
|
||||
if lang != "en":
|
||||
wrapped_translation = wrap_text(translation, cols)
|
||||
rows_count_translation = len(wrapped_translation)
|
||||
|
||||
# Check for potential errors in the definition
|
||||
if not no_warning:
|
||||
|
|
@ -172,70 +247,97 @@ def parse_txt(lang, no_warning, warn_empty):
|
|||
print()
|
||||
|
||||
# Missing translation
|
||||
if len(translation) == 0 and (warn_empty or rows > 1):
|
||||
if rows == 1:
|
||||
print(yellow("[W]: Empty translation for \"%s\" on line %d" % (source, lines)))
|
||||
else:
|
||||
print(yellow("[W]: Empty translation on line %d" % lines))
|
||||
print_ruler(6, cols);
|
||||
print_wrapped(wrapped_source, rows, cols)
|
||||
print()
|
||||
if lang != "en":
|
||||
if len(translation) == 0 and (warn_empty or rows > 1):
|
||||
if rows == 1:
|
||||
print(yellow("[W]: Empty translation for \"%s\" on line %d" % (source, lines)))
|
||||
else:
|
||||
print(yellow("[W]: Empty translation on line %d" % lines))
|
||||
print_ruler(6, cols);
|
||||
print_wrapped(wrapped_source, rows, cols)
|
||||
print()
|
||||
|
||||
|
||||
# Check for translation lenght
|
||||
if (rows_count_translation > rows) or (rows == 1 and len(translation) > cols):
|
||||
print(red('[E]: Text is longer than definition on line %d: cols=%d rows=%d (rows diff=%d)'
|
||||
% (lines, cols, rows, rows_count_translation-rows)))
|
||||
print_source_translation(source, translation,
|
||||
wrapped_source, wrapped_translation,
|
||||
rows, cols)
|
||||
# Check for translation lenght
|
||||
if (rows_count_translation > rows) or (rows == 1 and len(translation) > cols):
|
||||
print(red('[E]: Text is longer than definition on line %d: cols=%d rows=%d (rows diff=%d)'
|
||||
% (lines, cols, rows, rows_count_translation-rows)))
|
||||
print_source_translation(source, translation,
|
||||
wrapped_source, wrapped_translation,
|
||||
rows, cols)
|
||||
|
||||
# Different count of % sequences
|
||||
if source.count('%') != translation.count('%') and len(translation) > 0:
|
||||
print(red('[E]: Unequal count of %% escapes on line %d:' % (lines)))
|
||||
print_source_translation(source, translation,
|
||||
wrapped_source, wrapped_translation,
|
||||
rows, cols)
|
||||
# Different count of % sequences
|
||||
if source.count('%') != translation.count('%') and len(translation) > 0:
|
||||
print(red('[E]: Unequal count of %% escapes on line %d:' % (lines)))
|
||||
print_source_translation(source, translation,
|
||||
wrapped_source, wrapped_translation,
|
||||
rows, cols)
|
||||
|
||||
# Different first/last character
|
||||
if not no_warning and len(source) > 0 and len(translation) > 0:
|
||||
source_end = source.rstrip()[-1]
|
||||
translation_end = translation.rstrip()[-1]
|
||||
start_diff = not (ign_char_first(source[0]) and ign_char_first(translation[0])) and source[0] != translation[0]
|
||||
end_diff = not (ign_char_last(source_end) and ign_char_last(translation_end)) and source_end != translation_end
|
||||
if start_diff or end_diff:
|
||||
if start_diff:
|
||||
print(yellow('[W]: Differing first punctuation character (%s => %s) on line %d:' % (source[0], translation[0], lines)))
|
||||
if end_diff:
|
||||
print(yellow('[W]: Differing last punctuation character (%s => %s) on line %d:' % (source[-1], translation[-1], lines)))
|
||||
print_source_translation(source, translation,
|
||||
wrapped_source, wrapped_translation,
|
||||
rows, cols)
|
||||
# Different first/last character
|
||||
if not no_warning and len(source) > 0 and len(translation) > 0:
|
||||
source_end = source.rstrip()[-1]
|
||||
translation_end = translation.rstrip()[-1]
|
||||
start_diff = not (ign_char_first(source[0]) and ign_char_first(translation[0])) and source[0] != translation[0]
|
||||
end_diff = not (ign_char_last(source_end) and ign_char_last(translation_end)) and source_end != translation_end
|
||||
if start_diff or end_diff:
|
||||
if start_diff:
|
||||
print(yellow('[W]: Differing first punctuation character (%s => %s) on line %d:' % (source[0], translation[0], lines)))
|
||||
if end_diff:
|
||||
print(yellow('[W]: Differing last punctuation character (%s => %s) on line %d:' % (source[-1], translation[-1], lines)))
|
||||
print_source_translation(source, translation,
|
||||
wrapped_source, wrapped_translation,
|
||||
rows, cols)
|
||||
if not no_warning and source == translation:
|
||||
print(yellow('[W]: Translation same as origin on line %d:' %lines))
|
||||
print_source_translation(source, translation,
|
||||
wrapped_source, wrapped_translation,
|
||||
rows, cols)
|
||||
#elif information:
|
||||
# print(green('[I]: %s' % (message)))
|
||||
# print_source_translation(source, translation,
|
||||
# wrapped_source, wrapped_translation,
|
||||
# rows, cols)
|
||||
|
||||
# Short translation
|
||||
if not no_warning and len(source) > 0 and len(translation) > 0:
|
||||
if len(translation.rstrip()) < len(source.rstrip()) / 2:
|
||||
print(yellow('[W]: Short translation on line %d:' % (lines)))
|
||||
print_source_translation(source, translation,
|
||||
wrapped_source, wrapped_translation,
|
||||
rows, cols)
|
||||
|
||||
# Incorrect trailing whitespace in translation
|
||||
if not no_warning and len(translation) > 0 and \
|
||||
(source.rstrip() == source or (rows == 1 and len(source) == cols)) and \
|
||||
translation.rstrip() != translation and \
|
||||
(rows > 1 or len(translation) != len(source)):
|
||||
print(yellow('[W]: Incorrect trailing whitespace for translation on line %d:' % (lines)))
|
||||
source = highlight_trailing_white(source)
|
||||
translation = highlight_trailing_white(translation)
|
||||
wrapped_translation = highlight_trailing_white(wrapped_translation)
|
||||
print_source_translation(source, translation,
|
||||
wrapped_source, wrapped_translation,
|
||||
rows, cols)
|
||||
# Short translation
|
||||
if not no_warning and len(source) > 0 and len(translation) > 0:
|
||||
if len(translation.rstrip()) < len(source.rstrip()) / 2:
|
||||
print(yellow('[W]: Short translation on line %d:' % (lines)))
|
||||
print_source_translation(source, translation,
|
||||
wrapped_source, wrapped_translation,
|
||||
rows, cols)
|
||||
#elif information:
|
||||
# print(green('[I]: %s' % (message)))
|
||||
# print_source_translation(source, translation,
|
||||
# wrapped_source, wrapped_translation,
|
||||
# rows, cols)
|
||||
|
||||
if len(src.readline()) != 1: # empty line
|
||||
# Incorrect trailing whitespace in translation
|
||||
if not no_warning and len(translation) > 0 and \
|
||||
(source.rstrip() == source or (rows == 1 and len(source) == cols)) and \
|
||||
translation.rstrip() != translation and \
|
||||
(rows > 1 or len(translation) != len(source)):
|
||||
print(yellow('[W]: Incorrect trailing whitespace for translation on line %d:' % (lines)))
|
||||
source = highlight_trailing_white(source)
|
||||
translation = highlight_trailing_white(translation)
|
||||
wrapped_translation = highlight_trailing_white(wrapped_translation)
|
||||
print_source_translation(source, translation,
|
||||
wrapped_source, wrapped_translation,
|
||||
rows, cols)
|
||||
elif information:
|
||||
print(green('[I]: %s' % (message)))
|
||||
print_source_translation(source, translation,
|
||||
wrapped_source, wrapped_translation,
|
||||
rows, cols)
|
||||
|
||||
|
||||
delimiter = src.readline()
|
||||
lines += 1
|
||||
if ("" == delimiter):
|
||||
break
|
||||
elif len(delimiter) != 1: # empty line
|
||||
print(red('[E]: Critical Syntax error: Missing empty line between messages between lines: %d and %d' % (lines-1,lines)))
|
||||
break
|
||||
lines += 4
|
||||
print(green("End %s lang-check" % lang))
|
||||
|
||||
|
||||
|
|
@ -246,17 +348,23 @@ def main():
|
|||
usage="%(prog)s lang")
|
||||
parser.add_argument(
|
||||
"lang", nargs='?', default="en", type=str,
|
||||
help="Check lang file (en|cs|de|es|fr|nl|it|pl)")
|
||||
help="Check lang file (en|cs|da|de|es|fr|hr|hu|it|lb|lt|nl|no|pl|ro|sk|sl|sv)")
|
||||
parser.add_argument(
|
||||
"--no-warning", action="store_true",
|
||||
help="Disable warnings")
|
||||
parser.add_argument(
|
||||
"--warn-empty", action="store_true",
|
||||
help="Warn about empty translations")
|
||||
parser.add_argument(
|
||||
"--information", action="store_true",
|
||||
help="Output all translations")
|
||||
parser.add_argument(
|
||||
"--import-check", action="store_true",
|
||||
help="Check import file and save informational to file")
|
||||
|
||||
args = parser.parse_args()
|
||||
try:
|
||||
parse_txt(args.lang, args.no_warning, args.warn_empty)
|
||||
parse_txt(args.lang, args.no_warning, args.warn_empty, args.information, args.import_check)
|
||||
return 0
|
||||
except Exception as exc:
|
||||
print_exc()
|
||||
|
|
|
|||
|
|
@ -1,19 +1,43 @@
|
|||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
#
|
||||
# Version 1.0.1 Build 13
|
||||
#
|
||||
# clean.sh - multi-language support script
|
||||
# Remove all language output files from lang folder.
|
||||
#
|
||||
|
||||
#############################################################################
|
||||
# Change log:
|
||||
# 1 Nov. 2018, XPila, Initial
|
||||
# 18 Oct. 2018, XPila, New lang, arduino 1.8.5 - fw-clean.sh and lang-clean.sh fix
|
||||
# 25 Oct. 2018, XPila, New lang - fixed french langcode and comparsion in lang-clean script
|
||||
# 10 Dec. 2018, jhoblitt, make all shell scripts executable
|
||||
# 26 Jul. 2019, leptun, Fix shifted languages. Use \n and \x0a
|
||||
# 14 Sep. 2019, 3d-gussner, Prepare adding new language
|
||||
# 01 Mar. 2021, 3d-gussner, Move `Dutch` language parts
|
||||
# 22 Mar. 2021, 3d-gussner, Move Dutch removing part to correct loaction
|
||||
# 21 Dec. 2021, 3d-gussner, Use one config file for all languages
|
||||
# 03 Jan. 2022, 3d-gussner, Cleanup outdated code
|
||||
# 11 Jan. 2022, 3d-gussner, Also remove temporally files which have been
|
||||
# generated for message and size count comparison
|
||||
# Added version and Change log
|
||||
# colored output
|
||||
# Add Community language support
|
||||
# Use `git rev-list --count HEAD lang-clean.sh`
|
||||
# to get Build Nr
|
||||
# 25 Jan. 2022, 3d-gussner, clean up lang-import.sh temproray files
|
||||
# 14 Feb. 2022, 3d-gussner, Fix single language run without config.sh OK
|
||||
# 16 Mar. 2022, 3d-gussner, Cleanup `output-layout/sorted-??.txt`
|
||||
#############################################################################
|
||||
result=0
|
||||
|
||||
rm_if_exists()
|
||||
{
|
||||
if [ -e $1 ]; then
|
||||
echo -n " removing '$1'..." >&2
|
||||
echo -n "$(tput sgr0) removing $(tput setaf 3)'$1'$(tput sgr0)..." >&2
|
||||
if rm $1; then
|
||||
echo "OK" >&2
|
||||
echo "$(tput setaf 2)OK$(tput sgr0)" >&2
|
||||
else
|
||||
echo "NG!" >&2
|
||||
echo "$(tput setaf 1)NG!$(tput sgr0)" >&2
|
||||
result=1
|
||||
fi
|
||||
fi
|
||||
|
|
@ -23,42 +47,56 @@ clean_lang()
|
|||
{
|
||||
if [ "$1" = "en" ]; then
|
||||
rm_if_exists lang_$1.tmp
|
||||
rm_if_exists lang_$1.cnt
|
||||
rm_if_exists lang_$1.max
|
||||
else
|
||||
rm_if_exists lang_$1.tmp
|
||||
rm_if_exists lang_en_$1.tmp
|
||||
rm_if_exists lang_en_$1.dif
|
||||
rm_if_exists lang_$1.ofs
|
||||
rm_if_exists lang_$1.txt
|
||||
rm_if_exists po/new/$1_new.po
|
||||
rm_if_exists po/new/$1.mo
|
||||
rm_if_exists po/new/$1_filtered.po
|
||||
rm_if_exists po/new/lang_en_$1.txt
|
||||
rm_if_exists po/new/output-layout-$1.txt
|
||||
rm_if_exists po/new/output-sorted-$1.txt
|
||||
fi
|
||||
rm_if_exists lang_$1_check.dif
|
||||
rm_if_exists lang_$1.bin
|
||||
rm_if_exists lang_$1.dat
|
||||
rm_if_exists lang_$1_1.tmp
|
||||
rm_if_exists lang_$1_2.tmp
|
||||
rm_if_exists po/new/nonascii.txt
|
||||
|
||||
}
|
||||
|
||||
echo "lang-clean.sh started" >&2
|
||||
echo "$(tput setaf 2)lang-clean.sh started$(tput sgr0)" >&2
|
||||
#Clean English
|
||||
clean_lang en
|
||||
|
||||
clean_lang en
|
||||
clean_lang cz
|
||||
clean_lang de
|
||||
clean_lang es
|
||||
clean_lang fr
|
||||
clean_lang it
|
||||
clean_lang pl
|
||||
#Community language support
|
||||
#Dutch
|
||||
clean_lang nl
|
||||
#Clean languages
|
||||
echo "lang-clean languages:$(tput setaf 2)$LANGUAGES$(tput sgr0)" >&2
|
||||
if [ -e $1 ]; then
|
||||
# Config:
|
||||
if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi
|
||||
if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo "$(tput setaf 1)Config NG!$(tput sgr0)" >&2; exit 1; fi
|
||||
|
||||
#Use the 2 lines below as a template and replace 'qr'
|
||||
##New language
|
||||
#clean_lang_qr
|
||||
if [ ! -z "$COMMUNITY_LANGUAGES" ]; then
|
||||
LANGUAGES+=" $COMMUNITY_LANGUAGES"
|
||||
fi
|
||||
|
||||
echo -n "lang-clean.sh finished" >&2
|
||||
if [ $result -eq 0 ]; then
|
||||
echo " with success" >&2
|
||||
for lang in $LANGUAGES; do
|
||||
clean_lang $lang
|
||||
done
|
||||
else
|
||||
echo " with errors!" >&2
|
||||
clean_lang $1
|
||||
fi
|
||||
|
||||
if [ $result -eq 0 ]; then
|
||||
echo "$(tput setaf 2) lang-clean.sh with success$(tput sgr0)" >&2
|
||||
else
|
||||
echo "$(tput setaf 1) lang-clean.sh with errors!$(tput sgr0)" >&2
|
||||
fi
|
||||
|
||||
case "$-" in
|
||||
|
|
|
|||
|
|
@ -10,8 +10,8 @@ if [ -z "$ROOT_PATH" ]; then
|
|||
fi
|
||||
|
||||
# Check community language NL = Dutch
|
||||
COMMUNITY_LANG_NL=$(grep --max-count=1 "^#define COMMUNITY_LANG_NL" $ROOT_PATH/Firmware/config.h| cut -d '_' -f3 |cut -d ' ' -f1)
|
||||
export NL=$COMMUNITY_LANG_NL
|
||||
COMMUNITY_LANG_GROUP1_NL=$(grep --max-count=1 "^#define COMMUNITY_LANG_GROUP1_NL" $ROOT_PATH/Firmware/config.h| cut -d '_' -f3 |cut -d ' ' -f1)
|
||||
export NL=$COMMUNITY_LANG_GROUP1_NL
|
||||
|
||||
# Use the lines below as a template and replace 'QR' and 'new language'
|
||||
# Check comminity language QR = new language
|
||||
|
|
@ -24,8 +24,8 @@ echo -n " Source code path: " >&2
|
|||
if [ -e $ROOT_PATH ]; then echo 'OK' >&2; else echo 'NG!' >&2; _err=1; fi
|
||||
|
||||
echo " Found: " >&2
|
||||
if [ "$COMMUNITY_LANG_NL" = "NL" ]; then
|
||||
echo " $COMMUNITY_LANG_NL" >&2
|
||||
if [ "$COMMUNITY_LANG_GROUP1_NL" = "NL" ]; then
|
||||
echo " $COMMUNITY_LANG_GROUP1_NL" >&2
|
||||
echo
|
||||
./lang-build.sh nl
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -1,33 +1,68 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# lang-export.sh - multi-language support script
|
||||
# for generating lang_xx.po
|
||||
# Version 1.0.1 Build 32
|
||||
#
|
||||
# lang-export.sh - multi-language support script
|
||||
# for generating /lang/po/Firmware_xx.po
|
||||
#
|
||||
#############################################################################
|
||||
# Change log:
|
||||
# 9 Nov. 2018, XPila, Initial
|
||||
# 10 Dec. 2018, jhoblitt, make all shell scripts executable
|
||||
# 14 Sep. 2019, 3d-gussner, Prepare adding new language
|
||||
# 6 Sep. 2019, DRracer, change to bash
|
||||
# 1 Mar. 2019, 3d-gussner, Move `Dutch` language parts
|
||||
# Add templates for future community languages
|
||||
# 17 Dec. 2021, 3d-gussner, Use one config file for all languages
|
||||
# Fix missing last translation
|
||||
# 21 Dec. 2021, 3d-gussner, Add Swedish, Danish, Slovanian, Hungarian,
|
||||
# Luxembourgish, Croatian
|
||||
# 3 Jan. 2022, 3d-gussner, Add Lithuanian
|
||||
# Cleanup outaded code
|
||||
# 11 Jan. 2022, 3d-gussner, Added version and Change log
|
||||
# colored output
|
||||
# Add Community language support
|
||||
# Use `git rev-list --count HEAD lang-export.sh`
|
||||
# to get Build Nr
|
||||
# 25 Jan. 2022, 3d-gussner, Replace German HD44780 A00 ROM 'äöüß' to UTF-8 'äöüß'
|
||||
# 14 Feb. 2022, 3d-gussner, Fix single language run without config.sh OK
|
||||
# 12 Mar. 2022, 3d-gussner, Update Norwegian replace umlaut and diacritics
|
||||
# Fix find community languages
|
||||
# Update Swedish replace umlaut and diacritics
|
||||
# Replace '.!? äöü' with '.!? ÄÖÜ' in German and Swedish
|
||||
# Replace '"äöü' with '"ÄÖÜ' in German and Swedish
|
||||
# 18 Mar. 2022, 3d-gussner, Add Swedish ` pa ` to ` på ` conversion
|
||||
#############################################################################
|
||||
|
||||
echo "$(tput setaf 2)lang-export.sh started$(tput sgr 0)" >&2
|
||||
|
||||
# relative path to source folder
|
||||
SRCDIR="../Firmware"
|
||||
if [ -z "$SRCDIR" ]; then
|
||||
SRCDIR=".."
|
||||
fi
|
||||
|
||||
# selected language is 1st argument (cz, de, ...)
|
||||
LNG=$1
|
||||
|
||||
# if no arguments, 'all' is selected (all po and also pot will be generated)
|
||||
if [ -z "$LNG" ]; then LNG=all; fi
|
||||
if [ -z "$LNG" ]; then
|
||||
LNG="all";
|
||||
# Config:
|
||||
if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi
|
||||
if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo "$(tput setaf 1)Config NG!$(tput sgr 0)" >&2; exit 1; fi
|
||||
if [ ! -z "$COMMUNITY_LANGUAGES" ]; then
|
||||
LANGUAGES+=" $COMMUNITY_LANGUAGES"
|
||||
echo $LANGUAGES>&2
|
||||
fi
|
||||
echo "$(tput setaf 2)lang-export languages:$LANGUAGES$(tput sgr 0)" >&2
|
||||
fi
|
||||
|
||||
# if 'all' is selected, script will generate all po files and also pot file
|
||||
if [ "$LNG" = "all" ]; then
|
||||
./lang-export.sh en
|
||||
./lang-export.sh cz
|
||||
./lang-export.sh de
|
||||
./lang-export.sh es
|
||||
./lang-export.sh fr
|
||||
./lang-export.sh it
|
||||
./lang-export.sh pl
|
||||
#Community language support
|
||||
#Dutch
|
||||
./lang-export.sh nl
|
||||
#Use the 2 lines below as a template and replace 'qr' and 'New language'
|
||||
##New language
|
||||
# ./lang-export.sh qr
|
||||
for lang in $LANGUAGES; do
|
||||
./lang-export.sh $lang
|
||||
done
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
|
@ -57,13 +92,33 @@ else
|
|||
#Community language support
|
||||
#Dutch
|
||||
*nl*) echo "Dutch" ;;
|
||||
#Swedish
|
||||
*sv*) echo "Swedish" ;;
|
||||
#Norwegian
|
||||
*no*) echo "Norwegian" ;;
|
||||
#Danish
|
||||
*da*) echo "Danish" ;;
|
||||
#Slovak
|
||||
*sk*) echo "Slovak" ;;
|
||||
#Slovanian
|
||||
*sl*) echo "Slovanian" ;;
|
||||
#Hugarian
|
||||
*hu*) echo "Hugarian" ;;
|
||||
#Luxembourgish
|
||||
*lb*) echo "Luxembourgish" ;;
|
||||
#Croatian
|
||||
*hr*) echo "Croatian" ;;
|
||||
#Lithuanian
|
||||
*lt*) echo "Lithuanian" ;;
|
||||
#Romanian
|
||||
*ro*) echo "Romanian" ;;
|
||||
#Use the 2 lines below as a template and replace 'qr' and 'New language'
|
||||
##New language
|
||||
# *qr*) echo "New language" ;;
|
||||
esac)
|
||||
# unknown language - error
|
||||
if [ -z "LNGNAME" ]; then
|
||||
echo "Invalid argument '$LNG'."
|
||||
echo "Invalid argument $(tput setaf 1)'$LNG'$(tput sgr 0).">&2
|
||||
exit 1
|
||||
fi
|
||||
INFILE=lang_en_$LNG.txt
|
||||
|
|
@ -73,18 +128,16 @@ fi
|
|||
# remove output file if exists
|
||||
if [ -e $OUTFILE ]; then rm -f -v $OUTFILE; fi
|
||||
|
||||
echo "lang-export.sh started"
|
||||
|
||||
#total strings
|
||||
CNTTXT=$(grep '^#' -c $INFILE)
|
||||
#not translated strings
|
||||
CNTNT=$(grep '^\"\\x00\"' -c $INFILE)
|
||||
echo " $CNTTXT texts, $CNTNT not translated"
|
||||
echo " $(tput setaf 2)$CNTTXT$(tput sgr 0) texts, $(tput setaf 3)$CNTNT$(tput sgr 0) not translated" >&2
|
||||
|
||||
# list .cpp, .c and .h files from source folder
|
||||
SRCFILES=$(ls "$SRCDIR"/*.cpp "$SRCDIR"/*.c "$SRCDIR"/*.h)
|
||||
SRCFILES=$(ls "$SRCDIR/Firmware"/*.cpp "$SRCDIR/Firmware"/*.c "$SRCDIR/Firmware"/*.h)
|
||||
|
||||
echo " selected language=$LNGNAME"
|
||||
echo " selected language=$(tput setaf 2)$LNGNAME$(tput sgr 0)" >&2
|
||||
|
||||
# write po/pot header
|
||||
(
|
||||
|
|
@ -113,26 +166,37 @@ s1=''
|
|||
s2=''
|
||||
num=1
|
||||
(cat $INFILE | sed "s/\\\\/\\\\\\\\/g" | while read -r s; do
|
||||
if [ "$s" = "" ]; then
|
||||
echo " processing $num of $CNTTXT" >&2
|
||||
# write po/pot item
|
||||
(
|
||||
if [ -z "$s2" ]; then s2=$s1; s1=$s0; s0='""'; fi
|
||||
search=$(/bin/echo -e "$s1")
|
||||
found=$(grep -m1 -n -F "$search" $SRCFILES | 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"
|
||||
if [ "$s0" = "\"\\\\x00\"" ]; then
|
||||
echo 'msgstr ""'
|
||||
else
|
||||
/bin/echo -e "msgstr $s0"
|
||||
fi
|
||||
echo
|
||||
#start debug
|
||||
#if [ "${s:0:1}" = "\"" ]; then
|
||||
# echo >&2
|
||||
# echo "s = $s ." >&2
|
||||
# echo "s0 = $s0 ." >&2
|
||||
# echo "s1 = $s1 ." >&2
|
||||
#fi
|
||||
#end debug
|
||||
if [ "${s:0:1}" = "\"" ]; then
|
||||
if [[ "${s0:0:1}" = "\"" || "$LNG" = "en" ]]; then
|
||||
echo -ne " processing $num of $CNTTXT\033[0K\r" >&2
|
||||
# write po/pot item
|
||||
(
|
||||
if [ "$LNG" = "en" ]; then s1=$s0; s0=$s; fi
|
||||
search=$(/bin/echo -e "$s0")
|
||||
found=$(grep -m1 -n -F "$search" $SRCFILES | head -n1 | cut -f1-2 -d':' | sed "s/^.*\///")
|
||||
echo "$s1" | sed 's/ c=0//;s/ r=0//;s/^#/# /'
|
||||
#echo "$s1" | sed 's/ c=0//;s/ r=0//;s/^#/# /' >&2
|
||||
echo "#: $found"
|
||||
#echo "#: $found" >&2
|
||||
/bin/echo -e "msgid $s0"
|
||||
if [[ "$s" = "\"\\\\x00\"" || "$LNG" = "en" ]]; then
|
||||
echo 'msgstr ""'
|
||||
else
|
||||
/bin/echo -e "msgstr $s"
|
||||
fi
|
||||
echo
|
||||
)
|
||||
num=$((num+1))
|
||||
fi
|
||||
fi
|
||||
s2=$s1
|
||||
s1=$s0
|
||||
s0=$s
|
||||
done >>$OUTFILE) 2>&1
|
||||
|
|
@ -141,5 +205,71 @@ done >>$OUTFILE) 2>&1
|
|||
sync
|
||||
sed -i 's/$/\r/' $OUTFILE
|
||||
|
||||
echo "lang-export.sh finished"
|
||||
#replace HD44780 A00 'äöüß' to UTF-8 'äöüß'
|
||||
if [[ "$LNG" = "de" || "$LNG" = "sv" ]]; then
|
||||
#replace 'A00 ROM '"ä' with '"Ä'
|
||||
sed -i 's/"\\xe1/"\xc3\x84/g' $OUTFILE
|
||||
#replace 'A00 ROM '"ü' with '"Ü'
|
||||
sed -i 's/"\\xf5/"\xc3\x9c/g' $OUTFILE
|
||||
#replace 'A00 ROM '"ö' with '"Ö'
|
||||
sed -i 's/"\\xef/"\xc3\x96/g' $OUTFILE
|
||||
#replace 'A00 ROM '. ä' with '. Ä'
|
||||
sed -i 's/\. \\xe1/. \xc3\x84/g' $OUTFILE
|
||||
#replace 'A00 ROM '. ü' with '. Ü'
|
||||
sed -i 's/\. \\xf5/. \xc3\x9c/g' $OUTFILE
|
||||
#replace 'A00 ROM '. ö' with '. Ö'
|
||||
sed -i 's/\. \\xef/. \xc3\x96/g' $OUTFILE
|
||||
#replace 'A00 ROM '! ä' with '! Ä'
|
||||
sed -i 's/! \\xe1/! \xc3\x84/g' $OUTFILE
|
||||
#replace 'A00 ROM '! ü' with '! Ü'
|
||||
sed -i 's/! \\xf5/! \xc3\x9c/g' $OUTFILE
|
||||
#replace 'A00 ROM '! ö' with '! Ö'
|
||||
sed -i 's/! \\xef/! \xc3\x96/g' $OUTFILE
|
||||
#replace 'A00 ROM '? ä' with '? Ä'
|
||||
sed -i 's/? \\xe1/? \xc3\x84/g' $OUTFILE
|
||||
#replace 'A00 ROM '? ü' with '? Ü'
|
||||
sed -i 's/? \\xf5/? \xc3\x9c/g' $OUTFILE
|
||||
#replace 'A00 ROM '? ö' with '? Ö'
|
||||
sed -i 's/? \\xef/? \xc3\x96/g' $OUTFILE
|
||||
#replace 'A00 ROM 'ä' with 'ä'
|
||||
sed -i 's/\\xe1/\xc3\xa4/g' $OUTFILE
|
||||
#replace 'A00 ROM 'ü' with 'ü'
|
||||
sed -i 's/\\xf5/\xc3\xbc/g' $OUTFILE
|
||||
#replace 'A00 ROM 'ö' with 'ö'
|
||||
sed -i 's/\\xef/\xc3\xb6/g' $OUTFILE
|
||||
#replace 'A00 ROM 'ß'' with 'ß'
|
||||
sed -i 's/\\xe2/\xc3\x9f/g' $OUTFILE
|
||||
fi
|
||||
|
||||
if [ "$LNG" = "no" ]; then
|
||||
#replace often used words
|
||||
#replace ' pa ' with ' på '
|
||||
sed -i 's/\ pa / p\xc3\xa5 /g' $OUTFILE
|
||||
#replace ' na ' with ' nå '
|
||||
sed -i 's/\ na / n\xc3\xa5 /g' $OUTFILE
|
||||
#replace '"Na ' with '"Nå '
|
||||
sed -i 's/\"Na /"N\xc3\xa5 /g' $OUTFILE
|
||||
#replace ' stal' with ' stål'
|
||||
sed -i 's/\ stal/ st\xc3\xa5l/g' $OUTFILE
|
||||
#replace HD44780 A00 'äö' to UTF-8 'æø'
|
||||
#replace 'A00 ROM ä' with 'æ'
|
||||
sed -i 's/\\xe1/\xc3\xa6/g' $OUTFILE
|
||||
#replace 'A00 ROM ö' with 'ø'
|
||||
sed -i 's/\\xef/\xc3\xb8/g' $OUTFILE
|
||||
fi
|
||||
|
||||
if [ "$LNG" = "sv" ]; then
|
||||
#replace often used words
|
||||
#replace ' pa ' with ' på '
|
||||
sed -i 's/\ pa / p\xc3\xa5 /g' $OUTFILE
|
||||
fi
|
||||
|
||||
|
||||
#replace HD44780 A00 'μ' to UTF-8 'μ'
|
||||
#replace 'A00 ROMμ' with ' μ'
|
||||
sed -i 's/\\xe4/\xce\xbc/g' $OUTFILE
|
||||
|
||||
|
||||
echo >&2
|
||||
echo "$(tput setaf 2)lang-export.sh finished$(tput sgr 0)">&2
|
||||
exit 0
|
||||
|
|
|
|||
|
|
@ -1,21 +1,69 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Version 1.0.1 Build 46
|
||||
#
|
||||
# lang-import.sh - multi-language support script
|
||||
# for importing translated xx.po
|
||||
#
|
||||
#############################################################################
|
||||
# Change log:
|
||||
# 9 Nov. 2018, XPila, Initial
|
||||
# 21 Nov. 2018, XPila, fix - replace '\n' with space in all languages
|
||||
# 10 Dec. 2018, jhoblitt, make all shell scripts executable
|
||||
# 21 Aug. 2019, 3d-gussner, Added "All" argument and it is default in nothing is chosen
|
||||
# Added few German/French diacritical characters
|
||||
# 6 Sep. 2019, DRracer, change to bash
|
||||
# 14 Sep. 2019, 3d-gussner, Prepare adding new language
|
||||
# 1 Mar. 2019, 3d-gussner, Move `Dutch` language parts
|
||||
# Add templates for future community languages
|
||||
# 17 Dec. 2021, 3d-gussner, Use one config file for all languages
|
||||
# Fix missing last translation
|
||||
# Add counter
|
||||
# replace two double quotes with `\x00`
|
||||
# 21 Dec. 2021, 3d-gussner, Add Swedish, Danish, Slovanian, Hungarian,
|
||||
# Luxembourgish, Croatian
|
||||
# 3 Jan. 2022, 3d-gussner, Add Lithuanian
|
||||
# Cleanup outaded code
|
||||
# 11 Jan. 2022, 3d-gussner, Added version and Change log
|
||||
# colored output
|
||||
# Add Community language support
|
||||
# Use `git rev-list --count HEAD lang-import.sh`
|
||||
# to get Build Nr
|
||||
# 14 Jan. 2022, 3d-gussner, Replace German UTF-8 'äöÿÿ' to HD44780 A00 ROM 'äöÿÿ'
|
||||
# 28 Jan. 2022, 3d-gussner, Run lang-check and output `xx-output.txt` file to review
|
||||
# translations
|
||||
# new argruments `--information` `--import-check`
|
||||
# 11 Jan. 2022, ingbrzy, Add Slovak letters
|
||||
# 11 Feb. 2022, 3d-gussner, Change to python3
|
||||
# 14 Feb. 2022, 3d-gussner, Replace non-block space with space
|
||||
# Fix single language run without config.sh OK
|
||||
# 12 Mar. 2022, 3d-gussner, Update Norwegian replace umlaut and diacritics
|
||||
# Update Swedish umlaut and diacritics
|
||||
#############################################################################
|
||||
|
||||
echo "$(tput setaf 2)lang-import.sh started$(tput sgr 0)" >&2
|
||||
|
||||
LNG=$1
|
||||
# if no arguments, 'all' is selected (all po and also pot will be generated)
|
||||
if [ -z "$LNG" ]; then LNG=all; fi
|
||||
if [ -z "$LNG" ]; then
|
||||
LNG=all;
|
||||
# Config:
|
||||
if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi
|
||||
if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo "$(tput setaf 1)Config NG!$(tput sgr 0)" >&2; exit 1; fi
|
||||
fi
|
||||
|
||||
if [[ ! -z "$COMMUNITY_LANGUAGES" && "$LNG" = "all" ]]; then
|
||||
LANGUAGES+=" $COMMUNITY_LANGUAGES"
|
||||
else
|
||||
LANGUAGES="$LNG"
|
||||
fi
|
||||
echo "$(tput setaf 2)lang-import languages:$LANGUAGES$(tput sgr 0)" >&2
|
||||
|
||||
# if 'all' is selected, script will generate all po files and also pot file
|
||||
if [ "$LNG" = "all" ]; then
|
||||
./lang-import.sh cz
|
||||
./lang-import.sh de
|
||||
./lang-import.sh es
|
||||
./lang-import.sh fr
|
||||
./lang-import.sh it
|
||||
./lang-import.sh pl
|
||||
#DO NOT add Community languages here !!!
|
||||
for lang in $LANGUAGES; do
|
||||
./lang-import.sh $lang
|
||||
done
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
|
@ -29,7 +77,7 @@ cd po/new
|
|||
|
||||
# check if input file exists
|
||||
if ! [ -e $LNGISO.po ]; then
|
||||
echo "Input file $LNGISO.po not found!" >&2
|
||||
echo "$(tput setaf 1)Input file $LNGISO.po not found!$(tput sgr 0)" >&2
|
||||
exit -1
|
||||
fi
|
||||
|
||||
|
|
@ -41,51 +89,99 @@ sed -i 's/ \\n/ /g;s/\\n/ /g' $LNG'_filtered.po'
|
|||
|
||||
#replace in czech translation
|
||||
if [ "$LNG" = "cz" ]; then
|
||||
#replace 'ž' with 'z'
|
||||
sed -i 's/\xc5\xbe/z/g' $LNG'_filtered.po'
|
||||
#replace 'ì' with 'e'
|
||||
sed -i 's/\xc4\x9b/e/g' $LNG'_filtered.po'
|
||||
#replace 'í' with 'i'
|
||||
sed -i 's/\xc3\xad/i/g' $LNG'_filtered.po'
|
||||
#replace 'ø' with 'r'
|
||||
sed -i 's/\xc5\x99/r/g' $LNG'_filtered.po'
|
||||
#replace 'è' with 'c'
|
||||
sed -i 's/\xc4\x8d/c/g' $LNG'_filtered.po'
|
||||
#replace 'á' with 'a'
|
||||
#replace 'Á' with 'A'
|
||||
sed -i 's/\xc3\x81/A/g' $LNG'_filtered.po'
|
||||
#replace 'á' with 'a'
|
||||
sed -i 's/\xc3\xa1/a/g' $LNG'_filtered.po'
|
||||
#replace 'é' with 'e'
|
||||
#replace 'Č' with 'C'
|
||||
sed -i 's/\xc4\x8c/C/g' $LNG'_filtered.po'
|
||||
#replace 'č' with 'c'
|
||||
sed -i 's/\xc4\x8d/c/g' $LNG'_filtered.po'
|
||||
#replace 'Ď' with 'D'
|
||||
sed -i 's/\xc4\x8e/D/g' $LNG'_filtered.po'
|
||||
#replace 'ď' with 'd'
|
||||
sed -i 's/\xc4\x8f/d/g' $LNG'_filtered.po'
|
||||
#replace 'É' with 'E'
|
||||
sed -i 's/\xc3\x89/E/g' $LNG'_filtered.po'
|
||||
#replace 'é' with 'e'
|
||||
sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po'
|
||||
#replace 'Ě' with 'E'
|
||||
sed -i 's/\xc4\x9a/E/g' $LNG'_filtered.po'
|
||||
#replace 'ě' with 'e'
|
||||
sed -i 's/\xc4\x9b/e/g' $LNG'_filtered.po'
|
||||
#replace 'Í' with 'I'
|
||||
sed -i 's/\xc3\x8d/I/g' $LNG'_filtered.po'
|
||||
#replace 'í' with 'i'
|
||||
sed -i 's/\xc3\xad/i/g' $LNG'_filtered.po'
|
||||
#replace 'Ň' with 'N'
|
||||
sed -i 's/\xc5\x87/N/g' $LNG'_filtered.po'
|
||||
#replace 'ň' with 'n'
|
||||
sed -i 's/\xc5\x88/n/g' $LNG'_filtered.po'
|
||||
#replace 'Ó' with 'O'
|
||||
sed -i 's/\xc3\x93/O/g' $LNG'_filtered.po'
|
||||
#replace 'ó' with 'o'
|
||||
sed -i 's/\xc3\xb3/o/g' $LNG'_filtered.po'
|
||||
#replace 'Ř' with 'R'
|
||||
sed -i 's/\xc5\x98/R/g' $LNG'_filtered.po'
|
||||
#replace 'ř' with 'r'
|
||||
sed -i 's/\xc5\x99/r/g' $LNG'_filtered.po'
|
||||
#replace 'Š' with 'S'
|
||||
sed -i 's/\xc5\xa0/S/g' $LNG'_filtered.po'
|
||||
#replace 'š' with 's'
|
||||
sed -i 's/\xc5\xa1/s/g' $LNG'_filtered.po'
|
||||
#replace 'Ť' with 'T'
|
||||
sed -i 's/\xc5\xa4/T/g' $LNG'_filtered.po'
|
||||
#replace 'ť' with 't'
|
||||
sed -i 's/\xc5\xa5/t/g' $LNG'_filtered.po'
|
||||
#replace 'Ú' with 'U'
|
||||
sed -i 's/\xc3\x9a/U/g' $LNG'_filtered.po'
|
||||
#replace 'ú' with 'u'
|
||||
sed -i 's/\xc3\xba/u/g' $LNG'_filtered.po'
|
||||
#replace 'Ů' with 'U'
|
||||
sed -i 's/\xc5\xae/U/g' $LNG'_filtered.po'
|
||||
#replace 'ů' with 'u'
|
||||
sed -i 's/\xc5\xaf/u/g' $LNG'_filtered.po'
|
||||
#replace 'Ý' with 'Y'
|
||||
sed -i 's/\xc3\x9d/Y/g' $LNG'_filtered.po'
|
||||
#replace 'ý' with 'y'
|
||||
sed -i 's/\xc3\xbd/y/g' $LNG'_filtered.po'
|
||||
#replace 'Ž' with 'Z'
|
||||
sed -i 's/\xc5\xbd/Z/g' $LNG'_filtered.po'
|
||||
#replace 'ž' with 'z'
|
||||
sed -i 's/\xc5\xbe/z/g' $LNG'_filtered.po'
|
||||
fi
|
||||
|
||||
#replace in german translation https://en.wikipedia.org/wiki/German_orthography
|
||||
if [ "$LNG" = "de" ]; then
|
||||
#replace 'ä' with 'ae'
|
||||
sed -i 's/\xc3\xa4/ae/g' $LNG'_filtered.po'
|
||||
#replace 'Ä' with 'Ae'
|
||||
sed -i 's/\xc3\x84/Ae/g' $LNG'_filtered.po'
|
||||
#replace 'ü' with 'ue'
|
||||
sed -i 's/\xc3\xbc/ue/g' $LNG'_filtered.po'
|
||||
#replace 'Ü' with 'Ue'
|
||||
sed -i 's/\xc3\x9c/Ue/g' $LNG'_filtered.po'
|
||||
#replace 'ö' with 'oe'
|
||||
sed -i 's/\xc3\xb6/oe/g' $LNG'_filtered.po'
|
||||
#replace 'Ö' with 'Oe'
|
||||
sed -i 's/\xc3\x96/Oe/g' $LNG'_filtered.po'
|
||||
#replace 'ß' with 'ss'
|
||||
sed -i 's/\xc3\x9f/ss/g' $LNG'_filtered.po'
|
||||
#replace in German translation https://en.wikipedia.org/wiki/German_orthography
|
||||
#replace in Swedish as well
|
||||
if [[ "$LNG" = "de" || "$LNG" = "sv" ]]; then
|
||||
#replace UTF-8 'äöüß' to HD44780 A00 'äöüß'
|
||||
#replace 'ä' with 'A00 ROM ä'
|
||||
sed -i 's/\xc3\xa4/\\xe1/g' $LNG'_filtered.po'
|
||||
#replace 'Ä' with 'A00 ROM ä'
|
||||
sed -i 's/\xc3\x84/\\xe1/g' $LNG'_filtered.po'
|
||||
#replace 'ü' with 'A00 ROM ü'
|
||||
sed -i 's/\xc3\xbc/\\xf5/g' $LNG'_filtered.po'
|
||||
#replace 'Ü' with 'A00 ROM ü'
|
||||
sed -i 's/\xc3\x9c/\\xf5/g' $LNG'_filtered.po'
|
||||
#replace 'ö' with 'A00 ROM ö'
|
||||
sed -i 's/\xc3\xb6/\\xef/g' $LNG'_filtered.po'
|
||||
#replace 'Ö' with 'A00 ROM ö'
|
||||
sed -i 's/\xc3\x96/\\xef/g' $LNG'_filtered.po'
|
||||
#replace 'ß' with 'A00 ROM ß'
|
||||
sed -i 's/\xc3\x9f/\\xe2/g' $LNG'_filtered.po'
|
||||
fi
|
||||
|
||||
#replace in spain translation
|
||||
if [ "$LNG" = "es" ]; then
|
||||
#replace 'á' with 'a'
|
||||
#replace 'á' with 'a'
|
||||
sed -i 's/\xc3\xa1/a/g' $LNG'_filtered.po'
|
||||
#replace '¿' with '?'
|
||||
#replace '¿' with '?'
|
||||
sed -i 's/\xc2\xbf/?/g' $LNG'_filtered.po'
|
||||
#replace 'ó' with 'o'
|
||||
#replace 'ó' with 'o'
|
||||
sed -i 's/\xc3\xb3/o/g' $LNG'_filtered.po'
|
||||
#replace 'é' with 'e'
|
||||
#replace 'é' with 'e'
|
||||
sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po'
|
||||
#replace 'í' with 'i'
|
||||
#replace 'í' with 'i'
|
||||
sed -i 's/\xc3\xad/i/g' $LNG'_filtered.po'
|
||||
#replace '!' with '!'
|
||||
sed -i 's/\xc2\xa1/!/g' $LNG'_filtered.po'
|
||||
|
|
@ -95,106 +191,325 @@ fi
|
|||
|
||||
#replace in french translation https://en.wikipedia.org/wiki/French_orthography
|
||||
if [ "$LNG" = "fr" ]; then
|
||||
#replace 'á' with 'a' (right)
|
||||
#replace 'á' with 'a' (right)
|
||||
sed -i 's/\xc3\xa1/a/g' $LNG'_filtered.po'
|
||||
#replace 'Á' with 'A' (right)
|
||||
#replace 'Á' with 'A' (right)
|
||||
sed -i 's/\xc3\x81/A/g' $LNG'_filtered.po'
|
||||
#replace 'à' with 'a' (left)
|
||||
#replace 'à' with 'a' (left)
|
||||
sed -i 's/\xc3\xa0/a/g' $LNG'_filtered.po'
|
||||
#replace 'À' with 'A' (left)
|
||||
#replace 'À' with 'A' (left)
|
||||
sed -i 's/\xc3\x80/A/g' $LNG'_filtered.po'
|
||||
#replace 'é' with 'e' (right)
|
||||
#replace 'é' with 'e' (right)
|
||||
sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po'
|
||||
#replace 'É' with 'E' (right)
|
||||
#replace 'É' with 'E' (right)
|
||||
sed -i 's/\xc3\x89/E/g' $LNG'_filtered.po'
|
||||
#replace 'è' with 'e' (left)
|
||||
#replace 'è' with 'e' (left)
|
||||
sed -i 's/\xc3\xa8/e/g' $LNG'_filtered.po'
|
||||
#replace 'È' with 'E' (left)
|
||||
#replace 'È' with 'E' (left)
|
||||
sed -i 's/\xc3\x88/E/g' $LNG'_filtered.po'
|
||||
fi
|
||||
|
||||
#replace in italian translation
|
||||
if [ "$LNG" = "it" ]; then
|
||||
#replace 'é' with 'e' (left)
|
||||
#replace 'é' with 'e' (left)
|
||||
sed -i 's/\xc3\xa8/e/g' $LNG'_filtered.po'
|
||||
#replace 'á' with 'a' (left)
|
||||
#replace 'á' with 'a' (left)
|
||||
sed -i 's/\xc3\xa0/a/g' $LNG'_filtered.po'
|
||||
#replace 'ó' with 'o' (left)
|
||||
#replace 'ó' with 'o' (left)
|
||||
sed -i 's/\xc3\xb2/o/g' $LNG'_filtered.po'
|
||||
#replace 'ú' with 'u' (left)
|
||||
#replace 'ú' with 'u' (left)
|
||||
sed -i 's/\xc3\xb9/u/g' $LNG'_filtered.po'
|
||||
#replace 'é' with 'e'
|
||||
#replace 'é' with 'e'
|
||||
sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po'
|
||||
#replace 'É' with 'E' (left)
|
||||
#replace 'É' with 'E' (left)
|
||||
sed -i 's/\xc3\x88/E/g' $LNG'_filtered.po'
|
||||
fi
|
||||
|
||||
#replace in dutch translation according to https://nl.wikipedia.org/wiki/Accenttekens_in_de_Nederlandse_spelling
|
||||
if [ "$LNG" = "nl" ]; then
|
||||
#replace 'ë' with 'e'
|
||||
#replace 'ë' with 'e'
|
||||
sed -i 's/\xc3\xab/e/g' $LNG'_filtered.po'
|
||||
#replace 'ï' with 'i'
|
||||
#replace 'ï' with 'i'
|
||||
sed -i 's/\xc3\xaf/i/g' $LNG'_filtered.po'
|
||||
#replace 'é' with 'e'
|
||||
#replace 'é' with 'e'
|
||||
sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po'
|
||||
#replace 'è' with 'e' (left)
|
||||
#replace 'è' with 'e' (left)
|
||||
sed -i 's/\xc3\xa8/e/g' $LNG'_filtered.po'
|
||||
#replace 'ö' with 'o' (left)
|
||||
#replace 'ö' with 'o' (left)
|
||||
sed -i 's/\xc3\xb6/o/g' $LNG'_filtered.po'
|
||||
#replace 'ê' with 'e' (left)
|
||||
#replace 'ê' with 'e' (left)
|
||||
sed -i 's/\xc3\xaa/e/g' $LNG'_filtered.po'
|
||||
#replace 'ü' with 'u' (left)
|
||||
#replace 'ü' with 'u' (left)
|
||||
sed -i 's/\xc3\xbc/u/g' $LNG'_filtered.po'
|
||||
#replace 'ç' with 'c' (left)
|
||||
#replace 'ç' with 'c' (left)
|
||||
sed -i 's/\xc3\xa7/c/g' $LNG'_filtered.po'
|
||||
#replace 'á' with 'a' (left)
|
||||
#replace 'á' with 'a' (left)
|
||||
sed -i 's/\xc3\xa1/a/g' $LNG'_filtered.po'
|
||||
#replace 'à' with 'a' (left)
|
||||
#replace 'à' with 'a' (left)
|
||||
sed -i 's/\xc3\xa0/a/g' $LNG'_filtered.po'
|
||||
#replace 'ä' with 'a' (left)
|
||||
#replace 'ä' with 'a' (left)
|
||||
sed -i 's/\xc3\xa4/a/g' $LNG'_filtered.po'
|
||||
#replace 'û' with 'u' (left)
|
||||
#replace 'û' with 'u' (left)
|
||||
sed -i 's/\xc3\xbc/u/g' $LNG'_filtered.po'
|
||||
#replace 'î' with 'i' (left)
|
||||
#replace 'î' with 'i' (left)
|
||||
sed -i 's/\xc3\xae/i/g' $LNG'_filtered.po'
|
||||
#replace 'í' with 'i' (left)
|
||||
#replace 'í' with 'i' (left)
|
||||
sed -i 's/\xc3\xad/i/g' $LNG'_filtered.po'
|
||||
#replace 'ô' with 'o' (left)
|
||||
#replace 'ô' with 'o' (left)
|
||||
sed -i 's/\xc3\xb4/o/g' $LNG'_filtered.po'
|
||||
#replace 'ú' with 'u' (left)
|
||||
#replace 'ú' with 'u' (left)
|
||||
sed -i 's/\xc3\xba/u/g' $LNG'_filtered.po'
|
||||
#replace 'ñ' with 'n' (left)
|
||||
#replace 'ñ' with 'n' (left)
|
||||
sed -i 's/\xc3\xb1/n/g' $LNG'_filtered.po'
|
||||
#replace 'â' with 'a' (left)
|
||||
#replace 'â' with 'a' (left)
|
||||
sed -i 's/\xc3\xa2/a/g' $LNG'_filtered.po'
|
||||
#replace 'Å' with 'A' (left)
|
||||
#replace 'Å' with 'A' (left)
|
||||
sed -i 's/\xc3\x85/A/g' $LNG'_filtered.po'
|
||||
fi
|
||||
|
||||
if [ "$LNG" = "sv" ]; then
|
||||
#repace 'Å' with 'A'
|
||||
sed -i 's/\xc3\x85/A/g' $LNG'_filtered.po'
|
||||
#repace 'å' with 'a'
|
||||
sed -i 's/\xc3\xA5/a/g' $LNG'_filtered.po'
|
||||
fi
|
||||
|
||||
#https://en.wikipedia.org/wiki/Norwegian_orthography éèêóòôù ÅåÆæØø
|
||||
if [ "$LNG" = "no" ]; then
|
||||
#replace UTF-8 'æÆøØ' to HD44780 A00 'äö'
|
||||
#repace 'Æ' with 'Ä'
|
||||
sed -i 's/\xc3\x86/\\xe1/g' $LNG'_filtered.po'
|
||||
#repace 'æ' with 'ä'
|
||||
sed -i 's/\xc3\xa6/\\xe1/g' $LNG'_filtered.po'
|
||||
#repace 'Ø' with 'Ö'
|
||||
sed -i 's/\xc3\x98/\\xef/g' $LNG'_filtered.po'
|
||||
#repace 'ø' with 'ö'
|
||||
sed -i 's/\xc3\xb8/\\xef/g' $LNG'_filtered.po'
|
||||
#replace diacritics
|
||||
#repace 'Å' with 'A'
|
||||
sed -i 's/\xc3\x85/A/g' $LNG'_filtered.po'
|
||||
#repace 'å' with 'a'
|
||||
sed -i 's/\xc3\xa5/a/g' $LNG'_filtered.po'
|
||||
#replace 'é' with 'e'
|
||||
sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po'
|
||||
#replace 'è' with 'e'
|
||||
sed -i 's/\xc3\xa8/e/g' $LNG'_filtered.po'
|
||||
#replace 'ê' with 'e'
|
||||
sed -i 's/\xc3\xaa/e/g' $LNG'_filtered.po'
|
||||
#replace 'ó' with 'o'
|
||||
sed -i 's/\xc3\xb3/o/g' $LNG'_filtered.po'
|
||||
#replace 'ò' with 'o'
|
||||
sed -i 's/\xc3\xb2/o/g' $LNG'_filtered.po'
|
||||
#replace 'ô' with 'o'
|
||||
sed -i 's/\xc3\xb4/o/g' $LNG'_filtered.po'
|
||||
#replace 'ù' with 'u'
|
||||
sed -i 's/\xc3\xb9/u/g' $LNG'_filtered.po'
|
||||
fi
|
||||
|
||||
if [ "$LNG" = "da" ]; then
|
||||
#repace 'Å' with 'Aa'
|
||||
sed -i 's/\xc3\x85/Aa/g' $LNG'_filtered.po'
|
||||
#repace 'å' with 'aa'
|
||||
sed -i 's/\xc3\xA5/aa/g' $LNG'_filtered.po'
|
||||
fi
|
||||
|
||||
if [ "$LNG" = "sl" ]; then
|
||||
#replace 'ë' with 'e'
|
||||
sed -i 's/\xc3\xab/e/g' $LNG'_filtered.po'
|
||||
#replace 'ä' with 'a' (left)
|
||||
sed -i 's/\xc3\xa4/a/g' $LNG'_filtered.po'
|
||||
#replace 'é' with 'e'
|
||||
sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po'
|
||||
fi
|
||||
|
||||
if [ "$LNG" = "hu" ]; then # See https://www.fileformat.info/info/charset/UTF-8/list.htm
|
||||
#replace 'Á' with 'A'(acute)
|
||||
sed -i 's/\xc3\x81/A/g' $LNG'_filtered.po'
|
||||
#replace 'á' with 'a'
|
||||
sed -i 's/\xc3\xa1/a/g' $LNG'_filtered.po'
|
||||
#replace 'É' with 'E' (acute)
|
||||
sed -i 's/\xc3\x89/E/g' $LNG'_filtered.po'
|
||||
#replace 'é' with 'e'
|
||||
sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po'
|
||||
#replace 'Í' with 'I' (acute)
|
||||
sed -i 's/\xc3\x8d/I/g' $LNG'_filtered.po'
|
||||
#replace 'i̇́' with 'i'
|
||||
sed -i 's/\xc3\xad/i/g' $LNG'_filtered.po'
|
||||
#replace 'Ó' with 'O' (acute)
|
||||
sed -i 's/\xc3\x93/O/g' $LNG'_filtered.po'
|
||||
#replace 'ó' with 'o'
|
||||
sed -i 's/\xc3\xb3/o/g' $LNG'_filtered.po'
|
||||
#replace 'Ö' with 'O' (diaresis)
|
||||
sed -i 's/\xc3\x96/O/g' $LNG'_filtered.po'
|
||||
#replace 'ö' with 'o'
|
||||
sed -i 's/\xc3\xb6/o/g' $LNG'_filtered.po'
|
||||
#replace 'Ő' with 'O' (double acute)
|
||||
sed -i 's/\xc5\x90/O/g' $LNG'_filtered.po'
|
||||
#replace 'ő' with 'o'
|
||||
sed -i 's/\xc5\x91/o/g' $LNG'_filtered.po'
|
||||
#replace 'Ú' with 'U' (acute)
|
||||
sed -i 's/\xc3\x9a/U/g' $LNG'_filtered.po'
|
||||
#replace 'ú' with 'u'
|
||||
sed -i 's/\xc3\xba/u/g' $LNG'_filtered.po'
|
||||
#replace 'Ü' with 'U' (diaersis)
|
||||
sed -i 's/\xc3\x9c/U/g' $LNG'_filtered.po'
|
||||
#replace 'ü' with 'u'
|
||||
sed -i 's/\xc3\xbc/u/g' $LNG'_filtered.po'
|
||||
#replace 'Ű' with 'U' (double acute)
|
||||
sed -i 's/\xc5\xb0/U/g' $LNG'_filtered.po'
|
||||
#replace 'ű' with 'u'
|
||||
sed -i 's/\xc5\xb1/u/g' $LNG'_filtered.po'
|
||||
fi
|
||||
|
||||
if [ "$LNG" = "lb" ]; then
|
||||
#replace 'ë' with 'e'
|
||||
sed -i 's/\xc3\xab/e/g' $LNG'_filtered.po'
|
||||
#replace 'ä' with 'a'
|
||||
sed -i 's/\xc3\xa4/a/g' $LNG'_filtered.po'
|
||||
#replace 'é' with 'e'
|
||||
sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po'
|
||||
fi
|
||||
|
||||
if [ "$LNG" = "hr" ]; then
|
||||
#replace 'ë' with 'e'
|
||||
sed -i 's/\xc3\xab/e/g' $LNG'_filtered.po'
|
||||
#replace 'ä' with 'a'
|
||||
sed -i 's/\xc3\xa4/a/g' $LNG'_filtered.po'
|
||||
#replace 'é' with 'e'
|
||||
sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po'
|
||||
fi
|
||||
|
||||
if [ "$LNG" = "lt" ]; then
|
||||
#replace 'ë' with 'e'
|
||||
sed -i 's/\xc3\xab/e/g' $LNG'_filtered.po'
|
||||
#replace 'ä' with 'a'
|
||||
sed -i 's/\xc3\xa4/a/g' $LNG'_filtered.po'
|
||||
#replace 'é' with 'e'
|
||||
sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po'
|
||||
fi
|
||||
#replace in polish translation
|
||||
#if [ "$LNG" = "pl" ]; then
|
||||
#fi
|
||||
|
||||
#check for nonasci characters
|
||||
if grep --color='auto' -P -n '[^\x00-\x7F]' $LNG'_filtered.po' >nonasci.txt; then
|
||||
#replace in slovak translation
|
||||
if [ "$LNG" = "sk" ]; then
|
||||
#replace 'Á' with 'A'
|
||||
sed -i 's/\xc3\x81/A/g' $LNG'_filtered.po'
|
||||
#replace 'á' with 'a'
|
||||
sed -i 's/\xc3\xa1/a/g' $LNG'_filtered.po'
|
||||
#replace 'ä' with 'a'
|
||||
sed -i 's/\xc3\xa4/a/g' $LNG'_filtered.po'
|
||||
#replace 'Č' with 'C'
|
||||
sed -i 's/\xc4\x8c/C/g' $LNG'_filtered.po'
|
||||
#replace 'č' with 'c'
|
||||
sed -i 's/\xc4\x8d/c/g' $LNG'_filtered.po'
|
||||
#replace 'Ď' with 'D'
|
||||
sed -i 's/\xc4\x8e/D/g' $LNG'_filtered.po'
|
||||
#replace 'ď' with 'd'
|
||||
sed -i 's/\xc4\x8f/d/g' $LNG'_filtered.po'
|
||||
#replace 'É' with 'E'
|
||||
sed -i 's/\xc3\x89/E/g' $LNG'_filtered.po'
|
||||
#replace 'é' with 'e'
|
||||
sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po'
|
||||
#replace 'Í' with 'I'
|
||||
sed -i 's/\xc3\x8d/I/g' $LNG'_filtered.po'
|
||||
#replace 'í' with 'i'
|
||||
sed -i 's/\xc3\xad/i/g' $LNG'_filtered.po'
|
||||
#replace 'ľ' with 'l'
|
||||
sed -i 's/\xc4\xbe/l/g' $LNG'_filtered.po'
|
||||
#replace 'Ľ' with 'L'
|
||||
sed -i 's/\xc4\xbd/L/g' $LNG'_filtered.po'
|
||||
#replace 'Ň' with 'N'
|
||||
sed -i 's/\xc5\x87/N/g' $LNG'_filtered.po'
|
||||
#replace 'ň' with 'n'
|
||||
sed -i 's/\xc5\x88/n/g' $LNG'_filtered.po'
|
||||
#replace 'Ó' with 'O'
|
||||
sed -i 's/\xc3\x93/O/g' $LNG'_filtered.po'
|
||||
#replace 'ó' with 'o'
|
||||
sed -i 's/\xc3\xb3/o/g' $LNG'_filtered.po'
|
||||
#replace 'ô' with 'o'
|
||||
sed -i 's/\xc3\xb4/o/g' $LNG'_filtered.po'
|
||||
#replace 'Ô' with 'O'
|
||||
sed -i 's/\xc3\x94/O/g' $LNG'_filtered.po'
|
||||
#replace 'ŕ' with 'r'
|
||||
sed -i 's/\xc5\x95/r/g' $LNG'_filtered.po'
|
||||
#replace 'Ŕ' with 'R'
|
||||
sed -i 's/\xc5\x94/R/g' $LNG'_filtered.po'
|
||||
#replace 'Š' with 'S'
|
||||
sed -i 's/\xc5\xa0/S/g' $LNG'_filtered.po'
|
||||
#replace 'š' with 's'
|
||||
sed -i 's/\xc5\xa1/s/g' $LNG'_filtered.po'
|
||||
#replace 'Ť' with 'T'
|
||||
sed -i 's/\xc5\xa4/T/g' $LNG'_filtered.po'
|
||||
#replace 'ť' with 't'
|
||||
sed -i 's/\xc5\xa5/t/g' $LNG'_filtered.po'
|
||||
#replace 'Ú' with 'U'
|
||||
sed -i 's/\xc3\x9a/U/g' $LNG'_filtered.po'
|
||||
#replace 'ú' with 'u'
|
||||
sed -i 's/\xc3\xba/u/g' $LNG'_filtered.po'
|
||||
#replace 'Ý' with 'Y'
|
||||
sed -i 's/\xc3\x9d/Y/g' $LNG'_filtered.po'
|
||||
#replace 'ý' with 'y'
|
||||
sed -i 's/\xc3\xbd/y/g' $LNG'_filtered.po'
|
||||
#replace 'Ž' with 'Z'
|
||||
sed -i 's/\xc5\xbd/Z/g' $LNG'_filtered.po'
|
||||
#replace 'ž' with 'z'
|
||||
sed -i 's/\xc5\xbe/z/g' $LNG'_filtered.po'
|
||||
fi
|
||||
|
||||
#replace UTF-8 'μ' to HD44780 A00 'μ'
|
||||
#replace 'μ' with 'A00 ROM μ'
|
||||
sed -i 's/\xce\xbc/\\xe4/g' $LNG'_filtered.po'
|
||||
#replace non-break space with space
|
||||
sed -i 's/\xc2\xa0/ /g' $LNG'_filtered.po'
|
||||
|
||||
#check for nonasci characters except HD44780 ROM A00 'äöüß'
|
||||
if grep --color='auto' -P -n '[^\x00-\x7F]' $LNG'_filtered.po' >nonascii.txt; then
|
||||
exit
|
||||
fi
|
||||
|
||||
#join lines with multi-line string constants
|
||||
cat $LNG'_filtered.po' | sed ':a;N;$!ba;s/\x22\n\x22//g' > $LNG'_new.po'
|
||||
|
||||
#Get counter from po files
|
||||
|
||||
CNTTXT=$(grep '^# MSG' -c $LNGISO.po)
|
||||
num=1
|
||||
echo " selected language=$(tput setaf 2)$LNGISO$(tput sgr 0)" >&2
|
||||
#generate new dictionary
|
||||
cat ../../lang_en.txt | sed 's/\\/\\\\/g' | while read -r s; do
|
||||
/bin/echo -e "$s"
|
||||
#echo "s = $s ." >&2
|
||||
if [ "${s:0:1}" = "\"" ]; then
|
||||
|
||||
# /bin/echo -e "$s"
|
||||
s=$(/bin/echo -e "$s")
|
||||
s2=$(grep -F -A1 -B0 "$s" "$LNG"_new.po | tail -n1 | sed 's/^msgstr //')
|
||||
s2=$(grep -F -A1 -B0 "msgid $s" "$LNG"_new.po | tail -n1 | sed 's/^msgstr //')
|
||||
if [ -z "$s2" ]; then
|
||||
echo -ne " processing $num of $CNTTXT\033[0K\r" >&2
|
||||
echo '"\x00"'
|
||||
num=$((num+1))
|
||||
else
|
||||
echo -ne " processing $num of $CNTTXT\033[0K\r" >&2
|
||||
echo "$s2"
|
||||
num=$((num+1))
|
||||
fi
|
||||
# echo
|
||||
fi
|
||||
|
||||
done > lang_en_$LNG.txt
|
||||
echo >&2
|
||||
echo "$(tput setaf 2)Finished with $LNGISO$(tput sgr 0)" >&2
|
||||
#replace two double quotes to "\x00"
|
||||
sed -i 's/""/"\\x00"/g' lang_en_$LNG.txt
|
||||
#remove CR
|
||||
sed -i "s/\r//g" lang_en_$LNG.txt
|
||||
|
||||
#check new lang
|
||||
python3 ../../lang-check.py $LNG --warn-empty
|
||||
#gerenate some output
|
||||
python3 ../../lang-check.py $LNG --information >output-layout-$LNG.txt
|
||||
grep "msgstr" $LNGISO.po | cut -d '"' -f2 | sort >output-sorted-$LNG.txt
|
||||
echo >&2
|
||||
echo "$(tput setaf 2)lang-import.sh finished$(tput sgr 0)">&2
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,9 @@
|
|||
#MSG_SHEET_OFFSET c=20 r=4
|
||||
"Sheet %.7s\x0aZ offset: %+1.3fmm\x0a%cContinue\x0a%cReset"
|
||||
|
||||
#MSG_REFRESH c=18
|
||||
"\x04Refresh"
|
||||
|
||||
#MSG_IR_03_OR_OLDER c=18
|
||||
" 0.3 or older"
|
||||
|
||||
|
|
@ -28,7 +34,7 @@
|
|||
#MSG_SELFTEST_CHECK_ALLCORRECT c=20
|
||||
"All correct"
|
||||
|
||||
#MSG_WIZARD_DONE c=20 r=8
|
||||
#MSG_WIZARD_DONE c=20 r=3
|
||||
"All is done. Happy printing!"
|
||||
|
||||
#MSG_AMBIENT c=14
|
||||
|
|
@ -103,9 +109,6 @@
|
|||
#MSG_HOMEYZ c=18
|
||||
"Calibrate Z"
|
||||
|
||||
#MSG_CALIBRATE_PINDA c=17
|
||||
"Calibrate"
|
||||
|
||||
#MSG_CANCEL2 c=10
|
||||
">Cancel"
|
||||
|
||||
|
|
@ -121,7 +124,7 @@
|
|||
#MSG_HOMEYZ_DONE c=20
|
||||
"Calibration done"
|
||||
|
||||
#MSG_MENU_CALIBRATION c=18
|
||||
#MSG_CALIBRATION c=18
|
||||
"Calibration"
|
||||
|
||||
#MSG_SD_REMOVED c=20
|
||||
|
|
@ -142,8 +145,8 @@
|
|||
#MSG_CRASHDETECT c=13
|
||||
"Crash det."
|
||||
|
||||
#MSG_CHOOSE_FIL_1ST_LAYERCAL c=20 r=7
|
||||
"Choose a filament for the First Layer Calibration and select it in the on-screen menu."
|
||||
#MSG_SELECT_FIL_1ST_LAYERCAL c=20 r=7
|
||||
"Select a filament for the First Layer Calibration and select it in the on-screen menu."
|
||||
|
||||
#MSG_CRASH_DETECTED c=20
|
||||
"Crash detected."
|
||||
|
|
@ -154,9 +157,6 @@
|
|||
#MSG_CRASH c=7
|
||||
"Crash"
|
||||
|
||||
#MSG_CURRENT c=19
|
||||
"Current"
|
||||
|
||||
#MSG_DATE c=17
|
||||
"Date:"
|
||||
|
||||
|
|
@ -169,7 +169,7 @@
|
|||
#MSG_BABYSTEP_Z_NOT_SET c=20 r=12
|
||||
"Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
|
||||
|
||||
#MSG_FS_CONTINUE c=5
|
||||
#MSG_CONTINUE_SHORT c=5
|
||||
"Cont."
|
||||
|
||||
#MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
|
||||
|
|
@ -178,7 +178,7 @@
|
|||
#MSG_EXTRUDER_CORRECTION c=13
|
||||
"E-correct:"
|
||||
|
||||
#MSG_EJECT_FILAMENT c=16
|
||||
#MSG_EJECT_FILAMENT c=17
|
||||
"Eject filament"
|
||||
|
||||
#MSG_EJECTING_FILAMENT c=20
|
||||
|
|
@ -193,10 +193,7 @@
|
|||
#MSG_SELFTEST_ENDSTOPS c=20
|
||||
"Endstops"
|
||||
|
||||
#MSG_STACK_ERROR c=20 r=4
|
||||
"Error - static memory has been overwritten"
|
||||
|
||||
#MSG_CUT_FILAMENT c=16
|
||||
#MSG_CUT_FILAMENT c=17
|
||||
"Cut filament"
|
||||
|
||||
#MSG_CUTTER c=9
|
||||
|
|
@ -214,7 +211,7 @@
|
|||
#MSG_ERROR c=10
|
||||
"ERROR:"
|
||||
|
||||
#MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
|
||||
#MSG_EXTRUDER_FAN_SPEED c=16
|
||||
"Extruder fan:"
|
||||
|
||||
#MSG_INFO_EXTRUDER c=18
|
||||
|
|
@ -253,7 +250,7 @@
|
|||
#MSG_NOT_LOADED c=19
|
||||
"Filament not loaded"
|
||||
|
||||
#MSG_FILAMENT_SENSOR c=20
|
||||
#MSG_SELFTEST_FILAMENT_SENSOR c=17
|
||||
"Filament sensor"
|
||||
|
||||
#MSG_FILAMENT_USED c=19
|
||||
|
|
@ -283,11 +280,11 @@
|
|||
#MSG_FLOW c=15
|
||||
"Flow"
|
||||
|
||||
#MSG_SELFTEST_COOLING_FAN c=20
|
||||
#MSG_SELFTEST_PART_FAN c=20
|
||||
"Front print fan?"
|
||||
|
||||
#MSG_BED_CORRECTION_FRONT c=14
|
||||
"Front side[um]"
|
||||
"Front side[\xe4m]"
|
||||
|
||||
#MSG_SELFTEST_FANS c=20
|
||||
"Front/left fans"
|
||||
|
|
@ -337,11 +334,8 @@
|
|||
#MSG_SELFTEST_CHECK_Z c=20
|
||||
"Checking Z axis"
|
||||
|
||||
#MSG_CHOOSE_EXTRUDER c=20
|
||||
"Choose extruder:"
|
||||
|
||||
#MSG_CHOOSE_FILAMENT c=20
|
||||
"Choose filament:"
|
||||
#MSG_SELECT_EXTRUDER c=20
|
||||
"Select extruder:"
|
||||
|
||||
#MSG_FILAMENT c=17
|
||||
"Filament"
|
||||
|
|
@ -352,7 +346,7 @@
|
|||
#MSG_WIZARD_Z_CAL c=20 r=8
|
||||
"I will run z calibration now."
|
||||
|
||||
#MSG_WATCH c=18
|
||||
#MSG_INFO_SCREEN c=18
|
||||
"Info screen"
|
||||
|
||||
#MSG_INSERT_FILAMENT c=20
|
||||
|
|
@ -383,7 +377,7 @@
|
|||
"Left"
|
||||
|
||||
#MSG_BED_CORRECTION_LEFT c=14
|
||||
"Left side [um]"
|
||||
"Left side [\xe4m]"
|
||||
|
||||
#MSG_LIN_CORRECTION c=18
|
||||
"Lin. correction"
|
||||
|
|
@ -523,7 +517,7 @@
|
|||
#MSG_WIZARD_WILL_PREHEAT c=20 r=4
|
||||
"Now I will preheat nozzle for PLA."
|
||||
|
||||
#MSG_NOZZLE c=12
|
||||
#MSG_NOZZLE c=10
|
||||
"Nozzle"
|
||||
|
||||
#MSG_DEFAULT_SETTINGS_LOADED c=20 r=6
|
||||
|
|
@ -532,9 +526,6 @@
|
|||
#MSG_REMOVE_TEST_PRINT c=20 r=4
|
||||
"Now remove the test print from steel sheet."
|
||||
|
||||
#MSG_NOZZLE_FAN c=10
|
||||
"Nozzle FAN"
|
||||
|
||||
#MSG_PAUSE_PRINT c=18
|
||||
"Pause print"
|
||||
|
||||
|
|
@ -610,7 +601,7 @@
|
|||
#MSG_PRESS_TO_PREHEAT c=20 r=4
|
||||
"Press the knob to preheat nozzle and continue."
|
||||
|
||||
#MSG_FS_PAUSE c=5
|
||||
#MSG_PAUSE c=5
|
||||
"Pause"
|
||||
|
||||
#MSG_POWER_FAILURES c=15
|
||||
|
|
@ -625,7 +616,7 @@
|
|||
#MSG_PREHEATING_TO_UNLOAD c=20
|
||||
"Preheating to unload"
|
||||
|
||||
#MSG_SELFTEST_PRINT_FAN_SPEED c=18
|
||||
#MSG_PRINT_FAN_SPEED c=16
|
||||
"Print fan:"
|
||||
|
||||
#MSG_CARD_MENU c=18
|
||||
|
|
@ -643,9 +634,6 @@
|
|||
#MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
|
||||
"Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
|
||||
|
||||
#MSG_PRINT_FAN c=10
|
||||
"Print FAN"
|
||||
|
||||
#MSG_WIZARD_LOAD_FILAMENT c=20 r=6
|
||||
"Please insert filament into the extruder, then press the knob to load it."
|
||||
|
||||
|
|
@ -656,7 +644,7 @@
|
|||
"Please load filament first."
|
||||
|
||||
#MSG_BED_CORRECTION_REAR c=14
|
||||
"Rear side [um]"
|
||||
"Rear side [\xe4m]"
|
||||
|
||||
#MSG_UNLOAD_FILAMENT_REPEAT c=20 r=4
|
||||
"Please unload the filament first, then repeat this action."
|
||||
|
|
@ -683,7 +671,7 @@
|
|||
"Resuming print"
|
||||
|
||||
#MSG_BED_CORRECTION_RIGHT c=14
|
||||
"Right side[um]"
|
||||
"Right side[\xe4m]"
|
||||
|
||||
#MSG_RPI_PORT c=13
|
||||
"RPi port"
|
||||
|
|
@ -724,7 +712,7 @@
|
|||
#MSG_SEL_PREHEAT_TEMP c=20 r=6
|
||||
"Select nozzle preheat temperature which matches your material."
|
||||
|
||||
#MSG_SET_TEMPERATURE c=19
|
||||
#MSG_SET_TEMPERATURE c=20
|
||||
"Set temperature:"
|
||||
|
||||
#MSG_SETTINGS c=18
|
||||
|
|
@ -799,20 +787,17 @@
|
|||
#MSG_SELECT_FILAMENT c=20
|
||||
"Select filament:"
|
||||
|
||||
#MSG_TEMP_CALIBRATION c=14
|
||||
"Temp. cal."
|
||||
#MSG_PINDA_CALIBRATION c=13
|
||||
"PINDA cal."
|
||||
|
||||
#MSG_SELECT_TEMP_MATCHES_MATERIAL c=20 r=4
|
||||
"Select temperature which matches your material."
|
||||
|
||||
#MSG_CALIBRATION_PINDA_MENU c=17
|
||||
"Temp. calibration"
|
||||
#MSG_PINDA_CAL_FAILED c=20 r=4
|
||||
"PINDA calibration failed"
|
||||
|
||||
#MSG_TEMP_CAL_FAILED c=20 r=8
|
||||
"Temperature calibration failed"
|
||||
|
||||
#MSG_TEMP_CALIBRATION_DONE c=20 r=12
|
||||
"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
|
||||
#MSG_PINDA_CALIBRATION_DONE c=20 r=8
|
||||
"PINDA calibration is finished and active. It can be disabled in menu Settings->PINDA cal."
|
||||
|
||||
#MSG_FS_VERIFIED c=20 r=3
|
||||
"Sensor verified, remove the filament now."
|
||||
|
|
@ -844,7 +829,7 @@
|
|||
#MSG_TO_UNLOAD_FIL c=20
|
||||
"to unload filament"
|
||||
|
||||
#MSG_UNLOAD_FILAMENT c=16
|
||||
#MSG_UNLOAD_FILAMENT c=18
|
||||
"Unload filament"
|
||||
|
||||
#MSG_UNLOADING_FILAMENT c=20
|
||||
|
|
@ -853,9 +838,6 @@
|
|||
#MSG_TOTAL c=6
|
||||
"Total"
|
||||
|
||||
#MSG_USED c=19
|
||||
"Used during print"
|
||||
|
||||
#MSG_MENU_VOLTAGES c=15
|
||||
"Voltages"
|
||||
|
||||
|
|
@ -895,7 +877,7 @@
|
|||
#MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
|
||||
"XYZ calibration failed. Please consult the manual."
|
||||
|
||||
#MSG_YES c=3
|
||||
#MSG_YES c=4
|
||||
"Yes"
|
||||
|
||||
#MSG_WIZARD_QUIT c=20 r=8
|
||||
|
|
|
|||
|
|
@ -1,3 +1,11 @@
|
|||
#MSG_SHEET_OFFSET c=20 r=4
|
||||
"Sheet %.7s\x0aZ offset: %+1.3fmm\x0a%cContinue\x0a%cReset"
|
||||
"Plat %.7s\x0aZ offset: %+1.3fmm\x0a%cPokracovat\x0a%cReset"
|
||||
|
||||
#MSG_REFRESH c=18
|
||||
"\x04Refresh"
|
||||
"\x04Obnovit"
|
||||
|
||||
#MSG_IR_03_OR_OLDER c=18
|
||||
" 0.3 or older"
|
||||
" 0.3 nebo starsi"
|
||||
|
|
@ -38,9 +46,9 @@
|
|||
"All correct"
|
||||
"Vse OK"
|
||||
|
||||
#MSG_WIZARD_DONE c=20 r=8
|
||||
#MSG_WIZARD_DONE c=20 r=3
|
||||
"All is done. Happy printing!"
|
||||
"Vse je hotovo."
|
||||
"Vse je hotovo. Tisku zdar!"
|
||||
|
||||
#MSG_AMBIENT c=14
|
||||
"Ambient"
|
||||
|
|
@ -138,10 +146,6 @@
|
|||
"Calibrate Z"
|
||||
"Kalibrovat Z"
|
||||
|
||||
#MSG_CALIBRATE_PINDA c=17
|
||||
"Calibrate"
|
||||
"Zkalibrovat"
|
||||
|
||||
#MSG_CANCEL2 c=10
|
||||
">Cancel"
|
||||
">Zrusit"
|
||||
|
|
@ -162,7 +166,7 @@
|
|||
"Calibration done"
|
||||
"Kalibrace OK"
|
||||
|
||||
#MSG_MENU_CALIBRATION c=18
|
||||
#MSG_CALIBRATION c=18
|
||||
"Calibration"
|
||||
"Kalibrace"
|
||||
|
||||
|
|
@ -188,10 +192,10 @@
|
|||
|
||||
#MSG_CRASHDETECT c=13
|
||||
"Crash det."
|
||||
"\x00"
|
||||
"Det. narazu"
|
||||
|
||||
#MSG_CHOOSE_FIL_1ST_LAYERCAL c=20 r=7
|
||||
"Choose a filament for the First Layer Calibration and select it in the on-screen menu."
|
||||
#MSG_SELECT_FIL_1ST_LAYERCAL c=20 r=7
|
||||
"Select a filament for the First Layer Calibration and select it in the on-screen menu."
|
||||
"Zvolte filament pro kalibraci prvni vrstvy z nasledujiciho menu"
|
||||
|
||||
#MSG_CRASH_DETECTED c=20
|
||||
|
|
@ -206,10 +210,6 @@
|
|||
"Crash"
|
||||
"Naraz"
|
||||
|
||||
#MSG_CURRENT c=19
|
||||
"Current"
|
||||
"Pouze aktualni"
|
||||
|
||||
#MSG_DATE c=17
|
||||
"Date:"
|
||||
"Datum:"
|
||||
|
|
@ -226,7 +226,7 @@
|
|||
"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."
|
||||
"Neni zkalibrovana vzdalenost trysky od tiskove podlozky. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Nastaveni prvni vrstvy."
|
||||
|
||||
#MSG_FS_CONTINUE c=5
|
||||
#MSG_CONTINUE_SHORT c=5
|
||||
"Cont."
|
||||
"Pokr."
|
||||
|
||||
|
|
@ -238,7 +238,7 @@
|
|||
"E-correct:"
|
||||
"Korekce E:"
|
||||
|
||||
#MSG_EJECT_FILAMENT c=16
|
||||
#MSG_EJECT_FILAMENT c=17
|
||||
"Eject filament"
|
||||
"Vysunout fil."
|
||||
|
||||
|
|
@ -258,11 +258,7 @@
|
|||
"Endstops"
|
||||
"Konc. spinace"
|
||||
|
||||
#MSG_STACK_ERROR c=20 r=4
|
||||
"Error - static memory has been overwritten"
|
||||
"Chyba - Doslo k prepisu staticke pameti"
|
||||
|
||||
#MSG_CUT_FILAMENT c=16
|
||||
#MSG_CUT_FILAMENT c=17
|
||||
"Cut filament"
|
||||
"Ustrihnout"
|
||||
|
||||
|
|
@ -286,7 +282,7 @@
|
|||
"ERROR:"
|
||||
"CHYBA:"
|
||||
|
||||
#MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
|
||||
#MSG_EXTRUDER_FAN_SPEED c=16
|
||||
"Extruder fan:"
|
||||
"Levy vent.:"
|
||||
|
||||
|
|
@ -338,7 +334,7 @@
|
|||
"Filament not loaded"
|
||||
"Filament nezaveden"
|
||||
|
||||
#MSG_FILAMENT_SENSOR c=20
|
||||
#MSG_SELFTEST_FILAMENT_SENSOR c=17
|
||||
"Filament sensor"
|
||||
"Senzor filamentu"
|
||||
|
||||
|
|
@ -378,13 +374,13 @@
|
|||
"Flow"
|
||||
"Prutok"
|
||||
|
||||
#MSG_SELFTEST_COOLING_FAN c=20
|
||||
#MSG_SELFTEST_PART_FAN c=20
|
||||
"Front print fan?"
|
||||
"Predni tiskovy vent?"
|
||||
|
||||
#MSG_BED_CORRECTION_FRONT c=14
|
||||
"Front side[um]"
|
||||
"Vpredu [um]"
|
||||
"Front side[\xe4m]"
|
||||
"Vpredu [\xe4m]"
|
||||
|
||||
#MSG_SELFTEST_FANS c=20
|
||||
"Front/left fans"
|
||||
|
|
@ -450,14 +446,10 @@
|
|||
"Checking Z axis"
|
||||
"Kontrola osy Z"
|
||||
|
||||
#MSG_CHOOSE_EXTRUDER c=20
|
||||
"Choose extruder:"
|
||||
#MSG_SELECT_EXTRUDER c=20
|
||||
"Select extruder:"
|
||||
"Vyberte extruder:"
|
||||
|
||||
#MSG_CHOOSE_FILAMENT c=20
|
||||
"Choose filament:"
|
||||
"Vyber filament:"
|
||||
|
||||
#MSG_FILAMENT c=17
|
||||
"Filament"
|
||||
"\x00"
|
||||
|
|
@ -470,7 +462,7 @@
|
|||
"I will run z calibration now."
|
||||
"Nyni provedu z kalibraci."
|
||||
|
||||
#MSG_WATCH c=18
|
||||
#MSG_INFO_SCREEN c=18
|
||||
"Info screen"
|
||||
"Informace"
|
||||
|
||||
|
|
@ -511,8 +503,8 @@
|
|||
"Vlevo"
|
||||
|
||||
#MSG_BED_CORRECTION_LEFT c=14
|
||||
"Left side [um]"
|
||||
"Vlevo [um]"
|
||||
"Left side [\xe4m]"
|
||||
"Vlevo [\xe4m]"
|
||||
|
||||
#MSG_LIN_CORRECTION c=18
|
||||
"Lin. correction"
|
||||
|
|
@ -698,7 +690,7 @@
|
|||
"Now I will preheat nozzle for PLA."
|
||||
"Nyni predehreji trysku pro PLA."
|
||||
|
||||
#MSG_NOZZLE c=12
|
||||
#MSG_NOZZLE c=10
|
||||
"Nozzle"
|
||||
"Tryska"
|
||||
|
||||
|
|
@ -710,10 +702,6 @@
|
|||
"Now remove the test print from steel sheet."
|
||||
"Nyni odstrante testovaci vytisk z tiskoveho platu."
|
||||
|
||||
#MSG_NOZZLE_FAN c=10
|
||||
"Nozzle FAN"
|
||||
"V. trysky"
|
||||
|
||||
#MSG_PAUSE_PRINT c=18
|
||||
"Pause print"
|
||||
"Pozastavit tisk"
|
||||
|
|
@ -814,7 +802,7 @@
|
|||
"Press the knob to preheat nozzle and continue."
|
||||
"Pro nahrati trysky a pokracovani stisknete tlacitko."
|
||||
|
||||
#MSG_FS_PAUSE c=5
|
||||
#MSG_PAUSE c=5
|
||||
"Pause"
|
||||
"Pauza"
|
||||
|
||||
|
|
@ -834,7 +822,7 @@
|
|||
"Preheating to unload"
|
||||
"Predehrev k vyjmuti"
|
||||
|
||||
#MSG_SELFTEST_PRINT_FAN_SPEED c=18
|
||||
#MSG_PRINT_FAN_SPEED c=16
|
||||
"Print fan:"
|
||||
"Tiskovy vent.:"
|
||||
|
||||
|
|
@ -858,10 +846,6 @@
|
|||
"Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
|
||||
"Tiskarna nebyla jeste zkalibrovana. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Postup kalibrace."
|
||||
|
||||
#MSG_PRINT_FAN c=10
|
||||
"Print FAN"
|
||||
"Tiskovy v."
|
||||
|
||||
#MSG_WIZARD_LOAD_FILAMENT c=20 r=6
|
||||
"Please insert filament into the extruder, then press the knob to load it."
|
||||
"Prosim vlozte filament do extruderu a stisknete tlacitko k jeho zavedeni"
|
||||
|
|
@ -875,8 +859,8 @@
|
|||
"Prosim nejdriv zavedte filament"
|
||||
|
||||
#MSG_BED_CORRECTION_REAR c=14
|
||||
"Rear side [um]"
|
||||
"Vzadu [um]"
|
||||
"Rear side [\xe4m]"
|
||||
"Vzadu [\xe4m]"
|
||||
|
||||
#MSG_UNLOAD_FILAMENT_REPEAT c=20 r=4
|
||||
"Please unload the filament first, then repeat this action."
|
||||
|
|
@ -911,8 +895,8 @@
|
|||
"Obnoveni tisku"
|
||||
|
||||
#MSG_BED_CORRECTION_RIGHT c=14
|
||||
"Right side[um]"
|
||||
"Vpravo [um]"
|
||||
"Right side[\xe4m]"
|
||||
"Vpravo [\xe4m]"
|
||||
|
||||
#MSG_RPI_PORT c=13
|
||||
"RPi port"
|
||||
|
|
@ -944,11 +928,11 @@
|
|||
|
||||
#MSG_SELFTEST_START c=20
|
||||
"Self test start"
|
||||
"Self test start"
|
||||
"\x00"
|
||||
|
||||
#MSG_SELFTEST c=18
|
||||
"Selftest"
|
||||
"Selftest"
|
||||
"\x00"
|
||||
|
||||
#MSG_SELFTEST_ERROR c=20
|
||||
"Selftest error!"
|
||||
|
|
@ -1011,8 +995,8 @@
|
|||
"Hlasity"
|
||||
|
||||
#MSG_SLIGHT_SKEW c=14
|
||||
"Slight skew:"
|
||||
"Lehke zkos.:"
|
||||
"Slight skew"
|
||||
"Lehke zkos."
|
||||
|
||||
#MSG_SOUND c=7
|
||||
"Sound"
|
||||
|
|
@ -1066,25 +1050,21 @@
|
|||
"Select filament:"
|
||||
"Zvolte filament:"
|
||||
|
||||
#MSG_TEMP_CALIBRATION c=14
|
||||
"Temp. cal."
|
||||
"Tepl. kal."
|
||||
#MSG_PINDA_CALIBRATION c=13
|
||||
"PINDA cal."
|
||||
"PINDA kal."
|
||||
|
||||
#MSG_SELECT_TEMP_MATCHES_MATERIAL c=20 r=4
|
||||
"Select temperature which matches your material."
|
||||
"Zvolte teplotu, ktera odpovida vasemu materialu."
|
||||
|
||||
#MSG_CALIBRATION_PINDA_MENU c=17
|
||||
"Temp. calibration"
|
||||
"Teplot. kalibrace"
|
||||
#MSG_PINDA_CAL_FAILED c=20 r=4
|
||||
"PINDA calibration failed"
|
||||
"PINDA kalibrace selhala"
|
||||
|
||||
#MSG_TEMP_CAL_FAILED c=20 r=8
|
||||
"Temperature calibration failed"
|
||||
"Teplotni kalibrace selhala"
|
||||
|
||||
#MSG_TEMP_CALIBRATION_DONE c=20 r=12
|
||||
"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
|
||||
"Teplotni kalibrace dokoncena a je nyni aktivni. Teplotni kalibraci je mozno deaktivovat v menu Nastaveni->Tepl. kal."
|
||||
#MSG_PINDA_CALIBRATION_DONE c=20 r=8
|
||||
"PINDA calibration is finished and active. It can be disabled in menu Settings->PINDA cal."
|
||||
"PINDA kalibrace dokoncena a je nyni aktivni. Zabere je mozno deaktivovat v menu Nastaveni->Tepl. kal."
|
||||
|
||||
#MSG_FS_VERIFIED c=20 r=3
|
||||
"Sensor verified, remove the filament now."
|
||||
|
|
@ -1126,7 +1106,7 @@
|
|||
"to unload filament"
|
||||
"k vyjmuti filamentu"
|
||||
|
||||
#MSG_UNLOAD_FILAMENT c=16
|
||||
#MSG_UNLOAD_FILAMENT c=18
|
||||
"Unload filament"
|
||||
"Vyjmout filament"
|
||||
|
||||
|
|
@ -1138,10 +1118,6 @@
|
|||
"Total"
|
||||
"Celkem"
|
||||
|
||||
#MSG_USED c=19
|
||||
"Used during print"
|
||||
"Pouzite behem tisku"
|
||||
|
||||
#MSG_MENU_VOLTAGES c=15
|
||||
"Voltages"
|
||||
"Napeti"
|
||||
|
|
@ -1194,7 +1170,7 @@
|
|||
"XYZ calibration failed. Please consult the manual."
|
||||
"Kalibrace XYZ selhala. Nahlednete do manualu."
|
||||
|
||||
#MSG_YES c=3
|
||||
#MSG_YES c=4
|
||||
"Yes"
|
||||
"Ano"
|
||||
|
||||
|
|
@ -1324,11 +1300,11 @@
|
|||
|
||||
#MSG_GCODE_DIFF_CONTINUE c=20 r=4
|
||||
"G-code sliced for a different level. Continue?"
|
||||
"\x00"
|
||||
"G-code je pripraven pro jinou verzi. Pokracovat?"
|
||||
|
||||
#MSG_GCODE_DIFF_CANCELLED c=20 r=7
|
||||
"G-code sliced for a different level. Please re-slice the model again. Print cancelled."
|
||||
"\x00"
|
||||
"G-code je pripraven pro jinou verzi. Prosim preslicujte model znovu. Tisk zrusen."
|
||||
|
||||
#MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5
|
||||
"G-code sliced for a different printer type. Continue?"
|
||||
|
|
@ -1364,7 +1340,7 @@
|
|||
|
||||
#MSG_SELFTEST_FS_LEVEL c=20
|
||||
"%s level expected"
|
||||
"\x00"
|
||||
"%s ocekavana verze"
|
||||
|
||||
#MSG_RENAME c=18
|
||||
"Rename"
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,10 +1,18 @@
|
|||
#MSG_SHEET_OFFSET c=20 r=4
|
||||
"Sheet %.7s\x0aZ offset: %+1.3fmm\x0a%cContinue\x0a%cReset"
|
||||
"Stahlblech %.7s\x0aZ Versatz: %+1.3fmm\x0a%cFortsetzen\x0a%cReset"
|
||||
|
||||
#MSG_REFRESH c=18
|
||||
"\x04Refresh"
|
||||
"\x04Aktualisiere"
|
||||
|
||||
#MSG_IR_03_OR_OLDER c=18
|
||||
" 0.3 or older"
|
||||
" 0.3 oder aelter"
|
||||
" 0.3 oder \xe1lter"
|
||||
|
||||
#MSG_FS_V_03_OR_OLDER c=18
|
||||
"FS v0.3 or older"
|
||||
"FS 0.3 oder aelter"
|
||||
"FS v0.3 oder \xe1lter"
|
||||
|
||||
#MSG_IR_04_OR_NEWER c=18
|
||||
" 0.4 or newer"
|
||||
|
|
@ -12,7 +20,7 @@
|
|||
|
||||
#MSG_FS_V_04_OR_NEWER c=18
|
||||
"FS v0.4 or newer"
|
||||
"FS 0.4 oder neuer"
|
||||
"FS v0.4 oder neuer"
|
||||
|
||||
#MSG_IR_UNKNOWN c=18
|
||||
"unknown state"
|
||||
|
|
@ -38,9 +46,9 @@
|
|||
"All correct"
|
||||
"Alles richtig"
|
||||
|
||||
#MSG_WIZARD_DONE c=20 r=8
|
||||
#MSG_WIZARD_DONE c=20 r=3
|
||||
"All is done. Happy printing!"
|
||||
"Alles abgeschlossen. Viel Spass beim Drucken!"
|
||||
"Alles abgeschlossen. Viel Spa\xe2 beim Drucken!"
|
||||
|
||||
#MSG_AMBIENT c=14
|
||||
"Ambient"
|
||||
|
|
@ -52,7 +60,7 @@
|
|||
|
||||
#MSG_PRESS c=20 r=2
|
||||
"and press the knob"
|
||||
"und Knopf druecken"
|
||||
"und Knopf dr\xf5cken"
|
||||
|
||||
#MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
|
||||
"Are left and right Z~carriages all up?"
|
||||
|
|
@ -68,15 +76,15 @@
|
|||
|
||||
#MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
|
||||
"Autoloading filament available only when filament sensor is turned on..."
|
||||
"Automatisches Laden Filament nur bei eingeschaltetem Fil. sensor verfuegbar..."
|
||||
"Automatisches Laden Filament nur bei eingeschaltetem Fil. sensor verf\xf5gbar..."
|
||||
|
||||
#MSG_AUTOLOADING_ENABLED c=20 r=4
|
||||
"Autoloading filament is active, just press the knob and insert filament..."
|
||||
"Automatisches Laden Filament ist aktiv, Knopf druecken und Filament einlegen..."
|
||||
"Automatisches Laden Filament ist aktiv, Knopf dr\xf5cken und Filament einlegen..."
|
||||
|
||||
#MSG_SELFTEST_AXIS_LENGTH c=20
|
||||
"Axis length"
|
||||
"Achsenlaenge"
|
||||
"Achsenl\xe1nge"
|
||||
|
||||
#MSG_SELFTEST_AXIS c=16
|
||||
"Axis"
|
||||
|
|
@ -92,11 +100,11 @@
|
|||
|
||||
#MSG_BED_HEATING c=20
|
||||
"Bed Heating"
|
||||
"Bett aufwaermen"
|
||||
"Bett aufw\xe1rmen"
|
||||
|
||||
#MSG_BED_CORRECTION_MENU c=18
|
||||
"Bed level correct"
|
||||
"Ausgleich Bett ok"
|
||||
"Bett Level Korr."
|
||||
|
||||
#MSG_BELTTEST c=18
|
||||
"Belt test"
|
||||
|
|
@ -104,7 +112,7 @@
|
|||
|
||||
#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=6
|
||||
"Bed leveling failed. Sensor didn't trigger. Debris on nozzle? Waiting for reset."
|
||||
"Z-Kal. fehlgeschlg. Sensor nicht ausgeloest. Schmutzige Duese? Warte auf Reset."
|
||||
"Z-Kal. fehlgeschlg. Sensor nicht ausgel\xefst. Schmutzige D\xf5se? Warte auf Reset."
|
||||
|
||||
#MSG_BRIGHT c=6
|
||||
"Bright"
|
||||
|
|
@ -138,31 +146,27 @@
|
|||
"Calibrate Z"
|
||||
"Kalibrierung Z"
|
||||
|
||||
#MSG_CALIBRATE_PINDA c=17
|
||||
"Calibrate"
|
||||
"Kalibrieren"
|
||||
|
||||
#MSG_CANCEL2 c=10
|
||||
">Cancel"
|
||||
">Abbruch"
|
||||
|
||||
#MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
|
||||
"Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
|
||||
"XYZ Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf druecken."
|
||||
"XYZ Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf dr\xf5cken."
|
||||
|
||||
#MSG_CALIBRATE_Z_AUTO c=20 r=2
|
||||
"Calibrating Z"
|
||||
"Kalibrierung Z"
|
||||
"Kalibriere 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."
|
||||
"Z Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf druecken."
|
||||
"Z Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf dr\xf5cken."
|
||||
|
||||
#MSG_HOMEYZ_DONE c=20
|
||||
"Calibration done"
|
||||
"Kalibrierung OK"
|
||||
|
||||
#MSG_MENU_CALIBRATION c=18
|
||||
#MSG_CALIBRATION c=18
|
||||
"Calibration"
|
||||
"Kalibrierung"
|
||||
|
||||
|
|
@ -172,7 +176,7 @@
|
|||
|
||||
#MSG_CHECKING_FILE c=17
|
||||
"Checking file"
|
||||
"Ueberpruefe Datei"
|
||||
"\xf5berpr\xf5fe Datei"
|
||||
|
||||
#MSG_NOT_COLOR c=19
|
||||
"Color not correct"
|
||||
|
|
@ -180,19 +184,19 @@
|
|||
|
||||
#MSG_COOLDOWN c=18
|
||||
"Cooldown"
|
||||
"Abkuehlen"
|
||||
"Abk\xf5hlen"
|
||||
|
||||
#MSG_COPY_SEL_LANG c=20 r=3
|
||||
"Copy selected language?"
|
||||
"Gewaehlte Sprache kopieren?"
|
||||
"Gew\xe1hlte Sprache kopieren?"
|
||||
|
||||
#MSG_CRASHDETECT c=13
|
||||
"Crash det."
|
||||
"Crash Erk."
|
||||
|
||||
#MSG_CHOOSE_FIL_1ST_LAYERCAL c=20 r=7
|
||||
"Choose a filament for the First Layer Calibration and select it in the on-screen menu."
|
||||
"Waehlen Sie ein Filament fuer Erste Schichtkalibrierung aus und waehlen Sie es im On-Screen-Menu aus."
|
||||
#MSG_SELECT_FIL_1ST_LAYERCAL c=20 r=7
|
||||
"Select a filament for the First Layer Calibration and select it in the on-screen menu."
|
||||
"W\xe1hlen Sie ein Filament f\xf5r Erste- Schichtkalibrierung aus und w\xe1hlen Sie es im On-Screen-Menu aus."
|
||||
|
||||
#MSG_CRASH_DETECTED c=20
|
||||
"Crash detected."
|
||||
|
|
@ -200,16 +204,12 @@
|
|||
|
||||
#MSG_CRASH_RESUME c=20 r=3
|
||||
"Crash detected. Resume print?"
|
||||
"Crash erkannt. Druck fortfuehren?"
|
||||
"Crash erkannt. Druck fortf\xf5hren?"
|
||||
|
||||
#MSG_CRASH c=7
|
||||
"Crash"
|
||||
"\x00"
|
||||
|
||||
#MSG_CURRENT c=19
|
||||
"Current"
|
||||
"Aktuelles"
|
||||
|
||||
#MSG_DATE c=17
|
||||
"Date:"
|
||||
"Datum:"
|
||||
|
|
@ -224,21 +224,21 @@
|
|||
|
||||
#MSG_BABYSTEP_Z_NOT_SET c=20 r=12
|
||||
"Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
|
||||
"Der Abstand zwischen der Spitze der Duese und dem Bett ist noch nicht eingestellt. Bitte folgen Sie dem Handbuch, Kapitel Erste Schritte, Abschnitt Erste Schicht Kalibrierung."
|
||||
"Der Abstand zwischen der Spitze der D\xf5se und dem Bett ist noch nicht eingestellt. Bitte folgen Sie dem Handbuch, Kapitel Erste Schritte, Abschnitt Erste Schicht Kalibrierung."
|
||||
|
||||
#MSG_FS_CONTINUE c=5
|
||||
#MSG_CONTINUE_SHORT c=5
|
||||
"Cont."
|
||||
"\x00"
|
||||
|
||||
#MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
|
||||
"Do you want to repeat last step to readjust distance between nozzle and heatbed?"
|
||||
"Moechten Sie den letzten Schritt wiederholen, um den Abstand zwischen Duese und Druckbett neu einzustellen?"
|
||||
"M\xefchten Sie den letzten Schritt wiederholen, um den Abstand zwischen D\xf5se und Druckbett neu einzustellen?"
|
||||
|
||||
#MSG_EXTRUDER_CORRECTION c=13
|
||||
"E-correct:"
|
||||
"E-Korrektur:"
|
||||
|
||||
#MSG_EJECT_FILAMENT c=16
|
||||
#MSG_EJECT_FILAMENT c=17
|
||||
"Eject filament"
|
||||
"Filamentauswurf"
|
||||
|
||||
|
|
@ -258,11 +258,7 @@
|
|||
"Endstops"
|
||||
"Endschalter"
|
||||
|
||||
#MSG_STACK_ERROR c=20 r=4
|
||||
"Error - static memory has been overwritten"
|
||||
"Fehler - statischer Speicher wurde ueberschrieben"
|
||||
|
||||
#MSG_CUT_FILAMENT c=16
|
||||
#MSG_CUT_FILAMENT c=17
|
||||
"Cut filament"
|
||||
"Fil. schneiden"
|
||||
|
||||
|
|
@ -276,7 +272,7 @@
|
|||
|
||||
#MSG_FSENS_NOT_RESPONDING c=20 r=4
|
||||
"ERROR: Filament sensor is not responding, please check connection."
|
||||
"FEHLER: Filament- sensor reagiert nicht, bitte Verbindung pruefen."
|
||||
"FEHLER: Filament- sensor reagiert nicht, bitte Verbindung pr\xf5fen."
|
||||
|
||||
#MSG_DIM c=6
|
||||
"Dim"
|
||||
|
|
@ -286,9 +282,9 @@
|
|||
"ERROR:"
|
||||
"FEHLER:"
|
||||
|
||||
#MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
|
||||
#MSG_EXTRUDER_FAN_SPEED c=16
|
||||
"Extruder fan:"
|
||||
"Extruder Luefter:"
|
||||
"Extruderl\xf5fter:"
|
||||
|
||||
#MSG_INFO_EXTRUDER c=18
|
||||
"Extruder info"
|
||||
|
|
@ -312,15 +308,15 @@
|
|||
|
||||
#MSG_FAN_SPEED c=14
|
||||
"Fan speed"
|
||||
"Luefter-Tempo"
|
||||
"L\xf5fter-Tempo"
|
||||
|
||||
#MSG_SELFTEST_FAN c=20
|
||||
"Fan test"
|
||||
"Lueftertest"
|
||||
"L\xf5ftertest"
|
||||
|
||||
#MSG_FANS_CHECK c=13
|
||||
"Fans check"
|
||||
"Luefter Chk."
|
||||
"L\xf5fter Check"
|
||||
|
||||
#MSG_FSENSOR c=12
|
||||
"Fil. sensor"
|
||||
|
|
@ -328,7 +324,7 @@
|
|||
|
||||
#MSG_FIL_RUNOUTS c=15
|
||||
"Fil. runouts"
|
||||
"Fil. Maengel"
|
||||
"Fil. M\xe1ngel"
|
||||
|
||||
#MSG_FILAMENT_CLEAN c=20 r=2
|
||||
"Filament extruding & with correct color?"
|
||||
|
|
@ -338,7 +334,7 @@
|
|||
"Filament not loaded"
|
||||
"Fil. nicht geladen"
|
||||
|
||||
#MSG_FILAMENT_SENSOR c=20
|
||||
#MSG_SELFTEST_FILAMENT_SENSOR c=17
|
||||
"Filament sensor"
|
||||
"Filamentsensor"
|
||||
|
||||
|
|
@ -356,7 +352,7 @@
|
|||
|
||||
#MSG_FILE_INCOMPLETE c=20 r=3
|
||||
"File incomplete. Continue anyway?"
|
||||
"Datei unvollstaendig Trotzdem fortfahren?"
|
||||
"Datei unvollst\xe1ndig Trotzdem fortfahren?"
|
||||
|
||||
#MSG_FINISHING_MOVEMENTS c=20
|
||||
"Finishing movements"
|
||||
|
|
@ -368,27 +364,27 @@
|
|||
|
||||
#MSG_WIZARD_SELFTEST c=20 r=8
|
||||
"First, I will run the selftest to check most common assembly problems."
|
||||
"Zunaechst fuehre ich den Selbsttest durch, um die haeufigsten Probleme beim Zusammenbau zu ueberpruefen."
|
||||
"Zun\xe1chst f\xf5hre ich den Selbsttest durch, um die h\xe1ufigsten Probleme beim Zusammenbau zu \xf5berpr\xf5fen."
|
||||
|
||||
#MSG_MMU_FIX_ISSUE c=20 r=4
|
||||
"Fix the issue and then press button on MMU unit."
|
||||
"Beseitigen Sie das Problem und druecken Sie dann den Knopf am MMU."
|
||||
"Beseitigen Sie das Problem und dr\xf5cken Sie dann den Knopf am MMU."
|
||||
|
||||
#MSG_FLOW c=15
|
||||
"Flow"
|
||||
"Durchfluss"
|
||||
|
||||
#MSG_SELFTEST_COOLING_FAN c=20
|
||||
#MSG_SELFTEST_PART_FAN c=20
|
||||
"Front print fan?"
|
||||
"Teile Luefter?"
|
||||
"Druckl\xf5fter?"
|
||||
|
||||
#MSG_BED_CORRECTION_FRONT c=14
|
||||
"Front side[um]"
|
||||
"Vorne [um]"
|
||||
"Front side[\xe4m]"
|
||||
"Vorne [\xe4m]"
|
||||
|
||||
#MSG_SELFTEST_FANS c=20
|
||||
"Front/left fans"
|
||||
"Teile/Extr. Luefter"
|
||||
"Druck/Extr. L\xf5fter"
|
||||
|
||||
#MSG_SELFTEST_HEATERTHERMISTOR c=20
|
||||
"Heater/Thermistor"
|
||||
|
|
@ -400,15 +396,15 @@
|
|||
|
||||
#MSG_HEATING_COMPLETE c=20
|
||||
"Heating done."
|
||||
"Aufwaermen OK."
|
||||
"Aufw\xe1rmen OK."
|
||||
|
||||
#MSG_HEATING c=20
|
||||
"Heating"
|
||||
"Aufwaermen"
|
||||
"Aufw\xe1rmen"
|
||||
|
||||
#MSG_WIZARD_WELCOME c=20 r=7
|
||||
"Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
|
||||
"Hallo, ich bin Ihr Original Prusa i3 Drucker. Moechten Sie, dass ich Sie durch den Einrich- tungsablauf fuehre?"
|
||||
"Hallo, ich bin Ihr Original Prusa i3 Drucker. M\xefchten Sie, dass ich Sie durch den Einricht- ungsablauf f\xf5hre?"
|
||||
|
||||
#MSG_FILAMENTCHANGE c=18
|
||||
"Change filament"
|
||||
|
|
@ -424,39 +420,35 @@
|
|||
|
||||
#MSG_SELFTEST_CHECK_BED c=20
|
||||
"Checking bed"
|
||||
"Pruefe Bett"
|
||||
"Pr\xf5fe Bett"
|
||||
|
||||
#MSG_SELFTEST_CHECK_ENDSTOPS c=20
|
||||
"Checking endstops"
|
||||
"Pruefe Endschalter"
|
||||
"Pr\xf5fe Endschalter"
|
||||
|
||||
#MSG_SELFTEST_CHECK_HOTEND c=20
|
||||
"Checking hotend"
|
||||
"Pruefe Duese"
|
||||
"Pr\xf5fe D\xf5se"
|
||||
|
||||
#MSG_SELFTEST_CHECK_FSENSOR c=20
|
||||
"Checking sensors"
|
||||
"Pruefe Sensoren"
|
||||
"Pr\xf5fe Sensoren"
|
||||
|
||||
#MSG_CHECKING_X c=20
|
||||
"Checking X axis"
|
||||
"Pruefe X Achse"
|
||||
"Pr\xf5fe X Achse"
|
||||
|
||||
#MSG_CHECKING_Y c=20
|
||||
"Checking Y axis"
|
||||
"Pruefe Y Achse"
|
||||
"Pr\xf5fe Y Achse"
|
||||
|
||||
#MSG_SELFTEST_CHECK_Z c=20
|
||||
"Checking Z axis"
|
||||
"Pruefe Z Achse"
|
||||
"Pr\xf5fe Z Achse"
|
||||
|
||||
#MSG_CHOOSE_EXTRUDER c=20
|
||||
"Choose extruder:"
|
||||
"Extruder waehlen:"
|
||||
|
||||
#MSG_CHOOSE_FILAMENT c=20
|
||||
"Choose filament:"
|
||||
"Waehle Filament:"
|
||||
#MSG_SELECT_EXTRUDER c=20
|
||||
"Select extruder:"
|
||||
"W\xe1hle extruder:"
|
||||
|
||||
#MSG_FILAMENT c=17
|
||||
"Filament"
|
||||
|
|
@ -464,13 +456,13 @@
|
|||
|
||||
#MSG_WIZARD_XYZ_CAL c=20 r=8
|
||||
"I will run xyz calibration now. It will take approx. 12 mins."
|
||||
"Ich werde jetzt die XYZ-Kalibrierung durchfuehren. Es wird ca. 12 Minuten dauern."
|
||||
"Ich werde jetzt die XYZ-Kalibrierung durchf\xf5hren. Es wird ca. 12 Minuten dauern."
|
||||
|
||||
#MSG_WIZARD_Z_CAL c=20 r=8
|
||||
"I will run z calibration now."
|
||||
"Ich werde jetzt die Z Kalibrierung durchfuehren."
|
||||
"Ich werde jetzt die Z Kalibrierung durchf\xf5hren."
|
||||
|
||||
#MSG_WATCH c=18
|
||||
#MSG_INFO_SCREEN c=18
|
||||
"Info screen"
|
||||
"Infoanzeige"
|
||||
|
||||
|
|
@ -492,11 +484,11 @@
|
|||
|
||||
#MSG_WIZARD_WELCOME_SHIPPING c=20 r=16
|
||||
"Hi, I am your Original Prusa i3 printer. I will guide you through a short setup process, in which the Z-axis will be calibrated. Then, you will be ready to print."
|
||||
"Hallo, ich bin Ihr Original Prusa i3 Drucker. Ich werde Sie durch einen kurzen Einrichtungsprozess fuehren, bei dem die Z-Achse kalibriert wird. Danach sind Sie bereit fuer den Druck."
|
||||
"Hallo, ich bin Ihr Original Prusa i3 Drucker. Ich werde Sie durch einen kurzen Einrichtungsprozess f\xf5hren, bei dem die Z-Achse kalibriert wird. Danach sind Sie bereit f\xf5r den Druck."
|
||||
|
||||
#MSG_ADDITIONAL_SHEETS c=20 r=9
|
||||
"If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
|
||||
"Wenn Sie zusaetzliche Stahlbleche haben, kalibrieren Sie deren Voreinstellungen unter Einstellungen - HW Setup - Stahlbleche."
|
||||
"Wenn Sie zus\xe1tzliche Stahlbleche haben, kalibrieren Sie deren Voreinstellungen unter Einstellungen - HW Setup - Stahlbleche."
|
||||
|
||||
#MSG_LAST_PRINT c=18
|
||||
"Last print"
|
||||
|
|
@ -504,15 +496,15 @@
|
|||
|
||||
#MSG_SELFTEST_EXTRUDER_FAN c=20
|
||||
"Left hotend fan?"
|
||||
"Extruder Luefter?"
|
||||
"Extruderl\xf5fter?"
|
||||
|
||||
#MSG_LEFT c=10
|
||||
"Left"
|
||||
"Links"
|
||||
|
||||
#MSG_BED_CORRECTION_LEFT c=14
|
||||
"Left side [um]"
|
||||
"Links [um]"
|
||||
"Left side [\xe4m]"
|
||||
"Links [\xe4m]"
|
||||
|
||||
#MSG_LIN_CORRECTION c=18
|
||||
"Lin. correction"
|
||||
|
|
@ -524,7 +516,7 @@
|
|||
|
||||
#MSG_INSERT_FIL c=20 r=6
|
||||
"Insert the filament (do not load it) into the extruder and then press the knob."
|
||||
"Stecken Sie das Filament (nicht laden) in den Extruder und druecken Sie dann den Knopf."
|
||||
"Stecken Sie das Filament (nicht laden) in den Extruder und dr\xf5cken Sie dann den Knopf."
|
||||
|
||||
#MSG_LOAD_FILAMENT c=17
|
||||
"Load filament"
|
||||
|
|
@ -536,7 +528,7 @@
|
|||
|
||||
#MSG_LOADING_FILAMENT c=20
|
||||
"Loading filament"
|
||||
"Filament laedt"
|
||||
"Filament l\xe1dt"
|
||||
|
||||
#MSG_ITERATION c=12
|
||||
"Iteration"
|
||||
|
|
@ -548,7 +540,7 @@
|
|||
|
||||
#MSG_LOAD_TO_NOZZLE c=18
|
||||
"Load to nozzle"
|
||||
"In Nozzle laden"
|
||||
"In D\xf5se laden"
|
||||
|
||||
#MSG_M117_V2_CALIBRATION c=25
|
||||
"M117 First layer cal."
|
||||
|
|
@ -556,7 +548,7 @@
|
|||
|
||||
#MSG_MAIN c=18
|
||||
"Main"
|
||||
"Hauptmenue"
|
||||
"Hauptmen\xf5"
|
||||
|
||||
#MSG_BL_HIGH c=12
|
||||
"Level Bright"
|
||||
|
|
@ -568,7 +560,7 @@
|
|||
|
||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=20 r=3
|
||||
"Measuring reference height of calibration point"
|
||||
"Messen der Referenzhoehe des Kalibrierpunktes"
|
||||
"Messen der Referenzh\xefhe des Kalibrierpunktes"
|
||||
|
||||
#MSG_MESH_BED_LEVELING c=18
|
||||
"Mesh Bed Leveling"
|
||||
|
|
@ -584,7 +576,7 @@
|
|||
|
||||
#MSG_MEASURED_SKEW c=14
|
||||
"Measured skew"
|
||||
"Schraeglauf"
|
||||
"Schr\xe1glauf"
|
||||
|
||||
#MSG_MMU_FAILS c=15
|
||||
"MMU fails"
|
||||
|
|
@ -600,7 +592,7 @@
|
|||
|
||||
#MSG_MMU_OK_RESUMING c=20 r=4
|
||||
"MMU OK. Resuming..."
|
||||
"MMU OK. Weiterdrucken..."
|
||||
"MMU OK. Weiterdrucken..."
|
||||
|
||||
#MSG_MODE c=6
|
||||
"Mode"
|
||||
|
|
@ -684,7 +676,7 @@
|
|||
|
||||
#MSG_NEW_FIRMWARE_AVAILABLE c=20 r=2
|
||||
"New firmware version available:"
|
||||
"Neue Firmware- Version verfuegbar:"
|
||||
"Neue Firmware- Version verf\xf5gbar:"
|
||||
|
||||
#MSG_SELFTEST_FAN_NO c=19
|
||||
"Not spinning"
|
||||
|
|
@ -692,15 +684,15 @@
|
|||
|
||||
#MSG_WIZARD_V2_CAL c=20 r=8
|
||||
"Now I will calibrate distance between tip of the nozzle and heatbed surface."
|
||||
"Jetzt werde ich den Abstand zwischen Duesenspitze und Druckbett kalibrieren."
|
||||
"Jetzt werde ich den Abstand zwischen D\xf5senspitze und Druckbett kalibrieren."
|
||||
|
||||
#MSG_WIZARD_WILL_PREHEAT c=20 r=4
|
||||
"Now I will preheat nozzle for PLA."
|
||||
"Jetzt werde ich die Duese fuer PLA vorheizen."
|
||||
"Jetzt werde ich die D\xf5se f\xf5r PLA vorheizen."
|
||||
|
||||
#MSG_NOZZLE c=12
|
||||
#MSG_NOZZLE c=10
|
||||
"Nozzle"
|
||||
"Duese"
|
||||
"D\xf5se"
|
||||
|
||||
#MSG_DEFAULT_SETTINGS_LOADED c=20 r=6
|
||||
"Old settings found. Default PID, Esteps etc. will be set."
|
||||
|
|
@ -710,10 +702,6 @@
|
|||
"Now remove the test print from steel sheet."
|
||||
"Testdruck jetzt von Stahlblech entfernen."
|
||||
|
||||
#MSG_NOZZLE_FAN c=10
|
||||
"Nozzle FAN"
|
||||
"Duesevent."
|
||||
|
||||
#MSG_PAUSE_PRINT c=18
|
||||
"Pause print"
|
||||
"Druck pausieren"
|
||||
|
|
@ -732,23 +720,23 @@
|
|||
|
||||
#MSG_PINDA_PREHEAT c=20
|
||||
"PINDA Heating"
|
||||
"PINDA erwaermen"
|
||||
"PINDA erw\xe1rmen"
|
||||
|
||||
#MSG_PAPER c=20 r=10
|
||||
"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."
|
||||
"Legen Sie ein Blatt Papier unter die Duese waehrend der Kalibrierung der ersten 4 Punkte. Wenn die Duese das Papier erfasst, den Drucker sofort ausschalten."
|
||||
"Legen Sie ein Blatt Papier unter die D\xf5se w\xe1hrend der Kalibrierung der ersten 4 Punkte. Wenn die D\xf5se das Papier erfasst, den Drucker sofort ausschalten."
|
||||
|
||||
#MSG_WIZARD_CLEAN_HEATBED c=20 r=8
|
||||
"Please clean heatbed and then press the knob."
|
||||
"Bitte reinigen Sie das Heizbett und druecken Sie dann den Knopf."
|
||||
"Bitte reinigen Sie das Heizbett und dr\xf5cken Sie dann den Knopf."
|
||||
|
||||
#MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
|
||||
"Please clean the nozzle for calibration. Click when done."
|
||||
"Bitte entfernen Sie ueberstehendes Filament von der Duese. Klicken wenn sauber."
|
||||
"Bitte entfernen Sie \xf5berstehendes Filament von der D\xf5se. Klicken wenn sauber."
|
||||
|
||||
#MSG_SELFTEST_PLEASECHECK c=20
|
||||
"Please check:"
|
||||
"Bitte pruefe:"
|
||||
"Bitte pr\xf5fen:"
|
||||
|
||||
#MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
|
||||
"Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
|
||||
|
|
@ -756,7 +744,7 @@
|
|||
|
||||
#MSG_CHECK_IDLER c=20 r=5
|
||||
"Please open idler and remove filament manually."
|
||||
"Bitte Spannrolle oeffnen und Fila- ment von Hand entfernen"
|
||||
"Bitte Spannrolle \xefffnen und Filament von Hand entfernen"
|
||||
|
||||
#MSG_PLACE_STEEL_SHEET c=20 r=5
|
||||
"Please place steel sheet on heatbed."
|
||||
|
|
@ -764,7 +752,7 @@
|
|||
|
||||
#MSG_PRESS_TO_UNLOAD c=20 r=4
|
||||
"Please press the knob to unload filament"
|
||||
"Bitte druecken Sie den Knopf um das Filament zu entladen."
|
||||
"Bitte dr\xf5cken Sie den Knopf um das Filament zu entladen."
|
||||
|
||||
#MSG_PULL_OUT_FILAMENT c=20 r=4
|
||||
"Please pull out filament immediately"
|
||||
|
|
@ -772,7 +760,7 @@
|
|||
|
||||
#MSG_EJECT_REMOVE c=20 r=4
|
||||
"Please remove filament and then press the knob."
|
||||
"Bitte Filament entfernen und dann den Knopf druecken"
|
||||
"Bitte Filament entfernen und dann den Knopf dr\xf5cken"
|
||||
|
||||
#MSG_REMOVE_STEEL_SHEET c=20 r=4
|
||||
"Please remove steel sheet from heatbed."
|
||||
|
|
@ -780,7 +768,7 @@
|
|||
|
||||
#MSG_RUN_XYZ c=20 r=4
|
||||
"Please run XYZ calibration first."
|
||||
"Bitte zuerst XYZ Kalibrierung ausfuehren."
|
||||
"Bitte zuerst XYZ Kalibrierung ausf\xf5hren."
|
||||
|
||||
#MSG_UPDATE_MMU2_FW c=20 r=4
|
||||
"Please update firmware in your MMU2. Waiting for reset."
|
||||
|
|
@ -796,7 +784,7 @@
|
|||
|
||||
#MSG_PREHEAT_NOZZLE c=20
|
||||
"Preheat the nozzle!"
|
||||
"Duese vorheizen!"
|
||||
"D\xf5se vorheizen!"
|
||||
|
||||
#MSG_PREHEAT c=18
|
||||
"Preheat"
|
||||
|
|
@ -804,7 +792,7 @@
|
|||
|
||||
#MSG_WIZARD_HEATING c=20 r=3
|
||||
"Preheating nozzle. Please wait."
|
||||
"Vorheizen der Duese. Bitte warten."
|
||||
"Vorheizen der D\xf5se. Bitte warten."
|
||||
|
||||
#MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20
|
||||
"Please upgrade."
|
||||
|
|
@ -812,9 +800,9 @@
|
|||
|
||||
#MSG_PRESS_TO_PREHEAT c=20 r=4
|
||||
"Press the knob to preheat nozzle and continue."
|
||||
"Bitte druecken Sie den Knopf um die Duese vorzuheizen und fortzufahren."
|
||||
"Bitte dr\xf5cken Sie den Knopf um die D\xf5se vorzuheizen und fortzufahren."
|
||||
|
||||
#MSG_FS_PAUSE c=5
|
||||
#MSG_PAUSE c=5
|
||||
"Pause"
|
||||
"\x00"
|
||||
|
||||
|
|
@ -834,9 +822,9 @@
|
|||
"Preheating to unload"
|
||||
"Heizen zum Entladen"
|
||||
|
||||
#MSG_SELFTEST_PRINT_FAN_SPEED c=18
|
||||
#MSG_PRINT_FAN_SPEED c=16
|
||||
"Print fan:"
|
||||
"Druckvent.:"
|
||||
"Druckl\xf5fter:"
|
||||
|
||||
#MSG_CARD_MENU c=18
|
||||
"Print from SD"
|
||||
|
|
@ -844,7 +832,7 @@
|
|||
|
||||
#MSG_PRESS_KNOB c=20
|
||||
"Press the knob"
|
||||
"Knopf druecken zum"
|
||||
"Knopf dr\xf5cken zum"
|
||||
|
||||
#MSG_PRINT_PAUSED c=20
|
||||
"Print paused"
|
||||
|
|
@ -852,31 +840,27 @@
|
|||
|
||||
#MSG_RESUME_NOZZLE_TEMP c=20 r=4
|
||||
"Press the knob to resume nozzle temperature."
|
||||
"Druecken Sie den Knopf um die Duesentemperatur wiederherzustellen"
|
||||
"Dr\xf5cken Sie den Knopf um die D\xf5sentemperatur wiederherzustellen"
|
||||
|
||||
#MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
|
||||
"Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
|
||||
"Drucker wurde noch nicht kalibriert. Bitte folgen Sie dem Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrie- rungsablauf."
|
||||
|
||||
#MSG_PRINT_FAN c=10
|
||||
"Print FAN"
|
||||
"Druckvent."
|
||||
|
||||
#MSG_WIZARD_LOAD_FILAMENT c=20 r=6
|
||||
"Please insert filament into the extruder, then press the knob to load it."
|
||||
"Bitte legen Sie das Filament in den Extruder ein und druecken Sie dann den Knopf, um es zu laden."
|
||||
"Bitte legen Sie das Filament in den Extruder ein und dr\xf5cken Sie dann den Knopf, um es zu laden."
|
||||
|
||||
#MSG_MMU_INSERT_FILAMENT_FIRST_TUBE c=20 r=6
|
||||
"Please insert filament into the first tube of the MMU, then press the knob to load it."
|
||||
"Bitte stecken Sie das Filament in den ersten Schlauch der MMU und druecken Sie dann den Knopf, um es zu laden."
|
||||
"Bitte stecken Sie das Filament in den ersten Schlauch der MMU und dr\xf5cken Sie dann den Knopf, um es zu laden."
|
||||
|
||||
#MSG_PLEASE_LOAD_PLA c=20 r=4
|
||||
"Please load filament first."
|
||||
"Bitte laden Sie zuerst das Filament."
|
||||
|
||||
#MSG_BED_CORRECTION_REAR c=14
|
||||
"Rear side [um]"
|
||||
"Hinten [um]"
|
||||
"Rear side [\xe4m]"
|
||||
"Hinten [\xe4m]"
|
||||
|
||||
#MSG_UNLOAD_FILAMENT_REPEAT c=20 r=4
|
||||
"Please unload the filament first, then repeat this action."
|
||||
|
|
@ -884,7 +868,7 @@
|
|||
|
||||
#MSG_CHECK_IR_CONNECTION c=20 r=4
|
||||
"Please check the IR sensor connection, unload filament if present."
|
||||
"Bitte IR Sensor Verbindungen ueber- pruefen und Filament entladen ist."
|
||||
"Bitte IR Sensor Verbindungen \xf5ber- pr\xf5fen und Filament entladen ist."
|
||||
|
||||
#MSG_RECOVERING_PRINT c=20
|
||||
"Recovering print"
|
||||
|
|
@ -892,7 +876,7 @@
|
|||
|
||||
#MSG_REMOVE_OLD_FILAMENT c=20 r=5
|
||||
"Remove old filament and press the knob to start loading new filament."
|
||||
"Entfernen Sie das alte Filament und druecken Sie den Knopf, um das neue zu laden."
|
||||
"Entfernen Sie das alte Filament und dr\xf5cken Sie den Knopf, um das neue zu laden."
|
||||
|
||||
#MSG_CALIBRATE_BED_RESET c=18
|
||||
"Reset XYZ calibr."
|
||||
|
|
@ -900,7 +884,7 @@
|
|||
|
||||
#MSG_RESET c=14
|
||||
"Reset"
|
||||
"Ruecksetzen"
|
||||
"\x00"
|
||||
|
||||
#MSG_RESUME_PRINT c=18
|
||||
"Resume print"
|
||||
|
|
@ -911,8 +895,8 @@
|
|||
"Druck fortgesetzt"
|
||||
|
||||
#MSG_BED_CORRECTION_RIGHT c=14
|
||||
"Right side[um]"
|
||||
"Rechts [um]"
|
||||
"Right side[\xe4m]"
|
||||
"Rechts [\xe4m]"
|
||||
|
||||
#MSG_RPI_PORT c=13
|
||||
"RPi port"
|
||||
|
|
@ -920,7 +904,7 @@
|
|||
|
||||
#MSG_WIZARD_RERUN c=20 r=7
|
||||
"Running Wizard will delete current calibration results and start from the beginning. Continue?"
|
||||
"Der Assistent wird die aktuellen Kalibrierungsdaten loeschen und von vorne beginnen. Weiterfahren?"
|
||||
"Der Assistent wird die aktuellen Kalibrierungsdaten l\xefschen und von vorne beginnen. Fortfahren?"
|
||||
|
||||
#MSG_SD_CARD c=8
|
||||
"SD card"
|
||||
|
|
@ -936,7 +920,7 @@
|
|||
|
||||
#MSG_LANGUAGE_SELECT c=18
|
||||
"Select language"
|
||||
"Waehle Sprache"
|
||||
"W\xe1hle Sprache"
|
||||
|
||||
#MSG_SELFTEST_OK c=20
|
||||
"Self test OK"
|
||||
|
|
@ -960,11 +944,11 @@
|
|||
|
||||
#MSG_FORCE_SELFTEST c=20 r=8
|
||||
"Selftest will be run to calibrate accurate sensorless rehoming."
|
||||
"Selbsttest im Gang, um die genaue Rueck- kehr zum Nullpunkt ohne Sensor zu kalibrieren"
|
||||
"Selbsttest wird gestartet, um Startposition zu kalibrieren."
|
||||
|
||||
#MSG_SEL_PREHEAT_TEMP c=20 r=6
|
||||
"Select nozzle preheat temperature which matches your material."
|
||||
"Bitte Vorheiztemperatur auswaehlen, die Ihrem Material entspricht."
|
||||
"Bitte Vorheiztemperatur ausw\xe1hlen, die Ihrem Material entspricht."
|
||||
|
||||
#MSG_SET_TEMPERATURE c=20
|
||||
"Set temperature:"
|
||||
|
|
@ -996,7 +980,7 @@
|
|||
|
||||
#MSG_SEVERE_SKEW c=14
|
||||
"Severe skew"
|
||||
"Sehr Schraeg"
|
||||
"Sehr schr\xe1g"
|
||||
|
||||
#MSG_SORT_ALPHA c=8
|
||||
"Alphabet"
|
||||
|
|
@ -1012,7 +996,7 @@
|
|||
|
||||
#MSG_SLIGHT_SKEW c=14
|
||||
"Slight skew"
|
||||
"Leicht Schraeg"
|
||||
"Leicht schr\xe1g"
|
||||
|
||||
#MSG_SOUND c=7
|
||||
"Sound"
|
||||
|
|
@ -1020,7 +1004,7 @@
|
|||
|
||||
#MSG_RUNOUTS c=7
|
||||
"Runouts"
|
||||
"Maengel"
|
||||
"M\xe1ngel"
|
||||
|
||||
#MSG_Z-LEVELING_ENFORCED c=20 r=4
|
||||
"Some problem encountered, Z-leveling enforced ..."
|
||||
|
|
@ -1040,7 +1024,7 @@
|
|||
|
||||
#MSG_TEMP_CAL_WARNING c=20 r=4
|
||||
"Stable ambient temperature 21-26C is needed a rigid stand is required."
|
||||
"Stabile Umgebungs- temperatur 21-26C und feste Stand- flaeche erforderlich"
|
||||
"Stabile Umgebungs- temperatur 21-26C und feste Stand- fl\xe1che erforderlich"
|
||||
|
||||
#MSG_STATISTICS c=18
|
||||
"Statistics"
|
||||
|
|
@ -1064,31 +1048,27 @@
|
|||
|
||||
#MSG_SELECT_FILAMENT c=20
|
||||
"Select filament:"
|
||||
"Filament auswaehlen:"
|
||||
"W\xe1hle filament:"
|
||||
|
||||
#MSG_TEMP_CALIBRATION c=14
|
||||
"Temp. cal."
|
||||
"Temp Kalib."
|
||||
#MSG_PINDA_CALIBRATION c=13
|
||||
"PINDA cal."
|
||||
"PINDA Kal."
|
||||
|
||||
#MSG_SELECT_TEMP_MATCHES_MATERIAL c=20 r=4
|
||||
"Select temperature which matches your material."
|
||||
"Waehlen Sie die Temperatur, die zu Ihrem Material passt."
|
||||
"W\xe1hlen Sie die Temperatur, die zu Ihrem Material passt."
|
||||
|
||||
#MSG_CALIBRATION_PINDA_MENU c=17
|
||||
"Temp. calibration"
|
||||
"Temp. kalibrieren"
|
||||
#MSG_PINDA_CAL_FAILED c=20 r=4
|
||||
"PINDA calibration failed"
|
||||
"PINDA-Kalibrierung fehlgeschlagen"
|
||||
|
||||
#MSG_TEMP_CAL_FAILED c=20 r=8
|
||||
"Temperature calibration failed"
|
||||
"Temperaturkalibrierung fehlgeschlagen"
|
||||
|
||||
#MSG_TEMP_CALIBRATION_DONE c=20 r=12
|
||||
"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
|
||||
"Temp.kalibrierung ist fertig + aktiv. Temp.kalibrierung kann ausgeschaltet werden im Menu Einstellungen -> Temp.kal."
|
||||
#MSG_PINDA_CALIBRATION_DONE c=20 r=8
|
||||
"PINDA calibration is finished and active. It can be disabled in menu Settings->PINDA cal."
|
||||
"PINDA Kalibrierung ist fertig + aktiv. Es kann ausgeschaltet werden im Menu Einstellungen -> PINDA kal."
|
||||
|
||||
#MSG_FS_VERIFIED c=20 r=3
|
||||
"Sensor verified, remove the filament now."
|
||||
"Sensor ueberprueft, entladen Sie jetzt das Filament."
|
||||
"Sensor \xf5berpr\xf5ft, entladen Sie jetzt das Filament."
|
||||
|
||||
#MSG_TEMPERATURE c=18
|
||||
"Temperature"
|
||||
|
|
@ -1100,7 +1080,7 @@
|
|||
|
||||
#MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
|
||||
"There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
|
||||
"Es ist noch not- wendig die Z- Kalibrierung aus- zufuehren. Bitte befolgen Sie das Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrierablauf."
|
||||
"Es ist noch not- wendig die Z- Kalibrierung aus- zuf\xf5hren. Bitte befolgen Sie das Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrierablauf."
|
||||
|
||||
#MSG_TOTAL_FILAMENT c=19
|
||||
"Total filament"
|
||||
|
|
@ -1120,13 +1100,13 @@
|
|||
|
||||
#MSG_TO_LOAD_FIL c=20
|
||||
"to load filament"
|
||||
"Filament laden"
|
||||
"um Filament laden"
|
||||
|
||||
#MSG_TO_UNLOAD_FIL c=20
|
||||
"to unload filament"
|
||||
"um Filament entladen"
|
||||
|
||||
#MSG_UNLOAD_FILAMENT c=16
|
||||
#MSG_UNLOAD_FILAMENT c=18
|
||||
"Unload filament"
|
||||
"Fil. entladen"
|
||||
|
||||
|
|
@ -1138,10 +1118,6 @@
|
|||
"Total"
|
||||
"Gesamt"
|
||||
|
||||
#MSG_USED c=19
|
||||
"Used during print"
|
||||
"Beim Druck benutzt"
|
||||
|
||||
#MSG_MENU_VOLTAGES c=15
|
||||
"Voltages"
|
||||
"Spannungen"
|
||||
|
|
@ -1156,23 +1132,23 @@
|
|||
|
||||
#MSG_WAITING_TEMP c=20 r=4
|
||||
"Waiting for nozzle and bed cooling"
|
||||
"Warten bis Heizung und Bett abgekuehlt sind"
|
||||
"Warten bis Heizung und Bett abgek\xf5hlt sind"
|
||||
|
||||
#MSG_WAITING_TEMP_PINDA c=20 r=3
|
||||
"Waiting for PINDA probe cooling"
|
||||
"Warten, bis PINDA- Sonde abgekuehlt ist"
|
||||
"Warten, bis PINDA- Sonde abgek\xf5hlt ist"
|
||||
|
||||
#MSG_CHANGED_BOTH c=20 r=4
|
||||
"Warning: both printer type and motherboard type changed."
|
||||
"Warnung: Druckertyp und Platinentyp wurden beide geaendert."
|
||||
"Warnung: Druckertyp und Platinentyp wurden beide ge\xe1ndert."
|
||||
|
||||
#MSG_CHANGED_MOTHERBOARD c=20 r=4
|
||||
"Warning: motherboard type changed."
|
||||
"Warnung: Platinentyp wurde geaendert."
|
||||
"Warnung: Platinentyp wurde ge\xe1ndert."
|
||||
|
||||
#MSG_CHANGED_PRINTER c=20 r=4
|
||||
"Warning: printer type changed."
|
||||
"Warnung: Druckertyp wurde geaendert."
|
||||
"Warnung: Druckertyp wurde ge\xe1ndert."
|
||||
|
||||
#MSG_UNLOAD_SUCCESSFUL c=20 r=2
|
||||
"Was filament unload successful?"
|
||||
|
|
@ -1194,25 +1170,25 @@
|
|||
"XYZ calibration failed. Please consult the manual."
|
||||
"XYZ-Kalibrierung fehlgeschlagen. Bitte schauen Sie in das Handbuch."
|
||||
|
||||
#MSG_YES c=3
|
||||
#MSG_YES c=4
|
||||
"Yes"
|
||||
"Ja"
|
||||
|
||||
#MSG_WIZARD_QUIT c=20 r=8
|
||||
"You can always resume the Wizard from Calibration -> Wizard."
|
||||
"Sie koennen den Assistenten immer im Menu neu starten: Kalibrierung -> Assistent"
|
||||
"Sie k\xefnnen den Assistenten immer im Menu neu starten: Kalibrierung -> Assistent"
|
||||
|
||||
#MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
|
||||
"XYZ calibration all right. Skew will be corrected automatically."
|
||||
"XYZ Kalibrierung in Ordnung. Schraeglauf wird automatisch korrigiert."
|
||||
"XYZ Kalibrierung in Ordnung. Schr\xe1glauf wird automatisch korrigiert."
|
||||
|
||||
#MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
|
||||
"XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
|
||||
"XYZ Kalibrierung in Ordnung. X/Y Achsen sind etwas schraeg. Gut gemacht!"
|
||||
"XYZ Kalibrierung in Ordnung. X/Y Achsen sind etwas schr\xe1g. Gut gemacht!"
|
||||
|
||||
#MSG_TIMEOUT c=12
|
||||
"Timeout"
|
||||
"Verzoegerung"
|
||||
"\x00"
|
||||
|
||||
#MSG_X_CORRECTION c=13
|
||||
"X-correct:"
|
||||
|
|
@ -1220,15 +1196,15 @@
|
|||
|
||||
#MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
|
||||
"XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
|
||||
"XYZ-Kalibrierung ok. X/Y-Achsen sind senkrecht zueinander Glueckwunsch!"
|
||||
"XYZ-Kalibrierung ok. X/Y-Achsen sind senkrecht zueinander Gl\xf5ckwunsch!"
|
||||
|
||||
#MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
|
||||
"XYZ calibration compromised. Front calibration points not reachable."
|
||||
"XYZ-Kalibrierung beeintraechtigt. Vordere Kalibrierpunkte nicht erreichbar."
|
||||
"XYZ-Kalibrierung beeintr\xe1chtigt. Vordere Kalibrierpunkte nicht erreichbar."
|
||||
|
||||
#MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
|
||||
"XYZ calibration compromised. Right front calibration point not reachable."
|
||||
"XYZ-Kalibrierung beeintraechtigt. Rechter vorderer Kalibrierpunkt nicht erreichbar."
|
||||
"XYZ-Kalibrierung beeintr\xe1chtigt. Rechter vorderer Kalibrierpunkt nicht erreichbar."
|
||||
|
||||
#MSG_LOAD_ALL c=17
|
||||
"Load all"
|
||||
|
|
@ -1252,11 +1228,11 @@
|
|||
|
||||
#MSG_WIZARD_V2_CAL_2 c=20 r=12
|
||||
"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
|
||||
"Der Drucker beginnt mit dem Drucken einer Zickzacklinie. Drehen Sie den Knopf, bis Sie die optimale Hoehe erreicht haben. Ueberpruefen Sie die Bilder im Handbuch (Kapitel Kalibrierung)."
|
||||
"Der Drucker beginnt mit dem Drucken einer Zickzacklinie. Drehen Sie den Knopf, bis Sie die optimale H\xefhe erreicht haben. \xf5berpr\xf5fen Sie die Bilder im Handbuch (Kapitel Kalibrierung)."
|
||||
|
||||
#MSG_FIL_FAILED c=20 r=5
|
||||
"Verification failed, remove the filament and try again."
|
||||
"Ueberpruefung fehl- geschlagen, entladen Sie das Filament und versuchen Sie es erneut."
|
||||
"\xf5berpr\xf5fung fehl- geschlagen, entladen Sie das Filament und versuchen Sie es erneut."
|
||||
|
||||
#MSG_Y_CORRECTION c=13
|
||||
"Y-correct:"
|
||||
|
|
@ -1272,7 +1248,7 @@
|
|||
|
||||
#MSG_BACK c=18
|
||||
"Back"
|
||||
"Zurueck"
|
||||
"Zur\xf5ck"
|
||||
|
||||
#MSG_CHECKS c=18
|
||||
"Checks"
|
||||
|
|
@ -1320,31 +1296,31 @@
|
|||
|
||||
#MSG_NOZZLE_DIAMETER c=10
|
||||
"Nozzle d."
|
||||
"Duese D."
|
||||
"D\xf5sen Dia."
|
||||
|
||||
#MSG_GCODE_DIFF_CONTINUE c=20 r=4
|
||||
"G-code sliced for a different level. Continue?"
|
||||
"G-Code ist fuer einen anderen Level geslict. Fortfahren?"
|
||||
"G-Code ist f\xf5r einen anderen Level geslict. Fortfahren?"
|
||||
|
||||
#MSG_GCODE_DIFF_CANCELLED c=20 r=7
|
||||
"G-code sliced for a different level. Please re-slice the model again. Print cancelled."
|
||||
"G-Code ist fuer einen anderen Level geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen."
|
||||
"G-Code ist f\xf5r einen anderen Level geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen."
|
||||
|
||||
#MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5
|
||||
"G-code sliced for a different printer type. Continue?"
|
||||
"G-Code ist fuer einen anderen Drucker geslict. Fortfahren?"
|
||||
"G-Code ist f\xf5r einen anderen Drucker geslict. Fortfahren?"
|
||||
|
||||
#MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=8
|
||||
"G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
|
||||
"G-Code ist fuer einen anderen Drucker geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen."
|
||||
"G-Code ist f\xf5r einen anderen Drucker geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen."
|
||||
|
||||
#MSG_GCODE_NEWER_FIRMWARE_CONTINUE c=20 r=5
|
||||
"G-code sliced for a newer firmware. Continue?"
|
||||
"G-Code ist fuer eine neuere Firmware geslict. Fortfahren?"
|
||||
"G-Code ist f\xf5r eine neuere Firmware geslict. Fortfahren?"
|
||||
|
||||
#MSG_GCODE_NEWER_FIRMWARE_CANCELLED c=20 r=8
|
||||
"G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
|
||||
"G-Code ist fuer eine neuere Firmware geslict. Bitte die Firmware updaten. Druck abgebrochen."
|
||||
"G-Code ist f\xf5r eine neuere Firmware geslict. Bitte die Firmware updaten. Druck abgebrochen."
|
||||
|
||||
#MSG_PREHEATING_TO_CUT c=20
|
||||
"Preheating to cut"
|
||||
|
|
@ -1356,11 +1332,11 @@
|
|||
|
||||
#MSG_NOZZLE_DIFFERS_CONTINUE c=20 r=5
|
||||
"Printer nozzle diameter differs from the G-code. Continue?"
|
||||
"Der Durchmesser der Druckerduese weicht vom G-Code ab. Fortfahren?"
|
||||
"Der Durchmesser der Druckerd\xf5se weicht vom G-Code ab. Fortfahren?"
|
||||
|
||||
#MSG_NOZZLE_DIFFERS_CANCELLED c=20 r=9
|
||||
"Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
|
||||
"Der Durchmesser der Druckerduese weicht vom G-Code ab. Bitte ueberpruefen Sie den Wert in den Einstellungen. Druck abgebrochen."
|
||||
"Der Durchmesser der Druckerd\xf5se weicht vom G-Code ab. Bitte \xf5berpr\xf5fen Sie den Wert in den Einstellungen. Druck abgebrochen."
|
||||
|
||||
#MSG_SELFTEST_FS_LEVEL c=20
|
||||
"%s level expected"
|
||||
|
|
|
|||
|
|
@ -1,3 +1,11 @@
|
|||
#MSG_SHEET_OFFSET c=20 r=4
|
||||
"Sheet %.7s\x0aZ offset: %+1.3fmm\x0a%cContinue\x0a%cReset"
|
||||
"Lamina %.7s\x0aZ offset: %+1.3fmm\x0a%cContinuar\x0a%cReset"
|
||||
|
||||
#MSG_REFRESH c=18
|
||||
"\x04Refresh"
|
||||
"\x04Actualizar"
|
||||
|
||||
#MSG_IR_03_OR_OLDER c=18
|
||||
" 0.3 or older"
|
||||
" 0.3 o mayor"
|
||||
|
|
@ -38,7 +46,7 @@
|
|||
"All correct"
|
||||
"Todo bien"
|
||||
|
||||
#MSG_WIZARD_DONE c=20 r=8
|
||||
#MSG_WIZARD_DONE c=20 r=3
|
||||
"All is done. Happy printing!"
|
||||
"Terminado! Feliz impresion!"
|
||||
|
||||
|
|
@ -138,10 +146,6 @@
|
|||
"Calibrate Z"
|
||||
"Calibrar Z"
|
||||
|
||||
#MSG_CALIBRATE_PINDA c=17
|
||||
"Calibrate"
|
||||
"Calibrar"
|
||||
|
||||
#MSG_CANCEL2 c=10
|
||||
">Cancel"
|
||||
">Cancelar"
|
||||
|
|
@ -162,7 +166,7 @@
|
|||
"Calibration done"
|
||||
"Calibracion OK"
|
||||
|
||||
#MSG_MENU_CALIBRATION c=18
|
||||
#MSG_CALIBRATION c=18
|
||||
"Calibration"
|
||||
"Calibracion"
|
||||
|
||||
|
|
@ -190,8 +194,8 @@
|
|||
"Crash det."
|
||||
"Det. choque"
|
||||
|
||||
#MSG_CHOOSE_FIL_1ST_LAYERCAL c=20 r=7
|
||||
"Choose a filament for the First Layer Calibration and select it in the on-screen menu."
|
||||
#MSG_SELECT_FIL_1ST_LAYERCAL c=20 r=7
|
||||
"Select a filament for the First Layer Calibration and select it in the on-screen menu."
|
||||
"Escoge un filamento para la Calibracion de la Primera Capa y seleccionalo en el menu en pantalla."
|
||||
|
||||
#MSG_CRASH_DETECTED c=20
|
||||
|
|
@ -206,10 +210,6 @@
|
|||
"Crash"
|
||||
"Choque"
|
||||
|
||||
#MSG_CURRENT c=19
|
||||
"Current"
|
||||
"Actual"
|
||||
|
||||
#MSG_DATE c=17
|
||||
"Date:"
|
||||
"Fecha:"
|
||||
|
|
@ -226,7 +226,7 @@
|
|||
"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."
|
||||
"Distancia entre la punta del boquilla y la superficie de la base aun no fijada. Por favor siga el manual, capitulo Primeros Pasos, Calibracion primera capa."
|
||||
|
||||
#MSG_FS_CONTINUE c=5
|
||||
#MSG_CONTINUE_SHORT c=5
|
||||
"Cont."
|
||||
"\x00"
|
||||
|
||||
|
|
@ -238,7 +238,7 @@
|
|||
"E-correct:"
|
||||
"Corregir-E:"
|
||||
|
||||
#MSG_EJECT_FILAMENT c=16
|
||||
#MSG_EJECT_FILAMENT c=17
|
||||
"Eject filament"
|
||||
"Expulsar fil."
|
||||
|
||||
|
|
@ -258,11 +258,7 @@
|
|||
"Endstops"
|
||||
"\x00"
|
||||
|
||||
#MSG_STACK_ERROR c=20 r=4
|
||||
"Error - static memory has been overwritten"
|
||||
"Error - se ha sobre-escrito la memoria estatica"
|
||||
|
||||
#MSG_CUT_FILAMENT c=16
|
||||
#MSG_CUT_FILAMENT c=17
|
||||
"Cut filament"
|
||||
"Cortar filament"
|
||||
|
||||
|
|
@ -286,7 +282,7 @@
|
|||
"ERROR:"
|
||||
"\x00"
|
||||
|
||||
#MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
|
||||
#MSG_EXTRUDER_FAN_SPEED c=16
|
||||
"Extruder fan:"
|
||||
"Vent.extrusor:"
|
||||
|
||||
|
|
@ -338,9 +334,9 @@
|
|||
"Filament not loaded"
|
||||
"Fil. no introducido"
|
||||
|
||||
#MSG_FILAMENT_SENSOR c=20
|
||||
#MSG_SELFTEST_FILAMENT_SENSOR c=17
|
||||
"Filament sensor"
|
||||
"Sensor de filamento"
|
||||
"Sensor de fil."
|
||||
|
||||
#MSG_FILAMENT_USED c=19
|
||||
"Filament used"
|
||||
|
|
@ -356,7 +352,7 @@
|
|||
|
||||
#MSG_FILE_INCOMPLETE c=20 r=3
|
||||
"File incomplete. Continue anyway?"
|
||||
"Archivo incompleto. ?Continuar de todos modos?"
|
||||
"Archivo incompleto. Continuar de todos modos?"
|
||||
|
||||
#MSG_FINISHING_MOVEMENTS c=20
|
||||
"Finishing movements"
|
||||
|
|
@ -378,13 +374,13 @@
|
|||
"Flow"
|
||||
"Flujo"
|
||||
|
||||
#MSG_SELFTEST_COOLING_FAN c=20
|
||||
#MSG_SELFTEST_PART_FAN c=20
|
||||
"Front print fan?"
|
||||
"Vent. frontal?"
|
||||
|
||||
#MSG_BED_CORRECTION_FRONT c=14
|
||||
"Front side[um]"
|
||||
"Frontal [um]"
|
||||
"Front side[\xe4m]"
|
||||
"Frontal [\xe4m]"
|
||||
|
||||
#MSG_SELFTEST_FANS c=20
|
||||
"Front/left fans"
|
||||
|
|
@ -450,14 +446,10 @@
|
|||
"Checking Z axis"
|
||||
"Control sensor Z"
|
||||
|
||||
#MSG_CHOOSE_EXTRUDER c=20
|
||||
"Choose extruder:"
|
||||
#MSG_SELECT_EXTRUDER c=20
|
||||
"Select extruder:"
|
||||
"Elegir extrusor:"
|
||||
|
||||
#MSG_CHOOSE_FILAMENT c=20
|
||||
"Choose filament:"
|
||||
"Elije filamento:"
|
||||
|
||||
#MSG_FILAMENT c=17
|
||||
"Filament"
|
||||
"Filamento"
|
||||
|
|
@ -470,7 +462,7 @@
|
|||
"I will run z calibration now."
|
||||
"Voy a hacer Calibracion Z ahora."
|
||||
|
||||
#MSG_WATCH c=18
|
||||
#MSG_INFO_SCREEN c=18
|
||||
"Info screen"
|
||||
"Monitorizar"
|
||||
|
||||
|
|
@ -511,8 +503,8 @@
|
|||
"Izquierda"
|
||||
|
||||
#MSG_BED_CORRECTION_LEFT c=14
|
||||
"Left side [um]"
|
||||
"Izquierda [um]"
|
||||
"Left side [\xe4m]"
|
||||
"Izquierda [\xe4m]"
|
||||
|
||||
#MSG_LIN_CORRECTION c=18
|
||||
"Lin. correction"
|
||||
|
|
@ -698,7 +690,7 @@
|
|||
"Now I will preheat nozzle for PLA."
|
||||
"Ahora precalentare la boquilla para PLA."
|
||||
|
||||
#MSG_NOZZLE c=12
|
||||
#MSG_NOZZLE c=10
|
||||
"Nozzle"
|
||||
"Boquilla"
|
||||
|
||||
|
|
@ -710,10 +702,6 @@
|
|||
"Now remove the test print from steel sheet."
|
||||
"Ahora retira la prueba de la lamina de acero."
|
||||
|
||||
#MSG_NOZZLE_FAN c=10
|
||||
"Nozzle FAN"
|
||||
"Vent. capa"
|
||||
|
||||
#MSG_PAUSE_PRINT c=18
|
||||
"Pause print"
|
||||
"Pausar impresion"
|
||||
|
|
@ -814,7 +802,7 @@
|
|||
"Press the knob to preheat nozzle and continue."
|
||||
"Pulsa el dial para precalentar la boquilla y continue."
|
||||
|
||||
#MSG_FS_PAUSE c=5
|
||||
#MSG_PAUSE c=5
|
||||
"Pause"
|
||||
"Pausa"
|
||||
|
||||
|
|
@ -834,7 +822,7 @@
|
|||
"Preheating to unload"
|
||||
"Precalent. descargar"
|
||||
|
||||
#MSG_SELFTEST_PRINT_FAN_SPEED c=18
|
||||
#MSG_PRINT_FAN_SPEED c=16
|
||||
"Print fan:"
|
||||
"Vent.fusor:"
|
||||
|
||||
|
|
@ -858,10 +846,6 @@
|
|||
"Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
|
||||
"Impresora no esta calibrada todavia. Por favor usa el manual capitulo Primeros pasos Calibracion flujo."
|
||||
|
||||
#MSG_PRINT_FAN c=10
|
||||
"Print FAN"
|
||||
"Vent. extr"
|
||||
|
||||
#MSG_WIZARD_LOAD_FILAMENT c=20 r=6
|
||||
"Please insert filament into the extruder, then press the knob to load it."
|
||||
"Por favor, coloca el filamento en el extrusor, luego presiona el dial para cargarlo."
|
||||
|
|
@ -875,8 +859,8 @@
|
|||
"Por favor, cargar primero el filamento."
|
||||
|
||||
#MSG_BED_CORRECTION_REAR c=14
|
||||
"Rear side [um]"
|
||||
"Trasera [um]"
|
||||
"Rear side [\xe4m]"
|
||||
"Trasera [\xe4m]"
|
||||
|
||||
#MSG_UNLOAD_FILAMENT_REPEAT c=20 r=4
|
||||
"Please unload the filament first, then repeat this action."
|
||||
|
|
@ -911,8 +895,8 @@
|
|||
"Continuan. impresion"
|
||||
|
||||
#MSG_BED_CORRECTION_RIGHT c=14
|
||||
"Right side[um]"
|
||||
"Derecha [um]"
|
||||
"Right side[\xe4m]"
|
||||
"Derecha [\xe4m]"
|
||||
|
||||
#MSG_RPI_PORT c=13
|
||||
"RPi port"
|
||||
|
|
@ -1066,25 +1050,21 @@
|
|||
"Select filament:"
|
||||
"Selecciona filam.:"
|
||||
|
||||
#MSG_TEMP_CALIBRATION c=14
|
||||
"Temp. cal."
|
||||
"Cal. temp."
|
||||
#MSG_PINDA_CALIBRATION c=13
|
||||
"PINDA cal."
|
||||
"Cal. PINDA"
|
||||
|
||||
#MSG_SELECT_TEMP_MATCHES_MATERIAL c=20 r=4
|
||||
"Select temperature which matches your material."
|
||||
"Selecciona la temperatura adecuada a tu material."
|
||||
|
||||
#MSG_CALIBRATION_PINDA_MENU c=17
|
||||
"Temp. calibration"
|
||||
"Calibracion temp."
|
||||
#MSG_PINDA_CAL_FAILED c=20 r=4
|
||||
"PINDA calibration failed"
|
||||
"Fallo de la calibracion de PINDA"
|
||||
|
||||
#MSG_TEMP_CAL_FAILED c=20 r=8
|
||||
"Temperature calibration failed"
|
||||
"Fallo de la calibracion de temperatura"
|
||||
|
||||
#MSG_TEMP_CALIBRATION_DONE c=20 r=12
|
||||
"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
|
||||
"Calibracion temperatura terminada. Haz clic para continuar."
|
||||
#MSG_PINDA_CALIBRATION_DONE c=20 r=8
|
||||
"PINDA calibration is finished and active. It can be disabled in menu Settings->PINDA cal."
|
||||
"La calibracion PINDA esta finalizada y activa. Se puede desactivar en el menu Configuracion->Cal. PINDA"
|
||||
|
||||
#MSG_FS_VERIFIED c=20 r=3
|
||||
"Sensor verified, remove the filament now."
|
||||
|
|
@ -1126,7 +1106,7 @@
|
|||
"to unload filament"
|
||||
"para descargar fil."
|
||||
|
||||
#MSG_UNLOAD_FILAMENT c=16
|
||||
#MSG_UNLOAD_FILAMENT c=18
|
||||
"Unload filament"
|
||||
"Soltar filamento"
|
||||
|
||||
|
|
@ -1138,10 +1118,6 @@
|
|||
"Total"
|
||||
"\x00"
|
||||
|
||||
#MSG_USED c=19
|
||||
"Used during print"
|
||||
"Usado en impresion"
|
||||
|
||||
#MSG_MENU_VOLTAGES c=15
|
||||
"Voltages"
|
||||
"Voltajes"
|
||||
|
|
@ -1194,7 +1170,7 @@
|
|||
"XYZ calibration failed. Please consult the manual."
|
||||
"Calibracion XYZ fallada. Consulta el manual por favor."
|
||||
|
||||
#MSG_YES c=3
|
||||
#MSG_YES c=4
|
||||
"Yes"
|
||||
"Si"
|
||||
|
||||
|
|
@ -1254,7 +1230,7 @@
|
|||
"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
|
||||
"La impresora comenzara a imprimir una linea en zig-zag. Gira el dial hasta que la linea alcance la altura optima. Mira las fotos del manual (Capitulo de calibracion)."
|
||||
|
||||
# c=20 r=5
|
||||
#MSG_FIL_FAILED c=20 r=5
|
||||
"Verification failed, remove the filament and try again."
|
||||
"La verificacion fallo, retire el filamento e intente nuevamente."
|
||||
|
||||
|
|
@ -1324,7 +1300,7 @@
|
|||
|
||||
#MSG_GCODE_DIFF_CONTINUE c=20 r=4
|
||||
"G-code sliced for a different level. Continue?"
|
||||
"Codigo G laminado para un nivel diferente. ?Continuar?"
|
||||
"Codigo G laminado para un nivel diferente. Continuar?"
|
||||
|
||||
#MSG_GCODE_DIFF_CANCELLED c=20 r=7
|
||||
"G-code sliced for a different level. Please re-slice the model again. Print cancelled."
|
||||
|
|
@ -1332,7 +1308,7 @@
|
|||
|
||||
#MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5
|
||||
"G-code sliced for a different printer type. Continue?"
|
||||
"Codigo G laminado para un tipo de impresora diferente. ?Continuar?"
|
||||
"Codigo G laminado para un tipo de impresora diferente. Continuar?"
|
||||
|
||||
#MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=8
|
||||
"G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
|
||||
|
|
@ -1340,9 +1316,9 @@
|
|||
|
||||
#MSG_GCODE_NEWER_FIRMWARE_CONTINUE c=20 r=5
|
||||
"G-code sliced for a newer firmware. Continue?"
|
||||
"Codigo G laminado para nuevo firmware. ?Continuar?"
|
||||
"Codigo G laminado para nuevo firmware. Continuar?"
|
||||
|
||||
# c=20 r=8
|
||||
#MSG_GCODE_NEWER_FIRMWARE_CANCELLED c=20 r=8
|
||||
"G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
|
||||
"Codigo G laminado para nuevo firmware. Por favor actualiza el firmware. Impresion cancelada."
|
||||
|
||||
|
|
@ -1356,7 +1332,7 @@
|
|||
|
||||
#MSG_NOZZLE_DIFFERS_CONTINUE c=20 r=5
|
||||
"Printer nozzle diameter differs from the G-code. Continue?"
|
||||
"Diametro nozzle impresora difiere de cod.G. ?Continuar?"
|
||||
"Diametro nozzle impresora difiere de cod.G. Continuar?"
|
||||
|
||||
#MSG_NOZZLE_DIFFERS_CANCELLED c=20 r=9
|
||||
"Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
|
||||
|
|
|
|||
|
|
@ -1,3 +1,11 @@
|
|||
#MSG_SHEET_OFFSET c=20 r=4
|
||||
"Sheet %.7s\x0aZ offset: %+1.3fmm\x0a%cContinue\x0a%cReset"
|
||||
"Plaque %.7s\x0aZ offset: %+1.3fmm\x0a%cContinuer\x0a%cReinitialiser"
|
||||
|
||||
#MSG_REFRESH c=18
|
||||
"\x04Refresh"
|
||||
"\x04Rafraichir"
|
||||
|
||||
#MSG_IR_03_OR_OLDER c=18
|
||||
" 0.3 or older"
|
||||
" 0.3 ou +ancien"
|
||||
|
|
@ -38,7 +46,7 @@
|
|||
"All correct"
|
||||
"Tout est correct"
|
||||
|
||||
#MSG_WIZARD_DONE c=20 r=8
|
||||
#MSG_WIZARD_DONE c=20 r=3
|
||||
"All is done. Happy printing!"
|
||||
"Tout est pret. Bonne impression!"
|
||||
|
||||
|
|
@ -138,10 +146,6 @@
|
|||
"Calibrate Z"
|
||||
"Calibrer Z"
|
||||
|
||||
#MSG_CALIBRATE_PINDA c=17
|
||||
"Calibrate"
|
||||
"Calibrer"
|
||||
|
||||
#MSG_CANCEL2 c=10
|
||||
">Cancel"
|
||||
">Annuler"
|
||||
|
|
@ -162,7 +166,7 @@
|
|||
"Calibration done"
|
||||
"Calibration terminee"
|
||||
|
||||
#MSG_MENU_CALIBRATION c=18
|
||||
#MSG_CALIBRATION c=18
|
||||
"Calibration"
|
||||
"\x00"
|
||||
|
||||
|
|
@ -190,8 +194,8 @@
|
|||
"Crash det."
|
||||
"Detect.crash"
|
||||
|
||||
#MSG_CHOOSE_FIL_1ST_LAYERCAL c=20 r=7
|
||||
"Choose a filament for the First Layer Calibration and select it in the on-screen menu."
|
||||
#MSG_SELECT_FIL_1ST_LAYERCAL c=20 r=7
|
||||
"Select a filament for the First Layer Calibration and select it in the on-screen menu."
|
||||
"Choisissez un filament pour la Calibration de la Premiere Couche et selectionnez-le depuis le menu a l'ecran."
|
||||
|
||||
#MSG_CRASH_DETECTED c=20
|
||||
|
|
@ -206,13 +210,9 @@
|
|||
"Crash"
|
||||
"\x00"
|
||||
|
||||
#MSG_CURRENT c=19
|
||||
"Current"
|
||||
"Actuel"
|
||||
|
||||
#MSG_DATE c=17
|
||||
"Date:"
|
||||
"Date:"
|
||||
"\x00"
|
||||
|
||||
#MSG_COMMUNITY_MADE c=18
|
||||
"Community made"
|
||||
|
|
@ -226,7 +226,7 @@
|
|||
"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."
|
||||
"La distance entre la pointe de la buse et la surface du plateau n'a pas encore ete reglee. Suivez le manuel, chapitre Premiers pas, section Calibration de la premiere couche."
|
||||
|
||||
#MSG_FS_CONTINUE c=5
|
||||
#MSG_CONTINUE_SHORT c=5
|
||||
"Cont."
|
||||
"\x00"
|
||||
|
||||
|
|
@ -238,7 +238,7 @@
|
|||
"E-correct:"
|
||||
"Correct-E:"
|
||||
|
||||
#MSG_EJECT_FILAMENT c=16
|
||||
#MSG_EJECT_FILAMENT c=17
|
||||
"Eject filament"
|
||||
"Remonter le fil."
|
||||
|
||||
|
|
@ -258,11 +258,7 @@
|
|||
"Endstops"
|
||||
"Butees"
|
||||
|
||||
#MSG_STACK_ERROR c=20 r=4
|
||||
"Error - static memory has been overwritten"
|
||||
"Erreur - la memoire statique a ete ecrasee"
|
||||
|
||||
#MSG_CUT_FILAMENT c=16
|
||||
#MSG_CUT_FILAMENT c=17
|
||||
"Cut filament"
|
||||
"Coupe filament"
|
||||
|
||||
|
|
@ -286,9 +282,9 @@
|
|||
"ERROR:"
|
||||
"ERREUR:"
|
||||
|
||||
#MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
|
||||
#MSG_EXTRUDER_FAN_SPEED c=16
|
||||
"Extruder fan:"
|
||||
"Ventilo extrudeur:"
|
||||
"Vent. extrudeur:"
|
||||
|
||||
#MSG_INFO_EXTRUDER c=18
|
||||
"Extruder info"
|
||||
|
|
@ -338,9 +334,9 @@
|
|||
"Filament not loaded"
|
||||
"Filament non charge"
|
||||
|
||||
#MSG_FILAMENT_SENSOR c=20
|
||||
#MSG_SELFTEST_FILAMENT_SENSOR c=17
|
||||
"Filament sensor"
|
||||
"Capteur de filament"
|
||||
"Capteur de fil."
|
||||
|
||||
#MSG_FILAMENT_USED c=19
|
||||
"Filament used"
|
||||
|
|
@ -378,13 +374,13 @@
|
|||
"Flow"
|
||||
"Flux"
|
||||
|
||||
#MSG_SELFTEST_COOLING_FAN c=20
|
||||
#MSG_SELFTEST_PART_FAN c=20
|
||||
"Front print fan?"
|
||||
"Ventilo impr avant?"
|
||||
|
||||
#MSG_BED_CORRECTION_FRONT c=14
|
||||
"Front side[um]"
|
||||
"Avant [um]"
|
||||
"Front side[\xe4m]"
|
||||
"Avant [\xe4m]"
|
||||
|
||||
#MSG_SELFTEST_FANS c=20
|
||||
"Front/left fans"
|
||||
|
|
@ -450,14 +446,10 @@
|
|||
"Checking Z axis"
|
||||
"Verification axe Z"
|
||||
|
||||
#MSG_CHOOSE_EXTRUDER c=20
|
||||
"Choose extruder:"
|
||||
#MSG_SELECT_EXTRUDER c=20
|
||||
"Select extruder:"
|
||||
"Choisir extrudeur:"
|
||||
|
||||
#MSG_CHOOSE_FILAMENT c=20
|
||||
"Choose filament:"
|
||||
"Choix du filament:"
|
||||
|
||||
#MSG_FILAMENT c=17
|
||||
"Filament"
|
||||
"\x00"
|
||||
|
|
@ -470,7 +462,7 @@
|
|||
"I will run z calibration now."
|
||||
"Je vais maintenant lancer la calibration Z."
|
||||
|
||||
#MSG_WATCH c=18
|
||||
#MSG_INFO_SCREEN c=18
|
||||
"Info screen"
|
||||
"Ecran d'info"
|
||||
|
||||
|
|
@ -496,7 +488,7 @@
|
|||
|
||||
#MSG_ADDITIONAL_SHEETS c=20 r=9
|
||||
"If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
|
||||
"Si vous avez d'autres feuilles d'acier, calibrez leurs pre-reglages dans Reglages - Config HW - Plaque en acier."
|
||||
"Si vous avez d'autres feuilles d'acier, calibrez leurs pre-reglages dans Reglages - Config HW - Plaque en acier."
|
||||
|
||||
#MSG_LAST_PRINT c=18
|
||||
"Last print"
|
||||
|
|
@ -511,8 +503,8 @@
|
|||
"Gauche"
|
||||
|
||||
#MSG_BED_CORRECTION_LEFT c=14
|
||||
"Left side [um]"
|
||||
"Gauche [um]"
|
||||
"Left side [\xe4m]"
|
||||
"Gauche [\xe4m]"
|
||||
|
||||
#MSG_LIN_CORRECTION c=18
|
||||
"Lin. correction"
|
||||
|
|
@ -698,7 +690,7 @@
|
|||
"Now I will preheat nozzle for PLA."
|
||||
"Maintenant je vais prechauffer la buse pour du PLA."
|
||||
|
||||
#MSG_NOZZLE c=12
|
||||
#MSG_NOZZLE c=10
|
||||
"Nozzle"
|
||||
"Buse"
|
||||
|
||||
|
|
@ -710,10 +702,6 @@
|
|||
"Now remove the test print from steel sheet."
|
||||
"Retirez maintenant l'impression de test de la plaque en acier."
|
||||
|
||||
#MSG_NOZZLE_FAN c=10
|
||||
"Nozzle FAN"
|
||||
"Vent. buse"
|
||||
|
||||
#MSG_PAUSE_PRINT c=18
|
||||
"Pause print"
|
||||
"Pause de l'impr."
|
||||
|
|
@ -814,7 +802,7 @@
|
|||
"Press the knob to preheat nozzle and continue."
|
||||
"Appuyez sur le bouton pour prechauffer la buse et continuer."
|
||||
|
||||
#MSG_FS_PAUSE c=5
|
||||
#MSG_PAUSE c=5
|
||||
"Pause"
|
||||
"\x00"
|
||||
|
||||
|
|
@ -834,7 +822,7 @@
|
|||
"Preheating to unload"
|
||||
"Chauf.pour decharger"
|
||||
|
||||
#MSG_SELFTEST_PRINT_FAN_SPEED c=18
|
||||
#MSG_PRINT_FAN_SPEED c=16
|
||||
"Print fan:"
|
||||
"Vent. impr:"
|
||||
|
||||
|
|
@ -858,10 +846,6 @@
|
|||
"Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
|
||||
"L'imprimante n'a pas encore ete calibree. Suivez le manuel, chapitre Premiers pas, section Processus de calibration."
|
||||
|
||||
#MSG_PRINT_FAN c=10
|
||||
"Print FAN"
|
||||
"Vent. impr"
|
||||
|
||||
#MSG_WIZARD_LOAD_FILAMENT c=20 r=6
|
||||
"Please insert filament into the extruder, then press the knob to load it."
|
||||
"Veuillez inserer le filament dans l'extrudeur, puis appuyez sur le bouton pour le charger."
|
||||
|
|
@ -875,8 +859,8 @@
|
|||
"Veuillez d'abord charger un filament."
|
||||
|
||||
#MSG_BED_CORRECTION_REAR c=14
|
||||
"Rear side [um]"
|
||||
"Arriere [um]"
|
||||
"Rear side [\xe4m]"
|
||||
"Arriere [\xe4m]"
|
||||
|
||||
#MSG_UNLOAD_FILAMENT_REPEAT c=20 r=4
|
||||
"Please unload the filament first, then repeat this action."
|
||||
|
|
@ -911,8 +895,8 @@
|
|||
"Reprise de l'impr."
|
||||
|
||||
#MSG_BED_CORRECTION_RIGHT c=14
|
||||
"Right side[um]"
|
||||
"Droite [um]"
|
||||
"Right side[\xe4m]"
|
||||
"Droite [\xe4m]"
|
||||
|
||||
#MSG_RPI_PORT c=13
|
||||
"RPi port"
|
||||
|
|
@ -1066,25 +1050,21 @@
|
|||
"Select filament:"
|
||||
"Choix du filament:"
|
||||
|
||||
#MSG_TEMP_CALIBRATION c=14
|
||||
"Temp. cal."
|
||||
"Calib. Temp."
|
||||
#MSG_PINDA_CALIBRATION c=13
|
||||
"PINDA cal."
|
||||
"Calib. PINDA"
|
||||
|
||||
#MSG_SELECT_TEMP_MATCHES_MATERIAL c=20 r=4
|
||||
"Select temperature which matches your material."
|
||||
"Selectionnez la temperature qui correspond a votre materiau."
|
||||
|
||||
#MSG_CALIBRATION_PINDA_MENU c=17
|
||||
"Temp. calibration"
|
||||
"Calibration temp."
|
||||
#MSG_PINDA_CAL_FAILED c=20 r=4
|
||||
"PINDA calibration failed"
|
||||
"Echec de la calibration en PINDA"
|
||||
|
||||
#MSG_TEMP_CAL_FAILED c=20 r=8
|
||||
"Temperature calibration failed"
|
||||
"Echec de la calibration en temperature"
|
||||
|
||||
#MSG_TEMP_CALIBRATION_DONE c=20 r=12
|
||||
"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
|
||||
"La calibration en temperature est terminee et activee. La calibration en temperature peut etre desactivee dans le menu Reglages-> Cal. Temp."
|
||||
#MSG_PINDA_CALIBRATION_DONE c=20 r=8
|
||||
"PINDA calibration is finished and active. It can be disabled in menu Settings->PINDA cal."
|
||||
"La calibration en PINDA est terminee et activee. Il peut etre desactivee dans le menu Reglages-> Calib. PINDA"
|
||||
|
||||
#MSG_FS_VERIFIED c=20 r=3
|
||||
"Sensor verified, remove the filament now."
|
||||
|
|
@ -1126,7 +1106,7 @@
|
|||
"to unload filament"
|
||||
"pour decharger fil."
|
||||
|
||||
#MSG_UNLOAD_FILAMENT c=16
|
||||
#MSG_UNLOAD_FILAMENT c=18
|
||||
"Unload filament"
|
||||
"Decharger fil."
|
||||
|
||||
|
|
@ -1138,10 +1118,6 @@
|
|||
"Total"
|
||||
"Totale"
|
||||
|
||||
#MSG_USED c=19
|
||||
"Used during print"
|
||||
"Utilise pdt impr."
|
||||
|
||||
#MSG_MENU_VOLTAGES c=15
|
||||
"Voltages"
|
||||
"Tensions"
|
||||
|
|
@ -1194,7 +1170,7 @@
|
|||
"XYZ calibration failed. Please consult the manual."
|
||||
"Echec calibration XYZ. Consultez le manuel."
|
||||
|
||||
#MSG_YES c=3
|
||||
#MSG_YES c=4
|
||||
"Yes"
|
||||
"Oui"
|
||||
|
||||
|
|
@ -1252,7 +1228,7 @@
|
|||
|
||||
#MSG_WIZARD_V2_CAL_2 c=20 r=12
|
||||
"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
|
||||
"L'imprimante commencera a imprimer une ligne en zig-zag. Tournez le bouton jusqu'a atteindre la hauteur optimale. Consultez les photos dans le manuel (chapitre Calibration)."
|
||||
"L'imprimante commencera a imprimer une ligne en zig-zag. Tournez le bouton jusqu'a atteindre la hauteur optimale. Consultez les photos dans le manuel (chapitre Calibration)."
|
||||
|
||||
#MSG_FIL_FAILED c=20 r=5
|
||||
"Verification failed, remove the filament and try again."
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -1,3 +1,11 @@
|
|||
#MSG_SHEET_OFFSET c=20 r=4
|
||||
"Sheet %.7s\x0aZ offset: %+1.3fmm\x0a%cContinue\x0a%cReset"
|
||||
"Piano %.7s\x0aZ offset: %+1.3fmm\x0a%cContinuare\x0a%cReset"
|
||||
|
||||
#MSG_REFRESH c=18
|
||||
"\x04Refresh"
|
||||
"\x04Ricaricare"
|
||||
|
||||
#MSG_03_OR_OLDER c=18
|
||||
" 0.3 or older"
|
||||
" 0.3 o inferiore"
|
||||
|
|
@ -38,7 +46,7 @@
|
|||
"All correct"
|
||||
"Nessun errore"
|
||||
|
||||
#MSG_WIZARD_DONE c=20 r=8
|
||||
#MSG_WIZARD_DONE c=20 r=3
|
||||
"All is done. Happy printing!"
|
||||
"Tutto fatto. Buona stampa!"
|
||||
|
||||
|
|
@ -138,10 +146,6 @@
|
|||
"Calibrate Z"
|
||||
"Calibra Z"
|
||||
|
||||
#MSG_CALIBRATE_PINDA c=17
|
||||
"Calibrate"
|
||||
"Calibra"
|
||||
|
||||
#MSG_CANCEL2 c=10
|
||||
">Cancel"
|
||||
">Annulla"
|
||||
|
|
@ -162,7 +166,7 @@
|
|||
"Calibration done"
|
||||
"Calibr. completa"
|
||||
|
||||
#MSG_MENU_CALIBRATION c=18
|
||||
#MSG_CALIBRATION c=18
|
||||
"Calibration"
|
||||
"Calibrazione"
|
||||
|
||||
|
|
@ -190,8 +194,8 @@
|
|||
"Crash det."
|
||||
"Rileva.crash"
|
||||
|
||||
#MSG_CHOOSE_FIL_1ST_LAYERCAL c=20 r=7
|
||||
"Choose a filament for the First Layer Calibration and select it in the on-screen menu."
|
||||
#MSG_SELECT_FIL_1ST_LAYERCAL c=20 r=7
|
||||
"Select a filament for the First Layer Calibration and select it in the on-screen menu."
|
||||
"Scegli un filamento per la calibrazione del primo strato e selezionalo nel menu sullo schermo."
|
||||
|
||||
#MSG_CRASH_DETECTED c=20
|
||||
|
|
@ -206,10 +210,6 @@
|
|||
"Crash"
|
||||
"Impatto"
|
||||
|
||||
#MSG_CURRENT c=19
|
||||
"Current"
|
||||
"Attuale"
|
||||
|
||||
#MSG_DATE c=17
|
||||
"Date:"
|
||||
"Data:"
|
||||
|
|
@ -226,7 +226,7 @@
|
|||
"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."
|
||||
"Distanza tra la punta dell'ugello e la superficie del piano non ancora impostata. Si prega di seguire il manuale, capitolo Primi Passi, sezione Calibrazione primo strato."
|
||||
|
||||
#MSG_FS_CONTINUE c=5
|
||||
#MSG_CONTINUE_SHORT c=5
|
||||
"Cont."
|
||||
"\x00"
|
||||
|
||||
|
|
@ -238,7 +238,7 @@
|
|||
"E-correct:"
|
||||
"Correzione-E:"
|
||||
|
||||
#MSG_EJECT_FILAMENT c=16
|
||||
#MSG_EJECT_FILAMENT c=17
|
||||
"Eject filament"
|
||||
"Espelli fil."
|
||||
|
||||
|
|
@ -258,11 +258,7 @@
|
|||
"Endstops"
|
||||
"Finecorsa"
|
||||
|
||||
#MSG_STACK_ERROR c=20 r=4
|
||||
"Error - static memory has been overwritten"
|
||||
"Errore - la memoria statica e' stata sovrascritta"
|
||||
|
||||
#MSG_CUT_FILAMENT c=16
|
||||
#MSG_CUT_FILAMENT c=17
|
||||
"Cut filament"
|
||||
"Taglia filamento"
|
||||
|
||||
|
|
@ -286,9 +282,9 @@
|
|||
"ERROR:"
|
||||
"ERRORE:"
|
||||
|
||||
#MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
|
||||
#MSG_EXTRUDER_FAN_SPEED c=16
|
||||
"Extruder fan:"
|
||||
"Ventola estrusore:"
|
||||
"Vent. estrusore:"
|
||||
|
||||
#MSG_INFO_EXTRUDER c=18
|
||||
"Extruder info"
|
||||
|
|
@ -338,7 +334,7 @@
|
|||
"Filament not loaded"
|
||||
"Fil. non caricato"
|
||||
|
||||
#MSG_FILAMENT_SENSOR c=20
|
||||
#MSG_SELFTEST_FILAMENT_SENSOR c=17
|
||||
"Filament sensor"
|
||||
"Sensore filam."
|
||||
|
||||
|
|
@ -378,13 +374,13 @@
|
|||
"Flow"
|
||||
"Flusso"
|
||||
|
||||
#MSG_SELFTEST_COOLING_FAN c=20
|
||||
#MSG_SELFTEST_PART_FAN c=20
|
||||
"Front print fan?"
|
||||
"Ventola frontale?"
|
||||
|
||||
#MSG_BED_CORRECTION_FRONT c=14
|
||||
"Front side[um]"
|
||||
"Fronte [um]"
|
||||
"Front side[\xe4m]"
|
||||
"Fronte [\xe4m]"
|
||||
|
||||
#MSG_SELFTEST_FANS c=20
|
||||
"Front/left fans"
|
||||
|
|
@ -450,14 +446,10 @@
|
|||
"Checking Z axis"
|
||||
"Verifica asse Z"
|
||||
|
||||
#MSG_CHOOSE_EXTRUDER c=20
|
||||
"Choose extruder:"
|
||||
#MSG_SELECT_EXTRUDER c=20
|
||||
"Select extruder:"
|
||||
"Seleziona estrusore:"
|
||||
|
||||
#MSG_CHOOSE_FILAMENT c=20
|
||||
"Choose filament:"
|
||||
"Scegliere filamento:"
|
||||
|
||||
#MSG_FILAMENT c=17
|
||||
"Filament"
|
||||
"Filamento"
|
||||
|
|
@ -470,7 +462,7 @@
|
|||
"I will run z calibration now."
|
||||
"Adesso avviero la Calibrazione Z."
|
||||
|
||||
#MSG_WATCH c=18
|
||||
#MSG_INFO_SCREEN c=18
|
||||
"Info screen"
|
||||
"Schermata info"
|
||||
|
||||
|
|
@ -511,8 +503,8 @@
|
|||
"Sinistra"
|
||||
|
||||
#MSG_BED_CORRECTION_LEFT c=14
|
||||
"Left side [um]"
|
||||
"Sinistra [um]"
|
||||
"Left side [\xe4m]"
|
||||
"Sinistra [\xe4m]"
|
||||
|
||||
#MSG_LIN_CORRECTION c=18
|
||||
"Lin. correction"
|
||||
|
|
@ -698,7 +690,7 @@
|
|||
"Now I will preheat nozzle for PLA."
|
||||
"Adesso preriscaldero l'ugello per PLA."
|
||||
|
||||
#MSG_NOZZLE c=12
|
||||
#MSG_NOZZLE c=10
|
||||
"Nozzle"
|
||||
"Ugello"
|
||||
|
||||
|
|
@ -710,10 +702,6 @@
|
|||
"Now remove the test print from steel sheet."
|
||||
"Ora rimuovete la stampa di prova dalla piastra in acciaio."
|
||||
|
||||
#MSG_NOZZLE_FAN c=10
|
||||
"Nozzle FAN"
|
||||
"Vent. estr"
|
||||
|
||||
#MSG_PAUSE_PRINT c=18
|
||||
"Pause print"
|
||||
"Metti in pausa"
|
||||
|
|
@ -814,7 +802,7 @@
|
|||
"Press the knob to preheat nozzle and continue."
|
||||
"Premete la manopola per preriscaldare l'ugello e continuare."
|
||||
|
||||
#MSG_FS_PAUSE c=5
|
||||
#MSG_PAUSE c=5
|
||||
"Pause"
|
||||
"Pausa"
|
||||
|
||||
|
|
@ -834,7 +822,7 @@
|
|||
"Preheating to unload"
|
||||
"Preriscald. scarico"
|
||||
|
||||
#MSG_SELFTEST_PRINT_FAN_SPEED c=18
|
||||
#MSG_PRINT_FAN_SPEED c=16
|
||||
"Print fan:"
|
||||
"Vent.stam:"
|
||||
|
||||
|
|
@ -858,10 +846,6 @@
|
|||
"Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
|
||||
"Stampante non ancora calibrata. Si prega di seguire il manuale, capitolo Primi Passi, sezione Sequenza di Calibrazione."
|
||||
|
||||
#MSG_PRINT_FAN c=10
|
||||
"Print FAN"
|
||||
"Vent.stamp"
|
||||
|
||||
#MSG_WIZARD_LOAD_FILAMENT c=20 r=6
|
||||
"Please insert filament into the extruder, then press the knob to load it."
|
||||
"Inserisci il filamento nell'estrusore, poi premi la manopola per caricarlo."
|
||||
|
|
@ -875,8 +859,8 @@
|
|||
"Per favore prima carica il filamento."
|
||||
|
||||
#MSG_BED_CORRECTION_REAR c=14
|
||||
"Rear side [um]"
|
||||
"Retro [um]"
|
||||
"Rear side [\xe4m]"
|
||||
"Retro [\xe4m]"
|
||||
|
||||
#MSG_UNLOAD_FILAMENT_REPEAT c=20 r=4
|
||||
"Please unload the filament first, then repeat this action."
|
||||
|
|
@ -911,8 +895,8 @@
|
|||
"Riprendi stampa"
|
||||
|
||||
#MSG_BED_CORRECTION_RIGHT c=14
|
||||
"Right side[um]"
|
||||
"Destra [um]"
|
||||
"Right side[\xe4m]"
|
||||
"Destra [\xe4m]"
|
||||
|
||||
#MSG_RPI_PORT c=13
|
||||
"RPi port"
|
||||
|
|
@ -1066,25 +1050,21 @@
|
|||
"Select filament:"
|
||||
"Seleziona il filam.:"
|
||||
|
||||
#MSG_TEMP_CALIBRATION c=14
|
||||
"Temp. cal."
|
||||
"Calib. temp."
|
||||
#MSG_PINDA_CALIBRATION c=13
|
||||
"PINDA cal."
|
||||
"Calib. PINDA"
|
||||
|
||||
#MSG_SELECT_TEMP_MATCHES_MATERIAL c=20 r=4
|
||||
"Select temperature which matches your material."
|
||||
"Seleziona la temperatura appropriata per il tuo materiale."
|
||||
|
||||
#MSG_CALIBRATION_PINDA_MENU c=17
|
||||
"Temp. calibration"
|
||||
"Calib. Temp."
|
||||
|
||||
#MSG_TEMP_CAL_FAILED c=20 r=8
|
||||
"Temperature calibration failed"
|
||||
#MSG_PINDA_CAL_FAILED c=20 r=4
|
||||
"PINDA calibration failed"
|
||||
"Calibrazione temperatura fallita"
|
||||
|
||||
#MSG_TEMP_CALIBRATION_DONE c=20 r=12
|
||||
"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
|
||||
"Calibrazione temperatura completata e attiva. Puo essere disattivata dal menu Impostazioni ->Cal. Temp."
|
||||
#MSG_PINDA_CALIBRATION_DONE c=20 r=8
|
||||
"PINDA calibration is finished and active. It can be disabled in menu Settings->PINDA cal."
|
||||
"Calibrazione PINDA completata e attiva. Puo essere disattivata dal menu Impostazioni ->Calib. PINDA"
|
||||
|
||||
#MSG_FS_VERIFIED c=20 r=3
|
||||
"Sensor verified, remove the filament now."
|
||||
|
|
@ -1126,7 +1106,7 @@
|
|||
"to unload filament"
|
||||
"per scaricare fil."
|
||||
|
||||
#MSG_UNLOAD_FILAMENT c=16
|
||||
#MSG_UNLOAD_FILAMENT c=18
|
||||
"Unload filament"
|
||||
"Scarica filam."
|
||||
|
||||
|
|
@ -1138,10 +1118,6 @@
|
|||
"Total"
|
||||
"Totale"
|
||||
|
||||
#MSG_USED c=19
|
||||
"Used during print"
|
||||
"Usati nella stampa"
|
||||
|
||||
#MSG_MENU_VOLTAGES c=15
|
||||
"Voltages"
|
||||
"Voltaggi"
|
||||
|
|
@ -1194,7 +1170,7 @@
|
|||
"XYZ calibration failed. Please consult the manual."
|
||||
"Calibrazione XYZ fallita. Si prega di consultare il manuale."
|
||||
|
||||
#MSG_YES c=3
|
||||
#MSG_YES c=4
|
||||
"Yes"
|
||||
"Si"
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -1,3 +1,11 @@
|
|||
#MSG_SHEET_OFFSET c=20 r=4
|
||||
"Sheet %.7s\x0aZ offset: %+1.3fmm\x0a%cContinue\x0a%cReset"
|
||||
"Staalplaat %.7s\x0aZ offset: %+1.3fmm\x0a%cDoorgaan\x0a%cReset"
|
||||
|
||||
#MSG_REFRESH c=18
|
||||
"\x04Refresh"
|
||||
"\x00"
|
||||
|
||||
#MSG_IR_03_OR_OLDER c=18
|
||||
" 0.3 or older"
|
||||
" 0.3 of ouder"
|
||||
|
|
@ -38,7 +46,7 @@
|
|||
"All correct"
|
||||
"Allemaal goed"
|
||||
|
||||
#MSG_WIZARD_DONE c=20 r=8
|
||||
#MSG_WIZARD_DONE c=20 r=3
|
||||
"All is done. Happy printing!"
|
||||
"Klaar. Happy printing!"
|
||||
|
||||
|
|
@ -116,7 +124,7 @@
|
|||
|
||||
#MSG_BED c=13
|
||||
"Bed"
|
||||
"Bed"
|
||||
"\x00"
|
||||
|
||||
#MSG_BELT_STATUS c=18
|
||||
"Belt status"
|
||||
|
|
@ -138,10 +146,6 @@
|
|||
"Calibrate Z"
|
||||
"Kalibratie Z"
|
||||
|
||||
#MSG_CALIBRATE_PINDA c=17
|
||||
"Calibrate"
|
||||
"Kalibreren"
|
||||
|
||||
#MSG_CANCEL2 c=10
|
||||
">Cancel"
|
||||
">Annuleren"
|
||||
|
|
@ -162,7 +166,7 @@
|
|||
"Calibration done"
|
||||
"Kalibratie klaar"
|
||||
|
||||
#MSG_MENU_CALIBRATION c=18
|
||||
#MSG_CALIBRATION c=18
|
||||
"Calibration"
|
||||
"Kalibratie"
|
||||
|
||||
|
|
@ -190,8 +194,8 @@
|
|||
"Crash det."
|
||||
"Crashdet."
|
||||
|
||||
#MSG_CHOOSE_FIL_1ST_LAYERCAL c=20 r=7
|
||||
"Choose a filament for the First Layer Calibration and select it in the on-screen menu."
|
||||
#MSG_SELECT_FIL_1ST_LAYERCAL c=20 r=7
|
||||
"Select a filament for the First Layer Calibration and select it in the on-screen menu."
|
||||
"Kies een filament voor de kalibratie van de eerste laag en selecteer deze in het schermmenu."
|
||||
|
||||
#MSG_CRASH_DETECTED c=20
|
||||
|
|
@ -206,10 +210,6 @@
|
|||
"Crash"
|
||||
"\x00"
|
||||
|
||||
#MSG_CURRENT c=19
|
||||
"Current"
|
||||
"Actueel"
|
||||
|
||||
#MSG_DATE c=17
|
||||
"Date:"
|
||||
"Datum:"
|
||||
|
|
@ -226,7 +226,7 @@
|
|||
"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."
|
||||
"Afstand tussen tip van de tuit en het print oppervlak is nog niet vastgesteld. Volg de handleiding, First steps, sectie First layer calibration."
|
||||
|
||||
#MSG_FS_CONTINUE c=5
|
||||
#MSG_CONTINUE_SHORT c=5
|
||||
"Cont."
|
||||
"Door."
|
||||
|
||||
|
|
@ -238,7 +238,7 @@
|
|||
"E-correct:"
|
||||
"E-correctie:"
|
||||
|
||||
#MSG_EJECT_FILAMENT c=16
|
||||
#MSG_EJECT_FILAMENT c=17
|
||||
"Eject filament"
|
||||
"Fil. uitwerpen"
|
||||
|
||||
|
|
@ -258,11 +258,7 @@
|
|||
"Endstops"
|
||||
"Eindstops"
|
||||
|
||||
#MSG_STACK_ERROR c=20 r=4
|
||||
"Error - static memory has been overwritten"
|
||||
"Fout - het statische geheugen is overschreven"
|
||||
|
||||
#MSG_CUT_FILAMENT c=16
|
||||
#MSG_CUT_FILAMENT c=17
|
||||
"Cut filament"
|
||||
"Fil. knippen"
|
||||
|
||||
|
|
@ -286,7 +282,7 @@
|
|||
"ERROR:"
|
||||
"FOUT:"
|
||||
|
||||
#MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
|
||||
#MSG_EXTRUDER_FAN_SPEED c=16
|
||||
"Extruder fan:"
|
||||
"\x00"
|
||||
|
||||
|
|
@ -316,11 +312,11 @@
|
|||
|
||||
#MSG_SELFTEST_FAN c=20
|
||||
"Fan test"
|
||||
"Fan test"
|
||||
"\x00"
|
||||
|
||||
#MSG_FANS_CHECK c=13
|
||||
"Fans check"
|
||||
"Fans check"
|
||||
"\x00"
|
||||
|
||||
#MSG_FSENSOR c=12
|
||||
"Fil. sensor"
|
||||
|
|
@ -338,7 +334,7 @@
|
|||
"Filament not loaded"
|
||||
"Fil. niet geladen"
|
||||
|
||||
#MSG_FILAMENT_SENSOR c=20
|
||||
#MSG_SELFTEST_FILAMENT_SENSOR c=17
|
||||
"Filament sensor"
|
||||
"Filamentsensor"
|
||||
|
||||
|
|
@ -378,13 +374,13 @@
|
|||
"Flow"
|
||||
"Stromen"
|
||||
|
||||
#MSG_SELFTEST_COOLING_FAN c=20
|
||||
#MSG_SELFTEST_PART_FAN c=20
|
||||
"Front print fan?"
|
||||
"Voorzijde fan?"
|
||||
|
||||
#MSG_BED_CORRECTION_FRONT c=14
|
||||
"Front side[um]"
|
||||
"Voorkant [um]"
|
||||
"Front side[\xe4m]"
|
||||
"Voorkant [\xe4m]"
|
||||
|
||||
#MSG_SELFTEST_FANS c=20
|
||||
"Front/left fans"
|
||||
|
|
@ -450,14 +446,10 @@
|
|||
"Checking Z axis"
|
||||
"Controleer Z as"
|
||||
|
||||
#MSG_CHOOSE_EXTRUDER c=20
|
||||
"Choose extruder:"
|
||||
#MSG_SELECT_EXTRUDER c=20
|
||||
"Select extruder:"
|
||||
"Kies extruder:"
|
||||
|
||||
#MSG_CHOOSE_FILAMENT c=20
|
||||
"Choose filament:"
|
||||
"Kies filament:"
|
||||
|
||||
#MSG_FILAMENT c=17
|
||||
"Filament"
|
||||
"\x00"
|
||||
|
|
@ -470,7 +462,7 @@
|
|||
"I will run z calibration now."
|
||||
"Begin nu met z-kalibratie."
|
||||
|
||||
#MSG_WATCH c=18
|
||||
#MSG_INFO_SCREEN c=18
|
||||
"Info screen"
|
||||
"Info scherm"
|
||||
|
||||
|
|
@ -511,8 +503,8 @@
|
|||
"Links"
|
||||
|
||||
#MSG_BED_CORRECTION_LEFT c=14
|
||||
"Left side [um]"
|
||||
"Linkerkant[um]"
|
||||
"Left side [\xe4m]"
|
||||
"Linkerkant[\xe4m]"
|
||||
|
||||
#MSG_LIN_CORRECTION c=18
|
||||
"Lin. correction"
|
||||
|
|
@ -688,7 +680,7 @@
|
|||
|
||||
#MSG_SELFTEST_FAN_NO c=19
|
||||
"Not spinning"
|
||||
"Beweegt niet"
|
||||
"Draait niet"
|
||||
|
||||
#MSG_WIZARD_V2_CAL c=20 r=8
|
||||
"Now I will calibrate distance between tip of the nozzle and heatbed surface."
|
||||
|
|
@ -698,7 +690,7 @@
|
|||
"Now I will preheat nozzle for PLA."
|
||||
"Opwarmen van de tuit voor PLA voor."
|
||||
|
||||
#MSG_NOZZLE c=12
|
||||
#MSG_NOZZLE c=10
|
||||
"Nozzle"
|
||||
"Tuit"
|
||||
|
||||
|
|
@ -710,10 +702,6 @@
|
|||
"Now remove the test print from steel sheet."
|
||||
"Verwijder nu de testprint van staalplaat."
|
||||
|
||||
#MSG_NOZZLE_FAN c=10
|
||||
"Nozzle FAN"
|
||||
"Tuit fan"
|
||||
|
||||
#MSG_PAUSE_PRINT c=18
|
||||
"Pause print"
|
||||
"Print pauzeren"
|
||||
|
|
@ -814,7 +802,7 @@
|
|||
"Press the knob to preheat nozzle and continue."
|
||||
"Druk op de knop om de tuit voor te verwarmen en door te gaan."
|
||||
|
||||
#MSG_FS_PAUSE c=5
|
||||
#MSG_PAUSE c=5
|
||||
"Pause"
|
||||
"Pauze"
|
||||
|
||||
|
|
@ -834,7 +822,7 @@
|
|||
"Preheating to unload"
|
||||
"Opwarmen uitwerpen"
|
||||
|
||||
#MSG_SELFTEST_PRINT_FAN_SPEED c=18
|
||||
#MSG_PRINT_FAN_SPEED c=16
|
||||
"Print fan:"
|
||||
"\x00"
|
||||
|
||||
|
|
@ -858,10 +846,6 @@
|
|||
"Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
|
||||
"Printer is nog niet gekalibreerd. Volg de handleiding, hoofdstuk First steps, sectie Calibration flow."
|
||||
|
||||
#MSG_PRINT_FAN c=10
|
||||
"Print FAN"
|
||||
"\x00"
|
||||
|
||||
#MSG_WIZARD_LOAD_FILAMENT c=20 r=6
|
||||
"Please insert filament into the extruder, then press the knob to load it."
|
||||
"Steek a.u.b. filament in de extruder en druk op de knop om het te laden."
|
||||
|
|
@ -875,8 +859,8 @@
|
|||
"Laad a.u.b. eerst filament."
|
||||
|
||||
#MSG_BED_CORRECTION_REAR c=14
|
||||
"Rear side [um]"
|
||||
"Achterkant[um]"
|
||||
"Rear side [\xe4m]"
|
||||
"Achterkant[\xe4m]"
|
||||
|
||||
#MSG_UNLOAD_FILAMENT_REPEAT c=20 r=4
|
||||
"Please unload the filament first, then repeat this action."
|
||||
|
|
@ -911,8 +895,8 @@
|
|||
"Hervatten print"
|
||||
|
||||
#MSG_BED_CORRECTION_RIGHT c=14
|
||||
"Right side[um]"
|
||||
"Recht.kant[um]"
|
||||
"Right side[\xe4m]"
|
||||
"Recht.kant[\xe4m]"
|
||||
|
||||
#MSG_RPI_PORT c=13
|
||||
"RPi port"
|
||||
|
|
@ -940,7 +924,7 @@
|
|||
|
||||
#MSG_SELFTEST_OK c=20
|
||||
"Self test OK"
|
||||
"Zelftest OK"
|
||||
"Zelftest OK"
|
||||
|
||||
#MSG_SELFTEST_START c=20
|
||||
"Self test start"
|
||||
|
|
@ -1066,25 +1050,21 @@
|
|||
"Select filament:"
|
||||
"Kies filament:"
|
||||
|
||||
#MSG_TEMP_CALIBRATION c=14
|
||||
"Temp. cal."
|
||||
"Tempkalib."
|
||||
#MSG_PINDA_CALIBRATION c=13
|
||||
"PINDA cal."
|
||||
"PINDA kalib."
|
||||
|
||||
#MSG_SELECT_TEMP_MATCHES_MATERIAL c=20 r=4
|
||||
"Select temperature which matches your material."
|
||||
"Selecteer de temperatuur die overeenkomt met uw materiaal."
|
||||
|
||||
#MSG_CALIBRATION_PINDA_MENU c=17
|
||||
"Temp. calibration"
|
||||
"Tempkalibratie"
|
||||
#MSG_PINDA_CAL_FAILED c=20 r=4
|
||||
"PINDA calibration failed"
|
||||
"PINDA-kalibratie mislukt"
|
||||
|
||||
#MSG_TEMP_CAL_FAILED c=20 r=8
|
||||
"Temperature calibration failed"
|
||||
"Temperatuurkalibratie mislukt"
|
||||
|
||||
#MSG_TEMP_CALIBRATION_DONE c=20 r=12
|
||||
"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
|
||||
"Temperatuurkalibratie kan uitgeschakeld worden in het menu Instellingen-> Tempkalibratie."
|
||||
#MSG_PINDA_CALIBRATION_DONE c=20 r=8
|
||||
"PINDA calibration is finished and active. It can be disabled in menu Settings->PINDA cal."
|
||||
"PINDA-kalibratie is voltooid en actief. Het kan worden uitgeschakeld in het menu Instellingen-> PINDA kalib."
|
||||
|
||||
#MSG_FS_VERIFIED c=20 r=3
|
||||
"Sensor verified, remove the filament now."
|
||||
|
|
@ -1126,7 +1106,7 @@
|
|||
"to unload filament"
|
||||
"om fil. uitwerpen"
|
||||
|
||||
#MSG_UNLOAD_FILAMENT c=16
|
||||
#MSG_UNLOAD_FILAMENT c=18
|
||||
"Unload filament"
|
||||
"Fil. uitwerpen"
|
||||
|
||||
|
|
@ -1138,10 +1118,6 @@
|
|||
"Total"
|
||||
"Totaal"
|
||||
|
||||
#MSG_USED c=19
|
||||
"Used during print"
|
||||
"Gebruikt bij print"
|
||||
|
||||
#MSG_MENU_VOLTAGES c=15
|
||||
"Voltages"
|
||||
"Spanning"
|
||||
|
|
@ -1184,7 +1160,7 @@
|
|||
|
||||
#MSG_WIZARD c=17
|
||||
"Wizard"
|
||||
"Wizard"
|
||||
"\x00"
|
||||
|
||||
#MSG_XYZ_DETAILS c=18
|
||||
"XYZ cal. details"
|
||||
|
|
@ -1194,7 +1170,7 @@
|
|||
"XYZ calibration failed. Please consult the manual."
|
||||
"XYZ-kalibratie mislukt. Raadpleeg de handleiding aub."
|
||||
|
||||
#MSG_YES c=3
|
||||
#MSG_YES c=4
|
||||
"Yes"
|
||||
"Ja"
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,3 +1,11 @@
|
|||
#MSG_SHEET_OFFSET c=20 r=4
|
||||
"Sheet %.7s\x0aZ offset: %+1.3fmm\x0a%cContinue\x0a%cReset"
|
||||
"Plyta %.7s\x0aZ offset: %+1.3fmm\x0a%cKontynuowac\x0a%cReset"
|
||||
|
||||
#MSG_REFRESH c=18
|
||||
"\x04Refresh"
|
||||
"\x04Odswiezac"
|
||||
|
||||
#MSG_IR_03_OR_OLDER c=18
|
||||
" 0.3 or older"
|
||||
" 0.3 lub starszy"
|
||||
|
|
@ -38,7 +46,7 @@
|
|||
"All correct"
|
||||
"Wszystko OK"
|
||||
|
||||
#MSG_WIZARD_DONE c=20 r=8
|
||||
#MSG_WIZARD_DONE c=20 r=3
|
||||
"All is done. Happy printing!"
|
||||
"Gotowe. Udanego drukowania!"
|
||||
|
||||
|
|
@ -138,10 +146,6 @@
|
|||
"Calibrate Z"
|
||||
"Kalibruj Z"
|
||||
|
||||
#MSG_CALIBRATE_PINDA c=17
|
||||
"Calibrate"
|
||||
"Kalibruj"
|
||||
|
||||
#MSG_CANCEL2 c=10
|
||||
">Cancel"
|
||||
">Anuluj"
|
||||
|
|
@ -162,7 +166,7 @@
|
|||
"Calibration done"
|
||||
"Kalibracja OK"
|
||||
|
||||
#MSG_MENU_CALIBRATION c=18
|
||||
#MSG_CALIBRATION c=18
|
||||
"Calibration"
|
||||
"Kalibracja"
|
||||
|
||||
|
|
@ -190,8 +194,8 @@
|
|||
"Crash det."
|
||||
"Wykr.zderzen"
|
||||
|
||||
#MSG_CHOOSE_FIL_1ST_LAYERCAL c=20 r=7
|
||||
"Choose a filament for the First Layer Calibration and select it in the on-screen menu."
|
||||
#MSG_SELECT_FIL_1ST_LAYERCAL c=20 r=7
|
||||
"Select a filament for the First Layer Calibration and select it in the on-screen menu."
|
||||
"Wybierz filament do Kalibracji Pierwszej Warstwy i potwierdz w menu ekranowym."
|
||||
|
||||
#MSG_CRASH_DETECTED c=20
|
||||
|
|
@ -206,10 +210,6 @@
|
|||
"Crash"
|
||||
"Zderzen"
|
||||
|
||||
#MSG_CURRENT c=19
|
||||
"Current"
|
||||
"Aktualne"
|
||||
|
||||
#MSG_DATE c=17
|
||||
"Date:"
|
||||
"Data:"
|
||||
|
|
@ -226,7 +226,7 @@
|
|||
"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."
|
||||
"Odleglosc dyszy od powierzchni druku nie jest skalibrowana. Postepuj zgodnie z instrukcja: rozdzial Wprowadzenie - Kalibracja pierwszej warstwy."
|
||||
|
||||
#MSG_FS_CONTINUE c=5
|
||||
#MSG_CONTINUE_SHORT c=5
|
||||
"Cont."
|
||||
"Kont."
|
||||
|
||||
|
|
@ -238,7 +238,7 @@
|
|||
"E-correct:"
|
||||
"Korekcja-E:"
|
||||
|
||||
#MSG_EJECT_FILAMENT c=16
|
||||
#MSG_EJECT_FILAMENT c=17
|
||||
"Eject filament"
|
||||
"Wysun filament"
|
||||
|
||||
|
|
@ -258,11 +258,7 @@
|
|||
"Endstops"
|
||||
"Krancowki"
|
||||
|
||||
#MSG_STACK_ERROR c=20 r=4
|
||||
"Error - static memory has been overwritten"
|
||||
"Blad - pamiec statyczna zostala nadpisana"
|
||||
|
||||
#MSG_CUT_FILAMENT c=16
|
||||
#MSG_CUT_FILAMENT c=17
|
||||
"Cut filament"
|
||||
"Ciecie filamentu"
|
||||
|
||||
|
|
@ -286,7 +282,7 @@
|
|||
"ERROR:"
|
||||
"BLAD:"
|
||||
|
||||
#MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
|
||||
#MSG_EXTRUDER_FAN_SPEED c=16
|
||||
"Extruder fan:"
|
||||
"WentHotend:"
|
||||
|
||||
|
|
@ -338,7 +334,7 @@
|
|||
"Filament not loaded"
|
||||
"Fil. nie zaladowany"
|
||||
|
||||
#MSG_FILAMENT_SENSOR c=20
|
||||
#MSG_SELFTEST_FILAMENT_SENSOR c=17
|
||||
"Filament sensor"
|
||||
"Czujnik filamentu"
|
||||
|
||||
|
|
@ -378,13 +374,13 @@
|
|||
"Flow"
|
||||
"Przeplyw"
|
||||
|
||||
#MSG_SELFTEST_COOLING_FAN c=20
|
||||
#MSG_SELFTEST_PART_FAN c=20
|
||||
"Front print fan?"
|
||||
"Przedni went. druku?"
|
||||
|
||||
#MSG_BED_CORRECTION_FRONT c=14
|
||||
"Front side[um]"
|
||||
"Przod [um]"
|
||||
"Front side[\xe4m]"
|
||||
"Przod [\xe4m]"
|
||||
|
||||
#MSG_SELFTEST_FANS c=20
|
||||
"Front/left fans"
|
||||
|
|
@ -450,14 +446,10 @@
|
|||
"Checking Z axis"
|
||||
"Kontrola osi Z"
|
||||
|
||||
#MSG_CHOOSE_EXTRUDER c=20
|
||||
"Choose extruder:"
|
||||
#MSG_SELECT_EXTRUDER c=20
|
||||
"Select extruder:"
|
||||
"Wybierz ekstruder:"
|
||||
|
||||
#MSG_CHOOSE_FILAMENT c=20
|
||||
"Choose filament:"
|
||||
"Wybierz filament:"
|
||||
|
||||
#MSG_FILAMENT c=17
|
||||
"Filament"
|
||||
"\x00"
|
||||
|
|
@ -470,7 +462,7 @@
|
|||
"I will run z calibration now."
|
||||
"Przeprowadze kalibracje Z."
|
||||
|
||||
#MSG_WATCH c=18
|
||||
#MSG_INFO_SCREEN c=18
|
||||
"Info screen"
|
||||
"Ekran informacyjny"
|
||||
|
||||
|
|
@ -511,8 +503,8 @@
|
|||
"Lewa"
|
||||
|
||||
#MSG_BED_CORRECTION_LEFT c=14
|
||||
"Left side [um]"
|
||||
"Lewo [um]"
|
||||
"Left side [\xe4m]"
|
||||
"Lewo [\xe4m]"
|
||||
|
||||
#MSG_LIN_CORRECTION c=18
|
||||
"Lin. correction"
|
||||
|
|
@ -612,7 +604,7 @@
|
|||
|
||||
#MSG_NORMAL c=7
|
||||
"Normal"
|
||||
"Normal"
|
||||
"\x00"
|
||||
|
||||
#MSG_SILENT c=7
|
||||
"Silent"
|
||||
|
|
@ -698,7 +690,7 @@
|
|||
"Now I will preheat nozzle for PLA."
|
||||
"Nagrzewam dysze dla PLA."
|
||||
|
||||
#MSG_NOZZLE c=12
|
||||
#MSG_NOZZLE c=10
|
||||
"Nozzle"
|
||||
"Dysza"
|
||||
|
||||
|
|
@ -710,10 +702,6 @@
|
|||
"Now remove the test print from steel sheet."
|
||||
"Teraz zdejmij wydruk testowy ze stolu."
|
||||
|
||||
#MSG_NOZZLE_FAN c=10
|
||||
"Nozzle FAN"
|
||||
"WentHotend"
|
||||
|
||||
#MSG_PAUSE_PRINT c=18
|
||||
"Pause print"
|
||||
"Wstrzym. wydruku"
|
||||
|
|
@ -814,7 +802,7 @@
|
|||
"Press the knob to preheat nozzle and continue."
|
||||
"Wcisnij pokretlo aby rozgrzac dysze i kontynuowac."
|
||||
|
||||
#MSG_FS_PAUSE c=5
|
||||
#MSG_PAUSE c=5
|
||||
"Pause"
|
||||
"Pauza"
|
||||
|
||||
|
|
@ -834,7 +822,7 @@
|
|||
"Preheating to unload"
|
||||
"Nagrzew. do rozlad."
|
||||
|
||||
#MSG_SELFTEST_PRINT_FAN_SPEED c=18
|
||||
#MSG_PRINT_FAN_SPEED c=16
|
||||
"Print fan:"
|
||||
"WentWydruk:"
|
||||
|
||||
|
|
@ -858,10 +846,6 @@
|
|||
"Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
|
||||
"Drukarka nie byla jeszcze kalibrowana. Kieruj sie Samouczkiem: rozdzial Pierwsze Kroki, sekcja Konfiguracja przed drukowaniem."
|
||||
|
||||
#MSG_PRINT_FAN c=10
|
||||
"Print FAN"
|
||||
"WentWydruk"
|
||||
|
||||
#MSG_WIZARD_LOAD_FILAMENT c=20 r=6
|
||||
"Please insert filament into the extruder, then press the knob to load it."
|
||||
"Wsun filament do ekstrudera i nacisnij pokretlo, aby go zaladowac."
|
||||
|
|
@ -875,8 +859,8 @@
|
|||
"Najpierw zaladuj filament."
|
||||
|
||||
#MSG_BED_CORRECTION_REAR c=14
|
||||
"Rear side [um]"
|
||||
"Tyl [um]"
|
||||
"Rear side [\xe4m]"
|
||||
"Tyl [\xe4m]"
|
||||
|
||||
#MSG_UNLOAD_FILAMENT_REPEAT c=20 r=4
|
||||
"Please unload the filament first, then repeat this action."
|
||||
|
|
@ -911,8 +895,8 @@
|
|||
"Wznawianie druku"
|
||||
|
||||
#MSG_BED_CORRECTION_RIGHT c=14
|
||||
"Right side[um]"
|
||||
"Prawo [um]"
|
||||
"Right side[\xe4m]"
|
||||
"Prawo [\xe4m]"
|
||||
|
||||
#MSG_RPI_PORT c=13
|
||||
"RPi port"
|
||||
|
|
@ -1066,25 +1050,21 @@
|
|||
"Select filament:"
|
||||
"Wybierz filament:"
|
||||
|
||||
#MSG_TEMP_CALIBRATION c=14
|
||||
"Temp. cal."
|
||||
"Kalib. temp."
|
||||
#MSG_PINDA_CALIBRATION c=13
|
||||
"PINDA cal."
|
||||
"Kalib. PINDA"
|
||||
|
||||
#MSG_SELECT_TEMP_MATCHES_MATERIAL c=20 r=4
|
||||
"Select temperature which matches your material."
|
||||
"Wybierz temperature, ktora odpowiada Twojemu filamentowi."
|
||||
|
||||
#MSG_CALIBRATION_PINDA_MENU c=17
|
||||
"Temp. calibration"
|
||||
"Kalibracja temp."
|
||||
|
||||
#MSG_TEMP_CAL_FAILED c=20 r=8
|
||||
"Temperature calibration failed"
|
||||
#MSG_PINDA_CAL_FAILED c=20 r=4
|
||||
"PINDA calibration failed"
|
||||
"Kalibracja temperaturowa nieudana"
|
||||
|
||||
#MSG_TEMP_CALIBRATION_DONE c=20 r=12
|
||||
"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
|
||||
"Kalibracja temperaturowa zakonczona i wlaczona. Moze byc wylaczona z menu Ustawienia -> Kalibracja temp."
|
||||
#MSG_PINDA_CALIBRATION_DONE c=20 r=8
|
||||
"PINDA calibration is finished and active. It can be disabled in menu Settings->PINDA cal."
|
||||
"Kalibracja PINDA zakonczona i wlaczona. Moze byc wylaczona z menu Ustawienia -> Kalib. PINDA"
|
||||
|
||||
#MSG_FS_VERIFIED c=20 r=3
|
||||
"Sensor verified, remove the filament now."
|
||||
|
|
@ -1126,7 +1106,7 @@
|
|||
"to unload filament"
|
||||
"aby rozlad. filament"
|
||||
|
||||
#MSG_UNLOAD_FILAMENT c=16
|
||||
#MSG_UNLOAD_FILAMENT c=18
|
||||
"Unload filament"
|
||||
"Rozladowanie fil"
|
||||
|
||||
|
|
@ -1138,10 +1118,6 @@
|
|||
"Total"
|
||||
"Suma"
|
||||
|
||||
#MSG_USED c=19
|
||||
"Used during print"
|
||||
"Uzyte podczas druku"
|
||||
|
||||
#MSG_MENU_VOLTAGES c=15
|
||||
"Voltages"
|
||||
"Napiecia"
|
||||
|
|
@ -1194,7 +1170,7 @@
|
|||
"XYZ calibration failed. Please consult the manual."
|
||||
"Kalibracja XYZ nieudana. Sprawdz przyczyny i rozwiazania w instrukcji."
|
||||
|
||||
#MSG_YES c=3
|
||||
#MSG_YES c=4
|
||||
"Yes"
|
||||
"Tak"
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -1,5 +1,7 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Version 1.0.1 Build 12
|
||||
#
|
||||
# progmem.sh - multi-language support script
|
||||
# Examine content of progmem sections (default is progmem1).
|
||||
#
|
||||
|
|
@ -16,14 +18,22 @@
|
|||
# $PROGMEM.var - variables - strings
|
||||
# $PROGMEM.txt - text data only (not used)
|
||||
#
|
||||
#############################################################################
|
||||
# Change log:
|
||||
# 31 May 2018, XPila, Initial
|
||||
# 9 June 2020, 3d-gussner, Added version and Change log
|
||||
# 9 June 2020, 3d-gussner, colored output
|
||||
# 2 Apr. 2021, 3d-gussner, Use `git rev-list --count HEAD progmem.sh`
|
||||
# to get Build Nr
|
||||
#############################################################################
|
||||
#
|
||||
# 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
|
||||
if [ -z "$OUTDIR" ]; then echo "$(tput setaf 1)variable OUTDIR not set!$(tput sgr0)" >&2; exit 1; fi
|
||||
if [ -z "$OBJDIR" ]; then echo "$(tput setaf 1)variable OBJDIR not set!$(tput sgr0)" >&2; exit 1; fi
|
||||
if [ -z "$INOELF" ]; then echo "$(tput setaf 1)variable INOELF not set!$(tput sgr0)" >&2; exit 1; fi
|
||||
if [ -z "$OBJDUMP" ]; then echo "$(tput setaf 1)variable OBJDUMP not set!$(tput sgr0)" >&2; exit 1; fi
|
||||
if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo "$(tput setaf 1)Config NG!$(tput sgr0)" >&2; exit 1; fi
|
||||
#
|
||||
# Program memory used
|
||||
PROGMEM=progmem$1
|
||||
|
|
@ -39,11 +49,11 @@ if [ -z "$1" ]; then PROGMEM=progmem1; fi
|
|||
# 6. perform character check and conversion (output to $PROGMEM.var and $PROGMEM.txt)
|
||||
#
|
||||
|
||||
echo "progmem.sh started" >&2
|
||||
echo "$(tput setaf 2)progmem.sh started$(tput sgr0)" >&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
|
||||
if [ ! -e $OUTDIR ]; then echo "progmem.sh - file $(tput setaf 2)"$INOELF"$(tput sgr 0) not found!" >&2; exit 1; fi
|
||||
|
||||
# (1)
|
||||
echo " progmem.sh (1) - removing output files" >&2
|
||||
|
|
@ -105,12 +115,15 @@ cat $PROGMEM.chr | \
|
|||
sed 's/\\x01/\\\\\\x01/g;' | \
|
||||
sed 's/\\xf8/\\\\\\xf8/g;' | \
|
||||
sed 's/\\x0a/\\\\\\x0a/g;' | \
|
||||
sed 's/\\x04/\\\\\\x04/g;' | \
|
||||
sed 's/\\xe4/\\\\\\xe4/g;' | \
|
||||
sed 's/\\n/\\\\\\0a/g;' | \
|
||||
sed 's/\\x00$/\n/;s/^/\"/;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
|
||||
echo "$(tput setaf 2)progmem.sh finished$(tput sgr0)" >&2
|
||||
|
||||
exit 0
|
||||
exit 0
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# Version 1.0.1 Build 7
|
||||
#
|
||||
# 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)
|
||||
#
|
||||
|
|
@ -19,11 +21,19 @@
|
|||
# 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
|
||||
#
|
||||
#############################################################################
|
||||
# Change log:
|
||||
# 30 May 2018, XPila, Initial
|
||||
# 9 June 2020, 3d-gussner, Added version and Change log
|
||||
# 9 June 2020, 3d-gussner, colored output
|
||||
# 2 Apr. 2021, 3d-gussner, Use `git rev-list --count HEAD textaddr.sh`
|
||||
# to get Build Nr
|
||||
#############################################################################
|
||||
|
||||
echo "textaddr.sh started" >&2
|
||||
echo "$(tput setaf 2)textaddr.sh started$(tput sgr0)" >&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
|
||||
if [ ! -e progmem1.var ]; then echo "$(tput setaf 1)textaddr.sh - file progmem1.var not found!$(tput sgr0)" >&2; exit 1; fi
|
||||
if [ ! -e lang_en.txt ]; then echo "$(tput setaf 1)textaddr.sh - file lang_en.txt not found!$(tput sgr0)" >&2; exit 1; fi
|
||||
addr=''
|
||||
text=''
|
||||
(cat progmem1.var | sed -E "s/^([^ ]*) ([^ ]*) (.*)/\1 \"\3\"/";\
|
||||
|
|
@ -63,6 +73,6 @@ text=''
|
|||
fi
|
||||
done > textaddr.txt
|
||||
|
||||
echo "textaddr.sh finished" >&2
|
||||
echo "$(tput setaf 2)textaddr.sh finished$(tput sgr0)" >&2
|
||||
|
||||
exit 0
|
||||
exit 0
|
||||
|
|
|
|||
|
|
@ -1,251 +1,251 @@
|
|||
# Translations
|
||||
|
||||
## Workflow
|
||||
|
||||
- Build firmware
|
||||
- using `build.sh`
|
||||
- using `PF-build.sh` with a parameter `-c 1` to keep lang build files after compiling
|
||||
- change to `lang` folder
|
||||
- check if lang scripts being able to run with `config.sh`
|
||||
- if you get `Arduino main folder: NG` message change in `config.sh` `export ARDUINO=C:/arduino-1.8.5` to `export ARDUINO=<Path to your Arduino IDE folder>`
|
||||
-example: `export ARDUINO=D:/Github/Prusa-Firmware/PF-build-env-1.0.6/windows-64`
|
||||
- run `lang-build.sh en` to create english `lang_en.tmp`, `lang_en.dat` and `lang_en.bin` files
|
||||
- change in `fw-build.sh` `IGNORE_MISSING_TEXT=1` to `IGNORE_MISSING_TEXT=0` so it stops with error and generates `not_used<variant>.txt` and `not_tran<variant>.txt`
|
||||
- run modified `fw-build.sh`
|
||||
- `not_tran<variant>.txt` should be reviewed and added as these are potential missing translations
|
||||
- copy `not_tran<variant>.txt` as `lang_add.txt`
|
||||
- check if there are things you don't want to translate or must be modifed
|
||||
- als check that the strings do not start with `spaces` as the scripts doesn't handle these well at this moment.
|
||||
- run `lang-add.sh lang_add.txt` to add the missing translations to `lang_en.txt` and `lang_en_??.txt`
|
||||
- `not_used<variant>.txt` should only contain messages that aren't used in this variant like MK2.5/S vs MK3/S
|
||||
- run `fw-clean.sh` to cleanup firmware related files
|
||||
- delete `not_used<variant>.txt` and `not_tran<variant>.txt`
|
||||
- run `lang-clean.sh` to cleanup language related files
|
||||
- run `lang-export.sh all` to create PO files for translation these are stored in `/lang/po` folder
|
||||
- Send them to translators and reviewers or
|
||||
- copy these to `/lang/po/new` and
|
||||
- translate these with POEdit the newly added messages
|
||||
- easiest way is to choose `Validate`in POEdit as it shows you `errors` and the `missing transalations` / most likely the newly added at the top.
|
||||
- The new translated files are expected in `/lang/po/new` folder so store the received files these
|
||||
- run `lang-import.sh <language code (iso639-1)>` for each newly translated language
|
||||
- script improvement to import "all" and other things would be great.
|
||||
- Double check if something is missing or faulty
|
||||
- run `PF-build.sh -v all -n 1 -c 1` to compile for all variants files
|
||||
- check if there are still some messages in `not_tran<variant>.txt` that need attention
|
||||
- After approval
|
||||
- run `fw-clean.sh` to cleanup firmware related files
|
||||
- run `lang-clean.sh` to cleanup language related files
|
||||
- change in `fw-build.sh` back to `IGNORE_MISSING_TEXT=1`
|
||||
- build your firmware with `build.sh`, `PF-build.sh` or how you normally do it.
|
||||
- Check/Test firmware on printer
|
||||
|
||||
## Code / usage
|
||||
There are 2 modes of operation. If `LANG_MODE==0`, only one language is being used (the default compilation approach from plain Arduino IDE).
|
||||
The reset of this explanation is devoted to `LANG_MODE==1`:
|
||||
|
||||
`language.h`:
|
||||
```C++
|
||||
// section .loc_sec (originaly .progmem0) will be used for localized translated strings
|
||||
#define PROGMEM_I2 __attribute__((section(".loc_sec")))
|
||||
// section .loc_pri (originaly .progmem1) will be used for localized strings in english
|
||||
#define PROGMEM_I1 __attribute__((section(".loc_pri")))
|
||||
// section .noloc (originaly progmem2) will be used for not localized strings in english
|
||||
#define PROGMEM_N1 __attribute__((section(".noloc")))
|
||||
#define _I(s) (__extension__({static const char __c[] PROGMEM_I1 = "\xff\xff" s; &__c[0];}))
|
||||
#define ISTR(s) "\xff\xff" s
|
||||
#define _i(s) lang_get_translation(_I(s))
|
||||
#define _T(s) lang_get_translation(s)
|
||||
```
|
||||
That explains the macros:
|
||||
- `_i` expands into `lang_get_translation((__extension__({static const char __c[] PROGMEM_I1 = "\xff\xff" s; &__c[0];})))` . Note the two 0xff's in the beginning of the string. `_i` allows for declaring a string directly inplace of C++ code, no string table is used. The downside of this approach is obvious - the compiler is not able/willing to merge duplicit strings into one.
|
||||
- `_T` expands into `lang_get_translation(s)` without the two 0xff's at the beginning. Must be used in conjunction with MSG tables in `messages.h`. Allows to declare a string only once and use many times.
|
||||
- `_N` means not-translated. These strings reside in a different segment of memory.
|
||||
|
||||
The two 0xff's are somehow magically replaced by real string ID's where the translations are available (still don't know where).
|
||||
```C++
|
||||
const char* lang_get_translation(const char* s){
|
||||
if (lang_selected == 0) return s + 2; //primary language selected, return orig. str.
|
||||
if (lang_table == 0) return s + 2; //sec. lang table not found, return orig. str.
|
||||
uint16_t ui = pgm_read_word(((uint16_t*)s)); //read string id
|
||||
if (ui == 0xffff) return s + 2; //translation not found, return orig. str.
|
||||
ui = pgm_read_word(((uint16_t*)(((char*)lang_table + 16 + ui*2)))); //read relative offset
|
||||
if (pgm_read_byte(((uint8_t*)((char*)lang_table + ui))) == 0) //read first character
|
||||
return s + 2;//zero length string == not translated, return orig. str.
|
||||
return (const char*)((char*)lang_table + ui); //return calculated pointer
|
||||
}
|
||||
```
|
||||
|
||||
## Files
|
||||
|
||||
### `lang_en.txt`
|
||||
```
|
||||
#MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
|
||||
"Crash detection can\x0abe turned on only in\x0aNormal mode"
|
||||
```
|
||||
|
||||
### `lang_en_*.txt`
|
||||
```
|
||||
#MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
|
||||
"Crash detection can\x0abe turned on only in\x0aNormal mode"
|
||||
"Crash detekce muze\x0abyt zapnuta pouze v\x0aNormal modu"
|
||||
```
|
||||
1. a comment - usually a MSG define with number of characters (c) and rows (r)
|
||||
2. English text
|
||||
3. translated text
|
||||
|
||||
### `not_tran.txt`
|
||||
A simple list of strings that are not translated yet.
|
||||
|
||||
### `not_used.txt`
|
||||
A list os strings not currently used in this variant of the firmware or are obsolete.
|
||||
Example: There are MK2.5 specific messages that aren't used when you compile a MK3 variant and vice versa. So be carefull and double check the code if this message is obsolete or just not used due to the chosen variant.
|
||||
|
||||
## Scripts
|
||||
|
||||
### `config.sh`
|
||||
- Checks setup and sets auxiliary env vars used in many other scripts.
|
||||
- Looks for env var `ARDUINO`. If not found/empty, a default `C:/arduino-1.8.5` is used.
|
||||
- Sets env var `CONFIG_OK=1` when all good, otherwise sets `CONFIG_OK=0`
|
||||
|
||||
### `fw-build.sh`
|
||||
Joins firmware HEX and language binaries into one file.
|
||||
|
||||
### `fw-clean.sh`
|
||||
|
||||
### `lang-add.sh`
|
||||
Adds new messages into the dictionary regardless of whether there have been any older versions.
|
||||
|
||||
### `lang-build.sh`
|
||||
Generates lang_xx.bin (language binary files) for the whole firmware build.
|
||||
|
||||
Arguments:
|
||||
- `$1` : language code (`en`, `cz`, `de`, `es`, `fr`, `it`, `pl`) or `all`
|
||||
- empty/no arguments defaults to `all`
|
||||
|
||||
Input: `lang_en.txt` or `lang_en_xx.txt`
|
||||
|
||||
Output: `lang_xx.bin`
|
||||
|
||||
Temporary files: `lang_xx.tmp` and `lang_xx.dat`
|
||||
|
||||
Description of the process:
|
||||
The script first runs `lang-check.py $1` and removes empty lines and comments (and non-translated texts) into `lang_$1.tmp`.
|
||||
The tmp file now contains all translated texts (some of them empty, i.e. "").
|
||||
The tmp file is then transformed into `lang_$1.dat`, which is a simple dump of all texts together, each terminated with a `\x00`.
|
||||
Format of the `bin` file:
|
||||
- 00-01: `A5 5A`
|
||||
- 02-03: `B4 4B`
|
||||
- 04-05: 2B size
|
||||
- 06-07: 2B number of strings
|
||||
- 08-09: 2B checksum
|
||||
- 0A-0B: 2B lang code hex data: basically `en` converted into `ne`, i.e. characters swapped. Only `cz` is changed into `sc` (old `cs` ISO code).
|
||||
- 0C-0D: 2B signature low
|
||||
- 0E-0F: 2B signature high
|
||||
- 10-(10 + 2*number of strings): table of string offsets from the beginning of this file
|
||||
- after the table there are the strings themselves, each terminated with `\x00`
|
||||
|
||||
The signature is composed of 2B number of strings and 2B checksum in lang_en.bin. Signature in lang_en.bin is zero.
|
||||
|
||||
### `lang-check.sh` and `lang-check.py`
|
||||
Both do the same, only lang-check.py is newer, i.e. lang-check.sh is not used anymore.
|
||||
lang-check.py makes a binary comparison between what's in the dictionary and what's in the binary.
|
||||
|
||||
### `lang-clean.sh`
|
||||
Removes all language output files from lang folder. That means deleting:
|
||||
- if [ "$1" = "en" ]; then
|
||||
rm_if_exists lang_$1.tmp
|
||||
else
|
||||
rm_if_exists lang_$1.tmp
|
||||
rm_if_exists lang_en_$1.tmp
|
||||
rm_if_exists lang_en_$1.dif
|
||||
rm_if_exists lang_$1.ofs
|
||||
rm_if_exists lang_$1.txt
|
||||
fi
|
||||
rm_if_exists lang_$1_check.dif
|
||||
rm_if_exists lang_$1.bin
|
||||
rm_if_exists lang_$1.dat
|
||||
rm_if_exists lang_$1_1.tmp
|
||||
rm_if_exists lang_$1_2.tmp
|
||||
|
||||
### `lang-export.sh`
|
||||
Exports PO (gettext) for external translators.
|
||||
|
||||
### `lang-import.sh`
|
||||
Import from PO.
|
||||
|
||||
Arguments:
|
||||
- `$1` : language code (`en`, `cz`, `de`, `es`, `fr`, `it`, `pl`)
|
||||
- empty/no arguments quits the script
|
||||
|
||||
Input files: `<language code>.po` files like `de.po`, `es.po`, etc.
|
||||
|
||||
Input folder: ´/lang/po/new´
|
||||
|
||||
Output files:
|
||||
|
||||
Output foler: ´/lang/po/new´
|
||||
|
||||
Needed improments to scrpit:
|
||||
- add `all` argument
|
||||
- update `replace in <language> translations` to all known special characters the LCD display with Japanese ROM cannot display
|
||||
- move `lang_en_<language code>.txt` to folder `/lang`
|
||||
- cleanup `<language code>_filtered.po`, `<language code>_new.po` and `nonasci.txt`
|
||||
|
||||
### `progmem.sh`
|
||||
|
||||
Examine content of progmem sections (default is progmem1).
|
||||
|
||||
Input:
|
||||
- $OUTDIR/Firmware.ino.elf
|
||||
- $OUTDIR/sketch/*.o (all object files)
|
||||
|
||||
Outputs:
|
||||
- text.sym - formated symbol listing of section '.text'
|
||||
- $PROGMEM.sym - formated symbol listing of section '.progmemX'
|
||||
- $PROGMEM.lss - disassembly listing file
|
||||
- $PROGMEM.hex - variables - hex
|
||||
- $PROGMEM.chr - variables - char escape
|
||||
- $PROGMEM.var - variables - strings
|
||||
- $PROGMEM.txt - text data only (not used)
|
||||
|
||||
Description of process:
|
||||
- check input files
|
||||
- remove output files
|
||||
- list symbol table of section '.text' from output elf file to text.sym (sorted by address)
|
||||
- calculate start and stop address of section '.$PROGMEM'
|
||||
- dump $PROGMEM data in hex format, cut disassembly (keep hex data only) into $PROGMEM.lss
|
||||
- convert $PROGMEM.lss to $PROGMEM.hex:
|
||||
- replace empty lines with '|' (variables separated by empty lines)
|
||||
- remove address from multiline variables (keep address at first variable line only)
|
||||
- remove '<' and '>:', remove whitespace at end of lines
|
||||
- remove line-endings, replace separator with '\n' (join hex data lines - each line will contain single variable)
|
||||
- convert $PROGMEM.hex to $PROGMEM.chr (prepare string data for character check and conversion)
|
||||
- replace first space with tab
|
||||
- replace second and third space with tab and space
|
||||
- replace all remaining spaces with '\x'
|
||||
- replace all tabs with spaces
|
||||
- convert $PROGMEM.chr to $PROGMEM.var (convert data to text) - a set of special characters is escaped here including `\x0a`
|
||||
|
||||
|
||||
### `textaddr.sh`
|
||||
|
||||
Compiles `progmem1.var` and `lang_en.txt` files to `textaddr.txt` file (mapping of progmem addreses to text idenifiers).
|
||||
|
||||
Description of process:
|
||||
- check if input files exists
|
||||
- create sorted list of strings from progmem1.var and lang_en.txt
|
||||
- lines from progmem1.var will contain addres (8 chars) and english text
|
||||
- lines from lang_en.txt will contain linenumber and english text
|
||||
- after sort this will generate pairs of lines (line from progmem1 first)
|
||||
- result of sort is compiled with simple script and stored into file textaddr.txt
|
||||
|
||||
Input:
|
||||
- progmem1.var
|
||||
- lang_en.txt
|
||||
|
||||
Output:
|
||||
- textaddr.txt
|
||||
|
||||
|
||||
|
||||
update_lang.sh
|
||||
# Translations
|
||||
|
||||
## Workflow
|
||||
|
||||
- Build firmware
|
||||
- using `build.sh`
|
||||
- using `PF-build.sh` with a parameter `-c 1` to keep lang build files after compiling
|
||||
- change to `lang` folder
|
||||
- check if lang scripts being able to run with `config.sh`
|
||||
- if you get `Arduino main folder: NG` message change in `config.sh` `export ARDUINO=C:/arduino-1.8.5` to `export ARDUINO=<Path to your Arduino IDE folder>`
|
||||
-example: `export ARDUINO=D:/Github/Prusa-Firmware/PF-build-env-1.0.6/windows-64`
|
||||
- run `lang-build.sh en` to create english `lang_en.tmp`, `lang_en.dat` and `lang_en.bin` files
|
||||
- change in `fw-build.sh` `IGNORE_MISSING_TEXT=1` to `IGNORE_MISSING_TEXT=0` so it stops with error and generates `not_used<variant>.txt` and `not_tran<variant>.txt`
|
||||
- run modified `fw-build.sh`
|
||||
- `not_tran<variant>.txt` should be reviewed and added as these are potential missing translations
|
||||
- copy `not_tran<variant>.txt` as `lang_add.txt`
|
||||
- check if there are things you don't want to translate or must be modified
|
||||
- als check that the strings do not start with `spaces` as the scripts doesn't handle these well at this moment.
|
||||
- run `lang-add.sh lang_add.txt` to add the missing translations to `lang_en.txt` and `lang_en_??.txt`
|
||||
- `not_used<variant>.txt` should only contain messages that aren't used in this variant like MK2.5/S vs MK3/S
|
||||
- run `fw-clean.sh` to cleanup firmware related files
|
||||
- delete `not_used<variant>.txt` and `not_tran<variant>.txt`
|
||||
- run `lang-clean.sh` to cleanup language related files
|
||||
- run `lang-export.sh all` to create PO files for translation these are stored in `/lang/po` folder
|
||||
- Send them to translators and reviewers or
|
||||
- copy these to `/lang/po/new` and
|
||||
- translate these with POEdit the newly added messages
|
||||
- easiest way is to choose `Validate`in POEdit as it shows you `errors` and the `missing translations` / most likely the newly added at the top.
|
||||
- The new translated files are expected in `/lang/po/new` folder so store the received files these
|
||||
- run `lang-import.sh <language code (iso639-1)>` for each newly translated language
|
||||
- script improvement to import "all" and other things would be great.
|
||||
- Double check if something is missing or faulty
|
||||
- run `PF-build.sh -v all -n 1 -c 1` to compile for all variants files
|
||||
- check if there are still some messages in `not_tran<variant>.txt` that need attention
|
||||
- After approval
|
||||
- run `fw-clean.sh` to cleanup firmware related files
|
||||
- run `lang-clean.sh` to cleanup language related files
|
||||
- change in `fw-build.sh` back to `IGNORE_MISSING_TEXT=1`
|
||||
- build your firmware with `build.sh`, `PF-build.sh` or how you normally do it.
|
||||
- Check/Test firmware on printer
|
||||
|
||||
## Code / usage
|
||||
There are 2 modes of operation. If `LANG_MODE==0`, only one language is being used (the default compilation approach from plain Arduino IDE).
|
||||
The reset of this explanation is devoted to `LANG_MODE==1`:
|
||||
|
||||
`language.h`:
|
||||
```C++
|
||||
// section .loc_sec (originally .progmem0) will be used for localized translated strings
|
||||
#define PROGMEM_I2 __attribute__((section(".loc_sec")))
|
||||
// section .loc_pri (originally .progmem1) will be used for localized strings in english
|
||||
#define PROGMEM_I1 __attribute__((section(".loc_pri")))
|
||||
// section .noloc (originally progmem2) will be used for not localized strings in english
|
||||
#define PROGMEM_N1 __attribute__((section(".noloc")))
|
||||
#define _I(s) (__extension__({static const char __c[] PROGMEM_I1 = "\xff\xff" s; &__c[0];}))
|
||||
#define ISTR(s) "\xff\xff" s
|
||||
#define _i(s) lang_get_translation(_I(s))
|
||||
#define _T(s) lang_get_translation(s)
|
||||
```
|
||||
That explains the macros:
|
||||
- `_i` expands into `lang_get_translation((__extension__({static const char __c[] PROGMEM_I1 = "\xff\xff" s; &__c[0];})))` . Note the two 0xff's in the beginning of the string. `_i` allows for declaring a string directly in-place of C++ code, no string table is used. The downside of this approach is obvious - the compiler is not able/willing to merge duplicate strings into one.
|
||||
- `_T` expands into `lang_get_translation(s)` without the two 0xff's at the beginning. Must be used in conjunction with MSG tables in `messages.h`. Allows to declare a string only once and use many times.
|
||||
- `_N` means not-translated. These strings reside in a different segment of memory.
|
||||
|
||||
The two 0xff's are somehow magically replaced by real string ID's where the translations are available (still don't know where).
|
||||
```C++
|
||||
const char* lang_get_translation(const char* s){
|
||||
if (lang_selected == 0) return s + 2; //primary language selected, return orig. str.
|
||||
if (lang_table == 0) return s + 2; //sec. lang table not found, return orig. str.
|
||||
uint16_t ui = pgm_read_word(((uint16_t*)s)); //read string id
|
||||
if (ui == 0xffff) return s + 2; //translation not found, return orig. str.
|
||||
ui = pgm_read_word(((uint16_t*)(((char*)lang_table + 16 + ui*2)))); //read relative offset
|
||||
if (pgm_read_byte(((uint8_t*)((char*)lang_table + ui))) == 0) //read first character
|
||||
return s + 2;//zero length string == not translated, return orig. str.
|
||||
return (const char*)((char*)lang_table + ui); //return calculated pointer
|
||||
}
|
||||
```
|
||||
|
||||
## Files
|
||||
|
||||
### `lang_en.txt`
|
||||
```
|
||||
#MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
|
||||
"Crash detection can\x0abe turned on only in\x0aNormal mode"
|
||||
```
|
||||
|
||||
### `lang_en_*.txt`
|
||||
```
|
||||
#MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
|
||||
"Crash detection can\x0abe turned on only in\x0aNormal mode"
|
||||
"Crash detekce muze\x0abyt zapnuta pouze v\x0aNormal modu"
|
||||
```
|
||||
1. a comment - usually a MSG define with number of characters (c) and rows (r)
|
||||
2. English text
|
||||
3. translated text
|
||||
|
||||
### `not_tran.txt`
|
||||
A simple list of strings that are not translated yet.
|
||||
|
||||
### `not_used.txt`
|
||||
A list os strings not currently used in this variant of the firmware or are obsolete.
|
||||
Example: There are MK2.5 specific messages that aren't used when you compile a MK3 variant and vice versa. So be careful and double check the code if this message is obsolete or just not used due to the chosen variant.
|
||||
|
||||
## Scripts
|
||||
|
||||
### `config.sh`
|
||||
- Checks setup and sets auxiliary env vars used in many other scripts.
|
||||
- Looks for env var `ARDUINO`. If not found/empty, a default `C:/arduino-1.8.5` is used.
|
||||
- Sets env var `CONFIG_OK=1` when all good, otherwise sets `CONFIG_OK=0`
|
||||
|
||||
### `fw-build.sh`
|
||||
Joins firmware HEX and language binaries into one file.
|
||||
|
||||
### `fw-clean.sh`
|
||||
|
||||
### `lang-add.sh`
|
||||
Adds new messages into the dictionary regardless of whether there have been any older versions.
|
||||
|
||||
### `lang-build.sh`
|
||||
Generates lang_xx.bin (language binary files) for the whole firmware build.
|
||||
|
||||
Arguments:
|
||||
- `$1` : language code (`en`, `cz`, `de`, `es`, `fr`, `it`, `pl`) or `all`
|
||||
- empty/no arguments defaults to `all`
|
||||
|
||||
Input: `lang_en.txt` or `lang_en_xx.txt`
|
||||
|
||||
Output: `lang_xx.bin`
|
||||
|
||||
Temporary files: `lang_xx.tmp` and `lang_xx.dat`
|
||||
|
||||
Description of the process:
|
||||
The script first runs `lang-check.py $1` and removes empty lines and comments (and non-translated texts) into `lang_$1.tmp`.
|
||||
The tmp file now contains all translated texts (some of them empty, i.e. "").
|
||||
The tmp file is then transformed into `lang_$1.dat`, which is a simple dump of all texts together, each terminated with a `\x00`.
|
||||
Format of the `bin` file:
|
||||
- 00-01: `A5 5A`
|
||||
- 02-03: `B4 4B`
|
||||
- 04-05: 2B size
|
||||
- 06-07: 2B number of strings
|
||||
- 08-09: 2B checksum
|
||||
- 0A-0B: 2B lang code hex data: basically `en` converted into `ne`, i.e. characters swapped. Only `cz` is changed into `sc` (old `cs` ISO code).
|
||||
- 0C-0D: 2B signature low
|
||||
- 0E-0F: 2B signature high
|
||||
- 10-(10 + 2*number of strings): table of string offsets from the beginning of this file
|
||||
- after the table there are the strings themselves, each terminated with `\x00`
|
||||
|
||||
The signature is composed of 2B number of strings and 2B checksum in lang_en.bin. Signature in lang_en.bin is zero.
|
||||
|
||||
### `lang-check.sh` and `lang-check.py`
|
||||
Both do the same, only lang-check.py is newer, i.e. lang-check.sh is not used anymore.
|
||||
lang-check.py makes a binary comparison between what's in the dictionary and what's in the binary.
|
||||
|
||||
### `lang-clean.sh`
|
||||
Removes all language output files from lang folder. That means deleting:
|
||||
- if [ "$1" = "en" ]; then
|
||||
rm_if_exists lang_$1.tmp
|
||||
else
|
||||
rm_if_exists lang_$1.tmp
|
||||
rm_if_exists lang_en_$1.tmp
|
||||
rm_if_exists lang_en_$1.dif
|
||||
rm_if_exists lang_$1.ofs
|
||||
rm_if_exists lang_$1.txt
|
||||
fi
|
||||
rm_if_exists lang_$1_check.dif
|
||||
rm_if_exists lang_$1.bin
|
||||
rm_if_exists lang_$1.dat
|
||||
rm_if_exists lang_$1_1.tmp
|
||||
rm_if_exists lang_$1_2.tmp
|
||||
|
||||
### `lang-export.sh`
|
||||
Exports PO (gettext) for external translators.
|
||||
|
||||
### `lang-import.sh`
|
||||
Import from PO.
|
||||
|
||||
Arguments:
|
||||
- `$1` : language code (`en`, `cz`, `de`, `es`, `fr`, `it`, `pl`)
|
||||
- empty/no arguments quits the script
|
||||
|
||||
Input files: `<language code>.po` files like `de.po`, `es.po`, etc.
|
||||
|
||||
Input folder: ´/lang/po/new´
|
||||
|
||||
Output files:
|
||||
|
||||
Output foler: ´/lang/po/new´
|
||||
|
||||
Needed improvements to scripts:
|
||||
- add `all` argument
|
||||
- update `replace in <language> translations` to all known special characters the LCD display with Japanese ROM cannot display
|
||||
- move `lang_en_<language code>.txt` to folder `/lang`
|
||||
- cleanup `<language code>_filtered.po`, `<language code>_new.po` and `nonasci.txt`
|
||||
|
||||
### `progmem.sh`
|
||||
|
||||
Examine content of progmem sections (default is progmem1).
|
||||
|
||||
Input:
|
||||
- $OUTDIR/Firmware.ino.elf
|
||||
- $OUTDIR/sketch/*.o (all object files)
|
||||
|
||||
Outputs:
|
||||
- text.sym - formatted symbol listing of section '.text'
|
||||
- $PROGMEM.sym - formatted symbol listing of section '.progmemX'
|
||||
- $PROGMEM.lss - disassembly listing file
|
||||
- $PROGMEM.hex - variables - hex
|
||||
- $PROGMEM.chr - variables - char escape
|
||||
- $PROGMEM.var - variables - strings
|
||||
- $PROGMEM.txt - text data only (not used)
|
||||
|
||||
Description of process:
|
||||
- check input files
|
||||
- remove output files
|
||||
- list symbol table of section '.text' from output elf file to text.sym (sorted by address)
|
||||
- calculate start and stop address of section '.$PROGMEM'
|
||||
- dump $PROGMEM data in hex format, cut disassembly (keep hex data only) into $PROGMEM.lss
|
||||
- convert $PROGMEM.lss to $PROGMEM.hex:
|
||||
- replace empty lines with '|' (variables separated by empty lines)
|
||||
- remove address from multiline variables (keep address at first variable line only)
|
||||
- remove '<' and '>:', remove whitespace at end of lines
|
||||
- remove line-endings, replace separator with '\n' (join hex data lines - each line will contain single variable)
|
||||
- convert $PROGMEM.hex to $PROGMEM.chr (prepare string data for character check and conversion)
|
||||
- replace first space with tab
|
||||
- replace second and third space with tab and space
|
||||
- replace all remaining spaces with '\x'
|
||||
- replace all tabs with spaces
|
||||
- convert $PROGMEM.chr to $PROGMEM.var (convert data to text) - a set of special characters is escaped here including `\x0a`
|
||||
|
||||
|
||||
### `textaddr.sh`
|
||||
|
||||
Compiles `progmem1.var` and `lang_en.txt` files to `textaddr.txt` file (mapping of progmem addresses to text identifiers).
|
||||
|
||||
Description of process:
|
||||
- check if input files exists
|
||||
- create sorted list of strings from progmem1.var and lang_en.txt
|
||||
- lines from progmem1.var will contain address (8 chars) and english text
|
||||
- lines from lang_en.txt will contain line number and english text
|
||||
- after sort this will generate pairs of lines (line from progmem1 first)
|
||||
- result of sort is compiled with simple script and stored into file textaddr.txt
|
||||
|
||||
Input:
|
||||
- progmem1.var
|
||||
- lang_en.txt
|
||||
|
||||
Output:
|
||||
- textaddr.txt
|
||||
|
||||
|
||||
|
||||
update_lang.sh
|
||||
|
|
|
|||
|
|
@ -1,12 +1,23 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# Version 1.0.1 Build 10
|
||||
#
|
||||
# update_lang.sh - multi-language support script
|
||||
# Update secondary language in binary file.
|
||||
#
|
||||
#############################################################################
|
||||
# Change log:
|
||||
# 17 June 2018, XPila, Initial
|
||||
# 9 June 2020, 3d-gussner, Added version and Change log
|
||||
# 9 June 2020, 3d-gussner, colored output
|
||||
# 2 Apr. 2021, 3d-gussner, Use `git rev-list --count HEAD update_lang.sh`
|
||||
# to get Build Nr
|
||||
#############################################################################
|
||||
#
|
||||
# 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
|
||||
if [ -z "$OBJCOPY" ]; then echo "$(tput setaf 1)variable OBJCOPY not set!$(tput sgr0)" >&2; exit 1; fi
|
||||
if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo "$(tput setaf 1)Config NG!$(tput sgr0)" >&2; exit 1; fi
|
||||
#
|
||||
# Selected language:
|
||||
LNG=$1
|
||||
|
|
@ -17,9 +28,9 @@ finish()
|
|||
{
|
||||
echo
|
||||
if [ "$1" = "0" ]; then
|
||||
echo "update_lang.sh finished with success" >&2
|
||||
echo "$(tput setaf 2)update_lang.sh finished with success$(tput sgr0)" >&2
|
||||
else
|
||||
echo "update_lang.sh finished with errors!" >&2
|
||||
echo "$(tput setaf 1)update_lang.sh finished with errors!$(tput sgr0)" >&2
|
||||
fi
|
||||
case "$-" in
|
||||
*i*) echo "press enter key" >&2; read ;;
|
||||
|
|
@ -27,22 +38,22 @@ finish()
|
|||
exit $1
|
||||
}
|
||||
|
||||
echo "update_lang.sh started" >&2
|
||||
echo " selected language=$LNG" >&2
|
||||
echo "$(tput setaf 2)update_lang.sh started$(tput sgr0)" >&2
|
||||
echo " selected language=$(tput setaf 2)$LNG$(tput sgr0)" >&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_$LNG.bin ]; then echo "NG! file lang_$LNG.bin not found!" >&2; finish 1; fi
|
||||
if [ ! -e firmware.bin ]; then echo "NG! file firmware.bin not found!" >&2; finish 1; fi
|
||||
if [ ! -e text.sym ]; then echo "$(tput setaf 1)NG! file text.sym not found!$(tput sgr0)" >&2; finish 1; fi
|
||||
if [ ! -e lang_$LNG.bin ]; then echo "$(tput setaf 1)NG! file lang_$LNG.bin not found!$(tput sgr0)" >&2; finish 1; fi
|
||||
if [ ! -e firmware.bin ]; then echo "$(tput setaf 1)NG! file firmware.bin not found!$(tput sgr0)" >&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
|
||||
if [ -z "$sec_lang" ]; then echo "$(tput setaf 1)NG!\n symbol _SEC_LANG not found!$(tput sgr0)" >&2; finish 1; fi
|
||||
#find symbol _PRI_LANG_SIGNATURE in section '.text'
|
||||
pri_lang=$(cat text.sym | grep -E "\b_PRI_LANG_SIGNATURE\b")
|
||||
if [ -z "$pri_lang" ]; then echo "NG!\n symbol _PRI_LANG_SIGNATURE not found!" >&2; finish 1; fi
|
||||
if [ -z "$pri_lang" ]; then echo "$(tput setaf 1)NG!\n symbol _PRI_LANG_SIGNATURE not found!$(tput sgr0)" >&2; finish 1; fi
|
||||
echo "OK" >&2
|
||||
|
||||
echo " calculating vars:" >&2
|
||||
|
|
@ -65,7 +76,7 @@ printf " lang_table_size =0x%04x (=%d bytes)\n" $lang_table_size $lang_table_si
|
|||
lang_file_size=$(wc -c lang_$LNG.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
|
||||
if [ $lang_file_size -gt $lang_table_size ]; then echo "$(tput setaf 1)Lanaguage binary file size too big!$(tput sgr0)" >&2; finish 1; fi
|
||||
|
||||
echo "updating 'firmware.bin'..." >&2
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue