@@ -97,7 +97,13 @@ def get_translation_mods_translation():
97
97
tmp_str = urllib .request .urlopen (base_url + item ).read ()
98
98
except :
99
99
tmp_str = urllib .request .urlopen ((base_url + item ).replace ("content" , "Content" ).replace ("config" , "Config" )).read ()
100
- tmp |= load_vcmi_json (tmp_str )
100
+
101
+ if "chronicles.json" in item :
102
+ chronicles_data = load_vcmi_json (tmp_str )
103
+ prefixed_chronicles = {f"chronicles.{ k } " : v for k , v in chronicles_data .items ()}
104
+ tmp |= prefixed_chronicles
105
+ else :
106
+ tmp |= load_vcmi_json (tmp_str )
101
107
data [key ] = tmp
102
108
return data
103
109
@@ -132,7 +138,7 @@ def translation_mod_ratio(translation_mods_translation):
132
138
133
139
for language in [key for key , value in translation_mods_translation .items () if key != "english" ]:
134
140
data_ns = {}
135
- namespaces = [None , "map" , "campaign" ]
141
+ namespaces = [None , "map" , "campaign" , "chronicles" ]
136
142
for namespace in namespaces :
137
143
translation = translation_mods_translation [language ]
138
144
count_equal = 0
@@ -186,12 +192,18 @@ def get_mod_translations(languages):
186
192
for key , value in vcmi_mods .items ():
187
193
url = value ["mod" ].replace (" " , "%20" )
188
194
mod = load_vcmi_json (urllib .request .urlopen (url ).read ())
189
- if "language" not in mod :
190
- found_languages = []
191
- for language in languages :
192
- if language in mod :
193
- found_languages .append (language )
194
- data [key ] = found_languages
195
+ mod_name = mod .get ("name" , key )
196
+ mod_type = mod .get ("modType" , "unknown" ).lower ()
197
+
198
+ if mod_type == "translation" :
199
+ continue
200
+
201
+ found_languages = []
202
+ for language in languages :
203
+ if language in mod :
204
+ found_languages .append (language )
205
+
206
+ data [key ] = {"name" : mod_name , "modType" : mod_type , "languages" : found_languages }
195
207
return data
196
208
197
209
def create_md ():
@@ -232,21 +244,25 @@ def format_value(percent):
232
244
md .new_table (columns = df .shape [1 ], rows = df .shape [0 ], text = df .to_numpy ().flatten (), text_align = 'center' )
233
245
234
246
tmp = get_mod_translations (languages_translate )
235
- mod_counts = {language : sum ([ 1 for mods in tmp .values () if language in mods ]) for language in languages_translate }
247
+ mod_counts = {language : sum (1 for mods in tmp .values () if language in mods [ "languages" ]) for language in languages_translate }
236
248
total_mods = len (tmp )
237
249
percentages = [mod_counts [lang ] / total_mods if total_mods > 0 else 0 for lang in languages_translate ]
238
-
250
+
239
251
md .new_header (level = 2 , title = "Mods translation status" )
240
252
header = ["Language" ] + languages_translate
241
253
values = ["Translated mods" ] + [format_value (percent ) for percent in percentages ]
242
-
254
+
243
255
md .new_table (columns = len (header ), rows = 2 , text = header + values , text_align = 'center' )
244
256
245
257
md .new_header (level = 2 , title = "Mods translation details" )
246
258
tmp = get_mod_translations (languages_translate )
247
- df = pd .DataFrame (columns = ["Mod" ] + languages_translate )
248
- for mod in tmp :
249
- df = pd .concat ([df , pd .DataFrame ({"Mod" : "[" + mod + "](https://github.com/vcmi-mods/" + mod .replace (" " , "-" ) + ")" } | {x :["x" if x in tmp [mod ] else "" ] for x in languages_translate })], ignore_index = True )
259
+ df = pd .DataFrame (columns = ["Mod" , "Type" ] + languages_translate )
260
+
261
+ for mod , mod_data in tmp .items ():
262
+ df = pd .concat ([df , pd .DataFrame ({"Mod" : "[" + mod_data ["name" ] + "](https://github.com/vcmi-mods/" + mod .replace (" " , "-" ) + ")" , "Type" : mod_data ["modType" ], ** {x : ["x" if x in mod_data ["languages" ] else "" ] for x in languages_translate }})], ignore_index = True )
263
+
264
+ df = df .sort_values (by = ["Type" , "Mod" ])
265
+
250
266
df = df .T .reset_index ().T
251
267
md .new_table (columns = df .shape [1 ], rows = df .shape [0 ], text = df .to_numpy ().flatten (), text_align = 'center' )
252
268
0 commit comments