fix: resolve TypeScript compilation errors

Fixes:
- VideoPlayer.vue: restore allTags, filteredMarks, marksByTag (removed by mistake)
- PeopleView.vue: fix frameTime scope in playFaceDetailVideo catch block
- Both errors caused white screen on build failure

Root cause:
1. visibleTags duplicate declaration (old + new logic)
2. frameTime undefined in catch block (scope issue)

Solution:
1. Keep allTags/filteredMarks/marksByTag (needed in template)
2. Keep visibleTags (new logic for processor toggles)
3. Move frameTime calculation to correct scope in catch block
This commit is contained in:
2026-07-24 23:33:40 +08:00
parent 48975ef247
commit cb7e1ba0ba
37 changed files with 6875 additions and 205 deletions

77
src/locales/index.ts Normal file
View File

@@ -0,0 +1,77 @@
import { createI18n } from 'vue-i18n'
import en from './en.json'
import zhTW from './zh-TW.json'
export type MessageSchema = typeof en
const supportedLanguages = {
'en': en,
'zh-TW': zhTW,
}
function detectInitialLanguage(): string {
const saved = localStorage.getItem('app_language')
if (saved && saved in supportedLanguages) {
return saved
}
if (saved === 'auto') {
return detectOSLanguage()
}
return 'en'
}
function detectOSLanguage(): string {
let osLang = 'en'
try {
if ((window as any).__TAURI__) {
const locale = (window as any).__TAURI__?.os?.getLocale?.()
if (locale) osLang = locale
} else {
osLang = navigator.language || 'en'
}
} catch (e) {
console.error('Language detection failed:', e)
}
if (osLang.startsWith('zh-TW') || osLang.startsWith('zh-Hant')) {
return 'zh-TW'
} else if (osLang.startsWith('zh-CN') || osLang.startsWith('zh-Hans')) {
return 'zh-CN'
} else if (osLang.startsWith('ja')) {
return 'ja'
} else if (osLang.startsWith('ko')) {
return 'ko'
}
return 'en'
}
const i18n = createI18n<[MessageSchema], 'en' | 'zh-TW'>({
legacy: false,
locale: detectInitialLanguage(),
fallbackLocale: 'en',
messages: supportedLanguages as any,
missingWarn: false,
fallbackWarn: false,
})
export function changeLanguage(lang: string) {
if (lang === 'auto') {
localStorage.setItem('app_language', 'auto')
const detected = detectOSLanguage()
i18n.global.locale = detected as any
} else {
localStorage.setItem('app_language', lang)
i18n.global.locale = lang as any
}
}
export function getCurrentLanguage(): string {
return i18n.global.locale as string
}
export { detectOSLanguage }
export default i18n