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 133 134 135 136 137 138 139
|
#! /bin/sh
. "${srcdir=.}/init.sh"; path_prepend_ . ../src
# Test msgexec on a PO file with contexts.
# This test fails on mingw (in a Cygwin environment), due to the combination
# of two reasons:
# 1. The value of the environment variable MSGEXEC_MSGCTXT is stored
# in UTF-8 encoding (i.e. the PO file's encoding); it should be stored
# in the GetACP() encoding instead. This problem is inherent in msgexec,
# and msgexec warns about it - but in this test, we filter the warnings
# away.
# 2. The child process is Cygwin's sh.exe, and is affected by a Cygwin bug:
# the values returned by getenv() in the child process, when the parent
# process is a mingw program, are in the GetOEMCP() encoding (should be
# in the GetACP() encoding). This has been reported at
# <https://cygwin.com/ml/cygwin/2009-08/msg00430.html>.
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
cat <<\EOF > mex-test4.sh
#! /bin/sh
echo "========================= $MSGEXEC_LOCATION =========================" | LC_ALL=C tr -d '\r'
if test -n "${MSGEXEC_MSGCTXT+set}"; then
echo "context: $MSGEXEC_MSGCTXT" | LC_ALL=C tr -d '\r'
fi
cat <<MEOF
$MSGEXEC_MSGID
---
MEOF
cat
echo | LC_ALL=C tr -d '\r'
exit 0
EOF
chmod a+x mex-test4.sh
: ${MSGEXEC=msgexec}
LC_ALL=C \
${MSGEXEC} -i mex-test4.po ./mex-test4.sh > mex-test4.out 2> mex-test4.err
result=$?
cat mex-test4.err | grep -v 'warning: Locale charset' | grep -v '^ '
test $result = 0 || { Exit 1; }
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=$?
exit $result
|