Skip to content

New Crowdin updates#1910

Merged
elibosley merged 25 commits intomainfrom
l10n_main
Mar 14, 2026
Merged

New Crowdin updates#1910
elibosley merged 25 commits intomainfrom
l10n_main

Conversation

@elibosley
Copy link
Member

@elibosley elibosley commented Mar 14, 2026

Summary by CodeRabbit

  • Localization
    • Added support for TPM license transfer workflow across 27 languages. New translations include messages for transfer availability, trial status, step-by-step instructions (stop array, remove flash, refresh page, replace key, start array), and readiness states.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 14, 2026

Walkthrough

This PR adds 12 new translation keys related to TPM license transfer functionality across 24 language locale files, each introducing strings for availability, trial status, step-by-step guidance, and readiness messaging under the registration namespace.

Changes

Cohort / File(s) Summary
TPM License Transfer Localization
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
Added 12 identical translation keys per file: registration.tpmTransferAvailable, registration.tpmTransferAvailableDescription, registration.tpmTransferTrial, registration.tpmTransferTrialDescription, registration.tpmTransferAvailableSteps (stopArray, removeFlash, refreshPage, replaceKey, startArray), registration.tpmTransferReady, registration.tpmTransferReadyDescription, registration.tpmTransferReadyDescriptionArrayRunning.

Estimated Code Review Effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

🐰 Twenty-four languages now speak TPM's tongue,
A harmonious chorus of transfer strings strung,
From ready to trial, each step guides with grace,
i18n magic sprinkles throughout every place! ✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the pull request as a set of localization updates from Crowdin across 24 locale files, introducing TPM license transfer translation strings.
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
📝 Coding Plan
  • Generate coding plan for human review comments

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

@github-actions
Copy link
Contributor

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/PR1910/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: 13

🤖 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 681-685: Existing Bengali strings
(registration.tpmTransferAvailableSteps.replaceKey,
registration.tpmTransferAvailableSteps.startArray,
registration.tpmTransferReadyDescription,
registration.tpmTransferReadyDescriptionArrayRunning) embed the English phrase
"Replace Key"; update these values to use the localized label instead of
hard-coded English by replacing the literal "Replace Key" with the localized
message reference for server.actions.replaceKey (i.e. use the same translated
label used elsewhere), ensuring the surrounding Bengali punctuation and sentence
structure remain correct.

In `@web/src/locales/es.json`:
- Around line 681-682: The two Spanish localization strings are not using the
same CTA/imperative wording as other steps; update the values for
registration.tpmTransferAvailableSteps.replaceKey to match the existing CTA
wording (e.g., "Sustituir Clave.") and change
registration.tpmTransferAvailableSteps.startArray to use the imperative form
consistent with other steps (e.g., "Iniciar array."). Ensure casing and
punctuation match the project's existing CTA style.

