Skip to content

feat: added Romanian strings#987

Merged
osteotek merged 7 commits intocrosspoint-reader:masterfrom
ariel-lindemann:ro_translation
Feb 20, 2026
Merged

feat: added Romanian strings#987
osteotek merged 7 commits intocrosspoint-reader:masterfrom
ariel-lindemann:ro_translation

Conversation

@ariel-lindemann
Copy link
Contributor

Summary

  • What is the goal of this PR? (e.g., Implements the new feature for file uploading.)

To add upport for a romanian language user interface.

  • What changes are included?

A new i18n file romanian.yml

Additional Context

  • Add any other information that might be helpful for the reviewer (e.g., performance implications, potential risks,
    specific areas to focus on).

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 >

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 19, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds Romanian language support by introducing Language::ROMANIAN, declaring STRINGS_RO in the i18n string declarations, and adding a new romanian.yaml translation file containing localized UI strings and metadata. Also adds a Romanian translator entry in docs/translators.md.

Changes

Cohort / File(s) Summary
Language enum & lookup
lib/I18n/I18nKeys.h
Added ROMANIAN = 8 to enum class Language, added extern const char* const STRINGS_RO[] declaration, and updated getStringArray(Language) to return i18n_strings::STRINGS_RO for Language::ROMANIAN.
String array declaration
lib/I18n/I18nStrings.h
Added declaration extern const char* const STRINGS_RO[]; inside i18n_strings namespace.
Translation data
lib/I18n/translations/romanian.yaml
New Romanian translations file (~317 lines) with metadata (_language_name, _language_code, _order) and a comprehensive set of STR_... localized UI strings.
Documentation
docs/translators.md
Added a Romanian translator entry referencing ariel-lindemann (one-line addition).

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

🚥 Pre-merge checks | ✅ 2
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title 'feat: added Romanian strings' directly and clearly summarizes the main change—adding Romanian language support with new string declarations and translations.
Description check ✅ Passed The description states the goal of adding Romanian language UI support and mentions the new i18n file, which aligns with the changeset that adds Romanian translations and language enum support.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
lib/I18n/translations/romanian.yaml (1)

42-42: Minor: Inconsistent capitalization on sentence-initial strings.

A few strings that appear to be standalone sentences or prompts begin with lowercase:

  • Line 42: "ştergeţi parola salvată?"
  • Line 146: "ştergerea cache-ului a eşuat"
  • Line 271: "ştergere" (may be intentional for button label)

Consider capitalizing the first two for consistency with other prompts in the file.

✏️ Suggested changes
-STR_REMOVE_PASSWORD: "ştergeţi parola salvată?"
+STR_REMOVE_PASSWORD: "Ştergeţi parola salvată?"
-STR_CLEAR_CACHE_FAILED: "ştergerea cache-ului a eşuat"
+STR_CLEAR_CACHE_FAILED: "Ştergerea cache-ului a eşuat"

