← Back to team overview

widelands-dev team mailing list archive

[Merge] lp:~widelands-dev/widelands/appdata_tweaks into lp:widelands

 

GunChleoc has proposed merging lp:~widelands-dev/widelands/appdata_tweaks into lp:widelands.

Commit message:
Add more information to appdata.xml and widelands.desktop:

- List languages and textdomains in appdata.xml
- Add name translations to desktop file and appdata.xml
- Add link for translations to appdata.xml

Requested reviews:
  Widelands Developers (widelands-dev)

For more details, see:
https://code.launchpad.net/~widelands-dev/widelands/appdata_tweaks/+merge/353787

r8797. fixed the software center, now let's see if we can add some more goodies.
-- 
Your team Widelands Developers is requested to review the proposed merge of lp:~widelands-dev/widelands/appdata_tweaks into lp:widelands.
=== modified file 'debian/org.widelands.widelands.desktop.stub'
--- debian/org.widelands.widelands.desktop.stub	2018-08-26 10:23:17 +0000
+++ debian/org.widelands.widelands.desktop.stub	2018-08-27 13:43:42 +0000
@@ -1,7 +1,6 @@
 [Desktop Entry]
 Version=1.0
 Type=Application
-Name=Widelands
 GENERIC_NAME_COMMENT_HOOK
 Icon=widelands
 TryExec=widelands

