The importer said what was wrong with a file in English sentences built in the data layer, the last English left in a German app. It now names the problem, the step it is in and what the problem names (a field, a type, a number), and the studyset screen puts it into words: "Step 2: unknown "type": quiz." or "Schritt 2: unbekannter „type“: quiz.". The format's own field names stay as they are in the file. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
1037 lines
50 KiB
Text
1037 lines
50 KiB
Text
{
|
||
"@@locale": "en",
|
||
|
||
"appTitle": "Halkyon Learn",
|
||
"@appTitle": {"description": "The app's name, e.g. in the window title and the rail's logo."},
|
||
|
||
"shellTabHome": "Home",
|
||
"shellTabLibrary": "Library",
|
||
"shellTabExplore": "Explore",
|
||
"shellTabProfile": "Profile",
|
||
|
||
"homeTitle": "Home",
|
||
|
||
"libraryTitle": "Library",
|
||
"libraryCreateStudyset": "Create studyset",
|
||
"libraryEmpty": "No studysets yet",
|
||
"libraryUnreadable": "Couldn't read your studysets.",
|
||
"libraryArchivedSection": "Archived",
|
||
"librarySearchTooltip": "Search",
|
||
"librarySearchHint": "Search studysets",
|
||
"librarySearchClearTooltip": "Clear query",
|
||
"librarySearchCloseTooltip": "Close search",
|
||
"librarySearchNoMatches": "No studysets match your search",
|
||
"libraryStudysetArchived": "Studyset archived",
|
||
"libraryStudysetUnarchived": "Studyset unarchived",
|
||
"libraryStudysetDeleted": "Studyset deleted",
|
||
"libraryDeleteTitle": "Delete studyset?",
|
||
"libraryDeleteMessage": "It is deleted with everything inside it and all their cards, on all your devices. You can undo this for a few seconds.",
|
||
"libraryDeleteConfirm": "Delete",
|
||
|
||
"studysetSheetCreateTitle": "Create studyset",
|
||
"studysetSheetEditTitle": "Edit studyset",
|
||
"studysetSheetCreate": "Create",
|
||
"studysetSheetSave": "Save",
|
||
"studysetSheetTitleLabel": "Title",
|
||
"studysetSheetSecondaryLabel": "Secondary title",
|
||
"studysetSheetSecondaryHelper": "Shown as a small label above the title.",
|
||
"studysetSheetColor": "Colour",
|
||
"studysetSheetDiscardTitle": "Discard changes?",
|
||
"studysetSheetDiscardMessage": "You have unsaved changes to this studyset. Discard them and close the form?",
|
||
"studysetSheetDiscardConfirm": "Discard",
|
||
|
||
"paletteColorName": "{name, select, carrot{Carrot} cerise{Cerise} cobalt{Cobalt} copper{Copper} enzian{Enzian} fern{Fern} forest{Forest} ocean{Ocean} olive{Olive} pacific{Pacific} pickle{Pickle} pine{Pine} pink{Pink} plum{Plum} purple{Purple} reef{Reef} sahara{Sahara} slateblue{Slate blue} soil{Soil} strawberry{Strawberry} other{{name}}}",
|
||
"@paletteColorName": {"description": "A colour of the palette content can take, by its stored name.", "placeholders": {"name": {"type": "String"}}},
|
||
"colorPickerLabel": "Colour: {color}",
|
||
"@colorPickerLabel": {"placeholders": {"color": {"type": "String"}}},
|
||
|
||
"studysetCountFlashcards": "{count, plural, =1{1 flashcard} other{{count} flashcards}}",
|
||
"@studysetCountFlashcards": {"placeholders": {"count": {"type": "int"}}},
|
||
"studysetCountNotes": "{count, plural, =1{1 note} other{{count} notes}}",
|
||
"@studysetCountNotes": {"placeholders": {"count": {"type": "int"}}},
|
||
"studysetNoContent": "No content yet",
|
||
"studysetActionReview": "Review",
|
||
"studysetActionStudy": "Study",
|
||
"studysetActionAdd": "Add content",
|
||
"studysetArchived": "Archived",
|
||
"studysetStar": "Star",
|
||
"studysetUnstar": "Unstar",
|
||
"studysetOptions": "Options",
|
||
"studysetMenuEdit": "Edit",
|
||
"studysetMenuArchive": "Archive",
|
||
"studysetMenuUnarchive": "Unarchive",
|
||
"studysetMenuDelete": "Delete",
|
||
"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.",
|
||
"noteUntitled": "Untitled note",
|
||
"noteEdited": "Edited {when}",
|
||
"@noteEdited": {"placeholders": {"when": {"type": "String"}}},
|
||
"timeJustNow": "just now",
|
||
"timeMinutesAgo": "{count, plural, =1{1 minute ago} other{{count} minutes ago}}",
|
||
"@timeMinutesAgo": {"placeholders": {"count": {"type": "int"}}},
|
||
"timeHoursAgo": "{count, plural, =1{1 hour ago} other{{count} hours ago}}",
|
||
"@timeHoursAgo": {"placeholders": {"count": {"type": "int"}}},
|
||
"timeDaysAgo": "{count, plural, =1{yesterday} other{{count} days ago}}",
|
||
"@timeDaysAgo": {"placeholders": {"count": {"type": "int"}}},
|
||
"noteOptions": "Note options",
|
||
"noteEdit": "Edit",
|
||
"noteDelete": "Delete",
|
||
"noteDeleteTitle": "Delete note?",
|
||
"noteDeleteMessage": "This note will be removed from the studyset. You can undo this for a few seconds.",
|
||
"noteDeleteConfirm": "Delete",
|
||
"noteDeleted": "Note deleted",
|
||
"noteNewTitleFor": "New note in \"{title}\"",
|
||
"@noteNewTitleFor": {"placeholders": {"title": {"type": "String"}}},
|
||
"noteTitleFor": "Note in \"{title}\"",
|
||
"@noteTitleFor": {"placeholders": {"title": {"type": "String"}}},
|
||
"noteTitleHint": "Title",
|
||
"noteEditing": "Editing…",
|
||
"noteSaving": "Saving…",
|
||
"noteSaved": "Saved",
|
||
"noteSaveFailed": "Save failed",
|
||
"noteConflict": "This note was changed differently on another device. Keep one version to go on writing.",
|
||
"noteFieldTitle": "Title",
|
||
"noteFieldBody": "Text",
|
||
"noteKeepThis": "Keep this",
|
||
"noteAddTags": "Add tags",
|
||
"noteTags": "Tags",
|
||
"studysetFlashcardsEmpty": "No flashcards yet",
|
||
"studysetFlashcardsEmptyHint": "Add some to start studying.",
|
||
"studysetAddMaterial": "Add material",
|
||
"studysetCreateFlashcards": "Create flashcards",
|
||
"studysetStudy": "Study",
|
||
"studysetLearnCount": "Learn {count}",
|
||
"@studysetLearnCount": {"placeholders": {"count": {"type": "int"}}},
|
||
"studysetOpenTopics": "Show topics",
|
||
"studysetTopics": "Topics",
|
||
"studysetAllTopics": "All topics",
|
||
"studysetNewSubStudyset": "New sub-studyset",
|
||
"studysetSubStudysetsEmpty": "No sub-studysets yet.",
|
||
"studysetSubStudysetsEmptyHint": "Break this studyset into milestones or lessons.",
|
||
"studysetReorder": "Reorder",
|
||
"studysetReorderDone": "Done",
|
||
"studysetDragToReorder": "Drag to reorder",
|
||
"studysetMoveTitle": "Move studyset to",
|
||
"studysetMoveTopLevel": "Top level",
|
||
"studysetMoveCurrent": "Where it is now",
|
||
"studysetMoveConfirm": "Move",
|
||
"studysetMoveShowInside": "Show what is inside",
|
||
"studysetMoveHideInside": "Hide what is inside",
|
||
"studysetMoved": "Moved to {destination}.",
|
||
"@studysetMoved": {"placeholders": {"destination": {"type": "String"}}},
|
||
"studysetReadMore": "Read more",
|
||
"studysetDescriptionTitle": "Description",
|
||
"studysetDescriptionEditTitle": "Edit description",
|
||
"richTextSave": "Save",
|
||
"studysetSheetDescription": "Description",
|
||
"studysetSheetDescriptionAdd": "Add a description",
|
||
"studysetSheetInheritColor": "Same colour as the studyset it is in",
|
||
|
||
"exploreTitle": "Explore",
|
||
"exploreEmpty": "Studysets that others share will appear here.",
|
||
|
||
"profileTitle": "Profile",
|
||
"profileSettingsTooltip": "Settings",
|
||
"profileIdentified": "Your progress is kept with your account.",
|
||
"profileAnonymous": "Progress is saved on this device. Sign in to keep it.",
|
||
"profileSignInWithGitHub": "Sign in with GitHub",
|
||
"profileSignInFailed": "Couldn't sign in with GitHub.",
|
||
"profileContinueInBrowser": "Continue in your browser.",
|
||
"profileSwitchTitle": "Switch to your GitHub account?",
|
||
"profileSwitchMessage": "This GitHub account already has progress from another device. The studysets on this device can't be combined with it yet: if you switch, they are deleted.",
|
||
"profileSwitchStay": "Stay anonymous",
|
||
"profileSwitchConfirm": "Switch",
|
||
|
||
"settingsTitle": "Settings",
|
||
"settingsAccount": "Account",
|
||
"settingsSignOut": "Sign out",
|
||
"settingsSignOutTitle": "Sign out?",
|
||
"settingsSignOutAnonymousMessage": "This account can't be signed into again, so signing out deletes it with its progress.",
|
||
"settingsDeleteAccount": "Delete account",
|
||
"settingsDeleteTitle": "Delete your account?",
|
||
"settingsDeleteMessage": "Everything you have, your studysets, cards and reviews, is deleted on the server and on all your devices. This can't be undone.",
|
||
"settingsAbout": "About Halkyon Learn",
|
||
"aboutLegalese": "Free software: the app is under the GNU Affero General Public License, version 3 or any later version, the server under the Server Side Public License, version 1.",
|
||
"aboutSourceCode": "The source of what this instance runs:",
|
||
"aboutSourceUnreachable": "Couldn't reach this instance to ask where its source is.",
|
||
"settingsAppearance": "Appearance",
|
||
"settingsAppearanceDevice": "Device theme",
|
||
"settingsAppearanceLight": "Light",
|
||
"settingsAppearanceDark": "Dark",
|
||
"settingsLanguage": "Language",
|
||
"settingsLanguageDevice": "Device language",
|
||
"settingsVersion": "Version {version} (build {build})",
|
||
"@settingsVersion": {"placeholders": {"version": {"type": "String"}, "build": {"type": "String"}}},
|
||
"syncTitle": "Sync",
|
||
"syncStateSyncing": "Syncing…",
|
||
"syncStateSynced": "Everything synced",
|
||
"syncStateNotYet": "Not synced yet",
|
||
"syncStateFailing": "Sync is failing",
|
||
"syncStateMismatch": "This app can't sync with {server}",
|
||
"@syncStateMismatch": {"placeholders": {"server": {"type": "String"}}},
|
||
"syncMismatchDetail": "Update the app. If it is up to date, the server needs an update. What you do meanwhile stays on this device and syncs afterwards.",
|
||
"syncLastCompleted": "Last completed at {time}",
|
||
"@syncLastCompleted": {"placeholders": {"time": {"type": "String"}}},
|
||
"syncNoRunYet": "No sync has completed since the app started",
|
||
"syncLastFailed": "Last attempt failed at {time}",
|
||
"@syncLastFailed": {"placeholders": {"time": {"type": "String"}}},
|
||
"syncNow": "Sync now",
|
||
"syncTroubleLabel": "Sync needs attention",
|
||
"syncMismatchBanner": "This app can't sync with {server} any more. Update it to keep syncing.",
|
||
"@syncMismatchBanner": {"placeholders": {"server": {"type": "String"}}},
|
||
"syncMismatchMore": "More",
|
||
|
||
"tagsReadFailed": "Couldn't read the tags.",
|
||
"tagPickerTitle": "Tags",
|
||
"tagPickerManage": "Manage tags",
|
||
"tagPickerSearchLabel": "Search or create a tag",
|
||
"tagPickerCreate": "Create \"{name}\"",
|
||
"@tagPickerCreate": {"placeholders": {"name": {"type": "String"}}},
|
||
"tagSheetCreateTitle": "Create tag",
|
||
"tagSheetEditTitle": "Edit tag",
|
||
"tagSheetNameLabel": "Name",
|
||
"tagSheetNameHelper": "Stored and displayed in lowercase.",
|
||
"tagSheetNameExists": "The tag '{name}' exists already.",
|
||
"@tagSheetNameExists": {"placeholders": {"name": {"type": "String"}}},
|
||
"tagSheetNameMerges": "There is a tag '{name}' already: saving merges this one into it.",
|
||
"@tagSheetNameMerges": {"placeholders": {"name": {"type": "String"}}},
|
||
"tagSheetColor": "Colour",
|
||
"tagSheetCreate": "Create",
|
||
"tagSheetSave": "Save",
|
||
"tagManageTitle": "Manage tags",
|
||
"tagManageEmpty": "No tags yet. Add one below.",
|
||
"tagManageAdd": "Add tag",
|
||
"tagManageRow": "{name} ({count})",
|
||
"@tagManageRow": {"description": "A tag in the list of tags, with how many flashcards have it.", "placeholders": {"name": {"type": "String"}, "count": {"type": "int"}}},
|
||
"tagManageEdit": "Edit tag",
|
||
"tagManageDelete": "Delete tag",
|
||
"tagDeleteTitle": "Delete the tag '{name}'?",
|
||
"@tagDeleteTitle": {"placeholders": {"name": {"type": "String"}}},
|
||
"tagDeleteMessage": "{count, plural, =0{It isn't on any flashcards.} =1{It is removed from 1 flashcard, on all your devices.} other{It is removed from {count} flashcards, on all your devices.}}",
|
||
"@tagDeleteMessage": {"placeholders": {"count": {"type": "int"}}},
|
||
"tagDeleteConfirm": "Delete",
|
||
"tagDeleted": "Deleted the tag '{name}'",
|
||
"@tagDeleted": {"placeholders": {"name": {"type": "String"}}},
|
||
"studySettingsTitle": "Session settings",
|
||
"studySettingsFilterByTags": "Filter by tags",
|
||
"studySettingsFilterHint": "Study only the flashcards with any of the tags chosen.",
|
||
"studySettingsNoTags": "No tags yet. Add tags to your flashcards to filter them here.",
|
||
"studySettingsReset": "Reset",
|
||
"studySettingsSave": "Save",
|
||
"cardTagsLabel": "Tags",
|
||
"cardTagsAdd": "Add tags",
|
||
"cardTagsEdit": "Edit tags",
|
||
"cardFilterTooltip": "Filter",
|
||
"cardFilterTitle": "Filter",
|
||
"cardFilterTag": "Tag",
|
||
"cardFilterAllTags": "All tags",
|
||
"cardFilterNoTags": "None of these flashcards has a tag yet.",
|
||
"cardFilterClear": "Clear all",
|
||
"cardFilterApply": "Apply",
|
||
"cardFilterNothing": "No flashcards have this tag.",
|
||
"cardListFailed": "Couldn't read the cards.",
|
||
"cardListMore": "More",
|
||
"cardListManageTags": "Manage tags",
|
||
|
||
"composerTitle": "Create flashcards",
|
||
"composerTitleFor": "Create flashcards for \"{title}\"",
|
||
"@composerTitleFor": {"placeholders": {"title": {"type": "String"}}},
|
||
"composerEditTitle": "Edit flashcards",
|
||
"composerEditTitleFor": "Edit flashcards in \"{title}\"",
|
||
"@composerEditTitleFor": {"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",
|
||
"formatAlignLeft": "Align left",
|
||
"formatAlignCenter": "Centre",
|
||
"formatAlignRight": "Align right",
|
||
"formatBold": "Bold",
|
||
"formatItalic": "Italic",
|
||
"formatUnderline": "Underline",
|
||
"formatSuperscript": "Superscript",
|
||
"formatSubscript": "Subscript",
|
||
"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",
|
||
|
||
"cardTileOptions": "Options",
|
||
"cardTileEdit": "Edit",
|
||
"cardTileDelete": "Delete",
|
||
"cardTileUntitled": "Untitled",
|
||
"cardTileConflict": "Changed on two devices",
|
||
|
||
"studyClose": "Close session",
|
||
"studyBackFirstOn": "Showing the back of cards first: tap to revert",
|
||
"studyBackFirstOff": "Show the back of cards first",
|
||
"studyShowAnswer": "Show answer",
|
||
"studyCheck": "Check",
|
||
"studyRatingBad": "Bad",
|
||
"studyRatingOk": "OK",
|
||
"studyRatingGood": "Good",
|
||
"studyRatingPerfect": "Perfect",
|
||
"studyNothingTitle": "Nothing to study right now",
|
||
"studyNothingBody": "Come back later when more cards are due.",
|
||
"studyNextDue": "The next card is due in {interval}.",
|
||
"@studyNextDue": {"placeholders": {"interval": {"type": "String"}}},
|
||
"studyDone": "Done",
|
||
"studyRoundDone": "Round complete",
|
||
"studyContinue": "Continue learning",
|
||
"studyPrevious": "Previous card",
|
||
"studyNext": "Next card",
|
||
"studyReading": "Reading",
|
||
"studyMeanings": "Meanings",
|
||
"studyPlaceItems": "Drag each item onto its category, or tap an item and then a category.",
|
||
"studyMinutes": "{count} min",
|
||
"@studyMinutes": {"placeholders": {"count": {"type": "int"}}},
|
||
"studyHours": "{count} h",
|
||
"@studyHours": {"placeholders": {"count": {"type": "int"}}},
|
||
"studyDays": "{count, plural, =1{1 day} other{{count} days}}",
|
||
"@studyDays": {"placeholders": {"count": {"type": "int"}}},
|
||
"studyMonths": "{count, plural, =1{1 month} other{{count} months}}",
|
||
"@studyMonths": {"placeholders": {"count": {"type": "int"}}},
|
||
"studyYears": "{count, plural, =1{1 year} other{{count} years}}",
|
||
"@studyYears": {"placeholders": {"count": {"type": "int"}}},
|
||
"studyFilteredBy": "{count, plural, =1{Narrowed to 1 tag} other{Narrowed to {count} tags}}",
|
||
"@studyFilteredBy": {"placeholders": {"count": {"type": "int"}}},
|
||
"studySettingsCardsPerRound": "Cards per round",
|
||
"studySettingsNewPerDay": "New cards per day",
|
||
"studySettingsNewPerDayHint": "How many never-studied cards each studyset starts a day, unless its own study options say otherwise.",
|
||
"studyOptionsTitle": "Study options",
|
||
"studyOptionsDescription": "How many cards this studyset brings a day, and which come first, on every device. The studysets inside it keep their own.",
|
||
"studyOptionsReviewsPerDay": "Reviews per day",
|
||
"studyOptionsReviewsPerDayHint": "Cards in their learning steps come anyway.",
|
||
"studyOptionsOrder": "Order",
|
||
"studyOptionsReviewsFirst": "Reviews first",
|
||
"studyOptionsMixed": "Mixed",
|
||
"studyOptionsNewFirst": "New first",
|
||
"studyOptionsReset": "Reset to defaults",
|
||
"studySettingsUnlimited": "Unlimited",
|
||
"studySettingsSortBy": "Sort by",
|
||
"studySettingsLearnMode": "Learn mode",
|
||
"studyModeSpaced": "Spaced repetition",
|
||
"studyModeSpacedHint": "Due cards on their schedules; ratings move them.",
|
||
"studyModeCram": "Cram",
|
||
"studyModeCramHint": "Walk every card without touching the schedules.",
|
||
"studySortOldestFirst": "Oldest first",
|
||
"studySortRandom": "Random",
|
||
"studySortNewestFirst": "Newest first",
|
||
"studyFewer": "Fewer",
|
||
"studyMore": "More",
|
||
|
||
"studysetMenuReset": "Reset progress",
|
||
"studysetResetTitle": "Reset progress?",
|
||
"studysetResetMessage": "Every flashcard in it, and in the studysets inside it, starts afresh as new, on all your devices. Your study history stays. You can undo this for a few seconds.",
|
||
"studysetResetConfirm": "Reset",
|
||
"studysetResetDone": "Progress reset",
|
||
|
||
"mapUnknown": "This map needs a newer version of the app.",
|
||
"mapPickRegion": "Tap the region that answers the question; pinch or scroll to zoom.",
|
||
"mapNonePicked": "No region picked yet",
|
||
"composerPlaceholderQuestion": "Add question",
|
||
"composerLabelRegion": "Answer",
|
||
|
||
"homeStreakTooltip": "Study streak",
|
||
"homeArrange": "Arrange widgets",
|
||
"homeDone": "Done",
|
||
"homeDragToReorder": "Drag to reorder",
|
||
"homeShowWidget": "Show {label}",
|
||
"@homeShowWidget": {"placeholders": {"label": {"type": "String"}}},
|
||
"homeHideWidget": "Hide {label}",
|
||
"@homeHideWidget": {"placeholders": {"label": {"type": "String"}}},
|
||
"homeAllHidden": "All widgets are hidden",
|
||
"homeAllHiddenHint": "Long-press here to bring some back.",
|
||
"homeWidgetGoal": "Study goal",
|
||
"homeWidgetWeek": "Week overview",
|
||
"homeWidgetActivity": "Activity heatmap",
|
||
"homeActivityTitle": "Your activity",
|
||
"streakDays": "{count, plural, =1{1 day streak} other{{count} day streak}}",
|
||
"streakStart": "Study today to start your streak.",
|
||
"streakGrow": "Keep it going: study at least once a day to grow your streak.",
|
||
"streakFirstDay": "Review some cards today to light the first day.",
|
||
"streakComeBack": "Come back tomorrow to keep your streak.",
|
||
"streakKeepAlive": "Study today to keep your streak alive.",
|
||
"goalEditTitle": "Edit study goal",
|
||
"goalSetTitle": "Set a study goal",
|
||
"goalDescriptionDaily": "Review a number of flashcards each day. Every card you rate counts.",
|
||
"goalDescriptionWeekly": "Review a number of flashcards each week, from Monday. Every card you rate counts.",
|
||
"goalPeriod": "Period",
|
||
"goalPerDay": "Per day",
|
||
"goalPerWeek": "Per week",
|
||
"goalCardsPerDay": "Cards per day",
|
||
"goalCardsPerWeek": "Cards per week",
|
||
"goalSave": "Save goal",
|
||
"goalRemove": "Remove goal",
|
||
"goalEmptySubtitle": "Review a set number of cards each day or week.",
|
||
"goalDailyHeadline": "Daily goal",
|
||
"goalWeeklyHeadline": "Weekly goal",
|
||
"goalProgressToday": "{reviewed} of {target} cards today",
|
||
"@goalProgressToday": {"placeholders": {"reviewed": {"type": "int"}, "target": {"type": "int"}}},
|
||
"goalProgressThisWeek": "{reviewed} of {target} cards this week",
|
||
"@goalProgressThisWeek": {"placeholders": {"reviewed": {"type": "int"}, "target": {"type": "int"}}},
|
||
"goalMet": "Goal met: nice work!",
|
||
"goalRemaining": "{count} to go",
|
||
"@goalRemaining": {"placeholders": {"count": {"type": "int"}}},
|
||
"weekToday": "Today",
|
||
"weekPreviousDay": "Previous day",
|
||
"weekNextDay": "Next day",
|
||
"weekRestDay": "Rest day",
|
||
"weekDueCount": "{count, plural, =1{1 card due} other{{count} cards due}}",
|
||
"@weekDueCount": {"placeholders": {"count": {"type": "int"}}},
|
||
"heatmapLess": "Less",
|
||
"heatmapMore": "More",
|
||
"heatmapTotal": "{count, plural, =1{1 activity in the last year} other{{count} activities in the last year}}",
|
||
"@heatmapTotal": {"placeholders": {"count": {"type": "int"}}},
|
||
"heatmapDay": "{count, plural, =0{Nothing} =1{1 activity} other{{count} activities}} · {date}",
|
||
"@heatmapDay": {"placeholders": {"count": {"type": "int"}, "date": {"type": "String"}}},
|
||
|
||
"commonCancel": "Cancel",
|
||
"commonSave": "Save",
|
||
"commonClose": "Close",
|
||
"commonUndo": "Undo",
|
||
"commonTryAgain": "Try again",
|
||
"personDataFailed": "Couldn't open this device's data.",
|
||
"sessionUnreachable": "Couldn't reach the server.",
|
||
"notFoundGone": "This no longer exists. It may have been deleted on another device.",
|
||
"fileImage": "Image",
|
||
"fileSound": "Sound",
|
||
"fileImageUnavailable": "This image isn't on this device yet. It shows once it's uploaded and you're online.",
|
||
"fileImageUnreadable": "This image can't be shown. Its file may be damaged, or in a format this device can't read.",
|
||
"fileFromElsewhere": "Files from the web aren't shown.",
|
||
"filePlaySound": "Play sound",
|
||
"fileStopSound": "Stop sound",
|
||
"fileSoundUnavailable": "This sound isn't on this device yet. It plays once it's uploaded and you're online.",
|
||
"fileSoundUnplayable": "This sound can't be played. Its file may be damaged, or in a format this device can't play.",
|
||
"fileImages": "Images",
|
||
"fileSounds": "Sounds",
|
||
"fileNotAnImage": "This file isn't an image the app can show.",
|
||
"fileNotASound": "This file isn't a sound the app can play.",
|
||
"fileTooLarge": "This file is larger than {megabytes} MB.",
|
||
"@fileTooLarge": {
|
||
"placeholders": {
|
||
"megabytes": {"type": "int"}
|
||
}
|
||
},
|
||
"fileNotKept": "The file couldn't be kept on this device.",
|
||
"fileRemoveImage": "Remove image",
|
||
"fileRemoveSound": "Remove sound",
|
||
"editorInsert": "Insert",
|
||
"blockGroupText": "Text",
|
||
"blockGroupBlocks": "Blocks",
|
||
"blockGroupMedia": "Media",
|
||
"blockHeading": "Heading {level}",
|
||
"@blockHeading": {
|
||
"placeholders": {
|
||
"level": {"type": "int"}
|
||
}
|
||
},
|
||
"blockBulletedList": "Bulleted list",
|
||
"blockNumberedList": "Numbered list",
|
||
"blockChecklist": "Checklist",
|
||
"blockQuote": "Quote",
|
||
"blockListItem": "List item",
|
||
"blockChecklistItem": "To-do",
|
||
"editorSlashHint": "Type / to insert a block, or just start typing",
|
||
"blockDivider": "Divider",
|
||
"blockTable": "Table",
|
||
"blockRemove": "Remove",
|
||
"blockUnknown": "This part needs a newer version of the app.",
|
||
"blockCallout": "Callout",
|
||
"blockSpoiler": "Spoiler",
|
||
"calloutNote": "Note",
|
||
"calloutInfo": "Info",
|
||
"calloutTip": "Tip",
|
||
"calloutSuccess": "Success",
|
||
"calloutQuestion": "Question",
|
||
"calloutWarning": "Warning",
|
||
"calloutDanger": "Danger",
|
||
"calloutQuote": "Quote",
|
||
"calloutOptions": "Callout options",
|
||
"calloutEditTitle": "Edit title…",
|
||
"calloutFoldedAtFirst": "Folded at first",
|
||
"calloutRemove": "Remove callout",
|
||
"calloutShow": "Show",
|
||
"calloutHide": "Hide",
|
||
"calloutWriteInside": "Write inside",
|
||
"calloutTitleDialog": "Callout title",
|
||
"calloutTitleLabel": "Title",
|
||
"calloutTitleHelper": "Leave it empty to show the kind's name.",
|
||
"spoilerReveal": "Reveal",
|
||
"spoilerPlaceholder": "Hidden text, revealed on a tap",
|
||
"blockFormula": "Formula",
|
||
"formatInlineMath": "Formula in the line",
|
||
"formulaTitle": "Formula",
|
||
"formulaInLineTitle": "Formula in the line",
|
||
"formulaPreview": "Preview",
|
||
"formulaPreviewEmpty": "The formula shows here",
|
||
"formulaLatex": "LaTeX",
|
||
"formulaLatexHelper": "\\\\ starts a new line in aligned, cases or a matrix.",
|
||
"formulaEmpty": "An empty formula. Tap to write it.",
|
||
"formulaEdit": "Edit formula",
|
||
"formulaRemove": "Remove formula",
|
||
"blockYoutube": "YouTube video",
|
||
"youtubeLink": "YouTube link",
|
||
"youtubeLinkHelper": "Paste a link from YouTube.",
|
||
"youtubeNotFound": "No YouTube video in this link.",
|
||
"youtubeFound": "Found the video.",
|
||
"youtubeFoundFrom": "Found the video, starting at {time}.",
|
||
"@youtubeFoundFrom": {
|
||
"placeholders": {
|
||
"time": {"type": "String"}
|
||
}
|
||
},
|
||
"youtubeCaption": "Caption",
|
||
"youtubeCaptionHelper": "Shown in place of the video until it plays.",
|
||
"youtubeVideo": "YouTube video",
|
||
"youtubeSource": "YouTube",
|
||
"youtubeFrom": "YouTube · from {time}",
|
||
"@youtubeFrom": {
|
||
"placeholders": {
|
||
"time": {"type": "String"}
|
||
}
|
||
},
|
||
"youtubeEdit": "Edit video",
|
||
"youtubePlay": "Play video",
|
||
"youtubeOpen": "Open on YouTube",
|
||
"youtubeRemove": "Remove video",
|
||
"youtubeBroken": "This video's link can't be read.",
|
||
"youtubeNotOpened": "Couldn't open YouTube.",
|
||
"blockStudyButton": "Study button",
|
||
"studyButtonDefaultLabel": "Study",
|
||
"studyButtonStudyset": "Studyset to study",
|
||
"studyButtonTag": "Cards",
|
||
"studyButtonAllCards": "All cards",
|
||
"studyButtonLabel": "Label",
|
||
"studyButtonTopics": "With its topics",
|
||
"studyButtonBackFirst": "Back first",
|
||
"studyButtonBackFirstHelper": "Front/back and vocabulary cards ask their back.",
|
||
"studyButtonWithTag": "Tagged {tag}",
|
||
"@studyButtonWithTag": {
|
||
"placeholders": {
|
||
"tag": {"type": "String"}
|
||
}
|
||
},
|
||
"studyButtonAlone": "Without its topics",
|
||
"studyButtonEdit": "Edit study button",
|
||
"studyButtonRemove": "Remove study button",
|
||
"studyButtonBroken": "This study button doesn't say what to study.",
|
||
"studyButtonGone": "That studyset no longer exists.",
|
||
"pdfPageField": "PDF page",
|
||
"studysetTabFiles": "Files",
|
||
"pdfUploadMenu": "Upload a PDF",
|
||
"pdfFileType": "PDFs",
|
||
"pdfAdded": "Added \"{title}\".",
|
||
"@pdfAdded": {"placeholders": {"title": {"type": "String"}}},
|
||
"pdfNotPdf": "This file isn't a PDF.",
|
||
"pdfTooLarge": "This PDF is larger than {megabytes} MB.",
|
||
"@pdfTooLarge": {"placeholders": {"megabytes": {"type": "int"}}},
|
||
"pdfDuplicateTitle": "PDF already here",
|
||
"pdfDuplicateMessage": "This file is \"{title}\", which this studyset holds already. Add it as a copy, or keep the one there?",
|
||
"@pdfDuplicateMessage": {"placeholders": {"title": {"type": "String"}}},
|
||
"pdfDuplicateKeep": "Keep the one there",
|
||
"pdfDuplicateAdd": "Add a copy",
|
||
"filesEmpty": "No files yet",
|
||
"filesEmptyHint": "Use \"Add material → Upload a PDF\" to add one.",
|
||
"filesSort": "Sort",
|
||
"filesSortName": "Name (A–Z)",
|
||
"filesSortNewest": "Newest first",
|
||
"filesSortOldest": "Oldest first",
|
||
"filesSortLargest": "Largest first",
|
||
"pdfPages": "{count, plural, =1{1 page} other{{count} pages}}",
|
||
"@pdfPages": {"placeholders": {"count": {"type": "int"}}},
|
||
"pdfPercentRead": "{percent}% read",
|
||
"@pdfPercentRead": {"placeholders": {"percent": {"type": "int"}}},
|
||
"pdfDeadlineMet": "Reading deadline met",
|
||
"pdfDeadlineUpcoming": "Starts in {days, plural, =1{1 day} other{{days} days}} — {pages}/day planned",
|
||
"@pdfDeadlineUpcoming": {"placeholders": {"days": {"type": "int"}, "pages": {"type": "int"}}},
|
||
"pdfDeadlinePassed": "Deadline passed — {pages, plural, =1{1 page} other{{pages} pages}} left",
|
||
"@pdfDeadlinePassed": {"placeholders": {"pages": {"type": "int"}}},
|
||
"pdfDeadlineToday": "Due today — {pages, plural, =1{1 page} other{{pages} pages}} left",
|
||
"@pdfDeadlineToday": {"placeholders": {"pages": {"type": "int"}}},
|
||
"pdfDeadlinePace": "{pages}/day to reach page {target} in {days, plural, =1{1 day} other{{days} days}}",
|
||
"@pdfDeadlinePace": {"placeholders": {"pages": {"type": "int"}, "target": {"type": "int"}, "days": {"type": "int"}}},
|
||
"pdfOptions": "Actions",
|
||
"pdfRename": "Rename",
|
||
"pdfRenameTitle": "Rename PDF",
|
||
"pdfRenameLabel": "Title",
|
||
"pdfSetDeadline": "Set reading deadline",
|
||
"pdfEditDeadline": "Edit reading deadline",
|
||
"pdfMarkFinished": "Mark as finished",
|
||
"pdfResetReading": "Reset reading progress",
|
||
"pdfResetTitle": "Reset reading progress?",
|
||
"pdfResetMessage": "How far you've read \"{title}\" is forgotten. The PDF, its flashcards and notes stay.",
|
||
"@pdfResetMessage": {"placeholders": {"title": {"type": "String"}}},
|
||
"pdfResetConfirm": "Reset",
|
||
"pdfMoreInfo": "More info",
|
||
"pdfInfoFileName": "File name",
|
||
"pdfInfoSize": "Size",
|
||
"pdfInfoPages": "Pages",
|
||
"pdfInfoUnknown": "Known once it is opened",
|
||
"pdfDelete": "Delete",
|
||
"pdfDeleteTitle": "Delete PDF?",
|
||
"pdfDeleteMessage": "\"{title}\" is removed from this studyset, with how far it was read. Flashcards and notes made from it stay.",
|
||
"@pdfDeleteMessage": {"placeholders": {"title": {"type": "String"}}},
|
||
"pdfDeleteConfirm": "Delete",
|
||
"pdfDeleted": "PDF deleted",
|
||
"deadlineSheetSet": "Set a reading deadline",
|
||
"deadlineSheetEdit": "Edit reading deadline",
|
||
"deadlineSheetHelp": "Reach a page by a day. Progress follows the furthest page you reach as you read.",
|
||
"deadlineReachPageOf": "Reach page (of {count})",
|
||
"@deadlineReachPageOf": {"placeholders": {"count": {"type": "int"}}},
|
||
"deadlineReachPage": "Reach page",
|
||
"deadlineDecrease": "Decrease",
|
||
"deadlineIncrease": "Increase",
|
||
"deadlineChapter": "Or finish a chapter",
|
||
"deadlineChapterEntry": "{title} · to p.{page}",
|
||
"@deadlineChapterEntry": {"placeholders": {"title": {"type": "String"}, "page": {"type": "int"}}},
|
||
"deadlineBy": "By",
|
||
"deadlineStart": "Start on",
|
||
"deadlineStartToday": "Today",
|
||
"deadlineStartReset": "Start today",
|
||
"deadlineStartHelp": "The daily pace counts from this day on. Until then the PDF waits under \"Upcoming\".",
|
||
"deadlineSave": "Save deadline",
|
||
"deadlineRemove": "Remove deadline",
|
||
"readerMissing": "This PDF isn't on this device yet. It opens once the device that added it has uploaded it and you're online.",
|
||
"readerUnreadable": "This file can't be read as a PDF.",
|
||
"readerBack": "Back to studyset",
|
||
"readerSearch": "Search PDF",
|
||
"readerFitWidth": "Fit width",
|
||
"readerFitHeight": "Fit height",
|
||
"readerZoomIn": "Zoom in",
|
||
"readerZoomOut": "Zoom out",
|
||
"readerSetZoom": "Set zoom",
|
||
"readerZoomTitle": "Zoom",
|
||
"readerZoomApply": "Apply",
|
||
"readerFullscreen": "Fullscreen",
|
||
"readerExitFullscreen": "Exit fullscreen",
|
||
"readerPreviousPage": "Previous page",
|
||
"readerNextPage": "Next page",
|
||
"readerPageOf": "/ {count}",
|
||
"@readerPageOf": {"placeholders": {"count": {"type": "int"}}},
|
||
"readerFindHint": "Find in PDF",
|
||
"readerMatchOf": "{current} of {total}",
|
||
"@readerMatchOf": {"placeholders": {"current": {"type": "int"}, "total": {"type": "int"}}},
|
||
"readerPreviousMatch": "Previous match",
|
||
"readerNextMatch": "Next match",
|
||
"readerCloseSearch": "Close search",
|
||
"readerExpand": "Expand",
|
||
"readerCollapse": "Collapse",
|
||
"readerTabFlashcards": "Flashcards",
|
||
"readerTabNotes": "Notes",
|
||
"readerCardCreated": "Flashcard created",
|
||
"readerCardDeleteTitle": "Delete flashcard?",
|
||
"readerCardDeleteMessage": "The flashcard is deleted, with how it was studied.",
|
||
"readerCardDeleteConfirm": "Delete",
|
||
"readerFrontMatter": "Front matter",
|
||
"readerPage": "Page {page}",
|
||
"@readerPage": {"placeholders": {"page": {"type": "int"}}},
|
||
"readerByPage": "Page",
|
||
"readerByChapter": "Chapter",
|
||
"readerCardsEmpty": "Select text to make flashcards in no time",
|
||
"readerCardsEmptyHint": "Select the lines that matter and send them to a question or an answer, or press \"Create flashcard\".",
|
||
"readerCreateCard": "Create flashcard",
|
||
"readerEditCard": "Edit flashcard",
|
||
"readerBackToCards": "Back to flashcards",
|
||
"readerReferencedPage": "Referenced page: {page}",
|
||
"@readerReferencedPage": {"placeholders": {"page": {"type": "int"}}},
|
||
"readerUseCurrentPage": "Use current ({page})",
|
||
"@readerUseCurrentPage": {"placeholders": {"page": {"type": "int"}}},
|
||
"readerQuestion": "Question",
|
||
"readerAnswer": "Answer",
|
||
"readerKeepOpen": "Keep creation mode open",
|
||
"readerClear": "Clear",
|
||
"readerCreate": "Create",
|
||
"readerUntitledCard": "Untitled flashcard",
|
||
"readerCardOptions": "Card options",
|
||
"readerNoteSaved": "Saved",
|
||
"readerNoteEditing": "Editing…",
|
||
"readerNoteSaving": "Saving…",
|
||
"readerNoteFailed": "Save failed",
|
||
"readerToQuestion": "Question",
|
||
"readerToAnswer": "Answer",
|
||
"readerToNote": "Notes",
|
||
"readerLineBreaksJoined": "Line breaks joined (tap to keep)",
|
||
"readerLineBreaksKept": "Line breaks kept (tap to join)",
|
||
"blockScreenshot": "Screenshot of the page",
|
||
"readerCaptureCancel": "Cancel screenshot",
|
||
"readerCaptureHint": "Drag over the part of the page to keep",
|
||
"readerCaptureFailed": "The page couldn't be drawn. Try again once it has loaded.",
|
||
"readerScreenshotSaved": "Screenshot saved",
|
||
"imageOpenPdfPage": "Open the PDF at this page",
|
||
"homeWidgetDeadlines": "Reading deadlines",
|
||
"deadlinesTitle": "Reading deadlines",
|
||
"deadlinesCurrent": "Current",
|
||
"deadlinesUpcoming": "Upcoming",
|
||
"deadlinesProgress": "p.{furthest}/{target} · {when}",
|
||
"@deadlinesProgress": {"placeholders": {"furthest": {"type": "int"}, "target": {"type": "int"}, "when": {"type": "String"}}},
|
||
"deadlinePassedShort": "deadline passed",
|
||
"deadlineDueTodayShort": "due today",
|
||
"deadlineDaysLeft": "{days, plural, =1{1 day left} other{{days} days left}}",
|
||
"@deadlineDaysLeft": {"placeholders": {"days": {"type": "int"}}},
|
||
"deadlineToPageToday": "to p.{page} today",
|
||
"@deadlineToPageToday": {"placeholders": {"page": {"type": "int"}}},
|
||
"deadlineStartsIn": "Starts in {days, plural, =1{1 day} other{{days} days}}",
|
||
"@deadlineStartsIn": {"placeholders": {"days": {"type": "int"}}},
|
||
"deadlinesPlaceholder": "Appears when you have reading deadlines",
|
||
"deadlinesOpenTimeline": "Open the timeline",
|
||
"timelineTitle": "Reading timeline",
|
||
"timelineEmpty": "No reading deadlines yet",
|
||
"timelineEmptyHint": "Set a reading deadline on a PDF to see it here.",
|
||
"timelineToday": "Today",
|
||
"timelinePages": "p.{furthest}/{target}",
|
||
"@timelinePages": {"placeholders": {"furthest": {"type": "int"}, "target": {"type": "int"}}},
|
||
"chapterFinished": "Finished “{chapter}” — study the {count, plural, =1{card} other{{count} cards}} you made?",
|
||
"@chapterFinished": {"placeholders": {"chapter": {"type": "String"}, "count": {"type": "int"}}},
|
||
"chapterStudyNow": "Study now",
|
||
"chapterDismiss": "Dismiss",
|
||
"deadlineChapterLoading": "Loading chapters…",
|
||
"fileSizeKb": "{size} KB",
|
||
"@fileSizeKb": {"placeholders": {"size": {"type": "int"}}},
|
||
"fileSizeMb": "{size} MB",
|
||
"@fileSizeMb": {"placeholders": {"size": {"type": "String"}}},
|
||
"pdfPageShort": "p. {page}",
|
||
"@pdfPageShort": {
|
||
"placeholders": {
|
||
"page": {"type": "int"}
|
||
}
|
||
},
|
||
"ankiImportMenu": "Import from Anki",
|
||
"ankiImportFileType": "Anki decks",
|
||
"ankiImportTitle": "Import Anki deck",
|
||
"ankiImportOptionsTitle": "How should subdecks be imported?",
|
||
"ankiImportReading": "Reading the deck…",
|
||
"ankiImportSummary": "{cards, plural, =1{1 card.} other{{cards} cards.}}",
|
||
"@ankiImportSummary": {
|
||
"placeholders": {
|
||
"cards": {"type": "int"}
|
||
}
|
||
},
|
||
"ankiImportSummaryDecks": "{cards, plural, =1{1 card} other{{cards} cards}} across {decks} subdecks.",
|
||
"@ankiImportSummaryDecks": {
|
||
"placeholders": {
|
||
"cards": {"type": "int"},
|
||
"decks": {"type": "int"}
|
||
}
|
||
},
|
||
"ankiImportModeFlatten": "Flatten into this studyset",
|
||
"ankiImportModeFlattenSubtitle": "Import every card here and ignore the subdecks.",
|
||
"ankiImportModeSubStudysets": "Recreate as sub-studysets",
|
||
"ankiImportModeSubStudysetsSubtitle": "Mirror the subdeck tree: each subdeck becomes a nested studyset.",
|
||
"ankiImportModeTag": "Tag cards by subdeck",
|
||
"ankiImportModeTagSubtitle": "Keep every card here, tagged with each subdeck it came from.",
|
||
"ankiImportProgress": "Import study progress",
|
||
"ankiImportProgressSubtitle": "Bring Anki's review history over: cards continue where they left off. New cards stay new.",
|
||
"ankiImportMedia": "{count, plural, =1{Include media (1 file)} other{Include media ({count} files)}}",
|
||
"@ankiImportMedia": {
|
||
"placeholders": {
|
||
"count": {"type": "int"}
|
||
}
|
||
},
|
||
"ankiImportMediaSubtitle": "Keep the deck's images and sounds on the cards.",
|
||
"ankiImportMediaMayNotFit": "Its files take {size} MB, more than the {left} MB you have left: those that don't fit stay on this device, and your other devices won't show them.",
|
||
"@ankiImportMediaMayNotFit": {
|
||
"placeholders": {
|
||
"size": {"type": "String"},
|
||
"left": {"type": "String"}
|
||
}
|
||
},
|
||
"ankiImportRunning": "Importing…",
|
||
"ankiImportConfirm": "Import",
|
||
"ankiImportNotAPackage": "This isn't an Anki deck. In Anki, export a deck as an .apkg file and import that.",
|
||
"ankiImportNewerFormat": "This deck comes from a newer Anki than this app knows. Export it again with “Support older Anki versions”.",
|
||
"ankiImportUnreadable": "This deck is damaged and can't be read.",
|
||
"ankiImportBrokeOff": "The import broke off. The cards it brought in so far stay.",
|
||
"ankiImported": "{count, plural, =1{Imported 1 flashcard from Anki.} other{Imported {count} flashcards from Anki.}}",
|
||
"@ankiImported": {
|
||
"placeholders": {
|
||
"count": {"type": "int"}
|
||
}
|
||
},
|
||
"ankiImportedSubStudysets": "{count, plural, =1{Imported 1 card into sub-studysets.} other{Imported {count} cards into sub-studysets.}}",
|
||
"@ankiImportedSubStudysets": {
|
||
"placeholders": {
|
||
"count": {"type": "int"}
|
||
}
|
||
},
|
||
"ankiImportedTagged": "{count, plural, =1{Imported 1 card, tagged by subdeck.} other{Imported {count} cards, tagged by subdeck.}}",
|
||
"@ankiImportedTagged": {
|
||
"placeholders": {
|
||
"count": {"type": "int"}
|
||
}
|
||
},
|
||
"ankiImportFilesSkipped": "{count, plural, =1{1 media file couldn't be imported.} other{{count} media files couldn't be imported.}}",
|
||
"@ankiImportFilesSkipped": {
|
||
"placeholders": {
|
||
"count": {"type": "int"}
|
||
}
|
||
},
|
||
|
||
"pomodoroTitle": "Pomodoro",
|
||
"pomodoroFocus": "Focus",
|
||
"pomodoroShortBreak": "Short break",
|
||
"pomodoroLongBreak": "Long break",
|
||
"pomodoroFocusOf": "Focus {done} of {total}",
|
||
"@pomodoroFocusOf": {"placeholders": {"done": {"type": "int"}, "total": {"type": "int"}}},
|
||
"pomodoroStart": "Start",
|
||
"pomodoroPause": "Pause",
|
||
"pomodoroResume": "Resume",
|
||
"pomodoroSkip": "Skip",
|
||
"pomodoroStop": "Stop",
|
||
"pomodoroPaused": "Paused",
|
||
"pomodoroPausedProfile": "Paused · {profile}",
|
||
"@pomodoroPausedProfile": {"placeholders": {"profile": {"type": "String"}}},
|
||
"pomodoroClassic": "Classic",
|
||
"pomodoroUnnamed": "Unnamed profile",
|
||
"pomodoroProfiles": "Pomodoro profiles",
|
||
"pomodoroChooseProfile": "Choose a profile",
|
||
"pomodoroAddProfile": "Add a profile",
|
||
"pomodoroEditProfile": "Edit profile",
|
||
"pomodoroName": "Name",
|
||
"pomodoroFocusLength": "Focus",
|
||
"pomodoroShortBreakLength": "Short break",
|
||
"pomodoroLongBreakLength": "Long break",
|
||
"pomodoroMinutes": "{count} min",
|
||
"@pomodoroMinutes": {"placeholders": {"count": {"type": "int"}}},
|
||
"pomodoroNoLongBreak": "None",
|
||
"pomodoroLongBreakAfter": "Focus phases before a long break",
|
||
"pomodoroAutoStartBreaks": "Start breaks by themselves",
|
||
"pomodoroAutoStartFocus": "Start focus by itself after a break",
|
||
"pomodoroDoNotDisturb": "Do Not Disturb while focusing",
|
||
"pomodoroDoNotDisturbHint": "The device keeps quiet while you focus; the alert at its end still sounds.",
|
||
"pomodoroDoNotDisturbDenied": "The app may not keep this device quiet. Allow it in the system's settings.",
|
||
"pomodoroDeleteProfile": "Delete profile",
|
||
"pomodoroSummary": "{focus} min focus, {shortBreak} min break",
|
||
"@pomodoroSummary": {"placeholders": {"focus": {"type": "int"}, "shortBreak": {"type": "int"}}},
|
||
"pomodoroSummaryLong": "{focus} min focus, {shortBreak} min break, {longBreak} min after {after}",
|
||
"@pomodoroSummaryLong": {"placeholders": {"focus": {"type": "int"}, "shortBreak": {"type": "int"}, "longBreak": {"type": "int"}, "after": {"type": "int"}}},
|
||
"pomodoroAlertFocusDone": "Time for a break",
|
||
"pomodoroAlertBreakDone": "Back to focus",
|
||
"pomodoroAlertStarts": "{phase} has started.",
|
||
"@pomodoroAlertStarts": {"placeholders": {"phase": {"type": "String"}}},
|
||
"pomodoroAlertWaits": "{phase} is ready when you are.",
|
||
"@pomodoroAlertWaits": {"placeholders": {"phase": {"type": "String"}}},
|
||
"homeWidgetPomodoro": "Pomodoro timer",
|
||
"pomodoroAlerts": "Pomodoro alerts",
|
||
"pomodoroUntil": "Until {time}",
|
||
"@pomodoroUntil": {"placeholders": {"time": {"type": "String"}}},
|
||
"pomodoroLeft": "{left} left",
|
||
"@pomodoroLeft": {"placeholders": {"left": {"type": "String"}}},
|
||
"pathImportAtStep": "Step {step}: {problem}",
|
||
"@pathImportAtStep": {"placeholders": {"step": {"type": "int"}, "problem": {"type": "String"}}},
|
||
"pathImportNotJson": "This is no JSON: {detail}",
|
||
"@pathImportNotJson": {"placeholders": {"detail": {"type": "String"}}},
|
||
"pathImportNoPath": "a \"path\" object is missing.",
|
||
"pathImportNoTitle": "the path has no \"title\".",
|
||
"pathImportDescriptionNotText": "the path's \"description\" is no text.",
|
||
"pathImportNotAnObject": "no object.",
|
||
"pathImportUnknownStepType": "unknown \"type\": {detail}.",
|
||
"@pathImportUnknownStepType": {"placeholders": {"detail": {"type": "String"}}},
|
||
"pathImportRightOptionMissing": "its right option {detail} is not among its options.",
|
||
"@pathImportRightOptionMissing": {"placeholders": {"detail": {"type": "String"}}},
|
||
"pathImportRightOptionsMissing": "it names a right option that is not among its options.",
|
||
"pathImportNoPairing": "no \"correct_pairing\".",
|
||
"pathImportPairingTargetMissing": "it pairs items with a target that isn't there: {detail}.",
|
||
"@pathImportPairingTargetMissing": {"placeholders": {"detail": {"type": "String"}}},
|
||
"pathImportPairingIncomplete": "every item must be paired with one target.",
|
||
"pathImportNoPassage": "no \"passage\".",
|
||
"pathImportBlanksMismatch": "it needs one word in \"blanks\" for each ___ in its passage.",
|
||
"pathImportBlockWithoutType": "a block without \"type\".",
|
||
"pathImportMalformedLevel": "a heading with a malformed level.",
|
||
"pathImportMalformedListItem": "a malformed list item.",
|
||
"pathImportMalformedMath": "a malformed math block.",
|
||
"pathImportMalformedCode": "a malformed code block.",
|
||
"pathImportUnknownBlock": "an unknown block: {detail}.",
|
||
"@pathImportUnknownBlock": {"placeholders": {"detail": {"type": "String"}}},
|
||
"pathImportTextlessBlock": "a {detail} without \"text\" or \"runs\".",
|
||
"@pathImportTextlessBlock": {"placeholders": {"detail": {"type": "String"}}},
|
||
"pathImportMalformedRun": "a malformed run of text.",
|
||
"pathImportListExpected": "a list was expected.",
|
||
"pathImportNotText": "\"{detail}\" must be text.",
|
||
"@pathImportNotText": {"placeholders": {"detail": {"type": "String"}}},
|
||
"pathImportTooFew": "it needs at least two \"{detail}\".",
|
||
"@pathImportTooFew": {"placeholders": {"detail": {"type": "String"}}},
|
||
"pathImportMalformedNumber": "a malformed number.",
|
||
"pathImportTitleNotText": "a title must be text."
|
||
}
|