qt中制作添加 .ts 翻译文件

qt中制作添加 .ts 翻译文件

QT 中可以用其自身的工具对界面语言进行翻译,以实现支持语言的效果,这对于开发用户跨越语言区域的工具来说是一个特别实用的功能。

下面介绍怎么制作和使用qt的翻译文件:

一、生成.ts翻译文件(.ts是可读的翻译文件,使用简单的XML格式)

  1. 启动qt的命令行工具: 开始 -> 程序-> qt4.7.0 ->  qt4.7.0 commond prompt  ;
  2. 在命令行窗口中,进入到工程目录 ;
  3. 利用编辑工具打开.pro文件 ,在末尾添加  TRANSLATIONS    +=  yourproject_zh.ts

    等号右边的名字可以自己取,比如中文的就用后缀_zh, 英文的就用 _en ,便于识别

  4. 然后回到qt命令行窗口, 执行

   lupdate –verbose yourproject.pro //生成相应的.ts 文件

二、编辑 .ts文件

  1)接上,在命令行窗口中执行

  linguist //启动Linguist语言翻译工具,可以翻译相应可见字符串

  (启动:命令行或者开始菜单均可)
  2)打开:工具界面中的File--->Open,可以打开所需的 .ts 
    文件
  3)翻译:界面中部的翻译栏,两行:第一行:Source Text 第二行:… Translation, 
    在地二行进行相应的翻译即可,翻译完一条之后点击“确定下一个”按钮。

    保存即可。

三、生成.qm文件(.qm是经过.ts转换而成的二进制机器语言)

  lrelease –verbose spreadsheet.pro //将翻译好的文件生成.qm文件

四、修改或新加入界面部件时

只需从 lupdate -verbose 这一步开始执行,即可。

然后把生成的.qm文件放到正确的目录中,即可实现翻译的效果。

  

 

如果是安装了插件的visual studio ,也可以右击解决方案,实现 lupdate 和 lrelease 命令同样的功能。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是使用 Qt 解析翻译 .ts 文件的 C++ 代码示例: ```c++ #include <QCoreApplication> #include <QFile> #include <QIODevice> #include <QXmlStreamReader> #include <QXmlStreamAttributes> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 打开 .ts 文件 QFile file(":/translations/myapp_zh_CN.ts"); if (!file.open(QIODevice::ReadOnly)) { qDebug() << "Failed to open file!"; return -1; } // 使用 QXmlStreamReader 解析 XML 内容 QXmlStreamReader xml(&file); while (!xml.atEnd()) { xml.readNext(); // 处理 <context> 节点 if (xml.isStartElement() && xml.name() == "context") { // 获取 <name> 节点的值 QString contextName; while (!xml.atEnd()) { xml.readNext(); if (xml.isStartElement() && xml.name() == "name") { contextName = xml.readElementText(); break; } } // 处理 <message> 节点 while (!xml.atEnd()) { xml.readNext(); if (xml.isEndElement() && xml.name() == "context") { break; } if (xml.isStartElement() && xml.name() == "message") { // 获取 <source> 和 <translation> 节点的值 QString sourceText; QString translationText; while (!xml.atEnd()) { xml.readNext(); if (xml.isEndElement() && xml.name() == "message") { qDebug() << "Context: " << contextName; qDebug() << "Source Text: " << sourceText; qDebug() << "Translation Text: " << translationText; break; } if (xml.isStartElement() && xml.name() == "source") { sourceText = xml.readElementText(); } if (xml.isStartElement() && xml.name() == "translation") { // 如果 <translation> 节点有 attributes,获取其值 QXmlStreamAttributes attributes = xml.attributes(); if (attributes.hasAttribute("type")) { QString typeValue = attributes.value("type").toString(); qDebug() << "Type: " << typeValue; } translationText = xml.readElementText(); } } } } } } file.close(); return a.exec(); } ``` 此代码将打开名为“myapp_zh_CN.ts”的 .ts 文件,解析其的内容,并输出每个翻译的上下文、源文本和翻译文本。请注意,此示例假定 .ts 文件已经添加Qt 项目并准备好在运行时使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值