Home | History | Annotate | Line # | Download | only in tests
      1 #! /bin/sh
      2 
      3 # Test of gettext facilities in the sh language.
      4 # Assumes an fr_FR locale is installed.
      5 # Assumes the following packages are installed: bash.
      6 
      7 # Note: This test fails on BeOS because there all locales use the UTF-8
      8 # encoding, even the locale fr_FR, thus the output comes out in UTF-8.
      9 
     10 tmpfiles=""
     11 trap 'rm -fr $tmpfiles' 1 2 3 15
     12 
     13 tmpfiles="$tmpfiles prog.sh"
     14 cat <<\EOF > prog.sh
     15 #! /bin/sh
     16 
     17 n=$1
     18 
     19 . gettext.sh
     20 
     21 TEXTDOMAIN=prog
     22 export TEXTDOMAIN
     23 TEXTDOMAINDIR=.
     24 export TEXTDOMAINDIR
     25 
     26 $echo "`gettext \"'Your command, please?', asked the waiter.\"`"
     27 
     28 $echo "`eval_ngettext \"a piece of cake\" \"\\$n pieces of cake\" $n`"
     29 EOF
     30 
     31 tmpfiles="$tmpfiles prog.pot"
     32 : ${XGETTEXT=xgettext}
     33 ${XGETTEXT} -o prog.pot --omit-header --no-location prog.sh
     34 
     35 tmpfiles="$tmpfiles prog.ok"
     36 cat <<\EOF > prog.ok
     37 msgid "'Your command, please?', asked the waiter."
     38 msgstr ""
     39 
     40 #, sh-format
     41 msgid "a piece of cake"
     42 msgid_plural "$n pieces of cake"
     43 msgstr[0] ""
     44 msgstr[1] ""
     45 EOF
     46 
     47 : ${DIFF=diff}
     48 ${DIFF} prog.ok prog.pot || exit 1
     49 
     50 tmpfiles="$tmpfiles fr.po"
     51 cat <<\EOF > fr.po
     52 msgid ""
     53 msgstr ""
     54 "Content-Type: text/plain; charset=ISO-8859-1\n"
     55 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
     56 
     57 msgid "'Your command, please?', asked the waiter."
     58 msgstr "Votre commande, s'il vous plait, dit le garon."
     59 
     60 # Les gateaux allemands sont les meilleurs du monde.
     61 #, sh-format
     62 msgid "a piece of cake"
     63 msgid_plural "$n pieces of cake"
     64 msgstr[0] "un morceau de gateau"
     65 msgstr[1] "$n morceaux de gateau"
     66 EOF
     67 
     68 tmpfiles="$tmpfiles fr.po.new"
     69 : ${MSGMERGE=msgmerge}
     70 ${MSGMERGE} -q -o fr.po.new fr.po prog.pot
     71 
     72 : ${DIFF=diff}
     73 ${DIFF} fr.po fr.po.new || exit 1
     74 
     75 tmpfiles="$tmpfiles fr"
     76 test -d fr || mkdir fr
     77 test -d fr/LC_MESSAGES || mkdir fr/LC_MESSAGES
     78 
     79 : ${MSGFMT=msgfmt}
     80 ${MSGFMT} -o fr/LC_MESSAGES/prog.mo fr.po
     81 
     82 # Test which of the fr_FR locales are installed.
     83 : ${LOCALE_FR=fr_FR}
     84 : ${LOCALE_FR_UTF8=fr_FR.UTF-8}
     85 if test $LOCALE_FR != none; then
     86   LC_ALL=$LOCALE_FR ./testlocale
     87   case $? in
     88     0) ;;
     89     77) LOCALE_FR=none;;
     90     *) exit 1;;
     91   esac
     92 fi
     93 if test $LOCALE_FR_UTF8 != none; then
     94   LC_ALL=$LOCALE_FR_UTF8 ./testlocale
     95   case $? in
     96     0) ;;
     97     77) LOCALE_FR_UTF8=none;;
     98     *) exit 1;;
     99   esac
    100 fi
    101 if test $LOCALE_FR = none && test $LOCALE_FR_UTF8 = none; then
    102   if test -f /usr/bin/localedef; then
    103     echo "Skipping test: no french locale is installed"
    104   else
    105     echo "Skipping test: no french locale is supported"
    106   fi
    107   rm -fr $tmpfiles; exit 77
    108 fi
    109 
    110 tmpfiles="$tmpfiles prog.ok prog.oku prog.out"
    111 : ${DIFF=diff}
    112 cat <<\EOF > prog.ok
    113 Votre commande, s'il vous plait, dit le garon.
    114 2 morceaux de gateau
    115 EOF
    116 cat <<\EOF > prog.oku
    117 Votre commande, s'il vous plait, dit le garon.
    118 2 morceaux de gateau
    119 EOF
    120 
    121 : ${LOCALE_FR=fr_FR}
    122 : ${LOCALE_FR_UTF8=fr_FR.UTF-8}
    123 if test $LOCALE_FR != none; then
    124   LANGUAGE= LC_ALL=$LOCALE_FR sh ./prog.sh 2 > prog.out || exit 1
    125   ${DIFF} prog.ok prog.out || exit 1
    126 fi
    127 if test $LOCALE_FR_UTF8 != none; then
    128   LANGUAGE= LC_ALL=$LOCALE_FR_UTF8 sh ./prog.sh 2 > prog.out || exit 1
    129   ${DIFF} prog.oku prog.out || exit 1
    130 fi
    131 
    132 rm -fr $tmpfiles
    133 
    134 exit 0
    135