Qt/Qml 多语言翻译

来源:互联网 发布:摩根币是网络传销吗 编辑:程序博客网 时间:2024/06/05 18:02

Qt/Qml 多语言翻译

1、cpp文件中的翻译内容需要使用QObject(或继承它的对象)的tr()方法;

    例如: QString str = QObject::tr("please lupdate me");

2、qml文件中的翻译内容需要使用qsTr()方法;
    例如:var str =qsTr("this is qml");

翻译几处配置及操作:

1、项目的.pro或.pri文件中有TRANSLATIONS +=....编译时会生成*.ts文件,

    lupdate_only是针对qml文件的,不然lupdate不会对qml文件检测的。

2、更新翻译(lupdate),产生*.ts文件;

3、发布翻译(lrelease),产生*.qm文件;

 


注册翻译器源码
main.cpp
#include<QTranslator>
#include<QDir>
#include<QFileInfoList>
//==========================================
//loadthelanguage
//==========================================
voidloadLanguage(constQString&lang_dir)
{
QDirqm_dir(lang_dir);
QFileInfoListqm_list=qm_dir.entryInfoList(
QStringList()<<QStringLiteral("*_zh_CN.qm"),
QDir::Files|QDir::Readable);
if(qm_list.size()>0){
QTranslator*trans=newQTranslator;
if(trans->load(qm_list[0].baseName(),lang_dir)){
QCoreApplication::installTranslator(trans);
}else{
qInfo("loadzh_CNqmfilefailed.switchtodefaultlanguage");
deletetrans;
}
}
}

intmain(intargc,char*argv[])
{
QApplicationa(argc,argv);

loadLanguage(QApplication::applicationDirPath());

MainWindoww;
w.show();

returna.exec();
}



原创粉丝点击