Qt ts文件详解
Qt ts文件(Translation Source file:翻译源文件)是Qt框架中用于存储翻译文本和相关上下文信息的一种特定格式文件,它是Qt Linguist(语言家)工具使用的基础。Qt Linguist是Qt开发工具包中的一个应用程序,专门用于本地化和国际化Qt应用程序。
Qt ts文件的结构
Qt ts文件是基于XML格式的文本文件,用于存储翻译文本和相关的上下文信息。这种格式使得翻译人员能够清晰地看到原文、上下文和翻译内容,便于进行准确的翻译工作。
文件声明
Qt ts文件通常以XML声明开始,指定了文件的版本和编码方式。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_CN">
<?xml version="1.0" encoding="UTF-8"?>声明了这是一个XML文件,使用UTF-8编码。
<!DOCTYPE TS>指定了文档类型为TS。
<TS version="2.1" language="zh_CN">标签则包含了TS文件的版本号和语言代码【1】。
【1】:language属性的值为相应语言的BCP 47标签代码。BCP47是一种标签格式的建议标准,这个标准定义了一种语言标签的特定格式,通常用于软件国际化和语音识别等领域。一个BCP 47语言标由多个子标记组成,这些子标记通过连字符(-)分隔【2】
子标记的类型和顺序通常遵循以下规则:
- 语言代码(Language):通常是定义的两个或三个字母的代码,代表一种语言。例如,zh代表中文,en代表英文。
- 脚本代码(Script):可选,定义的四个字母代码,用于表示书写系统。例如,Hans代表简体中文(汉字简化字形),Hant代表繁体中文(汉字传统字形)。
- 地区代码(Region):可选,定义的两个字母代码,或者UN M.49标准中的三位数字代码,用于表示特定的地理区域或国家。例如,CN代表中国大陆,US代表美国。
示例:
zh:表示中文(不特定于简体或繁体)。
zh-Hans:表示简体中文。
zh-Hant:表示繁体中文。
zh-CN:表示中国大陆使用的中文(默认为简体中文)。
en-US:表示美国英语。
【2】:按照BCP 47的严格规范,应该使用短横线(-)而不是下划线(_)。在实际的Qt .ts文件中,你可能会看到语言代码和国家/地区代码之间使用下划线(_)作为分隔符的情况,特别是在language属性中。在这种情况下,尽管它可能不会影响Qt工具(如Qt Linguist)的正确解析,但最好还是按照BCP 47的规范,将其更改为使用短横线(-)来分割。
上下文(context)
在Qt ts文件中,可以定义多个上下文(context),用于将翻译字符串分组到相关的逻辑部分中。虽然这不是必需的,但它有助于翻译人员更好地理解字符串的用途和上下文环境。然而,在标准的Qt ts文件中,上下文通常是通过<context>标来指定的,而不是直接作为XML结构的一部分。
消息(Message)
<message>标签是Qt ts文件中最核心的部分,它包含了需要翻译的字符串及其相关信息。每个<message>标签都包含以下子元素:
- location(可选):指定了源代码中字符串的位置,包括文件名和行号,有助于翻译人员查找原始字符串。
- source:包含原始(未翻译)的字符串。
- translation:包含翻译后的字符串。在初始的ts文件中,这个元素可能是空的,等待翻译人员填写。
- comment(可选):提供关于字符串的额外信息或注释,帮助翻译人员理解字符串的用途或上下文。
- numerusforms(可选):当字符串包含可变的数字部分时,可以使用此元素来提供不同数量下的翻译选项。
<context> //上下文<name>MainWindow</name> //上下文名称<message> //消息<location filename="mainwindow.ui" line="14"/> <source>打开文件</source> <translation>Open File</translation> </message> <!-- 其他消息 -->
</context>
<!-- 其他上下文 --> /* 在这个例子中,<context>标签的<name>属性指定了上下文的名称为“MainWindow”,它表示这个上下文中 * 的字符串都与主窗口相关。在<context>标签内部,<message>标签定义了需要翻译的字符串“打开文件”及 * 其翻译“Open File”。 */
使用lupdate工具生成.ts文件
参见链接:Qt使用lupdate工具生成.ts文件-CSDN博客
注意事项
- Qt ts文件的结构相对简单,主要围绕<message>标签展开。
- 上下文(context)通常通过<context>标签指定,而不是作为XML结构的一部分。
- 在编辑Qt ts文件时,应确保使用UTF-8编码,以避免编码问题。
- Qt Linguist是编辑Qt ts文件的推荐工具,它提供了直观的界面来查看、编辑和管理翻译字符串。
- Ts文件不会被包含进Qt应用程序,通过ts文件编译生成的qm文件会被包含进Qt应用程序中。
ts文件举例
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="en_US">
<context><name>frmrecordreplay</name><message><location filename="frmlocalsetting/frmrecordreplay.ui" line="14"/><source>Form</source><translation type="unfinished">Form</translation></message><message><location filename="frmlocalsetting/frmrecordreplay.cpp" line="252"/><source>Begin play record</source><translation type="unfinished">Begin play record</translation></message><message><location filename="frmlocalsetting/frmrecordreplay.cpp" line="259"/><location filename="frmlocalsetting/frmrecordreplay.cpp" line="287"/><source>Stop playback control request</source><translation type="unfinished">Stop playback control request</translation></message><message><location filename="frmlocalsetting/frmrecordreplay.cpp" line="278"/><source>Continue playback control request</source><translation type="unfinished">Continue playback control request</translation></message>
</context>
<context><name>frmtelbookbase</name><message><location filename="frmtelbook/frmtelbookbase.ui" line="14"/><source>Form</source><translation type="unfinished">Form</translation></message><message><location filename="frmtelbook/frmtelbookbase.ui" line="73"/><source>TextLabel</source><translation type="unfinished">TextLabel</translation></message><message><location filename="frmtelbook/frmtelbookbase.cpp" line="27"/><source>Are You Delete It ?</source><translation type="unfinished">Are You Delete It ?</translation></message>
</context>
<context><name>frmtelwidgetbase</name><message><location filename="frmtelwidget/frmtelwidgettbase.ui" line="32"/><source>Form</source><translation type="unfinished">Form</translation></message>
</context>
</TS>
相关文章:
Qt ts文件详解
Qt ts文件(Translation Source file:翻译源文件)是Qt框架中用于存储翻译文本和相关上下文信息的一种特定格式文件,它是Qt Linguist(语言家)工具使用的基础。Qt Linguist是Qt开发工具包中的一个应用程序&…...

