Files
weirsoe-party-protocol/shared/i18n/lobby.json
Asger Geel Weirsøe a81bc1250c
Some checks failed
CI / test-and-quality (push) Failing after 4m4s
Big visual overhaul docker compsoe file etc
2026-03-23 14:11:30 +01:00

1277 lines
47 KiB
JSON

{
"locales": {
"default": "en",
"supported": [
"en",
"da"
]
},
"frontend": {
"errors": {
"session_code_required": {
"en": "Session code is required.",
"da": "Sessionskoden er påkrævet."
},
"session_fetch_failed": {
"en": "Could not load lobby status.",
"da": "Kunne ikke indlæse lobby-status."
},
"join_failed": {
"en": "Join failed. Check code or nickname and try again.",
"da": "Kunne ikke joine. Tjek kode eller kaldenavn og prøv igen."
},
"start_round_failed": {
"en": "Could not start round. Refresh the lobby and try again.",
"da": "Kunne ikke starte runden. Opdater lobbyen og prøv igen."
},
"session_not_found": {
"en": "Session code is invalid or the session no longer exists.",
"da": "Sessionskoden er ugyldig, eller sessionen findes ikke længere."
},
"nickname_invalid": {
"en": "Nickname must be between 2 and 40 characters.",
"da": "Kaldenavn skal være mellem 2 og 40 tegn."
},
"nickname_taken": {
"en": "Nickname is already taken.",
"da": "Kaldenavnet er allerede taget."
},
"unknown": {
"en": "Action failed. Refresh status and try again.",
"da": "Handlingen fejlede. Opdater status og prøv igen."
}
},
"ui": {
"common": {
"refresh": {
"en": "Refresh",
"da": "Opdatér"
},
"retry": {
"en": "Retry",
"da": "Prøv igen"
},
"back_to_join": {
"en": "Back to join",
"da": "Tilbage til join"
},
"session_code": {
"en": "Session code",
"da": "Sessionskode"
},
"status": {
"en": "Status",
"da": "Status"
},
"prompt": {
"en": "Prompt",
"da": "Spørgsmål"
},
"round_question_id": {
"en": "Round question id",
"da": "Rundespørgsmål-id"
},
"round": {
"en": "round",
"da": "runde"
},
"points_short": {
"en": "pts",
"da": "point"
},
"unknown_error": {
"en": "Unknown error",
"da": "Ukendt fejl"
}
},
"app": {
"title": {
"en": "WPP Angular Shell",
"da": "WPP Angular Shell"
},
"home_nav": {
"en": "Home",
"da": "Hjem"
},
"host_nav": {
"en": "Host",
"da": "Vært"
},
"player_nav": {
"en": "Player",
"da": "Spiller"
},
"language_label": {
"en": "Language",
"da": "Sprog"
},
"home_badge": {
"en": "Party Protocol",
"da": "Party Protocol"
},
"home_title": {
"en": "Start or join a FupOgFakta session",
"da": "Start eller join en FupOgFakta-session"
},
"home_intro": {
"en": "Hosts log in and create a new session. Players join with the session code from their phone or laptop.",
"da": "Værter logger ind og opretter en ny session. Spillere joiner med sessionskoden fra telefon eller computer."
},
"host_card_title": {
"en": "Host a session",
"da": "Vær vært for en session"
},
"host_card_body": {
"en": "Create a fresh session, control the round flow, and drive the game from the host screen.",
"da": "Opret en ny session, styr runde-flowet, og kør spillet fra værtsskærmen."
},
"host_login_hint": {
"en": "Hosting requires a Django login. Use login first if create session says login required.",
"da": "Værtsrollen kræver Django-login. Brug login først, hvis opret session siger login kræves."
},
"host_login": {
"en": "Login as host",
"da": "Log ind som vært"
},
"create_session": {
"en": "Create session",
"da": "Opret session"
},
"creating_session": {
"en": "Creating session…",
"da": "Opretter session…"
},
"create_session_failed": {
"en": "Create session failed",
"da": "Kunne ikke oprette session"
},
"player_card_title": {
"en": "Join as player",
"da": "Join som spiller"
},
"player_card_body": {
"en": "Enter the session code and your nickname to join the active game from this device.",
"da": "Indtast sessionskoden og dit kaldenavn for at joine det aktive spil fra denne enhed."
},
"join_session": {
"en": "Join session",
"da": "Join session"
},
"joining_session": {
"en": "Joining session…",
"da": "Joiner session…"
},
"join_session_failed": {
"en": "Join session failed",
"da": "Kunne ikke joine session"
}
},
"host": {
"title": {
"en": "Host gameplay flow",
"da": "Vært gameplay-flow"
},
"category": {
"en": "Category",
"da": "Kategori"
},
"start_round": {
"en": "Start round",
"da": "Start runde"
},
"show_question": {
"en": "Show question",
"da": "Vis spørgsmål"
},
"mix_answers": {
"en": "Mix answers → guess",
"da": "Bland svar → gæt"
},
"calculate_scores": {
"en": "Calculate scores → reveal",
"da": "Udregn score → afslør"
},
"load_scoreboard": {
"en": "Load scoreboard",
"da": "Hent scoreboard"
},
"start_next_round": {
"en": "Start next round",
"da": "Start næste runde"
},
"finish_game": {
"en": "Finish game",
"da": "Afslut spil"
},
"retry_scoreboard": {
"en": "Retry scoreboard",
"da": "Prøv scoreboard igen"
},
"retry_next_round": {
"en": "Retry next round",
"da": "Prøv næste runde igen"
},
"retry_finish": {
"en": "Retry finish game",
"da": "Prøv afslutning igen"
},
"session_refresh_failed": {
"en": "Session refresh failed",
"da": "Kunne ikke opdatere session"
},
"scoreboard_failed": {
"en": "Scoreboard failed",
"da": "Scoreboard fejlede"
},
"next_round_failed": {
"en": "Next round failed",
"da": "Næste runde fejlede"
},
"finish_game_failed": {
"en": "Finish game failed",
"da": "Afslutning fejlede"
},
"session_code_required": {
"en": "Session code is required",
"da": "Sessionskode er påkrævet"
},
"final_leaderboard": {
"en": "Final leaderboard",
"da": "Finale leaderboard"
},
"winner": {
"en": "Winner",
"da": "Vinder"
},
"audio_locale_hint": {
"en": "Host locale for audio references",
"da": "Værtens locale for lydreferencer"
},
"voice_on": {
"en": "Voice on",
"da": "Stemme til"
},
"voice_off": {
"en": "Voice off",
"da": "Stemme fra"
},
"replay_voice": {
"en": "Replay voice",
"da": "Afspil stemme igen"
},
"voice_preview": {
"en": "Current voice cue",
"da": "Aktuel stemmetekst"
},
"show_developer_state": {
"en": "Show developer state",
"da": "Vis udviklerstatus"
},
"hide_developer_state": {
"en": "Hide developer state",
"da": "Skjul udviklerstatus"
},
"players_label": {
"en": "Players",
"da": "Spillere"
},
"round_actions_title": {
"en": "Backstage actions",
"da": "Backstage-handlinger"
},
"round_actions_body": {
"en": "Keep the operational controls here so the projected presenter surface can stay clean.",
"da": "Hold de operationelle kontroller her, så den projicerede presenter-flade kan forblive ren."
},
"no_host_action": {
"en": "No host action is available for this phase yet.",
"da": "Der er endnu ingen værtshandling til denne fase."
},
"player_roster": {
"en": "Player roster",
"da": "Spilleroversigt"
},
"player_roster_body": {
"en": "The presenter view keeps players visible even when the control surface is hidden.",
"da": "Presenter-visningen holder spillerne synlige, selv når kontrolfladen er skjult."
},
"player_live": {
"en": "Live",
"da": "Live"
},
"player_away": {
"en": "Away",
"da": "Væk"
},
"no_players": {
"en": "No players have joined this session yet.",
"da": "Ingen spillere har joined denne session endnu."
},
"reveal_title": {
"en": "Reveal",
"da": "Afsløring"
},
"correct_answer": {
"en": "Correct answer",
"da": "Rigtigt svar"
},
"lies_title": {
"en": "Lies",
"da": "Løgne"
},
"guesses_title": {
"en": "Guesses",
"da": "Gæt"
},
"lied_label": {
"en": "lied",
"da": "løj"
},
"picked_label": {
"en": "picked",
"da": "valgte"
},
"correct_label": {
"en": "correct",
"da": "korrekt"
},
"fooled_by_label": {
"en": "fooled by",
"da": "narret af"
},
"incorrect_label": {
"en": "incorrect",
"da": "forkert"
},
"developer_state_title": {
"en": "Developer state",
"da": "Udviklerstatus"
},
"developer_state_body": {
"en": "Raw diagnostics, manual state input, and phase artifacts stay here instead of dominating the presenter view.",
"da": "Rå diagnostik, manuel state-input og faseartefakter ligger her i stedet for at dominere presenter-visningen."
},
"sync_transport_label": {
"en": "Sync transport",
"da": "Synk transport"
},
"realtime_status_label": {
"en": "Realtime status",
"da": "Realtime-status"
},
"last_event_label": {
"en": "Last event",
"da": "Seneste event"
},
"presenter_control_title": {
"en": "Backstage control",
"da": "Backstage-kontrol"
},
"presenter_scene_title_lobby": {
"en": "Room open",
"da": "Rummet er åbent"
},
"presenter_scene_title": {
"en": "Question in play",
"da": "Spørgsmålet er i spil"
},
"presenter_scene_title_guess": {
"en": "Answer mix in play",
"da": "Svarmixet er i spil"
},
"presenter_scene_title_reveal": {
"en": "Round reveal",
"da": "Rundens afsløring"
},
"presenter_scene_title_scoreboard": {
"en": "Scores on the board",
"da": "Scoren er på tavlen"
},
"presenter_scene_title_finished": {
"en": "Final standings",
"da": "Endelige placeringer"
},
"presenter_scene_body_lobby": {
"en": "Let the room gather around the join code while the roster fills in and the next round gets ready.",
"da": "Lad rummet samle sig om join-koden, mens spilleroversigten fyldes op, og næste runde bliver klar."
},
"presenter_scene_body_lie": {
"en": "Keep the prompt on the main screen while players invent believable lies on their own devices.",
"da": "Hold spørgsmålet på hovedskærmen, mens spillerne finder på troværdige løgne på deres egne enheder."
},
"presenter_scene_body_guess": {
"en": "Keep every option readable from the main screen while the room locks in a final guess.",
"da": "Hold alle svar læsbare på hovedskærmen, mens rummet låser sit endelige gæt fast."
},
"presenter_scene_body_reveal": {
"en": "Show the truth first, then let the room track which bluffs landed and who got fooled.",
"da": "Vis sandheden først, og lad derefter rummet følge hvilke bluffs der landede, og hvem der blev narret."
},
"presenter_scene_body_scoreboard": {
"en": "Let the scores breathe on the main screen before deciding whether to move on or close the game.",
"da": "Lad scoren få luft på hovedskærmen, før I beslutter om spillet skal videre eller lukkes."
},
"presenter_scene_body_finished": {
"en": "Hold the closing standings on screen long enough for the room to take in the result.",
"da": "Hold slutstillingen på skærmen længe nok til, at rummet kan tage resultatet ind."
},
"presenter_scene_next_step": {
"en": "Next host beat",
"da": "Næste værtsslag"
},
"presenter_scene_answers_title": {
"en": "Answer cards",
"da": "Svarkort"
},
"presenter_scene_answers_body": {
"en": "These are the options currently projected for the room.",
"da": "Det er de svarmuligheder, der lige nu projiceres til rummet."
},
"presenter_scene_cue_start_label": {
"en": "Open the next round",
"da": "Åbn næste runde"
},
"presenter_scene_cue_start_body": {
"en": "When the room is settled, launch the first prompt and move the presenter surface into the active round.",
"da": "Når rummet har sat sig, så start det første spørgsmål og flyt presenter-fladen ind i den aktive runde."
},
"presenter_scene_cue_show_label": {
"en": "Bring the question into focus",
"da": "Bring spørgsmålet i fokus"
},
"presenter_scene_cue_show_body": {
"en": "Use the prompt as the room anchor, then advance when the round is visually settled.",
"da": "Brug spørgsmålet som rummets anker, og gå videre når runden visuelt har sat sig."
},
"presenter_scene_cue_mix_label": {
"en": "Move into the answer mix",
"da": "Gå videre til svarmixet"
},
"presenter_scene_cue_mix_body": {
"en": "Once the room is ready, mix the house lies and player lies into the next guessing moment.",
"da": "Når rummet er klar, så mix husets løgne og spillernes løgne ind i næste gæt-øjeblik."
},
"presenter_scene_cue_reveal_label": {
"en": "Trigger the reveal",
"da": "Start afsløringen"
},
"presenter_scene_cue_reveal_body": {
"en": "When enough guesses are in, calculate the round and move the room into the truth moment.",
"da": "Når nok gæt er inde, så beregn runden og flyt rummet ind i sandhedsøjeblikket."
},
"presenter_scene_cue_scoreboard_label": {
"en": "Land the scoreboard",
"da": "Land scoreboardet"
},
"presenter_scene_cue_scoreboard_body": {
"en": "Push the reveal into the score beat once the room has had time to read the round outcome.",
"da": "Skub afsløringen videre til score-øjeblikket, når rummet har haft tid til at læse rundens udfald."
},
"presenter_scene_cue_close_label": {
"en": "Choose the next beat",
"da": "Vælg næste beat"
},
"presenter_scene_cue_close_body": {
"en": "Use the scoreboard moment to decide whether the room wants another round or the final result.",
"da": "Brug scoreboard-øjeblikket til at afgøre, om rummet vil have en runde mere eller det endelige resultat."
},
"presenter_scene_cue_finished_label": {
"en": "Hold the closing frame",
"da": "Hold afslutningsbilledet"
},
"presenter_scene_cue_finished_body": {
"en": "Let the final standings sit on screen as the last beat of the game.",
"da": "Lad slutstillingen stå på skærmen som spillets sidste beat."
},
"presenter_scene_cue_wait_label": {
"en": "Hold the room here",
"da": "Hold rummet her"
},
"presenter_scene_cue_wait_body": {
"en": "Let the main screen breathe while players are still writing on their phones.",
"da": "Lad hovedskærmen få luft, mens spillerne stadig skriver på deres telefoner."
},
"presenter_scene_roster_title": {
"en": "On the floor",
"da": "På gulvet"
},
"presenter_scene_roster_body": {
"en": "Each player keeps a stable identity token on the presenter screen until real avatars arrive.",
"da": "Hver spiller beholder et stabilt identitetstoken på presenterskærmen, indtil rigtige avatarer kommer."
},
"presenter_scene_lead_title": {
"en": "Current lead",
"da": "Nuværende føring"
},
"presenter_scene_stat_start_ready": {
"en": "Start ready",
"da": "Klar til start"
},
"presenter_scene_stat_lies": {
"en": "Lies in play",
"da": "Løgne i spil"
},
"presenter_scene_stat_correct_guesses": {
"en": "Correct guesses",
"da": "Rigtige gæt"
},
"presenter_scene_stat_fooled_players": {
"en": "Players fooled",
"da": "Spillere narret"
},
"presenter_waiting": {
"en": "Waiting for the next round to begin.",
"da": "Venter på at næste runde starter."
},
"phase_summary_lobby": {
"en": "Use the presenter surface for atmosphere and player roster, then move into the next round when ready.",
"da": "Brug presenter-fladen til stemning og spilleroversigt, og gå videre til næste runde når I er klar."
},
"phase_summary_lie": {
"en": "Players are writing believable lies while the host screen carries the prompt and pacing.",
"da": "Spillerne skriver troværdige løgne, mens værtsskærmen bærer spørgsmålet og rytmen."
},
"phase_summary_guess": {
"en": "The game is collecting guesses. Keep the presenter view focused while players decide on their answers.",
"da": "Spillet samler gæt ind. Hold presenter-visningen fokuseret, mens spillerne vælger deres svar."
},
"phase_summary_reveal": {
"en": "The reveal phase is ready. Show the truth, the bluffs, and who fooled whom.",
"da": "Afsløringsfasen er klar. Vis sandheden, bluffene og hvem der narrede hvem."
},
"phase_summary_scoreboard": {
"en": "Scores are ready to land. Use this moment for pacing before the next round starts.",
"da": "Scoren er klar til at lande. Brug øjeblikket til pacing før næste runde starter."
},
"phase_summary_finished": {
"en": "The final result is ready. This screen should now carry the closing moment of the game.",
"da": "Det endelige resultat er klar. Denne skærm skal nu bære spillets afslutning."
}
},
"player": {
"title": {
"en": "Player gameplay flow",
"da": "Spiller gameplay-flow"
},
"nickname": {
"en": "Nickname",
"da": "Kaldenavn"
},
"join": {
"en": "Join",
"da": "Join"
},
"lie_label": {
"en": "Lie",
"da": "Løgn"
},
"submit_lie": {
"en": "Submit lie",
"da": "Send løgn"
},
"retry_lie_submit": {
"en": "Retry lie submit",
"da": "Prøv løgn igen"
},
"submit_guess": {
"en": "Submit guess",
"da": "Send gæt"
},
"retry_guess_submit": {
"en": "Retry guess submit",
"da": "Prøv gæt igen"
},
"final_leaderboard": {
"en": "Final leaderboard",
"da": "Finale leaderboard"
},
"reconnecting_text": {
"en": "Reconnecting… trying to refresh session state.",
"da": "Forbinder igen… prøver at opdatere session."
},
"offline_text": {
"en": "You are offline. Reconnect to continue gameplay.",
"da": "Du er offline. Forbind igen for at fortsætte."
},
"retry_now": {
"en": "Retry now",
"da": "Prøv nu"
},
"loading_refresh": {
"en": "Loading latest session state…",
"da": "Indlæser seneste session-status…"
},
"sync_delayed_text": {
"en": "Refreshing in the background is taking longer than expected…",
"da": "Baggrundsopdatering tager længere tid end forventet…"
},
"loading_join": {
"en": "Joining session… restoring your player state.",
"da": "Joiner session… gendanner spillerstatus."
},
"loading_submit_lie": {
"en": "Submitting lie… waiting for guess phase.",
"da": "Sender løgn… venter på gættefase."
},
"loading_submit_guess": {
"en": "Submitting guess… waiting for reveal.",
"da": "Sender gæt… venter på afsløring."
},
"session_refresh_failed": {
"en": "Session refresh failed",
"da": "Kunne ikke opdatere session"
},
"join_failed": {
"en": "Join failed",
"da": "Join fejlede"
},
"lie_submit_failed": {
"en": "Lie submit failed",
"da": "Løgn-fejl"
},
"guess_submit_failed": {
"en": "Guess submit failed",
"da": "Gætte-fejl"
},
"audio_policy_notice": {
"en": "Audio playback is disabled on phone clients. Sound is available on the primary host device.",
"da": "Lydafspilning er slået fra på telefon-klienten. Lyd afspilles kun på den primære værtsenhed."
},
"show_developer_state": {
"en": "Show developer state",
"da": "Vis udviklerstatus"
},
"hide_developer_state": {
"en": "Hide developer state",
"da": "Skjul udviklerstatus"
},
"player_scene_title_join": {
"en": "Player station",
"da": "Spillerstation"
},
"player_scene_title_lobby": {
"en": "Seat reserved",
"da": "Plads reserveret"
},
"player_scene_title_waiting_lie": {
"en": "Lie locked in",
"da": "Løgnen er låst"
},
"player_scene_title_waiting_guess": {
"en": "Guess locked in",
"da": "Gættet er låst"
},
"player_scene_title_waiting": {
"en": "Stay in the room",
"da": "Bliv i rummet"
},
"player_scene_join_headline": {
"en": "Bring this phone into the game",
"da": "Tag denne telefon med ind i spillet"
},
"player_scene_body_join": {
"en": "Use the shared session code and your nickname to claim this device before the round starts.",
"da": "Brug den delte sessionskode og dit kaldenavn til at tage denne enhed i brug, før runden starter."
},
"player_scene_body_lobby": {
"en": "You are checked in. Keep this phone ready while the host opens the next prompt on the main screen.",
"da": "Du er tjekket ind. Hold telefonen klar, mens værten åbner næste spørgsmål på hovedskærmen."
},
"player_scene_body_waiting": {
"en": "Your action is already locked in. Keep this device nearby while the round advances on the shared screen.",
"da": "Din handling er allerede låst. Hold enheden i nærheden, mens runden går videre på fællesskærmen."
},
"player_scene_next_step": {
"en": "Next phone beat",
"da": "Næste telefon-beat"
},
"player_scene_cue_join_label": {
"en": "Claim this screen",
"da": "Tag denne skærm i brug"
},
"player_scene_cue_join_body": {
"en": "Enter the session code, choose a nickname, and join before the host starts the round.",
"da": "Indtast sessionskoden, vælg et kaldenavn, og join før værten starter runden."
},
"player_scene_cue_lobby_label": {
"en": "Wait for the host",
"da": "Vent på værten"
},
"player_scene_cue_lobby_body": {
"en": "Once the room is settled, the shared screen will move into the round and this phone will switch to the active task.",
"da": "Når rummet har sat sig, går fællesskærmen videre til runden, og denne telefon skifter til den aktive opgave."
},
"player_scene_cue_waiting_label": {
"en": "Hold your place",
"da": "Hold din plads"
},
"player_scene_cue_waiting_body": {
"en": "The game is still syncing around the room. This device will update in place when the next playable step opens.",
"da": "Spillet synkroniserer stadig rundt i rummet. Denne enhed opdaterer på stedet, når næste spilbare trin åbner."
},
"active_scene_cue_lie_label": {
"en": "Sell the bluff",
"da": "Sælg bluffet"
},
"active_scene_cue_lie_body": {
"en": "Write one answer that could pass for the truth, then lock it in before the host flips the room.",
"da": "Skriv ét svar der kan lyde sandt, og lås det før værten vender rummet."
},
"active_scene_cue_guess_label": {
"en": "Pick the truth",
"da": "Vælg sandheden"
},
"active_scene_cue_guess_body": {
"en": "Read the mixed answers, trust your instinct, and send one guess when it feels right.",
"da": "Læs de blandede svar, stol på din mavefornemmelse, og send ét gæt når det føles rigtigt."
},
"active_scene_cue_reveal_label": {
"en": "Read the round",
"da": "Læs runden"
},
"active_scene_cue_reveal_body": {
"en": "The answer is out. Check who got fooled and how your choice landed before the scoreboard arrives.",
"da": "Svaret er ude. Se hvem der blev narret, og hvordan dit valg landede, før scoretavlen kommer."
},
"active_scene_cue_result_label": {
"en": "Clock the standings",
"da": "Læs stillingen"
},
"active_scene_cue_result_body": {
"en": "The room score is live. Track your place here while the host decides on the next round or the finish.",
"da": "Rummets score er live. Følg din placering her, mens værten vælger næste runde eller afslutningen."
},
"headline_join": {
"en": "Join the session",
"da": "Join sessionen"
},
"headline_waiting": {
"en": "Stay ready for the next phase",
"da": "Vær klar til næste fase"
},
"join_section_title": {
"en": "Join this session",
"da": "Join denne session"
},
"current_task_title": {
"en": "Current task",
"da": "Nuværende opgave"
},
"join_section_body": {
"en": "Use your session code and nickname to attach this device to the game.",
"da": "Brug sessionskoden og dit kaldenavn til at koble denne enhed til spillet."
},
"answers_not_ready": {
"en": "Answers have not been mixed yet.",
"da": "Svarene er ikke blevet blandet endnu."
},
"round_view_title": {
"en": "Round view",
"da": "Rundevisning"
},
"scoreboard_title": {
"en": "Scoreboard",
"da": "Scoretavle"
},
"round_prompt_waiting": {
"en": "The round prompt will appear here when the game phase exposes it.",
"da": "Rundens spørgsmål vises her, når spilfasen tillader det."
},
"selected_answer_label": {
"en": "Selected answer",
"da": "Valgt svar"
},
"selection_pending_label": {
"en": "Not picked yet",
"da": "Ikke valgt endnu"
},
"draft_length_label": {
"en": "Draft length",
"da": "Længde på udkast"
},
"answers_available_label": {
"en": "Answers",
"da": "Svar"
},
"reveal_title": {
"en": "Reveal",
"da": "Afsløring"
},
"correct_answer": {
"en": "Correct answer",
"da": "Rigtigt svar"
},
"guess_result_label": {
"en": "Your guess",
"da": "Dit gæt"
},
"players_fooled_label": {
"en": "Players fooled",
"da": "Narrede spillere"
},
"lied_label": {
"en": "lied",
"da": "løj"
},
"picked_label": {
"en": "picked",
"da": "valgte"
},
"correct_label": {
"en": "correct",
"da": "korrekt"
},
"fooled_by_label": {
"en": "fooled by",
"da": "narret af"
},
"incorrect_label": {
"en": "incorrect",
"da": "forkert"
},
"developer_state_title": {
"en": "Developer state",
"da": "Udviklerstatus"
},
"developer_state_body": {
"en": "Player diagnostics live here so the default mobile surface can stay focused on one action per phase.",
"da": "Spillerdiagnostik ligger her, så standardvisningen på mobilen kan forblive fokuseret på én handling per fase."
},
"room_roster_title": {
"en": "In the room",
"da": "I rummet"
},
"room_roster_body": {
"en": "Keep track of who is already connected without pushing diagnostics into the main player flow.",
"da": "Hold styr på hvem der allerede er forbundet uden at skubbe diagnostik ind i den normale spillerflow."
},
"room_players_label": {
"en": "Players",
"da": "Spillere"
},
"room_live_label": {
"en": "Live",
"da": "Live"
},
"room_away_label": {
"en": "Away",
"da": "Væk"
},
"player_scene_stat_score": {
"en": "Your score",
"da": "Din score"
},
"result_rank_label": {
"en": "Your place",
"da": "Din placering"
},
"leader_score_label": {
"en": "Lead score",
"da": "Førende score"
},
"gap_to_lead_label": {
"en": "Gap to lead",
"da": "Afstand til føring"
},
"connection_label": {
"en": "Connection",
"da": "Forbindelse"
},
"player_id_label": {
"en": "Player ID",
"da": "Spiller-id"
},
"token_label": {
"en": "Token",
"da": "Token"
},
"sync_transport_label": {
"en": "Sync transport",
"da": "Synk transport"
},
"realtime_status_label": {
"en": "Realtime status",
"da": "Realtime-status"
},
"last_event_label": {
"en": "Last event",
"da": "Seneste event"
},
"token_present": {
"en": "present",
"da": "til stede"
},
"token_missing": {
"en": "missing",
"da": "mangler"
},
"you_label": {
"en": "You",
"da": "Dig"
},
"phase_summary_lobby": {
"en": "Connect this device to the session and stay ready for the next prompt.",
"da": "Forbind denne enhed til sessionen og vær klar til næste spørgsmål."
},
"phase_summary_lie": {
"en": "Write one believable answer. The game will keep syncing in the background while you type.",
"da": "Skriv ét troværdigt svar. Spillet synkroniserer videre i baggrunden, mens du skriver."
},
"phase_summary_guess": {
"en": "Choose the answer you think is correct. Your selection stays local until you submit it.",
"da": "Vælg det svar du tror er rigtigt. Dit valg bliver lokalt, indtil du sender det."
},
"phase_summary_reveal": {
"en": "The reveal phase is active. Watch how the lies and guesses landed this round.",
"da": "Afsløringsfasen er aktiv. Se hvordan løgne og gæt landede i denne runde."
},
"phase_summary_scoreboard": {
"en": "Scores are being shown. Wait here for the next round or the final result.",
"da": "Scoren bliver vist. Vent her på næste runde eller det endelige resultat."
},
"phase_summary_finished": {
"en": "The game is over. The final standings are ready below.",
"da": "Spillet er slut. De endelige placeringer er klar nedenfor."
},
"action_summary_lie": {
"en": "Type a believable lie and send it when you are ready.",
"da": "Skriv en troværdig løgn og send den, når du er klar."
},
"action_summary_guess": {
"en": "Pick one answer and submit your guess.",
"da": "Vælg ét svar og send dit gæt."
},
"action_summary_scoreboard": {
"en": "Check the current standings and stay ready for the next transition.",
"da": "Tjek den aktuelle stilling og vær klar til næste overgang."
},
"action_summary_finished": {
"en": "Review the final standings for this game.",
"da": "Gennemgå de endelige placeringer for dette spil."
},
"action_summary_waiting": {
"en": "This device is connected. Waiting for the next playable step.",
"da": "Denne enhed er forbundet. Venter på næste spilbare trin."
},
"waiting_connected": {
"en": "You are connected. Waiting for the next phase from the host.",
"da": "Du er forbundet. Venter på næste fase fra værten."
},
"sync_status_eyebrow": {
"en": "Sync status",
"da": "Synkstatus"
},
"sync_status_title_reconnecting": {
"en": "Live sync is reconnecting",
"da": "Livesynk forbinder igen"
},
"sync_status_body_reconnecting": {
"en": "Realtime push dropped back to recovery mode. Keep typing or keep your pick here while the phone refreshes in the background.",
"da": "Realtime-push er faldet tilbage til gendannelsestilstand. Bliv ved med at skrive eller behold dit valg her, mens telefonen opdaterer i baggrunden."
},
"sync_status_title_offline": {
"en": "This phone is offline",
"da": "Denne telefon er offline"
},
"sync_status_body_offline": {
"en": "Your draft stays on this device, but the game cannot advance here until the network comes back.",
"da": "Dit udkast bliver på denne enhed, men spillet kan ikke fortsætte her, før netværket er tilbage."
},
"sync_status_title_delayed": {
"en": "Background refresh is slow",
"da": "Baggrundsopdateringen er langsom"
},
"sync_status_body_delayed": {
"en": "Updates are taking longer than expected. Keep your input here and the client will keep retrying in the background.",
"da": "Opdateringer tager længere tid end forventet. Behold dit input her, og klienten fortsætter med at prøve igen i baggrunden."
}
}
},
"capabilities": {
"client_has_no_audio_output": true
}
},
"backend": {
"error_codes": {
"calculate_scores_invalid_phase": "calculate_scores_invalid_phase",
"category_has_no_questions": "category_has_no_questions",
"category_not_found": "category_not_found",
"category_slug_required": "category_slug_required",
"finish_game_invalid_phase": "finish_game_invalid_phase",
"guess_already_submitted": "guess_already_submitted",
"guess_submission_invalid_phase": "guess_submission_invalid_phase",
"host_only_calculate_scores": "host_only_calculate_scores",
"host_only_finish_game": "host_only_finish_game",
"host_only_mix_answers": "host_only_mix_answers",
"host_only_show_question": "host_only_show_question",
"host_only_start_next_round": "host_only_start_next_round",
"host_only_start_round": "host_only_start_round",
"host_only_view_scoreboard": "host_only_view_scoreboard",
"invalid_player_session_token": "invalid_player_session_token",
"lie_already_submitted": "lie_already_submitted",
"lie_submission_invalid_phase": "lie_submission_invalid_phase",
"lie_text_invalid": "lie_text_invalid",
"mix_answers_invalid_phase": "mix_answers_invalid_phase",
"nickname_invalid": "nickname_invalid",
"nickname_taken": "nickname_taken",
"no_available_questions": "no_available_questions",
"no_guesses_submitted": "no_guesses_submitted",
"not_enough_answers_to_mix": "not_enough_answers_to_mix",
"player_id_required": "player_id_required",
"player_not_found_in_session": "player_not_found_in_session",
"question_already_shown": "question_already_shown",
"round_already_configured": "round_already_configured",
"round_config_missing": "round_config_missing",
"round_question_not_found": "round_question_not_found",
"round_start_invalid_phase": "round_start_invalid_phase",
"scoreboard_invalid_phase": "scoreboard_invalid_phase",
"scores_already_calculated": "scores_already_calculated",
"selected_answer_invalid": "selected_answer_invalid",
"selected_text_invalid": "selected_text_invalid",
"session_code_required": "session_code_required",
"session_not_found": "session_not_found",
"session_not_joinable": "session_not_joinable",
"session_token_required": "session_token_required",
"show_question_invalid_phase": "show_question_invalid_phase",
"lie_submission_closed": "lie_submission_closed",
"next_round_invalid_phase": "next_round_invalid_phase",
"guess_submission_closed": "guess_submission_closed"
},
"errors": {
"calculate_scores_invalid_phase": {
"en": "Scores can only be calculated in guess phase.",
"da": "Score kan kun udregnes i gættefasen."
},
"category_has_no_questions": {
"en": "Category has no active questions",
"da": "Kategorien har ingen aktive spørgsmål"
},
"category_not_found": {
"en": "Category not found",
"da": "Kategori blev ikke fundet"
},
"category_slug_required": {
"en": "category_slug is required",
"da": "category_slug er påkrævet"
},
"finish_game_invalid_phase": {
"en": "Game can only be finished from scoreboard phase.",
"da": "Spillet kan kun afsluttes fra scoreboard-fasen."
},
"guess_already_submitted": {
"en": "Guess has already been submitted for this player.",
"da": "Gættet er allerede indsendt for denne spiller."
},
"guess_submission_invalid_phase": {
"en": "Guess submission is only allowed in guess phase.",
"da": "Gæt kan kun sendes i gættefasen."
},
"host_only_calculate_scores": {
"en": "Only the host can calculate scores.",
"da": "Kun værten kan udregne score."
},
"host_only_finish_game": {
"en": "Only the host can finish the game.",
"da": "Kun værten kan afslutte spillet."
},
"host_only_mix_answers": {
"en": "Only host can mix answers",
"da": "Kun værten kan blande svar"
},
"host_only_show_question": {
"en": "Only host can show question",
"da": "Kun værten kan vise spørgsmålet"
},
"host_only_start_next_round": {
"en": "Only the host can start the next round.",
"da": "Kun værten kan starte næste runde."
},
"host_only_start_round": {
"en": "Only host can start round",
"da": "Kun værten kan starte runden"
},
"host_only_view_scoreboard": {
"en": "Only the host can view the scoreboard.",
"da": "Kun værten kan se scoreboardet."
},
"invalid_player_session_token": {
"en": "Player session token is invalid.",
"da": "Spillerens session-token er ugyldigt."
},
"lie_already_submitted": {
"en": "Lie has already been submitted for this player.",
"da": "Løgnen er allerede indsendt for denne spiller."
},
"lie_submission_invalid_phase": {
"en": "Lie submission is only allowed in lie phase.",
"da": "Løgn kan kun sendes i løgnefasen."
},
"lie_text_invalid": {
"en": "Text must be between 1 and 255 characters.",
"da": "Tekst skal være mellem 1 og 255 tegn."
},
"mix_answers_invalid_phase": {
"en": "Answers can only be mixed in lie or guess phase",
"da": "Svar kan kun blandes i løgne- eller gættefasen"
},
"nickname_invalid": {
"en": "Nickname must be between 2 and 40 characters",
"da": "Kaldenavn skal være mellem 2 og 40 tegn"
},
"nickname_taken": {
"en": "Nickname already taken",
"da": "Kaldenavnet er allerede taget"
},
"no_available_questions": {
"en": "No available questions in category",
"da": "Ingen tilgængelige spørgsmål i kategorien"
},
"no_guesses_submitted": {
"en": "No guesses have been submitted for this round question.",
"da": "Der er ikke indsendt gæt for dette rundespørgsmål."
},
"not_enough_answers_to_mix": {
"en": "Not enough answers to mix",
"da": "Ikke nok svar at blande"
},
"player_id_required": {
"en": "Player id is required.",
"da": "Spiller-id er påkrævet."
},
"player_not_found_in_session": {
"en": "Player was not found in this session.",
"da": "Spilleren blev ikke fundet i denne session."
},
"question_already_shown": {
"en": "Question already shown for this round",
"da": "Spørgsmålet er allerede vist for denne runde"
},
"round_already_configured": {
"en": "Round already configured",
"da": "Runden er allerede konfigureret"
},
"round_config_missing": {
"en": "Round config missing",
"da": "Rundekonfiguration mangler"
},
"round_question_not_found": {
"en": "Round question not found",
"da": "Rundespørgsmål blev ikke fundet"
},
"round_start_invalid_phase": {
"en": "Round can only be started from lobby",
"da": "Runden kan kun startes fra lobbyen"
},
"scoreboard_invalid_phase": {
"en": "Scoreboard is only available in scoreboard phase.",
"da": "Scoreboard er kun tilgængeligt i scoreboard-fasen."
},
"scores_already_calculated": {
"en": "Scores have already been calculated for this round question.",
"da": "Score er allerede udregnet for dette rundespørgsmål."
},
"selected_answer_invalid": {
"en": "Selected answer is not part of this round.",
"da": "Det valgte svar er ikke en del af denne runde."
},
"selected_text_invalid": {
"en": "Selected text must be between 1 and 255 characters.",
"da": "Valgt tekst skal være mellem 1 og 255 tegn."
},
"session_code_required": {
"en": "Session code is required",
"da": "Sessionskode er påkrævet"
},
"session_not_found": {
"en": "Session not found",
"da": "Session blev ikke fundet"
},
"session_not_joinable": {
"en": "Session is not joinable",
"da": "Sessionen kan ikke joine nu"
},
"session_token_required": {
"en": "Session token is required.",
"da": "Session-token er påkrævet."
},
"show_question_invalid_phase": {
"en": "Question can only be shown in lie phase",
"da": "Spørgsmålet kan kun vises i løgnefasen"
},
"lie_submission_closed": {
"en": "Lie submission window has closed",
"da": "Vinduet for løgn-indsendelse er lukket"
},
"next_round_invalid_phase": {
"en": "Next round can only start from scoreboard phase",
"da": "Næste runde kan kun starte fra scoreboard-fasen"
},
"guess_submission_closed": {
"en": "Guess submission window has closed",
"da": "Vinduet for gæt-indsendelse er lukket"
}
}
},
"contract": {
"ownership": {
"artifact": "shared/i18n/lobby.json",
"backend": "lobby/* reads backend/errors + backend/error_codes",
"frontend": "frontend/* reads frontend/errors + frontend/ui + contract/backend_to_frontend_error_keys"
},
"locale": {
"default": "en",
"supported": [
"en",
"da"
],
"fallback": "Use default locale when requested locale is unsupported or key translation is missing."
},
"backend_to_frontend_error_keys": {
"calculate_scores_invalid_phase": "unknown",
"category_has_no_questions": "start_round_failed",
"category_not_found": "start_round_failed",
"category_slug_required": "start_round_failed",
"finish_game_invalid_phase": "unknown",
"guess_already_submitted": "unknown",
"guess_submission_invalid_phase": "unknown",
"host_only_action": "start_round_failed",
"host_only_calculate_scores": "unknown",
"host_only_finish_game": "unknown",
"host_only_mix_answers": "start_round_failed",
"host_only_show_question": "start_round_failed",
"host_only_start_next_round": "unknown",
"host_only_start_round": "start_round_failed",
"host_only_view_scoreboard": "unknown",
"invalid_player_session_token": "unknown",
"lie_already_submitted": "unknown",
"lie_submission_invalid_phase": "unknown",
"lie_text_invalid": "unknown",
"mix_answers_invalid_phase": "start_round_failed",
"nickname_invalid": "nickname_invalid",
"nickname_taken": "nickname_taken",
"no_available_questions": "start_round_failed",
"no_guesses_submitted": "unknown",
"not_enough_answers_to_mix": "start_round_failed",
"player_id_required": "unknown",
"player_not_found_in_session": "unknown",
"question_already_shown": "start_round_failed",
"round_already_configured": "start_round_failed",
"round_config_missing": "start_round_failed",
"round_question_not_found": "start_round_failed",
"round_start_invalid_phase": "start_round_failed",
"scoreboard_invalid_phase": "unknown",
"scores_already_calculated": "unknown",
"selected_answer_invalid": "unknown",
"selected_text_invalid": "unknown",
"session_code_required": "session_code_required",
"session_not_found": "session_not_found",
"session_not_joinable": "join_failed",
"session_token_required": "unknown",
"show_question_invalid_phase": "start_round_failed",
"lie_submission_closed": "unknown",
"guess_submission_closed": "unknown",
"next_round_invalid_phase": "unknown"
}
}
}