当前位置: 首页 > article >正文

Qt Linguist 短语书批量导入翻译.ts导入.qph

文章目录

  • 前言
  • 一、准备工作 将ts文件和python文件放到一个根目录下
  • 二、执行如下代码 比如这个python文件名字叫test.py
  • 三、在根目录下打开powershell之类的控制台,执行python test.py
  • 总结


前言

在开发Qt软件过程中,不免需要涉及到翻译软件界面的工作。于是就用到了qt中的linguist功能。这个功能中,有一个短语书的功能。可以将已经翻译过的内容,一个一个上传上去,用于其他软件的使用。方便统一管理固定的翻译内容。但是这个软件有一个问题,就是不能够批量将ts中已经翻译好的内容,导入到短语书中。于是设计一个python脚本来完成这个功能


一、准备工作 将ts文件和python文件放到一个根目录下

二、执行如下代码 比如这个python文件名字叫test.py

import xml.etree.ElementTree as ET  
from xml.dom import minidom  
  
def parse_ts_file(ts_file_path):  
    """  
    从.ts文件中解析并提取翻译项。  
  
    :param ts_file_path: .ts文件的路径  
    :return: 一个包含翻译项的字典,键为源文本,值为翻译文本  
    """  
    tree = ET.parse(ts_file_path)  
    root = tree.getroot()  
  
    translations = {}  
  
    # 遍历XML文档以找到翻译项  
    # 注意:这里假设.ts文件的结构包含<TS>根元素,然后是<context><message>元素  
    for context in root.findall('context'):  
        for message in context.findall('message'):  
            source = message.find('source').text  
            target = message.find('translation').text if message.find('translation') is not None else ''  
            if source and target:  
                translations[source] = target  
  
    return translations  
  
def write_phrase_book(translations, phrase_book_path):  
    """  
    将翻译项写入.qph文件,并使用minidom美化输出。  
  
    :param translations: 包含翻译项的字典  
    :param phrase_book_path: .qph文件的路径  
    """  
    # 创建.qph文件的根元素  
    root = ET.Element('QPH', {'sourcelanguage': 'en_GB', 'language': 'zh_CN'})  
  
    # 遍历翻译项并创建<phrase>元素  
    for source, target in translations.items():  
        phrase = ET.SubElement(root, 'phrase')  
        source_elem = ET.SubElement(phrase, 'source')  
        source_elem.text = source  
        target_elem = ET.SubElement(phrase, 'target')  
        target_elem.text = target  
  
    # 使用minidom来美化XML输出  
    rough_string = ET.tostring(root, 'utf-8')  
    reparsed = minidom.parseString(rough_string)  
    pretty_xml_as_string = reparsed.toprettyxml(indent="  ")  
  
    # 写入文件  
    with open(phrase_book_path, 'w', encoding='utf-8') as file:  
        file.write(pretty_xml_as_string)  
  
ts_file_path = 'project_zh.ts'  # 请确保此文件路径正确,并且文件存在  
phrase_book_path = 'en2zh.qph'  
  
translations = parse_ts_file(ts_file_path)  
write_phrase_book(translations, phrase_book_path)  
  
print("翻译项已成功提取并写入到.qph文件中。")

三、在根目录下打开powershell之类的控制台,执行python test.py

根目录下就会出现一个短语书 en2zh.qph

总结

就这样就完事了。后面用的时候,导入一下短语书就行了。


http://www.kler.cn/news/313400.html

相关文章:

  • kubernetes技术详解,带你深入了解k8s
  • 汽车应用生态系统的飞跃
  • Docker 华为云镜像加速器配置
  • Imagen架构详解:理解其背后的技术与创新
  • 大数据-138 - ClickHouse 集群 表引擎详解3 - MergeTree 存储结构 数据标记 分区 索引 标记 压缩协同
  • 锐尔15注册机 锐尔文档扫描影像处理系统15功能介绍
  • ChatGPT 4o 使用指南 (9月更新)
  • 【OceanBase诊断调优】—— 断连接问题根因分析
  • MongoDB在大数据场景应用
  • 前端动画库大比拼:为何选择Velocity.js
  • 【STM32】独立看门狗(IWDG)原理详解及编程实践(下)
  • 记录一次fs配置导致串线的问题
  • 反激电路中TL431光耦反馈参数的计算,环路设计思路
  • Vue 第三方调用若依系统实现系统单点登录
  • Unity 设计模式 之 结构型模式 -【装饰者模式】【外观模式】【享元模式】【代理模式】
  • Java免税商品优选商城:Spring Boot实战
  • Redis-01 入门和十大数据类型
  • 英伟达Jim Fan预测:未来2~3年机器人将迎来“GPT-3时刻”
  • 【图像去噪】论文精读:Enhanced CNN for image denoising(ECNDNet)
  • 地图相关的系统软件及插件
  • Linux笔记---简单指令
  • 爬虫----webpack
  • ssrf攻击fastcgi复现及环境搭建
  • ITOP-2 分模块安装部署itop
  • OpenCV系列教程二:基本图像增强(数值运算)、滤波器(去噪、边缘检测)
  • jspdf踩坑 htmltocanvas
  • docker zookeeper集群启动报错:Cannot open channel to * at election address /ip:3888
  • C#身份验证那些事儿之注册服务AddAuthorization和AddAuthentication
  • tomcat的配置
  • 【LLM:Gemini】文本摘要、信息提取、验证和纠错、重新排列图表、视频理解、图像理解、模态组合