Ariver
2026-06-23 57868a8279e371e71c1600f6bc12c40e18d8bb04
privatevoice.src/frontend/src/App.svelte
@@ -11,6 +11,7 @@
  import { deviceName, engineHardwareInfo } from './lib/stores/app'
  import { setLocale, localeRevision } from './lib/i18n'
  import { languageMode, languageID, effectiveLanguageID, uiLocale } from './lib/stores/config'
  import type { UILocale } from './lib/stores/config'
  let isIndicatorRoute = $state(window.location.hash === '#/indicator')
  let showUpdateDialog = $state(false)
@@ -84,11 +85,7 @@
      }
    })
    Call.ByName('voicesnap/services.EngineService.ModelExists').then((exists: any) => {
      if (!exists) {
        engineStatus.set('need_model')
      }
    })
    refreshCurrentModelAvailability()
    // Load actual hotkey name from backend (store default is generic "Ctrl")
    Call.ByName('voicesnap/services.HotkeyService.GetHotkeyName').then((name: any) => {
@@ -100,16 +97,32 @@
  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'
    const configured = typeof settings?.languageID === 'string' && settings.languageID ? settings.languageID : 'zh-CN'
    const effective = typeof settings?.effectiveLanguageID === 'string' && settings.effectiveLanguageID ? settings.effectiveLanguageID : configured
    const locale = typeof settings?.uiLocale === 'string' && settings.uiLocale ? settings.uiLocale : 'en'
    languageMode.set(mode)
    languageID.set(configured)
    effectiveLanguageID.set(effective)
    uiLocale.set(locale)
    uiLocale.set(locale as UILocale)
    setLocale(locale)
    languageReady = true
  }
  async function refreshCurrentModelAvailability() {
    try {
      const current: any = await Call.ByName('voicesnap/services.EngineService.GetCurrentModelStatus')
      if (!current?.installed) {
        engineStatus.set('need_model')
      }
    } catch {
      try {
        const exists: any = await Call.ByName('voicesnap/services.EngineService.ModelExists')
        if (!exists) {
          engineStatus.set('need_model')
        }
      } catch {}
    }
  }
</script>
{#if isIndicatorRoute}