qt國際化翻譯功能用法

文章目錄

    • @[toc]
    • 1 概述
    • 2 設置待翻譯文本
    • 3 生成ts翻譯源文件
    • 4 編輯ts翻譯源文件
    • 5 生成qm翻譯二進制文件
    • 6 加載qm翻譯文件進行翻譯


更多精彩內容
👉內容導航 👈
👉Qt開發經驗 👈

1 概述

在 Qt 中,ts 文件和 qm 文件是用于國際化和本地化的關鍵文件。以下是它們的詳細說明:

ts 文件

  • 用途: ts 文件是 Qt 的翻譯源文件,存儲了應用程序中需要翻譯的字符串及其翻譯內容。
  • 格式: 它是基于 XML 的文本文件,便于編輯和版本控制。
  • 內容:
    • 包含原始字符串(source)和翻譯后的字符串(translation)。
    • 還可能包含上下文(context)信息,用于區分不同模塊中的相同字符串。
  • 生成方式:
    • 使用 Qt 提供的工具 lupdate 從源代碼中提取需要翻譯的字符串,生成 .ts 文件。
    • 示例命令:lupdate myproject.pro -ts translations/myproject_zh_CN.ts
  • 編輯方式:
    • 可以使用 Qt 提供的翻譯工具 Qt Linguist 進行翻譯。
    • 也可以手動編輯,因為它是 XML 格式。

qm文件

  • 用途: qm 文件是 Qt 的翻譯二進制文件,供應用程序運行時加載使用。
  • 格式: 它是 .ts 文件的編譯版本,體積更小,加載速度更快。
  • 生成方式:
    • 使用 Qt 提供的工具 lrelease.ts 文件編譯為 .qm 文件。
    • 示例命令:lrelease translations/myproject_zh_CN.ts

文件對比

特性TS文件QM文件
可編輯性可人工編輯不可編輯
文件格式XML文本二進制
生成階段開發階段構建/發布階段
文件大小較大(含元數據)較小(優化存儲)
運行時依賴不需要必需
環境說明
系統windows11
Qt5.14.2、6.8
IDEqtcreator14

2 設置待翻譯文本

  1. 創建一個Qt工程;

    在這里插入圖片描述

  2. 在UI文件中添加的文本都可以被翻譯;

    在這里插入圖片描述

  3. 如果在QObject類的子類中,需要使用tr()包含文本才可以被翻譯;

    在這里插入圖片描述

  4. 如果在普通函數、或者不是QObject子類的類中,就不能直接使用tr()函數包含待翻譯的文本了,可以使用下面幾種方式;

    在這里插入圖片描述

3 生成ts翻譯源文件

方法1:

  • 鼠標右鍵【添加新文件】;

    在這里插入圖片描述

  • 選擇【Qt】【Qt Translation File】;

    在這里插入圖片描述

  • 選擇語言,例如下圖中選擇English就可以將Qt中文本翻譯位英文。

    在這里插入圖片描述

方法2:

  • 打開.pro文件,添加如下所示代碼,建議文件名包含語言和地區的代碼(zh_CNen_US等),會更加名稱中縮寫推理出適用于什么語言翻譯。

    TRANSLATIONS += \untitled9_en_US.ts\a_zh_CN.ts\b_zh_CN.ts
    
  • 然后鼠標選擇【工具】【外部】【Linguist】【lupdate】;

    在這里插入圖片描述

  • 就可以在工程路徑下生成對應的ts文件了;

    在這里插入圖片描述

4 編輯ts翻譯源文件

  1. 鼠標選擇ts文件,右鍵【Qt語言家】打開ts文件;

    在這里插入圖片描述

  2. 如下圖所示,Qt UI界面中的文本或者使用tr() QCoreApplication::translate()包含的文件就可以在語言家中呈現。

    在這里插入圖片描述

  3. 然后如下圖所示,將中文文本翻譯為英文文本,填入對應位置;

    在這里插入圖片描述

  4. 填寫完翻譯后,點擊工具欄中的,就可以將選中的文本標記為已完成。

    在這里插入圖片描述

5 生成qm翻譯二進制文件

  1. 編寫完成ts文件后,鼠標點擊【工具】【外部工具】【Linguist】【lrelease】,就可以將ts文件生成為qm文件。

    在這里插入圖片描述

  2. 生成的qm文件如下所示;

    在這里插入圖片描述

