截止 2018 年 02 月,Google 基于开源 Linux OS 技术开发的 "智能手机" Android 操作系统已全球普及,就差火星了,最新官方稳定版为 8.0。2016 年起火热至今的开源 AI (人工智能),最佳部署平台也是 Linux 环境。而 Linux 环境最著名的 C++ GUI (图形用户界面) 开发框架,比肩 MicroSoft 公司 VC++ 库的,那就是 Qt C++ 库。
在 "智能手机" 还不是太普及,Nokia 诺基亚还未收购并 LGPL 开源 Qt 的 2008 年之前,在中国一说到要做 GUI (图形用户界面) App,可能第一想到的是 MicroSoft 公司的 .Net C# 环境或 MFC 框架,还有那红极一时的 Delphi。虽说当时 Linux 开源领域 Qt 已很有名,譬如:2008 年前很多 CG 行业的 App 应用都在考虑转 Qt 领域 (最著名的是美国 AutoDesk 公司)。为什么?因为,Qt 之前就采用的 GPL 开源许可授权协议,被 Nokia 诺基亚 2018 年收购后并进一步采用了 LGPL 开源许可授权协议 (真正做到了 Free 自由开源免费)。
本文所要介绍的 Qt/C++ *.ts *.qm 文件,"德云社区" 2009 年前后因需汉化 AutoDesk 公司 "MudBox 数字雕刻与纹理绘画软件" 界面。那时,百度、Google 搜索 *.ts *.qm 文件资源还很少,当然,现在也不算多。
*.ts *.qm 文件
*.qm 文件是从 *.ts 文件,采用 Qt 自带的 lrelease.exe 并运行相关 CMD 命令或由 Qt 自带的 linguist.exe 应用生成的 "Qt Multi-language" 本地化文件。
*.ts 文件是从 Qt/C++ 或相关绑定 (如 Python 语言绑定 PyQt、PySide) 源代码中,提取出来的 "Translate Source 翻译资源" 文件。
采用 Qt 自带的 lupdate.exe 并运行相关 CMD 命令,在 Windows OS 下提取 *.cpp (Qt/C++ 源文件) 或 *.py (Python 语言绑定 PyQt、PySide 源文件) 可获得 *.ts 文件。"德云社区" 以前是将 *.ts 文件批量导入德国 Passolo (后被 SDL Trados 塔多斯收购) 或 Qt 自带的 linguist.exe 应用中翻译并生成 *.qm 文件。
但效率不高,且用户体验也不行;因此,"德云社区" 才制作了以下一系列专用小程序,都集成在 "数字翻译" 和 "数字 IDE 专业版" 应用中,未单独发布:
"Qt *.TS 文件提取" 小程序
从 *.cpp (Qt/C++ 源文件) 或 *.py (Python 语言绑定 PyQt、PySide 源文件) 中批量提取、获得 *.ts 文件。
不用运行 CMD 命令,只需选择源工程目录位置-格式,及提取文件名 (默认 en-US) 即可,见下图。
有人会说界面有点复杂,没关系,等你会用 "德云社区" 的一个小程序后,其它小程序用法基本一致,大同小异。
"Qt *.TS 文件编排" 小程序
批量剔除 *.ts 文件中的多余字符,排版-生成最终制作 *.qm 文件所需的文件 "排版样式"。
操作方式同上,若需单独列出 "访问键",请选择 "启用"。
"Qt *.QM 文件发布" 小程序
把所有 *.ts 文件批量发布成 "Qt Multi-language" 本地化 *.qm 文件。
操作方式同上,但发布前请采用 "德云社区" 的 "翻译 UI (用户界面)" 小程序,翻译所有 "已编排" *.ts 文件。
"翻译 UI (用户界面)" 小程序
"批量-多线程-多进程"翻译 "已编排" *.ts 文件。
翻译前请使用 "德云社区" 的 "文件字符提取" 小程序,从 "已编排" *.ts 文件中提取出 "翻译字符" *.dscp 文件,并自动 "机器翻译" 或手动 "人工翻译" 提取 *.dscp 文件。
若 *.dscp 文件中存在大量 "重复术语",请使用 "德云社区" 的 "文件行重复" 小程序 "剔除" 所有 "重复术语"。
当然,若要生成 "zh-CN 语言" 本地化 *.qm 文件,请使用 "德云社区" 的 "文件克隆" 工作,先将所有 en-US.ts 文件克隆出一份 zh-CN.ts 文件。
若要生成 "zh-TW 语言" 本地化 *.qm 文件,请使用 "德云社区" 的 "文件克隆" 工作,先把所有已翻译 zh-CN.ts 文件克隆出一份 zh-TW.ts 文件,再使用 "文件转 zh-TW" 小程序将所有 zh-TW.ts 文件中的 "简体中文" 字符 "快速-批量" 转换成 "繁体中文"。
此处所说的 *.dscp 文件,也就是翻译时要用到的 "术语库",是以 6 个连续 "─" 字符 (主要针对德国 Passolo 应用 "术语文件",采用不可见 "\t" Tab 键空格分隔术语的改进) 分隔术语的 "纯文本" 文件。
领取专属 10元无门槛券
私享最新 技术干货