{ "common": { "appName": "PolyLAN Submitter", "back": "Back", "apiDocs": "API docs", "adminPanel": "Admin panel", "admin": "Admin", "staffBadge": "admin", "notLoggedIn": "Not logged in", "close": "Close", "cancel": "Cancel", "download": "Download", "retry": "Retry", "view": "View", "player": "Player", "rank": "Rank", "you": "You", "pts": "pts", "points": "Points", "pointsUnit": "points", "cost": "Cost", "cycles": "Cycles", "area": "Area", "puzzle": "Puzzle", "files": "Files", "date": "Date", "notes": "Notes", "actions": "Actions", "noRankYet": "No rank yet", "noResultsYet": "No results available yet.", "noSubmissionsYet": "No submissions yet", "yourRanking": "Your Ranking", "currentRank": "Current Rank", "clearCache": "Clear Cache", "cacheClearedSuccess": "Cache cleared successfully!", "cacheClearError": "Error clearing cache. Please try again.", "pleaseTryAgain": "Please try again.", "submitSolution": "Submit Solution", "selectedFiles": "Selected Files:", "chooseFiles": "Choose Files", "submitting": "Submitting...", "submit": "Submit", "maxFileSize": "Maximum file size: 256 MB per file", "notesOptional": "Notes (Optional)", "selectPuzzlePlaceholder": "Select puzzle...", "pointsCoefficients": "Points Coefficients", "idLabel": "ID: {id}", "copy": "Copy", "copied": "Copied!", "processing": "Processing...", "pending": "Pending", "unknownError": "Unknown error", "fetchResultsError": "Failed to fetch results", "fileWord": "file | files", "fileCount": "{n} file | {n} files", "marketStatus": { "draft": "draft", "open": "open", "closed": "closed", "resolved": "resolved" } }, "home": { "title": "PolyLAN Submitter", "subtitle": "Choose a game and submit your best solutions", "submitResults": "Submit results", "footer": "Select a game above to begin submitting" }, "clock": { "pageTitle": "Beat the Clock", "header": "Beat the Clock", "connected": "connected", "reconnecting": "reconnecting…", "press": "PRESS", "nextPlayer": "▲ next player", "chasingYou": "▼ chasing you", "yourRank": "you · rank #{rank} of {total}" }, "place": { "pageTitle": "Place", "header": "Place", "connected": "connected", "reconnecting": "reconnecting…", "showGrid": "Show grid", "hideGrid": "Hide grid" }, "market": { "pageTitle": "Market", "header": "Market", "subtitle": "Place your bets on upcoming events", "myBets": "My Bets", "allMarkets": "All Markets", "createMarket": "Create Market", "noMarkets": "No markets available" }, "noita": { "pageTitle": "Noita Submitter", "header": "Noita Submitter", "totalScore": "Total Score", "objectivesCompleted": "Objectives Completed", "deaths": "Deaths", "globalLeaderboard": "Global Leaderboard", "score": "Score", "objectivesColumn": "Objectives", "objectives": "Objectives", "submitYourRun": "Submit Your Run", "uploadPrompt": "Click to upload or drag and drop", "logFileLabel": "The log file", "submitRun": "Submit Run", "noObjectivesYet": "No objectives completed yet", "noObjectivesHint": "Submit your runs to unlock objectives!", "searchPlaceholder": "Search objectives...", "showingResults": "Showing {shown} of {total} objectives", "noObjectivesMatch": "No objectives match your search", "runSubmittedSuccess": "Run submitted successfully!", "runSubmitError": "Error submitting run. Please try again.", "columns": { "objectiveId": "Objective ID", "yourPoints": "Your points", "firstSeen": "First seen", "seed": "Seed" } }, "opusMagnum": { "pageTitle": "Opus Magnum Puzzle Submitter", "header": "Opus Magnum Puzzle Submitter", "autoReload": "Auto reload page in {seconds} seconds ...", "loadingPuzzles": "Loading puzzles...", "errorLoadingData": "Error Loading Data", "tournamentClosed": "Tournament Closed", "tournamentClosedMessage": "This tournament is no longer accepting new submissions.", "noPuzzlesTitle": "No Puzzles Available", "noPuzzlesMessage": "Check back later for new puzzle collections!" }, "submissions": { "pageTitle": "{game} Submissions — {scope}", "live": "Live", "offline": "Offline", "submittingForMatch": "Submitting for match:", "submitResultsTitle": "Submit Results", "uploadPrompt": "Click to upload, drag and drop, or paste", "uploadHint": "Any file type supported • Images from clipboard welcome", "uploadLimitExceeded": "Maximum {max} files allowed. You can add {count} more {unit}.", "filesSelectedSuffix": "files selected", "notesPlaceholder": "Add any notes special for this upload", "thisFileType": "this file type", "copyFailed": "Failed to copy", "guidelines": { "title": "Submission Guidelines", "fileUpload": { "title": "File Upload", "body": "Upload your results as screenshots, logs, or any other file format. You can upload multiple files at once." }, "notes": { "title": "Add Notes", "body": "Include any additional context about your submission. This helps reviewers understand your results." }, "verification": { "title": "Verification", "body": "Your submission will be reviewed and verified. You'll receive confirmation once it's been processed." } }, "yourSubmissions": "Your Submissions", "noSubmissionsHint": "Upload your first submission above to get started", "fileStatus": "File Status", "ocrStatus": "OCR Status", "previewNotAvailableFor": "Preview not available for {type}", "fileSizeLabel": "File size: {size}", "processOcr": "Process OCR", "filePreview": "File Preview", "textPreviewUnavailable": "Text content preview not available. Download file to view.", "previewNotAvailable": "Preview not available", "ocrData": "OCR Data", "extractedText": "File - Extracted Text:", "ocrProcessing": "OCR is being processed...", "ocrFailed": "OCR processing failed", "ocrWaiting": "Waiting for OCR processing...", "cropOcrResults": "Crop OCR Results ({count}):", "cropLabelFallback": "Crop ({x}, {y})", "cropProcessingFailed": "Processing failed", "cropsData": "Crops Data", "cropDrawHint": "Drag on image to create crop (blue) or existing crops (green)", "cropLabelOptional": "Crop Label (optional)", "cropLabelPlaceholder": "e.g., Top-left corner", "saveCrop": "Save Crop", "creatingCrop": "Creating...", "cropsCount": "Crops ({count}):", "deleteCropTooltip": "Delete crop", "noCropsYet": "No crops yet", "deleteCropConfirm": "Delete this crop?", "submitSuccess": "Submission successful!", "submitError": "Error submitting: {message}", "createCropError": "Error creating crop: {message}", "deleteCropError": "Error deleting crop: {message}", "processOcrError": "Error processing OCR: {message}" }, "submissionsSelect": { "title": "Select your match", "description": "You're assigned to multiple matches for {game}. Pick which one you want to submit for.", "notAssignedTitle": "No match assigned", "notAssignedMessage": "You are not assigned to a scope/matches, you cannot submit a score." }, "errorPage": { "notFound": { "title": "Page not found", "message": "The page you're looking for doesn't exist or has been moved." }, "serverError": { "title": "Server error", "message": "Something went wrong on our end. Please try again later." }, "generic": { "title": "Something went wrong", "message": "An unexpected error occurred." }, "goHome": "Go home", "goBack": "Go back" }, "components": { "adminPanel": { "title": "Admin Panel", "totalSubmissions": "Total Submissions", "totalResponses": "Total Responses", "needValidation": "Need Validation", "validationRate": "Validation Rate", "autoValidateAll": "Auto validation for all responses", "responsesNeedingValidation": "Responses Needing Validation", "confidence": "Confidence", "costLabel": "Cost: {value}", "cyclesLabel": "Cycles: {value}", "areaLabel": "Area: {value}", "validate": "Validate", "autoValidation": "Auto Validation", "allValidated": "All responses validated!", "noValidationNeeded": "No responses currently need manual validation.", "validateResponseTitle": "Validate Response", "reviewHint": "Review and correct the OCR data below", "enterCost": "Enter cost", "enterCycles": "Enter cycles", "enterArea": "Enter area", "validating": "Validating...", "validationFailed": "Validation failed: {error}", "validationFailedGeneric": "Validation failed" }, "fileUpload": { "title": "Upload Solution Files", "hint": "Images or GIFs only", "dropHint": "Drop your files here or", "supportedFormats": "Supported formats: JPG, PNG, GIF (max 256MB each)", "extracting": "Extracting puzzle data...", "ocrComplete": "✓ OCR Complete", "overallConfidence": "Overall confidence: {pct}%", "retryOcr": "Retry OCR", "puzzleLabel": "Puzzle:", "puzzleConfidence": "Puzzle confidence: {pct}%", "costLabel": "Cost:", "costConfidence": "Cost confidence: {pct}%", "cyclesLabel": "Cycles:", "cyclesConfidence": "Cycles confidence: {pct}%", "areaLabel": "Area:", "areaConfidence": "Area confidence: {pct}%", "lowConfidence": "Low OCR Confidence", "selectManually": "Please select the correct puzzle manually", "extractPuzzleData": "Extract Puzzle Data", "addMoreFiles": "Add More Files", "invalidFileType": "{name} is not a valid image file", "fileTooLarge": "{name} is too large (max 256MB)", "processFailed": "Failed to process {name}" }, "marketCard": { "untilClose": "until close", "closeMarket": "Close Market", "resolveMarketButton": "Resolve Market", "resolveModalTitle": "Resolve Market - Select Winner", "resolveAndDistribute": "Resolve & Distribute Points", "pool": "Pool: {n} pts", "multiplierLabel": "Multiplier: {x}x", "yourBet": "Your bet: {n} pts", "potential": "Potential: {n} pts", "increaseBetLabel": "Increase bet (current: {n} pts)", "pointsToBet": "Points to bet", "increaseByPlaceholder": "Enter amount to increase by", "enterPointsPlaceholder": "Enter points", "increaseBet": "Increase Bet", "placeBet": "Place Bet", "yourBetTitle": "Your Bet", "optionLabel": "Option: {text}", "amountLabel": "Amount: {n} pts", "won": "✓ You Won!", "lost": "✗ You Lost", "resolved": "Resolved", "winnerLabel": "Winner: {text}", "errorClosing": "Error closing market", "selectWinnerRequired": "Please select a winning option", "errorResolving": "Error resolving market", "failedToPlaceBet": "Failed to place bet", "errorPlacingBet": "Error placing bet", "ended": "Ended" }, "marketCharts": { "showCharts": "Show charts", "hideCharts": "Hide charts", "payoutTitle": "Potential payout if “{option}” wins", "payout": "Payout", "stake": "Your stake", "netGain": "Net gain", "ifYouBet": "If you bet {n} pts", "payoutHint": "Based on the current pools. Payouts shift as others bet.", "historyTitle": "Points bet over time", "noBets": "No bets yet", "other": "Other", "showTable": "Show data table", "time": "Time", "option": "Option", "amount": "Amount", "optionPool": "Option pool" }, "puzzleCard": { "byAuthor": "by {author}", "moreTags": "+{n} more", "viewOnSteam": "View on Steam Workshop", "solutionsCount": "Solutions ({n})", "needsManualValidation": "Needs manual validation", "noSolutionsYet": "No solutions yet", "uploadHint": "Upload solutions using the submit button" }, "puzzleResults": { "title": "Results by Puzzle", "winningSolutions": "🏆 Winning Solutions", "columns": { "pos": "Pos", "user": "User", "totalPts": "Total Pts", "totalCoef": "Total Coef", "gif": "GIF" } }, "results": { "totalPoints": "Total Points", "puzzlesSolved": "Puzzles Solved", "generalResults": "General Results", "clearCacheError": "Error clearing cache: {detail}", "tabs": { "overall": "Overall Ranking", "byPuzzle": "By Puzzle" }, "submissionsCount": "{n} submissions", "podium": { "first": "🏆 1st Place", "second": "🥈 2nd Place", "third": "🥉 3rd Place" }, "totalWithCoef": "Total (with coef.)" }, "topUsersLeaderboard": { "title": "Top 10 Users" }, "userBets": { "empty": "You haven't placed any bets yet", "totalBets": "Total Bets", "active": "Active", "waitingForResult": "Waiting for result", "won": "Won", "wonPointsLabel": "+{n} points", "lost": "Lost", "betterLuck": "Better luck next time", "activeBets": "Active Bets ({n})", "betOn": "Bet on: {option}", "statusLabel": "Status:", "wonBets": "Won Bets ({n})", "correctBetOn": "Correct! You bet on: {option}", "lostBets": "Lost Bets ({n})", "youBetOn": "You bet on: {option}", "winnerLabel": "Winner: {option}" }, "winners": { "title": "Top Submissions", "fetchError": "Failed to fetch submissions", "columns": { "puzzle": "Puzzle", "user": "User", "totalPts": "Total Pts", "totalCoef": "Total Coef", "gif": "GIF" } }, "submissionForm": { "detectedPuzzles": "Detected Puzzles ({n})", "manualSelectionRequired": "Manual Puzzle Selection Required", "manualSelectionBody": "{n} file(s) have low OCR confidence for puzzle names. Please select the correct puzzle for each file before submitting.", "retryOcr": "Retry OCR on low confidence puzzle", "notesPlaceholder": "Add any notes about your solution, approach, or interesting findings...", "requestManualValidation": "Request manual validation", "manualValidationHint": "Check this if you want an admin to manually review your submission, even if OCR confidence is high.", "manualValidationNote": "Note: This will be automatically checked if any OCR confidence is below 80%.", "selectPuzzlesRemaining": "Select Puzzles ({n} remaining)" } } }