Skip to content

Conversation

@alfetopito
Copy link
Collaborator

@alfetopito alfetopito commented Nov 14, 2025

Summary by CodeRabbit

  • Chores
    • Updated Spanish and Russian localization content and project metadata.
    • Cleared or reset numerous translation entries for re-population via updated localization workflow.
    • Adjusted localization metadata to align with new project and file mappings.

@vercel
Copy link

vercel bot commented Nov 14, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Updated (UTC)
cowfi Ready Ready Preview Nov 14, 2025 0:32am
explorer-dev Ready Ready Preview Nov 14, 2025 0:32am
swap-dev Ready Ready Preview Nov 14, 2025 0:32am
widget-configurator Ready Ready Preview Nov 14, 2025 0:32am
2 Skipped Deployments
Project Deployment Preview Updated (UTC)
cosmos Ignored Ignored Nov 14, 2025 0:32am
sdk-tools Ignored Ignored Preview Nov 14, 2025 0:32am

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 14, 2025

Walkthrough

The PR updates two CowSwap frontend localization files: Spanish (es-ES.po) has many translations cleared, and Russian (ru-RU.po) has translation edits plus updated Crowdin/project metadata.

Changes

Cohort / File(s) Change Summary
Localization — Spanish
apps/cowswap-frontend/src/locales/es-ES.po
Many msgstr entries replaced with empty strings or reset. No code or API changes.
Localization — Russian + Metadata
apps/cowswap-frontend/src/locales/ru-RU.po
Mixed updates to msgstr entries (some cleared, some edited) and header metadata changes (Project-Id-Version: intercambiovacacow-swap; PO-Revision-Date updated; X-Crowdin-Project/ID and X-Crowdin-File/ID updated to new values). No runtime logic changes.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

  • Verify mass clearing of translation strings in es-ES.po was intentional.
  • Confirm ru-RU.po Crowdin IDs, file IDs, Project-Id-Version, and revision timestamp are correct.
  • Spot-check several keys in both files to ensure no accidental loss of needed translations.

Poem

🐇 I nibble keys and hum a tune,
Strings cleared under the quiet moon.
Crowdin numbers shift and shine,
Blank pages ready — translation time! ✨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Description check ⚠️ Warning The pull request lacks any description content, missing all required sections from the template including Summary, To Test, and Background information. Add a pull request description following the template. Include a Summary explaining the Crowdin updates, testing steps, and any relevant background about these translation changes.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title 'New Crowdin updates' accurately describes the pull request, which updates translation files (es-ES.po and ru-RU.po) with new Crowdin localization metadata and content changes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch i18n_develop

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c674fb7 and 8d591e7.

📒 Files selected for processing (1)
  • apps/cowswap-frontend/src/locales/ru-RU.po (7 hunks)