In `@web/src/locales/fr.json`:
- Line 677: The French translation for the key
"registration.tpmTransferTrialDescription" contains Georgian corruption
("შეძლerez"); replace that corrupted token with the correct French word
"pourrez" and ensure the phrase reads naturally (e.g., "vous pourrez la
transférer de votre périphérique flash USB vers le TPM.") and save the file with
UTF-8 encoding so no further character corruption occurs.

In `@web/src/locales/hi.json`:
- Around line 681-685: The strings
registration.tpmTransferAvailableSteps.replaceKey,
registration.tpmTransferReadyDescription, and
registration.tpmTransferReadyDescriptionArrayRunning contain the English CTA
"Replace Key"; update the two longer description entries to reference the
localized action text instead of hardcoding English — i.e., replace the literal
"Replace Key" in registration.tpmTransferReadyDescription and
registration.tpmTransferReadyDescriptionArrayRunning with the localized
key/phrase used by registration.tpmTransferAvailableSteps.replaceKey so the CTA
is fully localized and consistent with the UI.

In `@web/src/locales/ja.json`:
- Around line 681-685: The three JSON entries
registration.tpmTransferAvailableSteps.replaceKey,
registration.tpmTransferReadyDescription, and
registration.tpmTransferReadyDescriptionArrayRunning use 「キーを置き換える」; change
those exact string values to use the existing localized button label 「キーを交換」 so
the guided-step text matches the action label used elsewhere
(registration.tpmTransferAvailableSteps.replaceKey should become 「[キーを交換]を押します。」
and similarly update the two description strings to contain 「[キーを交換]を押して」).

In `@web/src/locales/lv.json`:
- Around line 681-685: Update the three translation values that use the
inconsistent phrase: change "Aizstāt atslēgu" to the exact button label
"Aizvietot Atslēgu" in the keys
registration.tpmTransferAvailableSteps.replaceKey,
registration.tpmTransferReadyDescription, and
registration.tpmTransferReadyDescriptionArrayRunning so the copy matches the
existing button text exactly.

In `@web/src/locales/no.json`:
- Around line 681-685: Three translation entries use "Erstatt nøkkel" while the
button label uses "Bytt nøkkel"; update the values for
"registration.tpmTransferAvailableSteps.replaceKey",
"registration.tpmTransferReadyDescription", and
"registration.tpmTransferReadyDescriptionArrayRunning" to use "Bytt nøkkel" so
the instruction text matches the existing UI action label and remains consistent
across the locale.

In `@web/src/locales/pl.json`:
- Around line 681-685: The Polish locale JSON uses the literal English "Replace
Key" in the TPM transfer strings; update the values for
"registration.tpmTransferAvailableSteps.replaceKey",
"registration.tpmTransferReadyDescription", and
"registration.tpmTransferReadyDescriptionArrayRunning" to use the localized CTA
matching the existing key "server.actions.replaceKey" (i.e., the same wording as
that button label) so the copy stays consistent with the actual button label and
other locales.

In `@web/src/locales/ro.json`:
- Around line 678-685: Update the Romanian strings to match existing UI
terminology: replace "matricea" with "Array-ul" in
registration.tpmTransferAvailableSteps.stopArray and
registration.tpmTransferAvailableSteps.startArray, and change "Înlocuiți cheia"
/ "Apăsați pe Înlocuiți cheia" to the existing label "Înlocuire Cheie" in
registration.tpmTransferAvailableSteps.replaceKey,
registration.tpmTransferReadyDescription, and
registration.tpmTransferReadyDescriptionArrayRunning so the wording and
capitalization are consistent with other keys like the Array-related and
key-replacement strings already used elsewhere in the file.

In `@web/src/locales/ru.json`:
- Around line 681-685: The Russian strings use the literal English CTA "Replace
Key" instead of the localized label; update the values for
registration.tpmTransferAvailableSteps.replaceKey,
registration.tpmTransferReadyDescription, and
registration.tpmTransferReadyDescriptionArrayRunning to interpolate or reference
the localized button text (server.actions.replaceKey) rather than the hardcoded
English phrase so the UI uses the same label as the button; locate and replace
the "Replace Key" fragments in those keys with the localized token or equivalent
placeholder that your i18n system uses for server.actions.replaceKey.

In `@web/src/locales/sv.json`:
- Around line 681-685: Replace the inconsistent Swedish button text "Ersätt
nyckel" with the exact existing label "Byt Ut Nyckel" in the three JSON keys
registration.tpmTransferAvailableSteps.replaceKey,
registration.tpmTransferReadyDescription, and
registration.tpmTransferReadyDescriptionArrayRunning so the guided step text
matches the actual action label used elsewhere
(registration.tpmTransferAvailableSteps.replaceKey is where the button label
appears, and the two description keys reference that action).

In `@web/src/locales/uk.json`:
- Around line 681-685: Replace the English phrase "Replace Key" with the
localized label "Замінити ключ" in the specified translation entries to avoid UX
mismatch: update the values for
"registration.tpmTransferAvailableSteps.replaceKey",
"registration.tpmTransferReadyDescription", and
"registration.tpmTransferReadyDescriptionArrayRunning" so they use "Замінити
ключ" exactly as in "registration.tpmTransferAvailableSteps.replaceKey" (the
canonical label used elsewhere). Ensure punctuation and spacing remain
consistent with surrounding sentences.

In `@web/src/locales/zh.json`:
- Around line 678-682: Two keys in the TPM transfer steps use the inconsistent
term “数组” instead of the project-standard “阵列”; update the values for
registration.tpmTransferAvailableSteps.stopArray and
registration.tpmTransferAvailableSteps.startArray to use “阵列” (e.g., "停止阵列。" and
"启动阵列。") so all registration.tpmTransferAvailableSteps.* strings use the same
terminology.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 9e539e81-a119-44ea-8577-8b78fff9e0a7

📥 Commits

Reviewing files that changed from the base of the PR and between 2f3f34b and 02d8530.

📒 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 +681 to +685
"registration.tpmTransferAvailableSteps.replaceKey": "Replace Key চাপুন।",
"registration.tpmTransferAvailableSteps.startArray": "অ্যারেটি চালু করুন।",
"registration.tpmTransferReady": "আপনার TPM লাইসেন্স স্থানান্তর চালিয়ে যান।",
"registration.tpmTransferReadyDescription": "প্রথম দুটি ধাপ ইতোমধ্যেই সম্পন্ন হয়েছে। এই লাইসেন্সটি TPM-এ স্থানান্তর করতে Replace Key চাপুন, তারপর অ্যারেটি চালু করুন।",
"registration.tpmTransferReadyDescriptionArrayRunning": "USB ফ্ল্যাশ বুট ডিভাইসটি ইতোমধ্যেই সরানো হয়েছে। অ্যারেটি বন্ধ করুন, তারপর এই লাইসেন্সটি TPM-এ স্থানান্তর করতে Replace Key চাপুন।",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Use the localized label instead of English “Replace Key”.

These strings mix English into Bengali instructions, while this locale already defines a Bengali label for that action (server.actions.replaceKey). Aligning wording avoids mixed-language UX.

