halkyon/apps/learn/halkyon_learn_flutter/lib/l10n/app_en.arb
Tizian 「ティツィアーン」 7eb1961b9f
feat(base): handles hidden until their people go public, every answer about a new handle counted (ADR 0020, D5)
A handle's page and profiles.byHandle answer as for a handle nobody has
until its person goes public: a handle fixed by a publish, or a display
name, a bio, a link or an avatar (isPublic). A person's own profile, and
the host's own lookups (personWithHandle), are unchanged.

So every answer about a new handle now tells that an account has it,
and countHandleCheck counts them together on the register, 30 an hour
per person (or attempt) and 60 per network, refused beyond with
ProfileRefusal.tooManyHandleChecks: profile.checkHandle and saving a
profile with a handle new for the person, simpleLogin.checkHandle and
signUp, keys.set with a handle, and Halkyon Learn's inbox.block and
unblock, which look people up by handle. A person's own handle and what
is no handle aren't counted. The SimpleLogin limiters of commit 3 give
way to it, so a network's 60 are shared between people signed in and
people new. The register's checkHandle, saveProfile,
signUpWithSimpleLogin and setFirstKeys carry the visitor's network from
the member that asked.

Halkyon Learn's handle dialog words the new refusal (English, German).

Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-24 09:17:49 +02:00

2442 lines
134 KiB
Text
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.

