76 lines
2.1 KiB
Bash
76 lines
2.1 KiB
Bash
#!/bin/bash
|
|
#
|
|
# lang_check.sh - multi-language support script
|
|
# check lang_xx.bin (language binary file)
|
|
#
|
|
# Input files:
|
|
# lang_$1.bin
|
|
# lang_en.txt or lang_en_$1.txt
|
|
#
|
|
#
|
|
|
|
#set 'cz'
|
|
|
|
#dictionary txt file
|
|
fn_t=lang_en_$1.txt
|
|
if [ "$1" = "en" ]; then fn_t=lang_en.txt; fi
|
|
#binary file to check
|
|
fn_b=lang_$1.bin
|
|
|
|
#check txt dictionary file
|
|
echo -n "dictionary file: $fn_t"
|
|
if [ -e $fn_t ]; then echo " - OK"; else echo " - Not found!"; exit 1; fi
|
|
|
|
#create lang_xx.tmp - different processing for 'en' language
|
|
if [ "$1" = "en" ]; then
|
|
#remove comments and empty lines
|
|
cat lang_en.txt | sed '/^$/d;/^#/d'
|
|
else
|
|
#remove comments and empty lines, print lines with translated text only
|
|
cat lang_en_$1.txt | sed '/^$/d;/^#/d' | sed -n 'n;p'
|
|
fi | sed 's/^\"\\x00\"$/\"\"/' > lang_$1.tmp
|
|
|
|
count_txt=$(grep -c '^"' lang_$1.tmp)
|
|
|
|
echo -n "language bin file: $fn_b"
|
|
if [ -e $fn_b ]; then echo " - OK"; else echo " - Not found!"; exit 1; fi
|
|
|
|
#read header and convert to hex
|
|
header=$(dd if=$fn_b bs=1 count=16 2>/dev/null | xxd | cut -c11-49 | sed 's/\([0-9a-f][0-9a-f]\)[\ ]*/\1 /g')
|
|
echo "header='$header'"
|
|
magic=0x$(echo $header | tr -d ' ' | cut -c1-8)
|
|
echo "magic='$magic'"
|
|
size=$(echo $header | tr -d ' ' | cut -c9-12)
|
|
size=0x${size:2:2}${size:0:2}
|
|
echo "size='$size' ($(($size)))"
|
|
count=$(echo $header | tr -d ' ' | cut -c13-16)
|
|
count=0x${count:2:2}${count:0:2}
|
|
echo "count='$count' ($(($count)))"
|
|
o=0
|
|
l=0
|
|
#create lang_xx_1.tmp (temporary text file from binary data)
|
|
(dd if=$fn_b bs=1 count=$((2*$count)) skip=16 2>/dev/null | xxd | cut -c11-49 | tr ' ' "\n" |\
|
|
sed 's/\([0-9a-f][0-9a-f]\)\([0-9a-f][0-9a-f]\)/\2\1 /g;/^$/d'; printf "%04x\n" $(($size)) ) |\
|
|
while read offs; do
|
|
if [ $o -ne 0 ]; then
|
|
l=$((0x$offs - $o))
|
|
echo -n '"'
|
|
dd if=$fn_b bs=1 count=$((l-1)) skip=$o 2>/dev/null
|
|
echo '"'
|
|
fi
|
|
o=$((0x$offs))
|
|
done > lang_$1_1.tmp
|
|
#create lang_xx_2.tmp (temporary text file from dictionary)
|
|
cat lang_$1.tmp | sed 's/^\"/printf \"\\x22/;s/"$/\\x22\\x0a\"/' | sh >lang_$1_2.tmp
|
|
#compare temporary files
|
|
diff -a lang_$1_1.tmp lang_$1_2.tmp >lang_$1_check.dif
|
|
dif=$(cat lang_$1_check.dif)
|
|
if [ -z "$dif" ]; then
|
|
echo 'binary data OK'
|
|
else
|
|
echo 'binary data NG!'
|
|
fi
|
|
|
|
read
|
|
exit
|