Skip to content

New Crowdin updates#1891

Open
elibosley wants to merge 25 commits intomainfrom
l10n_main
Open

New Crowdin updates#1891
elibosley wants to merge 25 commits intomainfrom
l10n_main

Conversation

@elibosley
Copy link
Member

@elibosley elibosley commented Mar 7, 2026

Summary by CodeRabbit

  • New Features
    • Comprehensive multilingual support for server onboarding workflows, including reboot confirmation and BIOS boot order configuration.
    • Expanded localization for license activation, plugin management, and internal boot device configuration across 28 languages.
    • New loading indicators and UI prompts for improved user experience during system setup and configuration.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 7, 2026

Walkthrough

Twenty-three localization files are updated with new translation strings for onboarding flow (reboot steps, confirmations, additional UI labels) and a generic loading indicator. One file (Romanian) includes terminology shifts from USB Flash to boot device references. No logic or control flow changes.

Changes

Cohort / File(s) Summary
Localization files — Onboarding and common text
web/src/locales/ar.json, bn.json, ca.json, cs.json, da.json, de.json, es.json, fr.json, hi.json, hr.json, hu.json, it.json, ja.json, ko.json, lv.json, nl.json, no.json, pl.json, pt.json, ru.json, sv.json, uk.json, zh.json
New translation keys for onboarding reboot flow (nextSteps.reboot, confirmReboot.*, additionalLinks), stepper/console/modal UI labels, core settings, plugins, internal boot step fields and validation messages, summary and license step text, plus common.loading. Purely additive entries with no modifications to existing strings.
Localization file — Terminology and content updates
web/src/locales/ro.json
New onboarding and licensing translation keys aligned with other locales. Additional terminology shifts from "USB Flash" to "boot device" language in server state and registration sections, with updated references to GUID, flash drive, and licensing messages reflecting boot device context.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

🐰 Whispers through the warren of words,
Twenty-three tongues now speak of reboots new,
From Arabic burrows to Eastern lands,
We hop through locales, translations in hand!
Loading, confirming, with each bound so true,
A global onboarding—fresh and brand new! 🌍✨

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'New Crowdin updates' is vague and generic, using non-descriptive language that doesn't convey meaningful information about the specific changes in the changeset. Consider using a more descriptive title that explains the primary change, such as 'Add onboarding and license localization strings across 31 languages' or 'Update translations for onboarding reboot flow'.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch l10n_main

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

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e6f415f5b9

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

"onboarding.nextSteps.confirmReboot.description": "\u0007\u0017\f\u0005 \t\b\u0017\u0017\u0000\u0007, \u0015\u0007\u0013\u001d\u0000 \u001e\u000e\u0017\u0017 \u001f\u001e\u0006\b \u0005\u001f\f\u0014\u0016\u0000\u0004 \u000e\u0017 \u0002\u0016\u000b\u0013 \u001f\u000b\u0017 \u0017\u0019\u0000\u001d \u0010\u0017\u000b \u0014\u0004\u001c\u0000\u0013\u0018 \u0019\u0000\u0003 \u001f\u0006\u001d\u0004 \u001e\u0010\u000b\u0000\u001e\u0004 \u001d\u000e\u0018\u0013\u001e\u0004 \u0006\u0007 \u001f\u0006\u001d\u0004.",
"onboarding.nextSteps.confirmReboot.warning": "\u001f\b\u0004 \u001c\u0013\u001e\u001e \u000f\u001f \u000b\u001d\u0005 \u001e\u0011\u0013\u0012 \u000b\u000f \u001a\u0004\u0016 \u0012\u0011 \u0007\u0004 \u001d\u000e\u0018\u0013\u001e\u001c \u0014\u0011 \u0005\u0004\u001c\f\u0004 Unraid \u001f\b\u000e\u001c Unraid \u000b.",
"onboarding.nextSteps.confirmReboot.confirm": "আমি বুঝেছি",
"onboarding.stepper.stepLabel": "\u0018\u0004\u0016\u0012 \b,",

Choose a reason for hiding this comment

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

P2 Badge Replace corrupted Bengali step label text

The new Bengali onboarding translation for onboarding.stepper.stepLabel is stored as control characters ("\u0018\u0004\u0016\u0012 \b,") instead of readable text, and it also drops the {number} interpolation used by the UI. In Bengali onboarding, this causes unreadable/gibberish labels and removes step numbering, so users cannot distinguish steps correctly.

Useful? React with 👍 / 👎.

"common.installing": "Instalare în desfășurare",
"common.learnMore": "Aflați mai multe",
"common.retry": "Reîncercați",
"common.loading": "Se \u0000\ncarcă...",

Choose a reason for hiding this comment

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

P2 Badge Remove null byte from Romanian loading string

The Romanian common.loading value now includes an embedded null byte and newline ("Se \u0000\ncarcă...") rather than plain text. This key is reused across loading states, so Romanian users will see malformed output (or truncated text in consumers that treat \0 as a terminator) wherever the generic loading label is shown.

Useful? React with 👍 / 👎.

@codecov
Copy link

codecov bot commented Mar 7, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 49.22%. Comparing base (337aecc) to head (e6f415f).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1891      +/-   ##
==========================================
- Coverage   49.25%   49.22%   -0.04%     
==========================================
  Files        1020     1020              
  Lines       69765    69765              
  Branches     7254     7249       -5     
==========================================
- Hits        34364    34340      -24     
- Misses      35278    35302      +24     
  Partials      123      123              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions
Copy link
Contributor

github-actions bot commented Mar 7, 2026

This plugin has been deployed to Cloudflare R2 and is available for testing.
Download it at this URL:

https://preview.dl.unraid.net/unraid-api/tag/PR1891/dynamix.unraid.net.plg

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: 3

Note

Due to the large number of review comments, Critical, Major severity comments were prioritized as inline comments.

🟡 Minor comments (24)
web/src/locales/nl.json-180-180 (1)

180-180: ⚠️ Potential issue | 🟡 Minor

Don't translate storage pool as zwembad.

Zwembad means swimming pool. In this context users expect the storage term pool, so these labels will look incorrect.

Suggested fix
-  "onboarding.internalBootStep.validation.poolExists": "Zwembad naam bestaat al.",
+  "onboarding.internalBootStep.validation.poolExists": "Poolnaam bestaat al.",
-  "onboarding.summaryStep.bootConfig.pool": "Zwembad",
+  "onboarding.summaryStep.bootConfig.pool": "Pool",

Also applies to: 199-199

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

In `@web/src/locales/nl.json` at line 180, The translation incorrectly uses the
swimming-term "zwembad"; update the value for the key
"onboarding.internalBootStep.validation.poolExists" to use the storage term
"pool" (e.g., "Poolnaam bestaat al." or "poolnaam bestaat al.") and similarly
replace any other nl.json entries that translate the storage concept "pool" as
"zwembad" so they retain the technical term "pool" instead of the literal
swimming-pool translation. Ensure only the string values change and JSON keys
remain untouched.
web/src/locales/fr.json-190-190 (1)

190-190: ⚠️ Potential issue | 🟡 Minor

Restore a generic “Configuration” label here.

This key labels the overall summary section, but Stockage principal et secondaire narrows it to storage only even though the same step also covers plugins and boot config.

Suggested fix
-  "onboarding.summaryStep.configuration": "Stockage principal et secondaire",
+  "onboarding.summaryStep.configuration": "Configuration",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/locales/fr.json` at line 190, The localized string for the key
"onboarding.summaryStep.configuration" is too specific ("Stockage principal et
secondaire"); change its value to a generic label like "Configuration" so the
summary step correctly represents storage, plugins and boot config
collectively—update the value for onboarding.summaryStep.configuration to
"Configuration".
web/src/locales/da.json-243-247 (1)

243-247: ⚠️ Potential issue | 🟡 Minor

Fix the locale/location wording in these log messages.

These strings talk about keeping the current locale after a language-pack failure, but lokation reads as a physical location in Danish. That will look wrong in the setup log.

Suggested fix
-  "onboarding.summaryStep.logs.languageMetadataUnavailable": "Sprogpakke metadata for {locale} er ikke tilgængelige. Springer lokal ændring over.",
-  "onboarding.summaryStep.logs.languageInstallDidNotSucceed": "Sprogpakke installation mislykkedes for {name}. Beholder nuværende lokation.",
-  "onboarding.summaryStep.logs.languageInstallFailedKeepLocale": "Sprogpakke installationen fejlede for {name}. Beholder nuværende lokation",
+  "onboarding.summaryStep.logs.languageMetadataUnavailable": "Sprogpakke-metadata for {locale} er ikke tilgængelige. Springer ændring af sprogindstilling over.",
+  "onboarding.summaryStep.logs.languageInstallDidNotSucceed": "Installation af sprogpakke mislykkedes for {name}. Beholder nuværende sprogindstilling.",
+  "onboarding.summaryStep.logs.languageInstallFailedKeepLocale": "Installation af sprogpakke mislykkedes for {name}. Beholder nuværende sprogindstilling."
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/locales/da.json` around lines 243 - 247, Update the Danish strings to
avoid the physical-sounding "lokation" and use "sprogindstilling" (current
language setting) consistently: change
onboarding.summaryStep.logs.languageInstallDidNotSucceed and
onboarding.summaryStep.logs.languageInstallFailedKeepLocale to end with
"Beholder nuværende sprogindstilling." and change
onboarding.summaryStep.logs.languageMetadataUnavailable from "Springer lokal
ændring over." to a phrasing using "sprogindstilling" (e.g., "Springer ændring
af sprogindstilling over."). Ensure all replacements use the term
"sprogindstilling" so logs referring to keeping the current locale read
naturally in Danish.
web/src/locales/bn.json-163-163 (1)

163-163: ⚠️ Potential issue | 🟡 Minor

Keep markup out of the locale value.

This label now includes <b>...</b>. If the component renders plain text, users will see literal HTML; if it renders HTML, styling is leaking into translation content. Keep the translation plain and let the component handle emphasis.

