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

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

总结

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 我Github的问题解决了!
  • WPF 所有的控件和每个控件的主要作用和应用场景
  • Docker笔记-Docker Dockerfile
  • 有关JS下隐藏的敏感信息
  • Vue.js 的 Mixins
  • 极狐GitLab CI/CD 功能合集(超详细教程)
  • 在Linux服务器上如何实现自动化部署?
  • Activiti7《第三式:破刀式》——工作流中的刀锋利刃
  • AIGC论文查重是什么?
  • Redis 集群策略详解
  • freemobus阅读笔记
  • SpringBoot+Thymeleaf图书管理系统
  • 【ARM】A64指令介绍及内存屏障和寄存器
  • Linux 删除文件不释放空间问题处理
  • HTML中直接创建一个“onoff”图形开关包括css+script
  • hexo+github搭建个人博客
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 【Amaple教程】5. 插件
  • Android Volley源码解析
  • centos安装java运行环境jdk+tomcat
  • Java IO学习笔记一
  • java8 Stream Pipelines 浅析
  • LeetCode算法系列_0891_子序列宽度之和
  • Less 日常用法
  • SpiderData 2019年2月23日 DApp数据排行榜
  • spring cloud gateway 源码解析(4)跨域问题处理
  • 缓存与缓冲
  • 前嗅ForeSpider采集配置界面介绍
  • 巧用 TypeScript (一)
  •  一套莫尔斯电报听写、翻译系统
  • 阿里云服务器购买完整流程
  • 带你开发类似Pokemon Go的AR游戏
  • ‌JavaScript 数据类型转换
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (Java数据结构)ArrayList
  • (Matlab)使用竞争神经网络实现数据聚类
  • (二)hibernate配置管理
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (每日一问)基础知识:堆与栈的区别
  • (三)elasticsearch 源码之启动流程分析
  • (十八)SpringBoot之发送QQ邮件
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .net core Swagger 过滤部分Api
  • .Net Core中Quartz的使用方法
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .NET Standard 的管理策略
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • :中兴通讯为何成功
  • [android] 手机卫士黑名单功能(ListView优化)
  • [Android]Android P(9) WIFI学习笔记 - 扫描 (1)
  • [C#]使用OpenCvSharp图像滤波中值滤波均值滤波高通滤波双边滤波锐化滤波自定义滤波