import os
import json, shutil
# 递归读取文件夹tmpgui中的所有JSON文件
def read_json_files(directory, textkeylist):
translation_dict = {} # 用来存储所有的m_text值
translation_set = set()
it = 0
# 遍历目录中的所有文件和子目录
for root, dirs, files in os.walk(directory):
for file in files:
if file.endswith(".json"):
file_path = os.path.join(root, file)
# 读取每个json文件
with open(file_path, "r", encoding="utf-8") as f:
try:
data = json.load(f)
for key in textkeylist:
def recursive_search(obj, key):
nonlocal it
if isinstance(obj, dict):
for k, v in obj.items():
if k == key:
if isinstance(v, str):
if v not in translation_set:
translation_set.add(v)
translation_dict[
f"{it}-{file.replace(".json", '')}-{key}"
] = v
it += 1
elif isinstance(v, list):
for item in v:
if (
isinstance(item, str)
and item not in translation_set
):
translation_set.add(item)
translation_dict[
f"{it}-{file.replace(".json", '')}-{key}"
] = item
it += 1
else:
recursive_search(item, key)
else:
recursive_search(v, key)
elif isinstance(obj, list):
for item in obj:
recursive_search(item, key)
recursive_search(data, key)
except json.JSONDecodeError:
print(f"文件 {file_path} 解析错误")
return translation_dict
def save_translation_dict(translation_dict, output_file):
with open(output_file, "w", encoding="utf-8") as f:
json.dump(translation_dict, f, ensure_ascii=False, indent=4)
# 主程序
def main():
extra = [
# NewMainMenu_Hypothetical_ContextMenu.cs
"[ No Bonus Quests ]",
"[ Bonus Quests ]",
]
save_translation_dict(
read_json_files(
"text",
[
"m_text",
"BIOSText",
"SettingsElementName",
"SettingsDescription",
"ExtraName",
"CreditNames",
"CreditDescription",
# 0304补充
"GoalHint",
"HypothesisName",
"HypothesisTagline",
"HypothesisDescription",
"TimeWhenWritten",
],
),
"strings/mtext.json",
)
save_translation_dict(
read_json_files("text", ["Text", "Array"]), "strings/dialogue.json"
)
shutil.copy("strings/dialogue.json", "translation-tools/weblate/dialogue/en.json")
shutil.copy("strings/mtext.json", "translation-tools/weblate/mtext/en.json")
if __name__ == "__main__":
main()