方法一:使用tr()函式
qt中,用qstring儲存所有可見得文字/字串,使用tr()將各種字元編碼的文字轉化為qstring,然後既可以將他們設定為控制項的顯示文字。
在widget的建構函式中加入:
qtextcodec::setcodecfortr(qtextcodec::codecforname("gbk"));
qfont font1("times", 12, qfont::normal, false);
this->setfont(font1);
這樣在該窗體的其他位置,可以使用tr()設定控制項的內容,他們均可以顯示為中文了。
setwindowtitle(tr("訊息嗅探器"));
注意:這種方式設定的中文顯示對於整個控制項,以及它們的子控制項都生效。如果在子控制項中另外設定了setfont(),那麼全域性的字型方案將會失效。
方法二:使用translate()轉換
先將需要顯示的中文轉化為gbk編碼的unicode,然後將unicode轉化為qbytearray,在將只轉化為char指標,並傳遞給translate()函式。
注意:這種方法顯示中文時,會出現失效的情況。譬如在選單欄中可以顯示中文,但是在label或者button中卻無法顯示中文。
另外,這種方法僅僅建議只有少數按鈕顯示中文時選用,否則,**寫得也麻煩呀。
如果使用qdesigner生成的ui檔案,後建立的介面類,一般都有乙個retranslateui,就是做這個用的。
const char * stringtounicode(const char *str)
static qtextcodec *codec = qtextcodec::codecforname("gbk");
qbytearray qba = (codec->tounicode(str)).tolocal8bit();
const char * c_str = qba.data();
return c_str;
qtextcodec用於在不同的編碼方案之間進行轉換。
方法三:使用linguist
這是qt自帶的用於軟體本地化的軟體的工具。沒仔細研究過。
這種方式可以用於外文軟體的本地化,那麼相比於前兩者方式,處於更高的層次。
延生一:編寫多語言版本的qt程式
(本部分內容參考qt手冊internationalization一節)
在方法一和方法二種,仍然是乙個程式對應乙個語言。如果希望qt程式針對不同的語言,有不同的版本,該如何操作?
準備乙個.pro檔案,如:
headers = funnydialog.h /
wackywidget.h
sources = funnydialog.cpp /
main.cpp /
wackywidget.cpp
forms = fancybox.ui
1. 使用lupdate,從qt程式中抽取可轉換的文字,生成乙個ts檔案。
2. 使用linguist工具,在原始文字間轉換。ts檔案以xml格式儲存,可以手動修改。
3. 執行lrelease,生成輕量級的qm格式的訊息檔案。這種檔案可以在程式中使用。
遊戲實現多語言版本 國際化
自從換了專案組之後一直都很忙,沒什麼時間寫部落格了,目前這個專案是自己挑的,希望多花點時間,把它做好。因為專案還沒有對外公開,關於專案就不透露資訊,只能說一些實現方式。到新專案之後第乙個著手做的就是多語言版本,也就是國際化。多語言的實現最基本的實現方式就是根據id去讀語言配置,不同的語言新建乙個語言...
Qt多國語言國際化
ubuntu14 qt5.7 1 tr 如tr text hello hello1 hello1指當找不到對應翻譯內容時的預設內容 指示出哪些需要翻譯 2 ts檔案 第一步需要在,pro檔案中寫明哪幾種ts檔案 translations lang en.ts lang zh.ts lang la.t...
QT國際化支援
為了是我們的qt程式支援如中文等其他語言,通常的做法是在需要翻譯的地方顯示的用tr標記,所以你在閱讀其他人編寫的源程式時會看到很多字串做了tr標記,這樣做是有原因的。1.在hello.pro檔案中增加 translations hello zh cn.ts 2.進入工程目錄,執行 lupdate h...