Grant Application - Internationalization setup for swap.cow.fi
Note: this is a revised version of a previous proposal.
Senior UI Developer - Gabriel: ( https://github.com/gabitoesmiapodo ) Main Point of Contact - Manuel (manuel@bootnode.dev)
BootNode is a high-output engineering and product shop specializing in DeFi, staking, infrastructure, and interoperability. We help protocols and builders ship faster and scale smarter — from zero to mainnet and beyond.
Our Expertise & Customers are available by the link.
The team that will be delivering the project includes:
UI Developer - Gabriel Rodriguez Alsina (10+ years of development experience) - https://github.com/gabitoesmiapodo
UX/UI Designer/Developer - Tom (10+ years of design & development experience)
FE Developer (with Redux skills) - Fer (15+ years of development experience) - https://github.com/fernandomg
Project Manager - Pablo
QA - Inaky (3+ years of testing experience)
Projects done by the team, including design and QA:
Wormhole - no-code Multichain Token Launchpad leveraging Wormhole’s NTT technology that allows users to upgrade existing ERC20 tokens or create entirely new multichain tokens securely and seamlessly.
Gnosis Bridge & Explorer that allows users to bridge DAI and other tokens from Ethereum to Gnosis Chain and back, and explore bridge transactions status (utilises xDAI and OmniBridge protocols under the hood).
uRamp that seamlessly handles the end-to-end flow of moving Euro from a Bank IBAN (International Bank Account Number) to any ERC20 on any EVM chain and back (leveraging the Monerium and Li.Fi SDKs to ensure a smooth experience).
Infinex Council-based governance FE (not live yet)
dAppBooster - front-end starter kit
More details on the mentioned projects are available by the link.
The grant aims to add internationalization to swap.cow.fi, helping to increase protocol usage across non-English-speaking markets while strengthening trust and brand recognition.
The initial implementation will support English (the current language) and Russian (for testing), with the possibility of adding additional languages in the future.
As an outcome of this grant delivery, we hope to have increased the number of transactions and new plus repeat visitors on the swap.cow.fi.
Current internationalization status and our technical suggestions:
Language Detection. The application currently does not correctly detect the browser’s language, which will be fixed. If the detected language is not available, the system will default to English. Additionally, the user’s language preference will be stored (similarly to how theme preferences are stored) if they choose a different language using the language selector.
State Management. Redux is currently used for state management and will continue to be utilized.
Internationalization Framework. Internationalization is currently implemented using the Lingui library, although it is not fully functional. Lingui is a solid tool, and there is no clear need to replace it. Switching to a different library would incur unnecessary time and resource costs. We therefore recommend:
Upgrading Lingui to version 5.
Completing any missing implementations and resolve existing configuration issues.
Translation Keys. While many macros for exporting translation keys have already been implemented, a significant number remain unaddressed. A complete review of the entire application will be done to identify and add the missing keys.
Language Selector Design. A minimal and appropriate design will be created to implement the language selector interface.
Language selector implementation.
The language selector will save the selected language using the current state management solution.
A configuration option will be added to hide/show the language selection dropdown.
A console command will be available to switch languages when the language selection dropdown is hidden.
Translation Management. We suggest handling translations using Crowdin. Initially, translations will be provided only for Russian.
Automated Translations and CI Integration can be done with a combination of Lingui, Crowdin, and GitHub actions. We tested the approach here. Crowdin translated this file automatically (used the Spanish file as an example).
Documentation. Instructional materials will be created to guide future contributors on how to add new internationalization files.
Milestones-based
M 1: Design phase Tasks:
Deliverable:
Outcomes:
Effort: 1 day
M 2 Preparation phase
Tasks:
Deliverable:
Outcomes:
Effort: 1 day
M 3 Implementation phase Tasks:
.po file (enable Russian in the Lingui settings + Crowdin project, set up a pre-push git hook for string extraction)
- Set up translations to update every time there’s a change to the translation files through a combination of: git hooks + Lingui + Crowdin + GitHub actions.Deliverable:
.po file.Outcomes:
Effort: 4–6 days
M 4 Implementation phase Tasks:
Deliverable:
Outcomes:
Effort: 3–4 days
M 5 Rework after Frontend team review Tasks:
Deliverables:
Outcomes:
Effort: 2-3 days
M 6 Deployment Tasks:
Outcomes:
Effort: 1 day
We envision the grant delivery to take 11-15 days (2-3 weeks). Actual delivery timeline will depend on the CoW Swap team’s review turnaround. This proposal does not include maintenance of the solution post deployment as it was not part of the requirements, but we are happy to provide light maintenance if requested.
We are ready to start as soon as the grant is approved.
9,600 xDAI and 8,400 $COW, with the $COW portion subject to a standard 12-month vesting period for vested $COW, contingent upon the completion and satisfactory review of all remaining milestones in line with the standard grants process.
The grant will be utilized to deliver the above milestones over a period of 2-3 weeks for a team consisting of a UX/UI designer, a developer, an FE developer, a QA, and a PM, on an as-needed basis (potentially longer depending on CoW Swap’s feedback cycles).
0x1C7645a077f2f2546bdf896eDEBE5743457462fC
By submitting this grant application, I acknowledge and agree to be bound by the CoW DAO Participation Agreement and the CoW DAO Grant Agreement Terms.