Suggested fix
-  "onboarding.internalBootStep.fields.bootReservedSize": "<b>বুট সংরক্ষিত আকার</b>",
+  "onboarding.internalBootStep.fields.bootReservedSize": "বুট সংরক্ষিত আকার",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/locales/bn.json` at line 163, The locale value for
"onboarding.internalBootStep.fields.bootReservedSize" currently contains HTML
markup ("<b>...</b>"); remove the markup so the translation is plain text (e.g.,
"বুট সংরক্ষিত আকার") and let the rendering component apply emphasis or
formatting. Update the bn.json entry for
"onboarding.internalBootStep.fields.bootReservedSize" to a plain string and, if
the UI needs bolding, handle that in the component that reads this key (or
create a separate key like
"onboarding.internalBootStep.fields.bootReservedSize.labelBold" only if you need
a distinct formatted variant).
web/src/locales/de.json-306-306 (1)

306-306: ⚠️ Potential issue | 🟡 Minor

Fix the skip-dialog title.

Zuweisungsfehler does not fit a confirmation dialog about skipping activation and will read like an unrelated error. This should match the confirmation intent of the dialog body.

Suggested fix
-  "onboarding.licenseStep.skipDialog.title": "Zuweisungsfehler",
+  "onboarding.licenseStep.skipDialog.title": "Sind Sie sicher?",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/locales/de.json` at line 306, The translation for the key
"onboarding.licenseStep.skipDialog.title" is incorrect for a confirmation
dialog; change its value from an error-like phrase to a confirmation-oriented
title (e.g., a short question or action phrase such as "Aktivierung
überspringen?" or "Überspringen bestätigen") so it matches the dialog body about
skipping activation and reads as a confirmation prompt.
web/src/locales/de.json-220-225 (1)

220-225: ⚠️ Potential issue | 🟡 Minor

Translate guidMismatch into German.

onboarding.summaryStep.activation.errors.guidMismatch is still English while the surrounding activation errors are localized, so German users will get a mixed-language error list here.

Suggested fix
-  "onboarding.summaryStep.activation.errors.guidMismatch": "GUID mismatch",
+  "onboarding.summaryStep.activation.errors.guidMismatch": "GUID stimmt nicht überein",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/locales/de.json` around lines 220 - 225, The JSON key
onboarding.summaryStep.activation.errors.guidMismatch is still in English;
update its value to the proper German translation (e.g., "GUID stimmt nicht
überein" or another preferred German phrasing) to match the other localized
activation error messages and keep the file consistent.
web/src/locales/hu.json-300-300 (1)

300-300: ⚠️ Potential issue | 🟡 Minor

Fix the broken confirmation label.

onboarding.licenseStep.actions.iUnderstand is set to ATCHAT, which looks like a translation artifact rather than Hungarian copy. That leaves the confirmation CTA unreadable in the license step.

Suggested fix
-  "onboarding.licenseStep.actions.iUnderstand": "ATCHAT",
+  "onboarding.licenseStep.actions.iUnderstand": "Megértem",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/locales/hu.json` at line 300, Replace the incorrect translation value
for the key onboarding.licenseStep.actions.iUnderstand (currently "ATCHAT") with
a proper Hungarian confirmation label such as "Megértettem" or "Értem" so the
license step CTA is readable; update the JSON entry value for
onboarding.licenseStep.actions.iUnderstand accordingly and ensure the file
remains valid JSON (quotes and trailing commas intact).
web/src/locales/cs.json-114-114 (1)

114-114: ⚠️ Potential issue | 🟡 Minor

Localize the reboot CTA.

This is the only added reboot-flow label still left in English. It will stand out next to the surrounding Czech strings like Potvrdit restart and Rozumím.

Suggested fix
-  "onboarding.nextSteps.reboot": "Reboot",
+  "onboarding.nextSteps.reboot": "Restartovat",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/locales/cs.json` at line 114, Replace the English value for the JSON
key "onboarding.nextSteps.reboot" in cs.json with a Czech translation (e.g.,
"Restartovat") so it matches surrounding strings like "Potvrdit restart" and
"Rozumím"; update the value for the "onboarding.nextSteps.reboot" entry to the
chosen Czech text and ensure the JSON string stays properly quoted and
comma-terminated.
web/src/locales/ca.json-278-280 (1)

278-280: ⚠️ Potential issue | 🟡 Minor

Keep the completion copy aligned with onboarding, not integrations.

These result messages switch to configuracions d'integració, which reads like a different feature than the rest of this onboarding flow. Please use the same setup/onboarding terminology used elsewhere in this screen.

Suggested fix
-  "onboarding.summaryStep.result.bestEffortMessage": "Les teves configuracions d'integració van ser aplicades. Algunes operacions són de millor esforç i poden trigar un moment a reflectir-se. Pots ajustar la configuració més tard des del tauler de control d'Unraid.",
+  "onboarding.summaryStep.result.bestEffortMessage": "La teva configuració inicial s'ha aplicat. Algunes operacions són de millor esforç i poden trigar un moment a reflectir-se. Pots ajustar la configuració més tard des del tauler de control d'Unraid.",
-  "onboarding.summaryStep.result.successMessage": "Les teves configuracions d'integració van ser aplicades amb èxit.",
+  "onboarding.summaryStep.result.successMessage": "La teva configuració inicial s'ha aplicat correctament.",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/locales/ca.json` around lines 278 - 280, The copy uses
"configuracions d'integració" which conflicts with the onboarding terminology;
update the three keys onboarding.summaryStep.result.bestEffortMessage and
onboarding.summaryStep.result.successMessage (and ensure successTitle remains
consistent) to use the onboarding/setup phrasing instead (e.g., replace
"configuracions d'integració" with "configuracions d'inici" or another agreed
onboarding term) so the messages read like part of the onboarding flow.
web/src/locales/lv.json-148-154 (1)

148-154: ⚠️ Potential issue | 🟡 Minor

Fix the corrupted and partially untranslated LV copy in the internal boot step.

This block still ships mojibake (bu�ošanas) and English product text like Storage Drive(s), so the new onboarding step will read as broken for Latvian users.

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

In `@web/src/locales/lv.json` around lines 148 - 154, The Latvian translations for
the internal boot step keys contain mojibake and untranslated English; update
the values for onboarding.internalBootStep.stepDescription,
onboarding.internalBootStep.description,
onboarding.internalBootStep.options.storage and loadingOptions to use correct
Latvian text (replace "bu�ošanas" with the proper word for "booting" and
translate "Storage Drive(s)" into appropriate Latvian plural/singular phrasing),
ensure wording is consistent with onboarding.internalBootStep.stepTitle/title
and matches UI tone, and verify encoding is UTF-8 so no mojibake remains.
web/src/locales/lv.json-226-230 (1)

226-230: ⚠️ Potential issue | 🟡 Minor

Localize the leftover English setup log message.

Line 230 still contains Skipping configutation mutations., which breaks the LV experience and includes a typo in a user-visible log.

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

In `@web/src/locales/lv.json` around lines 226 - 230, The value for the
localization key onboarding.summaryStep.logs.noChanges contains an English
message with a typo; replace the English string "Skipping configutation
mutations." with a proper Latvian translation and correct spelling (e.g.,
"Konfigurācijas mutācijas tiek izlaistas." or a similar natural Latvian phrase)
so the log is fully localized and typo-free.
web/src/locales/es.json-189-190 (1)