6 加載qm翻譯文件進行翻譯

  • 如下所示,使用QTranslator加載qm翻譯文件;

    #include "widget.h"#include <QApplication>
    #include <QDebug>
    #include <QTranslator>int main(int argc, char* argv[])
    {QApplication a(argc, argv);QTranslator translator;if (translator.load("E:/test/untitled9/untitled9_en_US.qm")){qDebug() << "加載成功";QCoreApplication::installTranslator(&translator);}else{qDebug() << "加載失敗";}qDebug() << "main函數1";qDebug() << QObject::tr("main函數2");qDebug() << QCoreApplication::tr("main函數3", "描述信息");qDebug() << QCoreApplication::translate("main", "main函數4");qDebug() << QCoreApplication::translate("main", "main函數5", "描述信息");Widget w;w.show();return a.exec();
    }
  • 注意:

    • 必須先調用installTranslator()再創建UI對象;
    • 多個翻譯器會疊加生效,后加載的優先;
  • 也可以使用QString locale = QLocale::system().name(); // 獲取系統語言,例如 "zh_CN"獲取操作系統語言來選中使用的qm文件;

  • 加載qm翻譯文件成功后如下所示,在ts文件中填寫了翻譯信息的就會被翻譯。

    在這里插入圖片描述

  • 如果在程序運行時動態切換語言,需要調用 retranslateUi() 方法刷新界面。例如:

    ui->retranslateUi(this);
    


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/79689.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/79689.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/79689.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PyTorch 與 TensorFlow 中基于自定義層的 DNN 實現對比

深度學習雙雄對決&#xff1a;PyTorch vs TensorFlow 自定義層大比拼 目錄 深度學習雙雄對決&#xff1a;PyTorch vs TensorFlow 自定義層大比拼一、TensorFlow 實現 DNN1. 核心邏輯 二、PyTorch 實現自定義層1. 核心邏輯 三、關鍵差異對比四、總結 一、TensorFlow 實現 DNN 1…

1ms城市算網穩步啟航,引領數字領域的“1小時經濟圈”效應

文 | 智能相對論 作者 | 陳選濱 為什么近年來國產動畫、國產3A大作迎來了井噴式爆發&#xff1f;拋開制作水平以及市場需求的升級不談&#xff0c;還有一個重要原因往往被大多數人所忽視&#xff0c;那就是新型信息的完善與成熟。 譬如&#xff0c;現階段驚艷用戶的云游戲以及…

【計算機視覺】語義分割:Segment Anything (SAM):通用圖像分割的范式革命

Segment Anything&#xff1a;通用圖像分割的范式革命 技術突破與架構創新核心設計理念關鍵技術組件 環境配置與快速開始硬件要求安裝步驟基礎使用示例 深度功能解析1. 多模態提示融合2. 全圖分割生成3. 高分辨率處理 模型微調與定制1. 自定義數據集準備2. 微調訓練配置 常見問…

機器學習例題——預測facebook簽到位置(K近鄰算法)和葡萄酒質量預測(線性回歸)

一、預測facebook簽到位置 代碼展示&#xff1a; import pandas as pd from sklearn.preprocessing import StandardScaler from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import…

對ubuntu的簡單介紹

目錄 1. 簡介 2. 核心特點 3. 系統架構與技術亮點 4. 適用場景 5. 優缺點分析 6. 安裝與配置建議 7. 未來發展方向 總結 1. 簡介 Ubuntu 是基于 Debian 的開源 Linux 操作系統&#xff0c;由 Canonical 公司&#xff08;創始人 Mark Shuttleworth&#xff09;提供商業支…

多商戶電商系統整套源碼開源,支持二次開發,構建多店鋪高效聯動運營方案

在數字化浪潮席卷全球的今天&#xff0c;電商行業競爭愈發激烈&#xff0c;多商戶電商平臺憑借其獨特的生態優勢&#xff0c;成為眾多企業和創業者的熱門選擇。一套優質的多商戶電商系統不僅能為商家提供穩定的銷售渠道&#xff0c;還能為平臺運營者創造巨大的商業價值。分享一…

Qwen3與Deepseek R1對比(截止20250506)

Qwen3和DeepSeek R1都是在AI領域內備受關注的大規模語言模型。根據最近的評測和報道&#xff0c;以下是Qwen3與DeepSeek R1的一些對比要點&#xff1a; 全面性能&#xff1a; Qwen3被描述為在數學、推理、代碼等核心能力上全面超越了DeepSeek R1。特別是在編程能力方面&#x…

Linux56 YUM源配置

epel未啟動 顯示系統未通過注冊 配置YUM倉庫 本地YUM倉庫 1.備份 tar -zcf repo.tar.gz *.repo 2.掛載 mount -o ro /dev/sr0 /mnt 3.開機自啟 chmod x /etc/rc.local echo ‘mount -o ro /dec/sr0 /mnt’ /etc/rc.local 4.編寫本地YUM倉庫 local.repo [local] namelocal yum …

二叉樹—中序遍歷—非遞歸

初始狀態 假設當前從根節點 b 開始&#xff0c;此時棧為空 。 第一步&#xff1a;處理根節點 b 的左子樹 調用 goAlongLeftBranch 函數&#xff0c;從節點 b 開始&#xff0c;因為 b 有左子樹&#xff08;節點 a &#xff09;&#xff0c;將 b 入棧&#xff0c;此時棧&#…

