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

# Test 'I' format directive flag.

: ${XGETTEXT=xgettext}
${XGETTEXT} -o fc5.tmp --omit-header --no-location "$wabs_srcdir"/format-c-5-prg.c || Exit 1
LC_ALL=C tr -d '\r' < fc5.tmp > fc5.pot || Exit 1

cat <<EOF > fc5.ok
#, c-format
msgid "father of %d children"
msgstr ""
EOF

: ${DIFF=diff}
${DIFF} fc5.ok fc5.pot || Exit 1

# This should better be Farsi, not German. Can some translator help me?
cat <<EOF > fa.po
#, c-format
msgid "father of %d children"
msgstr "Vater von %Id Kindern"
EOF

test -d fa || mkdir fa
test -d fa/LC_MESSAGES || mkdir fa/LC_MESSAGES

: ${MSGFMT=msgfmt}
${MSGFMT} -o fa/LC_MESSAGES/fc5.mo fa.po

: ${MSGUNFMT=msgunfmt}
${MSGUNFMT} -o fa.po.tmp fa/LC_MESSAGES/fc5.mo || Exit 1
LC_ALL=C tr -d '\r' < fa.po.tmp > fa.po.un || Exit 1

: ${DIFF=diff}
${DIFF} fa.po fa.po.un || Exit 1

if test -z "$USE_SYSTEM_LIBINTL"; then
  # In the tests/ dir: Rely on a fake setlocale, so that we can exercise
  # the test on all platforms.

  LANGUAGE= ../fc5 fa_IR
  case $? in
    0) ;;
    77)
      if test -f /usr/bin/localedef; then
        echo "Skipping test: locale fa_IR not installed"
      else
        echo "Skipping test: locale fa_IR not supported"
      fi
      Exit 77;;
    *) Exit 1;;
  esac

else
  # In the system-tests/ dir: Don't use a fake setlocale.

  skipped=true

  prepare_locale_ fa fa_IR
  LANGUAGE= ../fc5 fa_IR
  case $? in
    0) skipped=false ;;
    77) ;;
    *) Exit 1;;
  esac

  prepare_locale_ fa fa_IR.UTF-8
  LANGUAGE= ../fc5 fa_IR.UTF-8
  case $? in
    0) skipped=false ;;
    77) ;;
    *) Exit 1;;
  esac

  if $skipped; then
    if test -f /usr/bin/localedef; then
      echo "Skipping test: no Farsi locale is installed"
    else
      echo "Skipping test: no Farsi locale is supported"
    fi
    Exit 77
  fi

fi

Exit 0
