From 687746a80ae51ffdbde63c48bdce6862a1782b3f Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Fri, 7 Jan 2022 14:52:13 +0100 Subject: [PATCH 01/24] Add syntax checks --- lang/lang-check.py | 72 +++++++++++++++++++++++++++++++++++++++------- 1 file changed, 62 insertions(+), 10 deletions(-) diff --git a/lang/lang-check.py b/lang/lang-check.py index 539fc96d..7554d269 100755 --- a/lang/lang-check.py +++ b/lang/lang-check.py @@ -1,7 +1,6 @@ #!/usr/bin/env python3 # -# Version 1.0.1 -# +# Version 1.0.2 - Build 37 ############################################################################# # Change log: # 7 May 2019, Ondrej Tuma, Initial @@ -13,12 +12,26 @@ # 23 Apr. 2021, wavexx , improve # 24 Apr. 2021, wavexx , improve # 26 Apr. 2021, 3d-gussner, add character ruler +# 07 Jan. 2022, 3d-gussner, Check for Syntax errors and exit with error +# , add Build number 'git rev-list --count HEAD lang-check.py' ############################################################################# # +# Expected syntax of the files, which other scripts depend on +# 'lang_en.txt' +# 1st line: '#MSG_'' c='' r=' ; '#MSG' is mandentory while 'c=' and 'r=' aren't but should be there +# 2nd line: '"''"' ; '"' double quotes at the beginning and end of message are mandentory +# 3rd line: LF ; Line feed is mandantory between messages +# +# 'lang_en_??.txt' +# 1st line: '#MSG_'' c='' r=' ; '#MSG' is mandentory while 'c=' and 'r=' aren't but should be there +# 2nd line: '"''"' ; '"' double quotes at the beginning and end of message are mandentory +# 3rd line: '"''"' ; '"' double quotes at the beginning and end of message are mandentory +# 4th line: LF ; Line feed is mandantory between messages +# """Check lang files.""" from argparse import ArgumentParser from traceback import print_exc -from sys import stdout, stderr +from sys import stdout, stderr, exit import textwrap import re @@ -99,7 +112,6 @@ def ign_char_first(c): def ign_char_last(c): return c.isalnum() or c in {'.', "'"} - def parse_txt(lang, no_warning, warn_empty): """Parse txt file and check strings to display definition.""" if lang == "en": @@ -112,9 +124,15 @@ def parse_txt(lang, no_warning, warn_empty): lines = 1 with open(file_path) as src: while True: - comment = src.readline().split(' ') - #print (comment) #Debug - + message = src.readline() + #print(message) #Debug + #check syntax 1st line starts with `#MSG` + if (message[0:4] != '#MSG'): + print(red("[E]: Critical syntax error: 1st line doesn't start with #MSG on line %d" % lines)) + print(red(message)) + exit(1) + #Check if columns and rows are defined + comment = message.split(' ') #Check if columns and rows are defined cols = None rows = None @@ -140,12 +158,46 @@ def parse_txt(lang, no_warning, warn_empty): print(yellow("[W]: Multiple rows with odd number of columns on line %d" % lines)) #Wrap text to 20 chars and rows - source = src.readline()[:-1].strip('"') + source = src.readline()[:-1] #read whole line + #check if 2nd line of origin message beginns and ends with " double quote + if (source[0]!="\""): + print(red('[E]: Critical syntax error: Missing " at beginning of message in source on line %d' % lines)) + print(red(source)) + exit(1) + if (source[-1]=="\""): + source = source.strip('"') #remove " double quotes from message + else: + print(red('[E]: Critical syntax error: Missing " at end of message in source on line %d' % lines)) + print(red(source)) + exit(1) #print (source) #Debug - translation = src.readline()[:-1].strip('"') + translation = src.readline()[:-1]#read whole line + #check if 3rd line of translation message beginns and ends with " double quote + if (translation[0]!="\""): + print(red('[E]: Critical syntax error: Missing " at beginning of message in translation on line %d' % lines)) + print(red(translation)) + exit(1) + if (translation[-1]=="\""): + #print ("End ok") + translation = translation.strip('"') #remove " double quote from message + else: + print(red('[E]: Critical syntax error: Missing " at end of message in translation on line %d' % lines)) + print(red(translation)) + exit(1) + #print (translation) if translation == '\\x00': # crude hack to handle intentionally-empty translations translation = '' + #check if source is ascii only + if source.isascii() == False: + print(red('[E]: Critical syntax: Non ascii chars found on line %d' % lines)) + print(red(source)) + exit(1) + #check if translation is ascii only + if translation.isascii() == False: + print(red('[E]: Critical syntax: Non ascii chars found on line %d' % lines)) + print(red(translation)) + exit(1) # handle backslash sequences source = unescape(source) @@ -232,8 +284,8 @@ def parse_txt(lang, no_warning, warn_empty): print_source_translation(source, translation, wrapped_source, wrapped_translation, rows, cols) - if len(src.readline()) != 1: # empty line + print(red('[E]: Critical Syntax error: Missing empty line between messages between lines: %d and %d' % (lines+3,lines+4))) break lines += 4 print(green("End %s lang-check" % lang)) From db4859ce9ad1197abcb617afb0da1e6bcdd6df7b Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Mon, 10 Jan 2022 09:52:43 +0100 Subject: [PATCH 02/24] Syntax check `lang_en.txt` Display correct line having issues --- lang/lang-check.py | 185 ++++++++++++++++++++++++--------------------- 1 file changed, 98 insertions(+), 87 deletions(-) diff --git a/lang/lang-check.py b/lang/lang-check.py index 7554d269..3b95c272 100755 --- a/lang/lang-check.py +++ b/lang/lang-check.py @@ -121,10 +121,11 @@ def parse_txt(lang, no_warning, warn_empty): print(green("Start %s lang-check" % lang)) - lines = 1 + lines = 0 with open(file_path) as src: while True: message = src.readline() + lines += 1 #print(message) #Debug #check syntax 1st line starts with `#MSG` if (message[0:4] != '#MSG'): @@ -151,7 +152,7 @@ def parse_txt(lang, no_warning, warn_empty): if cols is None and rows is None: if not no_warning: print(yellow("[W]: No display definition on line %d" % lines)) - cols = len(translation) # propably fullscreen + cols = len(source) # propably fullscreen if rows is None: rows = 1 elif rows > 1 and cols != 20: @@ -159,55 +160,61 @@ def parse_txt(lang, no_warning, warn_empty): #Wrap text to 20 chars and rows source = src.readline()[:-1] #read whole line + lines += 1 #check if 2nd line of origin message beginns and ends with " double quote if (source[0]!="\""): - print(red('[E]: Critical syntax error: Missing " at beginning of message in source on line %d' % lines)) + print(red('[E]: Critical syntax error: Missing " double quotes at beginning of message in source on line %d' % lines)) print(red(source)) exit(1) if (source[-1]=="\""): source = source.strip('"') #remove " double quotes from message else: - print(red('[E]: Critical syntax error: Missing " at end of message in source on line %d' % lines)) + print(red('[E]: Critical syntax error: Missing " double quotes at end of message in source on line %d' % lines)) print(red(source)) exit(1) - #print (source) #Debug - translation = src.readline()[:-1]#read whole line - #check if 3rd line of translation message beginns and ends with " double quote - if (translation[0]!="\""): - print(red('[E]: Critical syntax error: Missing " at beginning of message in translation on line %d' % lines)) - print(red(translation)) - exit(1) - if (translation[-1]=="\""): - #print ("End ok") - translation = translation.strip('"') #remove " double quote from message - else: - print(red('[E]: Critical syntax error: Missing " at end of message in translation on line %d' % lines)) - print(red(translation)) - exit(1) - #print (translation) - if translation == '\\x00': - # crude hack to handle intentionally-empty translations - translation = '' - #check if source is ascii only + #print(source) #Debug + if lang != "en": + translation = src.readline()[:-1]#read whole line + lines += 1 + #check if 3rd line of translation message beginns and ends with " double quote + if (translation[0]!="\""): + print(red('[E]: Critical syntax error: Missing " double quotes at beginning of message in translation on line %d' % lines)) + print(red(translation)) + exit(1) + if (translation[-1]=="\""): + #print ("End ok") + translation = translation.strip('"') #remove " double quote from message + else: + print(red('[E]: Critical syntax error: Missing " double quotes at end of message in translation on line %d' % lines)) + print(red(translation)) + exit(1) + #print(translation) #Debug + if translation == '\\x00': + # crude hack to handle intentionally-empty translations + translation = '' + #check if source is ascii only if source.isascii() == False: print(red('[E]: Critical syntax: Non ascii chars found on line %d' % lines)) print(red(source)) exit(1) #check if translation is ascii only - if translation.isascii() == False: - print(red('[E]: Critical syntax: Non ascii chars found on line %d' % lines)) - print(red(translation)) - exit(1) + if lang != "en": + if translation.isascii() == False: + print(red('[E]: Critical syntax: Non ascii chars found on line %d' % lines)) + print(red(translation)) + exit(1) # handle backslash sequences source = unescape(source) - translation = unescape(translation) + if lang != "en": + translation = unescape(translation) #print (translation) #Debug wrapped_source = wrap_text(source, cols) rows_count_source = len(wrapped_source) - wrapped_translation = wrap_text(translation, cols) - rows_count_translation = len(wrapped_translation) + if lang != "en": + wrapped_translation = wrap_text(translation, cols) + rows_count_translation = len(wrapped_translation) # Check for potential errors in the definition if not no_warning: @@ -224,70 +231,74 @@ def parse_txt(lang, no_warning, warn_empty): print() # Missing translation - if len(translation) == 0 and (warn_empty or rows > 1): - if rows == 1: - print(yellow("[W]: Empty translation for \"%s\" on line %d" % (source, lines))) - else: - print(yellow("[W]: Empty translation on line %d" % lines)) - print_ruler(6, cols); - print_wrapped(wrapped_source, rows, cols) - print() + if lang != "en": + if len(translation) == 0 and (warn_empty or rows > 1): + if rows == 1: + print(yellow("[W]: Empty translation for \"%s\" on line %d" % (source, lines))) + else: + print(yellow("[W]: Empty translation on line %d" % lines)) + print_ruler(6, cols); + print_wrapped(wrapped_source, rows, cols) + print() - # Check for translation lenght - if (rows_count_translation > rows) or (rows == 1 and len(translation) > cols): - print(red('[E]: Text is longer than definition on line %d: cols=%d rows=%d (rows diff=%d)' - % (lines, cols, rows, rows_count_translation-rows))) - print_source_translation(source, translation, - wrapped_source, wrapped_translation, - rows, cols) + # Check for translation lenght + if (rows_count_translation > rows) or (rows == 1 and len(translation) > cols): + print(red('[E]: Text is longer than definition on line %d: cols=%d rows=%d (rows diff=%d)' + % (lines, cols, rows, rows_count_translation-rows))) + print_source_translation(source, translation, + wrapped_source, wrapped_translation, + rows, cols) - # Different count of % sequences - if source.count('%') != translation.count('%') and len(translation) > 0: - print(red('[E]: Unequal count of %% escapes on line %d:' % (lines))) - print_source_translation(source, translation, - wrapped_source, wrapped_translation, - rows, cols) + # Different count of % sequences + if source.count('%') != translation.count('%') and len(translation) > 0: + print(red('[E]: Unequal count of %% escapes on line %d:' % (lines))) + print_source_translation(source, translation, + wrapped_source, wrapped_translation, + rows, cols) - # Different first/last character - if not no_warning and len(source) > 0 and len(translation) > 0: - source_end = source.rstrip()[-1] - translation_end = translation.rstrip()[-1] - start_diff = not (ign_char_first(source[0]) and ign_char_first(translation[0])) and source[0] != translation[0] - end_diff = not (ign_char_last(source_end) and ign_char_last(translation_end)) and source_end != translation_end - if start_diff or end_diff: - if start_diff: - print(yellow('[W]: Differing first punctuation character (%s => %s) on line %d:' % (source[0], translation[0], lines))) - if end_diff: - print(yellow('[W]: Differing last punctuation character (%s => %s) on line %d:' % (source[-1], translation[-1], lines))) - print_source_translation(source, translation, - wrapped_source, wrapped_translation, - rows, cols) + # Different first/last character + if not no_warning and len(source) > 0 and len(translation) > 0: + source_end = source.rstrip()[-1] + translation_end = translation.rstrip()[-1] + start_diff = not (ign_char_first(source[0]) and ign_char_first(translation[0])) and source[0] != translation[0] + end_diff = not (ign_char_last(source_end) and ign_char_last(translation_end)) and source_end != translation_end + if start_diff or end_diff: + if start_diff: + print(yellow('[W]: Differing first punctuation character (%s => %s) on line %d:' % (source[0], translation[0], lines))) + if end_diff: + print(yellow('[W]: Differing last punctuation character (%s => %s) on line %d:' % (source[-1], translation[-1], lines))) + print_source_translation(source, translation, + wrapped_source, wrapped_translation, + rows, cols) - # Short translation - if not no_warning and len(source) > 0 and len(translation) > 0: - if len(translation.rstrip()) < len(source.rstrip()) / 2: - print(yellow('[W]: Short translation on line %d:' % (lines))) - print_source_translation(source, translation, - wrapped_source, wrapped_translation, - rows, cols) + # Short translation + if not no_warning and len(source) > 0 and len(translation) > 0: + if len(translation.rstrip()) < len(source.rstrip()) / 2: + print(yellow('[W]: Short translation on line %d:' % (lines))) + print_source_translation(source, translation, + wrapped_source, wrapped_translation, + rows, cols) - # Incorrect trailing whitespace in translation - if not no_warning and len(translation) > 0 and \ - (source.rstrip() == source or (rows == 1 and len(source) == cols)) and \ - translation.rstrip() != translation and \ - (rows > 1 or len(translation) != len(source)): - print(yellow('[W]: Incorrect trailing whitespace for translation on line %d:' % (lines))) - source = highlight_trailing_white(source) - translation = highlight_trailing_white(translation) - wrapped_translation = highlight_trailing_white(wrapped_translation) - print_source_translation(source, translation, - wrapped_source, wrapped_translation, - rows, cols) - if len(src.readline()) != 1: # empty line - print(red('[E]: Critical Syntax error: Missing empty line between messages between lines: %d and %d' % (lines+3,lines+4))) + # Incorrect trailing whitespace in translation + if not no_warning and len(translation) > 0 and \ + (source.rstrip() == source or (rows == 1 and len(source) == cols)) and \ + translation.rstrip() != translation and \ + (rows > 1 or len(translation) != len(source)): + print(yellow('[W]: Incorrect trailing whitespace for translation on line %d:' % (lines))) + source = highlight_trailing_white(source) + translation = highlight_trailing_white(translation) + wrapped_translation = highlight_trailing_white(wrapped_translation) + print_source_translation(source, translation, + wrapped_source, wrapped_translation, + rows, cols) + delimiter = src.readline() + lines += 1 + if ("" == delimiter): + break + elif len(delimiter) != 1: # empty line + print(red('[E]: Critical Syntax error: Missing empty line between messages between lines: %d and %d' % (lines-1,lines))) break - lines += 4 print(green("End %s lang-check" % lang)) From 0ac5cff5d3915603d7b4005502763e7b244a8104 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Mon, 10 Jan 2022 10:34:22 +0100 Subject: [PATCH 03/24] Test Travis with focal Ubuntu20.04 LTS --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 4d9039dc..a64c38e2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,4 @@ -dist: trusty +dist: focal before_install: - sudo apt-get install -y ninja-build # Arduino IDE adds a lot of noise caused by network traffic, trying to firewall it off From 255e05d6b9c1d7df14ddef78e47308b8dfa94fe3 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Tue, 11 Jan 2022 13:18:48 +0100 Subject: [PATCH 04/24] Add some documentation WIP --- lang/config.sh | 67 +++++++++++++++++++-------- lang/fw-build.sh | 109 +++++++++++++++++++++++++++----------------- lang/fw-clean.sh | 29 ++++++++---- lang/lang-build.sh | 61 ++++++++++++++++++++++--- lang/lang-clean.sh | 35 +++++++++----- lang/lang-export.sh | 39 ++++++++++++---- lang/lang-import.sh | 41 ++++++++++++++--- lang/progmem.sh | 26 +++++++---- lang/textaddr.sh | 18 ++++++-- lang/update_lang.sh | 35 +++++++++----- 10 files changed, 330 insertions(+), 130 deletions(-) diff --git a/lang/config.sh b/lang/config.sh index 42dbd3af..13faebb2 100755 --- a/lang/config.sh +++ b/lang/config.sh @@ -1,20 +1,43 @@ #!/bin/bash # +# Version 1.0.1 Build 9 +# # config.sh - multi-language support configuration script # Definition of absolute paths etc. # This file is 'included' in all scripts. # +############################################################################# +# Change log: +# 31 May 2018, XPila, Initial +# 17 Dec. 2021, 3d-gussner, Change default Arduino path to by PF-build.sh +# created one +# Prepare to use one config file for all languages +# 11 Jan. 2022, 3d-gussner, Added version and Change log colored output +# Use `git rev-list --count HEAD config.sh` +# to get Build Nr +# Check if variables are set by other scripts +# and use these. More flexible for different build +# scripts +# Check correctly if files or dirs exist +############################################################################# +# # Arduino main folder: if [ -z "$ARDUINO" ]; then export ARDUINO=../../PF-build-env-1.0.6/1.8.5-1.0.4-linux-64 #C:/arduino-1.8.5 fi # # Arduino builder: -export BUILDER=$ARDUINO/arduino-builder +if [ -z "$BUILDER" ]; then + export BUILDER=$ARDUINO/arduino-builder +fi # # AVR gcc tools: -export OBJCOPY=$ARDUINO/hardware/tools/avr/bin/avr-objcopy -export OBJDUMP=$ARDUINO/hardware/tools/avr/bin/avr-objdump +if [ -z "$OBJCOPY" ]; then + export OBJCOPY=$ARDUINO/hardware/tools/avr/bin/avr-objcopy +fi +if [ -z "$OBJDUMP" ]; then + export OBJDUMP=$ARDUINO/hardware/tools/avr/bin/avr-objdump +fi # # Output folder: if [ -z "$OUTDIR" ]; then @@ -22,13 +45,19 @@ if [ -z "$OUTDIR" ]; then fi # # Objects folder: -export OBJDIR="$OUTDIR/sketch" +if [ -z "$OBJDIR" ]; then + export OBJDIR="$OUTDIR/sketch" +fi # # Generated elf file: -export INOELF="$OUTDIR/Firmware.ino.elf" +if [ -z "$INOELF" ]; then + export INOELF="$OUTDIR/Firmware.ino.elf" +fi # # Generated hex file: -export INOHEX="$OUTDIR/Firmware.ino.hex" +if [ -z "$INOHEX" ]; then + export INOHEX="$OUTDIR/Firmware.ino.hex" +fi # # Set default languages if [ -z "$LANGUAGES" ]; then @@ -54,44 +83,44 @@ if [ -z "$COMMUNITY_LANGUAGES" ]; then export COMMUNITY_LANGUAGES="$COMMUNITY_LANGUAGES" fi -echo "config.sh started" >&2 +echo "$(tput setaf 2)config.sh started$(tput sgr0)" >&2 _err=0 echo -n " Arduino main folder: " >&2 -if [ -e $ARDUINO ]; then echo 'OK' >&2; else echo 'NG!' >&2; _err=1; fi +if [ -d $ARDUINO ]; then echo "$(tput setaf 2)OK$(tput sgr0)" >&2; else echo "$(tput setaf 1)NG!$(tput sgr0)" >&2; _err=1; fi echo -n " Arduino builder: " >&2 -if [ -e $BUILDER ]; then echo 'OK' >&2; else echo 'NG!' >&2; _err=2; fi +if [ -e $BUILDER ]; then echo "$(tput setaf 2)OK$(tput sgr0)" >&2; else echo "$(tput setaf 1)NG!$(tput sgr0)" >&2; _err=2; fi echo " AVR gcc tools:" >&2 echo -n " objcopy " >&2 -if [ -e $OBJCOPY ]; then echo 'OK' >&2; else echo 'NG!' >&2; _err=3; fi +if [ -e $OBJCOPY ]; then echo "$(tput setaf 2)OK$(tput sgr0)" >&2; else echo "$(tput setaf 1)NG!$(tput sgr0)" >&2; _err=3; fi echo -n " objdump " >&2 -if [ -e $OBJDUMP ]; then echo 'OK' >&2; else echo 'NG!' >&2; _err=4; fi +if [ -e $OBJDUMP ]; then echo "$(tput setaf 2)OK$(tput sgr0)" >&2; else echo "$(tput setaf 1)NG!$(tput sgr0)" >&2; _err=4; fi echo -n " Output folder: " >&2 -if [ -e $OUTDIR ]; then echo 'OK' >&2; else echo 'NG!' >&2; _err=5; fi +if [ -d $OUTDIR ]; then echo "$(tput setaf 2)OK$(tput sgr0)" >&2; else echo "$(tput setaf 1)NG!$(tput sgr0)" >&2; _err=5; fi echo -n " Objects folder: " >&2 -if [ -e $OBJDIR ]; then echo 'OK' >&2; else echo 'NG!' >&2; _err=6; fi +if [ -d $OBJDIR ]; then echo "$(tput setaf 2)OK$(tput sgr0)" >&2; else echo "$(tput setaf 1)NG!$(tput sgr0)" >&2; _err=6; fi echo -n " Generated elf file: " >&2 -if [ -e $INOELF ]; then echo 'OK' >&2; else echo 'NG!' >&2; _err=7; fi +if [ -e $INOELF ]; then echo "$(tput setaf 2)OK$(tput sgr0)" >&2; else echo "$(tput setaf 1)NG!$(tput sgr0)" >&2; _err=7; fi echo -n " Generated hex file: " >&2 -if [ -e $INOHEX ]; then echo 'OK' >&2; else echo 'NG!' >&2; _err=8; fi +if [ -e $INOHEX ]; then echo "$(tput setaf 2)OK$(tput sgr0)" >&2; else echo "$(tput setaf 1)NG!$(tput sgr0)" >&2; _err=8; fi echo -n " Languages: " >&2 -echo "$LANGUAGES" >&2 +echo "$(tput setaf 2)$LANGUAGES$(tput sgr0)" >&2 echo -n " Community languages: " >&2 -echo "$COMMUNITY_LANGUAGES" >&2 +echo "$(tput setaf 2)$COMMUNITY_LANGUAGES$(tput sgr0)" >&2 if [ $_err -eq 0 ]; then - echo "config.sh finished with success" >&2 + echo "$(tput setaf 2)config.sh finished with success$(tput sgr0)" >&2 export CONFIG_OK=1 else - echo "config.sh finished with errors!" >&2 + echo "$(tput setaf 1)config.sh finished with errors!$(tput sgr0)" >&2 export CONFIG_OK=0 fi diff --git a/lang/fw-build.sh b/lang/fw-build.sh index 0813017c..d52b7469 100755 --- a/lang/fw-build.sh +++ b/lang/fw-build.sh @@ -1,5 +1,7 @@ #!/bin/bash # +# Version 1.0.2 Build 12 +# # postbuild.sh - multi-language support script # Generate binary with secondary language. # @@ -17,17 +19,32 @@ # $PROGMEM.txt # textaddr.txt # +############################################################################# +# Change log: +# 31 May 2018, XPila, Initial +# 17 Dec. 2021, 3d-gussner, Use one config file for all languages +# 11 Jan. 2022, 3d-gussner, Add check for not translated messages using a +# parameter +# Added version and Change log +# colored output +# Add Community language support +# Use `git rev-list --count HEAD fw-build.sh` +# to get Build Nr +############################################################################# # # Config: if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi -if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo 'Config NG!' >&2; exit 1; fi +if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo "$(tput setaf 1)Config NG!$(tput sgr0)" >&2; exit 1; fi # # Selected language: LNG=$1 -#if [ -z "$LNG" ]; then LNG='cz'; fi -# -# Params: -IGNORE_MISSING_TEXT=1 + +#Set default to ignore missing text +CHECK_MISSING_TEXT=0 +#Check if script should check for missing messages in the source code aren't translated by using parameter "--check-missing-text" +if [ "$1" = "--check-missing-text" ]; then + CHECK_MISSING_TEXT=1 +fi # List of supported languages if [ -z "$LANGUAGES" ]; then @@ -38,15 +55,16 @@ fi if [ ! -z "$COMMUNITY_LANGUAGES" ]; then LANGUAGES+=" $COMMUNITY_LANGUAGES" fi -echo "fw-build languages:$LANGUAGES" >&2 +echo "$(tput setaf 2)fw-build.sh started$(tput sgr 0)" >&2 +echo "fw-build languages:$(tput setaf 2)$LANGUAGES$(tput sgr 0)" >&2 finish() { echo if [ "$1" = "0" ]; then - echo "postbuild.sh finished with success" >&2 + echo "$(tput setaf 2)fw-build.sh finished with success$(tput sgr 0)" >&2 else - echo "postbuild.sh finished with errors!" >&2 + echo "$(tput setaf 1)fw-build.sh finished with errors!$(tput sgr 0)" >&2 fi case "$-" in *i*) echo "press enter key"; read ;; @@ -54,48 +72,48 @@ finish() exit $1 } -echo "postbuild.sh started" >&2 - #check input files echo " checking files:" >&2 -if [ ! -e $OUTDIR ]; then echo " folder '$OUTDIR' not found!" >&2; finish 1; fi -echo " folder OK" >&2 -if [ ! -e $INOELF ]; then echo " elf file '$INOELF' not found!" >&2; finish 1; fi -echo " elf OK" >&2 -if ! ls $OBJDIR/*.o >/dev/null 2>&1; then echo " no object files in '$OBJDIR/'!" >&2; finish 1; fi -echo " objects OK" >&2 +if [ ! -e $OUTDIR ]; then echo "$(tput setaf 1) folder '$OUTDIR' not found!$(tput sgr 0)" >&2; finish 1; fi +echo "$(tput setaf 2) folder OK$(tput sgr 0)" >&2 +if [ ! -e $INOELF ]; then echo "$(tput setaf 1) elf file '$INOELF' not found!$(tput sgr 0)" >&2; finish 1; fi +echo "$(tput setaf 2) elf OK$(tput sgr 0)" >&2 +if ! ls $OBJDIR/*.o >/dev/null 2>&1; then echo "$(tput setaf 1) no object files in '$OBJDIR/'!$(tput sgr 0)" >&2; finish 1; fi +echo "$(tput setaf 2) objects OK$(tput sgr 0)" >&2 #run progmem.sh - examine content of progmem1 echo -n " running progmem.sh..." >&2 ./progmem.sh 1 2>progmem.out -if [ $? -ne 0 ]; then echo "NG! - check progmem.out file" >&2; finish 1; fi -echo "OK" >&2 +if [ $? -ne 0 ]; then echo "$(tput setaf 1)NG! - check progmem.out file$(tput sgr 0)" >&2; finish 1; fi +echo "$(tput setaf 2)OK$(tput sgr 0)" >&2 #run textaddr.sh - map progmem addreses to text identifiers echo -n " running textaddr.sh..." >&2 ./textaddr.sh 2>textaddr.out -if [ $? -ne 0 ]; then echo "NG! - check progmem.out file" >&2; finish 1; fi -echo "OK" >&2 +if [ $? -ne 0 ]; then echo "$(tput setaf 1)NG! - check progmem.out file$(tput sgr 0)" >&2; finish 1; fi +echo "$(tput setaf 2)OK$(tput sgr 0)" >&2 #check for messages declared in progmem1, but not found in lang_en.txt echo -n " checking textaddr.txt..." >&2 cat textaddr.txt | grep "^TEXT NF" | sed "s/[^\"]*\"//;s/\"$//" >not_used.txt cat textaddr.txt | grep "^ADDR NF" | sed "s/[^\"]*\"//;s/\"$//" >not_tran.txt if cat textaddr.txt | grep "^ADDR NF" >/dev/null; then - echo "NG! - some texts not found in lang_en.txt!" - if [ $IGNORE_MISSING_TEXT -eq 0 ]; then + echo "$(tput setaf 1)NG! - some texts not found in lang_en.txt!$(tput sgr 0)" + if [ $CHECK_MISSING_TEXT -eq 1 ]; then + echo "$(tput setaf 1)Missing text found, please update the language files!$(tput setaf 6)" >&2 + cat not_tran.txt >&2 finish 1 else - echo " missing text ignored!" >&2 + echo "$(tput setaf 3) missing text ignored!$(tput sgr 0)" >&2 fi else - echo "OK" >&2 + echo "$(tput setaf 2)OK$(tput sgr 0)" >&2 fi #extract binary file echo -n " extracting binary..." >&2 $OBJCOPY -I ihex -O binary $INOHEX ./firmware.bin -echo "OK" >&2 +echo "$(tput setaf 2)OK$(tput sgr 0)" >&2 #update binary file echo " updating binary:" >&2 @@ -107,14 +125,14 @@ cat textaddr.txt | grep "^ADDR OK" | cut -f3- -d' ' | sed "s/^0000/0x/" |\ while read addr data; do /bin/echo -n -e $data | dd of=./firmware.bin bs=1 count=2 seek=$addr conv=notrunc oflag=nonblock 2>/dev/null done -echo "OK" >&2 +echo "$(tput setaf 2)OK$(tput sgr 0)" >&2 #update primary language signature in binary file echo -n " primary language signature..." >&2 if [ -e lang_en.bin ]; then #find symbol _PRI_LANG_SIGNATURE in section '.text' pri_lang=$(cat text.sym | grep -E "\b_PRI_LANG_SIGNATURE\b") - if [ -z "$pri_lang" ]; then echo "NG!\n symbol _PRI_LANG_SIGNATURE not found!" >&2; finish 1; fi + if [ -z "$pri_lang" ]; then echo "$(tput setaf 1)NG!\n symbol _PRI_LANG_SIGNATURE not found!$(tput sgr 0)" >&2; finish 1; fi #get pri_lang address pri_lang_addr='0x'$(echo $pri_lang | cut -f1 -d' ') #read header from primary language binary file @@ -123,31 +141,32 @@ if [ -e lang_en.bin ]; then chscnt=$(echo $header | cut -c18-29 | sed "s/ /\\\\x/g") /bin/echo -e -n "$chscnt" |\ dd of=firmware.bin bs=1 count=4 seek=$(($pri_lang_addr)) conv=notrunc 2>/dev/null - echo "OK" >&2 + echo "$(tput setaf 2)OK$(tput sgr 0)" >&2 else - echo "NG! - file lang_en.bin not found!" >&2; + echo "$(tput setaf 1)NG! - file lang_en.bin not found!$(tput sgr 0)" >&2; finish 1 fi #convert bin to hex -echo -n " converting to hex..." >&2 +echo -n " converting primary to hex..." >&2 $OBJCOPY -I binary -O ihex ./firmware.bin ./firmware.hex -echo "OK" >&2 +echo "$(tput setaf 2)OK$(tput sgr 0)" >&2 #update _SEC_LANG in binary file if language is selected -echo -n " secondary language data..." >&2 +echo -n " secondary language data..." >&2 if [ ! -z "$LNG" ]; then ./update_lang.sh $LNG 2>./update_lang.out - if [ $? -ne 0 ]; then echo "NG! - check update_lang.out file" >&2; finish 1; fi - echo "OK" >&2 + if [ $? -ne 0 ]; then echo "$(tput setaf 1)NG! - check update_lang.out file$(tput sgr 0)" >&2; finish 1; fi + echo "$(tput setaf 2)OK$(tput sgr 0)" >&2 finish 0 else - echo "Updating languages:" >&2 + echo >&2 + echo " Updating languages:" >&2 for lang in $LANGUAGES; do if [ -e lang_$lang.bin ]; then - echo -n " $lang : " >&2 + echo -n " $lang : " >&2 ./update_lang.sh $lang 2>./update_lang_$lang.out 1>/dev/null - if [ $? -eq 0 ]; then echo 'OK' >&2; else echo 'NG!' >&2; finish 1; fi + if [ $? -eq 0 ]; then echo "$(tput setaf 2)OK$(tput sgr 0)" >&2; else echo "$(tput setaf 1)NG!$(tput sgr 0)" >&2; finish 1; fi fi done fi @@ -166,17 +185,23 @@ lang_size_pad=$(( ($lang_size+4096-1) / 4096 * 4096 )) # TODO: hard-coded! get value by preprocessing LANG_SIZE from xflash_layout.h! lang_reserved=249856 -echo " total size usage: $lang_size_pad ($lang_size)" -echo " reserved size: $lang_reserved" +echo -n " total size usage: " >&2 if [ $lang_size_pad -gt $lang_reserved ]; then - echo "NG! - language data too large" >&2 + echo -n "$(tput setaf 1)" >&2 +else + echo -n "$(tput setaf 2)" >&2 +fi +echo "$lang_size_pad ($lang_size)$(tput sgr 0)" >&2 +echo " reserved size: $(tput setaf 2)$lang_reserved$(tput sgr 0)" >&2 +if [ $lang_size_pad -gt $lang_reserved ]; then + echo "$(tput setaf 1)NG! - language data too large$(tput sgr 0)" >&2 finish 1 fi #convert lang.bin to lang.hex -echo -n " converting to hex..." >&2 +echo -n " converting multi language to hex..." >&2 $OBJCOPY -I binary -O ihex ./lang.bin ./lang.hex -echo "OK" >&2 +echo "$(tput setaf 2)OK$(tput sgr 0)" >&2 #append languages to hex file cat ./lang.hex >> firmware.hex diff --git a/lang/fw-clean.sh b/lang/fw-clean.sh index 2c6e73dc..87172cf3 100755 --- a/lang/fw-clean.sh +++ b/lang/fw-clean.sh @@ -1,34 +1,44 @@ #!/bin/bash # +# Version 1.0.1 Build 10 +# # fw-clean.sh - multi-language support script # Remove all firmware output files from lang folder. # - +############################################################################# +# Change log: +# 21 June 2018, XPila, Initial +# 17 Dec. 2021, 3d-gussner, Use one config file for all languages +# 11 Jan. 2022, 3d-gussner, Added version and Change log +# colored output +# Use `git rev-list --count HEAD fw-clean.sh` +# to get Build Nr +############################################################################# # Config: if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi -if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo 'Config NG!' >&2; exit 1; fi +if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo "$(tput setaf 1)Config NG!$(tput sgr0)" >&2; exit 1; fi if [ ! -z "$COMMUNITY_LANGUAGES" ]; then LANGUAGES+=" $COMMUNITY_LANGUAGES" fi -echo "fw-clean languages:$LANGUAGES" >&2 +echo "$(tput setaf 2)fw-clean.sh started$(tput sgr0)" >&2 +echo "fw-clean languages:$(tput setaf 2)$LANGUAGES$(tput sgr0)" >&2 result=0 rm_if_exists() { if [ -e $1 ]; then - echo -n " removing '$1'..." >&2 + echo -n "$(tput sgr0) removing $(tput sgr0) '$1'..." >&2 if rm $1; then - echo "OK" >&2 + echo "$(tput setaf 2)OK$(tput sgr0)" >&2 else - echo "NG!" >&2 + echo "$(tput setaf 1)NG!$(tput sgr0)" >&2 result=1 fi fi } -echo "fw-clean.sh started" >&2 rm_if_exists text.sym rm_if_exists progmem1.sym @@ -52,11 +62,10 @@ for lang in $LANGUAGES; do rm_if_exists update_lang_$lang.out done -echo -n "fw-clean.sh finished" >&2 if [ $result -eq 0 ]; then - echo " with success" >&2 + echo "$(tput setaf 2)fw-clean.sh finished with success$(tput sgr0)" >&2 else - echo " with errors!" >&2 + echo "$(tput setaf 1)fw-clean.sh finished with errors!$(tput sgr0)" >&2 fi case "$-" in diff --git a/lang/lang-build.sh b/lang/lang-build.sh index b833fd09..256f995e 100755 --- a/lang/lang-build.sh +++ b/lang/lang-build.sh @@ -1,5 +1,7 @@ #!/bin/bash # +# Version 1.0.2 Build 24 +# # lang-build.sh - multi-language support script # generate lang_xx.bin (language binary file) # @@ -9,21 +11,39 @@ # Output files: # lang_xx.bin # +# Depending on files: +# ../Firmware/config.h to read the max allowed size for translations +# # Temporary files: +# lang_en.cnt //calculated number of messages in english +# lang_en.max //maximum size determined by reading "../Firmware/config.h" # lang_xx.tmp # lang_xx.dat # +############################################################################# +# Change log: +# 18 June 2018, XPila, Initial +# 17 Dec. 2021, 3d-gussner, Use one config file for all languages +# 11 Jan. 2022, 3d-gussner, Add message and size count comparison +# Added version and Change log +# colored output +# Add Community language support +# Use `git rev-list --count HEAD lang-build.sh` +# to get Build Nr +############################################################################# +# # Config: -#startup message -echo "lang-build.sh started" >&2 if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi -if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo 'Config NG!' >&2; exit 1; fi +if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo "$(tput setaf 1)Config NG!$(tput sgr 0)" >&2; exit 1; fi if [ ! -z "$COMMUNITY_LANGUAGES" ]; then LANGUAGES+=" $COMMUNITY_LANGUAGES" fi -echo "lang-build languages:$LANGUAGES" >&2 + +#startup message +echo "$(tput setaf 2)lang-build.sh started$(tput sgr 0)" >&2 +echo "lang-build languages:$(tput setaf 2)$LANGUAGES$(tput sgr 0)" >&2 #awk code to format ui16 variables for dd awk_ui16='{ h=int($1/256); printf("\\x%02x\\x%02x\n", int($1-256*h), h); }' @@ -33,9 +53,9 @@ awk_ui16='{ h=int($1/256); printf("\\x%02x\\x%02x\n", int($1-256*h), h); }' finish() { if [ $1 -eq 0 ]; then - echo "lang-build.sh finished with success" >&2 + echo "$(tput setaf 2)lang-build.sh finished with success$(tput sgr 0)" >&2 else - echo "lang-build.sh finished with errors!" >&2 + echo "$(tput setaf 1)lang-build.sh finished with errors!$(tput sgr 0)" >&2 fi exit $1 } @@ -104,7 +124,7 @@ write_header() generate_binary() # $1 - language code ('en', 'cz'...) { - echo "lang="$1 >&2 + echo "lang=$(tput setaf 2)$1$(tput sgr 0)" >&2 #remove output and temporary files rm -f lang_$1.bin rm -f lang_$1.tmp @@ -116,6 +136,16 @@ generate_binary() if [ "$1" = "en" ]; then #remove comments and empty lines cat lang_en.txt | sed '/^$/d;/^#/d' + #calculate number of strings + count=$(grep -c '^"' lang_en.txt) + echo "count="$count >&2 + #Calculate the number of strings and save to temporary file + echo $count >lang_en.cnt + #read the allowed maxsize from "../Firmware/config.h" and save to temporary file + maxsize=$(($(grep "#define LANG_SIZE_RESERVED" ../Firmware/config.h|sed -e's/ */ /g' |cut -d ' ' -f3))) + + echo "maxsize="$maxsize >&2 + echo $maxsize >lang_en.max else #remove comments and empty lines, print lines with translated text only cat lang_en_$1.txt | sed '/^$/d;/^#/d' | sed -n 'n;p' @@ -126,12 +156,29 @@ generate_binary() #calculate number of strings count=$(grep -c '^"' lang_$1.tmp) echo "count="$count >&2 + # read string count of English and compare it with the translation + encount=$(cat lang_en.cnt) + if [ "$count" -eq "$encount" ]; then + echo "$(tput setaf 2)OK:"$1"="$count"$(tput sgr 0) is equal to $(tput setaf 2)en="$encount"$(tput sgr 0)" >&2 + else + echo "$(tput setaf 1)Error:"$1"="$count"$(tput sgr 0) is NOT equal to $(tput setaf 1)en="$encount"$(tput sgr 0)" >&2 + finish 1 + fi #calculate text data offset offs=$((16 + 2 * $count)) echo "offs="$offs >&2 #calculate text data size size=$(($offs + $(wc -c lang_$1.dat | cut -f1 -d' '))) echo "size="$size >&2 + # read maxsize and compare with the translation + maxsize=$(cat lang_en.max) + if [ "$size" -lt "$maxsize" ]; then + free_space=$(($maxsize - $size)) + echo "$(tput setaf 2)OK:"$1"="$size"$(tput sgr 0) is less than $(tput setaf 2)"$maxsize"$(tput sgr 0). Free space:$(tput setaf 2)"$free_space"$(tput sgr 0)" >&2 + else + echo "$(tput setaf 1)Error:"$1"="$size"$(tput sgr 0) is higer than $(tput setaf 3)"$maxsize"$(tput sgr 0)" >&2 + finish 1 + fi #write header with empty signature and checksum write_header $1 $size $count 0x0000 0x00000000 #write offset table diff --git a/lang/lang-clean.sh b/lang/lang-clean.sh index c64b8d52..37008c65 100755 --- a/lang/lang-clean.sh +++ b/lang/lang-clean.sh @@ -1,13 +1,25 @@ #!/bin/bash # +# Version 1.0.1 Build 9 +# # clean.sh - multi-language support script # Remove all language output files from lang folder. # - +############################################################################# +# Change log: +# 1 Nov. 2018, XPila, Initial +# 17 Dec. 2021, 3d-gussner, Use one config file for all languages +# 11 Jan. 2022, 3d-gussner, Also remove temporally files which have been +# generated for message and size count comparison +# Added version and Change log +# colored output +# Add Community language support +# Use `git rev-list --count HEAD lang-clean.sh` +# to get Build Nr +############################################################################# # Config: -echo "CONFIG: $CONFIG_OK" if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi -if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo 'Config NG!' >&2; exit 1; fi +if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo "$(tput setaf 1)Config NG!$(tput sgr0)" >&2; exit 1; fi if [ ! -z "$COMMUNITY_LANGUAGES" ]; then LANGUAGES+=" $COMMUNITY_LANGUAGES" @@ -18,11 +30,11 @@ result=0 rm_if_exists() { if [ -e $1 ]; then - echo -n " removing '$1'..." >&2 + echo -n "$(tput sgr0) removing $(tput setaf 3)'$1'$(tput sgr0)..." >&2 if rm $1; then - echo "OK" >&2 + echo "$(tput setaf 2)OK$(tput sgr0)" >&2 else - echo "NG!" >&2 + echo "$(tput setaf 1)NG!$(tput sgr0)" >&2 result=1 fi fi @@ -32,6 +44,8 @@ clean_lang() { if [ "$1" = "en" ]; then rm_if_exists lang_$1.tmp + rm_if_exists lang_$1.cnt + rm_if_exists lang_$1.max else rm_if_exists lang_$1.tmp rm_if_exists lang_en_$1.tmp @@ -46,21 +60,20 @@ clean_lang() rm_if_exists lang_$1_2.tmp } +echo "$(tput setaf 2)lang-clean.sh started$(tput sgr0)" >&2 #Clean English clean_lang en #Clean languages -echo "lang-clean.sh started" >&2 -echo "lang-clean languages:$LANGUAGES" >&2 +echo "lang-clean languages:$(tput setaf 2)$LANGUAGES$(tput sgr0)" >&2 for lang in $LANGUAGES; do clean_lang $lang done -echo -n "lang-clean.sh finished" >&2 if [ $result -eq 0 ]; then - echo " with success" >&2 + echo "$(tput setaf 2) lang-clean.sh with success$(tput sgr0)" >&2 else - echo " with errors!" >&2 + echo "$(tput setaf 1) lang-clean.sh with errors!$(tput sgr0)" >&2 fi case "$-" in diff --git a/lang/lang-export.sh b/lang/lang-export.sh index 960a5125..2aada88a 100755 --- a/lang/lang-export.sh +++ b/lang/lang-export.sh @@ -1,16 +1,37 @@ #!/bin/bash # +# Version 1.0.1 Build 17 +# # lang-export.sh - multi-language support script # for generating lang_xx.po # +############################################################################# +# Change log: +# 9 Nov 2018, XPila, Initial +# 14 Sep. 2019, 3d-gussner, Prepare adding new language +# 1 Mar. 2019, 3d-gussner, Move `Dutch` language parts +# Add templates for future community languages +# 17 Dec. 2021, 3d-gussner, Use one config file for all languages +# Fix missing last translation +# 21 Dec. 2021, 3d-gussner, Add Swedish, Danish, Slovanian, Hungarian, +# Luxembourgish, Croatian +# 3 Jan. 2022, 3d-gussner, Add Lithuanian +# 11 Jan. 2022, 3d-gussner, Added version and Change log +# colored output +# Add Community language support +# Use `git rev-list --count HEAD lang-export.sh` +# to get Build Nr +############################################################################# # Config: if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi -if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo 'Config NG!' >&2; exit 1; fi +if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo "$(tput setaf 1)Config NG!$(tput sgr 0)" >&2; exit 1; fi + +echo "$(tput setaf 2)lang-export.sh started$(tput sgr 0)" >&2 if [ ! -z "$COMMUNITY_LANGUAGES" ]; then LANGUAGES+=" $COMMUNITY_LANGUAGES" fi -echo "lang-export languages:$LANGUAGES" >&2 +echo "$(tput setaf 2)lang-export languages:$LANGUAGES$(tput sgr 0)" >&2 # relative path to source folder SRCDIR="../Firmware" @@ -76,7 +97,7 @@ else esac) # unknown language - error if [ -z "LNGNAME" ]; then - echo "Invalid argument '$LNG'." + echo "Invalid argument $(tput setaf 1)'$LNG'$(tput sgr 0).">&2 exit 1 fi INFILE=lang_en_$LNG.txt @@ -86,18 +107,16 @@ fi # remove output file if exists if [ -e $OUTFILE ]; then rm -f -v $OUTFILE; fi -echo "lang-export.sh started" - #total strings CNTTXT=$(grep '^#' -c $INFILE) #not translated strings CNTNT=$(grep '^\"\\x00\"' -c $INFILE) -echo " $CNTTXT texts, $CNTNT not translated" +echo " $(tput setaf 2)$CNTTXT$(tput sgr 0) texts, $(tput setaf 3)$CNTNT$(tput sgr 0) not translated" >&2 # list .cpp, .c and .h files from source folder SRCFILES=$(ls "$SRCDIR"/*.cpp "$SRCDIR"/*.c "$SRCDIR"/*.h) -echo " selected language=$LNGNAME" +echo " selected language=$(tput setaf 2)$LNGNAME$(tput sgr 0)" >&2 # write po/pot header ( @@ -136,7 +155,7 @@ num=1 #end debug if [ "${s:0:1}" = "\"" ]; then if [[ "${s0:0:1}" = "\"" || "$LNG" = "en" ]]; then - echo " processing $num of $CNTTXT" >&2 + echo -ne " processing $num of $CNTTXT\033[0K\r" >&2 # write po/pot item ( if [ "$LNG" = "en" ]; then s1=$s0; s0=$s; fi @@ -164,6 +183,6 @@ done >>$OUTFILE) 2>&1 #replace LF with CRLF sync sed -i 's/$/\r/' $OUTFILE - -echo "lang-export.sh finished" +echo >&2 +echo "$(tput setaf 2)lang-export.sh finished$(tput sgr 0)">&2 exit 0 diff --git a/lang/lang-import.sh b/lang/lang-import.sh index c1e6bb19..07f78e56 100755 --- a/lang/lang-import.sh +++ b/lang/lang-import.sh @@ -1,15 +1,39 @@ #!/bin/bash # +# Version 1.0.1 Build 23 +# # lang-import.sh - multi-language support script # for importing translated xx.po +# +############################################################################# +# Change log: +# 9 Nov 2018, XPila, Initial +# 14 Sep. 2019, 3d-gussner, Prepare adding new language +# 1 Mar. 2019, 3d-gussner, Move `Dutch` language parts +# Add templates for future community languages +# 17 Dec. 2021, 3d-gussner, Use one config file for all languages +# Fix missing last translation +# Add counter +# replace two double quotes with `\x00` +# 21 Dec. 2021, 3d-gussner, Add Swedish, Danish, Slovanian, Hungarian, +# Luxembourgish, Croatian +# 3 Jan. 2022, 3d-gussner, Add Lithuanian +# 11 Jan. 2022, 3d-gussner, Added version and Change log +# colored output +# Add Community language support +# Use `git rev-list --count HEAD lang-export.sh` +# to get Build Nr +############################################################################# # Config: if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi -if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo 'Config NG!' >&2; exit 1; fi +if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo "$(tput setaf 1)Config NG!$(tput sgr 0)" >&2; exit 1; fi + +echo "$(tput setaf 2)lang-import.sh started$(tput sgr 0)" >&2 if [ ! -z "$COMMUNITY_LANGUAGES" ]; then LANGUAGES+=" $COMMUNITY_LANGUAGES" fi -echo "lang-import languages:$LANGUAGES" >&2 +echo "$(tput setaf 2)lang-import languages:$LANGUAGES$(tput sgr 0)" >&2 LNG=$1 # if no arguments, 'all' is selected (all po and also pot will be generated) @@ -33,7 +57,7 @@ cd po/new # check if input file exists if ! [ -e $LNGISO.po ]; then - echo "Input file $LNGISO.po not found!" >&2 + echo "$(tput setaf 1)Input file $LNGISO.po not found!$(tput sgr 0)" >&2 exit -1 fi @@ -249,7 +273,7 @@ cat $LNG'_filtered.po' | sed ':a;N;$!ba;s/\x22\n\x22//g' > $LNG'_new.po' CNTTXT=$(grep '^# MSG' -c $LNGISO.po) num=1 -echo " selected language=$LNGISO" >&2 +echo " selected language=$(tput setaf 2)$LNGISO$(tput sgr 0)" >&2 #generate new dictionary cat ../../lang_en.txt | sed 's/\\/\\\\/g' | while read -r s; do /bin/echo -e "$s" @@ -260,11 +284,11 @@ cat ../../lang_en.txt | sed 's/\\/\\\\/g' | while read -r s; do s=$(/bin/echo -e "$s") s2=$(grep -F -A1 -B0 "msgid $s" "$LNG"_new.po | tail -n1 | sed 's/^msgstr //') if [ -z "$s2" ]; then - echo " processing $num of $CNTTXT" >&2 + echo -ne " processing $num of $CNTTXT\033[0K\r" >&2 echo '"\x00"' num=$((num+1)) else - echo " processing $num of $CNTTXT" >&2 + echo -ne " processing $num of $CNTTXT\033[0K\r" >&2 echo "$s2" num=$((num+1)) fi @@ -272,8 +296,11 @@ cat ../../lang_en.txt | sed 's/\\/\\\\/g' | while read -r s; do fi done > lang_en_$LNG.txt -echo "Finished with $LNGISO" >&2 +echo >&2 +echo "$(tput setaf 2)Finished with $LNGISO$(tput sgr 0)" >&2 #replace two double quotes to "\x00" sed -i 's/""/"\\x00"/g' lang_en_$LNG.txt #remove CR sed -i "s/\r//g" lang_en_$LNG.txt +echo >&2 +echo "$(tput setaf 2)lang-import.sh finished$(tput sgr 0)">&2 \ No newline at end of file diff --git a/lang/progmem.sh b/lang/progmem.sh index 53993b28..f893b473 100755 --- a/lang/progmem.sh +++ b/lang/progmem.sh @@ -1,5 +1,7 @@ #!/bin/bash # +# Version 1.0.1 Build 12 +# # progmem.sh - multi-language support script # Examine content of progmem sections (default is progmem1). # @@ -16,14 +18,22 @@ # $PROGMEM.var - variables - strings # $PROGMEM.txt - text data only (not used) # +############################################################################# +# Change log: +# 31 May 2018, XPila, Initial +# 9 June 2020, 3d-gussner, Added version and Change log +# 9 June 2020, 3d-gussner, colored output +# 2 Apr. 2021, 3d-gussner, Use `git rev-list --count HEAD progmem.sh` +# to get Build Nr +############################################################################# # # Config: if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi -if [ -z "$OUTDIR" ]; then echo 'variable OUTDIR not set!' >&2; exit 1; fi -if [ -z "$OBJDIR" ]; then echo 'variable OBJDIR not set!' >&2; exit 1; fi -if [ -z "$INOELF" ]; then echo 'variable INOELF not set!' >&2; exit 1; fi -if [ -z "$OBJDUMP" ]; then echo 'variable OBJDUMP not set!' >&2; exit 1; fi -if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo 'Config NG!' >&2; exit 1; fi +if [ -z "$OUTDIR" ]; then echo "$(tput setaf 1)variable OUTDIR not set!$(tput sgr0)" >&2; exit 1; fi +if [ -z "$OBJDIR" ]; then echo "$(tput setaf 1)variable OBJDIR not set!$(tput sgr0)" >&2; exit 1; fi +if [ -z "$INOELF" ]; then echo "$(tput setaf 1)variable INOELF not set!$(tput sgr0)" >&2; exit 1; fi +if [ -z "$OBJDUMP" ]; then echo "$(tput setaf 1)variable OBJDUMP not set!$(tput sgr0)" >&2; exit 1; fi +if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo "$(tput setaf 1)Config NG!$(tput sgr0)" >&2; exit 1; fi # # Program memory used PROGMEM=progmem$1 @@ -39,11 +49,11 @@ if [ -z "$1" ]; then PROGMEM=progmem1; fi # 6. perform character check and conversion (output to $PROGMEM.var and $PROGMEM.txt) # -echo "progmem.sh started" >&2 +echo "$(tput setaf 2)progmem.sh started$(tput sgr0)" >&2 # (0) echo " progmem.sh (0) - checking input files" >&2 -if [ ! -e $OUTDIR ]; then echo "progmem.sh - file '$INOELF' not found!" >&2; exit 1; fi +if [ ! -e $OUTDIR ]; then echo "progmem.sh - file $(tput setaf 2)"$INOELF"$(tput sgr 0) not found!" >&2; exit 1; fi # (1) echo " progmem.sh (1) - removing output files" >&2 @@ -111,6 +121,6 @@ cat $PROGMEM.chr | \ #this step can be omitted because .txt file is not used cat $PROGMEM.var | sed 's/\r/\n/g' | sed -E 's/^[0-9a-f]{8} [^ ]* //' >$PROGMEM.txt -echo "progmem.sh finished" >&2 +echo "$(tput setaf 2)progmem.sh finished$(tput sgr0)" >&2 exit 0 \ No newline at end of file diff --git a/lang/textaddr.sh b/lang/textaddr.sh index 3645a7f0..c948f1a9 100755 --- a/lang/textaddr.sh +++ b/lang/textaddr.sh @@ -1,5 +1,7 @@ #!/bin/sh # +# Version 1.0.1 Build 7 +# # textaddr.sh - multi-language support script # Compile progmem1.var and lang_en.txt files to textaddr.txt file (mapping of progmem addreses to text idenifiers) # @@ -19,11 +21,19 @@ # after sort this will generate pairs of lines (line from progmem1 first) # result of sort is compiled with simple script and stored into file textaddr.txt # +############################################################################# +# Change log: +# 30 May 2018, XPila, Initial +# 9 June 2020, 3d-gussner, Added version and Change log +# 9 June 2020, 3d-gussner, colored output +# 2 Apr. 2021, 3d-gussner, Use `git rev-list --count HEAD textaddr.sh` +# to get Build Nr +############################################################################# -echo "textaddr.sh started" >&2 +echo "$(tput setaf 2)textaddr.sh started$(tput sgr0)" >&2 -if [ ! -e progmem1.var ]; then echo 'textaddr.sh - file progmem1.var not found!' >&2; exit 1; fi -if [ ! -e lang_en.txt ]; then echo 'textaddr.sh - file lang_en.txt not found!' >&2; exit 1; fi +if [ ! -e progmem1.var ]; then echo "$(tput setaf 1)textaddr.sh - file progmem1.var not found!$(tput sgr0)" >&2; exit 1; fi +if [ ! -e lang_en.txt ]; then echo "$(tput setaf 1)textaddr.sh - file lang_en.txt not found!$(tput sgr0)" >&2; exit 1; fi addr='' text='' (cat progmem1.var | sed -E "s/^([^ ]*) ([^ ]*) (.*)/\1 \"\3\"/";\ @@ -63,6 +73,6 @@ text='' fi done > textaddr.txt -echo "textaddr.sh finished" >&2 +echo "$(tput setaf 2)textaddr.sh finished$(tput sgr0)" >&2 exit 0 \ No newline at end of file diff --git a/lang/update_lang.sh b/lang/update_lang.sh index cc660463..04ddc16d 100755 --- a/lang/update_lang.sh +++ b/lang/update_lang.sh @@ -1,12 +1,23 @@ #!/bin/sh # +# Version 1.0.1 Build 10 +# # update_lang.sh - multi-language support script # Update secondary language in binary file. # +############################################################################# +# Change log: +# 17 June 2018, XPila, Initial +# 9 June 2020, 3d-gussner, Added version and Change log +# 9 June 2020, 3d-gussner, colored output +# 2 Apr. 2021, 3d-gussner, Use `git rev-list --count HEAD update_lang.sh` +# to get Build Nr +############################################################################# +# # Config: if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi -if [ -z "$OBJCOPY" ]; then echo 'variable OBJCOPY not set!' >&2; exit 1; fi -if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo 'Config NG!' >&2; exit 1; fi +if [ -z "$OBJCOPY" ]; then echo "$(tput setaf 1)variable OBJCOPY not set!$(tput sgr0)" >&2; exit 1; fi +if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo "$(tput setaf 1)Config NG!$(tput sgr0)" >&2; exit 1; fi # # Selected language: LNG=$1 @@ -17,9 +28,9 @@ finish() { echo if [ "$1" = "0" ]; then - echo "update_lang.sh finished with success" >&2 + echo "$(tput setaf 2)update_lang.sh finished with success$(tput sgr0)" >&2 else - echo "update_lang.sh finished with errors!" >&2 + echo "$(tput setaf 1)update_lang.sh finished with errors!$(tput sgr0)" >&2 fi case "$-" in *i*) echo "press enter key" >&2; read ;; @@ -27,22 +38,22 @@ finish() exit $1 } -echo "update_lang.sh started" >&2 -echo " selected language=$LNG" >&2 +echo "$(tput setaf 2)update_lang.sh started$(tput sgr0)" >&2 +echo " selected language=$(tput setaf 2)$LNG$(tput sgr0)" >&2 echo -n " checking files..." >&2 -if [ ! -e text.sym ]; then echo "NG! file text.sym not found!" >&2; finish 1; fi -if [ ! -e lang_$LNG.bin ]; then echo "NG! file lang_$LNG.bin not found!" >&2; finish 1; fi -if [ ! -e firmware.bin ]; then echo "NG! file firmware.bin not found!" >&2; finish 1; fi +if [ ! -e text.sym ]; then echo "$(tput setaf 1)NG! file text.sym not found!$(tput sgr0)" >&2; finish 1; fi +if [ ! -e lang_$LNG.bin ]; then echo "$(tput setaf 1)NG! file lang_$LNG.bin not found!$(tput sgr0)" >&2; finish 1; fi +if [ ! -e firmware.bin ]; then echo "$(tput setaf 1)NG! file firmware.bin not found!$(tput sgr0)" >&2; finish 1; fi echo "OK" >&2 echo -n " checking symbols..." >&2 #find symbol _SEC_LANG in section '.text' sec_lang=$(cat text.sym | grep -E "\b_SEC_LANG\b") -if [ -z "$sec_lang" ]; then echo "NG!\n symbol _SEC_LANG not found!" >&2; finish 1; fi +if [ -z "$sec_lang" ]; then echo "$(tput setaf 1)NG!\n symbol _SEC_LANG not found!$(tput sgr0)" >&2; finish 1; fi #find symbol _PRI_LANG_SIGNATURE in section '.text' pri_lang=$(cat text.sym | grep -E "\b_PRI_LANG_SIGNATURE\b") -if [ -z "$pri_lang" ]; then echo "NG!\n symbol _PRI_LANG_SIGNATURE not found!" >&2; finish 1; fi +if [ -z "$pri_lang" ]; then echo "$(tput setaf 1)NG!\n symbol _PRI_LANG_SIGNATURE not found!$(tput sgr0)" >&2; finish 1; fi echo "OK" >&2 echo " calculating vars:" >&2 @@ -65,7 +76,7 @@ printf " lang_table_size =0x%04x (=%d bytes)\n" $lang_table_size $lang_table_si lang_file_size=$(wc -c lang_$LNG.bin | cut -f1 -d' ') printf " lang_file_size =0x%04x (=%d bytes)\n" $lang_file_size $lang_file_size >&2 -if [ $lang_file_size -gt $lang_table_size ]; then echo "Lanaguage binary file size too big!" >&2; finish 1; fi +if [ $lang_file_size -gt $lang_table_size ]; then echo "$(tput setaf 1)Lanaguage binary file size too big!$(tput sgr0)" >&2; finish 1; fi echo "updating 'firmware.bin'..." >&2 From f922f4d1fa906f7f0e3dd9bb8371d12c27f78bdf Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Sun, 30 Jan 2022 11:01:19 +0100 Subject: [PATCH 05/24] PF-build.sh: - Add sort of variants. Request from @leptun - Add Arduino IDE 1.8.19 as an option - Allow upper and lower case. Request from @TojikCZ MK404-build.sh: - Allow upper and lower case. Request by @TojikCZ - Add update option to release OR devel --- MK404-build.sh | 84 +++++++++++++++++++++++++++++++++++--------------- PF-build.sh | 18 ++++++----- 2 files changed, 71 insertions(+), 31 deletions(-) diff --git a/MK404-build.sh b/MK404-build.sh index 4402a444..30f7eb61 100755 --- a/MK404-build.sh +++ b/MK404-build.sh @@ -10,7 +10,7 @@ # 3. Install latest updates with 'sudo apt-get upgrade' # # -# Version: 1.0.0-Build_13 +# Version: 1.0.0-Build_14 # Change log: # 11 Feb 2021, 3d-gussner, Inital # 11 Feb 2021, 3d-gussner, Optional flags to check for updates @@ -22,6 +22,8 @@ # 18 Jun 2021, 3d-gussner, Added -g 3 and 4 for more details extrusion lines # 18 Jun 2021, 3d-gussner, Check for updates is default. Fix update if internet connection is lost. # 21 Jun 2021, 3d-gussner, Change board_flash argument to 'y' and firmware_version to 'f' +# 25 Jan 2021, 3d-gussner, Allow upper and lower case in selection +# Add update option to release OR devel #### Start: Failures failures() @@ -74,7 +76,7 @@ while getopts c:f:g:m:n:p:u:x:y:?h flag # '?' 'h' argument usage and help if [ "$help_flag" == "1" ] ; then echo "***************************************" -echo "* MK404-build.sh Version: 1.0.0-Build_13 *" +echo "* MK404-build.sh Version: 1.0.0-Build_14 *" echo "***************************************" echo "Arguments:" echo "$(tput setaf 2)-c$(tput sgr0) Check for update" @@ -98,7 +100,7 @@ echo " -g : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' l echo " -m : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes '$(tput setaf 2)2$(tput sgr0)' with MMU2" echo " -n : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes" echo " -p : '$(tput setaf 2)MK25$(tput sgr0)', '$(tput setaf 2)MK25S$(tput sgr0)', '$(tput setaf 2)MK3$(tput sgr0)' or '$(tput setaf 2)MK3S$(tput sgr0)'" -echo " -u : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes '" +echo " -u : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' release ', '$(tput setaf 2)2$(tput sgr0)' devel '" echo " -x : '$(tput setaf 2)8$(tput sgr0)',$(tput setaf 2)16$(tput sgr0)',$(tput setaf 2)32$(tput sgr0)' or '$(tput setaf 2)64$(tput sgr0)' Kb." echo " -y : '$(tput setaf 2)256$(tput sgr0)','$(tput setaf 2)384$(tput sgr0)','$(tput setaf 2)512$(tput sgr0)','$(tput setaf 2)1024$(tput sgr0)''$(tput setaf 2)32M$(tput sgr0)'" echo @@ -170,9 +172,8 @@ fi #Start: Check if new build is selected if [ "$new_build_flag" == "1" ]; then check_flag=1 - update_flag=1 fi -if [ "$update_flag" == "1" ]; then +if [[ "$update_flag" == "1" || "$update_flag" == "2" ]]; then check_flag=1 fi #End: Check if new build is selected @@ -196,11 +197,13 @@ if [ ! -z $firmware_version_flag ]; then if [ ! -z $MK404_PRINTER_TEMP ]; then MK404_PRINTER=MK25S fi +elif [[ ! -z $new_build_flag || ! -z $update_flag || ! -z $check_flag ]]; then + echo "continue" else failures 8 fi -if [ -z "$MK404_PRINTER" ]; then +if [[ -z $MK404_PRINTER && -z $new_build_flag && -z $update_flag && -z $check_flag ]]; then failures 9 fi @@ -232,7 +235,7 @@ if [ ! -z $mk404_printer_flag ]; then fi fi -if [ -z $MK404_PRINTER ]; then +if [[ -z $MK404_PRINTER && -z $new_build_flag && -z $update_flag && -z $check_flag ]]; then failures 10 fi @@ -399,38 +402,58 @@ if [ "$check_flag" == "1" ]; then # Get latest release MK404_release_url=$(curl -Ls -o /dev/null -w %{url_effective} https://github.com/$MK404_owner/$MK404_project/releases/latest) MK404_release_tag=$(basename $MK404_release_url) -# Get remote Commit_Hash - #MK404_remote_GIT_COMMIT_HASH=$(git ls-remote --heads $(git config --get remote.origin.url) | grep "refs/heads/master" | cut -f 1) - MK404_remote_GIT_COMMIT_HASH=$(git ls-remote | grep "refs/tags/$MK404_release_tag" | cut -f 1) -# Get remote Commit_Number - MK404_remote_GIT_COMMIT_NUMBER=$(git rev-list $MK404_release_tag --count) +# Get release Commit_Hash + MK404_release_GIT_COMMIT_HASH=$(git ls-remote | grep "refs/tags/$MK404_release_tag" | cut -f 1) +# Get release Commit_Number + MK404_release_GIT_COMMIT_NUMBER=$(git rev-list $MK404_release_tag --count) +# Get latest development Commit_Hash + MK404_devel_GIT_COMMIT_HASH=$(git for-each-ref refs/remotes/origin/master | cut -d" " -f 1) +# Get latest development Commit_Number + MK404_devel_GIT_COMMIT_NUMBER=$(git rev-list refs/remotes/origin/master --count) # Output echo "" echo "Current version : $MK404_current_version" echo "" echo "Current local hash : $MK404_local_GIT_COMMIT_HASH" echo "Current local commit nr : $MK404_local_GIT_COMMIT_NUMBER" - if [ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_remote_GIT_COMMIT_HASH" ]; then + if [ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_release_GIT_COMMIT_HASH" ]; then echo "$(tput setaf 1)" else echo "$(tput setaf 2)" fi echo "Latest release tag : $MK404_release_tag" - echo "Latest release hash : $MK404_remote_GIT_COMMIT_HASH" - echo "Latest remote commit nr : $MK404_remote_GIT_COMMIT_NUMBER" + echo "Latest release hash : $MK404_release_GIT_COMMIT_HASH" + echo "Latest release commit nr: $MK404_release_GIT_COMMIT_NUMBER" + if [ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_devel_GIT_COMMIT_HASH" ]; then + echo "$(tput setaf 1)" + else + echo "$(tput setaf 2)" + fi + echo "Latest devel hash : $MK404_devel_GIT_COMMIT_HASH" + echo "Latest devel commit nr : $MK404_devel_GIT_COMMIT_NUMBER" echo "$(tput sgr 0)" # Check for updates - if [ ! -z $MK404_remote_GIT_COMMIT_HASH ]; then - if [[ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_remote_GIT_COMMIT_HASH" && -z "$update_flag" ]]; then - echo "$(tput setaf 2)Update is availible.$(tput sgr 0)" - read -t 10 -n 1 -p "$(tput setaf 3)Update now Y/n$(tput sgr 0)" update_answer - if [ "$update_answer" == "Y" ]; then + if [ ! -z $MK404_release_GIT_COMMIT_HASH ]; then + if [[ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_release_GIT_COMMIT_HASH" && -z "$update_flag" ]]; then + echo "$(tput setaf 2)Update to release is availible.$(tput sgr 0)" + read -t 10 -n 1 -p "$(tput setaf 3)Update to release now Y/n$(tput sgr 0)" update_answer + if [[ "$update_answer" == "Y" || "$update_answer" == "y" ]]; then update_flag=1 fi echo "" fi fi + if [ ! -z $MK404_devel_GIT_COMMIT_HASH ]; then + if [[ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_devel_GIT_COMMIT_HASH" && -z "$update_flag" ]]; then + echo "$(tput setaf 2)Update to devel is availible.$(tput sgr 0)" + read -t 10 -n 1 -p "$(tput setaf 3)Update to devel now Y/n$(tput sgr 0)" update_answer + if [[ "$update_answer" == "Y" || "$update_answer" == "y" ]]; then + update_flag=2 + fi + echo "" + fi + fi fi } #### End: Check for updates @@ -439,14 +462,27 @@ fi fetch_updates() { if [ "$update_flag" == "1" ]; then - if [ ! -z $MK404_remote_GIT_COMMIT_HASH ]; then - if [ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_remote_GIT_COMMIT_HASH" ]; then + if [ ! -z $MK404_release_GIT_COMMIT_HASH ]; then + if [ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_release_GIT_COMMIT_HASH" ]; then echo "" git fetch --all - read -t 10 -p "$(tput setaf 2)Updating MK404 !$(tput sgr 0)" + read -t 5 -p "$(tput setaf 2)Updating MK404 to release!$(tput sgr 0)" echo "" git reset --hard $MK404_release_tag - read -t 10 -p "$(tput setaf 2)Compiling MK404 !$(tput sgr 0)" + read -t 5 -p "$(tput setaf 2)Compiling MK404 release!$(tput sgr 0)" + echo "" + new_build_flag=1 + fi + fi +elif [ "$update_flag" == "2" ]; then + if [ ! -z $MK404_devel_GIT_COMMIT_HASH ]; then + if [ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_devel_GIT_COMMIT_HASH" ]; then + echo "" + git fetch --all + read -t 5 -p "$(tput setaf 2)Updating MK404 to devel!$(tput sgr 0)" + echo "" + git reset --hard origin/master + read -t 5 -p "$(tput setaf 2)Compiling MK404 devel!$(tput sgr 0)" echo "" new_build_flag=1 fi diff --git a/PF-build.sh b/PF-build.sh index 8a96083d..296463d3 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -56,7 +56,7 @@ # Some may argue that this is only used by a script, BUT as soon someone accidentally or on purpose starts Arduino IDE # it will use the default Arduino IDE folders and so can corrupt the build environment. # -# Version: 2.0.0-Build_66 +# Version: 2.0.0-Build_67 # Change log: # 12 Jan 2019, 3d-gussner, Fixed "compiler.c.elf.flags=-w -Os -Wl,-u,vfprintf -lprintf_flt -lm -Wl,--gc-sections" in 'platform.txt' # 16 Jan 2019, 3d-gussner, Build_2, Added development check to modify 'Configuration.h' to prevent unwanted LCD messages that Firmware is unknown @@ -166,6 +166,9 @@ # 24 Jun 2021, 3d-gussner, Fix MK404 user interaction not to show if compiling 'All' variants # 24 Jun 2021, 3d-gussner, MK404 is only supported on Linux at this moment. # 03 Jan 2022, 3d-gussner, Remove calling lang-community.sh as not needed anymore +# 21 Jan 2022, 3d-gussner, Sort variants +# Add Arduino 1.8.19 as an option +# 25 Jan 2022, 3d-gussner, Allow upper and lower case for MK404 SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )" @@ -221,7 +224,7 @@ while getopts b:c:d:g:h:i:j:l:m:n:o:p:v:x:y:?h flag # '?' 'h' argument usage and help if [ "$help_flag" == "1" ] ; then echo "***************************************" -echo "* PF-build.sh Version: 2.0.0-Build_66 *" +echo "* PF-build.sh Version: 2.0.0-Build_67 *" echo "***************************************" echo "Arguments:" echo "$(tput setaf 2)-b$(tput sgr0) Build/commit number" @@ -247,7 +250,7 @@ echo " -b : '$(tput setaf 2)Auto$(tput sgr0)' needs git or a number" echo " -c : '$(tput setaf 2)0$(tput sgr0)' clean up, '$(tput setaf 2)1$(tput sgr0)' keep" echo " -d : '$(tput setaf 2)GOLD$(tput sgr0)', '$(tput setaf 2)RC$(tput sgr0)', '$(tput setaf 2)BETA$(tput sgr0)', '$(tput setaf 2)ALPHA$(tput sgr0)', '$(tput setaf 2)DEBUG$(tput sgr0)', '$(tput setaf 2)DEVEL$(tput sgr0)' and '$(tput setaf 2)UNKNOWN$(tput sgr0)'" echo " -g : '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' lite '$(tput setaf 2)2$(tput sgr0)' fancy '$(tput setaf 2)3$(tput sgr0)' lite with Quad_HR '$(tput setaf 2)4$(tput sgr0)' fancy with Quad_HR" -echo " -i : '$(tput setaf 2)1.8.5$(tput sgr0)', '$(tput setaf 2)1.8.13$(tput sgr0)'" +echo " -i : '$(tput setaf 2)1.8.5$(tput sgr0)', '$(tput setaf 2)1.8.13$(tput sgr0)', '$(tput setaf 2)1.8.19$(tput sgr0)'" echo " -j : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes" echo " -l : '$(tput setaf 2)ALL$(tput sgr0)' for multi language or '$(tput setaf 2)EN_ONLY$(tput sgr0)' for English only" echo " -m : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes '$(tput setaf 2)2$(tput sgr0)' with MMU2" @@ -343,7 +346,7 @@ fi #Start: Check if Arduino IDE version is correct if [ ! -z "$IDE_flag" ]; then - if [[ "$IDE_flag" == "1.8.5" || "$IDE_flag" == "1.8.13" ]]; then + if [[ "$IDE_flag" == "1.8.5" || "$IDE_flag" == "1.8.13" || "$IDE_flag" == "1.8.19" ]]; then ARDUINO_ENV="${IDE_flag}" else ARDUINO_ENV="1.8.5" @@ -818,7 +821,8 @@ if [ -z "$variant_flag" ] ; then while IFS= read -r -d $'\0' f; do options[i++]="$f" done < <(find Firmware/variants/ -maxdepth 1 -type f -name "*.h" -print0 ) - select opt in "${options[@]}" "All" "Quit"; do + IFS=$'\n' sorted=($(sort -n <<<"${options[*]}")); unset IFS + select opt in "${sorted[@]}" "All" "Quit"; do case $opt in *.h) VARIANT=$(basename "$opt" ".h") @@ -1453,7 +1457,7 @@ if [[ "$output_flag" == "1" || -z "$output_flag" ]]; then if [[ -z "$mk404_flag" && "$variant_flag" != "All" ]]; then echo read -t 10 -n 1 -p "Do you want to start MK404? Y/$(tput setaf 2)n$(tput sgr 0)" mk404_start - if [ "$mk404_start" == "Y" ]; then + if [[ "$mk404_start" == "Y" || "$mk404_start" == "y" ]]; then echo read -t 10 -n 1 -p "Do you want to start MK404 with or without MMU2S? $(tput setaf 2)1$(tput sgr 0)/2" mk404_choose1 if [ "$mk404_choose1" == "1" ]; then @@ -1603,4 +1607,4 @@ done finish_pf-build if [ $TARGET_OS == "linux" ]; then MK404_SIM -fi \ No newline at end of file +fi From 4d27b623eaee1006b92a3cbbbcefe269ce1f8af5 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Sun, 30 Jan 2022 11:39:58 +0100 Subject: [PATCH 06/24] =?UTF-8?q?Improve=20language=20scripts=20-=20Add=20?= =?UTF-8?q?German=20`=C3=A4=C3=B6=C3=BC=C3=9F`=20support=20-=20Add/improve?= =?UTF-8?q?=20checks=20=20=20-=20Check=20for=20syntax=20errors=20=20=20-?= =?UTF-8?q?=20Output=20for=20translators=20-=20gitignore=20more=20temporar?= =?UTF-8?q?y=20files?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 7 + lang/fw-clean.sh | 11 +- lang/lang-build.sh | 30 +++- lang/lang-check.py | 61 ++++++-- lang/lang-clean.sh | 20 ++- lang/lang-export.sh | 21 ++- lang/lang-import.sh | 81 ++++++---- lang/lang_en_de.txt | 230 ++++++++++++++-------------- lang/po/Firmware_de.po | 102 ++++++------- lang/po/new/de.po | 332 ++++++++++++++++++++--------------------- 10 files changed, 513 insertions(+), 382 deletions(-) diff --git a/.gitignore b/.gitignore index db5bacd2..d69ee381 100644 --- a/.gitignore +++ b/.gitignore @@ -55,3 +55,10 @@ Firmware/Doc /Firmware/variants/printers.h Configuration.tmp config.tmp +/lang/lang_en.max +/lang/po/new/*_new.po +/lang/po/new/*_filered.po +/lang/po/new/nonascii.txt +/lang/po/new/lang_en*.txt +/lang/po/new/*-output.txt +/lang/po/new/*.mo \ No newline at end of file diff --git a/lang/fw-clean.sh b/lang/fw-clean.sh index 87172cf3..0915e749 100755 --- a/lang/fw-clean.sh +++ b/lang/fw-clean.sh @@ -1,6 +1,6 @@ #!/bin/bash # -# Version 1.0.1 Build 10 +# Version 1.0.1 Build 11 # # fw-clean.sh - multi-language support script # Remove all firmware output files from lang folder. @@ -8,11 +8,20 @@ ############################################################################# # Change log: # 21 June 2018, XPila, Initial +# 11 Sep. 2018, XPila, Lang update, french translation +# resized reserved space +# 18 Oct. 2018, XPila, New lang, arduino 1.8.5 - fw-clean.sh and lang-clean.sh fix +# 10 Dec. 2018, jhoblitt, make all shell scripts executable +# 26 Jul. 2019, leptun, Fix shifted languages. Use \n and \x0a +# 14 Sep. 2019, 3d-gussner, Prepare adding new language +# 01 Mar. 2021, 3d-gussner, Move `Dutch` language parts +# 22 Mar. 2021, 3d-gussner, Move Dutch removing part to correct loaction # 17 Dec. 2021, 3d-gussner, Use one config file for all languages # 11 Jan. 2022, 3d-gussner, Added version and Change log # colored output # Use `git rev-list --count HEAD fw-clean.sh` # to get Build Nr +# 25 Jan. 2022, 3d-gussner, Update documentation ############################################################################# # Config: if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi diff --git a/lang/lang-build.sh b/lang/lang-build.sh index 256f995e..cb0510c9 100755 --- a/lang/lang-build.sh +++ b/lang/lang-build.sh @@ -1,6 +1,6 @@ #!/bin/bash # -# Version 1.0.2 Build 24 +# Version 1.0.2 Build 25 # # lang-build.sh - multi-language support script # generate lang_xx.bin (language binary file) @@ -23,13 +23,39 @@ ############################################################################# # Change log: # 18 June 2018, XPila, Initial +# 19 June 2018, XPila, New ML support +# 18 Oct. 2018, XPila, New lang French +# 26 Nov. 2018, mkbel, Automate secondary language support build. +# 7 May 2019, ondratu Check translation dictionary files to display definition +# 19 June 2019, mkbel Disable language check warnings of type "[W]: No display definition on line". +# Those warnings were masking all other much more useful build process output. +# 14 Sep. 2019, 3d-gussner, Prepare adding new language +# 18 Sep. 2020, 3d-gussner, Update new messages and their translations, fix translations +# Update CZ, FR, IT, ES translations +# CZ thanks to @DRracer +# FR thanks to Carlin Dcustom +# ES +# IT thanks to @wavexx +# Co-authored-by: @DRracer, @wavexx +# 1 Mar. 2021, 3d-gussner, Add Dutch translation # 17 Dec. 2021, 3d-gussner, Use one config file for all languages +# 21 Dec. 2021, 3d-gussner, Prepare more community languages +# Swedish +# Danish +# Slovanian +# Hungarian +# Luxembourgian +# Croatian +# 3 Jan. 2022, 3d-gussner, Prepare Lithuanian +# Cleanup outdated code # 11 Jan. 2022, 3d-gussner, Add message and size count comparison # Added version and Change log # colored output # Add Community language support # Use `git rev-list --count HEAD lang-build.sh` # to get Build Nr +# 25 Jan. 2022, 3d-gussner, Fix check +# Update documentation ############################################################################# # # Config: @@ -133,7 +159,7 @@ generate_binary() #check lang dictionary ./lang-check.py $1 #--no-warning #create lang_xx.tmp - different processing for 'en' language - if [ "$1" = "en" ]; then + if [[ "$1" = "en" || ! -f "lang_en.max" ]]; then #remove comments and empty lines cat lang_en.txt | sed '/^$/d;/^#/d' #calculate number of strings diff --git a/lang/lang-check.py b/lang/lang-check.py index 3b95c272..94bf1395 100755 --- a/lang/lang-check.py +++ b/lang/lang-check.py @@ -1,19 +1,31 @@ #!/usr/bin/env python3 # -# Version 1.0.2 - Build 37 +# Version 1.0.2 - Build 38 ############################################################################# # Change log: -# 7 May 2019, Ondrej Tuma, Initial -# 9 June 2020, 3d-gussner, Added version and Change log -# 9 June 2020, 3d-gussner, Wrap text to 20 char and rows -# 9 June 2020, 3d-gussner, colored output +# 7 May 2019, ondratu , Initial +# 13 June 2019, 3d-gussner, Fix length false positives +# 14 Sep. 2019, 3d-gussner, Prepare adding new language +# 18 Sep. 2020, 3d-gussner, Fix execution of lang-check.py # 2 Apr. 2021, 3d-gussner, Fix and improve text warp # 22 Apr. 2021, DRracer , add English source to output # 23 Apr. 2021, wavexx , improve # 24 Apr. 2021, wavexx , improve -# 26 Apr. 2021, 3d-gussner, add character ruler -# 07 Jan. 2022, 3d-gussner, Check for Syntax errors and exit with error +# 26 Apr. 2021, wavexx , add character ruler +# 21 Dec. 2021, 3d-gussner, Prepare more community languages +# Swedish +# Danish +# Slovanian +# Hungarian +# Luxembourgian +# Croatian +# 3 Jan. 2022, 3d-gussner, Prepare Lithuanian +# 7 Jan. 2022, 3d-gussner, Check for Syntax errors and exit with error # , add Build number 'git rev-list --count HEAD lang-check.py' +# 30 Jan. 2022, 3d-gussner, Add arguments. Requested by @AttilaSVK +# --information == output all source and translated messages +# --import-check == used by `lang-import.sh`to verify +# newly import `lang_en_??.txt` files ############################################################################# # # Expected syntax of the files, which other scripts depend on @@ -112,12 +124,15 @@ def ign_char_first(c): def ign_char_last(c): return c.isalnum() or c in {'.', "'"} -def parse_txt(lang, no_warning, warn_empty): +def parse_txt(lang, no_warning, warn_empty, information, import_check): """Parse txt file and check strings to display definition.""" if lang == "en": file_path = "lang_en.txt" else: - file_path = "lang_en_%s.txt" % lang + if import_check: + file_path = "po/new/lang_en_%s.txt" % lang + else: + file_path = "lang_en_%s.txt" % lang print(green("Start %s lang-check" % lang)) @@ -208,7 +223,7 @@ def parse_txt(lang, no_warning, warn_empty): source = unescape(source) if lang != "en": translation = unescape(translation) - + #print (translation) #Debug wrapped_source = wrap_text(source, cols) rows_count_source = len(wrapped_source) @@ -271,6 +286,12 @@ def parse_txt(lang, no_warning, warn_empty): print_source_translation(source, translation, wrapped_source, wrapped_translation, rows, cols) + #elif information: + # print(green('[I]: %s' % (message))) + # print_source_translation(source, translation, + # wrapped_source, wrapped_translation, + # rows, cols) + # Short translation if not no_warning and len(source) > 0 and len(translation) > 0: @@ -279,6 +300,11 @@ def parse_txt(lang, no_warning, warn_empty): print_source_translation(source, translation, wrapped_source, wrapped_translation, rows, cols) + #elif information: + # print(green('[I]: %s' % (message))) + # print_source_translation(source, translation, + # wrapped_source, wrapped_translation, + # rows, cols) # Incorrect trailing whitespace in translation if not no_warning and len(translation) > 0 and \ @@ -292,6 +318,13 @@ def parse_txt(lang, no_warning, warn_empty): print_source_translation(source, translation, wrapped_source, wrapped_translation, rows, cols) + elif information: + print(green('[I]: %s' % (message))) + print_source_translation(source, translation, + wrapped_source, wrapped_translation, + rows, cols) + + delimiter = src.readline() lines += 1 if ("" == delimiter): @@ -316,10 +349,16 @@ def main(): parser.add_argument( "--warn-empty", action="store_true", help="Warn about empty translations") + parser.add_argument( + "--information", action="store_true", + help="Output all translations") + parser.add_argument( + "--import-check", action="store_true", + help="Check import file and save informational to file") args = parser.parse_args() try: - parse_txt(args.lang, args.no_warning, args.warn_empty) + parse_txt(args.lang, args.no_warning, args.warn_empty, args.information, args.import_check) return 0 except Exception as exc: print_exc() diff --git a/lang/lang-clean.sh b/lang/lang-clean.sh index 37008c65..41dc574a 100755 --- a/lang/lang-clean.sh +++ b/lang/lang-clean.sh @@ -1,6 +1,6 @@ #!/bin/bash # -# Version 1.0.1 Build 9 +# Version 1.0.1 Build 10 # # clean.sh - multi-language support script # Remove all language output files from lang folder. @@ -8,7 +8,15 @@ ############################################################################# # Change log: # 1 Nov. 2018, XPila, Initial -# 17 Dec. 2021, 3d-gussner, Use one config file for all languages +# 18 Oct. 2018, XPila, New lang, arduino 1.8.5 - fw-clean.sh and lang-clean.sh fix +# 25 Oct. 2018, XPila, New lang - fixed french langcode and comparsion in lang-clean script +# 10 Dec. 2018, jhoblitt, make all shell scripts executable +# 26 Jul. 2019, leptun, Fix shifted languages. Use \n and \x0a +# 14 Sep. 2019, 3d-gussner, Prepare adding new language +# 01 Mar. 2021, 3d-gussner, Move `Dutch` language parts +# 22 Mar. 2021, 3d-gussner, Move Dutch removing part to correct loaction +# 21 Dec. 2021, 3d-gussner, Use one config file for all languages +# 03 Jan. 2022, 3d-gussner, Cleanup outdated code # 11 Jan. 2022, 3d-gussner, Also remove temporally files which have been # generated for message and size count comparison # Added version and Change log @@ -16,6 +24,7 @@ # Add Community language support # Use `git rev-list --count HEAD lang-clean.sh` # to get Build Nr +# 25 Jan. 2022, 3d-gussner, clean up lang-import.sh temproray files ############################################################################# # Config: if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi @@ -52,12 +61,19 @@ clean_lang() rm_if_exists lang_en_$1.dif rm_if_exists lang_$1.ofs rm_if_exists lang_$1.txt + rm_if_exists po/new/$1_new.po + rm_if_exists po/new/$1.mo + rm_if_exists po/new/$1_filtered.po + rm_if_exists po/new/lang_en_$1.txt + rm_if_exists po/new/$1-output.txt fi rm_if_exists lang_$1_check.dif rm_if_exists lang_$1.bin rm_if_exists lang_$1.dat rm_if_exists lang_$1_1.tmp rm_if_exists lang_$1_2.tmp + rm_if_exists po/new/nonascii.txt + } echo "$(tput setaf 2)lang-clean.sh started$(tput sgr0)" >&2 diff --git a/lang/lang-export.sh b/lang/lang-export.sh index 2aada88a..32774c9a 100755 --- a/lang/lang-export.sh +++ b/lang/lang-export.sh @@ -1,14 +1,16 @@ #!/bin/bash # -# Version 1.0.1 Build 17 +# Version 1.0.1 Build 18 # # lang-export.sh - multi-language support script # for generating lang_xx.po # ############################################################################# # Change log: -# 9 Nov 2018, XPila, Initial +# 9 Nov. 2018, XPila, Initial +# 10 Dec. 2018, jhoblitt, make all shell scripts executable # 14 Sep. 2019, 3d-gussner, Prepare adding new language +# 6 Sep. 2019, DRracer, change to bash # 1 Mar. 2019, 3d-gussner, Move `Dutch` language parts # Add templates for future community languages # 17 Dec. 2021, 3d-gussner, Use one config file for all languages @@ -16,11 +18,13 @@ # 21 Dec. 2021, 3d-gussner, Add Swedish, Danish, Slovanian, Hungarian, # Luxembourgish, Croatian # 3 Jan. 2022, 3d-gussner, Add Lithuanian +# Cleanup outaded code # 11 Jan. 2022, 3d-gussner, Added version and Change log # colored output # Add Community language support # Use `git rev-list --count HEAD lang-export.sh` # to get Build Nr +# 25 Jan. 2022, 3d-gussner, Replace German HD44780 A00 ROM 'äöüß' to UTF-8 'äöüß' ############################################################################# # Config: if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi @@ -183,6 +187,19 @@ done >>$OUTFILE) 2>&1 #replace LF with CRLF sync sed -i 's/$/\r/' $OUTFILE + +#replace HD44780 A00 'äöüß' to UTF-8 'äöüß' +if [ "$LNG" = "de" ]; then + #replace 'A00 ROM ä' with 'ä' + sed -i 's/\\xe1/\xc3\xa4/g' $OUTFILE + #replace 'A00 ROM ü' with 'ü' + sed -i 's/\\xf5/\xc3\xbc/g' $OUTFILE + #replace 'A00 ROM ö' with 'ö' + sed -i 's/\\xef/\xc3\xb6/g' $OUTFILE + #replace 'A00 ROM ß' with 'ß' + sed -i 's/\\xe2/\xc3\x9f/g' $OUTFILE +fi + echo >&2 echo "$(tput setaf 2)lang-export.sh finished$(tput sgr 0)">&2 exit 0 diff --git a/lang/lang-import.sh b/lang/lang-import.sh index 07f78e56..a7991543 100755 --- a/lang/lang-import.sh +++ b/lang/lang-import.sh @@ -1,13 +1,18 @@ #!/bin/bash # -# Version 1.0.1 Build 23 +# Version 1.0.1 Build 24 # # lang-import.sh - multi-language support script # for importing translated xx.po # ############################################################################# # Change log: -# 9 Nov 2018, XPila, Initial +# 9 Nov. 2018, XPila, Initial +# 21 Nov. 2018, XPila, fix - replace '\n' with space in all languages +# 10 Dec. 2018, jhoblitt, make all shell scripts executable +# 21 Aug. 2019, 3d-gussner, Added "All" argument and it is default in nothing is chosen +# Added few German/French diacritical characters +# 6 Sep. 2019, DRracer, change to bash # 14 Sep. 2019, 3d-gussner, Prepare adding new language # 1 Mar. 2019, 3d-gussner, Move `Dutch` language parts # Add templates for future community languages @@ -18,11 +23,16 @@ # 21 Dec. 2021, 3d-gussner, Add Swedish, Danish, Slovanian, Hungarian, # Luxembourgish, Croatian # 3 Jan. 2022, 3d-gussner, Add Lithuanian +# Cleanup outaded code # 11 Jan. 2022, 3d-gussner, Added version and Change log # colored output # Add Community language support -# Use `git rev-list --count HEAD lang-export.sh` +# Use `git rev-list --count HEAD lang-import.sh` # to get Build Nr +# 14 Jan. 2022, 3d-gussner, Replace German UTF-8 '' to HD44780 A00 ROM '' +# 28 Jan. 2022, 3d-gussner, Run lang-check and output `xx-output.txt` file to review +# translations +# new argruments `--information` `--import-check` ############################################################################# # Config: if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi @@ -30,15 +40,17 @@ if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo "$(tput setaf 1)Config echo "$(tput setaf 2)lang-import.sh started$(tput sgr 0)" >&2 -if [ ! -z "$COMMUNITY_LANGUAGES" ]; then - LANGUAGES+=" $COMMUNITY_LANGUAGES" -fi -echo "$(tput setaf 2)lang-import languages:$LANGUAGES$(tput sgr 0)" >&2 - LNG=$1 # if no arguments, 'all' is selected (all po and also pot will be generated) if [ -z "$LNG" ]; then LNG=all; fi +if [[ ! -z "$COMMUNITY_LANGUAGES" && "$LNG" = "all" ]]; then + LANGUAGES+=" $COMMUNITY_LANGUAGES" +else + LANGUAGES="$LNG" +fi +echo "$(tput setaf 2)lang-import languages:$LANGUAGES$(tput sgr 0)" >&2 + # if 'all' is selected, script will generate all po files and also pot file if [ "$LNG" = "all" ]; then for lang in $LANGUAGES; do @@ -87,20 +99,21 @@ fi #replace in german translation https://en.wikipedia.org/wiki/German_orthography if [ "$LNG" = "de" ]; then - #replace '' with 'ae' - sed -i 's/\xc3\xa4/ae/g' $LNG'_filtered.po' - #replace '' with 'Ae' - sed -i 's/\xc3\x84/Ae/g' $LNG'_filtered.po' - #replace '' with 'ue' - sed -i 's/\xc3\xbc/ue/g' $LNG'_filtered.po' - #replace '' with 'Ue' - sed -i 's/\xc3\x9c/Ue/g' $LNG'_filtered.po' - #replace '' with 'oe' - sed -i 's/\xc3\xb6/oe/g' $LNG'_filtered.po' - #replace '' with 'Oe' - sed -i 's/\xc3\x96/Oe/g' $LNG'_filtered.po' - #replace '' with 'ss' - sed -i 's/\xc3\x9f/ss/g' $LNG'_filtered.po' +#replace UTF-8 '' to HD44780 A00 '' + #replace '' with 'A00 ROM ' + sed -i 's/\xc3\xa4/\\xe1/g' $LNG'_filtered.po' + #replace '' with 'A00 ROM ' + sed -i 's/\xc3\x84/\\xe1/g' $LNG'_filtered.po' + #replace '' with 'A00 ROM ' + sed -i 's/\xc3\xbc/\\xf5/g' $LNG'_filtered.po' + #replace '' with 'A00 ROM ' + sed -i 's/\xc3\x9c/\\xf5/g' $LNG'_filtered.po' + #replace '' with 'A00 ROM ' + sed -i 's/\xc3\xb6/\\xef/g' $LNG'_filtered.po' + #replace '' with 'A00 ROM ' + sed -i 's/\xc3\x96/\\xef/g' $LNG'_filtered.po' + #replace '' with 'A00 ROM ' + sed -i 's/\xc3\x9f/\\xe2/g' $LNG'_filtered.po' fi #replace in spain translation @@ -199,21 +212,21 @@ if [ "$LNG" = "nl" ]; then sed -i 's/\xc3\x85/A/g' $LNG'_filtered.po' fi -if [ "$LGN" = "sv" ]; then +if [ "$LNG" = "sv" ]; then #repace '' with 'Aa' sed -i 's/\xc3\x85/Aa/g' $LNG'_filtered.po' #repace '' with 'aa' sed -i 's/\xc3\xA5/aa/g' $LNG'_filtered.po' fi -if [ "$LGN" = "da" ]; then +if [ "$LNG" = "da" ]; then #repace '' with 'Aa' sed -i 's/\xc3\x85/Aa/g' $LNG'_filtered.po' #repace '' with 'aa' sed -i 's/\xc3\xA5/aa/g' $LNG'_filtered.po' fi -if [ "$LGN" = "sl" ]; then +if [ "$LNG" = "sl" ]; then #replace '' with 'e' sed -i 's/\xc3\xab/e/g' $LNG'_filtered.po' #replace '' with 'a' (left) @@ -222,7 +235,7 @@ if [ "$LGN" = "sl" ]; then sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' fi -if [ "$LGN" = "hu" ]; then +if [ "$LNG" = "hu" ]; then #replace '' with 'e' sed -i 's/\xc3\xab/e/g' $LNG'_filtered.po' #replace '' with 'a' @@ -231,7 +244,7 @@ if [ "$LGN" = "hu" ]; then sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' fi -if [ "$LGN" = "lb" ]; then +if [ "$LNG" = "lb" ]; then #replace '' with 'e' sed -i 's/\xc3\xab/e/g' $LNG'_filtered.po' #replace '' with 'a' @@ -240,7 +253,7 @@ if [ "$LGN" = "lb" ]; then sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' fi -if [ "$LGN" = "hr" ]; then +if [ "$LNG" = "hr" ]; then #replace '' with 'e' sed -i 's/\xc3\xab/e/g' $LNG'_filtered.po' #replace '' with 'a' @@ -249,7 +262,7 @@ if [ "$LGN" = "hr" ]; then sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' fi -if [ "$LGN" = "lt" ]; then +if [ "$LNG" = "lt" ]; then #replace '' with 'e' sed -i 's/\xc3\xab/e/g' $LNG'_filtered.po' #replace '' with 'a' @@ -261,8 +274,8 @@ fi #if [ "$LNG" = "pl" ]; then #fi -#check for nonasci characters -if grep --color='auto' -P -n '[^\x00-\x7F]' $LNG'_filtered.po' >nonasci.txt; then +#check for nonasci characters excpet HD44780 ROM A00 '' +if grep --color='auto' -P -n '[^\x00-\x7F]' $LNG'_filtered.po' >nonascii.txt; then exit fi @@ -302,5 +315,9 @@ echo "$(tput setaf 2)Finished with $LNGISO$(tput sgr 0)" >&2 sed -i 's/""/"\\x00"/g' lang_en_$LNG.txt #remove CR sed -i "s/\r//g" lang_en_$LNG.txt +#check new lang +./../../lang-check.py $LNG --warn-empty +./../../lang-check.py $LNG --information >$LNG-output.txt echo >&2 -echo "$(tput setaf 2)lang-import.sh finished$(tput sgr 0)">&2 \ No newline at end of file +echo "$(tput setaf 2)lang-import.sh finished$(tput sgr 0)">&2 + diff --git a/lang/lang_en_de.txt b/lang/lang_en_de.txt index 6c052dcd..5ecdfd22 100644 --- a/lang/lang_en_de.txt +++ b/lang/lang_en_de.txt @@ -1,10 +1,10 @@ #MSG_IR_03_OR_OLDER c=18 " 0.3 or older" -" 0.3 oder aelter" +" 0.3 oder \xe1lter" #MSG_FS_V_03_OR_OLDER c=18 "FS v0.3 or older" -"FS 0.3 oder aelter" +"FS v0.3 oder \xe1lter" #MSG_IR_04_OR_NEWER c=18 " 0.4 or newer" @@ -12,7 +12,7 @@ #MSG_FS_V_04_OR_NEWER c=18 "FS v0.4 or newer" -"FS 0.4 oder neuer" +"FS v0.4 oder neuer" #MSG_IR_UNKNOWN c=18 "unknown state" @@ -40,7 +40,7 @@ #MSG_WIZARD_DONE c=20 r=8 "All is done. Happy printing!" -"Alles abgeschlossen. Viel Spass beim Drucken!" +"Alles abgeschlossen. Viel Spa\xe2 beim Drucken!" #MSG_AMBIENT c=14 "Ambient" @@ -52,7 +52,7 @@ #MSG_PRESS c=20 r=2 "and press the knob" -"und Knopf druecken" +"und Knopf dr\xf5cken" #MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 "Are left and right Z~carriages all up?" @@ -68,15 +68,15 @@ #MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 "Autoloading filament available only when filament sensor is turned on..." -"Automatisches Laden Filament nur bei eingeschaltetem Fil. sensor verfuegbar..." +"Automatisches Laden Filament nur bei eingeschaltetem Fil. sensor verf\xf5gbar..." #MSG_AUTOLOADING_ENABLED c=20 r=4 "Autoloading filament is active, just press the knob and insert filament..." -"Automatisches Laden Filament ist aktiv, Knopf druecken und Filament einlegen..." +"Automatisches Laden Filament ist aktiv, Knopf dr\xf5cken und Filament einlegen..." #MSG_SELFTEST_AXIS_LENGTH c=20 "Axis length" -"Achsenlaenge" +"Achsenl\xe1nge" #MSG_SELFTEST_AXIS c=16 "Axis" @@ -92,7 +92,7 @@ #MSG_BED_HEATING c=20 "Bed Heating" -"Bett aufwaermen" +"Bett aufw\xe1rmen" #MSG_BED_CORRECTION_MENU c=18 "Bed level correct" @@ -104,7 +104,7 @@ #MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=6 "Bed leveling failed. Sensor didn't trigger. Debris on nozzle? Waiting for reset." -"Z-Kal. fehlgeschlg. Sensor nicht ausgeloest. Schmutzige Duese? Warte auf Reset." +"Z-Kal. fehlgeschlg. Sensor nicht ausgel\xefst. Schmutzige D\xf5se? Warte auf Reset." #MSG_BRIGHT c=6 "Bright" @@ -148,7 +148,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." -"XYZ Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf druecken." +"XYZ Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf dr\xf5cken." #MSG_CALIBRATE_Z_AUTO c=20 r=2 "Calibrating Z" @@ -156,7 +156,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." -"Z Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf druecken." +"Z Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf dr\xf5cken." #MSG_HOMEYZ_DONE c=20 "Calibration done" @@ -172,7 +172,7 @@ #MSG_CHECKING_FILE c=17 "Checking file" -"Ueberpruefe Datei" +"\xf5berpr\xf5fe Datei" #MSG_NOT_COLOR c=19 "Color not correct" @@ -180,11 +180,11 @@ #MSG_COOLDOWN c=18 "Cooldown" -"Abkuehlen" +"Abk\xf5hlen" #MSG_COPY_SEL_LANG c=20 r=3 "Copy selected language?" -"Gewaehlte Sprache kopieren?" +"Gew\xe1hlte Sprache kopieren?" #MSG_CRASHDETECT c=13 "Crash det." @@ -192,7 +192,7 @@ #MSG_CHOOSE_FIL_1ST_LAYERCAL c=20 r=7 "Choose a filament for the First Layer Calibration and select it in the on-screen menu." -"Waehlen Sie ein Filament fuer Erste Schichtkalibrierung aus und waehlen Sie es im On-Screen-Menu aus." +"W\xe1hlen Sie ein Filament f\xf5r Erste- Schichtkalibrierung aus und w\xe1hlen Sie es im On-Screen-Menu aus." #MSG_CRASH_DETECTED c=20 "Crash detected." @@ -200,7 +200,7 @@ #MSG_CRASH_RESUME c=20 r=3 "Crash detected. Resume print?" -"Crash erkannt. Druck fortfuehren?" +"Crash erkannt. Druck fortf\xf5hren?" #MSG_CRASH c=7 "Crash" @@ -224,7 +224,7 @@ #MSG_BABYSTEP_Z_NOT_SET c=20 r=12 "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration." -"Der Abstand zwischen der Spitze der Duese und dem Bett ist noch nicht eingestellt. Bitte folgen Sie dem Handbuch, Kapitel Erste Schritte, Abschnitt Erste Schicht Kalibrierung." +"Der Abstand zwischen der Spitze der D\xf5se und dem Bett ist noch nicht eingestellt. Bitte folgen Sie dem Handbuch, Kapitel Erste Schritte, Abschnitt Erste Schicht Kalibrierung." #MSG_FS_CONTINUE c=5 "Cont." @@ -232,7 +232,7 @@ #MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 "Do you want to repeat last step to readjust distance between nozzle and heatbed?" -"Moechten Sie den letzten Schritt wiederholen, um den Abstand zwischen Duese und Druckbett neu einzustellen?" +"M\xefchten Sie den letzten Schritt wiederholen, um den Abstand zwischen D\xf5se und Druckbett neu einzustellen?" #MSG_EXTRUDER_CORRECTION c=13 "E-correct:" @@ -260,7 +260,7 @@ #MSG_STACK_ERROR c=20 r=4 "Error - static memory has been overwritten" -"Fehler - statischer Speicher wurde ueberschrieben" +"Fehler - statischer Speicher wurde \xf5berschrieben" #MSG_CUT_FILAMENT c=16 "Cut filament" @@ -276,7 +276,7 @@ #MSG_FSENS_NOT_RESPONDING c=20 r=4 "ERROR: Filament sensor is not responding, please check connection." -"FEHLER: Filament- sensor reagiert nicht, bitte Verbindung pruefen." +"FEHLER: Filament- sensor reagiert nicht, bitte Verbindung pr\xf5fen." #MSG_DIM c=6 "Dim" @@ -288,7 +288,7 @@ #MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18 "Extruder fan:" -"Extruder Luefter:" +"Extruderl\xf5fter:" #MSG_INFO_EXTRUDER c=18 "Extruder info" @@ -312,15 +312,15 @@ #MSG_FAN_SPEED c=14 "Fan speed" -"Luefter-Tempo" +"L\xf5fter-Tempo" #MSG_SELFTEST_FAN c=20 "Fan test" -"Lueftertest" +"L\xf5ftertest" #MSG_FANS_CHECK c=13 "Fans check" -"Luefter Chk." +"L\xf5fter Check" #MSG_FSENSOR c=12 "Fil. sensor" @@ -328,7 +328,7 @@ #MSG_FIL_RUNOUTS c=15 "Fil. runouts" -"Fil. Maengel" +"Fil. M\xe1ngel" #MSG_FILAMENT_CLEAN c=20 r=2 "Filament extruding & with correct color?" @@ -356,7 +356,7 @@ #MSG_FILE_INCOMPLETE c=20 r=3 "File incomplete. Continue anyway?" -"Datei unvollstaendig Trotzdem fortfahren?" +"Datei unvollst\xe1ndig Trotzdem fortfahren?" #MSG_FINISHING_MOVEMENTS c=20 "Finishing movements" @@ -368,11 +368,11 @@ #MSG_WIZARD_SELFTEST c=20 r=8 "First, I will run the selftest to check most common assembly problems." -"Zunaechst fuehre ich den Selbsttest durch, um die haeufigsten Probleme beim Zusammenbau zu ueberpruefen." +"Zun\xe1chst f\xf5hre ich den Selbsttest durch, um die h\xe1ufigsten Probleme beim Zusammenbau zu \xf5berpr\xf5fen." #MSG_MMU_FIX_ISSUE c=20 r=4 "Fix the issue and then press button on MMU unit." -"Beseitigen Sie das Problem und druecken Sie dann den Knopf am MMU." +"Beseitigen Sie das Problem und dr\xf5cken Sie dann den Knopf am MMU." #MSG_FLOW c=15 "Flow" @@ -380,7 +380,7 @@ #MSG_SELFTEST_COOLING_FAN c=20 "Front print fan?" -"Teile Luefter?" +"Druckl\xf5fter?" #MSG_BED_CORRECTION_FRONT c=14 "Front side[um]" @@ -388,7 +388,7 @@ #MSG_SELFTEST_FANS c=20 "Front/left fans" -"Teile/Extr. Luefter" +"Druck/Extr. L\xf5fter" #MSG_SELFTEST_HEATERTHERMISTOR c=20 "Heater/Thermistor" @@ -400,15 +400,15 @@ #MSG_HEATING_COMPLETE c=20 "Heating done." -"Aufwaermen OK." +"Aufw\xe1rmen OK." #MSG_HEATING c=20 "Heating" -"Aufwaermen" +"Aufw\xe1rmen" #MSG_WIZARD_WELCOME c=20 r=7 "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?" -"Hallo, ich bin Ihr Original Prusa i3 Drucker. Moechten Sie, dass ich Sie durch den Einrich- tungsablauf fuehre?" +"Hallo, ich bin Ihr Original Prusa i3 Drucker. M\xefchten Sie, dass ich Sie durch den Einricht- ungsablauf f\xf5hre?" #MSG_FILAMENTCHANGE c=18 "Change filament" @@ -424,39 +424,39 @@ #MSG_SELFTEST_CHECK_BED c=20 "Checking bed" -"Pruefe Bett" +"Pr\xf5fe Bett" #MSG_SELFTEST_CHECK_ENDSTOPS c=20 "Checking endstops" -"Pruefe Endschalter" +"Pr\xf5fe Endschalter" #MSG_SELFTEST_CHECK_HOTEND c=20 "Checking hotend" -"Pruefe Duese" +"Pr\xf5fe D\xf5se" #MSG_SELFTEST_CHECK_FSENSOR c=20 "Checking sensors" -"Pruefe Sensoren" +"Pr\xf5fe Sensoren" #MSG_CHECKING_X c=20 "Checking X axis" -"Pruefe X Achse" +"Pr\xf5fe X Achse" #MSG_CHECKING_Y c=20 "Checking Y axis" -"Pruefe Y Achse" +"Pr\xf5fe Y Achse" #MSG_SELFTEST_CHECK_Z c=20 "Checking Z axis" -"Pruefe Z Achse" +"Pr\xf5fe Z Achse" #MSG_CHOOSE_EXTRUDER c=20 "Choose extruder:" -"Extruder waehlen:" +"Extruder w\xe1hlen:" #MSG_CHOOSE_FILAMENT c=20 "Choose filament:" -"Waehle Filament:" +"W\xe1hle Filament:" #MSG_FILAMENT c=17 "Filament" @@ -464,11 +464,11 @@ #MSG_WIZARD_XYZ_CAL c=20 r=8 "I will run xyz calibration now. It will take approx. 12 mins." -"Ich werde jetzt die XYZ-Kalibrierung durchfuehren. Es wird ca. 12 Minuten dauern." +"Ich werde jetzt die XYZ-Kalibrierung durchf\xf5hren. Es wird ca. 12 Minuten dauern." #MSG_WIZARD_Z_CAL c=20 r=8 "I will run z calibration now." -"Ich werde jetzt die Z Kalibrierung durchfuehren." +"Ich werde jetzt die Z Kalibrierung durchf\xf5hren." #MSG_WATCH c=18 "Info screen" @@ -492,11 +492,11 @@ #MSG_WIZARD_WELCOME_SHIPPING c=20 r=16 "Hi, I am your Original Prusa i3 printer. I will guide you through a short setup process, in which the Z-axis will be calibrated. Then, you will be ready to print." -"Hallo, ich bin Ihr Original Prusa i3 Drucker. Ich werde Sie durch einen kurzen Einrichtungsprozess fuehren, bei dem die Z-Achse kalibriert wird. Danach sind Sie bereit fuer den Druck." +"Hallo, ich bin Ihr Original Prusa i3 Drucker. Ich werde Sie durch einen kurzen Einrichtungsprozess f\xf5hren, bei dem die Z-Achse kalibriert wird. Danach sind Sie bereit f\xf5r den Druck." #MSG_ADDITIONAL_SHEETS c=20 r=9 "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets." -"Wenn Sie zusaetzliche Stahlbleche haben, kalibrieren Sie deren Voreinstellungen unter Einstellungen - HW Setup - Stahlbleche." +"Wenn Sie zus\xe1tzliche Stahlbleche haben, kalibrieren Sie deren Voreinstellungen unter Einstellungen - HW Setup - Stahlbleche." #MSG_LAST_PRINT c=18 "Last print" @@ -504,7 +504,7 @@ #MSG_SELFTEST_EXTRUDER_FAN c=20 "Left hotend fan?" -"Extruder Luefter?" +"Extruderl\xf5fter?" #MSG_LEFT c=10 "Left" @@ -524,7 +524,7 @@ #MSG_INSERT_FIL c=20 r=6 "Insert the filament (do not load it) into the extruder and then press the knob." -"Stecken Sie das Filament (nicht laden) in den Extruder und druecken Sie dann den Knopf." +"Stecken Sie das Filament (nicht laden) in den Extruder und dr\xf5cken Sie dann den Knopf." #MSG_LOAD_FILAMENT c=17 "Load filament" @@ -536,7 +536,7 @@ #MSG_LOADING_FILAMENT c=20 "Loading filament" -"Filament laedt" +"Filament l\xe1dt" #MSG_ITERATION c=12 "Iteration" @@ -556,7 +556,7 @@ #MSG_MAIN c=18 "Main" -"Hauptmenue" +"Hauptmen\xf5" #MSG_BL_HIGH c=12 "Level Bright" @@ -568,7 +568,7 @@ #MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=20 r=3 "Measuring reference height of calibration point" -"Messen der Referenzhoehe des Kalibrierpunktes" +"Messen der Referenzh\xefhe des Kalibrierpunktes" #MSG_MESH_BED_LEVELING c=18 "Mesh Bed Leveling" @@ -584,7 +584,7 @@ #MSG_MEASURED_SKEW c=14 "Measured skew" -"Schraeglauf" +"Schr\xe1glauf" #MSG_MMU_FAILS c=15 "MMU fails" @@ -684,7 +684,7 @@ #MSG_NEW_FIRMWARE_AVAILABLE c=20 r=2 "New firmware version available:" -"Neue Firmware- Version verfuegbar:" +"Neue Firmware- Version verf\xf5gbar:" #MSG_SELFTEST_FAN_NO c=19 "Not spinning" @@ -692,15 +692,15 @@ #MSG_WIZARD_V2_CAL c=20 r=8 "Now I will calibrate distance between tip of the nozzle and heatbed surface." -"Jetzt werde ich den Abstand zwischen Duesenspitze und Druckbett kalibrieren." +"Jetzt werde ich den Abstand zwischen D\xf5senspitze und Druckbett kalibrieren." #MSG_WIZARD_WILL_PREHEAT c=20 r=4 "Now I will preheat nozzle for PLA." -"Jetzt werde ich die Duese fuer PLA vorheizen." +"Jetzt werde ich die D\xf5se f\xf5r PLA vorheizen." #MSG_NOZZLE c=12 "Nozzle" -"Duese" +"D\xf5se" #MSG_DEFAULT_SETTINGS_LOADED c=20 r=6 "Old settings found. Default PID, Esteps etc. will be set." @@ -712,7 +712,7 @@ #MSG_NOZZLE_FAN c=10 "Nozzle FAN" -"Duesevent." +"Druckl\xf5ft." #MSG_PAUSE_PRINT c=18 "Pause print" @@ -732,23 +732,23 @@ #MSG_PINDA_PREHEAT c=20 "PINDA Heating" -"PINDA erwaermen" +"PINDA erw\xe1rmen" #MSG_PAPER c=20 r=10 "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately." -"Legen Sie ein Blatt Papier unter die Duese waehrend der Kalibrierung der ersten 4 Punkte. Wenn die Duese das Papier erfasst, den Drucker sofort ausschalten." +"Legen Sie ein Blatt Papier unter die D\xf5se w\xe1hrend der Kalibrierung der ersten 4 Punkte. Wenn die D\xf5se das Papier erfasst, den Drucker sofort ausschalten." #MSG_WIZARD_CLEAN_HEATBED c=20 r=8 "Please clean heatbed and then press the knob." -"Bitte reinigen Sie das Heizbett und druecken Sie dann den Knopf." +"Bitte reinigen Sie das Heizbett und dr\xf5cken Sie dann den Knopf." #MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 "Please clean the nozzle for calibration. Click when done." -"Bitte entfernen Sie ueberstehendes Filament von der Duese. Klicken wenn sauber." +"Bitte entfernen Sie \xf5berstehendes Filament von der D\xf5se. Klicken wenn sauber." #MSG_SELFTEST_PLEASECHECK c=20 "Please check:" -"Bitte pruefe:" +"Bitte pr\xf5fen:" #MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer." @@ -756,7 +756,7 @@ #MSG_CHECK_IDLER c=20 r=5 "Please open idler and remove filament manually." -"Bitte Spannrolle oeffnen und Fila- ment von Hand entfernen" +"Bitte Spannrolle \xefffnen und Filament von Hand entfernen" #MSG_PLACE_STEEL_SHEET c=20 r=5 "Please place steel sheet on heatbed." @@ -764,7 +764,7 @@ #MSG_PRESS_TO_UNLOAD c=20 r=4 "Please press the knob to unload filament" -"Bitte druecken Sie den Knopf um das Filament zu entladen." +"Bitte dr\xf5cken Sie den Knopf um das Filament zu entladen." #MSG_PULL_OUT_FILAMENT c=20 r=4 "Please pull out filament immediately" @@ -772,7 +772,7 @@ #MSG_EJECT_REMOVE c=20 r=4 "Please remove filament and then press the knob." -"Bitte Filament entfernen und dann den Knopf druecken" +"Bitte Filament entfernen und dann den Knopf dr\xf5cken" #MSG_REMOVE_STEEL_SHEET c=20 r=4 "Please remove steel sheet from heatbed." @@ -780,7 +780,7 @@ #MSG_RUN_XYZ c=20 r=4 "Please run XYZ calibration first." -"Bitte zuerst XYZ Kalibrierung ausfuehren." +"Bitte zuerst XYZ Kalibrierung ausf\xf5hren." #MSG_UPDATE_MMU2_FW c=20 r=4 "Please update firmware in your MMU2. Waiting for reset." @@ -796,7 +796,7 @@ #MSG_PREHEAT_NOZZLE c=20 "Preheat the nozzle!" -"Duese vorheizen!" +"D\xf5se vorheizen!" #MSG_PREHEAT c=18 "Preheat" @@ -804,7 +804,7 @@ #MSG_WIZARD_HEATING c=20 r=3 "Preheating nozzle. Please wait." -"Vorheizen der Duese. Bitte warten." +"Vorheizen der D\xf5se. Bitte warten." #MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 "Please upgrade." @@ -812,7 +812,7 @@ #MSG_PRESS_TO_PREHEAT c=20 r=4 "Press the knob to preheat nozzle and continue." -"Bitte druecken Sie den Knopf um die Duese vorzuheizen und fortzufahren." +"Bitte dr\xf5cken Sie den Knopf um die D\xf5se vorzuheizen und fortzufahren." #MSG_FS_PAUSE c=5 "Pause" @@ -836,7 +836,7 @@ #MSG_SELFTEST_PRINT_FAN_SPEED c=18 "Print fan:" -"Druckvent.:" +"Druckl\xf5fter:" #MSG_CARD_MENU c=18 "Print from SD" @@ -844,7 +844,7 @@ #MSG_PRESS_KNOB c=20 "Press the knob" -"Knopf druecken zum" +"Knopf dr\xf5cken zum" #MSG_PRINT_PAUSED c=20 "Print paused" @@ -852,7 +852,7 @@ #MSG_RESUME_NOZZLE_TEMP c=20 r=4 "Press the knob to resume nozzle temperature." -"Druecken Sie den Knopf um die Duesentemperatur wiederherzustellen" +"Dr\xf5cken Sie den Knopf um die D\xf5sentemperatur wiederherzustellen" #MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow." @@ -860,15 +860,15 @@ #MSG_PRINT_FAN c=10 "Print FAN" -"Druckvent." +"Druckl\xf5ft." #MSG_WIZARD_LOAD_FILAMENT c=20 r=6 "Please insert filament into the extruder, then press the knob to load it." -"Bitte legen Sie das Filament in den Extruder ein und druecken Sie dann den Knopf, um es zu laden." +"Bitte legen Sie das Filament in den Extruder ein und dr\xf5cken Sie dann den Knopf, um es zu laden." #MSG_MMU_INSERT_FILAMENT_FIRST_TUBE c=20 r=6 "Please insert filament into the first tube of the MMU, then press the knob to load it." -"Bitte stecken Sie das Filament in den ersten Schlauch der MMU und druecken Sie dann den Knopf, um es zu laden." +"Bitte stecken Sie das Filament in den ersten Schlauch der MMU und dr\xf5cken Sie dann den Knopf, um es zu laden." #MSG_PLEASE_LOAD_PLA c=20 r=4 "Please load filament first." @@ -884,7 +884,7 @@ #MSG_CHECK_IR_CONNECTION c=20 r=4 "Please check the IR sensor connection, unload filament if present." -"Bitte IR Sensor Verbindungen ueber- pruefen und Filament entladen ist." +"Bitte IR Sensor Verbindungen \xf5ber- pr\xf5fen und Filament entladen ist." #MSG_RECOVERING_PRINT c=20 "Recovering print" @@ -892,7 +892,7 @@ #MSG_REMOVE_OLD_FILAMENT c=20 r=5 "Remove old filament and press the knob to start loading new filament." -"Entfernen Sie das alte Filament und druecken Sie den Knopf, um das neue zu laden." +"Entfernen Sie das alte Filament und dr\xf5cken Sie den Knopf, um das neue zu laden." #MSG_CALIBRATE_BED_RESET c=18 "Reset XYZ calibr." @@ -900,7 +900,7 @@ #MSG_RESET c=14 "Reset" -"Ruecksetzen" +"R\xf5cksetzen" #MSG_RESUME_PRINT c=18 "Resume print" @@ -920,7 +920,7 @@ #MSG_WIZARD_RERUN c=20 r=7 "Running Wizard will delete current calibration results and start from the beginning. Continue?" -"Der Assistent wird die aktuellen Kalibrierungsdaten loeschen und von vorne beginnen. Weiterfahren?" +"Der Assistent wird die aktuellen Kalibrierungsdaten l\xefschen und von vorne beginnen. Weiterfahren?" #MSG_SD_CARD c=8 "SD card" @@ -936,7 +936,7 @@ #MSG_LANGUAGE_SELECT c=18 "Select language" -"Waehle Sprache" +"W\xe1hle Sprache" #MSG_SELFTEST_OK c=20 "Self test OK" @@ -960,11 +960,11 @@ #MSG_FORCE_SELFTEST c=20 r=8 "Selftest will be run to calibrate accurate sensorless rehoming." -"Selbsttest im Gang, um die genaue Rueck- kehr zum Nullpunkt ohne Sensor zu kalibrieren" +"Selbsttest wird gestartet, um Startposition zu kalibrieren." #MSG_SEL_PREHEAT_TEMP c=20 r=6 "Select nozzle preheat temperature which matches your material." -"Bitte Vorheiztemperatur auswaehlen, die Ihrem Material entspricht." +"Bitte Vorheiztemperatur ausw\xe1hlen, die Ihrem Material entspricht." #MSG_SET_TEMPERATURE c=20 "Set temperature:" @@ -996,7 +996,7 @@ #MSG_SEVERE_SKEW c=14 "Severe skew" -"Sehr Schraeg" +"Sehr schr\xe1g" #MSG_SORT_ALPHA c=8 "Alphabet" @@ -1012,7 +1012,7 @@ #MSG_SLIGHT_SKEW c=14 "Slight skew" -"Leicht Schraeg" +"Leicht schr\xe1g" #MSG_SOUND c=7 "Sound" @@ -1020,7 +1020,7 @@ #MSG_RUNOUTS c=7 "Runouts" -"Maengel" +"M\xe1ngel" #MSG_Z-LEVELING_ENFORCED c=20 r=4 "Some problem encountered, Z-leveling enforced ..." @@ -1040,7 +1040,7 @@ #MSG_TEMP_CAL_WARNING c=20 r=4 "Stable ambient temperature 21-26C is needed a rigid stand is required." -"Stabile Umgebungs- temperatur 21-26C und feste Stand- flaeche erforderlich" +"Stabile Umgebungs- temperatur 21-26C und feste Stand- fl\xe1che erforderlich" #MSG_STATISTICS c=18 "Statistics" @@ -1064,7 +1064,7 @@ #MSG_SELECT_FILAMENT c=20 "Select filament:" -"Filament auswaehlen:" +"Filament ausw\xe1hlen:" #MSG_TEMP_CALIBRATION c=14 "Temp. cal." @@ -1072,7 +1072,7 @@ #MSG_SELECT_TEMP_MATCHES_MATERIAL c=20 r=4 "Select temperature which matches your material." -"Waehlen Sie die Temperatur, die zu Ihrem Material passt." +"W\xe1hlen Sie die Temperatur, die zu Ihrem Material passt." #MSG_CALIBRATION_PINDA_MENU c=17 "Temp. calibration" @@ -1088,7 +1088,7 @@ #MSG_FS_VERIFIED c=20 r=3 "Sensor verified, remove the filament now." -"Sensor ueberprueft, entladen Sie jetzt das Filament." +"Sensor \xf5berpr\xf5ft, entladen Sie jetzt das Filament." #MSG_TEMPERATURE c=18 "Temperature" @@ -1100,7 +1100,7 @@ #MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9 "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow." -"Es ist noch not- wendig die Z- Kalibrierung aus- zufuehren. Bitte befolgen Sie das Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrierablauf." +"Es ist noch not- wendig die Z- Kalibrierung aus- zuf\xf5hren. Bitte befolgen Sie das Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrierablauf." #MSG_TOTAL_FILAMENT c=19 "Total filament" @@ -1156,23 +1156,23 @@ #MSG_WAITING_TEMP c=20 r=4 "Waiting for nozzle and bed cooling" -"Warten bis Heizung und Bett abgekuehlt sind" +"Warten bis Heizung und Bett abgek\xf5hlt sind" #MSG_WAITING_TEMP_PINDA c=20 r=3 "Waiting for PINDA probe cooling" -"Warten, bis PINDA- Sonde abgekuehlt ist" +"Warten, bis PINDA- Sonde abgek\xf5hlt ist" #MSG_CHANGED_BOTH c=20 r=4 "Warning: both printer type and motherboard type changed." -"Warnung: Druckertyp und Platinentyp wurden beide geaendert." +"Warnung: Druckertyp und Platinentyp wurden beide ge\xe1ndert." #MSG_CHANGED_MOTHERBOARD c=20 r=4 "Warning: motherboard type changed." -"Warnung: Platinentyp wurde geaendert." +"Warnung: Platinentyp wurde ge\xe1ndert." #MSG_CHANGED_PRINTER c=20 r=4 "Warning: printer type changed." -"Warnung: Druckertyp wurde geaendert." +"Warnung: Druckertyp wurde ge\xe1ndert." #MSG_UNLOAD_SUCCESSFUL c=20 r=2 "Was filament unload successful?" @@ -1200,19 +1200,19 @@ #MSG_WIZARD_QUIT c=20 r=8 "You can always resume the Wizard from Calibration -> Wizard." -"Sie koennen den Assistenten immer im Menu neu starten: Kalibrierung -> Assistent" +"Sie k\xefnnen den Assistenten immer im Menu neu starten: Kalibrierung -> Assistent" #MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 "XYZ calibration all right. Skew will be corrected automatically." -"XYZ Kalibrierung in Ordnung. Schraeglauf wird automatisch korrigiert." +"XYZ Kalibrierung in Ordnung. Schr\xe1glauf wird automatisch korrigiert." #MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 "XYZ calibration all right. X/Y axes are slightly skewed. Good job!" -"XYZ Kalibrierung in Ordnung. X/Y Achsen sind etwas schraeg. Gut gemacht!" +"XYZ Kalibrierung in Ordnung. X/Y Achsen sind etwas schr\xe1g. Gut gemacht!" #MSG_TIMEOUT c=12 "Timeout" -"Verzoegerung" +"\x00" #MSG_X_CORRECTION c=13 "X-correct:" @@ -1220,15 +1220,15 @@ #MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" -"XYZ-Kalibrierung ok. X/Y-Achsen sind senkrecht zueinander Glueckwunsch!" +"XYZ-Kalibrierung ok. X/Y-Achsen sind senkrecht zueinander Gl\xf5ckwunsch!" #MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 "XYZ calibration compromised. Front calibration points not reachable." -"XYZ-Kalibrierung beeintraechtigt. Vordere Kalibrierpunkte nicht erreichbar." +"XYZ-Kalibrierung beeintr\xe1chtigt. Vordere Kalibrierpunkte nicht erreichbar." #MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 "XYZ calibration compromised. Right front calibration point not reachable." -"XYZ-Kalibrierung beeintraechtigt. Rechter vorderer Kalibrierpunkt nicht erreichbar." +"XYZ-Kalibrierung beeintr\xe1chtigt. Rechter vorderer Kalibrierpunkt nicht erreichbar." #MSG_LOAD_ALL c=17 "Load all" @@ -1252,11 +1252,11 @@ #MSG_WIZARD_V2_CAL_2 c=20 r=12 "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)." -"Der Drucker beginnt mit dem Drucken einer Zickzacklinie. Drehen Sie den Knopf, bis Sie die optimale Hoehe erreicht haben. Ueberpruefen Sie die Bilder im Handbuch (Kapitel Kalibrierung)." +"Der Drucker beginnt mit dem Drucken einer Zickzacklinie. Drehen Sie den Knopf, bis Sie die optimale H\xefhe erreicht haben. \xf5berpr\xf5fen Sie die Bilder im Handbuch (Kapitel Kalibrierung)." #MSG_FIL_FAILED c=20 r=5 "Verification failed, remove the filament and try again." -"Ueberpruefung fehl- geschlagen, entladen Sie das Filament und versuchen Sie es erneut." +"\xf5berpr\xf5fung fehl- geschlagen, entladen Sie das Filament und versuchen Sie es erneut." #MSG_Y_CORRECTION c=13 "Y-correct:" @@ -1272,7 +1272,7 @@ #MSG_BACK c=18 "Back" -"Zurueck" +"Zur\xf5ck" #MSG_CHECKS c=18 "Checks" @@ -1320,31 +1320,31 @@ #MSG_NOZZLE_DIAMETER c=10 "Nozzle d." -"Duese D." +"D\xf5sen Dia." #MSG_GCODE_DIFF_CONTINUE c=20 r=4 "G-code sliced for a different level. Continue?" -"G-Code ist fuer einen anderen Level geslict. Fortfahren?" +"G-Code ist f\xf5r einen anderen Level geslict. Fortfahren?" #MSG_GCODE_DIFF_CANCELLED c=20 r=7 "G-code sliced for a different level. Please re-slice the model again. Print cancelled." -"G-Code ist fuer einen anderen Level geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen." +"G-Code ist f\xf5r einen anderen Level geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen." #MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5 "G-code sliced for a different printer type. Continue?" -"G-Code ist fuer einen anderen Drucker geslict. Fortfahren?" +"G-Code ist f\xf5r einen anderen Drucker geslict. Fortfahren?" #MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=8 "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled." -"G-Code ist fuer einen anderen Drucker geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen." +"G-Code ist f\xf5r einen anderen Drucker geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen." #MSG_GCODE_NEWER_FIRMWARE_CONTINUE c=20 r=5 "G-code sliced for a newer firmware. Continue?" -"G-Code ist fuer eine neuere Firmware geslict. Fortfahren?" +"G-Code ist f\xf5r eine neuere Firmware geslict. Fortfahren?" #MSG_GCODE_NEWER_FIRMWARE_CANCELLED c=20 r=8 "G-code sliced for a newer firmware. Please update the firmware. Print cancelled." -"G-Code ist fuer eine neuere Firmware geslict. Bitte die Firmware updaten. Druck abgebrochen." +"G-Code ist f\xf5r eine neuere Firmware geslict. Bitte die Firmware updaten. Druck abgebrochen." #MSG_PREHEATING_TO_CUT c=20 "Preheating to cut" @@ -1356,11 +1356,11 @@ #MSG_NOZZLE_DIFFERS_CONTINUE c=20 r=5 "Printer nozzle diameter differs from the G-code. Continue?" -"Der Durchmesser der Druckerduese weicht vom G-Code ab. Fortfahren?" +"Der Durchmesser der Druckerd\xf5se weicht vom G-Code ab. Fortfahren?" #MSG_NOZZLE_DIFFERS_CANCELLED c=20 r=9 "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled." -"Der Durchmesser der Druckerduese weicht vom G-Code ab. Bitte ueberpruefen Sie den Wert in den Einstellungen. Druck abgebrochen." +"Der Durchmesser der Druckerd\xf5se weicht vom G-Code ab. Bitte \xf5berpr\xf5fen Sie den Wert in den Einstellungen. Druck abgebrochen." #MSG_SELFTEST_FS_LEVEL c=20 "%s level expected" diff --git a/lang/po/Firmware_de.po b/lang/po/Firmware_de.po index c4163afa..ea7cd410 100644 --- a/lang/po/Firmware_de.po +++ b/lang/po/Firmware_de.po @@ -7,8 +7,8 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Language: de\n" "Project-Id-Version: Prusa-Firmware\n" -"POT-Creation-Date: Sun 19 Dec 2021 07:17:27 PM CET\n" -"PO-Revision-Date: Sun 19 Dec 2021 07:17:27 PM CET\n" +"POT-Creation-Date: Wed 26 Jan 2022 05:40:56 PM CET\n" +"PO-Revision-Date: Wed 26 Jan 2022 05:40:56 PM CET\n" "Language-Team: \n" "X-Generator: Poedit 2.0.7\n" "X-Poedit-SourceCharset: UTF-8\n" @@ -21,7 +21,7 @@ msgid " 0.3 or older" msgstr " 0.3 oder aelter" # MSG_FS_V_03_OR_OLDER c=18 -#: Marlin_main.cpp:9884 +#: Marlin_main.cpp:9887 msgid "FS v0.3 or older" msgstr "FS 0.3 oder aelter" @@ -31,7 +31,7 @@ msgid " 0.4 or newer" msgstr " 0.4 oder neuer" # MSG_FS_V_04_OR_NEWER c=18 -#: Marlin_main.cpp:9883 +#: Marlin_main.cpp:9886 msgid "FS v0.4 or newer" msgstr "FS 0.4 oder neuer" @@ -61,7 +61,7 @@ msgid "Adjusting Z:" msgstr "Z Anpassen:" # MSG_SELFTEST_CHECK_ALLCORRECT c=20 -#: ultralcd.cpp:8490 +#: ultralcd.cpp:8411 msgid "All correct" msgstr "Alles richtig" @@ -96,7 +96,7 @@ msgid "Auto home" msgstr "Startposition" # MSG_AUTOLOAD_FILAMENT c=18 -#: ultralcd.cpp:6732 +#: ultralcd.cpp:6653 msgid "AutoLoad filament" msgstr "AutoLaden Filament" @@ -111,17 +111,17 @@ msgid "Autoloading filament is active, just press the knob and insert filament.. msgstr "Automatisches Laden Filament ist aktiv, Knopf druecken und Filament einlegen..." # MSG_SELFTEST_AXIS_LENGTH c=20 -#: ultralcd.cpp:8173 +#: ultralcd.cpp:8094 msgid "Axis length" msgstr "Achsenlaenge" # MSG_SELFTEST_AXIS c=16 -#: ultralcd.cpp:8174 +#: ultralcd.cpp:8095 msgid "Axis" msgstr "Achse" # MSG_SELFTEST_BEDHEATER c=20 -#: ultralcd.cpp:8131 +#: ultralcd.cpp:8052 msgid "Bed/Heater" msgstr "Bett/Heizung" @@ -176,7 +176,7 @@ msgid "Blackout occurred. Recover print?" msgstr "Stromausfall! Druck wiederherstellen?" # MSG_CALIBRATING_HOME c=20 -#: ultralcd.cpp:8492 +#: ultralcd.cpp:8413 msgid "Calibrating home" msgstr "Kalibriere Start" @@ -226,12 +226,12 @@ msgid "Calibration" msgstr "Kalibrierung" # MSG_SD_REMOVED c=20 -#: ultralcd.cpp:8939 +#: ultralcd.cpp:8860 msgid "Card removed" msgstr "SD Karte entfernt" # MSG_CHECKING_FILE c=17 -#: ultralcd.cpp:8580 +#: ultralcd.cpp:8501 msgid "Checking file" msgstr "Ueberpruefe Datei" @@ -326,17 +326,17 @@ msgid "Ejecting filament" msgstr "werfe Filament aus" # MSG_SELFTEST_ENDSTOP_NOTHIT c=20 -#: ultralcd.cpp:8149 +#: ultralcd.cpp:8070 msgid "Endstop not hit" msgstr "Ende nicht getroffen" # MSG_SELFTEST_ENDSTOP c=16 -#: ultralcd.cpp:8144 +#: ultralcd.cpp:8065 msgid "Endstop" msgstr "Endanschlag" # MSG_SELFTEST_ENDSTOPS c=20 -#: ultralcd.cpp:8135 +#: ultralcd.cpp:8056 msgid "Endstops" msgstr "Endschalter" @@ -376,7 +376,7 @@ msgid "ERROR:" msgstr "FEHLER:" # MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18 -#: ultralcd.cpp:8498 +#: ultralcd.cpp:8419 msgid "Extruder fan:" msgstr "Extruder Luefter:" @@ -391,7 +391,7 @@ msgid "Extruder" msgstr "" # MSG_MMU_FAIL_STATS c=18 -#: ultralcd.cpp:6754 +#: ultralcd.cpp:6675 msgid "Fail stats MMU" msgstr "MMU-Fehler" @@ -401,7 +401,7 @@ msgid "F. autoload" msgstr "F. autoladen" # MSG_FAIL_STATS c=18 -#: ultralcd.cpp:6751 +#: ultralcd.cpp:6672 msgid "Fail stats" msgstr "Fehlerstatistik" @@ -461,7 +461,7 @@ msgid "FS Action" msgstr "FS Aktion" # MSG_FILE_INCOMPLETE c=20 r=3 -#: ultralcd.cpp:8634 +#: ultralcd.cpp:8555 msgid "File incomplete. Continue anyway?" msgstr "Datei unvollstaendig Trotzdem fortfahren?" @@ -486,7 +486,7 @@ msgid "Fix the issue and then press button on MMU unit." msgstr "Beseitigen Sie das Problem und druecken Sie dann den Knopf am MMU." # MSG_FLOW c=15 -#: ultralcd.cpp:6888 +#: ultralcd.cpp:6809 msgid "Flow" msgstr "Durchfluss" @@ -501,17 +501,17 @@ msgid "Front side[um]" msgstr "Vorne [um]" # MSG_SELFTEST_FANS c=20 -#: ultralcd.cpp:8179 +#: ultralcd.cpp:8100 msgid "Front/left fans" msgstr "Teile/Extr. Luefter" # MSG_SELFTEST_HEATERTHERMISTOR c=20 -#: ultralcd.cpp:8127 +#: ultralcd.cpp:8048 msgid "Heater/Thermistor" msgstr "Heizung/Thermistor" # MSG_BED_HEATING_SAFETY_DISABLED c=20 r=4 -#: Marlin_main.cpp:9874 +#: Marlin_main.cpp:9877 msgid "Heating disabled by safety timer." msgstr "Heizung durch Sicherheitstimer deaktiviert." @@ -551,12 +551,12 @@ msgid "Checking bed" msgstr "Pruefe Bett" # MSG_SELFTEST_CHECK_ENDSTOPS c=20 -#: ultralcd.cpp:8481 +#: ultralcd.cpp:8402 msgid "Checking endstops" msgstr "Pruefe Endschalter" # MSG_SELFTEST_CHECK_HOTEND c=20 -#: ultralcd.cpp:8487 +#: ultralcd.cpp:8408 msgid "Checking hotend" msgstr "Pruefe Duese" @@ -576,7 +576,7 @@ msgid "Checking Y axis" msgstr "Pruefe Y Achse" # MSG_SELFTEST_CHECK_Z c=20 -#: ultralcd.cpp:8484 +#: ultralcd.cpp:8405 msgid "Checking Z axis" msgstr "Pruefe Z Achse" @@ -671,7 +671,7 @@ msgid "Live adjust Z" msgstr "Z einstellen" # MSG_INSERT_FIL c=20 r=6 -#: ultralcd.cpp:7380 +#: ultralcd.cpp:7301 msgid "Insert the filament (do not load it) into the extruder and then press the knob." msgstr "Stecken Sie das Filament (nicht laden) in den Extruder und druecken Sie dann den Knopf." @@ -696,12 +696,12 @@ msgid "Iteration" msgstr "Wiederholung" # MSG_LOOSE_PULLEY c=20 -#: ultralcd.cpp:8167 +#: ultralcd.cpp:8088 msgid "Loose pulley" msgstr "Lose Riemenscheibe" # MSG_LOAD_TO_NOZZLE c=18 -#: ultralcd.cpp:6717 +#: ultralcd.cpp:6638 msgid "Load to nozzle" msgstr "In Nozzle laden" @@ -851,7 +851,7 @@ msgid "No move." msgstr "Keine Bewegung." # MSG_NO_CARD c=18 -#: ultralcd.cpp:6697 +#: ultralcd.cpp:6618 msgid "No SD card" msgstr "Keine SD Karte" @@ -866,7 +866,7 @@ msgid "No" msgstr "Nein" # MSG_SELFTEST_NOTCONNECTED c=20 -#: ultralcd.cpp:8128 +#: ultralcd.cpp:8049 msgid "Not connected" msgstr "Nicht angeschlossen" @@ -951,7 +951,7 @@ msgid "Please clean the nozzle for calibration. Click when done." msgstr "Bitte entfernen Sie ueberstehendes Filament von der Duese. Klicken wenn sauber." # MSG_SELFTEST_PLEASECHECK c=20 -#: ultralcd.cpp:8122 +#: ultralcd.cpp:8043 msgid "Please check:" msgstr "Bitte pruefe:" @@ -1016,7 +1016,7 @@ msgid "Preheat the nozzle!" msgstr "Duese vorheizen!" # MSG_PREHEAT c=18 -#: ultralcd.cpp:6655 +#: ultralcd.cpp:6576 msgid "Preheat" msgstr "Vorheizen" @@ -1031,7 +1031,7 @@ msgid "Please upgrade." msgstr "Bitte aktualisieren." # MSG_PRESS_TO_PREHEAT c=20 r=4 -#: Marlin_main.cpp:12049 +#: Marlin_main.cpp:12052 msgid "Press the knob to preheat nozzle and continue." msgstr "Bitte druecken Sie den Knopf um die Duese vorzuheizen und fortzufahren." @@ -1061,7 +1061,7 @@ msgid "Preheating to unload" msgstr "Heizen zum Entladen" # MSG_SELFTEST_PRINT_FAN_SPEED c=18 -#: ultralcd.cpp:8501 +#: ultralcd.cpp:8422 msgid "Print fan:" msgstr "Druckvent.:" @@ -1116,17 +1116,17 @@ msgid "Rear side [um]" msgstr "Hinten [um]" # MSG_UNLOAD_FILAMENT_REPEAT c=20 r=4 -#: ultralcd.cpp:7404 +#: ultralcd.cpp:7325 msgid "Please unload the filament first, then repeat this action." msgstr "Bitte entladen Sie erst das Filament und versuchen Sie es nochmal." # MSG_CHECK_IR_CONNECTION c=20 r=4 -#: ultralcd.cpp:7407 +#: ultralcd.cpp:7328 msgid "Please check the IR sensor connection, unload filament if present." msgstr "Bitte IR Sensor Verbindungen ueber- pruefen und Filament entladen ist." # MSG_RECOVERING_PRINT c=20 -#: Marlin_main.cpp:11393 +#: Marlin_main.cpp:11396 msgid "Recovering print" msgstr "Druck wiederherst" @@ -1191,12 +1191,12 @@ msgid "Select language" msgstr "Waehle Sprache" # MSG_SELFTEST_OK c=20 -#: ultralcd.cpp:7679 +#: ultralcd.cpp:7600 msgid "Self test OK" msgstr "Selbsttest OK" # MSG_SELFTEST_START c=20 -#: ultralcd.cpp:7447 +#: ultralcd.cpp:7368 msgid "Self test start" msgstr "Selbsttest start" @@ -1206,7 +1206,7 @@ msgid "Selftest" msgstr "Selbsttest" # MSG_SELFTEST_ERROR c=20 -#: ultralcd.cpp:8121 +#: ultralcd.cpp:8042 msgid "Selftest error!" msgstr "Selbsttest Fehler!" @@ -1306,7 +1306,7 @@ msgid "Once" msgstr "Einmal" # MSG_SPEED c=15 -#: ultralcd.cpp:6882 +#: ultralcd.cpp:6803 msgid "Speed" msgstr "Geschwindigkeit" @@ -1336,12 +1336,12 @@ msgid "STOPPED." msgstr "GESTOPPT." # MSG_SUPPORT c=18 -#: ultralcd.cpp:6756 +#: ultralcd.cpp:6677 msgid "Support" msgstr "" # MSG_SELFTEST_SWAPPED c=16 -#: ultralcd.cpp:8180 +#: ultralcd.cpp:8101 msgid "Swapped" msgstr "Ausgetauscht" @@ -1376,7 +1376,7 @@ msgid "Temperature calibration is finished and active. Temp. calibration can be msgstr "Temp.kalibrierung ist fertig + aktiv. Temp.kalibrierung kann ausgeschaltet werden im Menu Einstellungen -> Temp.kal." # MSG_FS_VERIFIED c=20 r=3 -#: ultralcd.cpp:7411 +#: ultralcd.cpp:7332 msgid "Sensor verified, remove the filament now." msgstr "Sensor ueberprueft, entladen Sie jetzt das Filament." @@ -1406,7 +1406,7 @@ msgid "Total print time" msgstr "Gesamte Druckzeit" # MSG_TUNE c=18 -#: ultralcd.cpp:6653 +#: ultralcd.cpp:6574 msgid "Tune" msgstr "Feineinstellung" @@ -1586,7 +1586,7 @@ msgid "The printer will start printing a zig-zag line. Rotate the knob until you msgstr "Der Drucker beginnt mit dem Drucken einer Zickzacklinie. Drehen Sie den Knopf, bis Sie die optimale Hoehe erreicht haben. Ueberpruefen Sie die Bilder im Handbuch (Kapitel Kalibrierung)." # MSG_FIL_FAILED c=20 r=5 -#: ultralcd.cpp:7415 +#: ultralcd.cpp:7336 msgid "Verification failed, remove the filament and try again." msgstr "Ueberpruefung fehl- geschlagen, entladen Sie das Filament und versuchen Sie es erneut." @@ -1616,7 +1616,7 @@ msgid "Checks" msgstr "Kontrolle" # MSG_FALSE_TRIGGERING c=20 -#: ultralcd.cpp:8190 +#: ultralcd.cpp:8111 msgid "False triggering" msgstr "Falschtriggerung" @@ -1721,17 +1721,17 @@ msgid "Printer nozzle diameter differs from the G-code. Please check the value i msgstr "Der Durchmesser der Druckerduese weicht vom G-Code ab. Bitte ueberpruefen Sie den Wert in den Einstellungen. Druck abgebrochen." # MSG_SELFTEST_FS_LEVEL c=20 -#: ultralcd.cpp:8195 +#: ultralcd.cpp:8116 msgid "%s level expected" msgstr "%s Level erwartet" # MSG_RENAME c=18 -#: ultralcd.cpp:6579 +#: ultralcd.cpp:6500 msgid "Rename" msgstr "Umbenennen" # MSG_SELECT c=18 -#: ultralcd.cpp:6572 +#: ultralcd.cpp:6493 msgid "Select" msgstr "Auswahl" diff --git a/lang/po/new/de.po b/lang/po/new/de.po index 03675522..b57d7377 100644 --- a/lang/po/new/de.po +++ b/lang/po/new/de.po @@ -7,8 +7,8 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Language: de\n" "Project-Id-Version: Prusa-Firmware\n" -"POT-Creation-Date: Sun 19 Dec 2021 07:17:27 PM CET\n" -"PO-Revision-Date: Sun 19 Dec 2021 07:17:27 PM CET\n" +"POT-Creation-Date: Wed 26 Jan 2022 05:40:56 PM CET\n" +"PO-Revision-Date: Wed 26 Jan 2022 05:40:56 PM CET\n" "Language-Team: \n" "X-Generator: Poedit 2.0.7\n" "X-Poedit-SourceCharset: UTF-8\n" @@ -18,12 +18,12 @@ msgstr "" # MSG_IR_03_OR_OLDER c=18 #: messages.c:164 msgid " 0.3 or older" -msgstr " 0.3 oder aelter" +msgstr " 0.3 oder älter" # MSG_FS_V_03_OR_OLDER c=18 -#: Marlin_main.cpp:9884 +#: Marlin_main.cpp:9887 msgid "FS v0.3 or older" -msgstr "FS 0.3 oder aelter" +msgstr "FS v0.3 oder älter" # MSG_IR_04_OR_NEWER c=18 #: messages.c:163 @@ -31,9 +31,9 @@ msgid " 0.4 or newer" msgstr " 0.4 oder neuer" # MSG_FS_V_04_OR_NEWER c=18 -#: Marlin_main.cpp:9883 +#: Marlin_main.cpp:9886 msgid "FS v0.4 or newer" -msgstr "FS 0.4 oder neuer" +msgstr "FS v0.4 oder neuer" # MSG_IR_UNKNOWN c=18 #: messages.c:165 @@ -61,14 +61,14 @@ msgid "Adjusting Z:" msgstr "Z Anpassen:" # MSG_SELFTEST_CHECK_ALLCORRECT c=20 -#: ultralcd.cpp:8490 +#: ultralcd.cpp:8411 msgid "All correct" msgstr "Alles richtig" # MSG_WIZARD_DONE c=20 r=8 #: messages.c:118 msgid "All is done. Happy printing!" -msgstr "Alles abgeschlossen. Viel Spass beim Drucken!" +msgstr "Alles abgeschlossen. Viel Spaß beim Drucken!" # MSG_AMBIENT c=14 #: ultralcd.cpp:1727 @@ -83,7 +83,7 @@ msgstr "" # MSG_PRESS c=20 r=2 #: ultralcd.cpp:2485 msgid "and press the knob" -msgstr "und Knopf druecken" +msgstr "und Knopf drücken" # MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 #: ultralcd.cpp:3355 @@ -96,32 +96,32 @@ msgid "Auto home" msgstr "Startposition" # MSG_AUTOLOAD_FILAMENT c=18 -#: ultralcd.cpp:6732 +#: ultralcd.cpp:6653 msgid "AutoLoad filament" msgstr "AutoLaden Filament" # MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 #: ultralcd.cpp:4317 msgid "Autoloading filament available only when filament sensor is turned on..." -msgstr "Automatisches Laden Filament nur bei eingeschaltetem Fil. sensor verfuegbar..." +msgstr "Automatisches Laden Filament nur bei eingeschaltetem Fil. sensor verfügbar..." # MSG_AUTOLOADING_ENABLED c=20 r=4 #: ultralcd.cpp:2648 msgid "Autoloading filament is active, just press the knob and insert filament..." -msgstr "Automatisches Laden Filament ist aktiv, Knopf druecken und Filament einlegen..." +msgstr "Automatisches Laden Filament ist aktiv, Knopf drücken und Filament einlegen..." # MSG_SELFTEST_AXIS_LENGTH c=20 -#: ultralcd.cpp:8173 +#: ultralcd.cpp:8094 msgid "Axis length" -msgstr "Achsenlaenge" +msgstr "Achsenlänge" # MSG_SELFTEST_AXIS c=16 -#: ultralcd.cpp:8174 +#: ultralcd.cpp:8095 msgid "Axis" msgstr "Achse" # MSG_SELFTEST_BEDHEATER c=20 -#: ultralcd.cpp:8131 +#: ultralcd.cpp:8052 msgid "Bed/Heater" msgstr "Bett/Heizung" @@ -133,7 +133,7 @@ msgstr "Bett OK" # MSG_BED_HEATING c=20 #: messages.c:16 msgid "Bed Heating" -msgstr "Bett aufwaermen" +msgstr "Bett aufwärmen" # MSG_BED_CORRECTION_MENU c=18 #: ultralcd.cpp:5798 @@ -148,7 +148,7 @@ msgstr "Riementest" # MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=6 #: messages.c:17 msgid "Bed leveling failed. Sensor didn't trigger. Debris on nozzle? Waiting for reset." -msgstr "Z-Kal. fehlgeschlg. Sensor nicht ausgeloest. Schmutzige Duese? Warte auf Reset." +msgstr "Z-Kal. fehlgeschlg. Sensor nicht ausgelöst. Schmutzige Düse? Warte auf Reset." # MSG_BRIGHT c=6 #: messages.c:158 @@ -176,7 +176,7 @@ msgid "Blackout occurred. Recover print?" msgstr "Stromausfall! Druck wiederherstellen?" # MSG_CALIBRATING_HOME c=20 -#: ultralcd.cpp:8492 +#: ultralcd.cpp:8413 msgid "Calibrating home" msgstr "Kalibriere Start" @@ -203,7 +203,7 @@ msgstr ">Abbruch" # MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8 #: ultralcd.cpp:3318 msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done." -msgstr "XYZ Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf druecken." +msgstr "XYZ Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf drücken." # MSG_CALIBRATE_Z_AUTO c=20 r=2 #: messages.c:21 @@ -213,7 +213,7 @@ msgstr "Kalibrierung Z" # MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 #: ultralcd.cpp:3318 msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done." -msgstr "Z Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf druecken." +msgstr "Z Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf drücken." # MSG_HOMEYZ_DONE c=20 #: ultralcd.cpp:656 @@ -226,14 +226,14 @@ msgid "Calibration" msgstr "Kalibrierung" # MSG_SD_REMOVED c=20 -#: ultralcd.cpp:8939 +#: ultralcd.cpp:8860 msgid "Card removed" msgstr "SD Karte entfernt" # MSG_CHECKING_FILE c=17 -#: ultralcd.cpp:8580 +#: ultralcd.cpp:8501 msgid "Checking file" -msgstr "Ueberpruefe Datei" +msgstr "überprüfe Datei" # MSG_NOT_COLOR c=19 #: ultralcd.cpp:2565 @@ -243,12 +243,12 @@ msgstr "Falsche Farbe" # MSG_COOLDOWN c=18 #: messages.c:27 msgid "Cooldown" -msgstr "Abkuehlen" +msgstr "Abkühlen" # MSG_COPY_SEL_LANG c=20 r=3 #: ultralcd.cpp:4435 msgid "Copy selected language?" -msgstr "Gewaehlte Sprache kopieren?" +msgstr "Gewählte Sprache kopieren?" # MSG_CRASHDETECT c=13 #: messages.c:30 @@ -258,7 +258,7 @@ msgstr "Crash Erk." # MSG_CHOOSE_FIL_1ST_LAYERCAL c=20 r=7 #: ultralcd.cpp:4842 msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu." -msgstr "Waehlen Sie ein Filament fuer Erste Schichtkalibrierung aus und waehlen Sie es im On-Screen-Menu aus." +msgstr "Wählen Sie ein Filament für Erste- Schichtkalibrierung aus und wählen Sie es im On-Screen-Menu aus." # MSG_CRASH_DETECTED c=20 #: messages.c:29 @@ -268,7 +268,7 @@ msgstr "Crash erkannt." # MSG_CRASH_RESUME c=20 r=3 #: Marlin_main.cpp:651 msgid "Crash detected. Resume print?" -msgstr "Crash erkannt. Druck fortfuehren?" +msgstr "Crash erkannt. Druck fortführen?" # MSG_CRASH c=7 #: messages.c:28 @@ -298,7 +298,7 @@ msgstr "Motoren aus" # MSG_BABYSTEP_Z_NOT_SET c=20 r=12 #: messages.c:13 msgid "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." -msgstr "Der Abstand zwischen der Spitze der Duese und dem Bett ist noch nicht eingestellt. Bitte folgen Sie dem Handbuch, Kapitel Erste Schritte, Abschnitt Erste Schicht Kalibrierung." +msgstr "Der Abstand zwischen der Spitze der Düse und dem Bett ist noch nicht eingestellt. Bitte folgen Sie dem Handbuch, Kapitel Erste Schritte, Abschnitt Erste Schicht Kalibrierung." # MSG_FS_CONTINUE c=5 #: messages.c:152 @@ -308,7 +308,7 @@ msgstr "" # MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 #: ultralcd.cpp:5021 msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?" -msgstr "Moechten Sie den letzten Schritt wiederholen, um den Abstand zwischen Duese und Druckbett neu einzustellen?" +msgstr "Möchten Sie den letzten Schritt wiederholen, um den Abstand zwischen Düse und Druckbett neu einzustellen?" # MSG_EXTRUDER_CORRECTION c=13 #: ultralcd.cpp:5090 @@ -326,24 +326,24 @@ msgid "Ejecting filament" msgstr "werfe Filament aus" # MSG_SELFTEST_ENDSTOP_NOTHIT c=20 -#: ultralcd.cpp:8149 +#: ultralcd.cpp:8070 msgid "Endstop not hit" msgstr "Ende nicht getroffen" # MSG_SELFTEST_ENDSTOP c=16 -#: ultralcd.cpp:8144 +#: ultralcd.cpp:8065 msgid "Endstop" msgstr "Endanschlag" # MSG_SELFTEST_ENDSTOPS c=20 -#: ultralcd.cpp:8135 +#: ultralcd.cpp:8056 msgid "Endstops" msgstr "Endschalter" # MSG_STACK_ERROR c=20 r=4 #: msgid "Error - static memory has been overwritten" -msgstr "Fehler - statischer Speicher wurde ueberschrieben" +msgstr "Fehler - statischer Speicher wurde überschrieben" # MSG_CUT_FILAMENT c=16 #: messages.c:61 @@ -363,7 +363,7 @@ msgstr "Schneide filament" # MSG_FSENS_NOT_RESPONDING c=20 r=4 #: ultralcd.cpp:4330 msgid "ERROR: Filament sensor is not responding, please check connection." -msgstr "FEHLER: Filament- sensor reagiert nicht, bitte Verbindung pruefen." +msgstr "FEHLER: Filament- sensor reagiert nicht, bitte Verbindung prüfen." # MSG_DIM c=6 #: messages.c:159 @@ -376,9 +376,9 @@ msgid "ERROR:" msgstr "FEHLER:" # MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18 -#: ultralcd.cpp:8498 +#: ultralcd.cpp:8419 msgid "Extruder fan:" -msgstr "Extruder Luefter:" +msgstr "Extruderlüfter:" # MSG_INFO_EXTRUDER c=18 #: ultralcd.cpp:2040 @@ -391,7 +391,7 @@ msgid "Extruder" msgstr "" # MSG_MMU_FAIL_STATS c=18 -#: ultralcd.cpp:6754 +#: ultralcd.cpp:6675 msgid "Fail stats MMU" msgstr "MMU-Fehler" @@ -401,24 +401,24 @@ msgid "F. autoload" msgstr "F. autoladen" # MSG_FAIL_STATS c=18 -#: ultralcd.cpp:6751 +#: ultralcd.cpp:6672 msgid "Fail stats" msgstr "Fehlerstatistik" # MSG_FAN_SPEED c=14 #: messages.c:36 msgid "Fan speed" -msgstr "Luefter-Tempo" +msgstr "Lüfter-Tempo" # MSG_SELFTEST_FAN c=20 #: messages.c:91 msgid "Fan test" -msgstr "Lueftertest" +msgstr "Lüftertest" # MSG_FANS_CHECK c=13 #: messages.c:33 msgid "Fans check" -msgstr "Luefter Chk." +msgstr "Lüfter Check" # MSG_FSENSOR c=12 #: messages.c:49 @@ -428,7 +428,7 @@ msgstr "Fil. Sensor" # MSG_FIL_RUNOUTS c=15 #: messages.c:34 msgid "Fil. runouts" -msgstr "Fil. Maengel" +msgstr "Fil. Mängel" # MSG_FILAMENT_CLEAN c=20 r=2 #: messages.c:37 @@ -461,9 +461,9 @@ msgid "FS Action" msgstr "FS Aktion" # MSG_FILE_INCOMPLETE c=20 r=3 -#: ultralcd.cpp:8634 +#: ultralcd.cpp:8555 msgid "File incomplete. Continue anyway?" -msgstr "Datei unvollstaendig Trotzdem fortfahren?" +msgstr "Datei unvollständig Trotzdem fortfahren?" # MSG_FINISHING_MOVEMENTS c=20 #: messages.c:45 @@ -478,22 +478,22 @@ msgstr "Erste-Schicht Kal." # MSG_WIZARD_SELFTEST c=20 r=8 #: ultralcd.cpp:4942 msgid "First, I will run the selftest to check most common assembly problems." -msgstr "Zunaechst fuehre ich den Selbsttest durch, um die haeufigsten Probleme beim Zusammenbau zu ueberpruefen." +msgstr "Zunächst führe ich den Selbsttest durch, um die häufigsten Probleme beim Zusammenbau zu überprüfen." # MSG_MMU_FIX_ISSUE c=20 r=4 #: mmu.cpp:727 msgid "Fix the issue and then press button on MMU unit." -msgstr "Beseitigen Sie das Problem und druecken Sie dann den Knopf am MMU." +msgstr "Beseitigen Sie das Problem und drücken Sie dann den Knopf am MMU." # MSG_FLOW c=15 -#: ultralcd.cpp:6888 +#: ultralcd.cpp:6809 msgid "Flow" msgstr "Durchfluss" # MSG_SELFTEST_COOLING_FAN c=20 #: messages.c:88 msgid "Front print fan?" -msgstr "Teile Luefter?" +msgstr "Drucklüfter?" # MSG_BED_CORRECTION_FRONT c=14 #: ultralcd.cpp:3116 @@ -501,34 +501,34 @@ msgid "Front side[um]" msgstr "Vorne [um]" # MSG_SELFTEST_FANS c=20 -#: ultralcd.cpp:8179 +#: ultralcd.cpp:8100 msgid "Front/left fans" -msgstr "Teile/Extr. Luefter" +msgstr "Druck/Extr. Lüfter" # MSG_SELFTEST_HEATERTHERMISTOR c=20 -#: ultralcd.cpp:8127 +#: ultralcd.cpp:8048 msgid "Heater/Thermistor" msgstr "Heizung/Thermistor" # MSG_BED_HEATING_SAFETY_DISABLED c=20 r=4 -#: Marlin_main.cpp:9874 +#: Marlin_main.cpp:9877 msgid "Heating disabled by safety timer." msgstr "Heizung durch Sicherheitstimer deaktiviert." # MSG_HEATING_COMPLETE c=20 #: messages.c:51 msgid "Heating done." -msgstr "Aufwaermen OK." +msgstr "Aufwärmen OK." # MSG_HEATING c=20 #: messages.c:50 msgid "Heating" -msgstr "Aufwaermen" +msgstr "Aufwärmen" # MSG_WIZARD_WELCOME c=20 r=7 #: messages.c:121 msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?" -msgstr "Hallo, ich bin Ihr Original Prusa i3 Drucker. Moechten Sie, dass ich Sie durch den Einrich- tungsablauf fuehre?" +msgstr "Hallo, ich bin Ihr Original Prusa i3 Drucker. Möchten Sie, dass ich Sie durch den Einricht- ungsablauf führe?" # MSG_FILAMENTCHANGE c=18 #: messages.c:43 @@ -548,47 +548,47 @@ msgstr "Wechsel ok?" # MSG_SELFTEST_CHECK_BED c=20 #: messages.c:94 msgid "Checking bed" -msgstr "Pruefe Bett" +msgstr "Prüfe Bett" # MSG_SELFTEST_CHECK_ENDSTOPS c=20 -#: ultralcd.cpp:8481 +#: ultralcd.cpp:8402 msgid "Checking endstops" -msgstr "Pruefe Endschalter" +msgstr "Prüfe Endschalter" # MSG_SELFTEST_CHECK_HOTEND c=20 -#: ultralcd.cpp:8487 +#: ultralcd.cpp:8408 msgid "Checking hotend" -msgstr "Pruefe Duese" +msgstr "Prüfe Düse" # MSG_SELFTEST_CHECK_FSENSOR c=20 #: messages.c:95 msgid "Checking sensors" -msgstr "Pruefe Sensoren" +msgstr "Prüfe Sensoren" # MSG_CHECKING_X c=20 #: messages.c:23 msgid "Checking X axis" -msgstr "Pruefe X Achse" +msgstr "Prüfe X Achse" # MSG_CHECKING_Y c=20 #: messages.c:24 msgid "Checking Y axis" -msgstr "Pruefe Y Achse" +msgstr "Prüfe Y Achse" # MSG_SELFTEST_CHECK_Z c=20 -#: ultralcd.cpp:8484 +#: ultralcd.cpp:8405 msgid "Checking Z axis" -msgstr "Pruefe Z Achse" +msgstr "Prüfe Z Achse" # MSG_CHOOSE_EXTRUDER c=20 #: messages.c:54 msgid "Choose extruder:" -msgstr "Extruder waehlen:" +msgstr "Extruder wählen:" # MSG_CHOOSE_FILAMENT c=20 #: messages.c:55 msgid "Choose filament:" -msgstr "Waehle Filament:" +msgstr "Wähle Filament:" # MSG_FILAMENT c=17 #: messages.c:35 @@ -598,12 +598,12 @@ msgstr "" # MSG_WIZARD_XYZ_CAL c=20 r=8 #: ultralcd.cpp:4951 msgid "I will run xyz calibration now. It will take approx. 12 mins." -msgstr "Ich werde jetzt die XYZ-Kalibrierung durchfuehren. Es wird ca. 12 Minuten dauern." +msgstr "Ich werde jetzt die XYZ-Kalibrierung durchführen. Es wird ca. 12 Minuten dauern." # MSG_WIZARD_Z_CAL c=20 r=8 #: ultralcd.cpp:4959 msgid "I will run z calibration now." -msgstr "Ich werde jetzt die Z Kalibrierung durchfuehren." +msgstr "Ich werde jetzt die Z Kalibrierung durchführen." # MSG_WATCH c=18 #: messages.c:116 @@ -633,12 +633,12 @@ msgstr "Letzte Druckfehler" # MSG_WIZARD_WELCOME_SHIPPING c=20 r=16 #: messages.c:122 msgid "Hi, I am your Original Prusa i3 printer. I will guide you through a short setup process, in which the Z-axis will be calibrated. Then, you will be ready to print." -msgstr "Hallo, ich bin Ihr Original Prusa i3 Drucker. Ich werde Sie durch einen kurzen Einrichtungsprozess fuehren, bei dem die Z-Achse kalibriert wird. Danach sind Sie bereit fuer den Druck." +msgstr "Hallo, ich bin Ihr Original Prusa i3 Drucker. Ich werde Sie durch einen kurzen Einrichtungsprozess führen, bei dem die Z-Achse kalibriert wird. Danach sind Sie bereit für den Druck." # MSG_ADDITIONAL_SHEETS c=20 r=9 #: ultralcd.cpp:5029 msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets." -msgstr "Wenn Sie zusaetzliche Stahlbleche haben, kalibrieren Sie deren Voreinstellungen unter Einstellungen - HW Setup - Stahlbleche." +msgstr "Wenn Sie zusätzliche Stahlbleche haben, kalibrieren Sie deren Voreinstellungen unter Einstellungen - HW Setup - Stahlbleche." # MSG_LAST_PRINT c=18 #: messages.c:56 @@ -648,7 +648,7 @@ msgstr "Letzter Druck" # MSG_SELFTEST_EXTRUDER_FAN c=20 #: messages.c:89 msgid "Left hotend fan?" -msgstr "Extruder Luefter?" +msgstr "Extruderlüfter?" # MSG_LEFT c=10 #: ultralcd.cpp:2844 @@ -671,9 +671,9 @@ msgid "Live adjust Z" msgstr "Z einstellen" # MSG_INSERT_FIL c=20 r=6 -#: ultralcd.cpp:7380 +#: ultralcd.cpp:7301 msgid "Insert the filament (do not load it) into the extruder and then press the knob." -msgstr "Stecken Sie das Filament (nicht laden) in den Extruder und druecken Sie dann den Knopf." +msgstr "Stecken Sie das Filament (nicht laden) in den Extruder und drücken Sie dann den Knopf." # MSG_LOAD_FILAMENT c=17 #: messages.c:58 @@ -688,7 +688,7 @@ msgstr "Lade Farbe" # MSG_LOADING_FILAMENT c=20 #: messages.c:59 msgid "Loading filament" -msgstr "Filament laedt" +msgstr "Filament lädt" # MSG_ITERATION c=12 #: messages.c:53 @@ -696,12 +696,12 @@ msgid "Iteration" msgstr "Wiederholung" # MSG_LOOSE_PULLEY c=20 -#: ultralcd.cpp:8167 +#: ultralcd.cpp:8088 msgid "Loose pulley" msgstr "Lose Riemenscheibe" # MSG_LOAD_TO_NOZZLE c=18 -#: ultralcd.cpp:6717 +#: ultralcd.cpp:6638 msgid "Load to nozzle" msgstr "In Nozzle laden" @@ -713,7 +713,7 @@ msgstr "M117 Erste-Schicht Kal." # MSG_MAIN c=18 #: messages.c:63 msgid "Main" -msgstr "Hauptmenue" +msgstr "Hauptmenü" # MSG_BL_HIGH c=12 #: messages.c:155 @@ -728,7 +728,7 @@ msgstr "Dimmwert" # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=20 r=3 #: messages.c:67 msgid "Measuring reference height of calibration point" -msgstr "Messen der Referenzhoehe des Kalibrierpunktes" +msgstr "Messen der Referenzhöhe des Kalibrierpunktes" # MSG_MESH_BED_LEVELING c=18 #: messages.c:148 @@ -748,7 +748,7 @@ msgstr "MMU OK. Temperatur wiederherstellen..." # MSG_MEASURED_SKEW c=14 #: ultralcd.cpp:2885 msgid "Measured skew" -msgstr "Schraeglauf" +msgstr "Schräglauf" # MSG_MMU_FAILS c=15 #: messages.c:69 @@ -851,7 +851,7 @@ msgid "No move." msgstr "Keine Bewegung." # MSG_NO_CARD c=18 -#: ultralcd.cpp:6697 +#: ultralcd.cpp:6618 msgid "No SD card" msgstr "Keine SD Karte" @@ -866,14 +866,14 @@ msgid "No" msgstr "Nein" # MSG_SELFTEST_NOTCONNECTED c=20 -#: ultralcd.cpp:8128 +#: ultralcd.cpp:8049 msgid "Not connected" msgstr "Nicht angeschlossen" # MSG_NEW_FIRMWARE_AVAILABLE c=20 r=2 #: util.cpp:195 msgid "New firmware version available:" -msgstr "Neue Firmware- Version verfuegbar:" +msgstr "Neue Firmware- Version verfügbar:" # MSG_SELFTEST_FAN_NO c=19 #: messages.c:92 @@ -883,17 +883,17 @@ msgstr "Dreht sich nicht" # MSG_WIZARD_V2_CAL c=20 r=8 #: ultralcd.cpp:4838 msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface." -msgstr "Jetzt werde ich den Abstand zwischen Duesenspitze und Druckbett kalibrieren." +msgstr "Jetzt werde ich den Abstand zwischen Düsenspitze und Druckbett kalibrieren." # MSG_WIZARD_WILL_PREHEAT c=20 r=4 #: ultralcd.cpp:4967 msgid "Now I will preheat nozzle for PLA." -msgstr "Jetzt werde ich die Duese fuer PLA vorheizen." +msgstr "Jetzt werde ich die Düse für PLA vorheizen." # MSG_NOZZLE c=12 #: messages.c:72 msgid "Nozzle" -msgstr "Duese" +msgstr "Düse" # MSG_DEFAULT_SETTINGS_LOADED c=20 r=6 #: Marlin_main.cpp:1605 @@ -908,7 +908,7 @@ msgstr "Testdruck jetzt von Stahlblech entfernen." # MSG_NOZZLE_FAN c=10 #: ultralcd.cpp:1446 msgid "Nozzle FAN" -msgstr "Duesevent." +msgstr "Drucklüft." # MSG_PAUSE_PRINT c=18 #: messages.c:74 @@ -933,27 +933,27 @@ msgstr "PID Kalibrierung" # MSG_PINDA_PREHEAT c=20 #: ultralcd.cpp:683 msgid "PINDA Heating" -msgstr "PINDA erwaermen" +msgstr "PINDA erwärmen" # MSG_PAPER c=20 r=10 #: messages.c:73 msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately." -msgstr "Legen Sie ein Blatt Papier unter die Duese waehrend der Kalibrierung der ersten 4 Punkte. Wenn die Duese das Papier erfasst, den Drucker sofort ausschalten." +msgstr "Legen Sie ein Blatt Papier unter die Düse während der Kalibrierung der ersten 4 Punkte. Wenn die Düse das Papier erfasst, den Drucker sofort ausschalten." # MSG_WIZARD_CLEAN_HEATBED c=20 r=8 #: ultralcd.cpp:5024 msgid "Please clean heatbed and then press the knob." -msgstr "Bitte reinigen Sie das Heizbett und druecken Sie dann den Knopf." +msgstr "Bitte reinigen Sie das Heizbett und drücken Sie dann den Knopf." # MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 #: messages.c:26 msgid "Please clean the nozzle for calibration. Click when done." -msgstr "Bitte entfernen Sie ueberstehendes Filament von der Duese. Klicken wenn sauber." +msgstr "Bitte entfernen Sie überstehendes Filament von der Düse. Klicken wenn sauber." # MSG_SELFTEST_PLEASECHECK c=20 -#: ultralcd.cpp:8122 +#: ultralcd.cpp:8043 msgid "Please check:" -msgstr "Bitte pruefe:" +msgstr "Bitte prüfen:" # MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 #: messages.c:117 @@ -963,7 +963,7 @@ msgstr "Bitte lesen Sie unser Handbuch und beheben Sie das Problem. Fahren Sie d # MSG_CHECK_IDLER c=20 r=5 #: Marlin_main.cpp:3798 msgid "Please open idler and remove filament manually." -msgstr "Bitte Spannrolle oeffnen und Fila- ment von Hand entfernen" +msgstr "Bitte Spannrolle öffnen und Filament von Hand entfernen" # MSG_PLACE_STEEL_SHEET c=20 r=5 #: messages.c:75 @@ -973,7 +973,7 @@ msgstr "Bitte legen Sie das Stahlblech auf das Heizbett." # MSG_PRESS_TO_UNLOAD c=20 r=4 #: messages.c:79 msgid "Please press the knob to unload filament" -msgstr "Bitte druecken Sie den Knopf um das Filament zu entladen." +msgstr "Bitte drücken Sie den Knopf um das Filament zu entladen." # MSG_PULL_OUT_FILAMENT c=20 r=4 #: messages.c:81 @@ -983,7 +983,7 @@ msgstr "Bitte ziehen Sie das Filament sofort heraus" # MSG_EJECT_REMOVE c=20 r=4 #: mmu.cpp:1421 msgid "Please remove filament and then press the knob." -msgstr "Bitte Filament entfernen und dann den Knopf druecken" +msgstr "Bitte Filament entfernen und dann den Knopf drücken" # MSG_REMOVE_STEEL_SHEET c=20 r=4 #: messages.c:84 @@ -993,7 +993,7 @@ msgstr "Bitte entfernen Sie das Stahlblech vom Heizbett." # MSG_RUN_XYZ c=20 r=4 #: Marlin_main.cpp:5338 msgid "Please run XYZ calibration first." -msgstr "Bitte zuerst XYZ Kalibrierung ausfuehren." +msgstr "Bitte zuerst XYZ Kalibrierung ausführen." # MSG_UPDATE_MMU2_FW c=20 r=4 #: mmu.cpp:1341 @@ -1013,17 +1013,17 @@ msgstr "Bitte zuerst Transportsicherungen entfernen." # MSG_PREHEAT_NOZZLE c=20 #: messages.c:78 msgid "Preheat the nozzle!" -msgstr "Duese vorheizen!" +msgstr "Düse vorheizen!" # MSG_PREHEAT c=18 -#: ultralcd.cpp:6655 +#: ultralcd.cpp:6576 msgid "Preheat" msgstr "Vorheizen" # MSG_WIZARD_HEATING c=20 r=3 #: messages.c:119 msgid "Preheating nozzle. Please wait." -msgstr "Vorheizen der Duese. Bitte warten." +msgstr "Vorheizen der Düse. Bitte warten." # MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 #: util.cpp:199 @@ -1031,9 +1031,9 @@ msgid "Please upgrade." msgstr "Bitte aktualisieren." # MSG_PRESS_TO_PREHEAT c=20 r=4 -#: Marlin_main.cpp:12049 +#: Marlin_main.cpp:12052 msgid "Press the knob to preheat nozzle and continue." -msgstr "Bitte druecken Sie den Knopf um die Duese vorzuheizen und fortzufahren." +msgstr "Bitte drücken Sie den Knopf um die Düse vorzuheizen und fortzufahren." # MSG_FS_PAUSE c=5 #: fsensor.cpp:730 @@ -1061,9 +1061,9 @@ msgid "Preheating to unload" msgstr "Heizen zum Entladen" # MSG_SELFTEST_PRINT_FAN_SPEED c=18 -#: ultralcd.cpp:8501 +#: ultralcd.cpp:8422 msgid "Print fan:" -msgstr "Druckvent.:" +msgstr "Drucklüfter:" # MSG_CARD_MENU c=18 #: messages.c:22 @@ -1073,7 +1073,7 @@ msgstr "Drucken von SD" # MSG_PRESS_KNOB c=20 #: ultralcd.cpp:2130 msgid "Press the knob" -msgstr "Knopf druecken zum" +msgstr "Knopf drücken zum" # MSG_PRINT_PAUSED c=20 #: ultralcd.cpp:907 @@ -1083,7 +1083,7 @@ msgstr "Druck pausiert" # MSG_RESUME_NOZZLE_TEMP c=20 r=4 #: mmu.cpp:726 msgid "Press the knob to resume nozzle temperature." -msgstr "Druecken Sie den Knopf um die Duesentemperatur wiederherzustellen" +msgstr "Drücken Sie den Knopf um die Düsentemperatur wiederherzustellen" # MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 #: messages.c:46 @@ -1093,17 +1093,17 @@ msgstr "Drucker wurde noch nicht kalibriert. Bitte folgen Sie dem Handbuch, Kapi # MSG_PRINT_FAN c=10 #: ultralcd.cpp:1447 msgid "Print FAN" -msgstr "Druckvent." +msgstr "Drucklüft." # MSG_WIZARD_LOAD_FILAMENT c=20 r=6 #: ultralcd.cpp:4818 msgid "Please insert filament into the extruder, then press the knob to load it." -msgstr "Bitte legen Sie das Filament in den Extruder ein und druecken Sie dann den Knopf, um es zu laden." +msgstr "Bitte legen Sie das Filament in den Extruder ein und drücken Sie dann den Knopf, um es zu laden." # MSG_MMU_INSERT_FILAMENT_FIRST_TUBE c=20 r=6 #: ultralcd.cpp:4813 msgid "Please insert filament into the first tube of the MMU, then press the knob to load it." -msgstr "Bitte stecken Sie das Filament in den ersten Schlauch der MMU und druecken Sie dann den Knopf, um es zu laden." +msgstr "Bitte stecken Sie das Filament in den ersten Schlauch der MMU und drücken Sie dann den Knopf, um es zu laden." # MSG_PLEASE_LOAD_PLA c=20 r=4 #: ultralcd.cpp:4735 @@ -1116,24 +1116,24 @@ msgid "Rear side [um]" msgstr "Hinten [um]" # MSG_UNLOAD_FILAMENT_REPEAT c=20 r=4 -#: ultralcd.cpp:7404 +#: ultralcd.cpp:7325 msgid "Please unload the filament first, then repeat this action." msgstr "Bitte entladen Sie erst das Filament und versuchen Sie es nochmal." # MSG_CHECK_IR_CONNECTION c=20 r=4 -#: ultralcd.cpp:7407 +#: ultralcd.cpp:7328 msgid "Please check the IR sensor connection, unload filament if present." -msgstr "Bitte IR Sensor Verbindungen ueber- pruefen und Filament entladen ist." +msgstr "Bitte IR Sensor Verbindungen über- prüfen und Filament entladen ist." # MSG_RECOVERING_PRINT c=20 -#: Marlin_main.cpp:11393 +#: Marlin_main.cpp:11396 msgid "Recovering print" msgstr "Druck wiederherst" # MSG_REMOVE_OLD_FILAMENT c=20 r=5 #: mmu.cpp:833 msgid "Remove old filament and press the knob to start loading new filament." -msgstr "Entfernen Sie das alte Filament und druecken Sie den Knopf, um das neue zu laden." +msgstr "Entfernen Sie das alte Filament und drücken Sie den Knopf, um das neue zu laden." # MSG_CALIBRATE_BED_RESET c=18 #: ultralcd.cpp:5804 @@ -1143,7 +1143,7 @@ msgstr "Reset XYZ Kalibr." # MSG_RESET c=14 #: messages.c:85 msgid "Reset" -msgstr "Ruecksetzen" +msgstr "Rücksetzen" # MSG_RESUME_PRINT c=18 #: messages.c:86 @@ -1168,7 +1168,7 @@ msgstr "" # MSG_WIZARD_RERUN c=20 r=7 #: ultralcd.cpp:4756 msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?" -msgstr "Der Assistent wird die aktuellen Kalibrierungsdaten loeschen und von vorne beginnen. Weiterfahren?" +msgstr "Der Assistent wird die aktuellen Kalibrierungsdaten löschen und von vorne beginnen. Weiterfahren?" # MSG_SD_CARD c=8 #: messages.c:138 @@ -1188,15 +1188,15 @@ msgstr "Suche Bett Kalibrierpunkt" # MSG_LANGUAGE_SELECT c=18 #: ultralcd.cpp:4451 msgid "Select language" -msgstr "Waehle Sprache" +msgstr "Wähle Sprache" # MSG_SELFTEST_OK c=20 -#: ultralcd.cpp:7679 +#: ultralcd.cpp:7600 msgid "Self test OK" msgstr "Selbsttest OK" # MSG_SELFTEST_START c=20 -#: ultralcd.cpp:7447 +#: ultralcd.cpp:7368 msgid "Self test start" msgstr "Selbsttest start" @@ -1206,7 +1206,7 @@ msgid "Selftest" msgstr "Selbsttest" # MSG_SELFTEST_ERROR c=20 -#: ultralcd.cpp:8121 +#: ultralcd.cpp:8042 msgid "Selftest error!" msgstr "Selbsttest Fehler!" @@ -1218,12 +1218,12 @@ msgstr "Selbsttest Error" # MSG_FORCE_SELFTEST c=20 r=8 #: Marlin_main.cpp:1637 msgid "Selftest will be run to calibrate accurate sensorless rehoming." -msgstr "Selbsttest im Gang, um die genaue Rueck- kehr zum Nullpunkt ohne Sensor zu kalibrieren" +msgstr "Selbsttest wird gestartet, um Startposition zu kalibrieren." # MSG_SEL_PREHEAT_TEMP c=20 r=6 #: ultralcd.cpp:4998 msgid "Select nozzle preheat temperature which matches your material." -msgstr "Bitte Vorheiztemperatur auswaehlen, die Ihrem Material entspricht." +msgstr "Bitte Vorheiztemperatur auswählen, die Ihrem Material entspricht." # MSG_SET_TEMPERATURE c=20 #: ultralcd.cpp:3135 @@ -1263,7 +1263,7 @@ msgstr "Zeit" # MSG_SEVERE_SKEW c=14 #: ultralcd.cpp:2888 msgid "Severe skew" -msgstr "Sehr Schraeg" +msgstr "Sehr schräg" # MSG_SORT_ALPHA c=8 #: messages.c:141 @@ -1283,7 +1283,7 @@ msgstr "Laut" # MSG_SLIGHT_SKEW c=14 #: ultralcd.cpp:2887 msgid "Slight skew" -msgstr "Leicht Schraeg" +msgstr "Leicht schräg" # MSG_SOUND c=7 #: messages.c:143 @@ -1293,7 +1293,7 @@ msgstr "Ton" # MSG_RUNOUTS c=7 #: ultralcd.cpp:1593 msgid "Runouts" -msgstr "Maengel" +msgstr "Mängel" # MSG_Z-LEVELING_ENFORCED c=20 r=4 #: Marlin_main.cpp:3303 @@ -1306,7 +1306,7 @@ msgid "Once" msgstr "Einmal" # MSG_SPEED c=15 -#: ultralcd.cpp:6882 +#: ultralcd.cpp:6803 msgid "Speed" msgstr "Geschwindigkeit" @@ -1318,7 +1318,7 @@ msgstr "Dreht sich" # MSG_TEMP_CAL_WARNING c=20 r=4 #: Marlin_main.cpp:5351 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required." -msgstr "Stabile Umgebungs- temperatur 21-26C und feste Stand- flaeche erforderlich" +msgstr "Stabile Umgebungs- temperatur 21-26C und feste Stand- fläche erforderlich" # MSG_STATISTICS c=18 #: ultralcd.cpp:6081 @@ -1336,19 +1336,19 @@ msgid "STOPPED." msgstr "GESTOPPT." # MSG_SUPPORT c=18 -#: ultralcd.cpp:6756 +#: ultralcd.cpp:6677 msgid "Support" msgstr "" # MSG_SELFTEST_SWAPPED c=16 -#: ultralcd.cpp:8180 +#: ultralcd.cpp:8101 msgid "Swapped" msgstr "Ausgetauscht" # MSG_SELECT_FILAMENT c=20 #: ultralcd.cpp:4706 msgid "Select filament:" -msgstr "Filament auswaehlen:" +msgstr "Filament auswählen:" # MSG_TEMP_CALIBRATION c=14 #: messages.c:112 @@ -1358,7 +1358,7 @@ msgstr "Temp Kalib." # MSG_SELECT_TEMP_MATCHES_MATERIAL c=20 r=4 #: ultralcd.cpp:4847 msgid "Select temperature which matches your material." -msgstr "Waehlen Sie die Temperatur, die zu Ihrem Material passt." +msgstr "Wählen Sie die Temperatur, die zu Ihrem Material passt." # MSG_CALIBRATION_PINDA_MENU c=17 #: ultralcd.cpp:5812 @@ -1376,9 +1376,9 @@ msgid "Temperature calibration is finished and active. Temp. calibration can be msgstr "Temp.kalibrierung ist fertig + aktiv. Temp.kalibrierung kann ausgeschaltet werden im Menu Einstellungen -> Temp.kal." # MSG_FS_VERIFIED c=20 r=3 -#: ultralcd.cpp:7411 +#: ultralcd.cpp:7332 msgid "Sensor verified, remove the filament now." -msgstr "Sensor ueberprueft, entladen Sie jetzt das Filament." +msgstr "Sensor überprüft, entladen Sie jetzt das Filament." # MSG_TEMPERATURE c=18 #: ultralcd.cpp:5673 @@ -1393,7 +1393,7 @@ msgstr "Temperaturen" # MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9 #: messages.c:47 msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow." -msgstr "Es ist noch not- wendig die Z- Kalibrierung aus- zufuehren. Bitte befolgen Sie das Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrierablauf." +msgstr "Es ist noch not- wendig die Z- Kalibrierung aus- zuführen. Bitte befolgen Sie das Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrierablauf." # MSG_TOTAL_FILAMENT c=19 #: ultralcd.cpp:2735 @@ -1406,7 +1406,7 @@ msgid "Total print time" msgstr "Gesamte Druckzeit" # MSG_TUNE c=18 -#: ultralcd.cpp:6653 +#: ultralcd.cpp:6574 msgid "Tune" msgstr "Feineinstellung" @@ -1463,27 +1463,27 @@ msgstr "Warte auf Benutzer.." # MSG_WAITING_TEMP c=20 r=4 #: ultralcd.cpp:3283 msgid "Waiting for nozzle and bed cooling" -msgstr "Warten bis Heizung und Bett abgekuehlt sind" +msgstr "Warten bis Heizung und Bett abgekühlt sind" # MSG_WAITING_TEMP_PINDA c=20 r=3 #: ultralcd.cpp:3244 msgid "Waiting for PINDA probe cooling" -msgstr "Warten, bis PINDA- Sonde abgekuehlt ist" +msgstr "Warten, bis PINDA- Sonde abgekühlt ist" # MSG_CHANGED_BOTH c=20 r=4 #: Marlin_main.cpp:1597 msgid "Warning: both printer type and motherboard type changed." -msgstr "Warnung: Druckertyp und Platinentyp wurden beide geaendert." +msgstr "Warnung: Druckertyp und Platinentyp wurden beide geändert." # MSG_CHANGED_MOTHERBOARD c=20 r=4 #: Marlin_main.cpp:1589 msgid "Warning: motherboard type changed." -msgstr "Warnung: Platinentyp wurde geaendert." +msgstr "Warnung: Platinentyp wurde geändert." # MSG_CHANGED_PRINTER c=20 r=4 #: Marlin_main.cpp:1593 msgid "Warning: printer type changed." -msgstr "Warnung: Druckertyp wurde geaendert." +msgstr "Warnung: Druckertyp wurde geändert." # MSG_UNLOAD_SUCCESSFUL c=20 r=2 #: Marlin_main.cpp:3789 @@ -1518,22 +1518,22 @@ msgstr "Ja" # MSG_WIZARD_QUIT c=20 r=8 #: messages.c:120 msgid "You can always resume the Wizard from Calibration -> Wizard." -msgstr "Sie koennen den Assistenten immer im Menu neu starten: Kalibrierung -> Assistent" +msgstr "Sie können den Assistenten immer im Menu neu starten: Kalibrierung -> Assistent" # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 #: ultralcd.cpp:3743 msgid "XYZ calibration all right. Skew will be corrected automatically." -msgstr "XYZ Kalibrierung in Ordnung. Schraeglauf wird automatisch korrigiert." +msgstr "XYZ Kalibrierung in Ordnung. Schräglauf wird automatisch korrigiert." # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 #: ultralcd.cpp:3740 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!" -msgstr "XYZ Kalibrierung in Ordnung. X/Y Achsen sind etwas schraeg. Gut gemacht!" +msgstr "XYZ Kalibrierung in Ordnung. X/Y Achsen sind etwas schräg. Gut gemacht!" # MSG_TIMEOUT c=12 #: messages.c:157 msgid "Timeout" -msgstr "Verzoegerung" +msgstr "" # MSG_X_CORRECTION c=13 #: ultralcd.cpp:5086 @@ -1543,17 +1543,17 @@ msgstr "X-Korrektur:" # MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 #: ultralcd.cpp:3737 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" -msgstr "XYZ-Kalibrierung ok. X/Y-Achsen sind senkrecht zueinander Glueckwunsch!" +msgstr "XYZ-Kalibrierung ok. X/Y-Achsen sind senkrecht zueinander Glückwunsch!" # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 #: ultralcd.cpp:3721 msgid "XYZ calibration compromised. Front calibration points not reachable." -msgstr "XYZ-Kalibrierung beeintraechtigt. Vordere Kalibrierpunkte nicht erreichbar." +msgstr "XYZ-Kalibrierung beeinträchtigt. Vordere Kalibrierpunkte nicht erreichbar." # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 #: ultralcd.cpp:3724 msgid "XYZ calibration compromised. Right front calibration point not reachable." -msgstr "XYZ-Kalibrierung beeintraechtigt. Rechter vorderer Kalibrierpunkt nicht erreichbar." +msgstr "XYZ-Kalibrierung beeinträchtigt. Rechter vorderer Kalibrierpunkt nicht erreichbar." # MSG_LOAD_ALL c=17 #: ultralcd.cpp:6167 @@ -1583,12 +1583,12 @@ msgstr "Y Entfernung vom Min" # MSG_WIZARD_V2_CAL_2 c=20 r=12 #: ultralcd.cpp:4850 msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)." -msgstr "Der Drucker beginnt mit dem Drucken einer Zickzacklinie. Drehen Sie den Knopf, bis Sie die optimale Hoehe erreicht haben. Ueberpruefen Sie die Bilder im Handbuch (Kapitel Kalibrierung)." +msgstr "Der Drucker beginnt mit dem Drucken einer Zickzacklinie. Drehen Sie den Knopf, bis Sie die optimale Höhe erreicht haben. überprüfen Sie die Bilder im Handbuch (Kapitel Kalibrierung)." # MSG_FIL_FAILED c=20 r=5 -#: ultralcd.cpp:7415 +#: ultralcd.cpp:7336 msgid "Verification failed, remove the filament and try again." -msgstr "Ueberpruefung fehl- geschlagen, entladen Sie das Filament und versuchen Sie es erneut." +msgstr "überprüfung fehl- geschlagen, entladen Sie das Filament und versuchen Sie es erneut." # MSG_Y_CORRECTION c=13 #: ultralcd.cpp:5087 @@ -1608,7 +1608,7 @@ msgstr "An" # MSG_BACK c=18 #: messages.c:64 msgid "Back" -msgstr "Zurueck" +msgstr "Zurück" # MSG_CHECKS c=18 #: ultralcd.cpp:5641 @@ -1616,7 +1616,7 @@ msgid "Checks" msgstr "Kontrolle" # MSG_FALSE_TRIGGERING c=20 -#: ultralcd.cpp:8190 +#: ultralcd.cpp:8111 msgid "False triggering" msgstr "Falschtriggerung" @@ -1668,37 +1668,37 @@ msgstr "Modell" # MSG_NOZZLE_DIAMETER c=10 #: messages.c:136 msgid "Nozzle d." -msgstr "Duese D." +msgstr "Düsendiam." # MSG_GCODE_DIFF_CONTINUE c=20 r=4 #: util.cpp:414 msgid "G-code sliced for a different level. Continue?" -msgstr "G-Code ist fuer einen anderen Level geslict. Fortfahren?" +msgstr "G-Code ist für einen anderen Level geslict. Fortfahren?" # MSG_GCODE_DIFF_CANCELLED c=20 r=7 #: util.cpp:420 msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled." -msgstr "G-Code ist fuer einen anderen Level geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen." +msgstr "G-Code ist für einen anderen Level geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen." # MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5 #: messages.c:134 msgid "G-code sliced for a different printer type. Continue?" -msgstr "G-Code ist fuer einen anderen Drucker geslict. Fortfahren?" +msgstr "G-Code ist für einen anderen Drucker geslict. Fortfahren?" # MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=8 #: messages.c:135 msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled." -msgstr "G-Code ist fuer einen anderen Drucker geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen." +msgstr "G-Code ist für einen anderen Drucker geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen." # MSG_GCODE_NEWER_FIRMWARE_CONTINUE c=20 r=5 #: util.cpp:381 msgid "G-code sliced for a newer firmware. Continue?" -msgstr "G-Code ist fuer eine neuere Firmware geslict. Fortfahren?" +msgstr "G-Code ist für eine neuere Firmware geslict. Fortfahren?" # MSG_GCODE_NEWER_FIRMWARE_CANCELLED c=20 r=8 #: util.cpp:387 msgid "G-code sliced for a newer firmware. Please update the firmware. Print cancelled." -msgstr "G-Code ist fuer eine neuere Firmware geslict. Bitte die Firmware updaten. Druck abgebrochen." +msgstr "G-Code ist für eine neuere Firmware geslict. Bitte die Firmware updaten. Druck abgebrochen." # MSG_PREHEATING_TO_CUT c=20 #: ultralcd.cpp:2309 @@ -1713,25 +1713,25 @@ msgstr "Heizen zum Auswurf" # MSG_NOZZLE_DIFFERS_CONTINUE c=20 r=5 #: util.cpp:294 msgid "Printer nozzle diameter differs from the G-code. Continue?" -msgstr "Der Durchmesser der Druckerduese weicht vom G-Code ab. Fortfahren?" +msgstr "Der Durchmesser der Druckerdüse weicht vom G-Code ab. Fortfahren?" # MSG_NOZZLE_DIFFERS_CANCELLED c=20 r=9 #: util.cpp:301 msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled." -msgstr "Der Durchmesser der Druckerduese weicht vom G-Code ab. Bitte ueberpruefen Sie den Wert in den Einstellungen. Druck abgebrochen." +msgstr "Der Durchmesser der Druckerdüse weicht vom G-Code ab. Bitte überprüfen Sie den Wert in den Einstellungen. Druck abgebrochen." # MSG_SELFTEST_FS_LEVEL c=20 -#: ultralcd.cpp:8195 +#: ultralcd.cpp:8116 msgid "%s level expected" msgstr "%s Level erwartet" # MSG_RENAME c=18 -#: ultralcd.cpp:6579 +#: ultralcd.cpp:6500 msgid "Rename" msgstr "Umbenennen" # MSG_SELECT c=18 -#: ultralcd.cpp:6572 +#: ultralcd.cpp:6493 msgid "Select" msgstr "Auswahl" From 14f309819d55f2e184460d2aaaf9acd02dac2855 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Sun, 30 Jan 2022 12:26:54 +0100 Subject: [PATCH 07/24] Add Hungarian replacement Fix changed chars. --- lang/lang-import.sh | 184 ++++++++++++++++++++++++++------------------ 1 file changed, 107 insertions(+), 77 deletions(-) diff --git a/lang/lang-import.sh b/lang/lang-import.sh index a7991543..df8920d9 100755 --- a/lang/lang-import.sh +++ b/lang/lang-import.sh @@ -29,7 +29,7 @@ # Add Community language support # Use `git rev-list --count HEAD lang-import.sh` # to get Build Nr -# 14 Jan. 2022, 3d-gussner, Replace German UTF-8 '' to HD44780 A00 ROM '' +# 14 Jan. 2022, 3d-gussner, Replace German UTF-8 'äöÿÿ' to HD44780 A00 ROM 'äöÿÿ' # 28 Jan. 2022, 3d-gussner, Run lang-check and output `xx-output.txt` file to review # translations # new argruments `--information` `--import-check` @@ -81,52 +81,52 @@ 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 https://en.wikipedia.org/wiki/German_orthography if [ "$LNG" = "de" ]; then -#replace UTF-8 '' to HD44780 A00 '' - #replace '' with 'A00 ROM ' +#replace UTF-8 'äöüß' to HD44780 A00 'äöüß' + #replace 'ä' with 'A00 ROM ä' sed -i 's/\xc3\xa4/\\xe1/g' $LNG'_filtered.po' - #replace '' with 'A00 ROM ' + #replace 'Ä' with 'A00 ROM ä' sed -i 's/\xc3\x84/\\xe1/g' $LNG'_filtered.po' - #replace '' with 'A00 ROM ' + #replace 'ü' with 'A00 ROM ü' sed -i 's/\xc3\xbc/\\xf5/g' $LNG'_filtered.po' - #replace '' with 'A00 ROM ' + #replace 'Ü' with 'A00 ROM ü' sed -i 's/\xc3\x9c/\\xf5/g' $LNG'_filtered.po' - #replace '' with 'A00 ROM ' + #replace 'ö' with 'A00 ROM ö' sed -i 's/\xc3\xb6/\\xef/g' $LNG'_filtered.po' - #replace '' with 'A00 ROM ' + #replace 'Ö' with 'A00 ROM ö' sed -i 's/\xc3\x96/\\xef/g' $LNG'_filtered.po' - #replace '' with 'A00 ROM ' + #replace 'ß' with 'A00 ROM ß' sed -i 's/\xc3\x9f/\\xe2/g' $LNG'_filtered.po' fi #replace in spain translation if [ "$LNG" = "es" ]; then - #replace '' with 'a' + #replace 'á' with 'a' sed -i 's/\xc3\xa1/a/g' $LNG'_filtered.po' - #replace '' with '?' + #replace '¿' with '?' sed -i 's/\xc2\xbf/?/g' $LNG'_filtered.po' - #replace '' with 'o' + #replace 'ó' with 'o' sed -i 's/\xc3\xb3/o/g' $LNG'_filtered.po' - #replace '' with 'e' + #replace 'é' with 'e' sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' - #replace '' with 'i' + #replace 'í' with 'i' sed -i 's/\xc3\xad/i/g' $LNG'_filtered.po' #replace '!' with '!' sed -i 's/\xc2\xa1/!/g' $LNG'_filtered.po' @@ -136,145 +136,175 @@ fi #replace in french translation https://en.wikipedia.org/wiki/French_orthography if [ "$LNG" = "fr" ]; then - #replace '' with 'a' (right) + #replace 'á' with 'a' (right) sed -i 's/\xc3\xa1/a/g' $LNG'_filtered.po' - #replace '' with 'A' (right) + #replace 'Á' with 'A' (right) sed -i 's/\xc3\x81/A/g' $LNG'_filtered.po' - #replace '' with 'a' (left) + #replace 'à' with 'a' (left) sed -i 's/\xc3\xa0/a/g' $LNG'_filtered.po' - #replace '' with 'A' (left) + #replace 'À' with 'A' (left) sed -i 's/\xc3\x80/A/g' $LNG'_filtered.po' - #replace '' with 'e' (right) + #replace 'é' with 'e' (right) sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' - #replace '' with 'E' (right) + #replace 'É' with 'E' (right) sed -i 's/\xc3\x89/E/g' $LNG'_filtered.po' - #replace '' with 'e' (left) + #replace 'è' with 'e' (left) sed -i 's/\xc3\xa8/e/g' $LNG'_filtered.po' - #replace '' with 'E' (left) + #replace 'È' with 'E' (left) sed -i 's/\xc3\x88/E/g' $LNG'_filtered.po' fi #replace in italian translation if [ "$LNG" = "it" ]; then - #replace '' with 'e' (left) + #replace 'é' with 'e' (left) sed -i 's/\xc3\xa8/e/g' $LNG'_filtered.po' - #replace '' with 'a' (left) + #replace 'á' with 'a' (left) sed -i 's/\xc3\xa0/a/g' $LNG'_filtered.po' - #replace '' with 'o' (left) + #replace 'ó' with 'o' (left) sed -i 's/\xc3\xb2/o/g' $LNG'_filtered.po' - #replace '' with 'u' (left) + #replace 'ú' with 'u' (left) sed -i 's/\xc3\xb9/u/g' $LNG'_filtered.po' - #replace '' with 'e' + #replace 'é' with 'e' sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' - #replace '' with 'E' (left) + #replace 'É' with 'E' (left) sed -i 's/\xc3\x88/E/g' $LNG'_filtered.po' fi #replace in dutch translation according to https://nl.wikipedia.org/wiki/Accenttekens_in_de_Nederlandse_spelling if [ "$LNG" = "nl" ]; then - #replace '' with 'e' + #replace 'ë' with 'e' sed -i 's/\xc3\xab/e/g' $LNG'_filtered.po' - #replace '' with 'i' + #replace 'ï' with 'i' sed -i 's/\xc3\xaf/i/g' $LNG'_filtered.po' - #replace '' with 'e' + #replace 'é' with 'e' sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' - #replace '' with 'e' (left) + #replace 'è' with 'e' (left) sed -i 's/\xc3\xa8/e/g' $LNG'_filtered.po' - #replace '' with 'o' (left) + #replace 'ö' with 'o' (left) sed -i 's/\xc3\xb6/o/g' $LNG'_filtered.po' - #replace '' with 'e' (left) + #replace 'ê' with 'e' (left) sed -i 's/\xc3\xaa/e/g' $LNG'_filtered.po' - #replace '' with 'u' (left) + #replace 'ü' with 'u' (left) sed -i 's/\xc3\xbc/u/g' $LNG'_filtered.po' - #replace '' with 'c' (left) + #replace 'ç' with 'c' (left) sed -i 's/\xc3\xa7/c/g' $LNG'_filtered.po' - #replace '' with 'a' (left) + #replace 'á' with 'a' (left) sed -i 's/\xc3\xa1/a/g' $LNG'_filtered.po' - #replace '' with 'a' (left) + #replace 'à' with 'a' (left) sed -i 's/\xc3\xa0/a/g' $LNG'_filtered.po' - #replace '' with 'a' (left) + #replace 'ä' with 'a' (left) sed -i 's/\xc3\xa4/a/g' $LNG'_filtered.po' - #replace '' with 'u' (left) + #replace 'û' with 'u' (left) sed -i 's/\xc3\xbc/u/g' $LNG'_filtered.po' - #replace '' with 'i' (left) + #replace 'î' with 'i' (left) sed -i 's/\xc3\xae/i/g' $LNG'_filtered.po' - #replace '' with 'i' (left) + #replace 'í' with 'i' (left) sed -i 's/\xc3\xad/i/g' $LNG'_filtered.po' - #replace '' with 'o' (left) + #replace 'ô' with 'o' (left) sed -i 's/\xc3\xb4/o/g' $LNG'_filtered.po' - #replace '' with 'u' (left) + #replace 'ú' with 'u' (left) sed -i 's/\xc3\xba/u/g' $LNG'_filtered.po' - #replace '' with 'n' (left) + #replace 'ñ' with 'n' (left) sed -i 's/\xc3\xb1/n/g' $LNG'_filtered.po' - #replace '' with 'a' (left) + #replace 'â' with 'a' (left) sed -i 's/\xc3\xa2/a/g' $LNG'_filtered.po' - #replace '' with 'A' (left) + #replace 'Å' with 'A' (left) sed -i 's/\xc3\x85/A/g' $LNG'_filtered.po' fi if [ "$LNG" = "sv" ]; then -#repace '' with 'Aa' +#repace 'Å' with 'Aa' sed -i 's/\xc3\x85/Aa/g' $LNG'_filtered.po' -#repace '' with 'aa' +#repace 'å' with 'aa' sed -i 's/\xc3\xA5/aa/g' $LNG'_filtered.po' fi if [ "$LNG" = "da" ]; then -#repace '' with 'Aa' +#repace 'Å' with 'Aa' sed -i 's/\xc3\x85/Aa/g' $LNG'_filtered.po' -#repace '' with 'aa' +#repace 'å' with 'aa' sed -i 's/\xc3\xA5/aa/g' $LNG'_filtered.po' fi if [ "$LNG" = "sl" ]; then - #replace '' with 'e' + #replace 'ë' with 'e' sed -i 's/\xc3\xab/e/g' $LNG'_filtered.po' - #replace '' with 'a' (left) + #replace 'ä' with 'a' (left) sed -i 's/\xc3\xa4/a/g' $LNG'_filtered.po' - #replace '' with 'e' + #replace 'é' with 'e' sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' fi -if [ "$LNG" = "hu" ]; then - #replace '' with 'e' - sed -i 's/\xc3\xab/e/g' $LNG'_filtered.po' - #replace '' with 'a' - sed -i 's/\xc3\xa4/a/g' $LNG'_filtered.po' - #replace '' with 'e' +if [ "$LNG" = "hu" ]; then # See https://www.fileformat.info/info/charset/UTF-8/list.htm + #replace 'Á' with 'A'(acute) + sed -i 's/\xc3\x81/A/g' $LNG'_filtered.po' + #replace 'á' with 'a' + sed -i 's/\xc3\xa1/a/g' $LNG'_filtered.po' + #replace 'É' with 'E' (acute) + sed -i 's/\xc3\x89/E/g' $LNG'_filtered.po' + #replace 'é' with 'e' sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' + #replace 'Í' with 'I' (acute) + sed -i 's/\xc3\x8d/I/g' $LNG'_filtered.po' + #replace 'i̇́' with 'i' + sed -i 's/\xc3\xad/i/g' $LNG'_filtered.po' + #replace 'Ó' with 'O' (acute) + sed -i 's/\xc3\x93/O/g' $LNG'_filtered.po' + #replace 'ó' with 'o' + sed -i 's/\xc3\xb3/o/g' $LNG'_filtered.po' + #replace 'Ö' with 'O' (diaresis) + sed -i 's/\xc3\x96/O/g' $LNG'_filtered.po' + #replace 'ö' with 'o' + sed -i 's/\xc3\xb6/o/g' $LNG'_filtered.po' + #replace 'Ő' with 'O' (double acute) + sed -i 's/\xc5\x90/O/g' $LNG'_filtered.po' + #replace 'ő' with 'o' + sed -i 's/\xc5\x91/o/g' $LNG'_filtered.po' + #replace 'Ú' with 'U' (acute) + sed -i 's/\xc3\x9a/U/g' $LNG'_filtered.po' + #replace 'ú' with 'u' + sed -i 's/\xc3\xba/u/g' $LNG'_filtered.po' + #replace 'Ü' with 'U' (diaersis) + sed -i 's/\xc3\x9c/U/g' $LNG'_filtered.po' + #replace 'ü' with 'u' + sed -i 's/\xc3\xbc/u/g' $LNG'_filtered.po' + #replace 'Ű' with 'U' (double acute) + sed -i 's/\xc5\xb0/U/g' $LNG'_filtered.po' + #replace 'ű' with 'u' + sed -i 's/\xc5\xb1/u/g' $LNG'_filtered.po' fi if [ "$LNG" = "lb" ]; then - #replace '' with 'e' + #replace 'ë' with 'e' sed -i 's/\xc3\xab/e/g' $LNG'_filtered.po' - #replace '' with 'a' + #replace 'ä' with 'a' sed -i 's/\xc3\xa4/a/g' $LNG'_filtered.po' - #replace '' with 'e' + #replace 'é' with 'e' sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' fi if [ "$LNG" = "hr" ]; then - #replace '' with 'e' + #replace 'ë' with 'e' sed -i 's/\xc3\xab/e/g' $LNG'_filtered.po' - #replace '' with 'a' + #replace 'ä' with 'a' sed -i 's/\xc3\xa4/a/g' $LNG'_filtered.po' - #replace '' with 'e' + #replace 'é' with 'e' sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' fi if [ "$LNG" = "lt" ]; then - #replace '' with 'e' + #replace 'ë' with 'e' sed -i 's/\xc3\xab/e/g' $LNG'_filtered.po' - #replace '' with 'a' + #replace 'ä' with 'a' sed -i 's/\xc3\xa4/a/g' $LNG'_filtered.po' - #replace '' with 'e' + #replace 'é' with 'e' sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' fi #replace in polish translation #if [ "$LNG" = "pl" ]; then #fi -#check for nonasci characters excpet HD44780 ROM A00 '' +#check for nonasci characters excpet HD44780 ROM A00 'äöüß' if grep --color='auto' -P -n '[^\x00-\x7F]' $LNG'_filtered.po' >nonascii.txt; then exit fi From cbae08991c863c00fc89ccfb242aa1bc8110a763 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Wed, 2 Feb 2022 08:49:35 +0100 Subject: [PATCH 08/24] Add POEdit `.mo`and MAC generated `.DS_Store` --- .gitignore | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index d69ee381..c0dbafe2 100644 --- a/.gitignore +++ b/.gitignore @@ -61,4 +61,14 @@ config.tmp /lang/po/new/nonascii.txt /lang/po/new/lang_en*.txt /lang/po/new/*-output.txt -/lang/po/new/*.mo \ No newline at end of file +/lang/po/new/*.mo +.DS_Store +**/.DS_Store +Firmware/.DS_Store +Firmware/variant/.DS_Store +lang/.DS_Store +lang/po/.DS_Store +lang/po/new/.DS_Store +Tests/.DS_Store +tools/.DS_Store +tools/lib/.DS_Store \ No newline at end of file From 2a4e90bd93fb3f8eb611a6fb360f78c1393f6f4c Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Wed, 2 Feb 2022 17:22:17 +0100 Subject: [PATCH 09/24] Update replace Czech non aA-zZ characters --- lang/lang-import.sh | 66 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 56 insertions(+), 10 deletions(-) diff --git a/lang/lang-import.sh b/lang/lang-import.sh index df8920d9..0a636d5c 100755 --- a/lang/lang-import.sh +++ b/lang/lang-import.sh @@ -81,20 +81,66 @@ sed -i 's/ \\n/ /g;s/\\n/ /g' $LNG'_filtered.po' #replace in czech translation if [ "$LNG" = "cz" ]; then - #replace 'ž' with 'z' - sed -i 's/\xc5\xbe/z/g' $LNG'_filtered.po' - #replace 'ì' with 'e' - sed -i 's/\xc4\x9b/e/g' $LNG'_filtered.po' - #replace 'í' with 'i' - sed -i 's/\xc3\xad/i/g' $LNG'_filtered.po' - #replace 'ø' with 'r' - sed -i 's/\xc5\x99/r/g' $LNG'_filtered.po' - #replace 'è' with 'c' - sed -i 's/\xc4\x8d/c/g' $LNG'_filtered.po' + #replace 'Á' with 'A' + sed -i 's/\xc3\x81/A/g' $LNG'_filtered.po' #replace 'á' with 'a' sed -i 's/\xc3\xa1/a/g' $LNG'_filtered.po' + #replace 'Č' with 'C' + sed -i 's/\xc4\x8c/C/g' $LNG'_filtered.po' + #replace 'č' with 'c' + sed -i 's/\xc4\x8d/c/g' $LNG'_filtered.po' + #replace 'Ď' with 'D' + sed -i 's/\xc4\x8e/D/g' $LNG'_filtered.po' + #replace 'ď' with 'd' + sed -i 's/\xc4\x8f/d/g' $LNG'_filtered.po' + #replace 'É' with 'E' + sed -i 's/\xc3\x89/E/g' $LNG'_filtered.po' #replace 'é' with 'e' sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' + #replace 'Ě' with 'E' + sed -i 's/\xc4\x9a/E/g' $LNG'_filtered.po' + #replace 'ě' with 'e' + sed -i 's/\xc4\x9b/e/g' $LNG'_filtered.po' + #replace 'Í' with 'I' + sed -i 's/\xc3\x8d/I/g' $LNG'_filtered.po' + #replace 'í' with 'i' + sed -i 's/\xc3\xad/i/g' $LNG'_filtered.po' + #replace 'Ň' with 'N' + sed -i 's/\xc5\x87/N/g' $LNG'_filtered.po' + #replace 'ň' with 'n' + sed -i 's/\xc5\x88/n/g' $LNG'_filtered.po' + #replace 'Ó' with 'O' + sed -i 's/\xc3\x93/O/g' $LNG'_filtered.po' + #replace 'ó' with 'o' + sed -i 's/\xc3\xb3/o/g' $LNG'_filtered.po' + #replace 'Ř' with 'R' + sed -i 's/\xc5\x98/R/g' $LNG'_filtered.po' + #replace 'ř' with 'r' + sed -i 's/\xc5\x99/r/g' $LNG'_filtered.po' + #replace 'Š' with 'S' + sed -i 's/\xc5\xa0/S/g' $LNG'_filtered.po' + #replace 'š' with 's' + sed -i 's/\xc5\xa1/s/g' $LNG'_filtered.po' + #replace 'Ť' with 'T' + sed -i 's/\xc5\xa4/T/g' $LNG'_filtered.po' + #replace 'ť' with 't' + sed -i 's/\xc5\xa5/t/g' $LNG'_filtered.po' + #replace 'Ú' with 'U' + sed -i 's/\xc3\x9a/U/g' $LNG'_filtered.po' + #replace 'ú' with 'u' + sed -i 's/\xc3\xba/u/g' $LNG'_filtered.po' + #replace 'Ů' with 'U' + sed -i 's/\xc5\xae/U/g' $LNG'_filtered.po' + #replace 'ů' with 'u' + sed -i 's/\xc5\xaf/u/g' $LNG'_filtered.po' + #replace 'Ý' with 'Y' + sed -i 's/\xc3\x9d/Y/g' $LNG'_filtered.po' + #replace 'ý' with 'y' + sed -i 's/\xc3\xbd/y/g' $LNG'_filtered.po' + #replace 'Ž' with 'Z' + sed -i 's/\xc5\xbd/Z/g' $LNG'_filtered.po' + #replace 'ž' with 'z' + sed -i 's/\xc5\xbe/z/g' $LNG'_filtered.po' fi #replace in german translation https://en.wikipedia.org/wiki/German_orthography From 86235259a3ef863009dc96f000ac28b30fdf915b Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Fri, 7 Jan 2022 14:52:13 +0100 Subject: [PATCH 10/24] Add syntax checks --- lang/lang-check.py | 72 +++++++++++++++++++++++++++++++++++++++------- 1 file changed, 62 insertions(+), 10 deletions(-) diff --git a/lang/lang-check.py b/lang/lang-check.py index 88792f4d..06410c01 100755 --- a/lang/lang-check.py +++ b/lang/lang-check.py @@ -1,7 +1,6 @@ #!/usr/bin/env python3 # -# Version 1.0.1 -# +# Version 1.0.2 - Build 37 ############################################################################# # Change log: # 7 May 2019, Ondrej Tuma, Initial @@ -13,12 +12,26 @@ # 23 Apr. 2021, wavexx , improve # 24 Apr. 2021, wavexx , improve # 26 Apr. 2021, 3d-gussner, add character ruler +# 07 Jan. 2022, 3d-gussner, Check for Syntax errors and exit with error +# , add Build number 'git rev-list --count HEAD lang-check.py' ############################################################################# # +# Expected syntax of the files, which other scripts depend on +# 'lang_en.txt' +# 1st line: '#MSG_'' c='' r=' ; '#MSG' is mandentory while 'c=' and 'r=' aren't but should be there +# 2nd line: '"''"' ; '"' double quotes at the beginning and end of message are mandentory +# 3rd line: LF ; Line feed is mandantory between messages +# +# 'lang_en_??.txt' +# 1st line: '#MSG_'' c='' r=' ; '#MSG' is mandentory while 'c=' and 'r=' aren't but should be there +# 2nd line: '"''"' ; '"' double quotes at the beginning and end of message are mandentory +# 3rd line: '"''"' ; '"' double quotes at the beginning and end of message are mandentory +# 4th line: LF ; Line feed is mandantory between messages +# """Check lang files.""" from argparse import ArgumentParser from traceback import print_exc -from sys import stdout, stderr +from sys import stdout, stderr, exit import textwrap import re @@ -99,7 +112,6 @@ def ign_char_first(c): def ign_char_last(c): return c.isalnum() or c in {'.', "'"} - def parse_txt(lang, no_warning, warn_empty): """Parse txt file and check strings to display definition.""" if lang == "en": @@ -112,9 +124,15 @@ def parse_txt(lang, no_warning, warn_empty): lines = 1 with open(file_path) as src: while True: - comment = src.readline().split(' ') - #print (comment) #Debug - + message = src.readline() + #print(message) #Debug + #check syntax 1st line starts with `#MSG` + if (message[0:4] != '#MSG'): + print(red("[E]: Critical syntax error: 1st line doesn't start with #MSG on line %d" % lines)) + print(red(message)) + exit(1) + #Check if columns and rows are defined + comment = message.split(' ') #Check if columns and rows are defined cols = None rows = None @@ -140,12 +158,46 @@ def parse_txt(lang, no_warning, warn_empty): print(yellow("[W]: Multiple rows with odd number of columns on line %d" % lines)) #Wrap text to 20 chars and rows - source = src.readline()[:-1].strip('"') + source = src.readline()[:-1] #read whole line + #check if 2nd line of origin message beginns and ends with " double quote + if (source[0]!="\""): + print(red('[E]: Critical syntax error: Missing " at beginning of message in source on line %d' % lines)) + print(red(source)) + exit(1) + if (source[-1]=="\""): + source = source.strip('"') #remove " double quotes from message + else: + print(red('[E]: Critical syntax error: Missing " at end of message in source on line %d' % lines)) + print(red(source)) + exit(1) #print (source) #Debug - translation = src.readline()[:-1].strip('"') + translation = src.readline()[:-1]#read whole line + #check if 3rd line of translation message beginns and ends with " double quote + if (translation[0]!="\""): + print(red('[E]: Critical syntax error: Missing " at beginning of message in translation on line %d' % lines)) + print(red(translation)) + exit(1) + if (translation[-1]=="\""): + #print ("End ok") + translation = translation.strip('"') #remove " double quote from message + else: + print(red('[E]: Critical syntax error: Missing " at end of message in translation on line %d' % lines)) + print(red(translation)) + exit(1) + #print (translation) if translation == '\\x00': # crude hack to handle intentionally-empty translations translation = '' + #check if source is ascii only + if source.isascii() == False: + print(red('[E]: Critical syntax: Non ascii chars found on line %d' % lines)) + print(red(source)) + exit(1) + #check if translation is ascii only + if translation.isascii() == False: + print(red('[E]: Critical syntax: Non ascii chars found on line %d' % lines)) + print(red(translation)) + exit(1) # handle backslash sequences source = unescape(source) @@ -232,8 +284,8 @@ def parse_txt(lang, no_warning, warn_empty): print_source_translation(source, translation, wrapped_source, wrapped_translation, rows, cols) - if len(src.readline()) != 1: # empty line + print(red('[E]: Critical Syntax error: Missing empty line between messages between lines: %d and %d' % (lines+3,lines+4))) break lines += 4 print(green("End %s lang-check" % lang)) From 1abd2be96d7aff1bd4a559e73e905edb26894770 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Mon, 10 Jan 2022 09:52:43 +0100 Subject: [PATCH 11/24] Syntax check `lang_en.txt` Display correct line having issues --- lang/lang-check.py | 185 ++++++++++++++++++++++++--------------------- 1 file changed, 98 insertions(+), 87 deletions(-) diff --git a/lang/lang-check.py b/lang/lang-check.py index 06410c01..87f4d67e 100755 --- a/lang/lang-check.py +++ b/lang/lang-check.py @@ -121,10 +121,11 @@ def parse_txt(lang, no_warning, warn_empty): print(green("Start %s lang-check" % lang)) - lines = 1 + lines = 0 with open(file_path) as src: while True: message = src.readline() + lines += 1 #print(message) #Debug #check syntax 1st line starts with `#MSG` if (message[0:4] != '#MSG'): @@ -151,7 +152,7 @@ def parse_txt(lang, no_warning, warn_empty): if cols is None and rows is None: if not no_warning: print(yellow("[W]: No display definition on line %d" % lines)) - cols = len(translation) # propably fullscreen + cols = len(source) # propably fullscreen if rows is None: rows = 1 elif rows > 1 and cols != 20: @@ -159,55 +160,61 @@ def parse_txt(lang, no_warning, warn_empty): #Wrap text to 20 chars and rows source = src.readline()[:-1] #read whole line + lines += 1 #check if 2nd line of origin message beginns and ends with " double quote if (source[0]!="\""): - print(red('[E]: Critical syntax error: Missing " at beginning of message in source on line %d' % lines)) + print(red('[E]: Critical syntax error: Missing " double quotes at beginning of message in source on line %d' % lines)) print(red(source)) exit(1) if (source[-1]=="\""): source = source.strip('"') #remove " double quotes from message else: - print(red('[E]: Critical syntax error: Missing " at end of message in source on line %d' % lines)) + print(red('[E]: Critical syntax error: Missing " double quotes at end of message in source on line %d' % lines)) print(red(source)) exit(1) - #print (source) #Debug - translation = src.readline()[:-1]#read whole line - #check if 3rd line of translation message beginns and ends with " double quote - if (translation[0]!="\""): - print(red('[E]: Critical syntax error: Missing " at beginning of message in translation on line %d' % lines)) - print(red(translation)) - exit(1) - if (translation[-1]=="\""): - #print ("End ok") - translation = translation.strip('"') #remove " double quote from message - else: - print(red('[E]: Critical syntax error: Missing " at end of message in translation on line %d' % lines)) - print(red(translation)) - exit(1) - #print (translation) - if translation == '\\x00': - # crude hack to handle intentionally-empty translations - translation = '' - #check if source is ascii only + #print(source) #Debug + if lang != "en": + translation = src.readline()[:-1]#read whole line + lines += 1 + #check if 3rd line of translation message beginns and ends with " double quote + if (translation[0]!="\""): + print(red('[E]: Critical syntax error: Missing " double quotes at beginning of message in translation on line %d' % lines)) + print(red(translation)) + exit(1) + if (translation[-1]=="\""): + #print ("End ok") + translation = translation.strip('"') #remove " double quote from message + else: + print(red('[E]: Critical syntax error: Missing " double quotes at end of message in translation on line %d' % lines)) + print(red(translation)) + exit(1) + #print(translation) #Debug + if translation == '\\x00': + # crude hack to handle intentionally-empty translations + translation = '' + #check if source is ascii only if source.isascii() == False: print(red('[E]: Critical syntax: Non ascii chars found on line %d' % lines)) print(red(source)) exit(1) #check if translation is ascii only - if translation.isascii() == False: - print(red('[E]: Critical syntax: Non ascii chars found on line %d' % lines)) - print(red(translation)) - exit(1) + if lang != "en": + if translation.isascii() == False: + print(red('[E]: Critical syntax: Non ascii chars found on line %d' % lines)) + print(red(translation)) + exit(1) # handle backslash sequences source = unescape(source) - translation = unescape(translation) + if lang != "en": + translation = unescape(translation) #print (translation) #Debug wrapped_source = wrap_text(source, cols) rows_count_source = len(wrapped_source) - wrapped_translation = wrap_text(translation, cols) - rows_count_translation = len(wrapped_translation) + if lang != "en": + wrapped_translation = wrap_text(translation, cols) + rows_count_translation = len(wrapped_translation) # Check for potential errors in the definition if not no_warning: @@ -224,70 +231,74 @@ def parse_txt(lang, no_warning, warn_empty): print() # Missing translation - if len(translation) == 0 and (warn_empty or rows > 1): - if rows == 1: - print(yellow("[W]: Empty translation for \"%s\" on line %d" % (source, lines))) - else: - print(yellow("[W]: Empty translation on line %d" % lines)) - print_ruler(6, cols); - print_wrapped(wrapped_source, rows, cols) - print() + if lang != "en": + if len(translation) == 0 and (warn_empty or rows > 1): + if rows == 1: + print(yellow("[W]: Empty translation for \"%s\" on line %d" % (source, lines))) + else: + print(yellow("[W]: Empty translation on line %d" % lines)) + print_ruler(6, cols); + print_wrapped(wrapped_source, rows, cols) + print() - # Check for translation lenght - if (rows_count_translation > rows) or (rows == 1 and len(translation) > cols): - print(red('[E]: Text is longer than definition on line %d: cols=%d rows=%d (rows diff=%d)' - % (lines, cols, rows, rows_count_translation-rows))) - print_source_translation(source, translation, - wrapped_source, wrapped_translation, - rows, cols) + # Check for translation lenght + if (rows_count_translation > rows) or (rows == 1 and len(translation) > cols): + print(red('[E]: Text is longer than definition on line %d: cols=%d rows=%d (rows diff=%d)' + % (lines, cols, rows, rows_count_translation-rows))) + print_source_translation(source, translation, + wrapped_source, wrapped_translation, + rows, cols) - # Different count of % sequences - if source.count('%') != translation.count('%') and len(translation) > 0: - print(red('[E]: Unequal count of %% escapes on line %d:' % (lines))) - print_source_translation(source, translation, - wrapped_source, wrapped_translation, - rows, cols) + # Different count of % sequences + if source.count('%') != translation.count('%') and len(translation) > 0: + print(red('[E]: Unequal count of %% escapes on line %d:' % (lines))) + print_source_translation(source, translation, + wrapped_source, wrapped_translation, + rows, cols) - # Different first/last character - if not no_warning and len(source) > 0 and len(translation) > 0: - source_end = source.rstrip()[-1] - translation_end = translation.rstrip()[-1] - start_diff = not (ign_char_first(source[0]) and ign_char_first(translation[0])) and source[0] != translation[0] - end_diff = not (ign_char_last(source_end) and ign_char_last(translation_end)) and source_end != translation_end - if start_diff or end_diff: - if start_diff: - print(yellow('[W]: Differing first punctuation character (%s => %s) on line %d:' % (source[0], translation[0], lines))) - if end_diff: - print(yellow('[W]: Differing last punctuation character (%s => %s) on line %d:' % (source[-1], translation[-1], lines))) - print_source_translation(source, translation, - wrapped_source, wrapped_translation, - rows, cols) + # Different first/last character + if not no_warning and len(source) > 0 and len(translation) > 0: + source_end = source.rstrip()[-1] + translation_end = translation.rstrip()[-1] + start_diff = not (ign_char_first(source[0]) and ign_char_first(translation[0])) and source[0] != translation[0] + end_diff = not (ign_char_last(source_end) and ign_char_last(translation_end)) and source_end != translation_end + if start_diff or end_diff: + if start_diff: + print(yellow('[W]: Differing first punctuation character (%s => %s) on line %d:' % (source[0], translation[0], lines))) + if end_diff: + print(yellow('[W]: Differing last punctuation character (%s => %s) on line %d:' % (source[-1], translation[-1], lines))) + print_source_translation(source, translation, + wrapped_source, wrapped_translation, + rows, cols) - # Short translation - if not no_warning and len(source) > 0 and len(translation) > 0: - if len(translation.rstrip()) < len(source.rstrip()) / 2: - print(yellow('[W]: Short translation on line %d:' % (lines))) - print_source_translation(source, translation, - wrapped_source, wrapped_translation, - rows, cols) + # Short translation + if not no_warning and len(source) > 0 and len(translation) > 0: + if len(translation.rstrip()) < len(source.rstrip()) / 2: + print(yellow('[W]: Short translation on line %d:' % (lines))) + print_source_translation(source, translation, + wrapped_source, wrapped_translation, + rows, cols) - # Incorrect trailing whitespace in translation - if not no_warning and len(translation) > 0 and \ - (source.rstrip() == source or (rows == 1 and len(source) == cols)) and \ - translation.rstrip() != translation and \ - (rows > 1 or len(translation) != len(source)): - print(yellow('[W]: Incorrect trailing whitespace for translation on line %d:' % (lines))) - source = highlight_trailing_white(source) - translation = highlight_trailing_white(translation) - wrapped_translation = highlight_trailing_white(wrapped_translation) - print_source_translation(source, translation, - wrapped_source, wrapped_translation, - rows, cols) - if len(src.readline()) != 1: # empty line - print(red('[E]: Critical Syntax error: Missing empty line between messages between lines: %d and %d' % (lines+3,lines+4))) + # Incorrect trailing whitespace in translation + if not no_warning and len(translation) > 0 and \ + (source.rstrip() == source or (rows == 1 and len(source) == cols)) and \ + translation.rstrip() != translation and \ + (rows > 1 or len(translation) != len(source)): + print(yellow('[W]: Incorrect trailing whitespace for translation on line %d:' % (lines))) + source = highlight_trailing_white(source) + translation = highlight_trailing_white(translation) + wrapped_translation = highlight_trailing_white(wrapped_translation) + print_source_translation(source, translation, + wrapped_source, wrapped_translation, + rows, cols) + delimiter = src.readline() + lines += 1 + if ("" == delimiter): + break + elif len(delimiter) != 1: # empty line + print(red('[E]: Critical Syntax error: Missing empty line between messages between lines: %d and %d' % (lines-1,lines))) break - lines += 4 print(green("End %s lang-check" % lang)) From a7839a6cc6017abaf64e23d3a48eb11153183076 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Mon, 10 Jan 2022 10:34:22 +0100 Subject: [PATCH 12/24] Test Travis with focal Ubuntu20.04 LTS --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 4d9039dc..a64c38e2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,4 @@ -dist: trusty +dist: focal before_install: - sudo apt-get install -y ninja-build # Arduino IDE adds a lot of noise caused by network traffic, trying to firewall it off From 92ec7d3d24ac45e67313fa3d4468790f72a5edfe Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Tue, 11 Jan 2022 13:18:48 +0100 Subject: [PATCH 13/24] Add some documentation WIP --- lang/config.sh | 67 +++++++++++++++++++-------- lang/fw-build.sh | 109 +++++++++++++++++++++++++++----------------- lang/fw-clean.sh | 29 ++++++++---- lang/lang-build.sh | 61 ++++++++++++++++++++++--- lang/lang-clean.sh | 35 +++++++++----- lang/lang-export.sh | 39 ++++++++++++---- lang/lang-import.sh | 41 ++++++++++++++--- lang/progmem.sh | 26 +++++++---- lang/textaddr.sh | 18 ++++++-- lang/update_lang.sh | 35 +++++++++----- 10 files changed, 330 insertions(+), 130 deletions(-) diff --git a/lang/config.sh b/lang/config.sh index 42dbd3af..13faebb2 100755 --- a/lang/config.sh +++ b/lang/config.sh @@ -1,20 +1,43 @@ #!/bin/bash # +# Version 1.0.1 Build 9 +# # config.sh - multi-language support configuration script # Definition of absolute paths etc. # This file is 'included' in all scripts. # +############################################################################# +# Change log: +# 31 May 2018, XPila, Initial +# 17 Dec. 2021, 3d-gussner, Change default Arduino path to by PF-build.sh +# created one +# Prepare to use one config file for all languages +# 11 Jan. 2022, 3d-gussner, Added version and Change log colored output +# Use `git rev-list --count HEAD config.sh` +# to get Build Nr +# Check if variables are set by other scripts +# and use these. More flexible for different build +# scripts +# Check correctly if files or dirs exist +############################################################################# +# # Arduino main folder: if [ -z "$ARDUINO" ]; then export ARDUINO=../../PF-build-env-1.0.6/1.8.5-1.0.4-linux-64 #C:/arduino-1.8.5 fi # # Arduino builder: -export BUILDER=$ARDUINO/arduino-builder +if [ -z "$BUILDER" ]; then + export BUILDER=$ARDUINO/arduino-builder +fi # # AVR gcc tools: -export OBJCOPY=$ARDUINO/hardware/tools/avr/bin/avr-objcopy -export OBJDUMP=$ARDUINO/hardware/tools/avr/bin/avr-objdump +if [ -z "$OBJCOPY" ]; then + export OBJCOPY=$ARDUINO/hardware/tools/avr/bin/avr-objcopy +fi +if [ -z "$OBJDUMP" ]; then + export OBJDUMP=$ARDUINO/hardware/tools/avr/bin/avr-objdump +fi # # Output folder: if [ -z "$OUTDIR" ]; then @@ -22,13 +45,19 @@ if [ -z "$OUTDIR" ]; then fi # # Objects folder: -export OBJDIR="$OUTDIR/sketch" +if [ -z "$OBJDIR" ]; then + export OBJDIR="$OUTDIR/sketch" +fi # # Generated elf file: -export INOELF="$OUTDIR/Firmware.ino.elf" +if [ -z "$INOELF" ]; then + export INOELF="$OUTDIR/Firmware.ino.elf" +fi # # Generated hex file: -export INOHEX="$OUTDIR/Firmware.ino.hex" +if [ -z "$INOHEX" ]; then + export INOHEX="$OUTDIR/Firmware.ino.hex" +fi # # Set default languages if [ -z "$LANGUAGES" ]; then @@ -54,44 +83,44 @@ if [ -z "$COMMUNITY_LANGUAGES" ]; then export COMMUNITY_LANGUAGES="$COMMUNITY_LANGUAGES" fi -echo "config.sh started" >&2 +echo "$(tput setaf 2)config.sh started$(tput sgr0)" >&2 _err=0 echo -n " Arduino main folder: " >&2 -if [ -e $ARDUINO ]; then echo 'OK' >&2; else echo 'NG!' >&2; _err=1; fi +if [ -d $ARDUINO ]; then echo "$(tput setaf 2)OK$(tput sgr0)" >&2; else echo "$(tput setaf 1)NG!$(tput sgr0)" >&2; _err=1; fi echo -n " Arduino builder: " >&2 -if [ -e $BUILDER ]; then echo 'OK' >&2; else echo 'NG!' >&2; _err=2; fi +if [ -e $BUILDER ]; then echo "$(tput setaf 2)OK$(tput sgr0)" >&2; else echo "$(tput setaf 1)NG!$(tput sgr0)" >&2; _err=2; fi echo " AVR gcc tools:" >&2 echo -n " objcopy " >&2 -if [ -e $OBJCOPY ]; then echo 'OK' >&2; else echo 'NG!' >&2; _err=3; fi +if [ -e $OBJCOPY ]; then echo "$(tput setaf 2)OK$(tput sgr0)" >&2; else echo "$(tput setaf 1)NG!$(tput sgr0)" >&2; _err=3; fi echo -n " objdump " >&2 -if [ -e $OBJDUMP ]; then echo 'OK' >&2; else echo 'NG!' >&2; _err=4; fi +if [ -e $OBJDUMP ]; then echo "$(tput setaf 2)OK$(tput sgr0)" >&2; else echo "$(tput setaf 1)NG!$(tput sgr0)" >&2; _err=4; fi echo -n " Output folder: " >&2 -if [ -e $OUTDIR ]; then echo 'OK' >&2; else echo 'NG!' >&2; _err=5; fi +if [ -d $OUTDIR ]; then echo "$(tput setaf 2)OK$(tput sgr0)" >&2; else echo "$(tput setaf 1)NG!$(tput sgr0)" >&2; _err=5; fi echo -n " Objects folder: " >&2 -if [ -e $OBJDIR ]; then echo 'OK' >&2; else echo 'NG!' >&2; _err=6; fi +if [ -d $OBJDIR ]; then echo "$(tput setaf 2)OK$(tput sgr0)" >&2; else echo "$(tput setaf 1)NG!$(tput sgr0)" >&2; _err=6; fi echo -n " Generated elf file: " >&2 -if [ -e $INOELF ]; then echo 'OK' >&2; else echo 'NG!' >&2; _err=7; fi +if [ -e $INOELF ]; then echo "$(tput setaf 2)OK$(tput sgr0)" >&2; else echo "$(tput setaf 1)NG!$(tput sgr0)" >&2; _err=7; fi echo -n " Generated hex file: " >&2 -if [ -e $INOHEX ]; then echo 'OK' >&2; else echo 'NG!' >&2; _err=8; fi +if [ -e $INOHEX ]; then echo "$(tput setaf 2)OK$(tput sgr0)" >&2; else echo "$(tput setaf 1)NG!$(tput sgr0)" >&2; _err=8; fi echo -n " Languages: " >&2 -echo "$LANGUAGES" >&2 +echo "$(tput setaf 2)$LANGUAGES$(tput sgr0)" >&2 echo -n " Community languages: " >&2 -echo "$COMMUNITY_LANGUAGES" >&2 +echo "$(tput setaf 2)$COMMUNITY_LANGUAGES$(tput sgr0)" >&2 if [ $_err -eq 0 ]; then - echo "config.sh finished with success" >&2 + echo "$(tput setaf 2)config.sh finished with success$(tput sgr0)" >&2 export CONFIG_OK=1 else - echo "config.sh finished with errors!" >&2 + echo "$(tput setaf 1)config.sh finished with errors!$(tput sgr0)" >&2 export CONFIG_OK=0 fi diff --git a/lang/fw-build.sh b/lang/fw-build.sh index 0813017c..d52b7469 100755 --- a/lang/fw-build.sh +++ b/lang/fw-build.sh @@ -1,5 +1,7 @@ #!/bin/bash # +# Version 1.0.2 Build 12 +# # postbuild.sh - multi-language support script # Generate binary with secondary language. # @@ -17,17 +19,32 @@ # $PROGMEM.txt # textaddr.txt # +############################################################################# +# Change log: +# 31 May 2018, XPila, Initial +# 17 Dec. 2021, 3d-gussner, Use one config file for all languages +# 11 Jan. 2022, 3d-gussner, Add check for not translated messages using a +# parameter +# Added version and Change log +# colored output +# Add Community language support +# Use `git rev-list --count HEAD fw-build.sh` +# to get Build Nr +############################################################################# # # Config: if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi -if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo 'Config NG!' >&2; exit 1; fi +if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo "$(tput setaf 1)Config NG!$(tput sgr0)" >&2; exit 1; fi # # Selected language: LNG=$1 -#if [ -z "$LNG" ]; then LNG='cz'; fi -# -# Params: -IGNORE_MISSING_TEXT=1 + +#Set default to ignore missing text +CHECK_MISSING_TEXT=0 +#Check if script should check for missing messages in the source code aren't translated by using parameter "--check-missing-text" +if [ "$1" = "--check-missing-text" ]; then + CHECK_MISSING_TEXT=1 +fi # List of supported languages if [ -z "$LANGUAGES" ]; then @@ -38,15 +55,16 @@ fi if [ ! -z "$COMMUNITY_LANGUAGES" ]; then LANGUAGES+=" $COMMUNITY_LANGUAGES" fi -echo "fw-build languages:$LANGUAGES" >&2 +echo "$(tput setaf 2)fw-build.sh started$(tput sgr 0)" >&2 +echo "fw-build languages:$(tput setaf 2)$LANGUAGES$(tput sgr 0)" >&2 finish() { echo if [ "$1" = "0" ]; then - echo "postbuild.sh finished with success" >&2 + echo "$(tput setaf 2)fw-build.sh finished with success$(tput sgr 0)" >&2 else - echo "postbuild.sh finished with errors!" >&2 + echo "$(tput setaf 1)fw-build.sh finished with errors!$(tput sgr 0)" >&2 fi case "$-" in *i*) echo "press enter key"; read ;; @@ -54,48 +72,48 @@ finish() exit $1 } -echo "postbuild.sh started" >&2 - #check input files echo " checking files:" >&2 -if [ ! -e $OUTDIR ]; then echo " folder '$OUTDIR' not found!" >&2; finish 1; fi -echo " folder OK" >&2 -if [ ! -e $INOELF ]; then echo " elf file '$INOELF' not found!" >&2; finish 1; fi -echo " elf OK" >&2 -if ! ls $OBJDIR/*.o >/dev/null 2>&1; then echo " no object files in '$OBJDIR/'!" >&2; finish 1; fi -echo " objects OK" >&2 +if [ ! -e $OUTDIR ]; then echo "$(tput setaf 1) folder '$OUTDIR' not found!$(tput sgr 0)" >&2; finish 1; fi +echo "$(tput setaf 2) folder OK$(tput sgr 0)" >&2 +if [ ! -e $INOELF ]; then echo "$(tput setaf 1) elf file '$INOELF' not found!$(tput sgr 0)" >&2; finish 1; fi +echo "$(tput setaf 2) elf OK$(tput sgr 0)" >&2 +if ! ls $OBJDIR/*.o >/dev/null 2>&1; then echo "$(tput setaf 1) no object files in '$OBJDIR/'!$(tput sgr 0)" >&2; finish 1; fi +echo "$(tput setaf 2) objects OK$(tput sgr 0)" >&2 #run progmem.sh - examine content of progmem1 echo -n " running progmem.sh..." >&2 ./progmem.sh 1 2>progmem.out -if [ $? -ne 0 ]; then echo "NG! - check progmem.out file" >&2; finish 1; fi -echo "OK" >&2 +if [ $? -ne 0 ]; then echo "$(tput setaf 1)NG! - check progmem.out file$(tput sgr 0)" >&2; finish 1; fi +echo "$(tput setaf 2)OK$(tput sgr 0)" >&2 #run textaddr.sh - map progmem addreses to text identifiers echo -n " running textaddr.sh..." >&2 ./textaddr.sh 2>textaddr.out -if [ $? -ne 0 ]; then echo "NG! - check progmem.out file" >&2; finish 1; fi -echo "OK" >&2 +if [ $? -ne 0 ]; then echo "$(tput setaf 1)NG! - check progmem.out file$(tput sgr 0)" >&2; finish 1; fi +echo "$(tput setaf 2)OK$(tput sgr 0)" >&2 #check for messages declared in progmem1, but not found in lang_en.txt echo -n " checking textaddr.txt..." >&2 cat textaddr.txt | grep "^TEXT NF" | sed "s/[^\"]*\"//;s/\"$//" >not_used.txt cat textaddr.txt | grep "^ADDR NF" | sed "s/[^\"]*\"//;s/\"$//" >not_tran.txt if cat textaddr.txt | grep "^ADDR NF" >/dev/null; then - echo "NG! - some texts not found in lang_en.txt!" - if [ $IGNORE_MISSING_TEXT -eq 0 ]; then + echo "$(tput setaf 1)NG! - some texts not found in lang_en.txt!$(tput sgr 0)" + if [ $CHECK_MISSING_TEXT -eq 1 ]; then + echo "$(tput setaf 1)Missing text found, please update the language files!$(tput setaf 6)" >&2 + cat not_tran.txt >&2 finish 1 else - echo " missing text ignored!" >&2 + echo "$(tput setaf 3) missing text ignored!$(tput sgr 0)" >&2 fi else - echo "OK" >&2 + echo "$(tput setaf 2)OK$(tput sgr 0)" >&2 fi #extract binary file echo -n " extracting binary..." >&2 $OBJCOPY -I ihex -O binary $INOHEX ./firmware.bin -echo "OK" >&2 +echo "$(tput setaf 2)OK$(tput sgr 0)" >&2 #update binary file echo " updating binary:" >&2 @@ -107,14 +125,14 @@ cat textaddr.txt | grep "^ADDR OK" | cut -f3- -d' ' | sed "s/^0000/0x/" |\ while read addr data; do /bin/echo -n -e $data | dd of=./firmware.bin bs=1 count=2 seek=$addr conv=notrunc oflag=nonblock 2>/dev/null done -echo "OK" >&2 +echo "$(tput setaf 2)OK$(tput sgr 0)" >&2 #update primary language signature in binary file echo -n " primary language signature..." >&2 if [ -e lang_en.bin ]; then #find symbol _PRI_LANG_SIGNATURE in section '.text' pri_lang=$(cat text.sym | grep -E "\b_PRI_LANG_SIGNATURE\b") - if [ -z "$pri_lang" ]; then echo "NG!\n symbol _PRI_LANG_SIGNATURE not found!" >&2; finish 1; fi + if [ -z "$pri_lang" ]; then echo "$(tput setaf 1)NG!\n symbol _PRI_LANG_SIGNATURE not found!$(tput sgr 0)" >&2; finish 1; fi #get pri_lang address pri_lang_addr='0x'$(echo $pri_lang | cut -f1 -d' ') #read header from primary language binary file @@ -123,31 +141,32 @@ if [ -e lang_en.bin ]; then chscnt=$(echo $header | cut -c18-29 | sed "s/ /\\\\x/g") /bin/echo -e -n "$chscnt" |\ dd of=firmware.bin bs=1 count=4 seek=$(($pri_lang_addr)) conv=notrunc 2>/dev/null - echo "OK" >&2 + echo "$(tput setaf 2)OK$(tput sgr 0)" >&2 else - echo "NG! - file lang_en.bin not found!" >&2; + echo "$(tput setaf 1)NG! - file lang_en.bin not found!$(tput sgr 0)" >&2; finish 1 fi #convert bin to hex -echo -n " converting to hex..." >&2 +echo -n " converting primary to hex..." >&2 $OBJCOPY -I binary -O ihex ./firmware.bin ./firmware.hex -echo "OK" >&2 +echo "$(tput setaf 2)OK$(tput sgr 0)" >&2 #update _SEC_LANG in binary file if language is selected -echo -n " secondary language data..." >&2 +echo -n " secondary language data..." >&2 if [ ! -z "$LNG" ]; then ./update_lang.sh $LNG 2>./update_lang.out - if [ $? -ne 0 ]; then echo "NG! - check update_lang.out file" >&2; finish 1; fi - echo "OK" >&2 + if [ $? -ne 0 ]; then echo "$(tput setaf 1)NG! - check update_lang.out file$(tput sgr 0)" >&2; finish 1; fi + echo "$(tput setaf 2)OK$(tput sgr 0)" >&2 finish 0 else - echo "Updating languages:" >&2 + echo >&2 + echo " Updating languages:" >&2 for lang in $LANGUAGES; do if [ -e lang_$lang.bin ]; then - echo -n " $lang : " >&2 + echo -n " $lang : " >&2 ./update_lang.sh $lang 2>./update_lang_$lang.out 1>/dev/null - if [ $? -eq 0 ]; then echo 'OK' >&2; else echo 'NG!' >&2; finish 1; fi + if [ $? -eq 0 ]; then echo "$(tput setaf 2)OK$(tput sgr 0)" >&2; else echo "$(tput setaf 1)NG!$(tput sgr 0)" >&2; finish 1; fi fi done fi @@ -166,17 +185,23 @@ lang_size_pad=$(( ($lang_size+4096-1) / 4096 * 4096 )) # TODO: hard-coded! get value by preprocessing LANG_SIZE from xflash_layout.h! lang_reserved=249856 -echo " total size usage: $lang_size_pad ($lang_size)" -echo " reserved size: $lang_reserved" +echo -n " total size usage: " >&2 if [ $lang_size_pad -gt $lang_reserved ]; then - echo "NG! - language data too large" >&2 + echo -n "$(tput setaf 1)" >&2 +else + echo -n "$(tput setaf 2)" >&2 +fi +echo "$lang_size_pad ($lang_size)$(tput sgr 0)" >&2 +echo " reserved size: $(tput setaf 2)$lang_reserved$(tput sgr 0)" >&2 +if [ $lang_size_pad -gt $lang_reserved ]; then + echo "$(tput setaf 1)NG! - language data too large$(tput sgr 0)" >&2 finish 1 fi #convert lang.bin to lang.hex -echo -n " converting to hex..." >&2 +echo -n " converting multi language to hex..." >&2 $OBJCOPY -I binary -O ihex ./lang.bin ./lang.hex -echo "OK" >&2 +echo "$(tput setaf 2)OK$(tput sgr 0)" >&2 #append languages to hex file cat ./lang.hex >> firmware.hex diff --git a/lang/fw-clean.sh b/lang/fw-clean.sh index 2c6e73dc..87172cf3 100755 --- a/lang/fw-clean.sh +++ b/lang/fw-clean.sh @@ -1,34 +1,44 @@ #!/bin/bash # +# Version 1.0.1 Build 10 +# # fw-clean.sh - multi-language support script # Remove all firmware output files from lang folder. # - +############################################################################# +# Change log: +# 21 June 2018, XPila, Initial +# 17 Dec. 2021, 3d-gussner, Use one config file for all languages +# 11 Jan. 2022, 3d-gussner, Added version and Change log +# colored output +# Use `git rev-list --count HEAD fw-clean.sh` +# to get Build Nr +############################################################################# # Config: if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi -if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo 'Config NG!' >&2; exit 1; fi +if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo "$(tput setaf 1)Config NG!$(tput sgr0)" >&2; exit 1; fi if [ ! -z "$COMMUNITY_LANGUAGES" ]; then LANGUAGES+=" $COMMUNITY_LANGUAGES" fi -echo "fw-clean languages:$LANGUAGES" >&2 +echo "$(tput setaf 2)fw-clean.sh started$(tput sgr0)" >&2 +echo "fw-clean languages:$(tput setaf 2)$LANGUAGES$(tput sgr0)" >&2 result=0 rm_if_exists() { if [ -e $1 ]; then - echo -n " removing '$1'..." >&2 + echo -n "$(tput sgr0) removing $(tput sgr0) '$1'..." >&2 if rm $1; then - echo "OK" >&2 + echo "$(tput setaf 2)OK$(tput sgr0)" >&2 else - echo "NG!" >&2 + echo "$(tput setaf 1)NG!$(tput sgr0)" >&2 result=1 fi fi } -echo "fw-clean.sh started" >&2 rm_if_exists text.sym rm_if_exists progmem1.sym @@ -52,11 +62,10 @@ for lang in $LANGUAGES; do rm_if_exists update_lang_$lang.out done -echo -n "fw-clean.sh finished" >&2 if [ $result -eq 0 ]; then - echo " with success" >&2 + echo "$(tput setaf 2)fw-clean.sh finished with success$(tput sgr0)" >&2 else - echo " with errors!" >&2 + echo "$(tput setaf 1)fw-clean.sh finished with errors!$(tput sgr0)" >&2 fi case "$-" in diff --git a/lang/lang-build.sh b/lang/lang-build.sh index 80102a1c..8a612bd1 100755 --- a/lang/lang-build.sh +++ b/lang/lang-build.sh @@ -1,5 +1,7 @@ #!/bin/bash # +# Version 1.0.2 Build 24 +# # lang-build.sh - multi-language support script # generate lang_xx.bin (language binary file) # @@ -9,21 +11,39 @@ # Output files: # lang_xx.bin # +# Depending on files: +# ../Firmware/config.h to read the max allowed size for translations +# # Temporary files: +# lang_en.cnt //calculated number of messages in english +# lang_en.max //maximum size determined by reading "../Firmware/config.h" # lang_xx.tmp # lang_xx.dat # +############################################################################# +# Change log: +# 18 June 2018, XPila, Initial +# 17 Dec. 2021, 3d-gussner, Use one config file for all languages +# 11 Jan. 2022, 3d-gussner, Add message and size count comparison +# Added version and Change log +# colored output +# Add Community language support +# Use `git rev-list --count HEAD lang-build.sh` +# to get Build Nr +############################################################################# +# # Config: -#startup message -echo "lang-build.sh started" >&2 if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi -if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo 'Config NG!' >&2; exit 1; fi +if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo "$(tput setaf 1)Config NG!$(tput sgr 0)" >&2; exit 1; fi if [ ! -z "$COMMUNITY_LANGUAGES" ]; then LANGUAGES+=" $COMMUNITY_LANGUAGES" fi -echo "lang-build languages:$LANGUAGES" >&2 + +#startup message +echo "$(tput setaf 2)lang-build.sh started$(tput sgr 0)" >&2 +echo "lang-build languages:$(tput setaf 2)$LANGUAGES$(tput sgr 0)" >&2 #awk code to format ui16 variables for dd awk_ui16='{ h=int($1/256); printf("\\x%02x\\x%02x\n", int($1-256*h), h); }' @@ -33,9 +53,9 @@ awk_ui16='{ h=int($1/256); printf("\\x%02x\\x%02x\n", int($1-256*h), h); }' finish() { if [ $1 -eq 0 ]; then - echo "lang-build.sh finished with success" >&2 + echo "$(tput setaf 2)lang-build.sh finished with success$(tput sgr 0)" >&2 else - echo "lang-build.sh finished with errors!" >&2 + echo "$(tput setaf 1)lang-build.sh finished with errors!$(tput sgr 0)" >&2 fi exit $1 } @@ -106,7 +126,7 @@ write_header() generate_binary() # $1 - language code ('en', 'cz'...) { - echo "lang="$1 >&2 + echo "lang=$(tput setaf 2)$1$(tput sgr 0)" >&2 #remove output and temporary files rm -f lang_$1.bin rm -f lang_$1.tmp @@ -118,6 +138,16 @@ generate_binary() if [ "$1" = "en" ]; then #remove comments and empty lines cat lang_en.txt | sed '/^$/d;/^#/d' + #calculate number of strings + count=$(grep -c '^"' lang_en.txt) + echo "count="$count >&2 + #Calculate the number of strings and save to temporary file + echo $count >lang_en.cnt + #read the allowed maxsize from "../Firmware/config.h" and save to temporary file + maxsize=$(($(grep "#define LANG_SIZE_RESERVED" ../Firmware/config.h|sed -e's/ */ /g' |cut -d ' ' -f3))) + + echo "maxsize="$maxsize >&2 + echo $maxsize >lang_en.max else #remove comments and empty lines, print lines with translated text only cat lang_en_$1.txt | sed '/^$/d;/^#/d' | sed -n 'n;p' @@ -128,12 +158,29 @@ generate_binary() #calculate number of strings count=$(grep -c '^"' lang_$1.tmp) echo "count="$count >&2 + # read string count of English and compare it with the translation + encount=$(cat lang_en.cnt) + if [ "$count" -eq "$encount" ]; then + echo "$(tput setaf 2)OK:"$1"="$count"$(tput sgr 0) is equal to $(tput setaf 2)en="$encount"$(tput sgr 0)" >&2 + else + echo "$(tput setaf 1)Error:"$1"="$count"$(tput sgr 0) is NOT equal to $(tput setaf 1)en="$encount"$(tput sgr 0)" >&2 + finish 1 + fi #calculate text data offset offs=$((16 + 2 * $count)) echo "offs="$offs >&2 #calculate text data size size=$(($offs + $(wc -c lang_$1.dat | cut -f1 -d' '))) echo "size="$size >&2 + # read maxsize and compare with the translation + maxsize=$(cat lang_en.max) + if [ "$size" -lt "$maxsize" ]; then + free_space=$(($maxsize - $size)) + echo "$(tput setaf 2)OK:"$1"="$size"$(tput sgr 0) is less than $(tput setaf 2)"$maxsize"$(tput sgr 0). Free space:$(tput setaf 2)"$free_space"$(tput sgr 0)" >&2 + else + echo "$(tput setaf 1)Error:"$1"="$size"$(tput sgr 0) is higer than $(tput setaf 3)"$maxsize"$(tput sgr 0)" >&2 + finish 1 + fi #write header with empty signature and checksum write_header $1 $size $count 0x0000 0x00000000 #write offset table diff --git a/lang/lang-clean.sh b/lang/lang-clean.sh index c64b8d52..37008c65 100755 --- a/lang/lang-clean.sh +++ b/lang/lang-clean.sh @@ -1,13 +1,25 @@ #!/bin/bash # +# Version 1.0.1 Build 9 +# # clean.sh - multi-language support script # Remove all language output files from lang folder. # - +############################################################################# +# Change log: +# 1 Nov. 2018, XPila, Initial +# 17 Dec. 2021, 3d-gussner, Use one config file for all languages +# 11 Jan. 2022, 3d-gussner, Also remove temporally files which have been +# generated for message and size count comparison +# Added version and Change log +# colored output +# Add Community language support +# Use `git rev-list --count HEAD lang-clean.sh` +# to get Build Nr +############################################################################# # Config: -echo "CONFIG: $CONFIG_OK" if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi -if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo 'Config NG!' >&2; exit 1; fi +if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo "$(tput setaf 1)Config NG!$(tput sgr0)" >&2; exit 1; fi if [ ! -z "$COMMUNITY_LANGUAGES" ]; then LANGUAGES+=" $COMMUNITY_LANGUAGES" @@ -18,11 +30,11 @@ result=0 rm_if_exists() { if [ -e $1 ]; then - echo -n " removing '$1'..." >&2 + echo -n "$(tput sgr0) removing $(tput setaf 3)'$1'$(tput sgr0)..." >&2 if rm $1; then - echo "OK" >&2 + echo "$(tput setaf 2)OK$(tput sgr0)" >&2 else - echo "NG!" >&2 + echo "$(tput setaf 1)NG!$(tput sgr0)" >&2 result=1 fi fi @@ -32,6 +44,8 @@ clean_lang() { if [ "$1" = "en" ]; then rm_if_exists lang_$1.tmp + rm_if_exists lang_$1.cnt + rm_if_exists lang_$1.max else rm_if_exists lang_$1.tmp rm_if_exists lang_en_$1.tmp @@ -46,21 +60,20 @@ clean_lang() rm_if_exists lang_$1_2.tmp } +echo "$(tput setaf 2)lang-clean.sh started$(tput sgr0)" >&2 #Clean English clean_lang en #Clean languages -echo "lang-clean.sh started" >&2 -echo "lang-clean languages:$LANGUAGES" >&2 +echo "lang-clean languages:$(tput setaf 2)$LANGUAGES$(tput sgr0)" >&2 for lang in $LANGUAGES; do clean_lang $lang done -echo -n "lang-clean.sh finished" >&2 if [ $result -eq 0 ]; then - echo " with success" >&2 + echo "$(tput setaf 2) lang-clean.sh with success$(tput sgr0)" >&2 else - echo " with errors!" >&2 + echo "$(tput setaf 1) lang-clean.sh with errors!$(tput sgr0)" >&2 fi case "$-" in diff --git a/lang/lang-export.sh b/lang/lang-export.sh index 940eff53..3cec10ab 100755 --- a/lang/lang-export.sh +++ b/lang/lang-export.sh @@ -1,16 +1,37 @@ #!/bin/bash # +# Version 1.0.1 Build 17 +# # lang-export.sh - multi-language support script # for generating lang_xx.po # +############################################################################# +# Change log: +# 9 Nov 2018, XPila, Initial +# 14 Sep. 2019, 3d-gussner, Prepare adding new language +# 1 Mar. 2019, 3d-gussner, Move `Dutch` language parts +# Add templates for future community languages +# 17 Dec. 2021, 3d-gussner, Use one config file for all languages +# Fix missing last translation +# 21 Dec. 2021, 3d-gussner, Add Swedish, Danish, Slovanian, Hungarian, +# Luxembourgish, Croatian +# 3 Jan. 2022, 3d-gussner, Add Lithuanian +# 11 Jan. 2022, 3d-gussner, Added version and Change log +# colored output +# Add Community language support +# Use `git rev-list --count HEAD lang-export.sh` +# to get Build Nr +############################################################################# # Config: if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi -if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo 'Config NG!' >&2; exit 1; fi +if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo "$(tput setaf 1)Config NG!$(tput sgr 0)" >&2; exit 1; fi + +echo "$(tput setaf 2)lang-export.sh started$(tput sgr 0)" >&2 if [ ! -z "$COMMUNITY_LANGUAGES" ]; then LANGUAGES+=" $COMMUNITY_LANGUAGES" fi -echo "lang-export languages:$LANGUAGES" >&2 +echo "$(tput setaf 2)lang-export languages:$LANGUAGES$(tput sgr 0)" >&2 # relative path to source folder SRCDIR="../Firmware" @@ -78,7 +99,7 @@ else esac) # unknown language - error if [ -z "LNGNAME" ]; then - echo "Invalid argument '$LNG'." + echo "Invalid argument $(tput setaf 1)'$LNG'$(tput sgr 0).">&2 exit 1 fi INFILE=lang_en_$LNG.txt @@ -88,18 +109,16 @@ fi # remove output file if exists if [ -e $OUTFILE ]; then rm -f -v $OUTFILE; fi -echo "lang-export.sh started" - #total strings CNTTXT=$(grep '^#' -c $INFILE) #not translated strings CNTNT=$(grep '^\"\\x00\"' -c $INFILE) -echo " $CNTTXT texts, $CNTNT not translated" +echo " $(tput setaf 2)$CNTTXT$(tput sgr 0) texts, $(tput setaf 3)$CNTNT$(tput sgr 0) not translated" >&2 # list .cpp, .c and .h files from source folder SRCFILES=$(ls "$SRCDIR"/*.cpp "$SRCDIR"/*.c "$SRCDIR"/*.h) -echo " selected language=$LNGNAME" +echo " selected language=$(tput setaf 2)$LNGNAME$(tput sgr 0)" >&2 # write po/pot header ( @@ -138,7 +157,7 @@ num=1 #end debug if [ "${s:0:1}" = "\"" ]; then if [[ "${s0:0:1}" = "\"" || "$LNG" = "en" ]]; then - echo " processing $num of $CNTTXT" >&2 + echo -ne " processing $num of $CNTTXT\033[0K\r" >&2 # write po/pot item ( if [ "$LNG" = "en" ]; then s1=$s0; s0=$s; fi @@ -166,6 +185,6 @@ done >>$OUTFILE) 2>&1 #replace LF with CRLF sync sed -i 's/$/\r/' $OUTFILE - -echo "lang-export.sh finished" +echo >&2 +echo "$(tput setaf 2)lang-export.sh finished$(tput sgr 0)">&2 exit 0 diff --git a/lang/lang-import.sh b/lang/lang-import.sh index c1e6bb19..07f78e56 100755 --- a/lang/lang-import.sh +++ b/lang/lang-import.sh @@ -1,15 +1,39 @@ #!/bin/bash # +# Version 1.0.1 Build 23 +# # lang-import.sh - multi-language support script # for importing translated xx.po +# +############################################################################# +# Change log: +# 9 Nov 2018, XPila, Initial +# 14 Sep. 2019, 3d-gussner, Prepare adding new language +# 1 Mar. 2019, 3d-gussner, Move `Dutch` language parts +# Add templates for future community languages +# 17 Dec. 2021, 3d-gussner, Use one config file for all languages +# Fix missing last translation +# Add counter +# replace two double quotes with `\x00` +# 21 Dec. 2021, 3d-gussner, Add Swedish, Danish, Slovanian, Hungarian, +# Luxembourgish, Croatian +# 3 Jan. 2022, 3d-gussner, Add Lithuanian +# 11 Jan. 2022, 3d-gussner, Added version and Change log +# colored output +# Add Community language support +# Use `git rev-list --count HEAD lang-export.sh` +# to get Build Nr +############################################################################# # Config: if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi -if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo 'Config NG!' >&2; exit 1; fi +if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo "$(tput setaf 1)Config NG!$(tput sgr 0)" >&2; exit 1; fi + +echo "$(tput setaf 2)lang-import.sh started$(tput sgr 0)" >&2 if [ ! -z "$COMMUNITY_LANGUAGES" ]; then LANGUAGES+=" $COMMUNITY_LANGUAGES" fi -echo "lang-import languages:$LANGUAGES" >&2 +echo "$(tput setaf 2)lang-import languages:$LANGUAGES$(tput sgr 0)" >&2 LNG=$1 # if no arguments, 'all' is selected (all po and also pot will be generated) @@ -33,7 +57,7 @@ cd po/new # check if input file exists if ! [ -e $LNGISO.po ]; then - echo "Input file $LNGISO.po not found!" >&2 + echo "$(tput setaf 1)Input file $LNGISO.po not found!$(tput sgr 0)" >&2 exit -1 fi @@ -249,7 +273,7 @@ cat $LNG'_filtered.po' | sed ':a;N;$!ba;s/\x22\n\x22//g' > $LNG'_new.po' CNTTXT=$(grep '^# MSG' -c $LNGISO.po) num=1 -echo " selected language=$LNGISO" >&2 +echo " selected language=$(tput setaf 2)$LNGISO$(tput sgr 0)" >&2 #generate new dictionary cat ../../lang_en.txt | sed 's/\\/\\\\/g' | while read -r s; do /bin/echo -e "$s" @@ -260,11 +284,11 @@ cat ../../lang_en.txt | sed 's/\\/\\\\/g' | while read -r s; do s=$(/bin/echo -e "$s") s2=$(grep -F -A1 -B0 "msgid $s" "$LNG"_new.po | tail -n1 | sed 's/^msgstr //') if [ -z "$s2" ]; then - echo " processing $num of $CNTTXT" >&2 + echo -ne " processing $num of $CNTTXT\033[0K\r" >&2 echo '"\x00"' num=$((num+1)) else - echo " processing $num of $CNTTXT" >&2 + echo -ne " processing $num of $CNTTXT\033[0K\r" >&2 echo "$s2" num=$((num+1)) fi @@ -272,8 +296,11 @@ cat ../../lang_en.txt | sed 's/\\/\\\\/g' | while read -r s; do fi done > lang_en_$LNG.txt -echo "Finished with $LNGISO" >&2 +echo >&2 +echo "$(tput setaf 2)Finished with $LNGISO$(tput sgr 0)" >&2 #replace two double quotes to "\x00" sed -i 's/""/"\\x00"/g' lang_en_$LNG.txt #remove CR sed -i "s/\r//g" lang_en_$LNG.txt +echo >&2 +echo "$(tput setaf 2)lang-import.sh finished$(tput sgr 0)">&2 \ No newline at end of file diff --git a/lang/progmem.sh b/lang/progmem.sh index 53993b28..f893b473 100755 --- a/lang/progmem.sh +++ b/lang/progmem.sh @@ -1,5 +1,7 @@ #!/bin/bash # +# Version 1.0.1 Build 12 +# # progmem.sh - multi-language support script # Examine content of progmem sections (default is progmem1). # @@ -16,14 +18,22 @@ # $PROGMEM.var - variables - strings # $PROGMEM.txt - text data only (not used) # +############################################################################# +# Change log: +# 31 May 2018, XPila, Initial +# 9 June 2020, 3d-gussner, Added version and Change log +# 9 June 2020, 3d-gussner, colored output +# 2 Apr. 2021, 3d-gussner, Use `git rev-list --count HEAD progmem.sh` +# to get Build Nr +############################################################################# # # Config: if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi -if [ -z "$OUTDIR" ]; then echo 'variable OUTDIR not set!' >&2; exit 1; fi -if [ -z "$OBJDIR" ]; then echo 'variable OBJDIR not set!' >&2; exit 1; fi -if [ -z "$INOELF" ]; then echo 'variable INOELF not set!' >&2; exit 1; fi -if [ -z "$OBJDUMP" ]; then echo 'variable OBJDUMP not set!' >&2; exit 1; fi -if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo 'Config NG!' >&2; exit 1; fi +if [ -z "$OUTDIR" ]; then echo "$(tput setaf 1)variable OUTDIR not set!$(tput sgr0)" >&2; exit 1; fi +if [ -z "$OBJDIR" ]; then echo "$(tput setaf 1)variable OBJDIR not set!$(tput sgr0)" >&2; exit 1; fi +if [ -z "$INOELF" ]; then echo "$(tput setaf 1)variable INOELF not set!$(tput sgr0)" >&2; exit 1; fi +if [ -z "$OBJDUMP" ]; then echo "$(tput setaf 1)variable OBJDUMP not set!$(tput sgr0)" >&2; exit 1; fi +if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo "$(tput setaf 1)Config NG!$(tput sgr0)" >&2; exit 1; fi # # Program memory used PROGMEM=progmem$1 @@ -39,11 +49,11 @@ if [ -z "$1" ]; then PROGMEM=progmem1; fi # 6. perform character check and conversion (output to $PROGMEM.var and $PROGMEM.txt) # -echo "progmem.sh started" >&2 +echo "$(tput setaf 2)progmem.sh started$(tput sgr0)" >&2 # (0) echo " progmem.sh (0) - checking input files" >&2 -if [ ! -e $OUTDIR ]; then echo "progmem.sh - file '$INOELF' not found!" >&2; exit 1; fi +if [ ! -e $OUTDIR ]; then echo "progmem.sh - file $(tput setaf 2)"$INOELF"$(tput sgr 0) not found!" >&2; exit 1; fi # (1) echo " progmem.sh (1) - removing output files" >&2 @@ -111,6 +121,6 @@ cat $PROGMEM.chr | \ #this step can be omitted because .txt file is not used cat $PROGMEM.var | sed 's/\r/\n/g' | sed -E 's/^[0-9a-f]{8} [^ ]* //' >$PROGMEM.txt -echo "progmem.sh finished" >&2 +echo "$(tput setaf 2)progmem.sh finished$(tput sgr0)" >&2 exit 0 \ No newline at end of file diff --git a/lang/textaddr.sh b/lang/textaddr.sh index 3645a7f0..c948f1a9 100755 --- a/lang/textaddr.sh +++ b/lang/textaddr.sh @@ -1,5 +1,7 @@ #!/bin/sh # +# Version 1.0.1 Build 7 +# # textaddr.sh - multi-language support script # Compile progmem1.var and lang_en.txt files to textaddr.txt file (mapping of progmem addreses to text idenifiers) # @@ -19,11 +21,19 @@ # after sort this will generate pairs of lines (line from progmem1 first) # result of sort is compiled with simple script and stored into file textaddr.txt # +############################################################################# +# Change log: +# 30 May 2018, XPila, Initial +# 9 June 2020, 3d-gussner, Added version and Change log +# 9 June 2020, 3d-gussner, colored output +# 2 Apr. 2021, 3d-gussner, Use `git rev-list --count HEAD textaddr.sh` +# to get Build Nr +############################################################################# -echo "textaddr.sh started" >&2 +echo "$(tput setaf 2)textaddr.sh started$(tput sgr0)" >&2 -if [ ! -e progmem1.var ]; then echo 'textaddr.sh - file progmem1.var not found!' >&2; exit 1; fi -if [ ! -e lang_en.txt ]; then echo 'textaddr.sh - file lang_en.txt not found!' >&2; exit 1; fi +if [ ! -e progmem1.var ]; then echo "$(tput setaf 1)textaddr.sh - file progmem1.var not found!$(tput sgr0)" >&2; exit 1; fi +if [ ! -e lang_en.txt ]; then echo "$(tput setaf 1)textaddr.sh - file lang_en.txt not found!$(tput sgr0)" >&2; exit 1; fi addr='' text='' (cat progmem1.var | sed -E "s/^([^ ]*) ([^ ]*) (.*)/\1 \"\3\"/";\ @@ -63,6 +73,6 @@ text='' fi done > textaddr.txt -echo "textaddr.sh finished" >&2 +echo "$(tput setaf 2)textaddr.sh finished$(tput sgr0)" >&2 exit 0 \ No newline at end of file diff --git a/lang/update_lang.sh b/lang/update_lang.sh index cc660463..04ddc16d 100755 --- a/lang/update_lang.sh +++ b/lang/update_lang.sh @@ -1,12 +1,23 @@ #!/bin/sh # +# Version 1.0.1 Build 10 +# # update_lang.sh - multi-language support script # Update secondary language in binary file. # +############################################################################# +# Change log: +# 17 June 2018, XPila, Initial +# 9 June 2020, 3d-gussner, Added version and Change log +# 9 June 2020, 3d-gussner, colored output +# 2 Apr. 2021, 3d-gussner, Use `git rev-list --count HEAD update_lang.sh` +# to get Build Nr +############################################################################# +# # Config: if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi -if [ -z "$OBJCOPY" ]; then echo 'variable OBJCOPY not set!' >&2; exit 1; fi -if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo 'Config NG!' >&2; exit 1; fi +if [ -z "$OBJCOPY" ]; then echo "$(tput setaf 1)variable OBJCOPY not set!$(tput sgr0)" >&2; exit 1; fi +if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo "$(tput setaf 1)Config NG!$(tput sgr0)" >&2; exit 1; fi # # Selected language: LNG=$1 @@ -17,9 +28,9 @@ finish() { echo if [ "$1" = "0" ]; then - echo "update_lang.sh finished with success" >&2 + echo "$(tput setaf 2)update_lang.sh finished with success$(tput sgr0)" >&2 else - echo "update_lang.sh finished with errors!" >&2 + echo "$(tput setaf 1)update_lang.sh finished with errors!$(tput sgr0)" >&2 fi case "$-" in *i*) echo "press enter key" >&2; read ;; @@ -27,22 +38,22 @@ finish() exit $1 } -echo "update_lang.sh started" >&2 -echo " selected language=$LNG" >&2 +echo "$(tput setaf 2)update_lang.sh started$(tput sgr0)" >&2 +echo " selected language=$(tput setaf 2)$LNG$(tput sgr0)" >&2 echo -n " checking files..." >&2 -if [ ! -e text.sym ]; then echo "NG! file text.sym not found!" >&2; finish 1; fi -if [ ! -e lang_$LNG.bin ]; then echo "NG! file lang_$LNG.bin not found!" >&2; finish 1; fi -if [ ! -e firmware.bin ]; then echo "NG! file firmware.bin not found!" >&2; finish 1; fi +if [ ! -e text.sym ]; then echo "$(tput setaf 1)NG! file text.sym not found!$(tput sgr0)" >&2; finish 1; fi +if [ ! -e lang_$LNG.bin ]; then echo "$(tput setaf 1)NG! file lang_$LNG.bin not found!$(tput sgr0)" >&2; finish 1; fi +if [ ! -e firmware.bin ]; then echo "$(tput setaf 1)NG! file firmware.bin not found!$(tput sgr0)" >&2; finish 1; fi echo "OK" >&2 echo -n " checking symbols..." >&2 #find symbol _SEC_LANG in section '.text' sec_lang=$(cat text.sym | grep -E "\b_SEC_LANG\b") -if [ -z "$sec_lang" ]; then echo "NG!\n symbol _SEC_LANG not found!" >&2; finish 1; fi +if [ -z "$sec_lang" ]; then echo "$(tput setaf 1)NG!\n symbol _SEC_LANG not found!$(tput sgr0)" >&2; finish 1; fi #find symbol _PRI_LANG_SIGNATURE in section '.text' pri_lang=$(cat text.sym | grep -E "\b_PRI_LANG_SIGNATURE\b") -if [ -z "$pri_lang" ]; then echo "NG!\n symbol _PRI_LANG_SIGNATURE not found!" >&2; finish 1; fi +if [ -z "$pri_lang" ]; then echo "$(tput setaf 1)NG!\n symbol _PRI_LANG_SIGNATURE not found!$(tput sgr0)" >&2; finish 1; fi echo "OK" >&2 echo " calculating vars:" >&2 @@ -65,7 +76,7 @@ printf " lang_table_size =0x%04x (=%d bytes)\n" $lang_table_size $lang_table_si lang_file_size=$(wc -c lang_$LNG.bin | cut -f1 -d' ') printf " lang_file_size =0x%04x (=%d bytes)\n" $lang_file_size $lang_file_size >&2 -if [ $lang_file_size -gt $lang_table_size ]; then echo "Lanaguage binary file size too big!" >&2; finish 1; fi +if [ $lang_file_size -gt $lang_table_size ]; then echo "$(tput setaf 1)Lanaguage binary file size too big!$(tput sgr0)" >&2; finish 1; fi echo "updating 'firmware.bin'..." >&2 From 256c3f453bca17ef2e937e4c56c46232f740f23e Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Sun, 30 Jan 2022 11:01:19 +0100 Subject: [PATCH 14/24] PF-build.sh: - Add sort of variants. Request from @leptun - Add Arduino IDE 1.8.19 as an option - Allow upper and lower case. Request from @TojikCZ MK404-build.sh: - Allow upper and lower case. Request by @TojikCZ - Add update option to release OR devel --- MK404-build.sh | 84 +++++++++++++++++++++++++++++++++++--------------- PF-build.sh | 18 ++++++----- 2 files changed, 71 insertions(+), 31 deletions(-) diff --git a/MK404-build.sh b/MK404-build.sh index 4402a444..30f7eb61 100755 --- a/MK404-build.sh +++ b/MK404-build.sh @@ -10,7 +10,7 @@ # 3. Install latest updates with 'sudo apt-get upgrade' # # -# Version: 1.0.0-Build_13 +# Version: 1.0.0-Build_14 # Change log: # 11 Feb 2021, 3d-gussner, Inital # 11 Feb 2021, 3d-gussner, Optional flags to check for updates @@ -22,6 +22,8 @@ # 18 Jun 2021, 3d-gussner, Added -g 3 and 4 for more details extrusion lines # 18 Jun 2021, 3d-gussner, Check for updates is default. Fix update if internet connection is lost. # 21 Jun 2021, 3d-gussner, Change board_flash argument to 'y' and firmware_version to 'f' +# 25 Jan 2021, 3d-gussner, Allow upper and lower case in selection +# Add update option to release OR devel #### Start: Failures failures() @@ -74,7 +76,7 @@ while getopts c:f:g:m:n:p:u:x:y:?h flag # '?' 'h' argument usage and help if [ "$help_flag" == "1" ] ; then echo "***************************************" -echo "* MK404-build.sh Version: 1.0.0-Build_13 *" +echo "* MK404-build.sh Version: 1.0.0-Build_14 *" echo "***************************************" echo "Arguments:" echo "$(tput setaf 2)-c$(tput sgr0) Check for update" @@ -98,7 +100,7 @@ echo " -g : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' l echo " -m : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes '$(tput setaf 2)2$(tput sgr0)' with MMU2" echo " -n : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes" echo " -p : '$(tput setaf 2)MK25$(tput sgr0)', '$(tput setaf 2)MK25S$(tput sgr0)', '$(tput setaf 2)MK3$(tput sgr0)' or '$(tput setaf 2)MK3S$(tput sgr0)'" -echo " -u : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes '" +echo " -u : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' release ', '$(tput setaf 2)2$(tput sgr0)' devel '" echo " -x : '$(tput setaf 2)8$(tput sgr0)',$(tput setaf 2)16$(tput sgr0)',$(tput setaf 2)32$(tput sgr0)' or '$(tput setaf 2)64$(tput sgr0)' Kb." echo " -y : '$(tput setaf 2)256$(tput sgr0)','$(tput setaf 2)384$(tput sgr0)','$(tput setaf 2)512$(tput sgr0)','$(tput setaf 2)1024$(tput sgr0)''$(tput setaf 2)32M$(tput sgr0)'" echo @@ -170,9 +172,8 @@ fi #Start: Check if new build is selected if [ "$new_build_flag" == "1" ]; then check_flag=1 - update_flag=1 fi -if [ "$update_flag" == "1" ]; then +if [[ "$update_flag" == "1" || "$update_flag" == "2" ]]; then check_flag=1 fi #End: Check if new build is selected @@ -196,11 +197,13 @@ if [ ! -z $firmware_version_flag ]; then if [ ! -z $MK404_PRINTER_TEMP ]; then MK404_PRINTER=MK25S fi +elif [[ ! -z $new_build_flag || ! -z $update_flag || ! -z $check_flag ]]; then + echo "continue" else failures 8 fi -if [ -z "$MK404_PRINTER" ]; then +if [[ -z $MK404_PRINTER && -z $new_build_flag && -z $update_flag && -z $check_flag ]]; then failures 9 fi @@ -232,7 +235,7 @@ if [ ! -z $mk404_printer_flag ]; then fi fi -if [ -z $MK404_PRINTER ]; then +if [[ -z $MK404_PRINTER && -z $new_build_flag && -z $update_flag && -z $check_flag ]]; then failures 10 fi @@ -399,38 +402,58 @@ if [ "$check_flag" == "1" ]; then # Get latest release MK404_release_url=$(curl -Ls -o /dev/null -w %{url_effective} https://github.com/$MK404_owner/$MK404_project/releases/latest) MK404_release_tag=$(basename $MK404_release_url) -# Get remote Commit_Hash - #MK404_remote_GIT_COMMIT_HASH=$(git ls-remote --heads $(git config --get remote.origin.url) | grep "refs/heads/master" | cut -f 1) - MK404_remote_GIT_COMMIT_HASH=$(git ls-remote | grep "refs/tags/$MK404_release_tag" | cut -f 1) -# Get remote Commit_Number - MK404_remote_GIT_COMMIT_NUMBER=$(git rev-list $MK404_release_tag --count) +# Get release Commit_Hash + MK404_release_GIT_COMMIT_HASH=$(git ls-remote | grep "refs/tags/$MK404_release_tag" | cut -f 1) +# Get release Commit_Number + MK404_release_GIT_COMMIT_NUMBER=$(git rev-list $MK404_release_tag --count) +# Get latest development Commit_Hash + MK404_devel_GIT_COMMIT_HASH=$(git for-each-ref refs/remotes/origin/master | cut -d" " -f 1) +# Get latest development Commit_Number + MK404_devel_GIT_COMMIT_NUMBER=$(git rev-list refs/remotes/origin/master --count) # Output echo "" echo "Current version : $MK404_current_version" echo "" echo "Current local hash : $MK404_local_GIT_COMMIT_HASH" echo "Current local commit nr : $MK404_local_GIT_COMMIT_NUMBER" - if [ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_remote_GIT_COMMIT_HASH" ]; then + if [ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_release_GIT_COMMIT_HASH" ]; then echo "$(tput setaf 1)" else echo "$(tput setaf 2)" fi echo "Latest release tag : $MK404_release_tag" - echo "Latest release hash : $MK404_remote_GIT_COMMIT_HASH" - echo "Latest remote commit nr : $MK404_remote_GIT_COMMIT_NUMBER" + echo "Latest release hash : $MK404_release_GIT_COMMIT_HASH" + echo "Latest release commit nr: $MK404_release_GIT_COMMIT_NUMBER" + if [ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_devel_GIT_COMMIT_HASH" ]; then + echo "$(tput setaf 1)" + else + echo "$(tput setaf 2)" + fi + echo "Latest devel hash : $MK404_devel_GIT_COMMIT_HASH" + echo "Latest devel commit nr : $MK404_devel_GIT_COMMIT_NUMBER" echo "$(tput sgr 0)" # Check for updates - if [ ! -z $MK404_remote_GIT_COMMIT_HASH ]; then - if [[ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_remote_GIT_COMMIT_HASH" && -z "$update_flag" ]]; then - echo "$(tput setaf 2)Update is availible.$(tput sgr 0)" - read -t 10 -n 1 -p "$(tput setaf 3)Update now Y/n$(tput sgr 0)" update_answer - if [ "$update_answer" == "Y" ]; then + if [ ! -z $MK404_release_GIT_COMMIT_HASH ]; then + if [[ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_release_GIT_COMMIT_HASH" && -z "$update_flag" ]]; then + echo "$(tput setaf 2)Update to release is availible.$(tput sgr 0)" + read -t 10 -n 1 -p "$(tput setaf 3)Update to release now Y/n$(tput sgr 0)" update_answer + if [[ "$update_answer" == "Y" || "$update_answer" == "y" ]]; then update_flag=1 fi echo "" fi fi + if [ ! -z $MK404_devel_GIT_COMMIT_HASH ]; then + if [[ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_devel_GIT_COMMIT_HASH" && -z "$update_flag" ]]; then + echo "$(tput setaf 2)Update to devel is availible.$(tput sgr 0)" + read -t 10 -n 1 -p "$(tput setaf 3)Update to devel now Y/n$(tput sgr 0)" update_answer + if [[ "$update_answer" == "Y" || "$update_answer" == "y" ]]; then + update_flag=2 + fi + echo "" + fi + fi fi } #### End: Check for updates @@ -439,14 +462,27 @@ fi fetch_updates() { if [ "$update_flag" == "1" ]; then - if [ ! -z $MK404_remote_GIT_COMMIT_HASH ]; then - if [ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_remote_GIT_COMMIT_HASH" ]; then + if [ ! -z $MK404_release_GIT_COMMIT_HASH ]; then + if [ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_release_GIT_COMMIT_HASH" ]; then echo "" git fetch --all - read -t 10 -p "$(tput setaf 2)Updating MK404 !$(tput sgr 0)" + read -t 5 -p "$(tput setaf 2)Updating MK404 to release!$(tput sgr 0)" echo "" git reset --hard $MK404_release_tag - read -t 10 -p "$(tput setaf 2)Compiling MK404 !$(tput sgr 0)" + read -t 5 -p "$(tput setaf 2)Compiling MK404 release!$(tput sgr 0)" + echo "" + new_build_flag=1 + fi + fi +elif [ "$update_flag" == "2" ]; then + if [ ! -z $MK404_devel_GIT_COMMIT_HASH ]; then + if [ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_devel_GIT_COMMIT_HASH" ]; then + echo "" + git fetch --all + read -t 5 -p "$(tput setaf 2)Updating MK404 to devel!$(tput sgr 0)" + echo "" + git reset --hard origin/master + read -t 5 -p "$(tput setaf 2)Compiling MK404 devel!$(tput sgr 0)" echo "" new_build_flag=1 fi diff --git a/PF-build.sh b/PF-build.sh index 8a96083d..296463d3 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -56,7 +56,7 @@ # Some may argue that this is only used by a script, BUT as soon someone accidentally or on purpose starts Arduino IDE # it will use the default Arduino IDE folders and so can corrupt the build environment. # -# Version: 2.0.0-Build_66 +# Version: 2.0.0-Build_67 # Change log: # 12 Jan 2019, 3d-gussner, Fixed "compiler.c.elf.flags=-w -Os -Wl,-u,vfprintf -lprintf_flt -lm -Wl,--gc-sections" in 'platform.txt' # 16 Jan 2019, 3d-gussner, Build_2, Added development check to modify 'Configuration.h' to prevent unwanted LCD messages that Firmware is unknown @@ -166,6 +166,9 @@ # 24 Jun 2021, 3d-gussner, Fix MK404 user interaction not to show if compiling 'All' variants # 24 Jun 2021, 3d-gussner, MK404 is only supported on Linux at this moment. # 03 Jan 2022, 3d-gussner, Remove calling lang-community.sh as not needed anymore +# 21 Jan 2022, 3d-gussner, Sort variants +# Add Arduino 1.8.19 as an option +# 25 Jan 2022, 3d-gussner, Allow upper and lower case for MK404 SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )" @@ -221,7 +224,7 @@ while getopts b:c:d:g:h:i:j:l:m:n:o:p:v:x:y:?h flag # '?' 'h' argument usage and help if [ "$help_flag" == "1" ] ; then echo "***************************************" -echo "* PF-build.sh Version: 2.0.0-Build_66 *" +echo "* PF-build.sh Version: 2.0.0-Build_67 *" echo "***************************************" echo "Arguments:" echo "$(tput setaf 2)-b$(tput sgr0) Build/commit number" @@ -247,7 +250,7 @@ echo " -b : '$(tput setaf 2)Auto$(tput sgr0)' needs git or a number" echo " -c : '$(tput setaf 2)0$(tput sgr0)' clean up, '$(tput setaf 2)1$(tput sgr0)' keep" echo " -d : '$(tput setaf 2)GOLD$(tput sgr0)', '$(tput setaf 2)RC$(tput sgr0)', '$(tput setaf 2)BETA$(tput sgr0)', '$(tput setaf 2)ALPHA$(tput sgr0)', '$(tput setaf 2)DEBUG$(tput sgr0)', '$(tput setaf 2)DEVEL$(tput sgr0)' and '$(tput setaf 2)UNKNOWN$(tput sgr0)'" echo " -g : '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' lite '$(tput setaf 2)2$(tput sgr0)' fancy '$(tput setaf 2)3$(tput sgr0)' lite with Quad_HR '$(tput setaf 2)4$(tput sgr0)' fancy with Quad_HR" -echo " -i : '$(tput setaf 2)1.8.5$(tput sgr0)', '$(tput setaf 2)1.8.13$(tput sgr0)'" +echo " -i : '$(tput setaf 2)1.8.5$(tput sgr0)', '$(tput setaf 2)1.8.13$(tput sgr0)', '$(tput setaf 2)1.8.19$(tput sgr0)'" echo " -j : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes" echo " -l : '$(tput setaf 2)ALL$(tput sgr0)' for multi language or '$(tput setaf 2)EN_ONLY$(tput sgr0)' for English only" echo " -m : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes '$(tput setaf 2)2$(tput sgr0)' with MMU2" @@ -343,7 +346,7 @@ fi #Start: Check if Arduino IDE version is correct if [ ! -z "$IDE_flag" ]; then - if [[ "$IDE_flag" == "1.8.5" || "$IDE_flag" == "1.8.13" ]]; then + if [[ "$IDE_flag" == "1.8.5" || "$IDE_flag" == "1.8.13" || "$IDE_flag" == "1.8.19" ]]; then ARDUINO_ENV="${IDE_flag}" else ARDUINO_ENV="1.8.5" @@ -818,7 +821,8 @@ if [ -z "$variant_flag" ] ; then while IFS= read -r -d $'\0' f; do options[i++]="$f" done < <(find Firmware/variants/ -maxdepth 1 -type f -name "*.h" -print0 ) - select opt in "${options[@]}" "All" "Quit"; do + IFS=$'\n' sorted=($(sort -n <<<"${options[*]}")); unset IFS + select opt in "${sorted[@]}" "All" "Quit"; do case $opt in *.h) VARIANT=$(basename "$opt" ".h") @@ -1453,7 +1457,7 @@ if [[ "$output_flag" == "1" || -z "$output_flag" ]]; then if [[ -z "$mk404_flag" && "$variant_flag" != "All" ]]; then echo read -t 10 -n 1 -p "Do you want to start MK404? Y/$(tput setaf 2)n$(tput sgr 0)" mk404_start - if [ "$mk404_start" == "Y" ]; then + if [[ "$mk404_start" == "Y" || "$mk404_start" == "y" ]]; then echo read -t 10 -n 1 -p "Do you want to start MK404 with or without MMU2S? $(tput setaf 2)1$(tput sgr 0)/2" mk404_choose1 if [ "$mk404_choose1" == "1" ]; then @@ -1603,4 +1607,4 @@ done finish_pf-build if [ $TARGET_OS == "linux" ]; then MK404_SIM -fi \ No newline at end of file +fi From c3347dd2cb765d7bfcab713c5a189f5391424518 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Sun, 30 Jan 2022 11:39:58 +0100 Subject: [PATCH 15/24] =?UTF-8?q?Improve=20language=20scripts=20-=20Add=20?= =?UTF-8?q?German=20`=C3=A4=C3=B6=C3=BC=C3=9F`=20support=20-=20Add/improve?= =?UTF-8?q?=20checks=20=20=20-=20Check=20for=20syntax=20errors=20=20=20-?= =?UTF-8?q?=20Output=20for=20translators=20-=20gitignore=20more=20temporar?= =?UTF-8?q?y=20files?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 7 + lang/fw-clean.sh | 11 +- lang/lang-build.sh | 30 +++- lang/lang-check.py | 61 ++++++-- lang/lang-clean.sh | 20 ++- lang/lang-export.sh | 21 ++- lang/lang-import.sh | 81 ++++++---- lang/lang_en_de.txt | 230 ++++++++++++++-------------- lang/po/Firmware_de.po | 102 ++++++------- lang/po/new/de.po | 332 ++++++++++++++++++++--------------------- 10 files changed, 513 insertions(+), 382 deletions(-) diff --git a/.gitignore b/.gitignore index db5bacd2..d69ee381 100644 --- a/.gitignore +++ b/.gitignore @@ -55,3 +55,10 @@ Firmware/Doc /Firmware/variants/printers.h Configuration.tmp config.tmp +/lang/lang_en.max +/lang/po/new/*_new.po +/lang/po/new/*_filered.po +/lang/po/new/nonascii.txt +/lang/po/new/lang_en*.txt +/lang/po/new/*-output.txt +/lang/po/new/*.mo \ No newline at end of file diff --git a/lang/fw-clean.sh b/lang/fw-clean.sh index 87172cf3..0915e749 100755 --- a/lang/fw-clean.sh +++ b/lang/fw-clean.sh @@ -1,6 +1,6 @@ #!/bin/bash # -# Version 1.0.1 Build 10 +# Version 1.0.1 Build 11 # # fw-clean.sh - multi-language support script # Remove all firmware output files from lang folder. @@ -8,11 +8,20 @@ ############################################################################# # Change log: # 21 June 2018, XPila, Initial +# 11 Sep. 2018, XPila, Lang update, french translation +# resized reserved space +# 18 Oct. 2018, XPila, New lang, arduino 1.8.5 - fw-clean.sh and lang-clean.sh fix +# 10 Dec. 2018, jhoblitt, make all shell scripts executable +# 26 Jul. 2019, leptun, Fix shifted languages. Use \n and \x0a +# 14 Sep. 2019, 3d-gussner, Prepare adding new language +# 01 Mar. 2021, 3d-gussner, Move `Dutch` language parts +# 22 Mar. 2021, 3d-gussner, Move Dutch removing part to correct loaction # 17 Dec. 2021, 3d-gussner, Use one config file for all languages # 11 Jan. 2022, 3d-gussner, Added version and Change log # colored output # Use `git rev-list --count HEAD fw-clean.sh` # to get Build Nr +# 25 Jan. 2022, 3d-gussner, Update documentation ############################################################################# # Config: if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi diff --git a/lang/lang-build.sh b/lang/lang-build.sh index 8a612bd1..21eeb4bd 100755 --- a/lang/lang-build.sh +++ b/lang/lang-build.sh @@ -1,6 +1,6 @@ #!/bin/bash # -# Version 1.0.2 Build 24 +# Version 1.0.2 Build 25 # # lang-build.sh - multi-language support script # generate lang_xx.bin (language binary file) @@ -23,13 +23,39 @@ ############################################################################# # Change log: # 18 June 2018, XPila, Initial +# 19 June 2018, XPila, New ML support +# 18 Oct. 2018, XPila, New lang French +# 26 Nov. 2018, mkbel, Automate secondary language support build. +# 7 May 2019, ondratu Check translation dictionary files to display definition +# 19 June 2019, mkbel Disable language check warnings of type "[W]: No display definition on line". +# Those warnings were masking all other much more useful build process output. +# 14 Sep. 2019, 3d-gussner, Prepare adding new language +# 18 Sep. 2020, 3d-gussner, Update new messages and their translations, fix translations +# Update CZ, FR, IT, ES translations +# CZ thanks to @DRracer +# FR thanks to Carlin Dcustom +# ES +# IT thanks to @wavexx +# Co-authored-by: @DRracer, @wavexx +# 1 Mar. 2021, 3d-gussner, Add Dutch translation # 17 Dec. 2021, 3d-gussner, Use one config file for all languages +# 21 Dec. 2021, 3d-gussner, Prepare more community languages +# Swedish +# Danish +# Slovanian +# Hungarian +# Luxembourgian +# Croatian +# 3 Jan. 2022, 3d-gussner, Prepare Lithuanian +# Cleanup outdated code # 11 Jan. 2022, 3d-gussner, Add message and size count comparison # Added version and Change log # colored output # Add Community language support # Use `git rev-list --count HEAD lang-build.sh` # to get Build Nr +# 25 Jan. 2022, 3d-gussner, Fix check +# Update documentation ############################################################################# # # Config: @@ -135,7 +161,7 @@ generate_binary() #check lang dictionary ./lang-check.py $1 #--no-warning #create lang_xx.tmp - different processing for 'en' language - if [ "$1" = "en" ]; then + if [[ "$1" = "en" || ! -f "lang_en.max" ]]; then #remove comments and empty lines cat lang_en.txt | sed '/^$/d;/^#/d' #calculate number of strings diff --git a/lang/lang-check.py b/lang/lang-check.py index 87f4d67e..8fbb9bdc 100755 --- a/lang/lang-check.py +++ b/lang/lang-check.py @@ -1,19 +1,31 @@ #!/usr/bin/env python3 # -# Version 1.0.2 - Build 37 +# Version 1.0.2 - Build 38 ############################################################################# # Change log: -# 7 May 2019, Ondrej Tuma, Initial -# 9 June 2020, 3d-gussner, Added version and Change log -# 9 June 2020, 3d-gussner, Wrap text to 20 char and rows -# 9 June 2020, 3d-gussner, colored output +# 7 May 2019, ondratu , Initial +# 13 June 2019, 3d-gussner, Fix length false positives +# 14 Sep. 2019, 3d-gussner, Prepare adding new language +# 18 Sep. 2020, 3d-gussner, Fix execution of lang-check.py # 2 Apr. 2021, 3d-gussner, Fix and improve text warp # 22 Apr. 2021, DRracer , add English source to output # 23 Apr. 2021, wavexx , improve # 24 Apr. 2021, wavexx , improve -# 26 Apr. 2021, 3d-gussner, add character ruler -# 07 Jan. 2022, 3d-gussner, Check for Syntax errors and exit with error +# 26 Apr. 2021, wavexx , add character ruler +# 21 Dec. 2021, 3d-gussner, Prepare more community languages +# Swedish +# Danish +# Slovanian +# Hungarian +# Luxembourgian +# Croatian +# 3 Jan. 2022, 3d-gussner, Prepare Lithuanian +# 7 Jan. 2022, 3d-gussner, Check for Syntax errors and exit with error # , add Build number 'git rev-list --count HEAD lang-check.py' +# 30 Jan. 2022, 3d-gussner, Add arguments. Requested by @AttilaSVK +# --information == output all source and translated messages +# --import-check == used by `lang-import.sh`to verify +# newly import `lang_en_??.txt` files ############################################################################# # # Expected syntax of the files, which other scripts depend on @@ -112,12 +124,15 @@ def ign_char_first(c): def ign_char_last(c): return c.isalnum() or c in {'.', "'"} -def parse_txt(lang, no_warning, warn_empty): +def parse_txt(lang, no_warning, warn_empty, information, import_check): """Parse txt file and check strings to display definition.""" if lang == "en": file_path = "lang_en.txt" else: - file_path = "lang_en_%s.txt" % lang + if import_check: + file_path = "po/new/lang_en_%s.txt" % lang + else: + file_path = "lang_en_%s.txt" % lang print(green("Start %s lang-check" % lang)) @@ -208,7 +223,7 @@ def parse_txt(lang, no_warning, warn_empty): source = unescape(source) if lang != "en": translation = unescape(translation) - + #print (translation) #Debug wrapped_source = wrap_text(source, cols) rows_count_source = len(wrapped_source) @@ -271,6 +286,12 @@ def parse_txt(lang, no_warning, warn_empty): print_source_translation(source, translation, wrapped_source, wrapped_translation, rows, cols) + #elif information: + # print(green('[I]: %s' % (message))) + # print_source_translation(source, translation, + # wrapped_source, wrapped_translation, + # rows, cols) + # Short translation if not no_warning and len(source) > 0 and len(translation) > 0: @@ -279,6 +300,11 @@ def parse_txt(lang, no_warning, warn_empty): print_source_translation(source, translation, wrapped_source, wrapped_translation, rows, cols) + #elif information: + # print(green('[I]: %s' % (message))) + # print_source_translation(source, translation, + # wrapped_source, wrapped_translation, + # rows, cols) # Incorrect trailing whitespace in translation if not no_warning and len(translation) > 0 and \ @@ -292,6 +318,13 @@ def parse_txt(lang, no_warning, warn_empty): print_source_translation(source, translation, wrapped_source, wrapped_translation, rows, cols) + elif information: + print(green('[I]: %s' % (message))) + print_source_translation(source, translation, + wrapped_source, wrapped_translation, + rows, cols) + + delimiter = src.readline() lines += 1 if ("" == delimiter): @@ -316,10 +349,16 @@ def main(): parser.add_argument( "--warn-empty", action="store_true", help="Warn about empty translations") + parser.add_argument( + "--information", action="store_true", + help="Output all translations") + parser.add_argument( + "--import-check", action="store_true", + help="Check import file and save informational to file") args = parser.parse_args() try: - parse_txt(args.lang, args.no_warning, args.warn_empty) + parse_txt(args.lang, args.no_warning, args.warn_empty, args.information, args.import_check) return 0 except Exception as exc: print_exc() diff --git a/lang/lang-clean.sh b/lang/lang-clean.sh index 37008c65..41dc574a 100755 --- a/lang/lang-clean.sh +++ b/lang/lang-clean.sh @@ -1,6 +1,6 @@ #!/bin/bash # -# Version 1.0.1 Build 9 +# Version 1.0.1 Build 10 # # clean.sh - multi-language support script # Remove all language output files from lang folder. @@ -8,7 +8,15 @@ ############################################################################# # Change log: # 1 Nov. 2018, XPila, Initial -# 17 Dec. 2021, 3d-gussner, Use one config file for all languages +# 18 Oct. 2018, XPila, New lang, arduino 1.8.5 - fw-clean.sh and lang-clean.sh fix +# 25 Oct. 2018, XPila, New lang - fixed french langcode and comparsion in lang-clean script +# 10 Dec. 2018, jhoblitt, make all shell scripts executable +# 26 Jul. 2019, leptun, Fix shifted languages. Use \n and \x0a +# 14 Sep. 2019, 3d-gussner, Prepare adding new language +# 01 Mar. 2021, 3d-gussner, Move `Dutch` language parts +# 22 Mar. 2021, 3d-gussner, Move Dutch removing part to correct loaction +# 21 Dec. 2021, 3d-gussner, Use one config file for all languages +# 03 Jan. 2022, 3d-gussner, Cleanup outdated code # 11 Jan. 2022, 3d-gussner, Also remove temporally files which have been # generated for message and size count comparison # Added version and Change log @@ -16,6 +24,7 @@ # Add Community language support # Use `git rev-list --count HEAD lang-clean.sh` # to get Build Nr +# 25 Jan. 2022, 3d-gussner, clean up lang-import.sh temproray files ############################################################################# # Config: if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi @@ -52,12 +61,19 @@ clean_lang() rm_if_exists lang_en_$1.dif rm_if_exists lang_$1.ofs rm_if_exists lang_$1.txt + rm_if_exists po/new/$1_new.po + rm_if_exists po/new/$1.mo + rm_if_exists po/new/$1_filtered.po + rm_if_exists po/new/lang_en_$1.txt + rm_if_exists po/new/$1-output.txt fi rm_if_exists lang_$1_check.dif rm_if_exists lang_$1.bin rm_if_exists lang_$1.dat rm_if_exists lang_$1_1.tmp rm_if_exists lang_$1_2.tmp + rm_if_exists po/new/nonascii.txt + } echo "$(tput setaf 2)lang-clean.sh started$(tput sgr0)" >&2 diff --git a/lang/lang-export.sh b/lang/lang-export.sh index 3cec10ab..a0a3b76e 100755 --- a/lang/lang-export.sh +++ b/lang/lang-export.sh @@ -1,14 +1,16 @@ #!/bin/bash # -# Version 1.0.1 Build 17 +# Version 1.0.1 Build 18 # # lang-export.sh - multi-language support script # for generating lang_xx.po # ############################################################################# # Change log: -# 9 Nov 2018, XPila, Initial +# 9 Nov. 2018, XPila, Initial +# 10 Dec. 2018, jhoblitt, make all shell scripts executable # 14 Sep. 2019, 3d-gussner, Prepare adding new language +# 6 Sep. 2019, DRracer, change to bash # 1 Mar. 2019, 3d-gussner, Move `Dutch` language parts # Add templates for future community languages # 17 Dec. 2021, 3d-gussner, Use one config file for all languages @@ -16,11 +18,13 @@ # 21 Dec. 2021, 3d-gussner, Add Swedish, Danish, Slovanian, Hungarian, # Luxembourgish, Croatian # 3 Jan. 2022, 3d-gussner, Add Lithuanian +# Cleanup outaded code # 11 Jan. 2022, 3d-gussner, Added version and Change log # colored output # Add Community language support # Use `git rev-list --count HEAD lang-export.sh` # to get Build Nr +# 25 Jan. 2022, 3d-gussner, Replace German HD44780 A00 ROM 'äöüß' to UTF-8 'äöüß' ############################################################################# # Config: if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi @@ -185,6 +189,19 @@ done >>$OUTFILE) 2>&1 #replace LF with CRLF sync sed -i 's/$/\r/' $OUTFILE + +#replace HD44780 A00 'äöüß' to UTF-8 'äöüß' +if [ "$LNG" = "de" ]; then + #replace 'A00 ROM ä' with 'ä' + sed -i 's/\\xe1/\xc3\xa4/g' $OUTFILE + #replace 'A00 ROM ü' with 'ü' + sed -i 's/\\xf5/\xc3\xbc/g' $OUTFILE + #replace 'A00 ROM ö' with 'ö' + sed -i 's/\\xef/\xc3\xb6/g' $OUTFILE + #replace 'A00 ROM ß' with 'ß' + sed -i 's/\\xe2/\xc3\x9f/g' $OUTFILE +fi + echo >&2 echo "$(tput setaf 2)lang-export.sh finished$(tput sgr 0)">&2 exit 0 diff --git a/lang/lang-import.sh b/lang/lang-import.sh index 07f78e56..a7991543 100755 --- a/lang/lang-import.sh +++ b/lang/lang-import.sh @@ -1,13 +1,18 @@ #!/bin/bash # -# Version 1.0.1 Build 23 +# Version 1.0.1 Build 24 # # lang-import.sh - multi-language support script # for importing translated xx.po # ############################################################################# # Change log: -# 9 Nov 2018, XPila, Initial +# 9 Nov. 2018, XPila, Initial +# 21 Nov. 2018, XPila, fix - replace '\n' with space in all languages +# 10 Dec. 2018, jhoblitt, make all shell scripts executable +# 21 Aug. 2019, 3d-gussner, Added "All" argument and it is default in nothing is chosen +# Added few German/French diacritical characters +# 6 Sep. 2019, DRracer, change to bash # 14 Sep. 2019, 3d-gussner, Prepare adding new language # 1 Mar. 2019, 3d-gussner, Move `Dutch` language parts # Add templates for future community languages @@ -18,11 +23,16 @@ # 21 Dec. 2021, 3d-gussner, Add Swedish, Danish, Slovanian, Hungarian, # Luxembourgish, Croatian # 3 Jan. 2022, 3d-gussner, Add Lithuanian +# Cleanup outaded code # 11 Jan. 2022, 3d-gussner, Added version and Change log # colored output # Add Community language support -# Use `git rev-list --count HEAD lang-export.sh` +# Use `git rev-list --count HEAD lang-import.sh` # to get Build Nr +# 14 Jan. 2022, 3d-gussner, Replace German UTF-8 '' to HD44780 A00 ROM '' +# 28 Jan. 2022, 3d-gussner, Run lang-check and output `xx-output.txt` file to review +# translations +# new argruments `--information` `--import-check` ############################################################################# # Config: if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi @@ -30,15 +40,17 @@ if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo "$(tput setaf 1)Config echo "$(tput setaf 2)lang-import.sh started$(tput sgr 0)" >&2 -if [ ! -z "$COMMUNITY_LANGUAGES" ]; then - LANGUAGES+=" $COMMUNITY_LANGUAGES" -fi -echo "$(tput setaf 2)lang-import languages:$LANGUAGES$(tput sgr 0)" >&2 - LNG=$1 # if no arguments, 'all' is selected (all po and also pot will be generated) if [ -z "$LNG" ]; then LNG=all; fi +if [[ ! -z "$COMMUNITY_LANGUAGES" && "$LNG" = "all" ]]; then + LANGUAGES+=" $COMMUNITY_LANGUAGES" +else + LANGUAGES="$LNG" +fi +echo "$(tput setaf 2)lang-import languages:$LANGUAGES$(tput sgr 0)" >&2 + # if 'all' is selected, script will generate all po files and also pot file if [ "$LNG" = "all" ]; then for lang in $LANGUAGES; do @@ -87,20 +99,21 @@ fi #replace in german translation https://en.wikipedia.org/wiki/German_orthography if [ "$LNG" = "de" ]; then - #replace '' with 'ae' - sed -i 's/\xc3\xa4/ae/g' $LNG'_filtered.po' - #replace '' with 'Ae' - sed -i 's/\xc3\x84/Ae/g' $LNG'_filtered.po' - #replace '' with 'ue' - sed -i 's/\xc3\xbc/ue/g' $LNG'_filtered.po' - #replace '' with 'Ue' - sed -i 's/\xc3\x9c/Ue/g' $LNG'_filtered.po' - #replace '' with 'oe' - sed -i 's/\xc3\xb6/oe/g' $LNG'_filtered.po' - #replace '' with 'Oe' - sed -i 's/\xc3\x96/Oe/g' $LNG'_filtered.po' - #replace '' with 'ss' - sed -i 's/\xc3\x9f/ss/g' $LNG'_filtered.po' +#replace UTF-8 '' to HD44780 A00 '' + #replace '' with 'A00 ROM ' + sed -i 's/\xc3\xa4/\\xe1/g' $LNG'_filtered.po' + #replace '' with 'A00 ROM ' + sed -i 's/\xc3\x84/\\xe1/g' $LNG'_filtered.po' + #replace '' with 'A00 ROM ' + sed -i 's/\xc3\xbc/\\xf5/g' $LNG'_filtered.po' + #replace '' with 'A00 ROM ' + sed -i 's/\xc3\x9c/\\xf5/g' $LNG'_filtered.po' + #replace '' with 'A00 ROM ' + sed -i 's/\xc3\xb6/\\xef/g' $LNG'_filtered.po' + #replace '' with 'A00 ROM ' + sed -i 's/\xc3\x96/\\xef/g' $LNG'_filtered.po' + #replace '' with 'A00 ROM ' + sed -i 's/\xc3\x9f/\\xe2/g' $LNG'_filtered.po' fi #replace in spain translation @@ -199,21 +212,21 @@ if [ "$LNG" = "nl" ]; then sed -i 's/\xc3\x85/A/g' $LNG'_filtered.po' fi -if [ "$LGN" = "sv" ]; then +if [ "$LNG" = "sv" ]; then #repace '' with 'Aa' sed -i 's/\xc3\x85/Aa/g' $LNG'_filtered.po' #repace '' with 'aa' sed -i 's/\xc3\xA5/aa/g' $LNG'_filtered.po' fi -if [ "$LGN" = "da" ]; then +if [ "$LNG" = "da" ]; then #repace '' with 'Aa' sed -i 's/\xc3\x85/Aa/g' $LNG'_filtered.po' #repace '' with 'aa' sed -i 's/\xc3\xA5/aa/g' $LNG'_filtered.po' fi -if [ "$LGN" = "sl" ]; then +if [ "$LNG" = "sl" ]; then #replace '' with 'e' sed -i 's/\xc3\xab/e/g' $LNG'_filtered.po' #replace '' with 'a' (left) @@ -222,7 +235,7 @@ if [ "$LGN" = "sl" ]; then sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' fi -if [ "$LGN" = "hu" ]; then +if [ "$LNG" = "hu" ]; then #replace '' with 'e' sed -i 's/\xc3\xab/e/g' $LNG'_filtered.po' #replace '' with 'a' @@ -231,7 +244,7 @@ if [ "$LGN" = "hu" ]; then sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' fi -if [ "$LGN" = "lb" ]; then +if [ "$LNG" = "lb" ]; then #replace '' with 'e' sed -i 's/\xc3\xab/e/g' $LNG'_filtered.po' #replace '' with 'a' @@ -240,7 +253,7 @@ if [ "$LGN" = "lb" ]; then sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' fi -if [ "$LGN" = "hr" ]; then +if [ "$LNG" = "hr" ]; then #replace '' with 'e' sed -i 's/\xc3\xab/e/g' $LNG'_filtered.po' #replace '' with 'a' @@ -249,7 +262,7 @@ if [ "$LGN" = "hr" ]; then sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' fi -if [ "$LGN" = "lt" ]; then +if [ "$LNG" = "lt" ]; then #replace '' with 'e' sed -i 's/\xc3\xab/e/g' $LNG'_filtered.po' #replace '' with 'a' @@ -261,8 +274,8 @@ fi #if [ "$LNG" = "pl" ]; then #fi -#check for nonasci characters -if grep --color='auto' -P -n '[^\x00-\x7F]' $LNG'_filtered.po' >nonasci.txt; then +#check for nonasci characters excpet HD44780 ROM A00 '' +if grep --color='auto' -P -n '[^\x00-\x7F]' $LNG'_filtered.po' >nonascii.txt; then exit fi @@ -302,5 +315,9 @@ echo "$(tput setaf 2)Finished with $LNGISO$(tput sgr 0)" >&2 sed -i 's/""/"\\x00"/g' lang_en_$LNG.txt #remove CR sed -i "s/\r//g" lang_en_$LNG.txt +#check new lang +./../../lang-check.py $LNG --warn-empty +./../../lang-check.py $LNG --information >$LNG-output.txt echo >&2 -echo "$(tput setaf 2)lang-import.sh finished$(tput sgr 0)">&2 \ No newline at end of file +echo "$(tput setaf 2)lang-import.sh finished$(tput sgr 0)">&2 + diff --git a/lang/lang_en_de.txt b/lang/lang_en_de.txt index c34521ed..7d14d86b 100644 --- a/lang/lang_en_de.txt +++ b/lang/lang_en_de.txt @@ -1,10 +1,10 @@ #MSG_IR_03_OR_OLDER c=18 " 0.3 or older" -" 0.3 oder aelter" +" 0.3 oder \xe1lter" #MSG_FS_V_03_OR_OLDER c=18 "FS v0.3 or older" -"FS 0.3 oder aelter" +"FS v0.3 oder \xe1lter" #MSG_IR_04_OR_NEWER c=18 " 0.4 or newer" @@ -12,7 +12,7 @@ #MSG_FS_V_04_OR_NEWER c=18 "FS v0.4 or newer" -"FS 0.4 oder neuer" +"FS v0.4 oder neuer" #MSG_IR_UNKNOWN c=18 "unknown state" @@ -40,7 +40,7 @@ #MSG_WIZARD_DONE c=20 r=8 "All is done. Happy printing!" -"Alles abgeschlossen. Viel Spass beim Drucken!" +"Alles abgeschlossen. Viel Spa\xe2 beim Drucken!" #MSG_AMBIENT c=14 "Ambient" @@ -52,7 +52,7 @@ #MSG_PRESS c=20 r=2 "and press the knob" -"und Knopf druecken" +"und Knopf dr\xf5cken" #MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 "Are left and right Z~carriages all up?" @@ -68,15 +68,15 @@ #MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 "Autoloading filament available only when filament sensor is turned on..." -"Automatisches Laden Filament nur bei eingeschaltetem Fil. sensor verfuegbar..." +"Automatisches Laden Filament nur bei eingeschaltetem Fil. sensor verf\xf5gbar..." #MSG_AUTOLOADING_ENABLED c=20 r=4 "Autoloading filament is active, just press the knob and insert filament..." -"Automatisches Laden Filament ist aktiv, Knopf druecken und Filament einlegen..." +"Automatisches Laden Filament ist aktiv, Knopf dr\xf5cken und Filament einlegen..." #MSG_SELFTEST_AXIS_LENGTH c=20 "Axis length" -"Achsenlaenge" +"Achsenl\xe1nge" #MSG_SELFTEST_AXIS c=16 "Axis" @@ -92,7 +92,7 @@ #MSG_BED_HEATING c=20 "Bed Heating" -"Bett aufwaermen" +"Bett aufw\xe1rmen" #MSG_BED_CORRECTION_MENU c=18 "Bed level correct" @@ -104,7 +104,7 @@ #MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=6 "Bed leveling failed. Sensor didn't trigger. Debris on nozzle? Waiting for reset." -"Z-Kal. fehlgeschlg. Sensor nicht ausgeloest. Schmutzige Duese? Warte auf Reset." +"Z-Kal. fehlgeschlg. Sensor nicht ausgel\xefst. Schmutzige D\xf5se? Warte auf Reset." #MSG_BRIGHT c=6 "Bright" @@ -148,7 +148,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." -"XYZ Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf druecken." +"XYZ Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf dr\xf5cken." #MSG_CALIBRATE_Z_AUTO c=20 r=2 "Calibrating Z" @@ -156,7 +156,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." -"Z Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf druecken." +"Z Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf dr\xf5cken." #MSG_HOMEYZ_DONE c=20 "Calibration done" @@ -172,7 +172,7 @@ #MSG_CHECKING_FILE c=17 "Checking file" -"Ueberpruefe Datei" +"\xf5berpr\xf5fe Datei" #MSG_NOT_COLOR c=19 "Color not correct" @@ -180,11 +180,11 @@ #MSG_COOLDOWN c=18 "Cooldown" -"Abkuehlen" +"Abk\xf5hlen" #MSG_COPY_SEL_LANG c=20 r=3 "Copy selected language?" -"Gewaehlte Sprache kopieren?" +"Gew\xe1hlte Sprache kopieren?" #MSG_CRASHDETECT c=13 "Crash det." @@ -192,7 +192,7 @@ #MSG_CHOOSE_FIL_1ST_LAYERCAL c=20 r=7 "Choose a filament for the First Layer Calibration and select it in the on-screen menu." -"Waehlen Sie ein Filament fuer Erste Schichtkalibrierung aus und waehlen Sie es im On-Screen-Menu aus." +"W\xe1hlen Sie ein Filament f\xf5r Erste- Schichtkalibrierung aus und w\xe1hlen Sie es im On-Screen-Menu aus." #MSG_CRASH_DETECTED c=20 "Crash detected." @@ -200,7 +200,7 @@ #MSG_CRASH_RESUME c=20 r=3 "Crash detected. Resume print?" -"Crash erkannt. Druck fortfuehren?" +"Crash erkannt. Druck fortf\xf5hren?" #MSG_CRASH c=7 "Crash" @@ -224,7 +224,7 @@ #MSG_BABYSTEP_Z_NOT_SET c=20 r=12 "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration." -"Der Abstand zwischen der Spitze der Duese und dem Bett ist noch nicht eingestellt. Bitte folgen Sie dem Handbuch, Kapitel Erste Schritte, Abschnitt Erste Schicht Kalibrierung." +"Der Abstand zwischen der Spitze der D\xf5se und dem Bett ist noch nicht eingestellt. Bitte folgen Sie dem Handbuch, Kapitel Erste Schritte, Abschnitt Erste Schicht Kalibrierung." #MSG_FS_CONTINUE c=5 "Cont." @@ -232,7 +232,7 @@ #MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 "Do you want to repeat last step to readjust distance between nozzle and heatbed?" -"Moechten Sie den letzten Schritt wiederholen, um den Abstand zwischen Duese und Druckbett neu einzustellen?" +"M\xefchten Sie den letzten Schritt wiederholen, um den Abstand zwischen D\xf5se und Druckbett neu einzustellen?" #MSG_EXTRUDER_CORRECTION c=13 "E-correct:" @@ -260,7 +260,7 @@ #MSG_STACK_ERROR c=20 r=4 "Error - static memory has been overwritten" -"Fehler - statischer Speicher wurde ueberschrieben" +"Fehler - statischer Speicher wurde \xf5berschrieben" #MSG_CUT_FILAMENT c=16 "Cut filament" @@ -276,7 +276,7 @@ #MSG_FSENS_NOT_RESPONDING c=20 r=4 "ERROR: Filament sensor is not responding, please check connection." -"FEHLER: Filament- sensor reagiert nicht, bitte Verbindung pruefen." +"FEHLER: Filament- sensor reagiert nicht, bitte Verbindung pr\xf5fen." #MSG_DIM c=6 "Dim" @@ -288,7 +288,7 @@ #MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18 "Extruder fan:" -"Extruder Luefter:" +"Extruderl\xf5fter:" #MSG_INFO_EXTRUDER c=18 "Extruder info" @@ -312,15 +312,15 @@ #MSG_FAN_SPEED c=14 "Fan speed" -"Luefter-Tempo" +"L\xf5fter-Tempo" #MSG_SELFTEST_FAN c=20 "Fan test" -"Lueftertest" +"L\xf5ftertest" #MSG_FANS_CHECK c=13 "Fans check" -"Luefter Chk." +"L\xf5fter Check" #MSG_FSENSOR c=12 "Fil. sensor" @@ -328,7 +328,7 @@ #MSG_FIL_RUNOUTS c=15 "Fil. runouts" -"Fil. Maengel" +"Fil. M\xe1ngel" #MSG_FILAMENT_CLEAN c=20 r=2 "Filament extruding & with correct color?" @@ -356,7 +356,7 @@ #MSG_FILE_INCOMPLETE c=20 r=3 "File incomplete. Continue anyway?" -"Datei unvollstaendig Trotzdem fortfahren?" +"Datei unvollst\xe1ndig Trotzdem fortfahren?" #MSG_FINISHING_MOVEMENTS c=20 "Finishing movements" @@ -368,11 +368,11 @@ #MSG_WIZARD_SELFTEST c=20 r=8 "First, I will run the selftest to check most common assembly problems." -"Zunaechst fuehre ich den Selbsttest durch, um die haeufigsten Probleme beim Zusammenbau zu ueberpruefen." +"Zun\xe1chst f\xf5hre ich den Selbsttest durch, um die h\xe1ufigsten Probleme beim Zusammenbau zu \xf5berpr\xf5fen." #MSG_MMU_FIX_ISSUE c=20 r=4 "Fix the issue and then press button on MMU unit." -"Beseitigen Sie das Problem und druecken Sie dann den Knopf am MMU." +"Beseitigen Sie das Problem und dr\xf5cken Sie dann den Knopf am MMU." #MSG_FLOW c=15 "Flow" @@ -380,7 +380,7 @@ #MSG_SELFTEST_COOLING_FAN c=20 "Front print fan?" -"Teile Luefter?" +"Druckl\xf5fter?" #MSG_BED_CORRECTION_FRONT c=14 "Front side[um]" @@ -388,7 +388,7 @@ #MSG_SELFTEST_FANS c=20 "Front/left fans" -"Teile/Extr. Luefter" +"Druck/Extr. L\xf5fter" #MSG_SELFTEST_HEATERTHERMISTOR c=20 "Heater/Thermistor" @@ -400,15 +400,15 @@ #MSG_HEATING_COMPLETE c=20 "Heating done." -"Aufwaermen OK." +"Aufw\xe1rmen OK." #MSG_HEATING c=20 "Heating" -"Aufwaermen" +"Aufw\xe1rmen" #MSG_WIZARD_WELCOME c=20 r=7 "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?" -"Hallo, ich bin Ihr Original Prusa i3 Drucker. Moechten Sie, dass ich Sie durch den Einrich- tungsablauf fuehre?" +"Hallo, ich bin Ihr Original Prusa i3 Drucker. M\xefchten Sie, dass ich Sie durch den Einricht- ungsablauf f\xf5hre?" #MSG_FILAMENTCHANGE c=18 "Change filament" @@ -424,39 +424,39 @@ #MSG_SELFTEST_CHECK_BED c=20 "Checking bed" -"Pruefe Bett" +"Pr\xf5fe Bett" #MSG_SELFTEST_CHECK_ENDSTOPS c=20 "Checking endstops" -"Pruefe Endschalter" +"Pr\xf5fe Endschalter" #MSG_SELFTEST_CHECK_HOTEND c=20 "Checking hotend" -"Pruefe Duese" +"Pr\xf5fe D\xf5se" #MSG_SELFTEST_CHECK_FSENSOR c=20 "Checking sensors" -"Pruefe Sensoren" +"Pr\xf5fe Sensoren" #MSG_CHECKING_X c=20 "Checking X axis" -"Pruefe X Achse" +"Pr\xf5fe X Achse" #MSG_CHECKING_Y c=20 "Checking Y axis" -"Pruefe Y Achse" +"Pr\xf5fe Y Achse" #MSG_SELFTEST_CHECK_Z c=20 "Checking Z axis" -"Pruefe Z Achse" +"Pr\xf5fe Z Achse" #MSG_CHOOSE_EXTRUDER c=20 "Choose extruder:" -"Extruder waehlen:" +"Extruder w\xe1hlen:" #MSG_CHOOSE_FILAMENT c=20 "Choose filament:" -"Waehle Filament:" +"W\xe1hle Filament:" #MSG_FILAMENT c=17 "Filament" @@ -464,11 +464,11 @@ #MSG_WIZARD_XYZ_CAL c=20 r=8 "I will run xyz calibration now. It will take approx. 12 mins." -"Ich werde jetzt die XYZ-Kalibrierung durchfuehren. Es wird ca. 12 Minuten dauern." +"Ich werde jetzt die XYZ-Kalibrierung durchf\xf5hren. Es wird ca. 12 Minuten dauern." #MSG_WIZARD_Z_CAL c=20 r=8 "I will run z calibration now." -"Ich werde jetzt die Z Kalibrierung durchfuehren." +"Ich werde jetzt die Z Kalibrierung durchf\xf5hren." #MSG_WATCH c=18 "Info screen" @@ -492,11 +492,11 @@ #MSG_WIZARD_WELCOME_SHIPPING c=20 r=16 "Hi, I am your Original Prusa i3 printer. I will guide you through a short setup process, in which the Z-axis will be calibrated. Then, you will be ready to print." -"Hallo, ich bin Ihr Original Prusa i3 Drucker. Ich werde Sie durch einen kurzen Einrichtungsprozess fuehren, bei dem die Z-Achse kalibriert wird. Danach sind Sie bereit fuer den Druck." +"Hallo, ich bin Ihr Original Prusa i3 Drucker. Ich werde Sie durch einen kurzen Einrichtungsprozess f\xf5hren, bei dem die Z-Achse kalibriert wird. Danach sind Sie bereit f\xf5r den Druck." #MSG_ADDITIONAL_SHEETS c=20 r=9 "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets." -"Wenn Sie zusaetzliche Stahlbleche haben, kalibrieren Sie deren Voreinstellungen unter Einstellungen - HW Setup - Stahlbleche." +"Wenn Sie zus\xe1tzliche Stahlbleche haben, kalibrieren Sie deren Voreinstellungen unter Einstellungen - HW Setup - Stahlbleche." #MSG_LAST_PRINT c=18 "Last print" @@ -504,7 +504,7 @@ #MSG_SELFTEST_EXTRUDER_FAN c=20 "Left hotend fan?" -"Extruder Luefter?" +"Extruderl\xf5fter?" #MSG_LEFT c=10 "Left" @@ -524,7 +524,7 @@ #MSG_INSERT_FIL c=20 r=6 "Insert the filament (do not load it) into the extruder and then press the knob." -"Stecken Sie das Filament (nicht laden) in den Extruder und druecken Sie dann den Knopf." +"Stecken Sie das Filament (nicht laden) in den Extruder und dr\xf5cken Sie dann den Knopf." #MSG_LOAD_FILAMENT c=17 "Load filament" @@ -536,7 +536,7 @@ #MSG_LOADING_FILAMENT c=20 "Loading filament" -"Filament laedt" +"Filament l\xe1dt" #MSG_ITERATION c=12 "Iteration" @@ -556,7 +556,7 @@ #MSG_MAIN c=18 "Main" -"Hauptmenue" +"Hauptmen\xf5" #MSG_BL_HIGH c=12 "Level Bright" @@ -568,7 +568,7 @@ #MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=20 r=3 "Measuring reference height of calibration point" -"Messen der Referenzhoehe des Kalibrierpunktes" +"Messen der Referenzh\xefhe des Kalibrierpunktes" #MSG_MESH_BED_LEVELING c=18 "Mesh Bed Leveling" @@ -584,7 +584,7 @@ #MSG_MEASURED_SKEW c=14 "Measured skew" -"Schraeglauf" +"Schr\xe1glauf" #MSG_MMU_FAILS c=15 "MMU fails" @@ -684,7 +684,7 @@ #MSG_NEW_FIRMWARE_AVAILABLE c=20 r=2 "New firmware version available:" -"Neue Firmware- Version verfuegbar:" +"Neue Firmware- Version verf\xf5gbar:" #MSG_SELFTEST_FAN_NO c=19 "Not spinning" @@ -692,15 +692,15 @@ #MSG_WIZARD_V2_CAL c=20 r=8 "Now I will calibrate distance between tip of the nozzle and heatbed surface." -"Jetzt werde ich den Abstand zwischen Duesenspitze und Druckbett kalibrieren." +"Jetzt werde ich den Abstand zwischen D\xf5senspitze und Druckbett kalibrieren." #MSG_WIZARD_WILL_PREHEAT c=20 r=4 "Now I will preheat nozzle for PLA." -"Jetzt werde ich die Duese fuer PLA vorheizen." +"Jetzt werde ich die D\xf5se f\xf5r PLA vorheizen." #MSG_NOZZLE c=12 "Nozzle" -"Duese" +"D\xf5se" #MSG_DEFAULT_SETTINGS_LOADED c=20 r=6 "Old settings found. Default PID, Esteps etc. will be set." @@ -712,7 +712,7 @@ #MSG_NOZZLE_FAN c=10 "Nozzle FAN" -"Duesevent." +"Druckl\xf5ft." #MSG_PAUSE_PRINT c=18 "Pause print" @@ -732,23 +732,23 @@ #MSG_PINDA_PREHEAT c=20 "PINDA Heating" -"PINDA erwaermen" +"PINDA erw\xe1rmen" #MSG_PAPER c=20 r=10 "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately." -"Legen Sie ein Blatt Papier unter die Duese waehrend der Kalibrierung der ersten 4 Punkte. Wenn die Duese das Papier erfasst, den Drucker sofort ausschalten." +"Legen Sie ein Blatt Papier unter die D\xf5se w\xe1hrend der Kalibrierung der ersten 4 Punkte. Wenn die D\xf5se das Papier erfasst, den Drucker sofort ausschalten." #MSG_WIZARD_CLEAN_HEATBED c=20 r=8 "Please clean heatbed and then press the knob." -"Bitte reinigen Sie das Heizbett und druecken Sie dann den Knopf." +"Bitte reinigen Sie das Heizbett und dr\xf5cken Sie dann den Knopf." #MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 "Please clean the nozzle for calibration. Click when done." -"Bitte entfernen Sie ueberstehendes Filament von der Duese. Klicken wenn sauber." +"Bitte entfernen Sie \xf5berstehendes Filament von der D\xf5se. Klicken wenn sauber." #MSG_SELFTEST_PLEASECHECK c=20 "Please check:" -"Bitte pruefe:" +"Bitte pr\xf5fen:" #MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer." @@ -756,7 +756,7 @@ #MSG_CHECK_IDLER c=20 r=5 "Please open idler and remove filament manually." -"Bitte Spannrolle oeffnen und Fila- ment von Hand entfernen" +"Bitte Spannrolle \xefffnen und Filament von Hand entfernen" #MSG_PLACE_STEEL_SHEET c=20 r=5 "Please place steel sheet on heatbed." @@ -764,7 +764,7 @@ #MSG_PRESS_TO_UNLOAD c=20 r=4 "Please press the knob to unload filament" -"Bitte druecken Sie den Knopf um das Filament zu entladen." +"Bitte dr\xf5cken Sie den Knopf um das Filament zu entladen." #MSG_PULL_OUT_FILAMENT c=20 r=4 "Please pull out filament immediately" @@ -772,7 +772,7 @@ #MSG_EJECT_REMOVE c=20 r=4 "Please remove filament and then press the knob." -"Bitte Filament entfernen und dann den Knopf druecken" +"Bitte Filament entfernen und dann den Knopf dr\xf5cken" #MSG_REMOVE_STEEL_SHEET c=20 r=4 "Please remove steel sheet from heatbed." @@ -780,7 +780,7 @@ #MSG_RUN_XYZ c=20 r=4 "Please run XYZ calibration first." -"Bitte zuerst XYZ Kalibrierung ausfuehren." +"Bitte zuerst XYZ Kalibrierung ausf\xf5hren." #MSG_UPDATE_MMU2_FW c=20 r=4 "Please update firmware in your MMU2. Waiting for reset." @@ -796,7 +796,7 @@ #MSG_PREHEAT_NOZZLE c=20 "Preheat the nozzle!" -"Duese vorheizen!" +"D\xf5se vorheizen!" #MSG_PREHEAT c=18 "Preheat" @@ -804,7 +804,7 @@ #MSG_WIZARD_HEATING c=20 r=3 "Preheating nozzle. Please wait." -"Vorheizen der Duese. Bitte warten." +"Vorheizen der D\xf5se. Bitte warten." #MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 "Please upgrade." @@ -812,7 +812,7 @@ #MSG_PRESS_TO_PREHEAT c=20 r=4 "Press the knob to preheat nozzle and continue." -"Bitte druecken Sie den Knopf um die Duese vorzuheizen und fortzufahren." +"Bitte dr\xf5cken Sie den Knopf um die D\xf5se vorzuheizen und fortzufahren." #MSG_FS_PAUSE c=5 "Pause" @@ -836,7 +836,7 @@ #MSG_SELFTEST_PRINT_FAN_SPEED c=18 "Print fan:" -"Druckvent.:" +"Druckl\xf5fter:" #MSG_CARD_MENU c=18 "Print from SD" @@ -844,7 +844,7 @@ #MSG_PRESS_KNOB c=20 "Press the knob" -"Knopf druecken zum" +"Knopf dr\xf5cken zum" #MSG_PRINT_PAUSED c=20 "Print paused" @@ -852,7 +852,7 @@ #MSG_RESUME_NOZZLE_TEMP c=20 r=4 "Press the knob to resume nozzle temperature." -"Druecken Sie den Knopf um die Duesentemperatur wiederherzustellen" +"Dr\xf5cken Sie den Knopf um die D\xf5sentemperatur wiederherzustellen" #MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow." @@ -860,15 +860,15 @@ #MSG_PRINT_FAN c=10 "Print FAN" -"Druckvent." +"Druckl\xf5ft." #MSG_WIZARD_LOAD_FILAMENT c=20 r=6 "Please insert filament into the extruder, then press the knob to load it." -"Bitte legen Sie das Filament in den Extruder ein und druecken Sie dann den Knopf, um es zu laden." +"Bitte legen Sie das Filament in den Extruder ein und dr\xf5cken Sie dann den Knopf, um es zu laden." #MSG_MMU_INSERT_FILAMENT_FIRST_TUBE c=20 r=6 "Please insert filament into the first tube of the MMU, then press the knob to load it." -"Bitte stecken Sie das Filament in den ersten Schlauch der MMU und druecken Sie dann den Knopf, um es zu laden." +"Bitte stecken Sie das Filament in den ersten Schlauch der MMU und dr\xf5cken Sie dann den Knopf, um es zu laden." #MSG_PLEASE_LOAD_PLA c=20 r=4 "Please load filament first." @@ -884,7 +884,7 @@ #MSG_CHECK_IR_CONNECTION c=20 r=4 "Please check the IR sensor connection, unload filament if present." -"Bitte IR Sensor Verbindungen ueber- pruefen und Filament entladen ist." +"Bitte IR Sensor Verbindungen \xf5ber- pr\xf5fen und Filament entladen ist." #MSG_RECOVERING_PRINT c=20 "Recovering print" @@ -892,7 +892,7 @@ #MSG_REMOVE_OLD_FILAMENT c=20 r=5 "Remove old filament and press the knob to start loading new filament." -"Entfernen Sie das alte Filament und druecken Sie den Knopf, um das neue zu laden." +"Entfernen Sie das alte Filament und dr\xf5cken Sie den Knopf, um das neue zu laden." #MSG_CALIBRATE_BED_RESET c=18 "Reset XYZ calibr." @@ -900,7 +900,7 @@ #MSG_RESET c=14 "Reset" -"Ruecksetzen" +"R\xf5cksetzen" #MSG_RESUME_PRINT c=18 "Resume print" @@ -920,7 +920,7 @@ #MSG_WIZARD_RERUN c=20 r=7 "Running Wizard will delete current calibration results and start from the beginning. Continue?" -"Der Assistent wird die aktuellen Kalibrierungsdaten loeschen und von vorne beginnen. Weiterfahren?" +"Der Assistent wird die aktuellen Kalibrierungsdaten l\xefschen und von vorne beginnen. Weiterfahren?" #MSG_SD_CARD c=8 "SD card" @@ -936,7 +936,7 @@ #MSG_LANGUAGE_SELECT c=18 "Select language" -"Waehle Sprache" +"W\xe1hle Sprache" #MSG_SELFTEST_OK c=20 "Self test OK" @@ -960,11 +960,11 @@ #MSG_FORCE_SELFTEST c=20 r=8 "Selftest will be run to calibrate accurate sensorless rehoming." -"Selbsttest im Gang, um die genaue Rueck- kehr zum Nullpunkt ohne Sensor zu kalibrieren" +"Selbsttest wird gestartet, um Startposition zu kalibrieren." #MSG_SEL_PREHEAT_TEMP c=20 r=6 "Select nozzle preheat temperature which matches your material." -"Bitte Vorheiztemperatur auswaehlen, die Ihrem Material entspricht." +"Bitte Vorheiztemperatur ausw\xe1hlen, die Ihrem Material entspricht." #MSG_SET_TEMPERATURE c=20 "Set temperature:" @@ -996,7 +996,7 @@ #MSG_SEVERE_SKEW c=14 "Severe skew" -"Sehr Schraeg" +"Sehr schr\xe1g" #MSG_SORT_ALPHA c=8 "Alphabet" @@ -1012,7 +1012,7 @@ #MSG_SLIGHT_SKEW c=14 "Slight skew" -"Leicht Schraeg" +"Leicht schr\xe1g" #MSG_SOUND c=7 "Sound" @@ -1020,7 +1020,7 @@ #MSG_RUNOUTS c=7 "Runouts" -"Maengel" +"M\xe1ngel" #MSG_Z-LEVELING_ENFORCED c=20 r=4 "Some problem encountered, Z-leveling enforced ..." @@ -1040,7 +1040,7 @@ #MSG_TEMP_CAL_WARNING c=20 r=4 "Stable ambient temperature 21-26C is needed a rigid stand is required." -"Stabile Umgebungs- temperatur 21-26C und feste Stand- flaeche erforderlich" +"Stabile Umgebungs- temperatur 21-26C und feste Stand- fl\xe1che erforderlich" #MSG_STATISTICS c=18 "Statistics" @@ -1064,7 +1064,7 @@ #MSG_SELECT_FILAMENT c=20 "Select filament:" -"Filament auswaehlen:" +"Filament ausw\xe1hlen:" #MSG_TEMP_CALIBRATION c=14 "Temp. cal." @@ -1072,7 +1072,7 @@ #MSG_SELECT_TEMP_MATCHES_MATERIAL c=20 r=4 "Select temperature which matches your material." -"Waehlen Sie die Temperatur, die zu Ihrem Material passt." +"W\xe1hlen Sie die Temperatur, die zu Ihrem Material passt." #MSG_CALIBRATION_PINDA_MENU c=17 "Temp. calibration" @@ -1088,7 +1088,7 @@ #MSG_FS_VERIFIED c=20 r=3 "Sensor verified, remove the filament now." -"Sensor ueberprueft, entladen Sie jetzt das Filament." +"Sensor \xf5berpr\xf5ft, entladen Sie jetzt das Filament." #MSG_TEMPERATURE c=18 "Temperature" @@ -1100,7 +1100,7 @@ #MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9 "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow." -"Es ist noch not- wendig die Z- Kalibrierung aus- zufuehren. Bitte befolgen Sie das Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrierablauf." +"Es ist noch not- wendig die Z- Kalibrierung aus- zuf\xf5hren. Bitte befolgen Sie das Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrierablauf." #MSG_TOTAL_FILAMENT c=19 "Total filament" @@ -1156,23 +1156,23 @@ #MSG_WAITING_TEMP c=20 r=4 "Waiting for nozzle and bed cooling" -"Warten bis Heizung und Bett abgekuehlt sind" +"Warten bis Heizung und Bett abgek\xf5hlt sind" #MSG_WAITING_TEMP_PINDA c=20 r=3 "Waiting for PINDA probe cooling" -"Warten, bis PINDA- Sonde abgekuehlt ist" +"Warten, bis PINDA- Sonde abgek\xf5hlt ist" #MSG_CHANGED_BOTH c=20 r=4 "Warning: both printer type and motherboard type changed." -"Warnung: Druckertyp und Platinentyp wurden beide geaendert." +"Warnung: Druckertyp und Platinentyp wurden beide ge\xe1ndert." #MSG_CHANGED_MOTHERBOARD c=20 r=4 "Warning: motherboard type changed." -"Warnung: Platinentyp wurde geaendert." +"Warnung: Platinentyp wurde ge\xe1ndert." #MSG_CHANGED_PRINTER c=20 r=4 "Warning: printer type changed." -"Warnung: Druckertyp wurde geaendert." +"Warnung: Druckertyp wurde ge\xe1ndert." #MSG_UNLOAD_SUCCESSFUL c=20 r=2 "Was filament unload successful?" @@ -1200,19 +1200,19 @@ #MSG_WIZARD_QUIT c=20 r=8 "You can always resume the Wizard from Calibration -> Wizard." -"Sie koennen den Assistenten immer im Menu neu starten: Kalibrierung -> Assistent" +"Sie k\xefnnen den Assistenten immer im Menu neu starten: Kalibrierung -> Assistent" #MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 "XYZ calibration all right. Skew will be corrected automatically." -"XYZ Kalibrierung in Ordnung. Schraeglauf wird automatisch korrigiert." +"XYZ Kalibrierung in Ordnung. Schr\xe1glauf wird automatisch korrigiert." #MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 "XYZ calibration all right. X/Y axes are slightly skewed. Good job!" -"XYZ Kalibrierung in Ordnung. X/Y Achsen sind etwas schraeg. Gut gemacht!" +"XYZ Kalibrierung in Ordnung. X/Y Achsen sind etwas schr\xe1g. Gut gemacht!" #MSG_TIMEOUT c=12 "Timeout" -"Verzoegerung" +"\x00" #MSG_X_CORRECTION c=13 "X-correct:" @@ -1220,15 +1220,15 @@ #MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" -"XYZ-Kalibrierung ok. X/Y-Achsen sind senkrecht zueinander Glueckwunsch!" +"XYZ-Kalibrierung ok. X/Y-Achsen sind senkrecht zueinander Gl\xf5ckwunsch!" #MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 "XYZ calibration compromised. Front calibration points not reachable." -"XYZ-Kalibrierung beeintraechtigt. Vordere Kalibrierpunkte nicht erreichbar." +"XYZ-Kalibrierung beeintr\xe1chtigt. Vordere Kalibrierpunkte nicht erreichbar." #MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 "XYZ calibration compromised. Right front calibration point not reachable." -"XYZ-Kalibrierung beeintraechtigt. Rechter vorderer Kalibrierpunkt nicht erreichbar." +"XYZ-Kalibrierung beeintr\xe1chtigt. Rechter vorderer Kalibrierpunkt nicht erreichbar." #MSG_LOAD_ALL c=17 "Load all" @@ -1252,11 +1252,11 @@ #MSG_WIZARD_V2_CAL_2 c=20 r=12 "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)." -"Der Drucker beginnt mit dem Drucken einer Zickzacklinie. Drehen Sie den Knopf, bis Sie die optimale Hoehe erreicht haben. Ueberpruefen Sie die Bilder im Handbuch (Kapitel Kalibrierung)." +"Der Drucker beginnt mit dem Drucken einer Zickzacklinie. Drehen Sie den Knopf, bis Sie die optimale H\xefhe erreicht haben. \xf5berpr\xf5fen Sie die Bilder im Handbuch (Kapitel Kalibrierung)." #MSG_FIL_FAILED c=20 r=5 "Verification failed, remove the filament and try again." -"Ueberpruefung fehl- geschlagen, entladen Sie das Filament und versuchen Sie es erneut." +"\xf5berpr\xf5fung fehl- geschlagen, entladen Sie das Filament und versuchen Sie es erneut." #MSG_Y_CORRECTION c=13 "Y-correct:" @@ -1272,7 +1272,7 @@ #MSG_BACK c=18 "Back" -"Zurueck" +"Zur\xf5ck" #MSG_CHECKS c=18 "Checks" @@ -1320,31 +1320,31 @@ #MSG_NOZZLE_DIAMETER c=10 "Nozzle d." -"Duese D." +"D\xf5sen Dia." #MSG_GCODE_DIFF_CONTINUE c=20 r=4 "G-code sliced for a different level. Continue?" -"G-Code ist fuer einen anderen Level geslict. Fortfahren?" +"G-Code ist f\xf5r einen anderen Level geslict. Fortfahren?" #MSG_GCODE_DIFF_CANCELLED c=20 r=7 "G-code sliced for a different level. Please re-slice the model again. Print cancelled." -"G-Code ist fuer einen anderen Level geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen." +"G-Code ist f\xf5r einen anderen Level geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen." #MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5 "G-code sliced for a different printer type. Continue?" -"G-Code ist fuer einen anderen Drucker geslict. Fortfahren?" +"G-Code ist f\xf5r einen anderen Drucker geslict. Fortfahren?" #MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=8 "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled." -"G-Code ist fuer einen anderen Drucker geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen." +"G-Code ist f\xf5r einen anderen Drucker geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen." #MSG_GCODE_NEWER_FIRMWARE_CONTINUE c=20 r=5 "G-code sliced for a newer firmware. Continue?" -"G-Code ist fuer eine neuere Firmware geslict. Fortfahren?" +"G-Code ist f\xf5r eine neuere Firmware geslict. Fortfahren?" #MSG_GCODE_NEWER_FIRMWARE_CANCELLED c=20 r=8 "G-code sliced for a newer firmware. Please update the firmware. Print cancelled." -"G-Code ist fuer eine neuere Firmware geslict. Bitte die Firmware updaten. Druck abgebrochen." +"G-Code ist f\xf5r eine neuere Firmware geslict. Bitte die Firmware updaten. Druck abgebrochen." #MSG_PREHEATING_TO_CUT c=20 "Preheating to cut" @@ -1356,11 +1356,11 @@ #MSG_NOZZLE_DIFFERS_CONTINUE c=20 r=5 "Printer nozzle diameter differs from the G-code. Continue?" -"Der Durchmesser der Druckerduese weicht vom G-Code ab. Fortfahren?" +"Der Durchmesser der Druckerd\xf5se weicht vom G-Code ab. Fortfahren?" #MSG_NOZZLE_DIFFERS_CANCELLED c=20 r=9 "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled." -"Der Durchmesser der Druckerduese weicht vom G-Code ab. Bitte ueberpruefen Sie den Wert in den Einstellungen. Druck abgebrochen." +"Der Durchmesser der Druckerd\xf5se weicht vom G-Code ab. Bitte \xf5berpr\xf5fen Sie den Wert in den Einstellungen. Druck abgebrochen." #MSG_SELFTEST_FS_LEVEL c=20 "%s level expected" diff --git a/lang/po/Firmware_de.po b/lang/po/Firmware_de.po index c4163afa..ea7cd410 100644 --- a/lang/po/Firmware_de.po +++ b/lang/po/Firmware_de.po @@ -7,8 +7,8 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Language: de\n" "Project-Id-Version: Prusa-Firmware\n" -"POT-Creation-Date: Sun 19 Dec 2021 07:17:27 PM CET\n" -"PO-Revision-Date: Sun 19 Dec 2021 07:17:27 PM CET\n" +"POT-Creation-Date: Wed 26 Jan 2022 05:40:56 PM CET\n" +"PO-Revision-Date: Wed 26 Jan 2022 05:40:56 PM CET\n" "Language-Team: \n" "X-Generator: Poedit 2.0.7\n" "X-Poedit-SourceCharset: UTF-8\n" @@ -21,7 +21,7 @@ msgid " 0.3 or older" msgstr " 0.3 oder aelter" # MSG_FS_V_03_OR_OLDER c=18 -#: Marlin_main.cpp:9884 +#: Marlin_main.cpp:9887 msgid "FS v0.3 or older" msgstr "FS 0.3 oder aelter" @@ -31,7 +31,7 @@ msgid " 0.4 or newer" msgstr " 0.4 oder neuer" # MSG_FS_V_04_OR_NEWER c=18 -#: Marlin_main.cpp:9883 +#: Marlin_main.cpp:9886 msgid "FS v0.4 or newer" msgstr "FS 0.4 oder neuer" @@ -61,7 +61,7 @@ msgid "Adjusting Z:" msgstr "Z Anpassen:" # MSG_SELFTEST_CHECK_ALLCORRECT c=20 -#: ultralcd.cpp:8490 +#: ultralcd.cpp:8411 msgid "All correct" msgstr "Alles richtig" @@ -96,7 +96,7 @@ msgid "Auto home" msgstr "Startposition" # MSG_AUTOLOAD_FILAMENT c=18 -#: ultralcd.cpp:6732 +#: ultralcd.cpp:6653 msgid "AutoLoad filament" msgstr "AutoLaden Filament" @@ -111,17 +111,17 @@ msgid "Autoloading filament is active, just press the knob and insert filament.. msgstr "Automatisches Laden Filament ist aktiv, Knopf druecken und Filament einlegen..." # MSG_SELFTEST_AXIS_LENGTH c=20 -#: ultralcd.cpp:8173 +#: ultralcd.cpp:8094 msgid "Axis length" msgstr "Achsenlaenge" # MSG_SELFTEST_AXIS c=16 -#: ultralcd.cpp:8174 +#: ultralcd.cpp:8095 msgid "Axis" msgstr "Achse" # MSG_SELFTEST_BEDHEATER c=20 -#: ultralcd.cpp:8131 +#: ultralcd.cpp:8052 msgid "Bed/Heater" msgstr "Bett/Heizung" @@ -176,7 +176,7 @@ msgid "Blackout occurred. Recover print?" msgstr "Stromausfall! Druck wiederherstellen?" # MSG_CALIBRATING_HOME c=20 -#: ultralcd.cpp:8492 +#: ultralcd.cpp:8413 msgid "Calibrating home" msgstr "Kalibriere Start" @@ -226,12 +226,12 @@ msgid "Calibration" msgstr "Kalibrierung" # MSG_SD_REMOVED c=20 -#: ultralcd.cpp:8939 +#: ultralcd.cpp:8860 msgid "Card removed" msgstr "SD Karte entfernt" # MSG_CHECKING_FILE c=17 -#: ultralcd.cpp:8580 +#: ultralcd.cpp:8501 msgid "Checking file" msgstr "Ueberpruefe Datei" @@ -326,17 +326,17 @@ msgid "Ejecting filament" msgstr "werfe Filament aus" # MSG_SELFTEST_ENDSTOP_NOTHIT c=20 -#: ultralcd.cpp:8149 +#: ultralcd.cpp:8070 msgid "Endstop not hit" msgstr "Ende nicht getroffen" # MSG_SELFTEST_ENDSTOP c=16 -#: ultralcd.cpp:8144 +#: ultralcd.cpp:8065 msgid "Endstop" msgstr "Endanschlag" # MSG_SELFTEST_ENDSTOPS c=20 -#: ultralcd.cpp:8135 +#: ultralcd.cpp:8056 msgid "Endstops" msgstr "Endschalter" @@ -376,7 +376,7 @@ msgid "ERROR:" msgstr "FEHLER:" # MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18 -#: ultralcd.cpp:8498 +#: ultralcd.cpp:8419 msgid "Extruder fan:" msgstr "Extruder Luefter:" @@ -391,7 +391,7 @@ msgid "Extruder" msgstr "" # MSG_MMU_FAIL_STATS c=18 -#: ultralcd.cpp:6754 +#: ultralcd.cpp:6675 msgid "Fail stats MMU" msgstr "MMU-Fehler" @@ -401,7 +401,7 @@ msgid "F. autoload" msgstr "F. autoladen" # MSG_FAIL_STATS c=18 -#: ultralcd.cpp:6751 +#: ultralcd.cpp:6672 msgid "Fail stats" msgstr "Fehlerstatistik" @@ -461,7 +461,7 @@ msgid "FS Action" msgstr "FS Aktion" # MSG_FILE_INCOMPLETE c=20 r=3 -#: ultralcd.cpp:8634 +#: ultralcd.cpp:8555 msgid "File incomplete. Continue anyway?" msgstr "Datei unvollstaendig Trotzdem fortfahren?" @@ -486,7 +486,7 @@ msgid "Fix the issue and then press button on MMU unit." msgstr "Beseitigen Sie das Problem und druecken Sie dann den Knopf am MMU." # MSG_FLOW c=15 -#: ultralcd.cpp:6888 +#: ultralcd.cpp:6809 msgid "Flow" msgstr "Durchfluss" @@ -501,17 +501,17 @@ msgid "Front side[um]" msgstr "Vorne [um]" # MSG_SELFTEST_FANS c=20 -#: ultralcd.cpp:8179 +#: ultralcd.cpp:8100 msgid "Front/left fans" msgstr "Teile/Extr. Luefter" # MSG_SELFTEST_HEATERTHERMISTOR c=20 -#: ultralcd.cpp:8127 +#: ultralcd.cpp:8048 msgid "Heater/Thermistor" msgstr "Heizung/Thermistor" # MSG_BED_HEATING_SAFETY_DISABLED c=20 r=4 -#: Marlin_main.cpp:9874 +#: Marlin_main.cpp:9877 msgid "Heating disabled by safety timer." msgstr "Heizung durch Sicherheitstimer deaktiviert." @@ -551,12 +551,12 @@ msgid "Checking bed" msgstr "Pruefe Bett" # MSG_SELFTEST_CHECK_ENDSTOPS c=20 -#: ultralcd.cpp:8481 +#: ultralcd.cpp:8402 msgid "Checking endstops" msgstr "Pruefe Endschalter" # MSG_SELFTEST_CHECK_HOTEND c=20 -#: ultralcd.cpp:8487 +#: ultralcd.cpp:8408 msgid "Checking hotend" msgstr "Pruefe Duese" @@ -576,7 +576,7 @@ msgid "Checking Y axis" msgstr "Pruefe Y Achse" # MSG_SELFTEST_CHECK_Z c=20 -#: ultralcd.cpp:8484 +#: ultralcd.cpp:8405 msgid "Checking Z axis" msgstr "Pruefe Z Achse" @@ -671,7 +671,7 @@ msgid "Live adjust Z" msgstr "Z einstellen" # MSG_INSERT_FIL c=20 r=6 -#: ultralcd.cpp:7380 +#: ultralcd.cpp:7301 msgid "Insert the filament (do not load it) into the extruder and then press the knob." msgstr "Stecken Sie das Filament (nicht laden) in den Extruder und druecken Sie dann den Knopf." @@ -696,12 +696,12 @@ msgid "Iteration" msgstr "Wiederholung" # MSG_LOOSE_PULLEY c=20 -#: ultralcd.cpp:8167 +#: ultralcd.cpp:8088 msgid "Loose pulley" msgstr "Lose Riemenscheibe" # MSG_LOAD_TO_NOZZLE c=18 -#: ultralcd.cpp:6717 +#: ultralcd.cpp:6638 msgid "Load to nozzle" msgstr "In Nozzle laden" @@ -851,7 +851,7 @@ msgid "No move." msgstr "Keine Bewegung." # MSG_NO_CARD c=18 -#: ultralcd.cpp:6697 +#: ultralcd.cpp:6618 msgid "No SD card" msgstr "Keine SD Karte" @@ -866,7 +866,7 @@ msgid "No" msgstr "Nein" # MSG_SELFTEST_NOTCONNECTED c=20 -#: ultralcd.cpp:8128 +#: ultralcd.cpp:8049 msgid "Not connected" msgstr "Nicht angeschlossen" @@ -951,7 +951,7 @@ msgid "Please clean the nozzle for calibration. Click when done." msgstr "Bitte entfernen Sie ueberstehendes Filament von der Duese. Klicken wenn sauber." # MSG_SELFTEST_PLEASECHECK c=20 -#: ultralcd.cpp:8122 +#: ultralcd.cpp:8043 msgid "Please check:" msgstr "Bitte pruefe:" @@ -1016,7 +1016,7 @@ msgid "Preheat the nozzle!" msgstr "Duese vorheizen!" # MSG_PREHEAT c=18 -#: ultralcd.cpp:6655 +#: ultralcd.cpp:6576 msgid "Preheat" msgstr "Vorheizen" @@ -1031,7 +1031,7 @@ msgid "Please upgrade." msgstr "Bitte aktualisieren." # MSG_PRESS_TO_PREHEAT c=20 r=4 -#: Marlin_main.cpp:12049 +#: Marlin_main.cpp:12052 msgid "Press the knob to preheat nozzle and continue." msgstr "Bitte druecken Sie den Knopf um die Duese vorzuheizen und fortzufahren." @@ -1061,7 +1061,7 @@ msgid "Preheating to unload" msgstr "Heizen zum Entladen" # MSG_SELFTEST_PRINT_FAN_SPEED c=18 -#: ultralcd.cpp:8501 +#: ultralcd.cpp:8422 msgid "Print fan:" msgstr "Druckvent.:" @@ -1116,17 +1116,17 @@ msgid "Rear side [um]" msgstr "Hinten [um]" # MSG_UNLOAD_FILAMENT_REPEAT c=20 r=4 -#: ultralcd.cpp:7404 +#: ultralcd.cpp:7325 msgid "Please unload the filament first, then repeat this action." msgstr "Bitte entladen Sie erst das Filament und versuchen Sie es nochmal." # MSG_CHECK_IR_CONNECTION c=20 r=4 -#: ultralcd.cpp:7407 +#: ultralcd.cpp:7328 msgid "Please check the IR sensor connection, unload filament if present." msgstr "Bitte IR Sensor Verbindungen ueber- pruefen und Filament entladen ist." # MSG_RECOVERING_PRINT c=20 -#: Marlin_main.cpp:11393 +#: Marlin_main.cpp:11396 msgid "Recovering print" msgstr "Druck wiederherst" @@ -1191,12 +1191,12 @@ msgid "Select language" msgstr "Waehle Sprache" # MSG_SELFTEST_OK c=20 -#: ultralcd.cpp:7679 +#: ultralcd.cpp:7600 msgid "Self test OK" msgstr "Selbsttest OK" # MSG_SELFTEST_START c=20 -#: ultralcd.cpp:7447 +#: ultralcd.cpp:7368 msgid "Self test start" msgstr "Selbsttest start" @@ -1206,7 +1206,7 @@ msgid "Selftest" msgstr "Selbsttest" # MSG_SELFTEST_ERROR c=20 -#: ultralcd.cpp:8121 +#: ultralcd.cpp:8042 msgid "Selftest error!" msgstr "Selbsttest Fehler!" @@ -1306,7 +1306,7 @@ msgid "Once" msgstr "Einmal" # MSG_SPEED c=15 -#: ultralcd.cpp:6882 +#: ultralcd.cpp:6803 msgid "Speed" msgstr "Geschwindigkeit" @@ -1336,12 +1336,12 @@ msgid "STOPPED." msgstr "GESTOPPT." # MSG_SUPPORT c=18 -#: ultralcd.cpp:6756 +#: ultralcd.cpp:6677 msgid "Support" msgstr "" # MSG_SELFTEST_SWAPPED c=16 -#: ultralcd.cpp:8180 +#: ultralcd.cpp:8101 msgid "Swapped" msgstr "Ausgetauscht" @@ -1376,7 +1376,7 @@ msgid "Temperature calibration is finished and active. Temp. calibration can be msgstr "Temp.kalibrierung ist fertig + aktiv. Temp.kalibrierung kann ausgeschaltet werden im Menu Einstellungen -> Temp.kal." # MSG_FS_VERIFIED c=20 r=3 -#: ultralcd.cpp:7411 +#: ultralcd.cpp:7332 msgid "Sensor verified, remove the filament now." msgstr "Sensor ueberprueft, entladen Sie jetzt das Filament." @@ -1406,7 +1406,7 @@ msgid "Total print time" msgstr "Gesamte Druckzeit" # MSG_TUNE c=18 -#: ultralcd.cpp:6653 +#: ultralcd.cpp:6574 msgid "Tune" msgstr "Feineinstellung" @@ -1586,7 +1586,7 @@ msgid "The printer will start printing a zig-zag line. Rotate the knob until you msgstr "Der Drucker beginnt mit dem Drucken einer Zickzacklinie. Drehen Sie den Knopf, bis Sie die optimale Hoehe erreicht haben. Ueberpruefen Sie die Bilder im Handbuch (Kapitel Kalibrierung)." # MSG_FIL_FAILED c=20 r=5 -#: ultralcd.cpp:7415 +#: ultralcd.cpp:7336 msgid "Verification failed, remove the filament and try again." msgstr "Ueberpruefung fehl- geschlagen, entladen Sie das Filament und versuchen Sie es erneut." @@ -1616,7 +1616,7 @@ msgid "Checks" msgstr "Kontrolle" # MSG_FALSE_TRIGGERING c=20 -#: ultralcd.cpp:8190 +#: ultralcd.cpp:8111 msgid "False triggering" msgstr "Falschtriggerung" @@ -1721,17 +1721,17 @@ msgid "Printer nozzle diameter differs from the G-code. Please check the value i msgstr "Der Durchmesser der Druckerduese weicht vom G-Code ab. Bitte ueberpruefen Sie den Wert in den Einstellungen. Druck abgebrochen." # MSG_SELFTEST_FS_LEVEL c=20 -#: ultralcd.cpp:8195 +#: ultralcd.cpp:8116 msgid "%s level expected" msgstr "%s Level erwartet" # MSG_RENAME c=18 -#: ultralcd.cpp:6579 +#: ultralcd.cpp:6500 msgid "Rename" msgstr "Umbenennen" # MSG_SELECT c=18 -#: ultralcd.cpp:6572 +#: ultralcd.cpp:6493 msgid "Select" msgstr "Auswahl" diff --git a/lang/po/new/de.po b/lang/po/new/de.po index 03675522..b57d7377 100644 --- a/lang/po/new/de.po +++ b/lang/po/new/de.po @@ -7,8 +7,8 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Language: de\n" "Project-Id-Version: Prusa-Firmware\n" -"POT-Creation-Date: Sun 19 Dec 2021 07:17:27 PM CET\n" -"PO-Revision-Date: Sun 19 Dec 2021 07:17:27 PM CET\n" +"POT-Creation-Date: Wed 26 Jan 2022 05:40:56 PM CET\n" +"PO-Revision-Date: Wed 26 Jan 2022 05:40:56 PM CET\n" "Language-Team: \n" "X-Generator: Poedit 2.0.7\n" "X-Poedit-SourceCharset: UTF-8\n" @@ -18,12 +18,12 @@ msgstr "" # MSG_IR_03_OR_OLDER c=18 #: messages.c:164 msgid " 0.3 or older" -msgstr " 0.3 oder aelter" +msgstr " 0.3 oder älter" # MSG_FS_V_03_OR_OLDER c=18 -#: Marlin_main.cpp:9884 +#: Marlin_main.cpp:9887 msgid "FS v0.3 or older" -msgstr "FS 0.3 oder aelter" +msgstr "FS v0.3 oder älter" # MSG_IR_04_OR_NEWER c=18 #: messages.c:163 @@ -31,9 +31,9 @@ msgid " 0.4 or newer" msgstr " 0.4 oder neuer" # MSG_FS_V_04_OR_NEWER c=18 -#: Marlin_main.cpp:9883 +#: Marlin_main.cpp:9886 msgid "FS v0.4 or newer" -msgstr "FS 0.4 oder neuer" +msgstr "FS v0.4 oder neuer" # MSG_IR_UNKNOWN c=18 #: messages.c:165 @@ -61,14 +61,14 @@ msgid "Adjusting Z:" msgstr "Z Anpassen:" # MSG_SELFTEST_CHECK_ALLCORRECT c=20 -#: ultralcd.cpp:8490 +#: ultralcd.cpp:8411 msgid "All correct" msgstr "Alles richtig" # MSG_WIZARD_DONE c=20 r=8 #: messages.c:118 msgid "All is done. Happy printing!" -msgstr "Alles abgeschlossen. Viel Spass beim Drucken!" +msgstr "Alles abgeschlossen. Viel Spaß beim Drucken!" # MSG_AMBIENT c=14 #: ultralcd.cpp:1727 @@ -83,7 +83,7 @@ msgstr "" # MSG_PRESS c=20 r=2 #: ultralcd.cpp:2485 msgid "and press the knob" -msgstr "und Knopf druecken" +msgstr "und Knopf drücken" # MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 #: ultralcd.cpp:3355 @@ -96,32 +96,32 @@ msgid "Auto home" msgstr "Startposition" # MSG_AUTOLOAD_FILAMENT c=18 -#: ultralcd.cpp:6732 +#: ultralcd.cpp:6653 msgid "AutoLoad filament" msgstr "AutoLaden Filament" # MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 #: ultralcd.cpp:4317 msgid "Autoloading filament available only when filament sensor is turned on..." -msgstr "Automatisches Laden Filament nur bei eingeschaltetem Fil. sensor verfuegbar..." +msgstr "Automatisches Laden Filament nur bei eingeschaltetem Fil. sensor verfügbar..." # MSG_AUTOLOADING_ENABLED c=20 r=4 #: ultralcd.cpp:2648 msgid "Autoloading filament is active, just press the knob and insert filament..." -msgstr "Automatisches Laden Filament ist aktiv, Knopf druecken und Filament einlegen..." +msgstr "Automatisches Laden Filament ist aktiv, Knopf drücken und Filament einlegen..." # MSG_SELFTEST_AXIS_LENGTH c=20 -#: ultralcd.cpp:8173 +#: ultralcd.cpp:8094 msgid "Axis length" -msgstr "Achsenlaenge" +msgstr "Achsenlänge" # MSG_SELFTEST_AXIS c=16 -#: ultralcd.cpp:8174 +#: ultralcd.cpp:8095 msgid "Axis" msgstr "Achse" # MSG_SELFTEST_BEDHEATER c=20 -#: ultralcd.cpp:8131 +#: ultralcd.cpp:8052 msgid "Bed/Heater" msgstr "Bett/Heizung" @@ -133,7 +133,7 @@ msgstr "Bett OK" # MSG_BED_HEATING c=20 #: messages.c:16 msgid "Bed Heating" -msgstr "Bett aufwaermen" +msgstr "Bett aufwärmen" # MSG_BED_CORRECTION_MENU c=18 #: ultralcd.cpp:5798 @@ -148,7 +148,7 @@ msgstr "Riementest" # MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=6 #: messages.c:17 msgid "Bed leveling failed. Sensor didn't trigger. Debris on nozzle? Waiting for reset." -msgstr "Z-Kal. fehlgeschlg. Sensor nicht ausgeloest. Schmutzige Duese? Warte auf Reset." +msgstr "Z-Kal. fehlgeschlg. Sensor nicht ausgelöst. Schmutzige Düse? Warte auf Reset." # MSG_BRIGHT c=6 #: messages.c:158 @@ -176,7 +176,7 @@ msgid "Blackout occurred. Recover print?" msgstr "Stromausfall! Druck wiederherstellen?" # MSG_CALIBRATING_HOME c=20 -#: ultralcd.cpp:8492 +#: ultralcd.cpp:8413 msgid "Calibrating home" msgstr "Kalibriere Start" @@ -203,7 +203,7 @@ msgstr ">Abbruch" # MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8 #: ultralcd.cpp:3318 msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done." -msgstr "XYZ Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf druecken." +msgstr "XYZ Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf drücken." # MSG_CALIBRATE_Z_AUTO c=20 r=2 #: messages.c:21 @@ -213,7 +213,7 @@ msgstr "Kalibrierung Z" # MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 #: ultralcd.cpp:3318 msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done." -msgstr "Z Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf druecken." +msgstr "Z Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf drücken." # MSG_HOMEYZ_DONE c=20 #: ultralcd.cpp:656 @@ -226,14 +226,14 @@ msgid "Calibration" msgstr "Kalibrierung" # MSG_SD_REMOVED c=20 -#: ultralcd.cpp:8939 +#: ultralcd.cpp:8860 msgid "Card removed" msgstr "SD Karte entfernt" # MSG_CHECKING_FILE c=17 -#: ultralcd.cpp:8580 +#: ultralcd.cpp:8501 msgid "Checking file" -msgstr "Ueberpruefe Datei" +msgstr "überprüfe Datei" # MSG_NOT_COLOR c=19 #: ultralcd.cpp:2565 @@ -243,12 +243,12 @@ msgstr "Falsche Farbe" # MSG_COOLDOWN c=18 #: messages.c:27 msgid "Cooldown" -msgstr "Abkuehlen" +msgstr "Abkühlen" # MSG_COPY_SEL_LANG c=20 r=3 #: ultralcd.cpp:4435 msgid "Copy selected language?" -msgstr "Gewaehlte Sprache kopieren?" +msgstr "Gewählte Sprache kopieren?" # MSG_CRASHDETECT c=13 #: messages.c:30 @@ -258,7 +258,7 @@ msgstr "Crash Erk." # MSG_CHOOSE_FIL_1ST_LAYERCAL c=20 r=7 #: ultralcd.cpp:4842 msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu." -msgstr "Waehlen Sie ein Filament fuer Erste Schichtkalibrierung aus und waehlen Sie es im On-Screen-Menu aus." +msgstr "Wählen Sie ein Filament für Erste- Schichtkalibrierung aus und wählen Sie es im On-Screen-Menu aus." # MSG_CRASH_DETECTED c=20 #: messages.c:29 @@ -268,7 +268,7 @@ msgstr "Crash erkannt." # MSG_CRASH_RESUME c=20 r=3 #: Marlin_main.cpp:651 msgid "Crash detected. Resume print?" -msgstr "Crash erkannt. Druck fortfuehren?" +msgstr "Crash erkannt. Druck fortführen?" # MSG_CRASH c=7 #: messages.c:28 @@ -298,7 +298,7 @@ msgstr "Motoren aus" # MSG_BABYSTEP_Z_NOT_SET c=20 r=12 #: messages.c:13 msgid "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." -msgstr "Der Abstand zwischen der Spitze der Duese und dem Bett ist noch nicht eingestellt. Bitte folgen Sie dem Handbuch, Kapitel Erste Schritte, Abschnitt Erste Schicht Kalibrierung." +msgstr "Der Abstand zwischen der Spitze der Düse und dem Bett ist noch nicht eingestellt. Bitte folgen Sie dem Handbuch, Kapitel Erste Schritte, Abschnitt Erste Schicht Kalibrierung." # MSG_FS_CONTINUE c=5 #: messages.c:152 @@ -308,7 +308,7 @@ msgstr "" # MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 #: ultralcd.cpp:5021 msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?" -msgstr "Moechten Sie den letzten Schritt wiederholen, um den Abstand zwischen Duese und Druckbett neu einzustellen?" +msgstr "Möchten Sie den letzten Schritt wiederholen, um den Abstand zwischen Düse und Druckbett neu einzustellen?" # MSG_EXTRUDER_CORRECTION c=13 #: ultralcd.cpp:5090 @@ -326,24 +326,24 @@ msgid "Ejecting filament" msgstr "werfe Filament aus" # MSG_SELFTEST_ENDSTOP_NOTHIT c=20 -#: ultralcd.cpp:8149 +#: ultralcd.cpp:8070 msgid "Endstop not hit" msgstr "Ende nicht getroffen" # MSG_SELFTEST_ENDSTOP c=16 -#: ultralcd.cpp:8144 +#: ultralcd.cpp:8065 msgid "Endstop" msgstr "Endanschlag" # MSG_SELFTEST_ENDSTOPS c=20 -#: ultralcd.cpp:8135 +#: ultralcd.cpp:8056 msgid "Endstops" msgstr "Endschalter" # MSG_STACK_ERROR c=20 r=4 #: msgid "Error - static memory has been overwritten" -msgstr "Fehler - statischer Speicher wurde ueberschrieben" +msgstr "Fehler - statischer Speicher wurde überschrieben" # MSG_CUT_FILAMENT c=16 #: messages.c:61 @@ -363,7 +363,7 @@ msgstr "Schneide filament" # MSG_FSENS_NOT_RESPONDING c=20 r=4 #: ultralcd.cpp:4330 msgid "ERROR: Filament sensor is not responding, please check connection." -msgstr "FEHLER: Filament- sensor reagiert nicht, bitte Verbindung pruefen." +msgstr "FEHLER: Filament- sensor reagiert nicht, bitte Verbindung prüfen." # MSG_DIM c=6 #: messages.c:159 @@ -376,9 +376,9 @@ msgid "ERROR:" msgstr "FEHLER:" # MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18 -#: ultralcd.cpp:8498 +#: ultralcd.cpp:8419 msgid "Extruder fan:" -msgstr "Extruder Luefter:" +msgstr "Extruderlüfter:" # MSG_INFO_EXTRUDER c=18 #: ultralcd.cpp:2040 @@ -391,7 +391,7 @@ msgid "Extruder" msgstr "" # MSG_MMU_FAIL_STATS c=18 -#: ultralcd.cpp:6754 +#: ultralcd.cpp:6675 msgid "Fail stats MMU" msgstr "MMU-Fehler" @@ -401,24 +401,24 @@ msgid "F. autoload" msgstr "F. autoladen" # MSG_FAIL_STATS c=18 -#: ultralcd.cpp:6751 +#: ultralcd.cpp:6672 msgid "Fail stats" msgstr "Fehlerstatistik" # MSG_FAN_SPEED c=14 #: messages.c:36 msgid "Fan speed" -msgstr "Luefter-Tempo" +msgstr "Lüfter-Tempo" # MSG_SELFTEST_FAN c=20 #: messages.c:91 msgid "Fan test" -msgstr "Lueftertest" +msgstr "Lüftertest" # MSG_FANS_CHECK c=13 #: messages.c:33 msgid "Fans check" -msgstr "Luefter Chk." +msgstr "Lüfter Check" # MSG_FSENSOR c=12 #: messages.c:49 @@ -428,7 +428,7 @@ msgstr "Fil. Sensor" # MSG_FIL_RUNOUTS c=15 #: messages.c:34 msgid "Fil. runouts" -msgstr "Fil. Maengel" +msgstr "Fil. Mängel" # MSG_FILAMENT_CLEAN c=20 r=2 #: messages.c:37 @@ -461,9 +461,9 @@ msgid "FS Action" msgstr "FS Aktion" # MSG_FILE_INCOMPLETE c=20 r=3 -#: ultralcd.cpp:8634 +#: ultralcd.cpp:8555 msgid "File incomplete. Continue anyway?" -msgstr "Datei unvollstaendig Trotzdem fortfahren?" +msgstr "Datei unvollständig Trotzdem fortfahren?" # MSG_FINISHING_MOVEMENTS c=20 #: messages.c:45 @@ -478,22 +478,22 @@ msgstr "Erste-Schicht Kal." # MSG_WIZARD_SELFTEST c=20 r=8 #: ultralcd.cpp:4942 msgid "First, I will run the selftest to check most common assembly problems." -msgstr "Zunaechst fuehre ich den Selbsttest durch, um die haeufigsten Probleme beim Zusammenbau zu ueberpruefen." +msgstr "Zunächst führe ich den Selbsttest durch, um die häufigsten Probleme beim Zusammenbau zu überprüfen." # MSG_MMU_FIX_ISSUE c=20 r=4 #: mmu.cpp:727 msgid "Fix the issue and then press button on MMU unit." -msgstr "Beseitigen Sie das Problem und druecken Sie dann den Knopf am MMU." +msgstr "Beseitigen Sie das Problem und drücken Sie dann den Knopf am MMU." # MSG_FLOW c=15 -#: ultralcd.cpp:6888 +#: ultralcd.cpp:6809 msgid "Flow" msgstr "Durchfluss" # MSG_SELFTEST_COOLING_FAN c=20 #: messages.c:88 msgid "Front print fan?" -msgstr "Teile Luefter?" +msgstr "Drucklüfter?" # MSG_BED_CORRECTION_FRONT c=14 #: ultralcd.cpp:3116 @@ -501,34 +501,34 @@ msgid "Front side[um]" msgstr "Vorne [um]" # MSG_SELFTEST_FANS c=20 -#: ultralcd.cpp:8179 +#: ultralcd.cpp:8100 msgid "Front/left fans" -msgstr "Teile/Extr. Luefter" +msgstr "Druck/Extr. Lüfter" # MSG_SELFTEST_HEATERTHERMISTOR c=20 -#: ultralcd.cpp:8127 +#: ultralcd.cpp:8048 msgid "Heater/Thermistor" msgstr "Heizung/Thermistor" # MSG_BED_HEATING_SAFETY_DISABLED c=20 r=4 -#: Marlin_main.cpp:9874 +#: Marlin_main.cpp:9877 msgid "Heating disabled by safety timer." msgstr "Heizung durch Sicherheitstimer deaktiviert." # MSG_HEATING_COMPLETE c=20 #: messages.c:51 msgid "Heating done." -msgstr "Aufwaermen OK." +msgstr "Aufwärmen OK." # MSG_HEATING c=20 #: messages.c:50 msgid "Heating" -msgstr "Aufwaermen" +msgstr "Aufwärmen" # MSG_WIZARD_WELCOME c=20 r=7 #: messages.c:121 msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?" -msgstr "Hallo, ich bin Ihr Original Prusa i3 Drucker. Moechten Sie, dass ich Sie durch den Einrich- tungsablauf fuehre?" +msgstr "Hallo, ich bin Ihr Original Prusa i3 Drucker. Möchten Sie, dass ich Sie durch den Einricht- ungsablauf führe?" # MSG_FILAMENTCHANGE c=18 #: messages.c:43 @@ -548,47 +548,47 @@ msgstr "Wechsel ok?" # MSG_SELFTEST_CHECK_BED c=20 #: messages.c:94 msgid "Checking bed" -msgstr "Pruefe Bett" +msgstr "Prüfe Bett" # MSG_SELFTEST_CHECK_ENDSTOPS c=20 -#: ultralcd.cpp:8481 +#: ultralcd.cpp:8402 msgid "Checking endstops" -msgstr "Pruefe Endschalter" +msgstr "Prüfe Endschalter" # MSG_SELFTEST_CHECK_HOTEND c=20 -#: ultralcd.cpp:8487 +#: ultralcd.cpp:8408 msgid "Checking hotend" -msgstr "Pruefe Duese" +msgstr "Prüfe Düse" # MSG_SELFTEST_CHECK_FSENSOR c=20 #: messages.c:95 msgid "Checking sensors" -msgstr "Pruefe Sensoren" +msgstr "Prüfe Sensoren" # MSG_CHECKING_X c=20 #: messages.c:23 msgid "Checking X axis" -msgstr "Pruefe X Achse" +msgstr "Prüfe X Achse" # MSG_CHECKING_Y c=20 #: messages.c:24 msgid "Checking Y axis" -msgstr "Pruefe Y Achse" +msgstr "Prüfe Y Achse" # MSG_SELFTEST_CHECK_Z c=20 -#: ultralcd.cpp:8484 +#: ultralcd.cpp:8405 msgid "Checking Z axis" -msgstr "Pruefe Z Achse" +msgstr "Prüfe Z Achse" # MSG_CHOOSE_EXTRUDER c=20 #: messages.c:54 msgid "Choose extruder:" -msgstr "Extruder waehlen:" +msgstr "Extruder wählen:" # MSG_CHOOSE_FILAMENT c=20 #: messages.c:55 msgid "Choose filament:" -msgstr "Waehle Filament:" +msgstr "Wähle Filament:" # MSG_FILAMENT c=17 #: messages.c:35 @@ -598,12 +598,12 @@ msgstr "" # MSG_WIZARD_XYZ_CAL c=20 r=8 #: ultralcd.cpp:4951 msgid "I will run xyz calibration now. It will take approx. 12 mins." -msgstr "Ich werde jetzt die XYZ-Kalibrierung durchfuehren. Es wird ca. 12 Minuten dauern." +msgstr "Ich werde jetzt die XYZ-Kalibrierung durchführen. Es wird ca. 12 Minuten dauern." # MSG_WIZARD_Z_CAL c=20 r=8 #: ultralcd.cpp:4959 msgid "I will run z calibration now." -msgstr "Ich werde jetzt die Z Kalibrierung durchfuehren." +msgstr "Ich werde jetzt die Z Kalibrierung durchführen." # MSG_WATCH c=18 #: messages.c:116 @@ -633,12 +633,12 @@ msgstr "Letzte Druckfehler" # MSG_WIZARD_WELCOME_SHIPPING c=20 r=16 #: messages.c:122 msgid "Hi, I am your Original Prusa i3 printer. I will guide you through a short setup process, in which the Z-axis will be calibrated. Then, you will be ready to print." -msgstr "Hallo, ich bin Ihr Original Prusa i3 Drucker. Ich werde Sie durch einen kurzen Einrichtungsprozess fuehren, bei dem die Z-Achse kalibriert wird. Danach sind Sie bereit fuer den Druck." +msgstr "Hallo, ich bin Ihr Original Prusa i3 Drucker. Ich werde Sie durch einen kurzen Einrichtungsprozess führen, bei dem die Z-Achse kalibriert wird. Danach sind Sie bereit für den Druck." # MSG_ADDITIONAL_SHEETS c=20 r=9 #: ultralcd.cpp:5029 msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets." -msgstr "Wenn Sie zusaetzliche Stahlbleche haben, kalibrieren Sie deren Voreinstellungen unter Einstellungen - HW Setup - Stahlbleche." +msgstr "Wenn Sie zusätzliche Stahlbleche haben, kalibrieren Sie deren Voreinstellungen unter Einstellungen - HW Setup - Stahlbleche." # MSG_LAST_PRINT c=18 #: messages.c:56 @@ -648,7 +648,7 @@ msgstr "Letzter Druck" # MSG_SELFTEST_EXTRUDER_FAN c=20 #: messages.c:89 msgid "Left hotend fan?" -msgstr "Extruder Luefter?" +msgstr "Extruderlüfter?" # MSG_LEFT c=10 #: ultralcd.cpp:2844 @@ -671,9 +671,9 @@ msgid "Live adjust Z" msgstr "Z einstellen" # MSG_INSERT_FIL c=20 r=6 -#: ultralcd.cpp:7380 +#: ultralcd.cpp:7301 msgid "Insert the filament (do not load it) into the extruder and then press the knob." -msgstr "Stecken Sie das Filament (nicht laden) in den Extruder und druecken Sie dann den Knopf." +msgstr "Stecken Sie das Filament (nicht laden) in den Extruder und drücken Sie dann den Knopf." # MSG_LOAD_FILAMENT c=17 #: messages.c:58 @@ -688,7 +688,7 @@ msgstr "Lade Farbe" # MSG_LOADING_FILAMENT c=20 #: messages.c:59 msgid "Loading filament" -msgstr "Filament laedt" +msgstr "Filament lädt" # MSG_ITERATION c=12 #: messages.c:53 @@ -696,12 +696,12 @@ msgid "Iteration" msgstr "Wiederholung" # MSG_LOOSE_PULLEY c=20 -#: ultralcd.cpp:8167 +#: ultralcd.cpp:8088 msgid "Loose pulley" msgstr "Lose Riemenscheibe" # MSG_LOAD_TO_NOZZLE c=18 -#: ultralcd.cpp:6717 +#: ultralcd.cpp:6638 msgid "Load to nozzle" msgstr "In Nozzle laden" @@ -713,7 +713,7 @@ msgstr "M117 Erste-Schicht Kal." # MSG_MAIN c=18 #: messages.c:63 msgid "Main" -msgstr "Hauptmenue" +msgstr "Hauptmenü" # MSG_BL_HIGH c=12 #: messages.c:155 @@ -728,7 +728,7 @@ msgstr "Dimmwert" # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=20 r=3 #: messages.c:67 msgid "Measuring reference height of calibration point" -msgstr "Messen der Referenzhoehe des Kalibrierpunktes" +msgstr "Messen der Referenzhöhe des Kalibrierpunktes" # MSG_MESH_BED_LEVELING c=18 #: messages.c:148 @@ -748,7 +748,7 @@ msgstr "MMU OK. Temperatur wiederherstellen..." # MSG_MEASURED_SKEW c=14 #: ultralcd.cpp:2885 msgid "Measured skew" -msgstr "Schraeglauf" +msgstr "Schräglauf" # MSG_MMU_FAILS c=15 #: messages.c:69 @@ -851,7 +851,7 @@ msgid "No move." msgstr "Keine Bewegung." # MSG_NO_CARD c=18 -#: ultralcd.cpp:6697 +#: ultralcd.cpp:6618 msgid "No SD card" msgstr "Keine SD Karte" @@ -866,14 +866,14 @@ msgid "No" msgstr "Nein" # MSG_SELFTEST_NOTCONNECTED c=20 -#: ultralcd.cpp:8128 +#: ultralcd.cpp:8049 msgid "Not connected" msgstr "Nicht angeschlossen" # MSG_NEW_FIRMWARE_AVAILABLE c=20 r=2 #: util.cpp:195 msgid "New firmware version available:" -msgstr "Neue Firmware- Version verfuegbar:" +msgstr "Neue Firmware- Version verfügbar:" # MSG_SELFTEST_FAN_NO c=19 #: messages.c:92 @@ -883,17 +883,17 @@ msgstr "Dreht sich nicht" # MSG_WIZARD_V2_CAL c=20 r=8 #: ultralcd.cpp:4838 msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface." -msgstr "Jetzt werde ich den Abstand zwischen Duesenspitze und Druckbett kalibrieren." +msgstr "Jetzt werde ich den Abstand zwischen Düsenspitze und Druckbett kalibrieren." # MSG_WIZARD_WILL_PREHEAT c=20 r=4 #: ultralcd.cpp:4967 msgid "Now I will preheat nozzle for PLA." -msgstr "Jetzt werde ich die Duese fuer PLA vorheizen." +msgstr "Jetzt werde ich die Düse für PLA vorheizen." # MSG_NOZZLE c=12 #: messages.c:72 msgid "Nozzle" -msgstr "Duese" +msgstr "Düse" # MSG_DEFAULT_SETTINGS_LOADED c=20 r=6 #: Marlin_main.cpp:1605 @@ -908,7 +908,7 @@ msgstr "Testdruck jetzt von Stahlblech entfernen." # MSG_NOZZLE_FAN c=10 #: ultralcd.cpp:1446 msgid "Nozzle FAN" -msgstr "Duesevent." +msgstr "Drucklüft." # MSG_PAUSE_PRINT c=18 #: messages.c:74 @@ -933,27 +933,27 @@ msgstr "PID Kalibrierung" # MSG_PINDA_PREHEAT c=20 #: ultralcd.cpp:683 msgid "PINDA Heating" -msgstr "PINDA erwaermen" +msgstr "PINDA erwärmen" # MSG_PAPER c=20 r=10 #: messages.c:73 msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately." -msgstr "Legen Sie ein Blatt Papier unter die Duese waehrend der Kalibrierung der ersten 4 Punkte. Wenn die Duese das Papier erfasst, den Drucker sofort ausschalten." +msgstr "Legen Sie ein Blatt Papier unter die Düse während der Kalibrierung der ersten 4 Punkte. Wenn die Düse das Papier erfasst, den Drucker sofort ausschalten." # MSG_WIZARD_CLEAN_HEATBED c=20 r=8 #: ultralcd.cpp:5024 msgid "Please clean heatbed and then press the knob." -msgstr "Bitte reinigen Sie das Heizbett und druecken Sie dann den Knopf." +msgstr "Bitte reinigen Sie das Heizbett und drücken Sie dann den Knopf." # MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 #: messages.c:26 msgid "Please clean the nozzle for calibration. Click when done." -msgstr "Bitte entfernen Sie ueberstehendes Filament von der Duese. Klicken wenn sauber." +msgstr "Bitte entfernen Sie überstehendes Filament von der Düse. Klicken wenn sauber." # MSG_SELFTEST_PLEASECHECK c=20 -#: ultralcd.cpp:8122 +#: ultralcd.cpp:8043 msgid "Please check:" -msgstr "Bitte pruefe:" +msgstr "Bitte prüfen:" # MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 #: messages.c:117 @@ -963,7 +963,7 @@ msgstr "Bitte lesen Sie unser Handbuch und beheben Sie das Problem. Fahren Sie d # MSG_CHECK_IDLER c=20 r=5 #: Marlin_main.cpp:3798 msgid "Please open idler and remove filament manually." -msgstr "Bitte Spannrolle oeffnen und Fila- ment von Hand entfernen" +msgstr "Bitte Spannrolle öffnen und Filament von Hand entfernen" # MSG_PLACE_STEEL_SHEET c=20 r=5 #: messages.c:75 @@ -973,7 +973,7 @@ msgstr "Bitte legen Sie das Stahlblech auf das Heizbett." # MSG_PRESS_TO_UNLOAD c=20 r=4 #: messages.c:79 msgid "Please press the knob to unload filament" -msgstr "Bitte druecken Sie den Knopf um das Filament zu entladen." +msgstr "Bitte drücken Sie den Knopf um das Filament zu entladen." # MSG_PULL_OUT_FILAMENT c=20 r=4 #: messages.c:81 @@ -983,7 +983,7 @@ msgstr "Bitte ziehen Sie das Filament sofort heraus" # MSG_EJECT_REMOVE c=20 r=4 #: mmu.cpp:1421 msgid "Please remove filament and then press the knob." -msgstr "Bitte Filament entfernen und dann den Knopf druecken" +msgstr "Bitte Filament entfernen und dann den Knopf drücken" # MSG_REMOVE_STEEL_SHEET c=20 r=4 #: messages.c:84 @@ -993,7 +993,7 @@ msgstr "Bitte entfernen Sie das Stahlblech vom Heizbett." # MSG_RUN_XYZ c=20 r=4 #: Marlin_main.cpp:5338 msgid "Please run XYZ calibration first." -msgstr "Bitte zuerst XYZ Kalibrierung ausfuehren." +msgstr "Bitte zuerst XYZ Kalibrierung ausführen." # MSG_UPDATE_MMU2_FW c=20 r=4 #: mmu.cpp:1341 @@ -1013,17 +1013,17 @@ msgstr "Bitte zuerst Transportsicherungen entfernen." # MSG_PREHEAT_NOZZLE c=20 #: messages.c:78 msgid "Preheat the nozzle!" -msgstr "Duese vorheizen!" +msgstr "Düse vorheizen!" # MSG_PREHEAT c=18 -#: ultralcd.cpp:6655 +#: ultralcd.cpp:6576 msgid "Preheat" msgstr "Vorheizen" # MSG_WIZARD_HEATING c=20 r=3 #: messages.c:119 msgid "Preheating nozzle. Please wait." -msgstr "Vorheizen der Duese. Bitte warten." +msgstr "Vorheizen der Düse. Bitte warten." # MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 #: util.cpp:199 @@ -1031,9 +1031,9 @@ msgid "Please upgrade." msgstr "Bitte aktualisieren." # MSG_PRESS_TO_PREHEAT c=20 r=4 -#: Marlin_main.cpp:12049 +#: Marlin_main.cpp:12052 msgid "Press the knob to preheat nozzle and continue." -msgstr "Bitte druecken Sie den Knopf um die Duese vorzuheizen und fortzufahren." +msgstr "Bitte drücken Sie den Knopf um die Düse vorzuheizen und fortzufahren." # MSG_FS_PAUSE c=5 #: fsensor.cpp:730 @@ -1061,9 +1061,9 @@ msgid "Preheating to unload" msgstr "Heizen zum Entladen" # MSG_SELFTEST_PRINT_FAN_SPEED c=18 -#: ultralcd.cpp:8501 +#: ultralcd.cpp:8422 msgid "Print fan:" -msgstr "Druckvent.:" +msgstr "Drucklüfter:" # MSG_CARD_MENU c=18 #: messages.c:22 @@ -1073,7 +1073,7 @@ msgstr "Drucken von SD" # MSG_PRESS_KNOB c=20 #: ultralcd.cpp:2130 msgid "Press the knob" -msgstr "Knopf druecken zum" +msgstr "Knopf drücken zum" # MSG_PRINT_PAUSED c=20 #: ultralcd.cpp:907 @@ -1083,7 +1083,7 @@ msgstr "Druck pausiert" # MSG_RESUME_NOZZLE_TEMP c=20 r=4 #: mmu.cpp:726 msgid "Press the knob to resume nozzle temperature." -msgstr "Druecken Sie den Knopf um die Duesentemperatur wiederherzustellen" +msgstr "Drücken Sie den Knopf um die Düsentemperatur wiederherzustellen" # MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 #: messages.c:46 @@ -1093,17 +1093,17 @@ msgstr "Drucker wurde noch nicht kalibriert. Bitte folgen Sie dem Handbuch, Kapi # MSG_PRINT_FAN c=10 #: ultralcd.cpp:1447 msgid "Print FAN" -msgstr "Druckvent." +msgstr "Drucklüft." # MSG_WIZARD_LOAD_FILAMENT c=20 r=6 #: ultralcd.cpp:4818 msgid "Please insert filament into the extruder, then press the knob to load it." -msgstr "Bitte legen Sie das Filament in den Extruder ein und druecken Sie dann den Knopf, um es zu laden." +msgstr "Bitte legen Sie das Filament in den Extruder ein und drücken Sie dann den Knopf, um es zu laden." # MSG_MMU_INSERT_FILAMENT_FIRST_TUBE c=20 r=6 #: ultralcd.cpp:4813 msgid "Please insert filament into the first tube of the MMU, then press the knob to load it." -msgstr "Bitte stecken Sie das Filament in den ersten Schlauch der MMU und druecken Sie dann den Knopf, um es zu laden." +msgstr "Bitte stecken Sie das Filament in den ersten Schlauch der MMU und drücken Sie dann den Knopf, um es zu laden." # MSG_PLEASE_LOAD_PLA c=20 r=4 #: ultralcd.cpp:4735 @@ -1116,24 +1116,24 @@ msgid "Rear side [um]" msgstr "Hinten [um]" # MSG_UNLOAD_FILAMENT_REPEAT c=20 r=4 -#: ultralcd.cpp:7404 +#: ultralcd.cpp:7325 msgid "Please unload the filament first, then repeat this action." msgstr "Bitte entladen Sie erst das Filament und versuchen Sie es nochmal." # MSG_CHECK_IR_CONNECTION c=20 r=4 -#: ultralcd.cpp:7407 +#: ultralcd.cpp:7328 msgid "Please check the IR sensor connection, unload filament if present." -msgstr "Bitte IR Sensor Verbindungen ueber- pruefen und Filament entladen ist." +msgstr "Bitte IR Sensor Verbindungen über- prüfen und Filament entladen ist." # MSG_RECOVERING_PRINT c=20 -#: Marlin_main.cpp:11393 +#: Marlin_main.cpp:11396 msgid "Recovering print" msgstr "Druck wiederherst" # MSG_REMOVE_OLD_FILAMENT c=20 r=5 #: mmu.cpp:833 msgid "Remove old filament and press the knob to start loading new filament." -msgstr "Entfernen Sie das alte Filament und druecken Sie den Knopf, um das neue zu laden." +msgstr "Entfernen Sie das alte Filament und drücken Sie den Knopf, um das neue zu laden." # MSG_CALIBRATE_BED_RESET c=18 #: ultralcd.cpp:5804 @@ -1143,7 +1143,7 @@ msgstr "Reset XYZ Kalibr." # MSG_RESET c=14 #: messages.c:85 msgid "Reset" -msgstr "Ruecksetzen" +msgstr "Rücksetzen" # MSG_RESUME_PRINT c=18 #: messages.c:86 @@ -1168,7 +1168,7 @@ msgstr "" # MSG_WIZARD_RERUN c=20 r=7 #: ultralcd.cpp:4756 msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?" -msgstr "Der Assistent wird die aktuellen Kalibrierungsdaten loeschen und von vorne beginnen. Weiterfahren?" +msgstr "Der Assistent wird die aktuellen Kalibrierungsdaten löschen und von vorne beginnen. Weiterfahren?" # MSG_SD_CARD c=8 #: messages.c:138 @@ -1188,15 +1188,15 @@ msgstr "Suche Bett Kalibrierpunkt" # MSG_LANGUAGE_SELECT c=18 #: ultralcd.cpp:4451 msgid "Select language" -msgstr "Waehle Sprache" +msgstr "Wähle Sprache" # MSG_SELFTEST_OK c=20 -#: ultralcd.cpp:7679 +#: ultralcd.cpp:7600 msgid "Self test OK" msgstr "Selbsttest OK" # MSG_SELFTEST_START c=20 -#: ultralcd.cpp:7447 +#: ultralcd.cpp:7368 msgid "Self test start" msgstr "Selbsttest start" @@ -1206,7 +1206,7 @@ msgid "Selftest" msgstr "Selbsttest" # MSG_SELFTEST_ERROR c=20 -#: ultralcd.cpp:8121 +#: ultralcd.cpp:8042 msgid "Selftest error!" msgstr "Selbsttest Fehler!" @@ -1218,12 +1218,12 @@ msgstr "Selbsttest Error" # MSG_FORCE_SELFTEST c=20 r=8 #: Marlin_main.cpp:1637 msgid "Selftest will be run to calibrate accurate sensorless rehoming." -msgstr "Selbsttest im Gang, um die genaue Rueck- kehr zum Nullpunkt ohne Sensor zu kalibrieren" +msgstr "Selbsttest wird gestartet, um Startposition zu kalibrieren." # MSG_SEL_PREHEAT_TEMP c=20 r=6 #: ultralcd.cpp:4998 msgid "Select nozzle preheat temperature which matches your material." -msgstr "Bitte Vorheiztemperatur auswaehlen, die Ihrem Material entspricht." +msgstr "Bitte Vorheiztemperatur auswählen, die Ihrem Material entspricht." # MSG_SET_TEMPERATURE c=20 #: ultralcd.cpp:3135 @@ -1263,7 +1263,7 @@ msgstr "Zeit" # MSG_SEVERE_SKEW c=14 #: ultralcd.cpp:2888 msgid "Severe skew" -msgstr "Sehr Schraeg" +msgstr "Sehr schräg" # MSG_SORT_ALPHA c=8 #: messages.c:141 @@ -1283,7 +1283,7 @@ msgstr "Laut" # MSG_SLIGHT_SKEW c=14 #: ultralcd.cpp:2887 msgid "Slight skew" -msgstr "Leicht Schraeg" +msgstr "Leicht schräg" # MSG_SOUND c=7 #: messages.c:143 @@ -1293,7 +1293,7 @@ msgstr "Ton" # MSG_RUNOUTS c=7 #: ultralcd.cpp:1593 msgid "Runouts" -msgstr "Maengel" +msgstr "Mängel" # MSG_Z-LEVELING_ENFORCED c=20 r=4 #: Marlin_main.cpp:3303 @@ -1306,7 +1306,7 @@ msgid "Once" msgstr "Einmal" # MSG_SPEED c=15 -#: ultralcd.cpp:6882 +#: ultralcd.cpp:6803 msgid "Speed" msgstr "Geschwindigkeit" @@ -1318,7 +1318,7 @@ msgstr "Dreht sich" # MSG_TEMP_CAL_WARNING c=20 r=4 #: Marlin_main.cpp:5351 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required." -msgstr "Stabile Umgebungs- temperatur 21-26C und feste Stand- flaeche erforderlich" +msgstr "Stabile Umgebungs- temperatur 21-26C und feste Stand- fläche erforderlich" # MSG_STATISTICS c=18 #: ultralcd.cpp:6081 @@ -1336,19 +1336,19 @@ msgid "STOPPED." msgstr "GESTOPPT." # MSG_SUPPORT c=18 -#: ultralcd.cpp:6756 +#: ultralcd.cpp:6677 msgid "Support" msgstr "" # MSG_SELFTEST_SWAPPED c=16 -#: ultralcd.cpp:8180 +#: ultralcd.cpp:8101 msgid "Swapped" msgstr "Ausgetauscht" # MSG_SELECT_FILAMENT c=20 #: ultralcd.cpp:4706 msgid "Select filament:" -msgstr "Filament auswaehlen:" +msgstr "Filament auswählen:" # MSG_TEMP_CALIBRATION c=14 #: messages.c:112 @@ -1358,7 +1358,7 @@ msgstr "Temp Kalib." # MSG_SELECT_TEMP_MATCHES_MATERIAL c=20 r=4 #: ultralcd.cpp:4847 msgid "Select temperature which matches your material." -msgstr "Waehlen Sie die Temperatur, die zu Ihrem Material passt." +msgstr "Wählen Sie die Temperatur, die zu Ihrem Material passt." # MSG_CALIBRATION_PINDA_MENU c=17 #: ultralcd.cpp:5812 @@ -1376,9 +1376,9 @@ msgid "Temperature calibration is finished and active. Temp. calibration can be msgstr "Temp.kalibrierung ist fertig + aktiv. Temp.kalibrierung kann ausgeschaltet werden im Menu Einstellungen -> Temp.kal." # MSG_FS_VERIFIED c=20 r=3 -#: ultralcd.cpp:7411 +#: ultralcd.cpp:7332 msgid "Sensor verified, remove the filament now." -msgstr "Sensor ueberprueft, entladen Sie jetzt das Filament." +msgstr "Sensor überprüft, entladen Sie jetzt das Filament." # MSG_TEMPERATURE c=18 #: ultralcd.cpp:5673 @@ -1393,7 +1393,7 @@ msgstr "Temperaturen" # MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9 #: messages.c:47 msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow." -msgstr "Es ist noch not- wendig die Z- Kalibrierung aus- zufuehren. Bitte befolgen Sie das Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrierablauf." +msgstr "Es ist noch not- wendig die Z- Kalibrierung aus- zuführen. Bitte befolgen Sie das Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrierablauf." # MSG_TOTAL_FILAMENT c=19 #: ultralcd.cpp:2735 @@ -1406,7 +1406,7 @@ msgid "Total print time" msgstr "Gesamte Druckzeit" # MSG_TUNE c=18 -#: ultralcd.cpp:6653 +#: ultralcd.cpp:6574 msgid "Tune" msgstr "Feineinstellung" @@ -1463,27 +1463,27 @@ msgstr "Warte auf Benutzer.." # MSG_WAITING_TEMP c=20 r=4 #: ultralcd.cpp:3283 msgid "Waiting for nozzle and bed cooling" -msgstr "Warten bis Heizung und Bett abgekuehlt sind" +msgstr "Warten bis Heizung und Bett abgekühlt sind" # MSG_WAITING_TEMP_PINDA c=20 r=3 #: ultralcd.cpp:3244 msgid "Waiting for PINDA probe cooling" -msgstr "Warten, bis PINDA- Sonde abgekuehlt ist" +msgstr "Warten, bis PINDA- Sonde abgekühlt ist" # MSG_CHANGED_BOTH c=20 r=4 #: Marlin_main.cpp:1597 msgid "Warning: both printer type and motherboard type changed." -msgstr "Warnung: Druckertyp und Platinentyp wurden beide geaendert." +msgstr "Warnung: Druckertyp und Platinentyp wurden beide geändert." # MSG_CHANGED_MOTHERBOARD c=20 r=4 #: Marlin_main.cpp:1589 msgid "Warning: motherboard type changed." -msgstr "Warnung: Platinentyp wurde geaendert." +msgstr "Warnung: Platinentyp wurde geändert." # MSG_CHANGED_PRINTER c=20 r=4 #: Marlin_main.cpp:1593 msgid "Warning: printer type changed." -msgstr "Warnung: Druckertyp wurde geaendert." +msgstr "Warnung: Druckertyp wurde geändert." # MSG_UNLOAD_SUCCESSFUL c=20 r=2 #: Marlin_main.cpp:3789 @@ -1518,22 +1518,22 @@ msgstr "Ja" # MSG_WIZARD_QUIT c=20 r=8 #: messages.c:120 msgid "You can always resume the Wizard from Calibration -> Wizard." -msgstr "Sie koennen den Assistenten immer im Menu neu starten: Kalibrierung -> Assistent" +msgstr "Sie können den Assistenten immer im Menu neu starten: Kalibrierung -> Assistent" # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 #: ultralcd.cpp:3743 msgid "XYZ calibration all right. Skew will be corrected automatically." -msgstr "XYZ Kalibrierung in Ordnung. Schraeglauf wird automatisch korrigiert." +msgstr "XYZ Kalibrierung in Ordnung. Schräglauf wird automatisch korrigiert." # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 #: ultralcd.cpp:3740 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!" -msgstr "XYZ Kalibrierung in Ordnung. X/Y Achsen sind etwas schraeg. Gut gemacht!" +msgstr "XYZ Kalibrierung in Ordnung. X/Y Achsen sind etwas schräg. Gut gemacht!" # MSG_TIMEOUT c=12 #: messages.c:157 msgid "Timeout" -msgstr "Verzoegerung" +msgstr "" # MSG_X_CORRECTION c=13 #: ultralcd.cpp:5086 @@ -1543,17 +1543,17 @@ msgstr "X-Korrektur:" # MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 #: ultralcd.cpp:3737 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" -msgstr "XYZ-Kalibrierung ok. X/Y-Achsen sind senkrecht zueinander Glueckwunsch!" +msgstr "XYZ-Kalibrierung ok. X/Y-Achsen sind senkrecht zueinander Glückwunsch!" # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 #: ultralcd.cpp:3721 msgid "XYZ calibration compromised. Front calibration points not reachable." -msgstr "XYZ-Kalibrierung beeintraechtigt. Vordere Kalibrierpunkte nicht erreichbar." +msgstr "XYZ-Kalibrierung beeinträchtigt. Vordere Kalibrierpunkte nicht erreichbar." # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 #: ultralcd.cpp:3724 msgid "XYZ calibration compromised. Right front calibration point not reachable." -msgstr "XYZ-Kalibrierung beeintraechtigt. Rechter vorderer Kalibrierpunkt nicht erreichbar." +msgstr "XYZ-Kalibrierung beeinträchtigt. Rechter vorderer Kalibrierpunkt nicht erreichbar." # MSG_LOAD_ALL c=17 #: ultralcd.cpp:6167 @@ -1583,12 +1583,12 @@ msgstr "Y Entfernung vom Min" # MSG_WIZARD_V2_CAL_2 c=20 r=12 #: ultralcd.cpp:4850 msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)." -msgstr "Der Drucker beginnt mit dem Drucken einer Zickzacklinie. Drehen Sie den Knopf, bis Sie die optimale Hoehe erreicht haben. Ueberpruefen Sie die Bilder im Handbuch (Kapitel Kalibrierung)." +msgstr "Der Drucker beginnt mit dem Drucken einer Zickzacklinie. Drehen Sie den Knopf, bis Sie die optimale Höhe erreicht haben. überprüfen Sie die Bilder im Handbuch (Kapitel Kalibrierung)." # MSG_FIL_FAILED c=20 r=5 -#: ultralcd.cpp:7415 +#: ultralcd.cpp:7336 msgid "Verification failed, remove the filament and try again." -msgstr "Ueberpruefung fehl- geschlagen, entladen Sie das Filament und versuchen Sie es erneut." +msgstr "überprüfung fehl- geschlagen, entladen Sie das Filament und versuchen Sie es erneut." # MSG_Y_CORRECTION c=13 #: ultralcd.cpp:5087 @@ -1608,7 +1608,7 @@ msgstr "An" # MSG_BACK c=18 #: messages.c:64 msgid "Back" -msgstr "Zurueck" +msgstr "Zurück" # MSG_CHECKS c=18 #: ultralcd.cpp:5641 @@ -1616,7 +1616,7 @@ msgid "Checks" msgstr "Kontrolle" # MSG_FALSE_TRIGGERING c=20 -#: ultralcd.cpp:8190 +#: ultralcd.cpp:8111 msgid "False triggering" msgstr "Falschtriggerung" @@ -1668,37 +1668,37 @@ msgstr "Modell" # MSG_NOZZLE_DIAMETER c=10 #: messages.c:136 msgid "Nozzle d." -msgstr "Duese D." +msgstr "Düsendiam." # MSG_GCODE_DIFF_CONTINUE c=20 r=4 #: util.cpp:414 msgid "G-code sliced for a different level. Continue?" -msgstr "G-Code ist fuer einen anderen Level geslict. Fortfahren?" +msgstr "G-Code ist für einen anderen Level geslict. Fortfahren?" # MSG_GCODE_DIFF_CANCELLED c=20 r=7 #: util.cpp:420 msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled." -msgstr "G-Code ist fuer einen anderen Level geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen." +msgstr "G-Code ist für einen anderen Level geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen." # MSG_GCODE_DIFF_PRINTER_CONTINUE c=20 r=5 #: messages.c:134 msgid "G-code sliced for a different printer type. Continue?" -msgstr "G-Code ist fuer einen anderen Drucker geslict. Fortfahren?" +msgstr "G-Code ist für einen anderen Drucker geslict. Fortfahren?" # MSG_GCODE_DIFF_PRINTER_CANCELLED c=20 r=8 #: messages.c:135 msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled." -msgstr "G-Code ist fuer einen anderen Drucker geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen." +msgstr "G-Code ist für einen anderen Drucker geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen." # MSG_GCODE_NEWER_FIRMWARE_CONTINUE c=20 r=5 #: util.cpp:381 msgid "G-code sliced for a newer firmware. Continue?" -msgstr "G-Code ist fuer eine neuere Firmware geslict. Fortfahren?" +msgstr "G-Code ist für eine neuere Firmware geslict. Fortfahren?" # MSG_GCODE_NEWER_FIRMWARE_CANCELLED c=20 r=8 #: util.cpp:387 msgid "G-code sliced for a newer firmware. Please update the firmware. Print cancelled." -msgstr "G-Code ist fuer eine neuere Firmware geslict. Bitte die Firmware updaten. Druck abgebrochen." +msgstr "G-Code ist für eine neuere Firmware geslict. Bitte die Firmware updaten. Druck abgebrochen." # MSG_PREHEATING_TO_CUT c=20 #: ultralcd.cpp:2309 @@ -1713,25 +1713,25 @@ msgstr "Heizen zum Auswurf" # MSG_NOZZLE_DIFFERS_CONTINUE c=20 r=5 #: util.cpp:294 msgid "Printer nozzle diameter differs from the G-code. Continue?" -msgstr "Der Durchmesser der Druckerduese weicht vom G-Code ab. Fortfahren?" +msgstr "Der Durchmesser der Druckerdüse weicht vom G-Code ab. Fortfahren?" # MSG_NOZZLE_DIFFERS_CANCELLED c=20 r=9 #: util.cpp:301 msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled." -msgstr "Der Durchmesser der Druckerduese weicht vom G-Code ab. Bitte ueberpruefen Sie den Wert in den Einstellungen. Druck abgebrochen." +msgstr "Der Durchmesser der Druckerdüse weicht vom G-Code ab. Bitte überprüfen Sie den Wert in den Einstellungen. Druck abgebrochen." # MSG_SELFTEST_FS_LEVEL c=20 -#: ultralcd.cpp:8195 +#: ultralcd.cpp:8116 msgid "%s level expected" msgstr "%s Level erwartet" # MSG_RENAME c=18 -#: ultralcd.cpp:6579 +#: ultralcd.cpp:6500 msgid "Rename" msgstr "Umbenennen" # MSG_SELECT c=18 -#: ultralcd.cpp:6572 +#: ultralcd.cpp:6493 msgid "Select" msgstr "Auswahl" From f290039dffb4ed0565507fc011e562e7733915a6 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Sun, 30 Jan 2022 12:26:54 +0100 Subject: [PATCH 16/24] Add Hungarian replacement Fix changed chars. --- lang/lang-import.sh | 184 ++++++++++++++++++++++++++------------------ 1 file changed, 107 insertions(+), 77 deletions(-) diff --git a/lang/lang-import.sh b/lang/lang-import.sh index a7991543..df8920d9 100755 --- a/lang/lang-import.sh +++ b/lang/lang-import.sh @@ -29,7 +29,7 @@ # Add Community language support # Use `git rev-list --count HEAD lang-import.sh` # to get Build Nr -# 14 Jan. 2022, 3d-gussner, Replace German UTF-8 '' to HD44780 A00 ROM '' +# 14 Jan. 2022, 3d-gussner, Replace German UTF-8 'äöÿÿ' to HD44780 A00 ROM 'äöÿÿ' # 28 Jan. 2022, 3d-gussner, Run lang-check and output `xx-output.txt` file to review # translations # new argruments `--information` `--import-check` @@ -81,52 +81,52 @@ 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 https://en.wikipedia.org/wiki/German_orthography if [ "$LNG" = "de" ]; then -#replace UTF-8 '' to HD44780 A00 '' - #replace '' with 'A00 ROM ' +#replace UTF-8 'äöüß' to HD44780 A00 'äöüß' + #replace 'ä' with 'A00 ROM ä' sed -i 's/\xc3\xa4/\\xe1/g' $LNG'_filtered.po' - #replace '' with 'A00 ROM ' + #replace 'Ä' with 'A00 ROM ä' sed -i 's/\xc3\x84/\\xe1/g' $LNG'_filtered.po' - #replace '' with 'A00 ROM ' + #replace 'ü' with 'A00 ROM ü' sed -i 's/\xc3\xbc/\\xf5/g' $LNG'_filtered.po' - #replace '' with 'A00 ROM ' + #replace 'Ü' with 'A00 ROM ü' sed -i 's/\xc3\x9c/\\xf5/g' $LNG'_filtered.po' - #replace '' with 'A00 ROM ' + #replace 'ö' with 'A00 ROM ö' sed -i 's/\xc3\xb6/\\xef/g' $LNG'_filtered.po' - #replace '' with 'A00 ROM ' + #replace 'Ö' with 'A00 ROM ö' sed -i 's/\xc3\x96/\\xef/g' $LNG'_filtered.po' - #replace '' with 'A00 ROM ' + #replace 'ß' with 'A00 ROM ß' sed -i 's/\xc3\x9f/\\xe2/g' $LNG'_filtered.po' fi #replace in spain translation if [ "$LNG" = "es" ]; then - #replace '' with 'a' + #replace 'á' with 'a' sed -i 's/\xc3\xa1/a/g' $LNG'_filtered.po' - #replace '' with '?' + #replace '¿' with '?' sed -i 's/\xc2\xbf/?/g' $LNG'_filtered.po' - #replace '' with 'o' + #replace 'ó' with 'o' sed -i 's/\xc3\xb3/o/g' $LNG'_filtered.po' - #replace '' with 'e' + #replace 'é' with 'e' sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' - #replace '' with 'i' + #replace 'í' with 'i' sed -i 's/\xc3\xad/i/g' $LNG'_filtered.po' #replace '!' with '!' sed -i 's/\xc2\xa1/!/g' $LNG'_filtered.po' @@ -136,145 +136,175 @@ fi #replace in french translation https://en.wikipedia.org/wiki/French_orthography if [ "$LNG" = "fr" ]; then - #replace '' with 'a' (right) + #replace 'á' with 'a' (right) sed -i 's/\xc3\xa1/a/g' $LNG'_filtered.po' - #replace '' with 'A' (right) + #replace 'Á' with 'A' (right) sed -i 's/\xc3\x81/A/g' $LNG'_filtered.po' - #replace '' with 'a' (left) + #replace 'à' with 'a' (left) sed -i 's/\xc3\xa0/a/g' $LNG'_filtered.po' - #replace '' with 'A' (left) + #replace 'À' with 'A' (left) sed -i 's/\xc3\x80/A/g' $LNG'_filtered.po' - #replace '' with 'e' (right) + #replace 'é' with 'e' (right) sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' - #replace '' with 'E' (right) + #replace 'É' with 'E' (right) sed -i 's/\xc3\x89/E/g' $LNG'_filtered.po' - #replace '' with 'e' (left) + #replace 'è' with 'e' (left) sed -i 's/\xc3\xa8/e/g' $LNG'_filtered.po' - #replace '' with 'E' (left) + #replace 'È' with 'E' (left) sed -i 's/\xc3\x88/E/g' $LNG'_filtered.po' fi #replace in italian translation if [ "$LNG" = "it" ]; then - #replace '' with 'e' (left) + #replace 'é' with 'e' (left) sed -i 's/\xc3\xa8/e/g' $LNG'_filtered.po' - #replace '' with 'a' (left) + #replace 'á' with 'a' (left) sed -i 's/\xc3\xa0/a/g' $LNG'_filtered.po' - #replace '' with 'o' (left) + #replace 'ó' with 'o' (left) sed -i 's/\xc3\xb2/o/g' $LNG'_filtered.po' - #replace '' with 'u' (left) + #replace 'ú' with 'u' (left) sed -i 's/\xc3\xb9/u/g' $LNG'_filtered.po' - #replace '' with 'e' + #replace 'é' with 'e' sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' - #replace '' with 'E' (left) + #replace 'É' with 'E' (left) sed -i 's/\xc3\x88/E/g' $LNG'_filtered.po' fi #replace in dutch translation according to https://nl.wikipedia.org/wiki/Accenttekens_in_de_Nederlandse_spelling if [ "$LNG" = "nl" ]; then - #replace '' with 'e' + #replace 'ë' with 'e' sed -i 's/\xc3\xab/e/g' $LNG'_filtered.po' - #replace '' with 'i' + #replace 'ï' with 'i' sed -i 's/\xc3\xaf/i/g' $LNG'_filtered.po' - #replace '' with 'e' + #replace 'é' with 'e' sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' - #replace '' with 'e' (left) + #replace 'è' with 'e' (left) sed -i 's/\xc3\xa8/e/g' $LNG'_filtered.po' - #replace '' with 'o' (left) + #replace 'ö' with 'o' (left) sed -i 's/\xc3\xb6/o/g' $LNG'_filtered.po' - #replace '' with 'e' (left) + #replace 'ê' with 'e' (left) sed -i 's/\xc3\xaa/e/g' $LNG'_filtered.po' - #replace '' with 'u' (left) + #replace 'ü' with 'u' (left) sed -i 's/\xc3\xbc/u/g' $LNG'_filtered.po' - #replace '' with 'c' (left) + #replace 'ç' with 'c' (left) sed -i 's/\xc3\xa7/c/g' $LNG'_filtered.po' - #replace '' with 'a' (left) + #replace 'á' with 'a' (left) sed -i 's/\xc3\xa1/a/g' $LNG'_filtered.po' - #replace '' with 'a' (left) + #replace 'à' with 'a' (left) sed -i 's/\xc3\xa0/a/g' $LNG'_filtered.po' - #replace '' with 'a' (left) + #replace 'ä' with 'a' (left) sed -i 's/\xc3\xa4/a/g' $LNG'_filtered.po' - #replace '' with 'u' (left) + #replace 'û' with 'u' (left) sed -i 's/\xc3\xbc/u/g' $LNG'_filtered.po' - #replace '' with 'i' (left) + #replace 'î' with 'i' (left) sed -i 's/\xc3\xae/i/g' $LNG'_filtered.po' - #replace '' with 'i' (left) + #replace 'í' with 'i' (left) sed -i 's/\xc3\xad/i/g' $LNG'_filtered.po' - #replace '' with 'o' (left) + #replace 'ô' with 'o' (left) sed -i 's/\xc3\xb4/o/g' $LNG'_filtered.po' - #replace '' with 'u' (left) + #replace 'ú' with 'u' (left) sed -i 's/\xc3\xba/u/g' $LNG'_filtered.po' - #replace '' with 'n' (left) + #replace 'ñ' with 'n' (left) sed -i 's/\xc3\xb1/n/g' $LNG'_filtered.po' - #replace '' with 'a' (left) + #replace 'â' with 'a' (left) sed -i 's/\xc3\xa2/a/g' $LNG'_filtered.po' - #replace '' with 'A' (left) + #replace 'Å' with 'A' (left) sed -i 's/\xc3\x85/A/g' $LNG'_filtered.po' fi if [ "$LNG" = "sv" ]; then -#repace '' with 'Aa' +#repace 'Å' with 'Aa' sed -i 's/\xc3\x85/Aa/g' $LNG'_filtered.po' -#repace '' with 'aa' +#repace 'å' with 'aa' sed -i 's/\xc3\xA5/aa/g' $LNG'_filtered.po' fi if [ "$LNG" = "da" ]; then -#repace '' with 'Aa' +#repace 'Å' with 'Aa' sed -i 's/\xc3\x85/Aa/g' $LNG'_filtered.po' -#repace '' with 'aa' +#repace 'å' with 'aa' sed -i 's/\xc3\xA5/aa/g' $LNG'_filtered.po' fi if [ "$LNG" = "sl" ]; then - #replace '' with 'e' + #replace 'ë' with 'e' sed -i 's/\xc3\xab/e/g' $LNG'_filtered.po' - #replace '' with 'a' (left) + #replace 'ä' with 'a' (left) sed -i 's/\xc3\xa4/a/g' $LNG'_filtered.po' - #replace '' with 'e' + #replace 'é' with 'e' sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' fi -if [ "$LNG" = "hu" ]; then - #replace '' with 'e' - sed -i 's/\xc3\xab/e/g' $LNG'_filtered.po' - #replace '' with 'a' - sed -i 's/\xc3\xa4/a/g' $LNG'_filtered.po' - #replace '' with 'e' +if [ "$LNG" = "hu" ]; then # See https://www.fileformat.info/info/charset/UTF-8/list.htm + #replace 'Á' with 'A'(acute) + sed -i 's/\xc3\x81/A/g' $LNG'_filtered.po' + #replace 'á' with 'a' + sed -i 's/\xc3\xa1/a/g' $LNG'_filtered.po' + #replace 'É' with 'E' (acute) + sed -i 's/\xc3\x89/E/g' $LNG'_filtered.po' + #replace 'é' with 'e' sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' + #replace 'Í' with 'I' (acute) + sed -i 's/\xc3\x8d/I/g' $LNG'_filtered.po' + #replace 'i̇́' with 'i' + sed -i 's/\xc3\xad/i/g' $LNG'_filtered.po' + #replace 'Ó' with 'O' (acute) + sed -i 's/\xc3\x93/O/g' $LNG'_filtered.po' + #replace 'ó' with 'o' + sed -i 's/\xc3\xb3/o/g' $LNG'_filtered.po' + #replace 'Ö' with 'O' (diaresis) + sed -i 's/\xc3\x96/O/g' $LNG'_filtered.po' + #replace 'ö' with 'o' + sed -i 's/\xc3\xb6/o/g' $LNG'_filtered.po' + #replace 'Ő' with 'O' (double acute) + sed -i 's/\xc5\x90/O/g' $LNG'_filtered.po' + #replace 'ő' with 'o' + sed -i 's/\xc5\x91/o/g' $LNG'_filtered.po' + #replace 'Ú' with 'U' (acute) + sed -i 's/\xc3\x9a/U/g' $LNG'_filtered.po' + #replace 'ú' with 'u' + sed -i 's/\xc3\xba/u/g' $LNG'_filtered.po' + #replace 'Ü' with 'U' (diaersis) + sed -i 's/\xc3\x9c/U/g' $LNG'_filtered.po' + #replace 'ü' with 'u' + sed -i 's/\xc3\xbc/u/g' $LNG'_filtered.po' + #replace 'Ű' with 'U' (double acute) + sed -i 's/\xc5\xb0/U/g' $LNG'_filtered.po' + #replace 'ű' with 'u' + sed -i 's/\xc5\xb1/u/g' $LNG'_filtered.po' fi if [ "$LNG" = "lb" ]; then - #replace '' with 'e' + #replace 'ë' with 'e' sed -i 's/\xc3\xab/e/g' $LNG'_filtered.po' - #replace '' with 'a' + #replace 'ä' with 'a' sed -i 's/\xc3\xa4/a/g' $LNG'_filtered.po' - #replace '' with 'e' + #replace 'é' with 'e' sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' fi if [ "$LNG" = "hr" ]; then - #replace '' with 'e' + #replace 'ë' with 'e' sed -i 's/\xc3\xab/e/g' $LNG'_filtered.po' - #replace '' with 'a' + #replace 'ä' with 'a' sed -i 's/\xc3\xa4/a/g' $LNG'_filtered.po' - #replace '' with 'e' + #replace 'é' with 'e' sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' fi if [ "$LNG" = "lt" ]; then - #replace '' with 'e' + #replace 'ë' with 'e' sed -i 's/\xc3\xab/e/g' $LNG'_filtered.po' - #replace '' with 'a' + #replace 'ä' with 'a' sed -i 's/\xc3\xa4/a/g' $LNG'_filtered.po' - #replace '' with 'e' + #replace 'é' with 'e' sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' fi #replace in polish translation #if [ "$LNG" = "pl" ]; then #fi -#check for nonasci characters excpet HD44780 ROM A00 '' +#check for nonasci characters excpet HD44780 ROM A00 'äöüß' if grep --color='auto' -P -n '[^\x00-\x7F]' $LNG'_filtered.po' >nonascii.txt; then exit fi From fbe33ed28ff2ebf7ab846573e715d99c0e4e7388 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Wed, 2 Feb 2022 08:49:35 +0100 Subject: [PATCH 17/24] Add POEdit `.mo`and MAC generated `.DS_Store` --- .gitignore | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index d69ee381..c0dbafe2 100644 --- a/.gitignore +++ b/.gitignore @@ -61,4 +61,14 @@ config.tmp /lang/po/new/nonascii.txt /lang/po/new/lang_en*.txt /lang/po/new/*-output.txt -/lang/po/new/*.mo \ No newline at end of file +/lang/po/new/*.mo +.DS_Store +**/.DS_Store +Firmware/.DS_Store +Firmware/variant/.DS_Store +lang/.DS_Store +lang/po/.DS_Store +lang/po/new/.DS_Store +Tests/.DS_Store +tools/.DS_Store +tools/lib/.DS_Store \ No newline at end of file From ce6b92052c63b2611ab79f8a3c62875d131575b1 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Wed, 2 Feb 2022 17:22:17 +0100 Subject: [PATCH 18/24] Update replace Czech non aA-zZ characters --- lang/lang-import.sh | 66 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 56 insertions(+), 10 deletions(-) diff --git a/lang/lang-import.sh b/lang/lang-import.sh index df8920d9..0a636d5c 100755 --- a/lang/lang-import.sh +++ b/lang/lang-import.sh @@ -81,20 +81,66 @@ sed -i 's/ \\n/ /g;s/\\n/ /g' $LNG'_filtered.po' #replace in czech translation if [ "$LNG" = "cz" ]; then - #replace 'ž' with 'z' - sed -i 's/\xc5\xbe/z/g' $LNG'_filtered.po' - #replace 'ì' with 'e' - sed -i 's/\xc4\x9b/e/g' $LNG'_filtered.po' - #replace 'í' with 'i' - sed -i 's/\xc3\xad/i/g' $LNG'_filtered.po' - #replace 'ø' with 'r' - sed -i 's/\xc5\x99/r/g' $LNG'_filtered.po' - #replace 'è' with 'c' - sed -i 's/\xc4\x8d/c/g' $LNG'_filtered.po' + #replace 'Á' with 'A' + sed -i 's/\xc3\x81/A/g' $LNG'_filtered.po' #replace 'á' with 'a' sed -i 's/\xc3\xa1/a/g' $LNG'_filtered.po' + #replace 'Č' with 'C' + sed -i 's/\xc4\x8c/C/g' $LNG'_filtered.po' + #replace 'č' with 'c' + sed -i 's/\xc4\x8d/c/g' $LNG'_filtered.po' + #replace 'Ď' with 'D' + sed -i 's/\xc4\x8e/D/g' $LNG'_filtered.po' + #replace 'ď' with 'd' + sed -i 's/\xc4\x8f/d/g' $LNG'_filtered.po' + #replace 'É' with 'E' + sed -i 's/\xc3\x89/E/g' $LNG'_filtered.po' #replace 'é' with 'e' sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po' + #replace 'Ě' with 'E' + sed -i 's/\xc4\x9a/E/g' $LNG'_filtered.po' + #replace 'ě' with 'e' + sed -i 's/\xc4\x9b/e/g' $LNG'_filtered.po' + #replace 'Í' with 'I' + sed -i 's/\xc3\x8d/I/g' $LNG'_filtered.po' + #replace 'í' with 'i' + sed -i 's/\xc3\xad/i/g' $LNG'_filtered.po' + #replace 'Ň' with 'N' + sed -i 's/\xc5\x87/N/g' $LNG'_filtered.po' + #replace 'ň' with 'n' + sed -i 's/\xc5\x88/n/g' $LNG'_filtered.po' + #replace 'Ó' with 'O' + sed -i 's/\xc3\x93/O/g' $LNG'_filtered.po' + #replace 'ó' with 'o' + sed -i 's/\xc3\xb3/o/g' $LNG'_filtered.po' + #replace 'Ř' with 'R' + sed -i 's/\xc5\x98/R/g' $LNG'_filtered.po' + #replace 'ř' with 'r' + sed -i 's/\xc5\x99/r/g' $LNG'_filtered.po' + #replace 'Š' with 'S' + sed -i 's/\xc5\xa0/S/g' $LNG'_filtered.po' + #replace 'š' with 's' + sed -i 's/\xc5\xa1/s/g' $LNG'_filtered.po' + #replace 'Ť' with 'T' + sed -i 's/\xc5\xa4/T/g' $LNG'_filtered.po' + #replace 'ť' with 't' + sed -i 's/\xc5\xa5/t/g' $LNG'_filtered.po' + #replace 'Ú' with 'U' + sed -i 's/\xc3\x9a/U/g' $LNG'_filtered.po' + #replace 'ú' with 'u' + sed -i 's/\xc3\xba/u/g' $LNG'_filtered.po' + #replace 'Ů' with 'U' + sed -i 's/\xc5\xae/U/g' $LNG'_filtered.po' + #replace 'ů' with 'u' + sed -i 's/\xc5\xaf/u/g' $LNG'_filtered.po' + #replace 'Ý' with 'Y' + sed -i 's/\xc3\x9d/Y/g' $LNG'_filtered.po' + #replace 'ý' with 'y' + sed -i 's/\xc3\xbd/y/g' $LNG'_filtered.po' + #replace 'Ž' with 'Z' + sed -i 's/\xc5\xbd/Z/g' $LNG'_filtered.po' + #replace 'ž' with 'z' + sed -i 's/\xc5\xbe/z/g' $LNG'_filtered.po' fi #replace in german translation https://en.wikipedia.org/wiki/German_orthography From 9993026202212d68a14d27b3e8eb2930c77b1328 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Thu, 3 Feb 2022 06:53:20 +0100 Subject: [PATCH 19/24] Delete as it has been merged in https://github.com/prusa3d/Prusa-Firmware/pull/3355 --- .travis.yml | 35 ----------------------------------- 1 file changed, 35 deletions(-) delete mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index a64c38e2..00000000 --- a/.travis.yml +++ /dev/null @@ -1,35 +0,0 @@ -dist: focal -before_install: - - sudo apt-get install -y ninja-build - # Arduino IDE adds a lot of noise caused by network traffic, trying to firewall it off - - sudo iptables -P INPUT DROP - - sudo iptables -P FORWARD DROP - - sudo iptables -P OUTPUT ACCEPT - - sudo iptables -A INPUT -i lo -j ACCEPT - - sudo iptables -A OUTPUT -o lo -j ACCEPT - - sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -script: - - bash -x test.sh - - cp Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h Firmware/Configuration_prusa.h - - bash -x build.sh || { echo "1_75mm_MK3S-EINSy10a-E3Dv6full variant failed" && false; } - - rm Firmware/Configuration_prusa.h - - cp Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h Firmware/Configuration_prusa.h - - bash -x build.sh || { echo "1_75mm_MK3-EINSy10a-E3Dv6full variant failed" && false; } - - rm Firmware/Configuration_prusa.h - - cp Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h Firmware/Configuration_prusa.h - - bash -x build.sh || { echo "1_75mm_MK25S-RAMBo13a-E3Dv6full variant failed" && false; } - - rm Firmware/Configuration_prusa.h - - cp Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h Firmware/Configuration_prusa.h - - bash -x build.sh || { echo "1_75mm_MK25S-RAMBo10a-E3Dv6full variant failed" && false; } - - rm Firmware/Configuration_prusa.h - - cp Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h Firmware/Configuration_prusa.h - - bash -x build.sh || { echo "1_75mm_MK25-RAMBo13a-E3Dv6full variant failed" && false; } - - rm Firmware/Configuration_prusa.h - - cp Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h Firmware/Configuration_prusa.h - - bash -x build.sh || { echo "1_75mm_MK25-RAMBo10a-E3Dv6full variant failed" && false; } - - rm Firmware/Configuration_prusa.h - - cp Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h Firmware/Configuration_prusa.h - - bash -x build.sh || { echo "1_75mm_MK2-RAMBo13a-E3Dv6full variant failed" && false; } - - rm Firmware/Configuration_prusa.h - - cp Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h Firmware/Configuration_prusa.h - - bash -x build.sh || { echo "1_75mm_MK2-RAMBo10a-E3Dv6full variant failed" && false; } \ No newline at end of file From 1e5421906f91eb5390c26b2f5e3d89e1abe629c0 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Thu, 3 Feb 2022 06:55:50 +0100 Subject: [PATCH 20/24] Revert "Delete as it has been merged in https://github.com/prusa3d/Prusa-Firmware/pull/3355" This reverts commit 9993026202212d68a14d27b3e8eb2930c77b1328. Affraid it will delete it when merged to MK3 branch --- .travis.yml | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..a64c38e2 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,35 @@ +dist: focal +before_install: + - sudo apt-get install -y ninja-build + # Arduino IDE adds a lot of noise caused by network traffic, trying to firewall it off + - sudo iptables -P INPUT DROP + - sudo iptables -P FORWARD DROP + - sudo iptables -P OUTPUT ACCEPT + - sudo iptables -A INPUT -i lo -j ACCEPT + - sudo iptables -A OUTPUT -o lo -j ACCEPT + - sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT +script: + - bash -x test.sh + - cp Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h Firmware/Configuration_prusa.h + - bash -x build.sh || { echo "1_75mm_MK3S-EINSy10a-E3Dv6full variant failed" && false; } + - rm Firmware/Configuration_prusa.h + - cp Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h Firmware/Configuration_prusa.h + - bash -x build.sh || { echo "1_75mm_MK3-EINSy10a-E3Dv6full variant failed" && false; } + - rm Firmware/Configuration_prusa.h + - cp Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h Firmware/Configuration_prusa.h + - bash -x build.sh || { echo "1_75mm_MK25S-RAMBo13a-E3Dv6full variant failed" && false; } + - rm Firmware/Configuration_prusa.h + - cp Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h Firmware/Configuration_prusa.h + - bash -x build.sh || { echo "1_75mm_MK25S-RAMBo10a-E3Dv6full variant failed" && false; } + - rm Firmware/Configuration_prusa.h + - cp Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h Firmware/Configuration_prusa.h + - bash -x build.sh || { echo "1_75mm_MK25-RAMBo13a-E3Dv6full variant failed" && false; } + - rm Firmware/Configuration_prusa.h + - cp Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h Firmware/Configuration_prusa.h + - bash -x build.sh || { echo "1_75mm_MK25-RAMBo10a-E3Dv6full variant failed" && false; } + - rm Firmware/Configuration_prusa.h + - cp Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h Firmware/Configuration_prusa.h + - bash -x build.sh || { echo "1_75mm_MK2-RAMBo13a-E3Dv6full variant failed" && false; } + - rm Firmware/Configuration_prusa.h + - cp Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h Firmware/Configuration_prusa.h + - bash -x build.sh || { echo "1_75mm_MK2-RAMBo10a-E3Dv6full variant failed" && false; } \ No newline at end of file From 22b3fbfe0953e8ebfce28080d58d88c364bc98cc Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Thu, 3 Feb 2022 07:05:59 +0100 Subject: [PATCH 21/24] Deactivate translations haven't been merged or translated yet --- Firmware/config.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Firmware/config.h b/Firmware/config.h index 44d5c119..c5a7356a 100644 --- a/Firmware/config.h +++ b/Firmware/config.h @@ -65,14 +65,14 @@ #if (COMMUNITY_LANG_GROUP == 1) #define COMMUNITY_LANG_GROUP1_NL // Community Dutch language -#define COMMUNITY_LANG_GROUP1_SV // Community Swedish language -#define COMMUNITY_LANG_GROUP1_DA // Community Danish language -#define COMMUNITY_LANG_GROUP1_SL // Community Slovanian language -#define COMMUNITY_LANG_GROUP1_HU // Community Hungarian language -#define COMMUNITY_LANG_GROUP1_LB // Community Luxembourgish language -#define COMMUNITY_LANG_GROUP1_HR // Community Croatian language -#define COMMUNITY_LANG_GROUP1_LT // Community Lithuanian language #define COMMUNITY_LANG_GROUP1_RO // Community Romanian language +#define COMMUNITY_LANG_GROUP1_HU // Community Hungarian language +#define COMMUNITY_LANG_GROUP1_HR // Community Croatian language +//#define COMMUNITY_LANG_GROUP1_SV // Community Swedish language +//#define COMMUNITY_LANG_GROUP1_DA // Community Danish language +//#define COMMUNITY_LANG_GROUP1_SL // Community Slovanian language +//#define COMMUNITY_LANG_GROUP1_LB // Community Luxembourgish language +//#define COMMUNITY_LANG_GROUP1_LT // Community Lithuanian language //#define COMMUNITY_LANG_GROUP1_QR // Community new language //..use this as a template and replace 'QR' #endif From 37662afdd1f3fe6258dac771051315e98f7a234b Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Thu, 3 Feb 2022 08:05:49 +0100 Subject: [PATCH 22/24] Add LF --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index c0dbafe2..c85ffa34 100644 --- a/.gitignore +++ b/.gitignore @@ -71,4 +71,4 @@ lang/po/.DS_Store lang/po/new/.DS_Store Tests/.DS_Store tools/.DS_Store -tools/lib/.DS_Store \ No newline at end of file +tools/lib/.DS_Store From fc94322a103d5c284ab36382a648594433308cdb Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Thu, 3 Feb 2022 08:07:07 +0100 Subject: [PATCH 23/24] Fix typo --- lang/lang-import.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lang/lang-import.sh b/lang/lang-import.sh index 0a636d5c..9b36a068 100755 --- a/lang/lang-import.sh +++ b/lang/lang-import.sh @@ -350,7 +350,7 @@ fi #if [ "$LNG" = "pl" ]; then #fi -#check for nonasci characters excpet HD44780 ROM A00 'äöüß' +#check for nonasci characters except HD44780 ROM A00 'äöüß' if grep --color='auto' -P -n '[^\x00-\x7F]' $LNG'_filtered.po' >nonascii.txt; then exit fi From 9e8ed08092265b738ef48b0297eb842a5620327b Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Thu, 3 Feb 2022 08:08:28 +0100 Subject: [PATCH 24/24] Add new line at end of file --- lang/progmem.sh | 2 +- lang/textaddr.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lang/progmem.sh b/lang/progmem.sh index f893b473..ba8d1f40 100755 --- a/lang/progmem.sh +++ b/lang/progmem.sh @@ -123,4 +123,4 @@ cat $PROGMEM.var | sed 's/\r/\n/g' | sed -E 's/^[0-9a-f]{8} [^ ]* //' >$PROGMEM. echo "$(tput setaf 2)progmem.sh finished$(tput sgr0)" >&2 -exit 0 \ No newline at end of file +exit 0 diff --git a/lang/textaddr.sh b/lang/textaddr.sh index c948f1a9..253b7683 100755 --- a/lang/textaddr.sh +++ b/lang/textaddr.sh @@ -75,4 +75,4 @@ done > textaddr.txt echo "$(tput setaf 2)textaddr.sh finished$(tput sgr0)" >&2 -exit 0 \ No newline at end of file +exit 0