Suggested text fix
-  "registration.tpmTransferAvailableSteps.replaceKey": "Replace Key চাপুন।",
+  "registration.tpmTransferAvailableSteps.replaceKey": "\"প্রতিস্থাপন কী\" চাপুন।",
-  "registration.tpmTransferReadyDescription": "প্রথম দুটি ধাপ ইতোমধ্যেই সম্পন্ন হয়েছে। এই লাইসেন্সটি TPM-এ স্থানান্তর করতে Replace Key চাপুন, তারপর অ্যারেটি চালু করুন।",
+  "registration.tpmTransferReadyDescription": "প্রথম দুটি ধাপ ইতোমধ্যেই সম্পন্ন হয়েছে। এই লাইসেন্সটি TPM-এ স্থানান্তর করতে \"প্রতিস্থাপন কী\" চাপুন, তারপর অ্যারেটি চালু করুন।",
-  "registration.tpmTransferReadyDescriptionArrayRunning": "USB ফ্ল্যাশ বুট ডিভাইসটি ইতোমধ্যেই সরানো হয়েছে। অ্যারেটি বন্ধ করুন, তারপর এই লাইসেন্সটি TPM-এ স্থানান্তর করতে Replace Key চাপুন।",
+  "registration.tpmTransferReadyDescriptionArrayRunning": "USB ফ্ল্যাশ বুট ডিভাইসটি ইতোমধ্যেই সরানো হয়েছে। অ্যারেটি বন্ধ করুন, তারপর এই লাইসেন্সটি TPM-এ স্থানান্তর করতে \"প্রতিস্থাপন কী\" চাপুন।",
🤖 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 681 - 685, Existing Bengali strings
(registration.tpmTransferAvailableSteps.replaceKey,
registration.tpmTransferAvailableSteps.startArray,
registration.tpmTransferReadyDescription,
registration.tpmTransferReadyDescriptionArrayRunning) embed the English phrase
"Replace Key"; update these values to use the localized label instead of
hard-coded English by replacing the literal "Replace Key" with the localized
message reference for server.actions.replaceKey (i.e. use the same translated
label used elsewhere), ensuring the surrounding Bengali punctuation and sentence
structure remain correct.

Comment on lines +681 to +682
"registration.tpmTransferAvailableSteps.replaceKey": "Pulse Reemplazar clave.",
"registration.tpmTransferAvailableSteps.startArray": "Iniciar el array.",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Align step text with the existing CTA label and imperative style.

Line 681 uses Reemplazar clave, but the existing button label is Sustituir Clave; Line 682 also breaks the imperative pattern used by the other steps.

Suggested wording update
-  "registration.tpmTransferAvailableSteps.replaceKey": "Pulse Reemplazar clave.",
-  "registration.tpmTransferAvailableSteps.startArray": "Iniciar el array.",
+  "registration.tpmTransferAvailableSteps.replaceKey": "Pulse Sustituir Clave.",
+  "registration.tpmTransferAvailableSteps.startArray": "Inicie el arreglo.",
📝 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
"registration.tpmTransferAvailableSteps.replaceKey": "Pulse Reemplazar clave.",
"registration.tpmTransferAvailableSteps.startArray": "Iniciar el array.",
"registration.tpmTransferAvailableSteps.replaceKey": "Pulse Sustituir Clave.",
"registration.tpmTransferAvailableSteps.startArray": "Inicie el arreglo.",
🤖 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 681 - 682, The two Spanish localization
strings are not using the same CTA/imperative wording as other steps; update the
values for registration.tpmTransferAvailableSteps.replaceKey to match the
existing CTA wording (e.g., "Sustituir Clave.") and change
registration.tpmTransferAvailableSteps.startArray to use the imperative form
consistent with other steps (e.g., "Iniciar array."). Ensure casing and
punctuation match the project's existing CTA style.

"registration.tpmTransferAvailable": "La licence TPM est disponible sur ce serveur.",
"registration.tpmTransferAvailableDescription": "Pour déplacer cette licence de votre clé USB vers le TPM, effectuez ces étapes sur cette page.",
"registration.tpmTransferTrial": "La licence TPM sera disponible après l'achat d'une licence.",
"registration.tpmTransferTrialDescription": "Les licences d’essai ne peuvent pas être transférées vers le TPM. Une fois que vous aurez acheté une licence pour ce serveur, vous შეძლerez de la transférer de votre périphérique flash USB vers le TPM.",
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 | 🔴 Critical

Character corruption: Georgian script embedded in French text.

The string contains Georgian characters "შეძლ" which appears to be a copy-paste error or encoding corruption. The word "შეძლerez" should likely be "pourrez" (French for "you will be able to").

