/**
 * Minimal server-side i18n catalog. API code must never read files from other
 * apps' source trees (e.g. apps/mobile). Values are copied once from the mobile
 * common.json files at implementation time.
 */

const HOUSEHOLD_DEFAULT_NAMES: Record<string, string> = {
  da: "Hjemme",
  de: "Zuhause",
  en: "Home",
  es: "Casa",
  fi: "Koti",
  fr: "Maison",
  it: "Casa",
  nb: "Hjemme",
  nl: "Thuis",
  pl: "Dom",
  pt: "Casa",
  sv: "Hemma",
};

const COOKED_PORTIONS_SUM_EXCEEDS_PLANNED: Record<string, string> = {
  da: "Antal spiste portioner og rester må ikke overstige det samlede antal portioner.",
  de: "Gegessene Portionen und Reste dürfen die Gesamtanzahl der Portionen nicht überschreiten.",
  en: "Eaten portions and leftovers cannot exceed the total number of portions.",
  es: "Las raciones comidas y las sobras no pueden superar el número total de raciones.",
  fi: "Syödyt annokset ja tähteet eivät voi ylittää annosten kokonaismäärää.",
  fr: "Les portions mangées et les restes ne peuvent pas dépasser le nombre total de portions.",
  it: "Le porzioni mangiate e gli avanzi non possono superare il numero totale di porzioni.",
  nb: "Antall spiste porsjoner og rester kan ikke overstige det totale antallet porsjoner.",
  nl: "Gegeten porties en restjes mogen het totaal aantal porties niet overschrijden.",
  pl: "Zjedzone porcje i resztki nie mogą przekroczyć całkowitej liczby porcji.",
  pt: "As porções comidas e as sobras não podem ultrapassar o número total de porções.",
  sv: "Antalet ätna portioner och rester får inte överstiga det totala antalet portioner.",
};

function resolve(catalog: Record<string, string>, languageTag: string): string {
  const lang = (languageTag.split("-")[0] ?? "sv").toLowerCase();
  return catalog[lang] ?? catalog["en"] ?? catalog["sv"]!;
}

export function t(key: string, languageTag: string): string {
  if (key === "cooked.portionsSumExceedsPlanned") {
    return resolve(COOKED_PORTIONS_SUM_EXCEEDS_PLANNED, languageTag);
  }

  if (key !== "onboarding.householdDefaultName") {
    // No other server-side keys are supported yet; fall back to a safe default.
    return HOUSEHOLD_DEFAULT_NAMES["sv"]!;
  }

  return resolve(HOUSEHOLD_DEFAULT_NAMES, languageTag);
}
