- Add expo-localization, i18next, react-i18next (versions aligned with Expo 54 / RN 0.81) - src/lib/i18n/locale-resolve.ts: pure locale-resolution helpers (system tag -> supported catalog, with en fallback), unit-tested via node --test with no RN imports - src/lib/i18n/config.ts: i18next init wired to expo-localization device detection, en.json + zh-Hans.json catalogs - Persist a locale preference (system | en | zh-Hans) in the settings zustand store, applied immediately via i18next.changeLanguage - Wire I18nextProvider in app/_layout.tsx - Localize the Settings screen (~28 strings) as the reference pattern for extracting user-facing strings, with a language picker row and reviewed Simplified Chinese translations Other screens (session/[id], connection/*, index, chat components) are deferred follow-up — issue #68 stays open for that work. Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -5,6 +5,8 @@ import { useColorScheme, View, ActivityIndicator } from "react-native"
|
||||
import { QueryClient, QueryClientProvider } from "@tanstack/react-query"
|
||||
import { GestureHandlerRootView } from "react-native-gesture-handler"
|
||||
import { BottomSheetModalProvider } from "@gorhom/bottom-sheet"
|
||||
import { I18nextProvider } from "react-i18next"
|
||||
import i18n from "../src/lib/i18n/config"
|
||||
import { useAuth } from "../src/stores/auth"
|
||||
import { useConnections } from "../src/stores/connections"
|
||||
import { useEvents } from "../src/stores/events"
|
||||
@@ -107,6 +109,7 @@ function RootLayout() {
|
||||
|
||||
return (
|
||||
<ErrorBoundary>
|
||||
<I18nextProvider i18n={i18n}>
|
||||
<GestureHandlerRootView style={{ flex: 1 }}>
|
||||
<BottomSheetModalProvider>
|
||||
<QueryClientProvider client={queryClient}>
|
||||
@@ -162,6 +165,7 @@ function RootLayout() {
|
||||
setConsentState("decided")
|
||||
}}
|
||||
/>
|
||||
</I18nextProvider>
|
||||
</ErrorBoundary>
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user