feat(app): learning paths in the studyset screen: worked through and written
- A Paths tab before Flashcards and Notes: each path with its title and secondary title, dimmed once completed; Edit, Reset progress (with an undo) and Delete (with an undo) behind its options. The studyset opens on its paths while one is unfinished, on its flashcards otherwise. - "Create a path" in Add material asks for the titles in a sheet and opens the new path to write; "Import a path (JSON)" reads a file in the import format, says what came in and how many blocks were left out (images and animations: the app never fetches from the web). - The player: one step at a time at reading width, a bar of the steps above, Back and "Check answers" / "Continue" / "Finish" below. It opens at the first unfinished step; an exercise passes only once answered right, as often as it takes; after a check, only the learner's own picks are marked, with the author's feedback; sources behind a chip; a finish screen leading to the next path. Words and items are dragged into place, or tapped into place for phones. - Writing: the path's screen (titles, description, tags, steps added by kind, reordered, deleted with an undo) and the step's (title, text with the format bar, its kind's exercise, feedback for right and wrong in the whole window, sources). The step saves on what it started from, as notes do, read-only while devices disagree until a version is kept. - The library and the topics count paths; steps done count on the dashboard, for the streak and the activity. - The rich-text screen for a studyset's description moves to core, for the steps' feedback too, and gains the format bar. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
91f6376b93
commit
e4bfe3bdeb
1 changed files with 6310 additions and 65 deletions
|
|
@ -64,6 +64,118 @@
|
|||
"studysetMenuMove": "Move to…",
|
||||
"studysetTabFlashcards": "Flashcards",
|
||||
"studysetTabNotes": "Notes",
|
||||
"studysetTabPaths": "Paths",
|
||||
"studysetCreatePath": "Create a path",
|
||||
"pathImportMenu": "Import a path (JSON)",
|
||||
"pathImportFileType": "Learning path (JSON)",
|
||||
"pathImported": "{count, plural, =1{Imported \"{title}\" with 1 step.} other{Imported \"{title}\" with {count} steps.}}",
|
||||
"@pathImported": {"placeholders": {"title": {"type": "String"}, "count": {"type": "int"}}},
|
||||
"pathImportSkipped": "{count, plural, =1{1 block was left out: images and animations aren't imported.} other{{count} blocks were left out: images and animations aren't imported.}}",
|
||||
"@pathImportSkipped": {"placeholders": {"count": {"type": "int"}}},
|
||||
"pathImportFailed": "Couldn't import this file. {reason}",
|
||||
"@pathImportFailed": {"placeholders": {"reason": {"type": "String"}}},
|
||||
"pathImportUnreadable": "It isn't text in UTF-8.",
|
||||
"pathsEmpty": "No paths yet",
|
||||
"pathsEmptyHint": "A path leads through a lesson, step by step.",
|
||||
"pathOptions": "Path options",
|
||||
"pathEdit": "Edit",
|
||||
"pathResetProgress": "Reset progress",
|
||||
"pathProgressReset": "Progress reset",
|
||||
"pathDelete": "Delete",
|
||||
"pathDeleteTitle": "Delete path?",
|
||||
"pathDeleteMessage": "This path and its steps will be removed from the studyset. You can undo this for a few seconds.",
|
||||
"pathDeleteConfirm": "Delete",
|
||||
"pathDeleted": "Path deleted",
|
||||
"pathCreateTitle": "New path",
|
||||
"pathCreate": "Create",
|
||||
"pathTitleLabel": "Title",
|
||||
"pathTitleRequired": "A path needs a title.",
|
||||
"pathSecondaryTitleLabel": "Secondary title",
|
||||
"pathSecondaryTitleHint": "E.g. the title in the language you learn",
|
||||
"pathEditTitle": "Edit path",
|
||||
"pathDescription": "Description",
|
||||
"pathAddDescription": "Add a description",
|
||||
"pathDescriptionEditTitle": "Path description",
|
||||
"pathAddTags": "Add tags",
|
||||
"pathTags": "Tags",
|
||||
"pathSteps": "Steps",
|
||||
"pathStepsEmpty": "No steps yet",
|
||||
"pathStepsEmptyHint": "Pick a step type to start writing the lesson.",
|
||||
"pathAddStep": "Add step",
|
||||
"pathReorder": "Reorder",
|
||||
"pathReorderDone": "Done",
|
||||
"pathStepDelete": "Delete step",
|
||||
"pathStepDeleted": "Step deleted",
|
||||
"stepUntitled": "Untitled step",
|
||||
"stepKindInfo": "Info",
|
||||
"stepKindSingleChoice": "Single choice",
|
||||
"stepKindMultipleChoice": "Multiple choice",
|
||||
"stepKindDragAndDrop": "Drag and drop",
|
||||
"stepKindFillInTheBlank": "Fill in the blank",
|
||||
"stepEditTitle": "Edit step",
|
||||
"stepTitleHint": "Title",
|
||||
"stepOptions": "Options",
|
||||
"stepOptionHint": "Option {number}",
|
||||
"@stepOptionHint": {"placeholders": {"number": {"type": "int"}}},
|
||||
"stepAddOption": "Add option",
|
||||
"stepRemoveOption": "Remove option",
|
||||
"stepCorrectOption": "The right one",
|
||||
"stepCorrectOptions": "Right ones",
|
||||
"stepCategories": "Categories",
|
||||
"stepCategoryHint": "Category {number}",
|
||||
"@stepCategoryHint": {"placeholders": {"number": {"type": "int"}}},
|
||||
"stepAddCategory": "Add category",
|
||||
"stepRemoveCategory": "Remove category",
|
||||
"stepItems": "Items",
|
||||
"stepItemHint": "Item {number}",
|
||||
"@stepItemHint": {"placeholders": {"number": {"type": "int"}}},
|
||||
"stepAddItem": "Add item",
|
||||
"stepRemoveItem": "Remove item",
|
||||
"stepItemCategory": "Belongs to",
|
||||
"stepPassage": "Passage",
|
||||
"stepPassageHint": "Type ___ (three underscores) wherever a word should be dropped in.",
|
||||
"stepBlankHint": "Word for gap {number}",
|
||||
"@stepBlankHint": {"placeholders": {"number": {"type": "int"}}},
|
||||
"stepIncomplete": "Not ready to answer yet: fill in every field and choose what is right.",
|
||||
"stepFeedbackRight": "Feedback after a right answer",
|
||||
"stepFeedbackWrong": "Feedback after a wrong answer",
|
||||
"stepFeedbackNone": "None",
|
||||
"stepSources": "Sources",
|
||||
"stepAddSource": "Add source",
|
||||
"stepRemoveSource": "Remove source",
|
||||
"stepSourceAuthors": "Authors",
|
||||
"stepSourceYear": "Year",
|
||||
"stepSourceTitle": "Title",
|
||||
"stepSourceUrl": "Link",
|
||||
"stepSourcesCount": "{count, plural, =1{1 source} other{{count} sources}}",
|
||||
"@stepSourcesCount": {"placeholders": {"count": {"type": "int"}}},
|
||||
"stepConflict": "This step was changed differently on another device. Keep one version to go on writing.",
|
||||
"stepFieldTitle": "Title",
|
||||
"stepFieldBody": "Text",
|
||||
"stepFieldExercise": "Exercise",
|
||||
"stepFieldRightFeedback": "Feedback after a right answer",
|
||||
"stepFieldWrongFeedback": "Feedback after a wrong answer",
|
||||
"stepFieldSources": "Sources",
|
||||
"runnerClose": "Close",
|
||||
"runnerEditStep": "Edit step",
|
||||
"runnerBack": "Back",
|
||||
"runnerCheck": "Check answers",
|
||||
"runnerContinue": "Continue",
|
||||
"runnerFinish": "Finish",
|
||||
"runnerRight": "Correct!",
|
||||
"runnerWrong": "Not quite",
|
||||
"runnerAlreadyRight": "You already answered this correctly.",
|
||||
"runnerSelectAll": "Select all that apply.",
|
||||
"runnerDragHint": "Drag each item into the category it belongs to, or tap it and then the category. Tap a placed item to take it back.",
|
||||
"runnerBlankHint": "Drag a word into each gap, or tap it and then the gap. Tap a placed word to take it back.",
|
||||
"runnerEmpty": "This path has no steps yet.",
|
||||
"runnerFinished": "You finished this path",
|
||||
"runnerFinishedSteps": "{count, plural, =1{1 step complete.} other{{count} steps complete.}}",
|
||||
"@runnerFinishedSteps": {"placeholders": {"count": {"type": "int"}}},
|
||||
"runnerNextPath": "Continue to next path",
|
||||
"runnerBackToStudyset": "Back to studyset",
|
||||
"studysetCountPaths": "{count, plural, =1{1 path} other{{count} paths}}",
|
||||
"@studysetCountPaths": {"placeholders": {"count": {"type": "int"}}},
|
||||
"studysetCreateNote": "Create a note",
|
||||
"notesEmpty": "No notes yet",
|
||||
"notesEmptyHint": "Notes will appear here when you add them.",
|
||||
|
|
@ -126,7 +238,7 @@
|
|||
"studysetReadMore": "Read more",
|
||||
"studysetDescriptionTitle": "Description",
|
||||
"studysetDescriptionEditTitle": "Edit description",
|
||||
"studysetDescriptionSave": "Save",
|
||||
"richTextSave": "Save",
|
||||
"studysetSheetDescription": "Description",
|
||||
"studysetSheetDescriptionAdd": "Add a description",
|
||||
"studysetSheetInheritColor": "Same color as the studyset it is in",
|
||||
|
|
|
|||
Loading…
Reference in a new issue