Also applies to: 146-146, 271-271

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@lib/I18n/translations/romanian.yaml` at line 42, The strings
STR_REMOVE_PASSWORD and the message at line referenced by the reviewer (the
error message "ştergerea cache-ului a eşuat") start with lowercase; update them
to sentence-initial capitalization (e.g., "Ştergeţi parola salvată?" and
"Ştergerea cache-ului a eşuat") to match the other prompts, leaving short UI
labels like "ştergere" (button) unchanged if intentional; edit the YAML values
for STR_REMOVE_PASSWORD and the cache-failure message key accordingly.
📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 10b7769 and f16a2a9.

📒 Files selected for processing (3)
  • lib/I18n/I18nKeys.h
  • lib/I18n/I18nStrings.h
  • lib/I18n/translations/romanian.yaml
🧰 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:

  • lib/I18n/I18nKeys.h
  • lib/I18n/translations/romanian.yaml
⏰ 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 comments (2)
lib/I18n/I18nKeys.h (1)

16-16: LGTM!

The Romanian language additions follow the established pattern: the extern declaration, enum value assignment (sequential after SWEDISH = 7), and switch case are all consistent with the existing language implementations.

Also applies to: 29-29, 379-380

lib/I18n/I18nStrings.h (1)

18-18: LGTM!

The extern declaration for STRINGS_RO follows the established pattern for other language string arrays.

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@lib/I18n/translations/romanian.yaml`:
- Line 121: The translation value for key STR_USERNAME contains a typo
("Ultilizator"); update the YAML entry STR_USERNAME to use the correct Romanian
spelling "Utilizator" so the line reads STR_USERNAME: "Utilizator".
- Around line 163-166: The Romanian orientation strings are swapped: update
STR_PORTRAIT to "Vertical", STR_LANDSCAPE_CW to "Orizontal dreapta",
STR_LANDSCAPE_CCW to "Orizontal stânga" and keep STR_INVERTED as "Invers" so the
labels match the actual portrait/landscape orientations (references:
STR_PORTRAIT, STR_LANDSCAPE_CW, STR_LANDSCAPE_CCW, STR_INVERTED).

---

Nitpick comments:
In `@lib/I18n/translations/romanian.yaml`:
- Line 42: The strings STR_REMOVE_PASSWORD and the message at line referenced by
the reviewer (the error message "ştergerea cache-ului a eşuat") start with
lowercase; update them to sentence-initial capitalization (e.g., "Ştergeţi
parola salvată?" and "Ştergerea cache-ului a eşuat") to match the other prompts,
leaving short UI labels like "ştergere" (button) unchanged if intentional; edit
the YAML values for STR_REMOVE_PASSWORD and the cache-failure message key
accordingly.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9e03e59 and 1bb263b.

📒 Files selected for processing (3)
  • lib/I18n/I18nKeys.h
  • lib/I18n/I18nStrings.h
  • lib/I18n/translations/romanian.yaml
🚧 Files skipped from review as they are similar to previous changes (1)
  • lib/I18n/I18nStrings.h
🧰 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:

  • lib/I18n/translations/romanian.yaml
  • lib/I18n/I18nKeys.h
🧬 Code graph analysis (1)
lib/I18n/I18nKeys.h (1)
lib/I18n/I18nStrings.h (1)
  • i18n_strings (8-20)
⏰ 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). (2)
  • GitHub Check: build
  • GitHub Check: cppcheck
🔇 Additional comments (3)
lib/I18n/translations/romanian.yaml (1)

1-4: Metadata looks consistent with the new language entry.

lib/I18n/I18nKeys.h (2)

16-30: Enum and extern declaration additions look correct.


379-380: Switch mapping for Romanian is wired correctly.

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@lib/I18n/translations/romanian.yaml`:
- Around line 27-29: Add the missing Romanian translation for the
STR_LOADING_POPUP key so it doesn't fall back to English at build time; update
the translations by adding a STR_LOADING_POPUP entry (matching the existing keys
like STR_LOADING) with an appropriate Romanian string (e.g., a localized phrase
for "Loading..." or "Se încarcă...") to the Romanian translations file so
gen_i18n.py will include it.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
lib/I18n/translations/romanian.yaml (1)

268-272: Button label capitalization inconsistency.

STR_CLEAR_BUTTON uses lowercase "ştergere" while STR_FORGET_BUTTON uses uppercase "Uitaţi reţeaua". Consider aligning capitalization for button labels for UI consistency.

✏️ Proposed fix
-STR_CLEAR_BUTTON: "ştergere"
+STR_CLEAR_BUTTON: "Ştergere"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@lib/I18n/translations/romanian.yaml` around lines 268 - 272, The button label
capitalization is inconsistent: STR_CLEAR_BUTTON is "ştergere" (lowercase) while
other button keys like STR_FORGET_BUTTON are capitalized ("Uitaţi reţeaua");
update STR_CLEAR_BUTTON to use sentence-case capitalization consistent with
other button labels (e.g., "Ştergere" or match the exact casing style used
across keys) so all button labels follow the same capitalization convention.
📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 27081bc and e6f9a11.

