#!/bin/sh
# $Id: gen-intl,v 1.13 2002/12/15 00:38:10 zas Exp $

PRE="../src/intl/lng_"

update_if_different() {
	if [ ! -e "$1" ] || ! cmp "$1" "$1.tmp" 2>&1 >/dev/null
	then
		mv -f "$1.tmp" "$1"
		echo " updated"
	else
		rm -f "$1.tmp"
		echo " unchanged"
	fi
}

# Force an update if there are any parameters
if [ $# -gt 0 ]
then rm -f ${PRE}*.inc ../src/intl/lang_defs.h ../src/intl/language.inc
fi

echo
echo Generating language table
echo

languages=`cat index.txt`
if [ -z "$languages" ]
then
	echo "`basename $0`: no translations listed in index.txt" >&2
	echo
	exit 1
fi

exec 3>&1
(
num_languages=0

echo "/* Automatically generated by `basename $0` */"

for lang in $languages
do
	echo $lang .................................................. |
		cut -c -30 | tr -d '\n' >&3

	exec 4>${PRE}${lang}.inc.tmp
	echo "/* Automatically generated by `basename $0` */" >&4
	echo >&4
	echo "struct translation translation_${lang}[] = {" >&4
	echo '	{ T_NIL_, NULL },' >&4
	sed '/^#/d;s/^/	{ /;s/,*$/ },/;s/
//g' ${lang}.lng >&4
	echo '	{ T_NIL_, NULL }' >&4
	echo '};' >&4
	exec 4>&-

	update_if_different ${PRE}${lang}.inc >&3

	num_languages=`expr $num_languages + 1`
done

echo

for lang in $languages
do echo "#include \"lng_${lang}.inc\""
done

echo

echo 'struct translation_desc translations[] = {'
for lang in $languages
do echo "	{ translation_${lang} },"
done
echo '	{ NULL }'
echo '};'

echo

(
	echo "/* Automatically generated by `basename $0` */"
	echo
	echo "#define N_LANGUAGES $num_languages"
	echo
	echo 'enum translation_codes {'
	echo '	T_NIL_ = 0,'
	( grep '^T_' english.lng ; echo T__N_TEXTS ) |
		sed 's/,.*//;s/^/	/;s/$/,/'
	echo '};'
) | tr -d '
' > ../src/intl/lang_defs.h.tmp
) | tr -d '
' > ../src/intl/language.inc.tmp

echo
echo -n '../src/intl/lang_defs.h ......'
update_if_different ../src/intl/lang_defs.h

echo -n '../src/intl/language.inc .....'
update_if_different ../src/intl/language.inc

echo timestamp >../src/intl/stamp-intl

echo
echo Done.
