- Updated navigationController to simplify the eroticChat menu structure. - Enhanced adminService to notify users of adult verification status changes, including previous status. - Improved AppNavigation and related components to register and unregister socket listeners for adult verification updates. - Added localized messages for adult verification notifications in English, German, and Spanish. - Introduced a verification hint in the EroticAccessView to guide users on document submission.
545 lines
25 KiB
JSON
545 lines
25 KiB
JSON
{
|
|
"socialnetwork": {
|
|
"usersearch": {
|
|
"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"
|
|
},
|
|
"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": {
|
|
"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"
|
|
}
|
|
},
|
|
"guestbook": {
|
|
"title": "Guestbook",
|
|
"prevPage": "Back",
|
|
"nextPage": "Next",
|
|
"page": "Page"
|
|
},
|
|
"diary": {
|
|
"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": {
|
|
"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. This first version focuses on upload, list and playback.",
|
|
"videoUploadTitle": "Upload erotic video",
|
|
"videoUploadHint": "The first rollout stores videos directly and intentionally skips transcoding or streaming profiles for now.",
|
|
"videoDescription": "Description",
|
|
"videoFile": "Video file",
|
|
"myVideos": "My videos",
|
|
"noVideos": "You have not uploaded any erotic videos yet.",
|
|
"reportAction": "Report",
|
|
"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.",
|
|
"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",
|
|
"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",
|
|
"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",
|
|
"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 to English",
|
|
"translateFrom": "Translate to Target Language",
|
|
"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"
|
|
}
|
|
}
|
|
}
|
|
}
|