#! /bin/sh . "${srcdir=.}/init.sh"; path_prepend_ . ../src # Test checking of KDE format strings. cat <<\EOF > f-kd-2.data # Valid: %% doesn't count msgid "abc%%def" msgstr "xyz" # Valid: digit sequence starting with 0 doesn't count msgid "abc%09def" msgstr "xyz" # Valid: digit sequence starting with 0 doesn't count msgid "abc%0" msgstr "xyz" # Valid: digit sequence starting with 0 doesn't count msgid "abc%00" msgstr "xyz" # Valid: L is not a recognized flag msgid "abc%L1def" msgstr "xyz" # Valid: same arguments msgid "abc%2def" msgstr "xyz%2" # Invalid: different arguments msgid "abc%2def" msgstr "xyz%1" # Invalid: different arguments msgid "abc%1def" msgstr "xyz%2" # Valid: repetition of an argument in the translation msgid "abc%2def" msgstr "xyz%2uvw%2" # Valid: removing repeated argument in the translation msgid "abc%2def%2" msgstr "xyz%2uvw" # Valid: permutation msgid "abc%3%1%2def" msgstr "xyz%2%1%3" # Invalid: too few arguments msgid "abc%2def%1ghi%3" msgstr "xyz%1" # Invalid: only one argument removed (valid only in singular form) msgid "abc%2def%1ghi%3" msgstr "xyz%1uvw%2" # Invalid: only one argument removed (valid only in singular form) msgid "abc%2def%1ghi%3" msgstr "xyz%1uvw%3" # Invalid: only one argument removed (valid only in singular form) msgid "abc%2def%1ghi%3" msgstr "xyz%3uvw%2" # Invalid: only one argument removed (valid only in singular form) msgid "abc%1def%3" msgstr "xyz%1" # Invalid: wrong argument removed msgid "abc%1def%3" msgstr "xyz%3" # Invalid: too many arguments msgid "abc%1def" msgstr "xyz%1uvw%2" # Invalid: missing non-final argument (valid only in singular form) msgid "abc%2def%1" msgstr "xyz%2" # Invalid: added non-final argument msgid "abc%2def" msgstr "xyz%1%2" EOF : ${MSGFMT=msgfmt} n=0 while read comment; do read msgid_line read msgstr_line n=`expr $n + 1` cat < f-kd-2-$n.po #, kde-format ${msgid_line} ${msgstr_line} EOF fail= if echo "$comment" | grep 'Valid:' > /dev/null; then if ${MSGFMT} --check-format -o f-kd-2-$n.mo f-kd-2-$n.po; then : else fail=yes fi else ${MSGFMT} --check-format -o f-kd-2-$n.mo f-kd-2-$n.po 2> /dev/null if test $? = 1; then : else fail=yes fi fi if test -n "$fail"; then echo "Format string checking error:" 1>&2 cat f-kd-2-$n.po 1>&2 exit 1 fi rm -f f-kd-2-$n.po f-kd-2-$n.mo done < f-kd-2.data exit 0