Files
polylan-submitter/polylan_submitter/src/locales/en.json
T

460 lines
18 KiB
JSON

{
"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",
"getTheGames": "Get the games",
"footer": "Select a game above to begin submitting"
},
"games": {
"header": "Games",
"title": "Get the games",
"subtitle": "Don't own them yet? Grab them on Steam",
"empty": "No Steam games for this event",
"buy": "Buy {game}",
"free": "Free to Play",
"viewOnSteam": "View on Steam",
"play": "Play"
},
"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.",
"syncScopes": "Sync scopes"
},
"scopeSync": {
"title": "AAndT scope sync — {game}",
"intro": "Keeps this game's matches (scopes) in line with its AAndT on the PolyLAN site, using the AAndT's apibot API.",
"whatScopes": "Every AAndT match becomes a scope here, created or updated (name, open/closed) on each sync.",
"whatPlayers": "Players of each match are assigned to its scope, matched through their PolyLAN account. Players without an account here yet are skipped until they log in once.",
"whatClose": "A scope is open only while its match is playing. Finished matches, and matches removed from the AAndT, get closed.",
"whatLink": "Each playing match gets a \"Submit your proof here\" link on the PolyLAN site, pointing to its submission page here.",
"whatLive": "Players are moved live: when their match closes, they're sent back to the match list, and straight into their next match if there's only one. No refresh needed.",
"autoTitle": "Starts once, then keeps going on its own",
"autoInterval": "After starting, the sync re-triggers itself: every 15 seconds while the AAndT is in progress, every minute before that (registrations, preparation, ...).",
"autoStop": "It stops by itself once the AAndT is done or reviewed, or when you stop it here (or with the \"Stop scope sync\" admin action). Scopes are kept as they are when it stops.",
"autoErrors": "If a sync fails (AAndT site down, wrong token, ...), it's retried a minute later. The last error is shown below.",
"statusTitle": "Current state",
"loop": "Sync",
"running": "Running",
"notRunningShort": "Stopped",
"nextRun": "Next run",
"lastRun": "Last run",
"aandt": "AAndT status",
"scopes": "Scopes",
"activeOfTotal": "open / total",
"lastError": "Last run failed",
"never": "never",
"unknown": "Unknown",
"aandtStatus": {
"prep": "Preparation",
"published": "Published",
"registrations": "Registrations",
"registrationsDone": "Registrations closed",
"inProgress": "In progress",
"done": "Done",
"reviewed": "Reviewed"
},
"tokenTitle": "AAndT apibot token",
"tokenMissing": "No token is configured for this game yet. Paste the one from the AAndT's \"apibot\" admin page on the PolyLAN site.",
"tokenReplace": "A token is already configured. Paste a new one only to replace it (e.g. for a new AAndT); a running sync picks it up on its next run.",
"tokenPlaceholder": "Apibot token",
"tokenConfigured": "Token configured (leave empty to keep it)",
"start": "Start sync",
"saveToken": "Save token",
"stop": "Stop sync",
"started": "Sync started. It keeps running on its own until the AAndT is done.",
"alreadyRunning": "Sync is already running.",
"startFailed": "Failed to start the sync.",
"stopped": "Sync stopped.",
"notRunning": "Sync wasn't running.",
"stopFailed": "Failed to stop the sync."
},
"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)"
}
}
}