Grant Title
Grant Application - Internationalization setup for swap.cow.fi
Author(s)
Senior UI Developer - Gabriel: (gabitoesmiapodo (Gabito Esmiapodo) · GitHub)
Main Point of Contact - Margaret (margaret@bootnode.dev)
Experiences and qualifications
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) - gabitoesmiapodo (Gabito Esmiapodo) · GitHub
- UX/UI Designer/Developer - Tom (10+ years of design & development experience)
- FE Developer (with Redux skills) - Fer (15+ years of development experience) - fernandomg (Fernando Greco) · GitHub
- 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)
- xERC20 token Launchpad
- dAppBooster - front-end starter kit
More details on the mentioned projects are available by the link.
Grant Description:
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.
Type of Grant:
Milestones-based
Milestones:
Milestone # | Tasks & Deliverables | Outcomes | Due Date | Funding |
---|---|---|---|---|
M 1 | Design phase: 1. Provide a mockup for the language switcher (for dark/light modes) 2. Adjust as per CoW Swap team feedback. Deliverable: Language switcher design. |
- UI design has been approved | 1 day | 1,500 xDAI |
M 2 | Preparation phase: 1. Prepare technical evaluation of the suggested internationalization and translation tool (Internationalization: Lingui. Translation: Crowdin) 2. Get approval from the CoW Swap team Deliverable: Technical evaluation document of the suggested tools |
- Internationalization and translation tools selected and approved | 1 day | 1,000 xDAI |
M 3 | Implementation phase: 1. Update Lingui to v5 2. Fix automatic language detection (the browser’s / user’s language). 3. Internationalize the app using the approved tool (Lingui). Adjust the app’s UI to support different languages: - Scrap the whole app for text strings that need translation. - Add macros for internationalization file generation. - Keep layout modifications to a minimum, adjust container widths / heights / paddings were absolutely necessary. Most issues should be handled by word wrapping unless text is heavily cramped. 4. Generate Russian .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: Translated Russian .po file. |
- Lingui updated to v5 - The app detects the user’s language correctly - The app defaults to English if the user’s language is not available - A PR will be automatically created with the updated translations so they can be reviewed before merging. - UI (desktop and responsive) is properly adjusted to the chosen language |
4–6 days | 7,000 xDAI |
M 4 | Implementation phase: 1. Implement the language switcher (dropdown). It should be hidden when there are no translations to diverse languages. 2. Allow to disable the feature (hiding the dropdown) using a config variable or change a language with a console command for testing purposes. 3. Perform internal testing Deliverable: Working language switcher. |
- The user can select English or Russian. - The interface updates when the language is switched. - The app saves the selected language. - PR is set for UAT by CoW Swap team |
3–4 days | 3,500 xDAI |
M 5 | Rework after Frontend team review: 1. Fix issues/feedback. 2. Create a document explaining the process of generating and editing .po files for new languages. Deliverable: Document with instructions (how to set up accounts for translations and load translations to get a testable app version). |
- All feedback addressed. - A more polished app. - Clear process for adding languages that anyone can follow. |
2–3 days | 2,000 xDAI |
M 6 | Deployment 1. Deploy the updated app. 2. Handover call |
- swap.cow.fi website updated. - The CoW Swap team can easily add additional languages. |
1 day | 1,000 xDAI |
Length
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.
Funding Request:
We are requesting 16,000 xDAI and 14,000 COW to deliver the outlined scope of work.
xDAI amounts to be distributed upon successful completion and approval of each milestone, while COW - upon final delivery approval subject to a 6-month lock.
The grant will be utilized to deliver the above milestones during a period of 2-3 weeks for a team of a UX/UI designer and developer, FE developer, QA and a PM on as needed basis (potentially longer depending on CoW Swap’s feedback cycles).
Gnosis Chain Address
0x1C7645a077f2f2546bdf896eDEBE5743457462fC
Other Information
You can find testimonials from amazing projects on experience working with us by the link
Terms and Conditions
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.