feat(i18n): extract remaining screens into en/zh-Hans catalogs; full Simplified Chinese coverage (closes #68) (#103)
Extends the i18n infra from #97 (Settings screen only) to the rest of the app: session chat screen, connection add/edit/list screens, sessions list (incl. directory grouping from #96), navigation titles, notifications category metadata, error boundary, telemetry consent modal, auth gate, and every chat UI component (permission/question prompts, status indicator, model/variant pickers, directory switcher/browser, reasoning block, tool call card, session info). - 244 new keys added to en.json/zh-Hans.json with reviewed, natural Simplified Chinese (not machine-garbage), keeping key sets identical. - User content, server URLs, code snippets, log/error-detail text, and diagnostics-classify.ts (pure dependency-free module feeding Sentry/ support reports) are intentionally left untranslated per scope. - Interpolation used for counts/names (e.g. reconnect attempt, files count, connection name in delete confirmations); categoryMeta/ CONNECTION_TYPES switched to labelKey indirection since they're module-level constants evaluated before i18next is guaranteed ready. - Added src/lib/i18n/catalog-parity.test.ts (node --test) asserting en.json/zh-Hans.json expose identical key sets and no empty values, to catch future locale drift. Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -5,7 +5,7 @@ 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 { I18nextProvider, useTranslation } from "react-i18next"
|
||||
import i18n from "../src/lib/i18n/config"
|
||||
import { useAuth } from "../src/stores/auth"
|
||||
import { useConnections } from "../src/stores/connections"
|
||||
@@ -25,6 +25,7 @@ const queryClient = new QueryClient()
|
||||
function RootLayout() {
|
||||
const colorScheme = useColorScheme()
|
||||
const isDark = colorScheme === "dark"
|
||||
const { t } = useTranslation()
|
||||
|
||||
const { initialize: initAuth, isLoading: authLoading } = useAuth()
|
||||
const { loadConnections, isLoading: connectionsLoading, client } = useConnections()
|
||||
@@ -129,21 +130,21 @@ function RootLayout() {
|
||||
<Stack.Screen
|
||||
name="session/[id]"
|
||||
options={{
|
||||
title: "Session",
|
||||
title: t("session.titleFallback"),
|
||||
presentation: "card",
|
||||
}}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="connection/add"
|
||||
options={{
|
||||
title: "Add Connection",
|
||||
title: t("nav.addConnectionTitle"),
|
||||
presentation: "modal",
|
||||
}}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="connection/[id]"
|
||||
options={{
|
||||
title: "Edit Connection",
|
||||
title: t("nav.editConnectionTitle"),
|
||||
presentation: "modal",
|
||||
}}
|
||||
/>
|
||||
|
||||
Reference in New Issue
Block a user