{"common":{"loading":"Loading...","close":"Close","continue":"Continue","start":"Start","load":"Load","loaded":"Loaded","delete":"Delete","cancel":"Cancel","save":"Save","confirm":"Confirm","authenticationRequired":"Authentication required","lastSaved":"Last saved","copy":"Copy","create":"Create","searchPlaceholder":"Search...","noOptions":"No options","title":"Title","enterTitle":"Enter title...","name":"Name","enterName":"Enter name...","description":"Description","optionalDescription":"Optional description...","optional":"Optional","subtitle":"Subtitle","enterSubtitle":"Enter subtitle...","edit":"Edit","add":"Add","custom":"Custom","year":"Year","preview":"Preview","browse":"Browse","upload":"Upload","reset":"Reset","clear":"Clear","theme":"Theme","contest":"Contest","image":"Image","pasteImageUrl":"Paste an image URL","or":"Or","dragAndDropOrClickToUpload":"Drag & drop or click to upload","orSelectExisting":"Or select existing","randomize":"Randomize","restart":"Restart","settings":"Settings","syncTheme":"Sync theme","shuffle":"Shuffle","sortAZ":"Sort A-Z","sortZA":"Sort Z-A","resetList":"Reset list","clearAll":"Clear all","minimumRank":"Minimum rank","maximumRank":"Maximum rank","decrease":"Decrease","increase":"Increase","addCustomCountry":"Add custom country","addGroup":"Add group","reorder":"Reorder","addPoint":"Add point","sortByName":"Sort by name","sortByPoints":"Sort by points","enableMultiselect":"Enable multiselect","disableMultiselect":"Disable multiselect","deleteSelectedCustomEntries":"Delete {count} selected custom entries in {section}","editSection":"Edit {section}","clearQualifiersFor":"Clear qualifiers for {stage}","decreaseQualifiersFor":"Decrease qualifiers for {stage}","increaseQualifiersFor":"Increase qualifiers for {stage}","loadYearData":"Load year data","country":"Country","current":"Current","dontShowAgain":"Don't show this again","more":"More","share":"Share"},"Metadata":{"title":"DouzePoints - Eurovision Scoreboard Simulator","description":"Experience the excitement of Eurovision with DouzePoints, the interactive scoreboard simulator. Vote for countries, watch points accumulate, and relive the magic of Eurovision Song Contest"},"error":{"title":"Oops! Something Went Wrong","description":"We encountered an unexpected error","error":"Error","errorInfoReloadPage":"First, try clicking \"Reload Page\" to reload the page keeping all local data.","errorInfoResetApplication":"If the problem persists, click \"Reset Application\" to clear all local data and reload the app.","errorInfoNotAffected":"Your saved profile data and cloud-synced information won't be affected.","errorInfoReport":"The error is automatically reported to the developer. But you can still send an email to the developer with the additional error details (e.g., what you did to trigger the error) at","reloadPage":"Reload Page","resetApplication":"Reset Application","imageUpload":{"error":"Failed to process image","errorUnsupportedImageType":"Unsupported image type. Allowed: PNG, JPEG, WEBP, SVG","errorImageTooLarge":"Image is too large. Max size is {maxSize}MB. Please compress it or upload a smaller image."},"invalidInput":"Invalid input","pleaseSelectValidImageFile":"Please select a valid image file.","fontUpload":{"unsupportedType":"“{name}” is not a supported font file. Use .woff2, .woff, .ttf or .otf.","tooLarge":"“{name}” is too large. Max size is {maxMb} MB.","tooMany":"You can upload up to {max} files at once (one per weight).","failed":"Failed to upload font"}},"setup":{"eventStageModal":{"settings":"Settings","voters":"Voters","runningOrder":"Running Order","pleaseSelectAtLeastOneVotingCountry":"Please select at least one voting country","televoteOnly":"Televote Only","juryOnly":"Jury Only","combined":"Combined","juryAndTelevote":"Jury and Televote","votingMode":"Voting Mode","numberOfQualifiers":"Number of qualifiers","qualifierTargets":"Qualifier targets","qualifierTargetsDescription":"Choose how many entries from this stage advance to each later stage.","rankBasedQualification":"Rank-based qualification","qualifierTargetsDescriptionRankBased":"Specify rank ranges for qualification (e.g., ranks 1-3 go to Grand Final, ranks 4-5 go to Semi-Final, ranks 6-10 go to Heat).","addStage":"Add Stage","editStage":"Edit Stage","stageNamePlaceholder":"Semi-Final 3, Quarter-Final 1, Heat 1, etc.","qualifiersFrom":"<span>{amount}</span> from <span2>{sourceStageName}</span2>","nonVotingCountries":"Non-Voting Countries","searchAndClickToAdd":"Search and click to add","searchCountries":"Search countries...","noVotingCountriesSelected":"No voting countries selected. Add countries from the list below.","votingCountries":"Voting Countries ({count})","participants":"Participants ({count})","shareRunningOrder":"Share running order","dragAndDropToReorder":"Drag and drop to reorder","inStageOnly":"In stage only","otherStageOnly":"Other stage only","allParticipants":"All participants","general":"General","startStage":"Start {stageName}","enablePredefinedVotesForStage":"Enable predefined voting for this stage","odds":"Odds","oddsOverrideNote":"These odds apply to this stage only. The persistent global contest odds are set in Settings.","resetToGlobalOdds":"Reset to global","confirmCloseTitle":"Close stage setup?","confirmCloseDescription":"Any unsaved changes will be lost."},"validation":{"noCountriesInStage":"There are no countries in {stageName}.","noVotingCountriesInStage":"There are no voting countries in {stageName}.","qualifiersAmountMustBeAtLeast1":"The number of qualifiers in {stageName} must be at least 1.","qualifiersAmountMustBeLessThanParticipants":"The number of qualifiers in {stageName} must be less than the number of participants.","participantsMustBeAtLeast":"The number of participants in {stageName} must be at least {count} (depends on the number of items in the points system).","participantsMustBeAtLeastTwo":"The number of participants in {stageName} must be at least 2 (one voting country and one to receive points).","totalQualifiersMustBeAtLeast":"The total number of qualifiers for the Grand Final must be at least {count}.","grandFinalParticipantsMustBeAtLeast":"The number of the Grand Final participants must be at least {count}.","qualifiersExceedParticipants":"The number of qualifiers in {stageName} exceeds the number of participants.","qualifiersCannotMoveToPrecedentStage":"Qualifiers cannot move to a precedent stage ({stageName} -> {targetStageName}).","targetStageNotFound":"Target stage \"{targetStageId}\" not found.","stageOrderMustBeUnique":"Stage order must be unique.","rankRangesOverlap":"Rank ranges overlap in {stageName}.","invalidRankRange":"Invalid rank range in {stageName}."},"eventSetupModal":{"grandFinalOnly":"GF only","confirmGFOnlyTitle":"Grand Final only?","confirmNotGFOnlyTitle":"Restore all shows?","confirmGFOnlyDescription":"This will reset your setup and keep only the Grand Final.","confirmNotGFOnlyDescription":"This will reset your setup and restore all shows (Semi-Finals + Grand Final).","confirmLowParticipantsTitle":"Fewer participants than recommended","confirmLowParticipantsDescription":"The number of participants in {stageName} is less than {count} (one more than the number of items in the points system). In the next step you can override the points system for this stage on the General tab. If you continue without changing it, the simulation may not work correctly while there are fewer participants than the number of unique points system items plus one ({uniqueCount} + 1).","notQualified":"Not Qualified","notParticipating":"Not Participating","youNeedToBeLoggedInToCreateAndUseCustomEntries":"You need to be logged in to create and use custom entries.","searchCountries":"Search countries...","countriesAmount":"{count, plural, =1 {country} other {countries}}","entriesAmount":"{count, plural, =1 {entry} other {entries}}","autoQualifiers":"Auto-Qualifiers","qualifiers":"Qualifiers","enterThePointsEachVotingCountryAwardsToParticipants":"Enter the points each voting country awards to participants","reorderStages":"Reorder Stages","importedEntriesDescription":"Imported entries are custom entries that have been imported from other contests. They are not editable.","areYouSureYouWantToSaveImportedEntries":"Save {count, plural, =1 {this imported entry} other {# imported entries}}?","areYouSureYouWantToSaveImportedEntriesDescription":"This will add the imported entries to your custom entries.","customEntriesSavedSuccessfully":"Custom entries saved successfully!","failedToSaveCustomEntries":"Failed to save custom entries. Please try again.","saveToYourCustomEntries":"Save to your custom entries"},"votingPredefinition":{"tabDetailed":"Detailed","detailedView":"Detailed","rankView":"Rank","randomizePoints":"Randomize points","randomizeRanking":"Randomize ranking","dragToRankHint":"Drag countries to set the final order, then generate a matching points breakdown.","tabTotals":"Totals (share only)","totalsHint":"Totals are for sharing results only. Use the Detailed tab and Save to run a simulation.","confirmCloseTitle":"Close voting predefinition?","confirmCloseDescription":"Any unsaved changes will be lost.","shareScoreboardResults":"Scoreboard","shareSplit":"Split table","shareSummary":"Summary table","spreadsheet":{"import":"Import","export":"Export","formatHelp":"Spreadsheet format help","tooltipIntro":"Import or export vote breakdowns as Excel (.xlsx). Each section is a matrix of participants (rows) and voting countries (columns).","tooltipRowFormat":"Each row should include a participant country name and point values per voter. A totals column (TOT) is optional.","tooltipSections":"For split voting, use separate JURY and TELEVOTE sections. Combined totals can be included as a third section on export.","tooltipFlexible":"Country names are matched flexibly — column order and row order do not need to match the app.","tooltipDragDrop":"You can also drag and drop a spreadsheet onto the Detailed tab to import.","importSuccess":"Imported {count} scores from spreadsheet.","exportSuccess":"Spreadsheet exported.","successWithInvalidVoters":"Imported {count} scores, but some voters are still incomplete: {voters}.","unmatchedCountries":"Could not match countries: {countries}.","multiplePointsBlocked":"Import is not available when multiple points to the same country are enabled.","emptyFile":"The selected file is empty.","noSections":"No vote sections were found in the spreadsheet.","noAssignments":"No valid scores were found in the spreadsheet.","sectionSkipped":"Skipped sections: {sections}.","exportUnavailable":"Nothing to export yet.","dropToImport":"Drop a spreadsheet file to import votes.","invalidDropFile":"Please drop an Excel (.xlsx, .xls) or CSV file."},"presets":{"savePreset":"Save preset","loadPreset":"Load preset","savePresetTitle":"Save preset","editPresetTitle":"Edit preset","presetName":"Preset name","presetNamePlaceholder":"My preset","nameRequired":"Name is required","loadDetailedPresetsTitle":"Load detailed preset","loadTotalsPresetsTitle":"Load totals preset","noPresetsYet":"No presets saved yet.","metaCreated":"Created","metaParticipants":"Participants","metaVoters":"Voters","metaSource":"Saved from","load":"Load","edit":"Edit","deletePresetConfirmTitle":"Delete preset?","deletePresetConfirmDescription":"Delete \"{name}\"? This cannot be undone.","toastPresetCreated":"Saved preset \"{name}\"","toastPresetUpdated":"Updated preset \"{name}\"","toastPresetLoadedDetailed":"Loaded detailed preset \"{name}\"","toastPresetLoadedTotals":"Loaded totals preset \"{name}\"","toastPresetDeleted":"Deleted preset \"{name}\""},"totalsView":"Totals","generateBreakdown":"Generate breakdown","regenerateBreakdown":"Regenerate breakdown","totalsIntro":"Type a target total per country — leave a field <b>blank</b> to let the engine decide it (blank isn’t zero). Not every set of totals can be split into a valid ballot: each voting country hands out a fixed set of points and must use every one exactly once, so we generate the <b>closest achievable</b> breakdown and flag anything we had to adjust.","totalsUngeneratedHint":"Enter target totals and press \"Generate breakdown\" to enable Save.","totalsStaleHint":"You changed a total. Regenerate the breakdown to reflect your changes before saving.","totalsAdjustedTitle":"Some totals were adjusted","totalsAdjustedExplainer":"Not every combination of totals can be split into a valid vote-by-vote breakdown — each voting country hands out a fixed set of points and must use all of them, once each. We generated the closest possible breakdown; adjusted countries are marked below.","adjustmentBadge":"Adjusted","adjustmentTooltip":"Adjusted: you entered {requested}, closest achievable is {achieved}","budgetTitleJury":"Jury budget","budgetTitleTelevote":"Televote budget","budgetTitleCombined":"Combined budget","budgetUsed":"{used} / {total}","budgetFillCount":"{filled} of {count} countries filled — the rest are generated automatically.","budgetOverSingle":"{country}: {value} exceeds the {max} maximum for one country ({voters} × {top}). It will be clamped when you generate.","budgetOverBudget":"Totals exceed the {total}-point budget — some will be scaled down when you generate.","shareBreakdown":"Breakdown table","resetField":"Clear this total","totalsInSyncHint":"The breakdown already matches these totals. Change a total to regenerate it.","kicker":"Predefine votes","saveVotes":"Save votes","participantColumn":"Participant","pointsSummary":"Points: {points}","detailedHelp":"Enter the points each voting country awards its rivals: <b>{points}</b> — each value used once per column. A country can’t vote for itself (the shaded diagonal). The dot on each column header shows whether that ballot is <b>complete</b>, <b>incomplete</b>, or <b>invalid</b>.","channelSwitchLabel":"Points channel","validityComplete":"complete","validityIncomplete":"incomplete","validityInvalid":"invalid","layoutGrid":"Grid layout","layoutList":"List layout","totalsHelpLabel":"How totals work","dismissHelp":"Dismiss","shareWhat":"Share what?","shareSourceMatrix":"from this matrix","shareSourceTotals":"from typed totals","shareScoreboardSub":"podium","shareSplitSub":"jury / tele","shareSummarySub":"totals","shareBreakdownSub":"voter × entry","shareBreakdownEmpty":"no votes","presetsLabel":"Presets","spreadsheetLabel":"Spreadsheet","resetMatrixTitle":"Reset matrix","resetMatrixDescription":"Every predefined vote will be removed. This can’t be undone.","resetTotalsTitle":"Reset totals","resetTotalsDescription":"Every typed total will be cleared and the generated breakdown discarded. This can’t be undone.","saveBlockedTooltip":"Some voters don’t award a complete set of points yet.","saveBlockedCallout":"Can’t save yet — these voters don’t award a complete set of points: <b>{voters}</b>. Fix the flagged columns (amber / red dots) and try again.","toastVotesSaved":"Votes saved","toastVotesRandomized":"Votes randomized","toastMatrixCleared":"Matrix cleared","toastTotalsCleared":"Totals cleared","toastRankingRandomized":"Ranking randomized","toastRankPointsGenerated":"Points generated for this ranking","toastBreakdownGenerated":"Breakdown generated","toastBreakdownGeneratedAdjusted":"Breakdown generated · {count} adjusted"},"customCountryModal":{"pleaseSignInToCreateCustomEntries":"Please sign in to create custom entries.","entryNameIsRequired":"Entry name is required.","customEntrySavedSuccessfully":"Custom entry saved successfully!","pleaseSignInToDeleteCustomEntries":"Please sign in to delete custom entries.","entryDeletedSuccessfully":"Entry deleted successfully!","standardCountries":"Standard Countries","customEntries":"Custom Entries","recentCustomEntries":"Recent Custom Entries","presets":"Presets","editCustomEntry":"Edit Custom Entry","createCustomEntry":"Create Custom Entry","group":"Group","noGroup":"No group"},"customEntryGroupModal":{"createGroup":"Create Group","editGroup":"Edit Group","groupCreatedSuccessfully":"Group created successfully!","groupUpdatedSuccessfully":"Group updated successfully!","groupDeletedSuccessfully":"Group deleted successfully!","failedToSaveGroup":"Failed to save group","failedToDeleteGroup":"Failed to delete group"},"categories":{"imported":"Imported","custom":"Custom","allTimeParticipants":"All-Time Participants","asia":"Asia","africa":"Africa","northAmerica":"North America","southAmerica":"South America","oceania":"Oceania","restOfEurope":"Rest of Europe","inStage":"In stage","otherStage":"Other stage","notParticipating":"Not participating","autoQ":"Auto-Q"}},"simulation":{"pointsGoTo":"{count, plural, =1 {# point} other {# points}} go to...","chooseCountryToGivePoints":"Choose a country to give {count, plural, =1 {# point} other {# points}}","enterTelevotePointsFor":"Enter televote points for <span>{country}</span>","winnerOf":"<span>{country}</span> is the winner of <span2>{event}</span2>!","random":"Random","winnerRevealTeaser":"The winner of <span>{event}</span> is...","backToScoreboard":"View Scoreboard","televote":"Televote","juryVoting":"Jury voting","voting":"Voting","ordinalOfCountries":"<span>{index, selectordinal, one {#st} two {#nd} few {#rd} other {#th}}</span> of <span>{length}</span> countries","enterTelevotePoints":"Enter televote points","totalTelevotePointsCannotExceed":"Total televote points cannot exceed {count}","maxPossibleTelevotePoints":"The maximum possible number of points is {count}","maxPossibleTelevotePointsForCountry":"The maximum number of points for this country is {count}","manualTelevotePointsWarning":"Manually adjusting televote points won't be reflected in the detailed stats. Are you sure you want to continue?","confirmWarningTitle":"Warning","limitDisabled":"Limit disabled","awarded":"Awarded: {count} / {totalAvailablePoints}","enterPoints":"Enter points...","vote":"Vote","disableLimitForThisVote":"Disable limit for this vote","disableLimitForThisShow":"Disable limit for this show","voteRandomly":"Vote randomly","finishRandomly":"Finish randomly","douzePoints":"{count} {count, plural, =1 {point} other {points}}","chooseCountryToQualify":"Choose a country to qualify","juryScaleReveal":{"title":"Jury vote","awardingPoints":"Awarding {count, plural, =1 {# point} other {# points}}","nextPoints":"Next: {count, plural, =1 {# point} other {# points}}","douzePointsPhase":"Douze points","spokespersonsNext":"Next: the spokespersons","revealPoints":"Reveal {count, plural, =1 {# point} other {# points}}","juryVoteComplete":"Jury vote complete","showResults":"Show results","continueToTelevote":"Continue to televote","moreVoters":"+{count}"},"qualifiers":"{stageName} Qualifiers","qualifiedForTheGrandFinal":"Qualified<br></br>for the<br></br><span>Grand Final</span>","qualifiedForStage":"Qualified<br></br>for the<br></br><span>{stageName}</span>","qualifiedEntries":"Qualified<br></br><span>entries</span>","presentation":{"title":"Presentation","pause":"Pause","pointsGrouping":{"title":"Points grouping","individual":"Individual","grouped":"Grouped"},"pauseAfterAnimatedPoints":"Pause after animated points","slow":"Slow","fast":"Fast"},"winnerModal":{"title":"We have a winner!","points":"<span1>{country}</span1> won with <span2>{points}</span2> points!","startOver":"Start over"},"header":{"hostingCountryLogo":"Hosting country logo","cancelSimulation":"Cancel simulation","cancelSimulationConfirmation":"Are you sure you want to cancel the simulation?","restart":"Restart","undo":"Undo","share":"Share","setup":"Setup"},"phaseActions":{"viewStats":"Stats","showNQs":"Show {nonQualifiersLabel}","finalistsOnly":"Finalists only","selectEventStage":"Select event stage","continueTo":"Continue to {nextPhase}"},"finalReveal":{"currentLeader":"Current Leader","needsPointsToWin":"Needs <span>{count, plural, =1 {# point} other {# points}}</span> to win","receivedPointsFromPublic":"Received <span>{count, plural, =1 {# point} other {# points}}</span> from the public"},"finalStats":{"breakdown":"Breakdown","split":"Split","summary":"Summary","noFinishedStages":"No finished stages to display stats for.","rank":"Rank","total":"Total","jury":"Jury","televote":"Televote","country":"Country","points":"Points","juryPlacement":"Jury Placement","televotePlacement":"Televote Placement","totalPoints":"Total Points","juryPoints":"Jury Points","televotePoints":"Televote Points","combined":"Combined","spreadsheetExportSuccess":"Spreadsheet exported."}},"widgets":{"previous":"Previous","next":"Next","pageNOfM":"Page {page} of {totalPages}","yours":"Yours","public":"Public","private":"Private","community":"Community","local":"Local","applied":"Applied","apply":"Apply","copy":"Copy","copies":"Copies","remix":"Remix","like":"Like","likes":"Likes","save":"Save","saves":"Saves","active":"Active","created":"Created","saved":"Saved","nCopies":"{count} {count, plural, =1 {copy} other {copies}}","nLikes":"{count} {count, plural, =1 {like} other {likes}}","nSaves":"{count} {count, plural, =1 {save} other {saves}}","quickSelect":"Quick Select","quickSelectAdded":"Added to quick select!","quickSelectRemoved":"Removed from quick select!","copyLink":"Copy link","profile":{"title":"Profile","description":"Manage your profile and followers","continueWithGoogle":"Continue with Google","editProfile":"Edit Profile","authDescription":"Authenticate to be able to create a profile, use custom countries, and more.","loggingOut":"Logging out...","logout":"Logout","areYouSureYouWantToLogout":"Are you sure you want to logout?","error":"Failed to login","success":"Logged in successfully","changePicture":"Change Picture","deletePicture":"Delete Picture","username":"Username","name":"Name","profileUpdatedSuccessfully":"Profile updated successfully!","joinedOn":"Joined on","followers":"{count} {count, plural, =1 {follower} other {followers}}","yourProfile":"Your profile","following":"Following","follow":"Follow","signInToFollow":"Sign in to follow","followedUser":"Followed user!","unfollowedUser":"Unfollowed user!"},"contentType":{"all":"All","themes":"Themes","contests":"Contests"},"foundNItems":"Found {count} {count, plural, =1 {item} other {items}}","userProfile":{"noContentFound":"No content found matching your search.","noFollowingContent":"No content from people you follow yet. Follow users to see their themes and contests here.","entryLeaderboard":{"buttonTitle":"Entry leaderboard","title":"{name}'s entry leaderboard","subtitle":"Click any row to view detailed results across this user's public completed contests.","noData":"No public completed contests yet.","searchPlaceholder":"Search countries...","noEntriesMatch":"No entries match your search.","customEntryName":"Custom entry"}},"searchUsers":{"title":"Find users","placeholder":"Search by name, username or email...","prompt":"Start typing to search for users.","noResults":"No users found matching your search."},"contests":{"title":"Contests","description":"Create contests or select public contests","yourContests":"Your Contests","publicContests":"Public Contests","searchContests":"Search contests...","createContest":"Create Contest","editContest":"Update Contest","enterContestName":"Enter contest name","makeContestPublic":"Make contest public","hostingCountry":"Hosting Country","overwriteContestSetupAndResults":"Overwrite contest setup & results","overwriteContestSetupAndResultsTooltip":"When enabled, updates the contest structure and simulation results using the current state. When disabled, only the basic info (name, year, hosting country, etc.) will be updated.","foundNContests":"Found {count} {count, plural, =1 {contest} other {contests}}","youHaveNContests":"You have {count} {count, plural, =1 {contest} other {contests}}","youSavedNContests":"You saved {count} {count, plural, =1 {contest} other {contests}}","groups":{"all":"All","addGroupAria":"Add contest group","editGroupAria":"Edit contest group","groupLabel":"Group","noGroup":"No group","createTitle":"Create contest group","editTitle":"Edit contest group","nameRequired":"Group name is required","createdSuccess":"Contest group created","updatedSuccess":"Contest group updated","deletedSuccess":"Contest group deleted","failedSave":"Failed to save contest group","failedDelete":"Failed to delete contest group","deleteGroupConfirmDescription":"Contests in this group will no longer be grouped. They are not deleted."},"noContestsFoundMatchingYourSearch":"No contests found matching your search.","noContestsYetCreateYourFirstContest":"No contests yet. Create your first contest!","noSavedContestsYet":"No saved contests yet.","authenticateToViewAndCreateYourOwnContests":"Authenticate to view and create your own contests.","nParticipants":"{count} participants","nGrandFinalParticipants":"{count} finalists","nCustom":"{count} custom entries","pointsSystem":"Points System","juryPointsSystem":"Jury Points System","televotePointsSystem":"Televote Points System","inProgress":"In progress","notStarted":"Not started yet","contestNameIsRequired":"Contest name is required","pleaseSignInToSaveContests":"Please sign in to save contests","contestUpdatedSuccessfully":"Contest updated successfully!","contestCreatedSuccessfully":"Contest created successfully!","failedToSaveContest":"Failed to save contest","contestLoaded":"Contest loaded!","failedToLoadContest":"Failed to load contest","loadContestOptions":"Load Contest Options","loadContestDescription":"Choose which parts of the contest you want to load:","generalInfo":"General Info","generalInfoDescription":"Name, hosting country, description, year","setup":"Setup","setupDescription":"Stages, participants, odds, voting countries","simulation":"Simulation","simulationDescription":"Voting progress, points, statistics","loadContestResults":"Results","loadContestPresentation":"Presentation","confirmResetContestTitle":"Reset the contest?","confirmResetContestDescription":"This will reset the contest to the last saved version. You will lose all your changes since the last save.","contestReset":"Contest reset successfully!","confirmRemoveSavedContest":"Remove from saved contests?","contestSavedSuccessfully":"Contest saved successfully!","contestRemovedFromSaved":"Contest removed from saved!","confirmCreateNewContest":"Create new contest?","confirmCreateNewContestDescription":"You have an active contest ({name}). Make sure you save it before creating a new one.","venue":"Venue","hosts":"Hosts","logoBanner":"Logo / banner","logoBannerHint":"Optional image shown on the contest card","entryStats":{"pickerTitle":"Your entry stats","pickerSubtitle":"Search and select a country or custom entry to see results across your completed contests.","searchEntries":"Search countries...","participations":"Participations","victories":"Victories","finals":"Finals","nulPoints":"Nul points","lastPlaces":"Last places","bestResult":"Best result","noParticipations":"No completed contests include this entry yet.","contest":"Contest","year":"Year","winner":"Winner","gfResult":"Grand final","nonQualified":"Did not qualify","points":"pts","load":"Load","failedToLoadStats":"Failed to load stats","noEntriesMatch":"No entries match your search.","customEntryName":"Custom entry","qualRate":"Qual. rate","qualStreak":"Qualifying streak"},"leaderboard":{"title":"Country leaderboard","chartButtonTitle":"Country leaderboard","yearLabel":"Scope","globalOption":"Global (all years)","contestCount":"Based on {count} completed {count, plural, =1 {contest} other {contests}}.","country":"Country","wins":"Wins","finals":"Finals","participations":"Participations","winRate":"Win rate","top3":"Top 3","top5":"Top 5","top10":"Top 10","avgGfPoints":"Avg GF pts","totalGfPoints":"Total GF pts","qualRate":"Qual. rate","qualStreak":"Streak","computedAt":"Last updated: {time}","failedToLoad":"Failed to load leaderboard","useYearButton":"Use year {year}","onlyEurovisionCountries":"Only Eurovision countries","rank":"Rank"},"myLeaderboard":{"title":"My entry leaderboard","subtitle":"Click any row to view detailed results across your completed contests.","noData":"No completed contests yet. Complete a contest to see your entry stats here.","searchPlaceholder":"Search countries...","noEntriesMatch":"No entries match your search.","customEntryName":"Custom entry"}},"themes":{"title":"Themes","widgetDescription":"Create custom themes or select public themes","copyToFields":"Copy to fields","copyToNFields":"Copy to {count} {count, plural, =1 {field} other {fields}}","searchFields":"Search fields...","noFieldsFound":"No fields found","basicInfo":"Basic Info","tabs":{"identity":"Identity","look":"Look","visuals":"Visuals","colors":"Colors","sound":"Sound"},"stepOf":"Step {current} of {total}","editingColor":"Editing color","baseThemeCascadeHint":"Changing the base theme resets the Visuals options.","makeThemePublic":"Make theme public","main":"Main","baseTheme":"Base Theme","interfaceFont":"Interface font","interfaceColor":"Interface Color","backgroundImage":"Background Image","soundDouzePoints":"Douze points animation","soundStageStart":"Stage start","soundPointsAwarded":"Jury points awarded (non-douze)","soundTelevotePointsReveal":"Televote points reveal","soundWinner":"Grand Final winner","soundStageComplete":"Semi-Final complete","soundSimulationBackground":"Simulation background music (looped)","soundQualifierReveal":"Split-screen candidates reveal","soundQualifierPicked":"Qualifier picked","soundUrl":"Paste audio URL","soundEffectsHint":"Paste audio URLs, or drag-and-drop/upload audio files","soundUrlHttpsOnly":"URL must start with https://","clearSound":"Remove sound","invalidSoundFile":"Unsupported audio format. Use MP3, OGG, WAV, or WebM.","soundFileTooLarge":"Audio file must be 7 MB or smaller.","previewSound":"Preview","soundDelaySec":"Delay (s)","previewSoundFailed":"Could not play this audio. Check the URL or file.","audioFilterLabel":"Audio","audioFilterWithAudio":"With audio","soundEffects":"Sound Effects","countryItemColors":"Country Item Colors","editTheme":"Edit Theme","createTheme":"Create Theme","themeNameIsRequired":"Theme name is required","themeUpdatedSuccessfully":"Theme updated successfully!","themeCreatedSuccessfully":"Theme created successfully!","remixedFrom":"Remixed from <span>{name}</span>","remixNeedsChange":"Make a change to share your remix, or uncheck \"Make theme public\" to save it privately.","awardPoints":"Award Points","points":"{count, plural, =1 {point} other {points}}","previewDescription":"Preview shows how the theme colors will appear on country items in different states.","previewStatesTooltipIntro":"Select a state from the badges below to preview how an entry looks in that state.","previewStatesTooltipStates":"<list><item><strong>Jury</strong> – during the jury voting</item><item><strong>Televote</strong> – before receiving televote points</item><item><strong>Active</strong> – when the entry is next to receive televote points</item><item><strong>Finished</strong> – after the voting is completed</item><item><strong>Unqualified</strong> – when the entry did not qualify</item></list>","themeAppliedSuccessfully":"Theme \"{name}\" applied successfully!","themeLikedSuccessfully":"Theme liked successfully!","themeUnlikedSuccessfully":"Theme unliked successfully!","areYouSureYouWantToRemoveThisThemeFromYourSavedThemes":"Are you sure you want to remove this theme from your saved themes?","themeSavedSuccessfully":"Theme saved successfully!","themeRemovedFromSaved":"Theme removed from saved!","foundNThemes":"Found {count} {count, plural, =1 {theme} other {themes}}","noPublicThemesFoundMatchingYourSearch":"No public themes found matching your search.","searchThemes":"Search themes...","confirmRemoveSavedTheme":"Remove from saved themes?","confirmCloseCustomizeThemeTitle":"Close theme editor?","confirmCloseCustomizeThemeDescription":"Any unsaved changes will be lost.","yourThemes":"Your Themes","publicThemes":"Public Themes","noThemesFoundMatchingYourSearch":"No themes found matching your search.","noSavedThemesYet":"No saved themes yet.","noThemesYetCreateYourFirstTheme":"No themes yet. Create your first theme!","authenticateToViewAndCreateYourOwnThemes":"Authenticate to view and create your own themes.","themeDeletedSuccessfully":"Theme deleted successfully!","fountNThemes":"Found {count} {count, plural, =1 {theme} other {themes}}","youHaveNThemes":"You have {count} {count, plural, =1 {theme} other {themes}}","youSavedNThemes":"You saved {count} {count, plural, =1 {theme} other {themes}}","groups":{"all":"All","addGroupAria":"Add theme group","editGroupAria":"Edit theme group","groupLabel":"Group","noGroup":"No group","createTitle":"Create theme group","editTitle":"Edit theme group","nameRequired":"Group name is required","createdSuccess":"Theme group created","updatedSuccess":"Theme group updated","deletedSuccess":"Theme group deleted","failedSave":"Failed to save theme group","failedDelete":"Failed to delete theme group","deleteGroupConfirmDescription":"Themes in this group will no longer be grouped. They are not deleted."},"colorOverrides":{"colors":"Colors","currentValue":"Current value","juryColors":"Jury","douzePointsAnimationColors":"Douze Points Animation","televoteColors":"Televote","televoteActiveColors":"Televote Active","finishedColors":"Finished","unqualifiedColors":"Unqualified","rankColors":"Rank","juryPointsPanelColors":"Jury Points Panel","juryBg":"Jury Background","juryText":"Jury Text","juryPointsBg":"Jury Points Background","juryPointsText":"Jury Points Text","juryLastPointsBg":"Jury Last Points Background","juryLastPointsText":"Jury Last Points Text","juryPlaceContainerBg":"Jury Place Background","juryPlaceText":"Jury Place Text","douzePointsBg":"Douze Points Background","douzePointsText":"Douze Points Text","douzePointsBlock1":"Douze Points Block 1","douzePointsBlock2":"Douze Points Block 2","televoteUnfinishedBg":"Televote Background","televoteUnfinishedText":"Televote Text","televoteUnfinishedPointsBg":"Televote Points Background","televoteUnfinishedPointsText":"Televote Points Text","televoteLastPointsBg":"Televote Last Points Background","televoteLastPointsText":"Televote Last Points Text","televoteUnfinishedPlaceContainerBg":"Televote Place Background","televoteUnfinishedPlaceText":"Televote Place Text","televoteActiveBg":"Televote Active Background","televoteActiveText":"Televote Active Text","televoteActivePointsBg":"Televote Active Points Background","televoteActivePointsText":"Televote Active Points Text","televoteActiveLastPointsBg":"Televote Active Last Points Background","televoteActiveLastPointsText":"Televote Active Last Points Text","televoteOutline":"Televote Outline","televoteActivePlaceContainerBg":"Televote Active Place Background","televoteActivePlaceText":"Televote Active Place Text","televoteFinishedBg":"Televote Finished Background","televoteFinishedText":"Televote Finished Text","televoteFinishedPointsBg":"Televote Finished Points Background","televoteFinishedPointsText":"Televote Finished Points Text","televoteFinishedLastPointsBg":"Televote Finished Last Points Background","televoteFinishedLastPointsText":"Televote Finished Last Points Text","televoteFinishedPlaceContainerBg":"Televote Finished Place Background","televoteFinishedPlaceText":"Televote Finished Place Text","unqualifiedBg":"Unqualified Background","unqualifiedText":"Unqualified Text","unqualifiedPointsBg":"Unqualified Points Background","unqualifiedPointsText":"Unqualified Points Text","unqualifiedLastPointsBg":"Unqualified Last Points Background","unqualifiedLastPointsText":"Unqualified Last Points Text","unqualifiedPlaceContainerBg":"Unqualified Place Background","unqualifiedPlaceText":"Unqualified Place Text","activeBg":"Active Background","activeText":"Active Text","inactiveBg":"Inactive Background","inactiveText":"Inactive Text"},"previewCountryItemStates":{"jury":"Jury","televoteUnfinished":"Televote","televoteActive":"Active","televoteFinished":"Finished","unqualified":"Unqualified"},"visualDetails":{"title":"Visual Details","uppercaseEntryName":"Uppercase entry names","juryActivePointsUnderline":"Jury active points underline","juryPointsPanelRounded":"Rounded jury points panel","usePointsCountUpAnimation":"Use points count-up animation","roundedCountryContainer":"Rounded country design","boardAnimation":"Board animation","douzePointsAnimation":"Douze points animation","boardAnimations":{"flip":"Flip movement (default)","teleport":"Teleport movement (ESC 2025)"},"douzePointsAnimations":{"parallelograms":"Parallelograms (ESC 2023)","heartsGrid":"Hearts grid (ESC 2025)"},"pointsContainerShapes":{"title":"Points container shape","curvedEdge":"Curved edge","square":"Square","transparent":"Transparent"},"flagShapes":{"title":"Flag shape","largeRectangle":"Large rectangle","smallRectangle":"Small rectangle","square":"Square","circle":"Circle","circleWithBorder":"Circle with border","none":"None"}},"fonts":{"scoreboardFont":"Scoreboard font","sameAsInterface":"Use the interface font on the scoreboard too","scoreboardHint":"Applies to the country rows on the scoreboard (including shared images and previews). Headers, controls and menus keep the interface font.","customChip":"Custom","pickForUi":"Pick the font for menus, panels and headers (and for the scoreboard rows unless they have their own).","pickForScoreboard":"Pick the font for the country rows on the scoreboard.","tabs":{"builtin":"Built-in","mine":"My fonts","public":"Public fonts","upload":"Upload"},"searchFonts":"Search fonts…","youHaveNFonts":"You have {count} fonts","foundNFonts":"Found {count} fonts","noFontsYet":"No fonts in your library yet. Upload one to use it in any of your themes.","noFontsFound":"No fonts match your search.","noPublicFonts":"No public fonts found.","uploadCta":"Upload a font","uploadAnother":"Upload another font","use":"Use","selected":"Selected","manage":"Manage","delete":"Delete","addAndUse":"Add to my library & use","useFromLibrary":"Use from my library","inYourLibrary":"In your library","yours":"Yours","publicChip":"Public","privateChip":"Private","variableChip":"Variable","useThisFont":"Use this font","dropHint":"Drop up to 4 files (Regular, Medium, SemiBold, Bold) or one variable font","formatsHint":"WOFF2, WOFF, TTF or OTF · up to {maxMb} MB each","fallbackHint":"Missing weights automatically use the nearest weight you upload — no fake bold.","variableHint":"A variable font (with a weight axis) covers every weight in a single file.","licenseHint":"Uploaded fonts are listed in the public font library (you can make them private later). Only upload fonts you are allowed to use and share.","uploading":"Uploading… {percent}%","processing":"Processing…","uploadedSuccessfully":"Font uploaded","uploadFailed":"Failed to upload font","deletedSuccessfully":"Font deleted","fontName":"Font name","listPublicly":"List in the public font library","publishTitle":"Share this font publicly?","publishDescription":"Other users will be able to add it to their library and use it in their themes. Only share fonts you have the right to redistribute — your own, or openly licensed ones (for example under the SIL Open Font License).","weights":{"title":"Weights","regular":"Regular","medium":"Medium","semibold":"SemiBold","bold":"Bold","uploaded":"Uploaded","fallsBackTo":"Uses {weight}","variable":"Variable font · covers every weight","axis":"axis {min}–{max}","addFile":"Add file","remove":"Remove this weight","removeTitle":"Remove the {weight} weight?","removeDescription":"Slots that used this file will fall back to the nearest remaining weight."},"warningsTitle":"Heads up","previewTitle":"Preview","usedByNThemes":"Used by {count} themes","copies":"{count} copies","forkedFrom":"From {name}","deleteTitle":"Delete “{name}”?","deleteDescription":"The font is removed from your library. Files shared with other fonts are kept.","deleteInUseTitle":"This font is in use","deleteInUseDescription":"{count} of your themes use it. They will fall back to a built-in font. Delete anyway?","signInToUpload":"Sign in to upload fonts and build your library.","badge":"Font","filterWithFonts":"With custom fonts"}},"sortBadges":{"latest":"Latest","oldest":"Oldest","mostLiked":"Most Liked","mostSaved":"Most Saved","mostCopied":"Most Copied","today":"Today","thisWeek":"This Week","lastWeek":"Last Week","thisMonth":"This Month","lastMonth":"Last Month","allTime":"All Time"}},"feedbackInfo":{"buttonTooltip":"Feedback & Features","feedback":"Feedback","whatsNew":"What's New","upcomingFeatures":"Upcoming","foundBug":"Found a bug, have a feature idea, or just want to share feedback?","openIssueOnGitHub":"Feel free to open an issue on","orEmailMe":"or email me at","gitHubDiscussions":"Alternatively, you can use <a>GitHub Discussions</a> to share suggestions, ask questions, or post your simulation results.","bugReportDetails":"If you're reporting a bug, please include your:","bugReportDetailsItem1":"device (mobile, tablet, or PC)","bugReportDetailsItem2":"OS (Android, iOS, Windows, macOS)","bugReportDetailsItem3":"browser (Chrome, Safari, etc.)","bugReportDetailsItem4":"and any helpful details like screenshots or videos","thankYou":"Thank you!","datesAreApproximate":"The dates are approximate and may change","translationIssueDescription":"If you noticed some translation issues, please let me know by sending an email to","donationCardTitle":"Enjoying DouzePoints?","donationCardIntro":"Hi, I'm Oleksandr — a Eurovision fan and developer from Ukraine. DouzePoints is a free project used by thousands of Eurovision fans around the world and is built and maintained entirely by me.","donationCardSupport":"If you'd like to support future development and help me continue improving the platform, your contribution would mean a lot to me.","supportOnPatreon":"Support on Patreon"},"share":{"generating":"Generating...","generateImage":"Generate Image","customization":"Customization","autoFit":"Auto fit","subtitle":"Subtitle","aspectRatio":"Aspect Ratio","layout":"Layout","nColumns":"{count, plural, =1 {# Column} other {# Columns}}","itemSize":"Item Size","showRankings":"Show Rankings","shortCountryNames":"Short Country Names","showPoints":"Show Points","highQuality":"High Quality","maxCountries":"Max Countries","allByDefault":"All by default","titleSize":"Title Size","subtitleSize":"Subtitle Size","brandingSize":"Branding Size","verticalPadding":"Vertical Padding","horizontalPadding":"Horizontal Padding","result":"Result","downloadImage":"Download Image","borderOpacity":"Border Opacity","showBackgroundImage":"Show Background Image","backgroundOpacity":"Background Opacity","showVotingCountriesNames":"Show Voting Countries Names","generateOnOpen":"Generate Image Automatically on Open"},"guide":{"title":"Feature Guide","tabs":{"start":"Start","setup":"Setup","voting":"Voting","themes":"Themes","more":"More"},"start":{"gettingStarted":{"title":"Quick Start Guide","content":"<list><item>Select a year from the top-left dropdown to load the official Eurovision lineup, then press Start to launch the simulation.</item><item>During voting, click any country on the scoreboard to award it the current points, or use 'Vote randomly' to let the app decide.</item><item>Progress through each stage by awarding all votes and clicking Continue</item><item>After all stages are done, view the detailed stats or generate a shareable scoreboard image.</item></list>"},"signIn":{"title":"Unlocking More Features with an Account","content":"<list><item>Click the profile icon in the widgets section to sign in with Google.</item><item>Signing in unlocks cloud saving for your contests, creating and publishing custom themes, adding custom entries, and social features.</item><item>Without an account you can still browse and apply public themes and contests, but you cannot save, copy, like, or create your own.</item><item>Your existing local data is preserved when you sign in.</item></list>"},"savingContests":{"title":"Saving & Loading Contests","content":"Click the save icon on the right side of the current contest card or open the Contests widget and click 'Create Contest' to save your current setup and simulation results to the cloud. You can reload any saved contest later, reset it to the last saved version, or share it with anyone via a link. Public contests can be browsed and loaded by other users."},"customEntries":{"title":"Custom Entries","content":"Signed-in users can create fictional or non-standard entries — for example, a country that never participated in Eurovision, or a made-up one — with a custom name and flag (upload or URL). Custom entries can be organized into groups and imported from other users' contests."}},"setup":{"yearData":{"title":"Year Selection & Official Data","content":"Use the top-left dropdown to pick an ESC edition (2004–2026) or a JESC edition (2016–2025). Selecting a year automatically loads the official lineup for that edition. The same dropdown also lets you quickly load one of your saved contests."},"countryAssignment":{"title":"Country Assignment","content":"The countries shown when you pick a year are a starting point, not a locked list. In the Setup modal, click any country to move it between stages (Semi-Final 1, Semi-Final 2, Grand Final) or mark it as Not Participating. You can also add countries from other years, other continents, or your own custom entries."},"grandFinalOnly":{"title":"Grand Final Only Mode","content":"Toggle the 'GF only' switch in the setup to skip the Semi-Finals and run a standalone Grand Final, with all entries placed directly into it. Toggling it back restores the full three-show structure (Semi-Final 1, Semi-Final 2, Grand Final)."},"customStages":{"title":"Custom Stages","content":"Beyond the standard Semi-Finals and Grand Final, you can create any number of additional stages — Heats, Quarter-Finals, and more. Each stage has its own name, voting mode (Jury + Televote, Televote-only, or Combined), and qualification rules specifying how many entries advance and to which stage. Advanced: rank-based qualification lets you send different rank ranges to different follow-up stages."},"votingModes":{"title":"Voting Mode per Stage","content":"Each stage can use a different voting system, configured in the stage editor's Settings tab:<list><item><strong>Jury and Televote</strong> — two separate rounds: first all jury votes are given out country by country, then all televote points are revealed together</item><item><strong>Televote only</strong> — skip jury voting; only televote points are awarded</item><item><strong>Jury only</strong> — skip televote; only jury points are awarded</item><item><strong>Combined</strong> — jury and televote points are awarded in a single round per voting country (currently it may work inaccurately)</item></list>The default for the Grand Final is Jury and Televote, matching the standard Eurovision format."},"votingCountries":{"title":"Voting Countries","content":"In each stage's 'Voters' tab, choose exactly which countries cast votes during that stage. You can include or exclude any participating country and optionally add 'Rest of the World' as an additional voter. Voter sets are configured per stage, so Semi-Finals and the Grand Final can have completely different voters. If you want to use the original voting countries from the year, you click on the 'Load year data' button."},"runningOrder":{"title":"Running Order","content":"Before starting a stage, open the Running Order tab to drag and drop entries into your preferred performance order. The running order is also used as a tiebreaker: if two entries have identical total points and televote points, the one that performed earlier ranks higher."}},"voting":{"customPointsSystem":{"title":"Custom Points System","content":"Go to 'Settings → Voting' to configure the points awarded at each position. You can add, remove, or reorder values. Enable 'Separate jury / televote points system' to use a completely different scale for jury votes and televote. Click on the sparkles icon to toggle the Douze Points animation for a specific point value."},"predefinedVoting":{"title":"Predefined Voting & Presets","content":"Enable 'Predefined voting' in 'Settings → Voting' to author every country's votes before the simulation starts. Three modes — Detailed, Rank, and Totals — all write the same vote matrix: edit the full voter-by-entry grid, drag entries into your desired final order and generate a matching breakdown, or type target totals per country and generate the closest achievable breakdown. Switch modes anytime without losing data. Save detailed or totals presets locally, or import/export spreadsheets in Detailed mode — perfect for replaying official Eurovision results or sharing a specific scenario."},"oddsRandomness":{"title":"Odds & Randomness","content":"In 'Settings → Odds', assign jury and televote odds (0–100) to each country to influence how random votes are distributed. Higher odds mean a better chance of receiving more points. The Randomness Level slider controls how closely the simulation follows those odds: slide left for predictable results that mirror the odds, slide right for a chaotic, anything-can-happen simulation."},"presentationMode":{"title":"Presentation Mode","content":"Enable 'Presentation mode' in 'Settings → Voting' to add an auto-play panel below the scoreboard. Set the speed (0.5–7.5 seconds per action) and press Play to let the simulation run hands-free — ideal for streaming or recording. Enable 'Auto start presentation' to have it begin automatically as soon as voting starts."},"pickQualifiers":{"title":"Pick Qualifiers Without Awarding Points","content":"Enable 'Pick qualifiers without awarding points' in 'Settings → Voting' to select which entries advance to the next stage without running the full voting process. During a Semi-Final, click any entry on the board to qualify it directly, or press 'Choose randomly'. This is ideal when you only care about who advances, not the detailed scores. Note: the stage's voting mode still affects how random qualifiers are selected."},"moreOptions":{"title":"More Voting Options","content":"Additional options in Settings → Voting and the simulation header:<list><item><strong>Split screen qualifier reveal</strong> — an ESC 2025-style moment where several candidates appear side-by-side and you click one to qualify them. Configure 2–6 candidates per reveal, and whether the last qualifier also uses the split screen.</item><item><strong>Televote reveal order</strong> — set to lowest-to-highest to announce televote results from fewest to most points, as in ESC 2016–2018.</item><item><strong>Allow points to the same entry multiple times</strong> — enables a voting country to award multiple point tokens to the same entry. This simulates the pre-1975 Eurovision voting system where each jury distributed ten equal tokens freely.</item><item><strong>Group random jury voting</strong> — the 'Vote randomly' button awards points in realistic batches (1–8+10 together, or just 12) instead of one value at a time.</item><item><strong>Undo and Restart</strong> — Undo steps back up to 100 actions; Restart resets the full simulation.</item></list>"}},"themes":{"yearThemes":{"title":"Year Themes & Auto-Sync","content":"Many ESC and JESC editions have a built-in theme inspired by that year's visual identity — colors, fonts, flag styles, and animations. Selecting a year from the dropdown automatically suggests the matching theme. If you switch the year after a theme is already active, a Sync button appears in the header to apply the correct year theme."},"browseThemes":{"title":"Browsing Community Themes","content":"Open the Themes widget to browse public themes created by other users — no account needed to browse or apply them. Sign in to like a theme, save it to your collection for quick access, copy it as a starting point for your own, or create one from scratch."},"customThemeBuilder":{"title":"Custom Theme Builder","content":"Signed-in users can build a fully custom theme: choose a primary color, upload a background image, select a font, and override the colors for every scoreboard state independently (jury active, televote unfinished/active/finished, unqualified entries, and rank badges). Flag shapes, points container shapes, and board animation styles are all configurable. A live preview panel shows exactly how each change will look on a real country item."},"soundEffects":{"title":"Sound Effects & Background Audio","content":"Inside the theme builder's Sound Effects section, attach audio clips to specific moments: the 12-point award, stage start, jury reveal, televote reveal, winner announcement, and a looped background track. Paste an https:// URL or upload a file directly (max 7 MB per file). Each sound supports an optional delay in seconds."},"visualDetails":{"title":"Visual Details & Animations","content":"The 'Visual Details' section of the theme builder lets you fine-tune animations and layout: board movement style (classic Flip or the ESC 2025 Teleport), the douze points animation (Parallelograms from ESC 2023 or Hearts Grid from ESC 2025), flag shape (large or small rectangle, square, circle, circle with border, or hidden), points container shape, uppercase entry names, and more."}},"more":{"finalStats":{"title":"Final Stats & Voting Breakdown","content":"After any stage finishes, tap 'Stats' in the phase actions bar to open the detailed results. The Breakdown tab shows a full voting matrix — every voter's exact point allocations to every entry, split into Jury, Televote, and Total columns. Use it to see exactly who gave (or didn't give) points to any entry."},"splitStats":{"title":"Jury vs. Televote Split","content":"The Split tab in the stats modal places each entry's jury ranking next to its televote ranking side by side, making it easy to spot the biggest discrepancies between expert opinion and the public vote. Entries with a large gap between the two are where the drama happens."},"shareScoreboard":{"title":"Share Scoreboard as Image","content":"Hit 'Share' in the simulation header to open the image generator. Customise the layout (1–4 columns), aspect ratio (Landscape 16:9, Square 1:1, or Portrait 3:4), title, subtitle, and whether to show rankings and points. Download the result as a PNG or use native sharing on mobile."},"shareStats":{"title":"Share Stats as Image","content":"Inside the Stats modal, a share button lets you export the full results table (breakdown, split, or summary) as a downloadable PNG. Great for sharing detailed scoreboard breakdowns on social media or in Eurovision fan communities."},"leaderboard":{"title":"Global Country Leaderboard","content":"The country leaderboard (accessible from the 'Contests → Public Contests') aggregates results across all completed public contests. It tracks wins, top-3/5/10 finishes, average Grand Final points, and qualifying streaks. Use the year filter to narrow it down to a specific edition or range, or toggle 'Only Eurovision countries' to exclude non-standard entries."},"myStats":{"title":"My Entry Leaderboard & Stats","content":"The 'My entry leaderboard' in the 'Contests → Your Contests' widget shows personal stats from all your completed contests: wins, nul points, best result, and current qualifying streak for every country and custom entry you've used. Click any row to see a full contest-by-contest breakdown with placements and points."},"communityFollowing":{"title":"Following Other Users","content":"On any user's public profile (accessible by clicking their username on a public theme or contest), you can follow them. Followed users' new themes and contests appear in a combined 'Following' feed on your own profile page. Without an account you can still browse the Public tabs in the Themes and Contests widgets."},"uiPreferences":{"title":"UI Preferences","content":"Customize the look and feel in Settings → UI Preferences:<list><item><strong>Flag styles</strong> — switch to heart icons, minimalistic round/square flags, or keep default rectangular ones</item><item><strong>Always show rankings</strong> — keep position numbers visible at all times, plus a rank-change indicator showing movement up or down</item><item><strong>Popups</strong> — toggle the qualifiers popup, winner announcement, and confetti independently</item><item><strong>Fullscreen mode</strong> — enter fullscreen for a fully immersive scoreboard view</item><item><strong>Jury voting progress bar</strong> — shows how many countries have voted so far in the current jury round</item><item><strong>Custom background image</strong> — upload your own image to replace the theme's background</item><item><strong>Override theme font</strong> — lock in a specific font regardless of which theme is active</item><item><strong>Audio</strong> — set separate volume levels for sound effects and background music, or disable all theme audio at once</item><item><strong>Winter effects</strong> — enable falling snow with an adjustable intensity slider</item><item><strong>Enable winner reveal</strong> — the last televote is revealed with special animation (ESC 2026 style)</item></list>"},"confirmations":{"title":"Confirmation Popups","content":"In Settings → Confirmations you can toggle individual confirmation dialogs on or off — for example, the prompts for cancelling a simulation, deleting a contest, or logging out. Disable the ones you find disruptive; they can be re-enabled at any time. 'Reset All Confirmations' restores every disabled prompt at once."},"language":{"title":"Language Support","content":"DouzePoints supports 8 languages: English, French,Spanish, German, Italian, Greek, Polish, and Ukrainian. Change the active language in 'Settings → UI Preferences → Language'. All languages other than English are currently produced by machine translation, so occasional inaccuracies may appear."},"feedback":{"title":"Feedback & What's New","content":"Found a bug, have a feature idea, or just want to leave a comment? Click the info icon in the header (next to this guide button) to open the Feedback panel. It also shows a full changelog ('What's New') and a roadmap of upcoming features. You can file a report on GitHub Issues or send an email directly to the developer."}}},"settings":{"general":{"confirmations":"Confirmation Popups","contest":"Contest","voting":"Voting","uiPreferences":"UI Preferences","resetAllSettings":"Reset All Settings","general":"General","odds":"Odds","relations":"Relations"},"general2":{"look":"Look & feel","effects":"Effects & motion","audio":"Audio","confirmations":"Confirmations","searchPlaceholder":"Search settings…","noResults":"No settings match “{query}”","blurb":{"contest":"Identity of the contest you are simulating.","voting":"Points system and how votes are cast and revealed.","look":"Language, flags and how the scoreboard and modals appear.","effects":"Celebration, ambience and reveal animations.","audio":"Sound effects and ambience.","confirmations":"Dialogs you have dismissed, and settings reset."},"subhead":{"votingBehaviour":"Voting behaviour","flagsRankings":"Flags & rankings","popupsChrome":"Popups & chrome","personalization":"Personalization","suppressedDialogs":"Suppressed dialogs","reset":"Reset"},"upload":{"title":"Drop an image or click to browse","subtext":"PNG, JPG or WEBP · stored on this device."},"danger":{"confirm":"Yes, reset everything"},"tip":{"heartFlags":"Replace flag thumbnails with heart-shaped icons in the app’s accent colours.","minimalFlags":"Use simplified round and square flag shapes instead of detailed flags.","rankChange":"Show an arrow indicating whether each entry moved up or down since the previous points were awarded.","targetStages":"Show which stage each qualifier advances to.","blurModal":"Blur the scoreboard behind open modals for extra focus.","overrideFont":"Ignore each theme’s fonts (including uploaded ones) and always use the font you pick below, on both the interface and the scoreboard.","customBg":"Use your own background image. Stored only on this device — not synced to your account.","winter":"Add falling snow and festive touches across the app.","finalReveal":"Reveal the final televote scores one country at a time with a dramatic animation.","predictableReveal":"Reveal televote scores in a smooth, deterministic order with no random suspense."}},"relations":{"title":"Diaspora & affinity","subtitle":"Blocs, neighbours & rivalries nudge simulated votes beyond song quality.","strength":"Strength","strengthHint":"Scales the whole effect","subtle":"Subtle","dramatic":"Dramatic","blocs":"Blocs","blocsSub":"Regional voting blocs — expand any to tune its member pairs.","pairsCount":"{count} pairs","resetDefaults":"Reset to data defaults","curated":"Curated data","specialTitle":"Special pairs","specialSub":"The most influential neighbour, diaspora & rivalry ties beyond the blocs.","browse":"Browse","broadTitle":"All historical pairs","broadSub":"The full data set from 20+ years of results. Max realism, advanced.","broadOnNote":"All historical pairs is on — it already includes every bloc, so turning a bloc off won't remove those relations. Disable it to control blocs individually.","broadBrowseHint":"This set isn't applied. Browse and tune any pair — your edits are saved to Your pairs and apply on their own. Turn it on to apply the whole set.","searchCountries":"Search countries…","showingOf":"Showing {shown} of {total} — refine your search","noMatches":"No matching pairs","yourPairs":"Your pairs","addPair":"Add pair","newPair":"New directed pair","fromLabel":"From (voter)","toLabel":"To (receives)","snub":"Snub","neutral":"Neutral","favor":"Favor","pickTwo":"Pick two countries to preview the relationship","pickCountry":"Pick a country","overrideHint":"Adding a pair that already exists overrides the preset. Set it to 0 to cancel an inherited bias entirely.","was":"was {value}","remove":"Remove","noPairs":"No custom pairs yet. Edit a bloc pair or add one above.","lensBlocs":"Blocs","lensByCountry":"By country","customBadge":"Custom","createBloc":"Create a custom bloc","signInToCreateBlocs":"Sign in to create custom blocs — they're saved to your account and synced across devices.","createBlocTitle":"Create a custom bloc","blocName":"Bloc name","blocNamePlaceholder":"e.g. Adriatic","members":"Members","addCountry":"Add country","addMember":"Add member","defaultAffinity":"Default affinity for every pair","tuneAfter":"tune individually after","pairsFromCount":"{countries} countries → {pairs} directed pairs","cancel":"Cancel","createBlocCta":"Create bloc","rename":"Rename","editBloc":"Edit bloc","save":"Save","deleteBloc":"Delete bloc","customBlocsHint":"Build your own bloc from any countries — it generates a tunable directed pair for every member ordering.","lensInfo":"Same data as blocs — filtered to one country. Handy for auditing who favors or snubs it.","jumpToCountry":"Jump to a country…","votesGiven":"Votes given","votesGot":"Votes got","favoredSnubbed":"{favored} favored · {snubbed} snubbed","favors":"Favors","favoredBy":"Favored by","snubs":"Snubs","snubbedBy":"Snubbed by","noOutgoing":"No outgoing biases for {country} yet.","noIncoming":"No incoming biases for {country} yet.","lensEmpty":"No relationships yet — enable some blocs or add pairs to use this view.","srcSpecial":"Special","srcCustom":"Custom"},"odds":{"noParticipatingCountriesSelectedYet":"No participating countries selected yet","goBackToSetupAndSelectCountriesForEventToSetTheirOdds":"Go back to the setup and select countries for the event to set their odds","oddsTooltip":"Each country has separate jury and televote odds (0–100).<br></br><span>Higher number =</span> better chance of getting more points.<br></br>Initial values are based on countries' real Eurovision results for the selected year.","randomnessLevel":"Randomness Level","randomnessLevelTooltip":"The Randomness Level slider controls predictability:<br></br><span>Low =</span> more realistic, following odds closely.<br></br><span>High =</span> more chaotic, unpredictable.","predictable":"Predictable","chaotic":"Chaotic","pointsSpread":"Points Spread","pointsSpreadTooltip":"The Points Spread slider controls the gap between winners and losers:<br></br><span>Low =</span> tighter scores, smaller point differences.<br></br><span>High =</span> a bigger gap between the top and bottom.","tight":"Tight","wide":"Wide","numbersView":"Numbers","rankView":"Rank","dragToRankHint":"Drag countries to rank them","copyRanksToTelevote":"Copy to Televote","copyRanksToJury":"Copy to Jury"},"voting":{"pointsSystem":"Points System","dragAndDropToReorder":"Drag and drop to reorder","splitPointsSystem":"Separate jury / televote points system","allowMultiplePointsToSameEntry":"Allow points to the same entry multiple times","allowMultiplePointsToSameEntryTooltip":"When enabled, a voting country can award multiple point tokens to the same entry. This simulates the pre-1975 Eurovision voting system (used in 1957–1961, 1967–1970, and 1974), where each jury (and televote, if active) distributed ten equal tokens freely.","juryPointsSystem":"Jury points system","televotePointsSystem":"Televote points system","sparklesIconTooltip":"The <span></span> icon indicates that the points will be animated when the country receives them. Click to toggle.","pickQualifiersWithoutAwardingPoints":"Pick qualifiers without awarding points","pickQualifiersWithoutAwardingPointsTooltip":"Click countries (or choose randomly) to qualify them without awarding points.<br></br>The Semi-Finals voting mode still affects random qualifiers and points distribution.","enableSplitScreenQualifierRevealMode":"Enable split screen qualifier reveal mode","enableSplitScreenQualifierRevealModeTooltip":"When enabled, several candidates will be shown on a split-screen, and you need to pick one qualifier (ESC 2025 format)","splitScreenCandidatesCount":"Split screen candidates count","splitScreenCandidatesCountTooltipDescription":"The number of candidates to show on the split screen. The default value is 3.","enableSplitScreenForLastQualifier":"Enable split screen for last qualifier","enableSplitScreenForLastQualifierTooltip":"When disabled, the last qualifier is picked from the remaining candidates without showing a split screen (ESC 2025 format)","televoteRevealOrder":"Televote reveal order: lowest to highest","televoteRevealOrderTooltip":"When enabled, the televote points will be announced from lowest to highest (ESC 2016–2018 system). Otherwise, order follows jury points.","limitManualTelevotePoints":"Limit manual televote points","limitManualTelevotePointsTooltip":"When enabled, limits the total televote points you can award (when manually entering points) and shows how many remain.","groupRandomJuryVoting":"Group random jury voting","groupRandomJuryVotingTooltip":"When enabled, clicking 'Vote randomly' will award one set of jury points, grouped as either (1–8, 10) or (12).","enableJuryScaleReveal":"Scale countdown jury reveal (JESC 2024 format)","enableJuryScaleRevealTooltip":"When enabled, the jury vote is revealed the way Junior Eurovision 2024 did it (JESC 2024 format).<br></br>First the whole scale is counted down: every 1 point from every jury appears at once, then every 2, and so on. Only then do the spokespersons appear, one at a time, to announce their 12 points.<br></br>Replaces the scoreboard with a bar chart for the jury vote. Televoting is unaffected, and the 'Group random jury voting' option is ignored while this is on.","keepJuryScaleRevealAwards":"Keep revealed points until the next set","keepJuryScaleRevealAwardsTooltip":"When enabled, each revealed set of points and the flags of the juries that awarded them stay on screen until the next set replaces them, instead of clearing after a few seconds.<br></br>Applies to the countdown only — the 12 points always stay on screen for the whole spokesperson phase.","enablePredefinedVoting":"Enable predefined voting","enablePredefinedVotingTooltip":"When enabled, you can set each country's votes before the voting begins.","enablePresentationMode":"Enable presentation mode","enablePresentationModeTooltip":"When enabled, displays the presentation panel, which allows you to run voting automatically, without requiring any clicks.","autoStartPresentation":"Auto start presentation","autoStartPresentationTooltip":"When enabled, the presentation will start automatically after the voting starts."},"ui":{"useCustomBackgroundImage":"Use custom background image","dragAndDropToUpload":"Drag and drop or click to upload","useHeartIconsForFlags":"Use heart icons for flags","alwaysShowRankings":"Always show rankings","showRankChangeIndicator":"Show rank change indicator","showQualifiersPopup":"Show qualifiers popup","showQualifierTargetStages":"Show qualifier target stages","showWinnerPopup":"Show winner popup","showWinnerConfetti":"Show winner confetti","enableFinalReveal":"Enable final televote reveal","finalRevealAnimationSpeed":"Reveal animation speed","slow":"Slow","fast":"Fast","finalRevealLinearAnimation":"Smooth, predictable reveal animation (no randomness)","enableFullscreenMode":"Enable fullscreen mode","warnBeforeManuallyAssigningTelevotePoints":"Warn before manually assigning televote points","showJuryVotingProgressBar":"Show jury voting progress bar","imageSizeIsPrettyLarge":"Image size is pretty large ({size}MB). This can slow down the simulation, so you might want to compress it or use a smaller image. Do you want to continue with this image?","language":"Language","enableMinimalisticFlags":"Minimalistic round and square flags","enableWinterEffects":"Enable winter effects","hideVotingHints":"Hide voting hints","enableIconButtonTooltips":"Show icon button tooltips","snowFallIntensity":"Snow fall intensity","low":"Low","high":"High","blurModalBackground":"Blur modal background","overrideThemeFont":"Always use the same font","interfaceFont":"Font","audioPreferences":"Audio preferences","themeSoundVolume":"Sound effects volume","themeSoundVolumeHint":"Applies to custom theme sound effects (not the simulation loop). Set to 0 to mute effects.","audioPreferencesHint":"The audio is available on custom themes only.","themeAmbienceVolume":"Simulation background music volume","themeAmbienceVolumeHint":"Volume for the looped simulation background only.","hideThemeSoundVolumeHud":"Hide floating volume button","hideThemeSoundVolumeHudHint":"You can still change volumes here in settings.","disableAllThemeAudio":"Disable all audio","disableAllThemeAudioHint":"Mutes sound effects and simulation background from custom themes.","themeSoundHudMuteToggle":"Mute or restore effects and ambience","themeSoundHudOpenControls":"Open volume controls","themeSoundHudCloseControls":"Close volume controls","themeSoundHudMuteAllShort":"Mute all","themeSoundHudRestoreShort":"Restore","themeSoundHudStopSfxShort":"Stop clips"},"contest":{"enterContestName":"Enter contest name...","enterContestYear":"Enter contest year...","showHostingCountryFlag":"Show hosting country flag"},"confirmations":{"description":"Configure which confirmation popups are shown when you perform certain actions.","reset":"Reset","resetAllConfirmations":"Reset All Confirmations","noConfirmationsDisabled":"No confirmations disabled","resetContest":"Reset contest","resetAllSettings":"Reset all settings?","resetAllSettingsDescription":"Are you sure you want to reset all settings? This won't affect data saved to your account (profile, themes, contests, etc.).","resetAllSettingsSuccess":"All local settings have been reset successfully!","deleteItem":"Delete {name}?","actionCannotBeUndone":"This action cannot be undone.","changeContest":"Change contest?","changeContestDescription":"A contest is in progress. Changing it will reset the current scoreboard and start a new setup.","manualTelevoteWarning":"Manual televote points warning","saveImportedCustomEntries":"Save imported custom entries","changeContestYear":"Change contest","grandFinalOnlyChange":"Grand final only change","deleteStage":"Delete stage","deleteContest":"Delete contest","removeSavedContest":"Remove saved contest","removeSavedTheme":"Remove saved theme","deleteCustomCountry":"Delete custom entry","deleteCustomEntries":"Delete {count} selected custom {count, plural, =1 {entry} other {entries}}","deleteCustomEntriesDescription":"Are you sure you want to delete {count} selected custom {count, plural, =1 {entry} other {entries}}?","deleteTheme":"Delete theme","closeCustomizeTheme":"Close theme editor","cancelSimulation":"Cancel simulation","logout":"Logout","createNewContest":"Create new contest"}}}