summaryrefslogtreecommitdiffstats
path: root/contrib/libxo/tests/gettext
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2015-08-24 16:26:20 +0000
committermarcel <marcel@FreeBSD.org>2015-08-24 16:26:20 +0000
commit02ffac2cca7d10e6d7dd08bf0312f623bf082268 (patch)
tree2b06534b5d1c1378ec99094a62eff13dfd2e48fc /contrib/libxo/tests/gettext
parentdb61d1271ad0bc51e60afe181a45a7318591dad6 (diff)
downloadFreeBSD-src-02ffac2cca7d10e6d7dd08bf0312f623bf082268.zip
FreeBSD-src-02ffac2cca7d10e6d7dd08bf0312f623bf082268.tar.gz
Upgrade libxo to 0.4.5.
Local changes incorporated by 0.4.5: r284340 Local changes retained: r276260, r282117 Obtained from: https://github.com/Juniper/libxo
Diffstat (limited to 'contrib/libxo/tests/gettext')
-rw-r--r--contrib/libxo/tests/gettext/Makefile.am224
-rw-r--r--contrib/libxo/tests/gettext/gt_01.c115
-rw-r--r--contrib/libxo/tests/gettext/gt_01.pot105
-rw-r--r--contrib/libxo/tests/gettext/ldns.pot28
-rw-r--r--contrib/libxo/tests/gettext/po/pig_latin/gt_01.po109
-rw-r--r--contrib/libxo/tests/gettext/po/pig_latin/ldns.po30
-rw-r--r--contrib/libxo/tests/gettext/po/pig_latin/strerror.po459
-rw-r--r--contrib/libxo/tests/gettext/saved/gt_01.H.err0
-rw-r--r--contrib/libxo/tests/gettext/saved/gt_01.H.out1
-rw-r--r--contrib/libxo/tests/gettext/saved/gt_01.HIPx.err0
-rw-r--r--contrib/libxo/tests/gettext/saved/gt_01.HIPx.out139
-rw-r--r--contrib/libxo/tests/gettext/saved/gt_01.HP.err0
-rw-r--r--contrib/libxo/tests/gettext/saved/gt_01.HP.out139
-rw-r--r--contrib/libxo/tests/gettext/saved/gt_01.J.err0
-rw-r--r--contrib/libxo/tests/gettext/saved/gt_01.J.out2
-rw-r--r--contrib/libxo/tests/gettext/saved/gt_01.JP.err0
-rw-r--r--contrib/libxo/tests/gettext/saved/gt_01.JP.out53
-rw-r--r--contrib/libxo/tests/gettext/saved/gt_01.T.err0
-rw-r--r--contrib/libxo/tests/gettext/saved/gt_01.T.out17
-rw-r--r--contrib/libxo/tests/gettext/saved/gt_01.X.err0
-rw-r--r--contrib/libxo/tests/gettext/saved/gt_01.X.out1
-rw-r--r--contrib/libxo/tests/gettext/saved/gt_01.XP.err0
-rw-r--r--contrib/libxo/tests/gettext/saved/gt_01.XP.out49
-rw-r--r--contrib/libxo/tests/gettext/strerror.pot468
24 files changed, 1939 insertions, 0 deletions
diff --git a/contrib/libxo/tests/gettext/Makefile.am b/contrib/libxo/tests/gettext/Makefile.am
new file mode 100644
index 0000000..fb70142
--- /dev/null
+++ b/contrib/libxo/tests/gettext/Makefile.am
@@ -0,0 +1,224 @@
+#
+# $Id$
+#
+# Copyright 2014, Juniper Networks, Inc.
+# All rights reserved.
+# This SOFTWARE is licensed under the LICENSE provided in the
+# ../Copyright file. By downloading, installing, copying, or otherwise
+# using the SOFTWARE, you agree to be bound by the terms of that
+# LICENSE.
+
+AM_CFLAGS = \
+ -I${top_srcdir} \
+ -I${top_srcdir}/libxo \
+ ${GETTEXT_CFLAGS}
+
+# Ick: maintained by hand!
+TEST_CASES = \
+gt_01.c
+
+gt_01_test_SOURCES = gt_01.c
+
+# TEST_CASES := $(shell cd ${srcdir} ; echo *.c )
+
+noinst_PROGRAMS = ${TEST_CASES:.c=.test}
+
+LDADD = \
+ ${top_builddir}/libxo/libxo.la
+
+if HAVE_HUMANIZE_NUMBER
+LDADD += -lutil
+endif
+
+EXTRA_DIST = \
+ ${TEST_CASES} \
+ ${addprefix saved/, ${TEST_CASES:.c=.T.err}} \
+ ${addprefix saved/, ${TEST_CASES:.c=.T.out}} \
+ ${addprefix saved/, ${TEST_CASES:.c=.XP.err}} \
+ ${addprefix saved/, ${TEST_CASES:.c=.XP.out}} \
+ ${addprefix saved/, ${TEST_CASES:.c=.JP.err}} \
+ ${addprefix saved/, ${TEST_CASES:.c=.JP.out}} \
+ ${addprefix saved/, ${TEST_CASES:.c=.HP.err}} \
+ ${addprefix saved/, ${TEST_CASES:.c=.HP.out}} \
+ ${addprefix saved/, ${TEST_CASES:.c=.X.err}} \
+ ${addprefix saved/, ${TEST_CASES:.c=.X.out}} \
+ ${addprefix saved/, ${TEST_CASES:.c=.J.err}} \
+ ${addprefix saved/, ${TEST_CASES:.c=.J.out}} \
+ ${addprefix saved/, ${TEST_CASES:.c=.H.err}} \
+ ${addprefix saved/, ${TEST_CASES:.c=.H.out}} \
+ ${addprefix saved/, ${TEST_CASES:.c=.HIPx.err}} \
+ ${addprefix saved/, ${TEST_CASES:.c=.HIPx.out}}
+
+POT_FILES = \
+ gt_01.pot \
+ ldns.pot \
+ strerror.pot
+
+PO_FILES = \
+ po/pig_latin/gt_01.po \
+ po/pig_latin/ldns.po \
+ po/pig_latin/strerror.po
+
+EXTRA_DIST += ${POT_FILES} ${PO_FILES}
+
+S2O = | ${SED} '1,/@@/d'
+
+all:
+
+valgrind:
+ @echo '## Running the regression tests under Valgrind'
+ ${MAKE} CHECKER='valgrind -q' tests
+
+#TEST_TRACE = set -x ;
+
+TEST_ONE = \
+ LIBXO_OPTIONS=:W$$fmt \
+ ${CHECKER} ./$$base.test ${TEST_OPTS} \
+ > out/$$base.$$fmt.out 2> out/$$base.$$fmt.err ; \
+ ${DIFF} -Nu ${srcdir}/saved/$$base.$$fmt.out out/$$base.$$fmt.out ${S2O} ; \
+ ${DIFF} -Nu ${srcdir}/saved/$$base.$$fmt.err out/$$base.$$fmt.err ${S2O}
+
+TEST_FORMATS = T XP JP HP X J H HIPx
+
+test tests: ${bin_PROGRAMS} build-mo-files
+ @${MKDIR} -p out
+ -@ ${TEST_TRACE} (for test in ${TEST_CASES} ; do \
+ base=`${BASENAME} $$test .c` ; \
+ (for fmt in ${TEST_FORMATS}; do \
+ echo "... $$test ... $$fmt ..."; \
+ ${TEST_ONE}; \
+ true; \
+ done) \
+ done)
+
+one:
+ -@(test=${TEST_CASE}; data=${TEST_DATA}; ${TEST_ONE} ; true)
+
+accept:
+ -@(for test in ${TEST_CASES} ; do \
+ base=`${BASENAME} $$test .c` ; \
+ (for fmt in ${TEST_FORMATS}; do \
+ echo "... $$test ... $$fmt ..."; \
+ ${CP} out/$$base.$$fmt.out ${srcdir}/saved/$$base.$$fmt.out ; \
+ ${CP} out/$$base.$$fmt.err ${srcdir}/saved/$$base.$$fmt.err ; \
+ done) \
+ done)
+
+.c.test:
+ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -o $@ $<
+
+CLEANFILES = ${TEST_CASES:.c=.test}
+CLEANDIRS = out
+
+clean-local:
+ rm -rf ${CLEANDIRS}
+
+XGETTEXT = ${GETTEXT_BINDIR}/xgettext
+MSGFMT = ${GETTEXT_BINDIR}/msgfmt -v
+MSGMERGE = ${GETTEXT_BINDIR}/msgmerge
+ECHO = echo
+DB=set -x;
+XOMSGMERGE = ${MSGMERGE} --no-wrap
+XODIFF = ${DIFF} -bu
+
+LANGUAGES = \
+ es \
+ fr \
+ pig_latin
+
+# ldns is fake; used only for a gettext domain
+FAKE_FILES = ldns strerror
+MO_BASE_FILES = ${TEST_CASES:.c=} ${FAKE_FILES}
+
+build-pot-files:
+ for file in ${TEST_CASES} ; do set -x ;\
+ base=`${BASENAME} $$file .c` ; \
+ ${XGETTEXT} --default-domain=$$base \
+ --directory=${srcdir} --no-wrap \
+ --add-comments --keyword=xo_emit --keyword=xo_emit_h \
+ --keyword=xo_emit_warn \
+ -C -E -n --foreign-user \
+ -o $$base.pot.new $$base.c ; \
+ done
+
+accept-pot-files:
+ for base in ${MO_BASE_FILES} ; do set -x ;\
+ ${CP} $$base.pot.new ${srcdir}/$$base.pot ; \
+ done
+
+merge-po-files:
+ for base in ${MO_BASE_FILES} ; do set -x ;\
+ for lang in ${LANGUAGES} ; do \
+ if [ -f po/$$lang/$$base.po ]; then \
+ ${ECHO} "merging $$base.pot into po/$$lang/$$base.po ..." ; \
+ if ${XOMSGMERGE} po/$$lang/$$base.po \
+ ${srcdir}/$$base.pot \
+ -o po/$$lang/$$base.new.po; then \
+ ${MV} po/$$lang/$$base.po \
+ po/$$lang/$$base.po.old ; \
+ ${MV} po/$$lang/$$base.new.po \
+ po/$$lang/$$base.po ; \
+ else \
+ echo "error: msgmerge for $$base failed"; \
+ fi ; \
+ elif [ -f ${srcdir}/po/$$lang/$$base.po ]; then \
+ ${ECHO} "merging (srcdir) $$base.pot into po/$$lang/$$base.po ..." ; \
+ if ${XOMSGMERGE} ${srcdir}/po/$$lang/$$base.po \
+ ${srcdir}/$$base.pot \
+ -o po/$$lang/$$base.new.po; then \
+ ${MV} po/$$lang/$$base.po \
+ po/$$lang/$$base.po.old ; \
+ ${MV} po/$$lang/$$base.new.po \
+ po/$$lang/$$base.po ; \
+ else \
+ echo "error: msgmerge for $$base failed"; \
+ fi ; \
+ fi ; \
+ done ; \
+ done
+
+accept-po-files:
+ @(for base in ${MO_BASE_FILES} ; do \
+ for lang in ${LANGUAGES} ; do \
+ if [ -f po/$$lang/$$base.po ]; then \
+ ${MKDIR} -p ${srcdir}/po/$$lang ; \
+ (${DB} ${CP} po/$$lang/$$base.po ${srcdir}/po/$$lang/$$base.po ); \
+ fi ; \
+ done ; \
+ done)
+
+new-po-file:
+ @(for base in ${MO_BASE_FILES} ; do set -x ;\
+ for lang in ${LANGUAGES} ; do \
+ if [ ! -f po/$$lang/$$base.po ]; then \
+ ${MKDIR} -p po/$$lang ; \
+ (${DB} ${CP} $$base.pot po/$$lang/$$base.po ); \
+ fi ; \
+ done ; \
+ done)
+
+diff:
+ @(for base in ${MO_BASE_FILES} ; do \
+ if [ -f $$base.pot.new ] ; then \
+ ${XODIFF} ${srcdir}/$$base.pot $$base.pot.new ; \
+ fi ; \
+ for lang in ${LANGUAGES} ; do \
+ if [ -f po/$$lang/$$base.po ] ; then \
+ ${XODIFF} ${srcdir}/po/$$lang/$$base.po po/$$lang/$$base.po ; \
+ fi ; \
+ done ; \
+ done)
+
+mo build-mo-files:
+ @(for base in ${MO_BASE_FILES} ; do \
+ for lang in ${LANGUAGES} ; do \
+ ${MKDIR} -p po/$$lang/LC_MESSAGES ; \
+ if [ -f po/$$lang/$$base.po ] ; then \
+ (${DB} ${MSGFMT} -o po/$$lang/LC_MESSAGES/$$base.mo \
+ po/$$lang/$$base.po ); \
+ elif [ -f ${srcdir}/po/$$lang/$$base.po ]; then \
+ (${DB} ${MSGFMT} -o po/$$lang/LC_MESSAGES/$$base.mo \
+ ${srcdir}/po/$$lang/$$base.po ;) \
+ fi ; \
+ done ; \
+ done)
diff --git a/contrib/libxo/tests/gettext/gt_01.c b/contrib/libxo/tests/gettext/gt_01.c
new file mode 100644
index 0000000..a0200c2
--- /dev/null
+++ b/contrib/libxo/tests/gettext/gt_01.c
@@ -0,0 +1,115 @@
+/*
+ * Copyright (c) 2015, Juniper Networks, Inc.
+ * All rights reserved.
+ * This SOFTWARE is licensed under the LICENSE provided in the
+ * ../Copyright file. By downloading, installing, copying, or otherwise
+ * using the SOFTWARE, you agree to be bound by the terms of that
+ * LICENSE.
+ * Phil Shafer, June 2015
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <errno.h>
+#include <ctype.h>
+#include <time.h>
+#include <sys/time.h>
+#include <sys/param.h>
+#include <locale.h>
+#include <libintl.h>
+
+#include "xo.h"
+
+int
+main (int argc, char **argv)
+{
+ static char domainname[] = "gt_01";
+ char path[MAXPATHLEN];
+ const char *tzone = "EST";
+ const char *lang = "pig_latin";
+
+ argc = xo_parse_args(argc, argv);
+ if (argc < 0)
+ return 1;
+
+ for (argc = 1; argv[argc]; argc++) {
+ if (strcmp(argv[argc], "tz") == 0)
+ tzone = argv[++argc];
+ else if (strcmp(argv[argc], "lang") == 0)
+ lang = argv[++argc];
+ else if (strcmp(argv[argc], "po") == 0)
+ strlcpy(path, argv[++argc], sizeof(path));
+ }
+
+ setenv("LANG", lang, 1);
+ setenv("TZ", tzone, 1);
+
+ if (path[0] == 0) {
+ getcwd(path, sizeof(path));
+ strlcat(path, "/po", sizeof(path));
+ }
+
+ setlocale(LC_ALL, "");
+ bindtextdomain(domainname, path);
+ bindtextdomain("ldns", path);
+ bindtextdomain("strerror", path);
+ textdomain(domainname);
+ tzset();
+
+ xo_open_container("top");
+
+ xo_emit("{G:}Your {qg:adjective} {g:noun} is {g:verb} {qg:owner} {g:target}\n",
+ "flaming", "sword", "burning", "my", "couch");
+
+ xo_emit("{G:}The {qg:adjective} {g:noun} was {g:verb} {qg:owner} {g:target}\n",
+ "flaming", "sword", "burning", "my", "couch");
+
+
+ int i;
+ for (i = 0; i < 5; i++)
+ xo_emit("{lw:bytes/%d}{Ngp:byte,bytes}\n", i);
+
+ xo_emit("{G:}{L:total} {:total/%u}\n", 1234);
+
+ xo_emit("{G:ldns}Received {:received/%zu} {Ngp:byte,bytes} "
+ "from {:from/%s}#{:port/%d} in {:time/%d} ms\n",
+ (size_t) 1234, "foop", 4321, 32);
+
+ xo_emit("{G:}Received {:received/%zu} {Ngp:byte,bytes} "
+ "from {:from/%s}#{:port/%d} in {:time/%d} ms\n",
+ (size_t) 1234, "foop", 4321, 32);
+
+ xo_emit("{G:/%s}Received {:received/%zu} {Ngp:byte,bytes} "
+ "from {:from/%s}#{:port/%d} in {:time/%d} ms\n",
+ "ldns", (size_t) 1234, "foop", 4321, 32);
+
+ struct timeval tv;
+ tv.tv_sec = 1435085229;
+ tv.tv_usec = 123456;
+
+ struct tm tm;
+ (void) gmtime_r(&tv.tv_sec, &tm);
+
+ char date[64];
+ strftime(date, sizeof(date), "%+", &tm);
+
+ xo_emit("{G:}Only {:marzlevanes/%d} {Ngp:marzlevane,marzlevanes} "
+ "are functioning correctly\n", 3);
+
+ xo_emit("{G:}Version {:version} {:date}\n", "1.2.3", date);
+
+ errno = EACCES;
+ xo_emit_warn("{G:}Unable to {g:verb/objectulate} forward velociping");
+ xo_emit_warn("{G:}{g:style/automatic} synchronization of {g:type/cardinal} "
+ "{g:target/grammeters} failed");
+ xo_emit("{G:}{Lwcg:hydrocoptic marzlevanes}{:marzlevanes/%d}\n", 6);
+
+ xo_emit("{G:}{Lwcg:Windings}{g:windings}\n", "lotus-o-delta");
+
+ xo_close_container("top");
+ xo_finish();
+
+ return 0;
+}
diff --git a/contrib/libxo/tests/gettext/gt_01.pot b/contrib/libxo/tests/gettext/gt_01.pot
new file mode 100644
index 0000000..1d09223
--- /dev/null
+++ b/contrib/libxo/tests/gettext/gt_01.pot
@@ -0,0 +1,105 @@
+# SOME DESCRIPTIVE TITLE.
+# This file is put in the public domain.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2015-07-01 16:15-0400\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=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: gt_01.c:42
+#, c-format
+msgid "{:bytes}{N:byte,bytes}\n"
+msgstr ""
+
+#: gt_01.c:44
+#, c-format
+msgid "{L:total} {:total}\n"
+msgstr ""
+
+#: gt_01.c:60
+#, c-format
+msgid "Only {:marzlevanes} {N:marzlevane,marzlevanes} are functioning correctly\n"
+msgstr ""
+
+#: gt_01.c:63
+msgid "Version {:version} {:date}\n"
+msgstr ""
+
+#: gt_01.c:66
+msgid "Unable to {:verb} forward velociping"
+msgstr ""
+
+#: gt_01.c:67
+msgid "{:style} synchronization of {:type} {:target} failed"
+msgstr ""
+
+#: gt_01.c:69
+#, c-format
+msgid "{L:hydrocoptic marzlevanes}{:marzlevanes}\n"
+msgstr ""
+
+#: gt_01.c:71
+msgid "{L:Windings}{:windings}\n"
+msgstr ""
+
+msgid "byte"
+msgid_plural "bytes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "marzlevane"
+msgid_plural "marzlevanes"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "lotus-o-delta"
+msgstr ""
+
+msgid "cardinal"
+msgstr ""
+
+msgid "automatic"
+msgstr ""
+
+msgid "grammeters"
+msgstr ""
+
+msgid "objectulate"
+msgstr ""
+
+msgid "hydrocoptic marzlevanes"
+msgstr ""
+
+msgid "Windings"
+msgstr ""
+
+msgid "Your {:adjective} {:noun} is {:verb} {:owner} {:target}\n"
+msgstr ""
+
+msgid "The {:adjective} {:noun} was {:verb} {:owner} {:target}\n"
+msgstr ""
+
+msgid "flaming"
+msgstr ""
+
+msgid "sword"
+msgstr ""
+
+msgid "burning"
+msgstr ""
+
+msgid "my"
+msgstr ""
+
+msgid "couch"
+msgstr ""
diff --git a/contrib/libxo/tests/gettext/ldns.pot b/contrib/libxo/tests/gettext/ldns.pot
new file mode 100644
index 0000000..6e3df20
--- /dev/null
+++ b/contrib/libxo/tests/gettext/ldns.pot
@@ -0,0 +1,28 @@
+# SOME DESCRIPTIVE TITLE.
+# This file is put in the public domain.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2015-07-01 16:15-0400\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=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: gt_01.c:46
+#, c-format
+msgid "Received {:received} {N:byte,bytes} from {:from}#{:port} in {:time} ms\n"
+msgstr ""
+
+msgid "byte"
+msgid_plural "bytes"
+msgstr[0] ""
+msgstr[1] ""
+
diff --git a/contrib/libxo/tests/gettext/po/pig_latin/gt_01.po b/contrib/libxo/tests/gettext/po/pig_latin/gt_01.po
new file mode 100644
index 0000000..269bad5
--- /dev/null
+++ b/contrib/libxo/tests/gettext/po/pig_latin/gt_01.po
@@ -0,0 +1,109 @@
+# SOME DESCRIPTIVE TITLE.
+# This file is put in the public domain.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libxo unit test\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2015-07-01 16:15-0400\n"
+"PO-Revision-Date: 2015-07-09 13:43-0400\n"
+"Last-Translator: P.S. <ps@example.com>\n"
+"Language-Team: Self-inflicted <test@example.com>\n"
+"Language: teo\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.1\n"
+"Plural-Forms: nplurals=3; plural=(n==0) ? 0 : (n==1) ? 1 : 2;\n"
+"X-Poedit-SourceCharset: iso-8859-1\n"
+
+#: gt_01.c:42
+#, c-format
+msgid "{:bytes}{N:byte,bytes}\n"
+msgstr "{:bytes}{N:ytebay,ytesbay}\n"
+
+#: gt_01.c:44
+#, c-format
+msgid "{L:total} {:total}\n"
+msgstr "{L:otaltay} {:total}\n"
+
+#: gt_01.c:60
+#, c-format
+msgid "Only {:marzlevanes} {N:marzlevane,marzlevanes} are functioning correctly\n"
+msgstr "Onlyay {:marzlevanes} {N:marzlevane,marzlevanes} areyay unctioningfay orrectlycay\n"
+
+#: gt_01.c:63
+msgid "Version {:version} {:date}\n"
+msgstr "Ersionvay {:date} {:version}\n"
+
+#: gt_01.c:66
+msgid "Unable to {:verb} forward velociping"
+msgstr "Nableuay otay {:verb} orwardfay elocipingvay"
+
+#: gt_01.c:67
+msgid "{:style} synchronization of {:type} {:target} failed"
+msgstr "{:style} ynchronizationsay ofyay {:type} {:target} ailedfay"
+
+#: gt_01.c:69
+#, c-format
+msgid "{L:hydrocoptic marzlevanes}{:marzlevanes}\n"
+msgstr "{L:ydrocoptichay arzlevanesmay}{:marzlevanes}\n"
+
+#: gt_01.c:71
+msgid "{L:Windings}{:windings}\n"
+msgstr "Dude, {L:Windings}{:windings}\n"
+
+msgid "byte"
+msgid_plural "bytes"
+msgstr[0] "yebay"
+msgstr[1] "yesbay"
+msgstr[2] "yezbay"
+
+msgid "marzlevane"
+msgid_plural "marzlevanes"
+msgstr[0] "arzlevanemay"
+msgstr[1] "arzlevanesmay"
+msgstr[2] "arzlevanezmay"
+
+msgid "lotus-o-delta"
+msgstr "otuslay-oyay-eltayay"
+
+msgid "cardinal"
+msgstr "ardinalyay"
+
+msgid "automatic"
+msgstr "automaticyay"
+
+msgid "grammeters"
+msgstr "ammetersgray"
+
+msgid "objectulate"
+msgstr "ectulatobjay"
+
+msgid "hydrocoptic marzlevanes"
+msgstr "ydrocoptichay arzlevanesmay"
+
+msgid "Windings"
+msgstr "Indingsway"
+
+msgid "Your {:adjective} {:noun} is {:verb} {:owner} {:target}\n"
+msgstr "Ouryay {:noun} {:adjective} isyay {:owner}{:target} bubbly-bubbly {:verb}\n"
+
+msgid "The {:adjective} {:noun} was {:verb} {:owner} {:target}\n"
+msgstr "Ethay {:noun} asway '{:owner}{:adjective}{:target}' {:verb}\n"
+
+msgid "flaming"
+msgstr "amingflay"
+
+msgid "sword"
+msgstr "ordsway"
+
+msgid "burning"
+msgstr "urningbay"
+
+msgid "my"
+msgstr "ymay"
+
+msgid "couch"
+msgstr "ouchcay"
diff --git a/contrib/libxo/tests/gettext/po/pig_latin/ldns.po b/contrib/libxo/tests/gettext/po/pig_latin/ldns.po
new file mode 100644
index 0000000..83d5aee
--- /dev/null
+++ b/contrib/libxo/tests/gettext/po/pig_latin/ldns.po
@@ -0,0 +1,30 @@
+# SOME DESCRIPTIVE TITLE.
+# This file is put in the public domain.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libxo unit test\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2015-07-01 16:15-0400\n"
+"PO-Revision-Date: 2015-07-01 18:47-0500\n"
+"Last-Translator: P.S. <ps@example.com>\n"
+"Language-Team: Self-inflicted <test@example.com>\n"
+"Language: teo\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.1\n"
+"Plural-Forms: nplurals=3; plural=(n==0) ? 0 : (n==1) ? 1 : 2;\n"
+"X-Poedit-SourceCharset: iso-8859-1\n"
+
+#: gt_01.c:46
+#, c-format
+msgid "Received {:received} {N:byte,bytes} from {:from}#{:port} in {:time} ms\n"
+msgstr "Eceivedray {:received} {N:byte,bytes} omfray {:from}#{:port} inyay {:time} msyay\n"
+
+msgid "byte"
+msgid_plural "bytes"
+msgstr[0] "ldb0"
+msgstr[1] "ldb1"
+msgstr[2] "ldb2"
diff --git a/contrib/libxo/tests/gettext/po/pig_latin/strerror.po b/contrib/libxo/tests/gettext/po/pig_latin/strerror.po
new file mode 100644
index 0000000..8b41c0a
--- /dev/null
+++ b/contrib/libxo/tests/gettext/po/pig_latin/strerror.po
@@ -0,0 +1,459 @@
+#
+# Copyright (c) 1982, 1985, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 4. Neither the name of the University nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# List of system errors ala strerror() and sys_errlist
+# Phil Shafer <phil@juniper.net>, 2015.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libxo test\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2015-07-01 16:15-0400\n"
+"PO-Revision-Date: 2015-07-02 00:37-0500\n"
+"Language: teo\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==0) ? 0 : (n==1) ? 1 : 2;\n"
+"Last-Translator: P.S. <ps@example.com>\n"
+"Language-Team: self inflicted <test@example.com>\n"
+"X-Generator: Poedit 1.8.1\n"
+"X-Poedit-SourceCharset: iso-8859-1\n"
+
+# 0 - ENOERROR
+msgid "No error: 0"
+msgstr "Onyay erroryay"
+
+# 1 - EPERM
+msgid "Operation not permitted"
+msgstr "Operationyay otnay ermittedpay"
+
+# 2 - ENOENT
+msgid "No such file or directory"
+msgstr "Onay uchsay ilefay oryay irectoryday"
+
+# 3 - ESRCH
+msgid "No such process"
+msgstr "Onay uchsay ocesspray"
+
+# 4 - EINTR
+msgid "Interrupted system call"
+msgstr "Interruptedyay ystemsay allcay"
+
+# 5 - EIO
+msgid "Input/output error"
+msgstr "Input/outputyay erroryay"
+
+# 6 - ENXIO
+msgid "Device not configured"
+msgstr "Eviceday otnay onfiguredcay"
+
+# 7 - E2BIG
+msgid "Argument list too long"
+msgstr "Argumentyay istlay ootay onglay"
+
+# 8 - ENOEXEC
+msgid "Exec format error"
+msgstr "Execway ormatfay errorway"
+
+# 9 - EBADF
+msgid "Bad file descriptor"
+msgstr "Adbay ilefay escriptorday"
+
+# 10 - ECHILD
+msgid "No child processes"
+msgstr "Onay ildchay ocessespray"
+
+# 11 - EDEADLK
+msgid "Resource deadlock avoided"
+msgstr "Esourceray eadlockday avoidedway"
+
+# 12 - ENOMEM
+msgid "Cannot allocate memory"
+msgstr "Annotcay allocateway emorymay"
+
+# 13 - EACCES
+msgid "Permission denied"
+msgstr "Ermissionpay eniedday"
+
+# 14 - EFAULT
+msgid "Bad address"
+msgstr "Adbay addressway"
+
+# 15 - ENOTBLK
+msgid "Block device required"
+msgstr "Ockblay eviceday equiredray"
+
+# 16 - EBUSY
+msgid "Device busy"
+msgstr "Eviceday usybay"
+
+# 17 - EEXIST
+msgid "File exists"
+msgstr "Ilefay existsway"
+
+# 18 - EXDEV
+msgid "Cross-device link"
+msgstr "Osscray-eviceday inklay"
+
+# 19 - ENODEV
+msgid "Operation not supported by device"
+msgstr "Operationway otnay upportedsay ybay eviceday"
+
+# 20 - ENOTDIR
+msgid "Not a directory"
+msgstr "Otnay away irectoryday"
+
+# 21 - EISDIR
+msgid "Is a directory"
+msgstr "Isway away irectoryday"
+
+# 22 - EINVAL
+msgid "Invalid argument"
+msgstr "Invalidway argumentway"
+
+# 23 - ENFILE
+msgid "Too many open files in system"
+msgstr "Ootay anymay openway ilesfay inway ystemsay"
+
+# 24 - EMFILE
+msgid "Too many open files"
+msgstr "Ootay anymay openway ilesfay"
+
+# 25 - ENOTTY
+msgid "Inappropriate ioctl for device"
+msgstr "Inappropriateway ioctlway orfay eviceday"
+
+# 26 - ETXTBSY
+msgid "Text file busy"
+msgstr "Exttay ilefay usybay"
+
+# 27 - EFBIG
+msgid "File too large"
+msgstr "Ilefay ootay argelay"
+
+# 28 - ENOSPC
+msgid "No space left on device"
+msgstr "Onay acespay eftlay onway eviceday"
+
+# 29 - ESPIPE
+msgid "Illegal seek"
+msgstr "Illegalway eeksay"
+
+# 30 - EROFS
+msgid "Read-only file system"
+msgstr "Eadray-onlyway ilefay ystemsay"
+
+# 31 - EMLINK
+msgid "Too many links"
+msgstr "Ootay anymay inkslay"
+
+# 32 - EPIPE
+msgid "Broken pipe"
+msgstr "Okenbray ipepay"
+
+#
+# math software
+#
+# 33 - EDOM
+msgid "Numerical argument out of domain"
+msgstr "Umericalnay argumentway outway ofway omainday"
+
+# 34 - ERANGE
+msgid "Result too large"
+msgstr "Esultray ootay argelay"
+
+#
+# non-blocking and interrupt i/o
+#
+# 35 - EAGAIN
+# 35 - EWOULDBLOCK
+msgid "Resource temporarily unavailable"
+msgstr "Esourceray emporarilytay unavailableway"
+
+# 36 - EINPROGRESS
+msgid "Operation now in progress"
+msgstr "Operationway ownay inway ogresspray"
+
+# 37 - EALREADY
+msgid "Operation already in progress"
+msgstr "Operationway alreadyway inway ogresspray"
+
+#
+# ipc/network software -- argument errors
+#
+# 38 - ENOTSOCK
+msgid "Socket operation on non-socket"
+msgstr "Ocketsay operationway onway onnay-ocketsay"
+
+# 39 - EDESTADDRREQ
+msgid "Destination address required"
+msgstr "Estinationday addressway equiredray"
+
+# 40 - EMSGSIZE
+msgid "Message too long"
+msgstr "Essagemay ootay onglay"
+
+# 41 - EPROTOTYPE
+msgid "Protocol wrong type for socket"
+msgstr "Otocolpray ongwray ypetay orfay ocketsay"
+
+# 42 - ENOPROTOOPT
+msgid "Protocol not available"
+msgstr "Otocolpray otnay availableway"
+
+# 43 - EPROTONOSUPPORT
+msgid "Protocol not supported"
+msgstr "Otocolpray otnay upportedsay"
+
+# 44 - ESOCKTNOSUPPORT
+msgid "Socket type not supported"
+msgstr "Ocketsay ypetay otnay upportedsay"
+
+# 45 - EOPNOTSUPP
+msgid "Operation not supported"
+msgstr "Operationway otnay upportedsay"
+
+# 46 - EPFNOSUPPORT
+msgid "Protocol family not supported"
+msgstr "Otocolpray amilyfay otnay upportedsay"
+
+# 47 - EAFNOSUPPORT
+msgid "Address family not supported by protocol family"
+msgstr "Addressway amilyfay otnay upportedsay ybay otocolpray amilyfay"
+
+# 48 - EADDRINUSE
+msgid "Address already in use"
+msgstr "Addressway alreadyway inway useway"
+
+# 49 - EADDRNOTAVAIL
+msgid "Can't assign requested address"
+msgstr "An'tcay assignway equestedray addressway"
+
+#
+# ipc/network software -- operational errors
+#
+# 50 - ENETDOWN
+msgid "Network is down"
+msgstr "Etworknay isway ownday"
+
+# 51 - ENETUNREACH
+msgid "Network is unreachable"
+msgstr "Etworknay isway unreachableway"
+
+# 52 - ENETRESET
+msgid "Network dropped connection on reset"
+msgstr "Etworknay oppeddray onnectioncay onway esetray"
+
+# 53 - ECONNABORTED
+msgid "Software caused connection abort"
+msgstr "Oftwaresay ausedcay onnectioncay abortway"
+
+# 54 - ECONNRESET
+msgid "Connection reset by peer"
+msgstr "Onnectioncay esetray ybay eerpay"
+
+# 55 - ENOBUFS
+msgid "No buffer space available"
+msgstr "Onay ufferbay acespay availableway"
+
+# 56 - EISCONN
+msgid "Socket is already connected"
+msgstr "Ocketsay isway alreadyway onnectedcay"
+
+# 57 - ENOTCONN
+msgid "Socket is not connected"
+msgstr "Ocketsay isway otnay onnectedcay"
+
+# 58 - ESHUTDOWN
+msgid "Can't send after socket shutdown"
+msgstr "An'tcay endsay afterway ocketsay utdownshay"
+
+# 59 - ETOOMANYREFS
+msgid "Too many references: can't splice"
+msgstr "Ootay anymay eferencesray: an'tcay icesplay"
+
+# 60 - ETIMEDOUT
+msgid "Operation timed out"
+msgstr "Operationway imedtay outway"
+
+# 61 - ECONNREFUSED
+msgid "Connection refused"
+msgstr "Onnectioncay efusedray"
+
+# 62 - ELOOP
+msgid "Too many levels of symbolic links"
+msgstr "Ootay anymay evelslay ofway ymbolicsay inkslay"
+
+# 63 - ENAMETOOLONG
+msgid "File name too long"
+msgstr "Ilefay amenay ootay onglay"
+
+#
+# should be rearranged
+#
+# 64 - EHOSTDOWN
+msgid "Host is down"
+msgstr "Osthay isway ownday"
+
+# 65 - EHOSTUNREACH
+msgid "No route to host"
+msgstr "Onay outeray otay osthay"
+
+# 66 - ENOTEMPTY
+msgid "Directory not empty"
+msgstr "Irectoryday otnay emptyway"
+
+#
+# quotas & mush
+#
+# 67 - EPROCLIM
+msgid "Too many processes"
+msgstr "Ootay anymay ocessespray"
+
+# 68 - EUSERS
+msgid "Too many users"
+msgstr "Ootay anymay usersway"
+
+# 69 - EDQUOT
+msgid "Disc quota exceeded"
+msgstr "Iscday otaquay exceededway"
+
+#
+# Network File System
+#
+# 70 - ESTALE
+msgid "Stale NFS file handle"
+msgstr "Alestay NFSAY ilefay andlehay"
+
+# 71 - EREMOTE
+msgid "Too many levels of remote in path"
+msgstr "Ootay anymay evelslay ofway emoteray inway athpay"
+
+# 72 - EBADRPC
+msgid "RPC struct is bad"
+msgstr "RPCAY uctstray isway adbay"
+
+# 73 - ERPCMISMATCH
+msgid "RPC version wrong"
+msgstr "RPCAY ersionvay ongwray"
+
+# 74 - EPROGUNAVAIL
+msgid "RPC prog. not avail"
+msgstr "RPCAY ogpray. otnay availway"
+
+# 75 - EPROGMISMATCH
+msgid "Program version wrong"
+msgstr "Ogrampray ersionvay ongwray"
+
+# 76 - EPROCUNAVAIL
+msgid "Bad procedure for program"
+msgstr "Adbay ocedurepray orfay ogrampray"
+
+# 77 - ENOLCK
+msgid "No locks available"
+msgstr "Onay ockslay availableway"
+
+# 78 - ENOSYS
+msgid "Function not implemented"
+msgstr "Unctionfay otnay implementedway"
+
+# 79 - EFTYPE
+msgid "Inappropriate file type or format"
+msgstr "Inappropriateway ilefay ypetay orway ormatfay"
+
+# 80 - EAUTH
+msgid "Authentication error"
+msgstr "Authenticationway errorway"
+
+# 81 - ENEEDAUTH
+msgid "Need authenticator"
+msgstr "Eednay authenticatorway"
+
+# 82 - EIDRM
+msgid "Identifier removed"
+msgstr "Identifierway emovedray"
+
+# 83 - ENOMSG
+msgid "No message of desired type"
+msgstr "Onay essagemay ofway esiredday ypetay"
+
+# 84 - EOVERFLOW
+msgid "Value too large to be stored in data type"
+msgstr "Aluevay ootay argelay otay ebay oredstay inway ataday ypetay"
+
+# 85 - ECANCELED
+msgid "Operation canceled"
+msgstr "Operationway anceledcay"
+
+# 86 - EILSEQ
+msgid "Illegal byte sequence"
+msgstr "Illegalway ytebay equencesay"
+
+# 87 - ENOATTR
+msgid "Attribute not found"
+msgstr "Attributeway otnay oundfay"
+
+#
+# General
+#
+# 88 - EDOOFUS
+msgid "Programming error"
+msgstr "Ogrammingpray errorway"
+
+# 89 - EBADMSG
+msgid "Bad message"
+msgstr "Adbay essagemay"
+
+# 90 - EMULTIHOP
+msgid "Multihop attempted"
+msgstr "Ultihopmay attemptedway"
+
+# 91 - ENOLINK
+msgid "Link has been severed"
+msgstr "Inklay ashay eenbay everedsay"
+
+# 92 - EPROTO
+msgid "Protocol error"
+msgstr "Otocolpray errorway"
+
+# 93 - ENOTCAPABLE
+msgid "Capabilities insufficient"
+msgstr "Apabilitiescay insufficientway"
+
+# 94 - ECAPMODE
+msgid "Not permitted in capability mode"
+msgstr "Otnay ermittedpay inway apabilitycay odemay"
+
+# 95 - ENOTRECOVERABLE
+msgid "State not recoverable"
+msgstr "Atestay otnay ecoverableray"
+
+# 96 - EOWNERDEAD
+msgid "Previous owner died"
+msgstr "Eviouspray ownerway iedday"
diff --git a/contrib/libxo/tests/gettext/saved/gt_01.H.err b/contrib/libxo/tests/gettext/saved/gt_01.H.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/contrib/libxo/tests/gettext/saved/gt_01.H.err
diff --git a/contrib/libxo/tests/gettext/saved/gt_01.H.out b/contrib/libxo/tests/gettext/saved/gt_01.H.out
new file mode 100644
index 0000000..13606bf
--- /dev/null
+++ b/contrib/libxo/tests/gettext/saved/gt_01.H.out
@@ -0,0 +1 @@
+<div class="line"><div class="text">Ouryay </div><div class="data" data-tag="noun">ordsway</div><div class="text"> </div><div class="data" data-tag="adjective">amingflay</div><div class="text"> isyay </div><div class="data" data-tag="owner">ymay</div><div class="data" data-tag="target">ouchcay</div><div class="text"> bubbly-bubbly </div><div class="data" data-tag="verb">urningbay</div></div><div class="line"><div class="text">Ethay </div><div class="data" data-tag="noun">ordsway</div><div class="text"> asway '</div><div class="data" data-tag="owner">ymay</div><div class="data" data-tag="adjective">amingflay</div><div class="data" data-tag="target">ouchcay</div><div class="text">' </div><div class="data" data-tag="verb">urningbay</div></div><div class="line"><div class="data" data-tag="bytes">0</div><div class="padding"> </div><div class="note">yebay</div></div><div class="line"><div class="data" data-tag="bytes">1</div><div class="padding"> </div><div class="note">yesbay</div></div><div class="line"><div class="data" data-tag="bytes">2</div><div class="padding"> </div><div class="note">yezbay</div></div><div class="line"><div class="data" data-tag="bytes">3</div><div class="padding"> </div><div class="note">yezbay</div></div><div class="line"><div class="data" data-tag="bytes">4</div><div class="padding"> </div><div class="note">yezbay</div></div><div class="line"><div class="label">otaltay</div><div class="text"> </div><div class="data" data-tag="total">1234</div></div><div class="line"><div class="text">Eceivedray </div><div class="data" data-tag="received">1234</div><div class="text"> </div><div class="note">ldb2</div><div class="text"> omfray </div><div class="data" data-tag="from">foop</div><div class="text">#</div><div class="data" data-tag="port">4321</div><div class="text"> inyay </div><div class="data" data-tag="time">32</div><div class="text"> msyay</div></div><div class="line"><div class="text">Received </div><div class="data" data-tag="received">1234</div><div class="text"> </div><div class="note">yezbay</div><div class="text"> from </div><div class="data" data-tag="from">foop</div><div class="text">#</div><div class="data" data-tag="port">4321</div><div class="text"> in </div><div class="data" data-tag="time">32</div><div class="text"> ms</div></div><div class="line"><div class="text">Eceivedray </div><div class="data" data-tag="received">1234</div><div class="text"> </div><div class="note">ldb2</div><div class="text"> omfray </div><div class="data" data-tag="from">foop</div><div class="text">#</div><div class="data" data-tag="port">4321</div><div class="text"> inyay </div><div class="data" data-tag="time">32</div><div class="text"> msyay</div></div><div class="line"><div class="text">Onlyay </div><div class="data" data-tag="marzlevanes">3</div><div class="text"> </div><div class="note">arzlevanezmay</div><div class="text"> areyay unctioningfay orrectlycay</div></div><div class="line"><div class="text">Ersionvay </div><div class="data" data-tag="date">Tue Jun 23 18:47:09 UTC 2015</div><div class="text"> </div><div class="data" data-tag="version">1.2.3</div></div><div class="line"><div class="data" data-tag="program">gt_01.test</div><div class="decoration">:</div><div class="padding"> </div><div class="text">Nableuay otay </div><div class="data" data-tag="verb">ectulatobjay</div><div class="text"> orwardfay elocipingvay</div><div class="text">: </div><div class="data" data-tag="error">Ermissionpay eniedday</div></div><div class="line"><div class="data" data-tag="program">gt_01.test</div><div class="decoration">:</div><div class="padding"> </div><div class="data" data-tag="style">automaticyay</div><div class="text"> ynchronizationsay ofyay </div><div class="data" data-tag="type">ardinalyay</div><div class="text"> </div><div class="data" data-tag="target">ammetersgray</div><div class="text"> ailedfay</div><div class="text">: </div><div class="data" data-tag="error">Ermissionpay eniedday</div></div><div class="line"><div class="label">ydrocoptichay arzlevanesmay</div><div class="decoration">:</div><div class="padding"> </div><div class="data" data-tag="marzlevanes">6</div></div><div class="line"><div class="text">Dude, </div><div class="label">Indingsway</div><div class="decoration">:</div><div class="padding"> </div><div class="data" data-tag="windings">otuslay-oyay-eltayay</div></div> \ No newline at end of file
diff --git a/contrib/libxo/tests/gettext/saved/gt_01.HIPx.err b/contrib/libxo/tests/gettext/saved/gt_01.HIPx.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/contrib/libxo/tests/gettext/saved/gt_01.HIPx.err
diff --git a/contrib/libxo/tests/gettext/saved/gt_01.HIPx.out b/contrib/libxo/tests/gettext/saved/gt_01.HIPx.out
new file mode 100644
index 0000000..06b6a3c
--- /dev/null
+++ b/contrib/libxo/tests/gettext/saved/gt_01.HIPx.out
@@ -0,0 +1,139 @@
+<div class="line">
+ <div class="text">Ouryay </div>
+ <div class="data" data-tag="noun" data-xpath="/top/noun">ordsway</div>
+ <div class="text"> </div>
+ <div class="data" data-tag="adjective" data-xpath="/top/adjective">amingflay</div>
+ <div class="text"> isyay </div>
+ <div class="data" data-tag="owner" data-xpath="/top/owner">ymay</div>
+ <div class="data" data-tag="target" data-xpath="/top/target">ouchcay</div>
+ <div class="text"> bubbly-bubbly </div>
+ <div class="data" data-tag="verb" data-xpath="/top/verb">urningbay</div>
+</div>
+<div class="line">
+ <div class="text">Ethay </div>
+ <div class="data" data-tag="noun" data-xpath="/top/noun">ordsway</div>
+ <div class="text"> asway '</div>
+ <div class="data" data-tag="owner" data-xpath="/top/owner">ymay</div>
+ <div class="data" data-tag="adjective" data-xpath="/top/adjective">amingflay</div>
+ <div class="data" data-tag="target" data-xpath="/top/target">ouchcay</div>
+ <div class="text">' </div>
+ <div class="data" data-tag="verb" data-xpath="/top/verb">urningbay</div>
+</div>
+<div class="line">
+ <div class="data" data-tag="bytes" data-xpath="/top/bytes">0</div>
+ <div class="padding"> </div>
+ <div class="note">yebay</div>
+</div>
+<div class="line">
+ <div class="data" data-tag="bytes" data-xpath="/top/bytes">1</div>
+ <div class="padding"> </div>
+ <div class="note">yesbay</div>
+</div>
+<div class="line">
+ <div class="data" data-tag="bytes" data-xpath="/top/bytes">2</div>
+ <div class="padding"> </div>
+ <div class="note">yezbay</div>
+</div>
+<div class="line">
+ <div class="data" data-tag="bytes" data-xpath="/top/bytes">3</div>
+ <div class="padding"> </div>
+ <div class="note">yezbay</div>
+</div>
+<div class="line">
+ <div class="data" data-tag="bytes" data-xpath="/top/bytes">4</div>
+ <div class="padding"> </div>
+ <div class="note">yezbay</div>
+</div>
+<div class="line">
+ <div class="label">otaltay</div>
+ <div class="text"> </div>
+ <div class="data" data-tag="total" data-xpath="/top/total">1234</div>
+</div>
+<div class="line">
+ <div class="text">Eceivedray </div>
+ <div class="data" data-tag="received" data-xpath="/top/received">1234</div>
+ <div class="text"> </div>
+ <div class="note">ldb2</div>
+ <div class="text"> omfray </div>
+ <div class="data" data-tag="from" data-xpath="/top/from">foop</div>
+ <div class="text">#</div>
+ <div class="data" data-tag="port" data-xpath="/top/port">4321</div>
+ <div class="text"> inyay </div>
+ <div class="data" data-tag="time" data-xpath="/top/time">32</div>
+ <div class="text"> msyay</div>
+</div>
+<div class="line">
+ <div class="text">Received </div>
+ <div class="data" data-tag="received" data-xpath="/top/received">1234</div>
+ <div class="text"> </div>
+ <div class="note">yezbay</div>
+ <div class="text"> from </div>
+ <div class="data" data-tag="from" data-xpath="/top/from">foop</div>
+ <div class="text">#</div>
+ <div class="data" data-tag="port" data-xpath="/top/port">4321</div>
+ <div class="text"> in </div>
+ <div class="data" data-tag="time" data-xpath="/top/time">32</div>
+ <div class="text"> ms</div>
+</div>
+<div class="line">
+ <div class="text">Eceivedray </div>
+ <div class="data" data-tag="received" data-xpath="/top/received">1234</div>
+ <div class="text"> </div>
+ <div class="note">ldb2</div>
+ <div class="text"> omfray </div>
+ <div class="data" data-tag="from" data-xpath="/top/from">foop</div>
+ <div class="text">#</div>
+ <div class="data" data-tag="port" data-xpath="/top/port">4321</div>
+ <div class="text"> inyay </div>
+ <div class="data" data-tag="time" data-xpath="/top/time">32</div>
+ <div class="text"> msyay</div>
+</div>
+<div class="line">
+ <div class="text">Onlyay </div>
+ <div class="data" data-tag="marzlevanes" data-xpath="/top/marzlevanes">3</div>
+ <div class="text"> </div>
+ <div class="note">arzlevanezmay</div>
+ <div class="text"> areyay unctioningfay orrectlycay</div>
+</div>
+<div class="line">
+ <div class="text">Ersionvay </div>
+ <div class="data" data-tag="date" data-xpath="/top/date">Tue Jun 23 18:47:09 UTC 2015</div>
+ <div class="text"> </div>
+ <div class="data" data-tag="version" data-xpath="/top/version">1.2.3</div>
+</div>
+<div class="line">
+ <div class="data" data-tag="program" data-xpath="/top/xo_emit_warn_hcv/__warning/program">gt_01.test</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="text">Nableuay otay </div>
+ <div class="data" data-tag="verb" data-xpath="/top/xo_emit_warn_hcv/__warning/verb">ectulatobjay</div>
+ <div class="text"> orwardfay elocipingvay</div>
+ <div class="text">: </div>
+ <div class="data" data-tag="error" data-xpath="/top/xo_emit_warn_hcv/__warning/error">Ermissionpay eniedday</div>
+</div>
+<div class="line">
+ <div class="data" data-tag="program" data-xpath="/top/xo_emit_warn_hcv/__warning/program">gt_01.test</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="style" data-xpath="/top/xo_emit_warn_hcv/__warning/style">automaticyay</div>
+ <div class="text"> ynchronizationsay ofyay </div>
+ <div class="data" data-tag="type" data-xpath="/top/xo_emit_warn_hcv/__warning/type">ardinalyay</div>
+ <div class="text"> </div>
+ <div class="data" data-tag="target" data-xpath="/top/xo_emit_warn_hcv/__warning/target">ammetersgray</div>
+ <div class="text"> ailedfay</div>
+ <div class="text">: </div>
+ <div class="data" data-tag="error" data-xpath="/top/xo_emit_warn_hcv/__warning/error">Ermissionpay eniedday</div>
+</div>
+<div class="line">
+ <div class="label">ydrocoptichay arzlevanesmay</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="marzlevanes" data-xpath="/top/marzlevanes">6</div>
+</div>
+<div class="line">
+ <div class="text">Dude, </div>
+ <div class="label">Indingsway</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="windings" data-xpath="/top/windings">otuslay-oyay-eltayay</div>
+</div>
diff --git a/contrib/libxo/tests/gettext/saved/gt_01.HP.err b/contrib/libxo/tests/gettext/saved/gt_01.HP.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/contrib/libxo/tests/gettext/saved/gt_01.HP.err
diff --git a/contrib/libxo/tests/gettext/saved/gt_01.HP.out b/contrib/libxo/tests/gettext/saved/gt_01.HP.out
new file mode 100644
index 0000000..573d7b3
--- /dev/null
+++ b/contrib/libxo/tests/gettext/saved/gt_01.HP.out
@@ -0,0 +1,139 @@
+<div class="line">
+ <div class="text">Ouryay </div>
+ <div class="data" data-tag="noun">ordsway</div>
+ <div class="text"> </div>
+ <div class="data" data-tag="adjective">amingflay</div>
+ <div class="text"> isyay </div>
+ <div class="data" data-tag="owner">ymay</div>
+ <div class="data" data-tag="target">ouchcay</div>
+ <div class="text"> bubbly-bubbly </div>
+ <div class="data" data-tag="verb">urningbay</div>
+</div>
+<div class="line">
+ <div class="text">Ethay </div>
+ <div class="data" data-tag="noun">ordsway</div>
+ <div class="text"> asway '</div>
+ <div class="data" data-tag="owner">ymay</div>
+ <div class="data" data-tag="adjective">amingflay</div>
+ <div class="data" data-tag="target">ouchcay</div>
+ <div class="text">' </div>
+ <div class="data" data-tag="verb">urningbay</div>
+</div>
+<div class="line">
+ <div class="data" data-tag="bytes">0</div>
+ <div class="padding"> </div>
+ <div class="note">yebay</div>
+</div>
+<div class="line">
+ <div class="data" data-tag="bytes">1</div>
+ <div class="padding"> </div>
+ <div class="note">yesbay</div>
+</div>
+<div class="line">
+ <div class="data" data-tag="bytes">2</div>
+ <div class="padding"> </div>
+ <div class="note">yezbay</div>
+</div>
+<div class="line">
+ <div class="data" data-tag="bytes">3</div>
+ <div class="padding"> </div>
+ <div class="note">yezbay</div>
+</div>
+<div class="line">
+ <div class="data" data-tag="bytes">4</div>
+ <div class="padding"> </div>
+ <div class="note">yezbay</div>
+</div>
+<div class="line">
+ <div class="label">otaltay</div>
+ <div class="text"> </div>
+ <div class="data" data-tag="total">1234</div>
+</div>
+<div class="line">
+ <div class="text">Eceivedray </div>
+ <div class="data" data-tag="received">1234</div>
+ <div class="text"> </div>
+ <div class="note">ldb2</div>
+ <div class="text"> omfray </div>
+ <div class="data" data-tag="from">foop</div>
+ <div class="text">#</div>
+ <div class="data" data-tag="port">4321</div>
+ <div class="text"> inyay </div>
+ <div class="data" data-tag="time">32</div>
+ <div class="text"> msyay</div>
+</div>
+<div class="line">
+ <div class="text">Received </div>
+ <div class="data" data-tag="received">1234</div>
+ <div class="text"> </div>
+ <div class="note">yezbay</div>
+ <div class="text"> from </div>
+ <div class="data" data-tag="from">foop</div>
+ <div class="text">#</div>
+ <div class="data" data-tag="port">4321</div>
+ <div class="text"> in </div>
+ <div class="data" data-tag="time">32</div>
+ <div class="text"> ms</div>
+</div>
+<div class="line">
+ <div class="text">Eceivedray </div>
+ <div class="data" data-tag="received">1234</div>
+ <div class="text"> </div>
+ <div class="note">ldb2</div>
+ <div class="text"> omfray </div>
+ <div class="data" data-tag="from">foop</div>
+ <div class="text">#</div>
+ <div class="data" data-tag="port">4321</div>
+ <div class="text"> inyay </div>
+ <div class="data" data-tag="time">32</div>
+ <div class="text"> msyay</div>
+</div>
+<div class="line">
+ <div class="text">Onlyay </div>
+ <div class="data" data-tag="marzlevanes">3</div>
+ <div class="text"> </div>
+ <div class="note">arzlevanezmay</div>
+ <div class="text"> areyay unctioningfay orrectlycay</div>
+</div>
+<div class="line">
+ <div class="text">Ersionvay </div>
+ <div class="data" data-tag="date">Tue Jun 23 18:47:09 UTC 2015</div>
+ <div class="text"> </div>
+ <div class="data" data-tag="version">1.2.3</div>
+</div>
+<div class="line">
+ <div class="data" data-tag="program">gt_01.test</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="text">Nableuay otay </div>
+ <div class="data" data-tag="verb">ectulatobjay</div>
+ <div class="text"> orwardfay elocipingvay</div>
+ <div class="text">: </div>
+ <div class="data" data-tag="error">Ermissionpay eniedday</div>
+</div>
+<div class="line">
+ <div class="data" data-tag="program">gt_01.test</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="style">automaticyay</div>
+ <div class="text"> ynchronizationsay ofyay </div>
+ <div class="data" data-tag="type">ardinalyay</div>
+ <div class="text"> </div>
+ <div class="data" data-tag="target">ammetersgray</div>
+ <div class="text"> ailedfay</div>
+ <div class="text">: </div>
+ <div class="data" data-tag="error">Ermissionpay eniedday</div>
+</div>
+<div class="line">
+ <div class="label">ydrocoptichay arzlevanesmay</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="marzlevanes">6</div>
+</div>
+<div class="line">
+ <div class="text">Dude, </div>
+ <div class="label">Indingsway</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="windings">otuslay-oyay-eltayay</div>
+</div>
diff --git a/contrib/libxo/tests/gettext/saved/gt_01.J.err b/contrib/libxo/tests/gettext/saved/gt_01.J.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/contrib/libxo/tests/gettext/saved/gt_01.J.err
diff --git a/contrib/libxo/tests/gettext/saved/gt_01.J.out b/contrib/libxo/tests/gettext/saved/gt_01.J.out
new file mode 100644
index 0000000..86527d1
--- /dev/null
+++ b/contrib/libxo/tests/gettext/saved/gt_01.J.out
@@ -0,0 +1,2 @@
+{"top": {"adjective":"amingflay","noun":"ordsway","verb":"urningbay","owner":"ymay","target":"ouchcay","adjective":"amingflay","noun":"ordsway","verb":"urningbay","owner":"ymay","target":"ouchcay", "bytes": [0,1,2,3,4],"total":1234,"received":1234,"from":"foop","port":4321,"time":32,"received":1234,"from":"foop","port":4321,"time":32,"received":1234,"from":"foop","port":4321,"time":32,"marzlevanes":3,"version":"1.2.3","date":"Tue Jun 23 18:47:09 UTC 2015", "__warning": {"program":"gt_01.test","message":"Nableuay otay ectulatobjay orwardfay elocipingvay","verb":ectulatobjay,"error":"Ermissionpay eniedday"}, "__warning": {"program":"gt_01.test","message":"automaticyay ynchronizationsay ofyay ardinalyay ammetersgray ailedfay","style":automaticyay,"type":"ardinalyay","target":"ammetersgray","error":"Ermissionpay eniedday"},"marzlevanes":6,"windings":"otuslay-oyay-eltayay"}
+}
diff --git a/contrib/libxo/tests/gettext/saved/gt_01.JP.err b/contrib/libxo/tests/gettext/saved/gt_01.JP.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/contrib/libxo/tests/gettext/saved/gt_01.JP.err
diff --git a/contrib/libxo/tests/gettext/saved/gt_01.JP.out b/contrib/libxo/tests/gettext/saved/gt_01.JP.out
new file mode 100644
index 0000000..537ab21
--- /dev/null
+++ b/contrib/libxo/tests/gettext/saved/gt_01.JP.out
@@ -0,0 +1,53 @@
+{
+ "top": {
+ "adjective": "amingflay",
+ "noun": "ordsway",
+ "verb": "urningbay",
+ "owner": "ymay",
+ "target": "ouchcay",
+ "adjective": "amingflay",
+ "noun": "ordsway",
+ "verb": "urningbay",
+ "owner": "ymay",
+ "target": "ouchcay",
+ "bytes": [
+ 0,
+ 1,
+ 2,
+ 3,
+ 4
+ ],
+ "total": 1234,
+ "received": 1234,
+ "from": "foop",
+ "port": 4321,
+ "time": 32,
+ "received": 1234,
+ "from": "foop",
+ "port": 4321,
+ "time": 32,
+ "received": 1234,
+ "from": "foop",
+ "port": 4321,
+ "time": 32,
+ "marzlevanes": 3,
+ "version": "1.2.3",
+ "date": "Tue Jun 23 18:47:09 UTC 2015",
+ "__warning": {
+ "program": "gt_01.test",
+ "message": "Nableuay otay ectulatobjay orwardfay elocipingvay",
+ "verb": ectulatobjay,
+ "error": "Ermissionpay eniedday"
+ },
+ "__warning": {
+ "program": "gt_01.test",
+ "message": "automaticyay ynchronizationsay ofyay ardinalyay ammetersgray ailedfay",
+ "style": automaticyay,
+ "type": "ardinalyay",
+ "target": "ammetersgray",
+ "error": "Ermissionpay eniedday"
+ },
+ "marzlevanes": 6,
+ "windings": "otuslay-oyay-eltayay"
+ }
+}
diff --git a/contrib/libxo/tests/gettext/saved/gt_01.T.err b/contrib/libxo/tests/gettext/saved/gt_01.T.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/contrib/libxo/tests/gettext/saved/gt_01.T.err
diff --git a/contrib/libxo/tests/gettext/saved/gt_01.T.out b/contrib/libxo/tests/gettext/saved/gt_01.T.out
new file mode 100644
index 0000000..440d9a5
--- /dev/null
+++ b/contrib/libxo/tests/gettext/saved/gt_01.T.out
@@ -0,0 +1,17 @@
+Ouryay ordsway amingflay isyay ymayouchcay bubbly-bubbly urningbay
+Ethay ordsway asway 'ymayamingflayouchcay' urningbay
+0 yebay
+1 yesbay
+2 yezbay
+3 yezbay
+4 yezbay
+otaltay 1234
+Eceivedray 1234 ldb2 omfray foop#4321 inyay 32 msyay
+Received 1234 yezbay from foop#4321 in 32 ms
+Eceivedray 1234 ldb2 omfray foop#4321 inyay 32 msyay
+Onlyay 3 arzlevanezmay areyay unctioningfay orrectlycay
+Ersionvay Tue Jun 23 18:47:09 UTC 2015 1.2.3
+gt_01.test: Nableuay otay ectulatobjay orwardfay elocipingvay: Ermissionpay eniedday
+gt_01.test: automaticyay ynchronizationsay ofyay ardinalyay ammetersgray ailedfay: Ermissionpay eniedday
+ydrocoptichay arzlevanesmay: 6
+Dude, Indingsway: otuslay-oyay-eltayay
diff --git a/contrib/libxo/tests/gettext/saved/gt_01.X.err b/contrib/libxo/tests/gettext/saved/gt_01.X.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/contrib/libxo/tests/gettext/saved/gt_01.X.err
diff --git a/contrib/libxo/tests/gettext/saved/gt_01.X.out b/contrib/libxo/tests/gettext/saved/gt_01.X.out
new file mode 100644
index 0000000..4eb4622
--- /dev/null
+++ b/contrib/libxo/tests/gettext/saved/gt_01.X.out
@@ -0,0 +1 @@
+<top><adjective>amingflay</adjective><noun>ordsway</noun><verb>urningbay</verb><owner>ymay</owner><target>ouchcay</target><adjective>amingflay</adjective><noun>ordsway</noun><verb>urningbay</verb><owner>ymay</owner><target>ouchcay</target><bytes>0</bytes><bytes>1</bytes><bytes>2</bytes><bytes>3</bytes><bytes>4</bytes><total>1234</total><received>1234</received><from>foop</from><port>4321</port><time>32</time><received>1234</received><from>foop</from><port>4321</port><time>32</time><received>1234</received><from>foop</from><port>4321</port><time>32</time><marzlevanes>3</marzlevanes><version>1.2.3</version><date>Tue Jun 23 18:47:09 UTC 2015</date><__warning><program>gt_01.test</program><message>Nableuay otay ectulatobjay orwardfay elocipingvay</message><verb>ectulatobjay</verb><error>Ermissionpay eniedday</error></__warning><__warning><program>gt_01.test</program><message>automaticyay ynchronizationsay ofyay ardinalyay ammetersgray ailedfay</message><style>automaticyay</style><type>ardinalyay</type><target>ammetersgray</target><error>Ermissionpay eniedday</error></__warning><marzlevanes>6</marzlevanes><windings>otuslay-oyay-eltayay</windings></top> \ No newline at end of file
diff --git a/contrib/libxo/tests/gettext/saved/gt_01.XP.err b/contrib/libxo/tests/gettext/saved/gt_01.XP.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/contrib/libxo/tests/gettext/saved/gt_01.XP.err
diff --git a/contrib/libxo/tests/gettext/saved/gt_01.XP.out b/contrib/libxo/tests/gettext/saved/gt_01.XP.out
new file mode 100644
index 0000000..eac4284
--- /dev/null
+++ b/contrib/libxo/tests/gettext/saved/gt_01.XP.out
@@ -0,0 +1,49 @@
+<top>
+ <adjective>amingflay</adjective>
+ <noun>ordsway</noun>
+ <verb>urningbay</verb>
+ <owner>ymay</owner>
+ <target>ouchcay</target>
+ <adjective>amingflay</adjective>
+ <noun>ordsway</noun>
+ <verb>urningbay</verb>
+ <owner>ymay</owner>
+ <target>ouchcay</target>
+ <bytes>0</bytes>
+ <bytes>1</bytes>
+ <bytes>2</bytes>
+ <bytes>3</bytes>
+ <bytes>4</bytes>
+ <total>1234</total>
+ <received>1234</received>
+ <from>foop</from>
+ <port>4321</port>
+ <time>32</time>
+ <received>1234</received>
+ <from>foop</from>
+ <port>4321</port>
+ <time>32</time>
+ <received>1234</received>
+ <from>foop</from>
+ <port>4321</port>
+ <time>32</time>
+ <marzlevanes>3</marzlevanes>
+ <version>1.2.3</version>
+ <date>Tue Jun 23 18:47:09 UTC 2015</date>
+ <__warning>
+ <program>gt_01.test</program>
+ <message>Nableuay otay ectulatobjay orwardfay elocipingvay</message>
+ <verb>ectulatobjay</verb>
+ <error>Ermissionpay eniedday</error>
+ </__warning>
+ <__warning>
+ <program>gt_01.test</program>
+ <message>automaticyay ynchronizationsay ofyay ardinalyay ammetersgray ailedfay</message>
+ <style>automaticyay</style>
+ <type>ardinalyay</type>
+ <target>ammetersgray</target>
+ <error>Ermissionpay eniedday</error>
+ </__warning>
+ <marzlevanes>6</marzlevanes>
+ <windings>otuslay-oyay-eltayay</windings>
+</top>
diff --git a/contrib/libxo/tests/gettext/strerror.pot b/contrib/libxo/tests/gettext/strerror.pot
new file mode 100644
index 0000000..c63e6bd
--- /dev/null
+++ b/contrib/libxo/tests/gettext/strerror.pot
@@ -0,0 +1,468 @@
+#
+# Copyright (c) 1982, 1985, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 4. Neither the name of the University nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# List of system errors ala strerror() and sys_errlist
+# Phil Shafer <phil@juniper.net>, 2015.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2015-07-01 16:15-0400\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=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "Received {:received} {N:byte,bytes} from {:from}#{:port} in {:time} ms\n"
+msgstr ""
+
+# 0 - ENOERROR
+msgid "No error: 0"
+msgstr ""
+
+# 1 - EPERM
+msgid "Operation not permitted"
+msgstr ""
+
+# 2 - ENOENT
+msgid "No such file or directory"
+msgstr ""
+
+# 3 - ESRCH
+msgid "No such process"
+msgstr ""
+
+# 4 - EINTR
+msgid "Interrupted system call"
+msgstr ""
+
+# 5 - EIO
+msgid "Input/output error"
+msgstr ""
+
+# 6 - ENXIO
+msgid "Device not configured"
+msgstr ""
+
+# 7 - E2BIG
+msgid "Argument list too long"
+msgstr ""
+
+# 8 - ENOEXEC
+msgid "Exec format error"
+msgstr ""
+
+# 9 - EBADF
+msgid "Bad file descriptor"
+msgstr ""
+
+# 10 - ECHILD
+msgid "No child processes"
+msgstr ""
+
+# 11 - EDEADLK
+msgid "Resource deadlock avoided"
+msgstr ""
+
+# 12 - ENOMEM
+msgid "Cannot allocate memory"
+msgstr ""
+
+# 13 - EACCES
+msgid "Permission denied"
+msgstr ""
+
+# 14 - EFAULT
+msgid "Bad address"
+msgstr ""
+
+# 15 - ENOTBLK
+msgid "Block device required"
+msgstr ""
+
+# 16 - EBUSY
+msgid "Device busy"
+msgstr ""
+
+# 17 - EEXIST
+msgid "File exists"
+msgstr ""
+
+# 18 - EXDEV
+msgid "Cross-device link"
+msgstr ""
+
+# 19 - ENODEV
+msgid "Operation not supported by device"
+msgstr ""
+
+# 20 - ENOTDIR
+msgid "Not a directory"
+msgstr ""
+
+# 21 - EISDIR
+msgid "Is a directory"
+msgstr ""
+
+# 22 - EINVAL
+msgid "Invalid argument"
+msgstr ""
+
+# 23 - ENFILE
+msgid "Too many open files in system"
+msgstr ""
+
+# 24 - EMFILE
+msgid "Too many open files"
+msgstr ""
+
+# 25 - ENOTTY
+msgid "Inappropriate ioctl for device"
+msgstr ""
+
+# 26 - ETXTBSY
+msgid "Text file busy"
+msgstr ""
+
+# 27 - EFBIG
+msgid "File too large"
+msgstr ""
+
+# 28 - ENOSPC
+msgid "No space left on device"
+msgstr ""
+
+# 29 - ESPIPE
+msgid "Illegal seek"
+msgstr ""
+
+# 30 - EROFS
+msgid "Read-only file system"
+msgstr ""
+
+# 31 - EMLINK
+msgid "Too many links"
+msgstr ""
+
+# 32 - EPIPE
+msgid "Broken pipe"
+msgstr ""
+
+#
+# math software
+#
+
+# 33 - EDOM
+msgid "Numerical argument out of domain"
+msgstr ""
+
+# 34 - ERANGE
+msgid "Result too large"
+msgstr ""
+
+#
+# non-blocking and interrupt i/o
+#
+
+# 35 - EAGAIN
+# 35 - EWOULDBLOCK
+msgid "Resource temporarily unavailable"
+msgstr ""
+
+# 36 - EINPROGRESS
+msgid "Operation now in progress"
+msgstr ""
+
+# 37 - EALREADY
+msgid "Operation already in progress"
+msgstr ""
+
+
+#
+# ipc/network software -- argument errors
+#
+
+# 38 - ENOTSOCK
+msgid "Socket operation on non-socket"
+msgstr ""
+
+# 39 - EDESTADDRREQ
+msgid "Destination address required"
+msgstr ""
+
+# 40 - EMSGSIZE
+msgid "Message too long"
+msgstr ""
+
+# 41 - EPROTOTYPE
+msgid "Protocol wrong type for socket"
+msgstr ""
+
+# 42 - ENOPROTOOPT
+msgid "Protocol not available"
+msgstr ""
+
+# 43 - EPROTONOSUPPORT
+msgid "Protocol not supported"
+msgstr ""
+
+# 44 - ESOCKTNOSUPPORT
+msgid "Socket type not supported"
+msgstr ""
+
+# 45 - EOPNOTSUPP
+msgid "Operation not supported"
+msgstr ""
+
+# 46 - EPFNOSUPPORT
+msgid "Protocol family not supported"
+msgstr ""
+
+# 47 - EAFNOSUPPORT
+msgid "Address family not supported by protocol family"
+msgstr ""
+
+# 48 - EADDRINUSE
+msgid "Address already in use"
+msgstr ""
+
+# 49 - EADDRNOTAVAIL
+msgid "Can't assign requested address"
+msgstr ""
+
+#
+# ipc/network software -- operational errors
+#
+
+# 50 - ENETDOWN
+msgid "Network is down"
+msgstr ""
+
+# 51 - ENETUNREACH
+msgid "Network is unreachable"
+msgstr ""
+
+# 52 - ENETRESET
+msgid "Network dropped connection on reset"
+msgstr ""
+
+# 53 - ECONNABORTED
+msgid "Software caused connection abort"
+msgstr ""
+
+# 54 - ECONNRESET
+msgid "Connection reset by peer"
+msgstr ""
+
+# 55 - ENOBUFS
+msgid "No buffer space available"
+msgstr ""
+
+# 56 - EISCONN
+msgid "Socket is already connected"
+msgstr ""
+
+# 57 - ENOTCONN
+msgid "Socket is not connected"
+msgstr ""
+
+# 58 - ESHUTDOWN
+msgid "Can't send after socket shutdown"
+msgstr ""
+
+# 59 - ETOOMANYREFS
+msgid "Too many references: can't splice"
+msgstr ""
+
+# 60 - ETIMEDOUT
+msgid "Operation timed out"
+msgstr ""
+
+# 61 - ECONNREFUSED
+msgid "Connection refused"
+msgstr ""
+
+# 62 - ELOOP
+msgid "Too many levels of symbolic links"
+msgstr ""
+
+# 63 - ENAMETOOLONG
+msgid "File name too long"
+msgstr ""
+
+#
+# should be rearranged
+#
+
+# 64 - EHOSTDOWN
+msgid "Host is down"
+msgstr ""
+
+# 65 - EHOSTUNREACH
+msgid "No route to host"
+msgstr ""
+
+# 66 - ENOTEMPTY
+msgid "Directory not empty"
+msgstr ""
+
+#
+# quotas & mush
+#
+
+# 67 - EPROCLIM
+msgid "Too many processes"
+msgstr ""
+
+# 68 - EUSERS
+msgid "Too many users"
+msgstr ""
+
+# 69 - EDQUOT
+msgid "Disc quota exceeded"
+msgstr ""
+
+#
+# Network File System
+#
+
+# 70 - ESTALE
+msgid "Stale NFS file handle"
+msgstr ""
+
+# 71 - EREMOTE
+msgid "Too many levels of remote in path"
+msgstr ""
+
+# 72 - EBADRPC
+msgid "RPC struct is bad"
+msgstr ""
+
+# 73 - ERPCMISMATCH
+msgid "RPC version wrong"
+msgstr ""
+
+# 74 - EPROGUNAVAIL
+msgid "RPC prog. not avail"
+msgstr ""
+
+# 75 - EPROGMISMATCH
+msgid "Program version wrong"
+msgstr ""
+
+# 76 - EPROCUNAVAIL
+msgid "Bad procedure for program"
+msgstr ""
+
+# 77 - ENOLCK
+msgid "No locks available"
+msgstr ""
+
+# 78 - ENOSYS
+msgid "Function not implemented"
+msgstr ""
+
+# 79 - EFTYPE
+msgid "Inappropriate file type or format"
+msgstr ""
+
+# 80 - EAUTH
+msgid "Authentication error"
+msgstr ""
+
+# 81 - ENEEDAUTH
+msgid "Need authenticator"
+msgstr ""
+
+# 82 - EIDRM
+msgid "Identifier removed"
+msgstr ""
+
+# 83 - ENOMSG
+msgid "No message of desired type"
+msgstr ""
+
+# 84 - EOVERFLOW
+msgid "Value too large to be stored in data type"
+msgstr ""
+
+# 85 - ECANCELED
+msgid "Operation canceled"
+msgstr ""
+
+# 86 - EILSEQ
+msgid "Illegal byte sequence"
+msgstr ""
+
+# 87 - ENOATTR
+msgid "Attribute not found"
+msgstr ""
+
+#
+# General
+#
+
+# 88 - EDOOFUS
+msgid "Programming error"
+msgstr ""
+
+# 89 - EBADMSG
+msgid "Bad message"
+msgstr ""
+
+# 90 - EMULTIHOP
+msgid "Multihop attempted"
+msgstr ""
+
+# 91 - ENOLINK
+msgid "Link has been severed"
+msgstr ""
+
+# 92 - EPROTO
+msgid "Protocol error"
+msgstr ""
+
+# 93 - ENOTCAPABLE
+msgid "Capabilities insufficient"
+msgstr ""
+
+# 94 - ECAPMODE
+msgid "Not permitted in capability mode"
+msgstr ""
+
+# 95 - ENOTRECOVERABLE
+msgid "State not recoverable"
+msgstr ""
+
+# 96 - EOWNERDEAD
+msgid "Previous owner died"
+msgstr ""
OpenPOWER on IntegriCloud