- Add multi-language support to Overview page - Add multi-language support to Transactions page - Translate stats cards, buttons, and filters - All UI text now supports ID/EN switching Remaining: Profile page only
2.2 KiB
2.2 KiB
Multi-Language Translation Status
✅ Completed (60% - Core Features)
Infrastructure
- Language Context (
LanguageContext.tsx) - Translation files (
locales/id.ts,locales/en.ts) - Language toggle component (
LanguageToggle.tsx) - Integration in App.tsx
Translated Components
- AppSidebar - Navigation menu
- WalletDialog - Add/Edit wallet form
- TransactionDialog - Add/Edit transaction form
- Wallets Page - Complete wallet management
Toast Messages
- All toast notifications use Indonesian text
- Need to translate toast messages to use
thook
🔄 Remaining (40% - 3 Pages)
Pages to Translate
-
Overview.tsx (~30 strings)
- Dashboard cards
- Recent transactions
- Charts
- Empty states
-
Transactions.tsx (~25 strings)
- Transaction list
- Filters
- Stats cards
- Table headers
-
Profile.tsx (~50 strings)
- Personal info
- Security settings
- 2FA options
- Danger zone
Implementation Guide
For Each Page:
-
Add
useLanguagehook:const { t } = useLanguage() -
Replace hardcoded strings:
// Before <Button>Add Wallet</Button> // After <Button>{t.wallets.addWallet}</Button> -
Test language switching
Translation Keys Structure
{
common: { search, filter, add, edit, delete, ... },
nav: { overview, transactions, wallets, profile },
overview: { ... },
transactions: { ... },
wallets: { ... },
profile: { ... },
}
Testing Checklist
- Language toggle works
- Preference persists in localStorage
- Sidebar navigation translated
- Dialogs translated
- Wallets page translated
- Overview page translated
- Transactions page translated
- Profile page translated
- All toast messages translated
Estimated Time to Complete
- Overview page: ~15 minutes
- Transactions page: ~15 minutes
- Profile page: ~20 minutes
- Toast messages: ~10 minutes
- Testing: ~10 minutes
Total: ~70 minutes remaining
Notes
- Admin dashboard remains English-only (as requested)
- Default language: Indonesian (ID)
- Optional language: English (EN)
- Type-safe with full autocomplete support