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)
Tip Issue Planner is now in beta. Read the docs and try it out! Share your feedback on Discord. 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 "$".
There was a problem hiding this comment.
Actionable comments posted: 8
🧹 Nitpick comments (2)
apps/web/src/features/i18n/locales/bg-BG.json (1)
2067-2067: New strings are English fallbacks — Bulgarian translations pendingAll newly added keys (
bookmarks.hint,favorites.hint, themy-favorites-widgetblock, and the sixsignup-wallets.validate-fundskeys) carry English source text rather than Bulgarian translations. The existing file already ships many untranslated English strings, so this is consistent with the current Crowdin workflow, but Bulgarian translations for these keys should be provided in a follow-up Crowdin cycle.Also applies to: 2071-2071, 2627-2632, 2855-2861
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/web/src/features/i18n/locales/bg-BG.json` at line 2067, Replace the English fallback strings in the Bulgarian locale with proper Bulgarian translations: update the keys bookmarks.hint and favorites.hint, translate the entire my-favorites-widget block, and provide Bulgarian text for the six signup-wallets.validate-funds keys (and the other occurrences noted around lines 2071, 2627–2632, 2855–2861) so the bg-BG.json contains Bulgarian strings instead of English fallbacks; locate these keys by name in the file and substitute the English values with the corresponding Bulgarian translations from your localization source or Crowdin export.apps/web/src/features/i18n/locales/de-DE.json (1)
2629-2629: Nitpick: hyphenated compound noun — preferLieblingsautoren
"Lieblings-Autoren"uses a discretionary hyphen in a standard German compound noun. German orthography writes compound nouns as a single word:"Lieblingsautoren".✏️ Suggested fix
- "empty": "Sie haben noch keine Lieblings-Autoren hinzugefügt", + "empty": "Sie haben noch keine Lieblingsautoren hinzugefügt",🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/web/src/features/i18n/locales/de-DE.json` at line 2629, The localized string for key "empty" contains a hyphenated compound "Lieblings-Autoren"; update the value for the "empty" key in de-DE.json from "Sie haben noch keine Lieblings-Autoren hinzugefügt" to the correctly compounded German form "Sie haben noch keine Lieblingsautoren hinzugefügt" so the noun follows standard orthography.
🤖 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/ac-ace.json`:
- Line 2857: The "estimated-value" translation currently embeds a hardcoded "$"
(key "estimated-value"), which prevents locale- or context-specific currency
symbols; update the translation string to accept a currency template variable
(e.g., change the value for "estimated-value" to use a {{currency}} placeholder
instead of "$"), then update every call site that renders this key to pass a
currency parameter (e.g., currency: "$" or the locale/context-appropriate
symbol). Apply the same change across all locale files and ensure any helper
that formats or composes the translation (the code paths that call the i18n
lookup for "estimated-value") forwards the new currency variable.
In `@apps/web/src/features/i18n/locales/pl-PL.json`:
- Line 2861: The "price-required" locale entry contains an extra space before
the period ("{{minimum}} .") causing wrong rendering; remove the space so the
token and period are adjacent ("{{minimum}}.") for the "price-required" key in
all affected locale files (pl-PL, uk-UA, ru-RU, pt-PT, it-IT, fr-FR) to produce
"...minimum X. Text..." instead of "...minimum X . Text...".
In `@apps/web/src/features/i18n/locales/pt-PT.json`:
- Line 2861: The translation value for the key "price-required" contains an
extra space before the period after the interpolation token; update the
"price-required" string to remove the stray space so it reads "...atende ao
mínimo {{minimum}}. Vamos continuar..." (i.e., eliminate the space before the
full stop) while keeping the interpolation token intact.
- Line 2067: The translation key "hint" currently uses "conteúdo favorito",
which conflicts with the separate Favoritos feature; update the string value for
"hint" to use "marcador" or "conteúdo marcado" (to match the section title
"Marcadores" and the existing "bookmark-str") so terminology is consistent
across "hint" and "bookmark-str" in the pt-PT locale.
In `@apps/web/src/features/i18n/locales/th-TH.json`:
- Line 2856: Update the translation value for the key "minimum-required" to
include the missing auxiliary verb so the sentence reads correctly (e.g., change
"At least {{minimum}} required to validate." to "At least {{minimum}} is
required to validate."). Locate the "minimum-required" entry in the locale JSON
and replace its string accordingly.
- Around line 2627-2632: Update the translation key
validate-funds.minimum-required to include the missing verb so the sentence is
complete; replace "At least {{minimum}} required to validate." with a
grammatically correct string such as "At least {{minimum}} is required to
validate." (or similar wording), ensuring the change is made for the
validate-funds.minimum-required key in the th-TH JSON.
In `@apps/web/src/features/i18n/locales/ur-PK.json`:
- Line 2857: The "estimated-value" translation contains a hardcoded "$" which
can misrepresent non-USD chains; update the "estimated-value" entry (key:
"estimated-value") to use a currency placeholder (e.g., replace the literal "$"
with a placeholder like {{currency}} so the UI can inject the correct
symbol/code), or if output is guaranteed to be USD, change the text to
explicitly state "USD" (e.g., "Estimated value (USD): {{value}}"); ensure the
placeholder name matches the rendering code that supplies the currency symbol or
code.
In `@apps/web/src/features/i18n/locales/zh-CN.json`:
- Around line 2856-2857: Translate the three remaining keys in the zh-CN locale:
replace the English values for "minimum-required", "estimated-value", and
"price-required" with appropriate Chinese strings, preserving interpolation
placeholders ({{minimum}} and ${{value}}) and punctuation; ensure the
translations match the style of neighboring keys like "address-copied" and
"checking-balance" and keep JSON formatting intact so the locale file remains
valid.
---
Duplicate comments:
In `@apps/web/src/features/i18n/locales/yo-NG.json`:
- Around line 2855-2861: The "estimated-value" translation currently hardcodes a
USD "$" prefix ("Estimated value: ${{value}}"); update the "estimated-value"
entry to use a currency placeholder or locale-aware formatting (e.g., replace
the literal "$" with a token like {{currency}} or use an i18n number/currency
formatter placeholder) so the currency symbol is not hardcoded and can be
provided per locale at runtime; ensure the placeholder name matches the app's
i18n usage (e.g., {{currency}} or {{currencySymbol}}) and update any code that
supplies "value" to also supply the corresponding currency token if needed.
---
Nitpick comments:
In `@apps/web/src/features/i18n/locales/bg-BG.json`:
- Line 2067: Replace the English fallback strings in the Bulgarian locale with
proper Bulgarian translations: update the keys bookmarks.hint and
favorites.hint, translate the entire my-favorites-widget block, and provide
Bulgarian text for the six signup-wallets.validate-funds keys (and the other
occurrences noted around lines 2071, 2627–2632, 2855–2861) so the bg-BG.json
contains Bulgarian strings instead of English fallbacks; locate these keys by
name in the file and substitute the English values with the corresponding
Bulgarian translations from your localization source or Crowdin export.
In `@apps/web/src/features/i18n/locales/de-DE.json`:
- Line 2629: The localized string for key "empty" contains a hyphenated compound
"Lieblings-Autoren"; update the value for the "empty" key in de-DE.json from
"Sie haben noch keine Lieblings-Autoren hinzugefügt" to the correctly compounded
German form "Sie haben noch keine Lieblingsautoren hinzugefügt" so the noun
follows standard orthography.
| "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:
#!/bin/bash
# Check the estimated-value pattern across locale files
echo "=== Checking ac-ace.json for estimated-value ==="
rg -n "estimated-value" apps/web/src/features/i18n/locales/ac-ace.json -A1 -B1
echo ""
echo "=== Checking en.json (English baseline) for estimated-value ==="
rg -n "estimated-value" apps/web/src/features/i18n/locales/en.json -A1 -B1
echo ""
echo "=== Checking a few other locale files for consistency ==="
for file in apps/web/src/features/i18n/locales/de.json apps/web/src/features/i18n/locales/fr.json apps/web/src/features/i18n/locales/es.json; do
if [ -f "$file" ]; then
echo "--- $(basename "$file") ---"
rg -n "estimated-value" "$file" -A1 -B1 || echo "(not found)"
fi
doneRepository: ecency/vision-next
Length of output: 538
🏁 Script executed:
#!/bin/bash
# List all locale files to see what exists
echo "=== Available locale files ==="
ls -la apps/web/src/features/i18n/locales/ | head -20
echo ""
echo "=== Searching for estimated-value across all JSON files ==="
rg "estimated-value" apps/web/src/features/i18n/locales/ --type json -l
echo ""
echo "=== Show all estimated-value occurrences with context ==="
rg "estimated-value" apps/web/src/features/i18n/locales/ --type json -B1 -A1Repository: ecency/vision-next
Length of output: 10470
Hardcoded $ currency symbol in estimated-value is not i18n-friendly, but this is a systemic pattern across all locale files.
"Estimated value: ${{value}}" bakes the USD symbol into every translation. Verification confirms this pattern exists in all 24+ locale files (including en-US.json, the source), even in fully translated locales (e.g., German, Russian, Japanese). If the app ever needs to render different currency symbols per locale or per wallet context, all locale files would require updates.
Consider passing the currency symbol as a template variable instead:
💡 Suggested approach
-"estimated-value": "Estimated value: ${{value}}",
+"estimated-value": "Estimated value: {{currency}}{{value}}",Then at the call site, pass currency: "$" (or the locale/context-appropriate symbol) alongside value. This requires refactoring the template variable handling across all locales and call sites.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@apps/web/src/features/i18n/locales/ac-ace.json` at line 2857, The
"estimated-value" translation currently embeds a hardcoded "$" (key
"estimated-value"), which prevents locale- or context-specific currency symbols;
update the translation string to accept a currency template variable (e.g.,
change the value for "estimated-value" to use a {{currency}} placeholder instead
of "$"), then update every call site that renders this key to pass a currency
parameter (e.g., currency: "$" or the locale/context-appropriate symbol). Apply
the same change across all locale files and ensure any helper that formats or
composes the translation (the code paths that call the i18n lookup for
"estimated-value") forwards the new currency variable.
| "checking-balance": "Sprawdzanie salda portfela...", | ||
| "balance-fetch-error": "Nie można odświeżyć salda Twojego portfela. Będziemy próbować ponownie automatycznie.", | ||
| "price-unavailable": "Dane cenowe są chwilowo niedostępne. Spróbuj ponownie za chwilę.", | ||
| "price-required": "Dane cenowe są wymagane do potwierdzenia, że Twoje saldo spełnia minimum {{minimum}} . Będziemy nadal sprawdzać Twoje saldo, spróbuj ponownie za chwilę." |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Check whether the same space-before-period pattern exists in other locale files
# for the same key, to determine if this is systemic or isolated to pl-PL.
rg --type json -n '"price-required"' apps/web/src/features/i18n/locales/Repository: ecency/vision-next
Length of output: 5508
Fix space before period in price-required across multiple locale files. The spacing pattern . (space before period) appears in at least 6 locale files and will render as "…minimum X . Text…" instead of "…minimum X. Text…":
- pl-PL.json
- uk-UA.json
- ru-RU.json
- pt-PT.json
- it-IT.json
- fr-FR.json
Remove the space between {{minimum}} and the period in all affected files:
-"price-required": "...minimum {{minimum}} . ..."
+"price-required": "...minimum {{minimum}}. ..."📝 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.
| "price-required": "Dane cenowe są wymagane do potwierdzenia, że Twoje saldo spełnia minimum {{minimum}} . Będziemy nadal sprawdzać Twoje saldo, spróbuj ponownie za chwilę." | |
| "price-required": "Dane cenowe są wymagane do potwierdzenia, że Twoje saldo spełnia minimum {{minimum}}. Będziemy nadal sprawdzać Twoje saldo, spróbuj ponownie za chwilę." |
🤖 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 2861, The
"price-required" locale entry contains an extra space before the period
("{{minimum}} .") causing wrong rendering; remove the space so the token and
period are adjacent ("{{minimum}}.") for the "price-required" key in all
affected locale files (pl-PL, uk-UA, ru-RU, pt-PT, it-IT, fr-FR) to produce
"...minimum X. Text..." instead of "...minimum X . Text...".
| "bookmarks": { | ||
| "title": "Marcadores" | ||
| "title": "Marcadores", | ||
| "hint": "Você receberá notificações quando um conteúdo favorito receber uma resposta." |
There was a problem hiding this comment.
Terminology mismatch: "conteúdo favorito" vs. "Marcadores"
The bookmarks/hint text reads "quando um conteúdo favorito receber uma resposta", borrowing the vocabulary of the separate Favoritos feature. The section title ("Marcadores") and the notification string (line 1816, "bookmark-str": "respondeu a conteúdo adicionado aos favoritos") both exist in the same file, making the boundary between features already blurry in pt-PT. Using "conteúdo favorito" here risks further confusing the two features for users.
Consider aligning with "marcador" or "conteúdo marcado":
✏️ Suggested wording
- "hint": "Você receberá notificações quando um conteúdo favorito receber uma resposta."
+ "hint": "Você receberá notificações quando um conteúdo marcado receber uma resposta."📝 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.
| "hint": "Você receberá notificações quando um conteúdo favorito receber uma resposta." | |
| "hint": "Você receberá notificações quando um conteúdo marcado receber uma resposta." |
🤖 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 2067, The translation
key "hint" currently uses "conteúdo favorito", which conflicts with the separate
Favoritos feature; update the string value for "hint" to use "marcador" or
"conteúdo marcado" (to match the section title "Marcadores" and the existing
"bookmark-str") so terminology is consistent across "hint" and "bookmark-str" in
the pt-PT locale.
| "checking-balance": "Verificando o saldo da sua carteira...", | ||
| "balance-fetch-error": "Não foi possível atualizar seu saldo da carteira. Nós continuaremos tentando novamente.", | ||
| "price-unavailable": "Os dados de preços estão temporariamente indisponíveis. 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." |
There was a problem hiding this comment.
Stray space before period in price-required
"…atende ao mínimo {{minimum}} . Vamos…" has an extra space between the interpolated value and the full stop.
✏️ 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."📝 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.
| "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 2861, The translation
value for the key "price-required" contains an extra space before the period
after the interpolation token; update the "price-required" string to remove the
stray space so it reads "...atende ao mínimo {{minimum}}. Vamos continuar..."
(i.e., eliminate the space before the full stop) while keeping the interpolation
token intact.
| "my-favorites-widget": { | ||
| "title": "My Favorites", | ||
| "empty": "You haven't added any favorite authors yet", | ||
| "empty-cta": "Discover authors", | ||
| "view-all": "View all" | ||
| }, |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Check my-favorites-widget structure in all locale files
fd -e json . apps/web/src/features/i18n/locales/ --exec rg -B2 -A5 "my-favorites-widget" {} + 2>/dev/null | head -150Repository: ecency/vision-next
Length of output: 10904
🏁 Script executed:
#!/bin/bash
# Find and display the validate-funds section in th-TH.json
rg -A 10 '"validate-funds"' apps/web/src/features/i18n/locales/th-TH.jsonRepository: ecency/vision-next
Length of output: 799
Fix missing verb in validate-funds.minimum-required.
The string "At least {{minimum}} required to validate." is grammatically incomplete—it should read "At least {{minimum}} is required to validate." or similar.
The rest of the changes (bookmarks/favorites hints and other validate-funds keys) look good.
🤖 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 2627 - 2632,
Update the translation key validate-funds.minimum-required to include the
missing verb so the sentence is complete; replace "At least {{minimum}} required
to validate." with a grammatically correct string such as "At least {{minimum}}
is required to validate." (or similar wording), ensuring the change is made for
the validate-funds.minimum-required key in the th-TH JSON.
| "validation-success": "We have validated your wallet", | ||
| "address-copied": "Address copied" | ||
| "address-copied": "Address copied", | ||
| "minimum-required": "At least {{minimum}} required to validate.", |
There was a problem hiding this comment.
Minor grammar nit in minimum-required: missing auxiliary verb "is".
"At least {{minimum}} required to validate." reads as an incomplete sentence. Consider:
✏️ Suggested fix
- "minimum-required": "At least {{minimum}} required to validate.",
+ "minimum-required": "At least {{minimum}} is required to validate.",📝 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.
| "minimum-required": "At least {{minimum}} required to validate.", | |
| "minimum-required": "At least {{minimum}} is required to validate.", |
🤖 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` at line 2856, Update the
translation value for the key "minimum-required" to include the missing
auxiliary verb so the sentence reads correctly (e.g., change "At least
{{minimum}} required to validate." to "At least {{minimum}} is required to
validate."). Locate the "minimum-required" entry in the locale JSON and replace
its string accordingly.
| "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.
Hardcoded $ currency symbol in estimated-value
The string "Estimated value: ${{value}}" embeds a literal $ (USD). The validate-funds flow supports multiple chains (BTC, ETH, SOL, BNB, TRX, TON, APT — per the external wallets label), so the displayed estimated value might be in USD or another denomination. A hardcoded $ could mislead users if the value is in a non-USD unit, and — since this string originates from the Crowdin source — the same literal will be pushed to every locale.
Consider replacing the $ with a currency placeholder, e.g.:
-"estimated-value": "Estimated value: ${{value}}",
+"estimated-value": "Estimated value: {{currency}}{{value}}",or, if USD is always the intended denomination, make that explicit:
-"estimated-value": "Estimated value: ${{value}}",
+"estimated-value": "Estimated value: ${{value}} USD",📝 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.
| "estimated-value": "Estimated value: ${{value}}", | |
| "estimated-value": "Estimated value: ${{value}} USD", |
🤖 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` at line 2857, The
"estimated-value" translation contains a hardcoded "$" which can misrepresent
non-USD chains; update the "estimated-value" entry (key: "estimated-value") to
use a currency placeholder (e.g., replace the literal "$" with a placeholder
like {{currency}} so the UI can inject the correct symbol/code), or if output is
guaranteed to be USD, change the text to explicitly state "USD" (e.g.,
"Estimated value (USD): {{value}}"); ensure the placeholder name matches the
rendering code that supplies the currency symbol or code.
| "minimum-required": "At least {{minimum}} required to validate.", | ||
| "estimated-value": "Estimated value: ${{value}}", |
There was a problem hiding this comment.
Three new validate-funds strings are left untranslated in this zh-CN locale file.
minimum-required (Line 2856), estimated-value (Line 2857), and price-required (Line 2861) retain their raw English values, while the four other keys added in the same block (address-copied, checking-balance, balance-fetch-error, price-unavailable) are properly translated. Chinese-speaking users will see English text in the wallet validation flow.
🌐 Suggested Chinese translations
- "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: 2861-2861
🤖 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 2856 - 2857,
Translate the three remaining keys in the zh-CN locale: replace the English
values for "minimum-required", "estimated-value", and "price-required" with
appropriate Chinese strings, preserving interpolation placeholders ({{minimum}}
and ${{value}}) and punctuation; ensure the translations match the style of
neighboring keys like "address-copied" and "checking-balance" and keep JSON
formatting intact so the locale file remains valid.
There was a problem hiding this comment.
Actionable comments posted: 12
♻️ Duplicate comments (7)
apps/web/src/features/i18n/locales/pt-PT.json (2)
2864-2864:⚠️ Potential issue | 🟡 MinorStray space before the period in
price-required.
"…atende ao mínimo {{minimum}} . Vamos…"has an extra space between the interpolated value and the full stop.✏️ 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 2864, The translation value for the "price-required" key contains an extra space before the period after the interpolation ({{minimum}} .); remove the stray space so the sentence reads "...atende ao mínimo {{minimum}}. Vamos continuar..." by updating the string value for "price-required" in the pt-PT.json file.
2069-2070:⚠️ Potential issue | 🟡 Minor
bookmarks/hintstill uses "conteúdo favorito" instead of "conteúdo marcado".The hint reads "quando um conteúdo favorito receber uma resposta", borrowing vocabulary from the separate Favoritos feature. The section title (
"Marcadores") and the existingbookmark-strnotification string (line 1849) both use the "marcado/marcador" vocabulary. Using "favorito" here further blurs the distinction between the two features for pt-PT users.✏️ Suggested fix
- "hint": "Você receberá notificações quando um conteúdo favorito receber uma resposta." + "hint": "Você receberá notificações quando um conteúdo marcado receber uma resposta."🤖 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` around lines 2069 - 2070, The translation for the key "bookmarks/hint" uses "conteúdo favorito" but should match the "Marcadores" vocabulary; update the string value for bookmarks/hint to replace "conteúdo favorito" with "conteúdo marcado" (or a natural pt-PT phrasing using "marcado/marcadores") so it aligns with the section title "Marcadores" and the existing "bookmark-str" wording; locate and change the "bookmarks/hint" entry in pt-PT.json to the corrected phrase.apps/web/src/features/i18n/locales/th-TH.json (1)
2859-2859:⚠️ Potential issue | 🟡 MinorStill unfixed: missing auxiliary verb in
minimum-required.
"At least {{minimum}} required to validate."reads as an incomplete sentence. This was flagged in the two previous review rounds and remains unaddressed.- "minimum-required": "At least {{minimum}} required to validate.", + "minimum-required": "At least {{minimum}} is required to validate.",🤖 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` at line 2859, The translation string for the key "minimum-required" is missing an auxiliary verb and reads incomplete; update the value of the "minimum-required" key in apps/web/src/features/i18n/locales/th-TH.json from "At least {{minimum}} required to validate." to a complete sentence such as "At least {{minimum}} are required to validate." so the message is grammatically correct and uses the existing {{minimum}} interpolation.apps/web/src/features/i18n/locales/zh-CN.json (1)
2859-2860:⚠️ Potential issue | 🟡 MinorThree
validate-fundsstrings are still untranslated.
minimum-required(Line 2859),estimated-value(Line 2860), andprice-required(Line 2864) continue to hold raw English values. Chinese-speaking users will see English text during the wallet validation flow. The other four new keys in this block are correctly translated.🌐 Suggested Chinese translations
- "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: 2864-2864
🤖 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 2859 - 2860, Three i18n keys remain in English: "minimum-required", "estimated-value", and "price-required"; replace their English values with Chinese translations so the wallet validation flow is localized (for example: "minimum-required": "至少需要 {{minimum}} 以通过验证。", "estimated-value": "估算价值:${{value}}", "price-required": "需要价格。"). Update the corresponding JSON entries for these keys in the same locales block where the other new keys were added, preserving interpolation tokens ({{minimum}}, ${{value}}) and JSON syntax.apps/web/src/features/i18n/locales/ac-ace.json (1)
2860-2860: Hardcoded$inestimated-value— same systemic i18n issue raised in a prior review.
"Estimated value: ${{value}}"bakes the USD symbol into the string. The previous review comment on this file already recommends replacing$with a{{currency}}template variable and passing the symbol from the call site.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/web/src/features/i18n/locales/ac-ace.json` at line 2860, The translation string "estimated-value" currently hardcodes the USD symbol; change the value to use a currency placeholder (e.g., "Estimated value: {{currency}}{{value}}") and update all call sites that render this key to supply a currency variable instead of relying on a hardcoded "$" (search for usages of the "estimated-value" key to add the currency argument where the translation is invoked).apps/web/src/features/i18n/locales/pl-PL.json (1)
2864-2864:⚠️ Potential issue | 🟡 Minor
price-requiredstill contains a spurious space before the period.The value
{{minimum}} .renders as "…minimum X . Będziemy…" instead of "…minimum X. Będziemy…". This issue was raised in a previous review and remains unresolved.🐛 Proposed fix
-"price-required": "Dane cenowe są wymagane do potwierdzenia, że Twoje saldo spełnia minimum {{minimum}} . Będziemy nadal sprawdzać Twoje saldo, spróbuj ponownie za chwilę." +"price-required": "Dane cenowe są wymagane do potwierdzenia, że Twoje saldo spełnia minimum {{minimum}}. Będziemy nadal sprawdzać Twoje saldo, spróbuj ponownie za chwilę."🤖 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 2864, The "price-required" translation string in locales/pl-PL.json contains an extra space before the period after the {{minimum}} placeholder; update the value for the "price-required" key to remove the space so the placeholder is directly followed by the period (i.e., change "{{minimum}} ." to "{{minimum}}."), and scan the same string to ensure no other stray whitespace around placeholders or punctuation remains.apps/web/src/features/i18n/locales/yo-NG.json (1)
2860-2860:⚠️ Potential issue | 🟠 MajorHardcoded
$inestimated-valuebreaks currency localization for non-USD locales.
"Estimated value: ${{value}}"embeds a USD symbol that will show for all locales including yo-NG (Nigerian Naira ₦). This was raised in a previous review — the fix is to either pass a fully-formatted currency string as{{value}}(removing the$) or add a separate{{currency}}placeholder.🤖 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 2860, The translation key "estimated-value" currently hardcodes a USD sign ("Estimated value: ${{value}}"), breaking localization; update the "estimated-value" entry to remove the hardcoded "$" and either expect a fully formatted currency string in {{value}} (e.g., "Estimated value: {{value}}") or add a separate currency placeholder (e.g., "Estimated value: {{currency}}{{value}}") and ensure callers pass the formatted value or both currency and numeric value accordingly; update any calls that use the "estimated-value" key (where the translation key is referenced) to supply the properly formatted currency string or both placeholders.
🧹 Nitpick comments (6)
apps/web/src/features/i18n/locales/nl-NL.json (1)
1194-1195: Capitalization inconsistency in parenthetical labels.
"image-server-default"uses lowercase(standaard)while"image-server-hiveblog"uses uppercase(Alternatief). These two sibling keys should follow a consistent pattern.✏️ Suggested fix
- "image-server-hiveblog": "Hive afbeeldingen (Alternatief)" + "image-server-hiveblog": "Hive afbeeldingen (alternatief)"🤖 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` around lines 1194 - 1195, The two i18n keys "image-server-default" and "image-server-hiveblog" have inconsistent capitalization in their parenthetical labels; update the value for "image-server-hiveblog" so the parenthetical uses the same lowercase style as "image-server-default" (change "(Alternatief)" to "(alternatief)") to keep sibling translations consistent.apps/web/src/features/i18n/locales/uz-UZ.json (1)
2858-2864: Consider using a locale-aware currency symbol inestimated-value.
"Estimated value: ${{value}}"hardcodes the USD$symbol directly in the string. If the displayed value is always a USD equivalent this is fine, but if it could represent other currencies, the symbol should either be injected as part of{{value}}or via a separate interpolation variable (e.g.,{{symbol}}) to keep locale files currency-agnostic.All seven new keys are otherwise correctly structured, interpolation variables (
{{minimum}},{{value}}) are consistent across the block, and JSON validity is intact.🤖 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 2858 - 2864, The "estimated-value" locale string hardcodes the USD "$" symbol; update the "estimated-value" key to be currency-agnostic (e.g., change "Estimated value: ${{value}}" to use a separate interpolation like "Estimated value: {{symbol}}{{value}}" or just "Estimated value: {{value}}" and inject the symbol into the value at render time) and then update the code paths that call the "estimated-value" message (where you pass the current locale/value) to supply the currency symbol via the new {{symbol}} parameter or include it in the formatted value; ensure you modify the "estimated-value" entry and corresponding usage sites (message lookup/formatting code) so interpolation remains consistent.apps/web/src/features/i18n/locales/tr-TR.json (1)
2860-2860: Optional: consider externalizing the$currency symbol inestimated-value.
"Estimated value: ${{value}}"hardcodes the USD symbol directly in the string. If the displayed value is always in USD this is fine, and it matches the existing pattern elsewhere in the file (e.g.,wallet.hive-dollars-description). However, if this amount could represent other currencies in future, a separate{{currency}}interpolation variable would be safer for downstream locale handling.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/web/src/features/i18n/locales/tr-TR.json` at line 2860, The "estimated-value" translation currently hardcodes the USD symbol ("Estimated value: ${{value}}"); update the string to use a separate interpolation variable for currency (e.g., use "{{currency}}") and adjust any callers that format or supply this translation to pass the currency symbol or code alongside the value so the message becomes "Estimated value: {{currency}}{{value}}" (or similar) and supports non‑USD currencies; reference the "estimated-value" key and update usages that call the translation to provide the new {{currency}} parameter.apps/web/src/features/i18n/locales/hi-IN.json (1)
2858-2864: Consider parameterising the currency symbol inestimated-value.
"estimated-value": "Estimated value: ${{value}}"hardcodes the USD$symbol. While the validate-funds context is USD-denominated today, future multi-currency support would require changing every locale file. A separate{{currency}}interpolation variable (or moving the symbol into the consuming component) would keep the string reusable.Placeholder names (
{{minimum}}inminimum-requiredandprice-required,{{value}}inestimated-value) are internally consistent, which is good.💡 Suggested string revision
- "estimated-value": "Estimated value: ${{value}}", + "estimated-value": "Estimated value: {{currency}}{{value}}",The consuming component would then pass
currency="$"(or the appropriate symbol) as an interpolation variable, keeping the string locale-agnostic.🤖 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 2858 - 2864, The "estimated-value" locale string currently hardcodes the USD "$" symbol which prevents multi-currency reuse; change the "estimated-value" key to include a currency interpolation (e.g., use {{currency}} and {{value}} instead of a hardcoded $) and update any consuming code that calls the i18n lookup (the component that renders validate-funds / estimated value) to pass currency="$" (or the appropriate symbol) as an interpolation variable; also leave existing placeholders ({{minimum}} in "minimum-required" and "price-required") as-is since they are correct.apps/web/src/features/i18n/locales/bg-BG.json (1)
2858-2865: Consider decoupling the USD$symbol from theestimated-valuestring.
"Estimated value: ${{value}}"hardcodes the dollar sign inside the i18n string. If the displayed denomination is always USD this is fine, but if the value can vary by currency or if currency formatting ever needs to be locale-driven, all ~21 locale files will need individual edits. A small structural alternative would be to pass the formatted currency string (including its symbol) as the interpolation variable, e.g."Estimated value: {{value}}"wherevalueis already formatted as"$1.23"by the calling code.The
{{minimum}}placeholder is used consistently across bothminimum-requiredandprice-required— no issues there.💡 Suggested string change (same in all locale files)
- "estimated-value": "Estimated value: ${{value}}", + "estimated-value": "Estimated value: {{value}}",The calling code would then format
valueas a currency string (e.g."$1.23") before passing it to the translation function.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/web/src/features/i18n/locales/bg-BG.json` around lines 2858 - 2865, The "estimated-value" translation currently hardcodes the USD symbol ("Estimated value: ${{value}}"); change the locale entry for the key "estimated-value" to remove the "$" so it becomes "Estimated value: {{value}}", and update the calling code that uses this key (where translations are invoked) to pass a pre-formatted currency string (e.g. "$1.23" or locale-aware formatted value) as the interpolation value; apply the same change across all locale files to keep them consistent.apps/web/src/features/i18n/locales/it-IT.json (1)
1195-1195: Translation inconsistency: brand name and parenthetical casing
"Immagini di alveare (alternative)"has two minor issues:
Hiveis a proper blockchain brand; the rest of the file leaves it untranslated (e.g. "Hive Power", "Hive Keychain"). Consider keeping it as "Immagini di Hive (alternativa)".- The parenthetical is lowercase
(alternative)while the sibling entry on line 1194 uses(Predefinito)— inconsistent capitalisation within the same UI control.✏️ Proposed fix
- "image-server-hiveblog": "Immagini di alveare (alternative)" + "image-server-hiveblog": "Immagini di Hive (Alternativa)"🤖 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 1195, Update the "image-server-hiveblog" translation to keep the brand name "Hive" and match sibling capitalization: change the value for the key "image-server-hiveblog" from "Immagini di alveare (alternative)" to "Immagini di Hive (Alternativa)"; ensure the parenthetical uses the same title-case style as the sibling "(Predefinito)".
🤖 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/de-DE.json`:
- Line 2860: The translation for the "estimated-value" key hardcodes a "$"
symbol which breaks currency flexibility; update the value to remove the
hardcoded symbol and either rely on the interpolated {{value}} to include the
formatted currency or add a new placeholder {{currency}} (e.g., "Geschätzter
Wert: {{value}}" or "Geschätzter Wert: {{currency}}{{value}}") so currency
formatting is handled where values are produced rather than inside the locale
string.
In `@apps/web/src/features/i18n/locales/es-ES.json`:
- Line 1194: The translation value for the key "image-server-default" contains a
misspelled brand name ("ecuencia"); update the string value to use the correct
brand "Ecency" — replace "Imágenes de ecuencia (por defecto)" with "Imágenes de
Ecency (por defecto)" in the locale entry for "image-server-default".
- Around line 2861-2864: The new Spanish strings use an informal register but
the surrounding messages use formal usted; update the keys "balance-fetch-error"
and "price-required" to the formal register and match existing vocabulary:
change "No se pudo actualizar el saldo de tu billetera. Seguiremos intentándolo
automáticamente." to a formal phrasing using "su" and "cartera" (e.g., "No se
pudo actualizar el saldo de su cartera. Seguiremos intentándolo
automáticamente.") and change "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." to formal grammar/verbs and "su"
(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."). Ensure consistency with existing keys like
"checking-balance" and other surrounding messages.
In `@apps/web/src/features/i18n/locales/fr-FR.json`:
- Line 2864: The translation string for the key "price-required" contains an
extra space before the period after the interpolation ( "{{minimum}} ." );
update the value for "price-required" to remove the stray space so it reads
"...{{minimum}}." ensuring no space exists between the interpolation token and
the trailing full stop.
- Line 1194: The translation value for the key "image-server-default" contains a
misspelled and lowercased brand name ("d'écence"); update the string value to
use the correct capitalization and spelling "d'Ecency" so it reads "Images
d'Ecency (par défaut)"—modify the JSON entry for "image-server-default" to
replace the incorrect value with the corrected one.
In `@apps/web/src/features/i18n/locales/id-ID.json`:
- Line 2860: The i18n entry "estimated-value" currently hardcodes a USD "$"
symbol; remove the "$" from the locale string (change to something like
"Estimated value: {{value}}") and update the rendering code that currently
passes usdValue.toFixed(2) to instead format the numeric value with
Intl.NumberFormat (or the app's currency formatting utility) using the user's
locale and appropriate currency code (not always "USD"); ensure the key
"estimated-value" is used when injecting the already formatted string so no raw
"$" is inserted and adapt callers that pass usdValue.toFixed(2) to pass the
numeric value or a preformatted localized currency string.
In `@apps/web/src/features/i18n/locales/it-IT.json`:
- Line 2864: The translation string for the key "price-required" contains an
extra space before the period ("{{minimum}} ."); remove that stray space so the
sentence reads "{{minimum}}. Continueremo..." — update the value for the
"price-required" key in the it-IT locale (the string associated with
"price-required") to eliminate the space before the full stop.
In `@apps/web/src/features/i18n/locales/ja-JP.json`:
- Around line 1192-1195: The value for the "image-server-default" key has a
missing space before the parenthetical—update the string for
"image-server-default" to include a space before "(デフォルト)" so it matches the
spacing style used in "image-server-hiveblog" (i.e., "Ecency images (デフォルト)").
In `@apps/web/src/features/i18n/locales/ru-RU.json`:
- Line 2864: The string value for the "price-required" key contains an extra
space before the period ("{{minimum}} ."); remove that space so it becomes
"{{minimum}}." in apps/web/src/features/i18n/locales/ru-RU.json (key
"price-required"), and then search for the same "price-required" key across
other locale files and fix any matching whitespace artifacts to keep
translations consistent.
In `@apps/web/src/features/i18n/locales/sr-CS.json`:
- Around line 2630-2635: The translation for my-favorites-widget.title is left
as the English fallback "My Favorites", causing inconsistency with the existing
favorites.title ("Omiljeno"); update my-favorites-widget.title to match the
established Serbian term (e.g., "Omiljeno") so both keys
(my-favorites-widget.title and favorites.title) use the same localized string
and keep terminology consistent for sr-CS.
In `@apps/web/src/features/i18n/locales/uk-UA.json`:
- Line 1194: The translation for the key "image-server-default" is wrong:
replace the current value "Зображення точностей (за замовчуванням)" with a
meaningful Ukrainian label that reflects the default image server (for example
"Сервер зображень Ecency (за замовчуванням)" or another UI-consistent
descriptive phrase). Update the value for the "image-server-default" key in the
locales file so it accurately conveys "Default image server" in Ukrainian.
- Line 2864: Update the "price-required" localization string: change "потрібне"
to "потрібно" and remove the extra space before the sentence-final period so the
interpolated value {{minimum}} is directly followed by the period (i.e.,
"...мінімум {{minimum}}. Ми продовжуємо...") to correct grammar and punctuation.
---
Duplicate comments:
In `@apps/web/src/features/i18n/locales/ac-ace.json`:
- Line 2860: The translation string "estimated-value" currently hardcodes the
USD symbol; change the value to use a currency placeholder (e.g., "Estimated
value: {{currency}}{{value}}") and update all call sites that render this key to
supply a currency variable instead of relying on a hardcoded "$" (search for
usages of the "estimated-value" key to add the currency argument where the
translation is invoked).
In `@apps/web/src/features/i18n/locales/pl-PL.json`:
- Line 2864: The "price-required" translation string in locales/pl-PL.json
contains an extra space before the period after the {{minimum}} placeholder;
update the value for the "price-required" key to remove the space so the
placeholder is directly followed by the period (i.e., change "{{minimum}} ." to
"{{minimum}}."), and scan the same string to ensure no other stray whitespace
around placeholders or punctuation remains.
In `@apps/web/src/features/i18n/locales/pt-PT.json`:
- Line 2864: The translation value for the "price-required" key contains an
extra space before the period after the interpolation ({{minimum}} .); remove
the stray space so the sentence reads "...atende ao mínimo {{minimum}}. Vamos
continuar..." by updating the string value for "price-required" in the
pt-PT.json file.
- Around line 2069-2070: The translation for the key "bookmarks/hint" uses
"conteúdo favorito" but should match the "Marcadores" vocabulary; update the
string value for bookmarks/hint to replace "conteúdo favorito" with "conteúdo
marcado" (or a natural pt-PT phrasing using "marcado/marcadores") so it aligns
with the section title "Marcadores" and the existing "bookmark-str" wording;
locate and change the "bookmarks/hint" entry in pt-PT.json to the corrected
phrase.
In `@apps/web/src/features/i18n/locales/th-TH.json`:
- Line 2859: The translation string for the key "minimum-required" is missing an
auxiliary verb and reads incomplete; update the value of the "minimum-required"
key in apps/web/src/features/i18n/locales/th-TH.json from "At least {{minimum}}
required to validate." to a complete sentence such as "At least {{minimum}} are
required to validate." so the message is grammatically correct and uses the
existing {{minimum}} interpolation.
In `@apps/web/src/features/i18n/locales/yo-NG.json`:
- Line 2860: The translation key "estimated-value" currently hardcodes a USD
sign ("Estimated value: ${{value}}"), breaking localization; update the
"estimated-value" entry to remove the hardcoded "$" and either expect a fully
formatted currency string in {{value}} (e.g., "Estimated value: {{value}}") or
add a separate currency placeholder (e.g., "Estimated value:
{{currency}}{{value}}") and ensure callers pass the formatted value or both
currency and numeric value accordingly; update any calls that use the
"estimated-value" key (where the translation key is referenced) to supply the
properly formatted currency string or both placeholders.
In `@apps/web/src/features/i18n/locales/zh-CN.json`:
- Around line 2859-2860: Three i18n keys remain in English: "minimum-required",
"estimated-value", and "price-required"; replace their English values with
Chinese translations so the wallet validation flow is localized (for example:
"minimum-required": "至少需要 {{minimum}} 以通过验证。", "estimated-value":
"估算价值:${{value}}", "price-required": "需要价格。"). Update the corresponding JSON
entries for these keys in the same locales block where the other new keys were
added, preserving interpolation tokens ({{minimum}}, ${{value}}) and JSON
syntax.
---
Nitpick comments:
In `@apps/web/src/features/i18n/locales/bg-BG.json`:
- Around line 2858-2865: The "estimated-value" translation currently hardcodes
the USD symbol ("Estimated value: ${{value}}"); change the locale entry for the
key "estimated-value" to remove the "$" so it becomes "Estimated value:
{{value}}", and update the calling code that uses this key (where translations
are invoked) to pass a pre-formatted currency string (e.g. "$1.23" or
locale-aware formatted value) as the interpolation value; apply the same change
across all locale files to keep them consistent.
In `@apps/web/src/features/i18n/locales/hi-IN.json`:
- Around line 2858-2864: The "estimated-value" locale string currently hardcodes
the USD "$" symbol which prevents multi-currency reuse; change the
"estimated-value" key to include a currency interpolation (e.g., use
{{currency}} and {{value}} instead of a hardcoded $) and update any consuming
code that calls the i18n lookup (the component that renders validate-funds /
estimated value) to pass currency="$" (or the appropriate symbol) as an
interpolation variable; also leave existing placeholders ({{minimum}} in
"minimum-required" and "price-required") as-is since they are correct.
In `@apps/web/src/features/i18n/locales/it-IT.json`:
- Line 1195: Update the "image-server-hiveblog" translation to keep the brand
name "Hive" and match sibling capitalization: change the value for the key
"image-server-hiveblog" from "Immagini di alveare (alternative)" to "Immagini di
Hive (Alternativa)"; ensure the parenthetical uses the same title-case style as
the sibling "(Predefinito)".
In `@apps/web/src/features/i18n/locales/nl-NL.json`:
- Around line 1194-1195: The two i18n keys "image-server-default" and
"image-server-hiveblog" have inconsistent capitalization in their parenthetical
labels; update the value for "image-server-hiveblog" so the parenthetical uses
the same lowercase style as "image-server-default" (change "(Alternatief)" to
"(alternatief)") to keep sibling translations consistent.
In `@apps/web/src/features/i18n/locales/tr-TR.json`:
- Line 2860: The "estimated-value" translation currently hardcodes the USD
symbol ("Estimated value: ${{value}}"); update the string to use a separate
interpolation variable for currency (e.g., use "{{currency}}") and adjust any
callers that format or supply this translation to pass the currency symbol or
code alongside the value so the message becomes "Estimated value:
{{currency}}{{value}}" (or similar) and supports non‑USD currencies; reference
the "estimated-value" key and update usages that call the translation to provide
the new {{currency}} parameter.
In `@apps/web/src/features/i18n/locales/uz-UZ.json`:
- Around line 2858-2864: The "estimated-value" locale string hardcodes the USD
"$" symbol; update the "estimated-value" key to be currency-agnostic (e.g.,
change "Estimated value: ${{value}}" to use a separate interpolation like
"Estimated value: {{symbol}}{{value}}" or just "Estimated value: {{value}}" and
inject the symbol into the value at render time) and then update the code paths
that call the "estimated-value" message (where you pass the current
locale/value) to supply the currency symbol via the new {{symbol}} parameter or
include it in the formatted value; ensure you modify the "estimated-value" entry
and corresponding usage sites (message lookup/formatting code) so interpolation
remains consistent.
ℹ️ Review info
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (23)
apps/web/src/features/i18n/locales/ac-ace.jsonapps/web/src/features/i18n/locales/bg-BG.jsonapps/web/src/features/i18n/locales/de-DE.jsonapps/web/src/features/i18n/locales/es-ES.jsonapps/web/src/features/i18n/locales/fr-FR.jsonapps/web/src/features/i18n/locales/hi-IN.jsonapps/web/src/features/i18n/locales/id-ID.jsonapps/web/src/features/i18n/locales/it-IT.jsonapps/web/src/features/i18n/locales/ja-JP.jsonapps/web/src/features/i18n/locales/lt-LT.jsonapps/web/src/features/i18n/locales/nl-NL.jsonapps/web/src/features/i18n/locales/pcm-NG.jsonapps/web/src/features/i18n/locales/pl-PL.jsonapps/web/src/features/i18n/locales/pt-PT.jsonapps/web/src/features/i18n/locales/ru-RU.jsonapps/web/src/features/i18n/locales/sr-CS.jsonapps/web/src/features/i18n/locales/th-TH.jsonapps/web/src/features/i18n/locales/tr-TR.jsonapps/web/src/features/i18n/locales/uk-UA.jsonapps/web/src/features/i18n/locales/ur-PK.jsonapps/web/src/features/i18n/locales/uz-UZ.jsonapps/web/src/features/i18n/locales/yo-NG.jsonapps/web/src/features/i18n/locales/zh-CN.json
🚧 Files skipped from review as they are similar to previous changes (1)
- apps/web/src/features/i18n/locales/ur-PK.json
| "address-copied": "Adresse kopiert" | ||
| "address-copied": "Adresse kopiert", | ||
| "minimum-required": "Mindestens {{minimum}} erforderlich für die Validierung.", | ||
| "estimated-value": "Geschätzter Wert: ${{value}}", |
There was a problem hiding this comment.
Hardcoded $ currency symbol reduces i18n flexibility.
"Geschätzter Wert: ${{value}}" embeds the USD symbol directly in the translation string. If the displayed currency ever varies, every locale file would need updating. Consider moving the symbol into the interpolated value (e.g., {{value}} already includes the formatted currency string) or adding a {{currency}} placeholder so translators don't need to touch symbol placement.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@apps/web/src/features/i18n/locales/de-DE.json` at line 2860, The translation
for the "estimated-value" key hardcodes a "$" symbol which breaks currency
flexibility; update the value to remove the hardcoded symbol and either rely on
the interpolated {{value}} to include the formatted currency or add a new
placeholder {{currency}} (e.g., "Geschätzter Wert: {{value}}" or "Geschätzter
Wert: {{currency}}{{value}}") so currency formatting is handled where values are
produced rather than inside the locale string.
| "checking-balance": "Comprobando el saldo de su cartera...", | ||
| "balance-fetch-error": "No se pudo actualizar el saldo de tu billetera. Seguiremos intentándolo automáticamente.", | ||
| "price-unavailable": "Los datos del precio no están disponibles temporalmente. Vuelva 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." |
There was a problem hiding this comment.
Inconsistent Spanish register (formal su/usted vs. informal tu/tú) within validate-funds
The pre-existing strings in this block use the formal usted register ("Validar sus fondos", "recargue su wallet", "su cartera"). The new additions mix both registers within the same user flow:
| Key | Form | Register |
|---|---|---|
checking-balance |
"el saldo de su cartera" | formal ✓ |
balance-fetch-error |
"el saldo de tu billetera" | informal ✗ |
price-unavailable |
"Vuelva a intentarlo" | formal ✓ |
price-required |
"tu saldo… vuelve a intentarlo" | informal ✗ |
balance-fetch-error and price-required should align with the formal register used by the surrounding strings.
🐛 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 billetera. 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."📝 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.
| "checking-balance": "Comprobando el saldo de su cartera...", | |
| "balance-fetch-error": "No se pudo actualizar el saldo de tu billetera. Seguiremos intentándolo automáticamente.", | |
| "price-unavailable": "Los datos del precio no están disponibles temporalmente. Vuelva 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." | |
| "checking-balance": "Comprobando el saldo de su cartera...", | |
| "balance-fetch-error": "No se pudo actualizar el saldo de su billetera. Seguiremos intentándolo automáticamente.", | |
| "price-unavailable": "Los datos del precio no están disponibles temporalmente. Vuelva 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 2861 - 2864, The
new Spanish strings use an informal register but the surrounding messages use
formal usted; update the keys "balance-fetch-error" and "price-required" to the
formal register and match existing vocabulary: change "No se pudo actualizar el
saldo de tu billetera. Seguiremos intentándolo automáticamente." to a formal
phrasing using "su" and "cartera" (e.g., "No se pudo actualizar el saldo de su
cartera. Seguiremos intentándolo automáticamente.") and change "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."
to formal grammar/verbs and "su" (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."). Ensure consistency
with existing keys like "checking-balance" and other surrounding messages.
| "permissions": "Ouvrir les permissions" | ||
| "permissions": "Ouvrir les permissions", | ||
| "image-server": "Serveur d'images", | ||
| "image-server-default": "Images d'écence (par défaut)", |
There was a problem hiding this comment.
Brand name misspelled in image-server-default value.
"d'écence" should be "d'Ecency" — the brand name is lowercased and misspelled, which will surface directly in the UI's preferences panel.
✏️ Proposed fix
- "image-server-default": "Images d'écence (par défaut)",
+ "image-server-default": "Images d'Ecency (par défaut)",📝 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.
| "image-server-default": "Images d'écence (par défaut)", | |
| "image-server-default": "Images d'Ecency (par défaut)", |
🤖 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 1194, The translation
value for the key "image-server-default" contains a misspelled and lowercased
brand name ("d'écence"); update the string value to use the correct
capitalization and spelling "d'Ecency" so it reads "Images d'Ecency (par
défaut)"—modify the JSON entry for "image-server-default" to replace the
incorrect value with the corrected one.
| "checking-balance": "Vérification du solde de votre portefeuille...", | ||
| "balance-fetch-error": "Impossible de rafraîchir le solde de votre portefeuille. Nous continuerons à réessayer automatiquement.", | ||
| "price-unavailable": "Les données de prix sont temporairement indisponibles. 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." |
There was a problem hiding this comment.
Stray space before period in price-required.
{{minimum}} . contains an extraneous space between the interpolated value and the full stop, which will render visibly as . in the UI.
✏️ 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."📝 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.
| "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 2864, The translation
string for the key "price-required" contains an extra space before the period
after the interpolation ( "{{minimum}} ." ); update the value for
"price-required" to remove the stray space so it reads "...{{minimum}}."
ensuring no space exists between the interpolation token and the trailing full
stop.
| "permissions": "権限を開く", | ||
| "image-server": "画像サーバー", | ||
| "image-server-default": "Ecency images(デフォルト)", | ||
| "image-server-hiveblog": "ハイブ画像 (代替)" |
There was a problem hiding this comment.
Minor typographic inconsistency in image-server-default
Line 1194 is missing the space before the parenthetical that line 1195 has:
- "image-server-default": "Ecency images(デフォルト)",
+ "image-server-default": "Ecency images (デフォルト)",
"image-server-hiveblog": "ハイブ画像 (代替)"📝 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.
| "permissions": "権限を開く", | |
| "image-server": "画像サーバー", | |
| "image-server-default": "Ecency images(デフォルト)", | |
| "image-server-hiveblog": "ハイブ画像 (代替)" | |
| "permissions": "権限を開く", | |
| "image-server": "画像サーバー", | |
| "image-server-default": "Ecency images (デフォルト)", | |
| "image-server-hiveblog": "ハイブ画像 (代替)" |
🤖 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` around lines 1192 - 1195, The
value for the "image-server-default" key has a missing space before the
parenthetical—update the string for "image-server-default" to include a space
before "(デフォルト)" so it matches the spacing style used in "image-server-hiveblog"
(i.e., "Ecency images (デフォルト)").
| "checking-balance": "Проверка баланса кошелька...", | ||
| "balance-fetch-error": "Не удалось обновить баланс кошелька. Мы будем повторять попытку автоматически.", | ||
| "price-unavailable": "Данные о цене временно недоступны. Пожалуйста, повторите попытку через некоторое время.", | ||
| "price-required": "Данные о цене должны быть проверены, что ваш баланс соответствует минимуму {{minimum}} . Мы проверим ваш баланс, пожалуйста, повторите попытку через некоторое время." |
There was a problem hiding this comment.
Spurious space before the period in price-required.
The value contains {{minimum}} . — an extra space before the period that will be visible to users in the rendered UI.
✏️ Proposed fix
- "price-required": "Данные о цене должны быть проверены, что ваш баланс соответствует минимуму {{minimum}} . Мы проверим ваш баланс, пожалуйста, повторите попытку через некоторое время."
+ "price-required": "Данные о цене должны быть проверены, что ваш баланс соответствует минимуму {{minimum}}. Мы проверим ваш баланс, пожалуйста, повторите попытку через некоторое время."Given the AI summary indicates this key is introduced across many locales in this PR, it is worth checking whether the same whitespace artifact is present in the other locale files.
📝 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.
| "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/ru-RU.json` at line 2864, The string value
for the "price-required" key contains an extra space before the period
("{{minimum}} ."); remove that space so it becomes "{{minimum}}." in
apps/web/src/features/i18n/locales/ru-RU.json (key "price-required"), and then
search for the same "price-required" key across other locale files and fix any
matching whitespace artifacts to keep translations consistent.
| "my-favorites-widget": { | ||
| "title": "My Favorites", | ||
| "empty": "You haven't added any favorite authors yet", | ||
| "empty-cta": "Discover authors", | ||
| "view-all": "View all" | ||
| }, |
There was a problem hiding this comment.
Terminology inconsistency with existing favorites.title.
my-favorites-widget.title is "My Favorites" (English fallback), while the existing favorites.title at line 2073 is already translated as "Omiljeno". If this string is never updated in Crowdin for sr-CS, Serbian users will see two different labels for the same concept.
Consider aligning the title value with the existing Serbian term when the translation is committed:
💡 Suggested translation alignment
"my-favorites-widget": {
- "title": "My Favorites",
+ "title": "Omiljeno",
"empty": "You haven't added any favorite authors yet",
"empty-cta": "Discover authors",
"view-all": "View all"
},📝 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.
| "my-favorites-widget": { | |
| "title": "My Favorites", | |
| "empty": "You haven't added any favorite authors yet", | |
| "empty-cta": "Discover authors", | |
| "view-all": "View all" | |
| }, | |
| "my-favorites-widget": { | |
| "title": "Omiljeno", | |
| "empty": "You haven't added any favorite authors yet", | |
| "empty-cta": "Discover authors", | |
| "view-all": "View all" | |
| }, |
🤖 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 2630 - 2635, The
translation for my-favorites-widget.title is left as the English fallback "My
Favorites", causing inconsistency with the existing favorites.title
("Omiljeno"); update my-favorites-widget.title to match the established Serbian
term (e.g., "Omiljeno") so both keys (my-favorites-widget.title and
favorites.title) use the same localized string and keep terminology consistent
for sr-CS.
| "permissions": "Відкриті дозволи" | ||
| "permissions": "Відкриті дозволи", | ||
| "image-server": "Сервер зображень", | ||
| "image-server-default": "Зображення точностей (за замовчуванням)", |
There was a problem hiding this comment.
Incorrect translation for image-server-default
"Зображення точностей" translates literally to "Images of precision/accuracy" in Ukrainian, which is semantically meaningless here. This is almost certainly a machine-translation artefact — "точностей" (genitive plural of точність) does not correspond to the English label for a default image server.
A more appropriate Ukrainian string would align with the label displayed in the UI (e.g. "Сервер зображень Ecency (за замовчуванням)" or a similar descriptive form matching the key intent).
🤖 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 1194, The translation
for the key "image-server-default" is wrong: replace the current value
"Зображення точностей (за замовчуванням)" with a meaningful Ukrainian label that
reflects the default image server (for example "Сервер зображень Ecency (за
замовчуванням)" or another UI-consistent descriptive phrase). Update the value
for the "image-server-default" key in the locales file so it accurately conveys
"Default image server" in Ukrainian.
| "checking-balance": "Перевірка балансу вашого гаманця...", | ||
| "balance-fetch-error": "Не вдалося оновити баланс вашого гаманця. Ми продовжимо автоматичну повторну роботу.", | ||
| "price-unavailable": "Дані про ціну тимчасово недоступні. Будь ласка, спробуйте ще раз.", | ||
| "price-required": "Для підтвердження вартості вашого балансу потрібне мінімум {{minimum}} . Ми продовжуємо перевіряти ваш баланс, будь ласка, спробуйте ще раз." |
There was a problem hiding this comment.
Stray space before the sentence-ending period in price-required
The interpolated value is followed by a space before the period:
-"price-required": "Для підтвердження вартості вашого балансу потрібне мінімум {{minimum}} . Ми продовжуємо перевіряти ваш баланс, будь ласка, спробуйте ще раз."
+"price-required": "Для підтвердження вартості вашого балансу потрібно мінімум {{minimum}}. Ми продовжуємо перевіряти ваш баланс, будь ласка, спробуйте ще раз."The diff also corrects потрібне → потрібно (the predicate here is adverbial, not an adjectival agreement with a noun).
🤖 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 2864, Update the
"price-required" localization string: change "потрібне" to "потрібно" and remove
the extra space before the sentence-final period so the interpolated value
{{minimum}} is directly followed by the period (i.e., "...мінімум {{minimum}}.
Ми продовжуємо...") to correct grammar and punctuation.
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (1)
apps/web/src/features/i18n/locales/es-ES.json (1)
2861-2864:⚠️ Potential issue | 🟡 MinorUnresolved register inconsistency and vocabulary mismatch in
validate-fundsTwo issues remain in this block:
1. Formal/informal register mismatch (previously flagged)
checking-balance(line 2861) andprice-unavailable(line 2863) use the formal usted register ("su cartera","Vuelva").balance-fetch-errorandprice-requiredmix in the informal tú register ("tu billetera","vuelve"), which is inconsistent within the same user flow.2. Inconsistent noun for "wallet"
checking-balanceuses"cartera"whilebalance-fetch-erroruses"billetera". Both mean the same thing, but the terminology should be uniform across the same wizard step.🐛 Proposed fix (aligns to formal register and consistent vocabulary)
- "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 2861 - 2864, The four i18n keys checking-balance, balance-fetch-error, price-unavailable and price-required are inconsistent in register and wallet noun; update balance-fetch-error and price-required to use the formal "usted" conjugation and change "billetera" to match "cartera" (or vice‑versa if you prefer that noun consistently) so all messages use the same formal tone and the same wallet term across the validate-funds flow.
🤖 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/es-ES.json`:
- Around line 1192-1195: Update the Spanish translation for the
"image-server-hiveblog" key to use a lowercase parenthetical consistent with
"image-server-default": change "(Alternativa)" to "(alternativa)" so both
"image-server-default" and "image-server-hiveblog" use matching lowercase
qualifiers.
---
Duplicate comments:
In `@apps/web/src/features/i18n/locales/es-ES.json`:
- Around line 2861-2864: The four i18n keys checking-balance,
balance-fetch-error, price-unavailable and price-required are inconsistent in
register and wallet noun; update balance-fetch-error and price-required to use
the formal "usted" conjugation and change "billetera" to match "cartera" (or
vice‑versa if you prefer that noun consistently) so all messages use the same
formal tone and the same wallet term across the validate-funds flow.
| "permissions": "Permisos abiertos", | ||
| "image-server": "Servidor de imágenes", | ||
| "image-server-default": "Imágenes de Ecency (por defecto)", | ||
| "image-server-hiveblog": "Imágenes de Hive (Alternativa)" |
There was a problem hiding this comment.
Preferences image-server additions look good; minor capitalisation inconsistency in image-server-hiveblog
The brand-name fix ("Ecency" replacing the earlier "ecuencia") is confirmed correct. The three new keys are well-formed.
One small nit: (Alternativa) uses an uppercase initial, while the sibling key uses (por defecto) (all lowercase). Spanish style conventionally lowercases parenthetical qualifiers, and the two entries within the same block should be consistent.
🐛 Proposed fix
- "image-server-hiveblog": "Imágenes de Hive (Alternativa)"
+ "image-server-hiveblog": "Imágenes de Hive (alternativa)"🤖 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 1192 - 1195,
Update the Spanish translation for the "image-server-hiveblog" key to use a
lowercase parenthetical consistent with "image-server-default": change
"(Alternativa)" to "(alternativa)" so both "image-server-default" and
"image-server-hiveblog" use matching lowercase qualifiers.
Summary by CodeRabbit
New Features
UX Copy