1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
#! /bin/sh
# Test of gettext facilities in the Object Pascal language.
# Assumes the following packages are installed: fpk.
# Note: This test fails with fpk 1.0.10 when an UTF-8 locale is present,
# because fpk ignores the locale's encoding. It supports only unibyte locales.
# This here is a quick workaround:
UTF8_LOCALE_UNSUPPORTED=yes
tmpfiles=""
trap 'rm -fr $tmpfiles' 1 2 3 15
tmpfiles="$tmpfiles prog.pp"
cat <<\EOF > prog.pp
program prog;
{$mode delphi}
uses gettext, sysutils;
resourcestring
question = '''Your command, please?'', asked the waiter.';
currencies = '%s is replaced by %s.';
begin
translateresourcestrings('%s/LC_MESSAGES/prog.mo');
writeln(question);
writeln(format(currencies, ['FF', 'EUR']));
end.
EOF
tmpfiles="$tmpfiles prog.o prog.rst prog"
(ppc386 prog.pp) >/dev/null 2>&1 || {
echo "Skipping test: ppc386 compiler not found"
rm -fr $tmpfiles; exit 77
}
tmpfiles="$tmpfiles prog.pot"
: ${XGETTEXT=xgettext}
${XGETTEXT} -o prog.pot --omit-header --add-location prog.rst
tmpfiles="$tmpfiles prog.ok"
cat <<EOF > prog.ok
#: prog.question
msgid "'Your command, please?', asked the waiter."
msgstr ""
#: prog.currencies
#, object-pascal-format
msgid "%s is replaced by %s."
msgstr ""
EOF
: ${DIFF=diff}
${DIFF} prog.ok prog.pot || exit 1
tmpfiles="$tmpfiles fr.po"
cat <<\EOF > fr.po
msgid ""
msgstr "Content-Type: text/plain; charset=ISO-8859-1\n"
#: prog.question
msgid "'Your command, please?', asked the waiter."
msgstr "«Votre commande, s'il vous plait», dit le garçon."
# Reverse the arguments.
#: prog.currencies
#, object-pascal-format
msgid "%s is replaced by %s."
msgstr "%1:s remplace %0:s."
EOF
tmpfiles="$tmpfiles fr.po.new"
: ${MSGMERGE=msgmerge}
${MSGMERGE} -q -o fr.po.new fr.po prog.pot
: ${DIFF=diff}
${DIFF} fr.po fr.po.new || exit 1
tmpfiles="$tmpfiles fr"
test -d fr || mkdir fr
test -d fr/LC_MESSAGES || mkdir fr/LC_MESSAGES
: ${MSGFMT=msgfmt}
${MSGFMT} -o fr/LC_MESSAGES/prog.mo fr.po
tmpfiles="$tmpfiles prog.ok prog.oku prog.out"
: ${DIFF=diff}
cat <<\EOF > prog.ok
«Votre commande, s'il vous plait», dit le garçon.
EUR remplace FF.
EOF
cat <<\EOF > prog.oku
«Votre commande, s'il vous plait», dit le garçon.
EUR remplace FF.
EOF
: ${LOCALE_FR=fr_FR}
: ${LOCALE_FR_UTF8=fr_FR.UTF-8}
if test $LOCALE_FR != none; then
LANGUAGE= LC_ALL= LC_MESSAGES= LC_CTYPE= LANG=$LOCALE_FR ./prog > prog.out || exit 1
: ${DIFF=diff}
${DIFF} prog.ok prog.out || exit 1
fi
if test -z "$UTF8_LOCALE_UNSUPPORTED"; then
if test $LOCALE_FR_UTF8 != none; then
LANGUAGE= LC_ALL= LC_MESSAGES= LC_CTYPE= LANG=$LOCALE_FR_UTF8 ./prog > prog.out || exit 1
: ${DIFF=diff}
${DIFF} prog.oku prog.out || exit 1
fi
if test $LOCALE_FR = none && test $LOCALE_FR_UTF8 = none; then
if test -f /usr/bin/localedef; then
echo "Skipping test: no french locale is installed"
else
echo "Skipping test: no french locale is supported"
fi
rm -fr $tmpfiles; exit 77
fi
else
if test $LOCALE_FR = none; then
if test -f /usr/bin/localedef; then
echo "Skipping test: no traditional french locale is installed"
else
echo "Skipping test: no traditional french locale is supported"
fi
rm -fr $tmpfiles; exit 77
fi
fi
rm -fr $tmpfiles
exit 0
|