QT 语言家,翻译+合并多个项目
背景公司要求本项目支持多语言 网上查看了Qt语言家教程Qt项目实战语言家(中英文翻译) 自己作了Demo翻译效果良好。在正式工程施工时发现库里的界面没有翻译效果。本文记录解决这个问题。省流结论对于工程每个包含界面的项目都独立使用lupdate 生成.ts文件使用lconvert 合并ts文件最后用linguist语言家翻译发布qm文件。环境开发系统20.04.1-UbuntuQT Qt Creator 4.11.1 Based on Qt 5.14.1 (GCC 5.3.1 20160406 (Red Hat 5.3.1-6), 64 bit)问题现象工程里有两个项目存在界面文件如下图如果使用lupdate 选择DH_App和SoftKeyboardlib 分别执行生成的同一个ts 文件那么另一个项目的翻译文字被保留为过时条目 这样发布的qm文件并不能完全应用程序中。解决方案独立生成ts ,合并再翻译 最后发布qm文件。最后帖一段deepseek生成的翻译合并脚本#!/bin/bash PROJECT_ROOT~/Project/DH_APP_Git/Qt_D9016 # 多语言种类 LANGUAGES(zh_CN en_US) cd $PROJECT_ROOT echo 更新所有翻译 # 为每种语言处理 for LANG in ${LANGUAGES[]}; do echo 处理 $LANG 语言... # 生成主程序翻译 cd $PROJECT_ROOT/DH_App_Aarch64 lupdate -no-obsolete DH_App_Aarch64.pro -ts i18n/DH_App_main_$LANG.ts # 生成软键盘翻译 cd $PROJECT_ROOT/SoftKeyboardLib lupdate -no-obsolete SoftKeyboardLib.pro -ts ../DH_App_Aarch64/i18n/DH_App_softkeyboard_$LANG.ts # 合并翻译 cd $PROJECT_ROOT/DH_App_Aarch64 lconvert -i i18n/DH_App_main_$LANG.ts i18n/DH_App_softkeyboard_$LANG.ts -o i18n/DH_App_$LANG.ts # 清理临时文件 # rm i18n/DH_App_main_$LANG.ts i18n/DH_App_softkeyboard_$LANG.ts echo ✓ $LANG 翻译更新完成 done echo 所有翻译更新完成 echo 请用 Qt Linguist 编辑翻译文件 例如: echo linguist $PROJECT_ROOT/DH_App_Aarch64/i18n/DH_App_en_US.ts