R 語言科研繪圖第 45 期 --- 桑基圖-和弦

在發表科研論文的過程中&#xff0c;科研繪圖是必不可少的&#xff0c;一張好看的圖形會是文章很大的加分項。 為了便于使用&#xff0c;本系列文章介紹的所有繪圖都已收錄到了 sciRplot 項目中&#xff0c;獲取方式: R 語言科研繪圖模板 --- sciRplothttps://mp.weixin.qq.c…

ARM 流控制指令

計算機按照嚴格的順序執行指令。流控制改變了默認的順序執行方式。前面已 經介紹了強制跳轉到程序中某個非順序位置的無條件分支。以及依據測試結果 進行跳轉的條件分支。這里將介紹子程序調用和返回指令&#xff0c;它們會跳轉到一個 指令塊、執行這些指令&#xff0c;然后返回…

PDF內容搜索--支持跨文件夾多文件、組合詞搜索

平時我們接觸到的PDF文檔特別多&#xff0c;需要對PDF文檔做一些處理&#xff0c;那么今天給大家帶來的這兩個軟件非常的棒&#xff0c;可以幫你提升處理文檔的效率。 PDF內容搜索 快速檢索 我用夸克網盤分享了「PDF搜索PDF 轉長圖.zip」&#xff0c;點擊鏈接即可保存。打開「…

個人Unity自用面經(未完)

目錄標題 1.在 2D 平臺跳躍游戲項目中&#xff0c;你使用了對象池來生成和回收怪物包含陣亡的動畫預制件。在對象池回收對象時&#xff0c;如何確保動畫狀態被正確重置&#xff0c;避免下次使用時出現異常&#xff1f;2.在僵尸吃腦子模擬項目中&#xff0c;你創建了繼承于IAspe…

【計網】ICMP、IP、Ethernet PDU之間的封裝關系

TCP/IP體系結構 應用層RIP、OSPF、FTP運輸層TCP、UDP網際層IP、ARP、ICMP網絡接口層底層協議&#xff08;Ethernet&#xff09; 數據鏈路層 Ethernet報文格式 6Byte6Byte2Byte46~1500Byte4Byte目的MAC地址源MAC地址類型/長度數據FCS 其中&#xff0c;類型 / 長度值小于 1536…

前端取經路——入門取經:初出師門的九個CSS修行

大家好&#xff0c;我是老十三&#xff0c;一名前端開發工程師。CSS就像前端修行路上的第一道關卡&#xff0c;看似簡單&#xff0c;實則暗藏玄機。在今天的文章中&#xff0c;我將帶你一起應對九大CSS難題&#xff0c;從Flexbox布局到響應式設計&#xff0c;從選擇器優先級到B…

n8n工作流自動化平臺的實操:Cannot find module ‘iconv-lite‘

解決問題&#xff1a; 1.在可視化界面&#xff0c;執行const iconv require(iconv-lite);&#xff0c;報Cannot find module iconv-lite [line 2]錯誤&#xff1b; 查看module的路徑 進入docker容器 #docker exec -it n8n /bin/sh 構建一個test.js,并寫入如何代碼 vi tes…

如何在 PowerEdge 服務器上設置 NIC 分組

以下文章提供了有關 Windows、VMware 和 Linux 中的 NIC 分組的信息。 什么是網絡適配器分組&#xff1f;設置 NIC 分組 Windows設置 NIC 分組 VMware設置 NIC 分組 Linux 什么是網絡適配器分組&#xff08;綁定&#xff09;&#xff1f; 網絡適配器分組是一個術語&#xff0…

【Java ee初階】多線程(5)

一、wait 和 notify wait notify 是兩個用來協調線程執行順序的關鍵字&#xff0c;用來避免“線程餓死”的情況。 wait 和 notify 其實都是 Object 這個類的方法&#xff0c;而 Object這個類是所有類的“祖宗類”&#xff0c;也就是說明&#xff0c;任何一個類&#xff0c;都…

基于k8s的Jenkins CI/CD平臺部署實踐(二):流水線構建與自動部署全流程

基于k8s的Jenkins CI/CD平臺部署實踐&#xff08;二&#xff09;&#xff1a;流水線構建與自動部署全流程 文章目錄 基于k8s的Jenkins CI/CD平臺部署實踐&#xff08;二&#xff09;&#xff1a;流水線構建與自動部署全流程一、Jenkins簡介二、系統架構與環境說明1. 系統架構2.…

《Windows 環境下 Qt C++ 項目升級 GCC 版本的完整指南》

Windows 環境下 Qt C++ 項目升級 GCC 版本的完整指南 在 Windows 系統中升級 Qt C++ 項目的 GCC 版本需要同時考慮 Qt 工具鏈、MinGW 環境以及項目配置的調整。以下是詳細的升級步驟和注意事項: 一、升級前的準備工作 1. 確認當前環境 檢查 Qt 版本(建議使用 Qt 5.15+ 以獲…