feat(app): i18n (#48)

This commit is contained in:
paisley
2026-02-11 15:34:53 +08:00
committed by GitHub
Unverified
parent 505a64438e
commit 6e09a69f4f
40 changed files with 3227 additions and 808 deletions

View File

@@ -4,6 +4,7 @@
*/
import { create } from 'zustand';
import { persist } from 'zustand/middleware';
import i18n from '@/i18n';
type Theme = 'light' | 'dark' | 'system';
type UpdateChannel = 'stable' | 'beta' | 'dev';
@@ -14,23 +15,23 @@ interface SettingsState {
language: string;
startMinimized: boolean;
launchAtStartup: boolean;
// Gateway
gatewayAutoStart: boolean;
gatewayPort: number;
// Update
updateChannel: UpdateChannel;
autoCheckUpdate: boolean;
autoDownloadUpdate: boolean;
// UI State
sidebarCollapsed: boolean;
devModeUnlocked: boolean;
// Setup
setupComplete: boolean;
// Actions
setTheme: (theme: Theme) => void;
setLanguage: (language: string) => void;
@@ -49,7 +50,12 @@ interface SettingsState {
const defaultSettings = {
theme: 'system' as Theme,
language: 'en',
language: (() => {
const lang = navigator.language.toLowerCase();
if (lang.startsWith('zh')) return 'zh';
if (lang.startsWith('ja')) return 'ja';
return 'en';
})(),
startMinimized: false,
launchAtStartup: false,
gatewayAutoStart: true,
@@ -66,9 +72,9 @@ export const useSettingsStore = create<SettingsState>()(
persist(
(set) => ({
...defaultSettings,
setTheme: (theme) => set({ theme }),
setLanguage: (language) => set({ language }),
setLanguage: (language) => { i18n.changeLanguage(language); set({ language }); },
setStartMinimized: (startMinimized) => set({ startMinimized }),
setLaunchAtStartup: (launchAtStartup) => set({ launchAtStartup }),
setGatewayAutoStart: (gatewayAutoStart) => set({ gatewayAutoStart }),