📒 Files selected for processing (2)
  • docs/translators.md
  • lib/I18n/translations/romanian.yaml
🧰 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:

  • lib/I18n/translations/romanian.yaml
⏰ 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). (2)
  • GitHub Check: build
  • GitHub Check: cppcheck
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/translators.md`:
- Line 38: Fix the malformed GitHub URL for the [ariel-lindemann] entry by
adding the missing slash in the scheme so it reads "https://github.com/..."
instead of "https:/github.com/..."; locate the link text "[ariel-lindemann]" in
docs/translators.md and update the URL to use the correct "https://" prefix.

In `@lib/I18n/translations/romanian.yaml`:
- Around line 41-43: STR_REMOVE_PASSWORD uses a lowercase initial "ş" which is
inconsistent with STR_FORGET_NETWORK and STR_SAVE_PASSWORD; update the
STR_REMOVE_PASSWORD value so the first character is uppercase (change the
leading "ş" to "Ş") so the prompt reads "Ştergeţi parola salvată?" matching the
capitalization style of STR_FORGET_NETWORK and STR_SAVE_PASSWORD.

---

Nitpick comments:
In `@lib/I18n/translations/romanian.yaml`:
- Around line 268-272: The button label capitalization is inconsistent:
STR_CLEAR_BUTTON is "ştergere" (lowercase) while other button keys like
STR_FORGET_BUTTON are capitalized ("Uitaţi reţeaua"); update STR_CLEAR_BUTTON to
use sentence-case capitalization consistent with other button labels (e.g.,
"Ştergere" or match the exact casing style used across keys) so all button
labels follow the same capitalization convention.

- [dawiik](https://github.com/dawiik)

## Romanian
- [ariel-lindemann](https:/github.com/ariel-lindemann) No newline at end of file
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Malformed URL - missing slash.

The GitHub URL is missing a slash: https:/github.com/ should be https://github.com/. This will result in a broken link.

✏️ Proposed fix
-- [ariel-lindemann](https:/github.com/ariel-lindemann)
+- [ariel-lindemann](https://github.com/ariel-lindemann)
📝 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.

Suggested change
- [ariel-lindemann](https:/github.com/ariel-lindemann)
- [ariel-lindemann](https://github.com/ariel-lindemann)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/translators.md` at line 38, Fix the malformed GitHub URL for the
[ariel-lindemann] entry by adding the missing slash in the scheme so it reads
"https://github.com/..." instead of "https:/github.com/..."; locate the link
text "[ariel-lindemann]" in docs/translators.md and update the URL to use the
correct "https://" prefix.

Comment on lines +41 to +43
STR_FORGET_NETWORK: "Uitaţi reţeaua?"
STR_SAVE_PASSWORD: "Salvaţi parola?"
STR_REMOVE_PASSWORD: "ştergeţi parola salvată?"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Inconsistent capitalization on prompt string.

STR_REMOVE_PASSWORD starts with lowercase "ş" while the adjacent similar prompts (STR_FORGET_NETWORK, STR_SAVE_PASSWORD) start with uppercase letters. This may cause visual inconsistency in the UI.

✏️ Proposed fix
-STR_REMOVE_PASSWORD: "ştergeţi parola salvată?"
+STR_REMOVE_PASSWORD: "Ştergeţi parola salvată?"
📝 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.

Suggested change
STR_FORGET_NETWORK: "Uitaţi reţeaua?"
STR_SAVE_PASSWORD: "Salvaţi parola?"
STR_REMOVE_PASSWORD: "ştergeţi parola salvată?"
STR_FORGET_NETWORK: "Uitaţi reţeaua?"
STR_SAVE_PASSWORD: "Salvaţi parola?"
STR_REMOVE_PASSWORD: "Ştergeţi parola salvată?"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@lib/I18n/translations/romanian.yaml` around lines 41 - 43,
STR_REMOVE_PASSWORD uses a lowercase initial "ş" which is inconsistent with
STR_FORGET_NETWORK and STR_SAVE_PASSWORD; update the STR_REMOVE_PASSWORD value
so the first character is uppercase (change the leading "ş" to "Ş") so the
prompt reads "Ştergeţi parola salvată?" matching the capitalization style of
STR_FORGET_NETWORK and STR_SAVE_PASSWORD.

@znelson
Copy link
Contributor

znelson commented Feb 20, 2026

@ariel-lindemann This looks like a good addition. Can you fix the two @coderabbitai issues quick?

@crosspoint-reader crosspoint-reader deleted a comment from coderabbitai bot Feb 20, 2026
@ariel-lindemann
Copy link
Contributor Author

@znelson done

@osteotek osteotek merged commit 9c55c15 into crosspoint-reader:master Feb 20, 2026
6 checks passed
lukestein pushed a commit to lukestein/crosspoint-reader that referenced this pull request Feb 20, 2026
## Summary

* **What is the goal of this PR?** (e.g., Implements the new feature for
file uploading.)

To add upport for a romanian language user interface.

* **What changes are included?**

A new i18n file `romanian.yml`

## Additional Context

* Add any other information that might be helpful for the reviewer
(e.g., performance implications, potential risks,
  specific areas to focus on).

---

### 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 >**_
lukestein pushed a commit to lukestein/crosspoint-reader that referenced this pull request Feb 20, 2026
## Summary

* **What is the goal of this PR?** (e.g., Implements the new feature for
file uploading.)

To add upport for a romanian language user interface.

* **What changes are included?**

A new i18n file `romanian.yml`

## Additional Context

* Add any other information that might be helpful for the reviewer
(e.g., performance implications, potential risks,
  specific areas to focus on).

---

### 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 >**_
lukestein pushed a commit to lukestein/crosspoint-reader that referenced this pull request Feb 20, 2026
## Summary

* **What is the goal of this PR?** (e.g., Implements the new feature for
file uploading.)

To add upport for a romanian language user interface.

* **What changes are included?**

A new i18n file `romanian.yml`

## Additional Context

* Add any other information that might be helpful for the reviewer
(e.g., performance implications, potential risks,
  specific areas to focus on).

---

### 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 >**_
lukestein pushed a commit to lukestein/crosspoint-reader that referenced this pull request Feb 20, 2026
## Summary

* **What is the goal of this PR?** (e.g., Implements the new feature for
file uploading.)

To add upport for a romanian language user interface.

* **What changes are included?**

A new i18n file `romanian.yml`

## Additional Context

* Add any other information that might be helpful for the reviewer
(e.g., performance implications, potential risks,
  specific areas to focus on).

---

### 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 >**_
lukestein pushed a commit to lukestein/crosspoint-reader that referenced this pull request Feb 20, 2026
## Summary

* **What is the goal of this PR?** (e.g., Implements the new feature for
file uploading.)

To add upport for a romanian language user interface.

* **What changes are included?**

A new i18n file `romanian.yml`

## Additional Context

* Add any other information that might be helpful for the reviewer
(e.g., performance implications, potential risks,
  specific areas to focus on).

---

### 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 >**_
lukestein pushed a commit to lukestein/crosspoint-reader that referenced this pull request Feb 21, 2026
## Summary

* **What is the goal of this PR?** (e.g., Implements the new feature for
file uploading.)

To add upport for a romanian language user interface.

* **What changes are included?**

A new i18n file `romanian.yml`

## Additional Context

* Add any other information that might be helpful for the reviewer
(e.g., performance implications, potential risks,
  specific areas to focus on).

---

### 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 >**_
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants