Conversation
WalkthroughTwenty-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
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
💡 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,", |
There was a problem hiding this comment.
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ă...", |
There was a problem hiding this comment.
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 Report✅ All modified and coverable lines are covered by tests. 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. 🚀 New features to boost your workflow:
|
|
This plugin has been deployed to Cloudflare R2 and is available for testing. |
There was a problem hiding this comment.
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 | 🟡 MinorDon't translate storage
poolaszwembad.
Zwembadmeans swimming pool. In this context users expect the storage termpool, 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 | 🟡 MinorRestore a generic “Configuration” label here.
This key labels the overall summary section, but
Stockage principal et secondairenarrows 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 | 🟡 MinorFix the locale/location wording in these log messages.
These strings talk about keeping the current locale after a language-pack failure, but
lokationreads 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 | 🟡 MinorKeep 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 | 🟡 MinorFix the skip-dialog title.
Zuweisungsfehlerdoes 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 | 🟡 MinorTranslate
guidMismatchinto German.
onboarding.summaryStep.activation.errors.guidMismatchis 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 | 🟡 MinorFix the broken confirmation label.
onboarding.licenseStep.actions.iUnderstandis set toATCHAT, 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 | 🟡 MinorLocalize 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 restartandRozumí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 | 🟡 MinorKeep 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 | 🟡 MinorFix the corrupted and partially untranslated LV copy in the internal boot step.
This block still ships mojibake (
bu�ošanas) and English product text likeStorage 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 | 🟡 MinorLocalize 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 | 🟡 MinorKeep
onboarding.summaryStep.configurationgeneric.
Almacenamiento Primario y Secundarionarrows 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 | 🟡 MinorUse 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
configurationis 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 | 🟡 MinorAlign the Arabic
poollabel with the term used in the setup step.Line 199 uses
حوض الماء, which reads literally and does not match thepoolNameterminology 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 | 🟡 MinorUse 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 | 🟡 MinorUse 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 usesspor, 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 | 🟡 MinorKeep 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 | 🟡 MinorUse the storage term
пулhere for consistency.Line 199 switches
pooltoБасейн, 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 | 🟡 MinorTranslate 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 | 🟡 MinorFix 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 | 🟡 MinorRemove 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 | 🟡 MinorA few Croatian strings are still malformed.
Line 153 contains
disk(ok), and Line 205 ends withsa 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 | 🟡 MinorSome 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
📒 Files selected for processing (24)
web/src/locales/ar.jsonweb/src/locales/bn.jsonweb/src/locales/ca.jsonweb/src/locales/cs.jsonweb/src/locales/da.jsonweb/src/locales/de.jsonweb/src/locales/es.jsonweb/src/locales/fr.jsonweb/src/locales/hi.jsonweb/src/locales/hr.jsonweb/src/locales/hu.jsonweb/src/locales/it.jsonweb/src/locales/ja.jsonweb/src/locales/ko.jsonweb/src/locales/lv.jsonweb/src/locales/nl.jsonweb/src/locales/no.jsonweb/src/locales/pl.jsonweb/src/locales/pt.jsonweb/src/locales/ro.jsonweb/src/locales/ru.jsonweb/src/locales/sv.jsonweb/src/locales/uk.jsonweb/src/locales/zh.json
| "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,", |
There was a problem hiding this comment.
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ă...", |
There was a problem hiding this comment.
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.
| "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 не найден в глоссарии.", |
There was a problem hiding this comment.
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.
| "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.
Summary by CodeRabbit