-
Notifications
You must be signed in to change notification settings - Fork 160
New Crowdin updates #6772
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
New Crowdin updates #6772
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
WalkthroughBulk localization updates: multiple frontend .po files updated (PO revision dates advanced), many msgid/msgstr edits and obsolete markers added, and numerous cancellation-related translation source references moved from RequestCancellationModal.tsx to ModalTopContent.tsx. No functional code or API changes. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Suggested reviewers
Poem
Pre-merge checks❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (1 passed)
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (2)
apps/cowswap-frontend/src/locales/ru-RU.po (2)
1357-1358: Refine Russian wording for region‑restricted token messageCurrent text is understandable, but slightly less idiomatic and mixes “токен” with a spaced negation:
msgstr "Токен не доступен в вашем регионе"Consider a more natural variant like:
Suggested wording
-msgstr "Токен не доступен в вашем регионе" +msgstr "Этот токен недоступен в вашем регионе"This keeps the meaning while sounding closer to native UI phrasing.
4047-4048: Align “Network costs” translation with existing terminologyElsewhere in this file, “Network costs” is translated as “Сетевые расходы” (e.g., “Network costs (est.)” → “Сетевые расходы (оцен.)”), but here it's “Комиссии сети”:
msgid "Network costs" msgstr "Комиссии сети"For consistency and clarity, suggest using the same term:
Suggested change
-msgid "Network costs" -msgstr "Комиссии сети" +msgid "Network costs" +msgstr "Сетевые расходы"This keeps the concept aligned across all related UI elements.
📜 Review details
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
apps/cowswap-frontend/src/locales/ru-RU.po
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: Setup
- GitHub Check: Cypress
🔇 Additional comments (1)
apps/cowswap-frontend/src/locales/ru-RU.po (1)
11-11: PO revision metadata update looks goodThe updated
PO-Revision-Dateis consistent with a new Crowdin export; no further action needed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
📜 Review details
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
apps/cowswap-frontend/src/locales/ru-RU.po
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: Setup
- GitHub Check: Cypress
🔇 Additional comments (2)
apps/cowswap-frontend/src/locales/ru-RU.po (2)
11-11: Metadata revision date looks fine
PO-Revision-Datecorrectly reflects the new revision timestamp; no action needed.
4047-4048: “Network costs” translation is appropriate and consistent“Сетевые расходы” is a good, concise rendering of “Network costs” for the label context; nothing to change here.
| msgid "This token is not available in your region" | ||
| msgstr "" | ||
| msgstr "Токен не доступен в вашем регионе" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Russian orthography: use “недоступен” as one word
For natural Russian and correct spelling, “не доступен” should be merged:
Suggested fix
-msgstr "Токен не доступен в вашем регионе"
+msgstr "Токен недоступен в вашем регионе"📝 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.
| msgid "This token is not available in your region" | |
| msgstr "" | |
| msgstr "Токен не доступен в вашем регионе" | |
| msgid "This token is not available in your region" | |
| msgstr "Токен недоступен в вашем регионе" |
🤖 Prompt for AI Agents
In apps/cowswap-frontend/src/locales/ru-RU.po around lines 1357-1358, the
Russian translation incorrectly splits “не доступен”; replace the phrase "Токен
не доступен в вашем регионе" with the correct single-word form "Токен недоступен
в вашем регионе" in the msgstr for that msgid to fix the orthography.
| msgid "Network fees and costs" | ||
| msgstr "Комиссии и сборы" | ||
| msgstr "Сетевые расходы" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Preserve “fees and costs” nuance in Russian
Here the English explicitly says “Network fees and costs”, but the Russian string collapses this to just “Сетевые расходы”, which is identical in meaning to the simpler “Network costs” label and drops “fees/комиссии”.
To better match the source and stay consistent with other strings like “Текущие сетевые комиссии”, consider:
Suggested fix
-msgstr "Сетевые расходы"
+msgstr "Сетевые комиссии и расходы"📝 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.
| msgid "Network fees and costs" | |
| msgstr "Комиссии и сборы" | |
| msgstr "Сетевые расходы" | |
| msgid "Network fees and costs" | |
| msgstr "Сетевые комиссии и расходы" |
🤖 Prompt for AI Agents
In apps/cowswap-frontend/src/locales/ru-RU.po around lines 5305 to 5306, the
Russian translation collapses “Network fees and costs” into “Сетевые расходы”,
losing the “fees/комиссии” nuance; update the msgstr to include both terms (for
example, "Сетевые комиссии и расходы") so it preserves the English distinction
and stays consistent with other translations like "Текущие сетевые комиссии".
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
♻️ Duplicate comments (2)
apps/cowswap-frontend/src/locales/ru-RU.po (2)
1356-1358: Russian orthography: use “недоступен” as one wordThe current
msgstrsplits “не доступен”, which is non-standard in this context. Prefer the single-word form for natural Russian:Suggested fix
msgid "This token is not available in your region" -msgstr "Токен не доступен в вашем регионе" +msgstr "Токен недоступен в вашем регионе"
5304-5306: Keep “fees and costs” nuance in RussianThe English string explicitly says “Network fees and costs”, but the current translation collapses this to just “Сетевые расходы”, dropping the “fees/комиссии” part and making it indistinguishable from simpler “network costs” labels.
Suggest including both terms:
Suggested fix
msgid "Network fees and costs" -msgstr "Сетевые расходы" +msgstr "Сетевые комиссии и расходы"
🧹 Nitpick comments (1)
apps/cowswap-frontend/src/locales/el-GR.po (1)
238-240: Confirm intentional deprecation of RWA consent/legal strings and related copyMany RWA consent and location-/eligibility‑related strings (and a few other descriptive texts like “loading”, old “Limit price (incl.costs)”, Bungee descriptions, etc.) have been marked obsolete (
#~) in this locale. That’s fine technically as long as:
- The corresponding msgids have actually been removed or replaced in source code, and
- Product/legal are aligned that the new UX still surfaces the required consent and restriction messaging across all locales.
Given the regulatory nature of RWA flows, please double‑check that the new copy (in code / base locale) fully replaces what’s being deprecated here and that Crowdin sync didn’t accidentally drop any active keys.
Also applies to: 447-449, 539-541, 580-582, 1050-1052, 1780-1781, 1792-1793, 1883-1885, 2000-2001, 2052-2054, 3603-3604, 5700-5702, 5951-5952
📜 Review details
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (7)
apps/cowswap-frontend/src/locales/el-GR.poapps/cowswap-frontend/src/locales/en-US.poapps/cowswap-frontend/src/locales/es-ES.poapps/cowswap-frontend/src/locales/pl-PL.poapps/cowswap-frontend/src/locales/pt-BR.poapps/cowswap-frontend/src/locales/ru-RU.poapps/cowswap-frontend/src/locales/tr-TR.po
✅ Files skipped from review due to trivial changes (4)
- apps/cowswap-frontend/src/locales/pl-PL.po
- apps/cowswap-frontend/src/locales/pt-BR.po
- apps/cowswap-frontend/src/locales/en-US.po
- apps/cowswap-frontend/src/locales/tr-TR.po
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2025-07-24T16:42:53.154Z
Learnt from: cowdan
Repo: cowprotocol/cowswap PR: 6009
File: apps/cowswap-frontend/src/modules/tradeWidgetAddons/containers/HighFeeWarning/HighFeeWarningTooltipContent.tsx:23-33
Timestamp: 2025-07-24T16:42:53.154Z
Learning: In apps/cowswap-frontend/src/modules/tradeWidgetAddons/containers/HighFeeWarning/HighFeeWarningTooltipContent.tsx, the use of toFixed(2) for percentage formatting in tooltip content is intentional and differs from the banner message formatting that uses toSignificant(2, undefined, Rounding.ROUND_DOWN). This formatting difference serves different UX purposes and should not be flagged as inconsistent.
Applied to files:
apps/cowswap-frontend/src/locales/es-ES.poapps/cowswap-frontend/src/locales/ru-RU.poapps/cowswap-frontend/src/locales/el-GR.po
📚 Learning: 2025-10-10T20:28:16.565Z
Learnt from: fairlighteth
Repo: cowprotocol/cowswap PR: 6347
File: apps/cowswap-frontend/src/modules/trade/pure/TradeConfirmation/index.tsx:49-49
Timestamp: 2025-10-10T20:28:16.565Z
Learning: In apps/cowswap-frontend/src/modules/trade, TradeConfirmation follows a two-layer architecture: TradeConfirmationView (pure/stateless) in pure/TradeConfirmation/index.tsx renders the UI, while TradeConfirmation (container) in containers/TradeConfirmation/index.tsx wraps it to freeze props during pending trades (via useStableTradeConfirmationProps), wire in signing state (useSigningStep), and inject trade confirmation state (useTradeConfirmState). Consuming modules should import the container TradeConfirmation from 'modules/trade' to preserve this stateful behavior.
<!-- [add_learning]
When reviewing component refactoring in apps/cowswap-frontend/src/modules/trade, recognize the pattern where a pure view component (e.g., TradeConfirmationView) is separated from a stateful container (e.g., TradeConfirmation) that wraps it. The container adds runtime state management (prop stabilization, signing state, etc.) while the view remains testable and composable. Do not flag usages that import th...
Applied to files:
apps/cowswap-frontend/src/locales/es-ES.poapps/cowswap-frontend/src/locales/ru-RU.poapps/cowswap-frontend/src/locales/el-GR.po
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: Setup
- GitHub Check: Cypress
🔇 Additional comments (3)
apps/cowswap-frontend/src/locales/ru-RU.po (1)
4046-4049: “Network costs” translation looks accurate and consistent
"Network costs"→"Сетевые расходы"reads naturally and matches existing phrasing like"Сетевые расходы (оцен.)". No change needed.apps/cowswap-frontend/src/locales/el-GR.po (1)
3-19: Metadata header update looks fine
PO-Revision-Daterefresh and other header metadata remain well‑formed and consistent with the existing Lingui/Crowdin setup. No issues from a tooling or runtime perspective.apps/cowswap-frontend/src/locales/es-ES.po (1)
11-11: Crowdin sync looks good; double-check RWA consent copy removal across locales
- Line 11:
PO-Revision-Datebump is fine and consistent with a fresh Crowdin pull.- Lines 239–241, 541–543, 582–585, 1365–1366, 2003–2004, 2407–2409, 3607–3609: several
RwaConsentModalentries with regulatory / eligibility language are now marked obsolete (#~ msgid/msgstr). That means Spanish will no longer use these specific strings anywhere.Assuming en-US and other locales removed or replaced the same keys, there’s no functional break (the UI just no longer references these IDs), but this is compliance-sensitive text. Please confirm with whoever owns the RWA flow that:
- The consent/gating UX still shows the legally required messaging, and
- Any new RWA-related msgids introduced in en-US have corresponding es-ES translations in Crowdin (they appear not to be part of this diff).
If that’s already coordinated, the localization changes here are safe to ship.
Also applies to: 239-241, 541-543, 582-585, 1365-1366, 2003-2004, 2407-2409, 3607-3609
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 6
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
apps/cowswap-frontend/src/locales/ru-RU.po (1)
1904-1907: “Safe nonce” translated incorrectly as “Легко”Here “Safe” is the wallet/contract name, and “nonce” is the transaction counter. “Легко” (“easy”) is simply wrong and will confuse users.
Suggested fix
msgid "Safe nonce" -msgstr "Легко" +msgstr "Нонс Safe"If you prefer a slightly more explanatory variant:
msgstr "Нонс кошелька Safe"
♻️ Duplicate comments (2)
apps/cowswap-frontend/src/locales/ru-RU.po (2)
1361-1362: Russian orthography: “недоступен” should be one wordThe phrase splits “не доступен”, which is incorrect in this context. It should be a single word.
Suggested fix
msgid "This token is not available in your region" -msgstr "Токен не доступен в вашем регионе" +msgstr "Токен недоступен в вашем регионе"
5308-5310: Preserve “fees and costs” nuance in RU translationHere the English explicitly says “Network fees and costs”, but the RU text only mentions “Сетевые расходы”, dropping “fees/комиссии”. This was previously flagged and is still unresolved.
Suggested fix
msgid "Network fees and costs" -msgstr "Сетевые расходы" +msgstr "Сетевые комиссии и расходы"
🧹 Nitpick comments (6)
apps/cowswap-frontend/src/locales/es-ES.po (1)
1766-1768: Verify composition of “This is an {on/off-chain} cancellation” in SpanishThe phrase appears to be built from three separate strings:
msgid "This is an"→msgstr "Esto es un"msgid "on-chain"/msgid "off-chain"→msgstr "en cadena"/msgstr "fuera de cadena"msgid "cancellation"→msgstr "cancelación"If concatenated like English (“This is an” + badge + “cancellation”), the current Spanish fragments likely read awkwardly (e.g. something like “Esto es un en cadena cancelación”). It may be worth checking the rendered UI and adjusting these three translations so the combined sentence sounds natural (e.g. closer to “Esta es una cancelación on-chain/off-chain”) while still keeping the badge emphasis.
Also applies to: 2423-2426, 3903-3906, 4240-4242
apps/cowswap-frontend/src/locales/en-US.po (3)
1663-1665: Consider reducing message fragmentation inCancellationModal/ModalTopContentfor better i18nThe modal currently relies on many tiny translatable fragments:
"Unknown","This is an","on-chain","off-chain","cancellation","Tx cost:","less","more", plus the full sentence"Keep in mind a solver might already have included the order in a solution even if this cancellation is successful."While this works in English, splitting a sentence like “This is an on-chain cancellation. Tx cost: X% more/less than off-chain.” across many msgids makes word order and grammar hard to adapt in other languages.
If you touch this area again, consider combining into one or two richer sentences, using
<0>...</0>wrappers for styling instead of separate one-word msgids (e.g.,"This is an <0>{cancellationType}</0> cancellation. Tx cost: {delta}% {direction} than off-chain.").Also applies to: 1773-1775, 2353-2355, 2390-2392, 2649-2651, 2912-2914, 3215-3217, 4446-4449
239-241: Verify RWA consent/legal copy removal is intentionalSeveral
RwaConsentModalstrings with explicit eligibility/location/legal disclaimers are now marked obsolete (#~), including:
- “If you fall into any of these categories, select Cancel.”
- Jurisdiction and “U.S. Person” clauses.
- Location-indeterminacy and eligibility acknowledgments (“We could not reliably determine your location…”, “You are solely responsible for complying with your local laws.”, etc.).
- Headline prompts like “Additional confirmation required for this token”, “By clicking Confirm, you expressly represent and warrant that you are NOT:”, “I Confirm”, and related bullets.
Given these are compliance‑sensitive, please double‑check that:
- They’ve been superseded by updated legal copy elsewhere (not just removed), and
- There’s no path where RWA tokens can be accessed without an appropriate consent/eligibility step.
If this is part of a broader legal/copy update, then the obsolescence here is fine.
Also applies to: 452-455, 545-547, 585-587, 1060-1061, 1372-1373, 1384-1385, 1793-1796, 1897-1899, 1968-1970, 2014-2015, 2067-2069, 2130-2132, 5717-5719, 5889-5891, 5968-5970
247-249: Fix minor grammar issues in existing user-facing stringsTwo pre-existing English strings are slightly off:
- Line 247:
"This ensure smooooth bridging."→ should be"This ensures smooooth bridging."- Line 255:
"The are some errors with CoW Swap widget configuration"→ should be"There are some errors with the CoW Swap widget configuration"(or similar).These are not newly introduced in this PR but are visible to users; consider correcting them in the source
.tsxfiles and regenerating the PO files in a follow-up change.Also applies to: 255-257
apps/cowswap-frontend/src/locales/pl-PL.po (1)
222-224: Cancellation modal keys moved; placeholders preservedAll cancellation‑related msgids (
Are you sure you want to cancel order <0>{shortId}</0>?,Cancelling order with id {shortId}:…,Unknown,This is an,on-chain,off-chain,Tx cost:,more/less, etc.) now referenceCancellationModal/ModalTopContent.tsxandCancellationModal/index.tsxinstead of the old locations, but the msgids and interpolation placeholders remain unchanged.From an i18n perspective, this is a safe refactor; translations will continue to match the UI as long as other locales are updated consistently.
If you ever touch this area again, consider avoiding sentence fragments like
"This is an","on-chain","off-chain","cancellation"being concatenated at runtime; a single full‑sentence msgid with placeholders will translate better for languages like Polish.Also applies to: 780-783, 863-865, 1446-1448, 1653-1655, 1763-1765, 2343-2345, 2380-2382, 2639-2641, 3205-3207, 3900-3902, 4235-4237, 4433-4436
apps/cowswap-frontend/src/locales/pt-BR.po (1)
1446-1448: Key CancellationModal helper texts remain untranslatedSeveral short but user‑visible strings tied to
CancellationModal/ModalTopContent.tsxstill have emptymsgstr:
- “On-chain cancellations require a regular on-chain transaction and cost gas.”
- “Unknown”
- “This is an”
- “on-chain” / “off-chain”
- “less” / “more”
- “Tx cost:”
- “Keep in mind a solver might already have included the order in a solution even if this cancellation is successful.”
- Standalone “cancellation”
They’ll currently appear in English in the pt‑BR UI. If you want full localization coverage for the cancellation flows, it’s worth filling these in on Crowdin (keeping the same placeholders/markup). Otherwise behavior is technically correct but UX is slightly mixed‑language.
Also applies to: 1653-1655, 1763-1765, 1899-1901, 2343-2345, 2380-2382, 2639-2642, 3205-3207, 4236-4238, 4334-4336, 4433-4436
📜 Review details
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (7)
apps/cowswap-frontend/src/locales/el-GR.poapps/cowswap-frontend/src/locales/en-US.poapps/cowswap-frontend/src/locales/es-ES.poapps/cowswap-frontend/src/locales/pl-PL.poapps/cowswap-frontend/src/locales/pt-BR.poapps/cowswap-frontend/src/locales/ru-RU.poapps/cowswap-frontend/src/locales/tr-TR.po
🚧 Files skipped from review as they are similar to previous changes (1)
- apps/cowswap-frontend/src/locales/el-GR.po
🧰 Additional context used
🧠 Learnings (4)
📚 Learning: 2025-10-10T20:28:16.565Z
Learnt from: fairlighteth
Repo: cowprotocol/cowswap PR: 6347
File: apps/cowswap-frontend/src/modules/trade/pure/TradeConfirmation/index.tsx:49-49
Timestamp: 2025-10-10T20:28:16.565Z
Learning: In apps/cowswap-frontend/src/modules/trade, TradeConfirmation follows a two-layer architecture: TradeConfirmationView (pure/stateless) in pure/TradeConfirmation/index.tsx renders the UI, while TradeConfirmation (container) in containers/TradeConfirmation/index.tsx wraps it to freeze props during pending trades (via useStableTradeConfirmationProps), wire in signing state (useSigningStep), and inject trade confirmation state (useTradeConfirmState). Consuming modules should import the container TradeConfirmation from 'modules/trade' to preserve this stateful behavior.
<!-- [add_learning]
When reviewing component refactoring in apps/cowswap-frontend/src/modules/trade, recognize the pattern where a pure view component (e.g., TradeConfirmationView) is separated from a stateful container (e.g., TradeConfirmation) that wraps it. The container adds runtime state management (prop stabilization, signing state, etc.) while the view remains testable and composable. Do not flag usages that import th...
Applied to files:
apps/cowswap-frontend/src/locales/ru-RU.poapps/cowswap-frontend/src/locales/es-ES.poapps/cowswap-frontend/src/locales/en-US.poapps/cowswap-frontend/src/locales/pt-BR.poapps/cowswap-frontend/src/locales/pl-PL.poapps/cowswap-frontend/src/locales/tr-TR.po
📚 Learning: 2025-07-24T16:42:53.154Z
Learnt from: cowdan
Repo: cowprotocol/cowswap PR: 6009
File: apps/cowswap-frontend/src/modules/tradeWidgetAddons/containers/HighFeeWarning/HighFeeWarningTooltipContent.tsx:23-33
Timestamp: 2025-07-24T16:42:53.154Z
Learning: In apps/cowswap-frontend/src/modules/tradeWidgetAddons/containers/HighFeeWarning/HighFeeWarningTooltipContent.tsx, the use of toFixed(2) for percentage formatting in tooltip content is intentional and differs from the banner message formatting that uses toSignificant(2, undefined, Rounding.ROUND_DOWN). This formatting difference serves different UX purposes and should not be flagged as inconsistent.
Applied to files:
apps/cowswap-frontend/src/locales/ru-RU.poapps/cowswap-frontend/src/locales/es-ES.poapps/cowswap-frontend/src/locales/en-US.poapps/cowswap-frontend/src/locales/pt-BR.poapps/cowswap-frontend/src/locales/pl-PL.poapps/cowswap-frontend/src/locales/tr-TR.po
📚 Learning: 2025-02-20T15:59:33.749Z
Learnt from: shoom3301
Repo: cowprotocol/cowswap PR: 5443
File: apps/cowswap-frontend/src/modules/swap/containers/ConfirmSwapModalSetup/index.tsx:71-71
Timestamp: 2025-02-20T15:59:33.749Z
Learning: The swap module in apps/cowswap-frontend/src/modules/swap/ is marked for deletion in PR #5444 as part of the swap widget unification effort.
Applied to files:
apps/cowswap-frontend/src/locales/ru-RU.poapps/cowswap-frontend/src/locales/es-ES.poapps/cowswap-frontend/src/locales/en-US.poapps/cowswap-frontend/src/locales/pt-BR.poapps/cowswap-frontend/src/locales/pl-PL.poapps/cowswap-frontend/src/locales/tr-TR.po
📚 Learning: 2025-10-13T19:41:31.440Z
Learnt from: limitofzero
Repo: cowprotocol/cowswap PR: 6351
File: apps/cowswap-frontend/src/modules/erc20Approve/containers/TradeApproveModal/useTradeApproveCallback.ts:87-121
Timestamp: 2025-10-13T19:41:31.440Z
Learning: In apps/cowswap-frontend/src/modules/erc20Approve, useApproveCallback returns Promise<TransactionResponse | undefined> and is distinct from useApproveCurrency, which can return Promise<TransactionReceipt | SafeMultisigTransactionResponse>. When reviewing approval flows, verify which hook is actually being used before flagging Safe wallet concerns.
Applied to files:
apps/cowswap-frontend/src/locales/en-US.po
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: Cypress
- GitHub Check: Setup
🔇 Additional comments (14)
apps/cowswap-frontend/src/locales/es-ES.po (3)
11-11: PO revision date bump looks consistent
PO-Revision-Datewas updated to2025-12-30 09:56, which matches this Crowdin sync and is fine as-is.
223-226: Cancellation modal strings: placeholders preserved and generally correctFor the various cancellation-related strings moved under
CancellationModal/ModalTopContent.tsx:
- Placeholders (
{shortId},<0>…</0>, etc.) are preserved correctly.- Core translations like
"Are you sure you want to cancel order <0>{shortId}</0>?"→¿Estás seguro de que quieres cancelar la orden <0>{shortId}</0>?"Unknown"→Desconocido"less"/"more"→menos/más"Keep in mind a solver might already have included the order in a solution even if this cancellation is successful."
→ natural Spanish
look good and consistent with the rest of the UI.Also applies to: 1556-1559, 2346-2349, 3209-3212, 3903-3906, 4240-4242, 4437-4441
1057-1058: Obsoleted RWA consent strings are correctly marked and safeSeveral
RwaConsentModal-related consent/legal strings (e.g., “We could not reliably determine your location…”, “You are solely responsible…”, “A resident of any country subject to international sanctions…”, “A resident of the EU or EEA.”, “By clicking Confirm, you acknowledge that:”, “I Confirm”) are now marked obsolete with#~.Since these entries are no longer active:
- Their (English) “translations” no longer affect the UI.
- This cleanup is safe from a runtime perspective.
Nothing further required here for es-ES beyond any future content/UX decisions around RWA copy.
Also applies to: 1891-1892, 2007-2008, 2060-2061, 3611-3612, 5711-5712, 5959-5960
apps/cowswap-frontend/src/locales/ru-RU.po (1)
11-11: PO header date update is fine
PO-Revision-Datewas auto-bumped by Crowdin; no manual action needed.apps/cowswap-frontend/src/locales/en-US.po (1)
222-225: Cancellation modal core strings and placeholder rename look correct
Are you sure you want to cancel order <0>{shortId}</0>?now points toCancellationModal/ModalTopContent.tsxand keeps the{shortId}placeholder and component tags intact.- The new text
Cancelling order with id {shortId}:<0/><1>{orderSummary}</1>matches the updated placeholder name{orderSummary}, and the old{summary}variant is correctly marked obsolete.- Shared
"cancellation"label now includesModalTopContent.tsxas a reference, which is consistent with the refactor to centralize cancellation copy.No issues from an i18n or runtime-placeholder perspective.
Also applies to: 785-788, 4247-4251
apps/cowswap-frontend/src/locales/pl-PL.po (3)
11-11: PO revision date bump looks fine
PO-Revision-Datewas updated to2025-12-30 09:56, which is consistent with a fresh Crowdin sync and has no runtime impact.
239-240: RWA consent strings marked obsoleteMultiple
RwaConsentModalconsent / eligibility lines (jurisdiction, sanctions, responsibility, confirmation CTA, etc.) are now commented out with#~, effectively deprecating them in this locale.This is i18n‑safe, but it does change the available copy for the RWA consent flow; just make sure this matches the current product / legal requirements and that replacement strings (if any) are wired in across all locales.
If you want to double‑check usage, you can scan the codebase for active
RwaConsentModalmsgids and confirm that all live strings still exist inen-US.poand other locales.Also applies to: 539-541, 580-582, 1367-1368, 1379-1380, 1888-1889, 2004-2005, 5704-5705, 5955-5956
2190-2191: ObsoleteReceive (incl. costs)key cleanup is correctThe old
"Receive (incl. costs)"msgid has been properly marked obsolete (#~) across all locale files. The newer"Receive (incl. fees)"key is active and actively used in code (apps/cowswap-frontend/src/common/pure/ReceiveAmount/index.tsx:39). No code references the obsolete key.apps/cowswap-frontend/src/locales/tr-TR.po (3)
11-19: Header metadata update looks fine
PO-Revision-Datehas been bumped as expected from a Crowdin sync; no functional impact in the app.
222-225: Cancellation modal strings and refactor toModalTopContentlook consistent
- New/relocated cancellation strings (including
Are you sure you want to cancel order <0>{shortId}</0>?, theTx cost:/on-chain/off-chainlabels, and the explanation about solvers) use valid JSX-style tags and keep placeholders intact.- The new msgid
Cancelling order with id {shortId}:<0/><1>{orderSummary}</1>is syntactically correct, and the previous{summary}variant is properly marked obsolete, avoiding placeholder mismatches.No runtime risks spotted in these i18n changes.
Also applies to: 780-783, 862-865, 1446-1448, 1653-1655, 1763-1766, 2343-2345, 2380-2383, 2639-2642, 3205-3207, 3899-3902, 4234-4238, 4334-4336
238-240: Obsolete RWA consent/legal strings – please confirm this is intentionalSeveral
RwaConsentModalentries with legal / eligibility language (e.g. jurisdiction, sanctions, “I Confirm”, location detection) are now marked obsolete (#~). That’s consistent with a copy or flow change, but these look compliance‑sensitive.Can you confirm that:
- Replacement copy exists elsewhere (likely new msgids in en-US) or
- The associated UI/flow has been intentionally removed?
If needed, I can help double‑check the corresponding TSX changes to ensure no disclaimers were dropped unintentionally.
Also applies to: 447-449, 539-541, 580-582, 1054-1056, 1366-1368, 1378-1380, 1887-1889, 2003-2005, 2056-2058, 3606-3608, 5703-5705, 5954-5956
apps/cowswap-frontend/src/locales/pt-BR.po (3)
11-11: PO header revision date update is fine
PO-Revision-Datereflects the new sync timestamp; structure and metadata remain valid.
222-224: Cancellation question translation looks correctThe translation for “Are you sure you want to cancel order <0>{shortId}</0>?” is natural PT‑BR and preserves placeholders and markup correctly.
239-241: RWA consent strings correctly marked obsoleteMultiple
RwaConsentModal-related consent and eligibility lines are now#~-commented (obsolete). That’s consistent with deprecating these texts and has no runtime impact; leaving their (English)msgstrvalues is harmless since they’re no longer loaded.Also applies to: 448-449, 539-542, 580-583, 1048-1057, 1367-1369, 1379-1381, 1888-1889, 2004-2006, 2057-2058, 3607-3608, 5704-5706, 5755-5757, 5955-5957
| #: apps/cowswap-frontend/src/common/pure/CancellationModal/index.tsx | ||
| msgid "Cancelling order with id {shortId}:<0/><1>{orderSummary}</1>" | ||
| msgstr "" | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add Spanish translation for new cancellation summary (orderSummary)
The new string
msgid "Cancelling order with id {shortId}:<0/><1>{orderSummary}</1>"
msgstr ""has an empty msgstr, so Spanish users will see the English text. There’s also an obsolete variant using {summary} below. Please add a proper Spanish translation and keep the new {orderSummary} placeholder.
Proposed fix
-#: apps/cowswap-frontend/src/common/pure/CancellationModal/index.tsx
-msgid "Cancelling order with id {shortId}:<0/><1>{orderSummary}</1>"
-msgstr ""
+#: apps/cowswap-frontend/src/common/pure/CancellationModal/index.tsx
+msgid "Cancelling order with id {shortId}:<0/><1>{orderSummary}</1>"
+msgstr "Cancelando la orden con id {shortId}:<0/><1>{orderSummary}</1>"Also applies to: 864-867
🤖 Prompt for AI Agents
In apps/cowswap-frontend/src/locales/es-ES.po around lines 782-785 (and
similarly at 864-867), the msgstr for the new cancellation summary is empty; add
a Spanish translation that preserves the placeholders and inline tags exactly
(keep {shortId}, <0/>, <1> and {orderSummary} intact). For example, set msgstr
to a natural Spanish phrase such as "Cancelando orden con id
{shortId}:<0/><1>{orderSummary}</1>" (apply the same fix to the duplicate at
lines 864-867).
| #: apps/cowswap-frontend/src/common/pure/CancellationModal/ModalTopContent.tsx | ||
| msgid "On-chain cancellations require a regular on-chain transaction and cost gas." | ||
| msgstr "Las cancelaciones en cadena requieren una transacción regular en cadena y gas de coste." | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix typo and improve Spanish wording for cancellation cost copy
Two small issues in the cancellation cost strings:
-
Line 1450 (
"On-chain cancellations require a regular on-chain transaction and cost gas.") is currently translated as
Las cancelaciones en cadena requieren una transacción regular en cadena y gas de coste.
which is a bit awkward. -
Line 2385 (
"Tx cost:") is translated as
Costo x x:
which looks like a clear typo in the UI.
Suggested wording improvements
- msgid "On-chain cancellations require a regular on-chain transaction and cost gas."
- msgstr "Las cancelaciones en cadena requieren una transacción regular en cadena y gas de coste."
+ msgid "On-chain cancellations require a regular on-chain transaction and cost gas."
+ msgstr "Las cancelaciones on-chain requieren una transacción normal en cadena y tienen un costo de gas."
- msgid "Tx cost:"
- msgstr "Costo x x:"
+ msgid "Tx cost:"
+ msgstr "Costo de la tx:"Also applies to: 2383-2386
🤖 Prompt for AI Agents
In apps/cowswap-frontend/src/locales/es-ES.po around lines 1448-1451 and
2383-2386, fix the awkward/typo translations: replace the line for "On-chain
cancellations require a regular on-chain transaction and cost gas." with a
clearer Spanish string such as "Las cancelaciones on-chain requieren una
transacción on-chain normal y conllevan un coste de gas." and correct the "Tx
cost:" translation (currently garbled as "Costo x x:") to a proper phrase like
"Coste de transacción:" (or "Coste de tx:" if you prefer the abbreviation) in
both occurrences; ensure phrasing and punctuation match project locale
conventions.
| #: apps/cowswap-frontend/src/common/pure/CancellationModal/index.tsx | ||
| msgid "Cancelling order with id {shortId}:<0/><1>{orderSummary}</1>" | ||
| msgstr "" | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
New cancellation summary string missing PT‑BR translation
The new msgid
"Cancelling order with id {shortId}:<0/><1>{orderSummary}</1>"
has an empty msgstr, so users will see English here.
Consider adding a PT‑BR translation such as:
Suggested translation
- msgid "Cancelling order with id {shortId}:<0/><1>{orderSummary}</1>"
- msgstr ""
+ msgid "Cancelling order with id {shortId}:<0/><1>{orderSummary}</1>"
+ msgstr "Cancelando ordem com id {shortId}:<0/><1>{orderSummary}</1>"📝 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.
| #: apps/cowswap-frontend/src/common/pure/CancellationModal/index.tsx | |
| msgid "Cancelling order with id {shortId}:<0/><1>{orderSummary}</1>" | |
| msgstr "" | |
| #: apps/cowswap-frontend/src/common/pure/CancellationModal/index.tsx | |
| msgid "Cancelling order with id {shortId}:<0/><1>{orderSummary}</1>" | |
| msgstr "Cancelando ordem com id {shortId}:<0/><1>{orderSummary}</1>" | |
🤖 Prompt for AI Agents
In apps/cowswap-frontend/src/locales/pt-BR.po around lines 780–783 the msgid
"Cancelling order with id {shortId}:<0/><1>{orderSummary}</1>" has an empty
msgstr; add a Portuguese‑Brazil translation into msgstr, making sure to preserve
the placeholders ({shortId}, {orderSummary}) and the inline tags (<0/>,
<1>...</1>) exactly as in the msgid so interpolation and markup continue to
work.
| #: apps/cowswap-frontend/src/common/pure/CancellationModal/index.tsx | ||
| msgid "Cancelling order with id {shortId}:<0/><1>{orderSummary}</1>" | ||
| msgstr "" | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing Russian translation for new cancellation status line
This new string will show up in English for RU users because msgstr is empty. Please add a translation.
Suggested RU translation
msgid "Cancelling order with id {shortId}:<0/><1>{orderSummary}</1>"
-msgstr ""
+msgstr "Отмена ордера с ID {shortId}:<0/><1>{orderSummary}</1>"🤖 Prompt for AI Agents
In apps/cowswap-frontend/src/locales/ru-RU.po around lines 782-785, the msgstr
for the new cancellation message is empty causing RU users to see English; add a
Russian translation string into msgstr that preserves the placeholders and
markup exactly ({shortId}, <0/>, <1>{orderSummary}</1>) and matches original
punctuation and context so the line reads appropriately in Russian.
| msgid "Tx cost:" | ||
| msgstr "Tx стоимость:" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unnatural label for “Tx cost:”
“Tx стоимость:” is not idiomatic Russian and keeps the English abbreviation in an odd position. A normal UI label would spell this out.
Suggested fix
msgid "Tx cost:"
-msgstr "Tx стоимость:"
+msgstr "Стоимость транзакции:"📝 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.
| msgid "Tx cost:" | |
| msgstr "Tx стоимость:" | |
| msgid "Tx cost:" | |
| msgstr "Стоимость транзакции:" |
🤖 Prompt for AI Agents
In apps/cowswap-frontend/src/locales/ru-RU.po around lines 2384-2385, the
translation "Tx стоимость:" is unnatural; replace the msgstr value with a fully
spelled-out, idiomatic Russian label such as "Стоимость транзакции:" (i.e.
change msgstr "Tx стоимость:" to msgstr "Стоимость транзакции:") so the UI
displays a natural, localized string.
| #: apps/cowswap-frontend/src/common/pure/CancellationModal/ModalTopContent.tsx | ||
| msgid "Keep in mind a solver might already have included the order in a solution even if this cancellation is successful." | ||
| msgstr "Имейте в виду, что решение уже включало заказ в решение, даже если это отмена выполнена успешно." | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Clarify solver cancellation warning in Russian
Current RU: “Имейте в виду, что решение уже включало заказ в решение, даже если это отмена выполнена успешно.” is hard to parse and repeats “решение”.
Suggestion is more natural and preserves the “might already have included” nuance and explicit mention of a solver.
Suggested rewording
msgid "Keep in mind a solver might already have included the order in a solution even if this cancellation is successful."
-msgstr "Имейте в виду, что решение уже включало заказ в решение, даже если это отмена выполнена успешно."
+msgstr "Имейте в виду, что даже если отмена пройдёт успешно, солвер мог уже включить этот ордер в своё решение."🤖 Prompt for AI Agents
In apps/cowswap-frontend/src/locales/ru-RU.po around lines 3208-3211, the
current Russian msgstr is awkward and repeats "решение"; replace it with a
clearer, more natural phrasing that preserves "might already have included" and
references the solver explicitly, e.g. change the msgstr to: "Учтите, что солвер
мог уже включить этот ордер в своё решение, даже если отмена прошла успешно."
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (1)
apps/cowswap-frontend/src/locales/en-US.po (1)
222-225: Cancellation modal copy is coherent; consider reducing sentence fragmentation for better i18nThe new/updated strings for the cancellation modal (confirmation question, on-/off‑chain explanations, “Tx cost:”, “Unknown”, “more/less”, and the new summary template) look consistent and grammatically fine in en‑US.
However, composing phrases like “This is an on-chain/off-chain cancellation” out of separate msgids (
"This is an","on-chain"/"off-chain","cancellation") can make translation harder in some languages (articles, word order, gender, etc.). If you see awkward translations in non‑English locales, consider replacing this with a single sentence-level key so translators can reorder words freely.Also applies to: 785-788, 867-870, 1451-1453, 1663-1665, 1773-1775, 2353-2355, 2390-2392, 3912-3915, 4247-4251, 4446-4449
📜 Review details
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
apps/cowswap-frontend/src/locales/en-US.po
🧰 Additional context used
🧠 Learnings (5)
📚 Learning: 2025-10-10T20:28:16.565Z
Learnt from: fairlighteth
Repo: cowprotocol/cowswap PR: 6347
File: apps/cowswap-frontend/src/modules/trade/pure/TradeConfirmation/index.tsx:49-49
Timestamp: 2025-10-10T20:28:16.565Z
Learning: In apps/cowswap-frontend/src/modules/trade, TradeConfirmation follows a two-layer architecture: TradeConfirmationView (pure/stateless) in pure/TradeConfirmation/index.tsx renders the UI, while TradeConfirmation (container) in containers/TradeConfirmation/index.tsx wraps it to freeze props during pending trades (via useStableTradeConfirmationProps), wire in signing state (useSigningStep), and inject trade confirmation state (useTradeConfirmState). Consuming modules should import the container TradeConfirmation from 'modules/trade' to preserve this stateful behavior.
<!-- [add_learning]
When reviewing component refactoring in apps/cowswap-frontend/src/modules/trade, recognize the pattern where a pure view component (e.g., TradeConfirmationView) is separated from a stateful container (e.g., TradeConfirmation) that wraps it. The container adds runtime state management (prop stabilization, signing state, etc.) while the view remains testable and composable. Do not flag usages that import th...
Applied to files:
apps/cowswap-frontend/src/locales/en-US.po
📚 Learning: 2025-10-13T19:41:31.440Z
Learnt from: limitofzero
Repo: cowprotocol/cowswap PR: 6351
File: apps/cowswap-frontend/src/modules/erc20Approve/containers/TradeApproveModal/useTradeApproveCallback.ts:87-121
Timestamp: 2025-10-13T19:41:31.440Z
Learning: In apps/cowswap-frontend/src/modules/erc20Approve, useApproveCallback returns Promise<TransactionResponse | undefined> and is distinct from useApproveCurrency, which can return Promise<TransactionReceipt | SafeMultisigTransactionResponse>. When reviewing approval flows, verify which hook is actually being used before flagging Safe wallet concerns.
Applied to files:
apps/cowswap-frontend/src/locales/en-US.po
📚 Learning: 2025-02-20T15:59:33.749Z
Learnt from: shoom3301
Repo: cowprotocol/cowswap PR: 5443
File: apps/cowswap-frontend/src/modules/swap/containers/ConfirmSwapModalSetup/index.tsx:71-71
Timestamp: 2025-02-20T15:59:33.749Z
Learning: The swap module in apps/cowswap-frontend/src/modules/swap/ is marked for deletion in PR #5444 as part of the swap widget unification effort.
Applied to files:
apps/cowswap-frontend/src/locales/en-US.po
📚 Learning: 2025-07-24T16:42:53.154Z
Learnt from: cowdan
Repo: cowprotocol/cowswap PR: 6009
File: apps/cowswap-frontend/src/modules/tradeWidgetAddons/containers/HighFeeWarning/HighFeeWarningTooltipContent.tsx:23-33
Timestamp: 2025-07-24T16:42:53.154Z
Learning: In apps/cowswap-frontend/src/modules/tradeWidgetAddons/containers/HighFeeWarning/HighFeeWarningTooltipContent.tsx, the use of toFixed(2) for percentage formatting in tooltip content is intentional and differs from the banner message formatting that uses toSignificant(2, undefined, Rounding.ROUND_DOWN). This formatting difference serves different UX purposes and should not be flagged as inconsistent.
Applied to files:
apps/cowswap-frontend/src/locales/en-US.po
📚 Learning: 2025-06-25T07:28:32.570Z
Learnt from: shoom3301
Repo: cowprotocol/cowswap PR: 5881
File: apps/cowswap-frontend/src/modules/cowShed/containers/ProxyRecipient/index.tsx:68-72
Timestamp: 2025-06-25T07:28:32.570Z
Learning: In the ProxyRecipient component (apps/cowswap-frontend/src/modules/cowShed/containers/ProxyRecipient/index.tsx), throwing an error when recipient address doesn't match proxy address is intentional design choice to prevent proceeding with incorrect data and ensure data integrity.
Applied to files:
apps/cowswap-frontend/src/locales/en-US.po
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: Setup
- GitHub Check: Cypress
🔇 Additional comments (1)
apps/cowswap-frontend/src/locales/en-US.po (1)
3002-3005: The placeholder{accountProxyLabel}correctly matches the variable provided in code.The implementation in
apps/cowswap-frontend/src/modules/tradeFormValidation/pure/TradeFormButtons/tradeButtonsMap.tsxretrieves the label viaconst accountProxyLabel = i18n._(ACCOUNT_PROXY_LABEL)and passes it to the<Trans>component, which properly interpolates the variable into the i18n strings. No rendering issues will occur.
| #: apps/cowswap-frontend/src/common/hooks/useBlockNumber/useBlockNumber.ts | ||
| msgid "BlockNumber hooks must be wrapped in a" | ||
| msgstr "BlockNumber hooks must be wrapped in a" | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
“BlockNumber hooks must be wrapped in a” reads incomplete; clarify full message
The error text "BlockNumber hooks must be wrapped in a" is syntactically incomplete if surfaced as-is. If the intent is something like “BlockNumber hooks must be wrapped in a BlockNumberProvider.”, consider either:
- Updating the string to the full sentence, or
- Including the provider name as a placeholder in the translation (e.g.
"BlockNumber hooks must be wrapped in a <0>BlockNumberProvider</0>").
That will make the message clearer to users and easier to translate.
🤖 Prompt for AI Agents
In apps/cowswap-frontend/src/locales/en-US.po around lines 3420 to 3423, the
msgid/msgstr "BlockNumber hooks must be wrapped in a" is incomplete; update the
translation to a complete sentence that names the provider (e.g. "BlockNumber
hooks must be wrapped in a BlockNumberProvider.") or use a placeholder for the
provider name (e.g. include "<0>BlockNumberProvider</0>") so the runtime message
is clear and translatable; ensure msgid and msgstr remain consistent and adjust
any placeholders/markup to match how translations are rendered in the app.
Summary by CodeRabbit
✏️ Tip: You can customize this high-level summary in your review settings.