/**
 * 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.",
};

const COOKED_UNDO_WINDOW_EXPIRED: Record<string, string> = {
  da: "Det er ikke længere muligt at fortryde denne madlavningssession. Tidsfristen på 24 timer er udløbet.",
  de: "Dieser Kochvorgang kann nicht mehr rückgängig gemacht werden. Das 24-Stunden-Fenster ist abgelaufen.",
  en: "This cooking session can no longer be undone. The 24-hour window has expired.",
  es: "Ya no se puede deshacer esta sesión de cocina. Ha expirado la ventana de 24 horas.",
  fi: "Tätä ruoanlaittokertaa ei voi enää kumota. 24 tunnin ikkuna on umpeutunut.",
  fr: "Cette session de cuisine ne peut plus être annulée. La fenêtre de 24 heures a expiré.",
  it: "Non è più possibile annullare questa sessione di cucina. La finestra di 24 ore è scaduta.",
  nb: "Denne matlagingsøkten kan ikke lenger angres. Vinduet på 24 timer har utløpt.",
  nl: "Deze kooksessie kan niet meer ongedaan worden gemaakt. Het venster van 24 uur is verstreken.",
  pl: "Tej sesji gotowania nie można już cofnąć. Okno 24-godzinne wygasło.",
  pt: "Esta sessão de cozinha já não pode ser desfeita. A janela de 24 horas expirou.",
  sv: "Denna matlagningssession kan inte längre ångras. 24-timmarsfönstret har löpt ut.",
};

const COOKED_LEFTOVER_LESS_THAN_BOX: Record<string, string> = {
  da: "Resterne må være mindst lige så mange som antallet af madkasseportioner.",
  de: "Die Reste müssen mindestens so viele sein wie die Anzahl der Lunchbox-Portionen.",
  en: "Leftovers must be at least as many as the number of meal-box portions.",
  es: "Las sobras deben ser al menos tantas como el número de porciones de tupper.",
  fi: "Tähteitä on oltava vähintään yhtä paljon kuin eväsrasioiden annosten määrä.",
  fr: "Les restes doivent être au moins aussi nombreux que le nombre de portions de lunch-box.",
  it: "Gli avanzi devono essere almeno tanti quanto il numero di porzioni dei contenitori per il pranzo.",
  nb: "Restene må være minst like mange som antallet matboksporsjoner.",
  nl: "De restjes moeten minstens even veel zijn als het aantal lunchboxporties.",
  pl: "Pozostałości muszą być co najmniej tak liczne jak liczba porcji w lunchboxie.",
  pt: "As sobras têm de ser pelo menos tantas quanto o número de porções da marmita.",
  sv: "Rester måste vara minst lika många som antalet matlådeportioner.",
};

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 === "cooked.undoWindowExpired") {
    return resolve(COOKED_UNDO_WINDOW_EXPIRED, languageTag);
  }

  if (key === "cooked.leftoverLessThanBox") {
    return resolve(COOKED_LEFTOVER_LESS_THAN_BOX, 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);
}
