auto_build_launcher/scripts/project_res_string.py

50 lines
1.6 KiB
Python

import json
import os.path
import xml.etree.ElementTree as ET
from scripts.task import Task
from utils.logger_utils import app_logger
def batch_update_xml_resources(file_path, updates_dict):
# 解析XML文件
tree = ET.parse(file_path)
root = tree.getroot()
updated_count = 0 # 遍历字典中的每个key-value对
for key, new_value in updates_dict.items():
# 查找指定key的元素
for elem in root.findall(f".//string[@name='{key}']"):
# 修改元素内容
elem.text = new_value.replace("'", "\\'")
print(f"已更新 key: {key} 的值为: {elem.text}")
updated_count += 1
break
else:
print(f"未找到 key: {key}")
# 美化并保存修改
tree.write(file_path, encoding='utf-8', xml_declaration=True)
return updated_count
class ProjectResString(Task):
def update_res(self, string_path: str, res: dict[str, str]):
if os.path.exists(string_path):
batch_update_xml_resources(string_path, res)
return
app_logger().debug("路径不存,不操作了,后续可以给他创建出来:" + string_path + "\t" + json.dumps(res, indent=4))
def execute(self):
for key in self.context.string.keys():
launcher = key.replace('base', '')
if launcher:
launcher = "values-" + launcher
else:
launcher = "values"
path = f"launcher-game/res/{launcher}/strings.xml"
self.update_res(os.path.join(self.context.temp_project_path, path), self.context.string[key])
pass