Merge pull request #3215 from wavexx/lang_add_improvements

PFW-1297: lang-add.sh improvements
This commit is contained in:
3d-gussner 2022-03-07 11:47:11 +01:00 committed by GitHub
commit ab48e9880e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -7,7 +7,12 @@
# lang_add.txt # lang_add.txt
# Updated files: # Updated files:
# lang_en.txt and all lang_en_xx.txt # lang_en.txt and all lang_en_xx.txt
#
# List of supported languages
LANGUAGES="cz de es fr it pl"
# Community languages
LANGUAGES+=" nl" #Dutch
# Config: # Config:
if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi if [ -z "$CONFIG_OK" ]; then eval "$(cat config.sh)"; fi
@ -21,36 +26,48 @@ echo "fw-clean languages:$LANGUAGES" >&2
# insert single text to english dictionary # insert single text to english dictionary
# $1 - text to insert # $1 - text to insert
# $2 - metadata
insert_en() insert_en()
{ {
#replace '[' and ']' in string with '\[' and '\]' #replace '[' and ']' in string with '\[' and '\]'
str=$(echo "$1" | sed "s/\[/\\\[/g;s/\]/\\\]/g") str=$(echo "$1" | sed "s/\[/\\\[/g;s/\]/\\\]/g")
# extract english texts, merge new text, grep line number # extract english texts, merge new text, grep line number
ln=$((cat lang_en.txt; echo "$1") | sed "/^$/d;/^#/d" | sort | grep -n "$str" | sed "s/:.*//") ln=$((cat lang_en.txt; echo "$1") | sed "/^$/d;/^#/d" | sort | grep -n "$str" | sed "s/:.*//;q")
# calculate position for insertion # calculate position for insertion
ln=$((3*(ln-2)+1)) ln=$((3*(ln-2)+1))
[ "$ln" -lt 1 ] && ln=1
# insert new text # insert new text
sed -i "$ln"'i\\' lang_en.txt sed -i "$ln"'i\\' lang_en.txt
sed -i "$ln"'i\'"$1"'\' lang_en.txt sed -i "$ln"'i\'"$1"'\' lang_en.txt
sed -i "$ln"'i\#\' lang_en.txt sed -i "${ln}i\\#$2" lang_en.txt
} }
# insert single text to translated dictionary # insert single text to translated dictionary
# $1 - text to insert # $1 - text to insert
# $2 - sufix # $2 - suffix
# $3 - metadata
insert_xx() insert_xx()
{ {
#replace '[' and ']' in string with '\[' and '\]' #replace '[' and ']' in string with '\[' and '\]'
str=$(echo "$1" | sed "s/\[/\\\[/g;s/\]/\\\]/g") str=$(echo "$1" | sed "s/\[/\\\[/g;s/\]/\\\]/g")
# extract english texts, merge new text, grep line number # extract english texts, merge new text, grep line number
ln=$((cat lang_en_$2.txt; echo "$1") | sed "/^$/d;/^#/d" | sed -n 'p;n' | sort | grep -n "$str" | sed "s/:.*//") ln=$((cat lang_en_$2.txt; echo "$1") | sed "/^$/d;/^#/d" | sed -n 'p;n' | sort | grep -n "$str" | sed "s/:.*//;q")
# calculate position for insertion # calculate position for insertion
ln=$((4*(ln-2)+1)) ln=$((4*(ln-2)+1))
[ "$ln" -lt 1 ] && ln=1
# insert new text # insert new text
sed -i "$ln"'i\\' lang_en_$2.txt sed -i "$ln"'i\\' lang_en_$2.txt
sed -i "$ln"'i\"\x00"\' lang_en_$2.txt sed -i "$ln"'i\"\x00"\' lang_en_$2.txt
sed -i "$ln"'i\'"$1"'\' lang_en_$2.txt sed -i "$ln"'i\'"$1"'\' lang_en_$2.txt
sed -i "$ln"'i\#\' lang_en_$2.txt sed -i "${ln}i\\#$3" lang_en_$2.txt
}
# find the metadata for the specified string
# TODO: this is unbeliveably crude
# $1 - text to search for
find_metadata()
{
sed -ne "s^.*\(_[iI]\|ISTR\)($1).*////\(.*\)^\2^p" ../Firmware/*.[ch]* | head -1
} }
# check if input file exists # check if input file exists
@ -65,17 +82,15 @@ cat lang_add.txt | sed 's/^/"/;s/$/"/' | while read new_s; do
echo "$new_s" echo "$new_s"
echo echo
else else
meta=$(find_metadata "$new_s")
echo "adding text:" echo "adding text:"
echo "$new_s" echo "$new_s ($meta)"
echo echo
#insert_en "$new_s"
for lang in $LANGUAGES; do
insert_xx "$new_s" "$lang"
done
#Use the 2 lines below as a template and replace 'qr' insert_en "$new_s" "$meta"
##New language for lang in $LANGUAGES; do
# insert_xx "$new_s" 'qr' insert_xx "$new_s" "$lang" "$meta"
done
fi fi
done done