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>
//
==========================================
//
load
the
language
//
==========================================
void
loadLanguage
(
const
QString
&lang_dir
)
{
QDir
qm_dir(
lang_dir
);
QFileInfoList
qm_list
=
qm_dir.entryInfoList
(
QStringList
()
<<
QStringLiteral
(
"*_zh_CN.qm"
),
QDir
::
Files
|
QDir
::
Readable
);
if
(
qm_list.size
()
>
0
)
{
QTranslator
*trans
=
new
QTranslator
;
if
(
trans->load
(
qm_list[
0
].baseName
(),
lang_dir
))
{
QCoreApplication
::installTranslator
(
trans
);
}
else
{
qInfo
(
"load
zh_CN
qm
file
failed.
switch
to
default
language"
);
delete
trans;
}
}
}
int
main
(
int
argc,
char
*argv[])
{
QApplication
a(argc,
argv);
loadLanguage
(
QApplication
::applicationDirPath
()
);
MainWindow
w;
w.show
();
return
a.exec
();
}