操作系统 IO 相关知识
操作系统 IO 相关知识 阻塞与非阻塞同步与异步IO 和系统调用传统的 IODMAmmap 内存映射sendfilesplice 常用的 IO 模型BIO:同步阻塞 IONIO:同步非阻塞 IOIO 多路复用信号驱动 IOAIO:异步 IO 模型 IO 就是计算机内部与外部进行数据传输的过程&…...
C++_手写share_ptr
以下是一个简化版的 shared_ptr 的实现: #include <iostream> template <typename T> class SimpleSharedPtr { public:// 构造函数explicit SimpleSharedPtr(T* ptr nullptr) : ptr_(ptr), count_(ptr ? new size_t(1) : nullptr) {}// 拷贝构造函数…...

【启明智显方案分享】6.86寸高清显示屏音频效果器解决方案
一、项目概述 本方案旨在设计一款集成6.86寸高清触摸显示屏的音频效果器,通过HMI(Human-Machine Interface)芯片Model 4驱动,实现高清晰度的视觉交互。该设备不仅支持音乐、麦克风及温响音量的精细控制,还内置丰富的预…...

vue设置每次加载页面时展示一个双开门效果
一、首先创建一个双开门的蒙层组件 <!-- DoorOverlay.vue --> <template><div v-if"isVisible" class"door-overlay"><div class"door left-door"></div><div class"door right-door"></div&…...

简单的docker学习 第8章 docker常用服务安装
第8章 常用服务安装 本章主要学习最常用的,也是安装起来稍有些麻烦的 MySQL 与 Redis 两种服务器的Docker 安装。至于其它服务器的 Docker 安装,大家可自行查找资料。只要 MySQL 与 Redis这两类服务器学会了安装,其它服务器的安装基本也不会…...
01、MySQL-DDL(数据定义语言)
目录 1、查询 2、创建 3、修改 4、删除 1、查询 1、查询所有数据库 show databases; 2、查询当前数据库 select database(); 3、查询当前数据库中所有的表(需要先进入这个数据库) use d1; show tables; 4、查询表结构 desc users; 5、查询指定表的建…...

