diff --git a/src/renderer/src/components/LanguageSelector.tsx b/src/renderer/src/components/LanguageSelector.tsx
deleted file mode 100644
index 61733b0..0000000
--- a/src/renderer/src/components/LanguageSelector.tsx
+++ /dev/null
@@ -1,38 +0,0 @@
-import { useTranslation } from '../lib/i18n'
-import { useI18nStore } from '../store/i18nStore'
-import { Language } from '../store/i18nStore'
-import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from './ui/select'
-
-const languages = [
- { code: 'zh-CN' as Language, name: '简体中文', nativeName: '简体中文' },
- { code: 'en-US' as Language, name: 'English', nativeName: 'English' }
-]
-
-export const LanguageSelector = ({ className = '' }: { className?: string }) => {
- const { t } = useTranslation('common')
- const { language, changeLanguage } = useI18nStore()
-
- const handleLanguageChange = async (newLanguage: Language) => {
- await changeLanguage(newLanguage)
- }
-
- return (
-
-
-
-
- )
-}
diff --git a/src/renderer/src/components/Versions.tsx b/src/renderer/src/components/Versions.tsx
deleted file mode 100644
index 37a9ff0..0000000
--- a/src/renderer/src/components/Versions.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-import { useState } from 'react'
-
-function Versions(): React.JSX.Element {
- const [versions] = useState(window.electron.process.versions)
-
- return (
-
- - Electron v{versions.electron}
- - Chromium v{versions.chrome}
- - Node v{versions.node}
-
- )
-}
-
-export default Versions
diff --git a/src/renderer/src/lib/i18n.ts b/src/renderer/src/lib/i18n.ts
deleted file mode 100644
index ed17eab..0000000
--- a/src/renderer/src/lib/i18n.ts
+++ /dev/null
@@ -1,117 +0,0 @@
-import { useCallback } from 'react'
-import { useI18nStore } from '../store/i18nStore'
-
-// 语言类型定义
-export type Language = 'zh-CN' | 'en-US'
-export type Namespace = 'common' | 'chat' | 'settings' | 'notebook' | 'ui' | 'quiz'
-
-// 动态导入语言包
-const loadLocale = async (lang: Language, namespace: Namespace) => {
- const module = await import(`../locales/${lang}/${namespace}.json`)
- return module.default
-}
-
-// 缓存已加载的语言包
-const localeCache = new Map>()
-
-// 获取翻译文本的核心函数
-export const getTranslation = async (
- lang: Language,
- namespace: Namespace,
- key: string
-): Promise => {
- const cacheKey = `${lang}-${namespace}`
-
- // 如果缓存中有,直接使用
- if (localeCache.has(cacheKey)) {
- const locale = localeCache.get(cacheKey)!
- return getNestedValue(locale, key) || key
- }
-
- // 否则加载并缓存
- try {
- const locale = await loadLocale(lang, namespace)
- localeCache.set(cacheKey, locale)
- return getNestedValue(locale, key) || key
- } catch (error) {
- console.error(`Failed to load locale ${lang}/${namespace}:`, error)
- return key
- }
-}
-
-// 获取嵌套对象的值
-const getNestedValue = (obj: any, key: string): string | undefined => {
- return key.split('.').reduce((prev, curr) => {
- return prev && prev[curr] !== undefined ? prev[curr] : undefined
- }, obj)
-}
-
-// 同步版本的翻译函数(用于已预加载的语言包)
-export const t = (namespace: Namespace, key: string, fallback?: string) => {
- const language = useI18nStore.getState().language
- const cacheKey = `${language}-${namespace}`
-
- if (localeCache.has(cacheKey)) {
- const locale = localeCache.get(cacheKey)!
- const value = getNestedValue(locale, key)
- return value || fallback || key
- }
-
- return fallback || key
-}
-
-// 预加载所有语言包
-export const preloadLocales = async (lang: Language) => {
- const namespaces: Namespace[] = ['common', 'chat', 'settings', 'notebook', 'ui', 'quiz']
- const promises = namespaces.map(async (namespace) => {
- const cacheKey = `${lang}-${namespace}`
- if (!localeCache.has(cacheKey)) {
- try {
- const locale = await loadLocale(lang, namespace)
- localeCache.set(cacheKey, locale)
- } catch (error) {
- console.error(`Failed to preload locale ${lang}/${namespace}:`, error)
- }
- }
- })
-
- await Promise.all(promises)
-}
-
-// React Hook for translations
-export const useTranslation = (namespace: Namespace) => {
- const language = useI18nStore((state) => state.language)
-
- const translate = useCallback(
- (key: string, fallback?: string): string => {
- const cacheKey = `${language}-${namespace}`
-
- if (localeCache.has(cacheKey)) {
- const locale = localeCache.get(cacheKey)!
- const value = getNestedValue(locale, key)
- return value || fallback || key
- }
-
- return fallback || key
- },
- [language, namespace]
- )
-
- return { t: translate, language }
-}
-
-// 格式化函数
-export const formatMessage = (
- template: string,
- values: Record = {}
-): string => {
- return template.replace(/\{\{(\w+)\}\}/g, (match, key) => {
- return values[key]?.toString() || match
- })
-}
-
-// 复数形式处理(简单实现)
-export const pluralize = (count: number, singular: string, plural?: string): string => {
- if (count === 1) return singular
- return plural || singular + 's'
-}