{ "alphabet": { "chooseCharacters": "Please select the characters you want to learn", "chooseAlphabetHint": "Select an alphabet to start learning", "japanese": "Japanese Kana", "english": "English Alphabet", "uyghur": "Uyghur Alphabet", "esperanto": "Esperanto Alphabet", "loading": "Loading...", "loadFailed": "Loading failed, please try again", "hideLetter": "Hide Letter", "showLetter": "Show Letter", "hideIPA": "Hide IPA", "showIPA": "Show IPA", "roman": "Romanization", "letter": "Letter", "random": "Random Mode", "randomNext": "Random Next", "previousLetter": "Previous letter", "nextLetter": "Next letter", "keyboardHint": "Use left/right arrow keys or space for random, ESC to go back", "swipeHint": "Use left/right arrow keys or swipe to navigate, ESC to go back" }, "folders": { "title": "Folders", "subtitle": "Manage your collections", "newFolder": "New Folder", "creating": "Creating...", "noFoldersYet": "No folders yet", "folderInfo": "ID: {id} • {totalPairs} pairs", "enterFolderName": "Enter folder name:", "confirmDelete": "Type \"{name}\" to delete:", "myFolders": "My Folders", "publicFolders": "Public Folders", "public": "Public", "private": "Private", "setPublic": "Set Public", "setPrivate": "Set Private", "publicFolderInfo": "{userName} • {totalPairs} pairs", "searchPlaceholder": "Search public folders...", "loading": "Loading...", "noPublicFolders": "No public folders found", "unknownUser": "Unknown User", "enterNewName": "Enter new name:", "favorite": "Favorite", "unfavorite": "Unfavorite", "pleaseLogin": "Please login first" }, "folder_id": { "unauthorized": "You are not the owner of this folder", "back": "Back", "textPairs": "Text Pairs", "itemsCount": "{count} items", "memorize": "Memorize", "loadingTextPairs": "Loading text pairs...", "noTextPairs": "No text pairs in this folder", "addNewTextPair": "Add New Text Pair", "add": "Add", "updateTextPair": "Update Text Pair", "update": "Update", "text1": "Text 1", "text2": "Text 2", "language1": "Locale 1", "language2": "Locale 2", "enterLanguageName": "Please enter language name", "edit": "Edit", "delete": "Delete", "permissionDenied": "You do not have permission to perform this action", "error": { "update": "You do not have permission to update this item.", "delete": "You do not have permission to delete this item.", "add": "You do not have permission to add items to this folder.", "rename": "You do not have permission to rename this folder.", "deleteFolder": "You do not have permission to delete this folder." } }, "home": { "title": "Learn Languages", "description": "Here is a very useful website to help you learn almost every language in the world, including constructed ones.", "explore": "Explore", "fortune": { "quote": "Stay hungry, stay foolish.", "author": "— Steve Jobs" }, "translator": { "name": "Translator", "description": "Translate to any language and annotate with International Phonetic Alphabet (IPA)" }, "textSpeaker": { "name": "Text Speaker", "description": "Recognize and read text aloud, supports loop playback and speed adjustment" }, "srtPlayer": { "name": "SRT Video Player", "description": "Play videos sentence by sentence based on SRT subtitle files to mimic native speaker pronunciation" }, "alphabet": { "name": "Alphabet", "description": "Start learning a new language from the alphabet" }, "memorize": { "name": "Memorize", "description": "Language A to Language B, Language B to Language A, supports dictation" }, "dictionary": { "name": "Dictionary", "description": "Look up words and phrases with detailed definitions and examples" }, "moreFeatures": { "name": "More Features", "description": "Under development, stay tuned" } }, "auth": { "title": "Sign In", "signUpTitle": "Sign Up", "signIn": "Sign In", "signUp": "Sign Up", "email": "Email", "password": "Password", "confirmPassword": "Confirm Password", "name": "Name", "username": "Username", "emailOrUsername": "Email or Username", "signInButton": "Sign In", "signUpButton": "Sign Up", "noAccount": "Don't have an account?", "hasAccount": "Already have an account?", "signInWithGitHub": "Sign In with GitHub", "signUpWithGitHub": "Sign Up with GitHub", "invalidEmail": "Please enter a valid email address", "passwordTooShort": "Password must be at least 8 characters", "passwordsNotMatch": "Passwords do not match", "nameRequired": "Please enter your name", "usernameRequired": "Please enter a username", "usernameTooShort": "Username must be at least 3 characters", "usernameInvalid": "Username can only contain letters, numbers, and underscores", "emailRequired": "Please enter your email", "identifierRequired": "Please enter your email or username", "passwordRequired": "Please enter your password", "confirmPasswordRequired": "Please confirm your password", "loading": "Loading...", "confirm": "Confirm", "noAccountLink": "Don't have an account? Sign up", "hasAccountLink": "Already have an account? Sign in", "usernamePlaceholder": "Username", "emailPlaceholder": "Email address", "passwordPlaceholder": "Password", "usernameOrEmailPlaceholder": "Username or email", "loginFailed": "Login failed", "signUpFailed": "Sign up failed", "fillAllFields": "Please fill in all fields", "enterCredentials": "Please enter username and password", "forgotPassword": "Forgot Password", "forgotPasswordHint": "Enter your email address and we'll send you a link to reset your password.", "sendResetEmail": "Send Reset Email", "resetPasswordFailed": "Failed to send reset email", "resetPasswordEmailSent": "Reset email sent successfully", "resetPasswordEmailSentHint": "We've sent a password reset link to your email address. Please check your inbox.", "verifyYourEmail": "Verify Your Email", "verificationEmailSent": "Verification email sent", "verificationEmailSentHint": "We've sent a verification email to {email}. Please click the link in the email to verify your account.", "checkYourEmail": "Check Your Email", "backToLogin": "Back to Login", "resetPassword": "Reset Password", "newPassword": "New Password", "invalidToken": "Invalid or Expired Link", "invalidTokenHint": "This password reset link is invalid or has expired. Please request a new one.", "requestNewToken": "Request New Reset Link", "resetPasswordSuccess": "Password reset successfully", "resetPasswordSuccessTitle": "Password Reset Complete", "resetPasswordSuccessHint": "Your password has been reset successfully. You can now log in with your new password.", "emailNotVerified": "Please verify your email address", "emailNotVerifiedHint": "Your email has not been verified. Please check your inbox or request a new verification email.", "resendVerification": "Resend Verification Email", "resendSuccess": "Verification email sent! Please check your inbox.", "resendFailed": "Failed to send verification email" }, "memorize": { "deck_selector": { "selectDeck": "Select a deck", "noDecks": "No decks found", "goToDecks": "Go to Decks", "noCards": "No cards", "new": "New", "learning": "Learning", "review": "Review", "due": "Due" }, "review": { "loading": "Loading cards...", "backToDecks": "Back to Decks", "allDone": "All Done!", "allDoneDesc": "You've reviewed all due cards.", "reviewedCount": "Reviewed {count} cards", "progress": "{current} / {total}", "nextReview": "Next review", "interval": "Interval", "ease": "Ease", "lapses": "Lapses", "showAnswer": "Show Answer", "again": "Again", "hard": "Hard", "good": "Good", "easy": "Easy", "now": "now", "lessThanMinute": "<1 min", "inMinutes": "{count} min", "inHours": "{count}h", "inDays": "{count}d", "inMonths": "{count}mo", "minutes": "<1 min", "days": "{count}d", "months": "{count}mo", "minAbbr": "m", "dayAbbr": "d", "cardTypeNew": "New", "cardTypeLearning": "Learning", "cardTypeReview": "Review", "cardTypeRelearning": "Relearning" }, "page": { "unauthorized": "You are not authorized to access this deck" } }, "navbar": { "title": "learn-languages", "sourceCode": "GitHub", "sign_in": "Sign In", "profile": "Profile", "folders": "Decks", "explore": "Explore", "favorites": "Favorites", "settings": "Settings" }, "ocr": { "title": "OCR Vocabulary Extractor", "description": "Upload vocabulary table screenshots from textbooks to extract word-definition pairs", "uploadSection": "Upload Image", "uploadImage": "Upload Image", "dragDropHint": "Drag and drop an image here, or click to select", "dropOrClick": "Drag and drop an image here, or click to select", "changeImage": "Click to change image", "supportedFormats": "Supports: JPG, PNG, WebP", "deckSelection": "Select Deck", "selectDeck": "Select a deck", "chooseDeck": "Choose a deck to save extracted pairs", "noDecks": "No decks available. Please create a deck first.", "languageHints": "Language Hints (Optional)", "sourceLanguageHint": "Source language (e.g., English)", "targetLanguageHint": "Target/Translation language (e.g., Chinese)", "sourceLanguagePlaceholder": "Source language (e.g., English)", "targetLanguagePlaceholder": "Target/Translation language (e.g., Chinese)", "process": "Process Image", "processButton": "Process Image", "processing": "Processing...", "preview": "Preview", "resultsPreview": "Results Preview", "extractedPairs": "Extracted {count} pairs", "word": "Word", "definition": "Definition", "pairsCount": "{count} pairs extracted", "savePairs": "Save to Deck", "saveButton": "Save", "saving": "Saving...", "saved": "Successfully saved {count} pairs to {deck}", "ocrSuccess": "Successfully extracted {count} pairs to {deck}", "savedToDeck": "Saved to {deckName}", "saveFailed": "Failed to save pairs", "noImage": "Please upload an image first", "noDeck": "Please select a deck", "noResultsToSave": "No results to save", "processingFailed": "OCR processing failed", "tryAgain": "Please try again with a clearer image", "detectedLanguages": "Detected: {source} → {target}", "detectedSourceLanguage": "Detected source language", "detectedTargetLanguage": "Detected target language" }, "profile": { "myProfile": "My Profile", "email": "Email: {email}", "logout": "Logout" }, "settings": { "title": "Settings", "themeColor": "Theme Color", "themeColorDescription": "Choose your preferred theme color" }, "srt_player": { "uploadVideo": "Upload Video", "uploadSubtitle": "Upload Subtitle", "pause": "Pause", "play": "Play", "previous": "Previous", "next": "Next", "restart": "Restart", "autoPause": "Auto Pause ({enabled})", "uploadVideoAndSubtitle": "Please upload video and subtitle files", "uploadVideoFile": "Please upload video file", "uploadSubtitleFile": "Please upload subtitle file", "processingSubtitle": "Processing subtitle file...", "needBothFiles": "Both video and subtitle files are required to start learning", "videoFile": "Video File", "subtitleFile": "Subtitle File", "uploaded": "Uploaded", "notUploaded": "Not Uploaded", "upload": "Upload", "uploadVideoButton": "Upload Video", "uploadSubtitleButton": "Upload Subtitle", "subtitleUploaded": "Subtitle Uploaded ({count} entries)", "subtitleNotUploaded": "Subtitle Not Uploaded", "autoPauseStatus": "Auto Pause: {enabled}", "on": "On", "off": "Off", "videoUploadFailed": "Video upload failed", "subtitleUploadFailed": "Subtitle upload failed", "subtitleLoadSuccess": "Subtitle loaded successfully", "subtitleLoadFailed": "Subtitle load failed" }, "text_speaker": { "generateIPA": "Generate IPA", "viewSavedItems": "View Saved Items", "confirmDeleteAll": "Are you sure you want to delete everything? (Y/N)" }, "translator": { "detectLanguage": "detect language", "sourceLanguage": "source language", "auto": "Auto", "generateIPA": "generate ipa", "translateInto": "translate into", "chinese": "Chinese", "english": "English", "french": "French", "german": "German", "italian": "Italian", "japanese": "Japanese", "korean": "Korean", "portuguese": "Portuguese", "russian": "Russian", "spanish": "Spanish", "other": "Other", "translating": "translating...", "translate": "translate", "inputLanguage": "Input a language.", "history": "History", "enterLanguage": "Enter language", "add_to_folder": { "notAuthenticated": "You are not authenticated", "chooseFolder": "Choose a Folder to Add to", "noFolders": "No folders found", "folderInfo": "{id}. {name}", "close": "Close", "success": "Text pair added to folder", "error": "Failed to add text pair to folder" }, "autoSave": "Auto Save" }, "dictionary": { "title": "Dictionary", "description": "Look up words and phrases with detailed definitions and examples", "searchPlaceholder": "Enter a word or phrase to look up...", "searching": "Searching...", "search": "Search", "languageSettings": "Language Settings", "queryLanguage": "Query Language", "queryLanguageHint": "What language is the word/phrase you want to look up", "definitionLanguage": "Definition Language", "definitionLanguageHint": "What language do you want the definitions in", "otherLanguagePlaceholder": "Or enter another language...", "other": "Other", "currentSettings": "Current settings: Query {queryLang}, Definition {definitionLang}", "relookup": "Re-search", "saveToFolder": "Save to folder", "loading": "Loading...", "noResults": "No results found", "tryOtherWords": "Try other words or phrases", "welcomeTitle": "Welcome to Dictionary", "welcomeHint": "Enter a word or phrase in the search box above to start looking up", "lookupFailed": "Search failed, please try again later", "relookupSuccess": "Re-searched successfully", "relookupFailed": "Dictionary re-search failed", "pleaseLogin": "Please log in first", "pleaseCreateFolder": "Please create a folder first", "savedToFolder": "Saved to folder: {folderName}", "saveFailed": "Save failed, please try again later", "definition": "Definition", "example": "Example" }, "explore": { "title": "Explore", "subtitle": "Discover public decks", "searchPlaceholder": "Search public decks...", "loading": "Loading...", "noDecks": "No public decks found", "deckInfo": "{userName} • {cardCount} cards", "unknownUser": "Unknown User", "favorite": "Favorite", "unfavorite": "Unfavorite", "pleaseLogin": "Please login first", "sortByFavorites": "Sort by favorites", "sortByFavoritesActive": "Undo sort by favorites" }, "exploreDetail": { "title": "Deck Details", "createdBy": "Created by: {name}", "unknownUser": "Unknown User", "totalCards": "Total Cards", "favorites": "Favorites", "createdAt": "Created At", "viewContent": "View Content", "favorite": "Favorite", "unfavorite": "Unfavorite", "favorited": "Favorited", "unfavorited": "Unfavorited", "pleaseLogin": "Please login first" }, "favorites": { "title": "My Favorites", "subtitle": "Folders you've favorited", "loading": "Loading...", "noFavorites": "No favorites yet", "folderInfo": "{userName} • {totalPairs} pairs", "unknownUser": "Unknown User" }, "user_profile": { "anonymous": "Anonymous", "email": "Email", "verified": "Verified", "unverified": "Unverified", "accountInfo": "Account Information", "userId": "User ID", "username": "Username", "displayName": "Display Name", "notSet": "Not Set", "memberSince": "Member Since", "joined": "Joined", "logout": "Logout", "deleteAccount": { "button": "Delete Account", "title": "Delete Account", "warning": "This action is irreversible. All your data will be permanently deleted.", "warningDecks": "All your decks and cards", "warningCards": "All your learning progress", "warningHistory": "All your translation and dictionary history", "warningPermanent": "This action cannot be undone", "confirmLabel": "Type your username to confirm:", "usernameMismatch": "Username does not match", "cancel": "Cancel", "confirm": "Delete My Account", "success": "Account deleted successfully", "failed": "Failed to delete account" }, "decks": { "title": "Decks", "noDecks": "No decks yet", "deckName": "Deck Name", "totalCards": "Total Cards", "createdAt": "Created At", "actions": "Actions", "view": "View" } }, "decks": { "title": "Decks", "subtitle": "Manage your flashcard decks", "newDeck": "New Deck", "noDecksYet": "No decks yet", "loading": "Loading...", "deckInfo": "ID: {id} • {totalCards} cards", "enterDeckName": "Enter deck name:", "enterNewName": "Enter new name:", "confirmDelete": "Type \"{name}\" to delete:", "public": "Public", "private": "Private", "setPublic": "Set Public", "setPrivate": "Set Private", "importApkg": "Import APKG", "exportApkg": "Export APKG", "clickToUpload": "Click to upload an APKG file", "apkgFilesOnly": "Only .apkg files are supported", "parsing": "Parsing...", "foundDecks": "Found {count} deck(s)", "deckName": "Deck Name", "back": "Back", "import": "Import", "importing": "Importing...", "exportSuccess": "Deck exported successfully", "goToDecks": "Go to Decks" }, "follow": { "follow": "Follow", "following": "Following", "followers": "Followers", "followersOf": "{username}'s Followers", "followingOf": "{username}'s Following", "noFollowers": "No followers yet", "noFollowing": "Not following anyone yet" } }