Qt翻譯檔案結合VS實現語言切換(多語言國際化)

2021-08-04 22:48:33 字數 2403 閱讀 4107

qt

多語言國際化主要體現在介面的語言切換,

語言切換的主體,即介面中需要翻譯的元素,要放在

qobject::tr()

」、「qobject::trutf8()」函式;確定了翻譯的主體後,就要對這些待翻譯元素進行翻譯,完成翻譯後會生成

qm檔案;當介面要切換語言時,只需要載入

qm檔案即可。

翻譯的過程主要分三步:

1.  lupdate:提取待翻譯元素,生成

ts中間檔案

2.  寫翻譯內容:將

ts檔案中所有提取出來的待翻譯元素進行翻譯

3.  lrelease:將翻譯好的檔案生成

qm檔案

作用:通過查詢qm檔案,返回sourcetext的翻譯文字

(當安裝了多個qm檔案時,查詢順序類似於棧的先進後出儲存模式:即先

搜尋最近安裝的qm檔案

,再搜尋之前

安裝的qm檔案)

引數說明:

(1)  context通常是乙個類名(例如,

「mydialog」

);(2)  sourcetext是

待翻譯文字內容;

(3)  comment是消除歧義的注釋,當相同的

sourcetext

在同樣的上下文情況下被用在不同的規則中

,預設情況下是零;

(4)  encoding表明字串

的編碼方式。

返回值:如果qm檔案中沒有包含context中

sourcetext

的翻譯,這個函式返回乙個和

sourcetext

相等的qstring

。sourcetext的編碼方式由

encoding

指定,它預設為

defaultcodec。

應用:

接下來看乙個例子(vs+qt):

在vs中新建乙個

qtgui

工程,通過

qt designer

選擇擺放控制項,修改

text

顯示內容,編譯工程,可以在

ui_***x.h

(根據ui

接下來生成ts檔案:

工程右鍵->「create new translation file」->選擇你想生成的語言,比如

demo

中原始控制項

text

為英文,要翻譯成中文,那麼

language

就選擇「中文(簡體,中國)」

此時工程目錄下會多一項translation files,裡面有

*.ts

檔案,當**中又增加了新的待翻譯元素時,右鍵這個ts檔案

->lupdate,即可將新增加的待翻譯元素更新到ts檔案中

接下來用qt linguist開啟

ts檔案,將待翻譯元素依次翻譯後儲存即可,或者可以直接使用文字編輯器開啟

ts檔案,每乙個

標籤內為乙個待翻譯元素,將翻譯寫到

標籤中儲存,

qt linguist

和文字編輯器都可以完成翻譯的操作,

在已經翻譯完成的ts檔案上右鍵

->irelease,即可生成*.qm檔案

生成了qm檔案後,就可以在程式中需要實現翻譯的位置載入該

qm檔案進行語言切換了:

qtranslator* translator = null;

//qm檔案的載入:

translator = new qtranslator;

if (translator->load("test_zh.qm"))

ui.retranslateui(this);

//qm檔案的刪除:

if (translator != null)

ui.retranslateui(this);

效果如下:

上圖中的demo可以在

vs2015+qt5.8.0

環境下直接編譯執行,如果開發平台版本不同,改一下專案屬性和

qt)。

注:qt只能翻譯字串,不能翻譯變數,即不存在tr(str),至於原因,就是你都不確定你要翻譯的是什麼(變數),qt linguist也就自然不知道為你提取出什麼來。。

qt 增加的翻譯沒有作用上 Qt翻譯檔案使用方法

1 在程式中載入翻譯檔案 qtranslator translator new qtranslator installtranslator translator 2 編輯.pro檔案 3 載入或生成新的ts檔案 ts是可讀的翻譯檔案,使用簡單的xml格式 4 編輯ts檔案 1 接上,在命令列視窗中執...

發布QtCsv檔案轉語言翻譯檔案工具

將csv格式檔案轉換為qm翻譯檔案,中間無需干預手動干預ts檔案即可完成翻譯檔案的製作。我們做qt翻譯檔案時候一般使用lupdate xx.pro生成ts檔案,再根據翻譯使用qt linguist manual工具修改ts後再使用lrelease ts生成對應的qm檔案。這一過程略顯繁瑣,作者的本意...

vs中結合Qt的UI檔案生成moc檔案的方法

前言 一點關於moc的小知識 qt是乙個跨平台的可提供使用者介面的應用程式開發框架,用於開發圖形使用者介面 gui 或非圖形使用者介面。qt使用標準的c 擴充套件包括訊號與插槽,是物件導向的框架,可生成特殊的元物件編譯器 meta object compiler,moc 易於擴充套件並且允許元件程式...