All checks were successful
CI / Windows build (push) Successful in 8m42s
Add notebook.json containers with multi-member pages, fix PDF text editing (size/bold/drag/double-tap), index SidecarText in search, and share keyboard page shortcuts plus a PDF scrubber. Co-authored-by: Cursor <cursoragent@cursor.com>
624 lines
13 KiB
Dart
624 lines
13 KiB
Dart
// 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';
|
|
|
|
@override
|
|
String get importFile => 'Import file';
|
|
|
|
@override
|
|
String get createNotebook => 'Create notebook';
|
|
|
|
@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';
|
|
|
|
@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';
|
|
}
|
|
|
|
@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';
|
|
|
|
@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';
|
|
}
|
|
|
|
@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';
|
|
|
|
@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';
|
|
|
|
@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';
|
|
|
|
@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';
|
|
|
|
@override
|
|
String get toolSelectText => 'Select text';
|
|
|
|
@override
|
|
String get actionHighlightSelection => 'Highlight selection';
|
|
|
|
@override
|
|
String get toolRemoveHighlight => 'Remove highlight (tap a highlight)';
|
|
|
|
@override
|
|
String get toolPlaceScratchLink => 'Place scratch link';
|
|
|
|
@override
|
|
String get toolText => 'Text (tap or double-click to add)';
|
|
|
|
@override
|
|
String get textPlaceholder => 'Type…';
|
|
|
|
@override
|
|
String get scratchLinkDeleteTitle => 'Delete scratch link?';
|
|
|
|
@override
|
|
String get scratchLinkDeleteBody =>
|
|
'This removes the anchor and its private scratchpad.';
|
|
|
|
@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.';
|
|
|
|
@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';
|
|
}
|
|
|
|
@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';
|
|
|
|
@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';
|
|
|
|
@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';
|
|
|
|
@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.';
|
|
|
|
@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)\nPath copied';
|
|
}
|
|
|
|
@override
|
|
String diagExportFail(String error) {
|
|
return 'Export failed: $error';
|
|
}
|
|
|
|
@override
|
|
String get processingOcr => 'Processing OCR…';
|
|
|
|
@override
|
|
String get notebooksSection => 'Notebooks';
|
|
|
|
@override
|
|
String get addBlankPage => 'Blank page';
|
|
|
|
@override
|
|
String get importIntoNotebook => 'Import into notebook';
|
|
|
|
@override
|
|
String get notebookMembersEmpty => 'No pages yet';
|
|
|
|
@override
|
|
String memberCount(int count) {
|
|
return '$count items';
|
|
}
|
|
|
|
@override
|
|
String get textFontSmall => 'S';
|
|
|
|
@override
|
|
String get textFontMedium => 'M';
|
|
|
|
@override
|
|
String get textFontLarge => 'L';
|
|
|
|
@override
|
|
String get textBold => 'Bold';
|
|
|
|
@override
|
|
String get textDragHint => 'Drag to move';
|
|
}
|