Files
BadNote/lib/l10n/app_localizations_zh.dart
Akiba So 1d5ba05bb8
Some checks failed
CI / Windows build (push) Has been cancelled
feat(pdf): paragraph-precise bookmarks
Add a bookmark tool to the PDF editor. A bookmark anchors to a precise
location: when text is selected it captures the selection's normalized
rect + the start char index in the page text (the true paragraph
anchor); with no selection it falls back to the tapped page + point.

- Bookmark model gains optional normalized anchor rect + charIndex +
  label (all absent from JSON when null, so old sidecars still load).
- Bookmarks persist in the sidecar (scheduleBookmarkUpsert) and load on
  open; a bookmarks panel lists them and tapping one jumps to its page.
  Delete is persisted.

Scoped to the PDF editor (note bookmarks later); scroll-to-anchor is
page-level for now. analyze clean, 391 tests green.
2026-06-25 00:00:16 +08:00

374 lines
8.0 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// ignore: unused_import
import 'package:intl/intl.dart' as intl;
import 'app_localizations.dart';
// ignore_for_file: type=lint
/// The translations for Chinese (`zh`).
class AppLocalizationsZh extends AppLocalizations {
AppLocalizationsZh([String locale = 'zh']) : super(locale);
@override
String get appTitle => 'BadNote';
@override
String get settings => '设置';
@override
String get search => '搜索';
@override
String get importPdf => '导入 PDF';
@override
String get importPpt => '导入 PPT';
@override
String get importFile => '导入文件';
@override
String get createNotebook => '新建笔记本';
@override
String get newNotebookTitle => '新建笔记本';
@override
String get notebookTitleHint => '笔记本标题';
@override
String get create => '创建';
@override
String get untitledNote => '未命名';
@override
String get noNotesYetHint => '还没有手写笔记——点按 + 新建';
@override
String get noDocumentsYet => '暂无文档——点按“导入文件”';
@override
String get processingImport => '正在导入…';
@override
String importFailed(String error) {
return '无法导入该文件:$error';
}
@override
String get convertNeedsLibreOffice =>
'导入 Word 文档需要安装 LibreOffice。请先转换为 PDF或安装 LibreOffice。';
@override
String unsupportedFileType(String ext) {
return '不支持的文件类型:$ext';
}
@override
String get penCanvasBeta => '手写画布(测试版)';
@override
String get newNote => '新建笔记';
@override
String get open => '打开';
@override
String get cancel => '取消';
@override
String get delete => '删除';
@override
String get deleteNoteTitle => '删除笔记?';
@override
String get deleteNote => '删除笔记';
@override
String get openInSplitView => '分屏打开';
@override
String get splitViewSubtitle => 'PDF 参考 + 草稿纸';
@override
String get removeDocument => '移除文档';
@override
String get ok => '确定';
@override
String get pickColor => '选择颜色';
@override
String get clearSettingsTitle => '清除所有本地设置?';
@override
String get clear => '清除';
@override
String get settingsReset => '设置已恢复默认';
@override
String get themeSystem => '跟随系统';
@override
String get themeLight => '浅色';
@override
String get themeDark => '深色';
@override
String get seedColorDesc => 'Material 3 主题种子色';
@override
String get searchHint => '搜索笔记和文档…';
@override
String searchError(String error) {
return '搜索出错:$error';
}
@override
String noResultsFor(String query) {
return '没有“$query”的结果';
}
@override
String get typeToSearch => '输入以搜索你的笔记和文档';
@override
String get sectionNotes => '笔记';
@override
String get sectionDocuments => '文档';
@override
String pageLabel(int page) {
return '$page';
}
@override
String get processingPptx => '正在处理 PPTX…';
@override
String get processingPresentation => '正在处理演示文稿…';
@override
String get couldNotOpenPresentation => '无法打开演示文稿。';
@override
String get toolPen => '钢笔';
@override
String get toolHighlighter => '荧光笔';
@override
String get toolEraser => '橡皮擦';
@override
String get brushPicker => '笔刷';
@override
String get brushFountainPen => '钢笔';
@override
String get brushBallpoint => '圆珠笔';
@override
String get brushPencil => '铅笔';
@override
String get brushHighlighter => '荧光笔';
@override
String get toolSelect => '选择';
@override
String get toolShape => '形状';
@override
String get shapePicker => '形状';
@override
String get shapeLine => '直线';
@override
String get shapeRectangle => '矩形';
@override
String get shapeEllipse => '椭圆';
@override
String get shapeArrow => '箭头';
@override
String get actionDeleteSelection => '删除所选';
@override
String get actionUndo => '撤销';
@override
String get actionRedo => '重做';
@override
String get fingerDrawingOn => '手指书写:开';
@override
String get fingerDrawingOff => '手指书写:关(仅手写笔)';
@override
String get pages => '页面';
@override
String get penSettings => '手写笔设置';
@override
String get inputDiagnostic => '输入诊断(写入日志文件)';
@override
String get back => '返回';
@override
String get previousPage => '上一页';
@override
String get nextPage => '下一页';
@override
String get toolSelectText => '选择文字';
@override
String get actionHighlightSelection => '高亮所选';
@override
String get toolRemoveHighlight => '移除高亮(点按高亮处)';
@override
String get toolPlaceScratchLink => '放置便签链接';
@override
String get scratchLinkDeleteTitle => '删除便签链接?';
@override
String get scratchLinkDeleteBody => '这会移除锚点及其专属草稿纸。';
@override
String get toolAddBookmark => '添加书签(当前位置或所选段落)';
@override
String get toolBookmarks => '书签';
@override
String get bookmarksTitle => '书签';
@override
String get bookmarksEmpty => '还没有书签。';
@override
String bookmarkDefaultLabel(int page) {
return '$page';
}
@override
String bookmarkPageLabel(int page) {
return '$page';
}
@override
String get bookmarkDeleteTitle => '删除书签?';
@override
String get bookmarkDeleteBody => '这会移除保存的位置。';
@override
String failedToOpenPdf(String error) {
return '打开 PDF 失败:\n$error';
}
@override
String get pdfNoPages => 'PDF 没有任何页面。';
@override
String pageOfPages(int current, int total) {
return '$current / $total';
}
@override
String get board => '便利贴板';
@override
String get boardTitle => '便利贴板';
@override
String get boardOpen => '便利贴板';
@override
String get boardAddCard => '添加便利贴';
@override
String get boardNewCardText => '新便利贴';
@override
String get boardDeleteCard => '删除便利贴';
@override
String get boardDeleteCardTitle => '删除这张便利贴?';
@override
String get boardBacklinks => '哪些链接到这里';
@override
String get boardNoBacklinks => '暂无其他便利贴链接到这里';
@override
String boardDanglingLink(String target) {
return '没有名为“$target”的便利贴';
}
@override
String get close => '关闭';
@override
String get vaultSetupTitle => '选择笔记库';
@override
String get vaultSetupHeadline => '为你的笔记本选择一个文件夹';
@override
String get vaultSetupBody =>
'BadNote 会把你的笔记本都存放在你选择的一个文件夹里——就像 Obsidian 的库vault。请选择一个你能掌控的文件夹例如同步盘这样你的笔记会跟着文件一起走。';
@override
String get vaultChooseFolder => '选择文件夹';
@override
String get vaultMissingTitle => '笔记库文件夹不见了';
@override
String get vaultMissingBody => '找不到你选择的文件夹(可能被移动、删除,或所在磁盘已拔出)。请重新定位或另选一个。';
@override
String vaultPickFailed(String error) {
return '无法打开文件夹选择器:$error';
}
@override
String get vaultNotWritable => '该文件夹不可写,请另选一个。';
@override
String get vaultSection => '笔记库';
@override
String get vaultFolderLabel => '笔记库文件夹';
@override
String get vaultNoneSelected => '尚未选择文件夹';
@override
String get vaultChangeFolder => '更改笔记库文件夹';
@override
String get vaultUpdated => '笔记库文件夹已更新';
}