Files
Hermes-ui/packages/client/src/i18n/messages.ts
T
ekkoandClaude Opus 4.7 7da934fe8b 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>
2026-05-14 23:32:33 +08:00

44 lines
1.3 KiB
TypeScript

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>
export const supportedLocales = ['en', 'zh', 'zh-TW', 'ja', 'ko', 'fr', 'es', 'de', 'pt'] as const
export type SupportedLocale = (typeof supportedLocales)[number]
function isPlainObject(value: unknown): value is LocaleMessages {
return !!value && typeof value === 'object' && !Array.isArray(value)
}
export function mergeMessagesWithFallback(
fallback: LocaleMessages,
locale: LocaleMessages,
): LocaleMessages {
const merged: LocaleMessages = { ...fallback }
for (const [key, value] of Object.entries(locale)) {
const fallbackValue = fallback[key]
merged[key] = isPlainObject(fallbackValue) && isPlainObject(value)
? mergeMessagesWithFallback(fallbackValue, value)
: value
}
return merged
}
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 }