Qt国际化

Qt 国际化,简单理解为 Qt 多国语言界面显示。


关于多国语言,在不同的程序框架中,可能有多种不同的实现方法,但是要注意一点,字符串用UNICODE。

Qt 默认的就是UNICODE编码。


在Qt 中:

工具:Qt Creator;

1:将需要翻译的字符串用 QObject::tr("Hello world!").  或者QApplication::translate("Dialog", "Hello world!", 0); 包含;

      其主要目的就是自动将其中的字符串保存到ts文件中,同时Linguist工具找到需要翻译的字符串。这里就明白,无需翻译和界面显示的字符串不用上述函数包含;


2:在工程文件.pro中添加 

TRANSLATIONS += testQtCreator_english.ts
 
3:通过 工程的菜单: 工具 -> 外部 -> 语言专家 ->更新翻译(lupdate) 可以生成ts文件;
 
4:启动Linguist工具,打开工程中生成的“testQtCreator_english.ts”文件,在开始的提示框中,目标语言设置为"Englishi"(根据语言的多少自定义设置);
       下图显示了从英文到中文的翻译:


5:翻译完成,保存退出Linguist工具; 
      然后 通过 工程的菜单: 工具 -> 外部 -> 语言专家 ->发布翻译(lrelease) 可以生成qm文件;
     qm文件可以通过程序添加显示到界面;

6:应用qm文件:
      
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTranslator qtTranslator;
    qtTranslator.load("testQtCreator_english.qm");
    a.installTranslator(&qtTranslator);
    Dialog w;
    w.show();
    return a.exec();
}

到这里,基本上就可以在设置软件想要的语言了。
新的问题,如果实现语言的动态切换?
如:在上述例子中的Dialog中有一个按钮函数 OnBtnChangetoEnglish()?
方法如下:
 //pQApplication 指向qtTranslator的指针; 
 void Dialog::OnBtnChangetoEnglish()
    {
       // MessageBoxQ( tr("测试 test") );
        QTranslator qtTranslator;
        qtTranslator.load("testQtCreator_English.qm");
        pQApplication->installTranslator(&qtTranslator);
        ui->retranslateUi(this);
    }
这样就可以根据qm文件,动态切换任意语言了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chinabinlang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值