]> git.ipfire.org Git - thirdparty/gettext.git/commitdiff
its: Allow a specific XML namespace for .metainfo.xml / .appdata.xml files.
authorBruno Haible <bruno@clisp.org>
Fri, 11 Oct 2024 10:55:42 +0000 (12:55 +0200)
committerBruno Haible <bruno@clisp.org>
Fri, 11 Oct 2024 10:55:42 +0000 (12:55 +0200)
Reported by Claude Paroz <claude@2xlibre.net>
at <https://savannah.gnu.org/bugs/?54472>.

* gettext-tools/its/metainfo.its: Duplicate the rules for XML instances that
use the metainfo namespace.
* gettext-tools/tests/xgettext-appdata-3: New file, based on
gettext-tools/tests/xgettext-appdata-2.
* gettext-tools/tests/Makefile.am (TESTS): Add it.

gettext-tools/its/metainfo.its
gettext-tools/tests/Makefile.am
gettext-tools/tests/xgettext-appdata-3 [new file with mode: 0755]

index ec0fb7df6687488b923d8e6a0bd412265b59a8dc..3923614c52a62c04e0bc704d11f64ddbd7f1900d 100644 (file)
@@ -18,6 +18,7 @@
 -->
 <its:rules xmlns:its="http://www.w3.org/2005/11/its"
            xmlns:gt="https://www.gnu.org/s/gettext/ns/its/extensions/1.0"
+           xmlns:metainfo="https://specifications.freedesktop.org/metainfo/1.0"
            version="2.0">
 
   <!-- Documentation of the *.metainfo.xml file format:
                                /component/screenshots/screenshot/caption"
                      translate="yes"/>
 
+  <!-- A duplicate of the rules above, for files that use the metainfo
+       namespace.  Rationale:
+       https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html
+       says
+       "The XML in metainfo files does not need any XML namespace, and adding
+       one should generally be avoided. If you want to use a namespace though
+       (maybe in case you want to embed the data in other contexts), the xmlns
+       should be https://specifications.freedesktop.org/metainfo/1.0."
+  -->
+
+  <its:translateRule selector="/metainfo:component" translate="no"/>
+  <its:translateRule selector="/metainfo:component/metainfo:name |
+                               /metainfo:component/metainfo:summary |
+                               /metainfo:component/metainfo:description |
+                               /metainfo:component/metainfo:developer_name |
+                               /metainfo:component/metainfo:screenshots/metainfo:screenshot/metainfo:caption"
+                     translate="yes"/>
+
   <!-- This rule is redundant since gettext 0.23.  -->
   <gt:escapeRule selector="/component" escape="no"/>
 </its:rules>
index cad3a3d77a7972724728a072ca6df49a2e4d03da..b0afd45ce77e9858e4cd9b70453b367d51e0a676 100644 (file)
@@ -84,7 +84,7 @@ TESTS = gettext-1 gettext-2 \
        xgettext-13 xgettext-14 xgettext-15 xgettext-16 xgettext-17 \
        xgettext-18 \
        xgettext-combine-1 xgettext-combine-2 xgettext-combine-3 \
-       xgettext-appdata-1 xgettext-appdata-2 \
+       xgettext-appdata-1 xgettext-appdata-2 xgettext-appdata-3 \
        xgettext-awk-1 xgettext-awk-2 xgettext-awk-3 \
        xgettext-awk-stackovfl-1 xgettext-awk-stackovfl-2 \
        xgettext-c-2 xgettext-c-3 xgettext-c-4 xgettext-c-5 xgettext-c-6 \
diff --git a/gettext-tools/tests/xgettext-appdata-3 b/gettext-tools/tests/xgettext-appdata-3
new file mode 100755 (executable)
index 0000000..5e4b296
--- /dev/null
@@ -0,0 +1,80 @@
+#!/bin/sh
+. "${srcdir=.}/init.sh"; path_prepend_ . ../src
+
+# Test of AppData support: use of a specific namespace.
+
+cat <<\EOF > xg-gs-3-empty.appdata.xml
+<?xml version="1.0"?>
+<component type="desktop"/>
+EOF
+
+: ${XGETTEXT=xgettext}
+${XGETTEXT} -o xg-gs-3.pot xg-gs-3-empty.appdata.xml 2>/dev/null
+test $? = 0 || {
+  echo "Skipping test: xgettext was built without AppData support"
+  Exit 77
+}
+
+cat <<\EOF > xg-gs-3.appdata.xml
+<?xml version="1.0" encoding="UTF-8"?>
+<component type="desktop" xmlns="https://specifications.freedesktop.org/metainfo/1.0">
+  <id>org.gnome.Characters.desktop</id>
+  <name>GNOME Characters</name>
+  <summary>Character map application</summary>
+  <licence>CC0</licence>
+  <description>
+    <p>
+      Characters is a simple utility application to find and insert
+      unusual characters.  It allows you to quickly find the character
+      you are looking for by searching for keywords.
+    </p>
+  </description>
+  <url type="homepage">https://wiki.gnome.org/Design/Apps/CharacterMap</url>
+  <updatecontact>dueno_at_src.gnome.org</updatecontact>
+</component>
+EOF
+
+: ${XGETTEXT=xgettext}
+${XGETTEXT} --add-comments -o xg-gs-3.tmp xg-gs-3.appdata.xml || Exit 1
+func_filter_POT_Creation_Date xg-gs-3.tmp xg-gs-3.pot
+
+cat <<\EOF > xg-gs-3.ok
+# 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=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: xg-gs-3.appdata.xml:4
+msgid "GNOME Characters"
+msgstr ""
+
+#: xg-gs-3.appdata.xml:5
+msgid "Character map application"
+msgstr ""
+
+#: xg-gs-3.appdata.xml:8
+msgid ""
+"Characters is a simple utility application to find and insert unusual "
+"characters. It allows you to quickly find the character you are looking for "
+"by searching for keywords."
+msgstr ""
+EOF
+
+: ${DIFF=diff}
+${DIFF} xg-gs-3.ok xg-gs-3.pot
+result=$?
+
+exit $result