Preamble
Requests for proposals are not intended to be prescriptive or exhaustive. The community is encouraged to submit proposals that expand upon the ideas presented in this post. The scope of the project may change based on the proposals received. The primary intent of this document is to provide a starting point to achieve the outlined goals, and the final implementation may differ from the initial proposal.
The request for proposal is open till 1st of July 2025. Proposals will be reviewed afterwards.
All applications will follow the standard Grants DAO process. This request should not be interpreted as an offer.
Simple Summary
CoW Swap app currently supports only English, but there are user requests to add support for additional languages.
This RFP aims to allow the app to be translated into multiple languages, making it accessible to a broader audience and enhancing the user experience for non-English speakers.
Goal
The goal of this project is to add internationalization to the CoW Swap app. It will help to increase the appâs reach and appeal to a broader audience.
This will involve setting up a project for the app transaction, adjusting the interface for different languages, and providing an option to switch between languages within the app settings.
Deliverables
Add support for multiple languages.
- Setting for languages change:
- Nicely designed and functional language switcher.
- Tool for internationalization
- Clear explanation about the tool picked with technical evaluation.
- Internationalization preparation:
- All strings are marked for translation;
- The app supports diverse languages.
- Automatic language detection:
- Use the browserâs locale settings to automatically detect the userâs language.
- Documentation:
- Instructions to set up accounts for translations;
- Instructions how to load translations to get a testable app version.
- Support and maintenance:
- Respond to the feedback and fix bugs within the scope of the grant.
Specification
- Add a setting for languages change:
- In the top right global setting menu
- Provide UI mockups to be approved by the Frontend core team;
- Account for dark/light modes;
- Handle a basic logic to hide the switcher when there are no translations to diverse languages;
- Do not translate language names in the settings.
- Evaluate options for translation libraries:
- Take into account CoW Swap is currently integrated with https://lingui.dev version 4.10 (probably weâll want to update to v5). Another option is https://crowdin.com/;
- Provide options to be approved by the Frontend core team with pros/cons.
- Prepare app for translation:
- Add a simple feature flag settable in the console that will control language switching feature;
- Review all string literals that are user-facing and mark them for translation (including error messages);
- Make sure the app builds and no crashes are introduced;
- Setup/provide instructions to set up accounts for translations.
- Handle diverse languages:
- Include basic sample text in languages with diverse writing systems to ensure the UI accommodates different styles. E.g. as non-Latin scripts, longer expressions. Russian is preferred for translation, as it effectively covers these cases;
- Adjust the appâs UI to support different languages.
- Automated translations:
- Setup translations to be run on every commit OR as a cronjob (on Github actions for example).
- Discoverability
- Detect the userâs browser locale and switch to a language they use on the app load;
- If there is no such language in the list, then switch to the default one (English);
- Provide the possibility to change the language, save userâs selection per browser: if a user chooses a language different from the browserâs locale settings, avoid automatically switching the language;
- Appâs URL should not be modified once a different language is selected.
- Method:
- Add internationalization (i18n) using a tool approved by the Frontend team.
Milestones
The grant should be split into milestones.
- Design phase:
- Provide a mockup for the language switcher;
- Rework after Frontend team review till the final approval.
- Preparation phase:
- Provide a tool for internationalization with a clear explanation about it and its technical evaluation.
- Implementation phase:
- Add a language switcher setting;
- Internationalize the app using the approved tool;
- Adjust the appâs UI to support different languages;
- Provide properly tested outcome for the 1st round of review.
- Rework after Frontendâs team review:
- Fix issues and address feedback.
- Provide a final outcome.
Evaluation Criteria
Proposals will be evaluated based on the following criteria:
- Technical Expertise;
- Project Plan and Timeline;
- Budget;
- Team Experience.
Values of Grants DAO and its Grants
These values may evolve and are listed in no particular order:
- Open Source: Integrations should be open source.
- Milestones: Milestones should be attainable and well-defined to ensure easy verification of completion.
- Price Transparency: Pricing should be broken down into optional and core metrics/deliverables to allow selective implementation.
- Sustainability: Address the sustainability of deliverables (e.g., who will manage, maintain, and for how long, including associated costs).
- Simplicity: Aim for simplicity. Completion is often more valuable than striving for perfectionâexcept for critical components, which must meet the highest standards.
- Documentation: Provide solid documentation to ensure that others can build on your work smoothly, where applicable.
- Flexibility: We recognize that some processes require flexibility (e.g., adding new features, adapting to changes in technology or infrastructure). Open communication is encouraged to adapt to these changes. Scope extensions and pricing changes typically require a committee vote.
- Quality: Aim for quality. Provided outcome should be properly tested and correspond to the CoW Protocol quality standards.
Call for Action
-
Community: Before the RFP closes, community members may provide feedback on the requested specification and milestones by commenting below.
-
Applicants: Proposals should be submitted by 30 June 2025 using the standard Grants Program template.
Selection Process
The evaluation of the proposals will start from the 1st of July 2025, when the RPF deadline closes.
The selection will be made by the Grants DAO committee at their discretion. The committee will consider the cost, timing, quality, and scope in their decision-making. Committee members may ask questions or make a decision independently. The committee can also decide to close or extend the timeline or go with none of the submitted proposals.
Currently, there are no official rejection criteria. If the forum discussion does not provide a clear outcome, an applicant can post their proposal to the Grants DAO Snapshot space and request a committee vote if needed.