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