feat(i18n): integrate i18n into main.tsx, routes and settings page
This commit is contained in:
parent
d05a13d7fc
commit
368b10d4e0
@ -88,6 +88,7 @@ import {AcceptWorkspaceInvitePage} from '@/app/auth/accept-workspace-invite-page
|
|||||||
import {WorkspaceRedirect} from '@/app/workspace/redirect';
|
import {WorkspaceRedirect} from '@/app/workspace/redirect';
|
||||||
import {InitWorkspace} from '@/app/init/workspace';
|
import {InitWorkspace} from '@/app/init/workspace';
|
||||||
import HomePage from '@/app/homepage/page';
|
import HomePage from '@/app/homepage/page';
|
||||||
|
import I18nDemo from '@/app/i18n-demo/page';
|
||||||
|
|
||||||
function App() {
|
function App() {
|
||||||
return (
|
return (
|
||||||
@ -123,6 +124,7 @@ function App() {
|
|||||||
|
|
||||||
<Route element={<ProtectedRoute/>}>
|
<Route element={<ProtectedRoute/>}>
|
||||||
<Route path="/homepage" element={<HomePage/>}/>
|
<Route path="/homepage" element={<HomePage/>}/>
|
||||||
|
<Route path="/i18n-demo" element={<I18nDemo/>}/>
|
||||||
<Route path="/search" element={<SearchPage/>}/>
|
<Route path="/search" element={<SearchPage/>}/>
|
||||||
|
|
||||||
<Route path="/init">
|
<Route path="/init">
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import { Separator } from '@/components/ui/separator';
|
|||||||
import { Switch } from '@/components/ui/switch';
|
import { Switch } from '@/components/ui/switch';
|
||||||
import { apiUserChangePassword, apiEmailChange, apiEmailGet, getPreferences, updatePreferences } from '@/client';
|
import { apiUserChangePassword, apiEmailChange, apiEmailGet, getPreferences, updatePreferences } from '@/client';
|
||||||
import {getApiErrorMessage} from '@/lib/api-error';
|
import {getApiErrorMessage} from '@/lib/api-error';
|
||||||
|
import i18n from '@/lib/i18n';
|
||||||
|
|
||||||
const LANGUAGES = [
|
const LANGUAGES = [
|
||||||
{ value: 'en', label: 'English' },
|
{ value: 'en', label: 'English' },
|
||||||
@ -388,7 +389,12 @@ export function SettingsAccount() {
|
|||||||
<Select
|
<Select
|
||||||
key={`language-${language}`}
|
key={`language-${language}`}
|
||||||
value={language}
|
value={language}
|
||||||
onValueChange={(value) => value && setLanguage(value)}
|
onValueChange={(value) => {
|
||||||
|
if (value) {
|
||||||
|
setLanguage(value);
|
||||||
|
i18n.changeLanguage(value);
|
||||||
|
}
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
<SelectTrigger id="language" className="w-full">
|
<SelectTrigger id="language" className="w-full">
|
||||||
<SelectValue />
|
<SelectValue />
|
||||||
|
|||||||
@ -4,8 +4,10 @@ import {BrowserRouter} from 'react-router-dom';
|
|||||||
import {Toaster} from 'sonner';
|
import {Toaster} from 'sonner';
|
||||||
import {UserProvider} from '@/contexts';
|
import {UserProvider} from '@/contexts';
|
||||||
import {ThemeProvider} from '@/contexts/theme-context';
|
import {ThemeProvider} from '@/contexts/theme-context';
|
||||||
|
import {LanguageProvider} from '@/lib/language-provider';
|
||||||
import './index.css';
|
import './index.css';
|
||||||
import App from './App.tsx';
|
import App from './App.tsx';
|
||||||
|
import '@/lib/i18n';
|
||||||
import {CommandPalette} from '@/components/shared/CommandPalette';
|
import {CommandPalette} from '@/components/shared/CommandPalette';
|
||||||
import {KeyboardShortcutsSheet} from '@/components/shared/KeyboardShortcutsSheet';
|
import {KeyboardShortcutsSheet} from '@/components/shared/KeyboardShortcutsSheet';
|
||||||
import {GlobalNavigationShortcuts} from '@/components/shared/GlobalNavigationShortcuts';
|
import {GlobalNavigationShortcuts} from '@/components/shared/GlobalNavigationShortcuts';
|
||||||
@ -31,6 +33,7 @@ createRoot(document.getElementById('root')!).render(
|
|||||||
<QueryClientProvider client={queryClient}>
|
<QueryClientProvider client={queryClient}>
|
||||||
<BrowserRouter>
|
<BrowserRouter>
|
||||||
<UserProvider>
|
<UserProvider>
|
||||||
|
<LanguageProvider>
|
||||||
<ThemeProvider>
|
<ThemeProvider>
|
||||||
<App/>
|
<App/>
|
||||||
<CommandPalette/>
|
<CommandPalette/>
|
||||||
@ -38,6 +41,7 @@ createRoot(document.getElementById('root')!).render(
|
|||||||
<GlobalNavigationShortcuts/>
|
<GlobalNavigationShortcuts/>
|
||||||
<Toaster richColors position="bottom-right"/>
|
<Toaster richColors position="bottom-right"/>
|
||||||
</ThemeProvider>
|
</ThemeProvider>
|
||||||
|
</LanguageProvider>
|
||||||
</UserProvider>
|
</UserProvider>
|
||||||
</BrowserRouter>
|
</BrowserRouter>
|
||||||
</QueryClientProvider>
|
</QueryClientProvider>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user