Files
2026-10-19 17:48:03 +08:00

4.2 KiB

翻译覆盖审计报告

概要:

  • 目标:找出项目中应使用 tr()(或 QObject::tr())进行国际化处理但未被包装的用户可见字符串。
  • 说明:本报告基于静态搜索常见 UI 文本位置(setWindowTitle, setText, QPushButton, QLabel, QMessageBox 等)生成。由于静态分析有一定误报/漏报可能,后续建议人工逐条确认。

重要发现(优先级按文件列出,包含示例行范围):

  • UpdateFPGA.cpp — 多处未使用 tr():界面标题、按钮、日志标签以及所有 QMessageBox 文本均为硬编码字符串,应国际化。

  • InputMethod.cpp — 大量键盘按键与语言名称直接用字符串设置(如 setText("A"), setText("中文"), 不使用 tr())。这些是用户可见的文本,建议按语言情形处理或使用翻译条目。

  • zkWidget.cpp — 某些 QMessageBox::warning/information 使用了未翻译的字面串。

  • dlginputaddr.cpp — 若干 QMessageBox::warning 使用了硬编码中文字符串(未用 tr())。

  • main.cpp — 载入翻译文件失败时使用了未包装的字符串。

  • 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 注释)。

—— 翻译审计自动生成