lang-perl-2 revision 1.1.1.1
1#! /bin/sh
2
3# Test of gettext facilities in the Perl language,
4# using brace format strings.
5# Assumes an fr_FR locale is installed.
6# Assumes the following packages are installed: perl, libintl-perl.
7
8tmpfiles=""
9trap 'rm -fr $tmpfiles' 1 2 3 15
10
11tmpfiles="$tmpfiles program.pl"
12cat <<\EOF > program.pl
13use Locale::TextDomain (prog => './');
14my $n = 2;
15print __"'Your command, please?', asked the waiter.";
16print "\n";
17printf __n ("a piece of cake", "%d pieces of cake", $n), $n;
18print "\n";
19printf __x ("{old} is replaced by {new}.", old => "FF", new => "EUR");
20print "\n";
21EOF
22
23tmpfiles="$tmpfiles prog.pot"
24: ${XGETTEXT=xgettext}
25${XGETTEXT} \
26  -k__ --flag=__:1:pass-perl-format --flag=__:1:pass-perl-brace-format \
27  -k__n:1,2 --flag=__n:1:pass-perl-format --flag=__n:1:pass-perl-brace-format \
28            --flag=__n:2:pass-perl-format --flag=__n:2:pass-perl-brace-format \
29  -k__x --flag=__x:1:perl-brace-format \
30  -o prog.pot --omit-header --no-location program.pl
31
32tmpfiles="$tmpfiles prog.ok"
33cat <<EOF > prog.ok
34msgid "'Your command, please?', asked the waiter."
35msgstr ""
36
37#, perl-format
38msgid "a piece of cake"
39msgid_plural "%d pieces of cake"
40msgstr[0] ""
41msgstr[1] ""
42
43#, perl-brace-format
44msgid "{old} is replaced by {new}."
45msgstr ""
46EOF
47
48: ${DIFF=diff}
49${DIFF} prog.ok prog.pot || exit 1
50
51tmpfiles="$tmpfiles fr.po"
52cat <<\EOF > fr.po
53msgid ""
54msgstr ""
55"Content-Type: text/plain; charset=ISO-8859-1\n"
56"Plural-Forms: nplurals=2; plural=(n > 1);\n"
57
58msgid "'Your command, please?', asked the waiter."
59msgstr "�Votre commande, s'il vous plait�, dit le gar�on."
60
61# Les gateaux allemands sont les meilleurs du monde.
62#, perl-format
63msgid "a piece of cake"
64msgid_plural "%d pieces of cake"
65msgstr[0] "un morceau de gateau"
66msgstr[1] "%d morceaux de gateau"
67
68# Reverse the arguments.
69#, perl-brace-format
70msgid "{old} is replaced by {new}."
71msgstr "{new} remplace {old}."
72EOF
73
74tmpfiles="$tmpfiles fr.po.new"
75: ${MSGMERGE=msgmerge}
76${MSGMERGE} -q -o fr.po.new fr.po prog.pot
77
78: ${DIFF=diff}
79${DIFF} fr.po fr.po.new || exit 1
80
81tmpfiles="$tmpfiles fr"
82test -d fr || mkdir fr
83test -d fr/LC_MESSAGES || mkdir fr/LC_MESSAGES
84
85: ${MSGFMT=msgfmt}
86${MSGFMT} -o fr/LC_MESSAGES/prog.mo fr.po
87
88tmpfiles="$tmpfiles prog.ok prog.oku prog.out"
89: ${DIFF=diff}
90cat <<\EOF > prog.ok
91Votre commande, s'il vous plait�, dit le gar�on.
922 morceaux de gateau
93EUR remplace FF.
94EOF
95cat <<\EOF > prog.oku
96��Votre commande, s'il vous plait��, dit le gar��on.
972 morceaux de gateau
98EUR remplace FF.
99EOF
100
101# Test for perl with libintl-perl package.
102perl -M'Locale::TextDomain' -e '' 2>/dev/null \
103  || { echo "Skipping test: perl package libintl-perl is not installed"
104       rm -fr $tmpfiles; exit 77
105     }
106
107: ${LOCALE_FR=fr_FR}
108: ${LOCALE_FR_UTF8=fr_FR.UTF-8}
109if test $LOCALE_FR != none; then
110  LANGUAGE= LANG=$LOCALE_FR LC_MESSAGES= LC_CTYPE= LC_ALL= perl program.pl > prog.out || exit 1
111  ${DIFF} prog.ok prog.out || exit 1
112fi
113if test $LOCALE_FR_UTF8 != none; then
114  LANGUAGE= LANG=$LOCALE_FR_UTF8 LC_MESSAGES= LC_CTYPE= LC_ALL= perl program.pl > prog.out || exit 1
115  ${DIFF} prog.oku prog.out || exit 1
116fi
117if test $LOCALE_FR = none && test $LOCALE_FR_UTF8 = none; then
118  if test -f /usr/bin/localedef; then
119    echo "Skipping test: no french locale is installed"
120  else
121    echo "Skipping test: no french locale is supported"
122  fi
123  rm -fr $tmpfiles; exit 77
124fi
125
126rm -fr $tmpfiles
127
128exit 0
129