QT国际化支持多语言


QT国际化支持多语言

最近做一个项目,把QT开发的软件汉化,遇到些问题是部分字串汉化成功,部分汉化失败,经过一番查找发现QDialog类继承的类能汉化而QMainWindow不能汉化,因为只在Mian.cpp中添加翻译加载,并没有在MainWindow.cpp添加翻译加载,所以导致部分汉化失败,按照以下步骤:

开发环境VS加QT插件

1.生成*.ts文件,点击菜单QT=》Create new translation file,弹出Add Translation 对话框选择 中文,确定即可生成一个app_zh.ts文件。

2.用QT linguist打开app_zh.ts文件,翻译字串,保存。

3.工程列表选择app_zh.ts。右键选择lresease,在工程目录下回生成app_zh.pm文件。

4.文件main.cpp添加如下代码

int main(int argc, char *argv[])
{
    B9NativeApp a(argc, argv);
    MainWindow w;

    QTranslator translator;
    translator.load("app_" + QLocale::system().name(), qApp->applicationDirPath());
    a.installTranslator(&translator);
    QTextCodec *codec  = QTextCodec::codecForName("GBK");
    QTextCodec::setCodecForLocale(codec);

    a.processEvents();
    w.setSplash(&splash);
    w.show();
    w.showSplash();

    return a.exec();
}

按上述步骤翻译后,部分代码能正常翻译,如QDialog类的可以正常翻译,而QMainWindow不能翻译,解决办法是在MainWindow()函数中也添加资源加载代码。

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    // Set up Identity

    ui->setupUi(this);

    QTranslator translator;
    translator.load("app_" + QLocale::system().name(), qApp->applicationDirPath());
    qApp->installTranslator(&translator);         
    ui->retranslateUi(this);
}

如果支持多语言可以在MainWindow中增加切眼语言操作。


开发参考:

http://blog.51cto.com/zt/20.

http://www.cnblogs.com/hujian/archive/2012/08/10/2631488.html.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值