widelands-dev team mailing list archive
-
widelands-dev team
-
Mailing list archive
-
Message #14332
[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