Skip to content

New Crowdin updates - #14204

Open
SORMAS-Robot wants to merge 10000 commits into
developmentfrom
l10n_development
Open

New Crowdin updates#14204
SORMAS-Robot wants to merge 10000 commits into
developmentfrom
l10n_development

Conversation

@SORMAS-Robot

@SORMAS-Robot SORMAS-Robot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Summary by CodeRabbit

  • New Features

    • Added a “contribute translations” info message across multiple locales with a Crowdin project link.
    • Extended enum language display names to include Arabic, Georgian, and Russian in multiple locales.
  • Updates

    • Refreshed Swahili (Tanzania) captions (general UI captions, continent names, and some country names).
    • Updated pathogen test terminology across supported languages by removing obsolete options and aligning assay/serogroup wording.
  • Bug Fixes

    • Improved the survey response status message to better explain re-fetch/retry and automatic-fetch behavior.

@coderabbitai

coderabbitai Bot commented Jul 10, 2026

Copy link
Copy Markdown

Review Change Stack

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

This PR updates localization resources across Swahili captions and geography, language and pathogen-test enum mappings, Crowdin contribution messages, survey-processing text, Czech captions, country names, and invasive pneumococcal serology captions.

Changes

Localization resource updates

Layer / File(s) Summary
Swahili captions and geography
sormas-api/src/main/resources/captions_sw-TZ.properties, sormas-api/src/main/resources/continents_sw-TZ.properties, sormas-api/src/main/resources/countries_sw-TZ.properties
Swahili UI captions, continent names, and country names are updated.
Language and pathogen-test enum captions
sormas-api/src/main/resources/enum_*.properties
Arabic, Georgian, and Russian language entries are added across locale bundles, while obsolete pathogen-test mappings are removed or updated.
Crowdin and survey messages
sormas-api/src/main/resources/strings_*.properties
infoCrowdinLocalization is added across locale bundles, and survey-processing text is updated for Arabic, Czech, and Spanish (Cuba).
Serology and localized caption cleanup
sormas-api/src/main/resources/captions_*.properties
The invasive pneumococcal serogrouping caption is removed or replaced, with additional Czech caption translations updated.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Possibly related PRs

