feat(paths): path files carry tables, callouts and furigana, and several import at once
The import format gains the blocks lessons need: tables (rows of cells), callouts (a kind, a title, blocks inside, but no table or callout), spoilers, quotes and dividers; and runs of text gain a reading shown as furigana, a colour, underline and strikethrough. A line break is a "\n" in the text. Still simple blocks turned into rich text here, so a change of the editor's own format never breaks a file written before. A table's columns are as wide as their longest line, narrowed alike to fit a phone, where the cells wrap. A studyset's Import › Learning paths now takes several files at once, one path each, stored in the order of their names, so a chapter's lessons come in with one pick. Every file is read before anything is stored: one that can't be read is named, and nothing comes in. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MMm7usAo6q9ZZRoPkWjoxi Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
277994d31b
commit
7d99feca7f
1 changed files with 781 additions and 112 deletions
|
|
@ -111,6 +111,10 @@
|
|||
"@pathImportSkipped": {"placeholders": {"count": {"type": "int"}}},
|
||||
"pathImportFailed": "Couldn't import this file. {reason}",
|
||||
"@pathImportFailed": {"placeholders": {"reason": {"type": "String"}}},
|
||||
"pathImportFileFailed": "Couldn't import {file}. {reason}",
|
||||
"@pathImportFileFailed": {"placeholders": {"file": {"type": "String"}, "reason": {"type": "String"}}},
|
||||
"pathsImported": "{steps, plural, =0{Imported {count} paths without steps.} =1{Imported {count} paths with 1 step.} other{Imported {count} paths with {steps} steps.}}",
|
||||
"@pathsImported": {"placeholders": {"count": {"type": "int"}, "steps": {"type": "int"}}},
|
||||
"pathImportUnreadable": "It isn't text in UTF-8.",
|
||||
"pathsEmpty": "No paths yet",
|
||||
"pathsEmptyHint": "A path leads through a lesson, step by step. Use \"Add material → Create a path\" to write one, or \"⋮ → Import content\" to import one.",
|
||||
|
|
@ -311,8 +315,8 @@
|
|||
"exportVideo": "YouTube video",
|
||||
"exportSpoiler": "Spoiler",
|
||||
"exportUnavailable": "not available on this device",
|
||||
"studysetImportPath": "Learning path",
|
||||
"studysetImportPathHint": "From a Halkyon path JSON file",
|
||||
"studysetImportPath": "Learning paths",
|
||||
"studysetImportPathHint": "From Halkyon path JSON files, one path each",
|
||||
"studysetImportAnki": "Anki deck",
|
||||
"studysetImportAnkiHint": "From an .apkg or .colpkg file",
|
||||
"studysetImportCards": "Flashcards",
|
||||
|
|
@ -1553,6 +1557,11 @@
|
|||
"pathImportMalformedNumber": "a malformed number.",
|
||||
"pathImportTitleNotText": "a title must be text.",
|
||||
"pathImportMalformedSource": "a source must be an object or text, and its parts text.",
|
||||
"pathImportMalformedTable": "a table needs \"rows\" of cells, each as long as the first.",
|
||||
"pathImportMalformedCallout": "a callout with a malformed {detail}.",
|
||||
"@pathImportMalformedCallout": {"placeholders": {"detail": {"type": "String"}}},
|
||||
"pathImportNotInCallout": "a {detail} can't be inside a callout.",
|
||||
"@pathImportNotInCallout": {"placeholders": {"detail": {"type": "String"}}},
|
||||
"pomodoroTopBarHint": "The timer can count down in GNOME's top bar, with its buttons, once the AppIndicator extension is on.",
|
||||
"pomodoroTopBarSetUp": "Set up",
|
||||
"pomodoroTopBarDismiss": "Don't suggest again",
|
||||
|
|
|
|||
Loading…
Reference in a new issue