{ "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" }, "host_nav": { "en": "Host", "da": "Vært" }, "player_nav": { "en": "Player", "da": "Spiller" }, "language_label": { "en": "Language", "da": "Sprog" } }, "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" } }, "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…" }, "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." } } }, "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", "guess_submission_window_closed": "guess_submission_window_closed", "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_submission_window_closed": "lie_submission_window_closed", "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", "round_config_missing": "round_config_missing", "question_already_shown": "question_already_shown", "no_available_questions": "no_available_questions", "mix_answers_invalid_phase": "mix_answers_invalid_phase", "round_question_not_found": "round_question_not_found", "not_enough_answers_to_mix": "not_enough_answers_to_mix", "host_only_start_round": "host_only_start_round", "host_only_show_question": "host_only_show_question", "host_only_mix_answers": "host_only_mix_answers", "player_id_required": "player_id_required", "session_token_required": "session_token_required", "lie_text_invalid": "lie_text_invalid", "player_not_found_in_session": "player_not_found_in_session", "invalid_player_session_token": "invalid_player_session_token", "lie_submission_closed": "lie_submission_closed", "lie_already_submitted": "lie_already_submitted", "host_only_view_scoreboard": "host_only_view_scoreboard", "scoreboard_invalid_phase": "scoreboard_invalid_phase", "host_only_start_next_round": "host_only_start_next_round", "next_round_invalid_phase": "next_round_invalid_phase", "host_only_finish_game": "host_only_finish_game", "finish_game_invalid_phase": "finish_game_invalid_phase", "host_only_calculate_scores": "host_only_calculate_scores", "scores_already_calculated": "scores_already_calculated", "calculate_scores_invalid_phase": "calculate_scores_invalid_phase", "no_guesses_submitted": "no_guesses_submitted", "guess_submission_closed": "guess_submission_closed", "selected_answer_invalid": "selected_answer_invalid", "guess_already_submitted": "guess_already_submitted", "lie_submission_invalid_phase": "lie_submission_invalid_phase", "selected_text_invalid": "selected_text_invalid", "guess_submission_invalid_phase": "guess_submission_invalid_phase" }, "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." }, "guess_submission_window_closed": { "en": "Guess submission window has closed.", "da": "Vinduet for gætindsendelse er lukket." }, "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_submission_window_closed": { "en": "Lie submission window has closed.", "da": "Vinduet for løgnindsendelse er lukket." }, "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" }, "round_config_missing": { "en": "Round config missing", "da": "Rundekonfiguration mangler" }, "question_already_shown": { "en": "Question already shown for this round", "da": "Spørgsmålet er allerede vist for denne runde" }, "no_available_questions": { "en": "No available questions in category", "da": "Ingen tilgængelige spørgsmål i kategorien" }, "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" }, "round_question_not_found": { "en": "Round question not found", "da": "Rundespørgsmål blev ikke fundet" }, "not_enough_answers_to_mix": { "en": "Not enough answers to mix", "da": "Ikke nok svar at blande" }, "host_only_start_round": { "en": "Only host can start round", "da": "Kun værten kan starte runden" }, "host_only_show_question": { "en": "Only host can show question", "da": "Kun værten kan vise spørgsmålet" }, "host_only_mix_answers": { "en": "Only host can mix answers", "da": "Kun værten kan blande svar" }, "player_id_required": { "en": "player_id is required", "da": "player_id er påkrævet" }, "session_token_required": { "en": "session_token is required", "da": "session_token er påkrævet" }, "lie_text_invalid": { "en": "text must be between 1 and 255 characters", "da": "text skal være mellem 1 og 255 tegn" }, "player_not_found_in_session": { "en": "Player not found in session", "da": "Spiller blev ikke fundet i sessionen" }, "invalid_player_session_token": { "en": "Invalid player session token", "da": "Ugyldigt spiller-session-token" }, "lie_submission_closed": { "en": "Lie submission window has closed", "da": "Vinduet for løgn-indsendelse er lukket" }, "lie_already_submitted": { "en": "Lie already submitted for this player", "da": "Løgnen er allerede indsendt for denne spiller" }, "host_only_view_scoreboard": { "en": "Only host can view scoreboard", "da": "Kun værten kan se scoreboard" }, "scoreboard_invalid_phase": { "en": "Scoreboard is only available in reveal/scoreboard phase", "da": "Scoreboard er kun tilgængeligt i reveal-/scoreboard-fasen" }, "host_only_start_next_round": { "en": "Only host can start next round", "da": "Kun værten kan starte næste runde" }, "next_round_invalid_phase": { "en": "Next round can only start from scoreboard phase", "da": "Næste runde kan kun starte fra scoreboard-fasen" }, "host_only_finish_game": { "en": "Only host can finish game", "da": "Kun værten kan afslutte spillet" }, "finish_game_invalid_phase": { "en": "Game can only be finished from scoreboard phase", "da": "Spillet kan kun afsluttes fra scoreboard-fasen" }, "host_only_calculate_scores": { "en": "Only host can calculate scores", "da": "Kun værten kan udregne score" }, "scores_already_calculated": { "en": "Scores already calculated for this round question", "da": "Score er allerede udregnet for dette rundespørgsmål" }, "calculate_scores_invalid_phase": { "en": "Scores can only be calculated in guess phase", "da": "Score kan kun udregnes i gættefasen" }, "no_guesses_submitted": { "en": "No guesses submitted for this round question", "da": "Ingen gæt er indsendt for dette rundespørgsmål" }, "guess_submission_closed": { "en": "Guess submission window has closed", "da": "Vinduet for gæt-indsendelse er lukket" }, "selected_answer_invalid": { "en": "Selected answer is not part of this round", "da": "Det valgte svar er ikke en del af denne runde" }, "guess_already_submitted": { "en": "Guess already submitted for this player", "da": "Gættet er allerede indsendt for denne spiller" }, "lie_submission_invalid_phase": { "en": "Lie submission is only allowed in lie phase", "da": "Løgn kan kun indsendes i løgnefasen" }, "selected_text_invalid": { "en": "selected_text must be between 1 and 255 characters", "da": "selected_text skal være mellem 1 og 255 tegn" }, "guess_submission_invalid_phase": { "en": "Guess submission is only allowed in guess phase", "da": "Gæt kan kun indsendes i gættefasen" } } }, "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", "guess_submission_window_closed": "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_submission_window_closed": "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", "round_config_missing": "start_round_failed", "question_already_shown": "start_round_failed", "no_available_questions": "start_round_failed", "mix_answers_invalid_phase": "start_round_failed", "round_question_not_found": "start_round_failed", "not_enough_answers_to_mix": "start_round_failed", "player_id_required": "unknown", "session_token_required": "unknown", "lie_text_invalid": "unknown", "lie_submission_invalid_phase": "unknown", "player_not_found_in_session": "unknown", "invalid_player_session_token": "unknown", "lie_submission_closed": "unknown", "lie_already_submitted": "unknown", "selected_text_invalid": "unknown", "guess_submission_invalid_phase": "unknown", "guess_submission_closed": "unknown", "selected_answer_invalid": "unknown", "guess_already_submitted": "unknown", "host_only_view_scoreboard": "unknown", "scoreboard_invalid_phase": "unknown", "host_only_start_next_round": "unknown", "next_round_invalid_phase": "unknown", "host_only_finish_game": "unknown", "finish_game_invalid_phase": "unknown", "host_only_calculate_scores": "unknown", "scores_already_calculated": "unknown", "calculate_scores_invalid_phase": "unknown", "no_guesses_submitted": "unknown" } } }