mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-06-22 10:32:00 +00:00
Introduce a lightweight React context-based i18n layer for the desktop app and translate the UI into Simplified Chinese. - New apps/desktop/src/i18n module: typed Translations interface, en + zh locale tables, I18nProvider/useI18n, localStorage-persisted locale (defaults to English), and language endonym metadata for the picker. - Wire I18nProvider at the app root in main.tsx. - Refactor 24 desktop screens/components to read strings from the `t` object instead of hard-coded English. - Add a unit test for the i18n context.
43 lines
1.4 KiB
TypeScript
43 lines
1.4 KiB
TypeScript
import './styles.css'
|
|
|
|
import { QueryClientProvider } from '@tanstack/react-query'
|
|
import { StrictMode } from 'react'
|
|
import { createRoot } from 'react-dom/client'
|
|
import { HashRouter } from 'react-router-dom'
|
|
|
|
import App from './app'
|
|
import { ErrorBoundary } from './components/error-boundary'
|
|
import { HapticsProvider } from './components/haptics-provider'
|
|
import { I18nProvider } from './i18n'
|
|
import { installClipboardShim } from './lib/clipboard'
|
|
import { queryClient } from './lib/query-client'
|
|
import { ThemeProvider } from './themes/context'
|
|
|
|
installClipboardShim()
|
|
|
|
// Dev-only: install __PERF_DRIVE__ + __PERF_PROBE__ on window so the
|
|
// scripts/ harnesses can drive a synthetic stream + record render cost.
|
|
// Tree-shaken out of production builds. (Uses MODE rather than DEV because
|
|
// our Vite setup currently bundles with PROD=true even in `vite dev`; see
|
|
// scripts/dev-no-hmr.mjs for the surrounding workarounds.)
|
|
if (import.meta.env.MODE !== 'production') {
|
|
import('./app/chat/perf-probe')
|
|
}
|
|
|
|
createRoot(document.getElementById('root')!).render(
|
|
<StrictMode>
|
|
<ErrorBoundary label="root">
|
|
<QueryClientProvider client={queryClient}>
|
|
<I18nProvider>
|
|
<ThemeProvider>
|
|
<HapticsProvider>
|
|
<HashRouter>
|
|
<App />
|
|
</HashRouter>
|
|
</HapticsProvider>
|
|
</ThemeProvider>
|
|
</I18nProvider>
|
|
</QueryClientProvider>
|
|
</ErrorBoundary>
|
|
</StrictMode>
|
|
)
|