From b07099b57d1cfd216cc40796d50e611f58876b97 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Mon, 9 Feb 2026 16:50:25 +0100 Subject: [PATCH] Refactor code structure for improved readability and maintainability --- .../src/components/widgets/FalukantWidget.vue | 22 +- frontend/src/i18n/locales/es/admin.json | 412 +++--- frontend/src/i18n/locales/es/falukant.json | 1288 ++++++++--------- 3 files changed, 867 insertions(+), 855 deletions(-) diff --git a/frontend/src/components/widgets/FalukantWidget.vue b/frontend/src/components/widgets/FalukantWidget.vue index e931576..6e941ae 100644 --- a/frontend/src/components/widgets/FalukantWidget.vue +++ b/frontend/src/components/widgets/FalukantWidget.vue @@ -46,8 +46,8 @@ export default { if (g == null || g === '') return '—'; // Altersabhängige, (auf Wunsch) altertümlichere Bezeichnungen - const age = Number(this.falukantData?.age); - const group = this._getAgeGroupKey(age); + const years = this._ageYearsFromWidgetValue(this.falukantData?.age); + const group = this._getAgeGroupKey(years); if (group && (g === 'female' || g === 'male')) { const key = `falukant.genderAge.${g}.${group}`; const t = this.$t(key); @@ -62,11 +62,25 @@ export default { falukantAgeLabel() { const ageValue = this.falukantData?.age; if (ageValue == null) return '—'; - const numAge = Number(ageValue); - return `${numAge} ${this.$t('falukant.overview.metadata.years')}`; + const years = this._ageYearsFromWidgetValue(ageValue); + if (years == null) return '—'; + return `${years} ${this.$t('falukant.overview.metadata.years')}`; } }, methods: { + /** + * Backend liefert für Falukant aktuell das Alter als Tage (differenceInDays). + * Für die Anzeige und die Age-Groups brauchen wir Jahre. + */ + _ageYearsFromWidgetValue(ageValue) { + const n = Number(ageValue); + if (Number.isNaN(n)) return null; + + // Heuristik: >= 365 wird als Tage interpretiert. + // Falls das Backend irgendwann auf Jahre umstellt, bleiben Werte < 365 unverändert. + const years = n >= 365 ? Math.floor(n / 365) : Math.floor(n); + return Number.isFinite(years) ? years : null; + }, _getAgeGroupKey(age) { const a = Number(age); if (Number.isNaN(a)) return null; diff --git a/frontend/src/i18n/locales/es/admin.json b/frontend/src/i18n/locales/es/admin.json index 182870a..584e3e8 100644 --- a/frontend/src/i18n/locales/es/admin.json +++ b/frontend/src/i18n/locales/es/admin.json @@ -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", diff --git a/frontend/src/i18n/locales/es/falukant.json b/frontend/src/i18n/locales/es/falukant.json index 9137720..f322b79 100644 --- a/frontend/src/i18n/locales/es/falukant.json +++ b/frontend/src/i18n/locales/es/falukant.json @@ -140,14 +140,13 @@ "genderAge": { "ageGroups": "infant:2|toddler:5|child:13|adolescence:20|adult:50|mature:70|elder:999", "neutral": { - "child": "Kind" + "child": "niño" }, "male": { "infant": "bebé", "toddler": "niño pequeño", "child": "niño", - "teen": "joven", - "youngAdult": "joven adulto", + "adolescence": "joven", "adult": "hombre", "mature": "señor", "elder": "anciano" @@ -156,8 +155,7 @@ "infant": "bebé", "toddler": "niña pequeña", "child": "niña", - "teen": "joven", - "youngAdult": "joven adulta", + "adolescence": "joven", "adult": "mujer", "mature": "señora", "elder": "anciana" @@ -208,833 +206,833 @@ } }, "branch": { - "title": "Filiale", + "title": "Sucursal", "tabs": { - "director": "Direktor", - "inventory": "Inventar", - "production": "Produktion", - "storage": "Lager", - "transport": "Transportmittel", - "taxes": "Steuern" + "director": "Director", + "inventory": "Inventario", + "production": "Producción", + "storage": "Almacén", + "transport": "Transporte", + "taxes": "Impuestos" }, "taxes": { - "title": "Steuern", - "loading": "Steuerdaten werden geladen...", - "loadingError": "Fehler beim Laden der Steuerdaten: {error}", - "retry": "Erneut laden", - "noData": "Keine Steuerdaten verfügbar", - "total": "Gesamte Steuer", + "title": "Impuestos", + "loading": "Cargando datos de impuestos...", + "loadingError": "Error al cargar los datos de impuestos: {error}", + "retry": "Volver a cargar", + "noData": "No hay datos de impuestos disponibles", + "total": "Impuesto total", "table": { - "region": "Region", - "taxPercent": "Steuersatz" + "region": "Región", + "taxPercent": "Tipo impositivo" } }, "selection": { - "title": "Niederlassungsauswahl", - "selected": "Ausgewählte Niederlassung", - "placeholder": "Noch keine Niederlassung ausgewählt", - "selectedcity": "Ausgewählte Stadt", - "weather": "Aktuelles Wetter" + "title": "Selección de sucursal", + "selected": "Sucursal seleccionada", + "placeholder": "Aún no se ha seleccionado ninguna sucursal", + "selectedcity": "Ciudad seleccionada", + "weather": "Tiempo actual" }, "actions": { - "create": "Neue Niederlassung erstellen", - "upgrade": "Aktuelle Niederlassung aufwerten", - "createAlert": "Neue Niederlassung wird erstellt.", - "upgradeAlert": "Die Niederlassung mit der ID {branchId} wird aufgewertet." + "create": "Crear nueva sucursal", + "upgrade": "Mejorar la sucursal actual", + "createAlert": "Se está creando una nueva sucursal.", + "upgradeAlert": "Se está mejorando la sucursal con ID {branchId}." }, "director": { - "title": "Direktor-Infos", - "info": "Informationen über den Direktor der Niederlassung.", + "title": "Información del director", + "info": "Información sobre el director de la sucursal.", "actions": { - "new": "Direktor einstellen" + "new": "Contratar director" }, - "name": "Name", - "salary": "Gehalt", - "income": "Einkommen", - "incomeUpdated": "Gehalt wurde erfolgreich aktualisiert.", - "satisfaction": "Zufriedenheit", - "fire": "Feuern", - "teach": "Weiterbilden", - "produce": "Darf produzieren", - "sell": "Darf verkaufen", - "starttransport": "Darf Transporte veranlassen", + "name": "Nombre", + "salary": "Salario", + "income": "Ingresos", + "incomeUpdated": "El salario se ha actualizado correctamente.", + "satisfaction": "Satisfacción", + "fire": "Despedir", + "teach": "Formar", + "produce": "Puede producir", + "sell": "Puede vender", + "starttransport": "Puede iniciar transportes", "emptyTransport": { - "title": "Transport ohne Produkte", - "description": "Bewege Transportmittel von dieser Niederlassung zu einer anderen, um sie besser zu nutzen.", - "vehicleType": "Fahrzeugtyp", - "selectVehicle": "Fahrzeugtyp auswählen", - "targetBranch": "Ziel-Niederlassung", - "selectTarget": "Ziel-Niederlassung auswählen", - "cost": "Kosten: {cost}", - "duration": "Dauer: {duration}", - "arrival": "Ankunft: {datetime}", - "route": "Route", - "create": "Transport starten", - "success": "Transport erfolgreich gestartet!", - "error": "Fehler beim Starten des Transportes." + "title": "Transporte sin productos", + "description": "Mueve medios de transporte de esta sucursal a otra para aprovecharlos mejor.", + "vehicleType": "Tipo de vehículo", + "selectVehicle": "Seleccionar tipo de vehículo", + "targetBranch": "Sucursal de destino", + "selectTarget": "Seleccionar sucursal de destino", + "cost": "Coste: {cost}", + "duration": "Duración: {duration}", + "arrival": "Llegada: {datetime}", + "route": "Ruta", + "create": "Iniciar transporte", + "success": "¡Transporte iniciado correctamente!", + "error": "Error al iniciar el transporte." } }, "sale": { - "title": "Inventar", - "info": "Hier finden Sie eine Übersicht über die vorhandenen Produkte in der Filiale.", - "region": "Region", - "product": "Produkt", - "quality": "Qualität", - "quantity": "Menge", - "noInventory": "Kein Inventar verfügbar.", - "loadError": "Fehler beim Laden des Inventars.", - "sell": "Verkauf", - "sellButton": "Verkaufen", - "sellAllButton": "Alles verkaufen", - "transportTitle": "Transport anlegen", - "transportSource": "Artikel", - "transportSourcePlaceholder": "Artikel wählen", - "transportVehicle": "Transportmittel", - "transportVehiclePlaceholder": "Transportmittel wählen", - "transportTarget": "Zielstadt", - "transportTargetPlaceholder": "Ziel wählen", - "transportQuantity": "Menge", + "title": "Inventario", + "info": "Aquí encontrarás un resumen de los productos disponibles en la sucursal.", + "region": "Región", + "product": "Producto", + "quality": "Calidad", + "quantity": "Cantidad", + "noInventory": "No hay inventario disponible.", + "loadError": "Error al cargar el inventario.", + "sell": "Venta", + "sellButton": "Vender", + "sellAllButton": "Vender todo", + "transportTitle": "Crear transporte", + "transportSource": "Artículo", + "transportSourcePlaceholder": "Elegir artículo", + "transportVehicle": "Medio de transporte", + "transportVehiclePlaceholder": "Elegir medio de transporte", + "transportTarget": "Ciudad de destino", + "transportTargetPlaceholder": "Elegir destino", + "transportQuantity": "Cantidad", "transportMax": "Maximal: {max}", - "transportCreate": "Transport starten", - "transportError": "Transport konnte nicht angelegt werden.", - "transportDuration": "Transportdauer: {duration}", - "transportArrival": "Ankunftszeit: {datetime}", - "transportRoute": "Route", - "transportCost": "Transportkosten: {cost}", - "transportStarted": "Der Transport wurde gestartet.", - "runningTransportsTitle": "Laufende Transporte", - "runningDirection": "Richtung", - "runningProduct": "Artikel", - "runningQuantity": "Menge", - "runningNoProduct": "Fahrzeugtransport", - "runningSource": "Quelle", - "runningTarget": "Ziel", - "runningEta": "Ankunft", - "runningRemaining": "Restzeit", - "runningVehicleCount": "Fahrzeuge", - "runningDirectionOut": "Ausgehend", - "runningDirectionIn": "Eingehend" + "transportCreate": "Iniciar transporte", + "transportError": "No se pudo crear el transporte.", + "transportDuration": "Duración del transporte: {duration}", + "transportArrival": "Hora de llegada: {datetime}", + "transportRoute": "Ruta", + "transportCost": "Coste del transporte: {cost}", + "transportStarted": "El transporte se ha iniciado.", + "runningTransportsTitle": "Transportes en curso", + "runningDirection": "Dirección", + "runningProduct": "Artículo", + "runningQuantity": "Cantidad", + "runningNoProduct": "Transporte de vehículo", + "runningSource": "Origen", + "runningTarget": "Destino", + "runningEta": "Llegada", + "runningRemaining": "Tiempo restante", + "runningVehicleCount": "Vehículos", + "runningDirectionOut": "Salida", + "runningDirectionIn": "Entrada" }, "production": { - "title": "Produktion", - "info": "Details zur Produktion in der Niederlassung.", - "selectProduct": "Produkt auswählen", - "quantity": "Menge", - "storageAvailable": "Freier Lagerplatz", - "cost": "Kosten", - "duration": "Dauer", - "revenue": "Erlös", - "start": "Produktion starten", - "success": "Produktion erfolgreich gestartet!", - "error": "Fehler beim Starten der Produktion.", - "minutes": "Minuten", - "ending": "Abgeschlossen:", - "time": "Uhr", - "current": "Laufende Produktionen", - "product": "Produkt", - "remainingTime": "Verbleibende Zeit (Sekunden)", - "noProductions": "Keine laufenden Produktionen." + "title": "Producción", + "info": "Detalles sobre la producción en la sucursal.", + "selectProduct": "Seleccionar producto", + "quantity": "Cantidad", + "storageAvailable": "Espacio libre en el almacén", + "cost": "Coste", + "duration": "Duración", + "revenue": "Ingresos", + "start": "Iniciar producción", + "success": "¡Producción iniciada correctamente!", + "error": "Error al iniciar la producción.", + "minutes": "Minutos", + "ending": "Finaliza:", + "time": "h", + "current": "Producciones en curso", + "product": "Producto", + "remainingTime": "Tiempo restante (segundos)", + "noProductions": "No hay producciones en curso." }, "columns": { - "city": "Stadt", - "type": "Typ" + "city": "Ciudad", + "type": "Tipo" }, "types": { - "production": "Produktion", - "store": "Verkauf", - "fullstack": "Produktion mit Verkauf" + "production": "Producción", + "store": "Venta", + "fullstack": "Producción con venta" }, "revenue": { - "title": "Produkt-Erträge", - "product": "Produkt", - "absolute": "Erlös (absolut)", - "perMinute": "Erlös pro Minute", - "expand": "Erträge anzeigen", - "collapse": "Erträge ausblenden", - "knowledge": "Produktwissen", - "profitAbsolute": "Gesamtgewinn", - "profitPerMinute": "Gewinn pro Minute" + "title": "Ingresos por producto", + "product": "Producto", + "absolute": "Ingresos (absolutos)", + "perMinute": "Ingresos por minuto", + "expand": "Mostrar ingresos", + "collapse": "Ocultar ingresos", + "knowledge": "Conocimiento del producto", + "profitAbsolute": "Beneficio total", + "profitPerMinute": "Beneficio por minuto" }, "storage": { - "title": "Lager", - "currentCapacity": "Verwendetes Lager", - "stockType": "Lagerart", - "totalCapacity": "Vorhanden", - "used": "Verwendet", - "availableToBuy": "Zum Kauf verfügbar", - "buyAmount": "Größe", - "buyStorageButton": "Kaufen", - "sellAmount": "Größe", - "sellStorageButton": "Verkaufen", - "selectStockType": "Lagertyp auswählen", - "costPerUnit": "Kosten pro Einheit", - "buycost": "Kosten", - "sellincome": "Einnahmen" + "title": "Almacén", + "currentCapacity": "Almacén utilizado", + "stockType": "Tipo de almacén", + "totalCapacity": "Total", + "used": "Utilizado", + "availableToBuy": "Disponible para comprar", + "buyAmount": "Tamaño", + "buyStorageButton": "Comprar", + "sellAmount": "Tamaño", + "sellStorageButton": "Vender", + "selectStockType": "Seleccionar tipo de almacén", + "costPerUnit": "Coste por unidad", + "buycost": "Coste", + "sellincome": "Ingresos" }, "vehicles": { - "cargo_cart": "Lastkarren", - "ox_cart": "Ochsenkarren", - "small_carriage": "Kleine Pferdekutsche", - "large_carriage": "Große Pferdekutsche", - "four_horse_carriage": "Vierspänner", - "raft": "Floß", - "sailing_ship": "Segelschiff" + "cargo_cart": "Carro de carga", + "ox_cart": "Carro de bueyes", + "small_carriage": "Carruaje pequeño", + "large_carriage": "Carruaje grande", + "four_horse_carriage": "Carruaje de cuatro caballos", + "raft": "Balsa", + "sailing_ship": "Barco de vela" }, "transport": { - "title": "Transportmittel", - "placeholder": "Hier kannst du Transportmittel für deine Region kaufen oder bauen.", - "vehicleType": "Transportmittel", - "mode": "Art", - "modeBuy": "Kaufen (sofort verfügbar)", - "modeBuild": "Bauen (75 % Kosten, mit Bauzeit)", - "quantity": "Anzahl", - "totalCost": "Gesamtkosten", - "buildTime": "Bauzeit", - "notEnoughMoney": "Du hast nicht genug Geld für diese Aktion.", - "buyAction": "Transportmittel kaufen", - "buildAction": "Transportmittel bauen", - "buy": "Transportmittel kaufen/bauen", - "balance": "Kontostand", - "noVehicles": "Du besitzt in dieser Region noch keine Transportmittel.", + "title": "Transporte", + "placeholder": "Aquí puedes comprar o construir medios de transporte para tu región.", + "vehicleType": "Medio de transporte", + "mode": "Tipo", + "modeBuy": "Comprar (disponible de inmediato)", + "modeBuild": "Construir (75 % del coste, con tiempo de construcción)", + "quantity": "Cantidad", + "totalCost": "Coste total", + "buildTime": "Tiempo de construcción", + "notEnoughMoney": "No tienes suficiente dinero para esta acción.", + "buyAction": "Comprar medio de transporte", + "buildAction": "Construir medio de transporte", + "buy": "Comprar/Construir medio de transporte", + "balance": "Saldo", + "noVehicles": "Aún no tienes medios de transporte en esta región.", "table": { - "type": "Typ", - "capacity": "Kapazität", - "condition": "Zustand", - "mode": "Art", - "speed": "Geschwindigkeit", - "availableFrom": "Verfügbar ab", - "status": "Status", - "actions": "Aktionen" + "type": "Tipo", + "capacity": "Capacidad", + "condition": "Estado", + "mode": "Tipo", + "speed": "Velocidad", + "availableFrom": "Disponible desde", + "status": "Estado", + "actions": "Acciones" }, "modes": { - "land": "Land", - "water": "Wasser", - "unknown": "Unbekannt" + "land": "Tierra", + "water": "Agua", + "unknown": "Desconocido" }, "speed": { - "1": "Langsam", - "2": "Mittel", - "3": "Schnell", - "4": "Sehr schnell", - "unknown": "Unbekannt" + "1": "Lento", + "2": "Medio", + "3": "Rápido", + "4": "Muy rápido", + "unknown": "Desconocido" }, "status": { - "inUse": "In Benutzung", - "building": "Im Bau", - "free": "Verfügbar" + "inUse": "En uso", + "building": "En construcción", + "free": "Disponible" }, - "send": "Versenden", - "sendSingle": "Einzelnes Fahrzeug versenden", - "sendAllFree": "Alle freien Fahrzeuge versenden", - "sendAllOfType": "{count} × {type} versenden", - "sendVehiclesTitle": "Fahrzeuge versenden", - "selectTargetBranch": "Ziel-Niederlassung", - "selectTarget": "Ziel-Niederlassung auswählen", - "selectTargetError": "Bitte wähle eine Ziel-Niederlassung aus.", - "noVehiclesSelected": "Keine Fahrzeuge ausgewählt.", - "sendSuccess": "Fahrzeuge erfolgreich versendet!", - "sendError": "Fehler beim Versenden der Fahrzeuge.", - "cancel": "Abbrechen", - "close": "Schließen", - "repair": "Reparieren", - "repairWithCost": "Reparieren (Kosten: {cost})", - "repairTooltip": "Fahrzeug reparieren", - "repairVehicleTitle": "Fahrzeug reparieren", - "repairAll": "Alle reparieren ({count} Fahrzeuge, Kosten: {cost})", - "repairAllTitle": "Alle Fahrzeuge reparieren", - "repairAllDescription": "Möchtest du alle {count} Fahrzeuge reparieren? Gesamtkosten: {cost}", - "repairAllDiscount": "Hinweis: Bei Reparatur aller Fahrzeuge erhältst du 10% Rabatt.", - "repairAllConfirm": "Alle reparieren", - "repairAllSuccess": "Alle Fahrzeuge werden repariert!", - "repairAllError": "Fehler beim Reparieren der Fahrzeuge.", - "repairVehicleType": "Fahrzeugtyp", - "repairCurrentCondition": "Aktueller Zustand", - "repairCost": "Reparaturkosten", - "repairBuildTime": "Reparaturdauer", - "repairBuildTimeInstant": "Sofort", - "repairBuildTimeHours": "Stunden", - "repairBuildTimeMinutes": "Minuten", - "repairConfirm": "Reparieren", - "repairSuccess": "Fahrzeug wird repariert!", - "repairError": "Fehler beim Reparieren des Fahrzeugs." + "send": "Enviar", + "sendSingle": "Enviar un vehículo", + "sendAllFree": "Enviar todos los vehículos disponibles", + "sendAllOfType": "Enviar {count} × {type}", + "sendVehiclesTitle": "Enviar vehículos", + "selectTargetBranch": "Sucursal de destino", + "selectTarget": "Seleccionar sucursal de destino", + "selectTargetError": "Por favor, selecciona una sucursal de destino.", + "noVehiclesSelected": "No se han seleccionado vehículos.", + "sendSuccess": "¡Vehículos enviados correctamente!", + "sendError": "Error al enviar los vehículos.", + "cancel": "Cancelar", + "close": "Cerrar", + "repair": "Reparar", + "repairWithCost": "Reparar (Coste: {cost})", + "repairTooltip": "Reparar vehículo", + "repairVehicleTitle": "Reparar vehículo", + "repairAll": "Reparar todos ({count} vehículos, coste: {cost})", + "repairAllTitle": "Reparar todos los vehículos", + "repairAllDescription": "¿Quieres reparar los {count} vehículos? Coste total: {cost}", + "repairAllDiscount": "Nota: al reparar todos los vehículos recibes un 10% de descuento.", + "repairAllConfirm": "Reparar todos", + "repairAllSuccess": "¡Se están reparando todos los vehículos!", + "repairAllError": "Error al reparar los vehículos.", + "repairVehicleType": "Tipo de vehículo", + "repairCurrentCondition": "Estado actual", + "repairCost": "Coste de reparación", + "repairBuildTime": "Tiempo de reparación", + "repairBuildTimeInstant": "Inmediato", + "repairBuildTimeHours": "Horas", + "repairBuildTimeMinutes": "Minutos", + "repairConfirm": "Reparar", + "repairSuccess": "¡El vehículo se está reparando!", + "repairError": "Error al reparar el vehículo." }, "stocktype": { - "wood": "Holzlager", - "stone": "Steinlager", - "iron": "Eisenlager", - "field": "Feldlager" + "wood": "Almacén de madera", + "stone": "Almacén de piedra", + "iron": "Almacén de hierro", + "field": "Almacén de campo" } }, "family": { - "title": "Familie", + "title": "Familia", "spouse": { - "title": "Beziehung", - "name": "Name", - "age": "Alter", - "status": "Status", - "none": "Kein Ehepartner vorhanden.", - "search": "Ehepartner suchen", - "found": "Ehepartner gefunden", - "select": "Verloben mit", - "marriagecost": "Verlobungskosten", - "notice": "Hinweis. Die beiden Ehepartner bekommen beide den Titel, der höher ist.", - "accept": "Werbung mit diesem Partner starten", + "title": "Relación", + "name": "Nombre", + "age": "Edad", + "status": "Estado", + "none": "No hay cónyuge.", + "search": "Buscar pareja", + "found": "Pareja encontrada", + "select": "Comprometerse con", + "marriagecost": "Coste del compromiso", + "notice": "Nota: ambos cónyuges reciben el título más alto.", + "accept": "Iniciar el cortejo con esta pareja", "wooing": { - "gifts": "Werbegeschenke", - "sendGift": "Werbegeschenk senden", - "cancel": "Werbung abbrechen", - "cancelSuccess": "Die Werbung wurde abgebrochen.", - "cancelError": "Die Werbung konnte nicht abgebrochen werden.", - "cancelTooSoon": "Du kannst die Werbung erst nach 24 Stunden abbrechen.", - "gift": "Geschenk", - "value": "Kosten", - "effect": "Wirkung" + "gifts": "Regalos de cortejo", + "sendGift": "Enviar regalo", + "cancel": "Cancelar el cortejo", + "cancelSuccess": "El cortejo se ha cancelado.", + "cancelError": "No se pudo cancelar el cortejo.", + "cancelTooSoon": "Solo puedes cancelar el cortejo después de 24 horas.", + "gift": "Regalo", + "value": "Coste", + "effect": "Efecto" }, "giftAffect": { - "0": "Keiner", - "1": "Sehr niedrig", - "2": "Niedrig", - "3": "Mittel", - "4": "Hoch", - "5": "Sehr hoch" + "0": "Ninguno", + "1": "Muy bajo", + "2": "Bajo", + "3": "Medio", + "4": "Alto", + "5": "Muy alto" }, - "mood": "Stimmung", - "progress": "Zuneigung", - "jumpToPartyForm": "Hochzeitsfeier veranstalten (Nötig für Hochzeit und Kinder)" + "mood": "Estado de ánimo", + "progress": "Afecto", + "jumpToPartyForm": "Organizar banquete de boda (necesario para boda e hijos)" }, "relationships": { - "name": "Name" + "name": "Nombre" }, "children": { - "title": "Kinder", - "name": "Name", - "age": "Alter", - "gender": "Geschlecht", - "heir": "Erbe", - "isHeir": "Erbe", - "notHeir": "Nicht Erbe", - "setAsHeir": "Als Erben festlegen", - "heirSetSuccess": "Das Kind wurde erfolgreich als Erbe festgelegt.", - "heirSetError": "Fehler beim Festlegen des Erben.", - "actions": "Aktionen", - "none": "Keine Kinder vorhanden.", - "detailButton": "Details anzeigen", - "addChild": "Kind hinzufügen", - "baptism": "Taufen", - "notBaptized": "Noch nicht getauft", - "baptismNotice": "Dieses Kind wurde noch nicht getauft und hat daher noch keinen Namen.", + "title": "Hijos", + "name": "Nombre", + "age": "Edad", + "gender": "Género", + "heir": "Heredero", + "isHeir": "Heredero", + "notHeir": "No es heredero", + "setAsHeir": "Establecer como heredero", + "heirSetSuccess": "El hijo se ha establecido como heredero correctamente.", + "heirSetError": "Error al establecer el heredero.", + "actions": "Acciones", + "none": "No hay hijos.", + "detailButton": "Ver detalles", + "addChild": "Añadir hijo", + "baptism": "Bautizar", + "notBaptized": "Aún no bautizado", + "baptismNotice": "Este niño aún no ha sido bautizado y por lo tanto todavía no tiene nombre.", "details": { - "title": "Kind-Details" + "title": "Detalles del hijo" } }, "lovers": { - "title": "Liebhaber", - "none": "Keine Liebhaber vorhanden.", - "affection": "Zuneigung" + "title": "Amantes", + "none": "No hay amantes.", + "affection": "Afecto" }, "statuses": { - "wooing": "In Werbung", - "engaged": "Verlobt", - "married": "Verheiratet", - "single": "Ledig", - "widowed": "Verwitwet" + "wooing": "En cortejo", + "engaged": "Comprometido", + "married": "Casado", + "single": "Soltero", + "widowed": "Viudo" }, "actions": { - "addSpouse": "Ehepartner hinzufügen", - "viewDetails": "Details anzeigen", - "remove": "Entfernen" + "addSpouse": "Añadir pareja", + "viewDetails": "Ver detalles", + "remove": "Eliminar" }, "sendgift": { "error": { - "nogiftselected": "Bitte wähle ein Geschenk aus.", - "generic": "Ein unbekannter Fehler ist aufgetreten.", - "tooOften": "Du kannst nicht so oft Geschenke machen.", - "insufficientFunds": "Du hast nicht genug Geld." + "nogiftselected": "Por favor, selecciona un regalo.", + "generic": "Ha ocurrido un error desconocido.", + "tooOften": "No puedes dar regalos tan a menudo.", + "insufficientFunds": "No tienes suficiente dinero." }, - "success": "Das Geschenk wurde überreicht.", - "nextGiftAt": "Nächstes Geschenk ab" + "success": "El regalo se ha entregado.", + "nextGiftAt": "Siguiente regalo a partir de" } }, "product": { - "wheat": "Weizen", - "grain": "Getreide", - "carrot": "Karotte", - "fish": "Fisch", - "meat": "Fleisch", - "leather": "Leder", - "wood": "Holz", - "stone": "Stein", - "milk": "Milch", - "cheese": "Käse", - "bread": "Brot", - "beer": "Bier", - "iron": "Eisen", - "copper": "Kupfer", - "spices": "Gewürze", - "salt": "Salz", - "sugar": "Zucker", - "vinegar": "Essig", - "cotton": "Baumwolle", - "wine": "Wein", - "gold": "Gold", - "diamond": "Diamant", - "furniture": "Möbel", - "clothing": "Kleidung", - "jewelry": "Schmuck", - "painting": "Gemälde", - "book": "Buch", - "weapon": "Waffe", - "armor": "Rüstung", - "shield": "Schild", - "horse": "Pferd", - "ox": "Ochse" + "wheat": "Trigo", + "grain": "Grano", + "carrot": "Zanahoria", + "fish": "Pescado", + "meat": "Carne", + "leather": "Cuero", + "wood": "Madera", + "stone": "Piedra", + "milk": "Leche", + "cheese": "Queso", + "bread": "Pan", + "beer": "Cerveza", + "iron": "Hierro", + "copper": "Cobre", + "spices": "Especias", + "salt": "Sal", + "sugar": "Azúcar", + "vinegar": "Vinagre", + "cotton": "Algodón", + "wine": "Vino", + "gold": "Oro", + "diamond": "Diamante", + "furniture": "Muebles", + "clothing": "Ropa", + "jewelry": "Joyas", + "painting": "Pintura", + "book": "Libro", + "weapon": "Arma", + "armor": "Armadura", + "shield": "Escudo", + "horse": "Caballo", + "ox": "Buey" }, "regionType": { - "city": "Stadt" + "city": "Ciudad" }, "moneyHistory": { - "title": "Geldhistorie", - "filter": "Filter", - "search": "Filter setzen", - "activity": "Aktivität", - "moneyBefore": "Geld vor der Transaktion", - "moneyAfter": "Geld nach der Transaktion", - "changeValue": "Wertänderung", - "time": "Zeit", - "prev": "Zurück", - "next": "Weiter", + "title": "Historial de dinero", + "filter": "Filtro", + "search": "Aplicar filtro", + "activity": "Actividad", + "moneyBefore": "Dinero antes de la transacción", + "moneyAfter": "Dinero después de la transacción", + "changeValue": "Cambio de valor", + "time": "Hora", + "prev": "Anterior", + "next": "Siguiente", "activities": { - "Product sale": "Produkte verkauft", - "Production cost": "Produktionskosten", - "Sell all products": "Alle Produkte verkauft", - "sell products": "Produkte verkauft", - "director starts production": "Direktor beginnt Produktion", - "director payed out": "Direktorgehalt ausgezahlt", - "Buy storage (type: field)": "Lagerplatz gekauft (Typ: Feld)", - "Buy storage (type: iron)": "Lagerplatz gekauft (Typ: Eisen)", - "Buy storage (type: stone)": "Lagerplatz gekauft (Typ: Stein)", - "Buy storage (type: wood)": "Lagerplatz gekauft (Typ: Holz)", - "create_branch": "Niederlassung gegründet", - "buy_vehicles": "Transportmittel gekauft", - "build_vehicles": "Transportmittel gebaut", - "transport": "Transport", - "Marriage cost": "Heiratskosten", - "Gift cost": "Geschenk-Kosten", - "housebuy": "Hauskauf", - "Baptism": "Taufe", - "credit taken": "Kredit aufgenommen", - "new nobility title": "Neuer Adelstitel", - "partyOrder": "Fest bestellt", - "renovation_all": "Haus komplett renoviert", + "Product sale": "Productos vendidos", + "Production cost": "Costes de producción", + "Sell all products": "Venta de todos los productos", + "sell products": "Productos vendidos", + "director starts production": "El director inicia la producción", + "director payed out": "Salario del director pagado", + "Buy storage (type: field)": "Espacio de almacén comprado (tipo: campo)", + "Buy storage (type: iron)": "Espacio de almacén comprado (tipo: hierro)", + "Buy storage (type: stone)": "Espacio de almacén comprado (tipo: piedra)", + "Buy storage (type: wood)": "Espacio de almacén comprado (tipo: madera)", + "create_branch": "Sucursal fundada", + "buy_vehicles": "Medios de transporte comprados", + "build_vehicles": "Medios de transporte construidos", + "transport": "Transporte", + "Marriage cost": "Costes de matrimonio", + "Gift cost": "Coste de regalo", + "housebuy": "Compra de casa", + "Baptism": "Bautizo", + "credit taken": "Crédito solicitado", + "new nobility title": "Nuevo título nobiliario", + "partyOrder": "Festín encargado", + "renovation_all": "Casa renovada por completo", "health": { - "pill": "Gesundheitsmaßnahme: Tablette", - "doctor": "Gesundheitsmaßnahme: Arztbesuch", - "witch": "Gesundheitsmaßnahme: Hexe", - "drunkOfLife": "Gesundheitsmaßnahme: Trunk des Lebens", - "barber": "Gesundheitsmaßnahme: Barbier" + "pill": "Medida de salud: pastilla", + "doctor": "Medida de salud: visita al médico", + "witch": "Medida de salud: bruja", + "drunkOfLife": "Medida de salud: elixir de la vida", + "barber": "Medida de salud: barbero" } } }, "newdirector": { - "title": "Neuer Direktor", - "age": "Alter", - "salary": "Gehalt", - "skills": "Wissen", - "product": "Produkt", - "knowledge": "Produktwissen", - "hire": "Einstellen", - "noProposals": "Keine Direktor-Kandidaten verfügbar." + "title": "Nuevo director", + "age": "Edad", + "salary": "Salario", + "skills": "Conocimientos", + "product": "Producto", + "knowledge": "Conocimiento del producto", + "hire": "Contratar", + "noProposals": "No hay candidatos a director disponibles." }, "skillKnowledges": { - "excelent": "Exzellent", - "veryhigh": "Sehr gut", - "high": "Gut", - "medium": "Mittel", - "low": "Schlecht", - "verylow": "Sehr schlecht", - "none": "Kein Wissen" + "excelent": "Excelente", + "veryhigh": "Muy alto", + "high": "Alto", + "medium": "Medio", + "low": "Bajo", + "verylow": "Muy bajo", + "none": "Sin conocimientos" }, "gifts": { - "Gold Coin": "Goldmünze", - "Silk Scarf": "Seidenschal", - "Exotic Perfume": "Exotisches Parfüm", - "Crystal Pendant": "Kristallanhänger", - "Leather Journal": "Lederjournal", - "Fine Wine": "Feiner Wein", - "Artisan Chocolate": "Kunsthandwerkliche Schokolade", - "Pearl Necklace": "Perlenanhänger", - "Rare Painting": "Seltenes Gemälde", - "Silver Watch": "Silberuhr", - "Cat": "Katze", - "Dog": "Hund", - "Horse": "Pferd" + "Gold Coin": "Moneda de oro", + "Silk Scarf": "Pañuelo de seda", + "Exotic Perfume": "Perfume exótico", + "Crystal Pendant": "Colgante de cristal", + "Leather Journal": "Diario de cuero", + "Fine Wine": "Vino fino", + "Artisan Chocolate": "Chocolate artesanal", + "Pearl Necklace": "Collar de perlas", + "Rare Painting": "Pintura rara", + "Silver Watch": "Reloj de plata", + "Cat": "Gato", + "Dog": "Perro", + "Horse": "Caballo" }, "mood": { - "happy": "Glücklich", - "sad": "Traurig", - "angry": "Wütend", - "nervous": "Nervös", - "excited": "Aufgeregt", - "bored": "Gelangweilt", - "fearful": "Ängstlich", - "confident": "Selbstbewusst", - "curious": "Neugierig", - "hopeful": "Hoffnungsvoll", - "frustrated": "Frustriert", - "lonely": "Einsam", - "grateful": "Dankbar", - "jealous": "Eifersüchtig", - "guilty": "Schuldig", - "apathetic": "Apathisch", - "relieved": "Erleichtert", - "proud": "Stolz", - "ashamed": "Beschämt" + "happy": "Feliz", + "sad": "Triste", + "angry": "Enfadado", + "nervous": "Nervioso", + "excited": "Emocionado", + "bored": "Aburrido", + "fearful": "Asustado", + "confident": "Seguro de sí mismo", + "curious": "Curioso", + "hopeful": "Esperanzado", + "frustrated": "Frustrado", + "lonely": "Solitario", + "grateful": "Agradecido", + "jealous": "Celoso", + "guilty": "Culpable", + "apathetic": "Apático", + "relieved": "Aliviado", + "proud": "Orgulloso", + "ashamed": "Avergonzado" }, "character": { - "brave": "Mutig", - "kind": "Freundlich", - "greedy": "Gierig", - "wise": "Weise", - "loyal": "Loyal", - "cunning": "Listig", - "generous": "Großzügig", - "arrogant": "Arrogant", - "honest": "Ehrlich", - "ambitious": "Ehrgeizig", - "patient": "Geduldig", - "impatient": "Ungeduldig", - "selfish": "Egoistisch", - "charismatic": "Charismatisch", - "empathetic": "Einfühlsam", - "timid": "Schüchtern", - "stubborn": "Stur", - "resourceful": "Einfallsreich", - "reckless": "Rücksichtslos", - "disciplined": "Diszipliniert", - "optimistic": "Optimistisch", - "pessimistic": "Pessimistisch", - "manipulative": "Manipulativ", - "independent": "Unabhängig", - "dependent": "Abhängig", - "adventurous": "Abenteuerlustig", - "humble": "Bescheiden", - "vengeful": "Rachsüchtig", - "pragmatic": "Pragmatisch", - "idealistic": "Idealistisch" + "brave": "Valiente", + "kind": "Amable", + "greedy": "Codicioso", + "wise": "Sabio", + "loyal": "Leal", + "cunning": "Astuto", + "generous": "Generoso", + "arrogant": "Arrogante", + "honest": "Honesto", + "ambitious": "Ambicioso", + "patient": "Paciente", + "impatient": "Impaciente", + "selfish": "Egoísta", + "charismatic": "Carismático", + "empathetic": "Empático", + "timid": "Tímido", + "stubborn": "Terco", + "resourceful": "Ingenioso", + "reckless": "Imprudente", + "disciplined": "Disciplinado", + "optimistic": "Optimista", + "pessimistic": "Pesimista", + "manipulative": "Manipulador", + "independent": "Independiente", + "dependent": "Dependiente", + "adventurous": "Aventurero", + "humble": "Humilde", + "vengeful": "Vengativo", + "pragmatic": "Pragmático", + "idealistic": "Idealista" }, "house": { - "title": "Haus", - "statusreport": "Zustand des Hauses", - "element": "Bereich", - "state": "Zustand", - "buyablehouses": "Kaufe ein Haus", - "buy": "Kaufen", - "price": "Kaufpreis", - "worth": "Restwert", - "sell": "Verkaufen", - "renovate": "Renovieren", - "renovateAll": "Komplett renovieren", + "title": "Casa", + "statusreport": "Estado de la casa", + "element": "Elemento", + "state": "Estado", + "buyablehouses": "Comprar una casa", + "buy": "Comprar", + "price": "Precio de compra", + "worth": "Valor restante", + "sell": "Vender", + "renovate": "Renovar", + "renovateAll": "Renovar por completo", "status": { - "roofCondition": "Dach", - "wallCondition": "Wände", - "floorCondition": "Böden", - "windowCondition": "Fenster" + "roofCondition": "Techo", + "wallCondition": "Paredes", + "floorCondition": "Suelos", + "windowCondition": "Ventanas" }, "type": { - "backyard_room": "Hinterhofzimmer", - "wooden_house": "Holzhütte", - "straw_hut": "Strohhütte", - "family_house": "Familienhaus", - "townhouse": "Stadthaus" + "backyard_room": "Habitación en el patio", + "wooden_house": "Casa de madera", + "straw_hut": "Choza de paja", + "family_house": "Casa familiar", + "townhouse": "Casa urbana" } }, "nobility": { - "title": "Sozialstatus", + "title": "Estatus social", "tabs": { - "overview": "Übersicht", - "advance": "Erweitern" + "overview": "Resumen", + "advance": "Ascender" }, - "nextTitle": "Nächster möglicher Titel", + "nextTitle": "Siguiente título posible", "requirement": { - "money": "Vermögen mindestens {amount}", - "cost": "Kosten: {amount}", - "branches": "Mindestens {amount} Niederlassungen" + "money": "Patrimonio mínimo {amount}", + "cost": "Coste: {amount}", + "branches": "Al menos {amount} sucursales" }, "advance": { - "confirm": "Aufsteigen beantragen" + "confirm": "Solicitar ascenso" }, - "cooldown": "Du kannst frühestens wieder am {date} aufsteigen.", + "cooldown": "Podrás ascender de nuevo como muy pronto el {date}.", "errors": { - "tooSoon": "Aufstieg zu früh.", - "unmet": "Folgende Voraussetzungen fehlen:", - "generic": "Der Aufstieg ist fehlgeschlagen." + "tooSoon": "El ascenso es demasiado pronto.", + "unmet": "Faltan los siguientes requisitos:", + "generic": "El ascenso ha fallado." } }, "reputation": { - "title": "Reputation", + "title": "Reputación", "overview": { - "title": "Übersicht" + "title": "Resumen" }, "party": { - "title": "Feste", - "totalCost": "Gesamtkosten", - "order": "Fest veranstalten", - "inProgress": "Feste in Vorbereitung", - "completed": "Abgeschlossene Feste", + "title": "Fiestas", + "totalCost": "Coste total", + "order": "Organizar fiesta", + "inProgress": "Fiestas en preparación", + "completed": "Fiestas completadas", "newpartyview": { - "open": "Neues Fest erstellen", - "close": "Neues Fest verbergen", - "type": "Art des Festes" + "open": "Crear nueva fiesta", + "close": "Ocultar nueva fiesta", + "type": "Tipo de fiesta" }, "music": { - "label": "Musik", - "none": "Ohne Musik", - "bard": "Ein Barde", - "villageBand": "Eine Dorfkapelle", - "chamberOrchestra": "Ein Kammerorchester", - "symphonyOrchestra": "Ein Sinfonieorchester", - "symphonyOrchestraWithChorusAndSolists": "Ein Sinfonieorchester mit Chor und Solisten" + "label": "Música", + "none": "Sin música", + "bard": "Un bardo", + "villageBand": "Una banda del pueblo", + "chamberOrchestra": "Una orquesta de cámara", + "symphonyOrchestra": "Una orquesta sinfónica", + "symphonyOrchestraWithChorusAndSolists": "Una orquesta sinfónica con coro y solistas" }, "banquette": { - "label": "Essen", - "bread": "Brot", - "roastWithBeer": "Rostbraten mit Bier", - "poultryWithVegetablesAndWine": "Geflügel mit Gemüse und Wein", - "extensiveBuffet": "Festliches Essen" + "label": "Comida", + "bread": "Pan", + "roastWithBeer": "Asado con cerveza", + "poultryWithVegetablesAndWine": "Ave con verduras y vino", + "extensiveBuffet": "Banquete festivo" }, "servants": { - "label": "Ein Bediensteter pro ", - "perPersons": " Personen" + "label": "Un sirviente por ", + "perPersons": " personas" }, "esteemedInvites": { - "label": "Eingeladene Stände" + "label": "Estamentos invitados" }, - "type": "Festart", - "cost": "Kosten", - "date": "Datum" + "type": "Tipo de fiesta", + "cost": "Coste", + "date": "Fecha" } }, "party": { "type": { - "ball": "Ball", - "wedding": "Hochzeit", - "royal feast": "Königliches Bankett", - "town fair": "Stadtmarkt" + "ball": "Baile", + "wedding": "Boda", + "royal feast": "Banquete real", + "town fair": "Feria de la ciudad" } }, "church": { - "title": "Kirche", + "title": "Iglesia", "baptism": { - "title": "Taufen", + "title": "Bautizos", "table": { - "name": "Vorname", - "gender": "Geschlecht", - "age": "Alter", - "baptise": "Taufen (50)", - "newName": "Namen vorschlagen" + "name": "Nombre", + "gender": "Género", + "age": "Edad", + "baptise": "Bautizar (50)", + "newName": "Proponer nombre" }, "gender": { - "male": "Junge", - "female": "Mädchen" + "male": "Niño", + "female": "Niña" }, - "success": "Das Kind wurde getauft.", - "error": "Das Kind konnte nicht getauft werden." + "success": "El niño ha sido bautizado.", + "error": "No se pudo bautizar al niño." } }, "education": { - "title": "Bildung", + "title": "Educación", "self": { - "title": "Eigene Bildung" + "title": "Educación propia" }, "children": { - "title": "Kinderbildung" + "title": "Educación de los hijos" }, "director": { - "title": "Direktoren-Ausbildung" + "title": "Formación de directores" }, "table": { - "article": "Produkt", - "knowledge": "Wissen", - "activity": "Aktivität" + "article": "Producto", + "knowledge": "Conocimiento", + "activity": "Actividad" }, - "learn": "Weiterbilden", - "learnAll": "In allem weiterbilden" + "learn": "Formarse", + "learnAll": "Formarse en todo" }, "bank": { - "title": "Bank", + "title": "Banco", "account": { - "title": "Kontostand", - "balance": "Kontostand", - "totalDebt": "Ausstände", - "maxCredit": "Maximaler Kredit", - "availableCredit": "Verfügbarer Kredit" + "title": "Saldo de la cuenta", + "balance": "Saldo", + "totalDebt": "Deuda pendiente", + "maxCredit": "Crédito máximo", + "availableCredit": "Crédito disponible" }, "credits": { - "title": "Kredite", - "none": "Derzeit hast Du keinen Kredit aufgenommen.", - "amount": "Betrag", - "remaining": "Verbleibend", - "interestRate": "Zinssatz", + "title": "Créditos", + "none": "Actualmente no tienes ningún crédito.", + "amount": "Importe", + "remaining": "Restante", + "interestRate": "Tipo de interés", "table": { - "name": "Name", - "amount": "Betrag", - "reason": "Grund", - "date": "Datum" + "name": "Nombre", + "amount": "Importe", + "reason": "Motivo", + "date": "Fecha" }, "payoff": { - "title": "Neuen Kredit aufnehmen", - "height": "Kredithöhe", - "remaining": "Verbleibende mögliche Kredithöhe", - "fee": "Kreditzins", - "feeHeight": "Rate (a 10 Raten)", - "total": "Gesamtsumme", - "confirm": "Kredit aufnehmen" + "title": "Solicitar un nuevo crédito", + "height": "Importe del crédito", + "remaining": "Importe máximo restante", + "fee": "Interés del crédito", + "feeHeight": "Cuota (en 10 pagos)", + "total": "Total", + "confirm": "Solicitar crédito" } } }, "director": { - "title": "Direktoren", - "branch": "Niederlassung", - "income": "Einkommen", - "satisfaction": "Zufriedenheit", - "name": "Name", - "age": "Alter", + "title": "Directores", + "branch": "Sucursal", + "income": "Ingresos", + "satisfaction": "Satisfacción", + "name": "Nombre", + "age": "Edad", "knowledge": { - "title": "Wissen", - "knowledge": "Wissen" + "title": "Conocimientos", + "knowledge": "Conocimiento" }, - "product": "Produkt", - "updateButton": "Gehalt aktualisieren", - "wishedIncome": "Gewünschtes Einkommen" + "product": "Producto", + "updateButton": "Actualizar salario", + "wishedIncome": "Salario deseado" }, "healthview": { - "title": "Gesundheit", - "age": "Alter", - "status": "Gesundheitszustand", - "measuresTaken": "Ergriffene Maßnahmen", - "measure": "Maßnahme", - "date": "Datum", - "cost": "Kosten", - "success": "Erfolg", - "selectMeasure": "Maßnahme", - "perform": "Durchführen", + "title": "Salud", + "age": "Edad", + "status": "Estado de salud", + "measuresTaken": "Medidas adoptadas", + "measure": "Medida", + "date": "Fecha", + "cost": "Coste", + "success": "Éxito", + "selectMeasure": "Medida", + "perform": "Realizar", "measures": { - "pill": "Tablette", - "doctor": "Arztbesuch", - "witch": "Hexe", - "drunkOfLife": "Trunk des Lebens", - "barber": "Barbier" + "pill": "Pastilla", + "doctor": "Visita al médico", + "witch": "Bruja", + "drunkOfLife": "Elixir de la vida", + "barber": "Barbero" }, - "choose": "Bitte auswählen" + "choose": "Por favor, selecciona" }, "politics": { - "title": "Politik", + "title": "Política", "tabs": { - "current": "Aktuelle Position", - "upcoming": "Anstehende Neuwahl-Positionen", - "elections": "Wahlen" + "current": "Cargo actual", + "upcoming": "Cargos pendientes de (re)elección", + "elections": "Elecciones" }, "current": { - "office": "Amt", - "region": "Region", - "termEnds": "Läuft ab am", - "benefit": "Vorteil", - "benefit_all": "Alle Regionen", - "income": "Einkommen", - "none": "Keine aktuelle Position vorhanden.", - "holder": "Inhaber" + "office": "Cargo", + "region": "Región", + "termEnds": "Vence el", + "benefit": "Ventaja", + "benefit_all": "Todas las regiones", + "income": "Ingresos", + "none": "No hay ningún cargo actual.", + "holder": "Titular" }, "open": { - "office": "Amt", - "region": "Region", - "date": "Datum", - "candidacy": "Kandidatur", - "none": "Keine offenen Positionen.", - "apply": "Für ausgewählte Positionen kandidieren" + "office": "Cargo", + "region": "Región", + "date": "Fecha", + "candidacy": "Candidatura", + "none": "No hay cargos abiertos.", + "apply": "Presentarse a los cargos seleccionados" }, "upcoming": { - "office": "Amt", - "region": "Region", - "postDate": "Datum", - "none": "Keine anstehenden Positionen." + "office": "Cargo", + "region": "Región", + "postDate": "Fecha", + "none": "No hay cargos previstos." }, "elections": { - "office": "Amt", - "region": "Region", - "date": "Datum", - "posts": "Zu besetzende Posten", - "none": "Keine Wahlen vorhanden.", - "choose": "Kandidaten", - "vote": "Stimme abgeben", - "voteAll": "Alle Stimmen abgeben", - "candidates": "Kandidaten", - "action": "Aktion" + "office": "Cargo", + "region": "Región", + "date": "Fecha", + "posts": "Puestos a cubrir", + "none": "No hay elecciones.", + "choose": "Candidatos", + "vote": "Votar", + "voteAll": "Emitir todos los votos", + "candidates": "Candidatos", + "action": "Acción" }, "offices": { - "chancellor": "Kanzler", - "minister": "Minister", - "ministry-helper": "Ministerhelfer", - "governor": "Gouverneur", - "super-state-administrator": "Oberstaatsverwalter", - "state-administrator": "Staatsverwalter", - "consultant": "Berater", - "ruler-consultant": "Berater des Herrschers", - "territorial-council-speaker": "Sprecher des Territorialrats", - "territorial-council": "Territorialrat", - "hangman": "Henker", - "treasurer": "Schatzmeister", + "chancellor": "Canciller", + "minister": "Ministro", + "ministry-helper": "Asistente del ministro", + "governor": "Gobernador", + "super-state-administrator": "Alto administrador estatal", + "state-administrator": "Administrador estatal", + "consultant": "Consejero", + "ruler-consultant": "Consejero del soberano", + "territorial-council-speaker": "Portavoz del consejo territorial", + "territorial-council": "Consejo territorial", + "hangman": "Verdugo", + "treasurer": "Tesorero", "sheriff": "Sheriff", - "taxman": "Steuereintreiber", - "bailif": "Gerichtsdiener", - "judge": "Richter", - "village-major": "Dorfvorsteher", - "master-builder": "Baumeister", - "mayor": "Bürgermeister", - "town-clerk": "Stadtschreiber", - "beadle": "Schulze", - "council": "Ratsherr", - "councillor": "Stadtrat", - "assessor": "Schätzer" + "taxman": "Recaudador de impuestos", + "bailif": "Alguacil", + "judge": "Juez", + "village-major": "Alcalde del pueblo", + "master-builder": "Maestro constructor", + "mayor": "Alcalde", + "town-clerk": "Secretario municipal", + "beadle": "Alguacil menor", + "council": "Consejal", + "councillor": "Concejal", + "assessor": "Tasador" } }, "underground": { - "title": "Untergrund", + "title": "Bajos fondos", "tabs": { - "activities": "Aktivitäten", - "attacks": "Angriffe" + "activities": "Actividades", + "attacks": "Ataques" }, "activities": { - "none": "Keine Aktivitäten vorhanden.", - "create": "Neue Aktivität erstellen", - "type": "Aktivitätstyp", - "victim": "Zielperson", - "cost": "Kosten", - "additionalInfo": "Zusätzliche Informationen", - "victimPlaceholder": "Benutzername eingeben", - "sabotageTarget": "Sabotageziel", - "corruptGoal": "Ziel der Korruption" + "none": "No hay actividades.", + "create": "Crear nueva actividad", + "type": "Tipo de actividad", + "victim": "Objetivo", + "cost": "Coste", + "additionalInfo": "Información adicional", + "victimPlaceholder": "Introduce el nombre de usuario", + "sabotageTarget": "Objetivo del sabotaje", + "corruptGoal": "Objetivo de la corrupción" }, "attacks": { - "target": "Angreifer", - "date": "Datum", - "success": "Erfolg", - "none": "Keine Angriffe aufgezeichnet." + "target": "Atacante", + "date": "Fecha", + "success": "Éxito", + "none": "No se han registrado ataques." }, "types": { - "spyin": "Spionage", - "assassin": "Attentat", - "sabotage": "Sabotage", - "corrupt_politician": "Korruption", - "rob": "Raub" + "spyin": "Espionaje", + "assassin": "Atentado", + "sabotage": "Sabotaje", + "corrupt_politician": "Corrupción", + "rob": "Robo" }, "targets": { - "house": "Wohnhaus", - "storage": "Lager" + "house": "Vivienda", + "storage": "Almacén" }, "goals": { - "elect": "Amtseinsetzung", - "taxIncrease": "Steuern erhöhen", - "taxDecrease": "Steuern senken" + "elect": "Nombramiento", + "taxIncrease": "Subir impuestos", + "taxDecrease": "Bajar impuestos" } } }