Skip to content
Clone
main
22 lines 828 B
import { locale as activeLocale, defaultLocale, type Locale } from './locale'
import { type MessageKey, messages } from './messages'
export type MessageParams = Record<string, string | number>
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)
}