插件翻译加载和更新使用手册
在开发应用程序的过程中,多语言的切换是必不可少的功能,ARCS软件目前支持中文/英文切换。
操作:在主界面点击右上角的设置,在偏好 -> 语言中选择English或中文(简体),点击右下角的应用并重启,完成ARCS软件的中英文切换。
目标:开发的插件随着ARCS软件的系统语言进行中英文切换。
1.插件翻译的加载过程
ARCS可自动加载插件的翻译文件,只需要在部署时将qm文件放到插件同级目录下,如下图:
首先,我们在界面上布置所需要的控件
1.1 生成翻译文件 .ts 文件
首先在 工程项目/src/
目录下新建一个 translations
文件夹
Qt自带的翻译类
QTranslator
可以完成多语言之间的切换,我们可以通过定义一个QTranslator
的对象,然后这个对象通过load
方法加载了一个.qm
文件,这个文件其实就是翻译文件。
.qm
文件是由.ts
文件生成的,下面我们需要先生成翻译文件 .ts 文件。
确定翻译文件的命名
(推荐)以 插件名_zh_CN.ts
来保存中文翻译文件,插件名_en.ts
来保存英文翻译文件。
举例:loadqrc_zh_CN.ts
、loadqrc_en.ts
CMake中需要包含翻译文件
修改CMakeLists.txt
文件:
①在find_package
中增加LinguistTools
翻译工具
②设置翻译文件的路径 TS_FILES
并创建翻译文件.ts文件
③add_library
中需要添加.ts翻译文件
具体代码如下:
find_package(Qt5 REQUIRED COMPONENTS Core Widgets LinguistTools)
set(TS_FILES
${CMAKE_CURRENT_SOURCE_DIR}/src/translations/loadqrc_zh_CN.ts
${CMAKE_CURRENT_SOURCE_DIR}/src/translations/loadqrc_en.ts)
set_source_files_properties(${TS_FILES} PROPERTIES OUTPUT_LOCATION ${PLUGIN_OUTPUT_PATH}/loadqrc)
qt5_create_translation(QM_FILES
${CMAKE_CURRENT_SOURCE_DIR}/src
${TS_FILES})
add_library(loadqrc SHARED
${_srcs}
${program_src}
${install_src}
${QM_FILES}
src/activator.cpp
src/resource.qrc)
保存CMakeLists.txt
文件,对项目进行重新 CMake 和 Build,之后会在 工程项目/src/translations/
目录下生成对于的翻译文件.ts文件
1.2 使用linguist工具翻译.ts文件
使用Qt自带的linguist工具打开上面生成的翻译文件 (.ts),对界面上一些并未被翻译的语句进行翻译。
从下图中我们可以看出,标记为 1 的这样语句并没有被翻译,因此我们需要在标记为 2 的地方对这句话进行手动翻译,完成之后点击 标记为 3 的按钮,就会看到当前语句已经被翻译完成
完成所有文本的翻译,点击左上角的保存按钮
同理完成英文翻译文件
1.3 打包插件,ARCS加载插件压缩包
通过 deploy.sh
脚本完成插件的打包压缩,拷贝到arcs指定工作目录,加载插件,选择系统语言为中文(简体),即可完成插件的翻译加载过程。效果图如下:
2.插件翻译的更新过程
需求:在插件开发的过程中,有时中英文翻译功能做好之后,插件可能会增加别的功能,也需要进行中英文翻译,这时只需要更新原先的.ts翻译文件即可
例如:在上述已经做好翻译功能后,新建一个控件,名称叫 update translation test putton
需要将其翻译为更新翻译测试按钮
首先,找到该工程下 .ts
文件存放的位置,如图本测试用例.ts
文件在下图所示位置:
在.ts
文件处打开终端,使用lupdate
命令,更新中文和英文.ts
翻译文件,使用此命令的一般格式为lupdate -ts 需要更新的.ts文件
,此处需要注意的是如果整个工程采用的是CMAKE
管理,使用lupdate
更新翻译文件需要手动将所有和翻译内容有关的源代码文件地址都作为参数写在 lupdae
命令后面,即命令格式为lupdate 源代码文件1 源代码文件2 ... -ts 需要更新的.ts文件
。但是如果涉及到的源代码文件较多,我们可以采用相对路径,比如该测试工程所有的源代码都存放在src
目录下而src
文件在.ts
文件的上级目录下,因此在.ts
文件目录下可以使用../*
可以访问到src
目录下的所有文件。因此本测试工程可以使用以下命令更新中文和英文.ts翻译文件:(这里的相对路径,大家需要根据自己工程的文件结构进行调整,当然也可以使用绝对路径将每个源代码文件加进来)
lupdate ../* -ts loadqrc_zh_CN.ts
lupdate ../* -ts loadqrc_en.ts
重新编译项目
再次打开.ts翻译文件,可以看到原先增加的控件信息已经添加进去了
再次按照 1.2 的步骤,完成翻译
打包,加载,完成
至此我们已经完成了插件翻译的更新。