🎉first frontend commit (WIP)

This commit is contained in:
pixii
2025-03-04 09:43:45 +01:00
parent e91fc6ce93
commit 3217b2c4c3
37 changed files with 5501 additions and 0 deletions

103
frontend/src/i18n/de.json Normal file
View File

@ -0,0 +1,103 @@
{
"page_name": "HexDeck",
"header": {
"theme_btn": {
"tooltip": "Thema wechseln: {current_theme}",
"dark": "Dunkel",
"light": "Hell",
"system": "System"
}
},
"footer": {
"imprint": "Impressum",
"github": "GitHub"
},
"404": {
"404_page_not_found": "404 - Seite nicht gefunden",
"page_not_found": "Die Seite {page} konnte nicht gefunden werden."
},
"imprint": {
"title": "Impressum",
"something_went_wrong": "Etwas ist schief gelaufen",
"timeout_while_loading": "Zeitüberschreitung beim Laden",
"retry": "Erneut versuchen",
"go_back": "Zurück"
},
"landing_page": {
"sub_title": "Multiplayer, kostenlos, für alle",
"connect_room": {
"rejoin_last_room": "Letztes Spiel erneut beitreten",
"join_last_room": "Letztem Raum beitreten",
"enter_room_code": "Raumcode eingeben",
"join_room": "Beitreten",
"enter_room_code_to_join": "Bitte geben Sie einen Raumcode ein, um beizutreten",
"or": "oder",
"create_a_room": "Einen Raum erstellen"
},
"open_source_container": {
"title": "Open Source",
"content": "Der Quellcode dieses Spiels ist auf GitHub verfügbar",
"github": "GitHub"
},
"stats_container": {
"title": "Statistiken",
"online_player_count": "Aktuelle Spieler: {count}",
"current_game_rooms": "Aktuelle Spiele: {count}",
"games_played": "Gespielte Spiele: {count}",
"no_data": "Keine Daten"
},
"show_footer": "Footer anzeigen"
},
"lobby": {
"search_player": "Spieler suchen...",
"kick_player": "Spieler entfernen",
"confirm_kick_player_message": "Möchten Sie den Spieler {player_name} wirklich entfernen?",
"confirm_kick_player": "Entfernen",
"rename_yourself": "Sich selbst umbenennen",
"rename_player": "Spieler umbenennen",
"regenerate_join_code": "Beitrittscode neu generieren",
"copy_join_code": "Beitrittscode kopieren",
"room_join_code": "Raum Beitrittscode",
"copy_code": "Code kopieren",
"copy_join_link": "Link kopieren",
"leave_game": "Spiel verlassen",
"confirm_leave_message": "Möchten Sie das Spiel wirklich verlassen?",
"confirm_leave": "Ja, verlassen",
"cancel": "Abbrechen",
"start_game": "Spiel starten",
"copied": "Kopiert",
"player_name": "Spielername",
"status": "Status",
"host": "Host",
"you": "Du"
},
"player_status": {
"connected": "Verbunden",
"disconnected": "Getrennt"
},
"game_status": {
"game_status": "Spielstatus: {game_status}",
"lobby": "Lobby",
"running": "Läuft",
"ended": "Beendet"
},
"error_messages": {
"no_room_found": "Kein Raum mit diesem Code gefunden",
"request_timeout": "Internet fehlgeschlagen! (Zeitüberschreitung)",
"invalid_player": "Ungültiger Spieler",
"invalid_session": "Ungültige Sitzung",
"game_not_running": "Das Spiel läuft nicht",
"player_not_active": "Der Spieler ist nicht aktiv",
"insufficient_permission": "Unzureichende Berechtigung",
"username_taken": "Der Benutzername ist bereits vergeben",
"game_already_started": "Das Spiel hat bereits begonnen",
"missing_parameter": "Fehlender Parameter",
"invalid_card_index": "Ungültige Karte ausgewählt (Index außerhalb der Grenzen)",
"card_not_playable": "Die Karte ist nicht spielbar",
"card_not_updatable": "Die Karte ist nicht aktualisierbar",
"error_message": "Fehlermeldung: {error_message}"
},
"game_screen": {
"loading": "Laden"
}
}

