现在的位置: 首页 > 综合 > 正文

语言动态切换3

2012年05月20日 ⁄ 综合 ⁄ 共 3117字 ⁄ 字号 评论关闭

动态加载Qt做语言翻译
关于Qt的多语言功能参考我的博客的http://blog.csdn.net/wangxueang224/article/details/7802306
这是基本的语言切换

动态加载文件后实现对文件名字的翻译就必须自己修改Qt生成的语言文件
下面是这些文件的各个字段的意思

下面说下动态加载文件的语言的切换功能,动态加载文件的话在Qt生产的ts格式
的文件中没有对应的字段需要自己添加(  <source>audio</source>      //要翻译的字段
),然后用翻译工具翻译这个文件然后发布就实现了动态加载文件的文件名称的翻译
在代码中动态翻译一个名字的函数context:坐在类的名字,sourceText要翻译的字段,比如动态加载的文件的名字
QString QTranslator::translate ( const char * context, const char * sourceText, const char * disambiguation = 0 ) const [virtual]
Returns the translation for the key (context, sourceText, disambiguation). If none is found, also tries (context, sourceText, ""). If that still fails, returns an empty string.
If you need to programatically insert translations in to a QTranslator, this function can be reimplemented.
See also load().
QString QTranslator::translate ( const char * context, const char * sourceText, const char * disambiguation, int n ) const
This function overloads translate().
Returns the translation for the key (context, sourceText, disambiguation). If none is found, also tries (context, sourceText, ""). If that still fails, returns an empty string.
If n is not -1, it is used to choose an appropriate form for the translation (e.g. "%n file found" vs. "%n files found").
See also load().
加载翻译文件
int main(int argc, char *argv[])
 {
     QApplication app(argc, argv);

     QTranslator translator;
     translator.load("hellotr_la");
     app.installTranslator(&translator);

     QPushButton hello(QPushButton::tr("Hello world!"));
     hello.resize(100, 30);

     hello.show();
     return app.exec();
 }

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="zh_CN">
<context>
    <name>mainwidget</name>         //类的名字
    <message>
        <source>audio</source>      //要翻译的字段
        <translation>音乐</translation>  //翻译结果,用翻译工具填上去
    </message>
    <message>
        <source>ceping</source>
        <translation>测试屏</translation>
    </message>
    <message>
        <source>IOinput</source>
        <translation>输入</translation>
    </message>
    <message>
        <source>key</source>
        <translation>按键</translation>
    </message>
    <message>
        <source>language</source>
        <translation>语言切换</translation>
    </message>
    <message>
        <source>LED</source>
        <translation>灯测试</translation>
    </message>
    <message>
        <source>netconfig</source>
        <translation>网络定义</translation>
    </message>
    <message>
        <source>powerdown</source>
        <translation>关机设置</translation>
    </message>
    <message>
        <source>PWM</source>
        <translation>背光</translation>
    </message>
    <message>
        <source>RTC</source>
        <translation>时钟</translation>
    </message>
    <message>
        <source>serial</source>
        <translation>序列号</translation>
    </message>
    <message>
        <source>SPI</source>
        <translation>SPI测试</translation>
    </message>
    <message>
        <source>TcpTest</source>
        <translation>TCP测试</translation>
    </message>
    <message>
        <source>UART</source>
        <translation>串口</translation>
    </message>
    <message>
        <source>UDP</source>
        <translation>UDP测试</translation>
    </message>
    <message>
        <source>usb_tg</source>
        <translation>usbtg测试</translation>
    </message>
    <message>
        <source>watchdog</source>
        <translation>看门狗</translation>
    </message>
</context>
</TS>

抱歉!评论已关闭.