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