Skip to content

feat(i18n): add i18next with French and Portuguese translations#26

Merged
EmeditWeb merged 2 commits into
StepFi-app:mainfrom
OG-wura:core_implement_multi_language_support
Jun 17, 2026
Merged

feat(i18n): add i18next with French and Portuguese translations#26
EmeditWeb merged 2 commits into
StepFi-app:mainfrom
OG-wura:core_implement_multi_language_support

Conversation

@OG-wura

@OG-wura OG-wura commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Close #19

PR Description

Summary

Closes #ISSUE_NUMBER — Internationalize StepFi for French and Portuguese
speakers in emerging African markets.

What's Changed

Dependencies

  • i18next, react-i18next, expo-localization

New Files

File Purpose
src/locales/en.json English translations (~130 keys)
src/locales/fr.json Complete French translations
src/locales/pt.json Complete Portuguese translations
src/locales/i18n.ts i18next config — async device detection, SecureStore persistence, isRTL() for future Arabic, formatCurrency()/formatDate() locale-aware helpers
hooks/useTranslation.ts Custom hook exposing t, changeLanguage, currentLanguage, isRTL

Modified Files

File Changes
app/_layout.tsx Wait for i18n init before rendering
app/(tabs)/_layout.tsx Dynamic tab labels via useTranslation()
app/(tabs)/index.tsx All strings → t() calls + locale-aware dates
app/(tabs)/loans.tsx All strings → t() calls
app/(tabs)/calendar.tsx All strings → t() calls + localized weekday/month arrays
app/(tabs)/reputation.tsx All strings → t() calls + localized tips/tiers
app/(tabs)/settings.tsx All strings → t() + language picker modal (EN/FR/PT)
app/(auth)/sign-in.tsx All onboarding slide text, tier labels, wallet names → t()
app/(auth)/role-select.tsx Role titles, descriptions, pills → t()
app/(auth)/register.tsx Labels, placeholders, button text → t()
components/reputation/ReputationProgressWidget.tsx Widget strings → t()

Acceptance Criteria

  • All UI text translatable
  • French translation complete
  • Portuguese translation complete
  • Language persists on app restart (SecureStore / localStorage)
  • npx expo export --platform web passes

Testing

  1. Run npx expo start — app loads in device-detected language
  2. Go to Settings → tap Language → pick Français
  3. Verify all screens display in French
  4. Kill and restart app — language persists
  5. Repeat for Português

@EmeditWeb EmeditWeb merged commit 46a71ad into StepFi-app:main Jun 17, 2026
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.

core: implement multi-language support (i18n)

2 participants