Merge pull request #3342 from 3d-gussner/MK3_improve_translations
Improve language scripts
This commit is contained in:
commit
546eafae8b
17
.gitignore
vendored
17
.gitignore
vendored
@ -55,3 +55,20 @@ Firmware/Doc
|
||||
/Firmware/variants/printers.h
|
||||
Configuration.tmp
|
||||
config.tmp
|
||||
/lang/lang_en.max
|
||||
/lang/po/new/*_new.po
|
||||
/lang/po/new/*_filered.po
|
||||
/lang/po/new/nonascii.txt
|
||||
/lang/po/new/lang_en*.txt
|
||||
/lang/po/new/*-output.txt
|
||||
/lang/po/new/*.mo
|
||||
.DS_Store
|
||||
**/.DS_Store
|
||||
Firmware/.DS_Store
|
||||
Firmware/variant/.DS_Store
|
||||
lang/.DS_Store
|
||||
lang/po/.DS_Store
|
||||
lang/po/new/.DS_Store
|
||||
Tests/.DS_Store
|
||||
tools/.DS_Store
|
||||
tools/lib/.DS_Store
|
||||
|
@ -1,4 +1,4 @@
|
||||
dist: trusty
|
||||
dist: focal
|
||||
before_install:
|
||||
- sudo apt-get install -y ninja-build
|
||||
# Arduino IDE adds a lot of noise caused by network traffic, trying to firewall it off
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
18
PF-build.sh
18
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
|
||||
fi
|
||||
|
@ -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
|
||||
|
109
lang/fw-build.sh
109
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
|
||||
|
@ -1,34 +1,53 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Version 1.0.1 Build 11
|
||||
#
|
||||
# fw-clean.sh - multi-language support script
|
||||
# Remove all firmware output files from lang folder.
|
||||
#
|
||||
|
||||
#############################################################################
|
||||
# Change log:
|
||||
# 21 June 2018, XPila, Initial
|
||||
# 11 Sep. 2018, XPila, Lang update, french translation
|
||||
# resized reserved space
|
||||
# 18 Oct. 2018, XPila, New lang, arduino 1.8.5 - fw-clean.sh and lang-clean.sh fix
|
||||
# 10 Dec. 2018, jhoblitt, make all shell scripts executable
|
||||
# 26 Jul. 2019, leptun, Fix shifted languages. Use \n and \x0a
|
||||
# 14 Sep. 2019, 3d-gussner, Prepare adding new language
|
||||
# 01 Mar. 2021, 3d-gussner, Move `Dutch` language parts
|
||||
# 22 Mar. 2021, 3d-gussner, Move Dutch removing part to correct loaction
|
||||
# 17 Dec. 2021, 3d-gussner, Use one config file for all languages
|
||||
# 11 Jan. 2022, 3d-gussner, Added version and Change log
|
||||
# colored output
|
||||
# Use `git rev-list --count HEAD fw-clean.sh`
|
||||
# to get Build Nr
|
||||
# 25 Jan. 2022, 3d-gussner, Update documentation
|
||||
#############################################################################
|
||||
# Config:
|
||||
if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi
|
||||
if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo '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 +71,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
|
||||
|
@ -1,5 +1,7 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Version 1.0.2 Build 25
|
||||
#
|
||||
# lang-build.sh - multi-language support script
|
||||
# generate lang_xx.bin (language binary file)
|
||||
#
|
||||
@ -9,21 +11,65 @@
|
||||
# Output files:
|
||||
# lang_xx.bin
|
||||
#
|
||||
# Depending on files:
|
||||
# ../Firmware/config.h to read the max allowed size for translations
|
||||
#
|
||||
# Temporary files:
|
||||
# lang_en.cnt //calculated number of messages in english
|
||||
# lang_en.max //maximum size determined by reading "../Firmware/config.h"
|
||||
# lang_xx.tmp
|
||||
# lang_xx.dat
|
||||
#
|
||||
#############################################################################
|
||||
# Change log:
|
||||
# 18 June 2018, XPila, Initial
|
||||
# 19 June 2018, XPila, New ML support
|
||||
# 18 Oct. 2018, XPila, New lang French
|
||||
# 26 Nov. 2018, mkbel, Automate secondary language support build.
|
||||
# 7 May 2019, ondratu Check translation dictionary files to display definition
|
||||
# 19 June 2019, mkbel Disable language check warnings of type "[W]: No display definition on line".
|
||||
# Those warnings were masking all other much more useful build process output.
|
||||
# 14 Sep. 2019, 3d-gussner, Prepare adding new language
|
||||
# 18 Sep. 2020, 3d-gussner, Update new messages and their translations, fix translations
|
||||
# Update CZ, FR, IT, ES translations
|
||||
# CZ thanks to @DRracer
|
||||
# FR thanks to Carlin Dcustom
|
||||
# ES
|
||||
# IT thanks to @wavexx
|
||||
# Co-authored-by: @DRracer, @wavexx
|
||||
# 1 Mar. 2021, 3d-gussner, Add Dutch translation
|
||||
# 17 Dec. 2021, 3d-gussner, Use one config file for all languages
|
||||
# 21 Dec. 2021, 3d-gussner, Prepare more community languages
|
||||
# Swedish
|
||||
# Danish
|
||||
# Slovanian
|
||||
# Hungarian
|
||||
# Luxembourgian
|
||||
# Croatian
|
||||
# 3 Jan. 2022, 3d-gussner, Prepare Lithuanian
|
||||
# Cleanup outdated code
|
||||
# 11 Jan. 2022, 3d-gussner, Add message and size count comparison
|
||||
# Added version and Change log
|
||||
# colored output
|
||||
# Add Community language support
|
||||
# Use `git rev-list --count HEAD lang-build.sh`
|
||||
# to get Build Nr
|
||||
# 25 Jan. 2022, 3d-gussner, Fix check
|
||||
# Update documentation
|
||||
#############################################################################
|
||||
#
|
||||
# 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 +79,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 +152,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
|
||||
@ -115,9 +161,19 @@ 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
|
||||
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 +184,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
|
||||
|
@ -1,24 +1,49 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Version 1.0.1
|
||||
#
|
||||
# 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
|
||||
# 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
|
||||
# 'lang_en.txt'
|
||||
# 1st line: '#MSG_'<some text>' c='<max chars in a column>' r='<max rows> ; '#MSG' is mandentory while 'c=' and 'r=' aren't but should be there
|
||||
# 2nd line: '"'<origin message used in the source code>'"' ; '"' double quotes at the beginning and end of message are mandentory
|
||||
# 3rd line: LF ; Line feed is mandantory between messages
|
||||
#
|
||||
# 'lang_en_??.txt'
|
||||
# 1st line: '#MSG_'<some text>' c='<max chars in a column>' r='<max rows> ; '#MSG' is mandentory while 'c=' and 'r=' aren't but should be there
|
||||
# 2nd line: '"'<origin message used in the source code>'"' ; '"' double quotes at the beginning and end of message are mandentory
|
||||
# 3rd line: '"'<translated message>'"' ; '"' double quotes at the beginning and end of message are mandentory
|
||||
# 4th line: LF ; Line feed is mandantory between messages
|
||||
#
|
||||
"""Check lang files."""
|
||||
from argparse import ArgumentParser
|
||||
from traceback import print_exc
|
||||
from sys import stdout, stderr
|
||||
from sys import stdout, stderr, exit
|
||||
import textwrap
|
||||
import re
|
||||
|
||||
@ -99,22 +124,31 @@ def ign_char_first(c):
|
||||
def ign_char_last(c):
|
||||
return c.isalnum() or c in {'.', "'"}
|
||||
|
||||
|
||||
def parse_txt(lang, no_warning, warn_empty):
|
||||
def parse_txt(lang, no_warning, warn_empty, information, import_check):
|
||||
"""Parse txt file and check strings to display definition."""
|
||||
if lang == "en":
|
||||
file_path = "lang_en.txt"
|
||||
else:
|
||||
file_path = "lang_en_%s.txt" % lang
|
||||
if import_check:
|
||||
file_path = "po/new/lang_en_%s.txt" % lang
|
||||
else:
|
||||
file_path = "lang_en_%s.txt" % lang
|
||||
|
||||
print(green("Start %s lang-check" % lang))
|
||||
|
||||
lines = 1
|
||||
lines = 0
|
||||
with open(file_path) as src:
|
||||
while True:
|
||||
comment = src.readline().split(' ')
|
||||
#print (comment) #Debug
|
||||
|
||||
message = src.readline()
|
||||
lines += 1
|
||||
#print(message) #Debug
|
||||
#check syntax 1st line starts with `#MSG`
|
||||
if (message[0:4] != '#MSG'):
|
||||
print(red("[E]: Critical syntax error: 1st line doesn't start with #MSG on line %d" % lines))
|
||||
print(red(message))
|
||||
exit(1)
|
||||
#Check if columns and rows are defined
|
||||
comment = message.split(' ')
|
||||
#Check if columns and rows are defined
|
||||
cols = None
|
||||
rows = None
|
||||
@ -133,29 +167,69 @@ def parse_txt(lang, no_warning, warn_empty):
|
||||
if cols is None and rows is None:
|
||||
if not no_warning:
|
||||
print(yellow("[W]: No display definition on line %d" % lines))
|
||||
cols = len(translation) # propably fullscreen
|
||||
cols = len(source) # propably fullscreen
|
||||
if rows is None:
|
||||
rows = 1
|
||||
elif rows > 1 and cols != 20:
|
||||
print(yellow("[W]: Multiple rows with odd number of columns on line %d" % lines))
|
||||
|
||||
#Wrap text to 20 chars and rows
|
||||
source = src.readline()[:-1].strip('"')
|
||||
#print (source) #Debug
|
||||
translation = src.readline()[:-1].strip('"')
|
||||
if translation == '\\x00':
|
||||
# crude hack to handle intentionally-empty translations
|
||||
translation = ''
|
||||
source = src.readline()[:-1] #read whole line
|
||||
lines += 1
|
||||
#check if 2nd line of origin message beginns and ends with " double quote
|
||||
if (source[0]!="\""):
|
||||
print(red('[E]: Critical syntax error: Missing " double quotes at beginning of message in source on line %d' % lines))
|
||||
print(red(source))
|
||||
exit(1)
|
||||
if (source[-1]=="\""):
|
||||
source = source.strip('"') #remove " double quotes from message
|
||||
else:
|
||||
print(red('[E]: Critical syntax error: Missing " double quotes at end of message in source on line %d' % lines))
|
||||
print(red(source))
|
||||
exit(1)
|
||||
#print(source) #Debug
|
||||
if lang != "en":
|
||||
translation = src.readline()[:-1]#read whole line
|
||||
lines += 1
|
||||
#check if 3rd line of translation message beginns and ends with " double quote
|
||||
if (translation[0]!="\""):
|
||||
print(red('[E]: Critical syntax error: Missing " double quotes at beginning of message in translation on line %d' % lines))
|
||||
print(red(translation))
|
||||
exit(1)
|
||||
if (translation[-1]=="\""):
|
||||
#print ("End ok")
|
||||
translation = translation.strip('"') #remove " double quote from message
|
||||
else:
|
||||
print(red('[E]: Critical syntax error: Missing " double quotes at end of message in translation on line %d' % lines))
|
||||
print(red(translation))
|
||||
exit(1)
|
||||
#print(translation) #Debug
|
||||
if translation == '\\x00':
|
||||
# crude hack to handle intentionally-empty translations
|
||||
translation = ''
|
||||
#check if source is ascii only
|
||||
if source.isascii() == False:
|
||||
print(red('[E]: Critical syntax: Non ascii chars found on line %d' % lines))
|
||||
print(red(source))
|
||||
exit(1)
|
||||
#check if translation is ascii only
|
||||
if lang != "en":
|
||||
if translation.isascii() == False:
|
||||
print(red('[E]: Critical syntax: Non ascii chars found on line %d' % lines))
|
||||
print(red(translation))
|
||||
exit(1)
|
||||
|
||||
# handle backslash sequences
|
||||
source = unescape(source)
|
||||
translation = unescape(translation)
|
||||
|
||||
if lang != "en":
|
||||
translation = unescape(translation)
|
||||
|
||||
#print (translation) #Debug
|
||||
wrapped_source = wrap_text(source, cols)
|
||||
rows_count_source = len(wrapped_source)
|
||||
wrapped_translation = wrap_text(translation, cols)
|
||||
rows_count_translation = len(wrapped_translation)
|
||||
if lang != "en":
|
||||
wrapped_translation = wrap_text(translation, cols)
|
||||
rows_count_translation = len(wrapped_translation)
|
||||
|
||||
# Check for potential errors in the definition
|
||||
if not no_warning:
|
||||
@ -172,70 +246,92 @@ 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)
|
||||
#elif information:
|
||||
# print(green('[I]: %s' % (message)))
|
||||
# print_source_translation(source, translation,
|
||||
# wrapped_source, wrapped_translation,
|
||||
# rows, cols)
|
||||
|
||||
# Short translation
|
||||
if not no_warning and len(source) > 0 and len(translation) > 0:
|
||||
if len(translation.rstrip()) < len(source.rstrip()) / 2:
|
||||
print(yellow('[W]: Short translation on line %d:' % (lines)))
|
||||
print_source_translation(source, translation,
|
||||
wrapped_source, wrapped_translation,
|
||||
rows, cols)
|
||||
|
||||
# Incorrect trailing whitespace in translation
|
||||
if not no_warning and len(translation) > 0 and \
|
||||
(source.rstrip() == source or (rows == 1 and len(source) == cols)) and \
|
||||
translation.rstrip() != translation and \
|
||||
(rows > 1 or len(translation) != len(source)):
|
||||
print(yellow('[W]: Incorrect trailing whitespace for translation on line %d:' % (lines)))
|
||||
source = highlight_trailing_white(source)
|
||||
translation = highlight_trailing_white(translation)
|
||||
wrapped_translation = highlight_trailing_white(wrapped_translation)
|
||||
print_source_translation(source, translation,
|
||||
wrapped_source, wrapped_translation,
|
||||
rows, cols)
|
||||
# Short translation
|
||||
if not no_warning and len(source) > 0 and len(translation) > 0:
|
||||
if len(translation.rstrip()) < len(source.rstrip()) / 2:
|
||||
print(yellow('[W]: Short translation on line %d:' % (lines)))
|
||||
print_source_translation(source, translation,
|
||||
wrapped_source, wrapped_translation,
|
||||
rows, cols)
|
||||
#elif information:
|
||||
# print(green('[I]: %s' % (message)))
|
||||
# print_source_translation(source, translation,
|
||||
# wrapped_source, wrapped_translation,
|
||||
# rows, cols)
|
||||
|
||||
if len(src.readline()) != 1: # empty line
|
||||
# Incorrect trailing whitespace in translation
|
||||
if not no_warning and len(translation) > 0 and \
|
||||
(source.rstrip() == source or (rows == 1 and len(source) == cols)) and \
|
||||
translation.rstrip() != translation and \
|
||||
(rows > 1 or len(translation) != len(source)):
|
||||
print(yellow('[W]: Incorrect trailing whitespace for translation on line %d:' % (lines)))
|
||||
source = highlight_trailing_white(source)
|
||||
translation = highlight_trailing_white(translation)
|
||||
wrapped_translation = highlight_trailing_white(wrapped_translation)
|
||||
print_source_translation(source, translation,
|
||||
wrapped_source, wrapped_translation,
|
||||
rows, cols)
|
||||
elif information:
|
||||
print(green('[I]: %s' % (message)))
|
||||
print_source_translation(source, translation,
|
||||
wrapped_source, wrapped_translation,
|
||||
rows, cols)
|
||||
|
||||
|
||||
delimiter = src.readline()
|
||||
lines += 1
|
||||
if ("" == delimiter):
|
||||
break
|
||||
elif len(delimiter) != 1: # empty line
|
||||
print(red('[E]: Critical Syntax error: Missing empty line between messages between lines: %d and %d' % (lines-1,lines)))
|
||||
break
|
||||
lines += 4
|
||||
print(green("End %s lang-check" % lang))
|
||||
|
||||
|
||||
@ -253,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()
|
||||
|
@ -1,13 +1,34 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Version 1.0.1 Build 10
|
||||
#
|
||||
# clean.sh - multi-language support script
|
||||
# Remove all language output files from lang folder.
|
||||
#
|
||||
|
||||
#############################################################################
|
||||
# Change log:
|
||||
# 1 Nov. 2018, XPila, Initial
|
||||
# 18 Oct. 2018, XPila, New lang, arduino 1.8.5 - fw-clean.sh and lang-clean.sh fix
|
||||
# 25 Oct. 2018, XPila, New lang - fixed french langcode and comparsion in lang-clean script
|
||||
# 10 Dec. 2018, jhoblitt, make all shell scripts executable
|
||||
# 26 Jul. 2019, leptun, Fix shifted languages. Use \n and \x0a
|
||||
# 14 Sep. 2019, 3d-gussner, Prepare adding new language
|
||||
# 01 Mar. 2021, 3d-gussner, Move `Dutch` language parts
|
||||
# 22 Mar. 2021, 3d-gussner, Move Dutch removing part to correct loaction
|
||||
# 21 Dec. 2021, 3d-gussner, Use one config file for all languages
|
||||
# 03 Jan. 2022, 3d-gussner, Cleanup outdated code
|
||||
# 11 Jan. 2022, 3d-gussner, Also remove temporally files which have been
|
||||
# generated for message and size count comparison
|
||||
# Added version and Change log
|
||||
# colored output
|
||||
# Add Community language support
|
||||
# Use `git rev-list --count HEAD lang-clean.sh`
|
||||
# to get Build Nr
|
||||
# 25 Jan. 2022, 3d-gussner, clean up lang-import.sh temproray files
|
||||
#############################################################################
|
||||
# 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 +39,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,35 +53,43 @@ clean_lang()
|
||||
{
|
||||
if [ "$1" = "en" ]; then
|
||||
rm_if_exists lang_$1.tmp
|
||||
rm_if_exists lang_$1.cnt
|
||||
rm_if_exists lang_$1.max
|
||||
else
|
||||
rm_if_exists lang_$1.tmp
|
||||
rm_if_exists lang_en_$1.tmp
|
||||
rm_if_exists lang_en_$1.dif
|
||||
rm_if_exists lang_$1.ofs
|
||||
rm_if_exists lang_$1.txt
|
||||
rm_if_exists po/new/$1_new.po
|
||||
rm_if_exists po/new/$1.mo
|
||||
rm_if_exists po/new/$1_filtered.po
|
||||
rm_if_exists po/new/lang_en_$1.txt
|
||||
rm_if_exists po/new/$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
|
||||
#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
|
||||
|
@ -1,16 +1,41 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# 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
|
||||
# 10 Dec. 2018, jhoblitt, make all shell scripts executable
|
||||
# 14 Sep. 2019, 3d-gussner, Prepare adding new language
|
||||
# 6 Sep. 2019, DRracer, change to bash
|
||||
# 1 Mar. 2019, 3d-gussner, Move `Dutch` language parts
|
||||
# Add templates for future community languages
|
||||
# 17 Dec. 2021, 3d-gussner, Use one config file for all languages
|
||||
# Fix missing last translation
|
||||
# 21 Dec. 2021, 3d-gussner, Add Swedish, Danish, Slovanian, Hungarian,
|
||||
# Luxembourgish, Croatian
|
||||
# 3 Jan. 2022, 3d-gussner, Add Lithuanian
|
||||
# Cleanup outaded code
|
||||
# 11 Jan. 2022, 3d-gussner, Added version and Change log
|
||||
# colored output
|
||||
# Add Community language support
|
||||
# Use `git rev-list --count HEAD lang-export.sh`
|
||||
# to get Build Nr
|
||||
# 25 Jan. 2022, 3d-gussner, Replace German HD44780 A00 ROM 'äöüß' to UTF-8 'äöüß'
|
||||
#############################################################################
|
||||
# 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 +103,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 +113,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 +161,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
|
||||
@ -167,5 +190,18 @@ done >>$OUTFILE) 2>&1
|
||||
sync
|
||||
sed -i 's/$/\r/' $OUTFILE
|
||||
|
||||
echo "lang-export.sh finished"
|
||||
#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
|
||||
|
@ -1,20 +1,56 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# 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
|
||||
# 21 Nov. 2018, XPila, fix - replace '\n' with space in all languages
|
||||
# 10 Dec. 2018, jhoblitt, make all shell scripts executable
|
||||
# 21 Aug. 2019, 3d-gussner, Added "All" argument and it is default in nothing is chosen
|
||||
# Added few German/French diacritical characters
|
||||
# 6 Sep. 2019, DRracer, change to bash
|
||||
# 14 Sep. 2019, 3d-gussner, Prepare adding new language
|
||||
# 1 Mar. 2019, 3d-gussner, Move `Dutch` language parts
|
||||
# Add templates for future community languages
|
||||
# 17 Dec. 2021, 3d-gussner, Use one config file for all languages
|
||||
# Fix missing last translation
|
||||
# Add counter
|
||||
# replace two double quotes with `\x00`
|
||||
# 21 Dec. 2021, 3d-gussner, Add Swedish, Danish, Slovanian, Hungarian,
|
||||
# Luxembourgish, Croatian
|
||||
# 3 Jan. 2022, 3d-gussner, Add Lithuanian
|
||||
# Cleanup outaded code
|
||||
# 11 Jan. 2022, 3d-gussner, Added version and Change log
|
||||
# colored output
|
||||
# Add Community language support
|
||||
# Use `git rev-list --count HEAD lang-import.sh`
|
||||
# to get Build Nr
|
||||
# 14 Jan. 2022, 3d-gussner, Replace German UTF-8 'äöÿÿ' to HD44780 A00 ROM 'äöÿÿ'
|
||||
# 28 Jan. 2022, 3d-gussner, Run lang-check and output `xx-output.txt` file to review
|
||||
# translations
|
||||
# new argruments `--information` `--import-check`
|
||||
#############################################################################
|
||||
# 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
|
||||
|
||||
if [ ! -z "$COMMUNITY_LANGUAGES" ]; then
|
||||
LANGUAGES+=" $COMMUNITY_LANGUAGES"
|
||||
fi
|
||||
echo "lang-import languages:$LANGUAGES" >&2
|
||||
echo "$(tput setaf 2)lang-import.sh started$(tput sgr 0)" >&2
|
||||
|
||||
LNG=$1
|
||||
# if no arguments, 'all' is selected (all po and also pot will be generated)
|
||||
if [ -z "$LNG" ]; then LNG=all; fi
|
||||
|
||||
if [[ ! -z "$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
|
||||
@ -33,7 +69,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
|
||||
|
||||
@ -45,51 +81,98 @@ sed -i 's/ \\n/ /g;s/\\n/ /g' $LNG'_filtered.po'
|
||||
|
||||
#replace in czech translation
|
||||
if [ "$LNG" = "cz" ]; then
|
||||
#replace 'ž' with 'z'
|
||||
sed -i 's/\xc5\xbe/z/g' $LNG'_filtered.po'
|
||||
#replace 'ì' with 'e'
|
||||
sed -i 's/\xc4\x9b/e/g' $LNG'_filtered.po'
|
||||
#replace 'í' with 'i'
|
||||
sed -i 's/\xc3\xad/i/g' $LNG'_filtered.po'
|
||||
#replace 'ø' with 'r'
|
||||
sed -i 's/\xc5\x99/r/g' $LNG'_filtered.po'
|
||||
#replace 'è' with 'c'
|
||||
sed -i 's/\xc4\x8d/c/g' $LNG'_filtered.po'
|
||||
#replace 'á' with 'a'
|
||||
#replace 'Á' with 'A'
|
||||
sed -i 's/\xc3\x81/A/g' $LNG'_filtered.po'
|
||||
#replace 'á' with 'a'
|
||||
sed -i 's/\xc3\xa1/a/g' $LNG'_filtered.po'
|
||||
#replace 'é' with 'e'
|
||||
#replace 'Č' with 'C'
|
||||
sed -i 's/\xc4\x8c/C/g' $LNG'_filtered.po'
|
||||
#replace 'č' with 'c'
|
||||
sed -i 's/\xc4\x8d/c/g' $LNG'_filtered.po'
|
||||
#replace 'Ď' with 'D'
|
||||
sed -i 's/\xc4\x8e/D/g' $LNG'_filtered.po'
|
||||
#replace 'ď' with 'd'
|
||||
sed -i 's/\xc4\x8f/d/g' $LNG'_filtered.po'
|
||||
#replace 'É' with 'E'
|
||||
sed -i 's/\xc3\x89/E/g' $LNG'_filtered.po'
|
||||
#replace 'é' with 'e'
|
||||
sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po'
|
||||
#replace 'Ě' with 'E'
|
||||
sed -i 's/\xc4\x9a/E/g' $LNG'_filtered.po'
|
||||
#replace 'ě' with 'e'
|
||||
sed -i 's/\xc4\x9b/e/g' $LNG'_filtered.po'
|
||||
#replace 'Í' with 'I'
|
||||
sed -i 's/\xc3\x8d/I/g' $LNG'_filtered.po'
|
||||
#replace 'í' with 'i'
|
||||
sed -i 's/\xc3\xad/i/g' $LNG'_filtered.po'
|
||||
#replace 'Ň' with 'N'
|
||||
sed -i 's/\xc5\x87/N/g' $LNG'_filtered.po'
|
||||
#replace 'ň' with 'n'
|
||||
sed -i 's/\xc5\x88/n/g' $LNG'_filtered.po'
|
||||
#replace 'Ó' with 'O'
|
||||
sed -i 's/\xc3\x93/O/g' $LNG'_filtered.po'
|
||||
#replace 'ó' with 'o'
|
||||
sed -i 's/\xc3\xb3/o/g' $LNG'_filtered.po'
|
||||
#replace 'Ř' with 'R'
|
||||
sed -i 's/\xc5\x98/R/g' $LNG'_filtered.po'
|
||||
#replace 'ř' with 'r'
|
||||
sed -i 's/\xc5\x99/r/g' $LNG'_filtered.po'
|
||||
#replace 'Š' with 'S'
|
||||
sed -i 's/\xc5\xa0/S/g' $LNG'_filtered.po'
|
||||
#replace 'š' with 's'
|
||||
sed -i 's/\xc5\xa1/s/g' $LNG'_filtered.po'
|
||||
#replace 'Ť' with 'T'
|
||||
sed -i 's/\xc5\xa4/T/g' $LNG'_filtered.po'
|
||||
#replace 'ť' with 't'
|
||||
sed -i 's/\xc5\xa5/t/g' $LNG'_filtered.po'
|
||||
#replace 'Ú' with 'U'
|
||||
sed -i 's/\xc3\x9a/U/g' $LNG'_filtered.po'
|
||||
#replace 'ú' with 'u'
|
||||
sed -i 's/\xc3\xba/u/g' $LNG'_filtered.po'
|
||||
#replace 'Ů' with 'U'
|
||||
sed -i 's/\xc5\xae/U/g' $LNG'_filtered.po'
|
||||
#replace 'ů' with 'u'
|
||||
sed -i 's/\xc5\xaf/u/g' $LNG'_filtered.po'
|
||||
#replace 'Ý' with 'Y'
|
||||
sed -i 's/\xc3\x9d/Y/g' $LNG'_filtered.po'
|
||||
#replace 'ý' with 'y'
|
||||
sed -i 's/\xc3\xbd/y/g' $LNG'_filtered.po'
|
||||
#replace 'Ž' with 'Z'
|
||||
sed -i 's/\xc5\xbd/Z/g' $LNG'_filtered.po'
|
||||
#replace 'ž' with 'z'
|
||||
sed -i 's/\xc5\xbe/z/g' $LNG'_filtered.po'
|
||||
fi
|
||||
|
||||
#replace in german translation https://en.wikipedia.org/wiki/German_orthography
|
||||
if [ "$LNG" = "de" ]; then
|
||||
#replace 'ä' with 'ae'
|
||||
sed -i 's/\xc3\xa4/ae/g' $LNG'_filtered.po'
|
||||
#replace 'Ä' with 'Ae'
|
||||
sed -i 's/\xc3\x84/Ae/g' $LNG'_filtered.po'
|
||||
#replace 'ü' with 'ue'
|
||||
sed -i 's/\xc3\xbc/ue/g' $LNG'_filtered.po'
|
||||
#replace 'Ü' with 'Ue'
|
||||
sed -i 's/\xc3\x9c/Ue/g' $LNG'_filtered.po'
|
||||
#replace 'ö' with 'oe'
|
||||
sed -i 's/\xc3\xb6/oe/g' $LNG'_filtered.po'
|
||||
#replace 'Ö' with 'Oe'
|
||||
sed -i 's/\xc3\x96/Oe/g' $LNG'_filtered.po'
|
||||
#replace 'ß' with 'ss'
|
||||
sed -i 's/\xc3\x9f/ss/g' $LNG'_filtered.po'
|
||||
#replace UTF-8 'äöüß' to HD44780 A00 'äöüß'
|
||||
#replace 'ä' with 'A00 ROM ä'
|
||||
sed -i 's/\xc3\xa4/\\xe1/g' $LNG'_filtered.po'
|
||||
#replace 'Ä' with 'A00 ROM ä'
|
||||
sed -i 's/\xc3\x84/\\xe1/g' $LNG'_filtered.po'
|
||||
#replace 'ü' with 'A00 ROM ü'
|
||||
sed -i 's/\xc3\xbc/\\xf5/g' $LNG'_filtered.po'
|
||||
#replace 'Ü' with 'A00 ROM ü'
|
||||
sed -i 's/\xc3\x9c/\\xf5/g' $LNG'_filtered.po'
|
||||
#replace 'ö' with 'A00 ROM ö'
|
||||
sed -i 's/\xc3\xb6/\\xef/g' $LNG'_filtered.po'
|
||||
#replace 'Ö' with 'A00 ROM ö'
|
||||
sed -i 's/\xc3\x96/\\xef/g' $LNG'_filtered.po'
|
||||
#replace 'ß' with 'A00 ROM ß'
|
||||
sed -i 's/\xc3\x9f/\\xe2/g' $LNG'_filtered.po'
|
||||
fi
|
||||
|
||||
#replace in spain translation
|
||||
if [ "$LNG" = "es" ]; then
|
||||
#replace 'á' with 'a'
|
||||
#replace 'á' with 'a'
|
||||
sed -i 's/\xc3\xa1/a/g' $LNG'_filtered.po'
|
||||
#replace '¿' with '?'
|
||||
#replace '¿' with '?'
|
||||
sed -i 's/\xc2\xbf/?/g' $LNG'_filtered.po'
|
||||
#replace 'ó' with 'o'
|
||||
#replace 'ó' with 'o'
|
||||
sed -i 's/\xc3\xb3/o/g' $LNG'_filtered.po'
|
||||
#replace 'é' with 'e'
|
||||
#replace 'é' with 'e'
|
||||
sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po'
|
||||
#replace 'í' with 'i'
|
||||
#replace 'í' with 'i'
|
||||
sed -i 's/\xc3\xad/i/g' $LNG'_filtered.po'
|
||||
#replace '!' with '!'
|
||||
sed -i 's/\xc2\xa1/!/g' $LNG'_filtered.po'
|
||||
@ -99,146 +182,176 @@ 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 [ "$LGN" = "sv" ]; then
|
||||
#repace 'Å' with 'Aa'
|
||||
if [ "$LNG" = "sv" ]; then
|
||||
#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 [ "$LGN" = "da" ]; then
|
||||
#repace 'Å' with 'Aa'
|
||||
if [ "$LNG" = "da" ]; then
|
||||
#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 [ "$LGN" = "sl" ]; then
|
||||
#replace 'ë' with 'e'
|
||||
if [ "$LNG" = "sl" ]; then
|
||||
#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 [ "$LGN" = "hu" ]; then
|
||||
#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'
|
||||
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 [ "$LGN" = "lb" ]; then
|
||||
#replace 'ë' with 'e'
|
||||
if [ "$LNG" = "hr" ]; then
|
||||
#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 [ "$LGN" = "hr" ]; then
|
||||
#replace 'ë' with 'e'
|
||||
if [ "$LNG" = "lt" ]; then
|
||||
#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'
|
||||
sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po'
|
||||
fi
|
||||
|
||||
if [ "$LGN" = "lt" ]; then
|
||||
#replace 'ë' with 'e'
|
||||
sed -i 's/\xc3\xab/e/g' $LNG'_filtered.po'
|
||||
#replace 'ä' with 'a'
|
||||
sed -i 's/\xc3\xa4/a/g' $LNG'_filtered.po'
|
||||
#replace 'é' with 'e'
|
||||
#replace 'é' with 'e'
|
||||
sed -i 's/\xc3\xa9/e/g' $LNG'_filtered.po'
|
||||
fi
|
||||
#replace in polish translation
|
||||
#if [ "$LNG" = "pl" ]; then
|
||||
#fi
|
||||
|
||||
#check for nonasci characters
|
||||
if grep --color='auto' -P -n '[^\x00-\x7F]' $LNG'_filtered.po' >nonasci.txt; then
|
||||
#check for nonasci characters except HD44780 ROM A00 'äöüß'
|
||||
if grep --color='auto' -P -n '[^\x00-\x7F]' $LNG'_filtered.po' >nonascii.txt; then
|
||||
exit
|
||||
fi
|
||||
|
||||
@ -249,7 +362,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 +373,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 +385,15 @@ 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
|
||||
#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
|
||||
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,7 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Version 1.0.1 Build 12
|
||||
#
|
||||
# progmem.sh - multi-language support script
|
||||
# Examine content of progmem sections (default is progmem1).
|
||||
#
|
||||
@ -16,14 +18,22 @@
|
||||
# $PROGMEM.var - variables - strings
|
||||
# $PROGMEM.txt - text data only (not used)
|
||||
#
|
||||
#############################################################################
|
||||
# Change log:
|
||||
# 31 May 2018, XPila, Initial
|
||||
# 9 June 2020, 3d-gussner, Added version and Change log
|
||||
# 9 June 2020, 3d-gussner, colored output
|
||||
# 2 Apr. 2021, 3d-gussner, Use `git rev-list --count HEAD progmem.sh`
|
||||
# to get Build Nr
|
||||
#############################################################################
|
||||
#
|
||||
# Config:
|
||||
if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi
|
||||
if [ -z "$OUTDIR" ]; then echo 'variable OUTDIR not set!' >&2; exit 1; fi
|
||||
if [ -z "$OBJDIR" ]; then echo 'variable OBJDIR not set!' >&2; exit 1; fi
|
||||
if [ -z "$INOELF" ]; then echo 'variable INOELF not set!' >&2; exit 1; fi
|
||||
if [ -z "$OBJDUMP" ]; then echo 'variable OBJDUMP not set!' >&2; exit 1; fi
|
||||
if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo 'Config NG!' >&2; exit 1; fi
|
||||
if [ -z "$OUTDIR" ]; then echo "$(tput setaf 1)variable OUTDIR not set!$(tput sgr0)" >&2; exit 1; fi
|
||||
if [ -z "$OBJDIR" ]; then echo "$(tput setaf 1)variable OBJDIR not set!$(tput sgr0)" >&2; exit 1; fi
|
||||
if [ -z "$INOELF" ]; then echo "$(tput setaf 1)variable INOELF not set!$(tput sgr0)" >&2; exit 1; fi
|
||||
if [ -z "$OBJDUMP" ]; then echo "$(tput setaf 1)variable OBJDUMP not set!$(tput sgr0)" >&2; exit 1; fi
|
||||
if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo "$(tput setaf 1)Config NG!$(tput sgr0)" >&2; exit 1; fi
|
||||
#
|
||||
# Program memory used
|
||||
PROGMEM=progmem$1
|
||||
@ -39,11 +49,11 @@ if [ -z "$1" ]; then PROGMEM=progmem1; fi
|
||||
# 6. perform character check and conversion (output to $PROGMEM.var and $PROGMEM.txt)
|
||||
#
|
||||
|
||||
echo "progmem.sh started" >&2
|
||||
echo "$(tput setaf 2)progmem.sh started$(tput sgr0)" >&2
|
||||
|
||||
# (0)
|
||||
echo " progmem.sh (0) - checking input files" >&2
|
||||
if [ ! -e $OUTDIR ]; then echo "progmem.sh - file '$INOELF' not found!" >&2; exit 1; fi
|
||||
if [ ! -e $OUTDIR ]; then echo "progmem.sh - file $(tput setaf 2)"$INOELF"$(tput sgr 0) not found!" >&2; exit 1; fi
|
||||
|
||||
# (1)
|
||||
echo " progmem.sh (1) - removing output files" >&2
|
||||
@ -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
|
||||
exit 0
|
||||
|
@ -1,5 +1,7 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Version 1.0.1 Build 7
|
||||
#
|
||||
# textaddr.sh - multi-language support script
|
||||
# Compile progmem1.var and lang_en.txt files to textaddr.txt file (mapping of progmem addreses to text idenifiers)
|
||||
#
|
||||
@ -19,11 +21,19 @@
|
||||
# after sort this will generate pairs of lines (line from progmem1 first)
|
||||
# result of sort is compiled with simple script and stored into file textaddr.txt
|
||||
#
|
||||
#############################################################################
|
||||
# Change log:
|
||||
# 30 May 2018, XPila, Initial
|
||||
# 9 June 2020, 3d-gussner, Added version and Change log
|
||||
# 9 June 2020, 3d-gussner, colored output
|
||||
# 2 Apr. 2021, 3d-gussner, Use `git rev-list --count HEAD textaddr.sh`
|
||||
# to get Build Nr
|
||||
#############################################################################
|
||||
|
||||
echo "textaddr.sh started" >&2
|
||||
echo "$(tput setaf 2)textaddr.sh started$(tput sgr0)" >&2
|
||||
|
||||
if [ ! -e progmem1.var ]; then echo 'textaddr.sh - file progmem1.var not found!' >&2; exit 1; fi
|
||||
if [ ! -e lang_en.txt ]; then echo 'textaddr.sh - file lang_en.txt not found!' >&2; exit 1; fi
|
||||
if [ ! -e progmem1.var ]; then echo "$(tput setaf 1)textaddr.sh - file progmem1.var not found!$(tput sgr0)" >&2; exit 1; fi
|
||||
if [ ! -e lang_en.txt ]; then echo "$(tput setaf 1)textaddr.sh - file lang_en.txt not found!$(tput sgr0)" >&2; exit 1; fi
|
||||
addr=''
|
||||
text=''
|
||||
(cat progmem1.var | sed -E "s/^([^ ]*) ([^ ]*) (.*)/\1 \"\3\"/";\
|
||||
@ -63,6 +73,6 @@ text=''
|
||||
fi
|
||||
done > textaddr.txt
|
||||
|
||||
echo "textaddr.sh finished" >&2
|
||||
echo "$(tput setaf 2)textaddr.sh finished$(tput sgr0)" >&2
|
||||
|
||||
exit 0
|
||||
exit 0
|
||||
|
@ -1,12 +1,23 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Version 1.0.1 Build 10
|
||||
#
|
||||
# update_lang.sh - multi-language support script
|
||||
# Update secondary language in binary file.
|
||||
#
|
||||
#############################################################################
|
||||
# Change log:
|
||||
# 17 June 2018, XPila, Initial
|
||||
# 9 June 2020, 3d-gussner, Added version and Change log
|
||||
# 9 June 2020, 3d-gussner, colored output
|
||||
# 2 Apr. 2021, 3d-gussner, Use `git rev-list --count HEAD update_lang.sh`
|
||||
# to get Build Nr
|
||||
#############################################################################
|
||||
#
|
||||
# Config:
|
||||
if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi
|
||||
if [ -z "$OBJCOPY" ]; then echo 'variable OBJCOPY not set!' >&2; exit 1; fi
|
||||
if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo 'Config NG!' >&2; exit 1; fi
|
||||
if [ -z "$OBJCOPY" ]; then echo "$(tput setaf 1)variable OBJCOPY not set!$(tput sgr0)" >&2; exit 1; fi
|
||||
if [ -z "$CONFIG_OK" ] | [ $CONFIG_OK -eq 0 ]; then echo "$(tput setaf 1)Config NG!$(tput sgr0)" >&2; exit 1; fi
|
||||
#
|
||||
# Selected language:
|
||||
LNG=$1
|
||||
@ -17,9 +28,9 @@ finish()
|
||||
{
|
||||
echo
|
||||
if [ "$1" = "0" ]; then
|
||||
echo "update_lang.sh finished with success" >&2
|
||||
echo "$(tput setaf 2)update_lang.sh finished with success$(tput sgr0)" >&2
|
||||
else
|
||||
echo "update_lang.sh finished with errors!" >&2
|
||||
echo "$(tput setaf 1)update_lang.sh finished with errors!$(tput sgr0)" >&2
|
||||
fi
|
||||
case "$-" in
|
||||
*i*) echo "press enter key" >&2; read ;;
|
||||
@ -27,22 +38,22 @@ finish()
|
||||
exit $1
|
||||
}
|
||||
|
||||
echo "update_lang.sh started" >&2
|
||||
echo " selected language=$LNG" >&2
|
||||
echo "$(tput setaf 2)update_lang.sh started$(tput sgr0)" >&2
|
||||
echo " selected language=$(tput setaf 2)$LNG$(tput sgr0)" >&2
|
||||
|
||||
echo -n " checking files..." >&2
|
||||
if [ ! -e text.sym ]; then echo "NG! file text.sym not found!" >&2; finish 1; fi
|
||||
if [ ! -e lang_$LNG.bin ]; then echo "NG! file lang_$LNG.bin not found!" >&2; finish 1; fi
|
||||
if [ ! -e firmware.bin ]; then echo "NG! file firmware.bin not found!" >&2; finish 1; fi
|
||||
if [ ! -e text.sym ]; then echo "$(tput setaf 1)NG! file text.sym not found!$(tput sgr0)" >&2; finish 1; fi
|
||||
if [ ! -e lang_$LNG.bin ]; then echo "$(tput setaf 1)NG! file lang_$LNG.bin not found!$(tput sgr0)" >&2; finish 1; fi
|
||||
if [ ! -e firmware.bin ]; then echo "$(tput setaf 1)NG! file firmware.bin not found!$(tput sgr0)" >&2; finish 1; fi
|
||||
echo "OK" >&2
|
||||
|
||||
echo -n " checking symbols..." >&2
|
||||
#find symbol _SEC_LANG in section '.text'
|
||||
sec_lang=$(cat text.sym | grep -E "\b_SEC_LANG\b")
|
||||
if [ -z "$sec_lang" ]; then echo "NG!\n symbol _SEC_LANG not found!" >&2; finish 1; fi
|
||||
if [ -z "$sec_lang" ]; then echo "$(tput setaf 1)NG!\n symbol _SEC_LANG not found!$(tput sgr0)" >&2; finish 1; fi
|
||||
#find symbol _PRI_LANG_SIGNATURE in section '.text'
|
||||
pri_lang=$(cat text.sym | grep -E "\b_PRI_LANG_SIGNATURE\b")
|
||||
if [ -z "$pri_lang" ]; then echo "NG!\n symbol _PRI_LANG_SIGNATURE not found!" >&2; finish 1; fi
|
||||
if [ -z "$pri_lang" ]; then echo "$(tput setaf 1)NG!\n symbol _PRI_LANG_SIGNATURE not found!$(tput sgr0)" >&2; finish 1; fi
|
||||
echo "OK" >&2
|
||||
|
||||
echo " calculating vars:" >&2
|
||||
@ -65,7 +76,7 @@ printf " lang_table_size =0x%04x (=%d bytes)\n" $lang_table_size $lang_table_si
|
||||
lang_file_size=$(wc -c lang_$LNG.bin | cut -f1 -d' ')
|
||||
printf " lang_file_size =0x%04x (=%d bytes)\n" $lang_file_size $lang_file_size >&2
|
||||
|
||||
if [ $lang_file_size -gt $lang_table_size ]; then echo "Lanaguage binary file size too big!" >&2; finish 1; fi
|
||||
if [ $lang_file_size -gt $lang_table_size ]; then echo "$(tput setaf 1)Lanaguage binary file size too big!$(tput sgr0)" >&2; finish 1; fi
|
||||
|
||||
echo "updating 'firmware.bin'..." >&2
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user