189-190: ⚠️ Potential issue | 🟡 Minor

Keep onboarding.summaryStep.configuration generic.

Almacenamiento Primario y Secundario narrows this key to storage only, but the summary section also covers other onboarding settings.

Suggested fix
-  "onboarding.summaryStep.configuration": "Almacenamiento Primario y Secundario",
+  "onboarding.summaryStep.configuration": "Configuración",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/locales/es.json` around lines 189 - 190, The translation for
onboarding.summaryStep.configuration is too specific to storage; update the
value of the key "onboarding.summaryStep.configuration" in es.json to a more
generic term (e.g., "Configuración" or "Resumen de configuración") so it
correctly covers all onboarding settings rather than only storage-related items.
web/src/locales/ko.json-114-114 (1)

114-114: ⚠️ Potential issue | 🟡 Minor

Use the standard Korean term for reboot here.

강제 재시작 adds a “forced” meaning that the source string does not have and is inconsistent with the existing 재부팅 wording already used for reboot in this locale.

Suggested fix
-  "onboarding.nextSteps.reboot": "강제 재시작",
+  "onboarding.nextSteps.reboot": "재부팅",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/locales/ko.json` at line 114, The translation for the key
"onboarding.nextSteps.reboot" uses "강제 재시작" which wrongly adds a “forced” nuance
and is inconsistent with the existing reboot term; update the value for
onboarding.nextSteps.reboot to the standard Korean term "재부팅" to match other
locale entries and remove the unintended meaning.
web/src/locales/zh.json-190-190 (1)

190-190: ⚠️ Potential issue | 🟡 Minor

configuration is mistranslated here.

主存储和次级存储 narrows the meaning to storage, but this key is the generic configuration label for the summary step. The storage-specific fields are already covered below.

Suggested fix
-  "onboarding.summaryStep.configuration": "主存储和次级存储",
+  "onboarding.summaryStep.configuration": "配置",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/locales/zh.json` at line 190, The translation for the key
"onboarding.summaryStep.configuration" is too specific to storage; replace the
value "主存储和次级存储" with a generic label like "配置" (or another generic term meaning
"configuration") so the summary step reflects general configuration rather than
storage-specific fields.
web/src/locales/ar.json-195-199 (1)

195-199: ⚠️ Potential issue | 🟡 Minor

Align the Arabic pool label with the term used in the setup step.

Line 199 uses حوض الماء, which reads literally and does not match the poolName terminology introduced above. The summary and form will look like they refer to different concepts.

Suggested fix
-  "onboarding.summaryStep.bootConfig.pool": "حوض الماء",
+  "onboarding.summaryStep.bootConfig.pool": "المجموعة",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/locales/ar.json` around lines 195 - 199, The Arabic label for the
summary key onboarding.summaryStep.bootConfig.pool ("حوض الماء") is inconsistent
with the setup's poolName terminology; update the value to use the same term as
the setup (e.g., replace "حوض الماء" with "اسم الحوض" or the exact Arabic string
used for poolName) so the summary and form refer to the same concept.
web/src/locales/hi.json-218-218 (1)

218-218: ⚠️ Potential issue | 🟡 Minor

Use a registration term here, not “unsubscribed.”

अनसब्सक्राइब्ड changes the meaning of the state from “unregistered” to “unsubscribed,” which is misleading in the license flow.

Suggested copy
-  "onboarding.summaryStep.activation.unregistered": "अनसब्सक्राइब्ड",
+  "onboarding.summaryStep.activation.unregistered": "अपंजीकृत",-  "onboarding.licenseStep.status.unregistered": "अनसब्सक्राइब्ड",
+  "onboarding.licenseStep.status.unregistered": "अपंजीकृत",

Also applies to: 286-286

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

In `@web/src/locales/hi.json` at line 218, The translation for the key
"onboarding.summaryStep.activation.unregistered" currently uses "अनसब्सक्राइब्ड"
(which means "unsubscribed"); replace it with a correct Hindi term meaning
"unregistered" such as "अपंजीकृत" (or "रजिस्टर नहीं हुआ") so the license flow
reflects registration state correctly; update the same key occurrence at the
other location as well.
web/src/locales/no.json-159-159 (1)

159-159: ⚠️ Potential issue | 🟡 Minor

Use the Norwegian term for hardware slots here.

Line 159 and Line 200 use Spilleautomater, which reads as “slot machines,” not disk/UI slots. The nearby validation already uses spor, which fits this context much better.

Suggested copy
-  "onboarding.internalBootStep.fields.slots": "Spilleautomater",
+  "onboarding.internalBootStep.fields.slots": "Spor",-  "onboarding.summaryStep.bootConfig.slots": "Spilleautomater",
+  "onboarding.summaryStep.bootConfig.slots": "Spor",

Also applies to: 200-200

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

In `@web/src/locales/no.json` at line 159, Replace the incorrect Norwegian noun
"Spilleautomater" with the hardware-appropriate term "spor" for the locale keys
used in onboarding; specifically update
"onboarding.internalBootStep.fields.slots" (and the duplicate occurrence later
in the file) so the translation matches the validation language and correctly
refers to hardware/UI slots.
web/src/locales/hi.json-304-304 (1)

304-304: ⚠️ Potential issue | 🟡 Minor

Keep the support URL label as the real URL.

Line 304 localizes the path segment into Devanagari, so the visible address no longer matches the actual support URL.