🐛 Proposed fix
-  "registration.tpmTransferTrialDescription": "Les licences d'essai ne peuvent pas être transférées vers le TPM. Une fois que vous aurez acheté une licence pour ce serveur, vous შეძლerez de la transférer de votre périphérique flash USB vers le TPM.",
+  "registration.tpmTransferTrialDescription": "Les licences d'essai ne peuvent pas être transférées vers le TPM. Une fois que vous aurez acheté une licence pour ce serveur, vous pourrez la transférer de votre périphérique flash USB vers le TPM.",
📝 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
"registration.tpmTransferTrialDescription": "Les licences dessai ne peuvent pas être transférées vers le TPM. Une fois que vous aurez acheté une licence pour ce serveur, vous შეძლerez de la transférer de votre périphérique flash USB vers le TPM.",
"registration.tpmTransferTrialDescription": "Les licences d'essai ne peuvent pas être transférées vers le TPM. Une fois que vous aurez acheté une licence pour ce serveur, vous pourrez la transférer de votre périphérique flash USB vers le TPM.",
🤖 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 677, The French translation for the key
"registration.tpmTransferTrialDescription" contains Georgian corruption
("შეძლerez"); replace that corrupted token with the correct French word
"pourrez" and ensure the phrase reads naturally (e.g., "vous pourrez la
transférer de votre périphérique flash USB vers le TPM.") and save the file with
UTF-8 encoding so no further character corruption occurs.

Comment on lines +681 to +685
"registration.tpmTransferAvailableSteps.replaceKey": "Replace Key दबाएं।",
"registration.tpmTransferAvailableSteps.startArray": "एरे को शुरू करें।",
"registration.tpmTransferReady": "अपना TPM लाइसेंस स्थानांतरण जारी रखें।",
"registration.tpmTransferReadyDescription": "पहले दो चरण पहले ही पूरे हो चुके हैं। इस लाइसेंस को TPM में स्थानांतरित करने के लिए Replace Key दबाएं, फिर एरे को शुरू करें।",
"registration.tpmTransferReadyDescriptionArrayRunning": "USB फ्लैश बूट डिवाइस पहले ही हटाया जा चुका है। एरे को रोकें, फिर इस लाइसेंस को TPM में स्थानांतरित करने के लिए Replace Key दबाएं।",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Avoid mixed-language CTA; localize “Replace Key” in these steps.

Line 681 and Line 684–685 currently hardcode English text. Reusing the localized action phrase keeps the instruction aligned with the UI button label.

💡 Suggested fix
-  "registration.tpmTransferAvailableSteps.replaceKey": "Replace Key दबाएं।",
+  "registration.tpmTransferAvailableSteps.replaceKey": "“कुंजी बदलें” दबाएं।",
-  "registration.tpmTransferReadyDescription": "पहले दो चरण पहले ही पूरे हो चुके हैं। इस लाइसेंस को TPM में स्थानांतरित करने के लिए Replace Key दबाएं, फिर एरे को शुरू करें।",
+  "registration.tpmTransferReadyDescription": "पहले दो चरण पहले ही पूरे हो चुके हैं। इस लाइसेंस को TPM में स्थानांतरित करने के लिए “कुंजी बदलें” दबाएं, फिर एरे को शुरू करें।",
-  "registration.tpmTransferReadyDescriptionArrayRunning": "USB फ्लैश बूट डिवाइस पहले ही हटाया जा चुका है। एरे को रोकें, फिर इस लाइसेंस को TPM में स्थानांतरित करने के लिए Replace Key दबाएं।",
+  "registration.tpmTransferReadyDescriptionArrayRunning": "USB फ्लैश बूट डिवाइस पहले ही हटाया जा चुका है। एरे को रोकें, फिर इस लाइसेंस को TPM में स्थानांतरित करने के लिए “कुंजी बदलें” दबाएं।",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/locales/hi.json` around lines 681 - 685, The strings
registration.tpmTransferAvailableSteps.replaceKey,
registration.tpmTransferReadyDescription, and
registration.tpmTransferReadyDescriptionArrayRunning contain the English CTA
"Replace Key"; update the two longer description entries to reference the
localized action text instead of hardcoding English — i.e., replace the literal
"Replace Key" in registration.tpmTransferReadyDescription and
registration.tpmTransferReadyDescriptionArrayRunning with the localized
key/phrase used by registration.tpmTransferAvailableSteps.replaceKey so the CTA
is fully localized and consistent with the UI.

Comment on lines +681 to +685
"registration.tpmTransferAvailableSteps.replaceKey": "[キーを置き換える]を押します。",
"registration.tpmTransferAvailableSteps.startArray": "アレイを開始します。",
"registration.tpmTransferReady": "TPMへのライセンス転送を続行します。",
"registration.tpmTransferReadyDescription": "最初の2つの手順はすでに完了しています。[キーを置き換える]を押してこのライセンスをTPMに転送し、その後アレイを開始します。",
"registration.tpmTransferReadyDescriptionArrayRunning": "USBフラッシュ起動デバイスはすでに取り外されています。アレイを停止してから、[キーを置き換える]を押してこのライセンスをTPMに転送します。",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Use the exact localized button text for “Replace key”.

Line 681, Line 684, and Line 685 use 「キーを置き換える」, but the action label is 「キーを交換」 (Line 708). Matching the same term in guided steps will reduce UI wording drift.

Suggested patch
-  "registration.tpmTransferAvailableSteps.replaceKey": "[キーを置き換える]を押します。",
+  "registration.tpmTransferAvailableSteps.replaceKey": "[キーを交換]を押します。",
...
-  "registration.tpmTransferReadyDescription": "最初の2つの手順はすでに完了しています。[キーを置き換える]を押してこのライセンスをTPMに転送し、その後アレイを開始します。",
+  "registration.tpmTransferReadyDescription": "最初の2つの手順はすでに完了しています。[キーを交換]を押してこのライセンスをTPMに転送し、その後アレイを開始します。",
...
-  "registration.tpmTransferReadyDescriptionArrayRunning": "USBフラッシュ起動デバイスはすでに取り外されています。アレイを停止してから、[キーを置き換える]を押してこのライセンスをTPMに転送します。",
+  "registration.tpmTransferReadyDescriptionArrayRunning": "USBフラッシュ起動デバイスはすでに取り外されています。アレイを停止してから、[キーを交換]を押してこのライセンスをTPMに転送します。",
📝 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
"registration.tpmTransferAvailableSteps.replaceKey": "キーを置き換える]を押します。",
"registration.tpmTransferAvailableSteps.startArray": "アレイを開始します。",
"registration.tpmTransferReady": "TPMへのライセンス転送を続行します。",
"registration.tpmTransferReadyDescription": "最初の2つの手順はすでに完了しています。[キーを置き換える]を押してこのライセンスをTPMに転送し、その後アレイを開始します。",
"registration.tpmTransferReadyDescriptionArrayRunning": "USBフラッシュ起動デバイスはすでに取り外されています。アレイを停止してから、[キーを置き換える]を押してこのライセンスをTPMに転送します。",
"registration.tpmTransferAvailableSteps.replaceKey": "キーを交換]を押します。",
"registration.tpmTransferAvailableSteps.startArray": "アレイを開始します。",
"registration.tpmTransferReady": "TPMへのライセンス転送を続行します。",
"registration.tpmTransferReadyDescription": "最初の2つの手順はすでに完了しています。[キーを交換]を押してこのライセンスをTPMに転送し、その後アレイを開始します。",
"registration.tpmTransferReadyDescriptionArrayRunning": "USBフラッシュ起動デバイスはすでに取り外されています。アレイを停止してから、[キーを交換]を押してこのライセンスをTPMに転送します。",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/locales/ja.json` around lines 681 - 685, The three JSON entries
registration.tpmTransferAvailableSteps.replaceKey,
registration.tpmTransferReadyDescription, and
registration.tpmTransferReadyDescriptionArrayRunning use 「キーを置き換える」; change
those exact string values to use the existing localized button label 「キーを交換」 so
the guided-step text matches the action label used elsewhere
(registration.tpmTransferAvailableSteps.replaceKey should become 「[キーを交換]を押します。」
and similarly update the two description strings to contain 「[キーを交換]を押して」).

Comment on lines +678 to +685
"registration.tpmTransferAvailableSteps.stopArray": "Opriți matricea.",
"registration.tpmTransferAvailableSteps.removeFlash": "Scoateți dispozitivul de boot USB flash.",
"registration.tpmTransferAvailableSteps.refreshPage": "Reîmprospătați această pagină.",
"registration.tpmTransferAvailableSteps.replaceKey": "Apăsați pe Înlocuiți cheia.",
"registration.tpmTransferAvailableSteps.startArray": "Porniți matricea.",
"registration.tpmTransferReady": "Continuați transferul licenței dvs. TPM.",
"registration.tpmTransferReadyDescription": "Primele două etape sunt deja finalizate. Apăsați pe Înlocuiți cheia pentru a transfera această licență pe TPM, apoi porniți matricea.",
"registration.tpmTransferReadyDescriptionArrayRunning": "Dispozitivul de boot USB flash este deja scos. Opriți matricea, apoi apăsați pe Înlocuiți cheia pentru a transfera această licență pe TPM.",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Normalize TPM step wording to existing UI terminology.

In Line 678/682/684/685, the steps use „matricea” and „Înlocuiți cheia”, while existing UI in this file uses „Array-ul” (Line 714-715) and „Înlocuire Cheie” (Line 708). Aligning these terms will make instructions easier to follow.

Suggested patch
-  "registration.tpmTransferAvailableSteps.stopArray": "Opriți matricea.",
+  "registration.tpmTransferAvailableSteps.stopArray": "Opriți Array-ul.",
...
-  "registration.tpmTransferAvailableSteps.replaceKey": "Apăsați pe Înlocuiți cheia.",
+  "registration.tpmTransferAvailableSteps.replaceKey": "Apăsați pe Înlocuire Cheie.",
...
-  "registration.tpmTransferAvailableSteps.startArray": "Porniți matricea.",
+  "registration.tpmTransferAvailableSteps.startArray": "Porniți Array-ul.",
...
-  "registration.tpmTransferReadyDescription": "Primele două etape sunt deja finalizate. Apăsați pe Înlocuiți cheia pentru a transfera această licență pe TPM, apoi porniți matricea.",
+  "registration.tpmTransferReadyDescription": "Primele două etape sunt deja finalizate. Apăsați pe Înlocuire Cheie pentru a transfera această licență pe TPM, apoi porniți Array-ul.",
...
-  "registration.tpmTransferReadyDescriptionArrayRunning": "Dispozitivul de boot USB flash este deja scos. Opriți matricea, apoi apăsați pe Înlocuiți cheia pentru a transfera această licență pe TPM.",
+  "registration.tpmTransferReadyDescriptionArrayRunning": "Dispozitivul de boot USB flash este deja scos. Opriți Array-ul, apoi apăsați pe Înlocuire Cheie pentru a transfera această licență pe TPM.",
📝 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
"registration.tpmTransferAvailableSteps.stopArray": "Opriți matricea.",
"registration.tpmTransferAvailableSteps.removeFlash": "Scoateți dispozitivul de boot USB flash.",
"registration.tpmTransferAvailableSteps.refreshPage": "Reîmprospătați această pagină.",
"registration.tpmTransferAvailableSteps.replaceKey": "Apăsați pe Înlocuiți cheia.",
"registration.tpmTransferAvailableSteps.startArray": "Porniți matricea.",
"registration.tpmTransferReady": "Continuați transferul licenței dvs. TPM.",
"registration.tpmTransferReadyDescription": "Primele două etape sunt deja finalizate. Apăsați pe Înlocuiți cheia pentru a transfera această licență pe TPM, apoi porniți matricea.",
"registration.tpmTransferReadyDescriptionArrayRunning": "Dispozitivul de boot USB flash este deja scos. Opriți matricea, apoi apăsați pe Înlocuiți cheia pentru a transfera această licență pe TPM.",
"registration.tpmTransferAvailableSteps.stopArray": "Opriți Array-ul.",
"registration.tpmTransferAvailableSteps.removeFlash": "Scoateți dispozitivul de boot USB flash.",
"registration.tpmTransferAvailableSteps.refreshPage": "Reîmprospătați această pagină.",
"registration.tpmTransferAvailableSteps.replaceKey": "Apăsați pe Înlocuire Cheie.",
"registration.tpmTransferAvailableSteps.startArray": "Porniți Array-ul.",
"registration.tpmTransferReady": "Continuați transferul licenței dvs. TPM.",
"registration.tpmTransferReadyDescription": "Primele două etape sunt deja finalizate. Apăsați pe Înlocuire Cheie pentru a transfera această licență pe TPM, apoi porniți Array-ul.",
"registration.tpmTransferReadyDescriptionArrayRunning": "Dispozitivul de boot USB flash este deja scos. Opriți Array-ul, apoi apăsați pe Înlocuire Cheie pentru a transfera această licență pe TPM.",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/locales/ro.json` around lines 678 - 685, Update the Romanian strings
to match existing UI terminology: replace "matricea" with "Array-ul" in
registration.tpmTransferAvailableSteps.stopArray and
registration.tpmTransferAvailableSteps.startArray, and change "Înlocuiți cheia"
/ "Apăsați pe Înlocuiți cheia" to the existing label "Înlocuire Cheie" in
registration.tpmTransferAvailableSteps.replaceKey,
registration.tpmTransferReadyDescription, and
registration.tpmTransferReadyDescriptionArrayRunning so the wording and
capitalization are consistent with other keys like the Array-related and
key-replacement strings already used elsewhere in the file.

Comment on lines +681 to +685
"registration.tpmTransferAvailableSteps.replaceKey": "Нажмите Replace Key.",
"registration.tpmTransferAvailableSteps.startArray": "Запустите массив.",
"registration.tpmTransferReady": "Продолжите перенос лицензии в TPM.",
"registration.tpmTransferReadyDescription": "Первые два шага уже выполнены. Нажмите Replace Key, чтобы перенести эту лицензию в TPM, затем запустите массив.",
"registration.tpmTransferReadyDescriptionArrayRunning": "Загрузочное USB-устройство флеш-памяти уже извлечено. Остановите массив, затем нажмите Replace Key, чтобы перенести эту лицензию в TPM.",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Use the localized button text instead of English “Replace Key”.

Line 681 and Line 684–685 embed an English CTA inside Russian copy. Align these lines with server.actions.replaceKey to avoid UI text mismatch.

💡 Suggested fix
-  "registration.tpmTransferAvailableSteps.replaceKey": "Нажмите Replace Key.",
+  "registration.tpmTransferAvailableSteps.replaceKey": "Нажмите «Заменить ключ».",
-  "registration.tpmTransferReadyDescription": "Первые два шага уже выполнены. Нажмите Replace Key, чтобы перенести эту лицензию в TPM, затем запустите массив.",
+  "registration.tpmTransferReadyDescription": "Первые два шага уже выполнены. Нажмите «Заменить ключ», чтобы перенести эту лицензию в TPM, затем запустите массив.",
-  "registration.tpmTransferReadyDescriptionArrayRunning": "Загрузочное USB-устройство флеш-памяти уже извлечено. Остановите массив, затем нажмите Replace Key, чтобы перенести эту лицензию в TPM.",
+  "registration.tpmTransferReadyDescriptionArrayRunning": "Загрузочное USB-устройство флеш-памяти уже извлечено. Остановите массив, затем нажмите «Заменить ключ», чтобы перенести эту лицензию в TPM.",
📝 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
"registration.tpmTransferAvailableSteps.replaceKey": "Нажмите Replace Key.",
"registration.tpmTransferAvailableSteps.startArray": "Запустите массив.",
"registration.tpmTransferReady": "Продолжите перенос лицензии в TPM.",
"registration.tpmTransferReadyDescription": "Первые два шага уже выполнены. Нажмите Replace Key, чтобы перенести эту лицензию в TPM, затем запустите массив.",
"registration.tpmTransferReadyDescriptionArrayRunning": "Загрузочное USB-устройство флеш-памяти уже извлечено. Остановите массив, затем нажмите Replace Key, чтобы перенести эту лицензию в TPM.",
"registration.tpmTransferAvailableSteps.replaceKey": "Нажмите «Заменить ключ».",
"registration.tpmTransferAvailableSteps.startArray": "Запустите массив.",
"registration.tpmTransferReady": "Продолжите перенос лицензии в TPM.",
"registration.tpmTransferReadyDescription": "Первые два шага уже выполнены. Нажмите «Заменить ключ», чтобы перенести эту лицензию в TPM, затем запустите массив.",
"registration.tpmTransferReadyDescriptionArrayRunning": "Загрузочное USB-устройство флеш-памяти уже извлечено. Остановите массив, затем нажмите «Заменить ключ», чтобы перенести эту лицензию в TPM.",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/locales/ru.json` around lines 681 - 685, The Russian strings use the
literal English CTA "Replace Key" instead of the localized label; update the
values for registration.tpmTransferAvailableSteps.replaceKey,
registration.tpmTransferReadyDescription, and
registration.tpmTransferReadyDescriptionArrayRunning to interpolate or reference
the localized button text (server.actions.replaceKey) rather than the hardcoded
English phrase so the UI uses the same label as the button; locate and replace
the "Replace Key" fragments in those keys with the localized token or equivalent
placeholder that your i18n system uses for server.actions.replaceKey.

Comment on lines +681 to +685
"registration.tpmTransferAvailableSteps.replaceKey": "Tryck på Ersätt nyckel.",
"registration.tpmTransferAvailableSteps.startArray": "Starta arrayen.",
"registration.tpmTransferReady": "Fortsätt din TPM-licensöverföring.",
"registration.tpmTransferReadyDescription": "De två första stegen är redan slutförda. Tryck på Ersätt nyckel för att överföra den här licensen till TPM och starta sedan arrayen.",
"registration.tpmTransferReadyDescriptionArrayRunning": "USB-flashstartenheten är redan borttagen. Stoppa arrayen och tryck sedan på Ersätt nyckel för att överföra den här licensen till TPM.",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Align the “Replace key” wording with the existing button label.

At Line 681, Line 684, and Line 685, the text uses “Ersätt nyckel”, while the actual action label is “Byt Ut Nyckel” (Line 708). Reusing the exact label here will make the guided steps clearer.

Suggested patch
-  "registration.tpmTransferAvailableSteps.replaceKey": "Tryck på Ersätt nyckel.",
+  "registration.tpmTransferAvailableSteps.replaceKey": "Tryck på Byt Ut Nyckel.",
...
-  "registration.tpmTransferReadyDescription": "De två första stegen är redan slutförda. Tryck på Ersätt nyckel för att överföra den här licensen till TPM och starta sedan arrayen.",
+  "registration.tpmTransferReadyDescription": "De två första stegen är redan slutförda. Tryck på Byt Ut Nyckel för att överföra den här licensen till TPM och starta sedan arrayen.",
...
-  "registration.tpmTransferReadyDescriptionArrayRunning": "USB-flashstartenheten är redan borttagen. Stoppa arrayen och tryck sedan på Ersätt nyckel för att överföra den här licensen till TPM.",
+  "registration.tpmTransferReadyDescriptionArrayRunning": "USB-flashstartenheten är redan borttagen. Stoppa arrayen och tryck sedan på Byt Ut Nyckel för att överföra den här licensen till TPM.",
📝 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
"registration.tpmTransferAvailableSteps.replaceKey": "Tryck på Ersätt nyckel.",
"registration.tpmTransferAvailableSteps.startArray": "Starta arrayen.",
"registration.tpmTransferReady": "Fortsätt din TPM-licensöverföring.",
"registration.tpmTransferReadyDescription": "De två första stegen är redan slutförda. Tryck på Ersätt nyckel för att överföra den här licensen till TPM och starta sedan arrayen.",
"registration.tpmTransferReadyDescriptionArrayRunning": "USB-flashstartenheten är redan borttagen. Stoppa arrayen och tryck sedan på Ersätt nyckel för att överföra den här licensen till TPM.",
"registration.tpmTransferAvailableSteps.replaceKey": "Tryck på Byt Ut Nyckel.",
"registration.tpmTransferAvailableSteps.startArray": "Starta arrayen.",
"registration.tpmTransferReady": "Fortsätt din TPM-licensöverföring.",
"registration.tpmTransferReadyDescription": "De två första stegen är redan slutförda. Tryck på Byt Ut Nyckel för att överföra den här licensen till TPM och starta sedan arrayen.",
"registration.tpmTransferReadyDescriptionArrayRunning": "USB-flashstartenheten är redan borttagen. Stoppa arrayen och tryck sedan på Byt Ut Nyckel för att överföra den här licensen till TPM.",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/locales/sv.json` around lines 681 - 685, Replace the inconsistent
Swedish button text "Ersätt nyckel" with the exact existing label "Byt Ut
Nyckel" in the three JSON keys
registration.tpmTransferAvailableSteps.replaceKey,
registration.tpmTransferReadyDescription, and
registration.tpmTransferReadyDescriptionArrayRunning so the guided step text
matches the actual action label used elsewhere
(registration.tpmTransferAvailableSteps.replaceKey is where the button label
appears, and the two description keys reference that action).

Comment on lines +681 to +685
"registration.tpmTransferAvailableSteps.replaceKey": "Натисніть Replace Key.",
"registration.tpmTransferAvailableSteps.startArray": "Запустіть масив.",
"registration.tpmTransferReady": "Продовжте перенесення вашої ліцензії до TPM.",
"registration.tpmTransferReadyDescription": "Перші два кроки вже виконано. Натисніть Replace Key, щоб перенести цю ліцензію до TPM, а потім запустіть масив.",
"registration.tpmTransferReadyDescriptionArrayRunning": "USB-флеш-накопичувач завантаження вже вийнято. Зупиніть масив, а потім натисніть Replace Key, щоб перенести цю ліцензію до TPM.",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Align the instruction text with the localized button label.

Line 681, Line 684, and Line 685 use Replace Key, but the actual localized action label in this file is Замінити ключ (Line 708). Please keep the same term to avoid UX mismatch.

💡 Suggested text fix
-  "registration.tpmTransferAvailableSteps.replaceKey": "Натисніть Replace Key.",
+  "registration.tpmTransferAvailableSteps.replaceKey": "Натисніть «Замінити ключ».",
-  "registration.tpmTransferReadyDescription": "Перші два кроки вже виконано. Натисніть Replace Key, щоб перенести цю ліцензію до TPM, а потім запустіть масив.",
+  "registration.tpmTransferReadyDescription": "Перші два кроки вже виконано. Натисніть «Замінити ключ», щоб перенести цю ліцензію до TPM, а потім запустіть масив.",
-  "registration.tpmTransferReadyDescriptionArrayRunning": "USB-флеш-накопичувач завантаження вже вийнято. Зупиніть масив, а потім натисніть Replace Key, щоб перенести цю ліцензію до TPM.",
+  "registration.tpmTransferReadyDescriptionArrayRunning": "USB-флеш-накопичувач завантаження вже вийнято. Зупиніть масив, а потім натисніть «Замінити ключ», щоб перенести цю ліцензію до TPM.",
📝 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
"registration.tpmTransferAvailableSteps.replaceKey": "Натисніть Replace Key.",
"registration.tpmTransferAvailableSteps.startArray": "Запустіть масив.",
"registration.tpmTransferReady": "Продовжте перенесення вашої ліцензії до TPM.",
"registration.tpmTransferReadyDescription": "Перші два кроки вже виконано. Натисніть Replace Key, щоб перенести цю ліцензію до TPM, а потім запустіть масив.",
"registration.tpmTransferReadyDescriptionArrayRunning": "USB-флеш-накопичувач завантаження вже вийнято. Зупиніть масив, а потім натисніть Replace Key, щоб перенести цю ліцензію до TPM.",
"registration.tpmTransferAvailableSteps.replaceKey": "Натисніть «Замінити ключ».",
"registration.tpmTransferAvailableSteps.startArray": "Запустіть масив.",
"registration.tpmTransferReady": "Продовжте перенесення вашої ліцензії до TPM.",
"registration.tpmTransferReadyDescription": "Перші два кроки вже виконано. Натисніть «Замінити ключ», щоб перенести цю ліцензію до TPM, а потім запустіть масив.",
"registration.tpmTransferReadyDescriptionArrayRunning": "USB-флеш-накопичувач завантаження вже вийнято. Зупиніть масив, а потім натисніть «Замінити ключ», щоб перенести цю ліцензію до TPM.",
🤖 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 681 - 685, Replace the English phrase
"Replace Key" with the localized label "Замінити ключ" in the specified
translation entries to avoid UX mismatch: update the values for
"registration.tpmTransferAvailableSteps.replaceKey",
"registration.tpmTransferReadyDescription", and
"registration.tpmTransferReadyDescriptionArrayRunning" so they use "Замінити
ключ" exactly as in "registration.tpmTransferAvailableSteps.replaceKey" (the
canonical label used elsewhere). Ensure punctuation and spacing remain
consistent with surrounding sentences.

Comment on lines +678 to +682
"registration.tpmTransferAvailableSteps.stopArray": "停止数组。",
"registration.tpmTransferAvailableSteps.removeFlash": "移除 USB 闪存启动设备。",
"registration.tpmTransferAvailableSteps.refreshPage": "刷新此页面。",
"registration.tpmTransferAvailableSteps.replaceKey": "按下“替换密钥”。",
"registration.tpmTransferAvailableSteps.startArray": "启动数组。",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Use consistent “阵列” terminology in TPM transfer steps.

Line 678 and Line 682 use “数组”, while the rest of this locale uses “阵列” for Unraid array operations. Please align these two strings to avoid inconsistent UI wording.

✏️ Suggested wording fix
-  "registration.tpmTransferAvailableSteps.stopArray": "停止数组。",
+  "registration.tpmTransferAvailableSteps.stopArray": "停止阵列。",
...
-  "registration.tpmTransferAvailableSteps.startArray": "启动数组。",
+  "registration.tpmTransferAvailableSteps.startArray": "启动阵列。",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/locales/zh.json` around lines 678 - 682, Two keys in the TPM transfer
steps use the inconsistent term “数组” instead of the project-standard “阵列”;
update the values for registration.tpmTransferAvailableSteps.stopArray and
registration.tpmTransferAvailableSteps.startArray to use “阵列” (e.g., "停止阵列。" and
"启动阵列。") so all registration.tpmTransferAvailableSteps.* strings use the same
terminology.

@codecov
Copy link

codecov bot commented Mar 14, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 50.96%. Comparing base (2f3f34b) to head (02d8530).
⚠️ Report is 3 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1910      +/-   ##
==========================================
- Coverage   50.97%   50.96%   -0.01%     
==========================================
  Files        1023     1023              
  Lines       70701    70701              
  Branches     7703     7699       -4     
==========================================
- Hits        36038    36031       -7     
- Misses      34539    34546       +7     
  Partials      124      124              

☔ 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.

@elibosley elibosley merged commit c3e9767 into main Mar 14, 2026
12 of 13 checks passed
@elibosley elibosley deleted the l10n_main branch March 14, 2026 20:47
@coderabbitai coderabbitai bot mentioned this pull request Mar 15, 2026
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