Qt 國際化語言版本

2021-05-22 00:59:19 字數 1628 閱讀 2236

方法一:使用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...