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:
77
src/locales/index.ts
Normal file
77
src/locales/index.ts
Normal 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
|
||||
Reference in New Issue
Block a user