import type { Locale } from "@/i18n/config";
import { isLocale } from "@/i18n/config";

import de from "@/messages/de.json";
import en from "@/messages/en.json";
import es from "@/messages/es.json";
import fr from "@/messages/fr.json";
import pl from "@/messages/pl.json";

const dictionaries: Record<Locale, typeof en> = {
  en,
  pl,
  de,
  es,
  fr,
};

export type Messages = typeof en;

export function getDictionary(locale: string): Messages {
  const l = isLocale(locale) ? locale : "en";
  return dictionaries[l];
}

export function getNested(
  obj: Record<string, unknown>,
  path: string,
): string | undefined {
  const parts = path.split(".");
  let cur: unknown = obj;
  for (const p of parts) {
    if (cur && typeof cur === "object" && p in cur) {
      cur = (cur as Record<string, unknown>)[p];
    } else {
      return undefined;
    }
  }
  return typeof cur === "string" ? cur : undefined;
}
