配置CLion管理Qt项目国际化支持 (3)

这里不用管资源文件的路径,因为我们还要对CMakeLists.txt做些修改处理这些问题:

set(CMAKE_AUTORCC ON) # 一定得开启rcc # 注意这行 configure_file(translations.qrc ${CMAKE_CURRENT_BINARY_DIR} COPYONLY) ... add_executable(${PROJECT_NAME} main.cpp ${TS_FILES} ${CMAKE_CURRENT_BINARY_DIR}/translations.qrc)

需要注意的是configure_file那行,我们把qrc文件原样复制到了编译目录里,因为qm文件也是在那里生成的。

现在qrc会被自动处理,然后我们的qm文件作为其依赖项也能被自动生成了。

再次编译项目,这次我们就能发现qm被生成了:

配置CLion管理Qt项目国际化支持

因为使用了Qt的rcc把资源嵌入了程序,所以cpp代码也得做一些调整:

QTranslator trans; -if (trans.load("./" + QLocale().name() + ".qm")) { +if (trans.load(":/" + QLocale().name() + ".qm")) { QCoreApplication::installTranslator(&trans); }

注意.变成了:,这代表我们指定的路径是嵌入资源的。

这样国际化支持就彻底完成了,通过修改Linux的LANG环境变量我们可以自由设置程序的语言,效果如下:

配置CLion管理Qt项目国际化支持

配置CLion管理Qt项目国际化支持

总结

现在我把完整的CMakeLists.txt贴上来作为参考,对于你自己的项目当然是要做调整的:

cmake_minimum_required(VERSION 3.17) project(untitled1) set(CMAKE_CXX_STANDARD 17) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) set(QT_VERSION 5) set(REQUIRED_LIBS Core Gui Widgets) set(REQUIRED_LIBS_QUALIFIED Qt5::Core Qt5::Gui Qt5::Widgets) set(TS_FILES ${CMAKE_SOURCE_DIR}/lang/zh_CN.ts ${CMAKE_SOURCE_DIR}/lang/ja_JP.ts) find_package(Qt${QT_VERSION} COMPONENTS ${REQUIRED_LIBS} LinguistTools REQUIRED) configure_file(translations.qrc ${CMAKE_CURRENT_BINARY_DIR} COPYONLY) qt5_create_translation(QM_FILES ${CMAKE_CURRENT_SOURCE_DIR} ${TS_FILES}) add_executable(${PROJECT_NAME} main.cpp ${TS_FILES} ${CMAKE_CURRENT_BINARY_DIR}/translations.qrc) message(${QM_FILES}) target_link_libraries(${PROJECT_NAME} ${REQUIRED_LIBS_QUALIFIED})

不过这种方案也不是没有问题,那就是每次只能在编译期间更新ts文件,这点需要注意。

如果想要看更具体的项目是如何配置i18n的,我这也有一个例子,如果不嫌弃觉得有帮助的话可以star一下。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsxgjs.html