| | |
| | | import { indicatorVisible, indicatorStatus, indicatorVolume, hotkeyName } from './lib/stores/indicator' |
| | | import { updateAvailable, type UpdateInfo } from './lib/stores/update' |
| | | import { deviceName, engineHardwareInfo } from './lib/stores/app' |
| | | import { setLocale, localeRevision } from './lib/i18n' |
| | | import { languageMode, languageID, effectiveLanguageID, uiLocale } from './lib/stores/config' |
| | | |
| | | let isIndicatorRoute = $state(window.location.hash === '#/indicator') |
| | | let showUpdateDialog = $state(false) |
| | | let languageReady = $state(false) |
| | | |
| | | onMount(() => { |
| | | Call.ByName('voicesnap/services.ConfigService.GetLanguageSettings').then((settings: any) => { |
| | | applyLanguageSettings(settings) |
| | | }).catch(() => { |
| | | languageReady = true |
| | | }) |
| | | |
| | | Events.On('indicator:show', (ev: any) => { |
| | | indicatorVisible.set(true) |
| | | if (ev?.data?.status) { |
| | |
| | | } |
| | | }) |
| | | }) |
| | | |
| | | function applyLanguageSettings(settings: any) { |
| | | const mode = settings?.languageMode === 'manual' ? 'manual' : 'auto' |
| | | const configured = settings?.languageID === 'en' ? 'en' : 'zh-CN' |
| | | const effective = settings?.effectiveLanguageID === 'en' ? 'en' : 'zh-CN' |
| | | const locale = settings?.uiLocale === 'en' ? 'en' : 'zh' |
| | | languageMode.set(mode) |
| | | languageID.set(configured) |
| | | effectiveLanguageID.set(effective) |
| | | uiLocale.set(locale) |
| | | setLocale(locale) |
| | | languageReady = true |
| | | } |
| | | </script> |
| | | |
| | | {#if isIndicatorRoute} |
| | | <FloatingIndicator /> |
| | | {:else} |
| | | {#if languageReady} |
| | | {#key $localeRevision} |
| | | {#if $engineStatus === 'need_model'} |
| | | <OnboardingView /> |
| | | {:else} |
| | | <SettingsWindow /> |
| | | {/if} |
| | | {/key} |
| | | {/if} |
| | | |
| | | {#if showUpdateDialog && $updateAvailable} |
| | | <UpdateDialog |