QML的中英文翻译
一、环境
安装时勾选了「Qt Translation Tools」+「Qt Linguist」
二、步骤
1、 在pro文件中添加
TRANSLATIONS += \translations/Lang_zh_CN.ts \translations/Lang_en.ts
保存后,执行一次 qmake(构建菜单 → Run qmake)
2、生成zh_CN.ts
和en_us.ts
文件
2.1 用命令生成
lupdate main.qml -ts zh_CN.ts en_us.ts
2.2 利用Qt Creator生成
Qt Creator 菜单:
Tools → External → Qt Linguist → Update Translations (lupdate)
IDE 会在 translations/
下生成 ***_zh_CN.ts
和 ***_en.ts
3.打开
Qt Linguist,对应程序的版本,打开连个ts文件
翻译完成,点击文件的保存全部 与 发布全部
4.新加Langue的更改类,实现QML调用,实现语言切换的目的
class LangSwitch : public QObject
{Q_OBJECT
public:explicit LangSwitch(QGuiApplication *app,QQmlApplicationEngine *engine,QObject *parent = nullptr);Q_INVOKABLE void setLanguage(const int &index);signals:private:QGuiApplication *m_app;QQmlApplicationEngine *m_engine;QTranslator m_translator;};
LangSwitch::LangSwitch(QGuiApplication *app, QQmlApplicationEngine *engine, QObject *parent)
{m_app = app;m_engine = engine;
}void LangSwitch::setLanguage(const int &index)
{qDebug()<<"index = "<<index;m_app->removeTranslator(&m_translator);QString file = "";switch (index) {case 0:file = "Langue_zh_CN.qm";break;case 1:file = "Langue_en.qm";break;default:break;}qDebug()<<"-------------"<<m_translator.load(file);if (m_translator.load(file))m_app->installTranslator(&m_translator);// Qt 5.12.5 没有 retranslate(),手动触发m_engine->retranslate();
}
4.运行结果
三、总结
用 qsTr()/tr() 包字符串 → 2. lupdate 生成 .ts → 3. Linguist 翻译 → 4. lrelease 生成 .qm → 5. main.cpp 安装 QTranslator → 6. 运行即可实现 QML 的中英文切换。