Suggested copy
-  "onboarding.licenseStep.help.supportUrlLabel": "unraid.net/सपोर्ट",
+  "onboarding.licenseStep.help.supportUrlLabel": "unraid.net/support",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/locales/hi.json` at line 304, The localized value for the JSON key
"onboarding.licenseStep.help.supportUrlLabel" should remain the real URL instead
of a translated path; replace the Devanagari path with the actual ASCII path
(e.g. "unraid.net/support") for that key so the visible address matches the real
support URL, and check other locale files for the same key to ensure they also
use the real URL.
web/src/locales/uk.json-199-199 (1)

199-199: ⚠️ Potential issue | 🟡 Minor

Use the storage term пул here for consistency.

Line 199 switches pool to Басейн, which reads like a literal swimming pool. The same onboarding flow already uses пул terminology, so this summary label should match.

Suggested copy
-  "onboarding.summaryStep.bootConfig.pool": "Басейн",
+  "onboarding.summaryStep.bootConfig.pool": "Пул",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/locales/uk.json` at line 199, Replace the Ukrainian translation value
for the key "onboarding.summaryStep.bootConfig.pool" which currently reads
"Басейн" with the storage term "пул" to match existing onboarding terminology;
update the value only so the key remains
"onboarding.summaryStep.bootConfig.pool" and ensure consistency with other
occurrences of "пул" in the onboarding flow.
web/src/locales/ja.json-292-292 (1)

292-292: ⚠️ Potential issue | 🟡 Minor

Translate this CTA instead of leaving it in English.

Line 292 leaves the primary onboarding action as NEXT STEP, so the Japanese flow will show a mixed-language button.

Suggested copy
-  "onboarding.licenseStep.actions.nextStep": "NEXT STEP",
+  "onboarding.licenseStep.actions.nextStep": "次のステップ",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/locales/ja.json` at line 292, The JSON key
"onboarding.licenseStep.actions.nextStep" currently uses English "NEXT STEP";
replace its value with a Japanese translation (e.g., "次のステップ" or the preferred
concise CTA "次へ") so the onboarding CTA is localized; update the value for
onboarding.licenseStep.actions.nextStep accordingly and keep the string
formatting unchanged.
web/src/locales/uk.json-142-143 (1)

142-143: ⚠️ Potential issue | 🟡 Minor

Fix the meaning of the Community Apps description.

Line 143 translates the app store as Економічний, which means “economical” rather than “essential/core,” so the product description changes meaning.

Suggested copy
-  "onboarding.pluginsStep.plugins.communityApps.description": "Економічний магазин додатків для Unraid. Отримуйте доступ до тисяч додатків.",
+  "onboarding.pluginsStep.plugins.communityApps.description": "Основний магазин додатків для Unraid. Отримуйте доступ до тисяч додатків.",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/locales/uk.json` around lines 142 - 143, The translation for the key
onboarding.pluginsStep.plugins.communityApps.description uses "Економічний"
(economical) incorrectly; update that value to convey "primary/essential" app
store instead—e.g., replace "Економічний магазин додатків для Unraid. Отримуйте
доступ до тисяч додатків." with a phrase like "Основний магазин додатків для
Unraid. Отримуйте доступ до тисяч додатків." or "Головний магазин додатків для
Unraid. Отримуйте доступ до тисяч додатків." to restore the intended meaning.
web/src/locales/hr.json-213-214 (1)

213-214: ⚠️ Potential issue | 🟡 Minor

Remove Markdown formatting from these locale values.

These strings contain literal **...**, so the UI will render the asterisks if translations are treated as plain text.

Suggested fix
-  "onboarding.summaryStep.no": "**Ne**",
-  "onboarding.summaryStep.ok": "**OK**",
+  "onboarding.summaryStep.no": "Ne",
+  "onboarding.summaryStep.ok": "OK",
...
-  "onboarding.licenseStep.labels.none": "**Niti jedan**",
+  "onboarding.licenseStep.labels.none": "Niti jedan",

Also applies to: 289-289

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

In `@web/src/locales/hr.json` around lines 213 - 214, The locale entries
onboarding.summaryStep.no and onboarding.summaryStep.ok contain literal Markdown
asterisks ("**Ne**", "**OK**") which will render with asterisks in plain-text
UIs; remove the surrounding "**" so the values are plain text (e.g., "Ne", "OK")
and search for any other occurrences (the comment notes another instance around
line 289) and strip Markdown formatting there as well to ensure translations
render without literal asterisks.
web/src/locales/hr.json-151-153 (1)

151-153: ⚠️ Potential issue | 🟡 Minor

A few Croatian strings are still malformed.

Line 153 contains disk(ok), and Line 205 ends with sa najbolje moguće; both will surface as broken UI text. Please give this segment one more localization pass before merging.

Also applies to: 205-205

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

In `@web/src/locales/hr.json` around lines 151 - 153, The Croatian localization
contains malformed strings for onboarding keys: replace the incorrect
"onboarding.internalBootStep.options.storage" value containing "disk(ok)" with a
natural Croatian phrase (e.g., "Koristi diskove za pohranu za pokretanje Unraid"
or "Koristi disk za pohranu za pokretanje Unraid" depending on singular/plural
intent) and fix the other broken string referenced at key ending around line 205
(the value that currently ends with "sa najbolje moguće") to a complete,
grammatically correct Croatian sentence; update the values for
onboarding.internalBootStep.options.storage and the affected key at line ~205
accordingly so UI text displays properly.
web/src/locales/pl.json-171-176 (1)

171-176: ⚠️ Potential issue | 🟡 Minor

Some Polish strings still read like machine translation.

Line 176 (Internalna konfiguracja bootowania), Line 199 (Basen), and Line 205 (konfiguracja w stosie najlepszego wysiłku) will show up as broken or inconsistent copy in the same onboarding flow. Please normalize this segment before shipping.

Also applies to: 199-205

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

Inline comments:
In `@web/src/locales/bn.json`:
- Around line 115-120: The listed Bengali locale entries
(onboarding.nextSteps.additionalLinks, onboarding.nextSteps.confirmReboot.title,
onboarding.nextSteps.confirmReboot.description,
onboarding.nextSteps.confirmReboot.warning,
onboarding.nextSteps.confirmReboot.confirm, and onboarding.stepper.stepLabel)
are corrupted with control-character escapes; replace each value with correct,
human-readable Bengali strings (or the original translations) and ensure any
interpolation placeholder like {number} in onboarding.stepper.stepLabel is
preserved exactly. Also check and fix the other occurrence of the same key
referenced in the review so both instances use the same valid Bengali text and
placeholders.

