1#! /bin/sh 2 3# Test of gettext facilities in the librep language. 4# Assumes an fr_FR locale is installed. 5# Assumes the following packages are installed: librep. 6 7tmpfiles="" 8trap 'rm -fr $tmpfiles' 1 2 3 15 9 10tmpfiles="$tmpfiles prog.jl" 11cat <<\EOF > prog.jl 12(require 'rep.i18n.gettext) 13 14(textdomain "prog") 15(bindtextdomain "prog" ".") 16 17(format standard-output "%s\n" (_ "'Your command, please?', asked the waiter.")) 18 19(format standard-output "%s\n" 20 (format nil (_ "%s is replaced by %s.") "FF" "EUR")) 21EOF 22 23tmpfiles="$tmpfiles prog.tmp prog.pot" 24: ${XGETTEXT=xgettext} 25${XGETTEXT} -o prog.tmp --omit-header --no-location prog.jl 26test $? = 0 || { rm -fr $tmpfiles; exit 1; } 27tr -d '\r' < prog.tmp > prog.pot 28test $? = 0 || { rm -fr $tmpfiles; exit 1; } 29 30tmpfiles="$tmpfiles prog.ok" 31cat <<EOF > prog.ok 32msgid "'Your command, please?', asked the waiter." 33msgstr "" 34 35#, librep-format 36msgid "%s is replaced by %s." 37msgstr "" 38EOF 39 40: ${DIFF=diff} 41${DIFF} prog.ok prog.pot || exit 1 42 43tmpfiles="$tmpfiles fr.po" 44cat <<\EOF > fr.po 45msgid "" 46msgstr "" 47"Content-Type: text/plain; charset=ISO-8859-1\n" 48"Plural-Forms: nplurals=2; plural=(n > 1);\n" 49 50msgid "'Your command, please?', asked the waiter." 51msgstr "�Votre commande, s'il vous plait�, dit le gar�on." 52 53# Reverse the arguments. 54#, librep-format 55msgid "%s is replaced by %s." 56msgstr "%2$s remplace %1$s." 57EOF 58 59tmpfiles="$tmpfiles fr.po.tmp fr.po.new" 60: ${MSGMERGE=msgmerge} 61${MSGMERGE} -q -o fr.po.tmp fr.po prog.pot 62test $? = 0 || { rm -fr $tmpfiles; exit 1; } 63tr -d '\r' < fr.po.tmp > fr.po.new 64test $? = 0 || { rm -fr $tmpfiles; exit 1; } 65 66: ${DIFF=diff} 67${DIFF} fr.po fr.po.new || exit 1 68 69tmpfiles="$tmpfiles fr" 70test -d fr || mkdir fr 71test -d fr/LC_MESSAGES || mkdir fr/LC_MESSAGES 72 73: ${MSGFMT=msgfmt} 74${MSGFMT} -o fr/LC_MESSAGES/prog.mo fr.po 75 76# Test for presence of rep version 0.15.3 or newer. 77(rep --version) >/dev/null 2>/dev/null \ 78 || { echo "Skipping test: rep not found"; rm -fr $tmpfiles; exit 77; } 79case `rep --version | sed -e 's/^[^0-9]*//'` in 80 0.[0-9] | 0.1[0-5] | 0.[0-9].* | 0.1[0-4].* | 0.15.[0-2] ) 81 echo "Skipping test: rep version too old"; rm -fr $tmpfiles; exit 77;; 82esac 83 84# Test which of the fr_FR locales are installed. 85: ${LOCALE_FR=fr_FR} 86: ${LOCALE_FR_UTF8=fr_FR.UTF-8} 87if test $LOCALE_FR != none; then 88 LC_ALL=$LOCALE_FR ./testlocale 89 case $? in 90 0) ;; 91 77) LOCALE_FR=none;; 92 *) exit 1;; 93 esac 94fi 95if test $LOCALE_FR_UTF8 != none; then 96 LC_ALL=$LOCALE_FR_UTF8 ./testlocale 97 case $? in 98 0) ;; 99 77) LOCALE_FR_UTF8=none;; 100 *) exit 1;; 101 esac 102fi 103if test $LOCALE_FR = none && test $LOCALE_FR_UTF8 = none; then 104 if test -f /usr/bin/localedef; then 105 echo "Skipping test: no french locale is installed" 106 else 107 echo "Skipping test: no french locale is supported" 108 fi 109 rm -fr $tmpfiles; exit 77 110fi 111 112tmpfiles="$tmpfiles prog.ok prog.oku prog.out" 113: ${DIFF=diff} 114cat <<\EOF > prog.ok 115�Votre commande, s'il vous plait�, dit le gar�on. 116EUR remplace FF. 117EOF 118cat <<\EOF > prog.oku 119��Votre commande, s'il vous plait��, dit le gar��on. 120EUR remplace FF. 121EOF 122 123: ${LOCALE_FR=fr_FR} 124: ${LOCALE_FR_UTF8=fr_FR.UTF-8} 125if test $LOCALE_FR != none; then 126 LANGUAGE= LC_ALL=$LOCALE_FR rep --no-rc --batch prog.jl > prog.out || exit 1 127 ${DIFF} prog.ok prog.out || exit 1 128fi 129if test $LOCALE_FR_UTF8 != none; then 130 LANGUAGE= LC_ALL=$LOCALE_FR_UTF8 rep --no-rc --batch prog.jl > prog.out || exit 1 131 ${DIFF} prog.oku prog.out || exit 1 132fi 133 134rm -fr $tmpfiles 135 136exit 0 137