feat: Implement multi-language system (ID/EN) for member dashboard

- Create translation files (locales/id.ts, locales/en.ts)
- Add LanguageContext with useLanguage hook
- Add LanguageToggle component in sidebar
- Default language: Indonesian (ID)
- Translate WalletDialog and TransactionDialog
- Language preference persisted in localStorage
- Type-safe translations with autocomplete

Next: Translate remaining pages (Overview, Wallets, Transactions, Profile)
This commit is contained in:
dwindown
2025-10-12 08:51:48 +07:00
parent c0df4a7c2a
commit 371b5e0a66
10 changed files with 676 additions and 73 deletions

View File

@@ -1,5 +1,6 @@
import { BrowserRouter, Routes, Route, Navigate } from 'react-router-dom'
import { AuthProvider, useAuth } from './contexts/AuthContext'
import { LanguageProvider } from './contexts/LanguageContext'
import { ThemeProvider } from './components/ThemeProvider'
import { Toaster } from './components/ui/sonner'
import { Dashboard } from './components/Dashboard'
@@ -59,9 +60,10 @@ export default function App() {
return (
<BrowserRouter>
<ThemeProvider defaultTheme="light" storageKey="tabungin-ui-theme">
<AuthProvider>
<Toaster />
<Routes>
<LanguageProvider>
<AuthProvider>
<Toaster />
<Routes>
{/* Public Routes */}
<Route path="/auth/login" element={<PublicRoute><Login /></PublicRoute>} />
<Route path="/auth/register" element={<PublicRoute><Register /></PublicRoute>} />
@@ -81,7 +83,8 @@ export default function App() {
{/* Protected Routes */}
<Route path="/*" element={<ProtectedRoute><Dashboard /></ProtectedRoute>} />
</Routes>
</AuthProvider>
</AuthProvider>
</LanguageProvider>
</ThemeProvider>
</BrowserRouter>
)