ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

为 BallonsTranslator 添加新语言:基于 Qt Linguist 的完整本地化实战指南

为 BallonsTranslator 添加新语言:基于 Qt Linguist 的完整本地化实战指南 AI 应用计算机视觉图像处理NLP桌面应用【免费下载链接】BallonsTranslator深度学习辅助漫画翻译工具, 支持一键机翻和简单的图像/文本编辑 | Yet another computer-aided comic/manga translation tool powered by deeplearning项目地址https://gitcode.com/gh_mirrors/ba/BallonsTranslator点击查看免费下载本篇指南讲解如何为深度学习辅助漫画翻译工具 BallonsTranslator 添加全新的界面语言核心工作流基于 Qt 官方的 Qt Linguist 可视化翻译工具全程无需编写业务代码。读者将掌握从安装 PySide6 翻译工具链、生成.ts源文件、逐条翻译与编译.qm产物到注册语言菜单、验证界面、提交合并的完整闭环并理解仓库中update_translation.py脚本、DISPLAY_LANGUAGE_MAP配置与运行时加载机制的底层实现。本地化机制概览.ts源文件与.qm编译产物的分工BallonsTranslator 的界面本地化遵循 Qt 标准国际化i18n流程分为四个阶段源码标记界面代码中的可翻译文本通过self.tr(...)等 Qt 翻译函数包裹文本提取lupdate或pyside6-lupdate扫描界面源码将待翻译短语提取到基于 XML 的.ts源文件中人工翻译使用 Qt Linguist 图形化工具逐条阅读英文源短语并填写译文编译加载lrelease将.ts编译为紧凑的二进制.qm文件程序启动时由QTranslator加载并安装到应用实例。仓库当前的翻译资源全部位于 resources/translate 目录已包含en_US.ts以及zh_CN、zh_TW、ru_RU、pt_BR、ko_KR、hu_HU、fr_FR等语言的.ts/.qm文件对新语言只需在此目录下新增对应文件即可被识别。运行时加载逻辑见 ballontranslator/launch.py应用创建QApplication后读取配置项config.display_lang拼接resources/translate/语言码.qm路径若文件存在则创建QTranslator并调用app.installTranslator(translator)生效若目标语言文件不存在且语言不是en_US/English会输出告警日志。这解释了为什么切换语言后需要重启应用——翻译器是在启动阶段安装的。准备工作安装 Qt 翻译工具链本指南以解压版 Windows 安装包Ballonstranslator_win_minium.zip为前提其内置 Python 环境位于ballontrans_pylibs_win目录。打开解压包主目录在空白处右键选择Open in Terminal在 PowerShell 中执行以下命令安装 Qt 翻译工具.\ballontrans_pylibs_win\python.exe -m pip install PySide6-Essentials $env:Path $PWD\ballontrans_pylibs_win\Scripts;$env:Path $env:QT_API pyqt6PySide6-Essentials包会提供pyside6-linguist、pyside6-lrelease、pyside6-lupdate等命令行工具将Scripts目录加入当前会话的Path即可直接调用这些工具设置QT_API pyqt6是让应用与工具统一走 PySide6Qt6绑定。如果你使用 Windows、macOS 或 Linux 上的源码检出环境且已经自行安装好 Python则无需这些 Windows 专属路径——请使用该环境自己的python与 PySide6 工具路径替换上述命令中的对应部分其余工作流完全一致。生成并翻译语言文件选择语言代码语言代码采用language_REGION形式例如de_DE德语/德国、ja_JP日语/日本、pl_PL波兰语/波兰。仓库现有映射中的zh_CN、zh_TW、es_MX、pt_BR等也遵循这一规范。下文以de_DE为例实际操作时请全部替换为你的语言代码。生成.ts源文件update_translation.py 深度解读运行仓库自带的 scripts/update_translation.py 提取全部可翻译文本.\ballontrans_pylibs_win\python.exe .\scripts\update_translation.py de_DE该脚本见 scripts/update_translation.py的核心行为值得了解语言代码参数支持位置参数de_DE也支持--lang de_DE/--language de_DE显式指定两者均未提供时默认使用系统区域设置QLocale.system().name()即运行环境本身的 locale模块参数目录生成脚本会先调用ballontranslator/modules/lazy_registry.py中的iter_lazy_module_specs收集各翻译/OCR/修复模块的参数元数据将模块参数的display_name与description提取后写入自动生成文件 ballontranslator/ui/_generated/module_param_dialog_i18n_catalog.py该文件头部明确标注“自动生成请勿手改”后续修改模块参数后需重跑脚本lupdate 调用脚本在 Python 可执行文件所在目录依次查找pyside6-lupdate、pylupdate6、pylupdate5找不到时再退回系统PATH搜索若仍找不到会以“No Python-capable Qt lupdate executable was found.”终止随后以-verbose模式扫描 ballontranslator/ui 下所有*.py文件并写入resources/translate/de_DE.ts。生成的de_DE.ts是一个 XML 文件每条记录形如source.../source与空的translation.../translation等待翻译者填写。在 Qt Linguist 中逐条翻译用 Qt Linguist 打开生成的源文件.\ballontrans_pylibs_win\Scripts\pyside6-linguist.exe .\resources\translate\de_DE.ts操作流程为左侧短语列表选中一条英文源短语 → 在翻译编辑区输入对应译文 → 标记为“完成”并保存。Qt Linguist 支持中途关闭、随时继续进度不会丢失。翻译时有四条必须遵守的约束保留占位符如{count}、%1、%n等占位符必须原样保留它们是程序运行时注入变量数量、数值等的位置改动会导致显示异常保留格式标记HTML 标签、换行符、键盘快捷键如前缀字符与Ctrl...组合键描述应原样保留否则会影响富文本渲染与快捷键提示按界面空间意译译文应服务于含义准确与 UI 空间适配而不是逐词直译避免按钮、标签上的文本被截断保持上下文一致同一英文短语在不同界面位置出现时注意通过上下文判断其含义再翻译避免一词多义时选错语义。编译.qm产物翻译并保存后用lrelease将.ts编译为应用可直接加载的.qm二进制文件.\ballontrans_pylibs_win\Scripts\pyside6-lrelease.exe .\resources\translate\de_DE.ts -qm .\resources\translate\de_DE.qm-qm参数指定输出路径确保输出文件名与.ts同名扩展名为.qm这是后续注册与运行时加载的前提。让新语言出现在语言菜单中添加友好显示名称可选但推荐若希望语言菜单中显示该语言的原生名称而不是de_DE这样的代码请在 ballontranslator/utils/shared.py 的DISPLAY_LANGUAGE_MAP字典中添加一行键为语言的原生名称、值为语言代码Deutsch: de_DE,仓库现有映射如下可作为格式参考DISPLAY_LANGUAGE_MAP { English: English, 简体中文: zh_CN, 繁體中文: zh_TW, Русский: ru_RU, Português (Brasil): pt_BR, 한국어: ko_KR, Español: es_MX, Hungarian: hu_HU, Français: fr_FR }自动发现机制不加映射也能工作shared.py 在加载时会自动扫描resources/translate目录下所有.qm文件凡是不在VALID_LANG_SET即DISPLAY_LANGUAGE_MAP的值集合中的语言代码会被以“代码即名称”的方式自动追加进DISPLAY_LANGUAGE_MAP。因此即使不添加上面那一行新语言依然可用只是菜单里显示为de_DE。这也意味着只要.qm文件就位语言就会自动出现在菜单中映射字典只影响显示名。菜单构建与切换信号流菜单的构建位于 ballontranslator/ui/mainwindowbars.py 的TitleBar类程序遍历shared.DISPLAY_LANGUAGE_MAP为每个语言创建一个可勾选的QAction并放入互斥的QActionGroup保证同一时刻只有一个语言被勾选当前勾选项与配置pcfg.display_lang对齐。用户点击某个语言后触发 on_displaylang_triggered通过display_lang_changed信号将语言代码写入应用配置。重启后launch.py 便按该配置加载对应.qm。验证、检查与提交界面验证步骤双击launch_win.bat启动应用该批处理会将ballontrans_pylibs_win及其Scripts目录加入PATH后执行python -m ballontranslator见 launch_win.bat在View Display Language菜单中选中你的新语言关闭应用并重新打开语言在启动阶段安装必须重启生效重点检查四个区域主窗口、设置面板、Run 对话框、各模块设置面板留意文本截断、措辞错误以及遗漏未译的英文短语。提交清单将以下变更提交为 Pull Request 到dev分支或直接交给维护者resources/translate/de_DE.ts—— 翻译源文件resources/translate/de_DE.qm—— 编译产物ballontranslator/utils/shared.py—— 若添加了友好显示名称需一并提交用编码 Agent 辅助本地化编码 Agent 完全可以承担整个流程安装工具、运行脚本生成目录、添加语言名称、批量建议译文、编译.qm文件、准备 Pull Request。只需告诉它语言代码与原生语言名称即可。但有一条原则不可省略必须亲自校对每一条机器生成的译文。Agent 可能误解 UI 上下文、擅自改动占位符或给出与界面空间不匹配的措辞——这些都会直接影响用户实际使用体验。机器翻译负责效率人工校对负责质量。后续维护英文界面变更后的同步当上游英文界面新增或修改了短语只需重新运行update_translation.py.\ballontrans_pylibs_win\python.exe .\scripts\update_translation.py de_DE脚本会对已有.ts做增量更新已翻译且未变更的条目会原样保留新增或变更的短语会以空翻译状态重新加入待审列表。你只需打开 Qt Linguist 处理新增条目、重新编译.qm即可无需从头再翻一遍。至此一个完整的语言包工作流已经闭环从工具安装、文本提取、逐条翻译、编译产物到菜单注册、界面验证、提交合并与后续同步全程不涉及业务代码改动任何非程序员用户都可以按此流程为 BallonsTranslator 贡献自己的语言。赞分享AI 应用计算机视觉图像处理NLP桌面应用【免费下载链接】BallonsTranslator深度学习辅助漫画翻译工具, 支持一键机翻和简单的图像/文本编辑 | Yet another computer-aided comic/manga translation tool powered by deeplearning项目地址https://gitcode.com/gh_mirrors/ba/BallonsTranslator点击查看免费下载相关推荐iTerm2 多语言本地化实战基于 String Catalogs 为 iTerm2 添加新语言翻译iTerm2 多语言本地化实战基于 String Catalogs 为 iTerm2 添加新语言翻译 iTerm2 采用 Apple String Catal桌面应用AI 应用Serial Studio 多语言本地化工程指南基于 Qt Linguist 与 LLM 的翻译流水线实战Serial Studio 多语言本地化工程指南基于 Qt Linguist 与 LLM 的翻译流水线实战 本文以 Serial Studio 开源遥测仪表盘桌面应用数据可视化物联网免费视频画质增强指南Video2X 超分辨率与帧插值完整上手免费视频画质增强指南Video2X 超分辨率与帧插值完整上手 翻出硬盘里 2014 年录的课堂 PPT 视频画面糊得像隔着毛玻璃。别急着删Video2X音视频视频处理图像处理深度学习上一篇终极渗透测试指南常见问题与解决方案完全手册下一篇Part-DBServer 项目常见问题解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表