🚧 Files skipped from review as they are similar to previous changes (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

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.

❤️ Share

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

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 4

🧹 Nitpick comments (1)
apps/cowswap-frontend/src/locales/ru-RU.po (1)

2452-2457: “TWAP” acronym fallback is reasonable but could be clarified

Falling back to the English “TWAP” is consistent with DeFi jargon; if Russian users are less familiar with the term, you might later consider a tooltip or glossary rather than localizing the label itself.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between bec1e54 and c674fb7.

📒 Files selected for processing (2)
  • apps/cowswap-frontend/src/locales/es-ES.po (28 hunks)
  • apps/cowswap-frontend/src/locales/ru-RU.po (6 hunks)
🧰 Additional context used
🧠 Learnings (4)
📚 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.po
  • apps/cowswap-frontend/src/locales/ru-RU.po
📚 Learning: 2025-07-24T16:43:47.639Z
Learnt from: cowdan
Repo: cowprotocol/cowswap PR: 6009
File: apps/cowswap-frontend/src/modules/tradeWidgetAddons/containers/HighFeeWarning/highFeeWarningHelpers.ts:18-20
Timestamp: 2025-07-24T16:43:47.639Z
Learning: In apps/cowswap-frontend/src/modules/tradeWidgetAddons/containers/HighFeeWarning/highFeeWarningHelpers.ts, the formatFeePercentage function uses ROUND_DOWN with toSignificant(2) for "at least X%" messaging. This ensures the displayed percentage is never higher than the actual fee, making the "at least" phrasing accurate. For example, if the actual fee is 25.4%, displaying "at least 25%" is correct, but "at least 26%" would be misleading.

Applied to files:

  • apps/cowswap-frontend/src/locales/es-ES.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.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/es-ES.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 (7)
apps/cowswap-frontend/src/locales/es-ES.po (2)

9-19: Header metadata updates look fine.

Project/version/Crowdin fields and revision date updated as expected.


1-1: Confirmed: 28 empty translations found, including critical acronyms (APR, TVL, N/A).

The verification script identified 28 empty msgstr entries in the Spanish locale file, with 11 being critical or short identifiers (APR, TVL, N/A, "gas", and single-character entries). These should be addressed before merge to ensure proper Spanish localization.

apps/cowswap-frontend/src/locales/ru-RU.po (5)

9-19: Header metadata update looks consistent

Project ID, file ID, and revision date align with a Crowdin reconfiguration and don’t affect runtime behavior. No issues from a frontend perspective.


900-903: Empty msgstr for “APR” is acceptable

Clearing the translation will fall back to the English msgid “APR”, which is standard and likely what you want here.


1257-1260: “CoW AMM” left untranslated to fall back to brand name

Using an empty msgstr so the UI shows the exact brand term “CoW AMM” is sensible and avoids awkward localization.


1313-1315: “Bungee” brand name fallback

Same pattern here: empty msgstr will display the brand “Bungee” verbatim, which is appropriate for a product name.


1631-1633: “TVL” acronym fallback

Letting “TVL” display from the msgid is fine and keeps the commonly used DeFi acronym intact.

Comment on lines 556 to 559
#: apps/cowswap-frontend/src/modules/twap/utils/deadlinePartsDisplay.ts
msgid "h"
msgstr "h"
msgstr ""

Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Blocker: time-unit abbreviations were cleared, causing blank durations in UI.

Restore minimal, non-ambiguous abbreviations.

 #: apps/cowswap-frontend/src/modules/twap/utils/deadlinePartsDisplay.ts
 msgid "h"
-msgstr ""
+msgstr "h"

 #: apps/cowswap-frontend/src/modules/twap/utils/deadlinePartsDisplay.ts
 msgid "s"
-msgstr ""
+msgstr "s"

 #: apps/cowswap-frontend/src/modules/twap/utils/deadlinePartsDisplay.ts
 msgid "d"
-msgstr ""
+msgstr "d"

 #: apps/cowswap-frontend/src/modules/twap/utils/deadlinePartsDisplay.ts
 msgid "m"
-msgstr ""
+msgstr "m"

Also applies to: 1244-1247, 1890-1893, 4404-4407

🤖 Prompt for AI Agents
In apps/cowswap-frontend/src/locales/es-ES.po around lines 556-559 (and also at
1244-1247, 1890-1893, 4404-4407), the msgstr for time-unit abbreviations were
cleared causing blank durations in the UI; restore minimal, non-ambiguous
Spanish abbreviations by setting the msgstrs to appropriate short forms (for
example: hours -> "h", minutes -> "min", seconds -> "s", days -> "d") matching
each msgid so the UI shows the correct abbreviated units.

Comment on lines 900 to 905
#: apps/cowswap-frontend/src/modules/tokensList/containers/LpTokenPage/index.tsx
msgid "APR"
msgstr "APR"
msgstr ""

#: apps/cowswap-frontend/src/common/pure/NetworksList/index.tsx
msgid "CoW Protocol Explorer"
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

High‑impact labels/acronyms emptied; avoid blank chips/badges.

Passthrough acronyms/brands; localize where stable.

 #: apps/cowswap-frontend/src/modules/tokensList/containers/LpTokenPage/index.tsx
 msgid "APR"
-msgstr ""
+msgstr "APR"

 #: apps/cowswap-frontend/src/modules/tokensList/containers/LpTokenPage/index.tsx
 msgid "TVL"
-msgstr ""
+msgstr "TVL"

 #: apps/cowswap-frontend/src/modules/wallet/pure/StatusIcon/index.tsx
 msgid "WalletConnect"
-msgstr ""
+msgstr "WalletConnect"

 #: apps/cowswap-frontend/src/modules/tradeWidgetAddons/containers/TransactionSlippageInput/index.tsx
 msgid "Auto"
-msgstr ""
+msgstr "Auto"

 #: apps/cowswap-frontend/src/modules/hooksStore/pure/HookDappDetails/index.tsx
 msgid "N/A"
-msgstr ""
+msgstr "N/D"

 #: apps/cowswap-frontend/src/common/constants/routes.ts
 msgid "gas"
-msgstr ""
+msgstr "gas"

 #: apps/cowswap-frontend/src/common/pure/CoWAmmBannerContent/index.tsx
 msgid "pool"
-msgstr ""
+msgstr "pool"

 #: apps/cowswap-frontend/src/modules/swap/containers/SwapConfirmModal/index.tsx
 msgid "token"
-msgstr ""
+msgstr "token"

 #: apps/cowswap-frontend/src/legacy/components/Tokens/TokensTable.tsx
 msgid "Token"
-msgstr ""
+msgstr "Token"

Also applies to: 1631-1634, 1748-1750, 2808-2811, 4280-4283, 2693-2696, 6125-6127, 294-298, 3054-3057

🤖 Prompt for AI Agents
In apps/cowswap-frontend/src/locales/es-ES.po around lines 900-905, the msgstr
entries for acronyms/brand labels (e.g., "APR" and "CoW Protocol Explorer") are
empty; update the msgstr to be the same as the msgid (passthrough) so
chips/badges don't render blank (e.g., set msgstr "APR" and msgstr "CoW Protocol
Explorer"); apply the same fix to the other reported ranges (1631-1634,
1748-1750, 2808-2811, 4280-4283, 2693-2696, 6125-6127, 294-298, 3054-3057) by
ensuring acronyms/brand msgstr values mirror their msgid instead of being empty.

