Some checks failed
Qualité & Sécurité / Web (ESLint · angular-eslint + sonarjs) (push) Successful in 52s
Qualité & Sécurité / Trivy (CVE dépendances Maven / pip / npm) (push) Successful in 2m36s
Qualité & Sécurité / MegaLinter (PMD · Ruff · Bandit · gitleaks · hadolint) (push) Successful in 1m11s
Build & Push Images / build (web) (push) Failing after 35s
Build & Push Images / build (brain) (push) Successful in 1m18s
Build & Push Images / build-switcher (push) Successful in 42s
Build & Push Images / build (core) (push) Successful in 3m8s
Sidebar Lore : le panneau Templates ne peut plus écraser l'arbre Plafonné à 45 % de la sidebar avec ascenseur interne sur la liste — l'en-tête, le repli et le bouton + restent toujours visibles, l'arbre garde son propre scroll (remonté par un utilisateur avec ~30 templates) Passage v1.0.3
1886 lines
87 KiB
JSON
1886 lines
87 KiB
JSON
{
|
||
"language": {
|
||
"label": "Language",
|
||
"fr": "French",
|
||
"en": "English"
|
||
},
|
||
"common": {
|
||
"back": "Back",
|
||
"save": "Save",
|
||
"saving": "Saving...",
|
||
"loading": "Loading...",
|
||
"refresh": "Refresh",
|
||
"download": "Download",
|
||
"cancel": "Cancel",
|
||
"delete": "Delete",
|
||
"deleting": "Deleting...",
|
||
"edit": "Edit",
|
||
"create": "Create",
|
||
"creating": "Creating...",
|
||
"add": "Add",
|
||
"remove": "Remove",
|
||
"close": "Close",
|
||
"confirm": "Confirm",
|
||
"yes": "Yes",
|
||
"no": "No",
|
||
"search": "Search",
|
||
"name": "Name",
|
||
"description": "Description",
|
||
"titleField": "Title",
|
||
"type": "Type",
|
||
"actions": "Actions",
|
||
"open": "Open",
|
||
"view": "View",
|
||
"duplicate": "Duplicate",
|
||
"rename": "Rename",
|
||
"import": "Import",
|
||
"export": "Export",
|
||
"generate": "Generate",
|
||
"generating": "Generating...",
|
||
"validate": "Validate",
|
||
"none": "None",
|
||
"optional": "(optional)",
|
||
"required": "(required)",
|
||
"error": "Error",
|
||
"success": "Success",
|
||
"warning": "Warning",
|
||
"previous": "Previous",
|
||
"next": "Next",
|
||
"select": "Select"
|
||
},
|
||
"settings": {
|
||
"title": "Settings",
|
||
"data": {
|
||
"title": "Data backup",
|
||
"hint": "Export all your content (game systems, lores, campaigns + images) to a file, to back it up or move it to another instance. Importing <strong>adds</strong> the content without deleting what's already there.",
|
||
"scopeLabel": "Scope",
|
||
"scopeFull": "Full backup (everything)",
|
||
"scopeCampaignGroup": "Campaign",
|
||
"optionsLabel": "Include",
|
||
"optLore": "Lore (world)",
|
||
"optPlay": "Play space (playthroughs, sessions, characters)",
|
||
"optImages": "Images",
|
||
"exportBtn": "Export data",
|
||
"exporting": "Exporting…",
|
||
"importBtn": "Import a file",
|
||
"importing": "Importing…",
|
||
"importConfirm": "Import this file? Its content will be added to your instance (nothing is deleted).",
|
||
"importSuccess": "Import successful: {{count}} item(s) added.",
|
||
"exportError": "Export failed.",
|
||
"importError": "Import failed (invalid file?)."
|
||
},
|
||
"language": {
|
||
"title": "Interface language",
|
||
"hint": "Choose the application display language. The change is applied instantly and remembered on this device."
|
||
},
|
||
"ai": {
|
||
"title": "AI engine",
|
||
"hint": "Choose the language-model provider used by the chat and page generation.",
|
||
"provider": "Provider",
|
||
"providerOllama": "Ollama (local)",
|
||
"providerOnemin": "1min.ai (cloud)",
|
||
"providerOpenrouter": "OpenRouter (cloud)",
|
||
"providerMistral": "Mistral (cloud)",
|
||
"providerGemini": "Gemini (cloud)"
|
||
},
|
||
"ollama": {
|
||
"title": "Ollama configuration",
|
||
"url": "Ollama server URL",
|
||
"model": "Model",
|
||
"noModels": "No model detected. Make sure Ollama is running and the URL is correct."
|
||
},
|
||
"onemin": {
|
||
"title": "1min.ai configuration"
|
||
},
|
||
"openrouter": {
|
||
"title": "OpenRouter configuration",
|
||
"freeOnly": "Free only",
|
||
"hint": "List loaded automatically from OpenRouter. To stay <strong>free</strong>: a model marked <code>· free</code> or the <code>openrouter/free</code> router (picks a free model on its own). For imports, prefer a free model with a <strong>large context</strong> (the \"ctx\" value)."
|
||
},
|
||
"mistral": {
|
||
"title": "Mistral configuration",
|
||
"hint": "Free key on <code>console.mistral.ai</code> (\"Experiment\" tier, no card). For imports, prefer <code>mistral-large-latest</code> (128k context, faithful and good in French) or <code>mistral-small-latest</code> (faster)."
|
||
},
|
||
"gemini": {
|
||
"title": "Gemini configuration",
|
||
"hint": "Free key on <code>aistudio.google.com</code> (no card). Ideal for imports: <code>gemini-2.0-flash</code> has a <strong>~1M context</strong> → a whole book fits in 1-2 calls (no lost chunks). Consider raising the <strong>import chunk size</strong> to take advantage of it."
|
||
},
|
||
"apiKey": {
|
||
"label": "API key",
|
||
"configured": "✓ configured",
|
||
"placeholderSet": "Key configured (leave empty to keep it)",
|
||
"placeholderOnemin": "Enter your API key",
|
||
"placeholderOpenrouter": "Enter your API key (sk-or-...)",
|
||
"placeholderMistral": "Enter your Mistral API key",
|
||
"placeholderGemini": "Enter your Gemini API key",
|
||
"clear": "Clear the saved key"
|
||
},
|
||
"model": "Model",
|
||
"provider": "Provider",
|
||
"embeddings": {
|
||
"title": "Embeddings (RAG workshop)",
|
||
"hint": "Model used to <strong>index the workshops' PDF sources</strong> and search them. It is a <strong>separate</strong> model from the chat model above.",
|
||
"provider": "Embeddings provider",
|
||
"providerOllama": "Ollama (local, free)",
|
||
"providerMistral": "Mistral (cloud, EU)",
|
||
"ollamaModel": "Ollama embedding model",
|
||
"ollamaModelHint": "Recommended: <code>nomic-embed-text</code> (lightweight). Free and unlimited (local).",
|
||
"autoPull": "Automatically install the model at startup if missing",
|
||
"topK": "Excerpts retrieved per question (RAG coverage)",
|
||
"topKHint": "Higher = the AI sees more passages per question (better for broad questions like \"list the…\"), but a longer prompt. Default 8. With a <strong>large-context</strong> model (Gemini), you can go up to <strong>50-150</strong> for near \"whole document\" coverage. For exhaustive questions, prefer the workshop's <strong>\"Deep analysis\"</strong> button.",
|
||
"mistralKey": "Mistral API key",
|
||
"mistralKeyHint": "This is the <strong>same key</strong> as for the Mistral chat (a single shared key). Subject to the free tier's rate limit.",
|
||
"mistralModel": "Mistral embedding model"
|
||
},
|
||
"context": {
|
||
"title": "Context window",
|
||
"tokens": "Tokens allocated to the model",
|
||
"max": "/ {{max}} max",
|
||
"hintKnown": "The <strong>{{model}}</strong> model accepts up to {{max}} tokens. The higher the value, the more history and context the AI can hold — at the cost of VRAM and latency.",
|
||
"hintUnknown": "Unable to determine the model's max window (Ollama unreachable or unknown model). Slider capped at {{max}} as a safeguard."
|
||
},
|
||
"pdf": {
|
||
"title": "PDF import",
|
||
"chunkTokens": "Import chunk size (tokens)",
|
||
"chunkTokensHint": "When importing a PDF (rules or campaign), the text is split into chunks of this size before being analyzed by the AI. <strong>Bigger = fewer chunks</strong>, so faster and less fragmentation/duplication — but the chunk must fit within the model's window.<br />Reference: ~10,000 for Ollama (16k context); up to ~100,000 for a large-context model (e.g. GPT-5 mini, 400k) to process a whole book in one pass. Caution: a big chunk = longer generation (see the timeout below).",
|
||
"timeout": "AI call timeout (seconds)",
|
||
"timeoutHint": "Maximum wait time for a model response. If a heavy import fails with \"timeout\", <strong>increase this value</strong> (e.g. 600) or reduce the chunk size above. Default: 300 s."
|
||
},
|
||
"messages": {
|
||
"saveSuccess": "Settings saved.",
|
||
"saveError": "Failed to save settings.",
|
||
"loadError": "Unable to load settings."
|
||
}
|
||
},
|
||
"lore": {
|
||
"heroTitle": "Your Worlds",
|
||
"heroSubtitle": "Select an existing lore or create a new world",
|
||
"cardDate": "2h ago",
|
||
"statPages": "{{n}} pages",
|
||
"statFolders": "{{n}} folders",
|
||
"newLore": "New Lore",
|
||
"newLoreSubtitle": "Create a new world",
|
||
"tip": "💡 Tip: Use templates to structure your world consistently"
|
||
},
|
||
"folderView": {
|
||
"breadcrumb": "Breadcrumb",
|
||
"summary": "{{folders}} subfolder(s) · {{pages}} page(s)",
|
||
"editTitle": "Edit folder",
|
||
"deleteTitle": "Delete the folder and all its contents",
|
||
"subfolders": "Subfolders",
|
||
"newSubfolder": "New subfolder",
|
||
"noSubfolders": "No subfolders.",
|
||
"pages": "Pages",
|
||
"newPage": "New page",
|
||
"noPages": "No pages in this folder.",
|
||
"deleteConfirmTitle": "Delete folder",
|
||
"deleteConfirmMessage": "Delete the folder \"{{name}}\"?",
|
||
"impact": {
|
||
"subfolders": "{{n}} subfolder",
|
||
"subfoldersPlural": "{{n}} subfolders",
|
||
"pages": "{{n}} page",
|
||
"pagesPlural": "{{n}} pages",
|
||
"alsoDeletes": "This action will also delete: {{items}}.",
|
||
"irreversible": "This action is irreversible."
|
||
}
|
||
},
|
||
"loreCreate": {
|
||
"title": "Create a new Lore",
|
||
"nameLabel": "World name *",
|
||
"namePlaceholder": "e.g. Realm of Shadows, Cyberpunk 2157...",
|
||
"descriptionPlaceholder": "Briefly describe your world, its mood, its genre...",
|
||
"infoIntro": "<strong>💡 Tip:</strong> Your lore will be created with a few default templates:",
|
||
"infoNpc": "NPC - For your characters",
|
||
"infoPlace": "Place - For your cities and regions",
|
||
"infoFaction": "Faction - For your organizations",
|
||
"infoItem": "Item - For your artifacts",
|
||
"infoFooter": "You'll be able to create your own templates afterwards!",
|
||
"submit": "Create lore"
|
||
},
|
||
"loreDetail": {
|
||
"editTitle": "Edit Lore",
|
||
"deleteTitle": "Delete Lore",
|
||
"folders": "Folders",
|
||
"newFolder": "New folder",
|
||
"noFolders": "No folders yet.",
|
||
"createFirstFolder": "Create your first folder",
|
||
"deleteConfirmTitle": "Delete Lore",
|
||
"deleteConfirmMessage": "Permanently delete the Lore \"{{name}}\"?",
|
||
"impact": {
|
||
"folders": "{{n}} folder",
|
||
"foldersPlural": "{{n}} folders",
|
||
"pages": "{{n}} page",
|
||
"pagesPlural": "{{n}} pages",
|
||
"templates": "{{n}} template",
|
||
"templatesPlural": "{{n}} templates",
|
||
"alsoDeletes": "This action will also delete: {{items}}.",
|
||
"detachedCampaigns": "{{n}} campaign will be kept but will lose its link to this world.",
|
||
"detachedCampaignsPlural": "{{n}} campaigns will be kept but will lose their link to this world.",
|
||
"irreversible": "This action is irreversible."
|
||
}
|
||
},
|
||
"campaignGraph": {
|
||
"back": "Back to campaign",
|
||
"title": "{{name}} — Graph",
|
||
"subtitle": "{{pages}} page(s) · {{npcs}} NPC · {{scenes}} scene(s) · {{quests}} quest(s) · {{edges}} link(s). Click a node to open it, drag it to rearrange.",
|
||
"legendPage": "Lore page",
|
||
"legendNpc": "NPC",
|
||
"legendScene": "Scene",
|
||
"legendQuest": "Quest",
|
||
"reset": "Auto layout",
|
||
"resetTitle": "Recompute the automatic layout (forgets your manual moves)",
|
||
"toggleHint": "Click to hide / show this entity type",
|
||
"noLore": "No world (Lore) is linked to this campaign: link one from the campaign header to see the graph.",
|
||
"empty": "No pages in the linked world yet — the graph will fill in as you go.",
|
||
"hint": "No links yet: link pages together (a page's \"Related pages\") or attach an NPC to Lore pages from its sheet."
|
||
},
|
||
"loreNodeCreate": {
|
||
"title": "Create a new folder",
|
||
"subtitle": "Folders let you organize your pages by category",
|
||
"nameLabel": "Folder name *",
|
||
"namePlaceholder": "e.g. Characters, Creatures...",
|
||
"parentLabel": "Parent folder",
|
||
"rootOption": "— Lore root —",
|
||
"parentHint": "Leave empty to create a folder at the lore root",
|
||
"iconLabel": "Icon",
|
||
"descriptionPlaceholder": "Describe the type of content this folder will contain...",
|
||
"submit": "Create folder"
|
||
},
|
||
"loreNodeEdit": {
|
||
"title": "Edit folder",
|
||
"summary": "{{folders}} subfolder(s) · {{pages}} page(s)",
|
||
"nameLabel": "Folder name *",
|
||
"parentLabel": "Parent folder",
|
||
"rootOption": "— Lore root —",
|
||
"parentHint": "You cannot select a subfolder of the current folder (cycles are forbidden)",
|
||
"iconLabel": "Icon"
|
||
},
|
||
"sidebar": {
|
||
"subtitle": "THE DIGITAL CODEX",
|
||
"tabLore": "Lore",
|
||
"tabCampaign": "Campaign",
|
||
"toolsLabel": "TOOLS",
|
||
"globalSearch": "Global search",
|
||
"gameSystems": "RPG systems",
|
||
"vttExport": "VTT export",
|
||
"settings": "Settings",
|
||
"updateAvailable": "Update available",
|
||
"updateBadge": "NEW",
|
||
"version": "Version {{version}}"
|
||
},
|
||
"secondarySidebar": {
|
||
"backToCampaignHome": "Back to campaign home",
|
||
"resizeHandle": "Drag to resize",
|
||
"dragHandle": "Drag to reorder"
|
||
},
|
||
"breadcrumb": {
|
||
"ariaLabel": "Breadcrumb"
|
||
},
|
||
"globalSearch": {
|
||
"placeholder": "Search in LoreMind...",
|
||
"noResults": "No results",
|
||
"minChars": "Type at least 2 characters",
|
||
"hintNavigate": "navigate",
|
||
"hintSelect": "select",
|
||
"hintClose": "close",
|
||
"countSingular": "{{count}} result",
|
||
"countPlural": "{{count}} results",
|
||
"enemyLevel": "Lvl. {{level}}",
|
||
"tags": {
|
||
"page": "Page",
|
||
"node": "Folder",
|
||
"template": "Template",
|
||
"lore": "Lore",
|
||
"campaign": "Campaign",
|
||
"npc": "NPC",
|
||
"character": "PC",
|
||
"randomTable": "Random table",
|
||
"itemCatalog": "Item catalog",
|
||
"enemy": "Enemy"
|
||
}
|
||
},
|
||
"updateBanner": {
|
||
"message": "A new version of LoreMind is available (<strong>{{version}}</strong>). Reload to enjoy the latest improvements.",
|
||
"reload": "Reload",
|
||
"dismissTitle": "Dismiss (will reappear on next startup)",
|
||
"dismissAria": "Dismiss"
|
||
},
|
||
"confirmDialog": {
|
||
"defaultTitle": "Confirmation"
|
||
},
|
||
"aiChatDrawer": {
|
||
"title": "AI Assistant",
|
||
"resizeAria": "Resize the panel",
|
||
"resizeTitle": "Drag to resize",
|
||
"conversations": "Conversations",
|
||
"newConversation": "New conversation",
|
||
"noConversation": "No conversation",
|
||
"hideList": "Hide list",
|
||
"showList": "Show list",
|
||
"shrink": "Shrink",
|
||
"shrinkAria": "Shrink the panel",
|
||
"expand": "Expand",
|
||
"expandAria": "Expand the panel",
|
||
"gaugeTitle": "System: {{system}} · History: {{history}} · Current: {{current}} tokens",
|
||
"gaugeTitleMax": "System: {{system}} · History: {{history}} · Current: {{current}} / {{max}} tokens",
|
||
"gaugeLabel": "Context: {{total}} tokens",
|
||
"gaugeLabelMax": "Context: {{total}} / {{max}} tokens",
|
||
"quickSuggestions": "Quick suggestions:",
|
||
"inputPlaceholder": "Ask a question...",
|
||
"send": "Send",
|
||
"welcome": "Hello! I can help you develop this page. What would you like to create?",
|
||
"loadConversationError": "Unable to load the conversation.",
|
||
"deleteConversationTitle": "Delete conversation",
|
||
"deleteConversationMessage": "Delete the conversation \"{{title}}\"?",
|
||
"missingContextError": "Missing context to create a conversation.",
|
||
"createConversationError": "Unable to create the conversation.",
|
||
"unknownError": "Unknown error."
|
||
},
|
||
"imageGallery": {
|
||
"empty": "No illustration",
|
||
"illustrationAlt": "Illustration",
|
||
"mainIllustrationAlt": "Main illustration",
|
||
"mapAlt": "Map",
|
||
"removeImage": "Remove this image",
|
||
"removeMap": "Remove this map",
|
||
"lightboxAria": "Full-screen image",
|
||
"lightboxAlt": "Enlarged image"
|
||
},
|
||
"imageUploader": {
|
||
"addImage": "Add an image",
|
||
"uploading": "Uploading",
|
||
"uploadingHint": "Uploading...",
|
||
"dropTitle": "Drop an image here",
|
||
"dropHint": "or click to choose a file (JPEG, PNG, WebP, GIF, max 10 MB)",
|
||
"unsupportedFormat": "Unsupported format (JPEG, PNG, WebP, GIF only).",
|
||
"tooLarge": "File too large (max {{max}} MB).",
|
||
"serverRejected": "File rejected by the server (too large).",
|
||
"uploadFailed": "Upload failed. Check that the backend and MinIO are running."
|
||
},
|
||
"singleImagePicker": {
|
||
"removeImage": "Remove the image"
|
||
},
|
||
"chipsInput": {
|
||
"placeholder": "Add...",
|
||
"removeTag": "Remove"
|
||
},
|
||
"dynamicFieldsForm": {
|
||
"textPlaceholder": "Enter {{name}}…",
|
||
"noLabels": "No labels defined in the template for this field.",
|
||
"noFields": "No fields defined in this system's template. Edit the GameSystem to add fields."
|
||
},
|
||
"loreLinkPicker": {
|
||
"searchPlaceholder": "Search for a page to link...",
|
||
"openInNewTab": "Open in a new tab",
|
||
"removeLink": "Remove link",
|
||
"noMatch": "No matching page"
|
||
},
|
||
"enemyLinkPicker": {
|
||
"searchPlaceholder": "Search for an enemy from the bestiary...",
|
||
"openInNewTab": "Open the sheet in a new tab",
|
||
"removeLink": "Remove link",
|
||
"increment": "One more",
|
||
"decrement": "One less",
|
||
"noMatch": "No matching enemy",
|
||
"broken": "Missing reference",
|
||
"brokenTitle": "This scene references a deleted bestiary entry (enemy deleted then recreated?). Click × to remove the dead reference."
|
||
},
|
||
"personaView": {
|
||
"empty": "This sheet is still empty."
|
||
},
|
||
"playthroughFlagsManager": {
|
||
"empty": "No fact referenced. Add a \"When a fact is true\" condition on at least one quest for it to appear here.",
|
||
"true": "true",
|
||
"false": "false"
|
||
},
|
||
"prerequisiteEditor": {
|
||
"empty": "No condition — the quest is immediately available.",
|
||
"questCompletedLabel": "Quest completed:",
|
||
"noOtherQuest": "(no other quest)",
|
||
"sessionReachedLabel": "From session:",
|
||
"flagSetLabel": "When the fact is true:",
|
||
"flagNamePlaceholder": "fact_name",
|
||
"removePrerequisite": "Remove this prerequisite",
|
||
"addCondition": "Add a condition",
|
||
"menuAfterQuest": "After another quest",
|
||
"menuFromSession": "From a session",
|
||
"menuWhenFlag": "When a fact is true"
|
||
},
|
||
"questStatusBadge": {
|
||
"locked": "Locked",
|
||
"inProgress": "In progress",
|
||
"completed": "Completed",
|
||
"available": "Available"
|
||
},
|
||
"roomsEditor": {
|
||
"empty": "No room. The scene behaves like a classic narrative beat. Add a first room to turn it into an explorable location (dungeon, crypt…).",
|
||
"roomNamePlaceholder": "Room name",
|
||
"floorPlaceholder": "Fl.",
|
||
"floorTitle": "Floor (0 = ground floor)",
|
||
"moveUp": "Move up",
|
||
"moveDown": "Move down",
|
||
"removeRoom": "Delete room",
|
||
"descriptionLabel": "Description (read/summarized to players)",
|
||
"descriptionPlaceholder": "Atmosphere, what the PCs see when entering…",
|
||
"bestiaryLabel": "Bestiary enemies",
|
||
"enemiesLabel": "Enemies / creatures / boss (free text)",
|
||
"enemiesPlaceholder": "2 goblins, 1 ogre boss (HP 60, AC 14)…",
|
||
"lootLabel": "Loot / treasure",
|
||
"lootPlaceholder": "50 gp, healing potion, silver key…",
|
||
"trapsLabel": "Traps / hazards",
|
||
"trapsPlaceholder": "Trapdoor (DC 15 Perception), poisoned darts…",
|
||
"gmNotesLabel": "GM notes (private)",
|
||
"gmNotesPlaceholder": "The boss knows the PCs by name, a clue…",
|
||
"exitsLabel": "Exits / doors to other rooms",
|
||
"branchLabelPlaceholder": "North door",
|
||
"noOtherRoom": "(no other room)",
|
||
"branchConditionPlaceholder": "Condition (optional)",
|
||
"addExit": "Add an exit",
|
||
"addRoom": "Add a room",
|
||
"defaultRoomName": "Room {{n}}",
|
||
"defaultBranchLabel": "Door"
|
||
},
|
||
"templateFieldsEditor": {
|
||
"moveUp": "Move up",
|
||
"moveDown": "Move down",
|
||
"fieldNamePlaceholder": "Field name (e.g. Background, HP...)",
|
||
"removeField": "Delete this field",
|
||
"labelsHeader": "Labels (fixed keys for all sheets)",
|
||
"labelPlaceholder": "E.g. STR, DEX...",
|
||
"removeLabel": "Remove this label",
|
||
"addLabel": "Add a label",
|
||
"empty": "No field yet — add some with the buttons below.",
|
||
"addPrefix": "Add:",
|
||
"typeText": "Text",
|
||
"typeNumber": "Number",
|
||
"typeImage": "Image(s)",
|
||
"typeKeyValue": "Key/value list",
|
||
"layoutGallery": "Gallery",
|
||
"layoutHero": "Banner",
|
||
"layoutMasonry": "Mosaic",
|
||
"layoutCarousel": "Carousel",
|
||
"defaultLabel": "Template fields"
|
||
},
|
||
"arcCreate": {
|
||
"title": "Create a new story arc",
|
||
"nameLabel": "Arc name *",
|
||
"namePlaceholder": "e.g. The Shadow of the North",
|
||
"structureLabel": "Arc structure",
|
||
"linearTitle": "Linear",
|
||
"linearDesc": "Chapters played in order — classic sequential storytelling.",
|
||
"hubTitle": "Hub",
|
||
"hubDesc": "Parallel quests unlocked by conditions — sandbox style (e.g. Phandalin / Icespire Peak).",
|
||
"descriptionPlaceholder": "Describe the main story arc...",
|
||
"iconLabel": "Icon",
|
||
"submit": "Create arc"
|
||
},
|
||
"arcEdit": {
|
||
"fallbackTitle": "Arc",
|
||
"subtitle": "Story arc",
|
||
"aiAssistant": "AI Assistant",
|
||
"aiAssistantTitle": "Open the AI Assistant to discuss this arc",
|
||
"illustrationsLabel": "Illustrations",
|
||
"illustrationsHint": "Moods, portraits, evocative visuals for the arc. JPEG, PNG, WebP or GIF, 10 MB max.",
|
||
"mapsLabel": "Maps & plans",
|
||
"mapsHint": "Regional maps and plans to help players locate the action.",
|
||
"nameLabel": "Arc title *",
|
||
"namePlaceholder": "e.g. The Shadow of the North",
|
||
"synopsisLabel": "Arc synopsis",
|
||
"synopsisPlaceholder": "Describe the main story of this arc...",
|
||
"structureLabel": "Arc structure",
|
||
"linearTitle": "Linear",
|
||
"linearDesc": "Chapters played in order — sequential storytelling.",
|
||
"hubTitle": "Hub",
|
||
"hubDesc": "Parallel quests unlocked by conditions (sandbox).",
|
||
"iconLabel": "Icon",
|
||
"themesLabel": "Main themes",
|
||
"themesPlaceholder": "What themes does this arc explore? (betrayal, redemption...)",
|
||
"stakesLabel": "Overall stakes",
|
||
"stakesPlaceholder": "What are the major stakes of this arc for the characters?",
|
||
"gmNotesLabel": "GM notes and planning",
|
||
"gmNotesPlaceholder": "Your notes on the arc's direction, planned twists, key reveals...",
|
||
"gmNotesHint": "These notes are private and will not be exported to FoundryVTT.",
|
||
"rewardsLabel": "Rewards and progression",
|
||
"rewardsPlaceholder": "What rewards will the players gain? Items, levels, knowledge, contacts...",
|
||
"resolutionLabel": "Planned resolution",
|
||
"resolutionPlaceholder": "How should this arc end? What are the possible outcomes?",
|
||
"relatedPagesLabel": "Linked Lore pages",
|
||
"relatedPagesHint": "Link this arc to NPCs, places or Lore elements. Click a chip to open the linked page.",
|
||
"noLoreHint": "💡 This campaign is not linked to any universe. Link it to a Lore in the campaign screen to be able to link this arc to Lore pages (NPCs, places, etc.).",
|
||
"chatWelcome": "I can see this arc. Ask me to enrich its themes, stakes or resolution.",
|
||
"chatSuggestion1": "Suggest 3 major themes for this arc",
|
||
"chatSuggestion2": "Imagine stakes that put pressure on the players",
|
||
"chatSuggestion3": "Suggest a two-act resolution",
|
||
"deleteTitle": "Delete arc",
|
||
"deleteMessage": "Delete the arc \"{{name}}\"?",
|
||
"irreversible": "This action is irreversible.",
|
||
"optionalHint": "Only the title is required. Expand and fill in only the sections you need — everything else is optional.",
|
||
"themesStakesSectionTitle": "Themes and stakes",
|
||
"gmNotesSectionTitle": "GM notes",
|
||
"rewardsResolutionSectionTitle": "Rewards and resolution"
|
||
},
|
||
"arcView": {
|
||
"subtitleHub": "Hub arc (non-linear quests)",
|
||
"subtitleLinear": "Story arc",
|
||
"deleteTitle": "Delete the arc and all its content",
|
||
"mapsTitle": "Maps & plans",
|
||
"hubQuestsTitle": "Hub quests (scenario)",
|
||
"hubQuestsEmpty": "No quests for this hub. Create one to get started.",
|
||
"unlockConditions": "{{n}} unlock condition(s)",
|
||
"synopsisTitle": "Synopsis",
|
||
"themesTitle": "Main themes",
|
||
"stakesTitle": "Overall stakes",
|
||
"rewardsTitle": "Rewards and progression",
|
||
"resolutionTitle": "Planned resolution",
|
||
"gmNotesTitle": "GM notes and planning",
|
||
"relatedPagesTitle": "Linked Lore pages",
|
||
"notProvided": "Not provided",
|
||
"prereqQuestCompleted": "Quest “{{name}}” completed",
|
||
"prereqSessionReached": "Session {{n}} reached",
|
||
"prereqFlagSet": "Fact: {{flag}}",
|
||
"deletedPage": "(deleted page)",
|
||
"chaptersSingular": "{{n}} chapter",
|
||
"chaptersPlural": "{{n}} chapters",
|
||
"scenesSingular": "{{n}} scene",
|
||
"scenesPlural": "{{n}} scenes",
|
||
"deleteCascade": "This action will also delete: {{parts}}.",
|
||
"irreversible": "This action is irreversible.",
|
||
"deleteConfirmTitle": "Delete arc",
|
||
"deleteConfirmMessage": "Delete the arc \"{{name}}\"?",
|
||
"questsTitle": "Quests in this arc",
|
||
"questsEmpty": "No quests yet. Add one to populate this hub.",
|
||
"createQuest": "New quest"
|
||
},
|
||
"campaigns": {
|
||
"heroTitle": "Your Campaigns",
|
||
"heroSubtitle": "Join a campaign or create new ones",
|
||
"statusInProgress": "In progress",
|
||
"players": "{{n}} players",
|
||
"arcs": "{{n}} arcs",
|
||
"chapters": "{{n}} chapters",
|
||
"newCampaign": "New Campaign",
|
||
"newCampaignSubtitle": "Create a new adventure",
|
||
"tip": "💡 Tip: Organize your arcs and chapters so you never forget anything in your adventures"
|
||
},
|
||
"campaignCreate": {
|
||
"title": "Create a new Campaign",
|
||
"nameLabel": "Campaign name *",
|
||
"namePlaceholder": "e.g. The Shadow of the North, The Forgotten Heirs...",
|
||
"descriptionLabel": "Description / Pitch",
|
||
"descriptionPlaceholder": "Summarize the main plot of your campaign...",
|
||
"playerCountLabel": "Number of players",
|
||
"loreLabel": "Linked universe",
|
||
"noLoreOption": "— No universe (standalone campaign) —",
|
||
"loreHint": "Optional. If linked, you'll be able to connect arcs, chapters and scenes to Lore pages. Leave empty for a one-shot or if you'll create the Lore later.",
|
||
"gameSystemLabel": "RPG system",
|
||
"noGameSystemOption": "— None (generic campaign) —",
|
||
"createGameSystemOption": "+ Create a new system…",
|
||
"gameSystemNamePlaceholder": "Name of the new system (e.g. D&D 5e, Nimble, Homebrew)",
|
||
"gameSystemCreateHint": "Quick creation — you'll be able to add rules, PC/NPC sheet templates and the rest from the \"Systems\" section later.",
|
||
"gameSystemHint": "Optional. If set, the AI will inject the system's rules (classes, combat, lore...) into its suggestions to respect the RPG's mechanics.",
|
||
"gameSystemWarning": "⚠️ The chosen game system also determines the <strong>template for PC and NPC sheets</strong>. Changing it later will make the fields of existing sheets invisible (the data stays stored but will only show again when reverting to the previous system). Choose carefully from the start if possible.",
|
||
"orgIntro": "<strong>💡 Organization:</strong> Your campaign will be structured into:",
|
||
"orgArcs": "<strong>Arcs</strong> - The major narrative phases",
|
||
"orgChapters": "<strong>Chapters</strong> - The segments of an arc",
|
||
"orgScenes": "<strong>Scenes</strong> - The individual moments of play",
|
||
"submit": "Create the campaign"
|
||
},
|
||
"campaignDetail": {
|
||
"players": "{{n}} players",
|
||
"showMore": "Show more",
|
||
"showLess": "Show less",
|
||
"openLinkedLore": "Open the linked universe",
|
||
"loreMissingTitle": "The linked universe cannot be found",
|
||
"loreMissing": "Universe not found",
|
||
"loreLabel": "Linked universe",
|
||
"noLoreOption": "— No universe (standalone campaign) —",
|
||
"gameSystemLabel": "RPG system",
|
||
"noGameSystemOption": "— None (generic) —",
|
||
"createGameSystemOption": "+ Create a new system…",
|
||
"gameSystemNamePlaceholder": "Name of the new system (e.g. D&D 5e, Nimble, Homebrew)",
|
||
"charactersTitle": "Characters",
|
||
"npcTitle": "Non-player characters",
|
||
"newNpc": "New NPC",
|
||
"noNpc": "No NPCs yet.",
|
||
"createFirstNpc": "Create your first NPC",
|
||
"arcsTitle": "Narrative arcs",
|
||
"newArc": "New arc",
|
||
"chapters": "{{n}} chapters",
|
||
"noArc": "No narrative arcs yet.",
|
||
"createFirstArc": "Create your first arc",
|
||
"playthroughsTitle": "My playthroughs",
|
||
"newPlaythrough": "New playthrough",
|
||
"noPlaythrough": "No playthroughs. Create one to start a session with a table.",
|
||
"defaultPlaythroughName": "New playthrough {{n}}",
|
||
"foundryExport": "Export to Foundry",
|
||
"foundryExporting": "Exporting…",
|
||
"pdfExport": "Export to PDF",
|
||
"pdfExporting": "Generating…",
|
||
"graph": "Graph",
|
||
"graphTitle": "View the graph of NPCs and their linked lore pages",
|
||
"gameSystemChange": {
|
||
"title": "Change the game system?",
|
||
"message": "You are about to change the game system of this campaign. This also changes the template for PC and NPC sheets.",
|
||
"detailSheets": "{{n}} existing sheet(s) are linked to the current system's template.",
|
||
"detailFields": "Their fields will no longer display with the new system.",
|
||
"detailStored": "The data stays stored: reverting to the previous system will make them visible again.",
|
||
"confirm": "Change anyway"
|
||
},
|
||
"delete": {
|
||
"title": "Delete the campaign?",
|
||
"message": "Permanently delete the campaign \"{{name}}\"?",
|
||
"arcs": "{{n}} arc",
|
||
"arcsPlural": "{{n}} arcs",
|
||
"chapters": "{{n}} chapter",
|
||
"chaptersPlural": "{{n}} chapters",
|
||
"scenes": "{{n}} scene",
|
||
"scenesPlural": "{{n}} scenes",
|
||
"playthroughs": "{{n}} playthrough (with its PCs, sessions, facts)",
|
||
"playthroughsPlural": "{{n}} playthroughs (with their PCs, sessions, facts)",
|
||
"alsoDeletes": "Will also be deleted: {{items}}.",
|
||
"irreversible": "This action is irreversible."
|
||
},
|
||
"quickScene": "Scene",
|
||
"quickSceneFirst": "Add a scene",
|
||
"organizeInArcs": "or organize into arcs",
|
||
"defaultArcName": "Main arc",
|
||
"defaultChapterName": "Chapter 1",
|
||
"flatModeHint": "Simple mode: your scenes are in the left panel. Add one, or organize the campaign into arcs."
|
||
},
|
||
"campaignImport": {
|
||
"pageTitle": "Import a campaign",
|
||
"back": "Back to the campaign",
|
||
"title": "Import a campaign PDF",
|
||
"subtitle": "The AI proposes an arc → chapter → scene tree. You review and adjust it before creating anything.",
|
||
"importing": "Import in progress…",
|
||
"choosePdf": "Choose a campaign PDF",
|
||
"phaseExtracting": "Extracting text…",
|
||
"phaseAnalyzing": "Analyzing the campaign… ({{current}}/{{total}})",
|
||
"foundSoFar": "Found so far: {{arcs}} arc(s) · {{chapters}} chapter(s) · {{scenes}} scene(s) · {{npcs}} NPCs",
|
||
"errorNoStructure": "No narrative structure detected in this PDF.",
|
||
"errorImport": "PDF import failed.",
|
||
"errorImportDetail": "Import failed: {{message}}",
|
||
"errorApply": "Creation failed. Does the campaign still exist?",
|
||
"summaryToCreate": "To create: <strong>{{arcs}}</strong> new arc(s), <strong>{{chapters}}</strong> chapter(s), <strong>{{scenes}}</strong> scene(s)",
|
||
"summaryNpcs": ", <strong>{{npcs}}</strong> NPCs",
|
||
"summaryHint": ". Items marked <em>\"already present\"</em> (greyed out) are shown to place the additions in context; they will not be recreated. Edit the new ones, then create.",
|
||
"alreadyPresent": "already present",
|
||
"arcNamePlaceholder": "Arc name",
|
||
"removeArc": "Remove the arc",
|
||
"typeLabel": "Type:",
|
||
"typeLinear": "Linear",
|
||
"typeHub": "Hub (quests)",
|
||
"arcSynopsisPlaceholder": "Arc synopsis (optional)",
|
||
"chapterNamePlaceholder": "Chapter name",
|
||
"removeChapter": "Remove the chapter",
|
||
"chapterSynopsisPlaceholder": "Chapter synopsis (optional)",
|
||
"sceneNamePlaceholder": "Scene name",
|
||
"synopsisOptionalPlaceholder": "Synopsis (optional)",
|
||
"detailsTitle": "Player narration, GM notes, rooms",
|
||
"details": "Details",
|
||
"roomsCount": "· {{n}} room(s)",
|
||
"removeScene": "Remove the scene",
|
||
"playerNarrationLabel": "Read to the players",
|
||
"playerNarrationPlaceholder": "Boxed text read to the players (optional)",
|
||
"gmNotesLabel": "GM notes",
|
||
"gmNotesPlaceholder": "Secrets, development, consequences (optional)",
|
||
"roomsLabel": "Rooms (explorable location)",
|
||
"roomPlaceholder": "Room",
|
||
"enemiesPlaceholder": "Enemies",
|
||
"lootPlaceholder": "Loot",
|
||
"removeRoom": "Remove the room",
|
||
"room": "Room",
|
||
"scene": "Scene",
|
||
"chapter": "Chapter",
|
||
"addArc": "Add an arc",
|
||
"npcReviewTitle": "Detected NPCs and creatures ({{n}})",
|
||
"npcReviewHint": "Check the ones to create in the campaign (description taken from the book). Those already present in the campaign are greyed out and will not be recreated.",
|
||
"creating": "Creating…",
|
||
"createInCampaign": "Create in the campaign"
|
||
},
|
||
"chapterCreate": {
|
||
"titleQuest": "Create a new quest",
|
||
"titleChapter": "Create a new chapter",
|
||
"hub": "Hub",
|
||
"arc": "Arc",
|
||
"nameQuestLabel": "Quest name *",
|
||
"nameChapterLabel": "Chapter name *",
|
||
"namePlaceholderQuest": "e.g. Rescue the missing merchant",
|
||
"namePlaceholderChapter": "e.g. Chapter 1: The Disappearances",
|
||
"descPlaceholderQuest": "Describe this quest...",
|
||
"descPlaceholderChapter": "Describe this chapter...",
|
||
"icon": "Icon",
|
||
"createQuest": "Create quest",
|
||
"createChapter": "Create chapter"
|
||
},
|
||
"chapterEdit": {
|
||
"chapter": "Chapter",
|
||
"aiAssistant": "AI Assistant",
|
||
"aiAssistantTitle": "Open the AI Assistant to discuss this chapter",
|
||
"unlockTitleQuest": "🗺️ Quest unlock conditions",
|
||
"unlockTitleChapter": "🔒 Chapter unlock conditions",
|
||
"unlockHintQuest": "Scenario definition: all conditions must be met (AND) for the quest to unlock in a Playthrough. Leave empty to make it available from the start. Progression and fact states are managed in the Playthrough screen, not here.",
|
||
"unlockHintChapter": "Scenario definition: all conditions must be met (AND) for this chapter to unlock in a Playthrough. Leave empty to make it available from the start. Progression and fact states are managed in the Playthrough screen, not here.",
|
||
"illustrations": "Illustrations",
|
||
"illustrationsHint": "Portraits, moods and standout scenes of the chapter.",
|
||
"maps": "Maps & plans",
|
||
"mapsHint": "Regional maps, dungeon layouts and diagrams useful at the table.",
|
||
"nameLabel": "Chapter title *",
|
||
"namePlaceholder": "e.g. Chapter 1: The Disappearances",
|
||
"synopsisLabel": "Chapter synopsis",
|
||
"synopsisPlaceholder": "Briefly describe what happens in this chapter...",
|
||
"icon": "Icon",
|
||
"gmNotesLabel": "Game Master notes",
|
||
"gmNotesPlaceholder": "Your private notes on how the chapter unfolds, key events, twists...",
|
||
"gmNotesHint": "These notes are private and will not be exported to FoundryVTT.",
|
||
"playerObjectivesLabel": "Player objectives",
|
||
"playerObjectivesPlaceholder": "What must the players accomplish in this chapter?",
|
||
"narrativeStakesLabel": "Narrative stakes",
|
||
"narrativeStakesPlaceholder": "What are the dramatic stakes?",
|
||
"relatedPages": "Linked Lore pages",
|
||
"relatedPagesHint": "Link this chapter to NPCs, places or Lore elements that appear in it.",
|
||
"noLoreHint": "💡 This campaign is not linked to any universe. Link it to a Lore in the campaign screen to be able to link this chapter to Lore pages.",
|
||
"chatWelcome": "I can see this chapter. Ask me to flesh out its objectives, its stakes or its opening scene.",
|
||
"chatSuggestion1": "Suggest clear objectives for the players in this chapter",
|
||
"chatSuggestion2": "Imagine 2 narrative tensions that renew interest midway through the chapter",
|
||
"chatSuggestion3": "Suggest a striking opening scene",
|
||
"deleteTitle": "Delete chapter",
|
||
"deleteMessage": "Delete the chapter \"{{name}}\"?",
|
||
"irreversible": "This action is irreversible.",
|
||
"optionalHint": "Only the title is required. Expand and fill in only the sections you need — everything else is optional.",
|
||
"gmNotesSectionTitle": "GM notes",
|
||
"objectivesStakesSectionTitle": "Objectives and stakes",
|
||
"quest": "Quest"
|
||
},
|
||
"chapterGraph": {
|
||
"chapter": "Chapter",
|
||
"title": "{{name}} — Map",
|
||
"subtitle": "Flowchart of scenes and their narrative branches",
|
||
"back": "Back to chapter",
|
||
"empty": "This chapter has no scenes. Create some to see the map appear.",
|
||
"hint": "💡 Click a scene to open it, drag it to move it. Drag the dot under a node onto another to create a link; click a link to edit or delete it. Wheel = zoom, drag the background = pan the view.",
|
||
"allCampaigns": "All campaigns",
|
||
"addScene": "Add a scene",
|
||
"newSceneName": "New scene",
|
||
"titleFlat": "Scene map",
|
||
"backFlat": "Back to campaign",
|
||
"zoomIn": "Zoom in",
|
||
"zoomOut": "Zoom out",
|
||
"fit": "Fit to content",
|
||
"linkEditor": {
|
||
"label": "Choice label",
|
||
"labelPlaceholder": "e.g. \"Follow the trail\"",
|
||
"condition": "Condition (GM notes)",
|
||
"conditionPlaceholder": "e.g. \"if the PCs have the key\"",
|
||
"type": "Link type",
|
||
"delete": "Delete link",
|
||
"close": "Close",
|
||
"kind": {
|
||
"EXIT": "Exit",
|
||
"CLUE": "Clue",
|
||
"LEAD": "Lead"
|
||
}
|
||
},
|
||
"rename": "Rename scene",
|
||
"renamePlaceholder": "Scene name"
|
||
},
|
||
"chapterView": {
|
||
"chapter": "Chapter",
|
||
"questHub": "Quest (Hub)",
|
||
"conditional": "Conditional",
|
||
"conditionalBadgeTitle": "This chapter has unlock conditions: it unlocks in a Playthrough when they are met.",
|
||
"map": "Chapter map",
|
||
"mapTitle": "View the flowchart of scenes and their branches",
|
||
"deleteTitle": "Delete the chapter and its scenes",
|
||
"unlockConditions": "Unlock conditions",
|
||
"unlockHintQuest": "During a playthrough, the quest unlocks as soon as all these conditions are met. Toggling facts is done in the Playthrough's \"Facts\" screen.",
|
||
"unlockHintChapter": "During a playthrough, this chapter unlocks as soon as all these conditions are met. Toggling facts is done in the Playthrough's \"Facts\" screen.",
|
||
"noConditionQuest": "No conditions — this quest is available from the start in every Playthrough.",
|
||
"noConditionEdit": "Click <strong>Edit</strong> to add conditions (\"previous quest completed\", \"from session N onward\", \"when a fact is true\").",
|
||
"maps": "Maps & plans",
|
||
"synopsis": "Synopsis",
|
||
"notProvided": "Not provided",
|
||
"playerObjectives": "Player objectives",
|
||
"narrativeStakes": "Narrative stakes",
|
||
"gmNotes": "Game Master notes",
|
||
"relatedPages": "Linked Lore pages",
|
||
"prereqQuestCompleted": "Quest \"{{name}}\" completed",
|
||
"prereqSessionReached": "Session {{n}} reached",
|
||
"prereqFlagSet": "Fact: {{flag}}",
|
||
"deletedPage": "(deleted page)",
|
||
"deleteScenes": "This action will also delete: {{n}} scene.",
|
||
"deleteScenesPlural": "This action will also delete: {{n}} scenes.",
|
||
"irreversible": "This action is irreversible.",
|
||
"deleteChapterTitle": "Delete chapter",
|
||
"deleteChapterMessage": "Delete the chapter \"{{name}}\"?"
|
||
},
|
||
"pageCreate": {
|
||
"title": "Create a new Page",
|
||
"subtitle": "Create a page from an existing template",
|
||
"pageTitle": "New page",
|
||
"pageTitleLabel": "Page title *",
|
||
"pageTitlePlaceholder": "E.g. Master Eldrin, The Silver City...",
|
||
"templateLabel": "Template *",
|
||
"createTemplate": "Create a template",
|
||
"createTemplateTitle": "Create a new template for this Lore",
|
||
"createTemplateHint": "You'll come back here automatically, and your input will be kept.",
|
||
"noTemplates": "No template defined for this Lore.",
|
||
"firstSuffix": "first.",
|
||
"nodeLabel": "Destination folder *",
|
||
"nodePlaceholder": "Select a folder",
|
||
"nodeHint": "The page will be created in this folder",
|
||
"noNodes": "No folder in this Lore.",
|
||
"createNode": "Create a folder",
|
||
"infoBox": "💡 Option 1: <strong>Create the page</strong> empty, then fill in the fields manually.<br>💡 Option 2: <strong>Create with AI</strong> to chat with an assistant that will pre-fill the fields.",
|
||
"aiTitle": "Open the AI assistant to pre-fill the fields",
|
||
"createWithAi": "Create with AI",
|
||
"createPage": "Create the page",
|
||
"wizardPrimaryAction": "Apply and create the page",
|
||
"wizardSuggestion1": "Make the description shorter",
|
||
"wizardSuggestion2": "Add a striking distinctive trait",
|
||
"wizardSuggestion3": "Give it a darker tone",
|
||
"wizardWelcomeEmpty": "Describe what you'd like to create.",
|
||
"wizardWelcome": "Great, let's create a \"{{name}}\" page! Describe it to me in a few words — context, role, notable traits — and I'll suggest values for each field.",
|
||
"errorNoReply": "The assistant hasn't replied yet. Describe your idea first.",
|
||
"errorNoValues": "Unable to extract the values. Ask the assistant to suggest them again.",
|
||
"errorApplyValues": "Page created, but the values could not be applied.",
|
||
"errorCreate": "Error while creating the page."
|
||
},
|
||
"pageEdit": {
|
||
"pageFallback": "Page",
|
||
"aiTitle": "Open the AI Assistant (chat or auto-fill)",
|
||
"aiAssistant": "AI Assistant",
|
||
"generating": "Generating…",
|
||
"folder": "Folder",
|
||
"folderHint": "Move this page to another folder",
|
||
"fields": "Fields",
|
||
"valuePlaceholder": "Value for {{field}}...",
|
||
"noLabels": "No label defined in the template for this field.",
|
||
"deleteRow": "Delete row",
|
||
"deleteRowN": "Delete row {{n}}",
|
||
"addRow": "Add a row",
|
||
"noColumns": "No column defined in the template for this table.",
|
||
"tags": "Tags",
|
||
"tagsPlaceholder": "Add a tag (Enter to confirm)...",
|
||
"tagsHint": "Free keywords to classify and find this page",
|
||
"relatedPages": "Linked pages",
|
||
"relatedPagesHint": "Click a link to open the associated page",
|
||
"privateNotes": "Private notes",
|
||
"privateNotesPlaceholder": "Personal notes (not exported to FoundryVTT)",
|
||
"privateNotesHint": "Visible only to you. Useful to prepare your sessions.",
|
||
"chatPrimaryAction": "Auto-fill all fields",
|
||
"chatSuggestion1": "Flesh out this page's story",
|
||
"chatSuggestion2": "Suggest links with other pages of the Lore",
|
||
"chatSuggestion3": "Suggest a secondary plot",
|
||
"aiUnreachable": "The AI assistant is unreachable. Check that the Brain service is running.",
|
||
"aiFailed": "AI generation failed. Try again in a moment.",
|
||
"deleteTitle": "Delete the page",
|
||
"deleteMessage": "Delete the page \"{{title}}\"?"
|
||
},
|
||
"pageView": {
|
||
"pageFallback": "Page",
|
||
"deleteTitle": "Delete the page",
|
||
"notFilled": "Not filled in",
|
||
"tags": "Tags",
|
||
"relatedPages": "Linked pages",
|
||
"privateNotes": "Private notes",
|
||
"deletedPage": "(deleted page)",
|
||
"deleteMessage": "Delete the page \"{{title}}\"?",
|
||
"deleteIrreversible": "This action is irreversible."
|
||
},
|
||
"templateCreate": {
|
||
"title": "Create a new Template",
|
||
"subtitle": "Define a custom blueprint to create consistent pages",
|
||
"nameLabel": "Template name *",
|
||
"namePlaceholder": "E.g. Inn, Artifact, Monster...",
|
||
"descriptionPlaceholder": "What is this template for?",
|
||
"defaultNodeLabel": "Default folder *",
|
||
"nodePlaceholder": "Select a folder",
|
||
"defaultNodeHint": "Pages created with this template will be placed in this folder",
|
||
"noNodes": "No folder in this Lore.",
|
||
"createNode": "Create a folder",
|
||
"firstSuffix": "first.",
|
||
"fieldsLabel": "Template fields *",
|
||
"moveUp": "Move up",
|
||
"moveDown": "Move down",
|
||
"fieldTypeTitle": "Field type",
|
||
"typeText": "Text",
|
||
"typeImage": "Image",
|
||
"typeKeyValue": "Key/value list",
|
||
"typeTable": "Table",
|
||
"layoutTitle": "Image layout",
|
||
"layoutGallery": "Grid",
|
||
"layoutHero": "Hero",
|
||
"layoutMasonry": "Masonry",
|
||
"layoutCarousel": "Carousel",
|
||
"column": "Column",
|
||
"label": "Label",
|
||
"columnN": "Column {{n}}",
|
||
"labelN": "Label {{n}}",
|
||
"tableLabelsHint": "Add the table columns (e.g. Item, Price, Description…)",
|
||
"kvLabelsHint": "Add the row labels (e.g. STR, DEX, CON…)",
|
||
"addFieldPlaceholder": "+ Add a field",
|
||
"addFieldTitle": "Add the field",
|
||
"fieldsHelp": "Text = free + usable by the AI. Image = gallery. Key/value list = label/value pairs (stats). Table = fixed columns + rows added freely (shop, inventory…).",
|
||
"createTemplate": "Create the template"
|
||
},
|
||
"templateEdit": {
|
||
"subtitle": "Template",
|
||
"defaultNodeLabel": "Default folder",
|
||
"noneOption": "-- None --",
|
||
"defaultNodeHint": "Pages created with this template will be placed in this folder by default",
|
||
"fieldsLabel": "Template fields",
|
||
"moveUp": "Move up",
|
||
"moveDown": "Move down",
|
||
"fieldTypeTitle": "Field type",
|
||
"typeText": "Text",
|
||
"typeImage": "Image",
|
||
"typeKeyValue": "Key/value list",
|
||
"typeTable": "Table",
|
||
"layoutTitle": "Image layout",
|
||
"layoutGallery": "Grid",
|
||
"layoutHero": "Hero",
|
||
"layoutMasonry": "Masonry",
|
||
"layoutCarousel": "Carousel",
|
||
"column": "Column",
|
||
"label": "Label",
|
||
"columnN": "Column {{n}}",
|
||
"labelN": "Label {{n}}",
|
||
"tableLabelsHint": "Add the table columns (e.g. Item, Price, Description…)",
|
||
"kvLabelsHint": "Add the row labels (e.g. STR, DEX, CON…)",
|
||
"addFieldPlaceholder": "+ Add a field",
|
||
"addFieldTitle": "Add the field",
|
||
"fieldsHelp": "Text = free + AI-generatable. Image = gallery. Key/value list = label/value pairs (stats). Table = fixed columns + rows added freely (shop, inventory…).",
|
||
"deleteTitle": "Delete the template",
|
||
"deleteMessage": "Delete the template \"{{name}}\"?",
|
||
"move": "Move (drag)",
|
||
"narrower": "Narrower",
|
||
"wider": "Wider",
|
||
"widthLabel": "Width in columns",
|
||
"gridHelp": "Drag a block type from the palette onto the grid. Move a block with its handle (top-left), resize its width AND height with the edge and corner handles. Click a name to rename. The layout is preserved in the preview.",
|
||
"blockNameLabel": "Block name",
|
||
"paletteTitle": "Blocks",
|
||
"addBlockHint": "Drag onto the grid (or click) to add",
|
||
"canvasEmpty": "Drag a block from the palette to start",
|
||
"resize": "Resize (drag)",
|
||
"defaultNameText": "Text",
|
||
"defaultNameImage": "Illustration",
|
||
"defaultNameKeyValue": "Characteristics",
|
||
"defaultNameTable": "Table",
|
||
"resizeWidth": "Width (drag)",
|
||
"resizeHeight": "Height (drag)"
|
||
},
|
||
"sceneCreate": {
|
||
"title": "Create a new scene",
|
||
"chapterRef": "Chapter: {{name}}",
|
||
"nameLabel": "Scene name *",
|
||
"namePlaceholder": "E.g.: Arrival at the village",
|
||
"descriptionLabel": "Description",
|
||
"descriptionPlaceholder": "Describe the scene, the key events, the NPCs present...",
|
||
"iconLabel": "Icon",
|
||
"createButton": "Create scene",
|
||
"createError": "Error while creating the scene"
|
||
},
|
||
"sceneEdit": {
|
||
"defaultTitle": "Scene",
|
||
"subtitle": "Scene",
|
||
"aiAssistant": "AI Assistant",
|
||
"aiAssistantTitle": "Open the AI Assistant to discuss this scene",
|
||
"illustrationsLabel": "Illustrations",
|
||
"illustrationsHint": "NPC portraits, visual mood, evocative scenes...",
|
||
"battlemapLabel": "Battlemaps (Foundry export)",
|
||
"battlemapHint": "Battle maps to export to Foundry: media (image/video) + Universal VTT .json/.dd2vtt file (Dungeon Alchemist, Dungeondraft...). Add several maps for variants of the same scene (day/night, floors...). Not displayed in the app.",
|
||
"battlemapMedia": "Media (image / video)",
|
||
"battlemapData": "Data (.json / .dd2vtt)",
|
||
"battlemapChoose": "Choose a file",
|
||
"battlemapUploading": "Uploading...",
|
||
"battlemapAttached": "File attached",
|
||
"battlemapRemove": "Remove",
|
||
"nameLabel": "Scene title *",
|
||
"namePlaceholder": "E.g.: Arrival at the village",
|
||
"descriptionLabel": "Short description",
|
||
"descriptionPlaceholder": "One or two sentences summarizing what happens...",
|
||
"iconLabel": "Icon",
|
||
"contextSectionTitle": "Context and mood",
|
||
"locationLabel": "Location",
|
||
"locationPlaceholder": "E.g.: The Golden Dragon Tavern",
|
||
"timingLabel": "Time",
|
||
"timingPlaceholder": "E.g.: Evening, at nightfall",
|
||
"atmosphereLabel": "Mood and atmosphere",
|
||
"atmospherePlaceholder": "Describe the general atmosphere of the scene (sounds, smells, light, emotions...)",
|
||
"narrationSectionTitle": "Narration for players",
|
||
"narrationPlaceholder": "The text you will read to the players to set the scene...",
|
||
"narrationHint": "This text can be read directly to your players.",
|
||
"gmNotesSectionTitle": "GM notes and secrets",
|
||
"gmNotesPlaceholder": "Hidden information, clues, secret elements the players must not know...",
|
||
"gmNotesHint": "These notes are private and visible only to the GM.",
|
||
"choicesSectionTitle": "Choices and consequences",
|
||
"choicesPlaceholder": "Describe the different options available to the players and their consequences...",
|
||
"branchesSectionTitle": "Narrative branches",
|
||
"branchesNoSibling": "💡 You need at least one other scene in this chapter to create branches. Create other scenes first, then come back here to connect them.",
|
||
"branchLabelLabel": "Choice label",
|
||
"branchLabelPlaceholder": "E.g.: If the players attack the guard",
|
||
"branchTargetLabel": "Destination scene *",
|
||
"branchTargetPlaceholder": "— Choose a scene —",
|
||
"branchConditionLabel": "GM condition (optional)",
|
||
"branchConditionPlaceholder": "E.g.: Persuasion check DC 15 succeeded",
|
||
"branchRemove": "Remove",
|
||
"branchRemoveTitle": "Remove this branch",
|
||
"branchAdd": "+ Add a branch",
|
||
"branchesHint": "Each branch represents a possible \"exit\" from this scene depending on the players' action. Targets are limited to scenes in the same chapter.",
|
||
"combatSectionTitle": "Combat or encounter",
|
||
"combatDifficultyLabel": "Estimated difficulty",
|
||
"combatDifficultyPlaceholder": "E.g.: Medium, 3 level 2 goblins",
|
||
"bestiaryEnemiesLabel": "Bestiary enemies",
|
||
"bestiaryEnemiesHint": "Reference sheets from your bestiary — click a chip to open the sheet.",
|
||
"enemiesLabel": "Enemies and creatures (free text)",
|
||
"enemiesPlaceholder": "List of enemies present in this scene...",
|
||
"loreSectionTitle": "Linked Lore pages",
|
||
"loreHint": "Pin the location, NPCs or creatures of this scene here. Click a chip to open the page.",
|
||
"noLoreHint": "💡 This campaign is not associated with any universe. Associate it with a Lore on the campaign screen to be able to pin Lore pages to this scene.",
|
||
"dungeonSectionTitle": "Explorable location (dungeon, crypt…)",
|
||
"dungeonHint": "If this scene represents a location to explore room by room, add them here. The scene then switches to \"dungeon\" mode in the display.",
|
||
"chatWelcome": "I can see this scene. Ask me to enrich its mood, its narration or its choices.",
|
||
"chatSuggestion1": "Suggest an immersive sensory atmosphere for this scene",
|
||
"chatSuggestion2": "Suggest an opening narration to read to the players",
|
||
"chatSuggestion3": "Come up with 2 choices with striking consequences",
|
||
"deleteTitle": "Delete scene",
|
||
"deleteMessage": "Delete the scene \"{{name}}\"?",
|
||
"deleteIrreversible": "This action is irreversible.",
|
||
"saveError": "Error while saving",
|
||
"deleteError": "Error while deleting",
|
||
"battlemapSourceLabel": "Map source",
|
||
"battlemapSourceDA": "Dungeon Alchemist (image/video + JSON)",
|
||
"battlemapSourceDD": "DungeonDraft (.dd2vtt)",
|
||
"battlemapDd2vttSlot": ".dd2vtt file",
|
||
"battlemapDd2vttHint": "The .dd2vtt contains the map AND the walls/lights; the embedded image is extracted automatically for the Foundry export.",
|
||
"battlemapDd2vttNoImage": "No image found in this .dd2vtt — the exported map will have no background.",
|
||
"optionalHint": "Only the title is required. Expand and fill in only the sections you need — everything else is optional.",
|
||
"nodeTypeLabel": "Node type",
|
||
"nodeTypeHint": "Level 2: typing the scene (location, encounter, NPC…) colors the node in the graph view. Optional.",
|
||
"branchKindLabel": "Link type",
|
||
"branchTargetBroken": "Destination not found (deleted scene): pick a new destination or remove this branch.",
|
||
"battlemapAdd": "Add a map",
|
||
"battlemapLabelPlaceholder": "Label (e.g.: Day, Night, Floor 1…)",
|
||
"battlemapRemoveMap": "Remove this map"
|
||
},
|
||
"sceneView": {
|
||
"subtitle": "Scene",
|
||
"deleteTitleAttr": "Delete scene",
|
||
"mapsSectionTitle": "Maps & plans",
|
||
"descriptionSectionTitle": "Description",
|
||
"empty": "Not provided",
|
||
"locationSectionTitle": "Location",
|
||
"timingSectionTitle": "Time",
|
||
"atmosphereSectionTitle": "Mood and atmosphere",
|
||
"narrationSectionTitle": "Narration for players",
|
||
"choicesSectionTitle": "Choices and consequences",
|
||
"combatDifficultySectionTitle": "Estimated difficulty",
|
||
"enemiesSectionTitle": "Enemies and creatures",
|
||
"gmNotesSectionTitle": "GM notes and secrets",
|
||
"loreSectionTitle": "Linked Lore pages",
|
||
"deletedPage": "(page deleted)",
|
||
"roomsSectionTitle": "Rooms of the location",
|
||
"roomFloor": "Floor {{floor}}",
|
||
"roomEnemies": "⚔️ Enemies",
|
||
"roomLoot": "💰 Loot",
|
||
"roomTraps": "⚠️ Traps",
|
||
"roomGmNotes": "🔒 GM notes",
|
||
"roomExits": "→ Exits",
|
||
"roomExitCondition": "(if: {{condition}})",
|
||
"deletedRoom": "(room deleted)",
|
||
"deleteTitle": "Delete scene",
|
||
"deleteMessage": "Delete the scene \"{{name}}\"?",
|
||
"deleteIrreversible": "This action is irreversible.",
|
||
"deleteError": "Error while deleting the scene"
|
||
},
|
||
"characterEdit": {
|
||
"backToCampaign": "Back to campaign",
|
||
"titleEdit": "Edit character sheet",
|
||
"titleNew": "New character",
|
||
"aiAssistant": "AI Assistant",
|
||
"aiAssistantTitle": "Open the AI Assistant to brainstorm about this PC",
|
||
"nameLabel": "Character name *",
|
||
"namePlaceholder": "E.g. Thorin Great-Axe, Lyra the Wanderer...",
|
||
"portrait": "Portrait",
|
||
"portraitHint": "Square recommended (400×400).",
|
||
"header": "Banner / Header",
|
||
"headerHint": "Landscape format recommended (1200×400).",
|
||
"chatWelcome": "I can see this character sheet. Ask me to suggest stats, backstory, equipment or personal goals.",
|
||
"chatSuggestion1": "Suggest a backstory consistent with the setting",
|
||
"chatSuggestion2": "Suggest 3 personal goals for this character",
|
||
"chatSuggestion3": "Help me balance the combat stats",
|
||
"deleteTitle": "Delete this sheet?",
|
||
"deleteMessage": "Delete the sheet for \"{{name}}\"?",
|
||
"irreversible": "This action is irreversible."
|
||
},
|
||
"characterView": {
|
||
"aiAssistant": "AI Assistant"
|
||
},
|
||
"npcEdit": {
|
||
"backToCampaign": "Back to campaign",
|
||
"titleEdit": "Edit NPC",
|
||
"titleNew": "New NPC",
|
||
"aiAssistant": "AI Assistant",
|
||
"aiAssistantTitle": "Open the AI Assistant to brainstorm about this NPC",
|
||
"nameLabel": "NPC name *",
|
||
"namePlaceholder": "E.g. Borin the blacksmith, Lady Elara, Kael the innkeeper...",
|
||
"folder": "Folder",
|
||
"folderPlaceholder": "E.g. Bard's Gate, The Pipers faction… (leave empty = unfiled)",
|
||
"portrait": "Portrait",
|
||
"portraitHint": "Square recommended (400×400).",
|
||
"header": "Banner / Header",
|
||
"headerHint": "Landscape format recommended (1200×400).",
|
||
"relatedPages": "Linked Lore pages",
|
||
"relatedPagesHint": "Link this NPC to pages of the setting (their town, faction, region…). These links appear in the Lore graph.",
|
||
"chatWelcome": "I can see this NPC sheet. Ask me to suggest appearance, motivations, secrets, or signature lines.",
|
||
"chatSuggestion1": "Suggest a striking appearance and posture",
|
||
"chatSuggestion2": "Suggest 2 motivations and a secret for this NPC",
|
||
"chatSuggestion3": "Imagine 3 signature lines that characterize them",
|
||
"deleteTitle": "Delete this sheet?",
|
||
"deleteMessage": "Delete the sheet for \"{{name}}\"?",
|
||
"irreversible": "This action is irreversible."
|
||
},
|
||
"npcList": {
|
||
"create": "New NPC",
|
||
"title": "NPCs",
|
||
"hint": "All the non-player characters in the campaign, organized by folder. The \"Folder\" field of each sheet drives the classification.",
|
||
"empty": "No NPCs yet.",
|
||
"unclassified": "Unfiled",
|
||
"deleteTitle": "Delete sheet",
|
||
"deleteMessage": "Delete the sheet for \"{{name}}\"?",
|
||
"irreversible": "This action is irreversible."
|
||
},
|
||
"npcView": {
|
||
"aiAssistant": "AI Assistant",
|
||
"relatedPages": "Linked Lore pages",
|
||
"deletedPage": "(deleted page)"
|
||
},
|
||
"enemyEdit": {
|
||
"backToEnemies": "Back to enemies",
|
||
"titleEdit": "Edit enemy",
|
||
"titleNew": "New enemy",
|
||
"nameLabel": "Enemy name *",
|
||
"namePlaceholder": "E.g. Balor, Goblin warchief, Lich…",
|
||
"level": "Level / CR",
|
||
"levelPlaceholder": "E.g. 5, CR 8, Boss…",
|
||
"folder": "Folder",
|
||
"folderPlaceholder": "E.g. Demons, Humanoids… (empty = unfiled)",
|
||
"portrait": "Portrait",
|
||
"portraitHint": "Square recommended (400×400).",
|
||
"header": "Banner / Header",
|
||
"headerHint": "Landscape format recommended (1200×400).",
|
||
"deleteTitle": "Delete this sheet?",
|
||
"deleteMessage": "Delete the sheet for \"{{name}}\"?",
|
||
"irreversible": "This action is irreversible."
|
||
},
|
||
"enemyList": {
|
||
"create": "New enemy",
|
||
"importMonsters": "Import Foundry monsters",
|
||
"importing": "Importing…",
|
||
"title": "Enemies",
|
||
"hint": "The campaign bestiary: monsters and creatures with their sheet (driven by the game system's Enemy template), organized by folder (Demons, Humanoids…).",
|
||
"empty": "No enemies yet.",
|
||
"unclassified": "Unfiled",
|
||
"levelShort": "Lvl {{level}}",
|
||
"deleteTitle": "Delete enemy",
|
||
"deleteMessage": "Delete \"{{name}}\"?"
|
||
},
|
||
"enemyView": {
|
||
"levelLong": "Level {{level}}",
|
||
"foundryStatsTitle": "Foundry stats",
|
||
"foundryStatsHint": "Snapshot imported from Foundry (frozen — the live sheet stays in Foundry)."
|
||
},
|
||
"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.",
|
||
"structureImport": "Import a Foundry structure",
|
||
"structureImporting": "Importing…",
|
||
"structureActorType": "Foundry actor: {{type}}",
|
||
"structureInvalid": "Unreadable structure (invalid JSON).",
|
||
"structureFailed": "Structure import failed.",
|
||
"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 && 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."
|
||
},
|
||
"itemCatalogEdit": {
|
||
"editTitle": "Edit catalog",
|
||
"createTitle": "New item catalog",
|
||
"nameLabel": "Name *",
|
||
"namePlaceholder": "e.g. The dwarven armorer's shop",
|
||
"descriptionPlaceholder": "What is this catalog / shop for?",
|
||
"aiTitle": "Generate with AI",
|
||
"aiHint": "Describe the shop/loot; the AI suggests the items (review them before saving). Contextualized with your campaign.",
|
||
"aiPlaceholder": "e.g. an alchemist's shop in a port city, exotic items",
|
||
"itemsTitle": "Items",
|
||
"priceLabel": "Price",
|
||
"categoryLabel": "Category",
|
||
"itemNamePlaceholder": "Item",
|
||
"itemPricePlaceholder": "50 gp",
|
||
"itemCategoryPlaceholder": "Weapons",
|
||
"itemDescriptionPlaceholder": "Effect / details",
|
||
"emptyHint": "No items — click \"Add\".",
|
||
"aiPromptRequired": "Describe the catalog to generate.",
|
||
"aiError": "AI generation failed. Try again or rephrase.",
|
||
"nameRequired": "Name is required.",
|
||
"saveError": "Saving failed."
|
||
},
|
||
"itemCatalogList": {
|
||
"title": "Item catalogs",
|
||
"hint": "Shops, loot, treasures… filled in by hand or via AI. Available during sessions when players visit a shop.",
|
||
"newCatalog": "New catalog",
|
||
"empty": "No catalogs yet.",
|
||
"itemCount": "{{n}} item(s)",
|
||
"deleteTitle": "Delete catalog",
|
||
"deleteMessage": "Delete \"{{name}}\"?"
|
||
},
|
||
"itemCatalogView": {
|
||
"empty": "No items — edit the catalog to add some."
|
||
},
|
||
"notebookActionCard": {
|
||
"arc": "Arc",
|
||
"chapter": "Chapter",
|
||
"warnArc": "First create an arc in the campaign so you can attach this element to it.",
|
||
"warnArcChapter": "First create an arc and a chapter in the campaign so you can attach this element to it.",
|
||
"creating": "Creating…",
|
||
"createInCampaign": "Create in campaign",
|
||
"createdOpen": "Created — open",
|
||
"createError": "Creation failed.",
|
||
"typeNpc": "NPC",
|
||
"typeScene": "Scene",
|
||
"typeChapter": "Chapter",
|
||
"typeArc": "Arc",
|
||
"typeTable": "Random table"
|
||
},
|
||
"notebookList": {
|
||
"title": "Adaptation workshops",
|
||
"hint": "Chat with the AI from a source PDF (searching within the document) to adapt its content to your campaign. The source and conversation are kept.",
|
||
"namePlaceholder": "Workshop name (e.g. Adapting module X)",
|
||
"newNotebook": "New workshop",
|
||
"empty": "No workshops yet.",
|
||
"defaultName": "New workshop",
|
||
"deleteTitle": "Delete workshop",
|
||
"deleteMessage": "Delete \"{{name}}\" and its indexed sources?"
|
||
},
|
||
"notebookDetail": {
|
||
"backToList": "Workshops",
|
||
"sources": "Sources",
|
||
"indexing": "Indexing…",
|
||
"addPdf": "Add a PDF",
|
||
"sourcesUsed": "{{selected}}/{{total}} source(s) used by the chat and deep analysis",
|
||
"sourceIncludedTitle": "Source used by the chat — uncheck to exclude it",
|
||
"sourceExcludedTitle": "Source ignored by the chat — check to include it",
|
||
"sourceMeta": "{{pages}} p. · {{chunks}} excerpts",
|
||
"indexingInProgress": "indexing in progress…",
|
||
"indexingFailed": "indexing failed",
|
||
"sourcesEmpty": "Add a source PDF to start chatting with it.",
|
||
"archiveBanner": "Archive from {{label}} — read-only",
|
||
"backToChat": "Back to chat",
|
||
"refBadgeTitle": "The content of these archives is injected as a reference in every question",
|
||
"refBadge": "{{n}} archive(s) referenced",
|
||
"archivesBtnTitle": "Archived conversations (read-only + reference)",
|
||
"archives": "Archives",
|
||
"clearBtnTitle": "Clear the conversation (the current thread is archived, not deleted)",
|
||
"clear": "Clear",
|
||
"archivesEmpty": "No archived conversations yet — \"Clear\" archives the current thread here.",
|
||
"archivesHelp": "Check an archive to use it as a <strong>reference</strong> in the chat; click its name to reread it.",
|
||
"archiveRefOnTitle": "Archive used as a reference — uncheck to remove it",
|
||
"archiveRefOffTitle": "Use this archive as a reference in the chat",
|
||
"roleUser": "You",
|
||
"roleAi": "AI",
|
||
"chatEmpty": "Ask a question about your source, or request an adaptation for your campaign.",
|
||
"chatEmptyNoSource": "<br>(First add an indexed source for grounded answers.)",
|
||
"deepProgress": "Deep analysis of the document… {{current}}/{{total}}",
|
||
"sourcesPagesTitle": "Source pages used to ground this answer",
|
||
"draftPlaceholder": "Request an adaptation, a summary, an NPC inspired by the source…",
|
||
"deepBtnTitle": "Deep analysis: reads the ENTIRE document (slower, exhaustive). Ideal for \"list all the…\"",
|
||
"sendBtnTitle": "Quick answer (targeted search within the document)",
|
||
"uploadError": "Indexing failed. Try again or check the embedding model.",
|
||
"clearTitle": "Clear the conversation",
|
||
"clearMessage": "Start from a blank conversation?",
|
||
"clearDetail": "The current thread is archived (not deleted): it will remain accessible via \"Archives\".",
|
||
"archiveLabel": "{{when}} · {{n}} message(s)"
|
||
},
|
||
"sessionDetail": {
|
||
"backToCampaign": "Back to campaign",
|
||
"renameTitle": "Rename session",
|
||
"statusActive": "In progress",
|
||
"statusEnded": "Ended",
|
||
"startedOn": "Started on {{date}}",
|
||
"endedOn": "Ended on {{date}}",
|
||
"endSession": "End session",
|
||
"ctrlEnterHint": "Ctrl + Enter to add",
|
||
"addEntryPlaceholder": "Add a {{type}}…",
|
||
"journalTitle": "Session log",
|
||
"noEntries": "No entries yet.",
|
||
"noEntriesHint": "Type a note, an event or a roll above to start the log.",
|
||
"entryType": {
|
||
"NOTE": "Note",
|
||
"EVENT": "Event",
|
||
"DICE_ROLL": "Dice roll",
|
||
"PLAYER_ACTION": "Player action"
|
||
},
|
||
"endConfirm": {
|
||
"title": "End session?",
|
||
"message": "Mark session \"{{name}}\" as ended?",
|
||
"detail": "You can still review its content afterwards.",
|
||
"confirmLabel": "End"
|
||
},
|
||
"deleteConfirm": {
|
||
"title": "Delete session?",
|
||
"message": "Permanently delete session \"{{name}}\"?",
|
||
"noEntries": "No log entries for this session.",
|
||
"entriesOne": "1 log entry will also be deleted.",
|
||
"entriesMany": "{{n}} log entries will also be deleted.",
|
||
"irreversible": "This action is irreversible."
|
||
},
|
||
"deleteEntryConfirm": {
|
||
"title": "Delete this entry?",
|
||
"message": "This log entry will be permanently deleted."
|
||
},
|
||
"pinned": {
|
||
"label": "Current scene",
|
||
"open": "Open the scene (new tab)",
|
||
"unpin": "Unpin",
|
||
"showNarration": "Show player narration",
|
||
"hideNarration": "Hide narration"
|
||
},
|
||
"recap": {
|
||
"button": "“Previously…” recap",
|
||
"loading": "Writing the recap…",
|
||
"title": "Previously ({{name}})",
|
||
"addToJournal": "Add to journal",
|
||
"error": "Recap failed. Is the Brain (AI) running?"
|
||
}
|
||
},
|
||
"sessionReferencePanel": {
|
||
"tabAi": "AI",
|
||
"tabDice": "Dice",
|
||
"tabTables": "Tables",
|
||
"tabObjects": "Items",
|
||
"tabCharacters": "PCs/NPCs",
|
||
"tabScenes": "Scenes",
|
||
"playerCharacters": "Player characters",
|
||
"nonPlayerCharacters": "Non-player characters",
|
||
"emptyCharacters": "No characters in this campaign.",
|
||
"emptyScenes": "No narrative arc yet. Build your campaign scenario to find it here.",
|
||
"tabPlay": "Play",
|
||
"playClocks": "Clocks",
|
||
"playFacts": "Facts",
|
||
"playNoPlaythrough": "This session is not attached to any playthrough.",
|
||
"pinScene": "Pin as current scene"
|
||
},
|
||
"sessionDicePanel": {
|
||
"count": "Count",
|
||
"modifier": "Modifier",
|
||
"roll": "Roll",
|
||
"lastRolls": "Recent rolls",
|
||
"clearHistory": "Clear local history",
|
||
"addToJournal": "Add to log",
|
||
"sessionEnded": "Session ended",
|
||
"placeholder": "Pick a die and roll."
|
||
},
|
||
"sessionAiChatPanel": {
|
||
"welcome": "Ask the AI a question during the game.",
|
||
"welcomeSub": "It knows your world, your campaign, the system rules and everything noted in the log.",
|
||
"saveReplyTitle": "Add this reply to the log",
|
||
"sessionEnded": "Session ended",
|
||
"toJournal": "To log",
|
||
"replying": "The AI is replying…",
|
||
"inputPlaceholder": "Ask for an idea, a twist, a description…",
|
||
"clearConversation": "Clear conversation",
|
||
"send": "Send",
|
||
"stop": "Stop",
|
||
"unknownError": "Unknown error",
|
||
"aiError": "AI error: {{message}}",
|
||
"interrupted": "[interrupted]"
|
||
},
|
||
"sessionRandomTablesPanel": {
|
||
"empty": "No random table in this campaign. Create one from the sidebar.",
|
||
"tables": "Tables",
|
||
"roll": "Roll",
|
||
"noEntry": "no entry",
|
||
"journal": "Log",
|
||
"improvising": "…",
|
||
"aiImprovise": "AI improvise",
|
||
"noResult": "no result"
|
||
},
|
||
"sessionItemCatalogsPanel": {
|
||
"empty": "No item catalog in this campaign.",
|
||
"catalogs": "Catalogs",
|
||
"noteTitle": "Record in log (e.g. purchase)",
|
||
"journal": "Log"
|
||
},
|
||
"randomTableEdit": {
|
||
"titleEdit": "Edit table",
|
||
"titleNew": "New random table",
|
||
"nameLabel": "Name *",
|
||
"namePlaceholder": "E.g. Forest encounters",
|
||
"descPlaceholder": "What is this table for?",
|
||
"formulaLabel": "Dice formula *",
|
||
"formulaValid": "Valid formula",
|
||
"formulaExpected": "Expected format: NdM (e.g. 1d20, 2d6, d100)",
|
||
"aiTitle": "Generate with AI",
|
||
"aiHint": "Describe the table; the AI proposes the entries (review them before saving). Contextualized with your campaign.",
|
||
"aiPromptPlaceholder": "E.g. random encounters in a haunted forest, dark tone",
|
||
"generateWith": "Generate ({{formula}})",
|
||
"entriesTitle": "Entries",
|
||
"autoRanges": "Auto-ranges",
|
||
"autoRangesTitle": "Distribute ranges across the formula",
|
||
"colMin": "Min",
|
||
"colMax": "Max",
|
||
"colResult": "Result",
|
||
"colDetail": "Detail",
|
||
"detailPlaceholder": "Detail (optional)",
|
||
"emptyHint": "No entries — click \"Add\".",
|
||
"aiErrorPrompt": "Describe the table to generate.",
|
||
"aiErrorFormula": "Choose a valid dice formula first.",
|
||
"aiErrorGenerate": "AI generation failed. Try again or rephrase.",
|
||
"errorNameRequired": "Name is required.",
|
||
"errorFormulaInvalid": "Invalid dice formula (e.g. 1d20, 2d6, d100).",
|
||
"errorSaveFailed": "Save failed."
|
||
},
|
||
"randomTableView": {
|
||
"die": "Die:",
|
||
"roll": "Roll {{formula}}",
|
||
"noMatch": "No entry for this result",
|
||
"empty": "No entries — edit the table to add some.",
|
||
"colRoll": "Roll",
|
||
"colResult": "Result"
|
||
},
|
||
"playthroughDetail": {
|
||
"startSession": "Start a session",
|
||
"resumeSession": "Resume current session",
|
||
"facts": "Playthrough facts",
|
||
"charactersTitle": "Player characters",
|
||
"newCharacter": "New PC",
|
||
"noCharacters": "No PCs for this playthrough.",
|
||
"sessionsTitle": "Sessions",
|
||
"noSessions": "No sessions yet. Start the first one!",
|
||
"statusActive": "Ongoing",
|
||
"statusEnded": "Ended",
|
||
"impactSessions": "{{n}} session(s)",
|
||
"impactCharacters": "{{n}} PC(s)",
|
||
"impactFlags": "{{n}} fact(s)",
|
||
"impactProgressions": "{{n}} quest progression(s)",
|
||
"deleteCascade": "This action will also delete: {{parts}}.",
|
||
"irreversible": "This action is irreversible.",
|
||
"deleteTitle": "Delete playthrough",
|
||
"deleteMessage": "Delete \"{{name}}\"?",
|
||
"clocksTitle": "Progress clocks",
|
||
"prepTitle": "Prepare the next session"
|
||
},
|
||
"playthroughFlagsPage": {
|
||
"title": "Facts — {{name}}",
|
||
"pageTitle": "{{name}} — Facts",
|
||
"subtitle": "Boolean facts specific to this playthrough. Toggle them in play to unlock the quests that depend on them."
|
||
},
|
||
"campaignTree": {
|
||
"npcs": "NPCs",
|
||
"unclassified": "Unfiled",
|
||
"newNpc": "New NPC",
|
||
"newScene": "New scene",
|
||
"newQuest": "New quest",
|
||
"newChapter": "New chapter",
|
||
"randomTables": "Random tables",
|
||
"newTable": "New table",
|
||
"notebooks": "Workshops (AI + PDF)",
|
||
"itemCatalogs": "Item catalogs",
|
||
"enemies": "Enemies",
|
||
"newEnemy": "New enemy",
|
||
"importPdf": "Import a PDF",
|
||
"newArc": "+ New arc",
|
||
"allCampaigns": "All campaigns",
|
||
"sectionCharacters": "Characters",
|
||
"sectionNarration": "Narration",
|
||
"sectionTools": "Tools",
|
||
"scenesGroup": "Scenes",
|
||
"quests": "Quests"
|
||
},
|
||
"services": {
|
||
"importFailed": "Import failed.",
|
||
"importInterrupted": "The import was interrupted before completion (connection dropped or timed out). Please try again.",
|
||
"unknownServerError": "Unknown server error.",
|
||
"networkError": "Network error"
|
||
},
|
||
"imageBlock": {
|
||
"prev": "Previous image",
|
||
"next": "Next image",
|
||
"goTo": "Go to image {{n}}",
|
||
"zoom": "Zoom",
|
||
"zoomIn": "Zoom in",
|
||
"zoomOut": "Zoom out",
|
||
"dragHint": "Drag to reframe",
|
||
"remove": "Remove this image"
|
||
},
|
||
"questList": {
|
||
"title": "Quests",
|
||
"create": "New quest",
|
||
"hint": "Quests are orthogonal to the structure: they carry objectives and unlock conditions, and can span several scenes.",
|
||
"empty": "No quests yet.",
|
||
"conditional": "Unlock conditions",
|
||
"deleteTitle": "Delete quest",
|
||
"deleteMessage": "Delete the quest \"{{name}}\"?",
|
||
"irreversible": "This action is irreversible."
|
||
},
|
||
"questEdit": {
|
||
"newTitle": "New quest",
|
||
"fallbackTitle": "Quest",
|
||
"subtitle": "Quest",
|
||
"optionalHint": "Only the title is required. Expand and fill in only the sections you need — everything else is optional.",
|
||
"nameLabel": "Quest title *",
|
||
"namePlaceholder": "E.g.: Save the missing merchant",
|
||
"descriptionLabel": "Description",
|
||
"descriptionPlaceholder": "Describe the objective and context of the quest...",
|
||
"iconLabel": "Icon",
|
||
"unlockSectionTitle": "Unlock conditions",
|
||
"unlockHint": "All conditions must be met (AND) for the quest to unlock in a Playthrough. Empty = available from the start. Progression is managed in the Playthrough screen.",
|
||
"gmNotesSectionTitle": "GM notes",
|
||
"gmNotesPlaceholder": "Private notes about the quest, twists, secrets...",
|
||
"objectivesSectionTitle": "Objectives and stakes",
|
||
"playerObjectivesLabel": "Player objectives",
|
||
"playerObjectivesPlaceholder": "What must the players accomplish?",
|
||
"narrativeStakesLabel": "Narrative stakes",
|
||
"narrativeStakesPlaceholder": "What are the dramatic stakes?",
|
||
"deleteTitle": "Delete quest",
|
||
"deleteMessage": "Delete the quest \"{{name}}\"?",
|
||
"irreversible": "This action is irreversible.",
|
||
"illustrationsLabel": "Illustrations",
|
||
"illustrationsHint": "Portraits, moods and notable locations of the quest.",
|
||
"nodesSectionTitle": "Narrative nodes traversed",
|
||
"nodesHint": "OPTIONAL — only use this if the quest should TRAVERSE existing content (“the quest passes through these places”). These are links: removing a node deletes nothing. Without nodes, the quest automatically gets its own scene space (created on the fly, with its map).",
|
||
"relatedPagesLabel": "Linked Lore pages",
|
||
"relatedPagesHint": "Link this quest to NPCs, places or Lore elements that appear in it.",
|
||
"noLoreHint": "💡 This campaign is not linked to any universe. Link it to a Lore from the campaign screen to attach Lore pages to this quest."
|
||
},
|
||
"nodePicker": {
|
||
"chapter": "Chapter",
|
||
"scene": "Scene",
|
||
"selectChapter": "Add a chapter...",
|
||
"selectScene": "Add a scene...",
|
||
"addChapter": "Add",
|
||
"addScene": "Add",
|
||
"empty": "No node attached yet. This quest isn't linked to any chapter or scene.",
|
||
"deletedNode": "(deleted node)",
|
||
"moveUp": "Move up",
|
||
"moveDown": "Move down",
|
||
"remove": "Remove this node"
|
||
},
|
||
"questView": {
|
||
"subtitle": "Quest",
|
||
"synopsisTitle": "Description",
|
||
"playerObjectivesTitle": "Player objectives",
|
||
"narrativeStakesTitle": "Narrative stakes",
|
||
"prerequisitesTitle": "Unlock conditions",
|
||
"nodesTitle": "Narrative nodes traversed",
|
||
"gmNotesTitle": "GM notes",
|
||
"relatedPagesTitle": "Linked Lore pages",
|
||
"notProvided": "Not provided",
|
||
"deleteTitle": "Delete quest",
|
||
"deleteMessage": "Delete the quest \"{{name}}\"?",
|
||
"deleteImpactScenes": "{{count}} scene(s) of this quest will be deleted with it.",
|
||
"irreversible": "This action is irreversible.",
|
||
"deletedPage": "(deleted page)",
|
||
"deletedQuest": "(deleted quest)",
|
||
"deletedNode": "(deleted node)",
|
||
"prereqQuestCompleted": "Quest \"{{name}}\" completed",
|
||
"prereqSessionReached": "Session {{n}} reached",
|
||
"prereqFlagSet": "Fact: {{flag}}",
|
||
"mapButton": "Scene map"
|
||
},
|
||
"sceneType": {
|
||
"GENERIC": "Generic scene",
|
||
"LOCATION": "Location",
|
||
"ENCOUNTER": "Encounter",
|
||
"NPC": "NPC situation",
|
||
"EVENT": "Event",
|
||
"REVELATION": "Revelation"
|
||
},
|
||
"linkType": {
|
||
"EXIT": "Exit",
|
||
"CLUE": "Clue",
|
||
"LEAD": "Lead"
|
||
},
|
||
"clocksManager": {
|
||
"empty": "No clocks yet. Create one to track a threat or a countdown that advances as the game unfolds.",
|
||
"namePlaceholder": "Clock name (e.g. \"The cult completes its ritual\")",
|
||
"segments": "Segments",
|
||
"segmentsN": "{{n}} segments",
|
||
"add": "Add",
|
||
"advance": "Advance one segment",
|
||
"regress": "Roll back one segment",
|
||
"triggerType": "Auto trigger",
|
||
"triggerOption": {
|
||
"NONE": "Manual",
|
||
"FLAG_SET": "When a Fact becomes true",
|
||
"QUEST_COMPLETED": "When a quest completes",
|
||
"SESSION_ENDED": "At session end"
|
||
},
|
||
"flagPlaceholder": "Fact name",
|
||
"quest": "Quest",
|
||
"selectQuest": "— Choose a quest —",
|
||
"triggerFlag": "Fact: {{name}}",
|
||
"triggerQuest": "Quest: {{name}}",
|
||
"triggerSession": "Session end",
|
||
"deletedQuest": "(deleted quest)",
|
||
"ungrouped": "Loose clocks",
|
||
"deleteFront": "Delete this front (its clocks become loose)",
|
||
"frontPlaceholder": "New front (threat: \"The rise of the Cult\"…)",
|
||
"addFront": "Add a front",
|
||
"front": "Front",
|
||
"noFront": "— No front —",
|
||
"edit": "Edit"
|
||
},
|
||
"readiness": {
|
||
"title": "Next steps",
|
||
"badge": {
|
||
"DRAFT": "Draft",
|
||
"PLAYABLE": "Playable",
|
||
"POLISHED": "Polished"
|
||
},
|
||
"blockingN": "{{n}} blocking",
|
||
"recommendedN": "{{n}} recommended",
|
||
"allSet": "All set: this campaign is ready to play.",
|
||
"fix": "Fix",
|
||
"dot": {
|
||
"blocking": "To fix: a blocking gap, here or in an item below. See “Next steps” on the campaign.",
|
||
"recommended": "Suggested: a recommended gap, here or below. See “Next steps” on the campaign.",
|
||
"more": "+ {{n}} more gap(s) — see “Next steps”"
|
||
}
|
||
},
|
||
"sceneAssist": {
|
||
"button": "Flesh out with AI",
|
||
"hint": "The co-GM suggests values for the scene's fields. Nothing is saved: pick what fills the form, then save as usual.",
|
||
"instructionPlaceholder": "Optional instruction (e.g. \"make the mood more ominous\", \"add a clue about the cult\")…",
|
||
"generate": "Generate suggestions",
|
||
"generating": "Generating…",
|
||
"regenerate": "Regenerate",
|
||
"applySelection": "Apply selection ({{n}})",
|
||
"empty": "The AI had nothing new to suggest — the scene may already be complete, or rephrase your instruction.",
|
||
"error": "Generation failed. Is the Brain (AI) running?",
|
||
"current": "Current",
|
||
"proposed": "Proposed",
|
||
"field": {
|
||
"description": "Description",
|
||
"location": "Location",
|
||
"timing": "Timing",
|
||
"atmosphere": "Atmosphere",
|
||
"playerNarration": "Player narration",
|
||
"choicesConsequences": "Choices & consequences",
|
||
"combatDifficulty": "Combat difficulty",
|
||
"enemies": "Enemies",
|
||
"gmSecretNotes": "GM secret notes"
|
||
}
|
||
},
|
||
"entityAssist": {
|
||
"button": "Flesh out with AI",
|
||
"hint": "The co-GM suggests values for the fields. Nothing is saved: pick what fills the form, then save as usual.",
|
||
"instructionPlaceholder": "Optional instruction (e.g. \"make the mood more ominous\", \"add a clue about the cult\")…",
|
||
"generate": "Generate suggestions",
|
||
"generating": "Generating…",
|
||
"regenerate": "Regenerate",
|
||
"applySelection": "Apply selection ({{n}})",
|
||
"empty": "The AI had nothing new to suggest — the entity may already be complete, or rephrase your instruction.",
|
||
"error": "Generation failed. Is the Brain (AI) running?",
|
||
"current": "Current",
|
||
"proposed": "Proposed",
|
||
"field": {
|
||
"description": "Description",
|
||
"location": "Location",
|
||
"timing": "Timing",
|
||
"atmosphere": "Atmosphere",
|
||
"playerNarration": "Player narration",
|
||
"choicesConsequences": "Choices & consequences",
|
||
"combatDifficulty": "Combat difficulty",
|
||
"enemies": "Enemies",
|
||
"gmSecretNotes": "GM secret notes",
|
||
"gmNotes": "GM notes",
|
||
"playerObjectives": "Player objectives",
|
||
"narrativeStakes": "Narrative stakes",
|
||
"themes": "Themes",
|
||
"stakes": "Stakes",
|
||
"rewards": "Rewards",
|
||
"resolution": "Resolution"
|
||
}
|
||
},
|
||
"sceneDraft": {
|
||
"button": "Generate scenes",
|
||
"hint": "The co-GM suggests several scenes for this chapter. Tick the ones to keep; they are created in the chapter (you can refine them afterwards).",
|
||
"instructionPlaceholder": "Optional instruction (e.g. \"an infiltration, a fight, then a reveal\")…",
|
||
"countLabel": "How many",
|
||
"generate": "Suggest scenes",
|
||
"generating": "Generating…",
|
||
"regenerate": "Regenerate",
|
||
"createSelection": "Create selection ({{n}})",
|
||
"creating": "Creating…",
|
||
"empty": "The AI suggested no scenes — try rephrasing your instruction.",
|
||
"error": "Generation failed. Is the Brain (AI) running?",
|
||
"applyError": "Failed to create the scenes."
|
||
},
|
||
"sessionPrep": {
|
||
"lastSessionActive": "Session in progress: {{name}}",
|
||
"lastSessionEnded": "Last session: {{name}} (ended)",
|
||
"allQuiet": "All clear: no active quest and no gap in upcoming content. Start the next session whenever you like.",
|
||
"positionTitle": "Where the players are",
|
||
"inProgress": "In progress:",
|
||
"available": "Available:",
|
||
"hotspotsTitle": "Likely content for the next session",
|
||
"nodeKind": {
|
||
"CHAPTER": "chapter",
|
||
"SCENE": "scene"
|
||
},
|
||
"gapsTitle": "To fill in before playing",
|
||
"fix": "Fix",
|
||
"otherGaps": "+ {{n}} other gap(s) elsewhere in the campaign",
|
||
"clocksTitle": "Threats in motion",
|
||
"clockNearly": "nearly full!",
|
||
"clockFull": "full!",
|
||
"completed": "Completed:",
|
||
"markStarted": "Mark as in progress (the players started it)",
|
||
"markCompleted": "Mark as completed (removed from likely leads)",
|
||
"reopen": "Reopen (back to not started)"
|
||
},
|
||
"foundryDialog": {
|
||
"title": "Export to Foundry",
|
||
"intro": "Choose what the Foundry module should import. For example, to run your combats, export only the maps and the enemies prepared in your scenes.",
|
||
"presetAll": "Everything",
|
||
"presetMapsOnly": "Maps & enemies only",
|
||
"optMaps": "Maps & enemies",
|
||
"optMapsHint": "One Foundry Scene per battlemap (day/night variants included), with the tokens of the enemies linked to each scene.",
|
||
"optJournals": "Narrative journals",
|
||
"optJournalsHint": "Arcs, chapters, quests and scenes as journals (texts + illustrations), plus NPC and bestiary sheets.",
|
||
"optTables": "Random tables",
|
||
"optTablesHint": "Your encounter and event tables as Foundry RollTables.",
|
||
"confirm": "Export"
|
||
}
|
||
}
|