#! /bin/sh
. "${srcdir=.}/init.sh"; path_prepend_ . ../src

# Test msginit on a POT file with contexts.

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"
"Language: \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

: ${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; Exit 1; }
sed -e '1,10d' < mi-test2.tmp | LC_ALL=C tr -d '\r' > mi-test2.out || Exit 1

cat <<\EOF > mi-test2.ok
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: ga\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"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=$?

exit $result
