New Crowdin updates#14204
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
✅ Files skipped from review due to trivial changes (1)
📝 WalkthroughWalkthroughThis PR updates localization resources across Swahili captions and geography, language and pathogen-test enum mappings, Crowdin contribution messages, and survey-processing text. ChangesLocalization resource updates
Estimated code review effort: 3 (Moderate) | ~25 minutes Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (3 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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: 10
🧹 Nitpick comments (1)
sormas-api/src/main/resources/strings_pl-PL.properties (1)
1188-1188: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick winAdd
rel="noopener noreferrer"to the external link.
UserSettingsFormrenders this value as HTML. Because the link opens a new tab, addrel="noopener noreferrer"to prevent the destination from retainingwindow.opener; apply the same fix to the corresponding entries instrings_ps-AF.propertiesandstrings_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
📒 Files selected for processing (62)
sormas-api/src/main/resources/captions_sw-TZ.propertiessormas-api/src/main/resources/continents_sw-TZ.propertiessormas-api/src/main/resources/enum_ar-EG.propertiessormas-api/src/main/resources/enum_ar-SA.propertiessormas-api/src/main/resources/enum_cs-CZ.propertiessormas-api/src/main/resources/enum_de-CH.propertiessormas-api/src/main/resources/enum_de-DE.propertiessormas-api/src/main/resources/enum_en-AF.propertiessormas-api/src/main/resources/enum_en-GH.propertiessormas-api/src/main/resources/enum_en-GM.propertiessormas-api/src/main/resources/enum_en-KE.propertiessormas-api/src/main/resources/enum_en-LR.propertiessormas-api/src/main/resources/enum_en-NG.propertiessormas-api/src/main/resources/enum_es-BO.propertiessormas-api/src/main/resources/enum_es-CU.propertiessormas-api/src/main/resources/enum_fa-AF.propertiessormas-api/src/main/resources/enum_fi-FI.propertiessormas-api/src/main/resources/enum_fr-CH.propertiessormas-api/src/main/resources/enum_fr-FR.propertiessormas-api/src/main/resources/enum_fr-TN.propertiessormas-api/src/main/resources/enum_it-CH.propertiessormas-api/src/main/resources/enum_it-IT.propertiessormas-api/src/main/resources/enum_ka-GE.propertiessormas-api/src/main/resources/enum_pl-PL.propertiessormas-api/src/main/resources/enum_ps-AF.propertiessormas-api/src/main/resources/enum_pt-BR.propertiessormas-api/src/main/resources/enum_pt-CV.propertiessormas-api/src/main/resources/enum_ru-RU.propertiessormas-api/src/main/resources/enum_sr-CS.propertiessormas-api/src/main/resources/enum_sw-TZ.propertiessormas-api/src/main/resources/enum_ur-PK.propertiessormas-api/src/main/resources/enum_zh-CN.propertiessormas-api/src/main/resources/strings_ar-EG.propertiessormas-api/src/main/resources/strings_ar-SA.propertiessormas-api/src/main/resources/strings_cs-CZ.propertiessormas-api/src/main/resources/strings_de-CH.propertiessormas-api/src/main/resources/strings_de-DE.propertiessormas-api/src/main/resources/strings_en-AF.propertiessormas-api/src/main/resources/strings_en-GH.propertiessormas-api/src/main/resources/strings_en-GM.propertiessormas-api/src/main/resources/strings_en-KE.propertiessormas-api/src/main/resources/strings_en-LR.propertiessormas-api/src/main/resources/strings_en-NG.propertiessormas-api/src/main/resources/strings_es-BO.propertiessormas-api/src/main/resources/strings_es-CU.propertiessormas-api/src/main/resources/strings_fa-AF.propertiessormas-api/src/main/resources/strings_fi-FI.propertiessormas-api/src/main/resources/strings_fr-CH.propertiessormas-api/src/main/resources/strings_fr-FR.propertiessormas-api/src/main/resources/strings_fr-TN.propertiessormas-api/src/main/resources/strings_it-CH.propertiessormas-api/src/main/resources/strings_it-IT.propertiessormas-api/src/main/resources/strings_ka-GE.propertiessormas-api/src/main/resources/strings_pl-PL.propertiessormas-api/src/main/resources/strings_ps-AF.propertiessormas-api/src/main/resources/strings_pt-BR.propertiessormas-api/src/main/resources/strings_pt-CV.propertiessormas-api/src/main/resources/strings_ru-RU.propertiessormas-api/src/main/resources/strings_sr-CS.propertiessormas-api/src/main/resources/strings_sw-TZ.propertiessormas-api/src/main/resources/strings_ur-PK.propertiessormas-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> |
There was a problem hiding this comment.
📐 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> |
There was a problem hiding this comment.
📐 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.
| 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> |
There was a problem hiding this comment.
🔒 Security & Privacy | 🟡 Minor | ⚡ Quick win
Protect the new-tab link from opener access.
This value is rendered as HTML and opens an external page with target="_blank". Add rel="noopener noreferrer" to avoid reverse-tabnabbing risks in supported or embedded browsers.
🔒 Proposed fix
-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>
+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" rel\="noopener noreferrer">https\://crowdin.com/project/sormas</a>📝 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.
| 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> | |
| 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" rel\="noopener noreferrer">https\://crowdin.com/project/sormas</a> |
🤖 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-KE.properties` at line 1188, Update
the HTML anchor in infoCrowdinLocalization to include rel="noopener noreferrer"
alongside target="_blank", preserving the existing URL and link text.
| 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> |
There was a problem hiding this comment.
🔒 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.
| infoBulkProcessNoEligibleEntries = <b>¡El proceso masivo se ha cancelado porque no hay entradas elegibles para esta operación\!</b> | ||
| infoBulkProcessCancelled = <b>¡El proceso masivo se canceló\!</b><br/>Todas las entradas seleccionadas hasta este punto han sido procesadas. Ahora puede cerrar esta ventana. Todas las entradas aún no procesadas seguirán seleccionadas. | ||
| infoBulkUnresponsiveWindowHint = <b>Sugerencia\:</b> Si la barra de progreso parece no responder y no hay progreso visible por algún tiempo, pruebe hacer clic en esta ventana emergente o cambiar el tamaño de la ventana de su navegador. | ||
| 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> |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Restore Spanish translations in the Spanish bundle.
Both changed values are English in strings_es-CU.properties; Line 2106 additionally replaces an existing Spanish translation. Please translate these values into Spanish.
Suggested wording
-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>
+infoCrowdinLocalization = Si desea contribuir a la localización de SORMAS en diferentes idiomas, puede hacerlo uniéndose a nuestro proyecto de Crowdin en <a href\="https\://crowdin.com/project/sormas" target\="_blank">https\://crowdin.com/project/sormas</a>
-messageSurveyResponseNotYetProcessed = There was an issue when building the survey request, please fetch the surveys again or wait for the next automatic fetch
+messageSurveyResponseNotYetProcessed = Se produjo un problema al crear la solicitud de encuesta; vuelva a obtener las encuestas o espere a la próxima obtención automáticaAlso applies to: 2106-2106
🤖 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_es-CU.properties` at 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.
| 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> |
There was a problem hiding this comment.
🎯 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> |
There was a problem hiding this comment.
🎯 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> |
There was a problem hiding this comment.
🎯 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> |
There was a problem hiding this comment.
🔒 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> |
There was a problem hiding this comment.
🔒 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/**' || trueRepository: 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.javaRepository: 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.
Summary by CodeRabbit
New Features
Updates