欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

KS03-01怎樣實現(xiàn)國際化-創(chuàng)新互聯(lián)

版權聲明

----------------------------------------------------------------

成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供營山網(wǎng)站建設、營山做網(wǎng)站、營山網(wǎng)站設計、營山網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、營山企業(yè)網(wǎng)站模板建站服務,10余年營山做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。

作者: 女兒叫老白

轉(zhuǎn)載請注明出處!

----------------------------------------------------------------

網(wǎng)頁版課程源碼 提取碼:1uy7

--------------------------------------------------------------

引言

----------------------------------------------------------------

如果我們開發(fā)的產(chǎn)品是提供給國外用戶的,這就涉及到中英文問題。比如:如果需要把產(chǎn)品給國外用戶使用,就可能使用英文界面;如果提供給國內(nèi)用戶,就需要使用中文界面。這就帶來一個問題,一套界面兩種語言。這該怎么辦呢?別急,Qt提供了國際化方案來解決這個問題。

正文

----------------------------------------------------------------

Qt的方案稱作國際化。其實也很簡單:把所有需要翻譯的文本放到類中,然后需要提供一個中英文對照的翻譯文件(.qm),最后在程序啟動時加載這個翻譯文件就可以了。

我們看一下詳細步驟:

1)? 在ui或代碼中使用英文。

2)? 在提供翻譯的類中使Q_OBJECT。

3)? pro中添加TRANSLATIONS

4)? 使用lupdate命令,提取待翻譯內(nèi)容到.ts文件。

5)? 添加中英文對照翻譯,并用linguist導出為翻譯文件(.qm文件)。

6)? 程序啟動時加載.qm文件。

下面,我們分步驟詳細介紹。

Step 1, 在ui或代碼中使用英文

首先,我們在繪制ui文件時或者是在編碼時使用英文。在編程時需要調(diào)用所在類的tr()接口。

1.???

m_pLabel2->setText(tr(“this is translated ? by source code”));

tr()接口是QObject類提供的,所以這個類要從QObject派生。如果待翻譯的文本串所在的類不是從QObject派生,那么請使用從QObject派生的類來調(diào)用tr()接口。具體方法在后續(xù)章節(jié)介紹,這里我們先介紹最基本的用法。

Step 2, 在提供翻譯的類中使Q_OBJECT

如果需要我們的類提供翻譯功能,除了讓他從QObject派生,還需要使用Q_OBJECT宏。

???假設我們的類名為CDialog,那么需要在類定義開頭添加Q_OBJECT

?

代碼清單03-01-01

1.?? ? ?

2.?? ? ?

3.?? ? ?

4.?? ? ?

5.?? ? ?

6.?? ? ?

7.?? ? ?

8.?? ? ?

class CDialog : public QDialog{

Q_OBJECT

public:

CDialog(QWidget* ? pParent);

~CDialog();

private:

Ui::CDialog ui;

};

如果不添加Q_OBJECT宏,使用lupdate命令抽取ts文件時將會報錯:

lupdate ks03_01.pro3_01

dialog.cpp:7: ? Class 'CDialog' lacks Q_OBJECT macro Updating 'ks03_01.ts'...

上述錯誤信息的含義是:類CDialog缺少Q(mào)_OBJECT宏。

Step 3, pro中添加TRANSLATTIONS

??? 在ks03_01.pro中添加如下內(nèi)容:

1.?? ? ?

TRANSLATIONS ? += ks03_01.ts

ks03_01.ts是利用lupdate命令抽取的ts文件名。當然也可以帶路徑:

1.?? ? ?

TRANSLATIONS += $$TRAIN_SRC_PATH /translations/ks03_01.ts

表示將抽取得到的ts文件放到項目的src/translations子目錄下,抽取的文件名為ks03_01.ts。

?

Step 4, 使用lupdate命令,提取待翻譯內(nèi)容到.ts文件

執(zhí)行l(wèi)update命令,讀取pro中的配置并且讀取源代碼文件,將待翻譯內(nèi)容抽取到ts文件:

lupdate ? ks03_01.pro

請注意,務必在ks03_01.pro中配置TRANSLATIONS配置項,否則上述命令將執(zhí)行失敗。而且待翻譯類必須使用Q_OBJECT宏。

Step 5,? 添加中英文對照翻譯,并用linguist導出為翻譯文件

抽取完ts文件后,使用linguist界面打開ts文件,手工添加翻譯內(nèi)容,然后導出為qm二進制文件。

添加翻譯時,請將翻譯后的文本寫在:”Translation to 簡體中文(中國)”下面的文本編輯框內(nèi)(如圖03_01_01)。

圖03_01_01

請注意,對標點符號也要一一翻譯。

完成一個翻譯項后,請將”源文”前面的問號(圖03_01_02中虛線位置)改為“√”(鼠標左鍵單擊)。

圖03_01_02

您也可以查看左側(cè)“上下文”框中的內(nèi)容,檢查是否還有未翻譯的項目(前面帶“?”,翻譯完成后的應該帶”√”)。

完成所有翻譯后,請將ts文件發(fā)布為.qm文件。方法是選擇菜單中的“另外發(fā)布為”。然后選擇發(fā)布目錄即可。

比如,我們可以將.qm文件發(fā)布到 $$(PRJROOT)/system/lang目錄下。

Step 6,? 程序啟動時加載.qm文件

我們在main()函數(shù)或其他合適的位置加載qm文件。

1,包含所需的頭文件

1.?? ? ?

2.?? ? ?

3.?? ? ?

#include ? <QApplication>

