Summary
Add Yoruba language translation to NexaFx. Yoruba is widely spoken in southwestern Nigeria and is the second priority expansion language for the platform. This builds on the i18n infrastructure from issue #45.
Prerequisites
What Needs to Be Done
1. Create messages/yo.json
Translate every key from messages/en.json into Yoruba. Same structure as en.json.
Key translations to prioritise:
{
"auth": {
"login": {
"title": "Wọle si NexaFx",
"emailLabel": "Àdírẹ́sì ìmẹ́ẹ̀lì",
"passwordLabel": "Ọ̀rọ̀ aṣínà",
"submitButton": "Wọle",
"forgotPassword": "Ṣé o gbàgbé ọ̀rọ̀ aṣínà rẹ?",
"noAccount": "Ṣé o ní àkọọ́lẹ̀?",
"signUp": "Forúkọsílẹ̀"
}
},
"dashboard": {
"balances": {
"title": "Àwọn ìwọntùnwọnsì rẹ",
"error": "A kò lè gbé ìwọntùnwọnsì — jọwọ tún gbìyànjú",
"empty": "Kò sí ìwọntùnwọnsì"
}
}
}
2. Update language switcher
Enable Yoruba: { code: 'yo', label: 'Yoruba (YO)', enabled: true }
3. Tonal marks
Yoruba uses tonal diacritics (e.g. à, á, ẹ, ọ, ṣ, n̄). Ensure all translations use correct diacritics — do not strip them.
4. Translation quality
- Natural Yoruba, not literal machine translation
- Flag uncertain entries with
// TODO: verify translation
Acceptance Criteria
⚠️ IMPORTANT — READ BEFORE SUBMITTING YOUR PR
Your pull request MUST target the v2 branch.
PRs targeting main or any other branch will not be reviewed and will not be merged.
Base branch: v2 ✅
Base branch: main ❌ → will be closed without review
Complexity: High — 200 points
Summary
Add Yoruba language translation to NexaFx. Yoruba is widely spoken in southwestern Nigeria and is the second priority expansion language for the platform. This builds on the i18n infrastructure from issue #45.
Prerequisites
messages/en.jsonmust exist with all strings extractedWhat Needs to Be Done
1. Create
messages/yo.jsonTranslate every key from
messages/en.jsoninto Yoruba. Same structure asen.json.Key translations to prioritise:
{ "auth": { "login": { "title": "Wọle si NexaFx", "emailLabel": "Àdírẹ́sì ìmẹ́ẹ̀lì", "passwordLabel": "Ọ̀rọ̀ aṣínà", "submitButton": "Wọle", "forgotPassword": "Ṣé o gbàgbé ọ̀rọ̀ aṣínà rẹ?", "noAccount": "Ṣé o ní àkọọ́lẹ̀?", "signUp": "Forúkọsílẹ̀" } }, "dashboard": { "balances": { "title": "Àwọn ìwọntùnwọnsì rẹ", "error": "A kò lè gbé ìwọntùnwọnsì — jọwọ tún gbìyànjú", "empty": "Kò sí ìwọntùnwọnsì" } } }2. Update language switcher
Enable Yoruba:
{ code: 'yo', label: 'Yoruba (YO)', enabled: true }3. Tonal marks
Yoruba uses tonal diacritics (e.g. à, á, ẹ, ọ, ṣ, n̄). Ensure all translations use correct diacritics — do not strip them.
4. Translation quality
// TODO: verify translationAcceptance Criteria
messages/yo.jsoncovers every key inmessages/en.jsonnpm run buildandnpm run lintpassComplexity: High — 200 points