6a949b54ba
Co-authored-by: Cursor <cursoragent@cursor.com>
268 lines
12 KiB
JSON
268 lines
12 KiB
JSON
{
|
|
"app.name": "Bilin",
|
|
"app.tagline": "Long-form writing platform · Every story deserves care",
|
|
"home.newBook": "New Book",
|
|
"home.importBook": "Import Book",
|
|
"home.exportAll": "Export All Books",
|
|
"home.myBooks": "My Books",
|
|
"home.recent": "Recent",
|
|
"home.bookCount": "{{count}} books",
|
|
"book.createSample": "My First Book",
|
|
"dialog.newBook.title": "New Book",
|
|
"dialog.newBook.name": "Title",
|
|
"dialog.newBook.category": "Category",
|
|
"dialog.newBook.target": "Target word count (optional)",
|
|
"dialog.cancel": "Cancel",
|
|
"dialog.create": "Create",
|
|
"settings.title": "Settings",
|
|
"settings.general": "General",
|
|
"settings.shortcuts": "Shortcuts",
|
|
"settings.about": "About",
|
|
"settings.theme": "Theme",
|
|
"settings.language": "Language",
|
|
"settings.penName": "Pen name",
|
|
"settings.editor": "Editor",
|
|
"settings.ai": "AI",
|
|
"settings.backup": "Backup & Sync",
|
|
"theme.default": "Inkstone (Default)",
|
|
"theme.bamboo": "Bamboo",
|
|
"theme.moonlit": "Moonlit",
|
|
"theme.ricepaper": "Rice Paper",
|
|
"theme.mist": "Morning Mist",
|
|
"theme.teagarden": "Tea Garden",
|
|
"theme.twilight": "Twilight",
|
|
"onboarding.welcome": "Welcome to Bilin",
|
|
"onboarding.tagline": "Your intelligent long-form writing partner",
|
|
"onboarding.slide1": "Chapters & Version History",
|
|
"onboarding.slide1desc": "Volumes, snapshots, and diffs",
|
|
"onboarding.slide2": "AI-Assisted Writing",
|
|
"onboarding.slide2desc": "Context-aware suggestions and style learning",
|
|
"onboarding.slide3": "Knowledge Base & Foreshadowing",
|
|
"onboarding.slide3desc": "Auto-extract characters, places, and plot threads",
|
|
"onboarding.penName": "Set your pen name",
|
|
"onboarding.penNamePlaceholder": "Pen name (min. 2 characters)",
|
|
"onboarding.createSample": "Create sample book \"My First Book\"",
|
|
"onboarding.skip": "Skip",
|
|
"onboarding.next": "Next",
|
|
"onboarding.start": "Start Writing",
|
|
"feature.comingSoon": "Coming soon",
|
|
"editor.placeholder": "Start writing here…",
|
|
"editor.newChapter": "New Chapter",
|
|
"editor.newVolume": "New Volume",
|
|
"editor.saved": "Saved",
|
|
"editor.saving": "Saving…",
|
|
"editor.unsaved": "Unsaved",
|
|
"editor.words": "{{count}} words",
|
|
"sidebar.chapters": "Chapters",
|
|
"sidebar.outline": "Outline",
|
|
"sidebar.settings": "Settings",
|
|
"sidebar.inspiration": "Ideas",
|
|
"panel.ai": "AI",
|
|
"panel.knowledge": "Knowledge",
|
|
"panel.wordfreq": "Word Freq",
|
|
"panel.bookSettings": "Book",
|
|
"panel.aiPlaceholder": "AI features coming soon. Configure a model to collaborate here.",
|
|
"ai.mode.chat": "Chat",
|
|
"ai.mode.interactive": "Interactive",
|
|
"ai.mode.auto": "Auto",
|
|
"ai.mode.wizard": "Wizard",
|
|
"ai.noBook": "Open a book first",
|
|
"ai.noSession": "No session",
|
|
"ai.untitledSession": "New chat",
|
|
"ai.contextPlaceholder": "📎 Context: not configured yet",
|
|
"ai.contextEmpty": "📎 Context: nothing selected",
|
|
"ai.contextSummary": "📎 Context: {{chapters}} ch. · {{outlines}} outline · {{settings}} settings · {{inspirations}} ideas",
|
|
"ai.contextEditorTitle": "Edit AI context",
|
|
"ai.contextTab.chapter": "Chapters",
|
|
"ai.contextTab.outline": "Outline",
|
|
"ai.contextTab.setting": "Settings",
|
|
"ai.contextTab.inspiration": "Ideas",
|
|
"ai.contextEmptyList": "No items",
|
|
"ai.contextRefresh": "Refresh context",
|
|
"ai.contextSave": "Save",
|
|
"ai.slash.continue": "Continue writing 200-400 characters from the end of the current chapter in the same style.",
|
|
"ai.slash.expand": "Expand the most recent paragraph with more sensory detail without changing the plot.",
|
|
"ai.slash.polish": "Polish the following text for prose quality while keeping plot and POV unchanged.",
|
|
"ai.slash.summarize": "Summarize the key points of the current chapter, including events and character changes.",
|
|
"ai.slash.proofread": "Review grammar, punctuation, and wording issues in the following text and suggest fixes.",
|
|
"ai.offlineBanner": "⚠ Network unavailable. Offline mode enabled.",
|
|
"ai.inputPlaceholder": "Type a message or pick a quick command…",
|
|
"ai.send": "Send",
|
|
"ai.networkRestored": "Network restored. Cloud AI is available again.",
|
|
"ai.insertToEditor": "Insert into editor",
|
|
"ai.inserted": "Inserted into editor",
|
|
"ai.sending": "AI is thinking…",
|
|
"interactive.gateBlocked": "Add chapter content, outline, or settings before interactive writing",
|
|
"interactive.gateTooltip": "Requires chapter text or outline/settings",
|
|
"interactive.step.context": "Context",
|
|
"interactive.step.plot": "Plot",
|
|
"interactive.step.scene": "Scene",
|
|
"interactive.step.review": "Review",
|
|
"interactive.start": "Start interactive",
|
|
"interactive.loadingPlots": "Generating plot options…",
|
|
"interactive.plotNotePlaceholder": "Additional instructions (optional)",
|
|
"interactive.generateScene": "Generate scene",
|
|
"interactive.namingTitle": "Name this {{type}}",
|
|
"interactive.customName": "Custom name",
|
|
"interactive.useCustomName": "Use this name",
|
|
"interactive.refinePlaceholder": "Refinement instruction, e.g. make dialogue more hostile",
|
|
"interactive.refine": "Refine scene",
|
|
"interactive.acceptScene": "Next scene",
|
|
"interactive.finishChapter": "Finish chapter",
|
|
"interactive.chapterTitlePlaceholder": "Chapter title (optional)",
|
|
"interactive.chapterCreated": "Interactive draft chapter created",
|
|
"interactive.sceneCount": "{{count}} scene(s) confirmed",
|
|
"auto.gateBlocked": "Add chapter content, outline, or settings before auto writing",
|
|
"auto.gateTooltip": "Requires chapter text or outline/settings",
|
|
"auto.step.goal": "Goal",
|
|
"auto.step.plan": "Plan",
|
|
"auto.step.generate": "Generate",
|
|
"auto.step.done": "Done",
|
|
"auto.goalPlaceholder": "Plot points for this chapter…",
|
|
"auto.planScenes": "Plan scenes",
|
|
"auto.startGenerate": "Generate next scene",
|
|
"auto.sceneProgress": "Scene {{current}} / {{total}}",
|
|
"auto.pause": "Pause",
|
|
"auto.resume": "Resume auto",
|
|
"auto.handoffInteractive": "Switch to interactive",
|
|
"auto.finishChapter": "Finish chapter",
|
|
"auto.chapterCreated": "Auto-written chapter created",
|
|
"wizard.gateBlocked": "Add chapter content, outline, or settings before wizard mode",
|
|
"wizard.gateTooltip": "Requires chapter text or outline/settings",
|
|
"wizard.step.goal": "Goal",
|
|
"wizard.step.rhythm": "Rhythm",
|
|
"wizard.step.pov": "POV",
|
|
"wizard.step.context": "Context",
|
|
"wizard.step.preview": "Preview",
|
|
"wizard.rhythm.relaxed": "Relaxed",
|
|
"wizard.rhythm.tense": "Tense",
|
|
"wizard.rhythm.mixed": "Mixed",
|
|
"wizard.styleNotePlaceholder": "Optional style note",
|
|
"wizard.contextHint": "Confirm context including outline/settings clues",
|
|
"wizard.previewTitle": "Strategy preview",
|
|
"wizard.refreshPreview": "Refresh preview",
|
|
"wizard.startGenerate": "Start generating",
|
|
"wizard.handoffToast": "Switched to interactive refinement",
|
|
"wizard.next": "Next",
|
|
"wizard.povDefault": "Default POV",
|
|
"wizard.generating": "Generating chapter…",
|
|
"snapshot.ai": "Before AI insert",
|
|
"naming.open": "🔍 Naming consistency check",
|
|
"naming.title": "Naming consistency check",
|
|
"naming.run": "Run scan",
|
|
"naming.running": "Scanning…",
|
|
"naming.emptyHint": "Click Run scan to check proper noun consistency across the book",
|
|
"naming.noConflicts": "No naming conflicts found",
|
|
"naming.confidence": "Confidence {{value}}%",
|
|
"naming.ignore": "Ignore",
|
|
"naming.replace": "Replace with “{{term}}”",
|
|
"naming.ignored": "Added to ignore list",
|
|
"naming.replaced": "Replaced {{count}} occurrence(s)",
|
|
"knowledge.placeholder": "Knowledge base entries will appear here",
|
|
"ai.settings.backend": "Backend",
|
|
"ai.settings.backend.lmstudio": "LM Studio (local)",
|
|
"ai.settings.backend.openai": "OpenAI",
|
|
"ai.settings.backend.anthropic": "Anthropic",
|
|
"ai.settings.baseUrl": "Base URL",
|
|
"ai.settings.model": "Model",
|
|
"ai.settings.apiKey": "API Key",
|
|
"ai.settings.timeout": "Timeout (seconds)",
|
|
"ai.settings.testConnection": "Test connection",
|
|
"ai.settings.testing": "Testing…",
|
|
"ai.settings.testSuccess": "AI connection test succeeded",
|
|
"ai.settings.licenseNotice": "Cloud AI services are subject to each provider's terms. Please read and agree to the <openai>OpenAI Terms</openai> / <anthropic>Anthropic Terms</anthropic> before use.",
|
|
"status.chapter": "Chapter",
|
|
"status.volume": "Volume",
|
|
"status.book": "Book",
|
|
"toast.bookCreated": "Book created",
|
|
"toast.saveFailed": "Save failed, please retry",
|
|
"toast.enterBookName": "Please enter a book title",
|
|
"toast.noBookOpen": "No book open",
|
|
"shortcuts.saveChapter": "Save chapter",
|
|
"shortcuts.newChapter": "New chapter",
|
|
"shortcuts.focusMode": "Focus mode",
|
|
"shortcuts.globalSearch": "Global search",
|
|
"shortcuts.closeTab": "Close tab",
|
|
"shortcuts.openReference": "Open reference",
|
|
"shortcuts.insertLandmark": "Insert landmark",
|
|
"shortcuts.openLandmarks": "Open landmarks",
|
|
"shortcuts.exportBook": "Export book",
|
|
"shortcuts.toggleTTS": "Toggle TTS",
|
|
"shortcuts.captureInspiration": "Capture inspiration",
|
|
"shortcuts.clickToRecord": "Click a shortcut button, then press a new key combination",
|
|
"shortcuts.recordHint": "Press a new key combination (Esc to cancel)",
|
|
"shortcuts.recording": "Recording…",
|
|
"shortcuts.conflict": "This shortcut is already assigned",
|
|
"shortcuts.registerFailed": "Failed to register shortcut, may conflict with another app",
|
|
"outline.new": "New Outline",
|
|
"outline.newItem": "New outline node",
|
|
"outline.empty": "No outline yet. Click below to create one.",
|
|
"setting.new": "New Setting",
|
|
"setting.empty": "No settings yet",
|
|
"setting.typeLabel": "Type",
|
|
"setting.nameLabel": "Name",
|
|
"setting.type.character": "Character",
|
|
"setting.type.location": "Location",
|
|
"setting.type.item": "Item",
|
|
"setting.type.skill": "Skill",
|
|
"setting.type.faction": "Faction",
|
|
"setting.type.custom": "Custom",
|
|
"inspiration.new": "New Idea",
|
|
"inspiration.newItem": "New idea",
|
|
"inspiration.empty": "No ideas yet",
|
|
"inspiration.untitled": "Untitled",
|
|
"inspiration.noContent": "(empty)",
|
|
"inspiration.captureTitle": "💡 Capture Idea",
|
|
"inspiration.titlePlaceholder": "Title (optional)",
|
|
"inspiration.contentPlaceholder": "Capture a fleeting thought…",
|
|
"inspiration.tagsLabel": "Tags (optional)",
|
|
"inspiration.tagsPlaceholder": "e.g. foreshadowing, vol.3, character",
|
|
"inspiration.voice": "Voice",
|
|
"inspiration.voiceUnavailable": "Speech input is not available",
|
|
"inspiration.save": "Save",
|
|
"outline.filterAll": "All",
|
|
"outline.filterUncovered": "Uncovered",
|
|
"outline.filterCovered": "Covered",
|
|
"outline.compare": "Compare",
|
|
"outline.compareTitle": "Outline vs Chapter",
|
|
"outline.exitCompare": "Exit compare",
|
|
"outline.emptyFilter": "No matching items",
|
|
"outline.notWritten": "Not written yet",
|
|
"outline.noContent": "No content",
|
|
"outline.expected": "Expected",
|
|
"outline.actual": "Actual",
|
|
"outline.deviation": "Deviation",
|
|
"outline.jumpEditor": "Open in editor",
|
|
"reference.title": "Reference",
|
|
"reference.search": "Search references…",
|
|
"reference.tab.setting": "Settings",
|
|
"reference.tab.outline": "Outline",
|
|
"reference.tab.inspiration": "Ideas",
|
|
"reference.pin": "Pin panel",
|
|
"reference.unpin": "Unpin",
|
|
"search.title": "Global Search",
|
|
"search.placeholder": "Search…",
|
|
"search.regex": "Regex",
|
|
"search.caseSensitive": "Case sensitive",
|
|
"search.replace": "Replace with",
|
|
"search.replacePreview": "Preview replace",
|
|
"search.replaceExecute": "Replace all",
|
|
"search.replaceConfirm": "Replace all matches in this book? This cannot be undone.",
|
|
"search.replaceDone": "Replaced {{count}} occurrence(s)",
|
|
"version.title": "Version History",
|
|
"version.empty": "No snapshots",
|
|
"version.create": "Create snapshot",
|
|
"version.restore": "Restore",
|
|
"version.manual": "Manual snapshot",
|
|
"version.selectHint": "Select a version to compare",
|
|
"version.restoreConfirm": "Restore this version? Current content will be overwritten.",
|
|
"landmark.title": "Landmarks",
|
|
"landmark.empty": "No landmarks",
|
|
"landmark.insert": "Insert landmark",
|
|
"landmark.prompt": "Landmark label",
|
|
"landmark.created": "Landmark inserted",
|
|
"landmark.chapterOnly": "Insert landmarks in a chapter",
|
|
"wordfreq.hint": "Top 100 words in current scope",
|
|
"wordfreq.aiNaming": "AI naming suggestions"
|
|
}
|