1. 在程式中所有要翻譯的文字都必須在 QObject::tr()之中
ex:
QMessageBox msgb(this);
msgb.setWindowTitle(tr("Illegal"));
msgb.setText(tr("Illegal product!"));
msgb.setIcon(QMessageBox::Warning);
msgb.exec();
2. 在.pro檔中,設定預計產生的翻譯檔語系名稱及其位置 (本例名稱為 test.pro)
ex:
TRANSLATIONS += ./translations/test_en.ts ./translations/test_tw.ts ./translations/test_jp.ts ./translations/test_cn.ts
3. 執行 lupdate 產生 .ts檔
ex:
lupdate test.pro
4. 使用 Qt Linguist 編輯.ts檔
5. 使用 lrelease 產生 .qm檔
ex:
lrelease ./translations/*.ts
6. copy .qm檔到你所指定的目錄
ex: cp -ax ./translations/*.qm /home/daniel/language/qm/*
7. 在主程式 main當中,依據需求載入你所需的qm檔
ex:
QTranslator translator, defTrans;
QLocale g_sysLocale;
//繁體中文
translator.load("test_tw", "/home/daniel/language/qm");
defTrans.load("qt_zh_TW", "/home/daniel/language/qm");
app.installTranslator(&translator);
app.installTranslator(&defTrans);
g_sysLocale = QLocale(QLocale::Chinese, QLocale::Taiwan);
// 簡體中文
/*
translator.load("test_cn", "/home/daniel/language/qm");
defTrans.load("qt_zh_CN", "/home/daniel/language/qm");
app.installTranslator(&translator);
app.installTranslator(&defTrans);
g_sysLocale = QLocale(QLocale::Chinese, QLocale::China);
*/
QLocale::setDefault(g_sysLocale);
MainWindow mainWin(0);
mainWin.setLocale(g_sysLocale);
mainWin.start();
return app.exec();
8. 所有包在 QObject::tr()中的字串,就會依照所載入的qm檔,做文字置換動作
搜尋此網誌
2011年9月29日 星期四
2011年9月19日 星期一
如何在QT中將QVariant轉換成定義在QtGui中的資料型態 (如 QColor...等),或自定型別
因為QVariant是QtCore庫的一部分,它不能夠提供定義在QtGui當中的類型(如 QColor)的轉換
如要轉換,方法式將其轉換至指定的樣版型別,如下所示,(PS:自訂型別方法相同):
QColor color = variant.value();
不過在轉換之前最好先用canConvert()的函式來檢查是否可提供該型別轉換,如下所示:
if (variant.canConvert()) {
QColor color = variant.value();
}
反向轉換(如把QColor轉成QVariant)則和一般的型態(非定義在QtCui或自訂型別)是一樣的
如要轉換,方法式將其轉換至指定的樣版型別,如下所示,(PS:自訂型別方法相同):
QColor color = variant.value
不過在轉換之前最好先用canConvert()的函式來檢查是否可提供該型別轉換,如下所示:
if (variant.canConvert
QColor color = variant.value
}
反向轉換(如把QColor轉成QVariant)則和一般的型態(非定義在QtCui或自訂型別)是一樣的
訂閱:
文章 (Atom)