103
frontend/src/i18n/en.json Normal file
View File

@ -0,0 +1,103 @@
{
"page_name": "HexDeck",
"header": {
"theme_btn": {
"tooltip": "Switch theme: {current_theme}",
"dark": "Dark",
"light": "Light",
"system": "System"
}
},
"footer": {
"imprint": "Imprint",
"github": "GitHub"
},
"404": {
"404_page_not_found": "404 - Page not found",
"page_not_found": "The page {page} could not be found."
},
"imprint": {
"title": "Imprint",
"something_went_wrong": "Something went wrong",
"timeout_while_loading": "Timeout while loading",
"retry": "Retry",
"go_back": "Back"
},
"landing_page": {
"sub_title": "Multiplayer, free, for everyone",
"connect_room": {
"rejoin_last_room": "Rejoin last game",
"join_last_room": "Join last room",
"enter_room_code": "Enter a room code",
"join_room": "Join",
"enter_room_code_to_join": "Please enter a room code to join",
"or": "or",
"create_a_room": "Create a room"
},
"open_source_container": {
"title": "Open Source",
"content": "The Source Code of this game is available on GitHub",
"github": "GitHub"
},
"stats_container": {
"title": "Stats",
"online_player_count": "Current player: {count}",
"current_game_rooms": "Current games: {count}",
"games_played": "Games played: {count}",
"no_data": "No data"
},
"show_footer": "Show footer"
},
"lobby": {
"search_player": "Search player...",
"kick_player": "Kick player",
"confirm_kick_player_message": "Do you really want to kick the player {player_name}?",
"confirm_kick_player": "Kick",
"rename_yourself": "Rename yourself",
"rename_player": "Rename player",
"regenerate_join_code": "Regenerate join code",
"copy_join_code": "Copy join code",
"room_join_code": "Room Join Code",
"copy_code": "Copy Code",
"copy_join_link": "Copy Link",
"leave_game": "Leave game",
"confirm_leave_message": "Do you really want to leave the game?",
"confirm_leave": "Yes, leave",
"cancel": "Cancel",
"start_game": "Start game",
"copied": "Copied",
"player_name": "Player Name",
"status": "Status",
"host": "Host",
"you": "You"
},
"player_status": {
"connected": "Connected",
"disconnected": "Disconnected"
},
"game_status": {
"game_status": "Game status: {game_status}",
"lobby": "Lobby",
"running": "Running",
"ended": "Ended"
},
"error_messages": {
"no_room_found": "No room was found with this code",
"request_timeout": "Internet failed! (Timeout)",
"invalid_player": "Invalid player",
"invalid_session": "Invalid session",
"game_not_running": "The game is not running",
"player_not_active": "The player ist not active",
"insufficient_permission": "Insufficient permission",
"username_taken": "The username is already taken",
"game_already_started": "The game has already started",
"missing_parameter": "Missing parameter",
"invalid_card_index": "Invalid card selected (Index not in bounds)",
"card_not_playable": "The card is not playable",
"card_not_updatable": "The card is not updatable",
"error_message": "Error message: {error_message}"
},
"game_screen": {
"loading": "Loading"
}
}

18
frontend/src/i18n/i18n.ts Normal file
View File

@ -0,0 +1,18 @@
import { addMessages, register, init, getLocaleFromNavigator } from 'svelte-i18n';
import en from './en.json';
import de from './de.json';
addMessages('en', en);
addMessages('de', de);
register('en', () => import('./en.json'));
register('de', () => import('./de.json'));
const initialLocale = getLocaleFromNavigator();
console.log('Initial locale:', initialLocale);
init({
fallbackLocale: 'en',
initialLocale: initialLocale,
});