// Only deterministic chrome is translated. Model prose and domain payloads are opaque. const en = { save: "Save and proceed", reject: "Reject", continue: "Continue", approvalPrompt: "Approve or reject?", chooseApproval: "Choose Save and proceed or Reject.", datamartTitle: "Generate a datamart?", datamartYes: "Yes, generate the datamart", datamartNo: "No, skip the datamart", memoryTitle: "Select memories to apply to the question", memorySelection: "memories to apply", memoryApply: "Apply selected memories", memoryEmpty: "No reusable memories for this question; continuing to the next phase.", memorySummary: "Memory for future questions", archiveRepair: "Resolve archive conflict", repairError: "The correction could not complete. Review the current archive state before retrying.", ledgerTitle: "Decisions recorded in this phase (from the ledger)", escapeHelp: "Esc does not close the gate: use Back / Exit / Other.", inputHelp: "Answer through the gate widgets. To send free text to the model, start the line with '!'.", memoryIndexWarning: "Memory saved. Index update is incomplete; an administrator can retry it in Memory management.", backUsage: "Usage: /torna [N]", backInvalid: "Invalid target (current phase {phase}).", decision: "Decision", }; const it = { save: "Salva e procedi", reject: "Rifiuta", continue: "Continua", approvalPrompt: "Approvi o rifiuti?", chooseApproval: "Scegli «Salva e procedi» o «Rifiuta».", datamartTitle: "Vuoi generare un datamart?", datamartYes: "Sì, genera il datamart", datamartNo: "No, salta il datamart", memoryTitle: "Seleziona le memory da applicare alla domanda", memorySelection: "memory da applicare", memoryApply: "Applica le memory selezionate", memoryEmpty: "Nessuna memory riutilizzabile per questa domanda — passo alla fase successiva.", memorySummary: "Memory per le domande future", archiveRepair: "Risolvi il conflitto negli archivi", repairError: "La correzione non è stata completata. Verifica lo stato attuale degli archivi prima di riprovare.", ledgerTitle: "Decisioni registrate in questa fase (dal ledger)", escapeHelp: "Esc non chiude il gate: usa Torna indietro / Esci / Altro dalle opzioni.", inputHelp: "Durante la sessione rispondi con i widget del gate. Per inviare testo libero al modello inizia la riga con '!'.", memoryIndexWarning: "Memory salvata. L'aggiornamento dell'indice è incompleto; un amministratore può riprovarlo da Gestione Memory.", backUsage: "Uso: /torna [N]", backInvalid: "Target non valido (fase corrente {phase}).", decision: "Decisione", }; const catalogs = { en, it }; function gateText(locale, key) { const language = String(locale || "en").toLowerCase().split("-")[0]; return catalogs[language]?.[key] ?? en[key]; } module.exports = { gateText };