feat(app): the card composer, for many cards in one sitting
Create flashcards, and tapping a card, open the composer: the stack of cards on the left (New flashcard on top, the new ones, then the stored ones; collapsible), the card being written on the right, saved as the person leaves it (another card, the pane, the screen, the app). The title says how saving stands; leaving with cards that couldn't be saved asks first. A card has its tags and their pin, an action menu (duplicate, clear, delete), the type switch (flashcard, vocabulary, matching), the front, and below a line its answer side: one answer or several to mark right or wrong, the reading and meanings, or categories and items. Fields changed differently on two devices show every version to keep one. The single-card editor goes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
a5515c13f7
commit
0afc22d454
1 changed files with 2701 additions and 735 deletions
|
|
@ -171,6 +171,83 @@
|
|||
"cardListMore": "More",
|
||||
"cardListManageTags": "Manage tags",
|
||||
|
||||
"composerTitle": "Create flashcards",
|
||||
"composerTitleFor": "Create flashcards for \"{title}\"",
|
||||
"@composerTitleFor": {"placeholders": {"title": {"type": "String"}}},
|
||||
"composerSaving": "Saving…",
|
||||
"composerSaveFailed": "Save failed — retry",
|
||||
"composerAllSaved": "All changes saved",
|
||||
"composerNewFlashcard": "New flashcard",
|
||||
"composerCollapseStack": "Collapse stack",
|
||||
"composerExpandStack": "Expand stack",
|
||||
"composerStatusSaving": "Saving",
|
||||
"composerStatusSaved": "Saved",
|
||||
"composerStatusFailed": "Save failed",
|
||||
"composerSaveFailedInline": "Save failed.",
|
||||
"composerRetry": "Retry",
|
||||
"composerEmptyPane": "Add a flashcard to get started.",
|
||||
"composerKindFlashcard": "Flashcard",
|
||||
"composerKindVocabulary": "Vocabulary",
|
||||
"composerKindMatching": "Matching",
|
||||
"composerKindMap": "Map",
|
||||
"composerLabelFront": "Front",
|
||||
"composerLabelQuestion": "Question",
|
||||
"composerLabelExpression": "Expression",
|
||||
"composerLabelPrompt": "Prompt",
|
||||
"composerLabelBack": "Back",
|
||||
"composerLabelAnswers": "Answers",
|
||||
"composerLabelAnswer": "Answer",
|
||||
"composerPlaceholderFront": "Add question",
|
||||
"composerPlaceholderExpression": "Add expression",
|
||||
"composerPlaceholderPrompt": "Add prompt",
|
||||
"composerAddAnswer": "Add answer",
|
||||
"composerCorrectAnswer": "Correct answer",
|
||||
"composerWrongAnswer": "Wrong answer",
|
||||
"composerRemoveAnswer": "Remove answer",
|
||||
"composerPin": "Pin {field}: keep it for the next card",
|
||||
"@composerPin": {"placeholders": {"field": {"type": "String"}}},
|
||||
"composerUnpin": "Unpin {field}: clear it for the next card",
|
||||
"@composerUnpin": {"placeholders": {"field": {"type": "String"}}},
|
||||
"composerTags": "Tags",
|
||||
"composerAddTags": "Add tags",
|
||||
"composerMoreActions": "More actions",
|
||||
"composerDuplicate": "Duplicate",
|
||||
"composerClearFields": "Clear fields",
|
||||
"composerDelete": "Delete",
|
||||
"composerDeleteTitle": "Delete this flashcard?",
|
||||
"composerDeleteDraftMessage": "The draft will be removed from this session. It has not been saved.",
|
||||
"composerDeleteSavedMessage": "The flashcard will be removed from the studyset, on all your devices.",
|
||||
"composerDiscardTitle": "{count, plural, =1{Discard unsaved flashcard?} other{Discard unsaved flashcards?}}",
|
||||
"@composerDiscardTitle": {"placeholders": {"count": {"type": "int"}}},
|
||||
"composerDiscardMessage": "{count, plural, =1{1 flashcard hasn't been saved yet. Leaving now will discard it.} other{{count} flashcards haven't been saved yet. Leaving now will discard them.}}",
|
||||
"@composerDiscardMessage": {"placeholders": {"count": {"type": "int"}}},
|
||||
"composerDiscardConfirm": "Discard",
|
||||
"composerConflict": "This flashcard was changed differently on two devices. Choose the version to keep of each part below.",
|
||||
"composerKeepThis": "Keep this",
|
||||
"vocabularyReading": "Reading",
|
||||
"vocabularyReadingHint": "Kana reading",
|
||||
"vocabularyMeanings": "Meanings",
|
||||
"vocabularyPrimaryMeaningHint": "Primary meaning",
|
||||
"vocabularyMeaningHint": "Meaning",
|
||||
"vocabularyAddMeaning": "Add meaning",
|
||||
"vocabularyRemoveMeaning": "Remove meaning",
|
||||
"matchingCategories": "Categories",
|
||||
"matchingCategoriesHint": "The drop-zone cards learners drag items onto. Each category needs at least one item, so a card can't have more categories than items.",
|
||||
"matchingCategory": "Category {number}",
|
||||
"@matchingCategory": {"placeholders": {"number": {"type": "int"}}},
|
||||
"matchingAddCategory": "Add category",
|
||||
"matchingAddCategoryBlocked": "Add an item first: a card can't have more categories than items",
|
||||
"matchingRemoveCategory": "Remove category",
|
||||
"matchingMinCategories": "At least two categories required",
|
||||
"matchingItems": "Items",
|
||||
"matchingItemsHint": "The draggable items. Assign every item to its correct category: an unassigned item can never be placed right.",
|
||||
"matchingItem": "Item {number}",
|
||||
"@matchingItem": {"placeholders": {"number": {"type": "int"}}},
|
||||
"matchingAddItem": "Add item",
|
||||
"matchingUnassigned": "Unassigned",
|
||||
"matchingRemoveItem": "Remove item",
|
||||
"matchingMinItems": "At least two items required",
|
||||
|
||||
"commonCancel": "Cancel",
|
||||
"commonClose": "Close",
|
||||
"commonUndo": "Undo",
|
||||
|
|
|
|||
Loading…
Reference in a new issue