All checks were successful
Deploy to production / deploy (push) Successful in 2m51s
- Updated core patterns in BISAYA_PHASE5_DIDACTICS to include gloss translations for better understanding. - Refactored vocabulary exercise generation in update-food-care-exercises.js to improve randomization and user engagement. - Added new exercise types and improved question structures for vocabulary lessons, enhancing the learning experience. - Enhanced localization files for German, English, and Spanish to support new exercise features and improve user guidance. - Updated VocabLessonView to incorporate sequential navigation for exercises, providing a more structured learning flow.
778 lines
43 KiB
JSON
778 lines
43 KiB
JSON
{
|
||
"socialnetwork": {
|
||
"usersearch": {
|
||
"kicker": "Community search",
|
||
"intro": "Find suitable contacts in the community by name, age, and gender.",
|
||
"ageSeparator": "to",
|
||
"resultsCount": "{count} results",
|
||
"openProfile": "Open profile",
|
||
"title": "User Search",
|
||
"username": "Username",
|
||
"age_from": "Age from",
|
||
"age_to": "to",
|
||
"gender": "Gender",
|
||
"search_button": "Search",
|
||
"no_results": "No results found",
|
||
"results_title": "Search Results:",
|
||
"result": {
|
||
"nick": "Nickname",
|
||
"gender": "Gender",
|
||
"age": "Age"
|
||
}
|
||
},
|
||
"profile": {
|
||
"pretitle": "Loading data. Please wait...",
|
||
"error_title": "User not found",
|
||
"title": "Profile of <username>",
|
||
"tab": {
|
||
"general": "General",
|
||
"sexuality": "Sexuality",
|
||
"images": "Gallery",
|
||
"guestbook": "Guestbook"
|
||
},
|
||
"values": {
|
||
"bool": {
|
||
"true": "Yes",
|
||
"false": "No"
|
||
},
|
||
"smokes": {
|
||
"never": "Never",
|
||
"socially": "Socially",
|
||
"often": "Often",
|
||
"daily": "Daily"
|
||
},
|
||
"drinks": {
|
||
"never": "Never",
|
||
"socially": "Socially",
|
||
"often": "Often",
|
||
"daily": "Daily"
|
||
},
|
||
"interestedInGender": {
|
||
"male": "Men",
|
||
"female": "Women"
|
||
},
|
||
"sexualpreference": {
|
||
"straight": "Heterosexual",
|
||
"gay": "Homosexual",
|
||
"bi": "Bisexual",
|
||
"pan": "Pansexual",
|
||
"asexual": "Asexual"
|
||
},
|
||
"pubichair": {
|
||
"none": "None",
|
||
"short": "Short",
|
||
"medium": "Medium",
|
||
"long": "Long",
|
||
"hairy": "Unshaven",
|
||
"waxed": "Waxed",
|
||
"landingstrip": "Landing Strip",
|
||
"other": "Other",
|
||
"bikinizone": "Bikini Zone"
|
||
},
|
||
"gender": {
|
||
"male": "Male",
|
||
"female": "Female",
|
||
"transmale": "Trans-Female",
|
||
"transfemale": "Trans-Male",
|
||
"nonbinary": "Non-binary"
|
||
},
|
||
"language": {
|
||
"de": "German",
|
||
"en": "English"
|
||
},
|
||
"eyecolor": {
|
||
"blue": "Blue",
|
||
"green": "Green",
|
||
"brown": "Brown",
|
||
"black": "Black",
|
||
"grey": "Grey",
|
||
"hazel": "Hazel",
|
||
"amber": "Amber",
|
||
"red": "Red",
|
||
"other": "Other"
|
||
},
|
||
"haircolor": {
|
||
"black": "Black",
|
||
"brown": "Brown",
|
||
"blonde": "Blonde",
|
||
"red": "Red",
|
||
"grey": "Grey",
|
||
"white": "White",
|
||
"other": "Other"
|
||
},
|
||
"hairlength": {
|
||
"short": "Short",
|
||
"medium": "Medium",
|
||
"long": "Long",
|
||
"bald": "Bald",
|
||
"other": "Other"
|
||
},
|
||
"skincolor": {
|
||
"light": "Light",
|
||
"medium": "Medium",
|
||
"dark": "Dark",
|
||
"other": "Other"
|
||
},
|
||
"freckles": {
|
||
"much": "Many",
|
||
"medium": "Medium",
|
||
"less": "Few",
|
||
"none": "None"
|
||
}
|
||
},
|
||
"guestbook": {
|
||
"showInput": "Show new entry",
|
||
"hideInput": "Hide new entry",
|
||
"imageUpload": "Image",
|
||
"submit": "Submit entry",
|
||
"noEntries": "No entries found",
|
||
"entryImageAlt": "Guestbook entry image"
|
||
},
|
||
"interestedInGender": "Interested in",
|
||
"hasChildren": "Has children",
|
||
"smokes": "Smoking",
|
||
"drinks": "Alcohol",
|
||
"willChildren": "Wants children",
|
||
"sexualpreference": "Sexual orientation",
|
||
"pubichair": "Pubic hair",
|
||
"penislength": "Penis length",
|
||
"brasize": "Bra size",
|
||
"piercings": "Piercings",
|
||
"tattoos": "Tattoos",
|
||
"language": "Language",
|
||
"gender": "Gender",
|
||
"eyecolor": "Eye color",
|
||
"haircolor": "Hair color",
|
||
"hairlength": "Hair length",
|
||
"freckles": "Freckles",
|
||
"skincolor": "Skin color",
|
||
"birthdate": "Birthdate",
|
||
"age": "Age",
|
||
"town": "City",
|
||
"bodyheight": "Height",
|
||
"weight": "Weight"
|
||
},
|
||
"gallery": {
|
||
"kicker": "Images and folders",
|
||
"intro": "Organize your own content, control visibility, and structure it in folders.",
|
||
"title": "Gallery",
|
||
"folders": "Folders",
|
||
"create_folder": "Create folder",
|
||
"upload": {
|
||
"title": "Upload image",
|
||
"image_title": "Title",
|
||
"image_file": "File",
|
||
"visibility": "Visible to",
|
||
"upload_button": "Upload",
|
||
"selectvisibility": "Please select"
|
||
},
|
||
"images": "Images",
|
||
"visibility": {
|
||
"everyone": "Everyone",
|
||
"friends": "Friends",
|
||
"adults": "Adults",
|
||
"friends-and-adults": "Friends and adults",
|
||
"selected-users": "Selected users",
|
||
"none": "Nobody"
|
||
},
|
||
"create_folder_dialog": {
|
||
"title": "Create folder",
|
||
"parent_folder": "Will be created in",
|
||
"folder_title": "Folder name",
|
||
"visibility": "Visible to",
|
||
"select_visibility": "Please select"
|
||
},
|
||
"noimages": "There are currently no images in this folder",
|
||
"imagedialog": {
|
||
"image_title": "Title",
|
||
"edit_visibility": "Visible to",
|
||
"save_changes": "Save changes",
|
||
"close": "Close",
|
||
"edit_visibility_placeholder": "Please select"
|
||
},
|
||
"delete_folder_confirmation_title": "Delete folder",
|
||
"delete_folder_confirmation_message": "Do you really want to delete the folder '%%folderName%%'?",
|
||
"edit_image_dialog": {
|
||
"title": "Edit image data"
|
||
},
|
||
"show_image_dialog": {
|
||
"title": "Image"
|
||
},
|
||
"imagePreviewAlt": "Image preview",
|
||
"imageLoadingAlt": "Loading image"
|
||
},
|
||
"guestbook": {
|
||
"kicker": "Guestbook",
|
||
"intro": "Messages, feedback, and small glimpses from your network.",
|
||
"title": "Guestbook",
|
||
"prevPage": "Back",
|
||
"nextPage": "Next",
|
||
"page": "Page"
|
||
},
|
||
"diary": {
|
||
"kicker": "Personal entries",
|
||
"intro": "Thoughts, notes, and short updates in a calm personal view.",
|
||
"placeholder": "Write your diary entry...",
|
||
"title": "Diary",
|
||
"noEntries": "You haven't made any diary entries yet.",
|
||
"newEntry": "New diary entry",
|
||
"editEntry": "Edit diary entry",
|
||
"save": "Save",
|
||
"update": "Update",
|
||
"cancel": "Cancel",
|
||
"edit": "Edit",
|
||
"delete": "Delete",
|
||
"confirmDelete": "Do you really want to delete the entry?",
|
||
"prevPage": "Back",
|
||
"nextPage": "Next",
|
||
"page": "Page"
|
||
},
|
||
"forum": {
|
||
"kicker": "Community forum",
|
||
"intro": "Topics, discussions, and new posts in one structured place.",
|
||
"createTitle": "Write a new topic",
|
||
"createIntro": "Set the title first, then write the post and publish it directly.",
|
||
"cancelCreation": "Cancel",
|
||
"creationHint": "Title and content must both be filled in.",
|
||
"communityFallback": "Community",
|
||
"topicIntro": "Discussions, replies, and new posts in a focused reading view.",
|
||
"topicCreated": "Topic created successfully.",
|
||
"topicCreateError": "Error creating topic",
|
||
"title": "Forum",
|
||
"showNewTopic": "Create new topic",
|
||
"hideNewTopic": "Cancel creation",
|
||
"noTitles": "No topics available",
|
||
"topic": "Topic",
|
||
"createNewTopic": "Create topic",
|
||
"createdBy": "Created by",
|
||
"createdAt": "Created at",
|
||
"reactions": "Reaction",
|
||
"lastReaction": "Last reaction by",
|
||
"pagination": {
|
||
"first": "First page",
|
||
"previous": "Previous page",
|
||
"next": "Next page",
|
||
"last": "Last page",
|
||
"page": "Page <<page>> of <<of>>"
|
||
},
|
||
"createNewMesssage": "Send reply"
|
||
},
|
||
"friendship": {
|
||
"error": {
|
||
"alreadyexists": "The friendship request already exists"
|
||
},
|
||
"state": {
|
||
"none": "Not friends",
|
||
"waiting": "Friendship request sent but not answered",
|
||
"open": "Friendship was requested",
|
||
"denied": "Friendship request denied",
|
||
"withdrawn": "Friendship request withdrawn",
|
||
"accepted": "Friends"
|
||
},
|
||
"added": "You have sent a friendship request.",
|
||
"withdrawn": "You have withdrawn your friendship request.",
|
||
"denied": "You have denied the friendship request.",
|
||
"accepted": "The friendship has been established."
|
||
},
|
||
"erotic": {
|
||
"eyebrow": "Erotic",
|
||
"accessTitle": "Unlock the erotic area",
|
||
"accessIntro": "Pictures, videos and later chat areas are visible from age 18, but only usable after moderator approval.",
|
||
"lockedShort": "This area becomes usable only after moderator approval.",
|
||
"requestVerification": "Request access",
|
||
"requestSent": "The access request has been submitted.",
|
||
"requestError": "The access request could not be submitted.",
|
||
"requestInfoTitle": "Submitted proof",
|
||
"documentLabel": "Verification document",
|
||
"noteLabel": "Short note for moderation",
|
||
"settingsLink": "Open account settings",
|
||
"verificationHintTitle": "Verification note",
|
||
"verificationHintBody": "You may submit a photo. If your age is not clearly recognizable there, the request will be rejected and you will need to submit an ID instead.",
|
||
"notifications": {
|
||
"approved": "Your erotic area access has been approved by moderation.",
|
||
"rejected": "Your erotic area request was rejected. If your age is not clearly recognizable in photos, please submit an ID."
|
||
},
|
||
"picturesTitle": "Erotic pictures",
|
||
"picturesIntro": "Your content stays strictly separate from the normal gallery. Manage only images for the unlocked erotic area here.",
|
||
"uploadTitle": "Upload erotic picture",
|
||
"noimages": "There are currently no pictures in this erotic folder.",
|
||
"videosTitle": "Erotic videos",
|
||
"videosIntro": "Your own videos are managed separately from the normal social area. Organize uploads, visibility and moderation status here in one place.",
|
||
"videoUploadTitle": "Upload erotic video",
|
||
"videoUploadHint": "Upload videos for your unlocked erotic area here and maintain title and description directly during upload.",
|
||
"videoDescription": "Description",
|
||
"videoFile": "Video file",
|
||
"videoFormats": "MP4, WEBM, OGG, MOV",
|
||
"myVideos": "My videos",
|
||
"sharedVideos": "Shared videos",
|
||
"foreignVideosIntro": "Shared videos from the adult area.",
|
||
"foreignVideosOnlyHint": "You only see videos here that were shared with you for the adult area.",
|
||
"sharedVideosIntro": "Visible videos from shared adult areas.",
|
||
"noSharedVideos": "There are currently no shared videos available for you.",
|
||
"libraryTitle": "Library",
|
||
"libraryIntro": "Your uploads, visibility settings, and reports in one place.",
|
||
"libraryEmptyHint": "Create your first video on the left and manage it here afterwards in the library.",
|
||
"latestUpload": "Latest upload",
|
||
"visibleVideos": "Visible videos",
|
||
"moderationCases": "Moderation cases",
|
||
"notesTitle": "Notes",
|
||
"friendsVisibilityHint": "Friends can only see content if they are adults and unlocked for the adult area.",
|
||
"selectedUsersVisibilityHint": "Specifically shared people must also be adults and unlocked.",
|
||
"selectedUsersPlaceholder": "anna, bert, clara",
|
||
"imagePreviewAlt": "Image preview",
|
||
"imageLoadingAlt": "Loading image",
|
||
"untitled": "Untitled",
|
||
"noUploadYet": "No upload yet",
|
||
"closeEditing": "Close editing",
|
||
"editVisibility": "Edit visibility",
|
||
"noVideos": "You have not uploaded any erotic videos yet.",
|
||
"reportAction": "Report",
|
||
"reportHint": "Use {action} directly on the respective item when content should be reviewed.",
|
||
"reportNote": "Short note for moderation",
|
||
"submitReport": "Submit report",
|
||
"reportSubmitted": "The report has been submitted.",
|
||
"reportError": "The report could not be saved.",
|
||
"moderationHidden": "Hidden by moderation",
|
||
"hiddenByModeration": "This content has been temporarily hidden by moderation.",
|
||
"reportReasons": {
|
||
"suspected_minor": "Suspected minor",
|
||
"non_consensual": "Non-consensual content",
|
||
"violence": "Violence or abuse",
|
||
"harassment": "Harassment or pressure",
|
||
"spam": "Spam or scam",
|
||
"other": "Other"
|
||
},
|
||
"intro": "The area is unlocked. The actual picture and video modules follow in the next step.",
|
||
"enabledTitle": "Access unlocked",
|
||
"enabledBody": "Your account is enabled for the erotic area. The separate picture and video views are built next.",
|
||
"roadmapTitle": "Next up",
|
||
"roadmapModeration": "separate moderation and reporting paths",
|
||
"roadmapUpload": "dedicated upload and management views",
|
||
"roadmapSeparation": "clear separation from the normal gallery",
|
||
"status": {
|
||
"none": {
|
||
"title": "Not unlocked yet",
|
||
"body": "The area is visible, but stays locked until moderator approval."
|
||
},
|
||
"pending": {
|
||
"title": "Review pending",
|
||
"body": "Your request is waiting for moderation review."
|
||
},
|
||
"approved": {
|
||
"title": "Unlocked",
|
||
"body": "The erotic area is already unlocked for your account."
|
||
},
|
||
"rejected": {
|
||
"title": "Request denied",
|
||
"body": "The last request was denied. You can submit a new request."
|
||
}
|
||
}
|
||
},
|
||
"vocab": {
|
||
"title": "Vocabulary trainer",
|
||
"description": "Create languages (or subscribe to them) and share them with friends.",
|
||
"heroEyebrow": "Language learning",
|
||
"summaryTotalLabel": "Languages total",
|
||
"summaryTotalIntro": "All active language areas where you use or manage content.",
|
||
"summaryOwnedLabel": "Owned areas",
|
||
"summaryOwnedIntro": "This is where you actively create content, chapters, and learning material yourself.",
|
||
"summarySubscribedLabel": "Subscribed",
|
||
"summarySubscribedIntro": "These areas are more about learning and progress than administration.",
|
||
"taskCreateEyebrow": "Quick start",
|
||
"taskCreateTitle": "Create new language",
|
||
"taskCreateIntro": "The best starting point if you want to structure and maintain content yourself.",
|
||
"taskContinueEyebrow": "Continue learning",
|
||
"taskContinueTitle": "Open courses and chapters",
|
||
"taskContinueIntro": "Jump straight into existing learning paths and continue with available courses.",
|
||
"ownedSectionTitle": "Owned languages",
|
||
"ownedSectionIntro": "Direct access to editing, chapters, and course management.",
|
||
"ownedHint": "Manage and maintain content",
|
||
"ownedEmpty": "No owned language areas yet.",
|
||
"subscribedSectionTitle": "Subscribed languages",
|
||
"subscribedSectionIntro": "Good for quickly getting back into learning without admin overhead.",
|
||
"subscribedHint": "Learn, practice, and review progress",
|
||
"subscribedEmpty": "No subscribed languages available.",
|
||
"languageHeroEyebrow": "Language",
|
||
"languageHeroIntro": "Chapters, search tools, and sharing for this language in one place.",
|
||
"newLanguageHeroEyebrow": "Vocabulary trainer",
|
||
"newLanguageHeroIntro": "Create a new language, generate a share code, and jump straight into editing.",
|
||
"newLanguageNameHint": "A short, clear language name is enough to get started.",
|
||
"newLanguageNameValidation": "The name should have at least 2 characters.",
|
||
"subscribeHeroEyebrow": "Vocabulary trainer",
|
||
"chapterHeroEyebrow": "Vocabulary trainer",
|
||
"chapterHeroIntro": "Browse chapter content, maintain vocabulary, and jump directly into practice.",
|
||
"newLanguage": "New language",
|
||
"newLanguageTitle": "Create new language",
|
||
"languageName": "Language name",
|
||
"create": "Create",
|
||
"saving": "Saving...",
|
||
"created": "Language created.",
|
||
"createdTitle": "Vocabulary trainer",
|
||
"createdMessage": "Language created. The menu will refresh.",
|
||
"createError": "Could not create language.",
|
||
"openLanguage": "Open",
|
||
"none": "You have no languages yet (created or subscribed).",
|
||
"owner": "Owned",
|
||
"subscribed": "Subscribed",
|
||
"languageTitle": "Vocabulary trainer: {name}",
|
||
"notFound": "Language not found or no access.",
|
||
"shareCode": "Share code",
|
||
"shareHint": "Send this code to friends so they can subscribe to this language.",
|
||
"subscribeByCode": "Subscribe by code",
|
||
"subscribeTitle": "Subscribe to language",
|
||
"subscribeHint": "Enter a share code you received from a friend.",
|
||
"subscribe": "Subscribe",
|
||
"subscribeSuccess": "Subscribed. The menu will refresh.",
|
||
"subscribeError": "Subscribe failed. Invalid code or no access.",
|
||
"trainerPlaceholder": "Trainer features (words/quizzes) will be the next step."
|
||
,
|
||
"chapters": "Chapters",
|
||
"newChapter": "New chapter",
|
||
"createChapter": "Create chapter",
|
||
"createChapterError": "Could not create chapter.",
|
||
"noChapters": "No chapters yet.",
|
||
"chapterTitle": "Chapter: {title}",
|
||
"addVocab": "Add vocabulary",
|
||
"learningWord": "To learn",
|
||
"referenceWord": "Reference",
|
||
"add": "Add",
|
||
"addVocabError": "Could not add vocabulary.",
|
||
"noVocabs": "No vocabulary in this chapter yet."
|
||
,
|
||
"practice": {
|
||
"open": "Practice",
|
||
"title": "Practice vocabulary",
|
||
"allVocabs": "All vocabulary",
|
||
"simple": "Simple practice",
|
||
"noPool": "No vocabulary to practice.",
|
||
"dirLearningToRef": "To learn → Reference",
|
||
"dirRefToLearning": "Reference → To learn",
|
||
"check": "Check",
|
||
"next": "Next",
|
||
"skip": "Skip",
|
||
"correct": "Correct!",
|
||
"wrong": "Wrong.",
|
||
"acceptable": "Acceptable answers:",
|
||
"stats": "Stats",
|
||
"success": "Success",
|
||
"fail": "Fail"
|
||
},
|
||
"search": {
|
||
"open": "Search",
|
||
"title": "Search vocabulary",
|
||
"term": "Search term",
|
||
"motherTongue": "Mother tongue",
|
||
"learningLanguage": "Learning language",
|
||
"lesson": "Lesson",
|
||
"search": "Search",
|
||
"noResults": "No results.",
|
||
"error": "Search failed."
|
||
},
|
||
"courses": {
|
||
"title": "Language Learning Courses",
|
||
"create": "Create Course",
|
||
"myCourses": "My Courses",
|
||
"allCourses": "All Courses",
|
||
"none": "No courses found.",
|
||
"owner": "Owner",
|
||
"enrolled": "Enrolled",
|
||
"public": "Public",
|
||
"difficulty": "Difficulty",
|
||
"lessons": "Lessons",
|
||
"enroll": "Enroll",
|
||
"continue": "Continue",
|
||
"edit": "Edit",
|
||
"addLesson": "Add Lesson",
|
||
"completed": "Completed",
|
||
"score": "Score",
|
||
"review": "Review",
|
||
"start": "Start",
|
||
"resetLessonProgress": "Reset lesson",
|
||
"resetLessonProgressConfirm": "Reset progress for this lesson? Saved state, exercise results, and trainer progress will be cleared. Other lessons stay unchanged.",
|
||
"resetLessonProgressSuccess": "Lesson progress was reset.",
|
||
"resetLessonProgressError": "Could not reset the lesson.",
|
||
"noLessons": "This course has no lessons yet.",
|
||
"lessonNumber": "Lesson Number",
|
||
"chapter": "Chapter",
|
||
"selectChapter": "Select Chapter",
|
||
"selectLanguage": "Select Language",
|
||
"confirmDelete": "Really delete lesson?",
|
||
"titleLabel": "Title",
|
||
"descriptionLabel": "Description",
|
||
"languageLabel": "Language",
|
||
"findByCode": "Find Course by Code",
|
||
"shareCode": "Share Code",
|
||
"searchPlaceholder": "Search courses...",
|
||
"allLanguages": "All Languages",
|
||
"targetLanguage": "Target Language",
|
||
"nativeLanguage": "Native Language",
|
||
"allNativeLanguages": "All Native Languages",
|
||
"myNativeLanguage": "My Native Language",
|
||
"forAllLanguages": "For All Languages",
|
||
"optional": "Optional",
|
||
"invalidCode": "Invalid code",
|
||
"courseNotFound": "Course not found",
|
||
"grammarExercises": "Chapter Test",
|
||
"exerciseFlowIntro": "Work through the tasks in order. Every correct answer moves you closer to completing the lesson.",
|
||
"exerciseProgressLabel": "Progress",
|
||
"exerciseTargetLabel": "Required",
|
||
"exerciseCardLabel": "Task {number}",
|
||
"exerciseSequentialProgress": "Question {current} of {total}",
|
||
"exerciseSequentialBack": "Back",
|
||
"exerciseSequentialNext": "Next",
|
||
"exerciseWrongTitle": "Not quite right",
|
||
"exerciseReinforcementGoPractice": "Go to practice",
|
||
"exerciseReinforcementStay": "Stay on the test",
|
||
"exerciseStatusOpen": "Open",
|
||
"exerciseStatusCorrect": "Done",
|
||
"exerciseStatusRetry": "Try again",
|
||
"exerciseAnswerAllHint": "Answer all {total} tasks first. Completed so far: {answered}. You need at least {target}% to pass.",
|
||
"exerciseNeedMoreCorrectHint": "You currently have {score}%. You need at least {target}% to complete this lesson.",
|
||
"exercisePassedHint": "Target reached: {score}% out of the required {target}%. Once all tasks have been answered, the chapter test is passed.",
|
||
"exerciseReinforcementHint": "After a mistake, the flow returns briefly to learning mode. Practice {count} more trainer questions and the chapter test will unlock again.",
|
||
"exercisePrepReinforcementHint": "After a mistake, go through the prepared terms once more. Then the chapter test will unlock again.",
|
||
"exerciseGrammarLead": "Key grammar for this test",
|
||
"noExercises": "No test available",
|
||
"enterAnswer": "Enter answer",
|
||
"checkAnswer": "Check Answer",
|
||
"correct": "Correct!",
|
||
"wrong": "Wrong",
|
||
"explanation": "Explanation",
|
||
"learn": "Learn",
|
||
"exercises": "Chapter Test",
|
||
"learnVocabulary": "Learn Vocabulary",
|
||
"lessonOverviewText": "This lesson combines vocabulary, patterns, short grammar impulses, and active speaking practice.",
|
||
"lessonDescription": "Lesson Description",
|
||
"culturalNotes": "Cultural Notes",
|
||
"grammarExplanations": "Grammar Explanations",
|
||
"grammarImpulse": "Grammar Focus",
|
||
"learningGoals": "Learning Goals",
|
||
"corePatterns": "Core Patterns",
|
||
"corePatternsHint": "Read the target language first, then the meaning below — you learn each pattern both ways.",
|
||
"learningGrammarTitle": "Briefly frame the grammar",
|
||
"learningGrammarIntro": "Read these 1-2 hints after the key terms. Then you go into the trainer with better orientation.",
|
||
"vocabPrepTitle": "Preparation before the vocabulary trainer",
|
||
"vocabPrepStep1": "Read through core patterns and the word list (native language ↔ target language) once.",
|
||
"vocabPrepProgress": "Pass {pass}: item {current} of {total}",
|
||
"vocabPrepTargetLabel": "Target language",
|
||
"vocabPrepGlossLabel": "Meaning",
|
||
"vocabPrepNextItem": "Next item",
|
||
"vocabPrepConfirm1": "First pass done",
|
||
"vocabPrepStep2": "Go through the same items again (active review, not testing yet).",
|
||
"vocabPrepConfirm2": "Second pass done",
|
||
"vocabPrepReady": "You can start the vocabulary trainer now.",
|
||
"learningPathLabel": "Main path",
|
||
"learningPathTitle": "Your learning flow for this lesson",
|
||
"learningPathIntro": "Work through these steps in order: prepare, review briefly, train, then move to the chapter test.",
|
||
"lessonDetailsToggle": "Show more lesson details",
|
||
"deepenSectionTitle": "Deepen and review",
|
||
"assistantSectionTitle": "Deepen with language assistant",
|
||
"vocabOverviewToggle": "Show full overview of terms",
|
||
"vocabTrainerLockedHint": "Please confirm two preparation steps under “Preparation before the vocabulary trainer” first.",
|
||
"exerciseUnlockHintAfterPrep": "Work through the prepared terms first. The chapter test will unlock afterwards.",
|
||
"speakingTasks": "Speaking Tasks",
|
||
"speakingPrompt": "Speaking Prompt",
|
||
"practicalTasks": "Practical Tasks",
|
||
"importantVocab": "Important Vocabulary",
|
||
"vocabInfoText": "These terms are used in the test. Learn them here passively before switching to the chapter test.",
|
||
"noVocabInfo": "Read the description above and the explanations in the test to learn the most important terms.",
|
||
"vocabTrainer": "Vocabulary Trainer",
|
||
"vocabTrainerDescription": "Practice the most important terms of this lesson interactively.",
|
||
"startVocabTrainer": "Start Vocabulary Trainer",
|
||
"stopTrainer": "Stop Trainer",
|
||
"translateTo": "Translate into Bisaya",
|
||
"translateFrom": "Translate into German",
|
||
"next": "Next",
|
||
"totalAttempts": "Attempts",
|
||
"successRate": "Success Rate",
|
||
"modeMultipleChoice": "Multiple Choice",
|
||
"modeTyping": "Text Input",
|
||
"currentLesson": "Current Lesson",
|
||
"mixedReview": "Review",
|
||
"lessonCompleted": "Lesson completed!",
|
||
"goToNextLesson": "Go to next lesson?",
|
||
"allLessonsCompleted": "All lessons completed!",
|
||
"startExercises": "Start Chapter Test",
|
||
"lessonTypeLabel": "Lesson Type",
|
||
"recommendedDuration": "Recommended Duration",
|
||
"exerciseLoad": "Exercise Load",
|
||
"exercisesShort": "exercises",
|
||
"durationFlexible": "Flexible",
|
||
"durationMinutes": "{minutes} minutes",
|
||
"lessonTypeVocab": "Vocabulary",
|
||
"lessonTypeGrammar": "Grammar",
|
||
"lessonTypeConversation": "Conversation",
|
||
"lessonTypeCulture": "Culture",
|
||
"lessonTypeReview": "Review",
|
||
"correctAnswer": "Correct Answer",
|
||
"alternatives": "Alternative Answers",
|
||
"notStarted": "Not Started",
|
||
"continueCurrentLesson": "Continue Current Lesson",
|
||
"previousLessonRequired": "Please complete the previous lesson first",
|
||
"lessonNumberShort": "#",
|
||
"buildSentencePlaceholder": "Build your sentence here",
|
||
"completeDialogPlaceholder": "Complete the missing dialog line",
|
||
"situationalResponsePlaceholder": "Write your response to the situation",
|
||
"patternDrillPlaceholder": "Create a fitting sentence with the pattern",
|
||
"modelSentence": "Model sentence",
|
||
"modelDialogLine": "Possible dialog line",
|
||
"modelResponse": "Possible response",
|
||
"modelPattern": "Possible pattern example",
|
||
"patternPrompt": "Pattern",
|
||
"readingAloudInstruction": "Read the text aloud. Click 'Start Recording' and begin speaking.",
|
||
"speakingFromMemoryInstruction": "Speak freely from memory. Use the displayed keywords.",
|
||
"startRecording": "Start Recording",
|
||
"stopRecording": "Stop Recording",
|
||
"startSpeaking": "Start Speaking",
|
||
"recording": "Recording...",
|
||
"listening": "Listening...",
|
||
"recordingStopped": "Recording stopped",
|
||
"recordingError": "Recording error",
|
||
"recognizedText": "Recognized Text",
|
||
"speechRecognitionNotSupported": "Speech Recognition is not supported by this browser. Please use Chrome or Edge.",
|
||
"speakingFallbackInstruction": "Your browser does not support speech input here. Write down what you would say instead and check it normally.",
|
||
"speakingFallbackPlaceholder": "Write what you would say here ...",
|
||
"keywords": "Keywords",
|
||
"switchBackToMultipleChoice": "Switch back to Multiple Choice",
|
||
"languageAssistantEyebrow": "Language assistant",
|
||
"languageAssistantCourseTitle": "AI support for this course",
|
||
"languageAssistantCourseReady": "The language assistant is configured and available inside lessons for explanations, corrections, and short dialogue practice.",
|
||
"languageAssistantCourseSetup": "Set up the language assistant so you can ask lesson-specific questions and practice short dialogues.",
|
||
"languageAssistantOpenLesson": "Open in current lesson",
|
||
"languageAssistantTitle": "Practice with the language assistant",
|
||
"languageAssistantIntro": "Use the AI directly inside the current lesson: get grammar explained, practice short dialogues, or have your own sentences corrected.",
|
||
"languageAssistantSettings": "Configure assistant",
|
||
"languageAssistantSetupHint": "The language assistant is not configured yet or is currently disabled. Please save your model and API access in the settings first.",
|
||
"languageAssistantModePractice": "Practice",
|
||
"languageAssistantModeExplain": "Explain",
|
||
"languageAssistantModeCorrect": "Correct",
|
||
"languageAssistantPromptExplain": "Explain grammar",
|
||
"languageAssistantPromptPractice": "Practice mini dialogue",
|
||
"languageAssistantPromptCorrect": "Improve my sentence",
|
||
"languageAssistantSpeakerAi": "Language assistant",
|
||
"languageAssistantSpeakerYou": "You",
|
||
"languageAssistantInputLabel": "Your message",
|
||
"languageAssistantInputPlaceholder": "Ask a lesson question or write your own sentence for correction.",
|
||
"languageAssistantSend": "Send to assistant",
|
||
"languageAssistantSending": "Getting answer ...",
|
||
"languageAssistantError": "The language assistant could not answer right now.",
|
||
"languageAssistantPresetExplainStart": "Please explain the main patterns and grammar in the lesson",
|
||
"languageAssistantPatternHint": "Focus especially on this pattern",
|
||
"languageAssistantPresetPracticeStart": "Let's practice a short everyday dialogue for the lesson \"{lesson}\". Please ask me questions and wait for my answers.",
|
||
"languageAssistantPresetCorrectStart": "I want to write my own sentences for the lesson \"{lesson}\". Please correct my answers briefly and clearly.",
|
||
"thisLesson": "this lesson",
|
||
"courseKicker": "Learning course",
|
||
"courseListKicker": "Courses",
|
||
"courseListIntro": "Filter public and your own learning courses, find the right one, and continue directly.",
|
||
"courseShareCodePlaceholder": "e.g. abc123def456",
|
||
"courseFlowEyebrow": "Daily flow",
|
||
"courseFlowTitle": "Best next step for today",
|
||
"courseFlowIntro": "Start with today’s suggested order at the top. Below that, the four areas in detail: due quick reviews, current block, intensive review, free practice.",
|
||
"courseTodayPlanTitle": "Suggested for today",
|
||
"courseTodayPlanIntro": "Practical order: first everything that is due for a quick review, then open lessons in your current block, then intensive review if shown. Quick reviews are three short revisit dates after you finish a lesson (typically about 1, 3 and 7 days apart) so vocabulary sticks.",
|
||
"courseTodayPlanStepReviewDue": "Quick review now",
|
||
"courseTodayPlanStepBlock": "Continue in your current block",
|
||
"courseTodayPlanStepIntensive": "Intensive review",
|
||
"courseTodayPlanStepContinue": "Next on your learning path",
|
||
"courseTodayPlanStepPractice": "Free practice (optional)",
|
||
"courseTodayPlanOpen": "Open lesson",
|
||
"courseTodayPlanTrainer": "Open trainer",
|
||
"courseTodayPlanEmpty": "Nothing scheduled as due right now and no clear next block step. Pick a lesson below or use free practice with the trainer.",
|
||
"courseFlowReviewStat": "Due review: {count}",
|
||
"courseFlowBlockStat": "Active block: {block}",
|
||
"courseFlowReviewTitle": "Due review",
|
||
"courseFlowReviewDescription": "Lessons already completed that should come back today.",
|
||
"courseFlowReviewEmpty": "No older lesson is marked as due for review today.",
|
||
"courseFlowBlockTitle": "Current block",
|
||
"courseFlowBlockDescription": "This is where the next regular progress step in the course lives.",
|
||
"courseFlowBlockEmpty": "The current block is already done or there is no open block lesson right now.",
|
||
"courseFlowIntensiveTitle": "Due intensive review",
|
||
"courseFlowIntensiveDescription": "Condensed review once the block before it is mostly stable.",
|
||
"courseFlowIntensiveEmpty": "No new intensive review is unlocked right now.",
|
||
"courseFlowPracticeTitle": "Free practice",
|
||
"courseFlowPracticeDescription": "Completed lessons for relaxed extra practice outside the required path.",
|
||
"courseFlowPracticeEmpty": "As soon as you complete your first lessons, they will appear here for free practice.",
|
||
"practiceInTrainer": "Practice in trainer",
|
||
"lessonsCount": "{count} lessons",
|
||
"lessonBlockLabel": "Block {number}",
|
||
"lessonIntensiveBadge": "Intensive review",
|
||
"addLessonValidation": "Please provide number, title, and chapter.",
|
||
"addLessonSuccess": "Lesson created successfully.",
|
||
"addLessonError": "Could not add the lesson.",
|
||
"createCourseError": "Could not create the course.",
|
||
"deleteLessonTitle": "Delete lesson",
|
||
"deleteLessonSuccess": "Lesson deleted successfully.",
|
||
"deleteLessonError": "Could not delete the lesson.",
|
||
"enrollCourseError": "Could not enroll in the course.",
|
||
"editLessonPending": "Editing individual lessons is still pending.",
|
||
"timeToday": "today",
|
||
"timeSinceOneDay": "since 1 day",
|
||
"timeSinceDays": "since {count} days",
|
||
"reviewDueNow": "due now",
|
||
"reviewDueTomorrow": "due tomorrow",
|
||
"reviewDueInDays": "due in {count} days",
|
||
"reviewDueToday": "due today",
|
||
"reviewDueSinceOneDay": "due since 1 day",
|
||
"reviewDueSinceDays": "due since {count} days",
|
||
"reviewBadgeScheduleTomorrow": "next review wave tomorrow",
|
||
"reviewBadgeScheduleInDays": "next wave in {count} days",
|
||
"reviewBadgeScheduleToday": "wave slated for today",
|
||
"reviewBadgeScheduleOverdue": "wave overdue ({count} days)",
|
||
"reviewBadgeLineAllDone": "All quick reviews done (3×)",
|
||
"reviewBadgeLineDue": "Quick review: step {step} of 3 · due now",
|
||
"reviewBadgeLineScheduled": "Quick review: step {step} of 3 · next on {when}",
|
||
"reviewWhenFriendlyTomorrow": "tomorrow",
|
||
"reviewWhenFriendlyInDays": "in {count} days",
|
||
"reviewWhenFriendlyToday": "today",
|
||
"reviewWhenFriendlyOverdue": "overdue ({count} day(s) ago)",
|
||
"reviewWhenFriendlySoon": "soon",
|
||
"reviewBadgeTooltipDone": "You finished the three suggested quick reviews after this lesson. You can still keep practicing in the trainer.",
|
||
"reviewBadgeTooltipActive": "After you complete a lesson, the course suggests three short reviews about 1, 3 and 7 days apart so words stay in memory. The badge shows which step (1–3) is active or when the next date is.",
|
||
"reviewStageDay1": "Step 1 of 3 (~1 day)",
|
||
"reviewStageDay3": "Step 2 of 3 (~3 days)",
|
||
"reviewStageDay7": "Step 3 of 3 (~7 days)",
|
||
"reviewStageCompleted": "All quick reviews done",
|
||
"phaseQuickstart": "Quick start",
|
||
"phaseDailyLife": "Daily life",
|
||
"phaseStabilization": "Stabilization",
|
||
"phaseDefault": "Learning phase",
|
||
"didacticModeCoreInput": "New content",
|
||
"didacticModeGuidedDialogue": "Guided dialogue",
|
||
"didacticModeContrastTraining": "Contrast training",
|
||
"didacticModePatternDrill": "Pattern drill",
|
||
"didacticModeRealLifeScenario": "Real-life scenario",
|
||
"didacticModeIntensiveReview": "Review phase",
|
||
"didacticModeCheckpoint": "Checkpoint",
|
||
"didacticModeDefault": "Learning unit",
|
||
"didacticModeFocusDefault": "Learning focus",
|
||
"lessonMetaFocus": "Focus",
|
||
"lessonMetaPhase": "Phase",
|
||
"lessonMetaNewUnits": "New units",
|
||
"lessonMetaReview": "Review",
|
||
"intensiveReviewTitle": "Intensive review phase",
|
||
"intensiveReviewIntro": "This lesson prioritizes review and consolidation. New material is intentionally reduced so existing patterns can stabilize.",
|
||
"reviewPriorityTitle": "Review is mixed in step by step",
|
||
"reviewPriorityIntro": "The focus starts on the new terms of this lesson. As you progress, older vocabulary is gradually mixed in.",
|
||
"exerciseLockTitle": "Chapter test still locked",
|
||
"exerciseUnlockHintTrainerCore": "The chapter test unlocks when all three conditions are met: at least {newTarget} questions on new content (see “New content”), about {attempts} trainer questions in total, and a success rate of at least {rate}%.",
|
||
"exerciseUnlockHintTrainerMixSuffix": "Older vocabulary is mixed in gradually.",
|
||
"trainerStartWithReview": "Start with the new vocabulary from this lesson. As you practice, the trainer will automatically mix in fitting review items.",
|
||
"startLesson": "Start lesson",
|
||
"trainerProgressNewContent": "New content: {current}/{target}",
|
||
"trainerProgressReview": "Review: {count}",
|
||
"trainerProgressMixShare": "Mixed share: {percent}%",
|
||
"unknownExerciseTypeNotice": "This exercise type is not displayed interactively in the current view yet.",
|
||
"unknownExerciseTypeLabel": "Type: {type}",
|
||
"lessonReviewHeadlineDone": "This lesson has reached the free practice stage.",
|
||
"lessonReviewHeadlineDue": "This review wave is due now.",
|
||
"lessonReviewHeadlineScheduled": "This lesson is scheduled for the next review wave.",
|
||
"lessonReviewHintDone": "The 1/3/7-day review cycle is complete. You can now continue practicing this lesson freely.",
|
||
"lessonReviewHintNextDue": "Next due date: {due}.",
|
||
"reviewTimeNow": "now",
|
||
"reviewTimeTomorrow": "tomorrow",
|
||
"reviewTimeInDays": "in {count} days"
|
||
}
|
||
}
|
||
}
|
||
}
|