* Refactor translation imports and update text for localization across settings and system monitor routes - Changed translation import from 'react-i18next' to '@/i18n/react-i18next-compat' in multiple files. - Updated various text strings to use translation keys for better localization support in: - Local API Server settings - MCP Servers settings - Privacy settings - Provider settings - Shortcuts settings - System Monitor - Thread details - Ensured consistent use of translation keys for all user-facing text. Update web-app/src/routes/settings/appearance.tsx Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> Update web-app/src/routes/settings/appearance.tsx Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> Update web-app/src/locales/vn/settings.json Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> Update web-app/src/containers/dialogs/DeleteMCPServerConfirm.tsx Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> Update web-app/src/locales/id/common.json Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * Add Chinese (Simplified and Traditional) localization files for various components - Created `tools.json`, `updater.json`, `assistants.json`, `chat.json`, `common.json`, `hub.json`, `logs.json`, `mcp-servers.json`, `provider.json`, `providers.json`, `settings.json`, `setup.json`, `system-monitor.json`, `tool-approval.json` in both `zh-CN` and `zh-TW` locales. - Added translations for tool approval, updater notifications, assistant management, chat interface, common UI elements, hub interactions, logging messages, MCP server configurations, provider management, settings options, setup instructions, and system monitoring. * Refactor localization strings for improved clarity and consistency in English, Indonesian, and Vietnamese settings files * Fix missing key and reword * fix pr comment --------- Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
46 lines
1.2 KiB
TypeScript
46 lines
1.2 KiB
TypeScript
import React, { ReactNode, useEffect, useCallback } from "react"
|
|
import i18next, { loadTranslations } from "./setup"
|
|
import { useGeneralSetting } from "@/hooks/useGeneralSetting"
|
|
import { TranslationContext } from "./context"
|
|
|
|
// Translation provider component
|
|
export const TranslationProvider: React.FC<{ children: ReactNode }> = ({ children }) => {
|
|
// Get the current language from general settings
|
|
const { currentLanguage } = useGeneralSetting()
|
|
|
|
// Load translations once when the component mounts
|
|
useEffect(() => {
|
|
try {
|
|
loadTranslations()
|
|
} catch (error) {
|
|
console.error("Failed to load translations:", error)
|
|
}
|
|
}, [])
|
|
|
|
// Update language when currentLanguage changes
|
|
useEffect(() => {
|
|
if (currentLanguage) {
|
|
i18next.changeLanguage(currentLanguage)
|
|
}
|
|
}, [currentLanguage])
|
|
|
|
// Memoize the translation function to prevent unnecessary re-renders
|
|
const translate = useCallback(
|
|
(key: string, options?: Record<string, unknown>) => {
|
|
return i18next.t(key, options)
|
|
},
|
|
[],
|
|
)
|
|
|
|
return (
|
|
<TranslationContext.Provider
|
|
value={{
|
|
t: translate,
|
|
i18n: i18next,
|
|
}}>
|
|
{children}
|
|
</TranslationContext.Provider>
|
|
)
|
|
}
|
|
|
|
export default TranslationProvider |