From 411b9178914484da48e1cb4182e33c57ea64e5ca Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Mon, 19 Aug 2019 15:06:47 +0200 Subject: [PATCH 01/25] Start of documentation of the translation process --- lang/translations.md | 164 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100644 lang/translations.md diff --git a/lang/translations.md b/lang/translations.md new file mode 100644 index 000000000..79fdbfc54 --- /dev/null +++ b/lang/translations.md @@ -0,0 +1,164 @@ +# Translations + +## Workflow + +- Build firmware using build.sh. That creates necessary files in the `lang` dir. +- add messages that are new: investigate not-tran.txt, copy selected strings into `lang_add.txt` and run lang-add.sh +- export PO files for translation: `lang-export.sh` +- when translators finish their work use `lang-import.sh` + +## 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 the firmware. May be removed from `lang_en_*.txt` files by hand. + +## 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 + +### `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 From 7ad62bb6df3f3fd410a29f73cd24ed58d0ad5d3b Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Mon, 19 Aug 2019 15:43:08 +0200 Subject: [PATCH 02/25] code usage documentation start --- lang/translations.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/lang/translations.md b/lang/translations.md index 79fdbfc54..295bd8042 100644 --- a/lang/translations.md +++ b/lang/translations.md @@ -7,6 +7,40 @@ - export PO files for translation: `lang-export.sh` - when translators finish their work use `lang-import.sh` +## 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++ +#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. +- `_T` expands into `lang_get_translation(s)` without the two 0xff's at the beginning. + +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` From d7057ebb16f4c620a9606749c7fff08b19f7a1d9 Mon Sep 17 00:00:00 2001 From: leptun Date: Mon, 19 Aug 2019 16:57:01 +0300 Subject: [PATCH 03/25] Add description for .loc_sec --- lang/translations.md | 1 + 1 file changed, 1 insertion(+) diff --git a/lang/translations.md b/lang/translations.md index 295bd8042..076f833c3 100644 --- a/lang/translations.md +++ b/lang/translations.md @@ -13,6 +13,7 @@ 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"))) From 05fe5b408c49a826f10881635b5907e80384dce3 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Mon, 19 Aug 2019 16:24:09 +0200 Subject: [PATCH 04/25] _i and _T differences and usage scenarios --- lang/translations.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lang/translations.md b/lang/translations.md index 295bd8042..f0293f1ca 100644 --- a/lang/translations.md +++ b/lang/translations.md @@ -24,8 +24,9 @@ The reset of this explanation is devoted to `LANG_MODE==1`: #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. -- `_T` expands into `lang_get_translation(s)` without the two 0xff's at the beginning. +- `_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++ From 2778e802b23c29b826998f6159782cc9700cd319 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Wed, 21 Aug 2019 01:58:59 +0200 Subject: [PATCH 05/25] Modified few things in the workflow and more --- lang/translations.md | 64 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 58 insertions(+), 6 deletions(-) diff --git a/lang/translations.md b/lang/translations.md index c32b4d8fb..6c787787c 100644 --- a/lang/translations.md +++ b/lang/translations.md @@ -2,10 +2,43 @@ ## Workflow -- Build firmware using build.sh. That creates necessary files in the `lang` dir. -- add messages that are new: investigate not-tran.txt, copy selected strings into `lang_add.txt` and run lang-add.sh -- export PO files for translation: `lang-export.sh` -- when translators finish their work use `lang-import.sh` +- Build firmware + - using `build.sh` + - using `PF-build.sh` with a `break` before `# build languages` +- 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=` + -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.txt` and `not_tran.txt` +- run modified `fw-build.sh` + - `not_tran.txt` should be reviewed and added as these are potential missing translations + - copy `not_tran.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.txt` should only contain mesages that aren't used in this variant like MK2.5 vs MK3 +- run `fw-clean.sh` to cleanup firmware related files +- delete `not_used.txt` and `not_tran.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 ` 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 `lang-build.sh` to to create `lang_en.tmp/.dat/.bin` and `lang_en_??.tmp/.dat/.bin` files + - run `fw-build.sh` and check if there are still some messages in `not_tran.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` + - remove `break` from `PF-build.sh` script if that has been modified + - 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). @@ -65,7 +98,8 @@ const char* lang_get_translation(const char* s){ A simple list of strings that are not translated yet. ### `not_used.txt` -A list os strings not currently used in the firmware. May be removed from `lang_en_*.txt` files by hand. +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 @@ -138,7 +172,25 @@ Removes all language output files from lang folder. That means deleting: Exports PO (gettext) for external translators. ### `lang-import.sh` -Import from PO +Import from PO. + +Arguments: +- `$1` : language code (`en`, `cz`, `de`, `es`, `fr`, `it`, `pl`) +- empty/no arguments quits the script + +Input files: `.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 translations` to all known special characters the LCD display with Japanese ROM cannot display + - move `lang_en_.txt` to folder `/lang` + - cleanup `_filtered.po`, `_new.po` and `nonasci.txt` ### `progmem.sh` From 2d4535af1f78b57cce638dcad618de85048039b2 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Wed, 21 Aug 2019 08:39:48 +0200 Subject: [PATCH 06/25] Added "All" argument and it is default in nothing is chosen The script had to started for each language code translation. Adding the "All" argument and make it as default if nothing is chosen makes the workflow easier. --- lang/lang-import.sh | 62 +++++++++++++++++++++++++++------------------ 1 file changed, 37 insertions(+), 25 deletions(-) diff --git a/lang/lang-import.sh b/lang/lang-import.sh index 6176e053f..b7d4b1572 100755 --- a/lang/lang-import.sh +++ b/lang/lang-import.sh @@ -4,7 +4,19 @@ # for importing translated xx.po LNG=$1 -if [ -z "$LNG" ]; then exit -1; fi +# if no arguments, 'all' is selected (all po and also pot will be generated) +if [ -z "$LNG" ]; then LNG=all; fi + +# 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 + exit 0 +fi # language code (iso639-1) is equal to LNG LNGISO=$LNG @@ -28,43 +40,43 @@ sed -i 's/ \\n/ /g;s/\\n/ /g' $LNG'_filtered.po' #replace in czech translation if [ "$LNG" = "cz" ]; then - #replace '' with 'z' + #replace 'ž' with 'z' sed -i 's/\xc5\xbe/z/g' $LNG'_filtered.po' - #replace '' with 'e' + #replace 'ì' with 'e' sed -i 's/\xc4\x9b/e/g' $LNG'_filtered.po' - #replace '' with 'i' + #replace 'í' with 'i' sed -i 's/\xc3\xad/i/g' $LNG'_filtered.po' - #replace '' with 'r' + #replace 'ø' with 'r' sed -i 's/\xc5\x99/r/g' $LNG'_filtered.po' - #replace '' with 'c' + #replace 'è' with 'c' sed -i 's/\xc4\x8d/c/g' $LNG'_filtered.po' - #replace '' with 'a' + #replace 'á' with 'a' sed -i 's/\xc3\xa1/a/g' $LNG'_filtered.po' - #replace '' with 'e' + #replace 'é' with 'e' sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' fi #replace in german translation if [ "$LNG" = "de" ]; then - #replace '' with 'ae' + #replace 'ä' with 'ae' sed -i 's/\xc3\xa4/ae/g' $LNG'_filtered.po' - #replace '' with 'ue' + #replace 'ü' with 'ue' sed -i 's/\xc3\xbc/ue/g' $LNG'_filtered.po' - #replace '' with 'oe' + #replace 'ö' with 'oe' sed -i 's/\xc3\xb6/oe/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 '?' 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' @@ -74,29 +86,29 @@ fi #replace in french translation if [ "$LNG" = "fr" ]; then - #replace '' with 'e' + #replace 'é' with 'e' sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' - #replace '' with 'E' + #replace 'É' with 'E' 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 'a' (left) + #replace 'á' with 'a' (left) sed -i 's/\xc3\xa0/a/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 From 47e1311d64a855a943fd74001debf4c47e7d50d2 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Wed, 21 Aug 2019 09:30:11 +0200 Subject: [PATCH 07/25] Added few German/French diacritical characters See https://docs.oracle.com/cd/E29584_01/webhelp/mdex_basicDev/src/rbdv_chars_mapping.html --- lang/lang-import.sh | 76 +++++++++++++++++++++++++++------------------ 1 file changed, 46 insertions(+), 30 deletions(-) diff --git a/lang/lang-import.sh b/lang/lang-import.sh index 6176e053f..0b0a634e6 100755 --- a/lang/lang-import.sh +++ b/lang/lang-import.sh @@ -28,43 +28,51 @@ sed -i 's/ \\n/ /g;s/\\n/ /g' $LNG'_filtered.po' #replace in czech translation if [ "$LNG" = "cz" ]; then - #replace '' with 'z' + #replace 'ž' with 'z' sed -i 's/\xc5\xbe/z/g' $LNG'_filtered.po' - #replace '' with 'e' + #replace 'ì' with 'e' sed -i 's/\xc4\x9b/e/g' $LNG'_filtered.po' - #replace '' with 'i' + #replace 'í' with 'i' sed -i 's/\xc3\xad/i/g' $LNG'_filtered.po' - #replace '' with 'r' + #replace 'ø' with 'r' sed -i 's/\xc5\x99/r/g' $LNG'_filtered.po' - #replace '' with 'c' + #replace 'è' with 'c' sed -i 's/\xc4\x8d/c/g' $LNG'_filtered.po' - #replace '' with 'a' + #replace 'á' with 'a' sed -i 's/\xc3\xa1/a/g' $LNG'_filtered.po' - #replace '' with 'e' + #replace 'é' with 'e' sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' fi -#replace in german translation +#replace in german translation https://en.wikipedia.org/wiki/German_orthography if [ "$LNG" = "de" ]; then - #replace '' with 'ae' + #replace 'ä' with 'ae' sed -i 's/\xc3\xa4/ae/g' $LNG'_filtered.po' - #replace '' with 'ue' + #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 'oe' + #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' 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' @@ -72,31 +80,39 @@ if [ "$LNG" = "es" ]; then sed -i 's/\xc3\xb1/n/g' $LNG'_filtered.po' fi -#replace in french translation +#replace in french translation https://en.wikipedia.org/wiki/French_orthography if [ "$LNG" = "fr" ]; then - #replace '' with 'e' - sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' - #replace '' with 'E' - sed -i 's/\xc3\x89/E/g' $LNG'_filtered.po' - #replace '' with 'e' (left) - sed -i 's/\xc3\xa8/e/g' $LNG'_filtered.po' - #replace '' with 'a' (left) + #replace 'á' with 'a' (right) + sed -i 's/\xc3\xa1/a/g' $LNG'_filtered.po' + #replace 'Á' with 'A' (right) + sed -i 's/\xc3\x81/A/g' $LNG'_filtered.po' + #replace 'à' with 'a' (left) sed -i 's/\xc3\xa0/a/g' $LNG'_filtered.po' + #replace 'À' with 'A' (left) + sed -i 's/\xc3\x80/A/g' $LNG'_filtered.po' + #replace 'é' with 'e' (right) + sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' + #replace 'É' with 'E' (right) + sed -i 's/\xc3\x89/E/g' $LNG'_filtered.po' + #replace 'è' with 'e' (left) + sed -i 's/\xc3\xa8/e/g' $LNG'_filtered.po' + #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 From 514b062107b9a22e26e88055444bb7e6081e6c0b Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Wed, 21 Aug 2019 10:28:28 +0200 Subject: [PATCH 08/25] Added `lcd_menu` format description Added some documentation how the LCD menus look like and added max character values for translations. There are more things needed and also the placement in the code is an open task. Depending on the decision if we use `messages.c/h` --- Firmware/ultralcd.cpp | 119 ++++++++++++++++++++++++++++++++---------- 1 file changed, 92 insertions(+), 27 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index de56ea028..e730457d2 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -1826,6 +1826,12 @@ void lcd_menu_extruder_info() // NOT static due to using ins static void lcd_menu_fails_stats_mmu() { +//|01234567890123456789| +//| Main | c=18 +//| Last print | c=18 +//| Total | c=18 +//| | +//---------------------- MENU_BEGIN(); MENU_ITEM_BACK_P(_T(MSG_MAIN)); MENU_ITEM_SUBMENU_P(_i("Last print"), lcd_menu_fails_stats_mmu_print); @@ -1835,12 +1841,12 @@ static void lcd_menu_fails_stats_mmu() static void lcd_menu_fails_stats_mmu_print() { -//01234567890123456789 -//Last print failures -// MMU fails 000 -// MMU load fails 000 -// -////////////////////// +//|01234567890123456789| +//|Last print failures | c=20 +//| MMU fails: 000| c=15 +//| MMU load fails: 000| c=15 +//| | +//---------------------- lcd_timeoutToStatus.stop(); //infinite timeout uint8_t fails = eeprom_read_byte((uint8_t*)EEPROM_MMU_FAIL); uint16_t load_fails = eeprom_read_byte((uint8_t*)EEPROM_MMU_LOAD_FAIL); @@ -1851,12 +1857,12 @@ static void lcd_menu_fails_stats_mmu_print() static void lcd_menu_fails_stats_mmu_total() { -//01234567890123456789 -//Last print failures -// MMU fails 000 -// MMU load fails 000 -// -////////////////////// +//|01234567890123456789| +//|Total failures | c=20 +//| MMU fails: 000| c=15 +//| MMU load fails: 000| c=15 +//| MMU power fails:000| c=15 +//---------------------- mmu_command(MmuCmd::S3); lcd_timeoutToStatus.stop(); //infinite timeout uint8_t fails = eeprom_read_byte((uint8_t*)EEPROM_MMU_FAIL_TOT); @@ -1869,12 +1875,12 @@ static void lcd_menu_fails_stats_mmu_total() #if defined(TMC2130) && defined(FILAMENT_SENSOR) static void lcd_menu_fails_stats_total() { -//01234567890123456789 -//Total failures -// Power failures 000 -// Filam. runouts 000 -// Crash X 000 Y 000 -////////////////////// +//|01234567890123456789| +//|Last print failures | c=20 +//| Power failures: 000| c=14 +//| Filam. runouts: 000| c=14 +//| Crash X:000 Y:000| c=7 for Crash +//---------------------- lcd_timeoutToStatus.stop(); //infinite timeout uint16_t power = eeprom_read_word((uint16_t*)EEPROM_POWER_COUNT_TOT); uint16_t filam = eeprom_read_word((uint16_t*)EEPROM_FERROR_COUNT_TOT); @@ -1887,12 +1893,12 @@ static void lcd_menu_fails_stats_total() static void lcd_menu_fails_stats_print() { -//01234567890123456789 -//Last print failures -// Power failures 000 -// Filam. runouts 000 -// Crash X 000 Y 000 -////////////////////// +//|01234567890123456789| +//|Last print failures | c=20 +//| Power failures: 000| c=14 +//| Filam. runouts: 000| c=14 +//| Crash X:000 Y:000| c=7 for Crash +//---------------------- lcd_timeoutToStatus.stop(); //infinite timeout uint8_t power = eeprom_read_byte((uint8_t*)EEPROM_POWER_COUNT); uint8_t filam = eeprom_read_byte((uint8_t*)EEPROM_FERROR_COUNT); @@ -1912,6 +1918,12 @@ static void lcd_menu_fails_stats_print() */ static void lcd_menu_fails_stats() { +//|01234567890123456789| +//| Main | c=18 +//| Last print | c=18 +//| Total | c=18 +//| | +//---------------------- MENU_BEGIN(); MENU_ITEM_BACK_P(_T(MSG_MAIN)); MENU_ITEM_SUBMENU_P(_i("Last print"), lcd_menu_fails_stats_print); @@ -1937,6 +1949,12 @@ static void lcd_menu_fails_stats() */ static void lcd_menu_fails_stats() { +//|01234567890123456789| +//|Last print failures | c=20 +//| Filam. runouts: 000| c=15 +//|Total failures | c=20 +//| Filam. runouts: 000| c=15 +//---------------------- lcd_timeoutToStatus.stop(); //infinite timeout uint8_t filamentLast = eeprom_read_byte((uint8_t*)EEPROM_FERROR_COUNT); uint16_t filamentTotal = eeprom_read_word((uint16_t*)EEPROM_FERROR_COUNT_TOT); @@ -1947,6 +1965,11 @@ static void lcd_menu_fails_stats() #else static void lcd_menu_fails_stats() { +//|01234567890123456789| +//| Main | c=18 +//| | +//| | +//---------------------- lcd_timeoutToStatus.stop(); //infinite timeout MENU_BEGIN(); MENU_ITEM_BACK_P(_T(MSG_MAIN)); @@ -1964,6 +1987,12 @@ extern char* __malloc_heap_end; static void lcd_menu_debug() { +//|01234567890123456789| +//|RAM statistics | c=20 +//| SP_min: 0000| c=14 +//| heap_start: 0000| c=14 +//| heap_end: 0000| c=14 +//---------------------- #ifdef DEBUG_STACK_MONITOR lcd_home(); lcd_printf_P(PSTR("RAM statistics\n" " SP_min: 0x%04x\n" " heap_start: 0x%04x\n" " heap_end: 0x%04x"), SP_min, __malloc_heap_start, __malloc_heap_end); @@ -1975,6 +2004,12 @@ static void lcd_menu_debug() static void lcd_menu_temperatures() { +//|01234567890123456789| +//| Nozzle: 000°| c=14 +//| Bed: 000°| c=14 +//| Ambient: 000°| c=14 +//| PINDA: 000°| c=14 +//---------------------- lcd_timeoutToStatus.stop(); //infinite timeout lcd_home(); lcd_printf_P(PSTR(" %S: %d%c \n" " %S: %d%c \n"), _i("Nozzle"), (int)current_temperature[0], '\x01', _i("Bed"), (int)current_temperature_bed, '\x01'); @@ -1994,6 +2029,12 @@ static void lcd_menu_temperatures() #define VOLT_DIV_REF 5 static void lcd_menu_voltages() { +//|01234567890123456789| +//| | +//| PWR: 00.0V | c=12 +//| Bed: 00.0V | c=12 +//| | +//---------------------- lcd_timeoutToStatus.stop(); //infinite timeout float volt_pwr = VOLT_DIV_REF * ((float)current_voltage_raw_pwr / (1023 * OVERSAMPLENR)) / VOLT_DIV_FAC; float volt_bed = VOLT_DIV_REF * ((float)current_voltage_raw_bed / (1023 * OVERSAMPLENR)) / VOLT_DIV_FAC; @@ -2006,6 +2047,12 @@ static void lcd_menu_voltages() #ifdef TMC2130 static void lcd_menu_belt_status() { +//|01234567890123456789| +//| Belt status | c=19 +//| X: 000 | c=13 +//| Y: 000 | c=13 +//| | +//---------------------- lcd_home(); lcd_printf_P(PSTR("%S\n" " X %d\n" " Y %d"), _i("Belt status"), eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_X)), eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_Y))); menu_back_if_clicked(); @@ -2827,6 +2874,12 @@ void lcd_menu_statistics() { if (IS_SD_PRINTING) { + //|01234567890123456789| + //|Filament used: | c=19 + //| 0000.00m | + //|Print time: | c=19 + //| 00h : 00m : 00s | + //---------------------- const float _met = ((float)total_filament_used) / (100000.f); const uint32_t _t = (_millis() - starttime) / 1000ul; const int _h = _t / 3600; @@ -2844,6 +2897,12 @@ void lcd_menu_statistics() } else { + //|01234567890123456789| + //|Total filament: | c=19 + //| 0000.00m | + //|Total print time | c=19 + //| 00d : 00h : 00m | + //---------------------- unsigned long _filament = eeprom_read_dword((uint32_t *)EEPROM_FILAMENTUSED); unsigned long _time = eeprom_read_dword((uint32_t *)EEPROM_TOTALTIME); //in minutes uint8_t _hours, _minutes; @@ -2952,10 +3011,10 @@ static void lcd_move_e() static void lcd_menu_xyz_y_min() { //|01234567890123456789| -//|Y distance from min:| +//|Y distance from min | c=19 //|--------------------| -//|Left: N/A | -//|Right: N/A | +//|Left: 00.00mm | c=10 +//|Right: 00.00mm | c=10 //---------------------- float distanceMin[2]; count_xyz_details(distanceMin); @@ -3024,6 +3083,12 @@ static void lcd_menu_xyz_skew() */ static void lcd_menu_xyz_offset() { +//|01234567890123456789| +//|[0;0] point offset | c=20 +//|--------------------| +//|X: 000.00mm| c=10 +//|Y: 000.00mm| c=10 +//---------------------- lcd_set_cursor(0,0); lcd_puts_P(_i("[0;0] point offset"));////MSG_MEASURED_OFFSET lcd_puts_at_P(0, 1, separator); From d3123a74b08f9e078aeca90eb1ec4ae4fe36799c Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Thu, 22 Aug 2019 04:58:16 +0200 Subject: [PATCH 09/25] Updated LCD menu documentation to new form/syntax --- Firmware/ultralcd.cpp | 494 ++++++++++++++++++++++++++---------------- 1 file changed, 312 insertions(+), 182 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index e730457d2..4a1913287 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -869,18 +869,23 @@ void lcdui_print_status_line(void) lcd_print(' '); } +//! @brief Show Status Screen +//! +//! @code{.unparsed} +//! |01234567890123456789| +//! |N 000/000D Z000.0 | +//! |B 000/000D F100% | +//! |USB100% T0 t--:-- | +//! |Status line.........| +//! ---------------------- +//! N - nozzle temp symbol LCD_STR_THERMOMETER +//! D - Degree sysmbol LCD_STR_DEGREE +//! B - bed temp symbol LCD_STR_BEDTEMP +//! F - feedrate symbol LCD_STR_FEEDRATE +//! t - clock symbol LCD_STR_THERMOMETER +//! @endcode void lcdui_print_status_screen(void) { -//|01234567890123456789| -//|N 000/000D Z000.0 | -//|B 000/000D F100% | -//|USB100% T0 t--:-- | -//|Status line.........| -//---------------------- -//N - nozzle temp symbol LCD_STR_THERMOMETER -//B - bed temp symbol LCD_STR_BEDTEMP -//F - feedrate symbol LCD_STR_FEEDRATE -//t - clock symbol LCD_STR_THERMOMETER lcd_set_cursor(0, 0); //line 0 @@ -1767,14 +1772,18 @@ static void lcd_cooldown() } +//! @brief Show Extruder Info +//! +//! @code{.unparsed} +//! |01234567890123456789| +//! |Nozzle FAN: 0000 RPM| FAN c=10 r=1 SPEED c=3 r=1 +//! |Print FAN: 0000 RPM| FAN c=10 r=1 SPEED c=3 r=1 +//! |Fil. Xd:000 Yd:000 | Fil. c=4 r=1 +//! |Int: 000 Shut: 000 | Int: c=4 r=1 Shut: c=4 r=1 +//! ---------------------- +//! @endcode void lcd_menu_extruder_info() // NOT static due to using inside "Marlin_main" module ("manage_inactivity()") { -//|01234567890123456789| -//|Nozzle FAN: RPM| -//|Print FAN: RPM| -//|Fil. Xd: Yd: | -//|Int: Shut: | -//---------------------- int fan_speed_RPM[2]; // Display Nozzle fan RPM fan_speed_RPM[0] = 60*fan_speed[0]; @@ -1787,9 +1796,9 @@ void lcd_menu_extruder_info() // NOT static due to using ins "%S: %4d RPM\n" "%S: %4d RPM\n" ), - _i("Nozzle FAN"), + _i("Nozzle FAN"), ////c=10 r=1 fan_speed_RPM[0], - _i("Print FAN"), + _i("Print FAN"), ////c=10 r=1 fan_speed_RPM[1] ); @@ -1811,8 +1820,8 @@ void lcd_menu_extruder_info() // NOT static due to using ins if (!moves_planned() && !IS_SD_PRINTING && !is_usb_printing && (lcd_commands_type != LcdCommands::Layer1Cal)) pat9125_update(); lcd_printf_P(_N( - "Fil. Xd:%3d Yd:%3d\n" - "Int: %3d Shut: %3d" + "Fil. Xd:%3d Yd:%3d\n" ////c=4 r=1 + "Int: %3d Shut: %3d" ////c=4 r=1 ////c=4 r=1 ), pat9125_x, pat9125_y, pat9125_b, pat9125_s @@ -1824,152 +1833,163 @@ void lcd_menu_extruder_info() // NOT static due to using ins menu_back_if_clicked(); } +//! @brief Show Fails Statistics MMU +//! +//! @code{.unparsed} +//! |01234567890123456789| +//! | Main | c=18 r=1 +//! | Last print | c=18 r=1 +//! | Total | c=18 r=1 +//! | | +//! ---------------------- +//! @endcode static void lcd_menu_fails_stats_mmu() { -//|01234567890123456789| -//| Main | c=18 -//| Last print | c=18 -//| Total | c=18 -//| | -//---------------------- MENU_BEGIN(); MENU_ITEM_BACK_P(_T(MSG_MAIN)); - MENU_ITEM_SUBMENU_P(_i("Last print"), lcd_menu_fails_stats_mmu_print); - MENU_ITEM_SUBMENU_P(_i("Total"), lcd_menu_fails_stats_mmu_total); + MENU_ITEM_SUBMENU_P(_i("Last print"), lcd_menu_fails_stats_mmu_print); ////c=18 r=1 + MENU_ITEM_SUBMENU_P(_i("Total"), lcd_menu_fails_stats_mmu_total); ////c=18 r=1 MENU_END(); } +//! @brief Show Last Print Failures Statistics MMU +//! +//! @code{.unparsed} +//! |01234567890123456789| +//! |Last print failures | c=20 r=1 +//! | MMU fails: 000| c=14 r=1 +//! | MMU load fails: 000| c=14 r=1 +//! | | +//! ---------------------- +//! @endcode static void lcd_menu_fails_stats_mmu_print() { -//|01234567890123456789| -//|Last print failures | c=20 -//| MMU fails: 000| c=15 -//| MMU load fails: 000| c=15 -//| | -//---------------------- lcd_timeoutToStatus.stop(); //infinite timeout uint8_t fails = eeprom_read_byte((uint8_t*)EEPROM_MMU_FAIL); uint16_t load_fails = eeprom_read_byte((uint8_t*)EEPROM_MMU_LOAD_FAIL); lcd_home(); - lcd_printf_P(PSTR("%S\n" " %S %-3d\n" " %S %-3d"), _i("Last print failures"), _i("MMU fails"), fails, _i("MMU load fails"), load_fails); + lcd_printf_P(PSTR("%S\n" " %S %-3d\n" " %S %-3d"), _i("Last print failures"), _i("MMU fails"), fails, _i("MMU load fails"), load_fails); ////c=20 r=1 ////c=14 r=1 ////c=14 r=1 menu_back_if_clicked_fb(); } +//! @brief Show Total Failures Statistics MMU +//! +//! @code{.unparsed} +//! |01234567890123456789| +//! |Total failures | c=20 r=1 +//! | MMU fails: 000| c=14 r=1 +//! | MMU load fails: 000| c=14 r=1 +//! | MMU power fails:000| c=14 r=1 +//! ---------------------- +//! @endcode static void lcd_menu_fails_stats_mmu_total() { -//|01234567890123456789| -//|Total failures | c=20 -//| MMU fails: 000| c=15 -//| MMU load fails: 000| c=15 -//| MMU power fails:000| c=15 -//---------------------- mmu_command(MmuCmd::S3); lcd_timeoutToStatus.stop(); //infinite timeout uint8_t fails = eeprom_read_byte((uint8_t*)EEPROM_MMU_FAIL_TOT); uint16_t load_fails = eeprom_read_byte((uint8_t*)EEPROM_MMU_LOAD_FAIL_TOT); lcd_home(); - lcd_printf_P(PSTR("%S\n" " %S %-3d\n" " %S %-3d\n" " %S %-3d"), _i("Total failures"), _i("MMU fails"), fails, _i("MMU load fails"), load_fails, _i("MMU power fails"), mmu_power_failures); + lcd_printf_P(PSTR("%S\n" " %S %-3d\n" " %S %-3d\n" " %S %-3d"), _i("Total failures"), _i("MMU fails"), fails, _i("MMU load fails"), load_fails, _i("MMU power fails"), mmu_power_failures); ////c=20 r=1 ////c=14 r=1 ////c=14 r=1 ////c=14 r=1 menu_back_if_clicked_fb(); } #if defined(TMC2130) && defined(FILAMENT_SENSOR) +//! @brief Show Total Failures Statistics MMU +//! +//! @code{.unparsed} +//! |01234567890123456789| +//! |Total failures | c=20 r=1 +//! | Power failures: 000| c=14 r=1 +//! | Filam. runouts: 000| c=14 r=1 +//! | Crash X:000 Y:000| c=7 r=1 +//! ---------------------- +//! @endcode static void lcd_menu_fails_stats_total() { -//|01234567890123456789| -//|Last print failures | c=20 -//| Power failures: 000| c=14 -//| Filam. runouts: 000| c=14 -//| Crash X:000 Y:000| c=7 for Crash -//---------------------- lcd_timeoutToStatus.stop(); //infinite timeout uint16_t power = eeprom_read_word((uint16_t*)EEPROM_POWER_COUNT_TOT); uint16_t filam = eeprom_read_word((uint16_t*)EEPROM_FERROR_COUNT_TOT); uint16_t crashX = eeprom_read_word((uint16_t*)EEPROM_CRASH_COUNT_X_TOT); uint16_t crashY = eeprom_read_word((uint16_t*)EEPROM_CRASH_COUNT_Y_TOT); lcd_home(); - lcd_printf_P(PSTR("%S\n" " %S %-3d\n" " %S %-3d\n" " %S X %-3d Y %-3d"), _i("Total failures"), _i("Power failures"), power, _i("Filam. runouts"), filam, _i("Crash"), crashX, crashY); + lcd_printf_P(PSTR("%S\n" " %S %-3d\n" " %S %-3d\n" " %S X %-3d Y %-3d"), _i("Total failures"), _i("Power failures"), power, _i("Filam. runouts"), filam, _i("Crash"), crashX, crashY); ////c=20 r=1 ////c=14 r=1 ////c=14 r=1 ////c=7 r=1 menu_back_if_clicked_fb(); } +//! @brief Show Last Print Failures Statistics +//! +//! @code{.unparsed} +//! |01234567890123456789| +//! |Last print failures | c=20 r=1 +//! | Power failures: 000| c=14 r=1 +//! | Filam. runouts: 000| c=14 r=1 +//! | Crash X:000 Y:000| c=7 r=1 +//! ---------------------- +//! @endcode static void lcd_menu_fails_stats_print() { -//|01234567890123456789| -//|Last print failures | c=20 -//| Power failures: 000| c=14 -//| Filam. runouts: 000| c=14 -//| Crash X:000 Y:000| c=7 for Crash -//---------------------- lcd_timeoutToStatus.stop(); //infinite timeout uint8_t power = eeprom_read_byte((uint8_t*)EEPROM_POWER_COUNT); uint8_t filam = eeprom_read_byte((uint8_t*)EEPROM_FERROR_COUNT); uint8_t crashX = eeprom_read_byte((uint8_t*)EEPROM_CRASH_COUNT_X); uint8_t crashY = eeprom_read_byte((uint8_t*)EEPROM_CRASH_COUNT_Y); lcd_home(); - lcd_printf_P(PSTR("%S\n" " %S %-3d\n" " %S %-3d\n" " %S X %-3d Y %-3d"), _i("Last print failures"), _i("Power failures"), power, _i("Filam. runouts"), filam, _i("Crash"), crashX, crashY); + lcd_printf_P(PSTR("%S\n" " %S %-3d\n" " %S %-3d\n" " %S X %-3d Y %-3d"), _i("Last print failures"), _i("Power failures"), power, _i("Filam. runouts"), filam, _i("Crash"), crashX, crashY); ////c=20 r=1 ////c=14 r=1 ////c=14 r=1 ////c=7 r=1 menu_back_if_clicked_fb(); } -/** - * @brief Open fail statistics menu - * - * This version of function is used, when there is filament sensor, - * power failure and crash detection. - * There are Last print and Total menu items. - */ +//! @brief Open fail statistics menu +//! +//! This version of function is used, when there is filament sensor, +//! power failure and crash detection. +//! There are Last print and Total menu items. +//! +//! @code{.unparsed} +//! |01234567890123456789| +//! | Main | c=18 r=1 +//! | Last print | c=18 r=1 +//! | Total | c=18 r=1 +//! | | +//! ---------------------- +//! @endcode + static void lcd_menu_fails_stats() { -//|01234567890123456789| -//| Main | c=18 -//| Last print | c=18 -//| Total | c=18 -//| | -//---------------------- MENU_BEGIN(); MENU_ITEM_BACK_P(_T(MSG_MAIN)); - MENU_ITEM_SUBMENU_P(_i("Last print"), lcd_menu_fails_stats_print); - MENU_ITEM_SUBMENU_P(_i("Total"), lcd_menu_fails_stats_total); + MENU_ITEM_SUBMENU_P(_i("Last print"), lcd_menu_fails_stats_print); ////c=18 r=1 + MENU_ITEM_SUBMENU_P(_i("Total"), lcd_menu_fails_stats_total); ////c=18 r=1 MENU_END(); } #elif defined(FILAMENT_SENSOR) -/** - * @brief Print last print and total filament run outs - * - * This version of function is used, when there is filament sensor, - * but no other sensors (e.g. power failure, crash detection). - * - * Example screen: - * @code - * 01234567890123456789 - * Last print failures - * Filam. runouts 0 - * Total failures - * Filam. runouts 5 - * @endcode - */ +//! +//! @brief Print last print and total filament run outs +//! +//! This version of function is used, when there is filament sensor, +//! but no other sensors (e.g. power failure, crash detection). +//! +//! Example screen: +//! @code{.unparsed} +//! |01234567890123456789| +//! |Last print failures | c=20 r=1 +//! | Filam. runouts: 000| c=14 r=1 +//! |Total failures | c=20 r=1 +//! | Filam. runouts: 000| c=14 r=1 +//! ---------------------- +//! @endcode static void lcd_menu_fails_stats() { -//|01234567890123456789| -//|Last print failures | c=20 -//| Filam. runouts: 000| c=15 -//|Total failures | c=20 -//| Filam. runouts: 000| c=15 -//---------------------- lcd_timeoutToStatus.stop(); //infinite timeout uint8_t filamentLast = eeprom_read_byte((uint8_t*)EEPROM_FERROR_COUNT); uint16_t filamentTotal = eeprom_read_word((uint16_t*)EEPROM_FERROR_COUNT_TOT); lcd_home(); - lcd_printf_P(PSTR("Last print failures\n" " Filam. runouts %-3d\n" "Total failures\n" " Filam. runouts %-3d"), filamentLast, filamentTotal); + lcd_printf_P(PSTR("Last print failures\n" " Filam. runouts %-3d\n" "Total failures\n" " Filam. runouts %-3d"), filamentLast, filamentTotal); ////c=20 r=1 ////c=14 r=1 ////c=20 r=1 ////c=14 r=1 menu_back_if_clicked(); } #else static void lcd_menu_fails_stats() { -//|01234567890123456789| -//| Main | c=18 -//| | -//| | -//---------------------- lcd_timeoutToStatus.stop(); //infinite timeout MENU_BEGIN(); MENU_ITEM_BACK_P(_T(MSG_MAIN)); @@ -1985,38 +2005,47 @@ extern char* __malloc_heap_start; extern char* __malloc_heap_end; #endif //DEBUG_STACK_MONITOR +//! @brief Show Debug Information +//! +//! @code{.unparsed} +//! |01234567890123456789| +//! |RAM statistics | c=20 r=1 +//! | SP_min: 0000| c=14 r=1 +//! | heap_start: 0000| c=14 r=1 +//! | heap_end: 0000| c=14 r=1 +//! ---------------------- +//! @endcode static void lcd_menu_debug() { -//|01234567890123456789| -//|RAM statistics | c=20 -//| SP_min: 0000| c=14 -//| heap_start: 0000| c=14 -//| heap_end: 0000| c=14 -//---------------------- #ifdef DEBUG_STACK_MONITOR lcd_home(); - lcd_printf_P(PSTR("RAM statistics\n" " SP_min: 0x%04x\n" " heap_start: 0x%04x\n" " heap_end: 0x%04x"), SP_min, __malloc_heap_start, __malloc_heap_end); + lcd_printf_P(PSTR("RAM statistics\n" " SP_min: 0x%04x\n" " heap_start: 0x%04x\n" " heap_end: 0x%04x"), SP_min, __malloc_heap_start, __malloc_heap_end); ////c=20 r=1 ////c=14 r=1 ////c=14 r=1 ////c=14 r=1 #endif //DEBUG_STACK_MONITOR menu_back_if_clicked_fb(); } #endif /* DEBUG_BUILD */ +//! @brief Show Temperatures +//! +//! @code{.unparsed} +//! |01234567890123456789| +//! | Nozzle: 000D| c=14 r=1 +//! | Bed: 000D| c=14 r=1 +//! | Ambient: 000D| c=14 r=1 +//! | PINDA: 000D| c=14 r=1 +//! ---------------------- +//! D - Degree sysmbol LCD_STR_DEGREE +//! @endcode static void lcd_menu_temperatures() { -//|01234567890123456789| -//| Nozzle: 000°| c=14 -//| Bed: 000°| c=14 -//| Ambient: 000°| c=14 -//| PINDA: 000°| c=14 -//---------------------- lcd_timeoutToStatus.stop(); //infinite timeout lcd_home(); - lcd_printf_P(PSTR(" %S: %d%c \n" " %S: %d%c \n"), _i("Nozzle"), (int)current_temperature[0], '\x01', _i("Bed"), (int)current_temperature_bed, '\x01'); + lcd_printf_P(PSTR(" %S: %d%c \n" " %S: %d%c \n"), _i("Nozzle"), (int)current_temperature[0], '\x01', _i("Bed"), (int)current_temperature_bed, '\x01'); ////c=14 r=1 ////c=14 r=1 #ifdef AMBIENT_THERMISTOR - lcd_printf_P(PSTR(" %S: %d%c\n" " PINDA: %d%c"), _i("Ambient"), (int)current_temperature_ambient, '\x01', (int)current_temperature_pinda, '\x01'); + lcd_printf_P(PSTR(" %S: %d%c\n" " %S: %d%c"), _i("Ambient"), (int)current_temperature_ambient, '\x01', _i("PINDA"), (int)current_temperature_pinda, '\x01'); ////c=14 r=1 #else //AMBIENT_THERMISTOR - lcd_printf_P(PSTR(" PINDA: %d%c"), (int)current_temperature_pinda, '\x01'); + lcd_printf_P(PSTR(" %S: %d%c"), _i("PINDA"), (int)current_temperature_pinda, '\x01'); ////c=14 r=1 #endif //AMBIENT_THERMISTOR menu_back_if_clicked(); @@ -2027,34 +2056,43 @@ static void lcd_menu_temperatures() #define VOLT_DIV_R2 2370 #define VOLT_DIV_FAC ((float)VOLT_DIV_R2 / (VOLT_DIV_R2 + VOLT_DIV_R1)) #define VOLT_DIV_REF 5 +//! @brief Show Voltages +//! +//! @code{.unparsed} +//! |01234567890123456789| +//! | | +//! | PWR: 00.0V | c=12 r=1 +//! | Bed: 00.0V | c=12 r=1 +//! | | +//! ---------------------- +//! @endcode + static void lcd_menu_voltages() { -//|01234567890123456789| -//| | -//| PWR: 00.0V | c=12 -//| Bed: 00.0V | c=12 -//| | -//---------------------- lcd_timeoutToStatus.stop(); //infinite timeout float volt_pwr = VOLT_DIV_REF * ((float)current_voltage_raw_pwr / (1023 * OVERSAMPLENR)) / VOLT_DIV_FAC; float volt_bed = VOLT_DIV_REF * ((float)current_voltage_raw_bed / (1023 * OVERSAMPLENR)) / VOLT_DIV_FAC; lcd_home(); - lcd_printf_P(PSTR(" PWR: %d.%01dV\n" " BED: %d.%01dV"), (int)volt_pwr, (int)(10*fabs(volt_pwr - (int)volt_pwr)), (int)volt_bed, (int)(10*fabs(volt_bed - (int)volt_bed))); + lcd_printf_P(PSTR(" $S: %d.%01dV\n" " $S: %d.%01dV"), _i("PWR"), (int)volt_pwr, (int)(10*fabs(volt_pwr - (int)volt_pwr)), _i("Bed"), (int)volt_bed, (int)(10*fabs(volt_bed - (int)volt_bed))); ////c=12 r=1 ////c=12 r=1 menu_back_if_clicked(); } #endif //defined VOLT_BED_PIN || defined VOLT_PWR_PIN #ifdef TMC2130 +//! @brief Show Belt Status +//! +//! @code{.unparsed} +//! |01234567890123456789| +//! | Belt status | c=18 r=1 +//! | X: 000 | +//! | Y: 000 | +//! | | +//! ---------------------- +//! @endcode static void lcd_menu_belt_status() { -//|01234567890123456789| -//| Belt status | c=19 -//| X: 000 | c=13 -//| Y: 000 | c=13 -//| | -//---------------------- lcd_home(); - lcd_printf_P(PSTR("%S\n" " X %d\n" " Y %d"), _i("Belt status"), eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_X)), eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_Y))); + lcd_printf_P(PSTR("%S\n" " X %d\n" " Y %d"), _i("Belt status"), eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_X)), eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_Y))); ////c=18 r=1 menu_back_if_clicked(); } #endif //TMC2130 @@ -2074,6 +2112,7 @@ static void lcd_menu_test_restore() } #endif //RESUME_DEBUG +//! @brief Show Preheat Menu static void lcd_preheat_menu() { MENU_BEGIN(); @@ -2099,6 +2138,78 @@ static void lcd_preheat_menu() MENU_END(); } +//! @brief Show Support Menu +//! +//! @code{.unparsed} +//! |01234567890123456789| +//! | Main | +//! | Firmware: | c=18 r=1 +//! | 3.7.2.-2363 | c=16 r=1 +//! | prusa3d.com | MSG_PRUSA3D +//! | forum.prusa3d.com | MSG_PRUSA3D_FORUM +//! | howto.prusa3d.com | MSG_PRUSA3D_HOWTO +//! | -------------- | STR_SEPARATOR +//! | 1_75mm_MK3 | FILAMENT_SIZE +//! | howto.prusa3d.com | ELECTRONICS +//! | howto.prusa3d.com | NOZZLE_TYPE +//! | -------------- | STR_SEPARATOR +//! | Date: | c=17 r=1 +//! | MMM DD YYYY | __DATE__ +//! | -------------- | STR_SEPARATOR +//! @endcode +//! +//! If MMU is connected +//! +//! @code{.unparsed} +//! | MMU2 connected | c=18 r=1 +//! | FW: 1.0.6-7064523 | +//! @endcode +//! +//! If MMU is not connected +//! +//! @code{.unparsed} +//! | MMU2 N/A | c=18 r=1 +//! @endcode +//! +//! If Flash Air is connected +//! +//! @code{.unparsed} +//! | -------------- | STR_SEPARATOR +//! | FlashAir IP Addr: | c=18 r=1 +//! | 192.168.1.100 | +//! @endcode +//! +//! @code{.unparsed} +//! | -------------- | STR_SEPARATOR +//! | XYZ cal. details | MSG_XYZ_DETAILS +//! | Extruder info | MSG_INFO_EXTRUDER +//! | XYZ cal. details | MSG_INFO_SENSORS +//! @endcode +//! +//! If TMC2130 defined +//! +//! @code{.unparsed} +//! | Belt status | MSG_MENU_BELT_STATUS +//! @endcode +//! +//! @code{.unparsed} +//! | Temperatures | MSG_MENU_TEMPERATURES +//! @endcode +//! +//! If Voltage Bed and PWR Pin are defined +//! +//! @code{.unparsed} +//! | Voltages | MSG_MENU_VOLTAGES +//! @endcode +//! +//! +//! If DEBUG_BUILD is defined +//! +//! @code{.unparsed} +//! | Debug | c=18 r=1 +//! @endcode +//! ---------------------- +//! @endcode static void lcd_support_menu() { typedef struct @@ -2160,8 +2271,8 @@ static void lcd_support_menu() MENU_ITEM_BACK_P(STR_SEPARATOR); if (mmu_enabled) { - MENU_ITEM_BACK_P(_i("MMU2 connected")); - MENU_ITEM_BACK_P(PSTR(" FW:")); + MENU_ITEM_BACK_P(_i("MMU2 connected")); ////c=18 r=1 + MENU_ITEM_BACK_P(PSTR(" FW:")); ////c=17 r=1 if (((menu_item - 1) == menu_line) && lcd_draw_update) { lcd_set_cursor(6, menu_row); @@ -2178,7 +2289,7 @@ static void lcd_support_menu() // Show the FlashAir IP address, if the card is available. if (_md->is_flash_air) { MENU_ITEM_BACK_P(STR_SEPARATOR); - MENU_ITEM_BACK_P(PSTR("FlashAir IP Addr:")); + MENU_ITEM_BACK_P(PSTR("FlashAir IP Addr:")); //c=18 r=1 ///! MENU_ITEM(back_RAM, _md->ip_str, 0); } @@ -2199,7 +2310,7 @@ static void lcd_support_menu() #endif //defined VOLT_BED_PIN || defined VOLT_PWR_PIN #ifdef DEBUG_BUILD - MENU_ITEM_SUBMENU_P(PSTR("Debug"), lcd_menu_debug); + MENU_ITEM_SUBMENU_P(PSTR("Debug"), lcd_menu_debug);////c=18 r=1 #endif /* DEBUG_BUILD */ #endif //MK1BP @@ -2853,9 +2964,9 @@ if(0) //! //! @code{.unparsed} //! |01234567890123456789| -//! |Filament used: | +//! |Filament used: | c=18 r=1 //! | 00.00m | -//! |Print time: | +//! |Print time: | c=18 r=1 //! | 00h 00m 00s | //! ---------------------- //! @endcode @@ -2864,9 +2975,9 @@ if(0) //! //! @code{.unparsed} //! |01234567890123456789| -//! |Total filament : | +//! |Total filament : | c=18 r=1 //! | 000.00 m | -//! |Total print time : | +//! |Total print time : | c=18 r=1 //! | 00d :00h :00 m | //! ---------------------- //! @endcode @@ -2874,12 +2985,6 @@ void lcd_menu_statistics() { if (IS_SD_PRINTING) { - //|01234567890123456789| - //|Filament used: | c=19 - //| 0000.00m | - //|Print time: | c=19 - //| 00h : 00m : 00s | - //---------------------- const float _met = ((float)total_filament_used) / (100000.f); const uint32_t _t = (_millis() - starttime) / 1000ul; const int _h = _t / 3600; @@ -2892,17 +2997,11 @@ void lcd_menu_statistics() "%8.2fm\n" "%S:\n" "%2dh %02dm %02ds" - ),_i("Filament used"), _met, _i("Print time"), _h, _m, _s); + ),_i("Filament used"), _met, _i("Print time"), _h, _m, _s); ////c=18 r=1 ////c=18 r=1 menu_back_if_clicked_fb(); } else { - //|01234567890123456789| - //|Total filament: | c=19 - //| 0000.00m | - //|Total print time | c=19 - //| 00d : 00h : 00m | - //---------------------- unsigned long _filament = eeprom_read_dword((uint32_t *)EEPROM_FILAMENTUSED); unsigned long _time = eeprom_read_dword((uint32_t *)EEPROM_TOTALTIME); //in minutes uint8_t _hours, _minutes; @@ -3005,17 +3104,20 @@ static void lcd_move_e() } -//@brief Show measured Y distance of front calibration points from Y_MIN_POS -//If those points are detected too close to edge of reachable area, their confidence is lowered. -//This functionality is applied more often for MK2 printers. +//! @brief Show measured Y distance of front calibration points from Y_MIN_POS +//! If those points are detected too close to edge of reachable area, their confidence is lowered. +//! This functionality is applied more often for MK2 printers. + +//! @code{.unparsed} +//! |01234567890123456789| +//! |Y distance from min | c=19 r=1 +//! | -------------- | STR_SEPARATOR +//! |Left: 00.00mm | c=11 r=1 +//! |Right: 00.00mm | c=11 r=1 +//! ---------------------- +//! @endcode static void lcd_menu_xyz_y_min() { -//|01234567890123456789| -//|Y distance from min | c=19 -//|--------------------| -//|Left: 00.00mm | c=10 -//|Right: 00.00mm | c=10 -//---------------------- float distanceMin[2]; count_xyz_details(distanceMin); lcd_home(); @@ -3025,15 +3127,15 @@ static void lcd_menu_xyz_y_min() "%S:\n" "%S:" ), - _i("Y distance from min"), + _i("Y distance from min"), ////c=19 r=1 separator, - _i("Left"), - _i("Right") + _i("Left"), ////c=11 r=1 + _i("Right") ////c=11 r=1 ); for (uint8_t i = 0; i < 2; i++) { lcd_set_cursor(11,2+i); - if (distanceMin[i] >= 200) lcd_puts_P(_N("N/A")); + if (distanceMin[i] >= 200) lcd_puts_P(_N("N/A")); ////c=3 r=1 else lcd_printf_P(_N("%6.2fmm"), distanceMin[i]); } if (lcd_clicked()) @@ -3046,14 +3148,19 @@ float _deg(float rad) return rad * 180 / M_PI; } +//! @brief Show Measured XYZ Skew +//! +//! @code{.unparsed} +//! |01234567890123456789| +//! |Measured skew: 0.00D| c=13 r=1 +//! | -------------- | STR_SEPARATOR +//! |Slight skew: 0.12D| c=13 r=1 c=4 r=1 +//! |Severe skew: 0.25D| c=13 r=1 c=4 r=1 +//! ---------------------- +//! D - Degree sysmbol LCD_STR_DEGREE +//! @endcode static void lcd_menu_xyz_skew() { -//|01234567890123456789| -//|Measured skew: N/A | -//|--------------------| -//|Slight skew: 0.12d| -//|Severe skew: 0.25d| -//---------------------- float angleDiff = eeprom_read_float((float*)(EEPROM_XYZ_CAL_SKEW)); lcd_home(); lcd_printf_P(_N( @@ -3062,10 +3169,10 @@ static void lcd_menu_xyz_skew() "%S: %5.2f\x01\n" "%S: %5.2f\x01" ), - _i("Measured skew"), + _i("Measured skew"), ////c=13 r=1 separator, - _i("Slight skew"), _deg(bed_skew_angle_mild), - _i("Severe skew"), _deg(bed_skew_angle_extreme) + _i("Slight skew"), _deg(bed_skew_angle_mild), ////c=13 r=1 c=4 r=1 + _i("Severe skew"), _deg(bed_skew_angle_extreme) ////c=13 r=1 c=4 r=1 ); if (angleDiff < 100){ lcd_set_cursor(15,0); @@ -3078,22 +3185,23 @@ static void lcd_menu_xyz_skew() if (lcd_clicked()) menu_goto(lcd_menu_xyz_offset, 0, true, true); } -/** - * @brief Show measured bed offset from expected position - */ +//! @brief Show measured bed offset from expected position +//! +//! @code{.unparsed} +//! |01234567890123456789| +//! |[0;0] point offset | c=20 r=1 +//! | -------------- | STR_SEPARATOR +//! |X: 000.00mm| c=10 r=1 +//! |Y: 000.00mm| c=10 r=1 +//! ---------------------- +//! @endcode static void lcd_menu_xyz_offset() { -//|01234567890123456789| -//|[0;0] point offset | c=20 -//|--------------------| -//|X: 000.00mm| c=10 -//|Y: 000.00mm| c=10 -//---------------------- lcd_set_cursor(0,0); lcd_puts_P(_i("[0;0] point offset"));////MSG_MEASURED_OFFSET lcd_puts_at_P(0, 1, separator); - lcd_puts_at_P(0, 2, PSTR("X")); - lcd_puts_at_P(0, 3, PSTR("Y")); + lcd_puts_at_P(0, 2, PSTR("X")); ////c=10 r=1 + lcd_puts_at_P(0, 3, PSTR("Y")); ////c=10 r=1 float vec_x[2]; float vec_y[2]; @@ -3252,6 +3360,18 @@ void lcd_adjust_bed_reset(void) _md->status = 0; } +//! @brief Show Bed level correct +//! +//! @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 +//! |Reset | MSG_BED_CORRECTION_RESET +//! ---------------------- +//! @endcode void lcd_adjust_bed(void) { _menu_data_adjust_bed_t* _md = (_menu_data_adjust_bed_t*)&(menu_data[0]); @@ -3289,6 +3409,16 @@ void lcd_adjust_bed(void) MENU_END(); } +//! @brief Show PID Extruder +//! +//! @code{.unparsed} +//! |01234567890123456789| +//! | Set temperature: | MSG_SET_TEMPERATURE +//! | | +//! | 210 | +//! | | +//! ---------------------- +//! @endcode void pid_extruder() { lcd_clear(); From d51b3d6207d0336abc4d92a0fdd31e305f0cd11e Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Sun, 1 Sep 2019 09:51:51 +0200 Subject: [PATCH 10/25] Added doxygen todos for missing LCD layout and positioning --- Firmware/ultralcd.cpp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 4a1913287..2cceda418 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -1,4 +1,7 @@ //! @file +//! @date Aug 28, 2019 +//! @author mkbel +//! @brief LCD #include "temperature.h" #include "ultralcd.h" @@ -1782,6 +1785,7 @@ static void lcd_cooldown() //! |Int: 000 Shut: 000 | Int: c=4 r=1 Shut: c=4 r=1 //! ---------------------- //! @endcode +//! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations. void lcd_menu_extruder_info() // NOT static due to using inside "Marlin_main" module ("manage_inactivity()") { int fan_speed_RPM[2]; @@ -1862,6 +1866,7 @@ static void lcd_menu_fails_stats_mmu() //! | | //! ---------------------- //! @endcode +//! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations. static void lcd_menu_fails_stats_mmu_print() { lcd_timeoutToStatus.stop(); //infinite timeout @@ -1882,6 +1887,7 @@ static void lcd_menu_fails_stats_mmu_print() //! | MMU power fails:000| c=14 r=1 //! ---------------------- //! @endcode +//! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations. static void lcd_menu_fails_stats_mmu_total() { mmu_command(MmuCmd::S3); @@ -1904,6 +1910,7 @@ static void lcd_menu_fails_stats_mmu_total() //! | Crash X:000 Y:000| c=7 r=1 //! ---------------------- //! @endcode +//! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations. static void lcd_menu_fails_stats_total() { lcd_timeoutToStatus.stop(); //infinite timeout @@ -1926,6 +1933,7 @@ static void lcd_menu_fails_stats_total() //! | Crash X:000 Y:000| c=7 r=1 //! ---------------------- //! @endcode +//! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations. static void lcd_menu_fails_stats_print() { lcd_timeoutToStatus.stop(); //infinite timeout @@ -1978,6 +1986,7 @@ static void lcd_menu_fails_stats() //! | Filam. runouts: 000| c=14 r=1 //! ---------------------- //! @endcode +//! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations. static void lcd_menu_fails_stats() { lcd_timeoutToStatus.stop(); //infinite timeout @@ -2015,6 +2024,7 @@ extern char* __malloc_heap_end; //! | heap_end: 0000| c=14 r=1 //! ---------------------- //! @endcode +//! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations. static void lcd_menu_debug() { #ifdef DEBUG_STACK_MONITOR @@ -2037,6 +2047,7 @@ static void lcd_menu_debug() //! ---------------------- //! D - Degree sysmbol LCD_STR_DEGREE //! @endcode +//! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations. static void lcd_menu_temperatures() { lcd_timeoutToStatus.stop(); //infinite timeout @@ -2066,7 +2077,7 @@ static void lcd_menu_temperatures() //! | | //! ---------------------- //! @endcode - +//! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations. static void lcd_menu_voltages() { lcd_timeoutToStatus.stop(); //infinite timeout @@ -2089,6 +2100,7 @@ static void lcd_menu_voltages() //! | | //! ---------------------- //! @endcode +//! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations. static void lcd_menu_belt_status() { lcd_home(); @@ -2981,6 +2993,7 @@ if(0) //! | 00d :00h :00 m | //! ---------------------- //! @endcode +//! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations. Translations missing for "d"days, "h"ours, "m"inutes", "s"seconds". void lcd_menu_statistics() { if (IS_SD_PRINTING) @@ -3107,7 +3120,6 @@ static void lcd_move_e() //! @brief Show measured Y distance of front calibration points from Y_MIN_POS //! If those points are detected too close to edge of reachable area, their confidence is lowered. //! This functionality is applied more often for MK2 printers. - //! @code{.unparsed} //! |01234567890123456789| //! |Y distance from min | c=19 r=1 @@ -3116,6 +3128,7 @@ static void lcd_move_e() //! |Right: 00.00mm | c=11 r=1 //! ---------------------- //! @endcode +//! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations. static void lcd_menu_xyz_y_min() { float distanceMin[2]; @@ -3159,6 +3172,7 @@ float _deg(float rad) //! ---------------------- //! D - Degree sysmbol LCD_STR_DEGREE //! @endcode +//! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations. static void lcd_menu_xyz_skew() { float angleDiff = eeprom_read_float((float*)(EEPROM_XYZ_CAL_SKEW)); @@ -3195,6 +3209,7 @@ static void lcd_menu_xyz_skew() //! |Y: 000.00mm| c=10 r=1 //! ---------------------- //! @endcode +//! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations. static void lcd_menu_xyz_offset() { lcd_set_cursor(0,0); From 78708903e83dfa0f9353e8a2083731b158281249 Mon Sep 17 00:00:00 2001 From: leptun Date: Thu, 12 Sep 2019 07:16:31 +0300 Subject: [PATCH 11/25] Also update eeprom value --- Firmware/stepper.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Firmware/stepper.cpp b/Firmware/stepper.cpp index 5b102f42b..e75251577 100644 --- a/Firmware/stepper.cpp +++ b/Firmware/stepper.cpp @@ -1563,7 +1563,10 @@ void EEPROM_read_st(int pos, uint8_t* value, uint8_t size) void st_current_init() //Initialize Digipot Motor Current { uint8_t SilentMode = eeprom_read_byte((uint8_t*)EEPROM_SILENT); - if (SilentMode == 0xff) SilentMode = 0; //set power to High Power (MK2.5) or Normal Power (MK3, unused) + if (SilentMode == 0xff){ //set power to High Power (MK2.5) or Normal Power (MK3, unused) + SilentMode = 0; + eeprom_update_byte((uint8_t*)EEPROM_SILENT, SilentMode); + } SilentModeMenu = SilentMode; #ifdef MOTOR_CURRENT_PWM_XY_PIN pinMode(MOTOR_CURRENT_PWM_XY_PIN, OUTPUT); From 444daceca3c5f3e42bf73f1a488bc313535372cf Mon Sep 17 00:00:00 2001 From: leptun Date: Thu, 12 Sep 2019 13:39:04 +0300 Subject: [PATCH 12/25] Move define as requested --- Firmware/stepper.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Firmware/stepper.cpp b/Firmware/stepper.cpp index e75251577..710b135ec 100644 --- a/Firmware/stepper.cpp +++ b/Firmware/stepper.cpp @@ -1561,14 +1561,14 @@ void EEPROM_read_st(int pos, uint8_t* value, uint8_t size) void st_current_init() //Initialize Digipot Motor Current -{ +{ +#ifdef MOTOR_CURRENT_PWM_XY_PIN uint8_t SilentMode = eeprom_read_byte((uint8_t*)EEPROM_SILENT); if (SilentMode == 0xff){ //set power to High Power (MK2.5) or Normal Power (MK3, unused) - SilentMode = 0; + SilentMode = SILENT_MODE_POWER; eeprom_update_byte((uint8_t*)EEPROM_SILENT, SilentMode); } SilentModeMenu = SilentMode; - #ifdef MOTOR_CURRENT_PWM_XY_PIN pinMode(MOTOR_CURRENT_PWM_XY_PIN, OUTPUT); pinMode(MOTOR_CURRENT_PWM_Z_PIN, OUTPUT); pinMode(MOTOR_CURRENT_PWM_E_PIN, OUTPUT); @@ -1590,7 +1590,7 @@ void st_current_init() //Initialize Digipot Motor Current st_current_set(2, motor_current_setting[2]); //Set timer5 to 31khz so the PWM of the motor power is as constant as possible. (removes a buzzing noise) TCCR5B = (TCCR5B & ~(_BV(CS50) | _BV(CS51) | _BV(CS52))) | _BV(CS50); - #endif +#endif } From 4423106fadabea90e42484209c0e477602eed140 Mon Sep 17 00:00:00 2001 From: DRracer Date: Fri, 13 Sep 2019 16:55:05 +0200 Subject: [PATCH 13/25] dialogs' layouts fixes (support menu dlgs, statistics etc.) French translation polished --- Firmware/menu.cpp | 2 +- Firmware/ultralcd.cpp | 111 +++++++++++--------- lang/lang_en.txt | 7 +- lang/lang_en_cz.txt | 20 ++-- lang/lang_en_de.txt | 8 +- lang/lang_en_es.txt | 10 +- lang/lang_en_fr.txt | 235 +++++++++++++++++++++--------------------- lang/lang_en_it.txt | 8 +- lang/lang_en_pl.txt | 8 +- 9 files changed, 217 insertions(+), 192 deletions(-) diff --git a/Firmware/menu.cpp b/Firmware/menu.cpp index 7aad723cf..bb721dba9 100755 --- a/Firmware/menu.cpp +++ b/Firmware/menu.cpp @@ -423,7 +423,7 @@ void menu_draw_P(char chr, const char* str, int16_t val) float factor = 1.0f + static_cast(val) / 1000.0f; if (val <= _md->minEditValue) { - lcd_printf_P(menu_fmt_float13off, chr, str, " [off]"); + lcd_printf_P(menu_fmt_float13off, chr, str, _i(" [off]")); } else { diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 0abdf1b59..26d78b645 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -1670,6 +1670,24 @@ static void lcd_cooldown() lcd_return_to_status(); } +//! @brief append text label with a colon and format it into a fixed size output buffer +//! It would have been much easier if there was a ':' in the labels. +//! But since the texts like Bed, Nozzle and PINDA are used in other places +//! it is better to reuse these texts even though it requires some extra formatting code. +static void pgmtext_with_colon(const char *ipgmLabel, char *dst, uint8_t dstSize){ + uint8_t i = 0; + for(; i < dstSize - 2; ++i){ // 1 byte less than buffer, we'd be adding a ':' to the end + uint8_t b = pgm_read_byte(ipgmLabel + i); + if( ! b ) + break; + dst[i] = b; + } + dst[i] = ':'; // append the colon + ++i; + for(; i < dstSize - 1; ++i) // fill the rest with spaces + dst[i] = ' '; + dst[dstSize-1] = 0; // terminate the string properly +} void lcd_menu_extruder_info() // NOT static due to using inside "Marlin_main" module ("manage_inactivity()") { @@ -1679,23 +1697,14 @@ void lcd_menu_extruder_info() // NOT static due to using ins //|Fil. Xd: Yd: | //|Int: Shut: | //---------------------- - int fan_speed_RPM[2]; - // Display Nozzle fan RPM - fan_speed_RPM[0] = 60*fan_speed[0]; - fan_speed_RPM[1] = 60*fan_speed[1]; - lcd_timeoutToStatus.stop(); //infinite timeout - - lcd_home(); - lcd_printf_P(_N( - "%S: %4d RPM\n" - "%S: %4d RPM\n" - ), - _i("Nozzle FAN"), - fan_speed_RPM[0], - _i("Print FAN"), - fan_speed_RPM[1] - ); + // Display Nozzle fan RPM + lcd_timeoutToStatus.stop(); //infinite timeout + lcd_home(); + char nozzle[12], print[12]; + pgmtext_with_colon(_i("Nozzle FAN"), nozzle, 12); + pgmtext_with_colon(_i("Print FAN"), print, 12); + lcd_printf_P(_N("%s %4d RPM\n" "%s %4d RPM\n"), nozzle, 60*fan_speed[0], print, 60*fan_speed[1] ); #ifdef PAT9125 // Display X and Y difference from Filament sensor @@ -1745,12 +1754,12 @@ static void lcd_menu_fails_stats_mmu_print() // MMU load fails 000 // ////////////////////// - lcd_timeoutToStatus.stop(); //infinite timeout + lcd_timeoutToStatus.stop(); //infinite timeout uint8_t fails = eeprom_read_byte((uint8_t*)EEPROM_MMU_FAIL); uint16_t load_fails = eeprom_read_byte((uint8_t*)EEPROM_MMU_LOAD_FAIL); - lcd_home(); - lcd_printf_P(PSTR("%S\n" " %S %-3d\n" " %S %-3d"), _i("Last print failures"), _i("MMU fails"), fails, _i("MMU load fails"), load_fails); - menu_back_if_clicked_fb(); + lcd_home(); + lcd_printf_P(PSTR("%S\n" " %-16.16S%-3d\n" " %-16.16S%-3d"), _i("Last print failures"), _i("MMU fails"), fails, _i("MMU load fails"), load_fails); + menu_back_if_clicked_fb(); } static void lcd_menu_fails_stats_mmu_total() @@ -1761,16 +1770,17 @@ static void lcd_menu_fails_stats_mmu_total() // MMU load fails 000 // ////////////////////// - mmu_command(MmuCmd::S3); - lcd_timeoutToStatus.stop(); //infinite timeout + mmu_command(MmuCmd::S3); + lcd_timeoutToStatus.stop(); //infinite timeout uint8_t fails = eeprom_read_byte((uint8_t*)EEPROM_MMU_FAIL_TOT); uint16_t load_fails = eeprom_read_byte((uint8_t*)EEPROM_MMU_LOAD_FAIL_TOT); - lcd_home(); - lcd_printf_P(PSTR("%S\n" " %S %-3d\n" " %S %-3d\n" " %S %-3d"), _i("Total failures"), _i("MMU fails"), fails, _i("MMU load fails"), load_fails, _i("MMU power fails"), mmu_power_failures); - menu_back_if_clicked_fb(); + lcd_home(); + lcd_printf_P(PSTR("%S\n" " %-16.16S%-3d\n" " %-16.16S%-3d\n" " %-16.16S%-3d"), _i("Total failures"), _i("MMU fails"), fails, _i("MMU load fails"), load_fails, _i("MMU power fails"), mmu_power_failures); + menu_back_if_clicked_fb(); } #if defined(TMC2130) && defined(FILAMENT_SENSOR) +static const char failStatsFmt[] PROGMEM = "%S\n" " %-16.16S%-3d\n" " %-16.16S%-3d\n" " %-7.7SX %-3d Y %-3d"; static void lcd_menu_fails_stats_total() { //01234567890123456789 @@ -1779,14 +1789,14 @@ static void lcd_menu_fails_stats_total() // Filam. runouts 000 // Crash X 000 Y 000 ////////////////////// - lcd_timeoutToStatus.stop(); //infinite timeout + lcd_timeoutToStatus.stop(); //infinite timeout uint16_t power = eeprom_read_word((uint16_t*)EEPROM_POWER_COUNT_TOT); uint16_t filam = eeprom_read_word((uint16_t*)EEPROM_FERROR_COUNT_TOT); uint16_t crashX = eeprom_read_word((uint16_t*)EEPROM_CRASH_COUNT_X_TOT); uint16_t crashY = eeprom_read_word((uint16_t*)EEPROM_CRASH_COUNT_Y_TOT); - lcd_home(); - lcd_printf_P(PSTR("%S\n" " %S %-3d\n" " %S %-3d\n" " %S X %-3d Y %-3d"), _i("Total failures"), _i("Power failures"), power, _i("Filam. runouts"), filam, _i("Crash"), crashX, crashY); - menu_back_if_clicked_fb(); + lcd_home(); + lcd_printf_P(failStatsFmt, _i("Total failures"), _i("Power failures"), power, _i("Filam. runouts"), filam, _i("Crash"), crashX, crashY); + menu_back_if_clicked_fb(); } static void lcd_menu_fails_stats_print() @@ -1797,14 +1807,14 @@ static void lcd_menu_fails_stats_print() // Filam. runouts 000 // Crash X 000 Y 000 ////////////////////// - lcd_timeoutToStatus.stop(); //infinite timeout + lcd_timeoutToStatus.stop(); //infinite timeout uint8_t power = eeprom_read_byte((uint8_t*)EEPROM_POWER_COUNT); uint8_t filam = eeprom_read_byte((uint8_t*)EEPROM_FERROR_COUNT); uint8_t crashX = eeprom_read_byte((uint8_t*)EEPROM_CRASH_COUNT_X); uint8_t crashY = eeprom_read_byte((uint8_t*)EEPROM_CRASH_COUNT_Y); - lcd_home(); - lcd_printf_P(PSTR("%S\n" " %S %-3d\n" " %S %-3d\n" " %S X %-3d Y %-3d"), _i("Last print failures"), _i("Power failures"), power, _i("Filam. runouts"), filam, _i("Crash"), crashX, crashY); - menu_back_if_clicked_fb(); + lcd_home(); + lcd_printf_P(failStatsFmt, _i("Last print failures"), _i("Power failures"), power, _i("Filam. runouts"), filam, _i("Crash"), crashX, crashY); + menu_back_if_clicked_fb(); } /** @@ -1877,16 +1887,23 @@ static void lcd_menu_debug() } #endif /* DEBUG_BUILD */ +//! @brief common line print for lcd_menu_temperatures +static void lcd_menu_temperatures_line(const char *ipgmLabel, int value){ + char tmp[15]; + pgmtext_with_colon(ipgmLabel, tmp, 15); + lcd_printf_P(PSTR(" %s%3d\x01 \n"), tmp, value); // no need to add -14.14 to string alignment +} static void lcd_menu_temperatures() { - lcd_timeoutToStatus.stop(); //infinite timeout - lcd_home(); - lcd_printf_P(PSTR(" %S: %d%c \n" " %S: %d%c \n"), _i("Nozzle"), (int)current_temperature[0], '\x01', _i("Bed"), (int)current_temperature_bed, '\x01'); + lcd_timeoutToStatus.stop(); //infinite timeout + lcd_home(); + 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_printf_P(PSTR(" %S: %d%c\n" " PINDA: %d%c"), _i("Ambient"), (int)current_temperature_ambient, '\x01', (int)current_temperature_pinda, '\x01'); -#else //AMBIENT_THERMISTOR - lcd_printf_P(PSTR(" PINDA: %d%c"), (int)current_temperature_pinda, '\x01'); -#endif //AMBIENT_THERMISTOR + lcd_menu_temperatures_line( _i("Ambient"), (int)current_temperature_ambient ); +#endif + lcd_menu_temperatures_line( _i("PINDA"), (int)current_temperature_pinda ); + menu_back_if_clicked(); } @@ -2659,7 +2676,7 @@ void lcd_menu_statistics() lcd_clear(); lcd_printf_P(_N( "%S:\n" - "%8.2fm\n" + "%17.2fm \n" "%S:\n" "%2dh %02dm %02ds" ),_i("Filament used"), _met, _i("Print time"), _h, _m, _s); @@ -2681,7 +2698,7 @@ void lcd_menu_statistics() lcd_clear(); lcd_printf_P(_N( "%S:\n" - "%8.2fm\n" + "%17.2fm \n" "%S:\n" "%7ldd :%2hhdh :%02hhdm" ), _i("Total filament"), _filament_m, _i("Total print time"), _days, _hours, _minutes); @@ -2823,17 +2840,17 @@ static void lcd_menu_xyz_skew() lcd_printf_P(_N( "%S:\n" "%S\n" - "%S: %5.2f\x01\n" - "%S: %5.2f\x01" + "%-15.15S%3.2f\x01\n" + "%-15.15S%3.2f\x01" ), _i("Measured skew"), separator, - _i("Slight skew"), _deg(bed_skew_angle_mild), - _i("Severe skew"), _deg(bed_skew_angle_extreme) + _i("Slight skew:"), _deg(bed_skew_angle_mild), + _i("Severe skew:"), _deg(bed_skew_angle_extreme) ); if (angleDiff < 100){ lcd_set_cursor(15,0); - lcd_printf_P(_N("%4.2f\x01"), _deg(angleDiff)); + lcd_printf_P(_N("%3.2f\x01"), _deg(angleDiff)); } else{ lcd_set_cursor(15,0); diff --git a/lang/lang_en.txt b/lang/lang_en.txt index 272c800c8..a39ae94b4 100755 --- a/lang/lang_en.txt +++ b/lang/lang_en.txt @@ -734,7 +734,7 @@ "Sort [time]" # -"Severe skew" +"Severe skew:" #MSG_SORT_ALPHA c=17 r=1 "Sort [alphabet]" @@ -746,7 +746,7 @@ "Sound [loud]" # -"Slight skew" +"Slight skew:" #MSG_SOUND_MUTE c=17 r=1 "Sound [mute]" @@ -1074,3 +1074,6 @@ # "Z-probe nr. [3]" + +# +"Z-probe nr. [5]" diff --git a/lang/lang_en_cz.txt b/lang/lang_en_cz.txt index 659a93723..8d8bed552 100755 --- a/lang/lang_en_cz.txt +++ b/lang/lang_en_cz.txt @@ -92,7 +92,7 @@ #MSG_BED_HEATING "Bed Heating" -"Zahrivani bed" +"Zahrivani bedu" #MSG_BED_CORRECTION_MENU "Bed level correct" @@ -508,7 +508,7 @@ # "Left" -"Vlevo:" +"Vlevo" #MSG_BED_CORRECTION_LEFT c=14 r=1 "Left side [um]" @@ -688,7 +688,7 @@ # "Nozzle FAN" -"Tryska V." +"Vent. trysky" #MSG_PAUSE_PRINT "Pause print" @@ -819,8 +819,8 @@ "Predehrev k vyjmuti" #MSG_SELFTEST_PRINT_FAN_SPEED c=18 -"Print fan:" -"Tiskovy v:" +"Print fan" +"Tiskovy vent." #MSG_CARD_MENU "Print from SD" @@ -844,7 +844,7 @@ # "Print FAN" -"Tiskovy v" +"Tiskovy vent." #MSG_PRUSA3D "prusa3d.com" @@ -979,8 +979,8 @@ "Trideni [cas]" # -"Severe skew" -"Tezke zkoseni" +"Severe skew:" +"Tezke zkoseni:" #MSG_SORT_ALPHA c=17 r=1 "Sort [alphabet]" @@ -995,8 +995,8 @@ "Zvuk [hlasity]" # -"Slight skew" -"Lehke zkoseni" +"Slight skew:" +"Lehke zkoseni:" #MSG_SOUND_MUTE c=17 r=1 "Sound [mute]" diff --git a/lang/lang_en_de.txt b/lang/lang_en_de.txt index a426c13a9..00d48eca6 100755 --- a/lang/lang_en_de.txt +++ b/lang/lang_en_de.txt @@ -979,8 +979,8 @@ "Sort. [Zeit]" # -"Severe skew" -"Schwer.Schr" +"Severe skew:" +"Schwer.Schr:" #MSG_SORT_ALPHA c=17 r=1 "Sort [alphabet]" @@ -995,8 +995,8 @@ "Sound [laut]" # -"Slight skew" -"Leicht.Schr" +"Slight skew:" +"Leicht.Schr:" #MSG_SOUND_MUTE c=17 r=1 "Sound [mute]" diff --git a/lang/lang_en_es.txt b/lang/lang_en_es.txt index dd4db925f..bcf3794ab 100755 --- a/lang/lang_en_es.txt +++ b/lang/lang_en_es.txt @@ -979,8 +979,8 @@ "Ordenar [tiempo]" # -"Severe skew" -"Incl.severa" +"Severe skew:" +"Incl.severa:" #MSG_SORT_ALPHA c=17 r=1 "Sort [alphabet]" @@ -995,8 +995,8 @@ "Sonido [alto]" # -"Slight skew" -"Liger.incl." +"Slight skew:" +"Liger.incl.:" #MSG_SOUND_MUTE c=17 r=1 "Sound [mute]" @@ -1240,7 +1240,7 @@ #MSG_OFF " [off]" -" [apagado]" +"[apag]" # "Back" diff --git a/lang/lang_en_fr.txt b/lang/lang_en_fr.txt index 5c4f7e9d8..3f53ff9ab 100755 --- a/lang/lang_en_fr.txt +++ b/lang/lang_en_fr.txt @@ -16,7 +16,7 @@ #MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode" -"ATTENTION:\x0aDetection de crash\x0adesactivee en\x0amode Furtif" +"ATTENTION:\x0aDetection de crash\x0adesactivee en\x0amode feutre" # ">Cancel" @@ -24,7 +24,7 @@ #MSG_BABYSTEPPING_Z c=15 "Adjusting Z:" -"Ajuster Z :" +"Ajuster Z:" #MSG_SELFTEST_CHECK_ALLCORRECT c=20 "All correct " @@ -32,7 +32,7 @@ #MSG_WIZARD_DONE c=20 r=8 "All is done. Happy printing!" -"Tout est pret. Bonne impression !" +"Tout est pret. Bonne impression!" # "Ambient" @@ -62,9 +62,9 @@ "Auto home" "Mise a 0 des axes" -#MSG_AUTOLOAD_FILAMENT c=17 +#MSG_AUTOLOAD_FILAMENT c=18 "AutoLoad filament" -"AutoCharge du filament" +"Autocharge du fil." #MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 "Autoloading filament available only when filament sensor is turned on..." @@ -72,7 +72,7 @@ #MSG_AUTOLOADING_ENABLED c=20 r=4 "Autoloading filament is active, just press the knob and insert filament..." -"Chargement auto du filament actif, appuyez sur le btn et inserez le fil." +"Chargement auto. du fil. active, appuyez sur le bouton et inserez le fil." #MSG_SELFTEST_AXIS_LENGTH "Axis length" @@ -100,7 +100,7 @@ #MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4 "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset." -"Echec bed leveling. Capt. non declenche. Debris sur buse ? En attente d'un reset." +"Echec bed leveling. Capt. non declenche. Debris sur buse? En attente d'un reset." #MSG_BED "Bed" @@ -112,7 +112,7 @@ #MSG_RECOVER_PRINT c=20 r=2 "Blackout occurred. Recover print?" -"Coupure detectee. Recup. impression ?" +"Coupure detectee. Reprendre impression?" # "Calibrating home" @@ -132,7 +132,7 @@ #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." -"Calibration de XYZ. Tournez le bouton pour monter le chariot de l'axe Z jusqu'aux butees. Cliquez une fois fait." +"Calibration de XYZ. Tournez le bouton pour faire monter l'extrudeur dans l'axe Z jusqu'aux butees. Cliquez une fois fait." #MSG_CALIBRATE_Z_AUTO c=20 r=2 "Calibrating Z" @@ -140,7 +140,7 @@ #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." -"Calibration de Z. Tournez le bouton pour monter le chariot de l'axe Z jusqu'aux butees. Cliquez une fois fait." +"Calibration de Z. Tournez le bouton pour faire monter l'extrudeur dans l'axe Z jusqu'aux butees. Cliquez une fois fait." #MSG_HOMEYZ_DONE "Calibration done" @@ -168,7 +168,7 @@ # "Copy selected language?" -"Copier la langue selectionne ?" +"Copier la langue selectionne?" #MSG_CRASHDETECT_ON "Crash det. [on]" @@ -188,7 +188,7 @@ # "Crash detected. Resume print?" -"Crash detecte. Poursuivre l'impression ?" +"Crash detecte. Poursuivre l'impression?" # "Crash" @@ -200,7 +200,7 @@ #MSG_DATE c=17 r=1 "Date:" -"Date :" +"Date:" #MSG_DISABLE_STEPPERS "Disable steppers" @@ -212,7 +212,7 @@ #MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 "Do you want to repeat last step to readjust distance between nozzle and heatbed?" -"Voulez-vous repeter la derniere etape pour reajuster la distance entre la buse et le plateau chauffant ?" +"Voulez-vous repeter la derniere etape pour reajuster la distance entre la buse et le plateau chauffant?" #MSG_EXTRUDER_CORRECTION c=10 "E-correct:" @@ -220,15 +220,15 @@ #MSG_EJECT_FILAMENT c=17 r=1 "Eject filament" -"Ejecter le fil." +"Remonter le fil." # "Eject" -"Ejecter" +"Remonter" #MSG_EJECTING_FILAMENT c=20 r=1 "Ejecting filament" -"Ejection filament" +"Le fil. remonte" #MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1 "Endstop not hit" @@ -248,11 +248,11 @@ #MSG_FSENS_NOT_RESPONDING c=20 r=4 "ERROR: Filament sensor is not responding, please check connection." -"ERREUR : Le capteur de filament ne repond pas, verifiez le branchement." +"ERREUR: Le capteur de filament ne repond pas, verifiez le branchement." #MSG_ERROR "ERROR:" -"ERREUR :" +"ERREUR:" #MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18 "Extruder fan:" @@ -268,23 +268,23 @@ # "Fail stats MMU" -"Stat. echecs MMU" +"Stat. d'echec MMU" #MSG_FSENS_AUTOLOAD_ON c=17 r=1 "F. autoload [on]" -"ChargAuto f. [on]" +"Autochargeur [on]" #MSG_FSENS_AUTOLOAD_NA c=17 r=1 "F. autoload [N/A]" -"AutoCharg F [N/A]" +"Autochargeur[N/A]" #MSG_FSENS_AUTOLOAD_OFF c=17 r=1 "F. autoload [off]" -"AutoCharg F [off]" +"Autochargeur[off]" # "Fail stats" -"Statist. d'echec" +"Stat. d'echec" #MSG_FAN_SPEED c=14 "Fan speed" @@ -292,15 +292,15 @@ #MSG_SELFTEST_FAN c=20 "Fan test" -"Test ventilateur" +"Test du ventilateur" #MSG_FANS_CHECK_ON c=17 r=1 "Fans check [on]" -"Verif ventilo[on]" +"Verif vent. [on]" #MSG_FANS_CHECK_OFF c=17 r=1 "Fans check [off]" -"Verif venti [off]" +"Verif vent. [off]" #MSG_FSENSOR_ON "Fil. sensor [on]" @@ -308,7 +308,7 @@ #MSG_FSENSOR_NA "Fil. sensor [N/A]" -"Capteur Fil. [N/A]" +"Capteur Fil.[N/A]" #MSG_FSENSOR_OFF "Fil. sensor [off]" @@ -320,7 +320,7 @@ #MSG_FILAMENT_CLEAN c=20 r=2 "Filament extruding & with correct color?" -"Filament extrude et avec bonne couleur ?" +"Filament extrude et avec bonne couleur?" #MSG_NOT_LOADED c=19 "Filament not loaded" @@ -340,11 +340,11 @@ #MSG_FILE_INCOMPLETE c=20 r=2 "File incomplete. Continue anyway?" -"Fichier incomplet. Continuer qd meme ?" +"Fichier incomplet. Continuer qd meme?" #MSG_FINISHING_MOVEMENTS c=20 r=1 "Finishing movements" -"Mouvements de fin" +"Mouvement final" #MSG_V2_CALIBRATION c=17 r=1 "First layer cal." @@ -352,11 +352,11 @@ #MSG_WIZARD_SELFTEST c=20 r=8 "First, I will run the selftest to check most common assembly problems." -"D'abord, je vais lancer le Selftest pour verifier les problemes d'assemblage les plus communs." +"D'abord, je vais lancer le Auto-test pour verifier les problemes d'assemblage les plus communs." # "Fix the issue and then press button on MMU unit." -"Corrigez le probleme et appuyez sur le bouton de l'unite MMU." +"Corrigez le probleme et appuyez sur le bouton sur la MMU." #MSG_FLOW "Flow" @@ -368,7 +368,7 @@ #MSG_SELFTEST_COOLING_FAN c=20 "Front print fan?" -"Ventilo impr avant ?" +"Ventilo impr avant?" #MSG_BED_CORRECTION_FRONT c=14 r=1 "Front side[um]" @@ -384,7 +384,7 @@ #MSG_BED_HEATING_SAFETY_DISABLED "Heating disabled by safety timer." -"Chauffe desactivee par le compteur de securite." +"Chauffage desactivee par le compteur de securite." #MSG_HEATING_COMPLETE c=20 "Heating done." @@ -396,7 +396,7 @@ #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?" -"Bonjour, je suis votre imprimante Original Prusa i3. Voulez-vous que je vous guide a travers le processus d'installation ?" +"Bonjour, je suis votre imprimante Original Prusa i3. Voulez-vous que je vous guide a travers le processus d'installation?" #MSG_PRUSA3D_HOWTO "howto.prusa3d.com" @@ -420,11 +420,11 @@ #MSG_SELFTEST_CHECK_ENDSTOPS c=20 "Checking endstops" -"Verifications butees" +"Verification butees" #MSG_SELFTEST_CHECK_HOTEND c=20 "Checking hotend " -"Verif. tete impr." +"Verif. du hotend" #MSG_SELFTEST_CHECK_FSENSOR c=20 "Checking sensors " @@ -444,11 +444,11 @@ #MSG_CHOOSE_EXTRUDER c=20 r=1 "Choose extruder:" -"Choisir extrudeur :" +"Choisir extrudeur:" #MSG_CHOOSE_FILAMENT c=20 r=1 "Choose filament:" -"Choix du filament :" +"Choix du filament:" #MSG_FILAMENT c=17 r=1 "Filament" @@ -456,11 +456,11 @@ #MSG_WIZARD_XYZ_CAL c=20 r=8 "I will run xyz calibration now. It will take approx. 12 mins." -"Je vais maintenant lancer la calibration xyz. Cela prendra 12 min environ." +"Je vais maintenant lancer la calibration XYZ. Cela prendra 12 min environ." #MSG_WIZARD_Z_CAL c=20 r=8 "I will run z calibration now." -"Je vais maintenant lancer la calibration z." +"Je vais maintenant lancer la calibration Z." #MSG_WIZARD_V2_CAL_2 c=20 r=12 "I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration." @@ -472,7 +472,7 @@ # "Is filament 1 loaded?" -"Le filament 1 est-il charge ?" +"Fil.1 est-il charge?" #MSG_INSERT_FILAMENT c=20 "Insert filament" @@ -480,27 +480,27 @@ #MSG_WIZARD_FILAMENT_LOADED c=20 r=2 "Is filament loaded?" -"Le filament est-il charge ?" +"Fil. est-il charge?" #MSG_WIZARD_PLA_FILAMENT c=20 r=2 "Is it PLA filament?" -"Est-ce du filament PLA ?" +"Est-ce du filament PLA?" #MSG_PLA_FILAMENT_LOADED c=20 r=2 "Is PLA filament loaded?" -"Le filament PLA est-il charge ?" +"Fil. PLA est-il charge?" #MSG_STEEL_SHEET_CHECK c=20 r=2 "Is steel sheet on heatbed?" -"Feuille d'acier sur plateau chauffant ?" +"Plaque d'impression sur le lit chauffant?" # "Last print failures" -"Echecs derniere impr" +"Echecs derniere imp." # "Last print" -"Derniere impression" +"Derniere impres." #MSG_SELFTEST_EXTRUDER_FAN c=20 "Left hotend fan?" @@ -520,7 +520,7 @@ #MSG_BABYSTEP_Z "Live adjust Z" -"Ajuster Z en direct" +"Ajuster Z en dir." #MSG_LOAD_FILAMENT c=17 "Load filament" @@ -528,11 +528,11 @@ #MSG_LOADING_COLOR "Loading color" -"Chargement couleur" +"Charg. de la couleur" #MSG_LOADING_FILAMENT c=20 "Loading filament" -"Chargement filament" +"Chargement du fil." #MSG_LOOSE_PULLEY c=20 r=1 "Loose pulley" @@ -540,7 +540,7 @@ # "Load to nozzle" -"Charger dans la buse" +"Charger la buse" #MSG_M117_V2_CALIBRATION c=25 r=1 "M117 First layer cal." @@ -548,7 +548,7 @@ #MSG_MAIN "Main" -"Principal" +"Menu principal" #MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60 "Measuring reference height of calibration point" @@ -564,15 +564,15 @@ #MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4 "MMU OK. Resuming temperature..." -"MMU OK. Remontee en temperature..." +"MMU OK. Rechauffage de la buse..." # "Measured skew" -"Deviation mesuree" +"Deviat.mesuree" # "MMU fails" -"Echec MMU" +"Echecs MMU" # "MMU load failed " @@ -592,7 +592,7 @@ #MSG_SILENT_MODE_ON "Mode [silent]" -"Mode [silencieux]" +"Mode [feutre]" # "MMU needs user attention." @@ -604,7 +604,7 @@ #MSG_STEALTH_MODE_ON "Mode [Stealth]" -"Mode [Furtif]" +"Mode [furtif]" #MSG_AUTO_MODE_ON "Mode [auto power]" @@ -684,7 +684,7 @@ # "Now remove the test print from steel sheet." -"Retirez maintenant l'impression de test de la feuille d'acier." +"Retirez maintenant l'impression de test de la plaque en acier." # "Nozzle FAN" @@ -716,7 +716,7 @@ #MSG_WIZARD_CLEAN_HEATBED c=20 r=8 "Please clean heatbed and then press the knob." -"Nettoyez le plateau chauffant et appuyez sur le bouton." +"Nettoyez la plaque en acier et appuyez sur le bouton." #MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 "Please clean the nozzle for calibration. Click when done." @@ -724,11 +724,11 @@ #MSG_SELFTEST_PLEASECHECK "Please check :" -"Verifiez :" +"Verifiez:" #MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer." -"Merci de verifier notre manuel et de corriger le probleme. Poursuivez alors l'assistant en redemarrant l'imprimante." +"Merci de consulter notre manuel et de corriger le probleme. Poursuivez alors l'assistant en redemarrant l'imprimante." #MSG_WIZARD_LOAD_FILAMENT c=20 r=8 "Please insert PLA filament to the extruder, then press knob to load it." @@ -744,7 +744,7 @@ #MSG_PLACE_STEEL_SHEET c=20 r=4 "Please place steel sheet on heatbed." -"Placez la feuille d'acier sur le plateau chauffant." +"Placez la plaque en acier sur le plateau chauffant." #MSG_PRESS_TO_UNLOAD c=20 r=4 "Please press the knob to unload filament" @@ -752,7 +752,7 @@ # "Please insert PLA filament to the first tube of MMU, then press the knob to load it." -"Veuillez inserer du filament PLA dans le premier tube du MMU, et pressez sur le bouton pour le charger." +"Inserez du PLA dans le 1er tube du MMU, appuyez sur le bouton pour le charger." #MSG_PULL_OUT_FILAMENT c=20 r=4 "Please pull out filament immediately" @@ -764,7 +764,7 @@ #MSG_REMOVE_STEEL_SHEET c=20 r=4 "Please remove steel sheet from heatbed." -"Retirez la feuille d'acier du plateau chauffant." +"Retirez la plaque en acier du plateau chauffant." #MSG_RUN_XYZ c=20 r=4 "Please run XYZ calibration first." @@ -780,7 +780,7 @@ # "Please remove shipping helpers first." -"Veuillez retirer d'abord les protections d'envoi." +"Retirez d'abord les protections de transport." #MSG_PREHEAT_NOZZLE c=20 "Preheat the nozzle!" @@ -810,21 +810,21 @@ "Print aborted" "Impression annulee" -# +# c=20 r=1 "Preheating to load" "Chauffe pour charger" -# +# c=20 r=1 "Preheating to unload" -"Chauffe pr decharger" +"Chauf.pour decharger" #MSG_SELFTEST_PRINT_FAN_SPEED c=18 "Print fan:" -"Vent.impr:" +"Vent. impr:" #MSG_CARD_MENU "Print from SD" -"Impr depuis la SD" +"Impr. depuis la SD" # "Press the knob" @@ -836,7 +836,7 @@ # "Press the knob to resume nozzle temperature." -"Appuyez sur le bouton pour poursuivre la mise en temperature de la buse." +"Appuyez sur le bouton pour rechauffer la buse." #MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow." @@ -844,7 +844,7 @@ # "Print FAN" -"Vent.impr" +"Vent. impr" #MSG_PRUSA3D "prusa3d.com" @@ -868,7 +868,7 @@ #MSG_CALIBRATE_BED_RESET "Reset XYZ calibr." -"Reinit.calibr. XYZ" +"Reinit. calib. XYZ" #MSG_BED_CORRECTION_RESET "Reset" @@ -896,7 +896,7 @@ #MSG_WIZARD_RERUN c=20 r=7 "Running Wizard will delete current calibration results and start from the beginning. Continue?" -"Lancer l'Assistant supprimera les resultats actuels de calibration et commencera du debut. Continuer ?" +"Lancement de l'Assistant supprimera les resultats actuels de calibration et commencera du debut. Continuer?" #MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1 "SD card [normal]" @@ -904,7 +904,7 @@ #MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1 "SD card [flshAir]" -"CarteSD[flashAir]" +"CarteSD [flshAir]" # "Right" @@ -932,7 +932,7 @@ #MSG_SELFTEST_ERROR "Selftest error !" -"Erreur auto-test !" +"Erreur auto-test!" #MSG_SELFTEST_FAILED c=20 "Selftest failed " @@ -948,11 +948,11 @@ # "Select PLA filament:" -"Selectionnez le filament PLA :" +"Selectionnez le fil. PLA:" #MSG_SET_TEMPERATURE c=19 r=1 "Set temperature:" -"Regler temp. :" +"Regler temp.:" #MSG_SETTINGS "Settings" @@ -979,8 +979,8 @@ "Tri [heure]" # -"Severe skew" -"Deviat.sev." +"Severe skew:" +"Deviat.sev.:" #MSG_SORT_ALPHA c=17 r=1 "Sort [alphabet]" @@ -995,8 +995,8 @@ "Son [fort]" # -"Slight skew" -"Deviat.leg." +"Slight skew:" +"Deviat.leg.:" #MSG_SOUND_MUTE c=17 r=1 "Sound [mute]" @@ -1004,7 +1004,7 @@ # "Some problem encountered, Z-leveling enforced ..." -"Problemes rencontres, nivellement de l'axe Z applique..." +"Probleme rencontre, cliquez sur le bouton pour niveller l'axe Z..." #MSG_SOUND_ONCE c=17 r=1 "Sound [once]" @@ -1012,7 +1012,7 @@ #MSG_SOUND_SILENT c=17 r=1 "Sound [silent]" -"Son [silencieux]" +"Son [feutre]" #MSG_SPEED "Speed" @@ -1080,7 +1080,7 @@ #MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4 "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow." -"Il y a encore besoin d'effectuer la calibration Z. Veuillez suivre le manuel, chapitre Premiers pas, section Processus de calibration." +"Il faut toujours effectuer la Calibration Z. Veuillez suivre le manuel, chapitre Premiers pas, section Processus de calibration." # "Total filament" @@ -1148,23 +1148,23 @@ # "Use unload to remove filament 1 if it protrudes outside of the rear MMU tube. Use eject if it is hidden in tube." -"Utilisez decharger pour retirer le filament 1 s'il depasse du tube arriere du MMU. Utilisez ejecter s'il est cache dans le tube." +"Utilisez Remonter le fil. pour retirer le filament 1 s'il depasse du tube arriere du MMU. Utilisez ejecter s'il est cache dans le tube." #MSG_CHANGED_BOTH c=20 r=4 "Warning: both printer type and motherboard type changed." -"Attention : Types d'imprimante et de carte mere modifies" +"Attention: Types d'imprimante et de carte mere modifies" #MSG_CHANGED_MOTHERBOARD c=20 r=4 "Warning: motherboard type changed." -"Attention : Type de carte mere modifie." +"Attention: Type de carte mere modifie." #MSG_CHANGED_PRINTER c=20 r=4 "Warning: printer type changed." -"Attention : Type d'imprimante modifie" +"Attention: Type d'imprimante modifie" #MSG_UNLOAD_SUCCESSFUL c=20 r=2 "Was filament unload successful?" -"Dechargement du filament reussi ?" +"Dechargement du filament reussi?" #MSG_SELFTEST_WIRINGERROR "Wiring error" @@ -1188,7 +1188,7 @@ #MSG_WIZARD_QUIT c=20 r=8 "You can always resume the Wizard from Calibration -> Wizard." -"Vous pouvez toujours relancer l'assistant dans Calibration-> Assistant." +"Vous pouvez toujours relancer l'Assistant dans Calibration > Assistant." #MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 "XYZ calibration all right. Skew will be corrected automatically." @@ -1196,7 +1196,7 @@ #MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 "XYZ calibration all right. X/Y axes are slightly skewed. Good job!" -"Calibration XYZ OK. Les axes X/Y sont legerement non perpendiculaires. Bon boulot !" +"Calibration XYZ OK. Les axes X/Y sont legerement non perpendiculaires. Bon boulot!" # "X-correct:" @@ -1204,11 +1204,11 @@ #MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" -"Calibration XYZ OK. Les axes X/Y sont perpendiculaires. Felicitations !" +"Calibration XYZ OK. Les axes X/Y sont perpendiculaires. Felicitations!" #MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 "XYZ calibration compromised. Front calibration points not reachable." -"Calibration XYZ compromise. Les points de calibration avant ne sont pas atteignables." +"Calibration XYZ compromise. Les points de calibration en avant ne sont pas atteignables." #MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 "XYZ calibration compromised. Right front calibration point not reachable." @@ -1216,7 +1216,7 @@ #MSG_LOAD_ALL c=17 "Load all" -"Tout charger" +"Charger un par un" # "XYZ calibration failed. Bed calibration point was not found." @@ -1224,7 +1224,7 @@ # "XYZ calibration failed. Front calibration points not reachable." -"Echec calibration XYZ. Les points de calibration avant ne sont pas atteignables." +"Echec calibration XYZ. Les points de calibration en avant ne sont pas atteignables." # "XYZ calibration failed. Right front calibration point not reachable." @@ -1280,15 +1280,15 @@ # "Magnets comp.[N/A]" -"Comp. aimants[N/A]" +"Compens. aim.[N/A]" # "Magnets comp.[Off]" -"Comp. aimants[Off]" +"Compens. aim.[off]" # "Magnets comp. [On]" -"Comp. aimants [On]" +"Compens. aim. [on]" # "Mesh [3x3]" @@ -1308,11 +1308,11 @@ # "MMU Mode [Normal]" -"Mode MMU [Normal]" +"Mode MMU [normal]" # "MMU Mode[Stealth]" -"Mode MMU [Furtif]" +"Mode MMU [feutre]" # "Mode change in progress ..." @@ -1368,7 +1368,7 @@ # "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled." -"Le G-code a ete prepare pour une autre version de l'imprimante. Veuillez decouper le modele a nouveau. L'impression a ete annulee. " +"Le G-code a ete prepare pour une autre version de l'imprimante. Veuillez decouper le modele a nouveau. L'impression a ete annulee." # "G-code sliced for a newer firmware. Continue?" @@ -1376,27 +1376,27 @@ # "G-code sliced for a newer firmware. Please update the firmware. Print cancelled." -"Le G-code a ete prepare pour une version plus recente du firmware. Veuillez mettre a jour le firmware. L'impression annulee." +"Le G-code a ete prepare pour une version plus recente du firmware. Veuillez mettre a jour le firmware. L'impression annulee." # "PINDA:" "PINDA:" -# +# c=20 r=1 "Preheating to cut" -"Prechauffage pour couper" +"Chauffe pour couper" -# +# c=20 r=1 "Preheating to eject" -"Prechauffage pour ejecter" +"Chauf. pour remonter" # "Printer nozzle diameter differs from the G-code. Continue?" -"Diametre de la buse de l'imprimante different du G-Code. Continuer ?" +"Diametre de la buse dans les reglages ne correspond pas a celui dans le G-Code. Continuer?" # "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled." -"Diametre de la buse de l'imprimante different du G-Code. Merci de verifier le parametre dans les reglages. Impression annulee." +"Diametre de la buse dans les reglages ne correspond pas a celui dans le G-Code. Merci de verifier le parametre dans les reglages. Impression annulee." # "Rename" @@ -1412,11 +1412,11 @@ # "Sheet" -"Feuille" +"Plaque" # "Sound [assist]" -"Son [Assist]" +"Son [assist]" # "Steel sheets" @@ -1428,8 +1428,13 @@ # "Z-probe nr. [1]" -"Sonde-Z num. [1]" +"Mesurer x-fois [1]" # "Z-probe nr. [3]" -"Sonde-Z num. [3]" +"Mesurer x-fois [3]" + +# +"Z-probe nr. [5]" +"Mesurer x-fois [5]" + diff --git a/lang/lang_en_it.txt b/lang/lang_en_it.txt index 0ee9dbec9..9895e8891 100755 --- a/lang/lang_en_it.txt +++ b/lang/lang_en_it.txt @@ -979,8 +979,8 @@ "Ordina [tempo]" # -"Severe skew" -"Devia.grave" +"Severe skew:" +"Devia.grave:" #MSG_SORT_ALPHA c=17 r=1 "Sort [alphabet]" @@ -995,8 +995,8 @@ "Suono [forte]" # -"Slight skew" -"Devia.lieve" +"Slight skew:" +"Devia.lieve:" #MSG_SOUND_MUTE c=17 r=1 "Sound [mute]" diff --git a/lang/lang_en_pl.txt b/lang/lang_en_pl.txt index 602775ff9..36a0f3965 100755 --- a/lang/lang_en_pl.txt +++ b/lang/lang_en_pl.txt @@ -979,8 +979,8 @@ "Sortowanie [czas]" # -"Severe skew" -"ZnacznySkos" +"Severe skew:" +"Znaczny skos:" #MSG_SORT_ALPHA c=17 r=1 "Sort [alphabet]" @@ -995,8 +995,8 @@ "Dzwiek [Glosny]" # -"Slight skew" -"Lekki skos" +"Slight skew:" +"Lekki skos:" #MSG_SOUND_MUTE c=17 r=1 "Sound [mute]" From 2541ceccc988af05779f44abcb4795215d6ab423 Mon Sep 17 00:00:00 2001 From: DRracer Date: Mon, 16 Sep 2019 16:20:19 +0200 Subject: [PATCH 14/25] PL translation tuning --- lang/lang_en_pl.txt | 69 +++++++++++++++++++++++---------------------- 1 file changed, 36 insertions(+), 33 deletions(-) diff --git a/lang/lang_en_pl.txt b/lang/lang_en_pl.txt index 36a0f3965..e3d434d7c 100755 --- a/lang/lang_en_pl.txt +++ b/lang/lang_en_pl.txt @@ -52,7 +52,7 @@ # "SpoolJoin [N/A]" -"SpoolJoin [nd]" +"SpoolJoin [N/D]" #MSG_AUTO_DEPLETE_OFF c=17 r=1 "SpoolJoin [off]" @@ -64,7 +64,7 @@ #MSG_AUTOLOAD_FILAMENT c=17 "AutoLoad filament" -"AutoLadowanie fil." +"Autoladowanie fil." #MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 "Autoloading filament available only when filament sensor is turned on..." @@ -96,7 +96,7 @@ #MSG_BED_CORRECTION_MENU "Bed level correct" -"Korekta poziomowania stolu" +"Korekta stolu" #MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4 "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset." @@ -176,7 +176,7 @@ #MSG_CRASHDETECT_NA "Crash det. [N/A]" -"Wykr.zderzen[n/d]" +"Wykr.zderzen[N/D]" #MSG_CRASHDETECT_OFF "Crash det. [off]" @@ -204,7 +204,7 @@ #MSG_DISABLE_STEPPERS "Disable steppers" -"Wylaczenie silnikow" +"Wylacz silniki" #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." @@ -256,11 +256,11 @@ #MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18 "Extruder fan:" -"Went. ekstr:" +"WentHotend:" #MSG_INFO_EXTRUDER c=15 r=1 "Extruder info" -"Informacje o ekstruderze" +"Ekstruder - info" #MSG_MOVE_E "Extruder" @@ -272,7 +272,7 @@ #MSG_FSENS_AUTOLOAD_ON c=17 r=1 "F. autoload [on]" -"Autolad. fil [wl]" +"Autolad.fil. [wl]" #MSG_FSENS_AUTOLOAD_NA c=17 r=1 "F. autoload [N/A]" @@ -320,7 +320,7 @@ #MSG_FILAMENT_CLEAN c=20 r=2 "Filament extruding & with correct color?" -"Filament wychodzi z dyszy a kolor jest czysty?" +"Filament wychodzi z dyszy, kolor jest ok?" #MSG_NOT_LOADED c=19 "Filament not loaded" @@ -516,7 +516,7 @@ # "Lin. correction" -"Korekcja lin." +"Korekcja liniowa" #MSG_BABYSTEP_Z "Live adjust Z" @@ -604,7 +604,7 @@ #MSG_STEALTH_MODE_ON "Mode [Stealth]" -"Tryb [Stealth]" +"Tryb [cichy]" #MSG_AUTO_MODE_ON "Mode [auto power]" @@ -688,7 +688,7 @@ # "Nozzle FAN" -"Went. Hotend" +"WentHotend" #MSG_PAUSE_PRINT "Pause print" @@ -720,7 +720,7 @@ #MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 "Please clean the nozzle for calibration. Click when done." -"Dla prawidl. kalibracji nalezy oczyscic dysze. Potw. guzikiem." +"Dla prawidlowej kalibracji nalezy oczyscic dysze. Potwierdz guzikiem." #MSG_SELFTEST_PLEASECHECK "Please check :" @@ -820,7 +820,7 @@ #MSG_SELFTEST_PRINT_FAN_SPEED c=18 "Print fan:" -"Went.wydr:" +"WentWydruk:" #MSG_CARD_MENU "Print from SD" @@ -840,11 +840,11 @@ #MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow." -"Drukarka nie zostala jeszcze skalibrowana. Kieruj sie Samouczkiem: rozdzial Pierwsze Kroki, sekcja Konfiguracja przed drukowaniem." +"Drukarka nie byla jeszcze kalibrowana. Kieruj sie Samouczkiem: rozdzial Pierwsze Kroki, sekcja Konfiguracja przed drukowaniem." # "Print FAN" -"Went.wydr" +"WentWydruk" #MSG_PRUSA3D "prusa3d.com" @@ -924,7 +924,7 @@ #MSG_SELFTEST_START c=20 "Self test start " -"Rozpoczynanie Selftestu" +"Selftest startuje" #MSG_SELFTEST "Selftest " @@ -932,7 +932,7 @@ #MSG_SELFTEST_ERROR "Selftest error !" -"Blad selftest !" +"Blad selftest!" #MSG_SELFTEST_FAILED c=20 "Selftest failed " @@ -952,7 +952,7 @@ #MSG_SET_TEMPERATURE c=19 r=1 "Set temperature:" -"Ustaw. temperatury:" +"Ustaw temperature:" #MSG_SETTINGS "Settings" @@ -984,7 +984,7 @@ #MSG_SORT_ALPHA c=17 r=1 "Sort [alphabet]" -"Sortowan[alfabet]" +"Sortowanie[alfab]" #MSG_SORTING c=20 r=1 "Sorting files" @@ -992,7 +992,7 @@ #MSG_SOUND_LOUD c=17 r=1 "Sound [loud]" -"Dzwiek [Glosny]" +"Dzwiek [glosny]" # "Slight skew:" @@ -1000,11 +1000,11 @@ #MSG_SOUND_MUTE c=17 r=1 "Sound [mute]" -"Dzwiek[Wylaczony]" +"Dzwiek[wylaczony]" # "Some problem encountered, Z-leveling enforced ..." -"Wykryto problem, wymuszono poziomowanie osi Z ..." +"Wykryto problem, wymuszono poziomowanie osi Z." #MSG_SOUND_ONCE c=17 r=1 "Sound [once]" @@ -1012,7 +1012,7 @@ #MSG_SOUND_SILENT c=17 r=1 "Sound [silent]" -"Dzwiek [Cichy]" +"Dzwiek [cichy]" #MSG_SPEED "Speed" @@ -1084,11 +1084,11 @@ # "Total filament" -"Calkowita dlugosc filamentu" +"Zuzycie filamentu" # "Total print time" -"Calkowity czas druku" +"Laczny czas druku" #MSG_TUNE "Tune" @@ -1280,7 +1280,7 @@ # "Magnets comp.[N/A]" -"Kor. magnesow [nd]" +"Kor. magnesow[N/D]" # "Magnets comp.[Off]" @@ -1300,7 +1300,7 @@ # "Mesh bed leveling" -"Poziomowanie wg siatki" +"Poziomowanie stolu" # "MK3S firmware detected on MK3 printer" @@ -1413,10 +1413,9 @@ # "Sheet" "Plyta" - # -"Sound [assist]" -"Dzwiek [asyst.]" +"Sound [assist]" +"Dzwiek [asyst.]" # "Steel sheets" @@ -1428,8 +1427,12 @@ # "Z-probe nr. [1]" -"Pomiar-Z [1]" +"Ilosc Pomiarow [1]" # "Z-probe nr. [3]" -"Pomiar-Z [3]" +"Ilosc Pomiarow [3]" + +# +"Z-probe nr. [5]" +"Ilosc Pomiarow [5]" From b4e0c2f455ff3ec43a4e7e29ae038cbd1592c59b Mon Sep 17 00:00:00 2001 From: michalrudolf <55433770+michalrudolf@users.noreply.github.com> Date: Tue, 17 Sep 2019 10:51:43 +0200 Subject: [PATCH 15/25] Update ultralcd.cpp MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Menu Support -> XYZ calibration details -> 3. obrazovka "point offset" X value is no longer moved to the left if there’s no negative sign --- Firmware/ultralcd.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 608b8c291..a78063ada 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3023,9 +3023,9 @@ static void lcd_menu_xyz_offset() for (uint_least8_t i = 0; i < 2; i++) { - lcd_puts_at_P(11, i + 2, PSTR("")); + lcd_puts_at_P((cntr[i] < 0) ? 10 : 11, i + 2, PSTR("")); lcd_print(cntr[i]); - lcd_puts_at_P((cntr[i] < 0) ? 17 : 16, i + 2, PSTR("mm")); + lcd_puts_at_P(16, i + 2, PSTR("mm")); } menu_back_if_clicked(); } From b660cb39087a1e465d56589fc899817a65b6cc26 Mon Sep 17 00:00:00 2001 From: michalrudolf <55433770+michalrudolf@users.noreply.github.com> Date: Tue, 17 Sep 2019 11:46:29 +0200 Subject: [PATCH 16/25] ultralcd.cpp --- Firmware/ultralcd.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index a78063ada..151b4918e 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3023,7 +3023,7 @@ static void lcd_menu_xyz_offset() for (uint_least8_t i = 0; i < 2; i++) { - lcd_puts_at_P((cntr[i] < 0) ? 10 : 11, i + 2, PSTR("")); + lcd_set_cursor((cntr[i] < 0) ? 10 : 11, i+2); lcd_print(cntr[i]); lcd_puts_at_P(16, i + 2, PSTR("mm")); } From 96012784fd754a9423d48af4bc5c50c01e5adea4 Mon Sep 17 00:00:00 2001 From: DRracer Date: Tue, 17 Sep 2019 16:30:40 +0200 Subject: [PATCH 17/25] Fine tuning German translation --- lang/lang_en_de.txt | 44 ++++++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/lang/lang_en_de.txt b/lang/lang_en_de.txt index 00d48eca6..b2f63cf0d 100755 --- a/lang/lang_en_de.txt +++ b/lang/lang_en_de.txt @@ -64,7 +64,7 @@ #MSG_AUTOLOAD_FILAMENT c=17 "AutoLoad filament" -"Auto-Laden Filament" +"AutoLaden Filament" #MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 "Autoloading filament available only when filament sensor is turned on..." @@ -320,7 +320,7 @@ #MSG_FILAMENT_CLEAN c=20 r=2 "Filament extruding & with correct color?" -"Filament extrudiert + richtige Farbe?" +"Filament extrudiert mit richtiger Farbe?" #MSG_NOT_LOADED c=19 "Filament not loaded" @@ -556,11 +556,11 @@ #MSG_MESH_BED_LEVELING "Mesh Bed Leveling" -"Mesh Bett Ausgleich" +"MeshBett Ausgleich" #MSG_MMU_OK_RESUMING_POSITION c=20 r=4 "MMU OK. Resuming position..." -"MMU OK. Position wiederherstellen... " +"MMU OK. Position wiederherstellen..." #MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4 "MMU OK. Resuming temperature..." @@ -828,7 +828,7 @@ # "Press the knob" -"Knopf druecken" +"Knopf druecken zum" #MSG_PRINT_PAUSED c=20 r=1 "Print paused" @@ -844,7 +844,7 @@ # "Print FAN" -"Druckvent" +"Druckvent." #MSG_PRUSA3D "prusa3d.com" @@ -868,7 +868,7 @@ #MSG_CALIBRATE_BED_RESET "Reset XYZ calibr." -"XYZ Kalibr. zuruecksetzen." +"Reset XYZ Kalibr." #MSG_BED_CORRECTION_RESET "Reset" @@ -936,7 +936,7 @@ #MSG_SELFTEST_FAILED c=20 "Selftest failed " -"Selbsttest misslang " +"Selbsttest Error " #MSG_FORCE_SELFTEST c=20 r=8 "Selftest will be run to calibrate accurate sensorless rehoming." @@ -1104,11 +1104,11 @@ # "to load filament" -"zum Filament laden" +"Filament laden" # "to unload filament" -"zum Filament entladen" +"Filament entladen" #MSG_UNLOAD_FILAMENT c=17 "Unload filament" @@ -1249,7 +1249,7 @@ # "Checks" -"\x00" +"Kontrolle" # "False triggering" @@ -1265,11 +1265,11 @@ # "Firmware [strict]" -"Firmware [streng]" +"Firmware [strikt]" # "Firmware [warn]" -"\x00" +"Firmware [warnen]" # "HW Setup" @@ -1293,15 +1293,15 @@ # "Mesh [3x3]" -"\x00" +"Gitter [3x3]" # "Mesh [7x7]" -"\x00" +"Gitter [7x7]" # "Mesh bed leveling" -"Mesh Bett Ausgleich" +"MeshBett Ausgleich" # "MK3S firmware detected on MK3 printer" @@ -1325,11 +1325,11 @@ # "Model [strict]" -"Modell [streng]" +"Modell [strikt]" # "Model [warn]" -"Modell [warn]" +"Modell [warnen]" # "Nozzle d. [0.25]" @@ -1349,11 +1349,11 @@ # "Nozzle [strict]" -"Duese [streng]" +"Duese [strikt]" # "Nozzle [warn]" -"Duese [warn]" +"Duese [warnen]" # "G-code sliced for a different level. Continue?" @@ -1434,3 +1434,7 @@ # "Z-probe nr. [3]" "Z-Probe Nr. [3]" + +# +"Z-probe nr. [5]" +"Z-Probe Nr. [5]" From 14933f6b0e26894789af1284ad1b529f65a9e508 Mon Sep 17 00:00:00 2001 From: DRracer Date: Tue, 17 Sep 2019 16:50:51 +0200 Subject: [PATCH 18/25] Fix. Sound [assist], Z-probe [5], menu_fmt_float13off format for last string parameter from PROGMEM --- Firmware/menu.cpp | 2 +- lang/lang_en_cz.txt | 8 ++++++-- lang/lang_en_de.txt | 4 ++-- lang/lang_en_es.txt | 8 ++++++-- lang/lang_en_fr.txt | 4 ++-- lang/lang_en_it.txt | 8 ++++++-- 6 files changed, 23 insertions(+), 11 deletions(-) diff --git a/Firmware/menu.cpp b/Firmware/menu.cpp index bb721dba9..352191024 100755 --- a/Firmware/menu.cpp +++ b/Firmware/menu.cpp @@ -399,7 +399,7 @@ const char menu_fmt_float31[] PROGMEM = "%-12.12S%+8.1f"; const char menu_fmt_float13[] PROGMEM = "%c%-13.13S%+5.3f"; -const char menu_fmt_float13off[] PROGMEM = "%c%-13.13S%6.6s"; +const char menu_fmt_float13off[] PROGMEM = "%c%-13.13S%6.6S"; template static void menu_draw_P(char chr, const char* str, int16_t val); diff --git a/lang/lang_en_cz.txt b/lang/lang_en_cz.txt index 8d8bed552..2b5c5540c 100755 --- a/lang/lang_en_cz.txt +++ b/lang/lang_en_cz.txt @@ -1415,8 +1415,8 @@ "Plat" # -"Sound [assist]" -"Zvuk [Asist.]" +"Sound [assist]" +"Zvuk [Asist.]" # "Steel sheets" @@ -1433,3 +1433,7 @@ # "Z-probe nr. [3]" "Pocet mereni Z [3]" + +# +"Z-probe nr. [5]" +"Pocet mereni Z [5]" diff --git a/lang/lang_en_de.txt b/lang/lang_en_de.txt index b2f63cf0d..266d3c26d 100755 --- a/lang/lang_en_de.txt +++ b/lang/lang_en_de.txt @@ -1416,8 +1416,8 @@ "Blech" # -"Sound [assist]" -"Sound [Assist]" +"Sound [assist]" +"Sound [Assist]" # "Steel sheets" diff --git a/lang/lang_en_es.txt b/lang/lang_en_es.txt index bcf3794ab..d2a99c721 100755 --- a/lang/lang_en_es.txt +++ b/lang/lang_en_es.txt @@ -1415,8 +1415,8 @@ "Lamina" # -"Sound [assist]" -"Sonido [asistido]" +"Sound [assist]" +"Sonido [asistido]" # "Steel sheets" @@ -1433,3 +1433,7 @@ # "Z-probe nr. [3]" "Z-sensor nr. [3]" + +# +"Z-probe nr. [5]" +"Z-sensor nr. [5]" diff --git a/lang/lang_en_fr.txt b/lang/lang_en_fr.txt index 3f53ff9ab..5a33f9b54 100755 --- a/lang/lang_en_fr.txt +++ b/lang/lang_en_fr.txt @@ -1415,8 +1415,8 @@ "Plaque" # -"Sound [assist]" -"Son [assist]" +"Sound [assist]" +"Son [assist]" # "Steel sheets" diff --git a/lang/lang_en_it.txt b/lang/lang_en_it.txt index 9895e8891..2a7277d4e 100755 --- a/lang/lang_en_it.txt +++ b/lang/lang_en_it.txt @@ -1415,8 +1415,8 @@ "Piano" # -"Sound [assist]" -"Suono [assistito]" +"Sound [assist]" +"Suono [assistito]" # "Steel sheets" @@ -1433,3 +1433,7 @@ # "Z-probe nr. [3]" "Z-probe nr. [3]" + +# +"Z-probe nr. [5]" +"Z-probe nr. [5]" From e7273ea50522d3fb52c0bfeac3d608305e41b023 Mon Sep 17 00:00:00 2001 From: DRracer Date: Wed, 18 Sep 2019 12:49:44 +0200 Subject: [PATCH 19/25] Fix [French translation] Wrong display during mesh bed calibration #2218 minor code/doc improvements --- Firmware/ultralcd.cpp | 21 ++++++++++++++------- lang/lang_en_fr.txt | 2 +- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 26d78b645..ec36acef0 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -1674,9 +1674,12 @@ static void lcd_cooldown() //! It would have been much easier if there was a ':' in the labels. //! But since the texts like Bed, Nozzle and PINDA are used in other places //! it is better to reuse these texts even though it requires some extra formatting code. +//! @param [in] ipgmLabel pointer to string in PROGMEM +//! @param [out] pointer to string in RAM which will receive the formatted text. Must be allocated to appropriate size +//! @param [in] dstSize allocated length of dst static void pgmtext_with_colon(const char *ipgmLabel, char *dst, uint8_t dstSize){ uint8_t i = 0; - for(; i < dstSize - 2; ++i){ // 1 byte less than buffer, we'd be adding a ':' to the end + for(; i < dstSize - 2; ++i){ // 2 byte less than buffer, we'd be adding a ':' to the end uint8_t b = pgm_read_byte(ipgmLabel + i); if( ! b ) break; @@ -1686,7 +1689,7 @@ static void pgmtext_with_colon(const char *ipgmLabel, char *dst, uint8_t dstSize ++i; for(; i < dstSize - 1; ++i) // fill the rest with spaces dst[i] = ' '; - dst[dstSize-1] = 0; // terminate the string properly + dst[dstSize-1] = '\0'; // terminate the string properly } void lcd_menu_extruder_info() // NOT static due to using inside "Marlin_main" module ("manage_inactivity()") @@ -1701,9 +1704,10 @@ void lcd_menu_extruder_info() // NOT static due to using ins // Display Nozzle fan RPM lcd_timeoutToStatus.stop(); //infinite timeout lcd_home(); - char nozzle[12], print[12]; - pgmtext_with_colon(_i("Nozzle FAN"), nozzle, 12); - pgmtext_with_colon(_i("Print FAN"), print, 12); + static const size_t maxChars = 12; + char nozzle[maxChars], print[maxChars]; + pgmtext_with_colon(_i("Nozzle FAN"), nozzle, maxChars); + pgmtext_with_colon(_i("Print FAN"), print, maxChars); lcd_printf_P(_N("%s %4d RPM\n" "%s %4d RPM\n"), nozzle, 60*fan_speed[0], print, 60*fan_speed[1] ); #ifdef PAT9125 @@ -1888,9 +1892,12 @@ static void lcd_menu_debug() #endif /* DEBUG_BUILD */ //! @brief common line print for lcd_menu_temperatures +//! @param [in] ipgmLabel pointer to string in PROGMEM +//! @param [in] value to be printed behind the label static void lcd_menu_temperatures_line(const char *ipgmLabel, int value){ - char tmp[15]; - pgmtext_with_colon(ipgmLabel, tmp, 15); + static const size_t maxChars = 15; + char tmp[maxChars]; + pgmtext_with_colon(ipgmLabel, tmp, maxChars); lcd_printf_P(PSTR(" %s%3d\x01 \n"), tmp, value); // no need to add -14.14 to string alignment } static void lcd_menu_temperatures() diff --git a/lang/lang_en_fr.txt b/lang/lang_en_fr.txt index 5a33f9b54..d3256935a 100755 --- a/lang/lang_en_fr.txt +++ b/lang/lang_en_fr.txt @@ -136,7 +136,7 @@ #MSG_CALIBRATE_Z_AUTO c=20 r=2 "Calibrating Z" -"Calibration de Z" +"Calibration 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." From a595294037eda8682b23b3a76e5060e837f86e1d Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Wed, 18 Sep 2019 13:05:38 +0200 Subject: [PATCH 20/25] Documentation update for git-bash ... ... as Linux does not handle spaces in folder names well. --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index dc8379f85..8b04c0c97 100644 --- a/README.md +++ b/README.md @@ -123,10 +123,10 @@ _notes: Script and instructions contributed by 3d-gussner. Use at your own risk. - Download and install the 64bit Git version https://git-scm.com/download/win - Also follow these instructions https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058 - Download and install 7z-zip from its official website https://www.7-zip.org/ - By default, it is installed under the directory /c/Program Files/7-Zip in Windows 10 + By default, it is installed under the directory /c/Program\ Files/7-Zip in Windows 10 - Run `Git-Bash` under Administrator privilege -- navigate to the directory /c/Program Files/Git/mingw64/bin -- run `ln -s /c/Program Files/7-Zip/7z.exe zip.exe` +- navigate to the directory /c/Program\ Files/Git/mingw64/bin +- run `ln -s /c/Program\ Files/7-Zip/7z.exe zip.exe` #### Compile Prusa-firmware with Git-bash installed - open Git-bash From 2944c3fd59a1c39ecc18b32b39a603d3ee2c4c7b Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Wed, 18 Sep 2019 13:22:47 +0200 Subject: [PATCH 21/25] Add path examples for Non-english Windows As Windows in few languages has different Names for `Users` and `Program Files` added few examples in the documentation. --- README.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8b04c0c97..782ed6f7d 100644 --- a/README.md +++ b/README.md @@ -111,7 +111,9 @@ Now your Ubuntu subsystem is ready to use the automatic `PF-build.sh` script and - Unix and windows have different line endings (LF vs CRLF), try 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//Downloads/Prusa-Firmware-MK3` will be on a German Windows`/mnt/c/Anwender//Downloads/Prusa-Firmware-MK3` #### Compile Prusa-firmware with Ubuntu Linux subsystem installed - open Ubuntu bash - change to your source code folder (case sensitive) @@ -127,7 +129,10 @@ _notes: Script and instructions contributed by 3d-gussner. Use at your own risk. - Run `Git-Bash` under Administrator privilege - navigate to the directory /c/Program\ Files/Git/mingw64/bin - run `ln -s /c/Program\ Files/7-Zip/7z.exe zip.exe` - +- If your Windows isn't in English the Paths may look different + Example in other languages + - English `/mnt/c/Users//Downloads/Prusa-Firmware-MK3` will be on a German Windows`/mnt/c/Anwender//Downloads/Prusa-Firmware-MK3` + - English `ln -s /c/Program\ Files/7-Zip/7z.exe zip.exe` will be on a Spanish Windows `ln -s /c/Archivos\ de\ programa/7-Zip/7z.exe zip.exe` #### Compile Prusa-firmware with Git-bash installed - open Git-bash - change to your source code folder From bcf8774fd5f0f7d7ec6908122b327dee8cdb6fa6 Mon Sep 17 00:00:00 2001 From: DRracer Date: Wed, 18 Sep 2019 14:55:23 +0200 Subject: [PATCH 22/25] EN, IT, ES fixes Sound [assist] should work now ES, IT preliminary updates --- lang/lang_en.txt | 2 +- lang/lang_en_es.txt | 10 +++++----- lang/lang_en_it.txt | 16 ++++++++-------- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/lang/lang_en.txt b/lang/lang_en.txt index a39ae94b4..7661c3b80 100755 --- a/lang/lang_en.txt +++ b/lang/lang_en.txt @@ -1061,7 +1061,7 @@ "Sheet" # -"Sound [assist]" +"Sound [assist]" # "Steel sheets" diff --git a/lang/lang_en_es.txt b/lang/lang_en_es.txt index d2a99c721..feba1a0d1 100755 --- a/lang/lang_en_es.txt +++ b/lang/lang_en_es.txt @@ -24,7 +24,7 @@ #MSG_BABYSTEPPING_Z c=15 "Adjusting Z:" -"Ajustando Z:" +"Ajustar-Z:" #MSG_SELFTEST_CHECK_ALLCORRECT c=20 "All correct " @@ -216,7 +216,7 @@ #MSG_EXTRUDER_CORRECTION c=10 "E-correct:" -"Correccion-E:" +"Corregir-E:" #MSG_EJECT_FILAMENT c=17 r=1 "Eject filament" @@ -1200,7 +1200,7 @@ # "X-correct:" -"Correccion-X:" +"Corregir-X:" #MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" @@ -1236,7 +1236,7 @@ # "Y-correct:" -"Correccion-Y:" +"Corregir-Y:" #MSG_OFF " [off]" @@ -1424,7 +1424,7 @@ # "Z-correct:" -"Correccion-Z:" +"Corregir-Z:" # "Z-probe nr. [1]" diff --git a/lang/lang_en_it.txt b/lang/lang_en_it.txt index 2a7277d4e..bbb9fefc7 100755 --- a/lang/lang_en_it.txt +++ b/lang/lang_en_it.txt @@ -108,7 +108,7 @@ #MSG_MENU_BELT_STATUS c=15 r=1 "Belt status" -"Stato delle cinghie" +"Stato cinghie" #MSG_RECOVER_PRINT c=20 r=2 "Blackout occurred. Recover print?" @@ -272,7 +272,7 @@ #MSG_FSENS_AUTOLOAD_ON c=17 r=1 "F. autoload [on]" -"Autocar.filam[on]" +"Autocar.fil. [on]" #MSG_FSENS_AUTOLOAD_NA c=17 r=1 "F. autoload [N/A]" @@ -304,15 +304,15 @@ #MSG_FSENSOR_ON "Fil. sensor [on]" -"Sensor filam.[on]" +"Sensore fil. [on]" #MSG_FSENSOR_NA "Fil. sensor [N/A]" -"Sensor filam[N/A]" +"Sensore fil.[N/A]" #MSG_FSENSOR_OFF "Fil. sensor [off]" -"Sensor filam[off]" +"Sensore fil.[off]" # "Filam. runouts" @@ -348,7 +348,7 @@ #MSG_V2_CALIBRATION c=17 r=1 "First layer cal." -"Calibrazione primo layer." +"Cal. primo strato" #MSG_WIZARD_SELFTEST c=20 r=8 "First, I will run the selftest to check most common assembly problems." @@ -516,7 +516,7 @@ # "Lin. correction" -"Correzione lin." +"Correzione lineare" #MSG_BABYSTEP_Z "Live adjust Z" @@ -976,7 +976,7 @@ #MSG_SORT_TIME c=17 r=1 "Sort [time]" -"Ordina [tempo]" +"Ordina [chron.]" # "Severe skew:" From 36f5b082896664d2c11a5c9e739d557b46ec1c35 Mon Sep 17 00:00:00 2001 From: DRracer Date: Thu, 19 Sep 2019 08:42:49 +0200 Subject: [PATCH 23/25] update ES, IT --- lang/lang_en_es.txt | 2 +- lang/lang_en_it.txt | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/lang/lang_en_es.txt b/lang/lang_en_es.txt index feba1a0d1..d8d68fe2e 100755 --- a/lang/lang_en_es.txt +++ b/lang/lang_en_es.txt @@ -976,7 +976,7 @@ #MSG_SORT_TIME c=17 r=1 "Sort [time]" -"Ordenar [tiempo]" +"Ordenar [fecha]" # "Severe skew:" diff --git a/lang/lang_en_it.txt b/lang/lang_en_it.txt index bbb9fefc7..6537f78ed 100755 --- a/lang/lang_en_it.txt +++ b/lang/lang_en_it.txt @@ -72,7 +72,7 @@ #MSG_AUTOLOADING_ENABLED c=20 r=4 "Autoloading filament is active, just press the knob and insert filament..." -"Il caricamento automatico e attivo, premete la manopola e inserite il filamento..." +"Caricamento automatico attivo, premi la manopola e inserisci il filamento." #MSG_SELFTEST_AXIS_LENGTH "Axis length" @@ -172,15 +172,15 @@ #MSG_CRASHDETECT_ON "Crash det. [on]" -"Rilevam.imp. [on]" +"Rileva.crash [on]" #MSG_CRASHDETECT_NA "Crash det. [N/A]" -"Rilevam.imp.[N/A]" +"Rileva.crash[N/A]" #MSG_CRASHDETECT_OFF "Crash det. [off]" -"Rilevam.imp.[off]" +"Rileva.crash[off]" #MSG_CRASH_DETECTED c=20 r=1 "Crash detected." @@ -556,7 +556,7 @@ #MSG_MESH_BED_LEVELING "Mesh Bed Leveling" -"Mesh livel. letto" +"Livel. piatto" #MSG_MMU_OK_RESUMING_POSITION c=20 r=4 "MMU OK. Resuming position..." @@ -588,11 +588,11 @@ #MSG_STEALTH_MODE_OFF "Mode [Normal]" -"Modo [normale]" +"Mod. [normale]" #MSG_SILENT_MODE_ON "Mode [silent]" -"Modo [silenzioso]" +"Mod. [silenziosa]" # "MMU needs user attention." @@ -604,15 +604,15 @@ #MSG_STEALTH_MODE_ON "Mode [Stealth]" -"Modo [Silenziosa]" +"Mod. [silenziosa]" #MSG_AUTO_MODE_ON "Mode [auto power]" -"Modo [auto]" +"Mod. [auto]" #MSG_SILENT_MODE_OFF "Mode [high power]" -"Mode [forte]" +"Mod. [forte]" # "MMU2 connected" @@ -976,7 +976,7 @@ #MSG_SORT_TIME c=17 r=1 "Sort [time]" -"Ordina [chron.]" +"Ordina [cron.]" # "Severe skew:" @@ -1416,7 +1416,7 @@ # "Sound [assist]" -"Suono [assistito]" +"Suono [assist.]" # "Steel sheets" From 2afeb65811da6fd862b3fe60be8f5e4f5164dfc0 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Thu, 19 Sep 2019 18:39:25 +0200 Subject: [PATCH 24/25] return failStatsFmt that fell out in merge --- Firmware/ultralcd.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 6e513e2b0..144fb9187 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -1817,6 +1817,8 @@ static void lcd_menu_fails_stats_mmu_total() } #if defined(TMC2130) && defined(FILAMENT_SENSOR) +static const char failStatsFmt[] PROGMEM = "%S\n" " %-16.16S%-3d\n" " %-16.16S%-3d\n" " %-7.7SX %-3d Y %-3d"; + //! @brief Show Total Failures Statistics MMU //! //! @code{.unparsed} From 139c37c7448842fa5ffa6e647921b5df9f8d3659 Mon Sep 17 00:00:00 2001 From: DRracer Date: Fri, 20 Sep 2019 13:01:07 +0200 Subject: [PATCH 25/25] allow only one string translation constraint defintion per line --- Firmware/ultralcd.cpp | 44 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 144fb9187..77af6d5f4 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -1742,7 +1742,8 @@ void lcd_menu_extruder_info() // NOT static due to using ins pat9125_update(); lcd_printf_P(_N( "Fil. Xd:%3d Yd:%3d\n" ////c=4 r=1 - "Int: %3d Shut: %3d" ////c=4 r=1 ////c=4 r=1 + "Int: %3d " ////c=4 r=1 + "Shut: %3d" ////c=4 r=1 ), pat9125_x, pat9125_y, pat9125_b, pat9125_s @@ -1790,7 +1791,10 @@ static void lcd_menu_fails_stats_mmu_print() uint8_t fails = eeprom_read_byte((uint8_t*)EEPROM_MMU_FAIL); uint16_t load_fails = eeprom_read_byte((uint8_t*)EEPROM_MMU_LOAD_FAIL); lcd_home(); - lcd_printf_P(PSTR("%S\n" " %-16.16S%-3d\n" " %-16.16S%-3d"), _i("Last print failures"), _i("MMU fails"), fails, _i("MMU load fails"), load_fails); ////c=20 r=1 ////c=14 r=1 ////c=14 r=1 + lcd_printf_P(PSTR("%S\n" " %-16.16S%-3d\n" " %-16.16S%-3d"), + _i("Last print failures"), ////c=20 r=1 + _i("MMU fails"), fails, ////c=14 r=1 + _i("MMU load fails"), load_fails); ////c=14 r=1 menu_back_if_clicked_fb(); } @@ -1812,7 +1816,11 @@ static void lcd_menu_fails_stats_mmu_total() uint8_t fails = eeprom_read_byte((uint8_t*)EEPROM_MMU_FAIL_TOT); uint16_t load_fails = eeprom_read_byte((uint8_t*)EEPROM_MMU_LOAD_FAIL_TOT); lcd_home(); - lcd_printf_P(PSTR("%S\n" " %-16.16S%-3d\n" " %-16.16S%-3d\n" " %-16.16S%-3d"), _i("Total failures"), _i("MMU fails"), fails, _i("MMU load fails"), load_fails, _i("MMU power fails"), mmu_power_failures); ////c=20 r=1 ////c=14 r=1 ////c=14 r=1 ////c=14 r=1 + lcd_printf_P(PSTR("%S\n" " %-16.16S%-3d\n" " %-16.16S%-3d\n" " %-16.16S%-3d"), + _i("Total failures"), ////c=20 r=1 + _i("MMU fails"), fails, ////c=14 r=1 + _i("MMU load fails"), load_fails, ////c=14 r=1 + _i("MMU power fails"), mmu_power_failures); ////c=14 r=1 menu_back_if_clicked_fb(); } @@ -1838,7 +1846,11 @@ static void lcd_menu_fails_stats_total() uint16_t crashX = eeprom_read_word((uint16_t*)EEPROM_CRASH_COUNT_X_TOT); uint16_t crashY = eeprom_read_word((uint16_t*)EEPROM_CRASH_COUNT_Y_TOT); lcd_home(); - lcd_printf_P(failStatsFmt, _i("Total failures"), _i("Power failures"), power, _i("Filam. runouts"), filam, _i("Crash"), crashX, crashY); ////c=20 r=1 ////c=14 r=1 ////c=14 r=1 ////c=7 r=1 + lcd_printf_P(failStatsFmt, + _i("Total failures"), ////c=20 r=1 + _i("Power failures"), power, ////c=14 r=1 + _i("Filam. runouts"), filam, ////c=14 r=1 + _i("Crash"), crashX, crashY); ////c=7 r=1 menu_back_if_clicked_fb(); } @@ -1861,7 +1873,11 @@ static void lcd_menu_fails_stats_print() uint8_t crashX = eeprom_read_byte((uint8_t*)EEPROM_CRASH_COUNT_X); uint8_t crashY = eeprom_read_byte((uint8_t*)EEPROM_CRASH_COUNT_Y); lcd_home(); - lcd_printf_P(failStatsFmt, _i("Last print failures"), _i("Power failures"), power, _i("Filam. runouts"), filam, _i("Crash"), crashX, crashY); ////c=20 r=1 ////c=14 r=1 ////c=14 r=1 ////c=7 r=1 + lcd_printf_P(failStatsFmt, + _i("Last print failures"), ////c=20 r=1 + _i("Power failures"), power, ////c=14 r=1 + _i("Filam. runouts"), filam, ////c=14 r=1 + _i("Crash"), crashX, crashY); ////c=7 r=1 menu_back_if_clicked_fb(); } @@ -1912,7 +1928,10 @@ static void lcd_menu_fails_stats() uint8_t filamentLast = eeprom_read_byte((uint8_t*)EEPROM_FERROR_COUNT); uint16_t filamentTotal = eeprom_read_word((uint16_t*)EEPROM_FERROR_COUNT_TOT); lcd_home(); - lcd_printf_P(PSTR("Last print failures\n" " Filam. runouts %-3d\n" "Total failures\n" " Filam. runouts %-3d"), filamentLast, filamentTotal); ////c=20 r=1 ////c=14 r=1 ////c=20 r=1 ////c=14 r=1 + lcd_printf_P(PSTR("Last print failures\n" ////c=20 r=1 + " Filam. runouts %-3d\n" ////c=14 r=1 + "Total failures\n" ////c=20 r=1 + " Filam. runouts %-3d"), filamentLast, filamentTotal); ////c=14 r=1 menu_back_if_clicked(); } #else @@ -1948,7 +1967,10 @@ static void lcd_menu_debug() { #ifdef DEBUG_STACK_MONITOR lcd_home(); - lcd_printf_P(PSTR("RAM statistics\n" " SP_min: 0x%04x\n" " heap_start: 0x%04x\n" " heap_end: 0x%04x"), SP_min, __malloc_heap_start, __malloc_heap_end); ////c=20 r=1 ////c=14 r=1 ////c=14 r=1 ////c=14 r=1 + lcd_printf_P(PSTR("RAM statistics\n" ////c=20 r=1 + " SP_min: 0x%04x\n" ////c=14 r=1 + " heap_start: 0x%04x\n" ////c=14 r=1 + " heap_end: 0x%04x"), SP_min, __malloc_heap_start, __malloc_heap_end); ////c=14 r=1 #endif //DEBUG_STACK_MONITOR menu_back_if_clicked_fb(); @@ -2859,7 +2881,9 @@ void lcd_menu_statistics() "%17.2fm \n" "%S:\n" "%2dh %02dm %02ds" - ),_i("Filament used"), _met, _i("Print time"), _h, _m, _s); ////c=18 r=1 ////c=18 r=1 + ), + _i("Filament used"), _met, ////c=18 r=1 + _i("Print time"), _h, _m, _s); ////c=18 r=1 menu_back_if_clicked_fb(); } else @@ -4752,7 +4776,9 @@ void lcd_v2_calibration() { if (mmu_enabled) { - const uint8_t filament = choose_menu_P(_i("Select PLA filament:"),_T(MSG_FILAMENT),_i("Cancel")); ////c=20 r=1 ////c=19 r=1 + const uint8_t filament = choose_menu_P( + _i("Select PLA filament:"), ////c=20 r=1 + _T(MSG_FILAMENT),_i("Cancel")); ////c=19 r=1 if (filament < 5) { lcd_commands_step = 20 + filament;