QT国际化
程序员文章站
2022-05-16 10:30:38
...
一、使用tr
QString strMax = tr(“The maximum value”);
fromLocal8Bit无法实现国际化,如:
strType = QString::fromLocal8Bit(“单一元素”);
将需要翻译的字符串加上tr() 。
二、lupdate生成ts翻译文件,并编辑 + luguist发布
cd 到.pro 文件所在目录
lupdate DTS.pro -ts qt5_zh_CN.ts -》 在目录下生成 qt5_zh_CN.ts 翻译文件
-》 编辑
linguist qt5_zh_CN.ts
-》将翻译文件发布到程序加载的目录
-》
mian.cpp 加载翻译
-》添加下列代码
QApplication a(argc, argv);
QTranslator tsor; //创建翻译器
tsor.load("zh_hans.qm"); //加载语言包
a.installTranslator(&tsor); //安装翻译器
或者
// 安装中文翻译
const QString localSysName = QLocale::system().name();
QScopedPointer<QTranslator> qtTranslator(new QTranslator(QCoreApplication::instance()));
if (qtTranslator->load(QStringLiteral("qt_") + localSysName,
QLibraryInfo::location(QLibraryInfo::TranslationsPath)))
{
QCoreApplication::installTranslator(qtTranslator.take());
}
//翻译程序
QScopedPointer<QTranslator> gpTranslator(new QTranslator(QCoreApplication::instance()));
QString strPath=getenv("ICCSHOME/system/lang");
if (gpTranslator->load("qt5_zh_CN.qm", strPath))
{
QCoreApplication::installTranslator(gpTranslator.take());
}
//其中前一个安装中文翻译指qt自带的翻译文件。
//后一个if (gpTranslator->load("qt5_zh_CN.qm", strPath))指应用程序自己的翻译文件
main.cpp中添加代码,二选一即可。