2026-06-23 09:35:26 +08:00
// ignore: unused_import
import ' package:intl/intl.dart ' as intl ;
import ' app_localizations.dart ' ;
// ignore_for_file: type=lint
/// The translations for English (`en`).
class AppLocalizationsEn extends AppLocalizations {
AppLocalizationsEn ( [ String locale = ' en ' ] ) : super ( locale ) ;
@ override
String get appTitle = > ' BadNote ' ;
@ override
String get settings = > ' Settings ' ;
@ override
String get search = > ' Search ' ;
@ override
String get importPdf = > ' Import PDF ' ;
@ override
String get importPpt = > ' Import PPT ' ;
2026-06-24 21:12:38 +08:00
@ override
String get importFile = > ' Import file ' ;
@ override
String get createNotebook = > ' Create notebook ' ;
2026-06-24 22:48:18 +08:00
@ override
String get newNotebookTitle = > ' New notebook ' ;
@ override
String get notebookTitleHint = > ' Notebook title ' ;
@ override
String get create = > ' Create ' ;
@ override
String get untitledNote = > ' Untitled ' ;
@ override
String get noNotesYetHint = > ' No ink notes yet — tap + to create one ' ;
2026-06-24 21:12:38 +08:00
@ override
String get noDocumentsYet = > ' No documents yet — tap Import file ' ;
@ override
String get processingImport = > ' Importing… ' ;
@ override
String importFailed ( String error ) {
return ' Couldn \' t import that file: $ error ' ;
}
@ override
String get convertNeedsLibreOffice = >
' Importing Word documents needs LibreOffice installed. Convert to PDF first, or install LibreOffice. ' ;
@ override
String unsupportedFileType ( String ext ) {
return ' Unsupported file type: $ ext ' ;
}
2026-06-23 09:35:26 +08:00
@ override
String get penCanvasBeta = > ' Pen Canvas (beta) ' ;
@ override
String get newNote = > ' New Note ' ;
@ override
String get open = > ' Open ' ;
@ override
String get cancel = > ' Cancel ' ;
@ override
String get delete = > ' Delete ' ;
@ override
String get deleteNoteTitle = > ' Delete note? ' ;
@ override
String get deleteNote = > ' Delete note ' ;
@ override
String get openInSplitView = > ' Open in Split View ' ;
@ override
String get splitViewSubtitle = > ' PDF reference + scratchpad ' ;
@ override
String get removeDocument = > ' Remove document ' ;
2026-06-23 10:03:02 +08:00
@ override
String get ok = > ' OK ' ;
@ override
String get pickColor = > ' Pick a color ' ;
@ override
String get clearSettingsTitle = > ' Clear all local settings? ' ;
@ override
String get clear = > ' Clear ' ;
@ override
String get settingsReset = > ' Settings reset to defaults ' ;
@ override
String get themeSystem = > ' System ' ;
@ override
String get themeLight = > ' Light ' ;
@ override
String get themeDark = > ' Dark ' ;
@ override
String get seedColorDesc = > ' Seed color for Material 3 theme ' ;
@ override
String get searchHint = > ' Search notes and documents... ' ;
@ override
String searchError ( String error ) {
return ' Search error: $ error ' ;
}
@ override
String noResultsFor ( String query ) {
return ' No results for \" $ query \" ' ;
}
@ override
String get typeToSearch = > ' Type to search your notes and documents ' ;
@ override
String get sectionNotes = > ' Notes ' ;
@ override
String get sectionDocuments = > ' Documents ' ;
@ override
String pageLabel ( int page ) {
return ' Page $ page ' ;
}
2026-06-23 09:35:26 +08:00
@ override
String get processingPptx = > ' Processing PPTX... ' ;
@ override
String get processingPresentation = > ' Processing presentation... ' ;
@ override
String get couldNotOpenPresentation = > ' Could not open presentation. ' ;
@ override
String get toolPen = > ' Pen ' ;
@ override
String get toolHighlighter = > ' Highlighter ' ;
@ override
String get toolEraser = > ' Eraser ' ;
2026-06-24 11:13:43 +08:00
@ override
String get brushPicker = > ' Brush ' ;
@ override
String get brushFountainPen = > ' Fountain pen ' ;
@ override
String get brushBallpoint = > ' Ballpoint ' ;
@ override
String get brushPencil = > ' Pencil ' ;
@ override
String get 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
@ override
String get toolSelect = > ' Select ' ;
@ override
String get toolShape = > ' Shape ' ;
@ override
String get shapePicker = > ' Shape ' ;
@ override
String get shapeLine = > ' Line ' ;
@ override
String get shapeRectangle = > ' Rectangle ' ;
@ override
String get shapeEllipse = > ' Ellipse ' ;
@ override
String get shapeArrow = > ' Arrow ' ;
@ override
String get actionDeleteSelection = > ' Delete selection ' ;
2026-06-23 09:35:26 +08:00
@ override
String get actionUndo = > ' Undo ' ;
@ override
String get actionRedo = > ' Redo ' ;
@ override
String get fingerDrawingOn = > ' Finger drawing ON ' ;
@ override
String get fingerDrawingOff = > ' Finger drawing OFF (pen only) ' ;
@ override
String get pages = > ' Pages ' ;
@ override
String get penSettings = > ' Pen settings ' ;
@ override
String get inputDiagnostic = > ' Input diagnostic (writes a log file) ' ;
@ override
String get back = > ' Back ' ;
@ override
String get previousPage = > ' Previous page ' ;
@ override
String get nextPage = > ' Next page ' ;
2026-06-24 02:32:41 +08:00
@ override
String get toolSelectText = > ' Select text ' ;
@ override
String get actionHighlightSelection = > ' Highlight selection ' ;
2026-06-24 21:03:28 +08:00
@ override
String get toolRemoveHighlight = > ' Remove highlight (tap a highlight) ' ;
2026-06-24 20:02:12 +08:00
@ override
String get toolPlaceScratchLink = > ' Place scratch link ' ;
2026-06-25 00:11:45 +08:00
@ override
String get toolText = > ' Text (tap or double-click to add) ' ;
@ override
String get textPlaceholder = > ' Type… ' ;
2026-06-24 20:02:12 +08:00
@ override
String get scratchLinkDeleteTitle = > ' Delete scratch link? ' ;
@ override
String get scratchLinkDeleteBody = >
' This removes the anchor and its private scratchpad. ' ;
2026-06-25 00:00:16 +08:00
@ override
String get toolAddBookmark = > ' Add bookmark (here or at selection) ' ;
@ override
String get toolBookmarks = > ' Bookmarks ' ;
@ override
String get bookmarksTitle = > ' Bookmarks ' ;
@ override
String get bookmarksEmpty = > ' No bookmarks yet. ' ;
@ override
String bookmarkDefaultLabel ( int page ) {
return ' Page $ page ' ;
}
@ override
String bookmarkPageLabel ( int page ) {
return ' Page $ page ' ;
}
@ override
String get bookmarkDeleteTitle = > ' Delete bookmark? ' ;
@ override
String get bookmarkDeleteBody = > ' This removes the saved location. ' ;
2026-06-23 09:35:26 +08:00
@ override
String failedToOpenPdf ( String error ) {
return ' Failed to open PDF: \n $ error ' ;
}
@ override
String get pdfNoPages = > ' PDF has no pages. ' ;
@ override
String pageOfPages ( int current , int total ) {
return ' $ current / $ total ' ;
}
2026-06-24 17:15:39 +08:00
2026-08-05 17:55:27 +08:00
@ override
String get libraryTab = > ' Library ' ;
@ override
String get boardTab = > ' Stickies ' ;
@ override
String get shellTagline = > ' Ink · Annotate · Know ' ;
@ override
String get notesSection = > ' Notes ' ;
@ override
String get documentsSection = > ' Documents ' ;
@ override
String get emptyLibraryTitle = > ' Nothing here yet ' ;
@ override
String get emptyLibraryBody = > ' Create a note, or import PDF / PPT / Word ' ;
@ override
String get diagnosticsSection = > ' Diagnostics ' ;
@ override
String get diagnosticsExport = > ' Export diagnostic pack ' ;
@ override
String get diagnosticsExportHint = >
' Reproduce on Surface, export, and send the zip back ' ;
@ override
String get diagnosticsToggle = > ' Input diagnostics overlay ' ;
@ override
String get penSettingsUnified = > ' Pen & ink ' ;
2026-06-24 17:15:39 +08:00
@ override
String get board = > ' Board ' ;
@ override
String get boardTitle = > ' Sticky Board ' ;
@ override
String get boardOpen = > ' Sticky note board ' ;
@ override
String get boardAddCard = > ' Add card ' ;
@ override
String get boardNewCardText = > ' New note ' ;
@ override
String get boardDeleteCard = > ' Delete card ' ;
@ override
String get boardDeleteCardTitle = > ' Delete this card? ' ;
@ override
String get boardBacklinks = > ' Linked from ' ;
@ override
String get boardNoBacklinks = > ' Nothing links here yet ' ;
@ override
String boardDanglingLink ( String target ) {
return ' No card named \" $ target \" ' ;
}
@ override
String get close = > ' Close ' ;
2026-06-24 20:45:16 +08:00
@ override
String get vaultSetupTitle = > ' Choose your vault ' ;
@ override
String get vaultSetupHeadline = > ' Pick a folder for your notebooks ' ;
@ override
String get 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. ' ;
@ override
String get vaultChooseFolder = > ' Choose folder ' ;
@ override
String get vaultMissingTitle = > ' Your vault folder is missing ' ;
@ override
String get 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. ' ;
@ override
String vaultPickFailed ( String error ) {
return ' Couldn \' t open the folder picker: $ error ' ;
}
@ override
String get vaultNotWritable = >
' That folder isn \' t writable. Please choose another. ' ;
@ override
String get vaultSection = > ' Vault ' ;
@ override
String get vaultFolderLabel = > ' Vault folder ' ;
@ override
String get vaultNoneSelected = > ' No folder selected ' ;
@ override
String get vaultChangeFolder = > ' Change vault folder ' ;
@ override
String get vaultUpdated = > ' Vault folder updated ' ;
2026-06-25 01:35:13 +08:00
@ override
String get syncSection = > ' Sync (WebDAV) ' ;
@ override
String get syncServerUrl = > ' Server URL ' ;
@ override
String get syncServerUrlHint = >
' https://dav.example.com/remote.php/dav/files/me ' ;
@ override
String get syncUsername = > ' Username ' ;
@ override
String get syncPassword = > ' Password ' ;
@ override
String get syncRemoteFolder = > ' Remote folder ' ;
@ override
String get syncRemoteFolderHint = > ' BadNote ' ;
@ override
String get syncSave = > ' Save ' ;
@ override
String get syncSaved = > ' Sync settings saved ' ;
@ override
String get syncTestConnection = > ' Test connection ' ;
@ override
String get syncTestOk = > ' Connection OK ' ;
@ override
String syncTestFailed ( String error ) {
return ' Connection failed: $ error ' ;
}
@ override
String get syncNow = > ' Sync now ' ;
@ override
String get syncRunning = > ' Syncing… ' ;
@ override
String get syncNeverRun = > ' Never synced ' ;
@ override
String syncLastRun ( String when ) {
return ' Last synced: $ when ' ;
}
@ override
String syncResultSummary ( int uploaded , int downloaded , int conflicts ) {
return ' $ uploaded uploaded · $ downloaded downloaded · $ conflicts conflicts ' ;
}
@ override
String syncFailed ( String error ) {
return ' Sync failed: $ error ' ;
}
@ override
String get syncAuto = > ' Sync automatically on launch ' ;
@ override
String get syncCredentialsNote = >
' Credentials are stored locally in plain text. Use a dedicated app password. ' ;
@ override
String get syncNotConfigured = > ' Enter a server URL to enable sync. ' ;
2026-08-05 19:04:48 +08:00
@ override
String get settingsDefaults = > ' Defaults ' ;
@ override
String get settingsAppearance = > ' Appearance ' ;
@ override
String get settingsAbout = > ' About ' ;
@ override
String get settingsDefaultTool = > ' Default tool ' ;
@ override
String get settingsDefaultColor = > ' Default color ' ;
@ override
String get settingsDefaultWidth = > ' Default stroke width ' ;
@ override
String get settingsPressureCurve = > ' Pressure curve ' ;
@ override
String get settingsClearConfirmBody = >
' This resets pen defaults and appearance. Notes and documents are not affected. ' ;
@ override
String get serverSection = > ' BadNote Server ' ;
@ override
String get serverUrl = > ' Server URL ' ;
@ override
String get serverUrlHint = > ' http://192.168.1.10:8080 ' ;
@ override
String get serverUsername = > ' Username ' ;
@ override
String get serverPassword = > ' Password ' ;
@ override
String get serverSave = > ' Save & sign in ' ;
@ override
String get serverTest = > ' Test connection ' ;
@ override
String serverTestOk ( String version ) {
return ' Connected · API $ version ' ;
}
@ override
String serverTestFail ( String error ) {
return ' Connection failed: $ error ' ;
}
@ override
String get serverLoggedIn = > ' Signed in ' ;
@ override
String get serverHint = >
' Optional. Self-hosted vault assist + deferred OCR; notes stay fully offline. ' ;
@ override
String get boardEmptyTitle = > ' No sticky notes yet ' ;
@ override
String get boardEmptyBody = >
' Tap + to add a card. Write [[other-card-id]] in the body to create a backlink. ' ;
@ override
String get relativeJustNow = > ' Just now ' ;
@ override
String relativeMinutesAgo ( int n ) {
return ' ${ n } m ago ' ;
}
@ override
String relativeHoursAgo ( int n ) {
return ' ${ n } h ago ' ;
}
@ override
String get relativeYesterday = > ' Yesterday ' ;
@ override
String diagExported ( int bytes ) {
return ' Diagnostic pack exported ( $ bytes bytes) \n Path copied ' ;
}
@ override
String diagExportFail ( String error ) {
return ' Export failed: $ error ' ;
}
@ override
String get processingOcr = > ' Processing OCR… ' ;
2026-06-23 09:35:26 +08:00
}