hlp:荆州版本
This commit is contained in:
+130
-130
@@ -1,130 +1,130 @@
|
||||
# 喷嘴逆清洗(Nozzle Reverse Cleaning)流程分析
|
||||
|
||||
本文档基于 `SystemSetting::on_pushButtonCleanUP_pressed()` 及相关函数(`onCleanUPNow()`、`timerHandler2()`)的源码,梳理“喷嘴逆清洗”的完整流程,说明在各个阶段哪些泵/阀被打开或关闭、状态标志及定时器行为。
|
||||
|
||||
## 总体说明
|
||||
- 入口:`on_pushButtonCleanUP_pressed()`(由用户按下“清洗”按钮触发)。
|
||||
- 流程依赖三个成员:`enCleanUpAppendFlag`(状态机标志),`timer2`(阶段定时器),`timerAuto`(用于齿轮泵自动控制的定时器)。
|
||||
- 清洗可由用户启动或停止(对话框确认)。
|
||||
|
||||
## 主要状态与定时器
|
||||
- `enCleanUpAppendFlag` 含义(函数中使用的值):
|
||||
- 0:空闲
|
||||
- 1:进入手动模式并开始准备(短时等待)
|
||||
- 2:正在开启回收槽(等待位置到位)
|
||||
- 3:真正开始清洗(清洗中)
|
||||
- 4:清洗完成,开始关闭回收槽并恢复
|
||||
- 5:停止清洗/强制收尾
|
||||
- 6:特殊停止/恢复
|
||||
- `timer2`:用于阶段切换的定时器(不同阶段设置不同延时)。
|
||||
- `timerAuto`:在齿轮泵(gearPump)情形下,用于短周期自动控制(间隔 100 ms)。
|
||||
|
||||
## 按下按钮后的流程(`on_pushButtonCleanUP_pressed()`)
|
||||
1. 弹出对话框,提示“自动清洗时间约为一分钟,然后自动停止”,并显示“开始清洗 / 取消 / 停止清洗”选项。
|
||||
2. 若用户选择“开始清洗”执行以下动作:
|
||||
- 保存当前 `isPumpValveControledByHand` 状态到 `r_PumpValveControledByHand` 并将 `sysPara->status.isPumpValveControledByHand` 设为 `true`(进入手动控制状态)。
|
||||
- 将一系列泵与阀置为“清洗安全/准备”状态:
|
||||
- `controlCompressPump(false);` (关闭压缩泵)
|
||||
- `controlCycleValve(true);` (开启循环阀)
|
||||
- `controlInkValve(false);` (关闭墨阀)
|
||||
- `controlInkValvePWM(false);` (禁用墨阀 PWM)
|
||||
- `controlMainInkPump(false);` (关闭主墨泵)
|
||||
- `controlMixValve(false);` (关闭混合阀)
|
||||
- `controlReclaimPump(true, true);` (打开回收泵,第二参数 `true` 表示带某种模式/快速起动——与实现相关)
|
||||
- `controlViscosityPump(false);` (关闭粘度泵)
|
||||
- `controlReleaseValve(false);` (关闭释放阀)
|
||||
- 如果启用了 `gearPumpEnable` 且 `flagOfReclaimPumEnable` 为真(齿轮泵版本):
|
||||
- `controlCycleValve(true);`
|
||||
- `controlViscosityPump(true);`
|
||||
- `controlReclaimPump(true, false);`(打开回收泵,第二参数 `false`)
|
||||
- 将 `para.gearPumpValue = 0;` 并调用 `WriteMoterPump()` 更新电机/泵设置
|
||||
- `controlInkValvePWM(false);`
|
||||
- 将 `enCleanUpAppendFlag = 1`(进入准备阶段)。
|
||||
- 调用 `mainInkCtrl()`(主控恢复/切换函数,进入手动控制后的一些主流程)。
|
||||
- 启动 `timer2->start(2000);`(等待约 2 秒以便进入下一个阶段)。
|
||||
|
||||
3. 若用户选择“停止清洗”(对话框中为取消清洗按钮),会执行:
|
||||
- `enCleanUpAppendFlag = 3;`(直接跳转到完成/结束阶段处理)
|
||||
- 调用 `timerHandler2()` 立刻处理结束逻辑并返回。
|
||||
|
||||
## 清洗的执行阶段(由 `timer2` 驱动,见 `timerHandler2()`)
|
||||
流程按 `enCleanUpAppendFlag` 值推进:
|
||||
|
||||
- 当 `enCleanUpAppendFlag == 1`(准备完成):
|
||||
- 停止 `timer2`。
|
||||
- 将状态置为 `2`(准备开启回收槽并监测位置)。
|
||||
- 根据回收槽当前位置 `sysPara->status.currReclaimTankPos` 决定动作:
|
||||
- 若位置 < 45:调用 `controlReclaimTankOpen(1);`(开始打开回收槽,参数 1 表示动作/使能)。
|
||||
- 若位置 > 55:调用 `controlReclaimTankClose(1);`(开始关闭回收槽)。
|
||||
- 启动 `timer2->start(5500);`(等待 ~5.5 秒让回收槽动作完成)。
|
||||
|
||||
- 当 `enCleanUpAppendFlag == 2`(等待回收槽到位):
|
||||
- 停止 `timer2`。
|
||||
- 将 `enCleanUpAppendFlag = 3`(准备开始真正的清洗)。
|
||||
- 调用 `controlReclaimTankOpen(0);`(停止回收槽驱动/微调参数 0,表示结束开启命令)。
|
||||
- 触发 `onCleanUPNow()`:进入清洗动作。
|
||||
|
||||
- `onCleanUPNow()`(真正开始清洗):
|
||||
- 发出状态文本 `正在喷嘴逆清洗......`。
|
||||
- 若非齿轮泵特例(即 `!(gearPumpEnable && flagOfReclaimPumEnable)`)则执行:
|
||||
- `controlCycleValve(true);`(确保循环阀打开)
|
||||
- `controlViscosityPump(true);`(打开粘度泵)
|
||||
- `controlReclaimPump(true, false);`(以普通模式打开回收泵)
|
||||
- 启动 `timer2->start(60000);`(清洗计时约 60 秒,之后进入下一阶段)。
|
||||
|
||||
- 当 `enCleanUpAppendFlag == 3`(清洗结束进入收尾):
|
||||
- 将 `enCleanUpAppendFlag = 4`。
|
||||
- 执行收尾动作:
|
||||
- `controlCycleValve(false);`(关闭循环阀)
|
||||
- `controlViscosityPump(false);`(关闭粘度泵)
|
||||
- `controlReclaimTankClose(1);`(开始关闭回收槽)
|
||||
- 设置 `sysPara->status.reclaimCloseCnt = 10;`(用于稍后延迟/重试逻辑)
|
||||
- 停止 `timer2`,并 `timer2->start(8300);`(等待约 8.3 秒以完成回收槽关闭)。
|
||||
- 若为齿轮泵情形,启动 `timerAuto->start(100);`(开始短周期自动泵控制,用于慢速回退/调节)。
|
||||
|
||||
- 当 `enCleanUpAppendFlag == 4`(最终完成/恢复):
|
||||
- 发出 `清洗完成` 状态;若 `currReclaimTankPos == 0` 则:
|
||||
- 将 `enCleanUpAppendFlag = 0`(恢复空闲)
|
||||
- 停止 `timer2`,并调用 `controlReclaimTankClose(0);`(结束回收槽关闭动作)
|
||||
- 将 `sysPara->status.isPumpValveControledByHand = false;`(恢复手动控制标志)
|
||||
- 若 `timerAuto` 活动则停止它。
|
||||
- 调用 `mainInkCtrl()` 恢复主控模式(回到自动/正常喷印控制)。
|
||||
|
||||
- 当 `enCleanUpAppendFlag == 5`(用户中止或异常收尾):
|
||||
- 停止 `timer2`,将 `enCleanUpAppendFlag = 0`,调用 `controlReclaimTankClose(0);`,恢复 `isPumpValveControledByHand=false`,并调用 `mainInkCtrl()`。
|
||||
|
||||
- 当 `enCleanUpAppendFlag == 6`(另一种强制结束):
|
||||
- 停止 `timer2`,将 `enCleanUpAppendFlag = 0`,并将 `isPumpValveControledByHand=false`。通常不触发 `mainInkCtrl()` 但恢复手动标志。
|
||||
|
||||
## 其他相关逻辑
|
||||
- 在 `updateSysStatusToUI()` 中也会检测当前位置:如果回收槽位置在 45~55 且 `enCleanUpAppendFlag==2`,会直接把 `enCleanUpAppendFlag` 置为 3 并调用 `onCleanUPNow()`(避免超时等待)。
|
||||
- 清洗过程会通过 `emit setRunStatus(...)` 与 `LogInfo::setRunStatusText(...)` 报告当前步骤进度。
|
||||
|
||||
## 时序概览(近似)
|
||||
1. 用户点击“开始清洗” -> 进入手动(isPumpValveControledByHand = true),立即设置各泵阀为清洗准备状态,`enCleanUpAppendFlag=1`。
|
||||
2. 等待 ~2s(`timer2`)-> 切换到 `enCleanUpAppendFlag=2` 并根据位置 `controlReclaimTankOpen/Close(1)` -> 等待 ~5.5s。
|
||||
3. `enCleanUpAppendFlag=2` 到位后 -> `enCleanUpAppendFlag=3`,停止回收槽驱动(`controlReclaimTankOpen(0)`),调用 `onCleanUPNow()`。
|
||||
4. 真正清洗阶段:打开循环阀/粘度泵/回收泵(齿轮泵情形会略有不同),计时 ~60s(`timer2`)。
|
||||
5. 清洗结束 -> 关闭循环阀/粘度泵,关闭回收槽(`controlReclaimTankClose(1)`),等待 ~8.3s。
|
||||
6. 最终恢复:复位手动控制标志,停止 `timerAuto`(如有),调用 `mainInkCtrl()` 恢复正常打印控制。
|
||||
|
||||
## 关键函数调用清单(按先后出现)
|
||||
- `controlCompressPump(false)`
|
||||
- `controlCycleValve(true/false)`
|
||||
- `controlInkValve(false)`
|
||||
- `controlInkValvePWM(false)`
|
||||
- `controlMainInkPump(false)`
|
||||
- `controlMixValve(false)`
|
||||
- `controlReclaimPump(true, true/false)`
|
||||
- `controlViscosityPump(true/false)`
|
||||
- `controlReleaseValve(false)`
|
||||
- `controlReclaimTankOpen(1/0)` / `controlReclaimTankClose(1/0)`
|
||||
- `mainInkCtrl()`(用于进入/退出手动控制后的主控恢复)
|
||||
|
||||
## 注意事项与可能的改进点
|
||||
- `controlReclaimPump(true, true)` 与 `controlReclaimPump(true, false)` 两种调用方式的差异需参考 `devOp` 实现说明(表示不同启动模式或参数)。
|
||||
- 若存在异常中断(`enCleanUpAppendFlag` 被置为 5/6),代码会尽量关闭回收槽并恢复 `isPumpValveControledByHand`,但是否彻底恢复所有阀泵需在 `DevOp` 层确认。
|
||||
- 时间参数(2s、5.5s、60s、8.3s)为源码中硬编码值,若需更稳健的流程,建议改用位置/传感器反馈替代固定延时以提高鲁棒性。
|
||||
|
||||
---
|
||||
文档基于 `SystemSetting.cpp` 中相关函数分析整理,若需要我可以把上述时序画成流程图或补充 `DevOp` 层对应函数的实现说明。
|
||||
# 喷嘴逆清洗(Nozzle Reverse Cleaning)流程分析
|
||||
|
||||
本文档基于 `SystemSetting::on_pushButtonCleanUP_pressed()` 及相关函数(`onCleanUPNow()`、`timerHandler2()`)的源码,梳理“喷嘴逆清洗”的完整流程,说明在各个阶段哪些泵/阀被打开或关闭、状态标志及定时器行为。
|
||||
|
||||
## 总体说明
|
||||
- 入口:`on_pushButtonCleanUP_pressed()`(由用户按下“清洗”按钮触发)。
|
||||
- 流程依赖三个成员:`enCleanUpAppendFlag`(状态机标志),`timer2`(阶段定时器),`timerAuto`(用于齿轮泵自动控制的定时器)。
|
||||
- 清洗可由用户启动或停止(对话框确认)。
|
||||
|
||||
## 主要状态与定时器
|
||||
- `enCleanUpAppendFlag` 含义(函数中使用的值):
|
||||
- 0:空闲
|
||||
- 1:进入手动模式并开始准备(短时等待)
|
||||
- 2:正在开启回收槽(等待位置到位)
|
||||
- 3:真正开始清洗(清洗中)
|
||||
- 4:清洗完成,开始关闭回收槽并恢复
|
||||
- 5:停止清洗/强制收尾
|
||||
- 6:特殊停止/恢复
|
||||
- `timer2`:用于阶段切换的定时器(不同阶段设置不同延时)。
|
||||
- `timerAuto`:在齿轮泵(gearPump)情形下,用于短周期自动控制(间隔 100 ms)。
|
||||
|
||||
## 按下按钮后的流程(`on_pushButtonCleanUP_pressed()`)
|
||||
1. 弹出对话框,提示“自动清洗时间约为一分钟,然后自动停止”,并显示“开始清洗 / 取消 / 停止清洗”选项。
|
||||
2. 若用户选择“开始清洗”执行以下动作:
|
||||
- 保存当前 `isPumpValveControledByHand` 状态到 `r_PumpValveControledByHand` 并将 `sysPara->status.isPumpValveControledByHand` 设为 `true`(进入手动控制状态)。
|
||||
- 将一系列泵与阀置为“清洗安全/准备”状态:
|
||||
- `controlCompressPump(false);` (关闭压缩泵)
|
||||
- `controlCycleValve(true);` (开启循环阀)
|
||||
- `controlInkValve(false);` (关闭墨阀)
|
||||
- `controlInkValvePWM(false);` (禁用墨阀 PWM)
|
||||
- `controlMainInkPump(false);` (关闭主墨泵)
|
||||
- `controlMixValve(false);` (关闭混合阀)
|
||||
- `controlReclaimPump(true, true);` (打开回收泵,第二参数 `true` 表示带某种模式/快速起动——与实现相关)
|
||||
- `controlViscosityPump(false);` (关闭粘度泵)
|
||||
- `controlReleaseValve(false);` (关闭释放阀)
|
||||
- 如果启用了 `gearPumpEnable` 且 `flagOfReclaimPumEnable` 为真(齿轮泵版本):
|
||||
- `controlCycleValve(true);`
|
||||
- `controlViscosityPump(true);`
|
||||
- `controlReclaimPump(true, false);`(打开回收泵,第二参数 `false`)
|
||||
- 将 `para.gearPumpValue = 0;` 并调用 `WriteMoterPump()` 更新电机/泵设置
|
||||
- `controlInkValvePWM(false);`
|
||||
- 将 `enCleanUpAppendFlag = 1`(进入准备阶段)。
|
||||
- 调用 `mainInkCtrl()`(主控恢复/切换函数,进入手动控制后的一些主流程)。
|
||||
- 启动 `timer2->start(2000);`(等待约 2 秒以便进入下一个阶段)。
|
||||
|
||||
3. 若用户选择“停止清洗”(对话框中为取消清洗按钮),会执行:
|
||||
- `enCleanUpAppendFlag = 3;`(直接跳转到完成/结束阶段处理)
|
||||
- 调用 `timerHandler2()` 立刻处理结束逻辑并返回。
|
||||
|
||||
## 清洗的执行阶段(由 `timer2` 驱动,见 `timerHandler2()`)
|
||||
流程按 `enCleanUpAppendFlag` 值推进:
|
||||
|
||||
- 当 `enCleanUpAppendFlag == 1`(准备完成):
|
||||
- 停止 `timer2`。
|
||||
- 将状态置为 `2`(准备开启回收槽并监测位置)。
|
||||
- 根据回收槽当前位置 `sysPara->status.currReclaimTankPos` 决定动作:
|
||||
- 若位置 < 45:调用 `controlReclaimTankOpen(1);`(开始打开回收槽,参数 1 表示动作/使能)。
|
||||
- 若位置 > 55:调用 `controlReclaimTankClose(1);`(开始关闭回收槽)。
|
||||
- 启动 `timer2->start(5500);`(等待 ~5.5 秒让回收槽动作完成)。
|
||||
|
||||
- 当 `enCleanUpAppendFlag == 2`(等待回收槽到位):
|
||||
- 停止 `timer2`。
|
||||
- 将 `enCleanUpAppendFlag = 3`(准备开始真正的清洗)。
|
||||
- 调用 `controlReclaimTankOpen(0);`(停止回收槽驱动/微调参数 0,表示结束开启命令)。
|
||||
- 触发 `onCleanUPNow()`:进入清洗动作。
|
||||
|
||||
- `onCleanUPNow()`(真正开始清洗):
|
||||
- 发出状态文本 `正在喷嘴逆清洗......`。
|
||||
- 若非齿轮泵特例(即 `!(gearPumpEnable && flagOfReclaimPumEnable)`)则执行:
|
||||
- `controlCycleValve(true);`(确保循环阀打开)
|
||||
- `controlViscosityPump(true);`(打开粘度泵)
|
||||
- `controlReclaimPump(true, false);`(以普通模式打开回收泵)
|
||||
- 启动 `timer2->start(60000);`(清洗计时约 60 秒,之后进入下一阶段)。
|
||||
|
||||
- 当 `enCleanUpAppendFlag == 3`(清洗结束进入收尾):
|
||||
- 将 `enCleanUpAppendFlag = 4`。
|
||||
- 执行收尾动作:
|
||||
- `controlCycleValve(false);`(关闭循环阀)
|
||||
- `controlViscosityPump(false);`(关闭粘度泵)
|
||||
- `controlReclaimTankClose(1);`(开始关闭回收槽)
|
||||
- 设置 `sysPara->status.reclaimCloseCnt = 10;`(用于稍后延迟/重试逻辑)
|
||||
- 停止 `timer2`,并 `timer2->start(8300);`(等待约 8.3 秒以完成回收槽关闭)。
|
||||
- 若为齿轮泵情形,启动 `timerAuto->start(100);`(开始短周期自动泵控制,用于慢速回退/调节)。
|
||||
|
||||
- 当 `enCleanUpAppendFlag == 4`(最终完成/恢复):
|
||||
- 发出 `清洗完成` 状态;若 `currReclaimTankPos == 0` 则:
|
||||
- 将 `enCleanUpAppendFlag = 0`(恢复空闲)
|
||||
- 停止 `timer2`,并调用 `controlReclaimTankClose(0);`(结束回收槽关闭动作)
|
||||
- 将 `sysPara->status.isPumpValveControledByHand = false;`(恢复手动控制标志)
|
||||
- 若 `timerAuto` 活动则停止它。
|
||||
- 调用 `mainInkCtrl()` 恢复主控模式(回到自动/正常喷印控制)。
|
||||
|
||||
- 当 `enCleanUpAppendFlag == 5`(用户中止或异常收尾):
|
||||
- 停止 `timer2`,将 `enCleanUpAppendFlag = 0`,调用 `controlReclaimTankClose(0);`,恢复 `isPumpValveControledByHand=false`,并调用 `mainInkCtrl()`。
|
||||
|
||||
- 当 `enCleanUpAppendFlag == 6`(另一种强制结束):
|
||||
- 停止 `timer2`,将 `enCleanUpAppendFlag = 0`,并将 `isPumpValveControledByHand=false`。通常不触发 `mainInkCtrl()` 但恢复手动标志。
|
||||
|
||||
## 其他相关逻辑
|
||||
- 在 `updateSysStatusToUI()` 中也会检测当前位置:如果回收槽位置在 45~55 且 `enCleanUpAppendFlag==2`,会直接把 `enCleanUpAppendFlag` 置为 3 并调用 `onCleanUPNow()`(避免超时等待)。
|
||||
- 清洗过程会通过 `emit setRunStatus(...)` 与 `LogInfo::setRunStatusText(...)` 报告当前步骤进度。
|
||||
|
||||
## 时序概览(近似)
|
||||
1. 用户点击“开始清洗” -> 进入手动(isPumpValveControledByHand = true),立即设置各泵阀为清洗准备状态,`enCleanUpAppendFlag=1`。
|
||||
2. 等待 ~2s(`timer2`)-> 切换到 `enCleanUpAppendFlag=2` 并根据位置 `controlReclaimTankOpen/Close(1)` -> 等待 ~5.5s。
|
||||
3. `enCleanUpAppendFlag=2` 到位后 -> `enCleanUpAppendFlag=3`,停止回收槽驱动(`controlReclaimTankOpen(0)`),调用 `onCleanUPNow()`。
|
||||
4. 真正清洗阶段:打开循环阀/粘度泵/回收泵(齿轮泵情形会略有不同),计时 ~60s(`timer2`)。
|
||||
5. 清洗结束 -> 关闭循环阀/粘度泵,关闭回收槽(`controlReclaimTankClose(1)`),等待 ~8.3s。
|
||||
6. 最终恢复:复位手动控制标志,停止 `timerAuto`(如有),调用 `mainInkCtrl()` 恢复正常打印控制。
|
||||
|
||||
## 关键函数调用清单(按先后出现)
|
||||
- `controlCompressPump(false)`
|
||||
- `controlCycleValve(true/false)`
|
||||
- `controlInkValve(false)`
|
||||
- `controlInkValvePWM(false)`
|
||||
- `controlMainInkPump(false)`
|
||||
- `controlMixValve(false)`
|
||||
- `controlReclaimPump(true, true/false)`
|
||||
- `controlViscosityPump(true/false)`
|
||||
- `controlReleaseValve(false)`
|
||||
- `controlReclaimTankOpen(1/0)` / `controlReclaimTankClose(1/0)`
|
||||
- `mainInkCtrl()`(用于进入/退出手动控制后的主控恢复)
|
||||
|
||||
## 注意事项与可能的改进点
|
||||
- `controlReclaimPump(true, true)` 与 `controlReclaimPump(true, false)` 两种调用方式的差异需参考 `devOp` 实现说明(表示不同启动模式或参数)。
|
||||
- 若存在异常中断(`enCleanUpAppendFlag` 被置为 5/6),代码会尽量关闭回收槽并恢复 `isPumpValveControledByHand`,但是否彻底恢复所有阀泵需在 `DevOp` 层确认。
|
||||
- 时间参数(2s、5.5s、60s、8.3s)为源码中硬编码值,若需更稳健的流程,建议改用位置/传感器反馈替代固定延时以提高鲁棒性。
|
||||
|
||||
---
|
||||
文档基于 `SystemSetting.cpp` 中相关函数分析整理,若需要我可以把上述时序画成流程图或补充 `DevOp` 层对应函数的实现说明。
|
||||
|
||||
+54
-54
@@ -1,54 +1,54 @@
|
||||
**翻译覆盖审计报告**
|
||||
|
||||
概要:
|
||||
- 目标:找出项目中应使用 `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 注释)。
|
||||
|
||||
—— 翻译审计自动生成
|
||||
**翻译覆盖审计报告**
|
||||
|
||||
概要:
|
||||
- 目标:找出项目中应使用 `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 注释)。
|
||||
|
||||
—— 翻译审计自动生成
|
||||
|
||||
Reference in New Issue
Block a user