翻译McgsPro XML英文配置脚本(中英标签转换版)

以下是一个Python脚本,专门处理McgsPro导出的XML文件,

<中文>...</中文>标签中的内容翻译成英文后放入<英语>...</英语>标签,

同时完全保留原始XML格式。(非常好用)


  • 找到进行修改:# 配置参数

    INPUT_XML = "mcgspro_config.xml"      # 修改输入XML文件的相应目录
    OUTPUT_XML = "translated_config.xml"  # 修改输出XML文件的相应目录

注意:运行代码前先安装lxml和googletrans包--->   pip install lxml googletrans==4.0.0-rc1

from lxml import etree
from googletrans import Translator
import time
import os

def translate_text(text, dest_lang='en', max_retries=3):
    """翻译单段文本"""
    translator = Translator()
    for attempt in range(max_retries):
        try:
            translation = translator.translate(text, dest=dest_lang)
            return translation.text
        except Exception as e:
            print(f"翻译失败 (尝试 {attempt + 1}/{max_retries}): {e}")
            time.sleep(2)
    return text  # 失败时返回原文

def translate_mcgspro_xml(input_file, output_file):
    """
    主翻译函数
    :param input_file: 输入XML路径
    :param output_file: 输出XML路径
    """
    # 解析XML并保留所有格式
    parser = etree.XMLParser(remove_blank_text=False, remove_comments=False)
    tree = etree.parse(input_file, parser)
    root = tree.getroot()
    
    total = len(root.xpath('//中文'))  # 统计中文标签数量
    processed = 0
    
    # 查找所有中文标签
    for chinese_elem in root.xpath('//中文'):
        processed += 1
        chinese_text = chinese_elem.text if chinese_elem.text else ""
        print(f"\r翻译进度: {processed}/{total} | 正在翻译: {chinese_text[:50]}...", end="")
        
        # 获取或创建对应的英文标签
        parent = chinese_elem.getparent()
        english_elem = parent.find('英语')
        
        if english_elem is None:
            # 如果不存在英文标签则创建
            english_elem = etree.SubElement(parent, '英语')
            # 保持与中文标签相同的位置(插入到中文标签后)
            parent.insert(parent.index(chinese_elem) + 1, english_elem)
        
        # 只翻译非空内容且英文标签为空时翻译
        if chinese_text.strip() and (not english_elem.text or not english_elem.text.strip()):
            translated_text = translate_text(chinese_text)
            english_elem.text = translated_text
            time.sleep(0.5)  # API速率限制
    
    # 完全保留原始格式写出
    tree.write(output_file, 
               encoding='utf-8', 
               xml_declaration=True, 
               pretty_print=True, 
               with_comments=True,
               standalone=None)
    
    # 修复XML声明格式
    with open(input_file, 'r', encoding='utf-8') as f:
        first_line = f.readline().strip()
    if first_line.startswith('<?xml'):
        with open(output_file, 'r+', encoding='utf-8') as f:
            content = f.read()
            f.seek(0)
            f.write(first_line + '\n' + content.split('\n', 1)[1])

    print(f"\n翻译完成!输出文件已保存: {os.path.abspath(output_file)}")

if __name__ == "__main__":
    # 配置参数
    INPUT_XML = "mcgspro_config.xml"      # 修改输入XML文件的相应目录
    OUTPUT_XML = "translated_config.xml"  # 修改输出XML文件的相应目录
    
    # 检查文件是否存在
    if not os.path.exists(INPUT_XML):
        print(f"错误: 输入文件 {INPUT_XML} 不存在!")
    else:
        translate_mcgspro_xml(INPUT_XML, OUTPUT_XML)

# 该Python脚本功能说明:


  • 精确标签处理

    • 自动识别XML中的所有<中文>...</中文>标签

    • 找到或创建对应的<英语>...</英语>标签

    • 保持标签在父元素中的原始顺序

  • 格式保留

    • 使用lxml库精确控制XML输出格式

    • 保留所有缩进、换行和注释

    • 自动修复XML声明格式以匹配原文件

  • 智能翻译

    • 只翻译非空中文内容

    • 跳过已翻译的英文标签(避免重复翻译)

    • 自动重试失败的翻译请求


 1.使用方法:

        直接从McgsPro 导出要翻译的变量文件(XML):

2.将导出的文件路径进行填写到代码的相应位置: 

3. 修改导出的文件名和文件路径:


 4.运行Python文件:

  •         这边是在VScode上运行的


5.等待结果: 


6.将翻译好的xml文件倒入 Mcgspro:


恭喜完结撒花!!! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值