import { locale as activeLocale, defaultLocale, type Locale } from './locale' import { type MessageKey, messages } from './messages' export type MessageParams = Record function fill(template: string, params?: MessageParams) { if (!params) return template return template.replace(/\{(\w+)\}/g, (placeholder, name: string) => name in params ? String(params[name]) : placeholder, ) } export function createTranslator(locale: Locale) { const catalog = messages[locale] || messages[defaultLocale] return (key: MessageKey, params?: MessageParams) => fill(catalog[key], params) } export const isMessageKey = (key: string): key is MessageKey => key in messages[defaultLocale] export function t(key: MessageKey, params?: MessageParams) { return fill(messages[activeLocale()][key], params) }