chore: add i18n
This commit is contained in:
@@ -0,0 +1,366 @@
|
||||
{
|
||||
"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",
|
||||
"marketCard": {
|
||||
"title": "Market",
|
||||
"description": "Place your bets and compete",
|
||||
"cta": "Place bets"
|
||||
},
|
||||
"submitResults": "Submit results",
|
||||
"footer": "Select a game above to begin submitting"
|
||||
},
|
||||
"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."
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"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)"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user