diff options
| author | christos <christos@NetBSD.org> | 2005-04-29 15:05:03 +0000 |
|---|---|---|
| committer | christos <christos@NetBSD.org> | 2005-04-29 15:05:03 +0000 |
| commit | e770a46755c75e4364863231cbfdf0f8011ce123 (patch) | |
| tree | 3210fd527fdd42504ad2ccf38cefaffbbca680de /gnu/dist/gettext/gettext-tools/tests/lang-java | |
| parent | fd90a881be576b95b45b1ca8323616a346d9cbe7 (diff) | |
ftp ftp.gnu.org
Diffstat (limited to 'gnu/dist/gettext/gettext-tools/tests/lang-java')
| -rw-r--r-- | gnu/dist/gettext/gettext-tools/tests/lang-java | 174 |
1 files changed, 174 insertions, 0 deletions
diff --git a/gnu/dist/gettext/gettext-tools/tests/lang-java b/gnu/dist/gettext/gettext-tools/tests/lang-java new file mode 100644 index 00000000000..68ece1976cb --- /dev/null +++ b/gnu/dist/gettext/gettext-tools/tests/lang-java @@ -0,0 +1,174 @@ +#! /bin/sh + +# Test of gettext facilities in the Java language. +# Assumes an fr_FR locale is installed. +# Assumes the following packages are installed: java. + +# Note: This test fails when using gcj from GCC 3.1 and GCC 3.2, due to a bug +# (libgcj/6576). It is fixed in GCC 3.3. + +tmpfiles="" +trap 'rm -fr $tmpfiles' 1 2 3 15 + +# Test whether we can build and test Java programs. +test "${TESTJAVA}" = yes || exit 77 + +tmpfiles="$tmpfiles Program.java" +cat <<\EOF > Program.java +import java.util.*; +import java.io.*; +import java.text.*; +import gnu.gettext.*; + +public class Program { + public static void main (String[] args) { + // Some systems (like Solaris) don't set Locale.getDefault() + // as specified by LC_ALL. So set it by hand. + Locale.setDefault(new Locale("fr","FR")); +EOF +case "$host_os" in + darwin[56]*) +cat <<\EOF >> Program.java + // Some systems (like MacOS X) don't set System.out's character encoding + // to ISO-8859-1, which is what we need for comparison purposes. + try { + System.setOut(new PrintStream(new FileOutputStream(FileDescriptor.out), + true, "ISO-8859-1")); + } catch (UnsupportedEncodingException e) { + } +EOF + ;; + darwin*) +cat <<\EOF >> Program.java + // Some systems (like MacOS X) don't set System.out's character encoding + // to UTF-8, which is what we need for comparison purposes. + try { + System.setOut(new PrintStream(new FileOutputStream(FileDescriptor.out), + true, "UTF-8")); + } catch (UnsupportedEncodingException e) { + } +EOF + ;; +esac +cat <<\EOF >> Program.java + int n = Integer.parseInt(args[0]); + ResourceBundle catalog = ResourceBundle.getBundle("prog"); + System.out.println(GettextResource.gettext(catalog,"'Your command, please?', asked the waiter.")); + System.out.println(MessageFormat.format(GettextResource.ngettext(catalog,"a piece of cake","{0,number} pieces of cake",n), new Object[] { new Integer(n) })); + System.out.println(MessageFormat.format(GettextResource.gettext(catalog,"{0} is replaced by {1}."), new Object[] { "FF", "EUR" })); + } +} +EOF + +tmpfiles="$tmpfiles Program.class" +: ${JAVACOMP="/bin/sh ../lib/javacomp.sh"} +CLASSPATH=../../gettext-runtime/intl-java/libintl.jar ${JAVACOMP} -d . Program.java || exit 1 + +tmpfiles="$tmpfiles prog.pot" +: ${XGETTEXT=xgettext} +${XGETTEXT} -o prog.pot --omit-header --no-location Program.java + +tmpfiles="$tmpfiles prog.ok" +cat <<EOF > prog.ok +msgid "'Your command, please?', asked the waiter." +msgstr "" + +#, java-format +msgid "a piece of cake" +msgid_plural "{0,number} pieces of cake" +msgstr[0] "" +msgstr[1] "" + +#, java-format +msgid "{0} is replaced by {1}." +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" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +msgid "'Your command, please?', asked the waiter." +msgstr "«Votre commande, s'il vous plait», dit le garçon." + +# Les gateaux allemands sont les meilleurs du monde. +#, java-format +msgid "a piece of cake" +msgid_plural "{0,number} pieces of cake" +msgstr[0] "un morceau de gateau" +msgstr[1] "{0,number} morceaux de gateau" + +# Reverse the arguments. +#, java-format +msgid "{0} is replaced by {1}." +msgstr "{1} remplace {0}." +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 prog_fr.class" +: ${MSGFMT=msgfmt} +${MSGFMT} -j -d . -r prog -l fr fr.po || exit 1 + +# Test which of the fr_FR locales are installed. +: ${LOCALE_FR=fr_FR} +: ${LOCALE_FR_UTF8=fr_FR.UTF-8} +if test $LOCALE_FR != none; then + LC_ALL=$LOCALE_FR ./testlocale + case $? in + 0) ;; + 77) LOCALE_FR=none;; + *) exit 1;; + esac +fi +if test $LOCALE_FR_UTF8 != none; then + LC_ALL=$LOCALE_FR_UTF8 ./testlocale + case $? in + 0) ;; + 77) LOCALE_FR_UTF8=none;; + *) exit 1;; + esac +fi +if test $LOCALE_FR = none && test $LOCALE_FR_UTF8 = none; then + rm -fr $tmpfiles; exit 77 +fi + +tmpfiles="$tmpfiles prog.ok prog.oku prog.out" +: ${DIFF=diff} +cat <<\EOF > prog.ok +«Votre commande, s'il vous plait», dit le garçon. +2 morceaux de gateau +EUR remplace FF. +EOF +cat <<\EOF > prog.oku +«Votre commande, s'il vous plait», dit le garçon. +2 morceaux de gateau +EUR remplace FF. +EOF + +: ${LOCALE_FR=fr_FR} +: ${LOCALE_FR_UTF8=fr_FR.UTF-8} +: ${JAVAEXEC="/bin/sh ../lib/javaexec.sh"} +if test $LOCALE_FR != none; then + LANGUAGE= LC_ALL=$LOCALE_FR CLASSPATH=.:../../gettext-runtime/intl-java/libintl.jar ${JAVAEXEC} Program 2 > prog.out || exit 1 + ${DIFF} prog.ok prog.out || exit 1 +fi +if test $LOCALE_FR_UTF8 != none; then + LANGUAGE= LC_ALL=$LOCALE_FR_UTF8 CLASSPATH=.:../../gettext-runtime/intl-java/libintl.jar ${JAVAEXEC} Program 2 > prog.out || exit 1 + ${DIFF} prog.oku prog.out || exit 1 +fi + +rm -fr $tmpfiles + +exit 0 |
