前言
最近接到一个新需求,软件需要开发英文版。自己研究了一阵子,差不多走通了,把方案分享给大家
操作流程
-
在代码中将需要翻译的字符串用tr包裹,如下图所示
-
编写脚本,将所有需要翻译的py文件加入ts,这里我写bat脚本举例(如果是linux环境,编写shell脚本即可)
@echo off setlocal REM 设置你的源代码目录和输出ts文件的位置 set "sourceDir=.\src" set "outputTsFile=.\assets\i18n\bms_analyse_zh_CN.ts" set "tempFileList=temp_filelist.txt" REM 清除现有的ts文件和临时文件列表 if exist "%tempFileList%" del "%tempFileList%" REM 收集所有.py文件的路径到临时文件,去除双引号 for /r "%sourceDir%" %%F in (*.py) do ( echo %%~fF>> "%tempFileList%" ) REM 使用pyside6-lupdate处理临时文件列表中的所有.py文件 if exist "%tempFileList%" ( pyside6-lupdate @"%tempFileList%" -ts "%outputTsFile%" del "%tempFileList%" ) echo TS file generation complete. pause endlocal
-
执行脚本生成完ts文件后,将翻译内容填入到ts文件中
translation里面填要翻译的语言,报错不用理会,无关紧要
-
编译.ts文件生成.qm文件
lrelease -verbose .\assets\i18n\bms_analyse_zh_CN.ts -qm .\assets\i18n\bms_analyse_zh_CN.qm
生成过程如下图所示
这里显示已经翻译的条数和未翻译的条数
-
在程序中设置语言
# 设置语言 translator = QTranslator(app) path = os.path.join(assets_dir, "i18n", "bms_analyse_zh_CN.qm") translator.load(path) app.installTranslator(translator)
可以写一个按钮触发事件,或者读配置文件,将我上面加载语言的代码放进去,我这里选择的是读配置文件
-
打开程序后就能看到英文版界面了,这里是我数据分析软件的一个例子(还有部分翻译工作未完成)