]> git.ipfire.org Git - thirdparty/gettext.git/commitdiff
Test for context dependent translations in PO files.
authorBruno Haible <bruno@clisp.org>
Thu, 6 Oct 2005 11:10:47 +0000 (11:10 +0000)
committerBruno Haible <bruno@clisp.org>
Tue, 23 Jun 2009 10:12:52 +0000 (12:12 +0200)
14 files changed:
gettext-tools/tests/msgattrib-15 [new file with mode: 0755]
gettext-tools/tests/msgcat-13 [new file with mode: 0755]
gettext-tools/tests/msgcat-14 [new file with mode: 0755]
gettext-tools/tests/msgcomm-25 [new file with mode: 0755]
gettext-tools/tests/msgconv-5 [new file with mode: 0755]
gettext-tools/tests/msgen-3 [new file with mode: 0755]
gettext-tools/tests/msgexec-4 [new file with mode: 0755]
gettext-tools/tests/msgfilter-4 [new file with mode: 0755]
gettext-tools/tests/msgfmt-14 [new file with mode: 0755]
gettext-tools/tests/msgfmt-qt-2 [new file with mode: 0755]
gettext-tools/tests/msggrep-7 [new file with mode: 0755]
gettext-tools/tests/msginit-2 [new file with mode: 0755]
gettext-tools/tests/msgmerge-18 [new file with mode: 0755]
gettext-tools/tests/msguniq-5 [new file with mode: 0755]

