您的位置:首页 > 财经 > 金融 > 2022房产政策最新消息_昆明本地网站_腾讯第三季度营收448亿元_网络软文案例

2022房产政策最新消息_昆明本地网站_腾讯第三季度营收448亿元_网络软文案例

2024/12/23 9:34:00 来源:https://blog.csdn.net/agang1986/article/details/143466844  浏览:    关键词:2022房产政策最新消息_昆明本地网站_腾讯第三季度营收448亿元_网络软文案例
2022房产政策最新消息_昆明本地网站_腾讯第三季度营收448亿元_网络软文案例

需求: 之前开发了一个工具软件,当时软件界面只显示中文,现在需要提供英文版本,而且可以实现中英文的切换。网上一顿搜索下来解决了问题,这里记录下

大体思路:
1、使用Qt自带的lupdate工具生成 .ts资源文件,此工具会搜索软件中的所有需要翻译的字符串(即UI文件中字符串和代码文件中以tr()函数标记的字符串),然后把需要翻译的字符串统计到 .ts文件中
2、使用Qt自带的linguist工具打开 .ts资源文件进行翻译
3、再使用Qt自带的lrelease工具把 .ts资源文件翻译成Qt可以直接使用的 .qm文件即可
4、通过QSettiings保存当前的语言,在main函数中加载此文件获取需要加载语言的 .qm文件
5、UI添加切换语言的按钮,语言切换时通过重启软件的方式加载对应语言的 .qm文件

重要: 上面步骤1和3可以在CMakeList文件中直接通过宏操作,步骤2可以通过命令行直接敲入命令打开Qt预言家工具进行编辑

操作步骤:
1、编辑CMakeList.txt文件,添加如下内容:

 #添加LinguistTools
find_package(Qt5 COMPONENTS Core Widgets LinguistTools REQUIRED) #设置开关,用于标记是否第一次创建 .ts文件
option(SCDT_BUILD_TRANSLATIONS "Generate translation files"    OFF)
#设置翻译源文件
set(TS_FILES translations/scdt_cn.ts translations/scdt_en.ts) #拷贝配置文件到安装目录下
install(DIRECTORY translations DESTINATION .)
#拷贝配置文件到当前构建目录下,保证本地运行时可以找到配置文件
file(COPY ${PROJECT_SOURCE_DIR}/translations DESTINATION ${CMAKE_CURRENT_BINARY_DIR})#设置翻译文件.qm的输出文件夹
set_source_files_properties(${TS_FILES} PROPERTIES OUTPUT_LOCATION "translations") 
if(SCDT_BUILD_TRANSLATIONS)#创建 .ts文件,并以此.ts文件生成 .qm文件qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES}) 
else()#以当前translation文件夹下存在的 .ts文件生成对应的 .qm文件qt5_add_translation(QM_FILES ${TS_FILES}) 
endif()#把.ts和.qm资源添加到项目中
add_executable(${SUPER_PROJECT} ${FILES_HEADER} ${FILES_SRC} ${TS_FILES} icon/logo.rc res.qrc ${QM_FILES})

2、在项目源码根目录下创建文件夹translations

3、在当前项目的CMakeList.txt文件添加如上内容后,先把开关SCDT_BUILD_TRANSLATIONS 置为 ON,然后在Qt Creator界面左侧的项目->构建里找到这个开关置为ON,然后点击执行cmake,再运行项目,则生成translations/scdt_cn.ts translations/scdt_en.ts文件

option(SCDT_BUILD_TRANSLATIONS "Generate translation files"    ON)

4、然后打开命令行,执行linguist scdt_en.ts即会打开Qt语言编辑工具对语言进行翻译:(如果找不到linguist 工具请排查下环境变量)

linguist translations/scdt_en.ts

5、再把开关SCDT_BUILD_TRANSLATIONS 置为 OFF,然后在Qt Creator界面左侧的项目->构建里找到这个开关置为OFF,然后点击执行cmake,再运行项目,则生成translations/scdt_cn.qm translations/scdt_en.qm文件在运行目录下

6、main函数代码如下

int main(int argc, char *argv[])
{//适配不同分辨率和缩放QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling, true);QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps, true);QApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);QApplication app(argc, argv);QSettings setting(QCoreApplication::applicationDirPath() + "/setting.ini", QSettings::IniFormat);QString language = setting.value("Language", "CN").toString();QTranslator* trans = new QTranslator;if("CN" == language){QString qmfile = QCoreApplication::applicationDirPath() + "/translations/scdt_cn.qm";trans->load(qmfile);}else {QString qmfile = QCoreApplication::applicationDirPath() + "/translations/scdt_en.qm";trans->load(qmfile);}app.installTranslator(trans);ScdtMainWindow w;w.show();return app.exec();
}

7、切换语言的代码如下:

    TipsDialog* tips = new TipsDialog();if("EN" == m_language) {tips->setTips(tr("语言将从英文切换到中文,此操作会重启SCDT软件,请确认?"));}else if("CN" == m_language){tips->setTips(tr("语言将从中文切换到英文,此操作会重启SCDT软件,请确认?"));}connect(tips, &TipsDialog::confirmButtonClicked, [=]{QString file = m_app_path + "/setting.ini";QSettings settings(file, QSettings::IniFormat);if("EN" == m_language) {settings.setValue("Language", "CN");}else if("CN" == m_language){settings.setValue("Language", "EN");}QProcess::startDetached(QApplication::applicationFilePath(), QApplication::arguments(), QDir::currentPath());QApplication::exit();});tips->exec();

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com