revert: remove i18n lazy loading and highlight.js selective import (#736)

Revert the dynamic import() for i18n locales and highlight.js core+
registration from #696. Dynamic imports create separate chunk files
that cause 404 errors for users after updating when the browser still
references old chunk hashes.

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
ekko
2026-05-14 23:32:33 +08:00
committed by GitHub
parent e5e44fd7e2
commit 7da934fe8b
7 changed files with 34 additions and 113 deletions
+5 -18
View File
@@ -1,5 +1,5 @@
import { createI18n } from 'vue-i18n'
import { en, loadLocale, supportedLocales } from './messages'
import { messages, supportedLocales } from './messages'
import type { SupportedLocale } from './messages'
const saved = localStorage.getItem('hermes_locale')
@@ -37,24 +37,11 @@ const locale = resolveLocale(saved)
export const i18n = createI18n({
legacy: false,
locale: 'en',
locale,
fallbackLocale: 'en',
messages: { en },
messages,
})
export async function setupI18n(): Promise<void> {
if (locale !== 'en') {
const msgs = await loadLocale(locale)
if (msgs) {
i18n.global.setLocaleMessage(locale, msgs as any)
}
;(i18n.global.locale as any).value = locale
}
}
export async function switchLocale(newLocale: string): Promise<void> {
const msgs = await loadLocale(newLocale)
if (msgs) {
i18n.global.setLocaleMessage(newLocale, msgs as any)
}
export function switchLocale(newLocale: string): void {
;(i18n.global.locale as any).value = newLocale
}
+13 -19
View File
@@ -1,4 +1,12 @@
import en from './locales/en'
import zh from './locales/zh'
import zhTW from './locales/zh-TW'
import ja from './locales/ja'
import ko from './locales/ko'
import fr from './locales/fr'
import es from './locales/es'
import de from './locales/de'
import pt from './locales/pt'
export type LocaleMessages = Record<string, any>
@@ -25,25 +33,11 @@ export function mergeMessagesWithFallback(
return merged
}
const localeLoaders: Record<string, () => Promise<{ default: LocaleMessages }>> = {
'zh': () => import('./locales/zh'),
'zh-TW': () => import('./locales/zh-TW'),
'ja': () => import('./locales/ja'),
'ko': () => import('./locales/ko'),
'fr': () => import('./locales/fr'),
'es': () => import('./locales/es'),
'de': () => import('./locales/de'),
'pt': () => import('./locales/pt'),
const rawMessages: Record<string, LocaleMessages> = { en, zh, 'zh-TW': zhTW, ja, ko, fr, es, de, pt }
export const messages: Record<string, LocaleMessages> = {}
for (const [locale, msg] of Object.entries(rawMessages)) {
messages[locale] = locale === 'en' ? msg : mergeMessagesWithFallback(en, msg)
}
export { en }
export async function loadLocale(locale: string): Promise<LocaleMessages | null> {
if (locale === 'en') return en
const loader = localeLoaders[locale]
if (!loader) return null
const mod = await loader()
return mergeMessagesWithFallback(en, mod.default)
}