Skip to content

Commit a48ab98

Browse files
authored
Chronicles translation split
1 parent 2fe8df9 commit a48ab98

File tree

1 file changed

+30
-14
lines changed

1 file changed

+30
-14
lines changed

.github/update.py

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,13 @@ def get_translation_mods_translation():
9797
tmp_str = urllib.request.urlopen(base_url + item).read()
9898
except:
9999
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)
101107
data[key] = tmp
102108
return data
103109

@@ -132,7 +138,7 @@ def translation_mod_ratio(translation_mods_translation):
132138

133139
for language in [key for key, value in translation_mods_translation.items() if key != "english"]:
134140
data_ns = {}
135-
namespaces = [None, "map", "campaign"]
141+
namespaces = [None, "map", "campaign", "chronicles"]
136142
for namespace in namespaces:
137143
translation = translation_mods_translation[language]
138144
count_equal = 0
@@ -186,12 +192,18 @@ def get_mod_translations(languages):
186192
for key, value in vcmi_mods.items():
187193
url = value["mod"].replace(" ", "%20")
188194
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}
195207
return data
196208

197209
def create_md():
@@ -232,21 +244,25 @@ def format_value(percent):
232244
md.new_table(columns=df.shape[1], rows=df.shape[0], text=df.to_numpy().flatten(), text_align='center')
233245

234246
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}
236248
total_mods = len(tmp)
237249
percentages = [mod_counts[lang] / total_mods if total_mods > 0 else 0 for lang in languages_translate]
238-
250+
239251
md.new_header(level=2, title="Mods translation status")
240252
header = ["Language"] + languages_translate
241253
values = ["Translated mods"] + [format_value(percent) for percent in percentages]
242-
254+
243255
md.new_table(columns=len(header), rows=2, text=header + values, text_align='center')
244256

245257
md.new_header(level=2, title="Mods translation details")
246258
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+
250266
df = df.T.reset_index().T
251267
md.new_table(columns=df.shape[1], rows=df.shape[0], text=df.to_numpy().flatten(), text_align='center')
252268

0 commit comments

Comments
 (0)