diff --git a/gettext-tools/tests/msgattrib-15 b/gettext-tools/tests/msgattrib-15
new file mode 100755 (executable)
index 0000000..1f54513
--- /dev/null
@@ -0,0 +1,65 @@
+#! /bin/sh
+
+# Test msgattrib on a PO file with contexts.
+
+tmpfiles=""
+trap 'rm -fr $tmpfiles' 1 2 3 15
+
+tmpfiles="$tmpfiles ma-test15.po"
+cat <<\EOF > ma-test15.po
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. A menu item
+msgctxt "File|"
+msgid "Open"
+msgstr "Ouvrir"
+
+#. A menu item
+msgctxt "File|"
+msgid "New"
+msgstr "Nouveau"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Open"
+msgstr "Ouvert"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Closed"
+msgstr "Fermé"
+
+#. A product
+msgctxt "Audi"
+msgid "car"
+msgstr "voiture"
+
+#. A product
+msgctxt "Océ"
+msgid "copier"
+msgstr "photocopieur"
+
+#~ msgid "Save As"
+#~ msgstr "Enregistrer l'as"
+
+#. A menu item
+#~ msgctxt "File|"
+#~ msgid "Save As"
+#~ msgstr "Enregistrer sous"
+EOF
+
+tmpfiles="$tmpfiles ma-test15.out"
+: ${MSGATTRIB=msgattrib}
+${MSGATTRIB} --clear-fuzzy ma-test15.po -o ma-test15.out
+test $? = 0 || { rm -fr $tmpfiles; exit 1; }
+
+: ${DIFF=diff}
+${DIFF} ma-test15.po ma-test15.out
+result=$?
+
+rm -fr $tmpfiles
+
+exit $result
diff --git a/gettext-tools/tests/msgcat-13 b/gettext-tools/tests/msgcat-13
new file mode 100755 (executable)
index 0000000..e7ed7b4
--- /dev/null
@@ -0,0 +1,139 @@
+#! /bin/sh
+
+# Test msgcat on PO files with contexts.
+
+tmpfiles=""
+trap 'rm -fr $tmpfiles' 1 2 3 15
+
+tmpfiles="$tmpfiles mcat-test13.in1 mcat-test13.in2"
+cat <<\EOF > mcat-test13.in1
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. A menu item
+msgctxt "File|"
+msgid "Open"
+msgstr "Ouvrir"
+
+#. A menu item
+msgctxt "File|"
+msgid "New"
+msgstr "Nouveau"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Open"
+msgstr "Ouverte"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Closed"
+msgstr "Fermée"
+
+#. A menu item
+#~ msgctxt "File|"
+#~ msgid "Save As"
+#~ msgstr "Enregistrer sous"
+EOF
+
+cat <<\EOF > mcat-test13.in2
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Open"
+msgstr "Ouvert"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Closed"
+msgstr "Fermé"
+
+#. A product
+msgctxt "Audi"
+msgid "car"
+msgstr "voiture"
+
+#. A product
+msgctxt "Océ"
+msgid "copier"
+msgstr "photocopieur"
+
+#~ msgid "Save As"
+#~ msgstr "Enregistrer l'as"
+EOF
+
+tmpfiles="$tmpfiles mcat-test13.out"
+rm -f mcat-test13.out
+: ${MSGCAT=msgcat}
+${MSGCAT} -o mcat-test13.out mcat-test13.in1 mcat-test13.in2
+test $? = 0 || { rm -fr $tmpfiles; exit 1; }
+
+tmpfiles="$tmpfiles mcat-test13.ok"
+cat <<\EOF > mcat-test13.ok
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. A menu item
+msgctxt "File|"
+msgid "Open"
+msgstr "Ouvrir"
+
+#. A menu item
+msgctxt "File|"
+msgid "New"
+msgstr "Nouveau"
+
+#. Denote a lock's state
+#, fuzzy
+msgctxt "Lock state"
+msgid "Open"
+msgstr ""
+"#-#-#-#-#  mcat-test13.in1  #-#-#-#-#\n"
+"Ouverte\n"
+"#-#-#-#-#  mcat-test13.in2  #-#-#-#-#\n"
+"Ouvert"
+
+#. Denote a lock's state
+#, fuzzy
+msgctxt "Lock state"
+msgid "Closed"
+msgstr ""
+"#-#-#-#-#  mcat-test13.in1  #-#-#-#-#\n"
+"Fermée\n"
+"#-#-#-#-#  mcat-test13.in2  #-#-#-#-#\n"
+"Fermé"
+
+#. A product
+msgctxt "Audi"
+msgid "car"
+msgstr "voiture"
+
+#. A product
+msgctxt "Océ"
+msgid "copier"
+msgstr "photocopieur"
+
+#. A menu item
+#~ msgctxt "File|"
+#~ msgid "Save As"
+#~ msgstr "Enregistrer sous"
+
+#~ msgid "Save As"
+#~ msgstr "Enregistrer l'as"
+EOF
+
+: ${DIFF=diff}
+${DIFF} mcat-test13.ok mcat-test13.out
+result=$?
+
+rm -fr $tmpfiles
+
+exit $result
diff --git a/gettext-tools/tests/msgcat-14 b/gettext-tools/tests/msgcat-14
new file mode 100755 (executable)
index 0000000..b686594
--- /dev/null
@@ -0,0 +1,79 @@
+#! /bin/sh
+
+# Verify that msgcat complains when it would need to change msgctxts.
+
+tmpfiles=""
+trap 'rm -fr $tmpfiles' 1 2 3 15
+
+tmpfiles="$tmpfiles mcat-test14.in1 mcat-test14.in2"
+cat <<\EOF > mcat-test14.in1
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. A menu item
+msgctxt "File|"
+msgid "Open"
+msgstr "Ouvrir"
+
+#. A menu item
+msgctxt "File|"
+msgid "New"
+msgstr "Nouveau"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Open"
+msgstr "Ouverte"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Closed"
+msgstr "Fermée"
+
+#. A menu item
+#~ msgctxt "File|"
+#~ msgid "Save As"
+#~ msgstr "Enregistrer sous"
+EOF
+
+cat <<\EOF > mcat-test14.in2
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Open"
+msgstr "Ouvert"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Closed"
+msgstr "Fermé"
+
+#. A product
+msgctxt "Audi"
+msgid "car"
+msgstr "voiture"
+
+#. A product
+msgctxt "Océ"
+msgid "copier"
+msgstr "photocopieur"
+
+#~ msgid "Save As"
+#~ msgstr "Enregistrer l'as"
+EOF
+
+tmpfiles="$tmpfiles mcat-test14.out"
+rm -f mcat-test14.out
+: ${MSGCAT=msgcat}
+${MSGCAT} -o mcat-test14.out mcat-test14.in1 mcat-test14.in2 2>/dev/null
+test $? = 1 || { rm -fr $tmpfiles; exit 1; }
+
+rm -fr $tmpfiles
+
+exit 0
diff --git a/gettext-tools/tests/msgcomm-25 b/gettext-tools/tests/msgcomm-25
new file mode 100755 (executable)
index 0000000..0d3e1c5
--- /dev/null
@@ -0,0 +1,128 @@
+#! /bin/sh
+
+# Test msgcomm on PO files with contexts.
+
+tmpfiles=""
+trap 'rm -fr $tmpfiles' 1 2 3 15
+
+tmpfiles="$tmpfiles mcomm-test25.in1 mcomm-test25.in2"
+cat <<\EOF > mcomm-test25.in1
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. A menu item
+msgctxt "File|"
+msgid "Open"
+msgstr "Ouvrir"
+
+#. A menu item
+msgctxt "File|"
+msgid "New"
+msgstr "Nouveau"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Open"
+msgstr "Ouverte"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Closed"
+msgstr "Fermée"
+
+#. A menu item
+#~ msgctxt "File|"
+#~ msgid "Save As"
+#~ msgstr "Enregistrer sous"
+EOF
+
+cat <<\EOF > mcomm-test25.in2
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Open"
+msgstr "Ouvert"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Closed"
+msgstr "Fermé"
+
+#. A product
+msgctxt "Audi"
+msgid "car"
+msgstr "voiture"
+
+#. A product
+msgctxt "Océ"
+msgid "copier"
+msgstr "photocopieur"
+
+#~ msgid "Save As"
+#~ msgstr "Enregistrer l'as"
+EOF
+
+tmpfiles="$tmpfiles mcomm-test25.out"
+: ${MSGCOMM=msgcomm}
+${MSGCOMM} --more-than=0 -o mcomm-test25.out mcomm-test25.in1 mcomm-test25.in2
+test $? = 0 || { rm -fr $tmpfiles; exit 1; }
+
+tmpfiles="$tmpfiles mcomm-test25.ok"
+cat <<\EOF > mcomm-test25.ok
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. A menu item
+msgctxt "File|"
+msgid "Open"
+msgstr "Ouvrir"
+
+#. A menu item
+msgctxt "File|"
+msgid "New"
+msgstr "Nouveau"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Open"
+msgstr "Ouverte"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Closed"
+msgstr "Fermée"
+
+#. A product
+msgctxt "Audi"
+msgid "car"
+msgstr "voiture"
+
+#. A product
+msgctxt "Océ"
+msgid "copier"
+msgstr "photocopieur"
+
+#. A menu item
+#~ msgctxt "File|"
+#~ msgid "Save As"
+#~ msgstr "Enregistrer sous"
+
+#~ msgid "Save As"
+#~ msgstr "Enregistrer l'as"
+EOF
+
+: ${DIFF=diff}
+${DIFF} mcomm-test25.ok mcomm-test25.out
+result=$?
+
+rm -fr $tmpfiles
+
+exit $result
diff --git a/gettext-tools/tests/msgconv-5 b/gettext-tools/tests/msgconv-5
new file mode 100755 (executable)
index 0000000..2fb9e1e
--- /dev/null
@@ -0,0 +1,111 @@
+#! /bin/sh
+
+# Test msgconv on a PO file with contexts.
+
+tmpfiles=""
+trap 'rm -fr $tmpfiles' 1 2 3 15
+
+tmpfiles="$tmpfiles mco-test5.po"
+cat <<\EOF > mco-test5.po
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. A menu item
+msgctxt "File|"
+msgid "Open"
+msgstr "Ouvrir"
+
+#. A menu item
+msgctxt "File|"
+msgid "New"
+msgstr "Nouveau"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Open"
+msgstr "Ouvert"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Closed"
+msgstr "Fermé"
+
+#. A product
+msgctxt "Audi"
+msgid "car"
+msgstr "voiture"
+
+#. A product
+msgctxt "Océ"
+msgid "copier"
+msgstr "photocopieur"
+
+#~ msgid "Save As"
+#~ msgstr "Enregistrer l'as"
+
+#. A menu item
+#~ msgctxt "File|"
+#~ msgid "Save As"
+#~ msgstr "Enregistrer sous"
+EOF
+
+tmpfiles="$tmpfiles mco-test5.out"
+: ${MSGCONV=msgconv}
+${MSGCONV} --to-code=UTF-8 mco-test5.po -o mco-test5.out
+test $? = 0 || { rm -fr $tmpfiles; exit 1; }
+
+tmpfiles="$tmpfiles mco-test5.ok"
+cat <<\EOF > mco-test5.ok
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. A menu item
+msgctxt "File|"
+msgid "Open"
+msgstr "Ouvrir"
+
+#. A menu item
+msgctxt "File|"
+msgid "New"
+msgstr "Nouveau"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Open"
+msgstr "Ouvert"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Closed"
+msgstr "Fermé"
+
+#. A product
+msgctxt "Audi"
+msgid "car"
+msgstr "voiture"
+
+#. A product
+msgctxt "Océ"
+msgid "copier"
+msgstr "photocopieur"
+
+#~ msgid "Save As"
+#~ msgstr "Enregistrer l'as"
+
+#. A menu item
+#~ msgctxt "File|"
+#~ msgid "Save As"
+#~ msgstr "Enregistrer sous"
+EOF
+
+: ${DIFF=diff}
+${DIFF} mco-test5.ok mco-test5.out
+result=$?
+
+rm -fr $tmpfiles
+
+exit $result
diff --git a/gettext-tools/tests/msgen-3 b/gettext-tools/tests/msgen-3
new file mode 100755 (executable)
index 0000000..2da5439
--- /dev/null
@@ -0,0 +1,95 @@
+#! /bin/sh
+
+# Test msgen on a POT file with contexts.
+
+tmpfiles=""
+trap 'rm -fr $tmpfiles' 1 2 3 15
+
+tmpfiles="$tmpfiles men-test3.pot"
+cat <<\EOF > men-test3.pot
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. A menu item
+msgctxt "File|"
+msgid "Open"
+msgstr ""
+
+#. A menu item
+msgctxt "File|"
+msgid "New"
+msgstr ""
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Open"
+msgstr ""
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Closed"
+msgstr ""
+
+#. A product
+msgctxt "Audi"
+msgid "car"
+msgstr ""
+
+#. A product
+msgctxt "Océ"
+msgid "copier"
+msgstr ""
+EOF
+
+tmpfiles="$tmpfiles men-test3.out"
+: ${MSGEN=msgen}
+${MSGEN} men-test3.pot -o men-test3.out
+test $? = 0 || { rm -fr $tmpfiles; exit 1; }
+
+tmpfiles="$tmpfiles men-test3.ok"
+cat <<\EOF > men-test3.ok
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. A menu item
+msgctxt "File|"
+msgid "Open"
+msgstr "Open"
+
+#. A menu item
+msgctxt "File|"
+msgid "New"
+msgstr "New"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Open"
+msgstr "Open"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Closed"
+msgstr "Closed"
+
+#. A product
+msgctxt "Audi"
+msgid "car"
+msgstr "car"
+
+#. A product
+msgctxt "Océ"
+msgid "copier"
+msgstr "copier"
+EOF
+
+: ${DIFF=diff}
+${DIFF} men-test3.ok men-test3.out
+result=$?
+
+rm -fr $tmpfiles
+
+exit $result
diff --git a/gettext-tools/tests/msgexec-4 b/gettext-tools/tests/msgexec-4
new file mode 100755 (executable)
index 0000000..e6e4084
--- /dev/null
@@ -0,0 +1,131 @@
+#! /bin/sh
+
+# Test msgexec on a PO file with contexts.
+
+tmpfiles=""
+trap 'rm -fr $tmpfiles' 1 2 3 15
+
+tmpfiles="$tmpfiles mex-test4.po"
+cat <<\EOF > mex-test4.po
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. A menu item
+msgctxt "File|"
+msgid "Open"
+msgstr "Ouvrir"
+
+#. A menu item
+msgctxt "File|"
+msgid "New"
+msgstr "Nouveau"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Open"
+msgstr "Ouvert"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Closed"
+msgstr "Fermé"
+
+#. A product
+msgctxt "Audi"
+msgid "car"
+msgstr "voiture"
+
+#. A product
+msgctxt "Océ"
+msgid "copier"
+msgstr "photocopieur"
+
+#~ msgid "Save As"
+#~ msgstr "Enregistrer l'as"
+
+#. A menu item
+#~ msgctxt "File|"
+#~ msgid "Save As"
+#~ msgstr "Enregistrer sous"
+EOF
+
+tmpfiles="$tmpfiles mex-test4.sh"
+cat <<\EOF > mex-test4.sh
+#! /bin/sh
+echo "========================= $MSGEXEC_LOCATION ========================="
+if test -n "${MSGEXEC_MSGCTXT+set}"; then
+  echo "context: $MSGEXEC_MSGCTXT"
+fi
+cat <<MEOF
+$MSGEXEC_MSGID
+---
+MEOF
+cat
+echo
+exit 0
+EOF
+chmod a+x mex-test4.sh
+
+tmpfiles="$tmpfiles mex-test4.out"
+: ${MSGEXEC=msgexec}
+${MSGEXEC} -i mex-test4.po ./mex-test4.sh > mex-test4.out
+test $? = 0 || { rm -fr $tmpfiles; exit 1; }
+
+tmpfiles="$tmpfiles mex-test4.ok"
+cat <<\EOF > mex-test4.ok
+========================= mex-test4.po:2 =========================
+
+---
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+========================= mex-test4.po:9 =========================
+context: File|
+Open
+---
+Ouvrir
+========================= mex-test4.po:14 =========================
+context: File|
+New
+---
+Nouveau
+========================= mex-test4.po:19 =========================
+context: Lock state
+Open
+---
+Ouvert
+========================= mex-test4.po:24 =========================
+context: Lock state
+Closed
+---
+Fermé
+========================= mex-test4.po:29 =========================
+context: Audi
+car
+---
+voiture
+========================= mex-test4.po:34 =========================
+context: Océ
+copier
+---
+photocopieur
+========================= mex-test4.po:37 =========================
+Save As
+---
+Enregistrer l'as
+========================= mex-test4.po:42 =========================
+context: File|
+Save As
+---
+Enregistrer sous
+EOF
+
+: ${DIFF=diff}
+${DIFF} mex-test4.ok mex-test4.out
+result=$?
+
+rm -fr $tmpfiles
+
+exit $result
diff --git a/gettext-tools/tests/msgfilter-4 b/gettext-tools/tests/msgfilter-4
new file mode 100755 (executable)
index 0000000..e25d892
--- /dev/null
@@ -0,0 +1,143 @@
+#! /bin/sh
+
+# Test msgfilter on a PO file with contexts.
+
+tmpfiles=""
+trap 'rm -fr $tmpfiles' 1 2 3 15
+
+if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
+  # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
+  if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
+    ac_n= ac_c='
+' ac_t='        '
+  else
+    ac_n=-n ac_c= ac_t=
+  fi
+else
+  ac_n= ac_c='\c' ac_t=
+fi
+
+# Some sed programs (Solaris etc.) omit the last line if it ended without
+# a newline. We must skip this test when we encounter such a broken sed.
+sedoutput=`echo $ac_n "abc$ac_c" | sed -e s/x/x/`
+test -n "$sedoutput" || { rm -fr $tmpfiles; exit 77; }
+
+# Some sed programs (IRIX, OSF/1 etc.) add a newline to the last line if it
+# doesn't end with a newline.
+sedoutputcount=`echo $ac_n "abc$ac_c" | sed -e s/x/x/ | wc -c`
+sedoutputcount=`echo "$sedoutputcount" | sed -e 's/[   ]//g'`
+test "$sedoutputcount" = 3 || { rm -fr $tmpfiles; exit 77; }
+
+tmpfiles="$tmpfiles mfi-test4.po"
+cat <<\EOF > mfi-test4.po
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. A menu item
+msgctxt "File|"
+msgid "Open"
+msgstr "Ouvrir"
+
+#. A menu item
+msgctxt "File|"
+msgid "New"
+msgstr "Nouveau"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Open"
+msgstr "Ouvert"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Closed"
+msgstr "Fermé"
+
+#. A product
+msgctxt "Audi"
+msgid "car"
+msgstr "voiture"
+
+#. A product
+msgctxt "Océ"
+msgid "copier"
+msgstr "photocopieur"
+
+#~ msgid "Save As"
+#~ msgstr "Enregistrer l'as"
+
+#. A menu item
+#~ msgctxt "File|"
+#~ msgid "Save As"
+#~ msgstr "Enregistrer sous"
+EOF
+
+tmpfiles="$tmpfiles mfi-test4.out mfi-test4.err"
+: ${MSGFILTER=msgfilter}
+sedexpr1='1{
+s/^/\[\[/
+}'
+sedexpr2='${
+s/$/\]\]/
+}'
+LC_ALL=C \
+${MSGFILTER} -i mfi-test4.po -o mfi-test4.out sed -e "$sedexpr1" -e "$sedexpr2" >mfi-test4.err 2>&1
+result=$?
+cat mfi-test4.err | grep -v 'warning: Locale charset' | grep -v '^ '
+test $result = 0 || { rm -fr $tmpfiles; exit 1; }
+
+tmpfiles="$tmpfiles mfi-test4.ok"
+cat <<\EOF > mfi-test4.ok
+msgid ""
+msgstr ""
+"[[Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit]]\n"
+
+#. A menu item
+msgctxt "File|"
+msgid "Open"
+msgstr "[[Ouvrir]]"
+
+#. A menu item
+msgctxt "File|"
+msgid "New"
+msgstr "[[Nouveau]]"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Open"
+msgstr "[[Ouvert]]"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Closed"
+msgstr "[[Fermé]]"
+
+#. A product
+msgctxt "Audi"
+msgid "car"
+msgstr "[[voiture]]"
+
+#. A product
+msgctxt "Océ"
+msgid "copier"
+msgstr "[[photocopieur]]"
+
+#~ msgid "Save As"
+#~ msgstr "[[Enregistrer l'as]]"
+
+#. A menu item
+#~ msgctxt "File|"
+#~ msgid "Save As"
+#~ msgstr "[[Enregistrer sous]]"
+EOF
+
+: ${DIFF=diff}
+${DIFF} mfi-test4.ok mfi-test4.out
+result=$?
+
+rm -fr $tmpfiles
+
+exit $result
diff --git a/gettext-tools/tests/msgfmt-14 b/gettext-tools/tests/msgfmt-14
new file mode 100755 (executable)
index 0000000..1b8ca52
--- /dev/null
@@ -0,0 +1,102 @@
+#! /bin/sh
+
+# Test msgfmt and msgunfmt on a PO file with contexts.
+
+tmpfiles=""
+trap 'rm -fr $tmpfiles' 1 2 3 15
+
+tmpfiles="$tmpfiles mf-14.po"
+cat <<\EOF > mf-14.po
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. A menu item
+msgctxt "File|"
+msgid "Open"
+msgstr "Ouvrir"
+
+#. A menu item
+msgctxt "File|"
+msgid "New"
+msgstr "Nouveau"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Open"
+msgstr "Ouvert"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Closed"
+msgstr "Fermé"
+
+#. A product
+msgctxt "Audi"
+msgid "car"
+msgstr "voiture"
+
+#. A product
+msgctxt "Océ"
+msgid "copier"
+msgstr "photocopieur"
+
+#~ msgid "Save As"
+#~ msgstr "Enregistrer l'as"
+
+#. A menu item
+#~ msgctxt "File|"
+#~ msgid "Save As"
+#~ msgstr "Enregistrer sous"
+EOF
+
+tmpfiles="$tmpfiles mf-14.mo"
+: ${MSGFMT=msgfmt}
+${MSGFMT} -o mf-14.mo mf-14.po
+test $? = 0 || { rm -fr $tmpfiles; exit 1; }
+
+tmpfiles="$tmpfiles mf-14.out"
+: ${MSGUNFMT=msgunfmt}
+${MSGUNFMT} mf-14.mo -o mf-14.out
+test $? = 0 || { rm -fr $tmpfiles; exit 1; }
+
+tmpfiles="$tmpfiles mf-14.ok"
+cat <<\EOF > mf-14.ok
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgctxt "Audi"
+msgid "car"
+msgstr "voiture"
+
+msgctxt "File|"
+msgid "New"
+msgstr "Nouveau"
+
+msgctxt "File|"
+msgid "Open"
+msgstr "Ouvrir"
+
+msgctxt "Lock state"
+msgid "Closed"
+msgstr "Fermé"
+
+msgctxt "Lock state"
+msgid "Open"
+msgstr "Ouvert"
+
+msgctxt "Océ"
+msgid "copier"
+msgstr "photocopieur"
+EOF
+
+: ${DIFF=diff}
+${DIFF} mf-14.ok mf-14.out
+result=$?
+
+rm -fr $tmpfiles
+
+exit $result
diff --git a/gettext-tools/tests/msgfmt-qt-2 b/gettext-tools/tests/msgfmt-qt-2
new file mode 100755 (executable)
index 0000000..1c6518b
--- /dev/null
@@ -0,0 +1,19 @@
+#! /bin/sh
+
+# Test msgfmt --qt on a PO file with contexts.
+
+tmpfiles=""
+trap 'rm -fr $tmpfiles' 1 2 3 15
+
+tmpfiles="$tmpfiles mf-qt-2.qm"
+: ${MSGFMT=msgfmt}
+${MSGFMT} --qt ${top_srcdir}/tests/qttest2_de.po -o mf-qt-2.qm
+test $? = 0 || { rm -fr $tmpfiles; exit 1; }
+
+: ${CMP=cmp}
+${CMP} ${top_srcdir}/tests/qttest2_de.qm mf-qt-2.qm >/dev/null 2>/dev/null
+result=$?
+
+rm -fr $tmpfiles
+
+exit $result
diff --git a/gettext-tools/tests/msggrep-7 b/gettext-tools/tests/msggrep-7
new file mode 100755 (executable)
index 0000000..85bcfe6
--- /dev/null
@@ -0,0 +1,89 @@
+#! /bin/sh
+
+# Test msggrep on a PO file with contexts.
+
+tmpfiles=""
+trap 'rm -fr $tmpfiles' 1 2 3 15
+
+tmpfiles="$tmpfiles mg-test7.po"
+cat <<\EOF > mg-test7.po
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. A menu item
+msgctxt "File|"
+msgid "Open"
+msgstr "Ouvrir"
+
+#. A menu item
+msgctxt "File|"
+msgid "New"
+msgstr "Nouveau"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Open"
+msgstr "Ouvert"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Closed"
+msgstr "Fermé"
+
+#. A product
+msgctxt "Audi"
+msgid "car"
+msgstr "voiture"
+
+#. A product
+msgctxt "Océ"
+msgid "copier"
+msgstr "photocopieur"
+
+#~ msgid "Save As"
+#~ msgstr "Enregistrer l'as"
+
+#. A menu item
+#~ msgctxt "File|"
+#~ msgid "Save As"
+#~ msgstr "Enregistrer sous"
+EOF
+
+tmpfiles="$tmpfiles mg-test7.out"
+: ${MSGGREP=msggrep}
+LC_MESSAGES=C LC_ALL= \
+${MSGGREP} -J -e "File|" mg-test7.po -o mg-test7.out
+test $? = 0 || { rm -fr $tmpfiles; exit 1; }
+
+tmpfiles="$tmpfiles mg-test7.ok"
+cat <<\EOF > mg-test7.ok
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. A menu item
+msgctxt "File|"
+msgid "Open"
+msgstr "Ouvrir"
+
+#. A menu item
+msgctxt "File|"
+msgid "New"
+msgstr "Nouveau"
+
+#. A menu item
+#~ msgctxt "File|"
+#~ msgid "Save As"
+#~ msgstr "Enregistrer sous"
+EOF
+
+: ${DIFF=diff}
+${DIFF} mg-test7.ok mg-test7.out
+result=$?
+
+rm -fr $tmpfiles
+
+exit $result
diff --git a/gettext-tools/tests/msginit-2 b/gettext-tools/tests/msginit-2
new file mode 100755 (executable)
index 0000000..4fb7b83
--- /dev/null
@@ -0,0 +1,114 @@
+#! /bin/sh
+
+# Test msginit on a POT file with contexts.
+
+tmpfiles=""
+trap 'rm -fr $tmpfiles' 1 2 3 15
+
+tmpfiles="$tmpfiles mi-test2.pot"
+cat <<\EOF > mi-test2.pot
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. A menu item
+msgctxt "File|"
+msgid "Open"
+msgstr ""
+
+#. A menu item
+msgctxt "File|"
+msgid "New"
+msgstr ""
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Open"
+msgstr ""
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Closed"
+msgstr ""
+
+#. A product
+msgctxt "Audi"
+msgid "car"
+msgstr ""
+
+#. A product
+msgctxt "Océ"
+msgid "copier"
+msgstr ""
+
+#~ msgid "Save As"
+#~ msgstr ""
+
+#. A menu item
+#~ msgctxt "File|"
+#~ msgid "Save As"
+#~ msgstr ""
+EOF
+
+tmpfiles="$tmpfiles mi-test2.tmp mi-test2.out mi-test2.err"
+: ${MSGINIT=msginit}
+${MSGINIT} -i mi-test2.pot -l ga_IE --no-translator -o mi-test2.tmp 2>mi-test2.err
+test $? = 0 || { cat mi-test2.err 1>&2; rm -fr $tmpfiles; exit 1; }
+sed -e '1,15d' < mi-test2.tmp > mi-test2.out
+test $? = 0 || { rm -fr $tmpfiles; exit 1; }
+
+tmpfiles="$tmpfiles mi-test2.ok"
+cat <<\EOF > mi-test2.ok
+"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n==2 ? 1 : 2;\n"
+
+#. A menu item
+msgctxt "File|"
+msgid "Open"
+msgstr ""
+
+#. A menu item
+msgctxt "File|"
+msgid "New"
+msgstr ""
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Open"
+msgstr ""
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Closed"
+msgstr ""
+
+#. A product
+msgctxt "Audi"
+msgid "car"
+msgstr ""
+
+#. A product
+msgctxt "Océ"
+msgid "copier"
+msgstr ""
+EOF
+
+: ${DIFF=diff}
+${DIFF} mi-test2.ok mi-test2.out
+result=$?
+
+rm -fr $tmpfiles
+
+exit $result
diff --git a/gettext-tools/tests/msgmerge-18 b/gettext-tools/tests/msgmerge-18
new file mode 100755 (executable)
index 0000000..016249f
--- /dev/null
@@ -0,0 +1,204 @@
+#! /bin/sh
+
+# Test msgmerge and msgcmp on a PO file with contexts.
+
+tmpfiles=""
+trap 'rm -fr $tmpfiles' 1 2 3 15
+
+tmpfiles="$tmpfiles mm-test18.po"
+cat <<\EOF > mm-test18.po
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. A menu item
+msgctxt "File|"
+msgid "Open"
+msgstr "Ouvrir"
+
+#. A menu item
+msgctxt "File|"
+msgid "New"
+msgstr "Nouveau"
+
+#. A menu item
+msgctxt "File|"
+msgid "Save As"
+msgstr "Enregistrer sous"
+
+msgid "Save As"
+msgstr "Enregistrer l'as"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Open"
+msgstr "Ouvert"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Closed"
+msgstr "Fermé"
+
+#. A product
+msgctxt "Audi"
+msgid "car"
+msgstr "voiture"
+
+#. A product
+msgctxt "Océ"
+msgid "copier"
+msgstr "photocopieur"
+EOF
+
+tmpfiles="$tmpfiles mm-test18.pot"
+cat <<\EOF > mm-test18.pot
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. A menu item
+msgctxt "File|"
+msgid "Open"
+msgstr ""
+
+#. A menu item
+msgctxt "File|"
+msgid "New"
+msgstr ""
+
+#. A menu item
+msgctxt "File|"
+msgid "Close"
+msgstr ""
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Open"
+msgstr ""
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Closed"
+msgstr ""
+
+#. Denote a door's state
+msgctxt "Door state"
+msgid "Open"
+msgstr ""
+
+#. Denote a door's state
+msgctxt "Door state"
+msgid "Closed"
+msgstr ""
+
+#. A product
+msgctxt "Audi"
+msgid "car"
+msgstr ""
+
+#. A product
+msgctxt "Océ"
+msgid "copier"
+msgstr ""
+EOF
+
+: ${MSGCMP=msgcmp}
+${MSGCMP} mm-test18.po mm-test18.pot 2>/dev/null
+test $? = 1 || { rm -fr $tmpfiles; exit 1; }
+
+tmpfiles="$tmpfiles mm-test18.new.po"
+: ${MSGMERGE=msgmerge}
+${MSGMERGE} -q mm-test18.po mm-test18.pot -o mm-test18.new.po
+test $? = 0 || { rm -fr $tmpfiles; exit 1; }
+
+tmpfiles="$tmpfiles mm-test18.ok"
+# Note that the fuzzy guess for "Open" in context "Door state" could be either
+# "Ouvrir" (from context "File|") or "Ouvert" (from context "Lock state").
+cat <<\EOF > mm-test18.ok
+msgid ""
+msgstr ""
+"Report-Msgid-Bugs-To: \n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. A menu item
+msgctxt "File|"
+msgid "Open"
+msgstr "Ouvrir"
+
+#. A menu item
+msgctxt "File|"
+msgid "New"
+msgstr "Nouveau"
+
+#. A menu item
+#, fuzzy
+msgctxt "File|"
+msgid "Close"
+msgstr "Fermé"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Open"
+msgstr "Ouvert"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Closed"
+msgstr "Fermé"
+
+#. Denote a door's state
+#, fuzzy
+msgctxt "Door state"
+msgid "Open"
+msgstr "Ouvrir"
+
+#. Denote a door's state
+#, fuzzy
+msgctxt "Door state"
+msgid "Closed"
+msgstr "Fermé"
+
+#. A product
+msgctxt "Audi"
+msgid "car"
+msgstr "voiture"
+
+#. A product
+msgctxt "Océ"
+msgid "copier"
+msgstr "photocopieur"
+
+#~ msgctxt "File|"
+#~ msgid "Save As"
+#~ msgstr "Enregistrer sous"
+
+#~ msgid "Save As"
+#~ msgstr "Enregistrer l'as"
+EOF
+
+: ${DIFF=diff}
+${DIFF} mm-test18.ok mm-test18.new.po
+test $? = 0 || { rm -fr $tmpfiles; exit 1; }
+
+: ${MSGCMP=msgcmp}
+${MSGCMP} mm-test18.new.po mm-test18.pot
+test $? = 0 || { rm -fr $tmpfiles; exit 1; }
+
+rm -fr $tmpfiles
+
+exit 0
diff --git a/gettext-tools/tests/msguniq-5 b/gettext-tools/tests/msguniq-5
new file mode 100755 (executable)
index 0000000..2735fec
--- /dev/null
@@ -0,0 +1,116 @@
+#! /bin/sh
+
+# Test msguniq on a PO file with contexts.
+
+tmpfiles=""
+trap 'rm -fr $tmpfiles' 1 2 3 15
+
+tmpfiles="$tmpfiles msguniq-5.po"
+cat <<\EOF > msguniq-5.po
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. A menu item
+msgctxt "File|"
+msgid "Open"
+msgstr "Ouvrir"
+
+#. A menu item
+msgctxt "File|"
+msgid "New"
+msgstr "Nouveau"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Open"
+msgstr "Ouvert"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Closed"
+msgstr "Fermé"
+
+# A verb.
+msgctxt "File|"
+msgid "Open"
+msgstr ""
+
+#. A product
+msgctxt "Audi"
+msgid "car"
+msgstr "voiture"
+
+#. A product
+msgctxt "Océ"
+msgid "copier"
+msgstr "photocopieur"
+
+#~ msgid "Save As"
+#~ msgstr "Enregistrer l'as"
+
+#. A menu item
+#~ msgctxt "File|"
+#~ msgid "Save As"
+#~ msgstr "Enregistrer sous"
+EOF
+
+tmpfiles="$tmpfiles msguniq-5.out"
+: ${MSGUNIQ-msguniq}
+${MSGUNIQ} msguniq-5.po -o msguniq-5.out
+test $? = 0 || { rm -fr $tmpfiles; exit 1; }
+
+tmpfiles="$tmpfiles msguniq-5.ok"
+cat <<\EOF > msguniq-5.ok
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. A menu item
+msgctxt "File|"
+msgid "Open"
+msgstr "Ouvrir"
+
+#. A menu item
+msgctxt "File|"
+msgid "New"
+msgstr "Nouveau"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Open"
+msgstr "Ouvert"
+
+#. Denote a lock's state
+msgctxt "Lock state"
+msgid "Closed"
+msgstr "Fermé"
+
+#. A product
+msgctxt "Audi"
+msgid "car"
+msgstr "voiture"
+
+#. A product
+msgctxt "Océ"
+msgid "copier"
+msgstr "photocopieur"
+
+#~ msgid "Save As"
+#~ msgstr "Enregistrer l'as"
+
+#. A menu item
+#~ msgctxt "File|"
+#~ msgid "Save As"
+#~ msgstr "Enregistrer sous"
+EOF
+
+: ${DIFF=diff}
+${DIFF} msguniq-5.ok msguniq-5.out
+result=$?
+
+rm -fr $tmpfiles
+
+exit $result