RT-Thread 操作系统 之 线程间同步 IO设备模型
RT-Thread 操作系统 之 线程间同步 IO设备模型 一、线程间同步1.1、信号量1.1.1、信号量结构体1.1.2、信号量的使用和管理1.1.3、信号量同步例程 1.2、互斥量1.2.1、互斥量的使用和管理 1.3、事件集1.3.1、事件集使用和管理方法1.3.2、事件集三个线程同步实例 二、IO设备模型2.…...
力扣leetcode移动0(C++)
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0]示例 2: 输入: nums [0] 输出: […...
阿里云部署open-webui实现openai代理服务
一、 环境准备 1. 阿里云服务器,ubuntu22系统 2. 外网服务器,linux系统 3. openai API Key 二、实际操作记录(阿里云服务器端) 1. 根据官方文档安装open-webui服务端: 🚀 Getting Started | Open WebUI 1. 如果服务器配置比较低,…...

你的工作环境,选对劳保鞋了吗?守护安全,从脚下开始!
在众多的工作场所中,我们穿梭于不同的工作环境,从繁忙的工厂车间到复杂的建筑工地,再到需要精细操作的实验室……每一步都承载着对安全的期许和对效率的追求。但你是否意识到,脚下那双不起眼的劳保鞋,其实是守护你安全…...

【Linux】编译器gcc/g++ 、程序翻译过程、动静态库
目录 1.gcc/g Linux编译器1.1. gcc与g的安装1.2. gcc与g用法1.2.1.gcc用法1.2.2. g用法 1.3. 程序翻译的过程1.3.1. 前提知识:1.3.2. 预处理(语言种类不变)条件编译用途: 1.3.3. 编译(生成汇编语言)1.3.4. …...

通义灵码-阿里云推出的AI智能编码助手
通义灵码体验地址 标题通义灵码是什么? 通义灵码是由阿里巴巴推出的基于通义大模型的智能编码辅助工具,提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码注释生成、代码解释、研发智能问答、异常报错排查等能力,并针对阿里云…...

构建智能生态,视频监控/安防监控EasyCVR视频汇聚流媒体技术在智能分析领域的应用
随着5G、AI、物联网(IoT)、云计算等技术的快速发展,万物互联的时代已经到来,全新的行业生态AIoT正在引领一场深刻的变革。在这场变革中,EasyCVR视频流媒体技术以其强大的视频处理、汇聚与融合能力,在智能分…...

LeetCode Hard|【460. LFU 缓存】
力扣题目链接 LFU全称是最不经常使用算法(Least Frequently Used),LFU算法的基本思想和所有的缓存算法一样,一定时期内被访问次数最少的页,在将来被访问到的几率也是最小的。 相较于 LRU 算法,LFU 更加注重…...

积极参与全球能源科技前沿对话,海博思创推动绿色低碳发展
在能源转型与绿色低碳发展的全球浪潮中,国内领先的储能解决方案供应商海博思创以卓越的技术实力和前瞻性的战略眼光,站在了行业变革的前沿。公司不仅在国内外多个重要展会上大放异彩,更通过一系列技术创新与深度合作,为全球能源行…...
[工具]-ffmpeg-笔记
朋友有一个需求,将视频文件转化为音频文件、音频文件获取音频转化为文本文件。 思路:通过ffmpeg转化视频为音频,通过百度ai提供的voice_t_text接口提取语音文本,但是需要将音频分割成1分钟内的pcm编码 ,采样率16000的…...

Android Fragment:详解,结合真实开发场景Navigation
目录 1)Fragment是什么 2)Fragment的应用场景 3)为什么使用Fragment? 4)Fragment如何使用 5)Fragment的生命周期 6)Android开发,建议是多个activity,还是activity结合fragment&…...

JavaWeb中的Servlet
本笔记基于【尚硅谷全新JavaWeb教程,企业主流javaweb技术栈】https://www.bilibili.com/video/BV1UN411x7xe?vd_sourcea91dafe0f846ad7bd19625e392cf76d8总结 Servlet Servlet简介 动态资源和静态资源 静态资源 无需在程序运行时通过代码运行生成的资源,在程序运…...

SpringBoot AOP 简单的权限校验
本篇文章的主要内容是通过AOP切面编程实现简单的权限校验。 书接上回登录与注册功能 我们的用户表里面不是有role(权限)这个字段吗 在JWT令牌的生成中,我们加入了role字段。 那么接下来,我们就可以通过这个字段来实现权限校验。 我这里就很简单&#x…...

使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...

el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...

(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...