• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 319, comments - 22, trackbacks - 0, articles - 11
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            關(guān)于QT 多語言支持

            Posted on 2011-05-12 07:21 RTY 閱讀(975) 評論(0)  編輯 收藏 引用 所屬分類: Qt
            1.程序中要國際化的靜態(tài)字符串用tr()<源代碼是latin1字符串時>及trUtf8()<源代碼不是latin1字符 時>

            2.動態(tài)string用qstring的arg()方法,如tr("host %1 found").arg(hostname),所謂動態(tài)是指需要參數(shù)生成字符串

            3.在用tr轉(zhuǎn)換變量之前,變量用QT_TR_NOOP,此方法用在靜態(tài)字符串?dāng)?shù)組上
              如: static const char *greeting_strings[] = {
                     QT_TR_NOOP("Hello"),
                     QT_TR_NOOP("Goodbye")
                 };
                 tr(greeting_strings[0]);
             
            4.宏QT_NO_CAST_FROM_ASCII強(qiáng)制tr檢查

            5. QTextCodec及QTextStream提供不同的字符編碼支持。app可能偶爾需要輸入輸出不同于locale編碼的字符編碼。
            app運行時,系統(tǒng)的locale決定了8-bit 數(shù)據(jù)的8-bit 編碼方式。
            當(dāng)app在Cyrillic KOI8-R locale (the de-facto standard locale in Russia)需要輸出Cyrillic in the ISO 8859-5 encoding,可用如下參考代碼:
            QString string = ...; // some Unicode text
             QTextCodec *codec = QTextCodec::codecForName("ISO 8859-5");
             QByteArray encodedString = codec->fromUnicode(string);
              從Unicode轉(zhuǎn)化到local 8-bit 編碼,一個簡便方法是用QString::toLocal8Bit(),另一個是用 QString::toUtf8()
              煩方向的轉(zhuǎn)換有 QString::fromUtf8() and QString::fromLocal8Bit(),或更通用的從ISO 8859-5 Cyrillic到Unicode的轉(zhuǎn)換:
                QByteArray encodedString = ...; // some ISO 8859-5 encoded text
             QTextCodec *codec = QTextCodec::codecForName("ISO 8859-5");
             QString string = codec->toUnicode(encodedString);
             
            QTextCodec::codecForLocale()返回的編碼方式是最可能需要支持的編碼方式,因為用戶最可能使用它與其他人分享交流文檔。

            如果tr中不是latin1,在.qro中增加codecfortr = utf-8指明字符編碼,在main中也應(yīng)QTextCodec::setCodecfortr


            6.QApplication::setLayoutDirection可以設(shè)置書寫方向

            7.可以把qm文件放在exe中,可以用qt的資源系統(tǒng)

            8. 在app中用QTranslator::load()及QCoreApplication::installTranslator()根據(jù)用戶語言加載語 言文件.
            qt可以安裝多個QTranslator
            int main(int argc, char *argv[])
             {
                 QApplication app(argc, argv);

                 QTranslator qtTranslator;
                 qtTranslator.load("qt_" + QLocale::system().name(),
                         QLibraryInfo::location(QLibraryInfo::TranslationsPath));
                 app.installTranslator(&qtTranslator);

                 QTranslator myappTranslator;
                 myappTranslator.load("myapp_" + QLocale::system().name());
                 app.installTranslator(&myappTranslator);

                 ...
                 return app.exec();
             }

            9.qlocale可以指定數(shù)字和日期時間。其他locale信息可用C++標(biāo)準(zhǔn)函數(shù)setlocale或localeconv
            10.icon的國際化,可在qre文件中用lang屬性:
            如<qreresource>
             </qreresource>
             <qreresource lang="es">
             </qreresource>
            11. 1)在.qro中增加欲支持的語言,
              TRANSLATIONS=app-cn.ts \
              app-fr.ts \
              app-ca.ts

             2)lupdate提取所有的tr中的字符形成qm文件
             3)用qt linguist轉(zhuǎn)換不同語言
             
             4)用lrelease把.ts文件轉(zhuǎn)換成二進(jìn)制的.qm文件

            国产精品福利一区二区久久| 亚洲国产精品久久久久婷婷老年| 亚洲国产成人久久精品动漫| 亚洲中文字幕无码一久久区| 伊人色综合久久天天人守人婷 | 国产高潮国产高潮久久久| 亚洲国产精品嫩草影院久久| 精品无码久久久久久久久久| 97精品国产97久久久久久免费| 久久久精品免费国产四虎| 91久久精品国产成人久久| 久久国产成人午夜AV影院| 欧美性猛交xxxx免费看久久久| 色老头网站久久网| 伊人久久综合精品无码AV专区| 精品一二三区久久aaa片| 久久久久亚洲AV片无码下载蜜桃 | 精品久久久久久中文字幕大豆网| 伊人久久无码精品中文字幕| 久久精品国产亚洲AV久| 91久久精品91久久性色| 伊人色综合久久天天| 一本大道久久东京热无码AV| 99久久精品免费看国产一区二区三区 | 热久久这里只有精品| 三级片免费观看久久| 精品久久人人爽天天玩人人妻| 精品久久久久久无码专区 | 久久91精品国产91久久户| 久久精品国产99久久香蕉| 久久精品国产色蜜蜜麻豆| 久久国产精品99久久久久久老狼 | 欧美粉嫩小泬久久久久久久| 久久久久久久女国产乱让韩| 国产精品久久久久久一区二区三区| 久久国产香蕉视频| 久久精品无码专区免费东京热| 久久国产午夜精品一区二区三区| 性欧美大战久久久久久久久| 久久国产精品偷99| 高清免费久久午夜精品|