{
"@@locale": "en",
"appTitle": "Halkyon Learn",
"launchProduct": "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",
"libraryOnItsWay": "Your library is on its way from {instance}…",
"@libraryOnItsWay": {
"description": "An empty library while this device's first sync brings the person's studysets.",
"placeholders": {
"instance": {"type": "String", "example": "learn.halkyon.eu"}
}
},
"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": "Moved to Recently deleted",
"libraryDeletedSection": "Recently deleted",
"libraryDeletedNote": "Deleted studysets are kept for 14 days, with everything inside them. After that, they are deleted for good.",
"libraryDeletedDaysLeft": "{days, plural, =0{Deleted for good soon} =1{1 day left} other{{days} days left}}",
"@libraryDeletedDaysLeft": {
"placeholders": {
"days": {"type": "int"}
}
},
"libraryRestore": "Restore",
"libraryDeleteNow": "Delete now",
"libraryStudysetRestored": "Studyset restored",
"libraryDeleteForGoodTitle": "Delete for good?",
"libraryDeleteForGoodMessage": "“{title}” is deleted with everything inside it and all their cards, on all your devices. This can't be undone.",
"@libraryDeleteForGoodMessage": {
"placeholders": {
"title": {"type": "String"}
}
},
"libraryDeleteForGoodConfirm": "Delete for good",
"studysetSheetCreateTitle": "Create studyset",
"studysetSheetEditTitle": "Edit studyset",
"studysetSheetCreate": "Create",
"studysetSheetSave": "Save",
"studysetSheetTitleLabel": "Title",
"studysetSheetSecondaryLabel": "Secondary title",
"studysetSheetSecondaryHelper": "Shown as a small label above the title on cards and the studyset's header. Paths use it to label tiers (Challenge, Milestone, Lesson).",
"studysetSheetColor": "Colour",
"studysetSheetDiscardTitle": "Discard changes?",
"studysetSheetDiscardMessage": "You have unsaved changes to this studyset. Discard them and close the form?",
"studysetSheetDiscardConfirm": "Discard",
"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"}}},
"studysetCountFiles": "{count, plural, =1{1 file} other{{count} files}}",
"@studysetCountFiles": {"placeholders": {"count": {"type": "int"}}},
"libraryRefresh": "Refresh",
"libraryOptions": "Library options",
"libraryImport": "Import",
"libraryImportAnkiHint": "Becomes a studyset of its own, from an .apkg or .colpkg file",
"libraryImportArchive": "Halkyon archive",
"libraryImportArchiveHint": "A studyset with everything in it and its progress, from a .zip file",
"archiveFileType": "Halkyon archive",
"archiveImportTitle": "Import archive",
"archiveImportReading": "Reading the archive…",
"archiveImportHolds": "“{title}” holds:",
"@archiveImportHolds": {"placeholders": {"title": {"type": "String"}}},
"archiveCountStudysets": "{count, plural, =1{1 studyset} other{{count} studysets}}",
"@archiveCountStudysets": {"placeholders": {"count": {"type": "int"}}},
"archiveCountReviews": "{count, plural, =1{1 review} other{{count} reviews}}",
"@archiveCountReviews": {"placeholders": {"count": {"type": "int"}}},
"archiveImportConfirm": "Import",
"archiveImported": "Imported: {cards} and {reviews}.",
"@archiveImported": {"placeholders": {"cards": {"type": "String"}, "reviews": {"type": "String"}}},
"archiveImportMissingEntries": "{count, plural, =1{1 word isn't} other{{count} words aren't}} in this instance's dictionary and stayed out.",
"@archiveImportMissingEntries": {"placeholders": {"count": {"type": "int"}}},
"archiveNotAnArchive": "This file isn't a Halkyon archive.",
"archiveNewerFormat": "This archive comes from a newer version of the app. Update the app to import it.",
"archiveUnreadable": "This archive can't be read.",
"archiveImportBrokeOff": "The import broke off. Check the connection and try again.",
"libraryRetry": "Retry",
"studysetNoContent": "No content yet",
"studysetEmpty": "Empty",
"studysetActionReview": "Review",
"studysetActionStudy": "Study",
"studysetActionAdd": "Add content",
"studysetArchived": "Archived",
"studysetStar": "Star",
"studysetUnstar": "Unstar",
"studysetByYou": "By you",
"studysetByAuthor": "By {author}",
"@studysetByAuthor": {"placeholders": {"author": {"type": "String"}}},
"studysetByOthers": "A copy",
"studysetVisibilityPrivate": "Private",
"studysetVisibilityPublic": "Public",
"studysetOptions": "Options",
"studysetBibliography": "Bibliography",
"studysetBibliographyIntro": "Works cited across this studyset, in the citation style chosen in Settings.",
"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"}}},
"pathImportFileFailed": "Couldn't import {file}. {reason}",
"pathImportReading": "{count, plural, =1{Reading the file…} other{Reading {count} files…}}",
"@pathImportReading": {"placeholders": {"count": {"type": "int"}}},
"pathImportStoring": "{count, plural, =1{Importing “{title}”…} other{Importing path {index} of {count}: “{title}”…}}",
"@pathImportStoring": {"placeholders": {"index": {"type": "int"}, "count": {"type": "int"}, "title": {"type": "String"}}},
"@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.",
"pathOptions": "Path options",
"pathEdit": "Edit",
"pathResetProgress": "Reset progress",
"pathProgressReset": "Progress reset",
"pathResetTitle": "Reset progress?",
"pathResetMessage": "All your progress through this path will be cleared. You can undo this for a few seconds.",
"pathResetConfirm": "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",
"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",
"pathEditTags": "Edit 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",
"sources": "Sources",
"sourcesCount": "{count, plural, =1{1 source} other{{count} sources}}",
"@sourcesCount": {"placeholders": {"count": {"type": "int"}}},
"sourcesNone": "No sources cited yet.",
"sourcesEdit": "Edit sources",
"sourcesEditDone": "Done editing",
"sourceAdd": "Add a source",
"sourceEdit": "Edit source",
"sourceRemove": "Remove source",
"sourceRemoved": "Source removed",
"sourceSheetAdd": "Add",
"sourceAuthors": "Authors",
"sourceAuthorsHint": "Full names, one per line, e.g. Mark A. McDaniel",
"sourceYear": "Year",
"sourceYearHint": "e.g. 2014",
"sourceTitle": "Title",
"sourceTitleHint": "Title of the work",
"sourceContainer": "Published in",
"sourceContainerHint": "Journal, book or website it is part of, with pages",
"sourceContainerHelper": "Leave empty for a work of its own, such as a book.",
"sourcePublisher": "Publisher",
"sourcePublisherHint": "e.g. Belknap Press",
"sourceIsbn": "ISBN",
"sourceIsbnHint": "e.g. 978-0-674-72901-8",
"sourceUrl": "Link",
"sourceUrlHint": "https://…",
"sourceImportedAs": "Imported as: {citation}",
"@sourceImportedAs": {"placeholders": {"citation": {"type": "String"}}},
"sourceIsbnLine": "ISBN: {isbn}",
"@sourceIsbnLine": {"placeholders": {"isbn": {"type": "String"}}},
"sourceAvailableAt": "Available at:",
"sourceEmpty": "Empty reference",
"sourceDiscardTitle": "Discard changes?",
"sourceDiscardMessage": "What you typed for this source will be lost.",
"sourceDiscardConfirm": "Discard",
"sourceKind": "Kind of source",
"sourceKindWork": "Book or article",
"sourceKindWebsite": "Website",
"sourceKindVideo": "YouTube video",
"sourceWebsiteName": "Website",
"sourceWebsiteNameHint": "Its name, e.g. Wikipedia",
"sourcePageTitleHint": "Title of the page",
"sourceChannel": "Channel",
"sourceChannelHint": "Who published it on YouTube",
"sourceVideoTitleHint": "Title of the video",
"sourceVideoLink": "Link to the video",
"sourceVideoLinkInvalid": "Not a link to a YouTube video",
"sourcePlay": "Play video",
"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": "Use \"Add material → Create a note\" to write one.",
"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",
"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",
"noteEditTags": "Edit tags",
"studysetFlashcardsEmpty": "No flashcards yet",
"studysetFlashcardsEmptyHint": "Use \"Add material → Create flashcards\" to write some, or \"⋮ → Import content\" to bring in an Anki deck or a list.",
"studysetAddMaterial": "Add material",
"studysetPathsInTopics": "The paths are in its topics",
"studysetPathsInTopicsHint": "Or write one here: \"Add material → Create a path\".",
"studysetFlashcardsInTopics": "The flashcards are in its topics",
"studysetFlashcardsInTopicsHint": "Or add some here: \"Add material → Create flashcards\".",
"studysetNotesInTopics": "The notes are in its topics",
"studysetNotesInTopicsHint": "Or write one here: \"Add material → Create a note\".",
"studysetFilesInTopics": "The files are in its topics",
"studysetFilesInTopicsHint": "Or add one here: \"Add material → Upload a PDF\".",
"studysetBrowseAllFlashcards": "{count, plural, =1{Browse it} other{Browse all {count}}}",
"@studysetBrowseAllFlashcards": {"description": "Opens the card browser on every flashcard of a studyset's topics.", "placeholders": {"count": {"type": "int"}}},
"studysetCreateFlashcards": "Create flashcards",
"studysetStudy": "Study",
"studysetLearnCount": "Learn {count}",
"@studysetLearnCount": {"placeholders": {"count": {"type": "int"}}},
"studysetLearnFlashcards": "{count, plural, =1{Learn 1 flashcard} other{Learn {count} flashcards}}",
"@studysetLearnFlashcards": {"placeholders": {"count": {"type": "int"}}},
"studysetNothingToStudy": "Nothing to study yet",
"studysetStudyMode": "Study mode",
"studysetStartPath": "Start: {title}",
"@studysetStartPath": {"placeholders": {"title": {"type": "String"}}},
"studysetContinuePath": "Continue: {title}",
"@studysetContinuePath": {"placeholders": {"title": {"type": "String"}}},
"studysetStartPathHint": "Begin the first step of this path.",
"studysetContinuePathHint": "Pick up the next path step where you left off.",
"studysetSpacedRepetition": "Spaced repetition",
"studysetSpacedRepetitionHint": "Review the cards that are due, scheduled by FSRS.",
"studysetImportContent": "Import content",
"studysetMenuExport": "Export content",
"exportRunning": "Exporting…",
"exportedMarkdown": "Exported as Markdown.",
"exportedZip": "{count, plural, =1{Exported as Markdown with 1 file (.zip).} other{Exported as Markdown with {count} files (.zip).}}",
"@exportedZip": {"placeholders": {"count": {"type": "int"}}},
"exportMissingFiles": "{count, plural, =1{1 file wasn't on this device and is left out.} other{{count} files weren't on this device and are left out.}}",
"@exportMissingFiles": {"placeholders": {"count": {"type": "int"}}},
"exportFailed": "Couldn't export the studyset.",
"exportTitle": "Export",
"exportArchive": "Archive",
"exportArchiveSubtitle": "A .zip to import again: a backup, or a move to another instance.",
"exportMarkdown": "Markdown",
"exportMarkdownSubtitle": "To read elsewhere. It can't be imported again.",
"exportWithProgress": "With my progress",
"exportWithProgressSubtitle": "Reviews, answers, pages read, the exam you're preparing for, your reports and reading deadlines",
"exportConfirm": "Export",
"exportedArchive": "Exported as an archive (.zip).",
"exportArchiveFilesMissing": "{count, plural, =1{1 file isn't on this device and couldn't be downloaded.} other{{count} files aren't on this device and couldn't be downloaded.}} Connect to the internet and try again.",
"@exportArchiveFilesMissing": {"placeholders": {"count": {"type": "int"}}},
"exportQuestion": "Q",
"exportAnswer": "A",
"exportHint": "Hint",
"exportIfRight": "If right",
"exportIfWrong": "If wrong",
"exportSound": "Sound",
"exportVideo": "YouTube video",
"exportSpoiler": "Spoiler",
"exportUnavailable": "not available on this device",
"studysetImportPath": "Learning paths",
"studysetImportPathHint": "From Halkyon path JSON files, one path each",
"studysetImportAnki": "Anki deck",
"studysetImportAnkiHint": "From an .apkg or .colpkg file",
"studysetImportCards": "Flashcards",
"studysetImportCardsHint": "Pasted, or from a CSV or TSV file",
"cardTextImportTitle": "Import flashcards",
"cardTextImportDescription": "One card per line: its front, a separator, then its back. Each line is split at its first separator; lines without one are left out. A field in double quotes, as spreadsheets write them, may hold separators and line breaks.",
"cardTextImportHint": "Paste the cards here",
"cardTextImportLoadFile": "Load a CSV or TSV file",
"cardTextImportFileType": "CSV or TSV files",
"cardTextImportUnreadable": "This file doesn't hold text.",
"cardTextImportSeparator": "Separator",
"cardTextSeparatorTab": "Tab",
"cardTextSeparatorComma": "Comma",
"cardTextSeparatorSemicolon": "Semicolon",
"cardTextImportNone": "No cards found yet.",
"cardTextImportReady": "{count, plural, =1{1 card ready to import.} other{{count} cards ready to import.}}",
"@cardTextImportReady": {"placeholders": {"count": {"type": "int"}}},
"cardTextImportSubmit": "Import",
"cardTextImported": "{count, plural, =1{Imported 1 flashcard.} other{Imported {count} flashcards.}}",
"@cardTextImported": {"placeholders": {"count": {"type": "int"}}},
"studysetReorder": "Reorder",
"studysetReorderPaths": "Reorder paths",
"studysetReorderNotes": "Reorder notes",
"studysetReorderFiles": "Reorder files",
"studysetReorderDone": "Done",
"studysetOpenTopics": "Show topics",
"studysetTopicCount": "{count, plural, =1{1 topic} other{{count} topics}}",
"@studysetTopicCount": {"placeholders": {"count": {"type": "int"}}},
"studysetShowInnerTopics": "Show the topics inside",
"studysetHideInnerTopics": "Hide the topics inside",
"studysetTopics": "Topics",
"studysetAllTopics": "All topics",
"studysetNewSubStudyset": "New sub-studyset",
"studysetSubStudysetsEmpty": "No sub-studysets yet.",
"studysetSubStudysetsEmptyHint": "Break this studyset into milestones or lessons.",
"studysetDragToReorder": "Drag to reorder",
"studysetMoveTitle": "Move studyset to",
"studysetMoveTopLevel": "Top level",
"studysetMoveCurrent": "(current)",
"studysetMoveTopLevelRow": "Top level (no parent)",
"studysetMoveArchived": "Archived",
"studysetMoveNew": "New studyset",
"studysetMoveSelectDestination": "Select a destination",
"studysetMoveDestination": "Destination: {name}",
"@studysetMoveDestination": {"placeholders": {"name": {"type": "String"}}},
"studysetMoveConfirm": "Move",
"studysetMoveShowInside": "Show sub-studysets",
"studysetMoveHideInside": "Hide sub-studysets",
"studysetMoved": "Moved \"{title}\" to {destination}.",
"@studysetMoved": {"placeholders": {"title": {"type": "String"}, "destination": {"type": "String"}}},
"studysetReadMore": "Read more",
"studysetDescriptionTitle": "Description",
"studysetDescriptionEditTitle": "Edit description",
"richTextSave": "Save",
"studysetSheetDescription": "Description",
"studysetSheetDescriptionAdd": "Tap to add a description",
"studysetSheetDescriptionAdded": "Description added — tap to edit",
"studysetSheetInheritColor": "Inherit",
"studysetSheetLanguages": "Languages",
"studysetSheetSetLanguages": "Set languages",
"studysetSheetLanguagesHelper": "Which language each side of the cards is in. Chinese, Japanese and Korean then show in their own character shapes.",
"studysetSheetLanguagesInherited": "Off, or with neither side set, it takes the languages of the studyset it is in.",
"studysetSheetFrontLanguage": "Front language",
"studysetSheetBackLanguage": "Back language",
"studysetSheetLanguageNotSet": "Not set",
"studysetSheetLicense": "Licence",
"studysetSheetLicenseHelp": "Help me choose",
"studysetSheetLicenseLabel": "Licence",
"studysetSheetLicenseHelper": "The terms others may use the content under, shown below the studyset with a link to them. Examples: CC-BY-4.0, CC-BY-SA-4.0, MIT, All Rights Reserved.",
"studysetSheetLicenseYear": "Year",
"studysetSheetLicenseYearHelper": "The copyright year, shown as “© 2019 Name”. Optional.",
"studysetSheetLicenseYearInvalid": "Enter a year between {min} and {max}.",
"@studysetSheetLicenseYearInvalid": {"placeholders": {"min": {"type": "int"}, "max": {"type": "int"}}},
"studysetSheetLicenseHolder": "Licence holder",
"studysetSheetLicenseHolderHelper": "Who to credit: a name or an organisation.",
"studysetSheetLicenseNewer": "{license} is an older Creative Commons licence. Its current version, {current}, may fit better.",
"@studysetSheetLicenseNewer": {"placeholders": {"license": {"type": "String"}, "current": {"type": "String"}}},
"licenseChooserTitle": "Choose a licence",
"licenseChooserSubtitle": "A few questions to find the Creative Commons licence that fits how you want your work shared.",
"licenseChooserIntroPrompt": "Do you want to keep any rights to your work?",
"licenseChooserIntroYes": "Yes, share it under a licence",
"licenseChooserIntroYesDetail": "Others must follow the conditions you choose next.",
"licenseChooserIntroNo": "No, dedicate it to the public domain",
"licenseChooserIntroNoDetail": "CC0: anyone may use it for anything, without conditions.",
"licenseChooserCommercialPrompt": "Allow others to use your work commercially?",
"licenseChooserYes": "Yes",
"licenseChooserCommercialYesDetail": "Including for profit.",
"licenseChooserNo": "No",
"licenseChooserCommercialNoDetail": "Non-commercial uses only (NC).",
"licenseChooserAdaptationsPrompt": "Allow others to adapt or build upon your work?",
"licenseChooserAdaptationsYesDetail": "Remixes and adaptations are allowed.",
"licenseChooserAdaptationsShareAlike": "Yes, if they share alike",
"licenseChooserAdaptationsShareAlikeDetail": "Adaptations carry this same licence (SA).",
"licenseChooserAdaptationsNoDetail": "Sharing only, no adaptations (ND).",
"licenseChooserBack": "Back",
"licenseChooserRecommended": "Recommended licence",
"licenseChooserUse": "Use this licence",
"licenseSummaryCc0": "Anyone may use it for anything, without conditions or credit.",
"licenseSummaryBy": "Others may share and adapt it, even commercially, as long as they credit you.",
"licenseSummaryBySa": "Others may share and adapt it, even commercially, if they credit you and license their adaptations the same way.",
"licenseSummaryByNc": "Others may share and adapt it for non-commercial purposes, with credit to you.",
"licenseSummaryByNcSa": "Others may share and adapt it non-commercially, with credit and the same licence on adaptations.",
"licenseSummaryByNd": "Others may share it, even commercially, with credit, but may not share adaptations.",
"licenseSummaryByNcNd": "Others may share it non-commercially, with credit, but may not adapt it: the strictest Creative Commons licence.",
"languageArabic": "Arabic",
"languageGerman": "German",
"languageGreek": "Greek",
"languageEnglish": "English",
"languageSpanish": "Spanish",
"languageFrench": "French",
"languageHebrew": "Hebrew",
"languageHindi": "Hindi",
"languageItalian": "Italian",
"languageJapanese": "Japanese",
"languageKorean": "Korean",
"languageDutch": "Dutch",
"languagePolish": "Polish",
"languagePortuguese": "Portuguese",
"languageRussian": "Russian",
"languageSwedish": "Swedish",
"languageThai": "Thai",
"languageTurkish": "Turkish",
"languageUkrainian": "Ukrainian",
"languageVietnamese": "Vietnamese",
"languageChineseSimplified": "Chinese (Simplified)",
"languageChineseTraditional": "Chinese (Traditional)",
"fieldRequired": "required",
"exploreTitle": "Explore",
"exploreEmpty": "Studysets that others share will appear here.",
"profileTitle": "Profile",
"profileTabProfile": "Profile",
"profileTabStatistics": "Statistics",
"statisticsDays": "Days",
"statisticsWeeks": "Weeks",
"statisticsMonths": "Months",
"statisticsTotal": "In total",
"statisticsPerDay": "Per day",
"statisticsRecord": "Daily record",
"statisticsStudyTime": "Study time",
"statisticsMinutesInfo": "In minutes, each card counted for at most a minute",
"statisticsHoursInfo": "In hours, each card counted for at most a minute",
"statisticsRatings": "Ratings",
"statisticsRatingsInfo": "How you rated the flashcards you studied",
"statisticsRated": "{count, plural, =0{No cards rated} =1{1 card rated} other{{count} cards rated}}",
"@statisticsRated": {
"placeholders": {
"count": {"type": "int"}
}
},
"statisticsToday": "Today",
"statisticsWeekOf": "Week of {date}",
"@statisticsWeekOf": {
"placeholders": {
"date": {"type": "String"}
}
},
"statisticsNothingYet": "Nothing studied yet. Your study time and ratings show here once you study flashcards.",
"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",
"profileSignInWays": "Ways to sign in",
"profileWayGitHub": "GitHub",
"profileWayEmail": "Email address",
"profileWayLinked": "Signs you in",
"profileAddGitHub": "Add GitHub",
"profileGitHubTaken": "This GitHub account already signs in to another account.",
"emailSignInSwitchMessage": "This address already has progress from another device. The studysets on this device can't be combined with it yet: if you switch, they are deleted.",
"publicProfileTitle": "Public profile",
"profileSheetTitle": "Profile",
"profileSheetNotFound": "Nobody on this instance has this handle.",
"profileSheetLinkVerified": "Links back to this profile",
"profileSheetUnreachable": "The profile couldn’t be loaded. Check your connection.",
"publicProfileIntro": "How others see you once you publish: the handle they find you by, your name, a few words and links. It saves as you write, once you have chosen your handle.",
"publicProfileAnonymousHint": "Sign in to have a public profile and publish.",
"publicProfileDisplayName": "Display name",
"publicProfileDisplayNameHint": "The name shown beside your handle",
"publicProfileHandle": "Handle",
"publicProfileHandleHint": "Letters, digits and underscores, up to 30",
"publicProfileAddress": "Others find you as @{address}",
"@publicProfileAddress": {"placeholders": {"address": {"type": "String"}}},
"publicProfileHandleFixed": "Fixed since you published: others refer to it.",
"publicProfileBio": "Bio",
"publicProfileLinks": "Links",
"publicProfileLinksHint": "Your site or other accounts, up to 4.",
"publicProfileLinkHint": "https://…",
"publicProfileAddLink": "Add link",
"publicProfilePage": "Your profile page: {url}",
"@publicProfilePage": {"placeholders": {"url": {"type": "String"}}},
"publicProfilePageCopy": "Copy the address",
"publicProfilePageCopied": "Address copied.",
"publicProfileVerifyHint": "A link gets a checkmark once its page links back to your profile page with rel=\"me\", as Mastodon checks links.",
"publicProfileCheckLinks": "Check links",
"publicProfileLinkVerified": "Links back to your profile",
"publicProfileLinksChecked": "{count, plural, =1{Checked: {verified} of 1 link links back to your profile.} other{Checked: {verified} of {count} links link back to your profile.}}",
"@publicProfileLinksChecked": {"placeholders": {"count": {"type": "int"}, "verified": {"type": "int"}}},
"publicProfileRemoveLink": "Remove link",
"publicProfileSaving": "Saving…",
"publicProfileSavedNow": "Saved",
"publicProfileHandleChoose": "Choose a handle",
"publicProfileHandleFirst": "Choose your handle first: your profile is made with it, and saves as you write from then on.",
"publicProfileHandleChooseTitle": "Choose your handle",
"publicProfileHandleChangeTitle": "Change your handle",
"publicProfileHandleDialogText": "Others find you by your handle. You can change it until you first publish a studyset.",
"publicProfileHandleChecking": "Checking…",
"publicProfileHandleFree": "@{handle} is free",
"@publicProfileHandleFree": {
"placeholders": {
"handle": {"type": "String"}
}
},
"publicProfileHandleYours": "This is your handle",
"publicProfileHandleConfirmChoose": "Choose",
"publicProfileHandleConfirmChange": "Change",
"publicProfileRemove": "Remove profile",
"publicProfileRemoveTitle": "Remove your public profile?",
"publicProfileRemoveMessage": "Your handle becomes free for others to take.",
"publicProfileRemoved": "Profile removed.",
"publicProfileFailed": "Couldn't reach the instance. Try again.",
"publicProfileUnreachable": "Your public profile can't be reached right now.",
"publicProfileRetry": "Retry",
"profileProblemHandleInvalid": "A handle is 1 to 30 letters (a to z), digits or underscores.",
"profileProblemHandleReserved": "This handle is kept for the instance.",
"profileProblemHandleTaken": "Someone else has this handle.",
"profileProblemPublished": "You have published: your handle can't change, nor your profile go.",
"profileProblemDisplayNameTooLong": "At most 30 characters.",
"profileProblemBioTooLong": "At most 500 characters.",
"profileProblemTooManyLinks": "At most 4 links.",
"profileProblemLinkInvalid": "Links start with https:// or http://.",
"profileProblemAvatarInvalid": "This picture can't be used: choose a PNG, JPEG, WebP or GIF image.",
"profileProblemTooManyLinkChecks": "The links were checked too often. Try again in an hour.",
"profileProblemTooManyHandleChecks": "Too many handles were tried. Try again in an hour.",
"publicProfilePicture": "Picture",
"publicProfileChoosePicture": "Choose picture",
"publicProfileRemovePicture": "Remove picture",
"publicProfilePictureType": "Images",
"publicProfilePictureLater": "Choose your handle to add a picture.",
"settingsTitle": "Settings",
"settingsAccount": "Account",
"instanceWelcome": "Welcome to Halkyon Learn",
"startSignedOut": "Signed out",
"startOn": "Start on {instance}:",
"@startOn": {"placeholders": {"instance": {"type": "String"}}},
"startWithoutAccount": "Start without an account",
"startThenAddGitHub": "Start without an account, then add GitHub in Profile.",
"startOtherInstance": "Use another instance",
"instanceFirstStartSubtitle": "Choose the instance to keep your studysets on. Someone runs each one; you can add others later.",
"instanceAddress": "Instance address",
"instanceUseBuiltIn": "Use {name}",
"@instanceUseBuiltIn": {"placeholders": {"name": {"type": "String"}}},
"instanceBuiltInTagline": "Comes with the app",
"instanceAnother": "Another instance",
"instanceAnotherTagline": "Enter its address",
"instanceDataAndBackupsIn": "Data and backups: {place}",
"@instanceDataAndBackupsIn": {"placeholders": {"place": {"type": "String"}}},
"instanceDataIn": "Data: {place}",
"@instanceDataIn": {"placeholders": {"place": {"type": "String"}}},
"instanceBackupsIn": "Backups: {place}",
"@instanceBackupsIn": {"placeholders": {"place": {"type": "String"}}},
"instanceNoBackups": "No backups",
"instanceEuropeanUnion": "European Union",
"instanceContinue": "Continue",
"instanceAddressRequired": "Enter the address of an instance.",
"instanceAddressInvalid": "This isn't an address.",
"instanceUnreachable": "No instance of Halkyon Learn answers at {name}.",
"@instanceUnreachable": {"placeholders": {"name": {"type": "String"}}},
"instanceOpenFailed": "Couldn't open the app on {name}.",
"@instanceOpenFailed": {"placeholders": {"name": {"type": "String"}}},
"accountAnonymous": "Anonymous",
"accountSignedIn": "Signed in",
"accountsTitle": "Accounts",
"accountAdd": "Add account",
"accountAddSubtitle": "Choose the instance for the account to add.",
"accountRemoveTooltip": "Remove account",
"accountRemoveTitle": "Remove account?",
"accountRemoveMessage": "Removes the account on {name} from this device, with all the device holds of it. What it synced stays on {name}: sign in there again to have it. An anonymous account can't be signed into again.",
"@accountRemoveMessage": {"placeholders": {"name": {"type": "String"}}},
"accountRemoveConfirm": "Remove",
"settingsSignOutAnonymousMessage": "This account can't be signed into again, so signing out deletes it with its progress.",
"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.",
"settingsAppearance": "Appearance",
"settingsAppearanceDevice": "Device theme",
"settingsAppearanceLight": "Light",
"settingsAppearanceDark": "Dark",
"settingsLanguage": "Language",
"settingsLanguageDevice": "Device language",
"settingsCitations": "Citations",
"settingsCitationsDescription": "How sources and studysets' bibliographies are cited on this device. Type authors' full names: each style abbreviates and orders them itself.",
"settingsCitationStyle": "Style",
"settingsCitationStyleApa": "APA (7th edition)",
"settingsCitationStyleMla": "MLA (9th edition)",
"settingsCitationStyleChicago": "Chicago (18th edition)",
"settingsCitationPreview": "Preview",
"settingsCitationGuide": "Official guide",
"settingsStudy": "Study",
"settingsStudyPomodoroTitle": "Show the Pomodoro timer while studying",
"settingsStudyPomodoroSubtitle": "Show the focus / break countdown inside the study session, so you can see the time left without opening the notification.",
"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",
"syncPending": "{count, plural, =1{1 change waits to sync} other{{count} changes wait to sync}}",
"@syncPending": {"placeholders": {"count": {"type": "int"}}},
"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.",
"notesReadFailed": "Couldn't read the notes.",
"pathsReadFailed": "Couldn't read the learning paths.",
"filesReadFailed": "Couldn't read the files.",
"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": "Capitals don't make another tag: 'Noun' and 'noun' are one.",
"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",
"tagManageHideJellyfin": "Hide tags from Jellyfin while studying",
"tagManageHideJellyfinHint": "The shows, episodes, artists and songs words were met in. They stay on the cards, to filter and study by.",
"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",
"studySettingsNoTags": "No content tags yet. Add tags to your cards to filter them here.",
"studySettingsReset": "Reset",
"studySettingsSave": "Save",
"studySettingsHeadsUpTitle": "Heads up!",
"studySettingsHeadsUpBody": "The changes you’ve made will reload the session, and you’ll lose your current progress.",
"studySettingsApplyChanges": "Apply changes",
"studySettingsPerDay": " / day",
"studySettingsMoreTags": "+{count} more",
"@studySettingsMoreTags": {"placeholders": {"count": {"type": "int"}}},
"cardTagsLabel": "Tags",
"cardTagsAdd": "Add tags",
"cardTagsEdit": "Edit tags",
"tagChipsOverflow": "+{count, plural, =1{1 tag} other{{count} tags}}",
"@tagChipsOverflow": {"placeholders": {"count": {"type": "int"}}},
"cardHints": "Hints",
"cardHint": "Hint {number}",
"@cardHint": {"placeholders": {"number": {"type": "int"}}},
"cardAddHint": "Add hint",
"cardRemoveHint": "Remove hint",
"cardExplanation": "Explanation",
"cardAddExplanation": "Add explanation",
"cardRemoveExplanation": "Remove explanation",
"cardHintsSheetTitle": "{count, plural, =1{Hint} other{Hints {count}}}",
"@cardHintsSheetTitle": {"placeholders": {"count": {"type": "int"}}},
"cardPreviousHint": "Previous hint",
"cardNextHint": "Next hint",
"cardReport": "Report",
"cardSenses": "Senses",
"cardDictionaryEntry": "Dictionary entry",
"cardDictionaryVersion": "Dictionary version",
"studysetFromDictionary": "From the dictionary",
"dictionaryTitle": "Dictionary",
"dictionarySearchHint": "A word in kanji, kana or romaji, or a meaning",
"dictionarySearchHintWords": "A word, any form of it, or a meaning",
"dictionaryNothingFound": "Nothing found for “{query}”.",
"@dictionaryNothingFound": {"placeholders": {"query": {"type": "String"}}},
"dictionaryUnreachable": "The dictionary can't be reached right now.",
"dictionaryRetry": "Retry",
"dictionaryAddFailed": "Couldn't add the words. Try again.",
"addDestination": "Adds to {studyset}",
"@addDestination": {"placeholders": {"studyset": {"type": "String"}}},
"addDestinationHint": "Where new cards go: this studyset or one of its topics",
"dictionaryMakingCards": "Making the cards…",
"dictionaryNone": "This studyset's language has no dictionary on this instance.",
"dictionaryAdd": "Add",
"dictionaryInStudyset": "In this studyset",
"dictionaryAdded": "Added “{word}”.",
"@dictionaryAdded": {"placeholders": {"word": {"type": "String"}}},
"dictionaryLevels": "Add a whole level",
"dictionaryLevelsHint": "Every word of a level becomes a flashcard, in the order of the level's list, tagged with its level and word class. Words already in this studyset are left out.",
"dictionaryLabelCommon": "Common",
"dictionaryAddLevel": "{count, plural, =1{Add 1 word} other{Add {count} words}}",
"@dictionaryAddLevel": {"placeholders": {"count": {"type": "int"}}},
"dictionaryAddingLevel": "Adding… {done} of {count}",
"@dictionaryAddingLevel": {"placeholders": {"done": {"type": "int"}, "count": {"type": "int"}}},
"dictionaryWordsAdded": "{count, plural, =0{No new words.} =1{Added 1 word.} other{Added {count} words.}}",
"@dictionaryWordsAdded": {"placeholders": {"count": {"type": "int"}}},
"dictionaryWordsSkipped": "{count, plural, =1{1 was in this studyset already.} other{{count} were in this studyset already.}}",
"@dictionaryWordsSkipped": {"placeholders": {"count": {"type": "int"}}},
"dictionaryConfirmTitle": "Add {count} words?",
"@dictionaryConfirmTitle": {"placeholders": {"count": {"type": "int"}}},
"dictionaryConfirmMessage": "Each becomes a flashcard in this studyset.",
"dictionaryConfirmAdd": "Add",
"dictionaryCredits": "Words from {sources}.",
"dictionarySourcesTitle": "Sources",
"@dictionaryCredits": {"placeholders": {"sources": {"type": "String"}}},
"dictionaryLookUp": "Look up in the dictionary",
"dictionaryCharacterSearchHint": "A kanji or kana, a reading in kana or romaji, or a meaning",
"dictionaryTabWords": "Words",
"dictionaryTabCharacters": "Kanji & kana",
"dictionaryTabCharactersChinese": "Hanzi",
"@dictionaryTabCharactersChinese": {"description": "The tab of Chinese characters in a dictionary of Chinese."},
"dictionaryTabCharactersKorean": "Hangul & Hanja",
"@dictionaryTabCharactersKorean": {"description": "The tab of Korean letters and Hanja in a dictionary of Korean."},
"dictionaryTabCharactersGreek": "Alphabet",
"@dictionaryTabCharactersGreek": {"description": "The tab of Greek's letters in a dictionary of Greek."},
"dictionaryCharacterSearchHintChinese": "A character, its pinyin, or a meaning",
"dictionaryCharacterSearchHintKorean": "A Hanja or Hangul letter, its sound, or a meaning",
"dictionaryCharacterSearchHintGreek": "A letter or its name",
"dictionaryGroupHsk": "HSK levels",
"dictionaryGroupCommonCharacters": "In common use",
"dictionaryGroupHongKongGrades": "Hong Kong school grades",
"dictionaryGroupHangul": "Hangul",
"dictionaryGroupEducationHanja": "Hanja taught in schools",
"dictionaryGroupGreek": "Letters",
"dictionaryLabelHangul": "Hangul letters",
"dictionaryLabelEducationHanja": "1,800 basic Hanja",
"dictionaryLabelGreek": "Greek alphabet",
"dictionaryLabelCommonCharacters": "3,500 common characters",
"dictionaryLabelHiragana": "Hiragana",
"dictionaryLabelKatakana": "Katakana",
"dictionaryGrade": "Grade {grade}",
"@dictionaryGrade": {"placeholders": {"grade": {"type": "int"}}},
"dictionaryLabelSecondary": "Secondary school",
"dictionaryGroupKana": "Kana",
"dictionaryGroupJlpt": "JLPT levels",
"dictionaryGroupGrades": "School grades",
"dictionaryStrokes": "{count, plural, =1{1 stroke} other{{count} strokes}}",
"@dictionaryStrokes": {"placeholders": {"count": {"type": "int"}}},
"dictionaryTabRadicals": "Radicals",
"dictionaryRadicalsHint": "The 214 radicals that dictionaries order kanji by, grouped by their strokes. Choose one for the kanji written with it.",
"dictionaryAllRadicals": "All radicals",
"dictionaryRadicalNumber": "Radical {number}",
"@dictionaryRadicalNumber": {"placeholders": {"number": {"type": "int"}}},
"dictionaryRadicalKanjiCount": "{count} kanji",
"@dictionaryRadicalKanjiCount": {"placeholders": {"count": {"type": "int"}}},
"dictionaryRadicalNone": "The instance's dictionary has no kanji under this radical yet.",
"dictionaryCharacterLevelsHint": "Every character of a level becomes a flashcard, in the order of the level's list, tagged with its level, school grade or script. Characters already in this studyset are left out.",
"dictionaryAddCharacters": "{count, plural, =1{Add 1 character} other{Add {count} characters}}",
"@dictionaryAddCharacters": {"placeholders": {"count": {"type": "int"}}},
"dictionaryCharactersAdded": "{count, plural, =0{No new characters.} =1{Added 1 character.} other{Added {count} characters.}}",
"@dictionaryCharactersAdded": {"placeholders": {"count": {"type": "int"}}},
"dictionaryConfirmCharactersTitle": "Add {count} characters?",
"@dictionaryConfirmCharactersTitle": {"placeholders": {"count": {"type": "int"}}},
"dictionaryCharacterCredits": "Characters from {sources}.",
"@dictionaryCharacterCredits": {"placeholders": {"sources": {"type": "String"}}},
"dictionaryUpdatesBehind": "{count, plural, =1{1 card is behind the dictionary: its entry was corrected since it was made.} other{{count} cards are behind the dictionary: their entries were corrected since they were made.}}",
"@dictionaryUpdatesBehind": {"placeholders": {"count": {"type": "int"}}},
"dictionaryUpdatesTake": "Take the corrections",
"dictionaryUpdatesTaken": "{count, plural, =1{1 card updated.} other{{count} cards updated.}}",
"@dictionaryUpdatesTaken": {"placeholders": {"count": {"type": "int"}}},
"dictionaryUpdatesToSettle": "{count, plural, =1{One has a change of yours there too: open it to choose.} other{{count} have a change of yours there too: open them to choose.}}",
"@dictionaryUpdatesToSettle": {"placeholders": {"count": {"type": "int"}}},
"dictionaryUpdatesFailed": "Couldn't take the corrections. Try again.",
"kanjiStrokeOrder": "Stroke order",
"kanjiPlayAgain": "Play again",
"kanjiNoStrokes": "There's no stroke order for this character.",
"kanjiComponents": "Components",
"studySettingsCharacters": "Characters",
"studySettingsWriteByHand": "Write by hand",
"studySettingsWriteByHandDescription": "Kanji, hanzi, Hanja, kana, Hangul and words written with them are written stroke by stroke and checked as you go, on a schedule of their own (a Korean word letter by letter). Words written aren't quizzed or typed.",
"writingHint": "Hint",
"writingShow": "Show it",
"writingMistakes": "{count, plural, =0{No mistakes} =1{1 mistake} other{{count} mistakes}}",
"@writingMistakes": {"placeholders": {"count": {"type": "int"}}},
"writingWrongOrder": "Not yet: that stroke comes later.",
"writingWrong": "That isn't the next stroke.",
"writingSuggested": "{rating} suggested",
"@writingSuggested": {"placeholders": {"rating": {"type": "String"}}},
"writingNoStrokes": "There's no stroke order for these characters: rate how well you knew them.",
"aboutDictionaries": "Dictionaries on this instance",
"aboutAppData": "Data in the app",
"cardReportTitle": "Report an error",
"cardReportSubtitle": "Flag this card so you can find and fix it later.",
"cardReportTypo": "Typo",
"cardReportGrammar": "Grammar",
"cardReportContent": "Content",
"cardReportOther": "Other",
"cardReportNote": "Note",
"cardReportNoteHint": "What needs fixing?",
"cardReportSubmit": "Report",
"cardReported": "Flagged for fixing",
"cardResolveReport": "Resolve report",
"cardReportResolved": "Report resolved",
"cardBuriedBadge": "Buried",
"cardUnbury": "Unbury",
"cardTileBuried": "Flashcard buried until tomorrow",
"cardTileUnburied": "Flashcard unburied",
"cardDeleteTitle": "Delete flashcard?",
"cardDeleteMessage": "This flashcard will be removed from the studyset. You can undo this for a few seconds.",
"cardDeleted": "Flashcard deleted",
"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",
"composerKindCharacter": "Character",
"composerLabelFront": "Front",
"composerLabelQuestion": "Question",
"composerLabelExpression": "Expression",
"composerLabelPrompt": "Prompt",
"composerLabelCharacter": "Character",
"composerLabelBack": "Back",
"composerLabelAnswers": "Answers",
"composerLabelAnswer": "Answer",
"composerPlaceholderFront": "Add question",
"composerPlaceholderExpression": "Add expression",
"composerPlaceholderPrompt": "Add prompt",
"composerPlaceholderCharacter": "Add a kanji or kana",
"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 in two ways at once: on two of your devices, or by you and by a correction from the dictionary or a new release of what it was copied from. 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",
"formatRuby": "Text above (a pronunciation, a translation)",
"formatRubyFurigana": "Furigana (a reading above the text)",
"formatRubyPinyin": "Pinyin (above the characters)",
"formatLink": "Link",
"linkTitle": "Link",
"linkText": "Text",
"linkAddress": "Address",
"linkAddressHint": "https://…",
"linkSave": "Save",
"linkRemove": "Remove link",
"rubyTitle": "Text above",
"rubyTitleFurigana": "Furigana",
"rubyTitlePinyin": "Pinyin",
"rubyText": "Text",
"rubyHint": "e.g. a pronunciation or a translation",
"rubyReading": "Reading",
"rubyReadingHint": "In kana, e.g. かんじ",
"rubyHintPinyin": "With tone marks, e.g. hànzì",
"rubySave": "Save",
"rubyRemove": "Remove",
"vocabularyReading": "Reading",
"vocabularyReadingHint": "Kana reading",
"vocabularyMeanings": "Meanings",
"vocabularyPrimaryMeaningHint": "Primary meaning",
"vocabularyMeaningHint": "Meaning",
"vocabularyAddMeaning": "Add meaning",
"vocabularyRemoveMeaning": "Remove meaning",
"vocabularyGlossHint": "Translation",
"vocabularyAddGloss": "Add translation",
"vocabularyRemoveGloss": "Remove translation",
"vocabularyAddSense": "Add sense",
"vocabularyRemoveSense": "Remove sense",
"characterPrimaryMeaningHint": "Primary meaning, or a kana's romaji",
"characterOnReadings": "On readings",
"characterOnReadingsHint": "From Chinese, in katakana: ショク、ジキ",
"characterKunReadings": "Kun readings",
"characterKunReadingsHint": "Japanese, in hiragana, okurigana after a dot: た.べる",
"characterOn": "On",
"characterKun": "Kun",
"characterPinyin": "Pinyin",
"characterEum": "Eum",
"characterHun": "Hun",
"characterPinyinReadings": "Pinyin",
"characterPinyinReadingsHint": "With tone marks or numbers: shuǐ, shui3",
"characterEumReadings": "Sounds (eum)",
"characterEumReadingsHint": "Sino-Korean, in Hangul: 수",
"characterHunReadings": "Native meanings (hun)",
"characterHunReadingsHint": "Korean words for its meaning, in Hangul: 물",
"characterPrimaryMeaningHintLetter": "Primary meaning, or a letter's sound",
"composerPlaceholderCharacterChinese": "Add a character",
"composerPlaceholderCharacterKorean": "Add a Hanja or Hangul letter",
"composerPlaceholderCharacterGreek": "Add a letter",
"vocabularyReadingHintPinyin": "Pinyin, with tone marks or numbers",
"vocabularyReadingHintPronunciation": "Pronunciation, where it differs from the spelling",
"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",
"studyReviewsDueTitle": "You have reviews due",
"studyReviewsDueBody": "{reviews, plural, =1{1 card is} other{{reviews} cards are}} due for review. Learning {news, plural, =1{1 new card} other{{news} new cards}} now will add to your review load.",
"@studyReviewsDueBody": {"placeholders": {"reviews": {"type": "int"}, "news": {"type": "int"}}},
"studyReviewsDueAllTagsNote": "“Review first” studies the whole backlog across every tag — your tag filter doesn't apply until it's clear.",
"studyReviewFirst": "Review first",
"studyLearnAnyway": "Learn anyway",
"studySettingsTagFilterPausedForBacklog": "This session is clearing your review backlog across every tag, so these tags aren't narrowing it. They apply again to your next session.",
"studyBuryCard": "Bury until tomorrow",
"studyCardBuried": "Card buried until tomorrow",
"studyUndo": "Undo",
"studyLockScreen": "Lock screen",
"studyUnlock": "Unlock",
"studyTapToUnlock": "Tap to unlock",
"studyLoadFailed": "Couldn't read this session.",
"studyRatingFailed": "Couldn't keep your rating. Rate the card again.",
"studyRetry": "Retry",
"studyScopeTitle": "Study scope",
"studyScopeDescription": "This studyset has sub-studysets. Pick which cards to review.",
"studyScopeEverythingTitle": "Everything",
"studyScopeEverythingSubtitle": "This studyset and all sub-studysets",
"studyScopeSelfTitle": "This studyset only",
"studyScopeSelfSubtitle": "Skip cards in sub-studysets",
"studyBackFirstOn": "Showing the back of cards first: tap to revert",
"studyBackFirstOff": "Show the back of cards first",
"studyShowAnswer": "Show answer",
"studyCheck": "Check",
"studyComesBackIn": "{count, plural, =1{in 1 card} other{in {count} cards}}",
"@studyComesBackIn": {"placeholders": {"count": {"type": "int"}}},
"studyComesBackAtEnd": "at the end",
"studyComesBackNow": "now",
"studySelectAll": "Select all that apply",
"studySelectOne": "Select the correct answer",
"studyMatchingInstructions": "DRAG AND DROP ONTO CARDS ABOVE",
"studyMatchingAllPlaced": "All placed",
"studyMatchingDropHere": "Drop here",
"studyMapTapPrompt": "Tap a region to answer",
"studyMapSelected": "Selected: {label}",
"@studyMapSelected": {"placeholders": {"label": {"type": "String"}}},
"studyCorrect": "Correct",
"studyCorrectLabel": "Correct — {label}",
"@studyCorrectLabel": {"placeholders": {"label": {"type": "String"}}},
"studyMapAnswer": "Answer: {answer}",
"@studyMapAnswer": {"placeholders": {"answer": {"type": "String"}}},
"studyMapPickedAnswer": "You picked {picked} · Answer: {answer}",
"@studyMapPickedAnswer": {"placeholders": {"picked": {"type": "String"}, "answer": {"type": "String"}}},
"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",
"studySessionComplete": "Session complete",
"studyProgressReviewed": "{reviewed} / {total} reviewed",
"@studyProgressReviewed": {"placeholders": {"reviewed": {"type": "int"}, "total": {"type": "int"}}},
"studyReviewedCount": "{reviewed} reviewed",
"@studyReviewedCount": {"placeholders": {"reviewed": {"type": "int"}}},
"studyStatCards": "Cards",
"studyStatAccuracy": "Accuracy",
"studyStatTime": "Time",
"studyDurationSec": "{sec} sec",
"@studyDurationSec": {"placeholders": {"sec": {"type": "int"}}},
"studyDurationMin": "{min} min",
"@studyDurationMin": {"placeholders": {"min": {"type": "int"}}},
"studyDurationMinSec": "{min} min {sec} sec",
"@studyDurationMinSec": {"placeholders": {"min": {"type": "int"}, "sec": {"type": "int"}}},
"studyLeaveTitle": "Leave this study session?",
"studyLeaveRated": "{count, plural, =1{Your ratings so far are saved, but the last card in this round will be discarded if you leave now.} other{Your ratings so far are saved, but the {count} cards still left in this round will be discarded if you leave now.}}",
"@studyLeaveRated": {"placeholders": {"count": {"type": "int"}}},
"studyLeaveUnrated": "{count, plural, =1{You haven’t rated this card yet — leaving ends the session without recording any progress for this round.} other{You haven’t rated any of the {count} cards in this round yet — leaving ends the session without recording any progress for it.}}",
"@studyLeaveUnrated": {"placeholders": {"count": {"type": "int"}}},
"studyLeaveConfirm": "Leave",
"studyKeepStudying": "Keep studying",
"studyInMinutes": "{count, plural, =1{in 1 min} other{in {count} min}}",
"@studyInMinutes": {"placeholders": {"count": {"type": "int"}}},
"studyInHours": "{count, plural, =1{in 1 hour} other{in {count} hours}}",
"@studyInHours": {"placeholders": {"count": {"type": "int"}}},
"studyInDays": "{count, plural, =1{in 1 day} other{in {count} days}}",
"@studyInDays": {"placeholders": {"count": {"type": "int"}}},
"studyInMonths": "{count, plural, =1{in 1 month} other{in {count} months}}",
"@studyInMonths": {"placeholders": {"count": {"type": "int"}}},
"studyInYears": "{count, plural, =1{in 1 year} other{in {count} years}}",
"@studyInYears": {"placeholders": {"count": {"type": "int"}}},
"studyContinue": "Continue learning",
"studyPrevious": "Previous card",
"studySkipCard": "Skip card",
"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",
"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.",
"studySettingsVocabulary": "Vocabulary",
"studySettingsQuizMc": "Quiz with multiple choice",
"studySettingsQuizMcDescription": "Show vocabulary cards as a multiple-choice question, with wrong answers drawn from other vocabulary in this set.",
"studySettingsTypeReading": "Type the reading",
"studySettingsTypeReadingDescription": "Words with kanji ask for their reading, typed in kana (romaji turn into kana as you type); Chinese words for their pinyin (tone numbers turn into marks: ni3 becomes nǐ).",
"studyTypedHint": "The reading, in kana or romaji",
"studyTypedHintPinyin": "The pinyin, with tone numbers or marks",
"studyTypedRight": "Right",
"studyTypedWrong": "You typed {answer}",
"@studyTypedWrong": {"placeholders": {"answer": {"type": "String"}}},
"studyAspectMeaning": "Meaning",
"studyAspectReading": "Reading",
"studyAspectExpression": "Expression",
"studyAspectMixed": "Mixed",
"studySettingsAspectDescription": "What to recall — the meaning, the reading (kana, pinyin), or the expression itself (shown the meaning). Mixed varies meaning and reading per card; cards that can’t be quizzed stay a normal flip.",
"studySortOldestFirst": "Oldest first",
"studySortRandom": "Random",
"studySortNewestFirst": "Newest first",
"studyLimitNewPerDay": "Limit new cards per day",
"studyLimitReviewsPerDay": "Limit reviews per day",
"studysetMenuReset": "Reset progress",
"studysetResetTitle": "Reset progress?",
"studysetResetMessage": "What you choose starts afresh, in it and in the studysets inside it, on all your devices. Your study history stays. You can undo this for a few seconds.",
"studysetResetCards": "Flashcards",
"studysetResetCardsDetail": "{count, plural, =1{1 flashcard starts again as new} other{{count} flashcards start again as new}}",
"@studysetResetCardsDetail": {"placeholders": {"count": {"type": "int"}}},
"studysetResetPdfs": "Reading of PDFs",
"studysetResetPdfsDetail": "{count, plural, =1{1 PDF is read from its first page again} other{{count} PDFs are read from their first page again}}",
"@studysetResetPdfsDetail": {"placeholders": {"count": {"type": "int"}}},
"studysetResetPaths": "Learning paths",
"studysetResetPathsDetail": "{count, plural, =1{1 learning path starts from its first step again} other{{count} learning paths start from their first step again}}",
"@studysetResetPathsDetail": {"placeholders": {"count": {"type": "int"}}},
"studysetResetNothing": "Nothing in it has progress yet.",
"studysetResetConfirm": "Reset",
"studysetResetDone": "Progress reset",
"mapUnknown": "This map needs a newer version of the app.",
"mapPickRegion": "Choose a part of the map, then tap the region that answers the question. Tiny places have a ring; where rings crowd, zoom in.",
"mapNonePicked": "No region picked yet",
"mapPickTitle": "Pick the region",
"mapNameJapan": "Japan",
"mapNameWorld": "World",
"mapPrefectures": "Prefectures",
"mapZoomNote": "Ctrl + scroll to zoom",
"mapZoomNoteMac": "⌘ + scroll to zoom",
"mapGroupHokkaido": "Hokkaidō",
"mapGroupTohoku": "Tōhoku",
"mapGroupKanto": "Kantō",
"mapGroupChubu": "Chūbu",
"mapGroupKansai": "Kansai",
"mapGroupChugoku": "Chūgoku",
"mapGroupShikoku": "Shikoku",
"mapGroupKyushu": "Kyūshū",
"mapGroupOkinawa": "Okinawa",
"mapGroupEurope": "Europe",
"mapGroupAfrica": "Africa",
"mapGroupWestAsia": "Western Asia",
"mapGroupSouthAsia": "Central and South Asia",
"mapGroupEastAsia": "East Asia",
"mapGroupSoutheastAsia": "Southeast Asia",
"mapGroupNorthAmerica": "North America",
"mapGroupCentralAmerica": "Central America and the Caribbean",
"mapGroupSouthAmerica": "South America",
"mapGroupOceania": "Oceania",
"composerPlaceholderQuestion": "Add question",
"composerLabelRegion": "Answer",
"composerRegionPick": "Tap to pick the region on the map",
"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",
"homeAllHiddenBody": "Bring some back to fill your dashboard.",
"homeCustomise": "Customise",
"homeWidgetGoal": "Daily 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",
"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, =1{1 activity} other{{count} activities}} · {date}",
"@heatmapDay": {"placeholders": {"count": {"type": "int"}, "date": {"type": "String"}}},
"commonCancel": "Cancel",
"commonSave": "Save",
"commonClose": "Close",
"moreInfo": "More info",
"moreInfoCreated": "Created",
"moreInfoModified": "Last modified",
"moreInfoItemId": "Item ID",
"moreInfoStudysetId": "Studyset ID",
"moreInfoPdfId": "PDF source ID",
"moreInfoParentId": "Parent ID",
"moreInfoFile": "File",
"moreInfoReviews": "Reviews",
"moreInfoReviewCount": "Review count",
"moreInfoLastReviewed": "Last reviewed",
"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.",
"studysetBackToLibrary": "Back to library",
"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"}
}
},
"fileAfterCreate": "Pictures and sounds can be added once the studyset is made.",
"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",
"filesSortCustom": "Custom order",
"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": "PDF 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.",
"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",
"cardBrowserTitle": "Flashcards",
"cardBrowserTitleWithName": "{title} — flashcards",
"@cardBrowserTitleWithName": {"placeholders": {"title": {"type": "String"}}},
"cardBrowserWithSubstudysets": "With its sub-studysets",
"cardBrowserBrowse": "Browse",
"cardBrowserBrowseTooltip": "Browse flashcards",
"cardBrowserStudy": "Study",
"cardBrowserEditor": "Editor",
"cardBrowserMore": "More",
"cardBrowserImport": "Import flashcards",
"cardBrowserGrid": "Grid",
"cardBrowserDetail": "Detail",
"cardBrowserSearch": "Search",
"cardBrowserSort": "Sort",
"cardBrowserFilter": "Filter",
"cardBrowserSelect": "Select",
"cardBrowserSortManual": "Manual order",
"cardBrowserSortNewest": "Newest first",
"cardBrowserSortOldest": "Oldest first",
"cardBrowserSortAlphabetical": "A–Z (front)",
"cardBrowserSortDue": "Due first",
"cardBrowserSearchHint": "Search flashcards",
"cardBrowserCloseSearch": "Close search",
"cardBrowserClearQuery": "Clear query",
"cardBrowserFilterTitle": "Filter flashcards",
"cardBrowserFilterType": "Type",
"cardBrowserTypeAll": "All cards",
"cardBrowserTypeFrontBack": "Q&A only",
"cardBrowserTypeMultipleChoice": "Multiple-choice only",
"cardBrowserTypeVocabulary": "Words only",
"cardBrowserTypeMatching": "Matching only",
"cardBrowserTypeMap": "Maps only",
"cardBrowserTypeCharacter": "Characters only",
"cardBrowserFilterTag": "Tag",
"cardBrowserAllTags": "All tags",
"cardBrowserFilterStatus": "Status",
"cardBrowserStatusNew": "New",
"cardBrowserStatusLearning": "Learning",
"cardBrowserStatusDue": "Due",
"cardBrowserStatusBuried": "Buried",
"cardBrowserStatusReported": "Reported",
"cardBrowserClearAll": "Clear all",
"cardBrowserApply": "Apply",
"cardBrowserEmptyTitle": "No flashcards yet",
"cardBrowserEmptyHint": "Create some to browse them here.",
"cardBrowserCreate": "Create flashcards",
"cardBrowserNoMatches": "No flashcards match",
"cardBrowserNoMatchesHint": "Try a different search or filter.",
"cardBrowserClearFilters": "Clear search & filters",
"cardBrowserRetry": "Retry",
"cardBrowserPrevious": "Previous",
"cardBrowserNext": "Next",
"cardBrowserBuried": "Buried",
"cardBrowserSelectAll": "Select all",
"cardBrowserDeselectAll": "Deselect all",
"cardBrowserSelected": "{count} selected",
"@cardBrowserSelected": {"placeholders": {"count": {"type": "int"}}},
"cardBrowserRangeHintTouch": "Long-press another card to select everything in between.",
"cardBrowserRangeHintPointer": "Shift-click another card to select everything in between.",
"cardBrowserMove": "Move",
"cardBrowserAddTags": "Add tags",
"cardBrowserRemoveTags": "Remove tags",
"cardBrowserResetProgress": "Reset progress",
"cardBrowserDelete": "Delete",
"cardBrowserMoreActions": "More actions",
"cardBrowserDone": "Done",
"cardBrowserDeleted": "{count, plural, =1{1 flashcard deleted} other{{count} flashcards deleted}}",
"@cardBrowserDeleted": {"placeholders": {"count": {"type": "int"}}},
"cardBrowserMoveTitle": "{count, plural, =1{Move 1 flashcard to} other{Move {count} flashcards to}}",
"@cardBrowserMoveTitle": {"placeholders": {"count": {"type": "int"}}},
"cardBrowserMoved": "{count, plural, =1{Moved 1 flashcard to “{title}”} other{Moved {count} flashcards to “{title}”}}",
"@cardBrowserMoved": {"placeholders": {"count": {"type": "int"}, "title": {"type": "String"}}},
"cardBrowserAddTagsTitle": "{count, plural, =1{Add tags to 1 flashcard} other{Add tags to {count} flashcards}}",
"@cardBrowserAddTagsTitle": {"placeholders": {"count": {"type": "int"}}},
"cardBrowserAddTo": "{count, plural, =1{Add to 1 flashcard} other{Add to {count} flashcards}}",
"@cardBrowserAddTo": {"placeholders": {"count": {"type": "int"}}},
"cardBrowserRemoveTagsTitle": "{count, plural, =1{Remove tags from 1 flashcard} other{Remove tags from {count} flashcards}}",
"@cardBrowserRemoveTagsTitle": {"placeholders": {"count": {"type": "int"}}},
"cardBrowserRemoveFrom": "{count, plural, =1{Remove from 1 flashcard} other{Remove from {count} flashcards}}",
"@cardBrowserRemoveFrom": {"placeholders": {"count": {"type": "int"}}},
"cardBrowserNoTags": "No tags yet. Create tags from a flashcard's editor, then apply them here.",
"cardBrowserNoTagsOnCards": "The flashcards chosen have no tags.",
"cardBrowserTagsAdded": "{tags, plural, =1{Added 1 tag to {count, plural, =1{1 flashcard} other{{count} flashcards}}} other{Added {tags} tags to {count, plural, =1{1 flashcard} other{{count} flashcards}}}}",
"@cardBrowserTagsAdded": {"placeholders": {"tags": {"type": "int"}, "count": {"type": "int"}}},
"cardBrowserTagsRemoved": "{tags, plural, =1{Removed 1 tag from {count, plural, =1{1 flashcard} other{{count} flashcards}}} other{Removed {tags} tags from {count, plural, =1{1 flashcard} other{{count} flashcards}}}}",
"@cardBrowserTagsRemoved": {"placeholders": {"tags": {"type": "int"}, "count": {"type": "int"}}},
"cardBrowserResetTitle": "{count, plural, =1{Start 1 flashcard afresh?} other{Start {count} flashcards afresh?}}",
"@cardBrowserResetTitle": {"placeholders": {"count": {"type": "int"}}},
"cardBrowserResetMessage": "They count as new again. Their reviews stay in your history and streaks.",
"cardBrowserResetConfirm": "Reset",
"cardBrowserReset": "{count, plural, =1{1 flashcard starts afresh} other{{count} flashcards start afresh}}",
"@cardBrowserReset": {"placeholders": {"count": {"type": "int"}}},
"studysetShare": "Share",
"studysetSharePrivate": "Share: private",
"studysetSharePublished": "Share: published",
"publishTitle": "Publish",
"publishPrivate": "Not published · only you see it in Learn",
"publishPublished": "Published · v{version} · {date}",
"@publishPublished": {"placeholders": {"version": {"type": "int"}, "date": {"type": "String"}}},
"publishIntro": "A release is this studyset with everything inside it, as it is now. Others can find it, learn from it and copy it. Each release stays as it was; later changes go into the next one.",
"publishAnonymous": "Sign in to have a public profile and publish.",
"publishName": "Name",
"publishNameHint": "japanese",
"publishLocation": "Found at {location}",
"@publishLocation": {"placeholders": {"location": {"type": "String"}}},
"publishNameFixed": "Fixed since you first published: others refer to it.",
"publishLicence": "Licence",
"publishLicenceNone": "None",
"publishLicenceOpen": "Allows publishing.",
"publishLicenceNoDerivatives": "Allows publishing as it is: learners keep their changes to themselves.",
"publishLicenceClosed": "Doesn't allow passing it on. Choose another under Edit.",
"publishLicenceNotOpen": "These studysets' licences don't allow passing them on: {titles}",
"@publishLicenceNotOpen": {"placeholders": {"titles": {"type": "String"}}},
"publishNotes": "What changed",
"publishNotesHint": "New in this release…",
"publishDescription": "Description on Explore",
"publishDescriptionAdd": "Add a description",
"publishDescriptionHelp": "What people see on Explore before adding it. It starts as the studyset’s own; the studyset keeps its own as it is.",
"publishReleases": "Releases",
"publishRelease": "v{version} · {date}",
"@publishRelease": {"placeholders": {"version": {"type": "int"}, "date": {"type": "String"}}},
"publishButton": "Publish v{version}",
"@publishButton": {"placeholders": {"version": {"type": "int"}}},
"publishNoProfile": "A release names you by your public profile. Make one first.",
"publishMakeProfile": "Make a public profile",
"publishConflicts": "These were changed differently on two devices. Settle them first:",
"publishConflictsElsewhere": "Some cards, notes or steps were changed differently on two devices. Sync, then try again.",
"publishUntitled": "Untitled",
"publishFilesMissing": "Some files haven't reached your instance yet. Try again in a moment.",
"publishNothingChanged": "Nothing has changed since the last release.",
"publishBusy": "This studyset is being published already. Try again in a moment.",
"publishSlugInvalid": "Lower-case letters, digits and hyphens, starting with a letter or digit.",
"publishSlugTaken": "Another of your studysets has this name.",
"publishNotesTooLong": "At most 5,000 characters.",
"publishDone": "Published v{version}.",
"@publishDone": {"placeholders": {"version": {"type": "int"}}},
"publishFailed": "Couldn't reach your instance. Nothing was published.",
"publishUnreachable": "Publishing can't be reached right now.",
"publishRetry": "Retry",
"publishCopyLocation": "Copy address",
"publishLocationCopied": "Address copied.",
"publishedField": "Release",
"publishedVersion": "v{version}",
"@publishedVersion": {"placeholders": {"version": {"type": "int"}}},
"exploreSearch": "Search titles and authors",
"exploreLanguages": "Languages",
"exploreAnyLanguage": "Any",
"exploreLanguagePair": "{front} → {back}",
"@exploreLanguagePair": {"placeholders": {"front": {"type": "String"}, "back": {"type": "String"}}},
"exploreKinds": "Content",
"exploreKindsChosen": "{count, plural, =1{1 kind of content} other{{count} kinds of content}}",
"@exploreKindsChosen": {"placeholders": {"count": {"type": "int"}}},
"exploreKindCards": "Flashcards",
"exploreKindNotes": "Notes",
"exploreKindPaths": "Learning paths",
"exploreKindPdfs": "PDFs",
"exploreKindsIntro": "Only studysets holding each of these.",
"exploreClearFilters": "Clear filters",
"exploreNothingMatches": "Nothing published here matches.",
"exploreBy": "by {author}",
"@exploreBy": {"placeholders": {"author": {"type": "String"}}},
"exploreRelease": "v{version} · {date}",
"@exploreRelease": {"placeholders": {"version": {"type": "int"}, "date": {"type": "String"}}},
"exploreMaterial": "Material",
"exploreLatestRelease": "Latest release: v{version} · {date}",
"@exploreLatestRelease": {"placeholders": {"version": {"type": "int"}, "date": {"type": "String"}}},
"exploreAddToLibrary": "Add to library",
"exploreAdd": "Add",
"exploreInLibraryShort": "In library",
"exploreInLibrary": "In your library",
"exploreYours": "Yours",
"exploreAddCopyAnyway": "Add a copy anyway",
"explorePercent": "{percent} %",
"@explorePercent": {"placeholders": {"percent": {"type": "int"}}},
"exploreAdded": "Added to your library.",
"exploreOpen": "Open",
"exploreNeedsNewerApp": "This studyset needs a newer version of the app.",
"exploreFailed": "Couldn't reach your instance. Try again.",
"exploreNotGivenOut": "Your instance couldn't give out this studyset. Try again later.",
"exploreNotWritten": "Couldn't add it to your library on this device.",
"exploreUnreachable": "Explore can't be reached right now.",
"exploreRetry": "Retry",
"exploreMore": "Show more",
"exploreNoDescription": "No description.",
"exploreReadLicence": "Read the licence",
"publishWithdraw": "Take off Explore",
"publishWithdrawTitle": "Take it off Explore?",
"publishWithdrawMessage": "Nobody can add it any more, and copies get no updates. Its releases stay as they are; publishing it again brings it back.",
"publishWithdrawn": "Withdrawn · copies get no updates",
"publishWithdrawnDone": "Taken off Explore.",
"copyUpdateOut": "v{version} is out: {summary}.",
"@copyUpdateOut": {"placeholders": {"version": {"type": "int"}, "summary": {"type": "String"}}},
"copyUpdateChanged": "{count} changed",
"@copyUpdateChanged": {"placeholders": {"count": {"type": "int"}}},
"copyUpdateAdded": "{count} new",
"@copyUpdateAdded": {"placeholders": {"count": {"type": "int"}}},
"copyUpdateWithdrawn": "{count} withdrawn",
"@copyUpdateWithdrawn": {"placeholders": {"count": {"type": "int"}}},
"copyUpdateNothing": "nothing in your copy changes",
"copyUpdate": "Update",
"copyUpdated": "Updated to v{version}.",
"@copyUpdated": {"placeholders": {"version": {"type": "int"}}},
"copyUpdatedToSettle": "{count, plural, =1{One has a change of yours there too: open it to choose.} other{{count} have a change of yours there too: open them to choose.}}",
"@copyUpdatedToSettle": {"placeholders": {"count": {"type": "int"}}},
"copyUpdateFailed": "Couldn't reach your instance. Try again.",
"cardBrowserStatusWithdrawn": "Withdrawn by the author",
"settingsPrivacy": "Privacy",
"settingsCountLearning": "Count my learning in Explore",
"settingsCountLearningSubtitle": "Explore shows how many people on this instance learn a published studyset: those with an identity who chose this and studied it on 3 or more days in the last 30, rounded, from 5 on. Nothing about you is shown, and nothing leaves the instance.",
"exploreLearners": "{count}+ learn this here",
"@exploreLearners": {"placeholders": {"count": {"type": "int"}}},
"publishLearnersFew": "Fewer than 5 learn it here, of those who chose to be counted.",
"publishForkForbidden": "Its original forbids passing on adaptations: only its author publishes it.",
"publishLicenseMustStay": "Its original asks adaptations to stay under {license}: choose it under Edit, for every studyset in it.",
"@publishLicenseMustStay": {"placeholders": {"license": {"type": "String"}}},
"exploreBasedOn": "based on {location}",
"@exploreBasedOn": {"placeholders": {"location": {"type": "String"}}},
"feedbackReport": "Report",
"feedbackSuggestion": "Suggestion",
"feedbackOnStudyset": "On the studyset",
"feedbackOnCard": "On a flashcard",
"feedbackOnNote": "On a note",
"feedbackOnStep": "On a step",
"feedbackByOn": "{name} · {date}",
"@feedbackByOn": {"placeholders": {"name": {"type": "String"}, "date": {"type": "String"}}},
"feedbackStatusClosed": "Closed",
"feedbackStatusAccepted": "Accepted",
"feedbackStatusDeclined": "Declined",
"feedbackStatusHidden": "Hidden",
"feedbackReplyHint": "Write a reply…",
"feedbackSend": "Send",
"feedbackAccept": "Accept",
"feedbackDecline": "Decline",
"feedbackClose": "Close",
"feedbackReopen": "Reopen",
"feedbackHide": "Hide",
"feedbackShow": "Show",
"feedbackBlock": "Block {name}",
"@feedbackBlock": {"placeholders": {"name": {"type": "String"}}},
"feedbackBlockTitle": "Block {name}?",
"@feedbackBlockTitle": {"placeholders": {"name": {"type": "String"}}},
"feedbackBlockMessage": "What they wrote on your studysets, and write, shows to nobody but them.",
"feedbackProposed": "Proposed",
"feedbackYours": "Yours now",
"feedbackAuthor": "Author",
"feedbackAccepted": "Taken into your studyset. The next release credits its writer.",
"feedbackDecided": "Done.",
"feedbackReplied": "Reply sent.",
"feedbackBlocked": "Blocked.",
"feedbackNotTaken": "This can't be taken: what it is about isn't in your studyset any more.",
"feedbackFailed": "Couldn't reach your instance. Try again.",
"feedbackUnreachable": "Reports and suggestions can't be reached right now.",
"feedbackRetry": "Retry",
"inboxTitle": "Inbox",
"inboxIntro": "Questions and answers, reports and suggestions on your published studysets, and those you wrote in.",
"inboxEmpty": "Nothing yet.",
"studysetFeedback": "Reports and suggestions",
"studysetFeedbackEmpty": "Nobody has reported or suggested anything yet.",
"reportToAuthor": "Report to the author",
"discussionsTitle": "Discussions",
"discussionsSearch": "Search questions",
"discussionsAsk": "Ask a question",
"discussionsEmpty": "No questions yet",
"discussionsEmptyHint": "Ask the first: about the studyset, a topic or one of its flashcards.",
"discussionsNoMatch": "No question's title says that.",
"discussionsMore": "Show more",
"discussionsUnreachable": "The discussions can't be reached right now.",
"discussionsAnswers": "{count, plural, =0{No answers} =1{1 answer} other{{count} answers}}",
"@discussionsAnswers": {"placeholders": {"count": {"type": "int"}}},
"discussionsBy": "{name} · {date}",
"@discussionsBy": {"placeholders": {"name": {"type": "String"}, "date": {"type": "String"}}},
"discussionsSomeone": "Someone",
"discussionsDeletedQuestion": "Deleted question",
"discussionsHidden": "Hidden",
"discussionsAboutCard": "About a flashcard",
"discussionsAboutNote": "About a note",
"discussionsAboutStep": "About a step",
"discussionsAccepted": "Accepted",
"discussionsOn": "On {title}",
"@discussionsOn": {"placeholders": {"title": {"type": "String"}}},
"discussionRefusalNoIdentity": "To ask and answer, sign in with an identity in Profile: posts show who wrote them.",
"discussionRefusalNoProfile": "To ask and answer, make a public profile in Profile: posts show who wrote them.",
"discussionRefusalBlocked": "The author of this studyset keeps you from writing on their studysets.",
"discussionRefusalWithdrawn": "The author took this studyset off Explore: what is here stays, but nothing new is asked.",
"discussionRefusalNotInRelease": "That isn't in the studyset's release any more.",
"discussionRefusalEmpty": "Write something first.",
"discussionRefusalTooLong": "That's longer than allowed.",
"discussionRefusalTooMany": "You've written a lot in the last hour. Try again a little later.",
"discussionRefusalWithFiles": "Images and sounds can't be posted: your files are yours alone, so nobody else would see them.",
"discussionFailed": "Couldn't reach the instance. Try again once you are online.",
"discussionTitle": "Question",
"discussionMissing": "This question isn't there any more.",
"discussionDeleted": "This was deleted.",
"discussionEdited": "edited",
"discussionWriteAnswer": "Write an answer",
"discussionYourAnswer": "Your answer",
"discussionEditHeading": "Edit",
"discussionTitleField": "Title",
"discussionTitleHint": "What do you want to know?",
"discussionPost": "Post",
"discussionComment": "Add a comment",
"discussionCommentHint": "A short remark",
"discussionAccept": "Accept",
"discussionUnaccept": "Take back",
"discussionMenu": "More",
"discussionMenuEdit": "Edit",
"discussionMenuDelete": "Delete",
"discussionMenuHide": "Hide",
"discussionMenuShow": "Show again",
"discussionMenuBlock": "Block {name}",
"@discussionMenuBlock": {"placeholders": {"name": {"type": "String"}}},
"discussionDeleteTitle": "Delete this?",
"discussionDeleteBody": "What others replied under it stays, without your text and name.",
"discussionAnswered": "Answer posted.",
"discussionCommented": "Comment posted.",
"discussionSaved": "Saved.",
"discussionDeletedDone": "Deleted.",
"discussionAcceptedDone": "Answer accepted.",
"discussionUnacceptedDone": "No answer accepted now.",
"discussionHiddenDone": "Hidden: only its writer and you see it.",
"discussionShownDone": "Shown again.",
"discussionBlockedDone": "Blocked: what they write on your studysets shows to them alone.",
"discussionAskAbout": "Ask about this",
"inboxDiscussions": "Discussions",
"inboxFeedback": "Reports and suggestions",
"inboxDiscussionsEmpty": "No discussions yet.",
"cardReportToAuthor": "Send to the author too",
"cardReportToAuthorHint": "Public: everyone learning it reads it, with your public profile.",
"feedbackReportSent": "Sent to the author.",
"suggestToAuthor": "Suggest to the author",
"suggestHint": "What it changes, and why",
"suggestIntro": "The author sees it as you have it now, beside theirs. Public: everyone learning it reads it, with your public profile.",
"suggestSent": "Suggestion sent.",
"suggestNoDerivatives": "Its licence forbids adaptations: no suggestions.",
"feedbackNeedsIdentity": "Sign in to report to the author and suggest.",
"kanjiExampleWords": "Words with it",
"settingsAssistant": "Web search",
"settingsAskAssistant": "Search the web from the app",
"settingsAskAssistantSubtitle": "Off unless you turn it on. Adds a field on Home and a button in the Library, on a studyset and while studying. A question opens as a web search, with only the parts of a card you choose; nothing is sent from here.",
"assistantOpen": "Search the web",
"assistantClose": "Close",
"assistantLineFront": "Front: {text}",
"@assistantLineFront": {"description": "A line of context handed to the AI assistant after the question.", "placeholders": {"text": {"type": "String"}}},
"assistantLineBack": "Back: {text}",
"@assistantLineBack": {"placeholders": {"text": {"type": "String"}}},
"assistantLineHint": "Hint {number}: {text}",
"@assistantLineHint": {"placeholders": {"number": {"type": "int"}, "text": {"type": "String"}}},
"assistantLineExplanation": "Explanation: {text}",
"@assistantLineExplanation": {"placeholders": {"text": {"type": "String"}}},
"assistantLineDescription": "Description: {text}",
"@assistantLineDescription": {"placeholders": {"text": {"type": "String"}}},
"assistantChipStudyset": "Studyset: {title}",
"@assistantChipStudyset": {"placeholders": {"title": {"type": "String"}}},
"assistantHintWeb": "Search the web…",
"assistantSendWeb": "Search",
"assistantSearchFailed": "The search couldn't be opened.",
"settingsSearchEngine": "Search engine",
"searchEngineDevice": "The device's search",
"searchEngineCustom": "Your own address",
"searchEngineCustomHint": "https://example.org/search?q=%s",
"searchEngineCustomInvalid": "An http or https address with %s where the question goes.",
"searchEngineCustomSave": "Use",
"studysetPartMaterial": "Material",
"studysetPartProgress": "Progress",
"studysetPartPlan": "Study plan",
"progressLearned": "Learned",
"progressLearnedInfo": "Cards you will remember for three weeks or more.",
"progressOfStudyset": "of this studyset",
"progressCardsLearned": "{count, plural, =1{{learned} of 1 card} other{{learned} of {count} cards}}",
"@progressCardsLearned": {"placeholders": {"learned": {"type": "int"}, "count": {"type": "int"}}},
"progressToReview": "To review",
"progressToReviewInfo": "Cards studied before that are due again today.",
"progressDueToday": "{count, plural, =1{card due today} other{cards due today}}",
"@progressDueToday": {"placeholders": {"count": {"type": "int"}}},
"progressStudyTime": "Study time",
"progressStudyTimeInfo": "How long you studied this studyset's flashcards in the last seven days, each card counted for at most a minute.",
"progressThisWeek": "this week",
"progressMinutes": "{minutes} min",
"@progressMinutes": {"placeholders": {"minutes": {"type": "int"}}},
"progressHoursMinutes": "{hours} h {minutes} min",
"@progressHoursMinutes": {"placeholders": {"hours": {"type": "int"}, "minutes": {"type": "int"}}},
"progressPathsInfo": "The steps of this studyset's learning paths, and its topics', that you have done.",
"progressStepsDone": "{total, plural, =1{of 1 step done} other{of {total} steps done}}",
"@progressStepsDone": {"placeholders": {"total": {"type": "int"}}},
"progressReading": "Reading",
"progressReadingInfo": "The PDFs of this studyset and its topics not read to their last page yet. Tap one to read on.",
"progressPdfPage": "Page {page} of {count}",
"@progressPdfPage": {"placeholders": {"page": {"type": "int"}, "count": {"type": "int"}}},
"progressPdfNotBegun": "Not begun yet",
"progressPdfsAllRead": "{count, plural, =1{The PDF is read to its end.} other{All {count} PDFs are read to their end.}}",
"@progressPdfsAllRead": {"placeholders": {"count": {"type": "int"}}},
"progressShowAllPdfs": "Show all {count}",
"@progressShowAllPdfs": {"placeholders": {"count": {"type": "int"}}},
"progressShowFewerPdfs": "Show fewer",
"planPathsDone": "{count, plural, =1{{done} of 1 path finished} other{{done} of {count} paths finished}}",
"@planPathsDone": {"placeholders": {"done": {"type": "int"}, "count": {"type": "int"}}},
"planNoPaths": "No learning paths yet",
"planNextUp": "Next up",
"planReview": "{count, plural, =1{Study 1 flashcard} other{Study {count} flashcards}}",
"@planReview": {"placeholders": {"count": {"type": "int"}}},
"planStudyForExam": "{count, plural, =1{Study 1 flashcard for {exam}} other{Study {count} flashcards for {exam}}}",
"@planStudyForExam": {"placeholders": {"count": {"type": "int"}, "exam": {"type": "String"}}},
"planContinue": "Continue “{title}”",
"@planContinue": {"placeholders": {"title": {"type": "String"}}},
"planStart": "Start “{title}”",
"@planStart": {"placeholders": {"title": {"type": "String"}}},
"planStepOf": "Step {number} of {total}",
"@planStepOf": {"placeholders": {"number": {"type": "int"}, "total": {"type": "int"}}},
"planStepOfTitled": "Step {number} of {total}: {title}",
"@planStepOfTitled": {"placeholders": {"number": {"type": "int"}, "total": {"type": "int"}, "title": {"type": "String"}}},
"planStepsDone": "{total, plural, =1{{done} of 1 step} other{{done} of {total} steps}}",
"@planStepsDone": {"placeholders": {"done": {"type": "int"}, "total": {"type": "int"}}},
"planNothing": "Nothing due right now.",
"planLearningPaths": "Learning paths",
"examPrepare": "Prepare for an exam",
"examPrepareHint": "Choose what it covers and its date, and get a pace that gets you there.",
"examChange": "Change the exam",
"examDaysLeft": "{count, plural, =0{Today, {date}} =1{Tomorrow, {date}} other{In {count} days, {date}}}",
"@examDaysLeft": {"placeholders": {"count": {"type": "int"}, "date": {"type": "String"}}},
"examPast": "It was on {date}",
"@examPast": {"placeholders": {"date": {"type": "String"}}},
"examPlanGone": "This exam plan is gone",
"examCardsStarted": "{total, plural, =1{{started} of 1 flashcard started} other{{started} of {total} flashcards started}}",
"@examCardsStarted": {"placeholders": {"started": {"type": "int"}, "total": {"type": "int"}}},
"examPagesRead": "{total, plural, =1{{read} of 1 page read} other{{read} of {total} pages read}}",
"@examPagesRead": {"placeholders": {"read": {"type": "int"}, "total": {"type": "int"}}},
"examPaceTitle": "Your pace",
"examPaceNew": "{count, plural, =1{1 new flashcard a day} other{{count} new flashcards a day}}",
"@examPaceNew": {"placeholders": {"count": {"type": "int"}}},
"examPaceSteps": "{count, plural, =1{1 step a week} other{{count} steps a week}}",
"@examPaceSteps": {"placeholders": {"count": {"type": "int"}}},
"examPacePages": "{count, plural, =1{1 page a day} other{{count} pages a day}}",
"@examPacePages": {"placeholders": {"count": {"type": "int"}}},
"examPaceDone": "Everything new is learnt: review until the exam.",
"examStudy": "Study for the exam",
"examSheetHelp": "Choose what the exam covers and when it is. Everything new is then spread so that it is learnt a week before the exam, or halfway there when it is closer, leaving the rest for reviews. Only you see the date.",
"examDate": "Exam date",
"examSheetPlans": "This studyset’s exam plans",
"examSheetFromTags": "From the level tags",
"examSheetNoPlans": "No exam plans yet. Make one from this studyset’s topics and tags.",
"examRemove": "Stop preparing",
"examPlanTopicCount": "{count, plural, =1{1 topic} other{{count} topics}}",
"@examPlanTopicCount": {"placeholders": {"count": {"type": "int"}}},
"examPlanNew": "New exam plan",
"examPlanEdit": "Edit exam plan",
"examPlanHelp": "An exam plan names what an exam covers: whole topics, with their flashcards, learning paths and PDFs, and flashcards with certain tags. It is published with the studyset.",
"examPlanName": "Name",
"examPlanNameHint": "e.g. Final exam",
"examPlanTopics": "Topics it covers whole",
"examPlanTags": "Flashcards with these tags",
"examPlanEmpty": "This studyset has no topics or tagged flashcards to choose from yet.",
"examPlanDelete": "Delete plan",
"jellyfinTitle": "Jellyfin",
"jellyfinSubtitle": "Watch shows and films and listen to music from your own Jellyfin server, and learn the words of their subtitles and lyrics. Signed in, a studyset's Add material offers From Jellyfin.",
"jellyfinPrivacy": "Your server's address and your sign-in stay on this device, and what you tie to a studyset follows you as ids, never titles. To find the words of a line, the app asks the instance about its text, which it answers and doesn't keep, unless Japanese's dictionaries are on this device (Settings): then it looks them up here. Words you add are tagged with where you met them, kept with your flashcards like any tag.",
"deviceDictionaryOfferTitle": "Look words up on this device?",
"deviceDictionaryOfferBody": "Download Japanese's dictionaries once ({size}, more once set up) to cut lines into words here, as Jisho.org does. Their text then never leaves this device.",
"@deviceDictionaryOfferBody": {"placeholders": {"size": {"type": "String"}}},
"deviceDictionaryOfferDownload": "Download",
"deviceDictionaryOfferLater": "Not now",
"deviceDictionaryDownloading": "Downloading: {received} of {total}",
"@deviceDictionaryDownloading": {"placeholders": {"received": {"type": "String"}, "total": {"type": "String"}}},
"deviceDictionaryPreparing": "Setting them up…",
"deviceDictionaryReady": "Words are now looked up on this device.",
"deviceDictionaryFailed": "Couldn't download the dictionaries. Try again in Settings.",
"settingsDeviceDictionaryTitle": "Japanese on this device",
"settingsDeviceDictionaryAbout": "With Japanese's dictionaries on this device, the lines of videos and songs are cut into words here, as Jisho.org does, and their text never leaves it. Without them, the app asks the instance, which answers and keeps nothing.",
"settingsDeviceDictionaryHeld": "On this device: {size}",
"@settingsDeviceDictionaryHeld": {"placeholders": {"size": {"type": "String"}}},
"settingsDeviceDictionaryDownload": "Download ({size})",
"@settingsDeviceDictionaryDownload": {"placeholders": {"size": {"type": "String"}}},
"settingsDeviceDictionaryRemove": "Remove",
"settingsDeviceDictionaryFailed": "The download failed.",
"jellyfinSignedInAs": "{user} on {server}",
"@jellyfinSignedInAs": {"placeholders": {"user": {"type": "String"}, "server": {"type": "String"}}},
"jellyfinSignOut": "Sign out of Jellyfin",
"jellyfinAddress": "Server address",
"jellyfinAddressHint": "jellyfin.example.org",
"jellyfinFind": "Continue",
"jellyfinUser": "User name",
"jellyfinPublicUsers": "On this server",
"jellyfinPassword": "Password",
"jellyfinPasswordNone": "Leave empty if the account has none",
"jellyfinSignIn": "Sign in",
"jellyfinQuickConnect": "Sign in with a code",
"jellyfinQuickConnectCode": "Enter this code under Quick Connect in a Jellyfin app you're signed in to:",
"jellyfinQuickConnectWaiting": "Waiting for the code to be approved…",
"jellyfinOtherServer": "Another server",
"jellyfinUnreachable": "No server answered at that address over HTTPS.",
"jellyfinNotEncrypted": "That address isn't encrypted, and your password would travel in the clear. Use the server's HTTPS address.",
"jellyfinNotJellyfin": "That address isn't a Jellyfin server.",
"jellyfinWrongCredentials": "The user name or password is wrong.",
"jellyfinSignedOut": "You were signed out of Jellyfin. Sign in again.",
"jellyfinFailed": "That didn't work on the Jellyfin server. Try again.",
"studysetWatch": "From Jellyfin",
"jellyfinBrowseTitle": "Jellyfin",
"jellyfinTied": "Tied to this studyset",
"jellyfinLibraries": "Libraries",
"jellyfinSearchHint": "Search shows, films and music",
"jellyfinTie": "Tie to this studyset",
"jellyfinUntie": "Untie from this studyset",
"jellyfinEmpty": "Nothing here",
"jellyfinEpisode": "S{season} E{episode}",
"@jellyfinEpisode": {"placeholders": {"season": {"type": "int"}, "episode": {"type": "int"}}},
"jellyfinNoPlayer": "Videos can't play on this device.",
"jellyfinNoPlayerLinux": "Videos can't play on this device: playing them needs libmpv (the package libmpv2).",
"watchNoSubtitles": "This video has no subtitles in the studyset's language as text, so there is nothing to look up.",
"watchSubtitles": "Subtitles",
"watchTranslation": "Translation",
"watchAudio": "Audio",
"watchBack10": "10 seconds back",
"watchForward10": "10 seconds on",
"watchSettings": "Settings",
"watchShortcuts": "Keyboard shortcuts",
"watchTrackForced": "forced",
"watchTrackCaptions": "for the hard of hearing",
"watchKeyPlayPause": "Play or pause",
"watchKeyFive": "5 seconds back or on",
"watchKeyTen": "10 seconds back or on",
"watchKeyLines": "Previous or next line",
"watchKeyJump": "To 0 %, 10 %, … 90 % of the video",
"watchKeyStartEnd": "To the start or the end",
"watchKeyClose": "Close the word or the settings",
"watchKeyShortcuts": "These shortcuts",
"watchKeySpace": "Space",
"watchKeyShift": "Shift",
"watchKeyHome": "Home",
"watchKeyEnd": "End",
"watchProgressNew": "New",
"watchProgressLearning": "Learning",
"watchProgressDue": "Due",
"watchProgressLearned": "Learned · {days, plural, =0{again today} =1{again tomorrow} other{again in {days} days}}",
"@watchProgressLearned": {"placeholders": {"days": {"type": "int"}}},
"watchLookUpOn": "Look up on {site}",
"@watchLookUpOn": {"placeholders": {"site": {"type": "String"}}},
"watchWider": "Longer words here",
"watchWordsTitleSong": "Words in this song",
"watchStudyWordsSong": "Study this song's words",
"watchNoLyrics": "This song has no lyrics, so there is nothing to look up.",
"jellyfinNoLyrics": "No lyrics",
"watchStudy": "Study",
"watchStudyWords": "Study this video's words",
"watchAddListed": "{count, plural, =1{Add 1 word} other{Add {count} words}}",
"@watchAddListed": {"placeholders": {"count": {"type": "int"}}},
"watchAddListedHint": "Adds the words listed to the studyset, tagged with where they were met, to study them",
"watchAddNothing": "No new words listed: change the filter",
"watchAddNew": "{count, plural, =1{Add the 1 new word listed} other{Add the {count} new words listed}}",
"@watchAddNew": {"placeholders": {"count": {"type": "int"}}},
"watchAddedWords": "{count, plural, =0{No words added} =1{1 word added} other{{count} words added}}",
"@watchAddedWords": {"placeholders": {"count": {"type": "int"}}},
"watchStudyScheduled": "Study, on their schedules",
"watchStudyCram": "Cram, each once",
"watchFilter": "Filter the words",
"watchFilterFresh": "New words",
"watchFilterHeld": "Words in the studyset",
"watchFilterAll": "All words",
"watchFilterNoLevel": "No {levels} level",
"@watchFilterNoLevel": {"description": "Words a level list (JLPT, HSK, KRDict) leaves out.", "placeholders": {"levels": {"type": "String"}}},
"watchFilterClass": "Word class",
"watchFilterEmpty": "No words of this video match the filter.",
"watchClassNoun": "Nouns",
"watchClassVerb": "Verbs",
"watchClassAdjective": "Adjectives",
"watchClassAdverb": "Adverbs",
"watchClassExpression": "Expressions",
"watchClassOther": "Others",
"watchNone": "None",
"watchPlay": "Play",
"watchPause": "Pause",
"watchPreviousLine": "Previous line",
"watchNextLine": "Next line",
"watchPauseAtLineEnd": "Pause after each line",
"watchWordsTitle": "Words in this video",
"watchWordsFinding": "Finding the words…",
"watchWordCount": "{count}×",
"@watchWordCount": {"placeholders": {"count": {"type": "int"}}},
"watchAdd": "Add",
"watchAdded": "{word} added",
"watchAddFailed": "Couldn't add {word}. Try again.",
"@watchAddFailed": {"placeholders": {"word": {"type": "String"}}},
"watchStretchNone": "{text} isn't in the dictionary as one word.",
"@watchStretchNone": {"placeholders": {"text": {"type": "String"}}},
"watchStretchFailed": "Couldn't look it up. Choose it again to try once more.",
"watchStretchSearch": "Search {site} for it",
"@watchStretchSearch": {"placeholders": {"site": {"type": "String"}}},
"@watchAdded": {"placeholders": {"word": {"type": "String"}}},
"watchTapAWord": "Tap a word of the subtitles to look it up, or drag across characters to look up any part of a line (on a touch screen, hold first).",
"watchFormOf": "A form of {word}",
"@watchFormOf": {"placeholders": {"word": {"type": "String"}}},
"watchFailed": "The video couldn't be played.",
"publishPrivateRefused": "It's private: only your devices can read it. Make it non-private first, in its menu.",
"publishTagNames": "Its tags couldn't all be named. Sync, then try again.",
"publishTagNamesChanged": "The tags that would go with it changed since they were shown. Look at them again, then publish.",
"studysetMenuMakePrivate": "Make private",
"studysetMenuMakeReadable": "Make non-private",
"studysetPrivateTitle": "Make “{title}” private?",
"@studysetPrivateTitle": {"placeholders": {"title": {"type": "String"}}},
"studysetPrivateBody": "Everything in it is end-to-end encrypted on your devices: the instance can't read it, publish it or show it to Claude. Copies in the instance's backups stay readable until those expire.",
"studysetReadableTitle": "Make “{title}” non-private?",
"@studysetReadableTitle": {"placeholders": {"title": {"type": "String"}}},
"studysetReadableBody": "Everything in it is decrypted and synced again, so the instance can read it: you can publish it.",
"studysetPrivateNoKeys": "Sign in with your password on this device to make studysets private.",
"studysetPrivateSomeLocked": "Some of it couldn't be opened on this device and stayed as it was.",
"publishTagsSent": "The names of the tags that go with it, which the instance learns: {names}",
"@publishTagsSent": {"placeholders": {"names": {"type": "String"}}},
"publishTagsSentNone": "No tags go with it.",
"privacyAdoptTitle": "Take in edits nobody signed?",
"privacyAdoptTake": "Take them in",
"privacyAdoptLeave": "Leave them locked",
"privacyAdoptListBody": "While it was made private, these were written without your keys: by a device that didn't have them, or by the instance. Taken in, exactly these are sealed as yours; left, they stay locked.",
"privacyEditCard": "Flashcard",
"privacyEditNote": "Note",
"privacyEditPath": "Learning path",
"privacyEditStep": "Step",
"privacyEditPdf": "PDF",
"privacyEditStudyset": "Studyset",
"privacyEditAnswer": "Answer",
"privacyEditNoText": "(no text)",
"studysetLockedTitle": "Locked",
"studysetLockedBody": "This studyset is private, and its key doesn't open on this device: it was encrypted with keys your account no longer has. It can only be deleted.",
"studysetVisibilityPartly": "Private, partly readable",
"studysetPrivacyPartlyBody": "Some of it is still readable by the instance: what a device wrote before it heard, or files not moved yet. It is sealed as soon as a device with your keys can, or now with Finish.",
"studysetPrivacyFinish": "Finish",
"studysetLockedNoKeysBody": "This studyset is private, and its key isn't on this device. Sign in with your password on this device to open it.",
"cardMovePrivateTitle": "Make “{title}” private?",
"@cardMovePrivateTitle": {"placeholders": {"title": {"type": "String"}}},
"cardMovePrivateBody": "These flashcards are private. “{title}” is readable by the instance, so they can only move there once it is private too.",
"@cardMovePrivateBody": {"placeholders": {"title": {"type": "String"}}},
"cardMovePrivateAction": "Make private and move",
"privacyKeysMissing": "Sign in with your password on this device: what you add or change here would be private.",
"libraryOfferPrivateTitle": "Make your studysets private?",
"libraryOfferPrivateBody": "New studysets are private: end-to-end encrypted, so only your devices can read them. Those you made before stay readable by the instance until you make them private too. Copies in the instance's backups stay readable until those expire.",
"libraryOfferPrivateAction": "Make all private",
"libraryOfferPrivateLater": "Not now",
"exportReadableNote": "The archive isn't encrypted: whoever has the file can read it.",
"studysetVisibilityReadable": "Not private, not published",
"studysetShareReadable": "Share: not private",
"studysetPrivacyPrivateTitle": "“{title}” is private",
"@studysetPrivacyPrivateTitle": {"placeholders": {"title": {"type": "String"}}},
"studysetPrivacyPrivateBody": "Everything in it is end-to-end encrypted: only your devices can read it. The instance can't publish it, nor show it to Claude. Making it non-private decrypts it and syncs it again, so the instance can read it.",
"studysetPrivacyReadableTitle": "“{title}” isn't private",
"@studysetPrivacyReadableTitle": {"placeholders": {"title": {"type": "String"}}},
"studysetPrivacyReadableBody": "The instance can read it: you can publish it. Making it private encrypts it end to end on your devices; copies in the instance's backups stay readable until those expire.",
"studysetPrivacyTopic": "Its privacy is that of the studyset it's in.",
"studysetPrivacyPublish": "Publish…"
}