Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions src/renderer/components/settings/SettingsGeneral.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ export function SettingsGeneral() {
const { i18n, t } = useTranslation();
const settings = useAppStore((s) => s.settings);
const updateSettings = useAppStore((s) => s.updateSettings);
const currentLang = i18n.language.startsWith('zh') ? 'zh' : 'en';
const lang = i18n.language.split('-')[0];
const currentLang = lang === 'zh' ? 'zh' : lang === 'de' ? 'de' : 'en';
const [appVer, setAppVer] = useState('');
useEffect(() => {
try {
Expand All @@ -19,8 +20,9 @@ export function SettingsGeneral() {
}, []);

const languages = [
{ code: 'en', nativeName: 'English' },
{ code: 'zh', nativeName: '中文' },
{ code: 'en', nativeName: t('language.english', 'English') },
{ code: 'zh', nativeName: t('language.chinese', '中文') },
{ code: 'de', nativeName: t('language.german', 'Deutsch') },
];

const themeOptions = [
Expand Down
22 changes: 13 additions & 9 deletions src/renderer/i18n/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,11 @@ import LanguageDetector from 'i18next-browser-languagedetector';

import enTranslations from './locales/en.json';
import zhTranslations from './locales/zh.json';
import deTranslations from './locales/de.json';

i18n
.use(LanguageDetector) // 自动检测浏览器语言
.use(initReactI18next) // 初始化 react-i18next
.use(LanguageDetector) // Auto-detect browser language
.use(initReactI18next) // Initialize react-i18next
.init({
resources: {
en: {
Expand All @@ -16,17 +17,20 @@ i18n
zh: {
translation: zhTranslations,
},
de: {
translation: deTranslations,
},
},
fallbackLng: 'en', // 默认语言
supportedLngs: ['en', 'zh'], // 支持的语言
fallbackLng: 'en', // Default language
supportedLngs: ['en', 'zh', 'de'], // Supported languages
interpolation: {
escapeValue: false, // React 已经处理了 XSS
escapeValue: false, // React already handles XSS
},
pluralSeparator: '_', // 复数分隔符
contextSeparator: '_', // 上下文分隔符
pluralSeparator: '_', // Plural separator
contextSeparator: '_', // Context separator
detection: {
order: ['localStorage', 'navigator'], // 先检查 localStorage,再检查浏览器语言
caches: ['localStorage'], // 将语言选择保存到 localStorage
order: ['localStorage', 'navigator'], // Check localStorage first, then browser
caches: ['localStorage'], // Cache language choice in localStorage
lookupLocalStorage: 'i18nextLng', // localStorage key
},
});
Expand Down
Loading
Loading