找回密码
 立即注册
收起左侧

Qt 国际化失败

2
回复
9182
查看
[复制链接]
累计签到:2 天
连续签到:1 天
来源: 2017-2-26 12:56:01 显示全部楼层 |阅读模式
1Qter豆
源代码中用户可见的内容是用英文写的,想用Linguist将英文内容显示成中文。已经弄好了一个zh-cn.qm文件,但是程序运行时还是显示英文,向大家请教一下是怎么回事。
用户可见的内容都用了tr(""),pro文件也添加了 TRANSLATIONS += zh-cn.ts


QApplication a(argc, argv);
QTranslator trans;
trans.load("zh-cn.qm");
a.installTranslator(&trans);
MainWindow w;
w.show();

回复

使用道具 举报

累计签到:955 天
连续签到:1 天
2017-2-27 08:58:59 显示全部楼层
你需要确定一下你的翻译文件有没有加载成功!有可能是路径什么的错误。
回复

使用道具 举报

累计签到:8 天
连续签到:1 天
2017-2-28 16:46:27 显示全部楼层
本帖最后由 hepei 于 2017-2-28 16:47 编辑

1.首先肯定是要确保.qm文件的路径正确。
2.如果你的界面是用Qt designer设计的UI文件
//在MainWindow.h头文件增加:
protected:
        void changeEvent(QEvent *e);

//在MainWindow.cpp中实现该函数
void MainWindow::changeEvent(QEvent *e)
{
        QMainWindow::changeEvent(e);
        switch (e->type()) {
        case QEvent:anguageChange:
                ui.retranslateUi(this);//这里实现语言翻译器的更新。
                break;
        default:
                break;
        }
}

这样应该就可以了
3.如果界面是通过代码实现的
在第2步,再自己实现retranslateUi()函数,在该函数里面,把需要进行语言切换的控件,都设置一遍
在void MainWindow::retranslateUi(QWidget *parent)  
{  
    his_btn->setText(QApplication::translate("mainwindow", "history", 0, QApplication::UnicodeUTF8));  
    ngv_btn->setText(QApplication::translate("mainwindow", "navigation", 0, QApplication::UnicodeUTF8));  
    cur_btn->setText(QApplication::translate("mainwindow", "current", 0, QApplication::UnicodeUTF8));  
    cancel_btn->setText(QApplication::translate("mainwindow", "quit", 0, QApplication::UnicodeUTF8));  
  
    fault_label->setText(QApplication::translate("mainwindow", "problem:", 0, QApplication::UnicodeUTF8));  
    fault_status->setText(QApplication::translate("mainwindow", "no problem", 0, QApplication::UnicodeUTF8));  
    comm_label->setText(QApplication::translate("mainwindow", "comstate:", 0, QApplication::UnicodeUTF8));  
    comm_status->setText(QApplication::translate("mainwindow", "normal", 0, QApplication::UnicodeUTF8));  
    time_label->setText(QApplication::translate("mainwindow", "datetime:", 0, QApplication::UnicodeUTF8));  
    //time_status->setText(QApplication::translate("parent", "no problem", 0, QApplication::UnicodeUTF8));  
}


希望能帮到你。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了