In `@web/src/locales/ro.json`:
- Line 328: The translation for the key "common.loading" contains a NUL escape
and newline sequence (`\u0000\n`) causing corrupted text; remove that
escape/newline and replace the value with the proper Romanian spinner label
(e.g., "Se încarcă...") so the shared loading label renders normally.

In `@web/src/locales/ru.json`:
- Line 304: The key "onboarding.licenseStep.help.supportUrlLabel" currently
contains Crowdin placeholder text; replace that placeholder with the proper
user-facing Russian translation for the support URL label (e.g., a concise
phrase that points users to unraid.net/support in Russian) so the support dialog
shows a real translated string instead of glossary fallback text; update the
value for onboarding.licenseStep.help.supportUrlLabel with the correct Russian
text and ensure punctuation/spacing matches other locale entries.

---

Minor comments:
In `@web/src/locales/ar.json`:
- Around line 195-199: The Arabic label for the summary key
onboarding.summaryStep.bootConfig.pool ("حوض الماء") is inconsistent with the
setup's poolName terminology; update the value to use the same term as the setup
(e.g., replace "حوض الماء" with "اسم الحوض" or the exact Arabic string used for
poolName) so the summary and form refer to the same concept.

In `@web/src/locales/bn.json`:
- Line 163: The locale value for
"onboarding.internalBootStep.fields.bootReservedSize" currently contains HTML
markup ("<b>...</b>"); remove the markup so the translation is plain text (e.g.,
"বুট সংরক্ষিত আকার") and let the rendering component apply emphasis or
formatting. Update the bn.json entry for
"onboarding.internalBootStep.fields.bootReservedSize" to a plain string and, if
the UI needs bolding, handle that in the component that reads this key (or
create a separate key like
"onboarding.internalBootStep.fields.bootReservedSize.labelBold" only if you need
a distinct formatted variant).

In `@web/src/locales/ca.json`:
- Around line 278-280: The copy uses "configuracions d'integració" which
conflicts with the onboarding terminology; update the three keys
onboarding.summaryStep.result.bestEffortMessage and
onboarding.summaryStep.result.successMessage (and ensure successTitle remains
consistent) to use the onboarding/setup phrasing instead (e.g., replace
"configuracions d'integració" with "configuracions d'inici" or another agreed
onboarding term) so the messages read like part of the onboarding flow.

In `@web/src/locales/cs.json`:
- Line 114: Replace the English value for the JSON key
"onboarding.nextSteps.reboot" in cs.json with a Czech translation (e.g.,
"Restartovat") so it matches surrounding strings like "Potvrdit restart" and
"Rozumím"; update the value for the "onboarding.nextSteps.reboot" entry to the
chosen Czech text and ensure the JSON string stays properly quoted and
comma-terminated.

In `@web/src/locales/da.json`:
- Around line 243-247: Update the Danish strings to avoid the physical-sounding
"lokation" and use "sprogindstilling" (current language setting) consistently:
change onboarding.summaryStep.logs.languageInstallDidNotSucceed and
onboarding.summaryStep.logs.languageInstallFailedKeepLocale to end with
"Beholder nuværende sprogindstilling." and change
onboarding.summaryStep.logs.languageMetadataUnavailable from "Springer lokal
ændring over." to a phrasing using "sprogindstilling" (e.g., "Springer ændring
af sprogindstilling over."). Ensure all replacements use the term
"sprogindstilling" so logs referring to keeping the current locale read
naturally in Danish.

