From 02fb0c3f8bb60d88998c8a8c7d090ecc864ed04c Mon Sep 17 00:00:00 2001 From: Matthias Klumpp Date: Sat, 18 Dec 2021 04:26:46 +0100 Subject: i18n: Add support for joining XML localization via itstool --- .../com.mesonbuild.test.intlprog.metainfo.xml | 33 ++++++++++++++++++++++ test cases/frameworks/6 gettext/data3/meson.build | 33 ++++++++++++++++++++++ test cases/frameworks/6 gettext/data3/metainfo.its | 33 ++++++++++++++++++++++ test cases/frameworks/6 gettext/data3/verify.py | 13 +++++++++ test cases/frameworks/6 gettext/meson.build | 3 ++ test cases/frameworks/6 gettext/po/de.po | 4 +++ test cases/frameworks/6 gettext/po/intltest.pot | 4 +++ test cases/frameworks/6 gettext/po/meson.build | 3 +- test cases/frameworks/6 gettext/test.json | 3 +- 9 files changed, 127 insertions(+), 2 deletions(-) create mode 100644 test cases/frameworks/6 gettext/data3/com.mesonbuild.test.intlprog.metainfo.xml create mode 100644 test cases/frameworks/6 gettext/data3/meson.build create mode 100644 test cases/frameworks/6 gettext/data3/metainfo.its create mode 100755 test cases/frameworks/6 gettext/data3/verify.py (limited to 'test cases/frameworks') diff --git a/test cases/frameworks/6 gettext/data3/com.mesonbuild.test.intlprog.metainfo.xml b/test cases/frameworks/6 gettext/data3/com.mesonbuild.test.intlprog.metainfo.xml new file mode 100644 index 0000000..7fb4d1f --- /dev/null +++ b/test cases/frameworks/6 gettext/data3/com.mesonbuild.test.intlprog.metainfo.xml @@ -0,0 +1,33 @@ + + + com.mesonbuild.test.intlprog + + Test + Application + + FSFAP + FSFAP + + +

+ Test Application +

+

+ International greeting. +

+

+ This is text with embedded XML tags. Nice! +

+
+ + meson-unittest-intlprog + + + Development + Building + + + + intlprog + +
diff --git a/test cases/frameworks/6 gettext/data3/meson.build b/test cases/frameworks/6 gettext/data3/meson.build new file mode 100644 index 0000000..2be2e89 --- /dev/null +++ b/test cases/frameworks/6 gettext/data3/meson.build @@ -0,0 +1,33 @@ + +if itstool.found() + + mi_translated = i18n.itstool_join( + input: 'com.mesonbuild.test.intlprog.metainfo.xml', + output: 'com.mesonbuild.test.intlprog.metainfo.xml', + mo_targets: mo_targets, + its_files: ['metainfo.its'], + install: true, + install_dir: get_option('datadir') / 'metainfo', + ) + + # older versions of itstool have a bug where ITS rules specified on the command-line + # are not read when joining files. Since we don't install appstream in the Meson CI + # environment, the to-be-tested entry will be untranslated and the test would fail, so + # we just skip verification if the installed itstool is too old. + r = run_command(itstool, '-v', check: true) + itstool_v = r.stdout().strip().split() + if itstool_v[1].version_compare('>=2.0.6') + verify_exe = find_program('verify.py') + test('test xml translation', + verify_exe, + args: [mi_translated, + '

Dies ist Text mit eingebetteten XML Tags. Toll!

