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

Proposed by GunChleoc
Status: Merged
Merged at revision: 8798
Proposed branch: lp:~widelands-dev/widelands/appdata_tweaks
Merge into: lp:widelands
Diff against target: 307 lines (+137/-11)
6 files modified
debian/org.widelands.widelands.desktop.stub (+0/-1)
debian/translations/appdata.json (+1/-0)
debian/translations/gd.json (+1/-0)
debian/widelands.appdata.xml (+94/-3)
debian/widelands.appdata.xml.stub (+4/-3)
utils/update_appdata.py (+37/-4)
To merge this branch: bzr merge lp:~widelands-dev/widelands/appdata_tweaks
Reviewer Review Type Date Requested Status
Widelands Developers Pending
Review via email: mp+353787@code.launchpad.net

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

Description of the change

r8797. fixed the software center, now let's see if we can add some more goodies.

To post a comment you must log in.
Revision history for this message
GunChleoc (gunchleoc) wrote :

@bunnybot merge

Revision history for this message
bunnybot (widelandsofficial) wrote :

Continuous integration builds have changed state:

Travis build 3846. State: passed. Details: https://travis-ci.org/widelands/widelands/builds/421147038.
Appveyor build 3644. State: success. Details: https://ci.appveyor.com/project/widelands-dev/widelands/build/_widelands_dev_widelands_appdata_tweaks-3644.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'debian/org.widelands.widelands.desktop.stub'
2--- debian/org.widelands.widelands.desktop.stub 2018-08-26 10:23:17 +0000
3+++ debian/org.widelands.widelands.desktop.stub 2018-08-27 13:43:42 +0000
4@@ -1,7 +1,6 @@
5 [Desktop Entry]
6 Version=1.0
7 Type=Application
8-Name=Widelands
9 GENERIC_NAME_COMMENT_HOOK
10 Icon=widelands
11 TryExec=widelands
12
13=== modified file 'debian/translations/appdata.json'
14--- debian/translations/appdata.json 2016-05-19 15:59:48 +0000
15+++ debian/translations/appdata.json 2018-08-27 13:43:42 +0000
16@@ -1,4 +1,5 @@
17 {
18+ "name": "Widelands",
19 "category": "Strategy Game",
20 "tagline": "A real-time build-up strategy game",
21 "description":[
22
23=== modified file 'debian/translations/gd.json'
24--- debian/translations/gd.json 2016-11-12 07:18:14 +0000
25+++ debian/translations/gd.json 2018-08-27 13:43:42 +0000
26@@ -1,4 +1,5 @@
27 {
28+ "name": "Widelands",
29 "category": "Geama ro-innleachd",
30 "tagline": "Geama ro-innleachd togail fìor-ama",
31 "description":[
32
33=== modified file 'debian/widelands.appdata.xml'
34--- debian/widelands.appdata.xml 2018-08-26 10:54:15 +0000
35+++ debian/widelands.appdata.xml 2018-08-27 13:43:42 +0000
36@@ -4,8 +4,8 @@
37 <id>org.widelands.widelands.desktop</id>
38 <metadata_license>CC0-1.0</metadata_license>
39 <project_license>GPL-2.0</project_license>
40+ <icon type="stock">widelands</icon>
41 <name>Widelands</name>
42- <icon type="stock">widelands</icon>
43 <summary>A real-time build-up strategy game</summary>
44 <summary xml:lang="ar">لعبة بناء إستراتيجية في الوقت الحقيقي</summary>
45 <summary xml:lang="bg">Стратегическа игра за изграждане на цивилизация в реално време</summary>
46@@ -259,8 +259,6 @@
47 <caption>Map Selection Screen</caption>
48 </screenshot>
49 </screenshots>
50- <url type="homepage">https://wl.widelands.org/</url>
51- <update_contact>widelands-dev_at_lists.launchpad.net</update_contact>
52 <releases>
53 <release date="2016-11-11" version="Build 19"/>
54 <release date="2014-02-22" version="Build 18"/>
55@@ -283,10 +281,103 @@
56 <release date="2002-09-03" version="Build 2"/>
57 <release date="2002-08-27" version="Build 1"/>
58 </releases>
59+ <languages>
60+ <lang>ar</lang>
61+ <lang>ast</lang>
62+ <lang>bg</lang>
63+ <lang>br</lang>
64+ <lang>ca</lang>
65+ <lang>cs</lang>
66+ <lang>da</lang>
67+ <lang>de</lang>
68+ <lang>el</lang>
69+ <lang>en_CA</lang>
70+ <lang>en_GB</lang>
71+ <lang>en_US</lang>
72+ <lang>eo</lang>
73+ <lang>es</lang>
74+ <lang>et</lang>
75+ <lang>eu</lang>
76+ <lang>fa</lang>
77+ <lang>fi</lang>
78+ <lang>fr</lang>
79+ <lang>fy</lang>
80+ <lang>ga</lang>
81+ <lang>gd</lang>
82+ <lang>gl</lang>
83+ <lang>he</lang>
84+ <lang>hi</lang>
85+ <lang>hr</lang>
86+ <lang>hu</lang>
87+ <lang>ia</lang>
88+ <lang>id</lang>
89+ <lang>ig</lang>
90+ <lang>it</lang>
91+ <lang>ja</lang>
92+ <lang>jv</lang>
93+ <lang>ka</lang>
94+ <lang>ko</lang>
95+ <lang>krl</lang>
96+ <lang>la</lang>
97+ <lang>lt</lang>
98+ <lang>mr</lang>
99+ <lang>ms</lang>
100+ <lang>my</lang>
101+ <lang>nb</lang>
102+ <lang>nds</lang>
103+ <lang>nl</lang>
104+ <lang>nn</lang>
105+ <lang>oc</lang>
106+ <lang>pl</lang>
107+ <lang>pt</lang>
108+ <lang>pt_BR</lang>
109+ <lang>ro</lang>
110+ <lang>ru</lang>
111+ <lang>rw</lang>
112+ <lang>si</lang>
113+ <lang>sk</lang>
114+ <lang>sl</lang>
115+ <lang>sr</lang>
116+ <lang>sv</lang>
117+ <lang>tr</lang>
118+ <lang>uk</lang>
119+ <lang>vi</lang>
120+ <lang>zh_CN</lang>
121+ <lang>zh_TW</lang>
122+ </languages>
123+ <translation type="gettext">win_conditions</translation>
124+ <translation type="gettext">scenario_dummy.wmf</translation>
125+ <translation type="gettext">mp_scenario_island_hopping.wmf</translation>
126+ <translation type="gettext">scenario_bar01.wmf</translation>
127+ <translation type="gettext">maps</translation>
128+ <translation type="gettext">scenario_emp03.wmf</translation>
129+ <translation type="gettext">widelands</translation>
130+ <translation type="gettext">scenario_tutorial03_seafaring.wmf</translation>
131+ <translation type="gettext">tribes</translation>
132+ <translation type="gettext">scenario_emp04.wmf</translation>
133+ <translation type="gettext">scenario_emp02.wmf</translation>
134+ <translation type="gettext">texts</translation>
135+ <translation type="gettext">scenario_tutorial01_basic_control.wmf</translation>
136+ <translation type="gettext">scenario_fri02.wmf</translation>
137+ <translation type="gettext">scenario_tutorial04_economy.wmf</translation>
138+ <translation type="gettext">tribes_encyclopedia</translation>
139+ <translation type="gettext">scenario_bar02.wmf</translation>
140+ <translation type="gettext">world</translation>
141+ <translation type="gettext">scenario_emp01.wmf</translation>
142+ <translation type="gettext">scenario_atl01.wmf</translation>
143+ <translation type="gettext">widelands_console</translation>
144+ <translation type="gettext">scenario_fri01.wmf</translation>
145+ <translation type="gettext">widelands_editor</translation>
146+ <translation type="gettext">scenario_tutorial02_warfare.wmf</translation>
147+ <translation type="gettext">mp_scenario_smugglers.wmf</translation>
148+ <translation type="gettext">map_the_green_plateau.wmf</translation>
149+ <url type="homepage">https://wl.widelands.org/</url>
150 <url type="bugtracker">https://bugs.launchpad.net/widelands</url>
151 <url type="donation">https://wl.widelands.org/wiki/The%20Widelands%20Project/</url>
152 <url type="help">https://wl.widelands.org/wiki/Game%20Manual/</url>
153+ <url type="translate">https://wl.widelands.org/wiki/TranslatingWidelands/</url>
154 <developer_name>The Widelands Development Team</developer_name>
155+ <update_contact>widelands-dev_at_lists.launchpad.net</update_contact>
156 <content_rating type="oars-1.0">
157 <content_attribute id="violence-cartoon">moderate</content_attribute>
158 <content_attribute id="violence-fantasy">none</content_attribute>
159
160=== modified file 'debian/widelands.appdata.xml.stub'
161--- debian/widelands.appdata.xml.stub 2018-08-26 10:54:15 +0000
162+++ debian/widelands.appdata.xml.stub 2018-08-27 13:43:42 +0000
163@@ -4,7 +4,6 @@
164 <id>org.widelands.widelands.desktop</id>
165 <metadata_license>CC0-1.0</metadata_license>
166 <project_license>GPL-2.0</project_license>
167- <name>Widelands</name>
168 <icon type="stock">widelands</icon>
169 SUMMARY_DESCRIPTION_HOOK
170 <screenshots>
171@@ -29,8 +28,6 @@
172 <caption>Map Selection Screen</caption>
173 </screenshot>
174 </screenshots>
175- <url type="homepage">https://wl.widelands.org/</url>
176- <update_contact>widelands-dev_at_lists.launchpad.net</update_contact>
177 <releases>
178 <release date="2016-11-11" version="Build 19"/>
179 <release date="2014-02-22" version="Build 18"/>
180@@ -53,10 +50,14 @@
181 <release date="2002-09-03" version="Build 2"/>
182 <release date="2002-08-27" version="Build 1"/>
183 </releases>
184+ LANGUAGES_HOOK
185+ <url type="homepage">https://wl.widelands.org/</url>
186 <url type="bugtracker">https://bugs.launchpad.net/widelands</url>
187 <url type="donation">https://wl.widelands.org/wiki/The%20Widelands%20Project/</url>
188 <url type="help">https://wl.widelands.org/wiki/Game%20Manual/</url>
189+ <url type="translate">https://wl.widelands.org/wiki/TranslatingWidelands/</url>
190 <developer_name>The Widelands Development Team</developer_name>
191+ <update_contact>widelands-dev_at_lists.launchpad.net</update_contact>
192 <content_rating type="oars-1.0">
193 <content_attribute id="violence-cartoon">moderate</content_attribute>
194 <content_attribute id="violence-fantasy">none</content_attribute>
195
196=== modified file 'utils/update_appdata.py'
197--- utils/update_appdata.py 2018-08-10 08:17:04 +0000
198+++ utils/update_appdata.py 2018-08-27 13:43:42 +0000
199@@ -12,6 +12,8 @@
200 # ../debian/widelands.appdata.xml.stub
201 # That file contains a SUMMARY_DESCRIPTION_HOOK where the translatable information
202 # is inserted.
203+# A language list and textdomain info is inserted into LANGUAGES_HOOK
204+#
205 # The output is written to ../debian/widelands.appdata.xml
206 #
207 # All non-translatable content for ../debian/org.widelands.widelands.desktop is taken from
208@@ -52,18 +54,31 @@
209 print('Error: File ' + english_source_filename + ' not found.')
210 sys.exit(1)
211
212+print('- Reading textdomains:')
213+
214+textdomain_path = os.path.normpath(
215+ base_path + '/po')
216+textdomains = []
217+textdomain_path_contents = os.listdir(textdomain_path)
218+for textdomain in textdomain_path_contents:
219+ if os.path.isdir(os.path.normpath(textdomain_path + "/" + textdomain)):
220+ textdomains.append(textdomain)
221+
222 print('- Reading source from JSON:')
223
224 english_source_file = open(english_source_filename, 'r')
225 english_source = json.load(english_source_file)
226
227+name_en = english_source['name']
228 tagline_en = english_source['tagline']
229 descriptions_en = english_source['description']
230 generic_name_en = english_source['category']
231+desktop_name_en = english_source['name']
232
233 english_source_file.close()
234
235 # For appdata.xml
236+names = ' <name>' + name_en + '</name>\n'
237 summaries = ' <summary>' + tagline_en + '</summary>\n'
238 descriptions = ' <description>\n'
239 for description in descriptions_en:
240@@ -72,6 +87,7 @@
241 descriptions += ' </p>\n'
242
243 # For .desktop
244+desktop_names = 'Name=' + desktop_name_en + '\n'
245 generic_names = 'GenericName=' + generic_name_en + '\n'
246 comments = 'Comment=' + tagline_en + '\n'
247
248@@ -79,6 +95,7 @@
249
250 # Each language's translations live in a separate file, so we list the dir
251 translation_files = sorted(os.listdir(translations_path), key=str.lower)
252+langcodes = []
253
254 for translation_filename in translation_files:
255 # Only json files, and not the template file please
256@@ -87,6 +104,7 @@
257 translations_path + '/' + translation_filename, 'r')
258 translation = json.load(translation_file)
259 lang_code = translation_filename[:-5]
260+ langcodes.append(lang_code)
261 tagline = translation['tagline']
262 if tagline != tagline_en:
263 summaries += " <summary xml:lang=\"" + lang_code + \
264@@ -98,6 +116,14 @@
265 # .desktop
266 generic_names += 'GenericName[' + \
267 lang_code + ']=' + generic_name + '\n'
268+ if translation.has_key('name'):
269+ desktop_name = translation['name']
270+ if desktop_name != desktop_name_en:
271+ # .desktop
272+ desktop_names += 'Name[' + \
273+ lang_code + ']=' + desktop_name + '\n'
274+ if translation.has_key('name') and translation['name'] != name_en: # appdata.xml
275+ names += " <name xml:lang=\"" + lang_code + "\">" + translation['name'] +'</name>\n'
276 if translation['description'] != descriptions_en: # appdata.xml
277 for description in translation['description']:
278 descriptions += " <p xml:lang=\"" + lang_code + "\">\n"
279@@ -111,10 +137,17 @@
280 appdata = ''
281
282 for line in input_file:
283- if line.strip() != 'SUMMARY_DESCRIPTION_HOOK':
284+ if line.strip() == 'SUMMARY_DESCRIPTION_HOOK':
285+ appdata += names + summaries + descriptions
286+ elif line.strip() == 'LANGUAGES_HOOK':
287+ appdata += ' <languages>\n'
288+ for langcode in langcodes:
289+ appdata += ' <lang>' + langcode + '</lang>\n'
290+ appdata += ' </languages>\n'
291+ for textdomain in textdomains:
292+ appdata += ' <translation type="gettext">' + textdomain + '</translation>\n'
293+ else:
294 appdata += line
295- else:
296- appdata += summaries + descriptions
297
298 input_file.close()
299
300@@ -131,7 +164,7 @@
301 if line.strip() != 'GENERIC_NAME_COMMENT_HOOK':
302 desktop += line
303 else:
304- desktop += generic_names + comments
305+ desktop += desktop_names + generic_names + comments
306
307 input_file.close()
308

Subscribers

People subscribed via source and target branches

to status/vote changes: