Files
Hermes-ui/packages/client/src/i18n/messages.ts
T
Zhicheng Han 03c18c210d 修复侧边栏 i18n 缺失 key 警告 (#170)
* Fix i18n missing-key warnings

* Add locale translations for i18n warning keys
2026-04-24 08:31:42 +08:00

51 lines
1.2 KiB
TypeScript

import de from './locales/de'
import en from './locales/en'
import es from './locales/es'
import fr from './locales/fr'
import ja from './locales/ja'
import ko from './locales/ko'
import pt from './locales/pt'
import zh from './locales/zh'
export type LocaleMessages = Record<string, unknown>
export const rawMessages = {
en,
zh,
ja,
ko,
fr,
es,
de,
pt,
} satisfies Record<string, LocaleMessages>
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
}
export const messages = Object.fromEntries(
Object.entries(rawMessages).map(([locale, localeMessages]) => [
locale,
locale === 'en'
? localeMessages
: mergeMessagesWithFallback(en, localeMessages),
]),
) as typeof rawMessages