Comment on lines 1258 to 1261
#: apps/cowswap-frontend/src/modules/application/containers/App/menuConsts.tsx
msgid "CoW AMM"
msgstr "CoW AMM"
msgstr ""

Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Core navigation/feature labels cleared; re-add to prevent empty menus and sections.

Keep brands/acronyms; translate stable terms.

 #: apps/cowswap-frontend/src/common/containers/CoWAmmBanner/index.tsx
 msgid "CoW AMM"
-msgstr ""
+msgstr "CoW AMM"

 #: libs/common-const/src/common.ts
 msgid "TWAP"
-msgstr ""
+msgstr "TWAP"

 #: apps/cowswap-frontend/src/common/constants/routes.ts
 msgid "Yield"
-msgstr ""
+msgstr "Rendimiento"

 #: apps/cowswap-frontend/src/common/containers/OrderHooksDetails/index.tsx
 msgid "Pre Hooks"
-msgstr ""
+msgstr "Pre Hooks"

 #: apps/cowswap-frontend/src/common/containers/OrderHooksDetails/index.tsx
 msgid "POST"
-msgstr ""
+msgstr "POST"

 #: apps/cowswap-frontend/src/common/containers/OrderHooksDetails/index.tsx
 msgid "PRE"
-msgstr ""
+msgstr "PRE"

 #: apps/cowswap-frontend/src/modules/application/containers/App/menuConsts.tsx
 msgid "Legal"
-msgstr ""
+msgstr "Legal"

 #: apps/cowswap-frontend/src/modules/application/containers/App/menuConsts.tsx
 msgid "FAQs"
-msgstr ""
+msgstr "Preguntas frecuentes"

 #: apps/cowswap-frontend/src/modules/application/containers/App/menuConsts.tsx
 msgid "Tokens"
-msgstr ""
+msgstr "Tokens"

Also applies to: 2453-2458, 3310-3315, 716-719, 1270-1273, 3850-3853, 5698-5700, 3752-3755, 814-819

🤖 Prompt for AI Agents
In apps/cowswap-frontend/src/locales/es-ES.po around lines 1258-1261 (and also
update the empty entries at 2453-2458, 3310-3315, 716-719, 1270-1273, 3850-3853,
5698-5700, 3752-3755, 814-819), restore non-empty msgstr values so core
navigation/feature labels are not blank; for brand names/acronyms like "CoW AMM"
keep the original text (msgstr "CoW AMM") and for any stable/common terms
provide the appropriate Spanish translation while preserving brand
capitalization and acronyms.

Comment on lines 1314 to 1316
msgid "Bungee"
msgstr "Bungee"
msgstr ""

Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Brand/feature names should not be empty.

Preserve brand; provide clear Spanish for feature.

 #: libs/hook-dapp-lib/src/hookDappsRegistry.ts
 msgid "Bungee"
-msgstr ""
+msgstr "Bungee"

 #: libs/hook-dapp-lib/src/hookDappsRegistry.ts
 msgid "Aave Collateral Swap Flashloan"
-msgstr ""
+msgstr "Flashloan de intercambio de garantía de Aave"

Also applies to: 4979-4981

🤖 Prompt for AI Agents
In apps/cowswap-frontend/src/locales/es-ES.po around lines 1314-1316 (and
similarly at 4979-4981) the msgstr for the brand/feature "Bungee" is empty;
populate msgstr with the preserved brand name (e.g., "Bungee") or "Bungee" plus
a brief Spanish descriptor if context requires (e.g., "Bungee
(servicio/función)"), ensuring the brand text is not translated away and the
Spanish string provides clear context.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants