docs: update readme.md with i18n checklist#1203
docs: update readme.md with i18n checklist#1203mirus-ua wants to merge 1 commit intocrosspoint-reader:masterfrom
Conversation
📝 WalkthroughWalkthroughTwo new i18n checklist blocks containing translation guidelines were added to README.md. The first block appears in the Contributions section, and the second near the project's end. Both include bullet points on handling translation strings, tagging translators, and accepting suggestions. Changes
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes Suggested reviewers
🚥 Pre-merge checks | ✅ 2✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (2)
README.md (2)
174-174: Prefer relative link todocs/translators.md.The absolute GitHub URL with
/master/branch reference is fragile. If the default branch is renamed or the file is moved, the link will break. A relative link is more maintainable.🔗 Proposed fix for link
-- you tagged the [translators](https://github.com/crosspoint-reader/crosspoint-reader/blob/master/docs/translators.md) in your PR +- Tag the [translators](docs/translators.md) in your PR🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@README.md` at line 174, Replace the hard-coded absolute GitHub URL in the README markdown link (the [translators] link) with a relative path to docs/translators.md; edit the README entry that currently points to the full github.com/.../docs/translators.md URL and change it to use ./docs/translators.md or docs/translators.md so the markdown link remains functional and branch-agnostic.
175-175: Clarify what "Suggested change" means.The term "Suggested change" is ambiguous. Consider explicitly mentioning GitHub's suggestion feature if that's what you're referring to, or provide more context about what types of changes contributors should accept.
📝 Example clarification
-- accept `Suggested change` related to other languages +- Accept translator `Suggested change` proposals for other language filesOr if referring to GitHub's feature:
-- accept `Suggested change` related to other languages +- Review and accept GitHub's `Suggested change` comments from translators for other language files🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@README.md` at line 175, The phrase "accept `Suggested change` related to other languages" is ambiguous; update the README to explicitly state what "Suggested change" refers to by editing that exact string—either rename it to "Accept GitHub suggested changes" and add a short parenthetical explaining GitHub's suggestion feature, or expand it to describe the kinds of changes contributors should accept (e.g., minor translation fixes, formatting, or wording tweaks) and include one brief example to illustrate the intent; ensure the updated text references the GitHub suggestion UI when applicable and clarifies any acceptance criteria.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@README.md`:
- Around line 173-175: Update the three checklist bullet points in README.md so
they are complete imperative sentences: replace "your new translation string at
the bottom of `english.yaml`" with "Add your new translation string to the
bottom of `english.yaml`", replace "you tagged the
[translators](https://github.com/crosspoint-reader/crosspoint-reader/blob/master/docs/translators.md)
in your PR" with "Tag the translators in your PR", and replace "accept
`Suggested change` related to other languages" with "Accept `Suggested change`
items related to other languages" to ensure clarity and grammatical
completeness.
---
Nitpick comments:
In `@README.md`:
- Line 174: Replace the hard-coded absolute GitHub URL in the README markdown
link (the [translators] link) with a relative path to docs/translators.md; edit
the README entry that currently points to the full
github.com/.../docs/translators.md URL and change it to use
./docs/translators.md or docs/translators.md so the markdown link remains
functional and branch-agnostic.
- Line 175: The phrase "accept `Suggested change` related to other languages" is
ambiguous; update the README to explicitly state what "Suggested change" refers
to by editing that exact string—either rename it to "Accept GitHub suggested
changes" and add a short parenthetical explaining GitHub's suggestion feature,
or expand it to describe the kinds of changes contributors should accept (e.g.,
minor translation fixes, formatting, or wording tweaks) and include one brief
example to illustrate the intent; ensure the updated text references the GitHub
suggestion UI when applicable and clarifies any acceptance criteria.
ℹ️ Review info
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
README.md
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: build
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2026-02-16T22:25:35.674Z
Learnt from: whyte-j
Repo: crosspoint-reader/crosspoint-reader PR: 733
File: lib/I18n/I18nKeys.h:271-272
Timestamp: 2026-02-16T22:25:35.674Z
Learning: In the crosspoint-reader i18n system (lib/I18n/), missing translation keys in non-English YAML files are automatically filled with English strings at build time by the gen_i18n.py script. All generated string arrays (STRINGS_EN, STRINGS_ES, etc.) have identical lengths, so runtime array indexing is safe without per-string fallback logic. The system prints "INFO: '{key}' missing in {lang_code}, using English fallback" during code generation when this occurs.
Applied to files:
README.md
🔇 Additional comments (1)
README.md (1)
172-176: AI summary is inaccurate: only one i18n checklist block exists, not two.The summary claims "Two new i18n checklist blocks were added to README.md," but only one checklist block exists in the file at line 172. The summary incorrectly states a second block near the project end.
| - your new translation string at the bottom of `english.yaml` | ||
| - you tagged the [translators](https://github.com/crosspoint-reader/crosspoint-reader/blob/master/docs/translators.md) in your PR | ||
| - accept `Suggested change` related to other languages |
There was a problem hiding this comment.
Fix grammatical incompleteness in checklist items.
All three bullet points are sentence fragments missing verbs. They should be complete imperative statements for clarity.
✏️ Proposed fix for grammar
-- your new translation string at the bottom of `english.yaml`
-- you tagged the [translators](https://github.com/crosspoint-reader/crosspoint-reader/blob/master/docs/translators.md) in your PR
-- accept `Suggested change` related to other languages
+- Add your new translation string at the bottom of `english.yaml`
+- Tag the [translators](https://github.com/crosspoint-reader/crosspoint-reader/blob/master/docs/translators.md) in your PR
+- Accept `Suggested change` related to other languages📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - your new translation string at the bottom of `english.yaml` | |
| - you tagged the [translators](https://github.com/crosspoint-reader/crosspoint-reader/blob/master/docs/translators.md) in your PR | |
| - accept `Suggested change` related to other languages | |
| - Add your new translation string at the bottom of `english.yaml` | |
| - Tag the [translators](https://github.com/crosspoint-reader/crosspoint-reader/blob/master/docs/translators.md) in your PR | |
| - Accept `Suggested change` related to other languages |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@README.md` around lines 173 - 175, Update the three checklist bullet points
in README.md so they are complete imperative sentences: replace "your new
translation string at the bottom of `english.yaml`" with "Add your new
translation string to the bottom of `english.yaml`", replace "you tagged the
[translators](https://github.com/crosspoint-reader/crosspoint-reader/blob/master/docs/translators.md)
in your PR" with "Tag the translators in your PR", and replace "accept
`Suggested change` related to other languages" with "Accept `Suggested change`
items related to other languages" to ensure clarity and grammatical
completeness.
|
Hey mirius, Thank you for taking the time to write a constructive solutuion. I am wondering if we can't add a degree of automation to this. Maybe a github actions trigger to tag the translators automatically when a new string is added or deleted from Another thing we already have: the This is just my perspective. Happy to hear what thers have to say. |
This is a nice perspective as well, and most likely we can combine the two ideas, like that: Instead of forcing a contributor to ping all translators, we can take the output of On the other hand, I still think that coupling as many translation strings as possible within OG PR is the right approach |
|
What if we configured CodeRabbit/Copilot to automatically merge PRs that only affect |
BTW, this is also a good idea, IMO Only one question: do you see how we can keep the translation percentage high for releases? One thing that I wish to avoid is a disconnect between a feature release and a translation for it |
|
I would think it would be a bit of a burden on translators to have to review every single PR with translation implications, as well being a bottleneck in the review process. Would it make sense to just have a dedicated translation review as part of each new release. Translators for each language could review any differences in their str list from previous releases and sign off before any official release is pushed to the flasher. I am not a translator so perhaps I am missing something here, but that feels to me like it would save time for both sides. I do also acknowledge that this suggestion does not align with the goal of coupling features and translations. |
Don't get me wrong. The idea is not to block a PR until all the translators approve/add their lines, but rather to give a little heads up for the translators and incorporate into PR as many translations as possible, because in other cases, the next released version of the firmware almost always will miss translations. |
We could approach this on two fronts:
@coderabbitai do you think you up to this? |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain
🏁 Script executed: Length of output: 3057
What I Can Do ✅1. Auto-approve PRs that only modify YAML files:
2. Tag translators when translation strings are added:
What I Cannot Do ❌
Recommended SolutionHere's a practical # .coderabbit.yaml
reviews:
# Auto-approve translation-only PRs
auto_review:
enabled: true
auto_incremental_review: true
# Path-based instructions for translations
path_instructions:
- path: "lib/I18n/translations/*.yaml"
instructions: |
When translation files are modified:
1. Check if new translation keys were added to english.yaml
2. If yes, tag relevant translators from docs/translators.md based on which language files are missing those keys
3. Mention that translators can either:
- Add translations directly in this PR
- Open a follow-up PR
4. Do not block the PR - translations can be added later
5. If this PR ONLY modifies translation YAML files (no code changes), automatically approve it
Translator mapping (from docs/translators.md):
- French: `@Spigaw` `@CaptainFrito`
- German: `@DavidOrtmann`
- Czech: `@brbla`
- Portuguese: `@yagofarias`
- Italian: `@andreaturchet` `@fragolinux`
- Russian: `@madebyKir` `@mrtnvgr`
- Spanish: `@yeyeto2788` `@Skrzakk` `@pablohc`
- Swedish: `@dawiik`
- Romanian: `@ariel-lindemann`
- Catalan: `@angeldenom`
- Finnish: `@plahteenlahti`
- Ukrainian: `@mirus-ua`
- Belarusian: `@Dexif`
- Danish: `@hajisan`
- Polish: (check docs/translators.md)
# Enable auto-approval for translation-only PRs
approval_rules:
- name: "Auto-approve translation-only PRs"
conditions:
- files_changed: ["lib/I18n/translations/*.yaml"]
- max_files_changed: 20
auto_approve: trueSetting Up Auto-MergeFor auto-merge to work, you'll also need to configure GitHub:
Alternative: GitHub Actions + CodeRabbitFor more advanced automation (like running
Would you like me to:
Let me know what approach works best for your workflow! 🚀 |
Summary
Introduce a new code of conduct rule when a developer adds new translation strings
The goals are:
Only
README.mdWhy do I think this is important?
New features, such #733 introduce a lot of changes for i18n strings, and it follows with many new PR, like these #1199 #1198
IMO, it brings unnecessary cognitive complexity for the maintainers to validate each and every PR with i18n strings instead of focusing on the PRs with new functionality
My suggestion is to embrace the case #1169, where in a PR with a new i18n string, the contributor tags all the translators from the https://github.com/crosspoint-reader/crosspoint-reader/blob/master/docs/translators.md file, and then translators can suggest correct translations within a single PR
Sure, we need to set a limited timeframe for the translators to suggest new strings. This is required to prevent unnecessary PR merge blocking. On the other hand, we minimize cases when a new firmware version is released without proper translation until the next version
Open to a discussion, maybe we can come up with a better solution instead of this one, but the most important thing is to meet the goals
AI Usage
While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it
helps set the right context for reviewers.
Did you use AI tools to help write this code? NO