• 6461阅读
  • 7回复

[提问]Qt 国际化的问题 [复制链接]

上一主题 下一主题
离线cc7829290
 

只看楼主 倒序阅读 楼主  发表于: 2014-06-12
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    if(QLocale::system().name()=="zh_CN"){
        qDebug() << QLocale::system().name();
        QTranslator translator;
        qDebug() << translator.load("./myI18N_US_EN.qm");
        a.installTranslator(&translator);
    }
    a.setStyle("Fusion");


    MainWindow w;
    w.show();
    return a.exec();
}
我将国际化文件加载成功了 为什么放在main.cpp中没有效果呢
但是在界面中实现动态切换是好的
离线dragon_fly

只看该作者 1楼 发表于: 2014-06-12
  qDebug() << translator.load("./myI18N_US_EN");
离线cc7829290

只看该作者 2楼 发表于: 2014-06-12
回 dragon_fly 的帖子
dragon_fly:  qDebug() << translator.load("./myI18N_US_EN");
 (2014-06-12 12:59) 

返回为true的
离线dragon_fly

只看该作者 3楼 发表于: 2014-06-12
回 cc7829290 的帖子
cc7829290:返回为true的 (2014-06-12 13:31) 

translator.load("./myI18N_US_EN")
这样不行?
离线cc7829290

只看该作者 4楼 发表于: 2014-06-12
回 dragon_fly 的帖子
dragon_fly:translator.load("./myI18N_US_EN")
这样不行? (2014-06-12 13:43) 

        QTranslator translator;
if(QLocale::system().name()=="zh_CN"){
        qDebug() << QLocale::system().name();

        qDebug() << translator.load("./myI18N_US_EN.qm");
        a.installTranslator(&translator);
    }

我将QTranslator 的声明放在了if判断的外面则可以实现了.
纠结了好久!
在做动态切换的时候好像语言改变只对UI界面有作用,最代码中的没效果,不知道这个要怎么改~~
离线cc7829290

只看该作者 5楼 发表于: 2014-06-12
这个问题解决了``
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTranslator translator;
    if(QLocale::system().name()!="zh_CN"){
        qDebug() << translator.load("./myI18N_US_EN");
        a.installTranslator(&translator);
    }
    a.setStyle("Fusion");

    MainWindow w;
    w.translator = &translator;
    w.show();
    return a.exec();
}
在main.cpp中声明QTranslator
在MainWindow.h文件中声明
public  QTranslator* translator; //翻译器
然后在讲main.cpp中QTranslator 的传入MainWindow
然后在槽中使用
void MainWindow::on_actionLanguage_triggered()
{
    if(ui->actionLanguage->isChecked()){
        translator->load("./myI18N_US_EN.qm");
        qApp->installTranslator(translator);
        ui->retranslateUi(this);
    }else{
        qApp->removeTranslator(translator);
        ui->retranslateUi(this);
    }

}
离线dragon_fly

只看该作者 6楼 发表于: 2014-06-12
回 cc7829290 的帖子
cc7829290:这个问题解决了``
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTranslator translator;
....... (2014-06-12 15:34) 

界面少了还行,如果有很多动态创建的widget,就要逐个加载翻译器
离线马后炮

只看该作者 7楼 发表于: 2014-06-12
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    app.setApplicationName("Face Identify");

    QTranslator *translator = new QTranslator(&app);
    if(translator->load(QString("zh_CN")))    app.installTranslator(translator);

    FaceMainWindow mainWin;
    mainWin.show();

    return app.exec();
}

我这样写都是正常的、。。英文菜单都是中文的了
快速回复
限100 字节
 
上一个 下一个