Prusa-Firmware/lang/po/make_po.sh

62 lines
1.4 KiB
Bash
Raw Normal View History

#!/bin/sh
#
# make_po.sh - multi-language support script
# for generating lang_xx.po
#
SRCDIR="../../Firmware"
#
LANG=$1
if [ -z "$LANG" ]; then LANG=cz; fi
#
echo "make_po.sh started" >&2
#remove output file if exists
if [ -e lang_$LANG.po ]; then rm lang_$LANG.po; fi
langname=$(\
case "$LANG" in
*en*) echo "English" ;;
*cz*) echo "Czech" ;;
*de*) echo "German" ;;
*it*) echo "Italian" ;;
*es*) echo "Spanish" ;;
*pl*) echo "Polish" ;;
esac)
#write po header
echo "# Translation into $langname." > lang_$LANG.po
echo "#" >> lang_$LANG.po
echo 'msgid ""' >> lang_$LANG.po
echo 'msgstr ""' >> lang_$LANG.po
echo '"MIME-Version: 1.0\n"' >> lang_$LANG.po
echo '"Content-Type: text/plain; charset=UTF-8\n"' >> lang_$LANG.po
echo '"Content-Transfer-Encoding: 8bit\n"' >> lang_$LANG.po
echo >> lang_$LANG.po
#list .cpp, .c and .h files
files=$(ls "$SRCDIR"/*.cpp "$SRCDIR"/*.c "$SRCDIR"/*.h)
#loop over all messages, print only untranslated (=="\x00")
s0=''
s1=''
s2=''
cat ../lang_en_$LANG.txt | sed "s/\\\\/\\\\\\\\/g;s/^#/#: /" | while read -r s; do
if [ "$s" == "" ]; then
if [ "$s0" == "\"\\\\x00\"" ]; then
search=$(echo -e "$s1")
found=$(grep -m1 -n -F "$search" $files | head -n1 | cut -f1-2 -d':' | sed "s/^.*\///")
echo "#: $found"
echo -e "msgid $s1"
echo 'msgstr ""'
echo
fi
fi
s2=$s1
s1=$s0
s0=$s
done >> lang_$LANG.po
echo "make_po.sh finished" >&2
exit 0