Refactor code structure for improved readability and maintainability

This commit is contained in:
Torsten Schulz (local)
2026-02-09 16:50:25 +01:00
parent a7688e4ed5
commit b07099b57d
3 changed files with 867 additions and 855 deletions

View File

@@ -1,48 +1,48 @@
{
"admin": {
"interests": {
"title": "[Admin] - Interessen verwalten",
"title": "[Admin] - Administrar intereses",
"newinterests": {
"name": "Name des Interesses",
"status": "Freigegeben",
"adultonly": "Nur für Erwachsene",
"translations": "Übersetzungen",
"isactive": "Aktiviert",
"isadult": "Nur für Erwachsene",
"delete": "Löschen"
"name": "Nombre del interés",
"status": "Aprobado",
"adultonly": "Solo para adultos",
"translations": "Traducciones",
"isactive": "Activado",
"isadult": "Solo para adultos",
"delete": "Eliminar"
}
},
"contacts": {
"title": "[Admin] - Kontaktanfragen",
"date": "Datum",
"from": "Absender",
"actions": "Aktionen",
"open": "Bearbeiten",
"finished": "Abschließen"
"title": "[Admin] - Solicitudes de contacto",
"date": "Fecha",
"from": "Remitente",
"actions": "Acciones",
"open": "Editar",
"finished": "Finalizar"
},
"editcontactrequest": {
"title": "[Admin] - Kontaktanfrage bearbeiten"
"title": "[Admin] - Editar solicitud de contacto"
},
"user": {
"name": "Benutzername",
"active": "Aktiv",
"blocked": "Gesperrt",
"actions": "Aktionen",
"search": "Suchen"
"name": "Nombre de usuario",
"active": "Activo",
"blocked": "Bloqueado",
"actions": "Acciones",
"search": "Buscar"
},
"rights": {
"add": "Recht hinzufügen",
"select": "Bitte wählen",
"current": "Aktuelle Rechte"
"add": "Añadir permiso",
"select": "Por favor, selecciona",
"current": "Permisos actuales"
},
"forum": {
"title": "[Admin] - Forum",
"currentForums": "Existierende Foren",
"edit": "Ändern",
"delete": "Löschen",
"createForum": "Anlegen",
"currentForums": "Foros existentes",
"edit": "Editar",
"delete": "Eliminar",
"createForum": "Crear",
"forumName": "Titel",
"create": "Anlegen",
"create": "Crear",
"permissions": {
"label": "Berechtigungen",
"all": "Jeder",
@@ -51,267 +51,267 @@
"user": "Nur bestimmte Benutzer",
"age": "Nur ab Alter 14"
},
"selectPermissions": "Bitte auswählen",
"confirmDeleteMessage": "Soll das Forum wirklich gelöscht werden?",
"confirmDeleteTitle": "Forum löschen"
"selectPermissions": "Por favor, selecciona",
"confirmDeleteMessage": "¿De verdad quieres eliminar el foro?",
"confirmDeleteTitle": "Eliminar foro"
},
"falukant": {
"edituser": {
"title": "Falukant Benutzer bearbeiten",
"username": "Benutzername",
"characterName": "Charaktername",
"user": "Benutzer",
"success": "Die Änderungen wurden gespeichert.",
"error": "Die Änderungen konnten nicht gespeichert werden.",
"errorLoadingBranches": "Fehler beim Laden der Niederlassungen.",
"errorUpdatingStock": "Fehler beim Aktualisieren des Lagers.",
"stockUpdated": "Lager erfolgreich aktualisiert.",
"search": "Suchen",
"title": "Editar usuario de Falukant",
"username": "Nombre de usuario",
"characterName": "Nombre del personaje",
"user": "Usuario",
"success": "Los cambios se han guardado.",
"error": "No se pudieron guardar los cambios.",
"errorLoadingBranches": "Error al cargar las sucursales.",
"errorUpdatingStock": "Error al actualizar el almacén.",
"stockUpdated": "Almacén actualizado correctamente.",
"search": "Buscar",
"tabs": {
"userdata": "Benutzerdaten",
"branches": "Niederlassungen"
"userdata": "Datos del usuario",
"branches": "Sucursales"
},
"branches": {
"title": "Niederlassungen & Lager",
"noStocks": "Kein Lager vorhanden",
"noBranches": "Keine Niederlassungen gefunden",
"addStock": "Lager hinzufügen",
"stockType": "Lagertyp",
"selectStockType": "Lagertyp auswählen",
"quantity": "Menge",
"allStocksAdded": "Alle verfügbaren Lagertypen sind bereits vorhanden"
"title": "Sucursales y almacén",
"noStocks": "No hay almacén",
"noBranches": "No se han encontrado sucursales",
"addStock": "Añadir almacén",
"stockType": "Tipo de almacén",
"selectStockType": "Seleccionar tipo de almacén",
"quantity": "Cantidad",
"allStocksAdded": "Todos los tipos de almacén disponibles ya existen"
},
"errorLoadingStockTypes": "Fehler beim Laden der Lagertypen.",
"errorAddingStock": "Fehler beim Hinzufügen des Lagers.",
"stockAdded": "Lager erfolgreich hinzugefügt.",
"invalidStockData": "Bitte gültige Lagertyp- und Mengenangaben eingeben."
"errorLoadingStockTypes": "Error al cargar los tipos de almacén.",
"errorAddingStock": "Error al añadir el almacén.",
"stockAdded": "Almacén añadido correctamente.",
"invalidStockData": "Por favor, introduce un tipo de almacén y una cantidad válidos."
},
"map": {
"title": "Falukant Karten-Editor (Regionen)",
"description": "Zeichne Rechtecke auf der Falukant-Karte und weise sie Städten zu.",
"title": "Editor de mapas de Falukant (regiones)",
"description": "Dibuja rectángulos en el mapa de Falukant y asígnalos a ciudades.",
"tabs": {
"regions": "Positionen",
"distances": "Entfernungen"
"regions": "Posiciones",
"distances": "Distancias"
},
"regionList": "Städte",
"noCoords": "Keine Koordinaten gesetzt",
"currentRect": "Aktuelles Rechteck",
"hintDraw": "Wähle eine Stadt und ziehe mit der Maus ein Rechteck auf der Karte, um die Position festzulegen.",
"saveAll": "Alle geänderten Städte speichern",
"connectionsTitle": "Verbindungen (region_distance)",
"source": "Von",
"target": "Nach",
"selectSource": "Quellstadt wählen",
"selectTarget": "Zielstadt wählen",
"regionList": "Ciudades",
"noCoords": "No se han establecido coordenadas",
"currentRect": "Rectángulo actual",
"hintDraw": "Elige una ciudad y dibuja un rectángulo con el ratón sobre el mapa para definir la posición.",
"saveAll": "Guardar todas las ciudades modificadas",
"connectionsTitle": "Conexiones (region_distance)",
"source": "Desde",
"target": "Hacia",
"selectSource": "Elegir ciudad origen",
"selectTarget": "Elegir ciudad destino",
"mode": "Transportart",
"modeLand": "Land",
"modeWater": "Wasser",
"modeAir": "Luft",
"distance": "Entfernung",
"saveConnection": "Verbindung speichern",
"pickOnMap": "Auf Karte wählen",
"errorSaveConnection": "Die Verbindung konnte nicht gespeichert werden.",
"errorDeleteConnection": "Die Verbindung konnte nicht gelöscht werden.",
"confirmDeleteConnection": "Verbindung wirklich löschen?"
"distance": "Distancia",
"saveConnection": "Guardar conexión",
"pickOnMap": "Seleccionar en el mapa",
"errorSaveConnection": "No se pudo guardar la conexión.",
"errorDeleteConnection": "No se pudo eliminar la conexión.",
"confirmDeleteConnection": "¿Eliminar la conexión?"
},
"createNPC": {
"title": "NPCs erstellen",
"region": "Stadt",
"allRegions": "Alle Städte",
"ageRange": "Altersbereich",
"to": "bis",
"years": "Jahre",
"titleRange": "Titel-Bereich",
"count": "Anzahl pro Stadt-Titel-Kombination",
"countHelp": "Diese Anzahl wird für jede Kombination aus gewählter Stadt und Titel erstellt.",
"create": "NPCs erstellen",
"creating": "Erstelle...",
"result": "Ergebnis",
"createdCount": "{count} NPCs wurden erstellt.",
"combinationInfo": "{perCombination} NPCs pro Kombination × {combinations} Kombinationen = {count} NPCs insgesamt",
"age": "Alter",
"errorLoadingRegions": "Fehler beim Laden der Städte.",
"errorLoadingTitles": "Fehler beim Laden der Titel.",
"errorCreating": "Fehler beim Erstellen der NPCs.",
"invalidAgeRange": "Ungültiger Altersbereich.",
"invalidTitleRange": "Ungültiger Titel-Bereich.",
"invalidCount": "Ungültige Anzahl (1-500).",
"progress": "Fortschritt",
"progressDetails": "{current} von {total} NPCs erstellt",
"timeRemainingSeconds": "Verbleibende Zeit: {seconds} Sekunden",
"timeRemainingMinutes": "Verbleibende Zeit: {minutes} Minuten {seconds} Sekunden",
"almostDone": "Fast fertig...",
"jobNotFound": "Job nicht gefunden oder abgelaufen."
"title": "Crear NPC",
"region": "Ciudad",
"allRegions": "Todas las ciudades",
"ageRange": "Rango de edad",
"to": "hasta",
"years": "años",
"titleRange": "Rango de títulos",
"count": "Cantidad por combinación ciudad-título",
"countHelp": "Esta cantidad se crea para cada combinación de ciudad y título seleccionados.",
"create": "Crear NPC",
"creating": "Creando...",
"result": "Resultado",
"createdCount": "Se han creado {count} NPC.",
"combinationInfo": "{perCombination} NPC por combinación × {combinations} combinaciones = {count} NPC en total",
"age": "Edad",
"errorLoadingRegions": "Error al cargar las ciudades.",
"errorLoadingTitles": "Error al cargar los títulos.",
"errorCreating": "Error al crear los NPC.",
"invalidAgeRange": "Rango de edad no válido.",
"invalidTitleRange": "Rango de títulos no válido.",
"invalidCount": "Cantidad no válida (1-500).",
"progress": "Progreso",
"progressDetails": "{current} de {total} NPC creados",
"timeRemainingSeconds": "Tiempo restante: {seconds} segundos",
"timeRemainingMinutes": "Tiempo restante: {minutes} minutos {seconds} segundos",
"almostDone": "Casi listo...",
"jobNotFound": "Trabajo no encontrado o caducado."
}
},
"chatrooms": {
"title": "[Admin] - Chaträume verwalten",
"roomName": "Raumname",
"create": "Chatraum anlegen",
"edit": "Chatraum bearbeiten",
"title": "[Admin] - Administrar salas de chat",
"roomName": "Nombre de la sala",
"create": "Crear sala de chat",
"edit": "Editar sala de chat",
"type": "Typ",
"isPublic": "Öffentlich sichtbar",
"actions": "Aktionen",
"isPublic": "Visible públicamente",
"actions": "Acciones",
"genderRestriction": {
"show": "Geschlechtsbeschränkung aktivieren",
"label": "Geschlechtsbeschränkung"
"show": "Activar restricción de género",
"label": "Restricción de género"
},
"minAge": {
"show": "Mindestalter angeben",
"label": "Mindestalter"
"show": "Indicar edad mínima",
"label": "Edad mínima"
},
"maxAge": {
"show": "Höchstalter angeben",
"label": "Höchstalter"
"show": "Indicar edad máxima",
"label": "Edad máxima"
},
"password": {
"show": "Passwortschutz aktivieren",
"label": "Passwort"
"show": "Activar protección con contraseña",
"label": "Contraseña"
},
"friendsOfOwnerOnly": "Nur Freunde des Besitzers",
"requiredUserRight": {
"show": "Benötigtes Benutzerrecht angeben",
"label": "Benötigtes Benutzerrecht"
"show": "Indicar permiso de usuario requerido",
"label": "Permiso de usuario requerido"
},
"roomtype": {
"chat": "Reden",
"dice": "Würfeln",
"chat": "Chat",
"dice": "Dados",
"poker": "Poker",
"hangman": "Hangman"
},
"rights": {
"talk": "Reden",
"scream": "Schreien",
"whisper": "Flüstern",
"start game": "Spiel starten",
"open room": "Raum öffnen",
"systemmessage": "Systemnachricht"
"talk": "Hablar",
"scream": "Gritar",
"whisper": "Susurrar",
"start game": "Iniciar juego",
"open room": "Abrir sala",
"systemmessage": "Mensaje del sistema"
},
"confirmDelete": "Soll dieser Chatraum wirklich gelöscht werden?"
"confirmDelete": "¿De verdad quieres eliminar esta sala de chat?"
},
"match3": {
"title": "Match3 Level verwalten",
"newLevel": "Neues Level erstellen",
"editLevel": "Level bearbeiten",
"deleteLevel": "Level löschen",
"confirmDelete": "Möchtest du dieses Level wirklich löschen?",
"title": "Administrar niveles de Match3",
"newLevel": "Crear nuevo nivel",
"editLevel": "Editar nivel",
"deleteLevel": "Eliminar nivel",
"confirmDelete": "¿De verdad quieres eliminar este nivel?",
"levelName": "Name",
"levelDescription": "Beschreibung",
"levelDescription": "Descripción",
"boardWidth": "Breite",
"boardHeight": "Höhe",
"boardHeight": "Altura",
"moveLimit": "Zug-Limit",
"levelOrder": "Reihenfolge",
"boardLayout": "Board-Layout",
"tileTypes": "Verfügbare Tile-Typen",
"actions": "Aktionen",
"edit": "Bearbeiten",
"delete": "Löschen",
"save": "Speichern",
"cancel": "Abbrechen",
"update": "Aktualisieren",
"create": "Erstellen",
"tileTypes": "Tipos de fichas disponibles",
"actions": "Acciones",
"edit": "Editar",
"delete": "Eliminar",
"save": "Guardar",
"cancel": "Cancelar",
"update": "Actualizar",
"create": "Crear",
"boardControls": {
"fillAll": "Alle aktivieren",
"clearAll": "Alle deaktivieren",
"invert": "Invertieren"
"fillAll": "Activar todo",
"clearAll": "Desactivar todo",
"invert": "Invertir"
},
"loading": "Lade Level...",
"retry": "Erneut versuchen",
"availableLevels": "Verfügbare Level: {count}",
"loading": "Cargando niveles...",
"retry": "Reintentar",
"availableLevels": "Niveles disponibles: {count}",
"levelFormat": "Level {number}: {name}",
"levelObjectives": "Level-Objekte",
"objectivesTitle": "Siegvoraussetzungen",
"addObjective": "Objektiv hinzufügen",
"removeObjective": "Entfernen",
"addObjective": "Añadir objetivo",
"removeObjective": "Eliminar",
"objectiveType": "Typ",
"objectiveTypeScore": "Punkte sammeln",
"objectiveTypeMatches": "Matches machen",
"objectiveTypeMoves": "Züge verwenden",
"objectiveTypeMoves": "Usar movimientos",
"objectiveTypeTime": "Zeit einhalten",
"objectiveTypeSpecial": "Spezialziel",
"objectiveOperator": "Operator",
"operatorGreaterEqual": "Größer oder gleich (≥)",
"operatorLessEqual": "Kleiner oder gleich (≤)",
"operatorGreaterEqual": "Mayor o igual (≥)",
"operatorLessEqual": "Menor o igual (≤)",
"operatorEqual": "Gleich (=)",
"operatorGreater": "Größer als (>)",
"operatorLess": "Kleiner als (<)",
"operatorGreater": "Mayor que (>)",
"operatorLess": "Menor que (<)",
"objectiveTarget": "Zielwert",
"objectiveTargetPlaceholder": "z.B. 100",
"objectiveOrder": "Reihenfolge",
"objectiveOrderPlaceholder": "1, 2, 3...",
"objectiveDescription": "Beschreibung",
"objectiveDescription": "Descripción",
"objectiveDescriptionPlaceholder": "z.B. Sammle 100 Punkte",
"objectiveRequired": "Erforderlich für Level-Abschluss",
"noObjectives": "Keine Siegvoraussetzungen definiert. Klicke auf 'Objektiv hinzufügen' um welche zu erstellen."
"objectiveRequired": "Requerido para completar el nivel",
"noObjectives": "No hay condiciones de victoria definidas. Haz clic en 'Añadir objetivo' para crear una."
},
"userStatistics": {
"title": "[Admin] - Benutzerstatistiken",
"totalUsers": "Gesamtanzahl Benutzer",
"genderDistribution": "Geschlechterverteilung",
"ageDistribution": "Altersverteilung"
"title": "[Admin] - Estadísticas de usuarios",
"totalUsers": "Total de usuarios",
"genderDistribution": "Distribución por género",
"ageDistribution": "Distribución por edad"
},
"taxiTools": {
"title": "Taxi-Tools",
"description": "Verwalte Taxi-Maps, Level und Konfigurationen",
"description": "Administra mapas, niveles y configuraciones de Taxi",
"mapEditor": {
"title": "Map bearbeiten",
"availableMaps": "Verfügbare Maps: {count}",
"newMap": "Neue Map erstellen",
"title": "Editar mapa",
"availableMaps": "Mapas disponibles: {count}",
"newMap": "Crear nuevo mapa",
"mapFormat": "{name} (Position: {x},{y})",
"mapName": "Map-Name",
"mapDescription": "Beschreibung",
"mapDescription": "Descripción",
"mapWidth": "Breite",
"mapHeight": "Höhe",
"tileSize": "Tile-Größe",
"mapHeight": "Altura",
"tileSize": "Tamaño de las fichas",
"positionX": "X-Position",
"positionY": "Y-Position",
"mapType": "Map-Typ",
"mapLayout": "Map-Layout",
"tilePalette": "Tile-Palette",
"streetNames": "Straßennamen",
"extraElements": "Zusätzliche Elemente",
"streetNameHorizontal": "Straßenname (horizontal)",
"streetNameVertical": "Straßenname (vertikal)",
"continueHorizontal": "In anderer Richtung fortführen (→)",
"continueVertical": "In anderer Richtung fortführen (↓)",
"continueOther": "In anderer Richtung fortführen",
"streetNames": "Nombres de calles",
"extraElements": "Elementos adicionales",
"streetNameHorizontal": "Nombre de calle (horizontal)",
"streetNameVertical": "Nombre de calle (vertical)",
"continueHorizontal": "Continuar en otra dirección (→)",
"continueVertical": "Continuar en otra dirección (↓)",
"continueOther": "Continuar en otra dirección",
"position": "Position",
"fillAllRoads": "Alle Straßen",
"clearAll": "Alle löschen",
"generateRandom": "Zufällig generieren",
"delete": "Löschen",
"update": "Aktualisieren",
"cancel": "Abbrechen",
"create": "Erstellen",
"createSuccess": "Map wurde erfolgreich erstellt!",
"updateSuccess": "Map wurde erfolgreich aktualisiert!",
"deleteSuccess": "Map wurde erfolgreich gelöscht!"
"fillAllRoads": "Todas las calles",
"clearAll": "Borrar todo",
"generateRandom": "Generar aleatoriamente",
"delete": "Eliminar",
"update": "Actualizar",
"cancel": "Cancelar",
"create": "Crear",
"createSuccess": "¡El mapa se ha creado correctamente!",
"updateSuccess": "¡El mapa se ha actualizado correctamente!",
"deleteSuccess": "¡El mapa se ha eliminado correctamente!"
}
},
"servicesStatus": {
"title": "Service-Status",
"description": "Überwache den Status von Backend, Chat und Daemon",
"description": "Supervisa el estado del backend, el chat y el daemon",
"status": {
"connected": "Verbunden",
"connecting": "Verbinde...",
"disconnected": "Nicht verbunden",
"error": "Fehler",
"unknown": "Unbekannt"
"connected": "Conectado",
"connecting": "Conectando...",
"disconnected": "Desconectado",
"error": "Error",
"unknown": "Desconocido"
},
"backend": {
"title": "Backend",
"connected": "Backend-Service ist erreichbar und verbunden"
"connected": "El servicio de backend está accesible y conectado"
},
"chat": {
"title": "Chat",
"connected": "Chat-Service ist erreichbar und verbunden"
"connected": "El servicio de chat está accesible y conectado"
},
"daemon": {
"title": "Daemon",
"connected": "Daemon-Service ist erreichbar und verbunden",
"connected": "El servicio daemon está accesible y conectado",
"connections": {
"title": "Aktive Verbindungen",
"none": "Keine aktiven Verbindungen",
"none": "No hay conexiones activas",
"userId": "Benutzer-ID",
"username": "Benutzername",
"connections": "Verbindungen",
@@ -321,21 +321,21 @@
"pongReceived": "Pong empfangen",
"yes": "Ja",
"no": "Nein",
"notConnected": "Daemon nicht verbunden",
"sendError": "Fehler beim Senden der Anfrage",
"error": "Fehler beim Abrufen der Verbindungen"
"notConnected": "Daemon no conectado",
"sendError": "Error al enviar la solicitud",
"error": "Error al obtener las conexiones"
},
"websocketLog": {
"title": "WebSocket-Log",
"showLog": "WebSocket-Log anzeigen",
"refresh": "Aktualisieren",
"loading": "Lädt...",
"close": "Schließen",
"entryCount": "{count} Einträge",
"noEntries": "Keine Log-Einträge vorhanden",
"notConnected": "Daemon nicht verbunden",
"sendError": "Fehler beim Senden der Anfrage",
"parseError": "Fehler beim Verarbeiten der Antwort",
"loading": "Cargando...",
"close": "Cerrar",
"entryCount": "{count} entradas",
"noEntries": "No hay entradas de registro",
"notConnected": "Daemon no conectado",
"sendError": "Error al enviar la solicitud",
"parseError": "Error al procesar la respuesta",
"timestamp": "Zeitstempel",
"direction": "Richtung",
"peer": "Peer",

File diff suppressed because it is too large Load Diff