linux和vs中 qt程序中文国际化

VS2010中:

(1)  创建**.ts文件。


VS2010中可以直接使用菜单【QT】-->【Create new translations File】创建,如果文件已经存在,可以通过图1.1菜单进行更新。)


    linux和vs中 qt程序中文国际化_第1张图片

              图  1.1



(2)  接下来,打开***.ts文件,选择"open with(打开方式)",选择Qt Linguist,如果不存在"Qt Linguist",则选择"添加",选择”D:\qt\4.8.5\bin\linguist.exe“,并设置为默认值,打开后,进行手动一句一句的翻译。


      若是打开qrc文件,则选择打开方式,找到Qt4VSAddin下面的qrceditor.exe(我的路径:D:\software\program files\Qt4VSAddin\qrceditor.exe),用此软件打开即可。


(3)  VS2010中可以使用图1.1中的菜单lrelease来实现。


 使用lrelease工具发布翻译文件的二进制文件,这样在程序运行时载入会大大的加快速度。


(4)  加载*.qm文件。程序可以通过两种方式加载翻译文件,一种硬编码方式,直接指定加载的语言,代码如下:

int main(int argc,char* argv[])

{

         QApplication app(arcg,argv);

         QTranslator translator;

         translator.load(“basicdraw_zh_CN”);

         app.installTranslator(&translator);

}

另外一种是自动判断翻译当前的locale,再装入相应的翻译文件,如下所示:

int main(int argc,char* argv[])

{

         QApplication app(arcg,argv);

         QString locale = QLocale::system().name();//获取计算机系统本身的语言

         QTranslator translator;

         //translator.load(QString(“basicdraw_”) + locale);

        translator.load(QString(":/faultrecordwave_%1.qm").arg(QLocale::system().name()));//相对路径,是相对.exe文件的路径

         app.installTranslator(&translator);

}

其中QLocale::system().name()返回以“语言_国家”形式形成的字符串,比如zh_CN

至于通过控件,比如ComboBox选择语言,并实现动态切换,以后再讨论。


另外,写成":/faultrecordwave_%1.qm"这种路径的形式,还需要把这个qm文件添加到qrc文件中,否则无法显示。具体做法:具体:右击“工程名--》Resource Files--》**.qrc”,打开,Add FIles ----选择相应的.qm文件---保存,就可以了。(像添加其他图标一样)



========================================================
linux:

运用lupdate工具生成.ts文件,命令如下:
  
  lupdate -verbose *.cpp -ts  qt_english.ts
  -verbose 解释并显示lupdate的操作过程;源文件 -ts 目标文件
  
  在linux下用
linguist
编译qt_english.ts 生成翻译替换文档qt_zh_CN.ts。或者直接在windows下用UltraEdit编辑。编辑时注意:
  把 english 
  替换成 
        english
   中文
 
  其中english是源文件中需要翻译的英文内容,中文是翻译后想要显示的中文(简体和繁体都可以)。
  
  对编译好的qt_zh_CN.ts运用lrelease工具生成.qm文件,命令如下:
  
  lrelease
-verbose qt_zh_CN.ts -qm translation_simpleChinese.qm
  -verbose
解释并显示lupdate的操作过程;源文件 -ts 目标文件
*.qm
  
  翻译后的文件可以用Qt程序直接调用。(一般情况下,直接在main.cpp函数直接调用就可以了。)
  调用方法如下: 
QTranslator *translator = new QTranslator(0); 
translator->load("__FileName.qm","."); 
qApp->installTranslator(translator);
  
  在工程文件里添加一项:
  TRANSLATION
+= translation_simpleChinese.qm
  用qmake生成makefile,make即可。
在这里写一个经典的helloworld的例子。
    zh_CN.cpp
    #include <QApplication>
    #include <QPushButton>
    #include <QTextCodec>
    #include <QTranslator>
    #include <QObject>
    int main(int argc, char **argv)
    {
         QApplication app(argc, argv);

    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")) ;
        app.setFont(QFont("simsun", 10));

     QTranslator translator( 0 );
         translator.load( "zh_CN", "." );
         app.installTranslator( &translator );

     QPushButton *pushbutton = new QPushButton(QObject::tr("helloworld!"));
         pushbutton->show();

     return app.exec();
   }

代码中红色部分为关键代码。
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")) ;
    这段代码是设置文字的编码格式,这里选择UTF-8.
    app.setFont(QFont("simsun", 10));
    设置字体为宋体,字体大小为10磅。这个设置的前提是我们有这个字库。simsun.ttc在windows的字体库中可以找到。当然也可以选择其他的字体,如wenquanyi,simfang等。我们把字库拷贝到开发板的字库目录下,修改字库目录下fontdir文件,添加如下内容:
    simsun simsun.ttc TTC n 50 120 u
    QTranslator translator( 0 );
    translator.load( "zh_CN", "." );
    app.installTranslator( &translator );
    上面三段代码是程序运行时需要装载的翻译文件设置。
    QObject::tr("helloworld!")
    这句是告诉编译器,这个字符串是可以翻译的。
下面是翻译过程:
    1、修改zh_CN.pro文件,添加如下内容:
    TRASHLATIONS = zh_CN.ts
    2、生产ts文件
    lupdate zh_CN.ts
    查看zh_CH.ts文件:
    < xml version="1.0" encoding="utf-8" >
    <!DOCTYPE TS><TS version="1.1">
    <context>
        <name>QObject</name>
       
           <location filename="main.cpp" line="17"/>
           <source>helloworld!</source>
           
       
    </context>
    </TS>
    3、生产 qm文件
    这个可以有两种方法,一种是使用linguist,通过图形界面去生产qm文件,这里介绍另外一种方法。
    修改ts文件为:
    < xml version="1.0" encoding="utf-8" >
    <!DOCTYPE TS><TS version="1.1">
    <context>
        <name>QObject</name>
       
           <location filename="main.cpp" line="17"/>
           <source>helloworld!</source>
           <translation>你好!
       
    </context>
    </TS>
    然后就是生成qm文件了
    lrelease zh_CN.ts –qm zh_CN.qm
    4、编译程序。将可执行文件和qm文件拷贝到文件系统中运行,你就可以看到一个汉化界面了。

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

你可能感兴趣的:(qt,国际化,vs,ts,QM)