/**
 * Équivalent de django-modeltranslation : pour chaque champ traduit
 * (ex: "title"), sert `title_fr` ou `title_en` selon la langue active,
 * avec repli automatique sur le français si la traduction anglaise
 * n'a pas été renseignée (même comportement que
 * MODELTRANSLATION_DEFAULT_LANGUAGE = "fr" côté Django).
 *
 * localize(instance, ["title", "body"], "en")
 *   -> { ...instance, title: instance.title_en || instance.title_fr, body: ... }
 * Les colonnes `<champ>_fr` / `<champ>_en` sont retirées du résultat,
 * exactement comme le fait le serializer DRF qui n'exposait que "title".
 */
function localize(instance, fields, lang) {
  if (!instance) return instance;
  const plain = typeof instance.toJSON === "function" ? instance.toJSON() : { ...instance };
  const safeLang = lang === "en" ? "en" : "fr";

  for (const field of fields) {
    const frKey = `${field}_fr`;
    const enKey = `${field}_en`;
    if (frKey in plain || enKey in plain) {
      plain[field] = (safeLang === "en" ? plain[enKey] : plain[frKey]) || plain[frKey] || "";
      delete plain[frKey];
      delete plain[enKey];
    }
  }
  return plain;
}

function localizeList(instances, fields, lang) {
  return instances.map((i) => localize(i, fields, lang));
}

module.exports = { localize, localizeList };
