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

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】

子标记的类型和顺序通常遵循以下规则:

  1. 语言代码(Language):通常是定义的两个或三个字母的代码,代表一种语言。例如,zh代表中文,en代表英文。
  2. 脚本代码(Script):可选,定义的四个字母代码,用于表示书写系统。例如,Hans代表简体中文(汉字简化字形),Hant代表繁体中文(汉字传统字形)。
  3. 地区代码(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>

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 没有mac电脑ios上架截屏截图的最新方法
  • 如何在亚马逊云科技AWS上利用LoRA高效微调AI大模型减少预测偏差
  • C到C++——C++基础
  • 字段经常变,用什么数据库, mysql
  • 最新CSS3伪类和伪元素详解
  • CSS 多按钮根据半圆弧度排列
  • Vue - 关于v-wave 波浪动画组件
  • 【Dash】使用 dash_mantine_components 创建图表
  • 动态规划求解最小斯坦纳树(证了一天两夜)
  • 1998年考研真题英语二(204)阅读理解翻译
  • C语言宠物系统
  • CnosDB 元数据集群 – 分布式时序数据库的大脑
  • C++(week15): C++提高:(五)Redis数据库
  • 将PPT中的元素保存为高清图片
  • 看图学sql之sql的执行顺序
  • 【347天】每日项目总结系列085(2018.01.18)
  • 【个人向】《HTTP图解》阅后小结
  • ➹使用webpack配置多页面应用(MPA)
  • Java基本数据类型之Number
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • JS字符串转数字方法总结
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • SSH 免密登录
  • tab.js分享及浏览器兼容性问题汇总
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 那些被忽略的 JavaScript 数组方法细节
  • 前嗅ForeSpider教程:创建模板
  • 如何进阶一名有竞争力的程序员?
  • 详解NodeJs流之一
  • 《天龙八部3D》Unity技术方案揭秘
  • Hibernate主键生成策略及选择
  • ​如何在iOS手机上查看应用日志
  • #window11设置系统变量#
  • (70min)字节暑假实习二面(已挂)
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (创新)基于VMD-CNN-BiLSTM的电力负荷预测—代码+数据
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (三)elasticsearch 源码之启动流程分析
  • (五)c52学习之旅-静态数码管
  • (译) 函数式 JS #1:简介
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .equals()到底是什么意思?
  • .mysql secret在哪_MYSQL基本操作(上)
  • .Net CF下精确的计时器
  • .Net Core缓存组件(MemoryCache)源码解析
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .Net Core中的内存缓存实现——Redis及MemoryCache(2个可选)方案的实现
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .net打印*三角形