import es from "./es.json"; import en from "./en.json"; import fr from "./fr.json"; import he from "./he.json"; import uk from "./uk.json"; import pt from "./pt.json"; import ru from "./ru.json"; import rw from "./rw.json"; import kr from "./kr.json"; const dictionaries = { es, en, fr, he, uk, pt, ru, rw, kr } as const; export type Locale = keyof typeof dictionaries; export type I18nKey = keyof typeof es; export const routeTranslations = { news: { es: "noticias", en: "news", fr: "informations", he: "חדשות", uk: "noticias", pt: "noticias", ru: "новости", rw: "amakuru", kr: "nouvel", } } as const; export function getLocalizedRoute(route: keyof typeof routeTranslations, locale: string | undefined): string { const l = (locale in routeTranslations[route] ? locale : "es") as Locale; return routeTranslations[route][l as keyof (typeof routeTranslations)[typeof route]] || routeTranslations[route]["en" as keyof (typeof routeTranslations)[typeof route]]; } export function t( locale: string | undefined, key: I18nKey, vars?: Record ) { const l = (locale in dictionaries ? locale : "es") as Locale; // fallback chain: requested locale -> default locale -> key itself const template = dictionaries[l][key] ?? dictionaries.es[key] ?? String(key); if (!vars) return template; // simple interpolation: "Hello {name}" return template.replace(/\{(\w+)\}/g, (_, name) => vars[name] === undefined ? `{${name}}` : String(vars[name]) ); } export function createTranslator(locale: string | undefined) { return function tl(key: I18nKey, vars?: Record) { return t(locale, key, vars); }; }