In `@web/src/locales/de.json`:
- Line 306: The translation for the key
"onboarding.licenseStep.skipDialog.title" is incorrect for a confirmation
dialog; change its value from an error-like phrase to a confirmation-oriented
title (e.g., a short question or action phrase such as "Aktivierung
überspringen?" or "Überspringen bestätigen") so it matches the dialog body about
skipping activation and reads as a confirmation prompt.
- Around line 220-225: The JSON key
onboarding.summaryStep.activation.errors.guidMismatch is still in English;
update its value to the proper German translation (e.g., "GUID stimmt nicht
überein" or another preferred German phrasing) to match the other localized
activation error messages and keep the file consistent.

In `@web/src/locales/es.json`:
- Around line 189-190: The translation for onboarding.summaryStep.configuration
is too specific to storage; update the value of the key
"onboarding.summaryStep.configuration" in es.json to a more generic term (e.g.,
"Configuración" or "Resumen de configuración") so it correctly covers all
onboarding settings rather than only storage-related items.

In `@web/src/locales/fr.json`:
- Line 190: The localized string for the key
"onboarding.summaryStep.configuration" is too specific ("Stockage principal et
secondaire"); change its value to a generic label like "Configuration" so the
summary step correctly represents storage, plugins and boot config
collectively—update the value for onboarding.summaryStep.configuration to
"Configuration".

In `@web/src/locales/hi.json`:
- Line 218: The translation for the key
"onboarding.summaryStep.activation.unregistered" currently uses "अनसब्सक्राइब्ड"
(which means "unsubscribed"); replace it with a correct Hindi term meaning
"unregistered" such as "अपंजीकृत" (or "रजिस्टर नहीं हुआ") so the license flow
reflects registration state correctly; update the same key occurrence at the
other location as well.
- Line 304: The localized value for the JSON key
"onboarding.licenseStep.help.supportUrlLabel" should remain the real URL instead
of a translated path; replace the Devanagari path with the actual ASCII path
(e.g. "unraid.net/support") for that key so the visible address matches the real
support URL, and check other locale files for the same key to ensure they also
use the real URL.

In `@web/src/locales/hr.json`:
- Around line 213-214: The locale entries onboarding.summaryStep.no and
onboarding.summaryStep.ok contain literal Markdown asterisks ("**Ne**",
"**OK**") which will render with asterisks in plain-text UIs; remove the
surrounding "**" so the values are plain text (e.g., "Ne", "OK") and search for
any other occurrences (the comment notes another instance around line 289) and
strip Markdown formatting there as well to ensure translations render without
literal asterisks.
- Around line 151-153: The Croatian localization contains malformed strings for
onboarding keys: replace the incorrect
"onboarding.internalBootStep.options.storage" value containing "disk(ok)" with a
natural Croatian phrase (e.g., "Koristi diskove za pohranu za pokretanje Unraid"
or "Koristi disk za pohranu za pokretanje Unraid" depending on singular/plural
intent) and fix the other broken string referenced at key ending around line 205
(the value that currently ends with "sa najbolje moguće") to a complete,
grammatically correct Croatian sentence; update the values for
onboarding.internalBootStep.options.storage and the affected key at line ~205
accordingly so UI text displays properly.

In `@web/src/locales/hu.json`:
- Line 300: Replace the incorrect translation value for the key
onboarding.licenseStep.actions.iUnderstand (currently "ATCHAT") with a proper
Hungarian confirmation label such as "Megértettem" or "Értem" so the license
step CTA is readable; update the JSON entry value for
onboarding.licenseStep.actions.iUnderstand accordingly and ensure the file
remains valid JSON (quotes and trailing commas intact).

In `@web/src/locales/ja.json`:
- Line 292: The JSON key "onboarding.licenseStep.actions.nextStep" currently
uses English "NEXT STEP"; replace its value with a Japanese translation (e.g.,
"次のステップ" or the preferred concise CTA "次へ") so the onboarding CTA is localized;
update the value for onboarding.licenseStep.actions.nextStep accordingly and
keep the string formatting unchanged.

In `@web/src/locales/ko.json`:
- Line 114: The translation for the key "onboarding.nextSteps.reboot" uses "강제
재시작" which wrongly adds a “forced” nuance and is inconsistent with the existing
reboot term; update the value for onboarding.nextSteps.reboot to the standard
Korean term "재부팅" to match other locale entries and remove the unintended
meaning.

In `@web/src/locales/lv.json`:
- Around line 148-154: The Latvian translations for the internal boot step keys
contain mojibake and untranslated English; update the values for
onboarding.internalBootStep.stepDescription,
onboarding.internalBootStep.description,
onboarding.internalBootStep.options.storage and loadingOptions to use correct
Latvian text (replace "bu�ošanas" with the proper word for "booting" and
translate "Storage Drive(s)" into appropriate Latvian plural/singular phrasing),
ensure wording is consistent with onboarding.internalBootStep.stepTitle/title
and matches UI tone, and verify encoding is UTF-8 so no mojibake remains.
- Around line 226-230: The value for the localization key
onboarding.summaryStep.logs.noChanges contains an English message with a typo;
replace the English string "Skipping configutation mutations." with a proper
Latvian translation and correct spelling (e.g., "Konfigurācijas mutācijas tiek
izlaistas." or a similar natural Latvian phrase) so the log is fully localized
and typo-free.

In `@web/src/locales/nl.json`:
- Line 180: The translation incorrectly uses the swimming-term "zwembad"; update
the value for the key "onboarding.internalBootStep.validation.poolExists" to use
the storage term "pool" (e.g., "Poolnaam bestaat al." or "poolnaam bestaat al.")
and similarly replace any other nl.json entries that translate the storage
concept "pool" as "zwembad" so they retain the technical term "pool" instead of
the literal swimming-pool translation. Ensure only the string values change and
JSON keys remain untouched.

In `@web/src/locales/no.json`:
- Line 159: Replace the incorrect Norwegian noun "Spilleautomater" with the
hardware-appropriate term "spor" for the locale keys used in onboarding;
specifically update "onboarding.internalBootStep.fields.slots" (and the
duplicate occurrence later in the file) so the translation matches the
validation language and correctly refers to hardware/UI slots.

In `@web/src/locales/uk.json`:
- Line 199: Replace the Ukrainian translation value for the key
"onboarding.summaryStep.bootConfig.pool" which currently reads "Басейн" with the
storage term "пул" to match existing onboarding terminology; update the value
only so the key remains "onboarding.summaryStep.bootConfig.pool" and ensure
consistency with other occurrences of "пул" in the onboarding flow.
- Around line 142-143: The translation for the key
onboarding.pluginsStep.plugins.communityApps.description uses "Економічний"
(economical) incorrectly; update that value to convey "primary/essential" app
store instead—e.g., replace "Економічний магазин додатків для Unraid. Отримуйте
доступ до тисяч додатків." with a phrase like "Основний магазин додатків для
Unraid. Отримуйте доступ до тисяч додатків." or "Головний магазин додатків для
Unraid. Отримуйте доступ до тисяч додатків." to restore the intended meaning.

In `@web/src/locales/zh.json`:
- Line 190: The translation for the key "onboarding.summaryStep.configuration"
is too specific to storage; replace the value "主存储和次级存储" with a generic label
like "配置" (or another generic term meaning "configuration") so the summary step
reflects general configuration rather than storage-specific fields.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 79904aa1-4d41-4fe4-9328-78806109257a

📥 Commits

Reviewing files that changed from the base of the PR and between 337aecc and e6f415f.

📒 Files selected for processing (24)
  • web/src/locales/ar.json
  • web/src/locales/bn.json
  • web/src/locales/ca.json
  • web/src/locales/cs.json
  • web/src/locales/da.json
  • web/src/locales/de.json
  • web/src/locales/es.json
  • web/src/locales/fr.json
  • web/src/locales/hi.json
  • web/src/locales/hr.json
  • web/src/locales/hu.json
  • web/src/locales/it.json
  • web/src/locales/ja.json
  • web/src/locales/ko.json
  • web/src/locales/lv.json
  • web/src/locales/nl.json
  • web/src/locales/no.json
  • web/src/locales/pl.json
  • web/src/locales/pt.json
  • web/src/locales/ro.json
  • web/src/locales/ru.json
  • web/src/locales/sv.json
  • web/src/locales/uk.json
  • web/src/locales/zh.json

Comment on lines +115 to +120
"onboarding.nextSteps.additionalLinks": "\n\u0017\u000b\u0005 \u001d\u0018\u0014\u001e \u000e\u0013\u001e",
"onboarding.nextSteps.confirmReboot.title": "\u0006\b\f\u001c\u0014\u001b\u0005 \u0014\u0004 ",
"onboarding.nextSteps.confirmReboot.description": "\u0007\u0017\f\u0005 \t\b\u0017\u0017\u0000\u0007, \u0015\u0007\u0013\u001d\u0000 \u001e\u000e\u0017\u0017 \u001f\u001e\u0006\b \u0005\u001f\f\u0014\u0016\u0000\u0004 \u000e\u0017 \u0002\u0016\u000b\u0013 \u001f\u000b\u0017 \u0017\u0019\u0000\u001d \u0010\u0017\u000b \u0014\u0004\u001c\u0000\u0013\u0018 \u0019\u0000\u0003 \u001f\u0006\u001d\u0004 \u001e\u0010\u000b\u0000\u001e\u0004 \u001d\u000e\u0018\u0013\u001e\u0004 \u0006\u0007 \u001f\u0006\u001d\u0004.",
"onboarding.nextSteps.confirmReboot.warning": "\u001f\b\u0004 \u001c\u0013\u001e\u001e \u000f\u001f \u000b\u001d\u0005 \u001e\u0011\u0013\u0012 \u000b\u000f \u001a\u0004\u0016 \u0012\u0011 \u0007\u0004 \u001d\u000e\u0018\u0013\u001e\u001c \u0014\u0011 \u0005\u0004\u001c\f\u0004 Unraid \u001f\b\u000e\u001c Unraid \u000b.",
"onboarding.nextSteps.confirmReboot.confirm": "আমি বুঝেছি",
"onboarding.stepper.stepLabel": "\u0018\u0004\u0016\u0012 \b,",
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 | 🟠 Major

Replace the corrupted Bengali strings before merging.

These values contain escaped control characters instead of readable Bengali text, so the onboarding UI will render broken labels/warnings. onboarding.stepper.stepLabel on Line 120 also drops the {number} placeholder, which will break interpolation.

Also applies to: 157-157

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

In `@web/src/locales/bn.json` around lines 115 - 120, The listed Bengali locale
entries (onboarding.nextSteps.additionalLinks,
onboarding.nextSteps.confirmReboot.title,
onboarding.nextSteps.confirmReboot.description,
onboarding.nextSteps.confirmReboot.warning,
onboarding.nextSteps.confirmReboot.confirm, and onboarding.stepper.stepLabel)
are corrupted with control-character escapes; replace each value with correct,
human-readable Bengali strings (or the original translations) and ensure any
interpolation placeholder like {number} in onboarding.stepper.stepLabel is
preserved exactly. Also check and fix the other occurrence of the same key
referenced in the review so both instances use the same valid Bengali text and
placeholders.

"common.installing": "Instalare în desfășurare",
"common.learnMore": "Aflați mai multe",
"common.retry": "Reîncercați",
"common.loading": "Se \u0000\ncarcă...",
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 | 🟠 Major

Fix the corrupted common.loading string.

Line 328 includes a NUL escape and newline in a shared loading label. That will render as broken text instead of a normal spinner label.

Suggested fix
-  "common.loading": "Se \u0000\ncarcă...",
+  "common.loading": "Se încarcă...",
📝 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
"common.loading": "Se \u0000\ncarcă...",
"common.loading": "Se încarcă...",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/locales/ro.json` at line 328, The translation for the key
"common.loading" contains a NUL escape and newline sequence (`\u0000\n`) causing
corrupted text; remove that escape/newline and replace the value with the proper
Romanian spinner label (e.g., "Se încarcă...") so the shared loading label
renders normally.

"onboarding.licenseStep.help.title": "Связаться с поддержкой",
"onboarding.licenseStep.help.contactSupportDescription": "Если у вас возникли проблемы с активацией, пожалуйста, обратитесь к нашей службе поддержки.",
"onboarding.licenseStep.help.supportLabel": "Поддержка:",
"onboarding.licenseStep.help.supportUrlLabel": "желаемый русский текст для unraid.net/support не найден в глоссарии.",
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 | 🟠 Major

Replace the Crowdin placeholder before release.

This value is not a user-facing translation; it's glossary fallback text and will show up verbatim in the support dialog.

Suggested fix
-  "onboarding.licenseStep.help.supportUrlLabel": "желаемый русский текст для unraid.net/support не найден в глоссарии.",
+  "onboarding.licenseStep.help.supportUrlLabel": "unraid.net/support",
📝 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
"onboarding.licenseStep.help.supportUrlLabel": "желаемый русский текст для unraid.net/support не найден в глоссарии.",
"onboarding.licenseStep.help.supportUrlLabel": "unraid.net/support",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/locales/ru.json` at line 304, The key
"onboarding.licenseStep.help.supportUrlLabel" currently contains Crowdin
placeholder text; replace that placeholder with the proper user-facing Russian
translation for the support URL label (e.g., a concise phrase that points users
to unraid.net/support in Russian) so the support dialog shows a real translated
string instead of glossary fallback text; update the value for
onboarding.licenseStep.help.supportUrlLabel with the correct Russian text and
ensure punctuation/spacing matches other locale entries.

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.

1 participant