Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughAdded wallet fund validation i18n keys, a new public "my-favorites-widget" localization block, bookmark/favorite hint strings, and image-server preference labels across multiple locale JSON files; all edits are additive text-only changes to locale files (no code 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)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
Note
Due to the large number of review comments, Critical, Major severity comments were prioritized as inline comments.
🟡 Minor comments (20)
apps/web/src/features/i18n/locales/pl-PL.json-2853-2853 (1)
2853-2853:⚠️ Potential issue | 🟡 MinorSpace before period in
price-requiredacross 7 locale files.The string contains
{{minimum}} .(space before.) in 7 locale files, which will render as "…minimum X . We will…" instead of "…minimum X. We will…" in the UI.Affected files:
- apps/web/src/features/i18n/locales/pl-PL.json
- apps/web/src/features/i18n/locales/uk-UA.json
- apps/web/src/features/i18n/locales/ru-RU.json
- apps/web/src/features/i18n/locales/pt-PT.json
- apps/web/src/features/i18n/locales/it-IT.json
- apps/web/src/features/i18n/locales/es-ES.json
- apps/web/src/features/i18n/locales/fr-FR.json
✏️ Fix pattern
Remove the space before the period in each file at line 2853:
- "price-required": "... minimum {{minimum}} . We will..." + "price-required": "... minimum {{minimum}}. We will..."🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/web/src/features/i18n/locales/pl-PL.json` at line 2853, The translation string for the key "price-required" contains an extra space before the period ("{{minimum}} .") — remove the space so it reads "{{minimum}}." in the "price-required" value; apply the same fix to the corresponding "price-required" entries in the other six locale files (uk-UA, ru-RU, pt-PT, it-IT, es-ES, fr-FR) to ensure consistent punctuation across locales.apps/web/src/features/i18n/locales/pt-PT.json-2853-2853 (1)
2853-2853:⚠️ Potential issue | 🟡 MinorFix stray space before period in
price-required.The value for
price-requiredcontains an extraneous space before the terminal period —{{minimum}} .— which will render verbatim in the UI as a typographical artifact.✏️ Proposed fix
- "price-required": "Os dados de preço são necessários para validar que seu saldo atende ao mínimo {{minimum}} . Vamos continuar verificando seu saldo, por favor tente novamente em instantes." + "price-required": "Os dados de preço são necessários para validar que seu saldo atende ao mínimo {{minimum}}. Vamos continuar verificando seu saldo, por favor tente novamente em instantes."🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/web/src/features/i18n/locales/pt-PT.json` at line 2853, The translation string for key "price-required" has an extra space before the final period ("{{minimum}} ."); update the value for price-required to remove the stray space so it reads "{{minimum}}." ensuring the placeholder and punctuation are adjacent; locate the "price-required" entry in the locales JSON and edit the string accordingly.apps/web/src/features/i18n/locales/uk-UA.json-2848-2848 (1)
2848-2848:⚠️ Potential issue | 🟡 MinorMissing comma before "щоб" in
minimum-requiredStandard Ukrainian grammar requires a comma before the conjunction "щоб" when it introduces a subordinate clause. The current text "необхідно щоб перевірити" is missing it.
✏️ Proposed fix
- "minimum-required": "Принаймні {{minimum}} необхідно щоб перевірити.", + "minimum-required": "Принаймні {{minimum}} необхідно, щоб перевірити.",🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/web/src/features/i18n/locales/uk-UA.json` at line 2848, The translation string for the key "minimum-required" is missing a comma before the conjunction "щоб"; update the value of "minimum-required" (in the uk-UA locale) to insert a comma before "щоб" so it reads with correct Ukrainian punctuation (e.g., "Принаймні {{minimum}}, необхідно щоб перевірити.").apps/web/src/features/i18n/locales/uk-UA.json-2853-2853 (1)
2853-2853:⚠️ Potential issue | 🟡 MinorExtra space before period in
price-required
{{minimum}} .produces a visible space before the period when the placeholder is substituted (e.g.,"...мінімум 50 USD . Ми продовжуємо...").✏️ Proposed fix
- "price-required": "Для підтвердження вартості вашого балансу потрібне мінімум {{minimum}} . Ми продовжуємо перевіряти ваш баланс, будь ласка, спробуйте ще раз." + "price-required": "Для підтвердження вартості вашого балансу потрібне мінімум {{minimum}}. Ми продовжуємо перевіряти ваш баланс, будь ласка, спробуйте ще раз."🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/web/src/features/i18n/locales/uk-UA.json` at line 2853, The translation string for the key "price-required" contains an extra space before the period after the placeholder ("{{minimum}} .") causing a visible gap when substituted; open the locales file and update the value for "price-required" to remove the space so it reads "{{minimum}}." (i.e., "Для підтвердження вартості вашого балансу потрібне мінімум {{minimum}}. Ми продовжуємо перевіряти ваш баланс, будь ласка, спробуйте ще раз."), then save and run any l10n validation/format checks to ensure no other spacing issues remain.apps/web/src/features/i18n/locales/ru-RU.json-2853-2853 (1)
2853-2853:⚠️ Potential issue | 🟡 MinorFix stray space before period in
price-requiredkey across all affected locale filesThe
price-requiredvalue contains a stray space between the placeholder and the period:{{minimum}} .instead of{{minimum}}.This pattern appears in at least 7 locale files (uk-UA, pt-PT, pl-PL, fr-FR, es-ES, it-IT, and ru-RU), all at line 2853, and will render as visible whitespace in the UI. The English source does not have this space.- "price-required": "Данные о цене должны быть проверены, что ваш баланс соответствует минимуму {{minimum}} . Мы проверим ваш баланс, пожалуйста, повторите попытку через некоторое время." + "price-required": "Данные о цене должны быть проверены, что ваш баланс соответствует минимуму {{minimum}}. Мы проверим ваш баланс, пожалуйста, повторите попытку через некоторое время."Update all affected locale files to remove the stray space.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/web/src/features/i18n/locales/ru-RU.json` at line 2853, The translation value for the key "price-required" contains a stray space before the period ("{{minimum}} .") in multiple locale files (ru-RU, uk-UA, pt-PT, pl-PL, fr-FR, es-ES, it-IT); update each affected locale's "price-required" string to remove the space so it reads "{{minimum}}." ensuring the placeholder and punctuation are adjacent and match the English source.apps/web/src/features/i18n/locales/th-TH.json-2848-2853 (1)
2848-2853:⚠️ Potential issue | 🟡 MinorSix new keys are English source-language placeholders — Thai translations still pending.
All six new strings are identical to the English source. This is consistent with the existing file, which is almost entirely untranslated (the only Thai string in the file is
navbar.chats). Thai users will see English text for these wallet-validation messages until a translator provides Thai equivalents via Crowdin.Template variable usage looks correct:
{{minimum}}appears in bothminimum-requiredandprice-required, and{{value}}inestimated-value, matching the interpolation patterns used elsewhere in the file.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/web/src/features/i18n/locales/th-TH.json` around lines 2848 - 2853, Translate the six English placeholder values into Thai for the keys "minimum-required", "estimated-value", "checking-balance", "balance-fetch-error", "price-unavailable", and "price-required", preserving all template variables (keep {{minimum}} and {{value}} exactly as-is) and any literal characters like the dollar sign in "estimated-value"; update the JSON values with the Thai translations while keeping punctuation and formatting consistent with the surrounding file.apps/web/src/features/i18n/locales/zh-CN.json-2848-2849 (1)
2848-2849:⚠️ Potential issue | 🟡 MinorThree of the six new keys are left untranslated in the zh-CN locale.
minimum-required(Line 2848),estimated-value(Line 2849), andprice-required(Line 2853) contain English source strings, while the other three keys added in the same block are correctly translated to Simplified Chinese. Users on thezh-CNlocale will see English for these validation messages.🌐 Suggested translations (machine-assisted, please verify with a native speaker)
- "minimum-required": "At least {{minimum}} required to validate.", + "minimum-required": "至少需要 {{minimum}} 才能验证。", - "estimated-value": "Estimated value: ${{value}}", + "estimated-value": "估计价值:${{value}}", "checking-balance": "正在检查您的钱包余额...", "balance-fetch-error": "无法刷新您的钱包余额。我们将自动重试一次。", "price-unavailable": "价格数据暂时不可用。请稍后再试。", - "price-required": "Price data is required to validate that your balance meets the {{minimum}} minimum. We will keep checking your balance, please retry in a moment." + "price-required": "需要价格数据来验证您的余额是否满足 {{minimum}} 的最低要求。我们将持续检查您的余额,请稍后重试。"Also applies to: 2853-2853
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/web/src/features/i18n/locales/zh-CN.json` around lines 2848 - 2849, The zh-CN locale file has three keys left in English: "minimum-required", "estimated-value", and "price-required" inside apps/web/src/features/i18n/locales/zh-CN.json; replace their English source strings with appropriate Simplified Chinese translations (verify wording with a native speaker) so all six entries in that block are localized consistently—update the values for the keys "minimum-required", "estimated-value", and "price-required" to Chinese equivalents and save the JSON ensuring valid syntax.apps/web/src/features/i18n/locales/hi-IN.json-2848-2853 (1)
2848-2853:⚠️ Potential issue | 🟡 MinorAll six new strings are untranslated (English) in the hi-IN locale.
The entire
signup-walletssection (lines 2812–2872) remains in English. While this is consistent with Crowdin's typical workflow of pushing source keys before translators fill them in, it is worth confirming whether translations for this section are being tracked in Crowdin or are intentionally deferred.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/web/src/features/i18n/locales/hi-IN.json` around lines 2848 - 2853, The new hi-IN locale entries under the signup-wallets section are still in English—translate the keys "minimum-required", "estimated-value", "checking-balance", "balance-fetch-error", "price-unavailable", and "price-required" into Hindi and replace the English strings in apps/web/src/features/i18n/locales/hi-IN.json; additionally confirm that this signup-wallets key group is tracked in Crowdin (or mark it as intentionally deferred) so translators receive these new strings for future updates.apps/web/src/features/i18n/locales/uz-UZ.json-2853-2853 (1)
2853-2853:⚠️ Potential issue | 🟡 Minor
price-requiredgives contradictory retry instructions.The message tells the user both that the system will retry automatically ("We will keep checking your balance") and that they should retry manually ("please retry in a moment"). These are contradictory calls to action. This is present in the source English string and will propagate identically to all 23 locale files. Consider picking one: either the system polls silently, or the user is prompted to act.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/web/src/features/i18n/locales/uz-UZ.json` at line 2853, The "price-required" translation contains contradictory instructions (saying the system will keep checking the balance and also asking the user to retry); decide which behavior you want and update the source English string "price-required" accordingly (e.g., either remove "We will keep checking your balance" if requiring manual retry, or remove "please retry in a moment" if the system polls automatically) so the chosen message is consistent and will propagate to all locales; update the key "price-required" in the source locale and ensure translators are informed if wording changes.apps/web/src/features/i18n/locales/uz-UZ.json-2847-2853 (1)
2847-2853:⚠️ Potential issue | 🟡 MinorNew keys are unseeded/untranslated in uz-UZ — expected from Crowdin workflow.
All six new keys (
minimum-required,estimated-value,checking-balance,balance-fetch-error,price-unavailable,price-required) retain the English source strings. This is the normal Crowdin flow (source strings are seeded first; contributors translate afterwards). No action needed from the PR author, but the Uzbek translations will need to be scheduled.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/web/src/features/i18n/locales/uz-UZ.json` around lines 2847 - 2853, The new i18n keys minimum-required, estimated-value, checking-balance, balance-fetch-error, price-unavailable, and price-required in uz-UZ.json are still in English because they were seeded from the source and need Crowdin translation; do not modify these strings in the PR, instead ensure they remain seeded, add them to your Crowdin import workflow (or notify the localization manager) so translators can provide Uzbek translations and then pull the updated locale file once translations are finished.apps/web/src/features/i18n/locales/nl-NL.json-2853-2853 (1)
2853-2853:⚠️ Potential issue | 🟡 Minor
price-requiredinconsistently uses "balans" while the rest of the block uses "saldo".Every other key in the
validate-fundsblock (line 2850: "portemonnee saldo") and throughout the wallet section uses "saldo" for balance. The phrase "We zullen uw balans blijven controleren" breaks that consistency.✏️ Suggested fix
- "price-required": "Prijsgegevens zijn vereist om te valideren dat uw saldo voldoet aan het {{minimum}} minimum. We zullen uw balans blijven controleren, probeer het later opnieuw." + "price-required": "Prijsgegevens zijn vereist om te valideren dat uw saldo voldoet aan het {{minimum}} minimum. We zullen uw saldo blijven controleren, probeer het later opnieuw."🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/web/src/features/i18n/locales/nl-NL.json` at line 2853, Update the "price-required" translation under the validate-funds block so it consistently uses "saldo" instead of "balans": locate the JSON key "price-required" in the nl-NL locale and change the phrase "We zullen uw balans blijven controleren" to "We zullen uw saldo blijven controleren" to match the rest of the wallet translations.apps/web/src/features/i18n/locales/nl-NL.json-2850-2850 (1)
2850-2850:⚠️ Potential issue | 🟡 Minor
checking-balancereads as an imperative instruction, not a status message."Controleer uw portemonnee saldo..." translates to "Check your wallet balance..." (imperative mood), which is more suitable for a call-to-action than a loading/status indicator. A more natural Dutch phrasing for an in-progress status would be:
✏️ Suggested phrasing
- "checking-balance": "Controleer uw portemonnee saldo...", + "checking-balance": "Portemonnee saldo wordt gecontroleerd...",🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/web/src/features/i18n/locales/nl-NL.json` at line 2850, The translation for the key "checking-balance" is currently in imperative mood ("Controleer uw portemonnee saldo..."); update the value in nl-NL.json to a proper in-progress status phrasing (e.g., use a passive/progressive form like "Portemonnee-saldo wordt gecontroleerd..." or "Het saldo van uw portemonnee wordt gecontroleerd...") so it reads as a loading/status message rather than a call-to-action.apps/web/src/features/i18n/locales/it-IT.json-2853-2853 (1)
2853-2853:⚠️ Potential issue | 🟡 MinorRemove the spurious space before the period after
{{minimum}}.
{{minimum}} .will render as e.g."...il minimo 0.001 ."in the UI — the space before.is a typographical artefact.🔤 Proposed fix
- "price-required": "I dati di prezzo sono necessari per convalidare che il tuo saldo soddisfa il minimo {{minimum}} . Continueremo a controllare il tuo saldo, riprova tra un attimo." + "price-required": "I dati di prezzo sono necessari per convalidare che il tuo saldo soddisfa il minimo {{minimum}}. Continueremo a controllare il tuo saldo, riprova tra un attimo."🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/web/src/features/i18n/locales/it-IT.json` at line 2853, In the "price-required" translation string update the text to remove the extra space before the period after the interpolation token `{{minimum}}`; find the "price-required" key in the it-IT locale and change `"I dati di prezzo sono necessari per convalidare che il tuo saldo soddisfa il minimo {{minimum}} . Continueremo a controllare il tuo saldo, riprova tra un attimo."` to remove the space so the period directly follows `{{minimum}}`.apps/web/src/features/i18n/locales/ja-JP.json-2848-2848 (1)
2848-2848:⚠️ Potential issue | 🟡 Minor
minimum-required: "検証する" implies a verification action rather than a possession requirement."少なくとも {{minimum}} を検証する必要があります。" reads as "At least {{minimum}} needs to be verified," whereas the intent appears to be "At least {{minimum}} is required." Consider:
-"minimum-required": "少なくとも {{minimum}} を検証する必要があります。", +"minimum-required": "少なくとも {{minimum}} が必要です。",🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/web/src/features/i18n/locales/ja-JP.json` at line 2848, The translation for the "minimum-required" key currently uses "検証する" (to verify) which is incorrect; update the value for the "minimum-required" JSON key so it conveys "required" instead of "verify" (for example, change to "少なくとも {{minimum}} が必要です。" or an equivalent natural phrasing) so the message reads "At least {{minimum}} is required."apps/web/src/features/i18n/locales/ja-JP.json-2853-2853 (1)
2853-2853:⚠️ Potential issue | 🟡 Minor
price-required: "{{minimum}} 最小値" is slightly redundant —{{minimum}}already carries the minimum value."残高が {{minimum}} 最小値を満たしていること" inserts the variable directly before the noun "最小値" (minimum value), making it read as "minimum minimum." Reordering improves naturalness:
-"price-required": "残高が {{minimum}} 最小値を満たしていることを確認するには価格データが必要です。しばらくしてから再度お試しください。" +"price-required": "残高が最小値 {{minimum}} を満たしていることを確認するには価格データが必要です。しばらくしてから再度お試しください。"🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/web/src/features/i18n/locales/ja-JP.json` at line 2853, The translation for the key price-required contains a redundant "最小値" after the {{minimum}} interpolation; update the string for price-required so it does not repeat "最小値" (e.g., place {{minimum}} before a comparator like "以上" or remove the extra noun and reorder to a natural Japanese sentence) while keeping the rest of the message about needing price data and retrying later.apps/web/src/features/i18n/locales/es-ES.json-2853-2853 (1)
2853-2853:⚠️ Potential issue | 🟡 MinorExtra whitespace before the period after
{{minimum}}
"{{minimum}} ."contains a spurious space before the period, which will render visibly in the UI.✏️ Proposed fix
- "price-required": "Los datos de precios son necesarios para validar que tu saldo alcanza el mínimo {{minimum}} . Seguiremos comprobando tu saldo, por favor vuelve a intentarlo en un momento." + "price-required": "Los datos de precios son necesarios para validar que tu saldo alcanza el mínimo {{minimum}}. Seguiremos comprobando tu saldo, por favor vuelve a intentarlo en un momento."🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/web/src/features/i18n/locales/es-ES.json` at line 2853, The translation value for the "price-required" key contains a stray space before the period after the interpolation token ("{{minimum}} ."); edit the "price-required" string to remove the extra space so it reads "...{{minimum}}." ensuring punctuation sits directly after the placeholder without altering the rest of the Spanish text.apps/web/src/features/i18n/locales/es-ES.json-2850-2853 (1)
2850-2853:⚠️ Potential issue | 🟡 MinorFormal/informal pronoun register inconsistency within
validate-fundsAll existing strings in the same section use the formal usted register ("su wallet", "de su cartera", "Vuelva a intentarlo"), but two of the new strings switch to the informal tú register:
Key Register Evidence checking-balanceFormal ✅ "de su cartera" balance-fetch-errorInformal ❌ "de tu billetera", "intentándolo" price-unavailableFormal ✅ "Vuelva a intentarlo" price-requiredInformal ❌ "tu saldo", "vuelve a intentarlo"
balance-fetch-errorandprice-requiredshould be made consistent with the rest of the section. Additionally,balance-fetch-erroruses "billetera" while the rest of the section uses "cartera" — aligning the terminology would further improve consistency.✏️ Proposed fix
- "balance-fetch-error": "No se pudo actualizar el saldo de tu billetera. Seguiremos intentándolo automáticamente.", + "balance-fetch-error": "No se pudo actualizar el saldo de su cartera. Seguiremos intentándolo automáticamente.", - "price-required": "Los datos de precios son necesarios para validar que tu saldo alcanza el mínimo {{minimum}} . Seguiremos comprobando tu saldo, por favor vuelve a intentarlo en un momento." + "price-required": "Los datos de precios son necesarios para validar que su saldo alcanza el mínimo {{minimum}}. Seguiremos comprobando su saldo, por favor vuelva a intentarlo en un momento."🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/web/src/features/i18n/locales/es-ES.json` around lines 2850 - 2853, Change the two inconsistent strings to the formal "usted" register and align terminology to "cartera": update "balance-fetch-error" to use "su cartera" instead of "tu billetera" and keep the formal phrasing (e.g., "No se pudo actualizar el saldo de su cartera. Seguiremos intentándolo automáticamente."); update "price-required" to formal pronouns and verbs and match punctuation (e.g., "Los datos de precios son necesarios para validar que su saldo alcanza el mínimo {{minimum}}. Seguiremos comprobando su saldo; por favor vuelva a intentarlo en un momento."). Refer to keys checking-balance, balance-fetch-error, price-unavailable, and price-required when making the edits.apps/web/src/features/i18n/locales/ur-PK.json-2848-2853 (1)
2848-2853:⚠️ Potential issue | 🟡 MinorNew keys are untranslated (English fallback) in the Urdu locale.
All six new values are English source text rather than Urdu. The rest of
ur-PK.jsonfollows the same pattern (predominantly English with only scattered Urdu strings), so this is consistent with the file's current state and reflects standard Crowdin behaviour when translators haven't yet supplied strings. No action is strictly required here, but it's worth tracking in Crowdin to ensure Urdu translations are provided before these new wallet-validation messages surface to Urdu-speaking users.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/web/src/features/i18n/locales/ur-PK.json` around lines 2848 - 2853, The new localization keys ("minimum-required", "estimated-value", "checking-balance", "balance-fetch-error", "price-unavailable", "price-required") in ur-PK.json are still English; replace the English strings with proper Urdu translations for these keys and push them to the localization workflow (or add them to Crowdin) so Urdu users get localized wallet-validation messages; ensure the keys remain unchanged and only their values are updated, and verify after update that the locale falls back correctly when any translation is missing.apps/web/src/features/i18n/locales/fr-FR.json-2853-2853 (1)
2853-2853:⚠️ Potential issue | 🟡 MinorStray space before the period in
price-required.
{{minimum}} .has an extra space before the period. It should be{{minimum}}..✏️ Proposed fix
- "price-required": "Les données de prix sont requises pour valider que votre solde correspond au minimum {{minimum}} . Nous continuerons à vérifier votre solde, veuillez réessayer dans un instant." + "price-required": "Les données de prix sont requises pour valider que votre solde correspond au minimum {{minimum}}. Nous continuerons à vérifier votre solde, veuillez réessayer dans un instant."🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/web/src/features/i18n/locales/fr-FR.json` at line 2853, The translation value for key "price-required" contains an extra space before the period after the interpolation token; update the string for "price-required" to remove the stray space so it reads "...{{minimum}}." (i.e., ensure there is no space between the closing interpolation braces and the period).apps/web/src/features/i18n/locales/id-ID.json-2848-2853 (1)
2848-2853:⚠️ Potential issue | 🟡 MinorNew keys are untranslated (English fallback) for the
id-IDlocale.All six newly added strings are in English rather than Bahasa Indonesia. Indonesian-locale users will see English copy for these wallet balance validation messages during the signup flow. Note that the entire pre-existing
validate-fundsblock was already untranslated, so this is a continuation of an existing gap rather than a regression introduced by this PR.Consider queuing these strings in Crowdin for Indonesian translation before or shortly after this merges.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/web/src/features/i18n/locales/id-ID.json` around lines 2848 - 2853, The new i18n keys in apps/web/src/features/i18n/locales/id-ID.json (minimum-required, estimated-value, checking-balance, balance-fetch-error, price-unavailable, price-required) are still in English; replace them with Bahasa Indonesia translations or add them to the Crowdin queue for translation so id-ID no longer falls back to English; update the JSON values for each key in the validate-funds block (or add Crowdin metadata/PR to enqueue these keys) and ensure the key names remain unchanged so existing lookups (e.g., "minimum-required", "estimated-value", "checking-balance", "balance-fetch-error", "price-unavailable", "price-required") continue to resolve correctly.
🧹 Nitpick comments (5)
apps/web/src/features/i18n/locales/pl-PL.json (1)
2849-2849: Hardcoded$(USD) currency symbol inestimated-value.
"Szacowana wartość: ${{value}}"— if{{value}}is always a pre-formatted USD string (e.g."12.34"), the hardcoded$is fine. However, if the calling code ever passes a value already containing a currency symbol, or if future requirements support non-USD denominations, this will produce double symbols or incorrect formatting.Confirm that
{{value}}is consistently a bare numeric string and that the currency symbol is intentionally owned by the translation layer. If the symbol may vary, move it into the interpolated value.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/web/src/features/i18n/locales/pl-PL.json` at line 2849, The translation key "estimated-value" currently hardcodes a USD "$" ("Szacowana wartość: ${{value}}") which can cause double symbols or wrong currencies; update the translation and callers so the translation does not assume a currency: either remove the hardcoded "$" to "Szacowana wartość: {{value}}" and ensure all places that call i18n.t('estimated-value', { value }) pass a fully formatted currency string, or change the key to accept a separate currency placeholder (e.g. "Szacowana wartość: {{currency}}{{value}}") and update all callers to pass both currency and numeric value; locate usages by searching for the "estimated-value" key in the codebase and update callers accordingly to keep formatting consistent.apps/web/src/features/i18n/locales/sr-CS.json (1)
2848-2853: New strings are untranslated (English fallbacks) in the Serbian localeAll six added values are English. While this matches the existing pattern in this file (many keys remain untranslated), these strings are user-facing messages in the signup wallet-validation flow — a critical path — so Serbian translations would improve the user experience for sr-CS users.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/web/src/features/i18n/locales/sr-CS.json` around lines 2848 - 2853, The new i18n entries for sr-CS are still in English—translate the user-facing wallet-validation strings into Serbian by replacing the English values for keys "minimum-required", "estimated-value", "checking-balance", "balance-fetch-error", "price-unavailable", and "price-required" with accurate Serbian translations, preserving interpolation tokens like {{minimum}} and ${{value}} and keeping punctuation and placeholders unchanged so the signup wallet-validation flow displays localized messages.apps/web/src/features/i18n/locales/fr-FR.json (1)
2849-2849: Hardcoded$currency symbol inestimated-value.
"Valeur estimée : ${{value}}"embeds the dollar sign directly. If the estimated value can ever represent a non-USD currency, the symbol should be a separate interpolation variable (e.g.{{currency}}{{value}}). If USD is always intended here, this is fine as-is.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/web/src/features/i18n/locales/fr-FR.json` at line 2849, The "estimated-value" locale string currently hardcodes a dollar sign ("Valeur estimée : ${{value}}"); change it to use a separate interpolation token (e.g. "Valeur estimée : {{currency}}{{value}}") so the currency symbol is not fixed, and update any code that renders the "estimated-value" key (functions/components that call the i18n key) to pass a currency variable (e.g., currency: "$" or "€") along with value when formatting; leave as-is only if USD is guaranteed.apps/web/src/features/i18n/locales/lt-LT.json (1)
2849-2849: Hardcoded$currency symbol is intentional but worth documenting.
"Estimated value: ${{value}}"hardcodes a literal$(USD) symbol. In the component,{{value}}is always a bare USD number formatted as a string (e.g.,"12.50"), calculated fromtokenAmount.mul(priceUsd).toFixed(2), wherepriceUsdis the USD price for the selected currency. This pattern works correctly across BTC, ETH, SOL, BNB, TRX, TON, and APT wallets because the component consistently converts the wallet balance to its USD equivalent before formatting.While the implementation is sound, the i18n string itself makes no explicit guarantee about currency. Consider adding a code comment to the component clarifying that the value is always USD, or (optionally) make the currency explicit in the template by moving it into the interpolation (e.g.,
"Estimated value: {{currencyValue}}"with the component passing"$12.50").🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/web/src/features/i18n/locales/lt-LT.json` at line 2849, The locale string "estimated-value" currently hardcodes a "$" symbol; update the component that uses this key (the place where tokenAmount.mul(priceUsd).toFixed(2) is computed) to either (a) add a brief code comment stating that the interpolated value is always a USD-formatted string, or (b) make the i18n safer by moving the currency into the interpolation (change the usage to pass a fully formatted currency like "$12.50" as currencyValue and update the "estimated-value" key to "Estimated value: {{currencyValue}}"); reference the "estimated-value" key and the tokenAmount.mul(priceUsd).toFixed(2) expression when making the change.apps/web/src/features/i18n/locales/pcm-NG.json (1)
2848-2853: New strings are in standard English rather than Nigerian Pidgin Creole.The rest of the
signup-walletssection is already in standard English (consistent), so this is not a blocker. However, if the intention is for the pcm-NG locale to eventually carry Pidgin translations for the signup wallet flow, these six strings will need revisiting.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/web/src/features/i18n/locales/pcm-NG.json` around lines 2848 - 2853, Strings under the pcm-NG locale for the signup-wallets flow are currently in standard English; update the six keys ("minimum-required", "estimated-value", "checking-balance", "balance-fetch-error", "price-unavailable", "price-required") in apps/web/src/features/i18n/locales/pcm-NG.json to their Nigerian Pidgin Creole equivalents so the pcm-NG locale is consistent with the rest of the file; locate the keys in the signup-wallets section and replace the English text with appropriate Pidgin translations while preserving interpolation tokens like {{minimum}} and {{value}}.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@apps/web/src/features/i18n/locales/yo-NG.json`:
- Line 2849: The "estimated-value" translation currently hardcodes a "$" prefix
which breaks currency localization; update the "estimated-value" key to remove
the hardcoded "$" and instead accept a fully-formatted currency string (pass
formattedValue e.g. from usdValue.toFixed(2) replaced by Intl.NumberFormat) or
add a separate placeholder like {{currency}} and pass both {{currency}} and
{{value}}; locate the "estimated-value" entry in the locale files and the code
that supplies usdValue.toFixed(2) (search for usdValue.toFixed or the caller
that injects {{value}}) and change the caller to provide a locale-aware
formatted currency string (or provide currency separately) so the translation no
longer contains a hardcoded "$".
---
Nitpick comments:
In `@apps/web/src/features/i18n/locales/fr-FR.json`:
- Line 2849: The "estimated-value" locale string currently hardcodes a dollar
sign ("Valeur estimée : ${{value}}"); change it to use a separate interpolation
token (e.g. "Valeur estimée : {{currency}}{{value}}") so the currency symbol is
not fixed, and update any code that renders the "estimated-value" key
(functions/components that call the i18n key) to pass a currency variable (e.g.,
currency: "$" or "€") along with value when formatting; leave as-is only if USD
is guaranteed.
In `@apps/web/src/features/i18n/locales/lt-LT.json`:
- Line 2849: The locale string "estimated-value" currently hardcodes a "$"
symbol; update the component that uses this key (the place where
tokenAmount.mul(priceUsd).toFixed(2) is computed) to either (a) add a brief code
comment stating that the interpolated value is always a USD-formatted string, or
(b) make the i18n safer by moving the currency into the interpolation (change
the usage to pass a fully formatted currency like "$12.50" as currencyValue and
update the "estimated-value" key to "Estimated value: {{currencyValue}}");
reference the "estimated-value" key and the tokenAmount.mul(priceUsd).toFixed(2)
expression when making the change.
In `@apps/web/src/features/i18n/locales/pcm-NG.json`:
- Around line 2848-2853: Strings under the pcm-NG locale for the signup-wallets
flow are currently in standard English; update the six keys ("minimum-required",
"estimated-value", "checking-balance", "balance-fetch-error",
"price-unavailable", "price-required") in
apps/web/src/features/i18n/locales/pcm-NG.json to their Nigerian Pidgin Creole
equivalents so the pcm-NG locale is consistent with the rest of the file; locate
the keys in the signup-wallets section and replace the English text with
appropriate Pidgin translations while preserving interpolation tokens like
{{minimum}} and {{value}}.
In `@apps/web/src/features/i18n/locales/pl-PL.json`:
- Line 2849: The translation key "estimated-value" currently hardcodes a USD "$"
("Szacowana wartość: ${{value}}") which can cause double symbols or wrong
currencies; update the translation and callers so the translation does not
assume a currency: either remove the hardcoded "$" to "Szacowana wartość:
{{value}}" and ensure all places that call i18n.t('estimated-value', { value })
pass a fully formatted currency string, or change the key to accept a separate
currency placeholder (e.g. "Szacowana wartość: {{currency}}{{value}}") and
update all callers to pass both currency and numeric value; locate usages by
searching for the "estimated-value" key in the codebase and update callers
accordingly to keep formatting consistent.
In `@apps/web/src/features/i18n/locales/sr-CS.json`:
- Around line 2848-2853: The new i18n entries for sr-CS are still in
English—translate the user-facing wallet-validation strings into Serbian by
replacing the English values for keys "minimum-required", "estimated-value",
"checking-balance", "balance-fetch-error", "price-unavailable", and
"price-required" with accurate Serbian translations, preserving interpolation
tokens like {{minimum}} and ${{value}} and keeping punctuation and placeholders
unchanged so the signup wallet-validation flow displays localized messages.
| "address-copied": "Address copied" | ||
| "address-copied": "Address copied", | ||
| "minimum-required": "At least {{minimum}} required to validate.", | ||
| "estimated-value": "Estimated value: ${{value}}", |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
rg -n "estimated-value|estimatedValue|estimated_value" --type ts --type tsx -A 3 -B 1Repository: ecency/vision-next
Length of output: 89
🏁 Script executed:
rg -n "estimated-value|estimatedValue|estimated_value" -A 3 -B 1 --type tsRepository: ecency/vision-next
Length of output: 3934
🏁 Script executed:
rg -n "estimated-value" apps/web/src/features/i18n/locales/yo-NG.json -B 2 -A 2Repository: ecency/vision-next
Length of output: 425
🏁 Script executed:
rg -n "estimated-value" apps/web/src/features/i18n/locales/ -B 0 -A 0 --type jsonRepository: ecency/vision-next
Length of output: 2629
Hardcoded $ prefix in estimated-value affects all 24 locales and prevents proper currency localization.
The template passes a raw number (e.g., usdValue.toFixed(2) = "12.50"), which produces output like "Estimated value: $12.50". However, this hardcoded USD symbol is duplicated across all locale files—including locales for countries using different currencies: Nigerian Naira (yo-NG), Pakistani Rupee (ur-PK), Turkish Lira (tr-TR), Thai Baht (th-TH), Polish Zloty (pl-PL), and 19 others.
This forces all users globally to see a USD symbol regardless of locale, breaking currency localization entirely.
Pass a fully-formatted currency string as {{value}} (e.g., "₦12.50" for Nigeria) and remove the hardcoded $, or use a separate {{currency}} placeholder to keep the template locale-aware.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@apps/web/src/features/i18n/locales/yo-NG.json` at line 2849, The
"estimated-value" translation currently hardcodes a "$" prefix which breaks
currency localization; update the "estimated-value" key to remove the hardcoded
"$" and instead accept a fully-formatted currency string (pass formattedValue
e.g. from usdValue.toFixed(2) replaced by Intl.NumberFormat) or add a separate
placeholder like {{currency}} and pass both {{currency}} and {{value}}; locate
the "estimated-value" entry in the locale files and the code that supplies
usdValue.toFixed(2) (search for usdValue.toFixed or the caller that injects
{{value}}) and change the caller to provide a locale-aware formatted currency
string (or provide currency separately) so the translation no longer contains a
hardcoded "$".
Summary by CodeRabbit
New Features
UX Copy