'] + ) + else + message('Skipping translation verification: Itstool too old.') + endif + +else + install_data('com.mesonbuild.test.intlprog.metainfo.xml', + install_dir: get_option('datadir') / 'metainfo') +endif diff --git a/test cases/frameworks/6 gettext/data3/metainfo.its b/test cases/frameworks/6 gettext/data3/metainfo.its new file mode 100644 index 0000000..0852a0f --- /dev/null +++ b/test cases/frameworks/6 gettext/data3/metainfo.its @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + diff --git a/test cases/frameworks/6 gettext/data3/verify.py b/test cases/frameworks/6 gettext/data3/verify.py new file mode 100755 index 0000000..aff2f2e --- /dev/null +++ b/test cases/frameworks/6 gettext/data3/verify.py @@ -0,0 +1,13 @@ +#!/usr/bin/env python3 + +import os +import sys + +assert len(sys.argv) == 3 + +fname = sys.argv[1] +check_str = sys.argv[2] + +assert os.path.isfile(fname) +with open(fname, 'r', encoding='utf-8') as f: + assert check_str in f.read() diff --git a/test cases/frameworks/6 gettext/meson.build b/test cases/frameworks/6 gettext/meson.build index 2640ab2..ce99242 100644 --- a/test cases/frameworks/6 gettext/meson.build +++ b/test cases/frameworks/6 gettext/meson.build @@ -15,10 +15,13 @@ if not intl.found() error('MESON_SKIP_TEST libintl/gettext functions not found.') endif +itstool = find_program('itstool', required: false) + i18n = import('i18n') subdir('po') subdir('src') subdir('data') subdir('data2') +subdir('data3') subdir('generated') diff --git a/test cases/frameworks/6 gettext/po/de.po b/test cases/frameworks/6 gettext/po/de.po index 8d9d6e7..1e4693b 100644 --- a/test cases/frameworks/6 gettext/po/de.po +++ b/test cases/frameworks/6 gettext/po/de.po @@ -20,3 +20,7 @@ msgstr "" #: src/intlmain.c:15 msgid "International greeting." msgstr "Internationale Gruss." + +#: data/com.mesonbuild.test.dummy.metainfo.xml:19 +msgid "This is text with embedded XML tags. Nice!" +msgstr "Dies ist Text mit eingebetteten XML Tags. Toll!" diff --git a/test cases/frameworks/6 gettext/po/intltest.pot b/test cases/frameworks/6 gettext/po/intltest.pot index 2d0a4cc..c34e7f9 100644 --- a/test cases/frameworks/6 gettext/po/intltest.pot +++ b/test cases/frameworks/6 gettext/po/intltest.pot @@ -32,3 +32,7 @@ msgstr "" #: data/test.desktop.in:5 msgid "Test Application" msgstr "" + +#: data/com.mesonbuild.test.dummy.metainfo.xml:19 +msgid "This is text with embedded XML tags. Nice!" +msgstr "" diff --git a/test cases/frameworks/6 gettext/po/meson.build b/test cases/frameworks/6 gettext/po/meson.build index 86e02f1..5510e42 100644 --- a/test cases/frameworks/6 gettext/po/meson.build +++ b/test cases/frameworks/6 gettext/po/meson.build @@ -1,3 +1,4 @@ langs = ['fi', 'de', 'ru'] -i18n.gettext('intltest', languages : langs) +gettext_targets = i18n.gettext('intltest', languages : langs) +mo_targets = gettext_targets[0] diff --git a/test cases/frameworks/6 gettext/test.json b/test cases/frameworks/6 gettext/test.json index df97430..910fc1c 100644 --- a/test cases/frameworks/6 gettext/test.json +++ b/test cases/frameworks/6 gettext/test.json @@ -11,7 +11,8 @@ {"type": "file", "file": "usr/share/applications/test3.desktop"}, {"type": "file", "file": "usr/share/applications/test4.desktop"}, {"type": "file", "file": "usr/share/applications/test5.desktop"}, - {"type": "file", "file": "usr/share/applications/test6.desktop"} + {"type": "file", "file": "usr/share/applications/test6.desktop"}, + {"type": "file", "file": "usr/share/metainfo/com.mesonbuild.test.intlprog.metainfo.xml"} ], "matrix": { "options": { -- cgit v1.1