1. 程式人生 > >Qt實現多國語言(即介面翻譯)可實時進行切換

Qt實現多國語言(即介面翻譯)可實時進行切換

新建一個Qt Widgets Application的工程,

然後在UI介面上放置QLabel以及一個按鈕

最終要實現點選按鈕,實現QLabel上的文字進行中英切換

大致步驟:

1.由介面的UI資訊,生成ts檔案

2.由ts檔案,翻譯後,生成qm檔案

3.通過程式碼呼叫qm檔案,進行語言切換

然後,在工程的pro檔案下新增:

TRANSLATIONS += qzher_en.ts

再在QtCreate選單中,如下,選擇Update Translations,就會生成一個 qzher_en.ts (此檔案在工程目錄下,即和main.cpp同級)

我們可以用記事本開啟此ts檔案,內容大致如下:

它主要是一個xml檔案,裡面包含了UI所有的文字資訊

下一步,則需要將此文字資訊進行對應地進行翻譯

Linux下,則開啟安裝目錄下的: linguist

Windows則在開始選單中可以找到:

在開啟的Liguist,把上一步生成的qzher_en.ts開啟,選擇Source text 進行逐個翻譯

翻譯完後,將 qzher_en.ts 進行儲存

然後再回到QtCreate中,點選Release Translations

通過此步,可以實現qzher_en.ts 生成一個對應的 qzher_en.qm

此 qm 檔案,即最終需要的,它為一個二進位制檔案,包含需要的多國語言翻譯資訊

有了翻譯資訊後,再進行軟體的翻譯處理。

在此,通過一個按鈕點選進行實時切換:

核心程式碼:

通過一個變數控制中英文來回切換,並能通過一個按鈕開啟翻譯網站

#include<QApplication>

voidMainWindow::onTranslation()

{

if(!m_bTranslator)

{

//翻譯檔案

m_qtTranslator.load(":/qzher_en.qm");

qApp->installTranslator(&m_qtTranslator);

ui->retranslateUi(this);

}

else

{

qApp->removeTranslator(&m_qtTranslator);

ui->retranslateUi(this);

}

m_bTranslator=!m_bTranslator;

}

#include<QDesktopServices>

#include<QUrl>

voidMainWindow::onOpenLink()

{

QDesktopServicesserver;

server.openUrl(QUrl("http://www.shicimingju.com/chaxun/list/25681.html"));

}

只進行了詩詞的翻譯,按鈕的文字未進行翻譯,所以按鈕一直沒變,當然,按鈕也可以進行翻譯,內容和詩詞一樣

青哲科技 致力於良心IT教育 

深圳QQ群: 3260 23167