=== modified file 'debian/translations/appdata.json'
--- debian/translations/appdata.json	2016-05-19 15:59:48 +0000
+++ debian/translations/appdata.json	2018-08-27 13:43:42 +0000
@@ -1,4 +1,5 @@
 {
+	"name": "Widelands",
 	"category": "Strategy Game",
 	"tagline": "A real-time build-up strategy game",
 	"description":[

=== modified file 'debian/translations/gd.json'
--- debian/translations/gd.json	2016-11-12 07:18:14 +0000
+++ debian/translations/gd.json	2018-08-27 13:43:42 +0000
@@ -1,4 +1,5 @@
 {
+	"name": "Widelands",
 	"category": "Geama ro-innleachd",
 	"tagline": "Geama ro-innleachd togail fìor-ama",
 	"description":[

=== modified file 'debian/widelands.appdata.xml'
--- debian/widelands.appdata.xml	2018-08-26 10:54:15 +0000
+++ debian/widelands.appdata.xml	2018-08-27 13:43:42 +0000
@@ -4,8 +4,8 @@
   <id>org.widelands.widelands.desktop</id>
   <metadata_license>CC0-1.0</metadata_license>
   <project_license>GPL-2.0</project_license>
+  <icon type="stock">widelands</icon>
   <name>Widelands</name>
-  <icon type="stock">widelands</icon>
   <summary>A real-time build-up strategy game</summary>
   <summary xml:lang="ar">لعبة بناء إستراتيجية في الوقت الحقيقي</summary>
   <summary xml:lang="bg">Стратегическа игра за изграждане на цивилизация в реално време</summary>
@@ -259,8 +259,6 @@
       <caption>Map Selection Screen</caption>
     </screenshot>
   </screenshots>
-  <url type="homepage">https://wl.widelands.org/</url>
-  <update_contact>widelands-dev_at_lists.launchpad.net</update_contact>
   <releases>
     <release date="2016-11-11" version="Build 19"/>
     <release date="2014-02-22" version="Build 18"/>
@@ -283,10 +281,103 @@
     <release date="2002-09-03" version="Build 2"/>
     <release date="2002-08-27" version="Build 1"/>
   </releases>
+  <languages>
+    <lang>ar</lang>
+    <lang>ast</lang>
+    <lang>bg</lang>
+    <lang>br</lang>
+    <lang>ca</lang>
+    <lang>cs</lang>
+    <lang>da</lang>
+    <lang>de</lang>
+    <lang>el</lang>
+    <lang>en_CA</lang>
+    <lang>en_GB</lang>
+    <lang>en_US</lang>
+    <lang>eo</lang>
+    <lang>es</lang>
+    <lang>et</lang>
+    <lang>eu</lang>
+    <lang>fa</lang>
+    <lang>fi</lang>
+    <lang>fr</lang>
+    <lang>fy</lang>
+    <lang>ga</lang>
+    <lang>gd</lang>
+    <lang>gl</lang>
+    <lang>he</lang>
+    <lang>hi</lang>
+    <lang>hr</lang>
+    <lang>hu</lang>
+    <lang>ia</lang>
+    <lang>id</lang>
+    <lang>ig</lang>
+    <lang>it</lang>
+    <lang>ja</lang>
+    <lang>jv</lang>
+    <lang>ka</lang>
+    <lang>ko</lang>
+    <lang>krl</lang>
+    <lang>la</lang>
+    <lang>lt</lang>
+    <lang>mr</lang>
+    <lang>ms</lang>
+    <lang>my</lang>
+    <lang>nb</lang>
+    <lang>nds</lang>
+    <lang>nl</lang>
+    <lang>nn</lang>
+    <lang>oc</lang>
+    <lang>pl</lang>
+    <lang>pt</lang>
+    <lang>pt_BR</lang>
+    <lang>ro</lang>
+    <lang>ru</lang>
+    <lang>rw</lang>
+    <lang>si</lang>
+    <lang>sk</lang>
+    <lang>sl</lang>
+    <lang>sr</lang>
+    <lang>sv</lang>
+    <lang>tr</lang>
+    <lang>uk</lang>
+    <lang>vi</lang>
+    <lang>zh_CN</lang>
+    <lang>zh_TW</lang>
+  </languages>
+  <translation type="gettext">win_conditions</translation>
+  <translation type="gettext">scenario_dummy.wmf</translation>
+  <translation type="gettext">mp_scenario_island_hopping.wmf</translation>
+  <translation type="gettext">scenario_bar01.wmf</translation>
+  <translation type="gettext">maps</translation>
+  <translation type="gettext">scenario_emp03.wmf</translation>
+  <translation type="gettext">widelands</translation>
+  <translation type="gettext">scenario_tutorial03_seafaring.wmf</translation>
+  <translation type="gettext">tribes</translation>
+  <translation type="gettext">scenario_emp04.wmf</translation>
+  <translation type="gettext">scenario_emp02.wmf</translation>
+  <translation type="gettext">texts</translation>
+  <translation type="gettext">scenario_tutorial01_basic_control.wmf</translation>
+  <translation type="gettext">scenario_fri02.wmf</translation>
+  <translation type="gettext">scenario_tutorial04_economy.wmf</translation>
+  <translation type="gettext">tribes_encyclopedia</translation>
+  <translation type="gettext">scenario_bar02.wmf</translation>
+  <translation type="gettext">world</translation>
+  <translation type="gettext">scenario_emp01.wmf</translation>
+  <translation type="gettext">scenario_atl01.wmf</translation>
+  <translation type="gettext">widelands_console</translation>
+  <translation type="gettext">scenario_fri01.wmf</translation>
+  <translation type="gettext">widelands_editor</translation>
+  <translation type="gettext">scenario_tutorial02_warfare.wmf</translation>
+  <translation type="gettext">mp_scenario_smugglers.wmf</translation>
+  <translation type="gettext">map_the_green_plateau.wmf</translation>
+  <url type="homepage">https://wl.widelands.org/</url>
   <url type="bugtracker">https://bugs.launchpad.net/widelands</url>
   <url type="donation">https://wl.widelands.org/wiki/The%20Widelands%20Project/</url>
   <url type="help">https://wl.widelands.org/wiki/Game%20Manual/</url>
+  <url type="translate">https://wl.widelands.org/wiki/TranslatingWidelands/</url>
   <developer_name>The Widelands Development Team</developer_name>
+  <update_contact>widelands-dev_at_lists.launchpad.net</update_contact>
   <content_rating type="oars-1.0">
     <content_attribute id="violence-cartoon">moderate</content_attribute>
     <content_attribute id="violence-fantasy">none</content_attribute>

=== modified file 'debian/widelands.appdata.xml.stub'
--- debian/widelands.appdata.xml.stub	2018-08-26 10:54:15 +0000
+++ debian/widelands.appdata.xml.stub	2018-08-27 13:43:42 +0000
@@ -4,7 +4,6 @@
   <id>org.widelands.widelands.desktop</id>
   <metadata_license>CC0-1.0</metadata_license>
   <project_license>GPL-2.0</project_license>
-  <name>Widelands</name>
   <icon type="stock">widelands</icon>
   SUMMARY_DESCRIPTION_HOOK
   <screenshots>
@@ -29,8 +28,6 @@
       <caption>Map Selection Screen</caption>
     </screenshot>
   </screenshots>
-  <url type="homepage">https://wl.widelands.org/</url>
-  <update_contact>widelands-dev_at_lists.launchpad.net</update_contact>
   <releases>
     <release date="2016-11-11" version="Build 19"/>
     <release date="2014-02-22" version="Build 18"/>
@@ -53,10 +50,14 @@
     <release date="2002-09-03" version="Build 2"/>
     <release date="2002-08-27" version="Build 1"/>
   </releases>
+   LANGUAGES_HOOK
+  <url type="homepage">https://wl.widelands.org/</url>
   <url type="bugtracker">https://bugs.launchpad.net/widelands</url>
   <url type="donation">https://wl.widelands.org/wiki/The%20Widelands%20Project/</url>
   <url type="help">https://wl.widelands.org/wiki/Game%20Manual/</url>
+  <url type="translate">https://wl.widelands.org/wiki/TranslatingWidelands/</url>
   <developer_name>The Widelands Development Team</developer_name>
+  <update_contact>widelands-dev_at_lists.launchpad.net</update_contact>
   <content_rating type="oars-1.0">
     <content_attribute id="violence-cartoon">moderate</content_attribute>
     <content_attribute id="violence-fantasy">none</content_attribute>

=== modified file 'utils/update_appdata.py'
--- utils/update_appdata.py	2018-08-10 08:17:04 +0000
+++ utils/update_appdata.py	2018-08-27 13:43:42 +0000
@@ -12,6 +12,8 @@
 # ../debian/widelands.appdata.xml.stub
 # That file contains a SUMMARY_DESCRIPTION_HOOK where the translatable information
 # is inserted.
+# A language list and textdomain info is inserted into LANGUAGES_HOOK
+#
 # The output is written to ../debian/widelands.appdata.xml
 #
 # All non-translatable content for ../debian/org.widelands.widelands.desktop is taken from
@@ -52,18 +54,31 @@
     print('Error: File ' + english_source_filename + ' not found.')
     sys.exit(1)
 
+print('- Reading textdomains:')
+
+textdomain_path = os.path.normpath(
+    base_path + '/po')
+textdomains = []
+textdomain_path_contents = os.listdir(textdomain_path)
+for textdomain in textdomain_path_contents:
+    if os.path.isdir(os.path.normpath(textdomain_path + "/" + textdomain)):
+        textdomains.append(textdomain)
+
 print('- Reading source from JSON:')
 
 english_source_file = open(english_source_filename, 'r')
 english_source = json.load(english_source_file)
 
+name_en = english_source['name']
 tagline_en = english_source['tagline']
 descriptions_en = english_source['description']
 generic_name_en = english_source['category']
+desktop_name_en = english_source['name']
 
 english_source_file.close()
 
 # For appdata.xml
+names = '  <name>' + name_en + '</name>\n'
 summaries = '  <summary>' + tagline_en + '</summary>\n'
 descriptions = '  <description>\n'
 for description in descriptions_en:
@@ -72,6 +87,7 @@
     descriptions += '    </p>\n'
 
 # For .desktop
+desktop_names = 'Name=' + desktop_name_en + '\n'
 generic_names = 'GenericName=' + generic_name_en + '\n'
 comments = 'Comment=' + tagline_en + '\n'
 
@@ -79,6 +95,7 @@
 
 # Each language's translations live in a separate file, so we list the dir
 translation_files = sorted(os.listdir(translations_path), key=str.lower)
+langcodes = []
 
 for translation_filename in translation_files:
     # Only json files, and not the template file please
@@ -87,6 +104,7 @@
             translations_path + '/' + translation_filename, 'r')
         translation = json.load(translation_file)
         lang_code = translation_filename[:-5]
+        langcodes.append(lang_code)
         tagline = translation['tagline']
         if tagline != tagline_en:
             summaries += "  <summary xml:lang=\"" + lang_code + \
@@ -98,6 +116,14 @@
             # .desktop
             generic_names += 'GenericName[' + \
                 lang_code + ']=' + generic_name + '\n'
+        if translation.has_key('name'):
+            desktop_name = translation['name']
+            if desktop_name != desktop_name_en:
+                # .desktop
+                desktop_names += 'Name[' + \
+                    lang_code + ']=' + desktop_name + '\n'
+        if translation.has_key('name') and translation['name'] != name_en:  # appdata.xml
+            names += "  <name xml:lang=\"" + lang_code + "\">" + translation['name'] +'</name>\n'
         if translation['description'] != descriptions_en:  # appdata.xml
             for description in translation['description']:
                 descriptions += "    <p xml:lang=\"" + lang_code + "\">\n"
@@ -111,10 +137,17 @@
 appdata = ''
 
 for line in input_file:
-    if line.strip() != 'SUMMARY_DESCRIPTION_HOOK':
+    if line.strip() == 'SUMMARY_DESCRIPTION_HOOK':
+        appdata += names + summaries + descriptions
+    elif line.strip() == 'LANGUAGES_HOOK':
+        appdata += '  <languages>\n'
+        for langcode in langcodes:
+            appdata += '    <lang>' + langcode + '</lang>\n'
+        appdata += '  </languages>\n'
+        for textdomain in textdomains:
+            appdata += '  <translation type="gettext">' + textdomain + '</translation>\n'
+    else:
         appdata += line
-    else:
-        appdata += summaries + descriptions
 
 input_file.close()
 
@@ -131,7 +164,7 @@
     if line.strip() != 'GENERIC_NAME_COMMENT_HOOK':
         desktop += line
     else:
-        desktop += generic_names + comments
+        desktop += desktop_names + generic_names + comments
 
 input_file.close()
 


References