templates2.Base.Nuxt/shared/i18n.ts
w4c-templates a7a56fd5e0
Some checks failed
CI / quality (push) Has been cancelled
chore(template): publish Base.Nuxt
2026-10-11 23:23:38 +03:00

20 lines
781 B
TypeScript

import en from './en.json';
export const DEFAULT_LOCALE = 'en';
export const messages = { en } as const;
export type Locale = keyof typeof messages;
type Vars = Record<string, string | number>;
/** Tiny dictionary lookup: t('nav.pricing') with optional {name} interpolation. */
export function t(key: string, vars?: Vars, locale: Locale = DEFAULT_LOCALE): string {
const dict = messages[locale] as Record<string, unknown>;
const value = key.split('.').reduce<unknown>((acc, part) => {
if (acc && typeof acc === 'object') return (acc as Record<string, unknown>)[part];
return undefined;
}, dict);
if (typeof value !== 'string') return key;
if (!vars) return value;
return value.replace(/\{(\w+)\}/g, (_, name: string) => String(vars[name] ?? `{${name}}`));
}