Suggested reviewers: raulbob

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description is empty and does not satisfy the required template, which only asks for an issue reference. Add the required Fixes #<issue> line and include any missing PR details if needed.
Title check ❓ Inconclusive The title is related to Crowdin localization work, but it is too vague to convey the main change. Use a concise, specific title that mentions the localization files and the Crowdin translation updates.
✅ Passed checks (3 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch l10n_development

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.

❤️ Share

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 10

🧹 Nitpick comments (1)
sormas-api/src/main/resources/strings_pl-PL.properties (1)

1188-1188: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick win

Add rel="noopener noreferrer" to the external link.

UserSettingsForm renders this value as HTML. Because the link opens a new tab, add rel="noopener noreferrer" to prevent the destination from retaining window.opener; apply the same fix to the corresponding entries in strings_ps-AF.properties and strings_pt-BR.properties.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@sormas-api/src/main/resources/strings_pl-PL.properties` at line 1188, Update
the HTML anchor in the `infoCrowdinLocalization` entries for the Polish, Pashto,
and Brazilian Portuguese localization properties to include `rel="noopener
noreferrer"` alongside `target="_blank"`.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@sormas-api/src/main/resources/strings_cs-CZ.properties`:
- Line 1188: Replace the English value of infoCrowdinLocalization in
strings_cs-CZ.properties with the Crowdin-approved Czech translation, preserving
the existing HTML link, escaped attributes, and placeholder structure exactly.

In `@sormas-api/src/main/resources/strings_de-CH.properties`:
- Line 1188: Replace the English value of infoCrowdinLocalization in
strings_de-CH.properties with the Crowdin-approved German translation,
preserving the existing HTML anchor URL, target="_blank" behavior, and property
escaping.

In `@sormas-api/src/main/resources/strings_en-KE.properties`:
- Line 1188: Update the HTML anchor in infoCrowdinLocalization to include
rel="noopener noreferrer" alongside target="_blank", preserving the existing URL
and link text.

In `@sormas-api/src/main/resources/strings_en-LR.properties`:
- Line 1188: Update the HTML anchor in the infoCrowdinLocalization string to
include rel="noopener noreferrer" alongside target="_blank", preserving the
existing URL and link text.

In `@sormas-api/src/main/resources/strings_es-CU.properties`:
- Line 1188: Restore the Spanish translations for the changed entries in
strings_es-CU.properties, including infoCrowdinLocalization and the entry at
line 2106; replace the English values with appropriate Spanish text and preserve
the existing property keys and formatting.

In `@sormas-api/src/main/resources/strings_fr-CH.properties`:
- Line 1188: Translate the value of infoCrowdinLocalization into French for the
fr-CH locale, preserving the existing HTML link markup, URL, target attribute,
and escaping exactly.

In `@sormas-api/src/main/resources/strings_fr-FR.properties`:
- Line 1188: Translate the value of infoCrowdinLocalization into French,
preserving the existing HTML link markup, URL, target attribute, and escaping
exactly; only translate the surrounding English sentence.

In `@sormas-api/src/main/resources/strings_fr-TN.properties`:
- Line 1188: Translate the infoCrowdinLocalization value in the French locale
into French, preserving the existing HTML link markup, URL, target attribute,
and escaping exactly.

In `@sormas-api/src/main/resources/strings_it-CH.properties`:
- Line 1188: Add rel="noopener noreferrer" to the Crowdin anchor in
infoCrowdinLocalization, and apply the same change to every locale copy of this
localization string while preserving the existing target="_blank" behavior.

In `@sormas-api/src/main/resources/strings_sw-TZ.properties`:
- Line 1188: Update the HTML anchor in the shared `infoCrowdinLocalization`
string and all localized overrides that duplicate it to include `rel="noopener
noreferrer"` alongside `target="_blank"`; verify `UserSettingsForm` renders the
updated value consistently.

---

Nitpick comments:
In `@sormas-api/src/main/resources/strings_pl-PL.properties`:
- Line 1188: Update the HTML anchor in the `infoCrowdinLocalization` entries for
the Polish, Pashto, and Brazilian Portuguese localization properties to include
`rel="noopener noreferrer"` alongside `target="_blank"`.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: e1ab0c3c-9080-4b9b-ae01-f8e94b8dd66c

📥 Commits

Reviewing files that changed from the base of the PR and between ffa7d15 and c8ca152.

📒 Files selected for processing (62)
  • sormas-api/src/main/resources/captions_sw-TZ.properties
  • sormas-api/src/main/resources/continents_sw-TZ.properties
  • sormas-api/src/main/resources/enum_ar-EG.properties
  • sormas-api/src/main/resources/enum_ar-SA.properties
  • sormas-api/src/main/resources/enum_cs-CZ.properties
  • sormas-api/src/main/resources/enum_de-CH.properties
  • sormas-api/src/main/resources/enum_de-DE.properties
  • sormas-api/src/main/resources/enum_en-AF.properties
  • sormas-api/src/main/resources/enum_en-GH.properties
  • sormas-api/src/main/resources/enum_en-GM.properties
  • sormas-api/src/main/resources/enum_en-KE.properties
  • sormas-api/src/main/resources/enum_en-LR.properties
  • sormas-api/src/main/resources/enum_en-NG.properties
  • sormas-api/src/main/resources/enum_es-BO.properties
  • sormas-api/src/main/resources/enum_es-CU.properties
  • sormas-api/src/main/resources/enum_fa-AF.properties
  • sormas-api/src/main/resources/enum_fi-FI.properties
  • sormas-api/src/main/resources/enum_fr-CH.properties
  • sormas-api/src/main/resources/enum_fr-FR.properties
  • sormas-api/src/main/resources/enum_fr-TN.properties
  • sormas-api/src/main/resources/enum_it-CH.properties
  • sormas-api/src/main/resources/enum_it-IT.properties
  • sormas-api/src/main/resources/enum_ka-GE.properties
  • sormas-api/src/main/resources/enum_pl-PL.properties
  • sormas-api/src/main/resources/enum_ps-AF.properties
  • sormas-api/src/main/resources/enum_pt-BR.properties
  • sormas-api/src/main/resources/enum_pt-CV.properties
  • sormas-api/src/main/resources/enum_ru-RU.properties
  • sormas-api/src/main/resources/enum_sr-CS.properties
  • sormas-api/src/main/resources/enum_sw-TZ.properties
  • sormas-api/src/main/resources/enum_ur-PK.properties
  • sormas-api/src/main/resources/enum_zh-CN.properties
  • sormas-api/src/main/resources/strings_ar-EG.properties
  • sormas-api/src/main/resources/strings_ar-SA.properties
  • sormas-api/src/main/resources/strings_cs-CZ.properties
  • sormas-api/src/main/resources/strings_de-CH.properties
  • sormas-api/src/main/resources/strings_de-DE.properties
  • sormas-api/src/main/resources/strings_en-AF.properties
  • sormas-api/src/main/resources/strings_en-GH.properties
  • sormas-api/src/main/resources/strings_en-GM.properties
  • sormas-api/src/main/resources/strings_en-KE.properties
  • sormas-api/src/main/resources/strings_en-LR.properties
  • sormas-api/src/main/resources/strings_en-NG.properties
  • sormas-api/src/main/resources/strings_es-BO.properties
  • sormas-api/src/main/resources/strings_es-CU.properties
  • sormas-api/src/main/resources/strings_fa-AF.properties
  • sormas-api/src/main/resources/strings_fi-FI.properties
  • sormas-api/src/main/resources/strings_fr-CH.properties
  • sormas-api/src/main/resources/strings_fr-FR.properties
  • sormas-api/src/main/resources/strings_fr-TN.properties
  • sormas-api/src/main/resources/strings_it-CH.properties
  • sormas-api/src/main/resources/strings_it-IT.properties
  • sormas-api/src/main/resources/strings_ka-GE.properties
  • sormas-api/src/main/resources/strings_pl-PL.properties
  • sormas-api/src/main/resources/strings_ps-AF.properties
  • sormas-api/src/main/resources/strings_pt-BR.properties
  • sormas-api/src/main/resources/strings_pt-CV.properties
  • sormas-api/src/main/resources/strings_ru-RU.properties
  • sormas-api/src/main/resources/strings_sr-CS.properties
  • sormas-api/src/main/resources/strings_sw-TZ.properties
  • sormas-api/src/main/resources/strings_ur-PK.properties
  • sormas-api/src/main/resources/strings_zh-CN.properties

infoBulkProcessNoEligibleEntries = <b>Hromadný proces byl zrušen, protože pro tuto operaci nejsou žádné způsobilé položky\!</b>
infoBulkProcessCancelled = <b>Hromadný proces byl zrušen\!</b><br/>Všechny vybrané položky až do zpracování tohoto bodu. Nyní můžete toto okno zavřít. Budou vybrány všechny dosud nezpracované položky.
infoBulkUnresponsiveWindowHint = <b>Tip\:</b> Pokud se ukazatel průběhu zdá být nereagující a po chvíli není vidět žádný průběh zkuste kliknout na toto vyskakovací okno nebo změnit velikost okna prohlížeče.
infoCrowdinLocalization = If you would like to contribute to the localization of SORMAS into different languages, you can do so by becoming a member of our Crowdin project at <a href\="https\://crowdin.com/project/sormas" target\="_blank">https\://crowdin.com/project/sormas</a>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Provide a Czech translation for this locale.

This new user-facing message is entirely English in strings_cs-CZ.properties, so Czech users will see untranslated text. Replace it with the Crowdin-approved Czech translation while preserving the HTML link and placeholder structure.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@sormas-api/src/main/resources/strings_cs-CZ.properties` at line 1188, Replace
the English value of infoCrowdinLocalization in strings_cs-CZ.properties with
the Crowdin-approved Czech translation, preserving the existing HTML link,
escaped attributes, and placeholder structure exactly.

infoBulkProcessNoEligibleEntries = <b>Bulk process has been cancelled because there are no eligible entries for this operation\!</b>
infoBulkProcessCancelled = <b>Bulk process has been cancelled\!</b><br/>All selected entries up until this point have been processed. You can now close this window. All not yet processed entries will still be selected.
infoBulkUnresponsiveWindowHint = <b>Hint\:</b> If the progress bar seems to be unresponsive and no progress is visible after a while, try to click this popup window or resize your browser window.
infoCrowdinLocalization = If you would like to contribute to the localization of SORMAS into different languages, you can do so by becoming a member of our Crowdin project at <a href\="https\://crowdin.com/project/sormas" target\="_blank">https\://crowdin.com/project/sormas</a>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Provide a German translation for this locale.

This new user-facing message is entirely English in strings_de-CH.properties, so German-speaking users will see untranslated text. Replace it with the Crowdin-approved German translation while preserving the HTML link and target behavior.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@sormas-api/src/main/resources/strings_de-CH.properties` at line 1188, Replace
the English value of infoCrowdinLocalization in strings_de-CH.properties with
the Crowdin-approved German translation, preserving the existing HTML anchor
URL, target="_blank" behavior, and property escaping.

Comment thread sormas-api/src/main/resources/strings_en-KE.properties
infoBulkProcessNoEligibleEntries = <b>Bulk process has been cancelled because there are no eligible entries for this operation\!</b>
infoBulkProcessCancelled = <b>Bulk process has been cancelled\!</b><br/>All selected entries up until this point have been processed. You can now close this window. All not yet processed entries will still be selected.
infoBulkUnresponsiveWindowHint = <b>Hint\:</b> If the progress bar seems to be unresponsive and no progress is visible after a while, try to click this popup window or resize your browser window.
infoCrowdinLocalization = If you would like to contribute to the localization of SORMAS into different languages, you can do so by becoming a member of our Crowdin project at <a href\="https\://crowdin.com/project/sormas" target\="_blank">https\://crowdin.com/project/sormas</a>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔒 Security & Privacy | 🟡 Minor | ⚡ Quick win

Protect the new-tab link from opener access.

Add rel="noopener noreferrer" to this externally hosted link because it is rendered as HTML with target="_blank".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@sormas-api/src/main/resources/strings_en-LR.properties` at line 1188, Update
the HTML anchor in the infoCrowdinLocalization string to include rel="noopener
noreferrer" alongside target="_blank", preserving the existing URL and link
text.

Comment thread sormas-api/src/main/resources/strings_es-CU.properties Outdated
infoBulkProcessNoEligibleEntries = <b>Bulk process has been cancelled because there are no eligible entries for this operation\!</b>
infoBulkProcessCancelled = <b>Bulk process has been cancelled\!</b><br/>All selected entries up until this point have been processed. You can now close this window. All not yet processed entries will still be selected.
infoBulkUnresponsiveWindowHint = <b>Hint\:</b> If the progress bar seems to be unresponsive and no progress is visible after a while, try to click this popup window or resize your browser window.
infoCrowdinLocalization = If you would like to contribute to the localization of SORMAS into different languages, you can do so by becoming a member of our Crowdin project at <a href\="https\://crowdin.com/project/sormas" target\="_blank">https\://crowdin.com/project/sormas</a>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Translate this value for the French locale.

infoCrowdinLocalization is rendered directly by UserSettingsForm as HTML, but this fr-CH value is entirely English. Translate the surrounding sentence while keeping the link markup unchanged.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@sormas-api/src/main/resources/strings_fr-CH.properties` at line 1188,
Translate the value of infoCrowdinLocalization into French for the fr-CH locale,
preserving the existing HTML link markup, URL, target attribute, and escaping
exactly.

infoBulkProcessNoEligibleEntries = <b>Le processus en lot a été annulé car il n'y a pas d'entrées éligibles pour cette opération \!</b>
infoBulkProcessCancelled = <b>Bulk process has been cancelled\!</b><br/>All selected entries up until this point have been processed. You can now close this window. All not yet processed entries will still be selected.
infoBulkUnresponsiveWindowHint = <b>Hint\:</b> If the progress bar seems to be unresponsive and no progress is visible after a while, try to click this popup window or resize your browser window.
infoCrowdinLocalization = If you would like to contribute to the localization of SORMAS into different languages, you can do so by becoming a member of our Crowdin project at <a href\="https\://crowdin.com/project/sormas" target\="_blank">https\://crowdin.com/project/sormas</a>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Translate this value for the French locale.

infoCrowdinLocalization is rendered directly by UserSettingsForm as HTML, but this fr-FR value is entirely English. Translate the surrounding sentence while keeping the link markup unchanged.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@sormas-api/src/main/resources/strings_fr-FR.properties` at line 1188,
Translate the value of infoCrowdinLocalization into French, preserving the
existing HTML link markup, URL, target attribute, and escaping exactly; only
translate the surrounding English sentence.

infoBulkProcessNoEligibleEntries = <b>Bulk process has been cancelled because there are no eligible entries for this operation\!</b>
infoBulkProcessCancelled = <b>Bulk process has been cancelled\!</b><br/>All selected entries up until this point have been processed. You can now close this window. All not yet processed entries will still be selected.
infoBulkUnresponsiveWindowHint = <b>Hint\:</b> If the progress bar seems to be unresponsive and no progress is visible after a while, try to click this popup window or resize your browser window.
infoCrowdinLocalization = If you would like to contribute to the localization of SORMAS into different languages, you can do so by becoming a member of our Crowdin project at <a href\="https\://crowdin.com/project/sormas" target\="_blank">https\://crowdin.com/project/sormas</a>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Translate this value for the French locale.

infoCrowdinLocalization is rendered directly by UserSettingsForm as HTML, but this fr-TN value is entirely English. Translate the surrounding sentence while keeping the link markup unchanged.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@sormas-api/src/main/resources/strings_fr-TN.properties` at line 1188,
Translate the infoCrowdinLocalization value in the French locale into French,
preserving the existing HTML link markup, URL, target attribute, and escaping
exactly.

infoBulkProcessNoEligibleEntries = <b>Bulk process has been cancelled because there are no eligible entries for this operation\!</b>
infoBulkProcessCancelled = <b>Bulk process has been cancelled\!</b><br/>All selected entries up until this point have been processed. You can now close this window. All not yet processed entries will still be selected.
infoBulkUnresponsiveWindowHint = <b>Hint\:</b> If the progress bar seems to be unresponsive and no progress is visible after a while, try to click this popup window or resize your browser window.
infoCrowdinLocalization = If you would like to contribute to the localization of SORMAS into different languages, you can do so by becoming a member of our Crowdin project at <a href\="https\://crowdin.com/project/sormas" target\="_blank">https\://crowdin.com/project/sormas</a>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔒 Security & Privacy | 🟡 Minor | ⚡ Quick win

Add rel="noopener noreferrer" to the Crowdin link.

target="_blank" should not leave an opener on this HTML-rendered localization string, and the same hardening should be applied to the other locale copies.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@sormas-api/src/main/resources/strings_it-CH.properties` at line 1188, Add
rel="noopener noreferrer" to the Crowdin anchor in infoCrowdinLocalization, and
apply the same change to every locale copy of this localization string while
preserving the existing target="_blank" behavior.

infoBulkProcessNoEligibleEntries = <b>Bulk process has been cancelled because there are no eligible entries for this operation\!</b>
infoBulkProcessCancelled = <b>Bulk process has been cancelled\!</b><br/>All selected entries up until this point have been processed. You can now close this window. All not yet processed entries will still be selected.
infoBulkUnresponsiveWindowHint = <b>Hint\:</b> If the progress bar seems to be unresponsive and no progress is visible after a while, try to click this popup window or resize your browser window.
infoCrowdinLocalization = If you would like to contribute to the localization of SORMAS into different languages, you can do so by becoming a member of our Crowdin project at <a href\="https\://crowdin.com/project/sormas" target\="_blank">https\://crowdin.com/project/sormas</a>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔒 Security & Privacy | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Locate the string and the UI path that renders it.
rg -n "infoCrowdinLocalization|target=\\\\\"_blank\\\\\"|crowdin.com/project/sormas" \
  sormas-api/src/main/resources \
  sormas-ui/src/main \
  sormas-ui/src/test \
  --glob '!**/node_modules/**' || true

# Show nearby context in the Swahili bundle.
sed -n '1180,1195p' sormas-api/src/main/resources/strings_sw-TZ.properties

# Check the other locale bundles mentioned in the review comment.
for f in \
  sormas-api/src/main/resources/strings_ur-PK.properties \
  sormas-api/src/main/resources/strings_zh-CN.properties
do
  echo "===== $f ====="
  rg -n "infoCrowdinLocalization|target=\\\\\"_blank\\\\\"|crowdin.com/project/sormas" "$f" || true
done

# Find the component that renders this setting as HTML and inspect the relevant lines.
rg -n "infoCrowdinLocalization|dangerouslySetInnerHTML|innerHTML|setText|setHtml|Html" \
  sormas-ui/src/main \
  --glob '!**/node_modules/**' || true

Repository: SORMAS-Foundation/SORMAS-Project

Length of output: 50390


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Count and list all bundles that still use the Crowdin link without rel.
python3 - <<'PY'
from pathlib import Path
import re

root = Path("sormas-api/src/main/resources")
pattern = re.compile(r'^\s*infoCrowdinLocalization\s*=.*target\\?_blank', re.M)

hits = []
for p in sorted(root.glob("strings*.properties")):
    text = p.read_text(encoding="utf-8", errors="replace")
    if "infoCrowdinLocalization" in text and 'rel' not in text.split("infoCrowdinLocalization =", 1)[1].splitlines()[0]:
        hits.append(p.as_posix())

print("count:", len(hits))
for h in hits:
    print(h)
PY

# Show the render path in UserSettingsForm.
sed -n '45,70p' sormas-ui/src/main/java/de/symeda/sormas/ui/user/UserSettingsForm.java

Repository: SORMAS-Foundation/SORMAS-Project

Length of output: 2944


Add rel="noopener noreferrer" to the Crowdin link infoCrowdinLocalization is rendered as HTML in UserSettingsForm, and every locale override of this string uses target="_blank" without a rel policy. Update the shared base string and the localized overrides that duplicate it.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@sormas-api/src/main/resources/strings_sw-TZ.properties` at line 1188, Update
the HTML anchor in the shared `infoCrowdinLocalization` string and all localized
overrides that duplicate it to include `rel="noopener noreferrer"` alongside
`target="_blank"`; verify `UserSettingsForm` renders the updated value
consistently.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
sormas-api/src/main/resources/captions_cs-CZ.properties (1)

1996-1996: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Restore the invasive pneumococcal serogrouping caption key.

This deletion removes PathogenTest.seroGrouping.INVASIVE_PNEUMOCOCCAL_INFECTION, but Captions.java still defines it and TestMethodComponent.java still calls I18nProperties.getCaption(...) with that key. The invasive pneumococcal test-type UI will therefore lose its Czech caption or fall back unexpectedly. Restore the key with its Czech translation.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@sormas-api/src/main/resources/captions_cs-CZ.properties` at line 1996,
Restore the missing PathogenTest.seroGrouping.INVASIVE_PNEUMOCOCCAL_INFECTION
caption entry in the Czech properties resource, using the appropriate Czech
translation so the existing Captions.java definition and
TestMethodComponent.java lookup resolve correctly.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@sormas-api/src/main/resources/captions_cs-CZ.properties`:
- Line 1996: Restore the missing
PathogenTest.seroGrouping.INVASIVE_PNEUMOCOCCAL_INFECTION caption entry in the
Czech properties resource, using the appropriate Czech translation so the
existing Captions.java definition and TestMethodComponent.java lookup resolve
correctly.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 06bc3fa7-45b3-4844-8469-ff2df4239424

📥 Commits

Reviewing files that changed from the base of the PR and between d9c0387 and 3fcd7ca.

📒 Files selected for processing (1)
  • sormas-api/src/main/resources/captions_cs-CZ.properties

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@sormas-api/src/main/resources/countries_sw-TZ.properties`:
- Line 31: Update the country.BHR.name entry to use “Bahareni” as the country
name instead of the demonym “Bahraini”.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 5276c5f6-927b-4833-925e-cbfcdd8a9801

📥 Commits

Reviewing files that changed from the base of the PR and between 3fcd7ca and a214b3f.

📒 Files selected for processing (1)
  • sormas-api/src/main/resources/countries_sw-TZ.properties

country.BHS.name=Bahamas
country.BHR.name=Bahrain
country.BHS.name=Bahama
country.BHR.name=Bahraini

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== File excerpt =="
nl -ba sormas-api/src/main/resources/countries_sw-TZ.properties | sed -n '1,120p'

echo
echo "== Country-name usages =="
rg -n "getCountryName|country\\.[A-Z0-9]{3}\\.name" sormas-api/src/main/java sormas-api/src/main/resources -g '!**/target/**' -g '!**/build/**' || true

echo
echo "== Other localized country bundles =="
fd -a "countries_*.properties" sormas-api/src/main/resources | sed -n '1,120p'

Repository: SORMAS-Foundation/SORMAS-Project

Length of output: 229


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== countries_sw-TZ.properties excerpt =="
sed -n '1,120p' sormas-api/src/main/resources/countries_sw-TZ.properties

echo
echo "== country-name lookup implementation =="
rg -n -A4 -B4 "getCountryName|country\\.[A-Z0-9]{3}\\.name" sormas-api/src/main/java sormas-api/src/main/resources -g '!**/target/**' -g '!**/build/**' || true

echo
echo "== available country bundles =="
fd -a "countries_*.properties" sormas-api/src/main/resources

Repository: SORMAS-Foundation/SORMAS-Project

Length of output: 50389


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== sw-TZ BHR entry =="
sed -n '24,36p' sormas-api/src/main/resources/countries_sw-TZ.properties

echo
echo "== lookup of country-name bundle usage =="
rg -n -A3 -B3 "country\\.BHR\\.name|getCountryName|countries_.*properties" \
  sormas-api/src/main/java sormas-api/src/main/resources \
  -g '!**/target/**' -g '!**/build/**' \
  | sed -n '1,120p'

Repository: SORMAS-Foundation/SORMAS-Project

Length of output: 9582


🌐 Web query:

Swahili CLDR Bahrain country name sw-TZ Bahareni country.BHR.name

💡 Result:

In the Unicode Common Locale Data Repository (CLDR), the Swahili (sw) name for the country of Bahrain (territory code BH) is defined as Bahareni [1][2][3]. This is confirmed in the official CLDR XML data files (e.g., sw.xml), where the territory mapping is explicitly recorded as: Bahareni [1] Additionally, in related currency data within the Swahili locale, the currency name for the Bahraini Dinar (BHD) is typically rendered as dinari ya Bahareni [4][5][6].

Citations:


Use Bahareni for Bahrain. country.BHR.name should be the country name; Bahraini is the demonym.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@sormas-api/src/main/resources/countries_sw-TZ.properties` at line 31, Update
the country.BHR.name entry to use “Bahareni” as the country name instead of the
demonym “Bahraini”.

Source: MCP tools

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.

2 participants