{
  "gameSystems": {
    "heroTitle": "RPG Systems",
    "heroSubtitle": "The rules the AI will know for your campaigns",
    "noDescription": "(No description)",
    "byAuthor": "by {{author}}",
    "public": "public",
    "newSystem": "New system",
    "newSystemSubtitle": "Enter the rules of an RPG (markdown)",
    "tip": "💡 Tip: organize your rules into sections with headings <code>## Combat</code>, <code>## Classes</code>, <code>## Lore</code>… The system will inject the relevant sections based on what the AI needs to generate.",
    "deleteTitle": "Delete system",
    "deleteMessage": "Delete the system \"{{name}}\"?",
    "deleteDetail": "Campaigns using it will no longer be associated with any system."
  },
  "gameSystemEdit": {
    "backToList": "Back to list",
    "editTitle": "Edit system",
    "createTitle": "New RPG system",
    "nameLabel": "Name *",
    "namePlaceholder": "e.g. Nimble, D&D 5.1 SRD, My Homebrew...",
    "descriptionLabel": "Short description",
    "descriptionPlaceholder": "In one line, what is this system about?",
    "authorLabel": "Author",
    "authorPlaceholder": "e.g. Hasbro, Homebrew, myself...",
    "rulesTitle": "System rules",
    "rulesHint": "One section = one theme. The AI will automatically inject the relevant sections based on what it generates (combat → Combat/Monsters, NPC → Classes, arc → Lore/Factions).",
    "importButton": "Import a rules PDF",
    "importInProgress": "Importing…",
    "importHint": "The AI suggests a breakdown into sections — you review it before saving.",
    "sectionsFound": "Sections found: {{titles}}",
    "sectionTitlePlaceholder": "Section name (e.g. Combat)",
    "removeSection": "Remove this section",
    "sectionContentPlaceholder": "Describe the rules of this section...",
    "noSections": "No sections yet — add one with the buttons below.",
    "addSection": "Add a section:",
    "addOther": "Other…",
    "charactersTitle": "Character sheets",
    "charactersHint": "Define the structure of PC and NPC sheets for this system. Universal fields (name, portrait, header) are automatic — only add here the fields specific to the system (Background, HP, Stats…).",
    "pcFieldsLabel": "PC sheet fields",
    "pcFieldsHint": "Shown when creating/editing a player character.",
    "npcFieldsLabel": "NPC sheet fields",
    "npcFieldsHint": "Shown when creating/editing a non-player character.",
    "enemyFieldsLabel": "Enemy sheet fields",
    "enemyFieldsHint": "Shown when creating/editing an enemy (bestiary). Name, level, folder, portrait and banner are automatic.",
    "importExtracting": "Extracting text…",
    "importAnalyzing": "Analyzing rules… ({{current}}/{{total}})",
    "importFailed": "PDF import failed.",
    "importFailedReason": "Import failed: {{reason}}",
    "importNoRules": "No usable rules could be extracted from this PDF (scan without OCR, or unrecognized content).",
    "importOcrSuffix": " (including {{count}} page(s) via OCR)",
    "importNote": "{{added}} section(s) suggested from {{pages}} page(s){{ocr}}. Review and adjust below before saving."
  },
  "ollamaModelManager": {
    "installedModels": "Installed models",
    "deleteModelTitle": "Delete {{name}}",
    "pullDialogTitle": "Download an Ollama model",
    "modelNameLabel": "Model name",
    "suggestions": "Suggestions:",
    "libraryHint": "The full list is on <a href=\"https://ollama.com/library\" target=\"_blank\" rel=\"noopener\">ollama.com/library</a>.",
    "preparing": "Preparing...",
    "connecting": "connecting...",
    "cancelled": "cancelled",
    "pullEventError": "Failed: {{error}}",
    "pullFailed": "Failed to download {{name}}.",
    "pullInterrupted": "Download of {{name}} interrupted before completion. Restart to resume.",
    "pullDone": "Model {{name}} downloaded.",
    "deleteTitle": "Delete model",
    "deleteMessage": "Delete the model '{{name}}'?",
    "deleteDetail": "Disk space will be freed.",
    "deleteDone": "Model {{name}} deleted.",
    "deleteFailed": "Failed to delete {{name}}."
  },
  "updatesSection": {
    "title": "Updates",
    "hint": "Checks the Docker registry to see whether a new version of the containers (core, brain, web) is available. Postgres and MinIO are excluded — they are updated manually.",
    "stableChannel": "Stable channel",
    "checking": "Checking...",
    "checkNow": "Check now",
    "featureNotConfigured": "Feature not configured (WATCHTOWER_TOKEN missing).",
    "updateAvailable": "An update is available.",
    "checkImpossible": "Check failed (baseline missing or registry unreachable).",
    "upToDate": "Everything is up to date (checked on {{date}}).",
    "applying": "Updating...",
    "applyNow": "Update now",
    "betaChannelTitle": "Beta channel — patrons only",
    "betaChannelIntro": "Support LoreMind on Patreon to access new features in preview. The <strong>Compagnon</strong> tier (€7/month) or higher unlocks this channel.",
    "connectPatreon": "Connect my Patreon account",
    "connectInstructions": "A new window will open to Patreon. After authorizing, copy the displayed token and paste it below.",
    "patreonToken": "Patreon token",
    "activateLicense": "Activate license",
    "licenseValid": "Patreon account connected. Tier {{tier}} active.",
    "licenseGrace": "Patreon connection expired, but beta access is maintained during the grace period. Make sure your Patreon subscription is still active and click \"Check now\".",
    "licenseExpired": "Patreon connection expired too long ago. Reconnect to regain beta access.",
    "licenseUnverifiable": "The installed token can no longer be verified. Reconnect.",
    "infoTier": "<strong>Tier:</strong> {{tier}}",
    "infoValidity": "<strong>Validity:</strong> until {{date}}",
    "renewalDay": "(renews in {{n}} day)",
    "renewalDays": "(renews in {{n}} days)",
    "infoLastRefresh": "<strong>Last refresh:</strong> {{date}}",
    "refreshOk": "OK",
    "refreshFailed": "failed",
    "enableBetaChannel": "Enable beta channel",
    "disconnectPatreon": "Disconnect Patreon",
    "checkingBetaImages": "Checking beta images...",
    "betaUnavailable": "Unavailable: {{reason}}",
    "betaCheckImpossible": "Beta check failed (beta registry unreachable or baseline missing).",
    "currentChannel": "Current channel:",
    "channelBeta": "Beta",
    "channelStable": "Stable",
    "switchToBeta": "Switch to the beta channel",
    "switchToStable": "Switch back to the stable channel",
    "switching": "Switching...",
    "switchInProgressNotice": "Switching in progress. The application will be unavailable for 10 to 30 seconds — the page will reload automatically once the new Core is ready.",
    "switcherUnavailable": "The channel switcher sidecar is not installed. To benefit from automatic switching, fetch the latest <code>docker-compose.yml</code> from the repo and run <code>docker compose pull &amp;&amp; docker compose up -d</code> once. Otherwise, switch manually by editing <code>IMAGE_NAMESPACE</code> in your <code>.env</code> (<code>igmlcreation/loremind-</code> for stable, <code>igmlcreation/loremind-beta-</code> for beta).",
    "connectUrlError": "Unable to generate the connection URL. Check your config.",
    "pasteTokenFirst": "First paste the token received after connecting with Patreon.",
    "patreonConnectedSuccess": "Patreon account connected. Beta access is active.",
    "disconnectTitle": "Disconnect Patreon",
    "disconnectMessage": "Disconnect your Patreon account?",
    "disconnectDetail": "You will lose access to the beta channel.",
    "disconnectConfirm": "Disconnect",
    "patreonDisconnected": "Patreon account disconnected.",
    "switchToBetaMessage": "Switch LoreMind to the beta channel? The core/brain/web containers will be recreated with the beta images. The application will be unavailable for 10-30 seconds.",
    "switchToStableMessage": "Switch LoreMind back to the stable channel? The core/brain/web containers will be recreated with the stable images. The application will be unavailable for 10-30 seconds.",
    "switchToBetaTitle": "Switch to beta?",
    "switchToStableTitle": "Switch back to stable?",
    "switchDetailData": "Your data (DB, images) is preserved.",
    "switchDetailReversible": "You can switch back at any time from this screen.",
    "switchToBetaConfirm": "Switch to beta",
    "switchToStableConfirm": "Switch back to stable",
    "switchFailed": "Switch failed",
    "applyTitle": "Update",
    "applyMessage": "Download and restart the containers now?",
    "applyDetail": "The app will be unavailable for a few seconds.",
    "applyConfirm": "Update",
    "applyTriggered": "Update triggered. Reload the page in 30s."
  }
}