#include ? <QTranslator>? // 國際化

#include ? <QLibraryInfo> // 國際化

2,加載Qt自身的翻譯文件

Qt自身也提供了一個翻譯文件,用來實現(xiàn)Qt提供的類的翻譯功能。

代碼清單03-01-02

1.?? ? ?

2.?? ? ?

3.?? ? ?

4.?? ? ?

5.?? ? ?

6.?? ? ?

7.?? ? ?

8.?? ? ?

9.?? ? ?

10.?

// 安裝qt自帶的中文翻譯

const QString localSysName

???? = ? QLocale::system().name();// 獲取本機系統(tǒng)的語言環(huán)境

QScopedPointer<QTranslator> ? qtTranslator(new QTranslator(QCoreApplication::instance()));

if ? (qtTranslator->load(QStringLiteral("qt_") + localSysName,

QLibraryInfo::location(QLibraryInfo::TranslationsPath)))

{

QCoreApplication::installTranslator(qtTranslator.take());

}

3,加載項目自己的翻譯文件

代碼清單03-01-03

1.?? ? ?

2.?? ? ?

3.?? ? ?

4.?? ? ?

5.?? ? ?

6.?? ? ?

7.?? ? ?

8.??

9.? ??

10.?

QString strPath = ? qgetenv("TRAINDEVHOME");? // 獲取環(huán)境變量所指向的路徑

strPath += "/system/lang";?????? // ? $TRAINDEVHOME/system/lang/ks03_01.qm

QScopedPointer<QTranslator> ? gpTranslator(new QTranslator(QCoreApplication::instance()));

if (gpTranslator->load("ks03_01.qm", ? strPath))

{

QCoreApplication::installTranslator(gpTranslator.take());

}

?

請注意:

我們可以在自己的ts文件中編寫Qt類的翻譯內(nèi)容哦。比如QMessageBox的“OK”"Cancel"按鈕,我們都可以通過這種方式處理為顯示中文的按鈕。如果我們從designer種拖出QDialogButtonBox(帶OK、Cancel)按鈕,那么翻譯時需要注意,在ts文件中手工添加如下內(nèi)容:

代碼清單03-01-04

1.?? ? ?

2.?? ? ?

3.?? ? ?

4.?? ? ?

5.?? ? ?

6.?? ? ?

7.?? ? ?

8.?? ? ?

9.?? ? ?

10.? ??

11.? ??

12.? ??

13.? ??

14.? ?

15.?

<context>

<name>QPlatformTheme</name>

<message>

<location filename="../src/widgets/qdialogbuttonbox.cpp" ? line="+42"/>

<location line="+18"/>

<source>OK</source>

<translation>確定</translation>

</message>

<message>

<location line="+54"/>

<source>Cancel</source>

<translation>取消</translation>

</message>

</context>

???這時因為在Qt的源代碼里,為QDialogButtonBox的按鈕進行翻譯時,實際使用了QPlatformTheme,見Qt代碼:

QCoreApplication ::translate ("QPlatformTheme" , "OK" )

實際上,這可以作為Qt的補丁。所以,我們最好將其作為Qt自身的翻譯的一個補充,將上述ts文件的內(nèi)容專門保存一個公共的ts文件,供各項目使用。

結(jié)語

----------------------------------------------------------------

國際化在Qt軟件開發(fā)過程中是非常重要的組成部分。即使您目前的代碼沒有推向國外市場,我也建議您養(yǎng)成使用國際化方案進行編程的習慣。因為這樣使您對于國際化編程會比較熟練,而且會形成一種標準化的編程格局,相信對您今后的發(fā)展也是有利的。

----------------------------------------------------------------

《Qt入門與提高-GUI產(chǎn)品開發(fā)》目錄

上一節(jié):KS02-06 一勞永逸:引入pri體系
下一節(jié):

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

本文名稱:KS03-01怎樣實現(xiàn)國際化-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://aaarwkj.com/article30/dshspo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供ChatGPT、網(wǎng)站建設域名注冊、自適應網(wǎng)站網(wǎng)站導航、云服務器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設
又黄又爽又刺激的性视频| 欧美老熟妇一区二区三区| 日韩高清一级黄色大片网站| 免费草b视频在线观看| 熟女一区二区中文字幕| 蜜臀国产综合久久第一页| 18禁黄网站禁片免费视频| 日韩精品视频高清在线观看| 日韩av亚洲在线观看| 欧美亚洲国产青草久久| 美国一级黄片在线观看| 亚洲精品小视频在线观看| 亚洲乱码国产乱码精品| 亚洲香蕉av一区二区蜜桃| 91久久精品国产一区| 午夜一区二区三区精品| 国产无人区码一区二区| 国产婷婷成人久久av免费高清| 日本岛国免费一区二区| 91精品婷婷国产综合| 国产乱国产乱老熟部视频| 国产亚洲欧美另类网爆| 五月婷婷色综合激情五月| 91出品国产福利在线| 成人精品超碰一区二区| 欧美成人精品高清在线| 国产老熟女高潮一区二区| 国产一区二区精品小视频| 亚洲精品一区二区99| 亚洲三级伦理在线视频| 午夜影院免费在线观看五分钟| 免费观看黄片视频在线播放| 国产日韩精品国产二区| 亚洲国产视频不卡一区| 色哟哟在线观看国产精品| 国产女主播精品视频一区| 日韩欧美亚洲制服丝袜| 偷窥偷拍原味一区二区三区| 依依成人影院在线观看av| 日本中文有码在线观看| 日本午夜精品在线观看|