docs: resync translated READMEs with English source, add sync check - #63
Conversation
The weekly link check has been failing on main since 2026-08-17. Two links, in README_Fr.md and README_JP.md, target ./hardware/reBot_B601_RS/readme.md, but that directory holds README.md in uppercase — the RS folder uses README.md while the DM folder beside it uses readme.md. GitHub serves paths case-sensitively, so both 404. These slipped through review in Seeed-Projects#58 because that verification ran on a case-insensitive Windows filesystem, where readme.md resolves to README.md and reports as fine. The CI job runs on ubuntu-latest, which is why it caught them on its first scheduled run. Closes Seeed-Projects#60 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Four factual disagreements between README.md and its translations, each one English being updated and the copies not following: - README_zh.md gave DM max reach as 650 mm. Commit 065c9f2 corrected that to 767 mm in English on 2026-06-16 and Fr/JP/es followed; zh did not. 117 mm is enough to size a workcell wrong. - The RS Isaac Sim row was marked planned in zh, JP and Fr while linking to Seeed-Projects/reBot-Isaacsim in the same row. The work shipped; Seeed-Projects#47 is still open asking about it. - README_zh.md was missing the reSpeaker voice integration row that Seeed-Projects#39 added everywhere else, so the Chinese roadmap had 12 rows against 13. - README_JP.md carried the entire RS roadmap table in French, copied from README_Fr.md, and had no "### reBot Arm B601 RS" heading. Add tools/check_readme_sync.py, which compares the translations against README.md on roadmap table count, rows per table, per-row status glyph and specification numbers, ignoring prose so translators keep their phrasing. Run against the pre-fix tree it reports all four findings. Covered by nine unittest cases and run in CI on README changes. Closes Seeed-Projects#62 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
f756509 to
a5d9092
Compare
|
Rebased onto the branch behind #61 so this stands green on its own. Before the rebase, the link check on this PR reported one error: Both checks now pass on this branch: Check Documentation Links ✅ and Check README Translations ✅ (444 unique links, 0 errors; 9 unit tests). Merge order no longer matters. #61 is now an ancestor of this branch, so merging this closes both #60 and #62; merging #61 first also works and leaves this a clean fast-forward. #61 is still worth keeping open as the smaller, more reviewable change if you would rather take the one-line fix first. |
Closes #62
What this changes
The English README is maintained; the translations follow when someone remembers. This fixes the four places where they had stopped agreeing, and adds a check so the next one is caught in review.
README_zh.md065c9f2corrected 650 → 767 mm inREADME.mdon 2026-06-16; Fr, JP and es followed, zh did notREADME_zh.md,README_JP.md,README_Fr.mdSeeed-Projects/reBot-Isaacsim— pushed to this week — while calling the work planned. EN and es already say completedREADME_zh.mdREADME_JP.md✅ Terminé/⏳ Prévucopied fromREADME_Fr.md; the other four files all have### reBot Arm B601 RSThe Isaac Sim one has a visible cost: #47 is still open asking whether Isaac Sim integration exists. It shipped — but three of five READMEs say otherwise, and two of those contradict themselves within a single table row.
The Japanese RS table is translated from the English table, not from the French one it replaced, so it also picks up the corrections the French copy was missing.
The check
tools/check_readme_sync.pycompares each translation againstREADME.mdon the things that must not differ:It never compares prose — translators keep their own phrasing, and
1,5 kgis treated as equal to1.5kgso locale decimal separators do not trip it..github/workflows/readme-sync.ymlruns it on pull requests touchingREADME*.md, along with the checker's own tests. Both actions are SHA-pinned, matching #56 and #58.Verification
main), the checker reports exactly the findings above and exits 1:4 translations agree with README.md., exit 0.actionlintpasses on the new workflow. No new links introduced — the Chinese reSpeaker row points atwiki.seeedstudio.com/cn/control_rebot_arm_using_voice_with_respeaker_flex/, confirmed 200, matching the/cn/convention the other Chinese rows use.Limits worth knowing
The checker compares structure and numbers, not meaning. It would not have flagged the French-table-in-
README_JP.mdas "wrong language" — it caught that file only because the French table also carried a stale Isaac Sim status. Detecting a translated file written in the wrong language is a different problem and I have not tried to solve it here.Note on merge order
This touches
README_JP.md:158, which is the line #61 fixes. Whichever merges first, the other needs a trivial rebase — the hunk #61 edits is inside the French table this PR deletes. Merging #61 first is the simpler order.🤖 Generated with Claude Code