{
  "gameSystems": {
    "heroTitle": "Systèmes de JDR",
    "heroSubtitle": "Les règles que l'IA connaîtra pour vos campagnes",
    "noDescription": "(Pas de description)",
    "byAuthor": "par {{author}}",
    "public": "public",
    "newSystem": "Nouveau système",
    "newSystemSubtitle": "Saisir les règles d'un JDR (markdown)",
    "tip": "💡 Astuce : organisez vos règles par sections avec des titres <code>## Combat</code>, <code>## Classes</code>, <code>## Lore</code>… Le système injectera les sections pertinentes selon ce que l'IA doit générer.",
    "deleteTitle": "Supprimer le système",
    "deleteMessage": "Supprimer le système \"{{name}}\" ?",
    "deleteDetail": "Les campagnes qui l'utilisent ne seront plus associées à aucun système."
  },
  "gameSystemEdit": {
    "backToList": "Retour à la liste",
    "editTitle": "Éditer le système",
    "createTitle": "Nouveau système de JDR",
    "nameLabel": "Nom *",
    "namePlaceholder": "Ex: Nimble, D&D 5.1 SRD, Mon Homebrew...",
    "descriptionLabel": "Description courte",
    "descriptionPlaceholder": "En une ligne, de quoi parle ce système ?",
    "authorLabel": "Auteur",
    "authorPlaceholder": "Ex: Hasbro, Homebrew, moi-même...",
    "rulesTitle": "Règles du système",
    "rulesHint": "Une section = un thème. L'IA injectera automatiquement les sections pertinentes selon ce qu'elle génère (combat → Combat/Monstres, PNJ → Classes, arc → Lore/Factions).",
    "importButton": "Importer un PDF de règles",
    "importInProgress": "Import en cours…",
    "importHint": "L'IA propose un découpage en sections — vous révisez avant d'enregistrer.",
    "sectionsFound": "Sections trouvées : {{titles}}",
    "sectionTitlePlaceholder": "Nom de la section (ex: Combat)",
    "removeSection": "Supprimer cette section",
    "sectionContentPlaceholder": "Décrivez les règles de cette section...",
    "noSections": "Aucune section pour l'instant — ajoutez-en une avec les boutons ci-dessous.",
    "addSection": "Ajouter une section :",
    "addOther": "Autre…",
    "charactersTitle": "Fiches de personnages",
    "charactersHint": "Définissez la structure des fiches PJ et PNJ pour ce système. Les champs universels (nom, portrait, header) sont automatiques — ne rajoutez ici que les champs spécifiques au système (Histoire, PV, Stats…).",
    "pcFieldsLabel": "Champs de la fiche PJ",
    "pcFieldsHint": "Affichés lors de la création/édition d'un personnage joueur.",
    "npcFieldsLabel": "Champs de la fiche PNJ",
    "npcFieldsHint": "Affichés lors de la création/édition d'un personnage non-joueur.",
    "enemyFieldsLabel": "Champs de la fiche Ennemi",
    "enemyFieldsHint": "Affichés lors de la création/édition d'un ennemi (bestiaire). Nom, niveau, dossier, portrait et bandeau sont automatiques.",
    "structureImport": "Importer une structure Foundry",
    "structureImporting": "Import…",
    "structureActorType": "Acteur Foundry : {{type}}",
    "structureInvalid": "Structure illisible (JSON invalide).",
    "structureFailed": "Échec de l'import de la structure.",
    "importExtracting": "Extraction du texte…",
    "importAnalyzing": "Analyse des règles… ({{current}}/{{total}})",
    "importFailed": "Échec de l'import du PDF.",
    "importFailedReason": "Échec de l'import : {{reason}}",
    "importNoRules": "Aucune règle exploitable n'a été extraite de ce PDF (scan sans OCR, ou contenu non reconnu).",
    "importOcrSuffix": " (dont {{count}} page(s) via OCR)",
    "importNote": "{{added}} section(s) proposée(s) depuis {{pages}} page(s){{ocr}}. Relisez et ajustez ci-dessous avant d'enregistrer."
  },
  "ollamaModelManager": {
    "installedModels": "Modèles installés",
    "deleteModelTitle": "Supprimer {{name}}",
    "pullDialogTitle": "Télécharger un modèle Ollama",
    "modelNameLabel": "Nom du modèle",
    "suggestions": "Suggestions :",
    "libraryHint": "La liste complète est sur <a href=\"https://ollama.com/library\" target=\"_blank\" rel=\"noopener\">ollama.com/library</a>.",
    "preparing": "Préparation...",
    "connecting": "connexion...",
    "cancelled": "annulé",
    "pullEventError": "Échec : {{error}}",
    "pullFailed": "Échec du téléchargement de {{name}}.",
    "pullInterrupted": "Téléchargement de {{name}} interrompu avant la fin. Relancez pour reprendre.",
    "pullDone": "Modèle {{name}} téléchargé.",
    "deleteTitle": "Supprimer le modèle",
    "deleteMessage": "Supprimer le modèle '{{name}}' ?",
    "deleteDetail": "L'espace disque sera libéré.",
    "deleteDone": "Modèle {{name}} supprimé.",
    "deleteFailed": "Échec de la suppression de {{name}}."
  },
  "updatesSection": {
    "title": "Mises à jour",
    "hint": "Vérifie auprès du registry Docker si une nouvelle version des conteneurs (core, brain, web) est disponible. Postgres et MinIO sont exclus — ils sont mis à jour manuellement.",
    "stableChannel": "Canal stable",
    "checking": "Vérification...",
    "checkNow": "Vérifier maintenant",
    "featureNotConfigured": "Feature non configurée (WATCHTOWER_TOKEN absent).",
    "updateAvailable": "Une mise à jour est disponible.",
    "checkImpossible": "Vérification impossible (baseline absente ou registry injoignable).",
    "upToDate": "Tout est à jour (vérifié le {{date}}).",
    "applying": "Mise à jour en cours...",
    "applyNow": "Mettre à jour maintenant",
    "betaChannelTitle": "Canal beta — réservé aux patrons",
    "betaChannelIntro": "Soutiens LoreMind sur Patreon pour accéder aux nouvelles features en avant-première. Le tier <strong>Compagnon</strong> (7€/mois) ou supérieur débloque ce canal.",
    "connectPatreon": "Connecter mon compte Patreon",
    "connectInstructions": "Une nouvelle fenêtre va s'ouvrir vers Patreon. Après autorisation, copie le token affiché et colle-le ci-dessous.",
    "patreonToken": "Token Patreon",
    "activateLicense": "Activer la licence",
    "licenseValid": "Compte Patreon connecté. Tier {{tier}} actif.",
    "licenseGrace": "Connexion Patreon expirée, mais accès beta maintenu pendant la période de tolérance. Vérifie que ton abonnement Patreon est toujours actif et clique sur \"Vérifier maintenant\".",
    "licenseExpired": "Connexion Patreon expirée depuis trop longtemps. Reconnecte-toi pour retrouver l'accès beta.",
    "licenseUnverifiable": "Le token installé ne peut plus être vérifié. Reconnecte-toi.",
    "infoTier": "<strong>Tier :</strong> {{tier}}",
    "infoValidity": "<strong>Validité :</strong> jusqu'au {{date}}",
    "renewalDay": "(renouvellement dans {{n}} jour)",
    "renewalDays": "(renouvellement dans {{n}} jours)",
    "infoLastRefresh": "<strong>Dernier refresh :</strong> {{date}}",
    "refreshOk": "OK",
    "refreshFailed": "échec",
    "enableBetaChannel": "Activer le canal beta",
    "disconnectPatreon": "Déconnecter Patreon",
    "checkingBetaImages": "Vérification des images beta...",
    "betaUnavailable": "Indisponible : {{reason}}",
    "betaCheckImpossible": "Vérification beta impossible (registry beta injoignable ou baseline absente).",
    "currentChannel": "Canal actuel :",
    "channelBeta": "Bêta",
    "channelStable": "Stable",
    "switchToBeta": "Passer sur le canal beta",
    "switchToStable": "Repasser sur le canal stable",
    "switching": "Bascule en cours...",
    "switchInProgressNotice": "Bascule en cours. L'application va être indisponible 10 à 30 secondes — la page se rechargera automatiquement quand le nouveau Core sera prêt.",
    "switcherUnavailable": "Le sidecar de bascule n'est pas installé. Pour bénéficier du switch automatique, récupère le dernier <code>docker-compose.yml</code> du repo et fais <code>docker compose pull &amp;&amp; docker compose up -d</code> une fois. Sinon, bascule manuellement en éditant <code>IMAGE_NAMESPACE</code> dans ton <code>.env</code> (<code>igmlcreation/loremind-</code> pour stable, <code>igmlcreation/loremind-beta-</code> pour beta).",
    "connectUrlError": "Impossible de générer l'URL de connexion. Vérifie ta config.",
    "pasteTokenFirst": "Colle d'abord le token reçu après connexion Patreon.",
    "patreonConnectedSuccess": "Compte Patreon connecté. L'accès beta est actif.",
    "disconnectTitle": "Déconnecter Patreon",
    "disconnectMessage": "Déconnecter ton compte Patreon ?",
    "disconnectDetail": "Tu perdras l'accès au canal beta.",
    "disconnectConfirm": "Déconnecter",
    "patreonDisconnected": "Compte Patreon déconnecté.",
    "switchToBetaMessage": "Basculer LoreMind sur le canal beta ? Les containers core/brain/web vont être recréés avec les images beta. L'application sera indisponible 10-30 secondes.",
    "switchToStableMessage": "Repasser LoreMind sur le canal stable ? Les containers core/brain/web vont être recréés avec les images stables. L'application sera indisponible 10-30 secondes.",
    "switchToBetaTitle": "Passer en beta ?",
    "switchToStableTitle": "Repasser en stable ?",
    "switchDetailData": "Les données (DB, images) sont préservées.",
    "switchDetailReversible": "Tu pourras refaire le chemin inverse à tout moment depuis cet écran.",
    "switchToBetaConfirm": "Passer en beta",
    "switchToStableConfirm": "Repasser en stable",
    "switchFailed": "Échec du switch",
    "applyTitle": "Mettre à jour",
    "applyMessage": "Télécharger et redémarrer les conteneurs maintenant ?",
    "applyDetail": "L'app sera indisponible quelques secondes.",
    "applyConfirm": "Mettre à jour",
    "applyTriggered": "Mise à jour déclenchée. Rechargez la page dans 30s."
  }
}
