2026-06-23 09:35:26 +08:00
{
"@@locale": "en",
"appTitle": "BadNote",
"settings": "Settings",
"search": "Search",
"importPdf": "Import PDF",
"importPpt": "Import PPT",
2026-06-24 21:12:38 +08:00
"importFile": "Import file",
"createNotebook": "Create notebook",
2026-06-24 22:48:18 +08:00
"newNotebookTitle": "New notebook",
"notebookTitleHint": "Notebook title",
"create": "Create",
"untitledNote": "Untitled",
"noNotesYetHint": "No ink notes yet — tap + to create one",
2026-06-24 21:12:38 +08:00
"noDocumentsYet": "No documents yet — tap Import file",
"processingImport": "Importing…",
"importFailed": "Couldn't import that file: {error}",
"@importFailed": {
"placeholders": { "error": { "type": "String" } }
},
"convertNeedsLibreOffice": "Importing Word documents needs LibreOffice installed. Convert to PDF first, or install LibreOffice.",
"unsupportedFileType": "Unsupported file type: {ext}",
"@unsupportedFileType": {
"placeholders": { "ext": { "type": "String" } }
},
2026-06-23 09:35:26 +08:00
"penCanvasBeta": "Pen Canvas (beta)",
"newNote": "New Note",
"open": "Open",
"cancel": "Cancel",
"delete": "Delete",
"deleteNoteTitle": "Delete note?",
"deleteNote": "Delete note",
"openInSplitView": "Open in Split View",
"splitViewSubtitle": "PDF reference + scratchpad",
"removeDocument": "Remove document",
2026-06-23 10:03:02 +08:00
"ok": "OK",
"pickColor": "Pick a color",
"clearSettingsTitle": "Clear all local settings?",
"clear": "Clear",
"settingsReset": "Settings reset to defaults",
"themeSystem": "System",
"themeLight": "Light",
"themeDark": "Dark",
"seedColorDesc": "Seed color for Material 3 theme",
"searchHint": "Search notes and documents...",
"searchError": "Search error: {error}",
"@searchError": {
"placeholders": { "error": { "type": "String" } }
},
"noResultsFor": "No results for \"{query}\"",
"@noResultsFor": {
"placeholders": { "query": { "type": "String" } }
},
"typeToSearch": "Type to search your notes and documents",
"sectionNotes": "Notes",
"sectionDocuments": "Documents",
"pageLabel": "Page {page}",
"@pageLabel": {
"placeholders": { "page": { "type": "int" } }
},
2026-06-23 09:35:26 +08:00
"processingPptx": "Processing PPTX...",
"processingPresentation": "Processing presentation...",
"couldNotOpenPresentation": "Could not open presentation.",
"toolPen": "Pen",
"toolHighlighter": "Highlighter",
"toolEraser": "Eraser",
2026-06-24 11:13:43 +08:00
"brushPicker": "Brush",
"brushFountainPen": "Fountain pen",
"brushBallpoint": "Ballpoint",
"brushPencil": "Pencil",
"brushHighlighter": "Highlighter",
feat(tools): rnote-style toolbar core writing batch
Replace the ad-hoc tool palette with a shared tool system
(EditorToolKind) across the PDF, note and slide editors, and add
the core writing tools.
- Multiple brushes, each remembering its OWN color (rnote-style):
selecting a brush restores its color, changing color updates only
that brush, and each brush button shows its current color.
- Select tool: tap-select a committed stroke, drag to move it,
delete it — persisted and undoable.
- Shape tool: line / rectangle / ellipse / arrow, drawn with a live
preview and committed as generated PenStrokes (shape_geometry.dart)
so they reuse stroke rendering, erase, persistence and undo.
- Highlighter + eraser fold into the same tool system.
Text/bookmark/search+OCR/backgrounds/Windows-Ink are later batches
(TODO). Brush opacity still deferred. analyze clean, 302 tests.
2026-06-24 20:38:18 +08:00
"toolSelect": "Select",
"toolShape": "Shape",
"shapePicker": "Shape",
"shapeLine": "Line",
"shapeRectangle": "Rectangle",
"shapeEllipse": "Ellipse",
"shapeArrow": "Arrow",
"actionDeleteSelection": "Delete selection",
2026-06-23 09:35:26 +08:00
"actionUndo": "Undo",
"actionRedo": "Redo",
"fingerDrawingOn": "Finger drawing ON",
"fingerDrawingOff": "Finger drawing OFF (pen only)",
"pages": "Pages",
"penSettings": "Pen settings",
"inputDiagnostic": "Input diagnostic (writes a log file)",
"back": "Back",
"previousPage": "Previous page",
"nextPage": "Next page",
2026-06-24 02:32:41 +08:00
"toolSelectText": "Select text",
"actionHighlightSelection": "Highlight selection",
2026-06-24 21:03:28 +08:00
"toolRemoveHighlight": "Remove highlight (tap a highlight)",
2026-06-24 20:02:12 +08:00
"toolPlaceScratchLink": "Place scratch link",
2026-06-25 00:11:45 +08:00
"toolText": "Text (tap or double-click to add)",
"textPlaceholder": "Type…",
2026-06-24 20:02:12 +08:00
"scratchLinkDeleteTitle": "Delete scratch link?",
"scratchLinkDeleteBody": "This removes the anchor and its private scratchpad.",
2026-06-25 00:00:16 +08:00
"toolAddBookmark": "Add bookmark (here or at selection)",
"toolBookmarks": "Bookmarks",
"bookmarksTitle": "Bookmarks",
"bookmarksEmpty": "No bookmarks yet.",
"bookmarkDefaultLabel": "Page {page}",
"@bookmarkDefaultLabel": {
"placeholders": { "page": { "type": "int" } }
},
"bookmarkPageLabel": "Page {page}",
"@bookmarkPageLabel": {
"placeholders": { "page": { "type": "int" } }
},
"bookmarkDeleteTitle": "Delete bookmark?",
"bookmarkDeleteBody": "This removes the saved location.",
2026-06-23 09:35:26 +08:00
"failedToOpenPdf": "Failed to open PDF:\n{error}",
"@failedToOpenPdf": {
"placeholders": { "error": { "type": "String" } }
},
"pdfNoPages": "PDF has no pages.",
"pageOfPages": "{current} / {total}",
"@pageOfPages": {
"placeholders": {
"current": { "type": "int" },
"total": { "type": "int" }
}
2026-06-24 17:15:39 +08:00
},
2026-08-05 17:55:27 +08:00
"libraryTab": "Library",
"boardTab": "Stickies",
"shellTagline": "Ink · Annotate · Know",
"notesSection": "Notes",
"documentsSection": "Documents",
"emptyLibraryTitle": "Nothing here yet",
"emptyLibraryBody": "Create a note, or import PDF / PPT / Word",
"diagnosticsSection": "Diagnostics",
"diagnosticsExport": "Export diagnostic pack",
"diagnosticsExportHint": "Reproduce on Surface, export, and send the zip back",
"diagnosticsToggle": "Input diagnostics overlay",
"penSettingsUnified": "Pen & ink",
2026-06-24 17:15:39 +08:00
"board": "Board",
"boardTitle": "Sticky Board",
"boardOpen": "Sticky note board",
"boardAddCard": "Add card",
"boardNewCardText": "New note",
"boardDeleteCard": "Delete card",
"boardDeleteCardTitle": "Delete this card?",
"boardBacklinks": "Linked from",
"boardNoBacklinks": "Nothing links here yet",
"boardDanglingLink": "No card named \"{target}\"",
"@boardDanglingLink": {
"placeholders": { "target": { "type": "String" } }
},
2026-06-24 20:45:16 +08:00
"close": "Close",
"vaultSetupTitle": "Choose your vault",
"vaultSetupHeadline": "Pick a folder for your notebooks",
"vaultSetupBody": "BadNote stores your notebooks inside one folder you choose — like an Obsidian vault. Pick a folder you control (e.g. a synced folder) so your notes travel with their files.",
"vaultChooseFolder": "Choose folder",
"vaultMissingTitle": "Your vault folder is missing",
"vaultMissingBody": "The folder you picked can't be found (it may have been moved, deleted, or on a drive that's unplugged). Relocate it or pick a new one.",
"vaultPickFailed": "Couldn't open the folder picker: {error}",
"@vaultPickFailed": {
"placeholders": { "error": { "type": "String" } }
},
"vaultNotWritable": "That folder isn't writable. Please choose another.",
"vaultSection": "Vault",
"vaultFolderLabel": "Vault folder",
"vaultNoneSelected": "No folder selected",
"vaultChangeFolder": "Change vault folder",
2026-06-25 01:35:13 +08:00
"vaultUpdated": "Vault folder updated",
"syncSection": "Sync (WebDAV)",
"syncServerUrl": "Server URL",
"syncServerUrlHint": "https://dav.example.com/remote.php/dav/files/me",
"syncUsername": "Username",
"syncPassword": "Password",
"syncRemoteFolder": "Remote folder",
"syncRemoteFolderHint": "BadNote",
"syncSave": "Save",
"syncSaved": "Sync settings saved",
"syncTestConnection": "Test connection",
"syncTestOk": "Connection OK",
"syncTestFailed": "Connection failed: {error}",
"@syncTestFailed": {
"placeholders": { "error": { "type": "String" } }
},
"syncNow": "Sync now",
"syncRunning": "Syncing…",
"syncNeverRun": "Never synced",
"syncLastRun": "Last synced: {when}",
"@syncLastRun": {
"placeholders": { "when": { "type": "String" } }
},
"syncResultSummary": "{uploaded} uploaded · {downloaded} downloaded · {conflicts} conflicts",
"@syncResultSummary": {
"placeholders": {
"uploaded": { "type": "int" },
"downloaded": { "type": "int" },
"conflicts": { "type": "int" }
}
},
"syncFailed": "Sync failed: {error}",
"@syncFailed": {
"placeholders": { "error": { "type": "String" } }
},
"syncAuto": "Sync automatically on launch",
"syncCredentialsNote": "Credentials are stored locally in plain text. Use a dedicated app password.",
"syncNotConfigured": "Enter a server URL to enable sync."
2026-06-23 09:35:26 +08:00
}