VS Qt國際化操作

開發一個軟件的時候有時候會遇到需要進行國際化的操作,也就是說一些顯示可能因爲需求而要改爲另一種語言,像一些常見的軟件是會提供一些語言包,然後再軟件中加載就可以更換顯示語言了,今天這一篇講的就是這個,而且暫時針對VS下開發Qt而言,如果在Qt Creator上開發的話,可能會有不同,但是大致還是一樣的。

在VS上開發Qt的項目的話是,Qt的VS插件是很有用的,現在我們的國際化操作也是要依賴這一個小插件的,這裏以VS2013爲例(VS2015基本上是一樣的),VS2013安裝好Qt的插件之後位於下圖的位置:

 

待我們寫好一個Qt項目之後就可以使用插件生成一個翻譯文件。

簡單寫一個超級簡單的空白界面,我只設置標題,代碼如下:

this->setWindowTitle(tr("bearoom"));

這裏要說明的就是需要翻譯的字符串是要用tr()包裝起來的,如上面的tr("bearoom"),然後運行一下確認是英文沒錯吧:

 

接下來就要生成一個翻譯文件啦,就是直接點第一張圖片的插件的選項,然後會彈出一個窗口選擇語言和文件名:

 

這裏我選擇中文簡體,中國的,確定之後就會在工程下生成這個文件:

 

然後在VS打開該文件,一般會默認用Qt的Linguist打開,如下:

 

然後就要可以看到我代碼裏面有哪些字符串被tr()包圍着的,然後選擇該字符串,並在下方輸入中文翻譯:

 

翻譯好了之後我們需要講文件發佈出來,也就是release需要注意這裏不是保存,而是release爲一個qm文件:

 

release之後可以看到工程目錄下多了一個qm文件:

 

這個不是在VS中,而是在工程的文件夾下的,然後需要翻譯的時候就加載這個文件即可,加載的代碼如下:

    #include <QTranslator>
    
    int main(int argc, char *argv[])
    {
    	QApplication a(argc, argv);
    
    	QTranslator *tran = new QTranslator;
    	tran->load("qt5_ch01_zh.qm");
    	a.installTranslator(tran);
    
    	qt5_ch01 w;
    	w.show();
    	return a.exec();
    }

然後運行程序的時候就可以看到標題已經被翻譯了

這裏我覺得需要注意的點是寫代碼的時候一定要用英文來寫,包括軟件上顯示的名稱都要用英文來命名比較好,然後需要顯示爲中文的時候就使用這種方法來實現,如果一開始就用中文的話,要把工程轉到Linux下開發的時候就很尷尬了,可能存在編碼問題,因爲VS一般默認是用GB2312來編碼,如果在Linux下用UTF-8的話是可以轉的,但是cpp文件或.h文件就是亂碼了,反而比較麻煩。

不恨天涯行役苦,

只恨西風,吹夢成今古。

明日客程還幾許,

沾衣況是新寒雨。

 

發佈了103 篇原創文章 · 獲贊 12 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章