Files
VX5-DiaphragmPump/docs/translation_audit.md
T
2026-08-26 16:13:59 +08:00

55 lines
4.2 KiB
Markdown

**翻译覆盖审计报告**
概要:
- 目标:找出项目中应使用 `tr()`(或 `QObject::tr()`)进行国际化处理但未被包装的用户可见字符串。
- 说明:本报告基于静态搜索常见 UI 文本位置(`setWindowTitle`, `setText`, `QPushButton`, `QLabel`, `QMessageBox` 等)生成。由于静态分析有一定误报/漏报可能,后续建议人工逐条确认。
重要发现(优先级按文件列出,包含示例行范围):
- `UpdateFPGA.cpp` — 多处未使用 `tr()`:界面标题、按钮、日志标签以及所有 `QMessageBox` 文本均为硬编码字符串,应国际化。
- 示例(构造/显示文本):[UpdateFPGA.cpp](UpdateFPGA.cpp#L44-L89)
- 示例(消息框与对话):[UpdateFPGA.cpp](UpdateFPGA.cpp#L280-L396)
- `InputMethod.cpp` — 大量键盘按键与语言名称直接用字符串设置(如 `setText("A")`, `setText("中文")`, 不使用 `tr()`)。这些是用户可见的文本,建议按语言情形处理或使用翻译条目。
- 代表区间(字母/符号键):[InputMethod.cpp](InputMethod.cpp#L929-L987)
- 代表区间(中文字/候选键):[InputMethod.cpp](InputMethod.cpp#L1389-L1456)
- `zkWidget.cpp` — 某些 `QMessageBox::warning`/`information` 使用了未翻译的字面串。
- 示例: [zkWidget.cpp](zkWidget.cpp#L269-L299)
- `dlginputaddr.cpp` — 若干 `QMessageBox::warning` 使用了硬编码中文字符串(未用 `tr()`)。
- 示例: [dlginputaddr.cpp](dlginputaddr.cpp#L111-L152)
- `main.cpp` — 载入翻译文件失败时使用了未包装的字符串。
- 示例: [main.cpp](main.cpp#L169)
- `LicenseManger/LicenseManger.cpp`, `dlgQrCode.cpp`, `TextEditOption*.cpp`, `PicWidget.cpp`, `DevOp.cpp`, `PrintSetting.cpp` 等文件中存在混合状况:多数 `QMessageBox` 已用 `tr()`,但也能查到若干未用 `tr()` 的调用(例如使用字面串作为参数或 QString 拼接中未对字面串进行 tr)。请重点人工核查这些文件的注释/被注释代码与少量硬编码文本。
扫描方式与样例线索(已检索的典型模式):
- `setWindowTitle("...")`、`m_Label->setText("...")`、`new QPushButton("...")`、`QMessageBox::information(..., "...")` 等调用中直接使用字符串文字。
- 以上模式在静态搜索中返回了大量匹配,报告中仅列出高优先级或代表性位置,完整匹配可由检索日志复现。
建议与后续步骤:
- 将所有用户可见文本统一包装为 `tr("...")`。在非 QObject 派生的静态/全局上下文使用 `QObject::tr("...")`。
- 对键盘/字符常量(例如单字符键标记 'A','B' 或符号)评估是否需要翻译:若这些是键盘标签或不可本地化字符(字母/符号),可以保留不翻译;若是语言名或提示性文本(例如 "English", "Arabic", "中文"),则应 `tr()`。
- 优先级建议:先修 `UpdateFPGA.cpp`(类内几乎所有字符串均未翻译),然后按照文件影响范围(Main UI、设置对话、输入法)逐个处理。
- 实施时建议:
- 使用搜索替换脚本辅助(例如在 IDE 中搜索 `setWindowTitle("` 并逐一人工确认替换为 `setWindowTitle(tr("..."))`),避免误改程序逻辑字符串。
- 对已翻译的字符串生成并更新 `.ts` 文件(`lupdate` / `linguist` / `lrelease` 流程)。
附:需要重点人工复核的文件清单(按发现频率/重要性排序):
- UpdateFPGA.cpp — 完整类几乎未使用 `tr()`(必修)
- InputMethod.cpp — 键盘/候选字符(按需复核)
- zkWidget.cpp — 部分未翻译警告文本
- dlginputaddr.cpp — 文件打开/错误提示未使用 `tr()`
- main.cpp — 翻译文件加载错误提示未用 `tr()`
- LicenseManger/LicenseManger.cpp — 部分 warn/err 未 tr
- dlgQrCode.cpp / TextEditOption.cpp / TextEditOption_backup.cpp — 存在未 tr 的提示与对话
- PicWidget.cpp / DevOp.cpp / PrintSetting.cpp — 若干未 tr 的 QMessageBox 文本
如果你需要,我可以:
- 生成一份更详尽的逐行未包装字符串清单(包含每个匹配的具体行文本),或
- 在创建分支后逐文件替换并提交 PR(我会先在单独分支修改并保留 review 注释)。
—— 翻译审计自动生成