From 9c91d99bed2d1a0c85deb82374db99ea8afa5b02 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Mon, 9 Feb 2026 15:55:04 +0100 Subject: [PATCH] Add Spanish locale files and initial translations --- frontend/src/i18n/index.js | 39 + frontend/src/i18n/locales/es/activate.json | 9 + frontend/src/i18n/locales/es/admin.json | 349 ++++++ frontend/src/i18n/locales/es/blog.json | 11 + frontend/src/i18n/locales/es/chat.json | 71 ++ frontend/src/i18n/locales/es/error.json | 7 + frontend/src/i18n/locales/es/falukant.json | 1041 +++++++++++++++++ frontend/src/i18n/locales/es/friends.json | 23 + frontend/src/i18n/locales/es/general.json | 61 + frontend/src/i18n/locales/es/header.json | 5 + frontend/src/i18n/locales/es/home.json | 46 + frontend/src/i18n/locales/es/message.json | 8 + frontend/src/i18n/locales/es/minigames.json | 73 ++ frontend/src/i18n/locales/es/navigation.json | 116 ++ .../src/i18n/locales/es/passwordReset.json | 9 + frontend/src/i18n/locales/es/personal.json | 79 ++ frontend/src/i18n/locales/es/register.json | 21 + frontend/src/i18n/locales/es/settings.json | 180 +++ .../src/i18n/locales/es/socialnetwork.json | 415 +++++++ 19 files changed, 2563 insertions(+) create mode 100644 frontend/src/i18n/locales/es/activate.json create mode 100644 frontend/src/i18n/locales/es/admin.json create mode 100644 frontend/src/i18n/locales/es/blog.json create mode 100644 frontend/src/i18n/locales/es/chat.json create mode 100644 frontend/src/i18n/locales/es/error.json create mode 100644 frontend/src/i18n/locales/es/falukant.json create mode 100644 frontend/src/i18n/locales/es/friends.json create mode 100644 frontend/src/i18n/locales/es/general.json create mode 100644 frontend/src/i18n/locales/es/header.json create mode 100644 frontend/src/i18n/locales/es/home.json create mode 100644 frontend/src/i18n/locales/es/message.json create mode 100644 frontend/src/i18n/locales/es/minigames.json create mode 100644 frontend/src/i18n/locales/es/navigation.json create mode 100644 frontend/src/i18n/locales/es/passwordReset.json create mode 100644 frontend/src/i18n/locales/es/personal.json create mode 100644 frontend/src/i18n/locales/es/register.json create mode 100644 frontend/src/i18n/locales/es/settings.json create mode 100644 frontend/src/i18n/locales/es/socialnetwork.json diff --git a/frontend/src/i18n/index.js b/frontend/src/i18n/index.js index 061dbb5..c7a2003 100644 --- a/frontend/src/i18n/index.js +++ b/frontend/src/i18n/index.js @@ -39,6 +39,25 @@ import deMinigames from './locales/de/minigames.json'; import deMessage from './locales/de/message.json'; import dePersonal from './locales/de/personal.json'; +import esGeneral from './locales/es/general.json'; +import esHeader from './locales/es/header.json'; +import esNavigation from './locales/es/navigation.json'; +import esHome from './locales/es/home.json'; +import esChat from './locales/es/chat.json'; +import esRegister from './locales/es/register.json'; +import esError from './locales/es/error.json'; +import esActivate from './locales/es/activate.json'; +import esSettings from './locales/es/settings.json'; +import esAdmin from './locales/es/admin.json'; +import esSocialNetwork from './locales/es/socialnetwork.json'; +import esFriends from './locales/es/friends.json'; +import esFalukant from './locales/es/falukant.json'; +import esPasswordReset from './locales/es/passwordReset.json'; +import esBlog from './locales/es/blog.json'; +import esMinigames from './locales/es/minigames.json'; +import esMessage from './locales/es/message.json'; +import esPersonal from './locales/es/personal.json'; + const messages = { en: { ...enGeneral, @@ -80,6 +99,26 @@ const messages = { ...deMinigames, ...deMessage, ...dePersonal, + }, + es: { + ...esGeneral, + ...esHeader, + ...esNavigation, + ...esHome, + ...esChat, + ...esRegister, + ...esPasswordReset, + ...esError, + ...esActivate, + ...esSettings, + ...esAdmin, + ...esSocialNetwork, + ...esFriends, + ...esFalukant, + ...esBlog, + ...esMinigames, + ...esMessage, + ...esPersonal, } }; diff --git a/frontend/src/i18n/locales/es/activate.json b/frontend/src/i18n/locales/es/activate.json new file mode 100644 index 0000000..dd02ee9 --- /dev/null +++ b/frontend/src/i18n/locales/es/activate.json @@ -0,0 +1,9 @@ +{ + "activate": { + "title": "Activar", + "message": "Hola {username}. Introduce aquí el código que te hemos enviado por correo electrónico.", + "token": "Token:", + "submit": "Enviar", + "failure": "La activación no se ha realizado correctamente." + } +} diff --git a/frontend/src/i18n/locales/es/admin.json b/frontend/src/i18n/locales/es/admin.json new file mode 100644 index 0000000..182870a --- /dev/null +++ b/frontend/src/i18n/locales/es/admin.json @@ -0,0 +1,349 @@ +{ + "admin": { + "interests": { + "title": "[Admin] - Interessen verwalten", + "newinterests": { + "name": "Name des Interesses", + "status": "Freigegeben", + "adultonly": "Nur für Erwachsene", + "translations": "Übersetzungen", + "isactive": "Aktiviert", + "isadult": "Nur für Erwachsene", + "delete": "Löschen" + } + }, + "contacts": { + "title": "[Admin] - Kontaktanfragen", + "date": "Datum", + "from": "Absender", + "actions": "Aktionen", + "open": "Bearbeiten", + "finished": "Abschließen" + }, + "editcontactrequest": { + "title": "[Admin] - Kontaktanfrage bearbeiten" + }, + "user": { + "name": "Benutzername", + "active": "Aktiv", + "blocked": "Gesperrt", + "actions": "Aktionen", + "search": "Suchen" + }, + "rights": { + "add": "Recht hinzufügen", + "select": "Bitte wählen", + "current": "Aktuelle Rechte" + }, + "forum": { + "title": "[Admin] - Forum", + "currentForums": "Existierende Foren", + "edit": "Ändern", + "delete": "Löschen", + "createForum": "Anlegen", + "forumName": "Titel", + "create": "Anlegen", + "permissions": { + "label": "Berechtigungen", + "all": "Jeder", + "admin": "Nur Admins", + "teammember": "Nur Teammitglieder", + "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" + }, + "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", + "tabs": { + "userdata": "Benutzerdaten", + "branches": "Niederlassungen" + }, + "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" + }, + "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." + }, + "map": { + "title": "Falukant Karten-Editor (Regionen)", + "description": "Zeichne Rechtecke auf der Falukant-Karte und weise sie Städten zu.", + "tabs": { + "regions": "Positionen", + "distances": "Entfernungen" + }, + "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", + "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?" + }, + "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." + } + }, + "chatrooms": { + "title": "[Admin] - Chaträume verwalten", + "roomName": "Raumname", + "create": "Chatraum anlegen", + "edit": "Chatraum bearbeiten", + "type": "Typ", + "isPublic": "Öffentlich sichtbar", + "actions": "Aktionen", + "genderRestriction": { + "show": "Geschlechtsbeschränkung aktivieren", + "label": "Geschlechtsbeschränkung" + }, + "minAge": { + "show": "Mindestalter angeben", + "label": "Mindestalter" + }, + "maxAge": { + "show": "Höchstalter angeben", + "label": "Höchstalter" + }, + "password": { + "show": "Passwortschutz aktivieren", + "label": "Passwort" + }, + "friendsOfOwnerOnly": "Nur Freunde des Besitzers", + "requiredUserRight": { + "show": "Benötigtes Benutzerrecht angeben", + "label": "Benötigtes Benutzerrecht" + }, + "roomtype": { + "chat": "Reden", + "dice": "Würfeln", + "poker": "Poker", + "hangman": "Hangman" + }, + "rights": { + "talk": "Reden", + "scream": "Schreien", + "whisper": "Flüstern", + "start game": "Spiel starten", + "open room": "Raum öffnen", + "systemmessage": "Systemnachricht" + }, + "confirmDelete": "Soll dieser Chatraum wirklich gelöscht werden?" + }, + "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?", + "levelName": "Name", + "levelDescription": "Beschreibung", + "boardWidth": "Breite", + "boardHeight": "Höhe", + "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", + "boardControls": { + "fillAll": "Alle aktivieren", + "clearAll": "Alle deaktivieren", + "invert": "Invertieren" + }, + "loading": "Lade Level...", + "retry": "Erneut versuchen", + "availableLevels": "Verfügbare Level: {count}", + "levelFormat": "Level {number}: {name}", + "levelObjectives": "Level-Objekte", + "objectivesTitle": "Siegvoraussetzungen", + "addObjective": "Objektiv hinzufügen", + "removeObjective": "Entfernen", + "objectiveType": "Typ", + "objectiveTypeScore": "Punkte sammeln", + "objectiveTypeMatches": "Matches machen", + "objectiveTypeMoves": "Züge verwenden", + "objectiveTypeTime": "Zeit einhalten", + "objectiveTypeSpecial": "Spezialziel", + "objectiveOperator": "Operator", + "operatorGreaterEqual": "Größer oder gleich (≥)", + "operatorLessEqual": "Kleiner oder gleich (≤)", + "operatorEqual": "Gleich (=)", + "operatorGreater": "Größer als (>)", + "operatorLess": "Kleiner als (<)", + "objectiveTarget": "Zielwert", + "objectiveTargetPlaceholder": "z.B. 100", + "objectiveOrder": "Reihenfolge", + "objectiveOrderPlaceholder": "1, 2, 3...", + "objectiveDescription": "Beschreibung", + "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." + }, + "userStatistics": { + "title": "[Admin] - Benutzerstatistiken", + "totalUsers": "Gesamtanzahl Benutzer", + "genderDistribution": "Geschlechterverteilung", + "ageDistribution": "Altersverteilung" + }, + "taxiTools": { + "title": "Taxi-Tools", + "description": "Verwalte Taxi-Maps, Level und Konfigurationen", + "mapEditor": { + "title": "Map bearbeiten", + "availableMaps": "Verfügbare Maps: {count}", + "newMap": "Neue Map erstellen", + "mapFormat": "{name} (Position: {x},{y})", + "mapName": "Map-Name", + "mapDescription": "Beschreibung", + "mapWidth": "Breite", + "mapHeight": "Höhe", + "tileSize": "Tile-Größe", + "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", + "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!" + } + }, + "servicesStatus": { + "title": "Service-Status", + "description": "Überwache den Status von Backend, Chat und Daemon", + "status": { + "connected": "Verbunden", + "connecting": "Verbinde...", + "disconnected": "Nicht verbunden", + "error": "Fehler", + "unknown": "Unbekannt" + }, + "backend": { + "title": "Backend", + "connected": "Backend-Service ist erreichbar und verbunden" + }, + "chat": { + "title": "Chat", + "connected": "Chat-Service ist erreichbar und verbunden" + }, + "daemon": { + "title": "Daemon", + "connected": "Daemon-Service ist erreichbar und verbunden", + "connections": { + "title": "Aktive Verbindungen", + "none": "Keine aktiven Verbindungen", + "userId": "Benutzer-ID", + "username": "Benutzername", + "connections": "Verbindungen", + "duration": "Verbindungsdauer", + "lastPong": "Zeit seit letztem Pong", + "pingTimeouts": "Ping-Timeouts", + "pongReceived": "Pong empfangen", + "yes": "Ja", + "no": "Nein", + "notConnected": "Daemon nicht verbunden", + "sendError": "Fehler beim Senden der Anfrage", + "error": "Fehler beim Abrufen der Verbindungen" + }, + "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", + "timestamp": "Zeitstempel", + "direction": "Richtung", + "peer": "Peer", + "connUser": "Verbindungs-User", + "targetUser": "Ziel-User", + "event": "Event" + } + } + } + } +} diff --git a/frontend/src/i18n/locales/es/blog.json b/frontend/src/i18n/locales/es/blog.json new file mode 100644 index 0000000..6ec6d97 --- /dev/null +++ b/frontend/src/i18n/locales/es/blog.json @@ -0,0 +1,11 @@ +{ + "blog": { + "posts": "Publicaciones", + "noPosts": "No hay publicaciones.", + "newPost": "Escribir nueva publicación", + "title": "Blog", + "publish": "Publicar", + "pickImage": "Seleccionar imagen", + "uploadImage": "Subir imagen" + } +} diff --git a/frontend/src/i18n/locales/es/chat.json b/frontend/src/i18n/locales/es/chat.json new file mode 100644 index 0000000..5e937c5 --- /dev/null +++ b/frontend/src/i18n/locales/es/chat.json @@ -0,0 +1,71 @@ +{ + "chat": { + "multichat": { + "title": "Multi-Chat", + "autoscroll": "Desplazamiento automático", + "options": "Opciones", + "send": "Enviar", + "shout": "Gritar", + "action": "Acción", + "roll": "Tirar dados", + "colorpicker": "Elegir color", + "colorpicker_preview": "Vista previa: Este mensaje usa el color elegido.", + "hex": "HEX", + "invalid_hex": "Valor HEX no válido", + "hue": "Tono", + "saturation": "Saturación", + "lightness": "Luminosidad", + "ok": "Ok", + "cancel": "Cancelar", + "placeholder": "Escribe un mensaje...", + "action_select_user": "Selecciona un usuario", + "action_to": "Acción a {to}", + "action_phrases": { + "left_room": "cambia a la sala", + "leaves_room": "sale de la sala", + "left_chat": "ha salido del chat." + }, + "system": { + "room_entered": "Has entrado en la sala \"{room}\".", + "user_entered_room": "{user} ha entrado en la sala.", + "user_left_room": "{user} ha salido de la sala.", + "color_changed_self": "Has cambiado tu color a {color}.", + "color_changed_user": "{user} ha cambiado su color a {color}." + }, + "status": { + "connecting": "Conectando…", + "connected": "Conectado", + "disconnected": "Desconectado", + "error": "Error de conexión" + } + }, + "randomchat": { + "title": "Chat aleatorio", + "age": "Edad", + "gender": { + "title": "Tu género", + "male": "Masculino", + "female": "Femenino" + }, + "start": "Empezar", + "agerange": "Edad", + "gendersearch": "Géneros", + "camonly": "Solo con cámara", + "showcam": "Mostrar mi cámara", + "addfriend": "Añadir a amigos", + "close": "Terminar chat", + "autosearch": "Buscar automáticamente", + "input": "Tu texto", + "waitingForMatch": "Esperando a un participante...", + "chatpartner": "Ahora estás chateando con una persona de años.", + "partnergenderm": "masculina", + "partnergenderf": "femenina", + "self": "Tú", + "partner": "Partner", + "jumptonext": "Finalizar este chat", + "userleftchat": "La otra persona ha salido del chat.", + "startsearch": "Buscar la siguiente charla", + "selfstopped": "Has salido de la conversación." + } + } +} diff --git a/frontend/src/i18n/locales/es/error.json b/frontend/src/i18n/locales/es/error.json new file mode 100644 index 0000000..3f9c07d --- /dev/null +++ b/frontend/src/i18n/locales/es/error.json @@ -0,0 +1,7 @@ +{ + "error": { + "title": "Error", + "close": "Cerrar", + "credentialsinvalid": "Las credenciales no son correctas." + } +} diff --git a/frontend/src/i18n/locales/es/falukant.json b/frontend/src/i18n/locales/es/falukant.json new file mode 100644 index 0000000..9137720 --- /dev/null +++ b/frontend/src/i18n/locales/es/falukant.json @@ -0,0 +1,1041 @@ +{ + "falukant": { + "weather": { + "sunny": "Soleado", + "cloudy": "Nublado", + "rainy": "Lluvioso", + "stormy": "Tormentoso", + "snowy": "Nevado", + "foggy": "Con niebla", + "windy": "Ventoso", + "clear": "Despejado" + }, + "statusbar": { + "age": "Edad", + "wealth": "Patrimonio", + "vehicleType": "Medio de transporte", + "mode": "Tipo", + "modes": { + "land": "Tierra", + "water": "Agua", + "unknown": "Desconocido" + }, + "relationship": "Relación", + "children": "Hijos", + "children_unbaptised": "hijos no bautizados" + }, + "messages": { + "title": "Mensajes", + "tooltip": "Mensajes", + "empty": "No hay mensajes.", + "markAllRead": "Marcar todo como leído" + }, + "notifications": { + "notify_election_created": "Se ha convocado una nueva elección.", + "production": { + "overproduction": "Sobreproducción: tu producción está un {value}% por encima de la demanda." + }, + "transport": { + "waiting": "El transporte está esperando" + }, + "random_event": { + "windfall": { + "title": "Golpe de suerte inesperado", + "description": "Encuentras una cartera olvidada en la calle. Recibes {amount}." + }, + "theft": { + "title": "Robo", + "description": "Un ladrón te ha robado parte del dinero. Pérdida: {amount}." + }, + "warehouse_fire": { + "title": "Incendio en el almacén", + "description": "Un incendio ha dañado partes de tu almacén.{damagePercent}{destructionPercent}" + }, + "character_illness": { + "title": "Enfermedad", + "description": "{characterName} ha enfermado y ha perdido {healthChange} de salud." + }, + "character_recovery": { + "title": "Recuperación", + "description": "{characterName} se ha recuperado de una enfermedad y ha recuperado {healthChange} de salud." + }, + "character_accident": { + "title": "Accidente", + "description": "Un grave accidente ha herido seriamente a {characterName}. Salud: {healthChange}." + }, + "sudden_infant_death": { + "title": "Muerte súbita del lactante", + "description": "{characterName} ha fallecido de repente." + }, + "regional_storm": { + "title": "Tormenta en la región", + "description": "Una fuerte tormenta ha afectado a la región {regionName}." + }, + "regional_festival": { + "title": "Fiesta regional", + "description": "Se celebra una gran fiesta en la región {regionName}." + }, + "regional_epidemic": { + "title": "Epidemia", + "description": "Una epidemia ha afectado a la región {regionName}." + }, + "earthquake": { + "title": "Terremoto", + "description": "Un terremoto ha sacudido la región {regionName}." + }, + "taxes": { + "title": "Impuestos", + "loading": "Cargando datos de impuestos...", + "total": "Impuesto total", + "table": { + "region": "Región", + "taxPercent": "Tipo impositivo" + } + } + } + }, + "health": { + "amazing": "Excelente", + "good": "Buena", + "normal": "Normal", + "bad": "Mala", + "very_bad": "Muy mala" + }, + "create": { + "title": "Participar en el juego", + "gender": "Género", + "male": "Hombre", + "female": "Mujer", + "firstname": "Nombre", + "lastname": "Apellido", + "random": "Aleatorio", + "submit": "Participar" + }, + "overview": { + "title": "Falukant - Resumen", + "metadata": { + "title": "Datos personales", + "name": "Nombre", + "money": "Patrimonio", + "age": "Edad", + "years": "años", + "mainbranch": "Ciudad natal", + "nobleTitle": "Rango" + }, + "productions": { + "title": "Producciones" + }, + "stock": { + "title": "Almacén" + }, + "branches": { + "title": "Sucursales", + "level": { + "production": "Producción", + "store": "Venta", + "fullstack": "Producción con venta" + } + } + }, + "genderAge": { + "ageGroups": "infant:2|toddler:5|child:13|adolescence:20|adult:50|mature:70|elder:999", + "neutral": { + "child": "Kind" + }, + "male": { + "infant": "bebé", + "toddler": "niño pequeño", + "child": "niño", + "teen": "joven", + "youngAdult": "joven adulto", + "adult": "hombre", + "mature": "señor", + "elder": "anciano" + }, + "female": { + "infant": "bebé", + "toddler": "niña pequeña", + "child": "niña", + "teen": "joven", + "youngAdult": "joven adulta", + "adult": "mujer", + "mature": "señora", + "elder": "anciana" + } + }, + "titles": { + "male": { + "noncivil": "Siervo", + "civil": "Ciudadano libre", + "sir": "Señor", + "townlord": "Señor de la ciudad", + "by": "de", + "landlord": "Señor feudal", + "knight": "Caballero", + "baron": "Barón", + "count": "Conde", + "palsgrave": "Conde palatino", + "margrave": "Margrave", + "landgrave": "Landgrave", + "ruler": "Príncipe", + "elector": "Elector", + "imperial-prince": "Príncipe del Imperio", + "duke": "Duque", + "grand-duke": "Gran duque", + "prince-regent": "Príncipe regente", + "king": "Rey" + }, + "female": { + "noncivil": "Sierva", + "civil": "Ciudadana libre", + "sir": "Señora", + "townlord": "Señora de la ciudad", + "by": "de", + "landlord": "Señora feudal", + "knight": "Dama", + "baron": "Baronesa", + "count": "Condesa", + "palsgrave": "Condesa palatina", + "margrave": "Margravina", + "landgrave": "Landgravina", + "ruler": "Princesa", + "elector": "Electora", + "imperial-prince": "Princesa del Imperio", + "duke": "Duquesa", + "grand-duke": "Gran duquesa", + "prince-regent": "Princesa regente", + "king": "Reina" + } + }, + "branch": { + "title": "Filiale", + "tabs": { + "director": "Direktor", + "inventory": "Inventar", + "production": "Produktion", + "storage": "Lager", + "transport": "Transportmittel", + "taxes": "Steuern" + }, + "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", + "table": { + "region": "Region", + "taxPercent": "Steuersatz" + } + }, + "selection": { + "title": "Niederlassungsauswahl", + "selected": "Ausgewählte Niederlassung", + "placeholder": "Noch keine Niederlassung ausgewählt", + "selectedcity": "Ausgewählte Stadt", + "weather": "Aktuelles Wetter" + }, + "actions": { + "create": "Neue Niederlassung erstellen", + "upgrade": "Aktuelle Niederlassung aufwerten", + "createAlert": "Neue Niederlassung wird erstellt.", + "upgradeAlert": "Die Niederlassung mit der ID {branchId} wird aufgewertet." + }, + "director": { + "title": "Direktor-Infos", + "info": "Informationen über den Direktor der Niederlassung.", + "actions": { + "new": "Direktor einstellen" + }, + "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", + "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." + } + }, + "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", + "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" + }, + "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." + }, + "columns": { + "city": "Stadt", + "type": "Typ" + }, + "types": { + "production": "Produktion", + "store": "Verkauf", + "fullstack": "Produktion mit Verkauf" + }, + "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" + }, + "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" + }, + "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" + }, + "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.", + "table": { + "type": "Typ", + "capacity": "Kapazität", + "condition": "Zustand", + "mode": "Art", + "speed": "Geschwindigkeit", + "availableFrom": "Verfügbar ab", + "status": "Status", + "actions": "Aktionen" + }, + "modes": { + "land": "Land", + "water": "Wasser", + "unknown": "Unbekannt" + }, + "speed": { + "1": "Langsam", + "2": "Mittel", + "3": "Schnell", + "4": "Sehr schnell", + "unknown": "Unbekannt" + }, + "status": { + "inUse": "In Benutzung", + "building": "Im Bau", + "free": "Verfügbar" + }, + "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." + }, + "stocktype": { + "wood": "Holzlager", + "stone": "Steinlager", + "iron": "Eisenlager", + "field": "Feldlager" + } + }, + "family": { + "title": "Familie", + "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", + "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" + }, + "giftAffect": { + "0": "Keiner", + "1": "Sehr niedrig", + "2": "Niedrig", + "3": "Mittel", + "4": "Hoch", + "5": "Sehr hoch" + }, + "mood": "Stimmung", + "progress": "Zuneigung", + "jumpToPartyForm": "Hochzeitsfeier veranstalten (Nötig für Hochzeit und Kinder)" + }, + "relationships": { + "name": "Name" + }, + "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.", + "details": { + "title": "Kind-Details" + } + }, + "lovers": { + "title": "Liebhaber", + "none": "Keine Liebhaber vorhanden.", + "affection": "Zuneigung" + }, + "statuses": { + "wooing": "In Werbung", + "engaged": "Verlobt", + "married": "Verheiratet", + "single": "Ledig", + "widowed": "Verwitwet" + }, + "actions": { + "addSpouse": "Ehepartner hinzufügen", + "viewDetails": "Details anzeigen", + "remove": "Entfernen" + }, + "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." + }, + "success": "Das Geschenk wurde überreicht.", + "nextGiftAt": "Nächstes Geschenk ab" + } + }, + "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" + }, + "regionType": { + "city": "Stadt" + }, + "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", + "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", + "health": { + "pill": "Gesundheitsmaßnahme: Tablette", + "doctor": "Gesundheitsmaßnahme: Arztbesuch", + "witch": "Gesundheitsmaßnahme: Hexe", + "drunkOfLife": "Gesundheitsmaßnahme: Trunk des Lebens", + "barber": "Gesundheitsmaßnahme: Barbier" + } + } + }, + "newdirector": { + "title": "Neuer Direktor", + "age": "Alter", + "salary": "Gehalt", + "skills": "Wissen", + "product": "Produkt", + "knowledge": "Produktwissen", + "hire": "Einstellen", + "noProposals": "Keine Direktor-Kandidaten verfügbar." + }, + "skillKnowledges": { + "excelent": "Exzellent", + "veryhigh": "Sehr gut", + "high": "Gut", + "medium": "Mittel", + "low": "Schlecht", + "verylow": "Sehr schlecht", + "none": "Kein Wissen" + }, + "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" + }, + "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" + }, + "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" + }, + "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", + "status": { + "roofCondition": "Dach", + "wallCondition": "Wände", + "floorCondition": "Böden", + "windowCondition": "Fenster" + }, + "type": { + "backyard_room": "Hinterhofzimmer", + "wooden_house": "Holzhütte", + "straw_hut": "Strohhütte", + "family_house": "Familienhaus", + "townhouse": "Stadthaus" + } + }, + "nobility": { + "title": "Sozialstatus", + "tabs": { + "overview": "Übersicht", + "advance": "Erweitern" + }, + "nextTitle": "Nächster möglicher Titel", + "requirement": { + "money": "Vermögen mindestens {amount}", + "cost": "Kosten: {amount}", + "branches": "Mindestens {amount} Niederlassungen" + }, + "advance": { + "confirm": "Aufsteigen beantragen" + }, + "cooldown": "Du kannst frühestens wieder am {date} aufsteigen.", + "errors": { + "tooSoon": "Aufstieg zu früh.", + "unmet": "Folgende Voraussetzungen fehlen:", + "generic": "Der Aufstieg ist fehlgeschlagen." + } + }, + "reputation": { + "title": "Reputation", + "overview": { + "title": "Übersicht" + }, + "party": { + "title": "Feste", + "totalCost": "Gesamtkosten", + "order": "Fest veranstalten", + "inProgress": "Feste in Vorbereitung", + "completed": "Abgeschlossene Feste", + "newpartyview": { + "open": "Neues Fest erstellen", + "close": "Neues Fest verbergen", + "type": "Art des Festes" + }, + "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" + }, + "banquette": { + "label": "Essen", + "bread": "Brot", + "roastWithBeer": "Rostbraten mit Bier", + "poultryWithVegetablesAndWine": "Geflügel mit Gemüse und Wein", + "extensiveBuffet": "Festliches Essen" + }, + "servants": { + "label": "Ein Bediensteter pro ", + "perPersons": " Personen" + }, + "esteemedInvites": { + "label": "Eingeladene Stände" + }, + "type": "Festart", + "cost": "Kosten", + "date": "Datum" + } + }, + "party": { + "type": { + "ball": "Ball", + "wedding": "Hochzeit", + "royal feast": "Königliches Bankett", + "town fair": "Stadtmarkt" + } + }, + "church": { + "title": "Kirche", + "baptism": { + "title": "Taufen", + "table": { + "name": "Vorname", + "gender": "Geschlecht", + "age": "Alter", + "baptise": "Taufen (50)", + "newName": "Namen vorschlagen" + }, + "gender": { + "male": "Junge", + "female": "Mädchen" + }, + "success": "Das Kind wurde getauft.", + "error": "Das Kind konnte nicht getauft werden." + } + }, + "education": { + "title": "Bildung", + "self": { + "title": "Eigene Bildung" + }, + "children": { + "title": "Kinderbildung" + }, + "director": { + "title": "Direktoren-Ausbildung" + }, + "table": { + "article": "Produkt", + "knowledge": "Wissen", + "activity": "Aktivität" + }, + "learn": "Weiterbilden", + "learnAll": "In allem weiterbilden" + }, + "bank": { + "title": "Bank", + "account": { + "title": "Kontostand", + "balance": "Kontostand", + "totalDebt": "Ausstände", + "maxCredit": "Maximaler Kredit", + "availableCredit": "Verfügbarer Kredit" + }, + "credits": { + "title": "Kredite", + "none": "Derzeit hast Du keinen Kredit aufgenommen.", + "amount": "Betrag", + "remaining": "Verbleibend", + "interestRate": "Zinssatz", + "table": { + "name": "Name", + "amount": "Betrag", + "reason": "Grund", + "date": "Datum" + }, + "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" + } + } + }, + "director": { + "title": "Direktoren", + "branch": "Niederlassung", + "income": "Einkommen", + "satisfaction": "Zufriedenheit", + "name": "Name", + "age": "Alter", + "knowledge": { + "title": "Wissen", + "knowledge": "Wissen" + }, + "product": "Produkt", + "updateButton": "Gehalt aktualisieren", + "wishedIncome": "Gewünschtes Einkommen" + }, + "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", + "measures": { + "pill": "Tablette", + "doctor": "Arztbesuch", + "witch": "Hexe", + "drunkOfLife": "Trunk des Lebens", + "barber": "Barbier" + }, + "choose": "Bitte auswählen" + }, + "politics": { + "title": "Politik", + "tabs": { + "current": "Aktuelle Position", + "upcoming": "Anstehende Neuwahl-Positionen", + "elections": "Wahlen" + }, + "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" + }, + "open": { + "office": "Amt", + "region": "Region", + "date": "Datum", + "candidacy": "Kandidatur", + "none": "Keine offenen Positionen.", + "apply": "Für ausgewählte Positionen kandidieren" + }, + "upcoming": { + "office": "Amt", + "region": "Region", + "postDate": "Datum", + "none": "Keine anstehenden Positionen." + }, + "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" + }, + "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", + "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" + } + }, + "underground": { + "title": "Untergrund", + "tabs": { + "activities": "Aktivitäten", + "attacks": "Angriffe" + }, + "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" + }, + "attacks": { + "target": "Angreifer", + "date": "Datum", + "success": "Erfolg", + "none": "Keine Angriffe aufgezeichnet." + }, + "types": { + "spyin": "Spionage", + "assassin": "Attentat", + "sabotage": "Sabotage", + "corrupt_politician": "Korruption", + "rob": "Raub" + }, + "targets": { + "house": "Wohnhaus", + "storage": "Lager" + }, + "goals": { + "elect": "Amtseinsetzung", + "taxIncrease": "Steuern erhöhen", + "taxDecrease": "Steuern senken" + } + } + } +} diff --git a/frontend/src/i18n/locales/es/friends.json b/frontend/src/i18n/locales/es/friends.json new file mode 100644 index 0000000..7bc8b03 --- /dev/null +++ b/frontend/src/i18n/locales/es/friends.json @@ -0,0 +1,23 @@ +{ + "friends": { + "title": "Amigos", + "tabs": { + "existing": "Actuales", + "rejected": "Rechazadas", + "pending": "Pendientes", + "requested": "Solicitadas" + }, + "actions": { + "end": "Finalizar", + "accept": "Aceptar", + "reject": "Rechazar", + "withdraw": "Retirar" + }, + "headers": { + "name": "Nombre", + "age": "Edad", + "gender": "Género", + "actions": "Acciones" + } + } +} diff --git a/frontend/src/i18n/locales/es/general.json b/frontend/src/i18n/locales/es/general.json new file mode 100644 index 0000000..7d704ee --- /dev/null +++ b/frontend/src/i18n/locales/es/general.json @@ -0,0 +1,61 @@ +{ + "welcome": "Bienvenido a YourPart", + "imprint": { + "title": "Aviso legal", + "button": "Aviso legal" + }, + "dataPrivacy": { + "title": "Política de privacidad", + "button": "Política de privacidad" + }, + "contact": { + "title": "Contacto", + "button": "Contacto" + }, + "error-title": "Error", + "warning-title": "Advertencia", + "info-title": "Información", + "dialog": { + "contact": { + "email": "Dirección de correo electrónico", + "name": "Nombre", + "message": "Tu mensaje", + "accept": "Tu dirección de correo electrónico se guardará temporalmente en nuestro sistema. Una vez gestionada tu solicitud, se eliminará de nuevo.", + "acceptdatasave": "Acepto el almacenamiento temporal de mi dirección de correo electrónico.", + "accept2": "Sin este consentimiento no podemos responderte." + } + }, + "general": { + "datetimelong": "dd.MM.yyyy HH:mm:ss", + "loading": "Cargando...", + "back": "Atrás", + "cancel": "Cancelar", + "yes": "Sí", + "no": "No" + }, + "OK": "Ok", + "Cancel": "Cancelar", + "yes": "Sí", + "no": "No", + "message": { + "close": "Cerrar" + }, + "gender": { + "male": "Masculino", + "female": "Femenino", + "transmale": "Hombre trans", + "transfemale": "Mujer trans", + "nonbinary": "No binario" + }, + "common": { + "edit": "Editar", + "delete": "Eliminar", + "create": "Crear", + "update": "Actualizar", + "save": "Guardar", + "add": "Añadir", + "cancel": "Cancelar", + "yes": "Sí", + "no": "No" + } +} diff --git a/frontend/src/i18n/locales/es/header.json b/frontend/src/i18n/locales/es/header.json new file mode 100644 index 0000000..68905f7 --- /dev/null +++ b/frontend/src/i18n/locales/es/header.json @@ -0,0 +1,5 @@ +{ + "logo": "Logo", + "title": "YourPart", + "advertisement": "Publicidad" +} diff --git a/frontend/src/i18n/locales/es/home.json b/frontend/src/i18n/locales/es/home.json new file mode 100644 index 0000000..6431d23 --- /dev/null +++ b/frontend/src/i18n/locales/es/home.json @@ -0,0 +1,46 @@ +{ + "home": { + "betaNoticeLabel": "Aviso beta:", + "betaNoticeText": "YourPart está en desarrollo activo. Algunas funciones pueden estar incompletas, pueden faltar contenidos y puede haber cambios.", + "nologin": { + "welcome": "Bienvenido a yourPart", + "description": "yourPart es una red social donde puedes hacer amistades y conocer gente nueva. Aquí puedes mostrar tus imágenes y decidir quién puede verlas. Por supuesto, también puedes intercambiar mensajes y chatear: en grande, con muchos a la vez, o en un chat aleatorio 1 a 1. Y no lo olvides: también puedes usar la cámara.", + "introHtml": "YourPart es una plataforma en línea en crecimiento que combina funciones de comunidad, chat en tiempo real, foros, una red social con galería de imágenes y el juego de estrategia Falukant. Actualmente el sitio está en fase beta: ampliamos continuamente funciones, contenidos y estabilidad.", + "expected": { + "title": "Qué te espera", + "items": { + "chat": "Chat: Salas públicas, encuentros aleatorios (chat aleatorio) y personalización de colores.", + "social": "Red social: Perfil, amistades, galería de imágenes con configuraciones de visibilidad.", + "forum": "Foro: Crear temas, escribir mensajes, permisos de moderación (por roles).", + "falukant": "Falukant: Economía y vida cotidiana: gestionar sucursales, producir, almacenar y vender.", + "minigames": "Minijuegos: por ejemplo, niveles de Match-3 para entretenimiento rápido.", + "multilingual": "Multilingüe: Alemán/inglés; el contenido se amplía continuamente." + } + }, + "falukantShort": { + "title": "Falukant: en breve", + "text": "En Falukant diriges negocios, desarrollas conocimiento, optimizas producción y ventas, vigilas precios y reaccionas a eventos. Las notificaciones te informan en tiempo real sobre cambios de estado." + }, + "privacyBeta": { + "title": "Privacidad y estado beta", + "text": "YourPart está en beta. Puede haber cambios, interrupciones y traducciones incompletas. Valoramos la privacidad y la transparencia; habrá más información a lo largo de la beta." + }, + "getStarted": { + "title": "Participa", + "text": "Ya puedes usar la plataforma, probarla y darnos tu opinión. Regístrate mediante “{register}” o inicia el chat aleatorio sin compromiso." + }, + "randomchat": "Chat aleatorio", + "startrandomchat": "Iniciar chat aleatorio", + "login": { + "name": "Nombre de usuario", + "namedescription": "Introduce tu nombre de usuario", + "password": "Contraseña", + "passworddescription": "Introduce tu contraseña", + "lostpassword": "He olvidado la contraseña", + "register": "Registrarse en yourPart", + "stayLoggedIn": "Mantener la sesión iniciada", + "submit": "Iniciar sesión" + } + } + } +} diff --git a/frontend/src/i18n/locales/es/message.json b/frontend/src/i18n/locales/es/message.json new file mode 100644 index 0000000..3a6bef6 --- /dev/null +++ b/frontend/src/i18n/locales/es/message.json @@ -0,0 +1,8 @@ +{ + "message": { + "title": "Mensaje", + "close": "Cerrar", + "test": "La prueba funciona", + "success": "La acción se ha realizado correctamente." + } +} diff --git a/frontend/src/i18n/locales/es/minigames.json b/frontend/src/i18n/locales/es/minigames.json new file mode 100644 index 0000000..8774483 --- /dev/null +++ b/frontend/src/i18n/locales/es/minigames.json @@ -0,0 +1,73 @@ +{ + "minigames": { + "title": "Minijuegos", + "description": "¡Descubre una colección de divertidos minijuegos!", + "play": "Jugar", + "backToGames": "Volver a los juegos", + "comingSoon": { + "title": "Próximamente", + "description": "¡Más juegos emocionantes están en desarrollo!" + }, + "match3": { + "title": "Match 3 - Juwelen Kampagne", + "description": "¡Combina tres o más gemas iguales para sumar puntos!", + "campaignDescription": "¡Juega todos los niveles y consigue estrellas!", + "gameStats": "Estadísticas del juego", + "score": "Puntos", + "moves": "Movimientos", + "currentLevel": "Nivel actual", + "level": "Level", + "stars": "Estrellas", + "movesLeft": "Movimientos restantes", + "restartLevel": "Reiniciar nivel", + "pause": "Pause", + "resume": "Reanudar", + "paused": "Juego en pausa", + "levelComplete": "¡Nivel completado!", + "levelScore": "Puntuación del nivel", + "movesUsed": "Movimientos usados", + "starsEarned": "Estrellas conseguidas", + "nextLevel": "Siguiente nivel", + "campaignComplete": "¡Campaña completada!", + "totalScore": "Puntuación total", + "totalStars": "Estrellas totales", + "levelsCompleted": "Niveles completados", + "restartCampaign": "Reiniciar campaña" + }, + "taxi": { + "title": "Taxi Simulator", + "description": "¡Lleva pasajeros por la ciudad y gana dinero!", + "gameStats": "Estadísticas del juego", + "score": "Puntos", + "money": "Dinero", + "passengers": "Pasajeros", + "currentLevel": "Nivel actual", + "level": "Level", + "fuel": "Combustible", + "fuelLeft": "Combustible restante", + "restartLevel": "Reiniciar nivel", + "pause": "Pause", + "resume": "Reanudar", + "paused": "Juego en pausa", + "levelComplete": "¡Nivel completado!", + "levelScore": "Puntuación del nivel", + "moneyEarned": "Dinero ganado", + "passengersDelivered": "Pasajeros entregados", + "nextLevel": "Siguiente nivel", + "campaignComplete": "¡Campaña completada!", + "totalScore": "Puntuación total", + "totalMoney": "Dinero total", + "levelsCompleted": "Niveles completados", + "restartCampaign": "Reiniciar campaña", + "pickupPassenger": "Recoger pasajero", + "deliverPassenger": "Dejar pasajero", + "refuel": "Repostar", + "startEngine": "Arrancar motor", + "stopEngine": "Parar motor", + "crash": { + "title": "¡Accidente!", + "message": "¡Has tenido un accidente! Choques: {crashes}" + } + } + } +} diff --git a/frontend/src/i18n/locales/es/navigation.json b/frontend/src/i18n/locales/es/navigation.json new file mode 100644 index 0000000..61afaa5 --- /dev/null +++ b/frontend/src/i18n/locales/es/navigation.json @@ -0,0 +1,116 @@ +{ + "navigation": { + "home": "Inicio", + "logout": "Cerrar sesión", + "friends": "Amigos", + "socialnetwork": "Punto de encuentro", + "chats": "Chats", + "falukant": "Falukant", + "minigames": "Minijuegos", + "personal": "Personal", + "settings": "Ajustes", + "administration": "Administración", + "m-chats": { + "multiChat": "Chat multiusuario", + "randomChat": "Chat aleatorio (1 a 1)", + "eroticChat": "Chat erótico" + }, + "m-socialnetwork": { + "guestbook": "Libro de visitas", + "blog": "Blog", + "usersearch": "Búsqueda de usuarios", + "forum": "Forum", + "gallery": "Galería", + "sprachenlernen": "Aprender idiomas", + "blockedUsers": "Usuarios bloqueados", + "oneTimeInvitation": "Invitaciones de un solo uso", + "diary": "Diario", + "erotic": "Erotik", + "m-erotic": { + "pictures": "Imágenes", + "videos": "Videos" + }, + "m-sprachenlernen": { + "vocabtrainer": "Entrenador de vocabulario", + "sprachkurse": "Cursos de idiomas", + "m-vocabtrainer": { + "newLanguage": "Nuevo idioma" + } + } + }, + "m-minigames": { + "match3": "Match 3 - Juwelen", + "taxi": "Taxi Simulator" + }, + "m-personal": { + "sprachenlernen": "Aprender idiomas", + "calendar": "Calendario", + "m-sprachenlernen": { + "vocabtrainer": "Entrenador de vocabulario", + "sprachkurse": "Cursos de idiomas", + "m-vocabtrainer": { + "newLanguage": "Nuevo idioma" + } + } + }, + "m-settings": { + "homepage": "Página de inicio", + "account": "Account", + "personal": "Personal", + "view": "Apariencia", + "flirt": "Flirt", + "interests": "Interessen", + "notifications": "Notificaciones", + "sexuality": "Sexualidad" + }, + "m-administration": { + "contactrequests": "Solicitudes de contacto", + "users": "Usuarios", + "userrights": "Permisos de usuario", + "m-users": { + "userlist": "Lista de usuarios", + "userstatistics": "Estadísticas de usuarios", + "userrights": "Permisos de usuario" + }, + "forum": "Forum", + "interests": "Interessen", + "falukant": "Falukant", + "m-falukant": { + "logentries": "Entradas de registro", + "edituser": "Editar usuario", + "database": "Datenbank", + "mapEditor": "Editor de mapas", + "createNPC": "Crear NPCs" + }, + "minigames": "Minispiele", + "m-minigames": { + "match3": "Match3 Level", + "taxiTools": "Taxi-Tools" + }, + "chatrooms": "Salas de chat", + "servicesStatus": "Service-Status" + }, + "m-friends": { + "manageFriends": "Gestionar amigos", + "chat": "Chatear", + "profile": "Profil" + }, + "m-falukant": { + "create": "Crear", + "overview": "Resumen", + "towns": "Sucursales", + "factory": "Producción", + "family": "Familia", + "house": "Haus", + "darknet": "Untergrund", + "reputation": "Reputation", + "moneyhistory": "Flujo de dinero", + "nobility": "Estatus social", + "politics": "Politik", + "education": "Bildung", + "health": "Gesundheit", + "bank": "Bank", + "church": "Kirche" + } + } +} diff --git a/frontend/src/i18n/locales/es/passwordReset.json b/frontend/src/i18n/locales/es/passwordReset.json new file mode 100644 index 0000000..8e89ce5 --- /dev/null +++ b/frontend/src/i18n/locales/es/passwordReset.json @@ -0,0 +1,9 @@ +{ + "passwordReset": { + "title": "Restablecer contraseña", + "email": "E-Mail", + "reset": "Restablecer", + "success": "Si el correo electrónico existe, se ha enviado una guía para restablecer la contraseña.", + "failure": "No se pudo restablecer la contraseña. Inténtalo de nuevo más tarde." + } +} diff --git a/frontend/src/i18n/locales/es/personal.json b/frontend/src/i18n/locales/es/personal.json new file mode 100644 index 0000000..4c49be1 --- /dev/null +++ b/frontend/src/i18n/locales/es/personal.json @@ -0,0 +1,79 @@ +{ + "personal": { + "calendar": { + "title": "Calendario", + "today": "Hoy", + "newEntry": "Nueva entrada", + "editEntry": "Editar entrada", + "selectedDays": "{count} días seleccionados", + "createEventForSelection": "Crear evento", + "clearSelection": "Borrar selección", + "allDay": "Todo el día", + "views": { + "month": "Mes", + "week": "Semana", + "workweek": "Semana laboral", + "day": "Día" + }, + "weekdays": { + "mon": "Lu", + "tue": "Ma", + "wed": "Mi", + "thu": "Ju", + "fri": "Vi", + "sat": "Sa", + "sun": "Do" + }, + "weekdaysFull": { + "mon": "Lunes", + "tue": "Martes", + "wed": "Miércoles", + "thu": "Jueves", + "fri": "Viernes", + "sat": "Sábado", + "sun": "Domingo" + }, + "months": { + "jan": "Enero", + "feb": "Febrero", + "mar": "Marzo", + "apr": "Abril", + "may": "Mayo", + "jun": "Junio", + "jul": "Julio", + "aug": "Agosto", + "sep": "Septiembre", + "oct": "Octubre", + "nov": "Noviembre", + "dec": "Diciembre" + }, + "categories": { + "personal": "Personal", + "work": "Trabajo", + "family": "Familia", + "health": "Salud", + "birthday": "Cumpleaños", + "holiday": "Vacaciones", + "reminder": "Recordatorio", + "other": "Otros" + }, + "form": { + "title": "Título", + "titlePlaceholder": "Introduce un título...", + "category": "Categoría", + "startDate": "Fecha de inicio", + "startTime": "Hora de inicio", + "endDate": "Fecha de fin", + "endTime": "Hora de fin", + "allDay": "Todo el día", + "description": "Descripción", + "descriptionPlaceholder": "Descripción opcional...", + "save": "Guardar", + "cancel": "Cancelar", + "delete": "Eliminar", + "saveError": "Error al guardar el evento", + "deleteError": "Error al eliminar el evento" + } + } + } +} diff --git a/frontend/src/i18n/locales/es/register.json b/frontend/src/i18n/locales/es/register.json new file mode 100644 index 0000000..c3e17f3 --- /dev/null +++ b/frontend/src/i18n/locales/es/register.json @@ -0,0 +1,21 @@ +{ + "register": { + "title": "Registrarse", + "email": "Dirección de correo electrónico", + "username": "Nombre de usuario", + "password": "Contraseña", + "repeatPassword": "Repetir contraseña", + "language": "Idioma", + "languages": { + "en": "Inglés", + "de": "Alemán" + }, + "register": "Registrarse", + "close": "Cerrar", + "failure": "Se ha producido un error.", + "success": "Te has registrado correctamente. Revisa tu correo electrónico para activar tu cuenta.", + "passwordMismatch": "Las contraseñas no coinciden.", + "emailinuse": "La dirección de correo electrónico ya está en uso.", + "usernameinuse": "El nombre de usuario no está disponible." + } +} diff --git a/frontend/src/i18n/locales/es/settings.json b/frontend/src/i18n/locales/es/settings.json new file mode 100644 index 0000000..a621b4c --- /dev/null +++ b/frontend/src/i18n/locales/es/settings.json @@ -0,0 +1,180 @@ +{ + "settings": { + "personal": { + "title": "Datos personales", + "label": { + "language": "Idioma", + "birthdate": "Fecha de nacimiento", + "gender": "Género", + "town": "Ciudad", + "zip": "Código postal", + "eyecolor": "Color de ojos", + "haircolor": "Color de pelo", + "hairlength": "Longitud del pelo", + "skincolor": "Color de piel", + "freckles": "Pecas", + "weight": "Peso", + "bodyheight": "Altura", + "piercings": "Piercings", + "tattoos": "Tatuajes", + "sexualpreference": "Orientación", + "pubichair": "Vello púbico", + "penislength": "Longitud del pene", + "brasize": "Talla de sujetador", + "willChildren": "Quiero hijos", + "smokes": "Fuma", + "drinks": "Bebe alcohol", + "hasChildren": "Tengo hijos", + "interestedInGender": "Interesado/a en" + }, + "tooltip": { + "language": "Idioma", + "birthdate": "Fecha de nacimiento", + "gender": "Género", + "town": "Ciudad", + "zip": "Código postal", + "eyecolor": "Color de ojos", + "haircolor": "Color de pelo", + "hairlength": "Longitud del pelo", + "skincolor": "Color de piel", + "freckles": "Pecas", + "weight": "Peso", + "bodyheight": "Altura", + "piercings": "Piercings", + "tattoos": "Tatuajes", + "sexualpreference": "Orientación", + "pubichair": "Vello púbico", + "penislength": "Longitud del pene", + "brasize": "Talla de sujetador" + }, + "gender": { + "male": "Masculino", + "female": "Femenino", + "transmale": "Hombre trans", + "transfemale": "Mujer trans", + "nonbinary": "No binario" + }, + "language": { + "de": "Alemán", + "en": "Inglés" + }, + "eyecolor": { + "blue": "Azul", + "green": "Verde", + "brown": "Marrón", + "black": "Negro", + "grey": "Gris", + "hazel": "Avellana", + "amber": "Ámbar", + "red": "Rojo", + "other": "Otro" + }, + "haircolor": { + "black": "Negro", + "brown": "Castaño", + "blonde": "Rubio", + "red": "Rojo", + "grey": "Gris", + "white": "Blanco", + "other": "Otro" + }, + "hairlength": { + "short": "Corto", + "medium": "Medio", + "long": "Largo", + "bald": "Calvo", + "other": "Otro" + }, + "skincolor": { + "light": "Clara", + "medium": "Media", + "dark": "Oscura", + "other": "Otra" + }, + "freckles": { + "much": "Muchas", + "medium": "Medias", + "less": "Pocas", + "none": "Ninguna" + }, + "sexualpreference": { + "straight": "Heterosexual", + "gay": "Homosexual", + "bi": "Bisexual", + "asexual": "Asexual", + "pan": "Pansexual" + }, + "pubichair": { + "none": "Ninguno", + "short": "Corto", + "medium": "Medio", + "long": "Largo", + "hairy": "Natural", + "waxed": "Depilación con cera", + "landingstrip": "Franja", + "bikinizone": "Solo zona bikini", + "other": "Otro" + }, + "interestedInGender": { + "male": "Hombres", + "female": "Mujeres" + }, + "smokes": { + "often": "A menudo", + "socially": "Socialmente", + "daily": "A diario", + "never": "Nunca" + }, + "drinks": { + "often": "A menudo", + "socially": "Socialmente", + "daily": "A diario", + "never": "Nunca" + } + }, + "view": { + "title": "Apariencia" + }, + "sexuality": { + "title": "Sexualidad" + }, + "account": { + "title": "Account", + "username": "Nombre de usuario", + "email": "Dirección de correo electrónico", + "newpassword": "Contraseña", + "newpasswordretype": "Repetir contraseña", + "deleteAccount": "Eliminar cuenta", + "language": "Idioma", + "showinsearch": "Mostrar en búsquedas de usuarios", + "changeaction": "Actualizar datos de usuario", + "oldpassword": "Contraseña anterior (obligatoria)" + }, + "interests": { + "title": "Intereses", + "new": "Nuevo interés", + "add": "Añadir", + "added": "El nuevo interés se ha añadido y está en revisión. Hasta finalizar, no será visible en la lista de intereses.", + "adderror": "Se produjo un error al añadir el interés.", + "errorsetinterest": "No se pudo asignar el interés." + }, + "visibility": { + "Invisible": "No mostrar", + "OnlyFriends": "Solo amigos", + "FriendsAndAdults": "Amigos y adultos", + "AdultsOnly": "Solo adultos", + "All": "Mostrar a todos" + }, + "flirt": { + "title": "Flirt" + }, + "immutable": { + "tooltip": "Este campo no se puede modificar. Para cambios, contacta con soporte.", + "supportContact": "Contactar con soporte", + "supportMessage": { + "general": "Hola,\n\nquiero solicitar un cambio en mis datos de perfil que no se pueden modificar.\n\nPor favor, contactad conmigo para más detalles.\n\nUn saludo", + "specific": "Hola,\n\nquiero solicitar un cambio en los siguientes datos de perfil que no se pueden modificar: {fields}\n\nPor favor, contactad conmigo para más detalles.\n\nUn saludo" + } + } + } +} diff --git a/frontend/src/i18n/locales/es/socialnetwork.json b/frontend/src/i18n/locales/es/socialnetwork.json new file mode 100644 index 0000000..f7f71cc --- /dev/null +++ b/frontend/src/i18n/locales/es/socialnetwork.json @@ -0,0 +1,415 @@ +{ + "socialnetwork": { + "usersearch": { + "title": "Búsqueda de usuarios", + "username": "Nombre de usuario", + "age_from": "Edad desde", + "age_to": "bis", + "gender": "Género", + "search_button": "Buscar", + "no_results": "No se han encontrado resultados", + "results_title": "Resultados de la búsqueda:", + "result": { + "nick": "Apodo", + "gender": "Género", + "age": "Edad" + } + }, + "profile": { + "pretitle": "Cargando datos. Por favor espera...", + "error_title": "Usuario no encontrado", + "title": "Profil von ", + "tab": { + "general": "General", + "sexuality": "Sexualidad", + "images": "Galería", + "guestbook": "Libro de visitas" + }, + "values": { + "bool": { + "true": "Sí", + "false": "No" + }, + "smokes": { + "never": "Nunca", + "socially": "Socialmente", + "often": "A menudo", + "daily": "A diario" + }, + "drinks": { + "never": "Nunca", + "socially": "Socialmente", + "often": "A menudo", + "daily": "A diario" + }, + "interestedInGender": { + "male": "hombres", + "female": "mujeres" + }, + "sexualpreference": { + "straight": "Heterosexual", + "gay": "Homosexual", + "bi": "Bisexual", + "pan": "Pansexual", + "asexual": "Asexual" + }, + "pubichair": { + "none": "Ninguno", + "short": "Corto", + "medium": "Medio", + "long": "Largo", + "hairy": "Natural", + "waxed": "Depilado", + "landingstrip": "Franja", + "other": "Otro", + "bikinizone": "Zona bikini" + }, + "gender": { + "male": "Masculino", + "female": "Femenino", + "transmale": "Hombre trans", + "transfemale": "Mujer trans", + "nonbinary": "No binario" + }, + "language": { + "de": "Alemán", + "en": "Inglés" + }, + "eyecolor": { + "blue": "Azul", + "green": "Verde", + "brown": "Marrón", + "black": "Negro", + "grey": "Gris", + "hazel": "Avellana", + "amber": "Ámbar", + "red": "Rojo", + "other": "Otro" + }, + "haircolor": { + "black": "Negro", + "brown": "Castaño", + "blonde": "Rubio", + "red": "Rojo", + "grey": "Gris", + "white": "Blanco", + "other": "Otro" + }, + "hairlength": { + "short": "Corto", + "medium": "Medio", + "long": "Largo", + "bald": "Calvo", + "other": "Otro" + }, + "skincolor": { + "light": "Clara", + "medium": "Media", + "dark": "Oscura", + "other": "Otra" + }, + "freckles": { + "much": "Muchas", + "medium": "Medias", + "less": "Pocas", + "none": "Ninguna" + } + }, + "guestbook": { + "showInput": "Mostrar nueva entrada", + "hideInput": "Ocultar nueva entrada", + "imageUpload": "Imagen", + "submit": "Enviar entrada", + "noEntries": "No se han encontrado entradas" + }, + "interestedInGender": "Interesado/a en", + "hasChildren": "Tiene hijos", + "smokes": "Fuma", + "drinks": "Alcohol", + "willChildren": "Quiere hijos", + "sexualpreference": "Orientación sexual", + "pubichair": "Vello púbico", + "penislength": "Longitud del pene", + "brasize": "Talla de sujetador", + "piercings": "Piercings", + "tattoos": "Tatuajes", + "language": "Idioma", + "gender": "Género", + "eyecolor": "Color de ojos", + "haircolor": "Color de pelo", + "hairlength": "Longitud del pelo", + "freckles": "Pecas", + "skincolor": "Color de piel", + "birthdate": "Fecha de nacimiento", + "age": "Edad", + "town": "Ciudad", + "bodyheight": "Altura", + "weight": "Peso" + }, + "gallery": { + "title": "Galería", + "folders": "Carpetas", + "create_folder": "Crear carpeta", + "upload": { + "title": "Subir imagen", + "image_title": "Título", + "image_file": "Archivo", + "visibility": "Visible para", + "upload_button": "Subir", + "selectvisibility": "Selecciona" + }, + "images": "Imágenes", + "visibility": { + "everyone": "Todos", + "friends": "Amigos", + "adults": "Adultos", + "friends-and-adults": "Amigos y adultos", + "selected-users": "Usuarios seleccionados", + "none": "Nadie" + }, + "create_folder_dialog": { + "title": "Crear carpeta", + "parent_folder": "Se crea en", + "folder_title": "Nombre de la carpeta", + "visibility": "Visible para", + "select_visibility": "Selecciona" + }, + "noimages": "Actualmente no hay imágenes en esta carpeta", + "imagedialog": { + "image_title": "Título", + "edit_visibility": "Visible para", + "save_changes": "Guardar cambios", + "close": "Cerrar", + "edit_visibility_placeholder": "Selecciona" + }, + "delete_folder_confirmation_title": "Eliminar carpeta", + "delete_folder_confirmation_message": "¿De verdad quieres eliminar la carpeta '%%folderName%%'?", + "edit_image_dialog": { + "title": "Editar datos de la imagen" + }, + "show_image_dialog": { + "title": "Imagen" + } + }, + "guestbook": { + "title": "Libro de visitas", + "prevPage": "Atrás", + "nextPage": "Siguiente", + "page": "Página" + }, + "diary": { + "title": "Diario", + "noEntries": "Aún no has escrito ninguna entrada en el diario.", + "newEntry": "Nueva entrada", + "editEntry": "Editar entrada", + "save": "Guardar", + "update": "Actualizar", + "cancel": "Cancelar", + "edit": "Editar", + "delete": "Eliminar", + "confirmDelete": "¿Seguro que quieres eliminar la entrada?", + "prevPage": "Atrás", + "nextPage": "Siguiente", + "page": "Página" + }, + "forum": { + "title": "Forum", + "showNewTopic": "Crear nuevo tema", + "hideNewTopic": "Cancelar creación", + "noTitles": "No hay temas", + "topic": "Tema", + "createNewTopic": "Crear tema", + "createdBy": "Creado por", + "createdAt": "Creado el", + "reactions": "Respuestas", + "lastReaction": "Última respuesta de", + "pagination": { + "first": "Primera página", + "previous": "Página anterior", + "next": "Página siguiente", + "last": "Última página", + "page": "Seite <> von <>" + }, + "createNewMesssage": "Enviar respuesta" + }, + "friendship": { + "error": { + "alreadyexists": "La solicitud de amistad ya existe" + }, + "state": { + "none": "No sois amigos", + "waiting": "Solicitud enviada, aún sin respuesta", + "open": "Solicitud recibida", + "denied": "Solicitud rechazada", + "withdrawn": "Solicitud retirada", + "accepted": "Amigos" + }, + "added": "Has enviado una solicitud de amistad.", + "withdrawn": "Has retirado tu solicitud de amistad.", + "denied": "Has rechazado la solicitud de amistad.", + "accepted": "Se ha aceptado la amistad." + }, + "vocab": { + "title": "Entrenador de vocabulario", + "description": "Crea idiomas (o suscríbete) y compártelos con tus amigos.", + "newLanguage": "Nuevo idioma", + "newLanguageTitle": "Crear nuevo idioma", + "languageName": "Nombre del idioma", + "create": "Crear", + "saving": "Guardando...", + "created": "El idioma se ha creado.", + "createdTitle": "Entrenador de vocabulario", + "createdMessage": "El idioma se ha creado. El menú se actualizará.", + "createError": "No se pudo crear el idioma.", + "openLanguage": "Abrir", + "none": "Aún no has creado ni te has suscrito a ningún idioma.", + "owner": "Propio", + "subscribed": "Suscrito", + "languageTitle": "Entrenador de vocabulario: {name}", + "notFound": "Idioma no encontrado o sin acceso.", + "shareCode": "Código para compartir", + "shareHint": "Puedes compartir este código con tus amigos para que se suscriban al idioma.", + "subscribeByCode": "Suscribirse con código", + "subscribeTitle": "Suscribirse a un idioma", + "subscribeHint": "Introduce el código para compartir que te ha dado un amigo.", + "subscribe": "Suscribirse", + "subscribeSuccess": "Suscripción correcta. El menú se actualizará.", + "subscribeError": "Fallo en la suscripción. Código inválido o sin acceso.", + "trainerPlaceholder": "Las funciones del entrenador (vocabulario/pruebas) serán el siguiente paso.", + "chapters": "Capítulos", + "newChapter": "Nuevo capítulo", + "createChapter": "Crear capítulo", + "createChapterError": "No se pudo crear el capítulo.", + "noChapters": "Aún no hay capítulos.", + "chapterTitle": "Capítulo: {title}", + "addVocab": "Añadir vocabulario", + "learningWord": "Idioma de aprendizaje", + "referenceWord": "Referencia", + "add": "Añadir", + "addVocabError": "No se pudo añadir el vocabulario.", + "noVocabs": "Aún no hay vocabulario en este capítulo.", + "practice": { + "open": "Practicar", + "title": "Practicar vocabulario", + "allVocabs": "Todo el vocabulario", + "simple": "Práctica simple", + "noPool": "No hay vocabulario para practicar.", + "dirLearningToRef": "Aprendizaje → Referencia", + "dirRefToLearning": "Referencia → Aprendizaje", + "check": "Comprobar", + "next": "Siguiente", + "skip": "Saltar", + "correct": "¡Correcto!", + "wrong": "Incorrecto.", + "acceptable": "Traducciones correctas posibles:", + "stats": "Estadísticas", + "success": "Éxito", + "fail": "Fallo" + }, + "search": { + "open": "Buscar", + "title": "Buscar vocabulario", + "term": "Término de búsqueda", + "motherTongue": "Lengua materna", + "learningLanguage": "Idioma de aprendizaje", + "lesson": "Lección", + "search": "Buscar", + "noResults": "Sin resultados.", + "error": "La búsqueda ha fallado." + }, + "courses": { + "title": "Cursos de idiomas", + "create": "Crear curso", + "myCourses": "Mis cursos", + "allCourses": "Todos los cursos", + "none": "No se han encontrado cursos.", + "owner": "Propietario", + "enrolled": "Inscrito", + "public": "Público", + "difficulty": "Dificultad", + "lessons": "Lecciones", + "enroll": "Inscribirse", + "continue": "Continuar", + "edit": "Editar", + "addLesson": "Añadir lección", + "completed": "Completado", + "score": "Puntuación", + "review": "Repasar", + "start": "Empezar", + "noLessons": "Este curso aún no tiene lecciones.", + "lessonNumber": "Número de lección", + "chapter": "Capítulo", + "selectChapter": "Seleccionar capítulo", + "selectLanguage": "Seleccionar idioma", + "confirmDelete": "¿Eliminar la lección?", + "titleLabel": "Título", + "descriptionLabel": "Descripción", + "languageLabel": "Idioma", + "findByCode": "Buscar curso por código", + "shareCode": "Share-Code", + "searchPlaceholder": "Buscar curso...", + "allLanguages": "Todos los idiomas", + "targetLanguage": "Idioma objetivo", + "nativeLanguage": "Lengua materna", + "allNativeLanguages": "Todas las lenguas maternas", + "myNativeLanguage": "Mi lengua materna", + "forAllLanguages": "Para todos los idiomas", + "optional": "Opcional", + "invalidCode": "Código inválido", + "courseNotFound": "Curso no encontrado", + "grammarExercises": "Prueba de gramática", + "noExercises": "No hay prueba disponible", + "enterAnswer": "Introduce la respuesta", + "checkAnswer": "Comprobar respuesta", + "correct": "¡Correcto!", + "wrong": "Incorrecto", + "explanation": "Explicación", + "learn": "Aprender", + "exercises": "Prueba del capítulo", + "learnVocabulary": "Aprender vocabulario", + "lessonDescription": "Descripción de la lección", + "culturalNotes": "Notas culturales", + "grammarExplanations": "Explicaciones gramaticales", + "importantVocab": "Términos importantes", + "vocabInfoText": "Estos términos se usarán en la prueba. Apréndelos aquí antes de pasar a la prueba del capítulo.", + "noVocabInfo": "Lee la descripción de arriba y las explicaciones de la prueba para aprender los términos más importantes.", + "vocabTrainer": "Entrenador de vocabulario", + "vocabTrainerDescription": "Practica los términos clave de esta lección de forma interactiva.", + "startVocabTrainer": "Iniciar entrenador", + "stopTrainer": "Detener entrenador", + "translateTo": "Traduce al alemán", + "translateFrom": "Traduce desde bisaya", + "next": "Siguiente", + "totalAttempts": "Intentos", + "successRate": "Tasa de acierto", + "modeMultipleChoice": "Multiple Choice", + "modeTyping": "Texteingabe", + "currentLesson": "Lección actual", + "mixedReview": "Repaso", + "lessonCompleted": "¡Lección completada!", + "goToNextLesson": "¿Pasar a la siguiente lección?", + "allLessonsCompleted": "¡Todas las lecciones completadas!", + "startExercises": "Ir a la prueba del capítulo", + "correctAnswer": "Respuesta correcta", + "alternatives": "Respuestas alternativas", + "notStarted": "No empezado", + "continueCurrentLesson": "Continuar lección actual", + "previousLessonRequired": "Primero completa la lección anterior", + "lessonNumberShort": "#", + "readingAloudInstruction": "Lee el texto en voz alta. Haz clic en 'Iniciar grabación' y comienza a hablar.", + "speakingFromMemoryInstruction": "Habla de memoria. Usa las palabras clave mostradas.", + "startRecording": "Iniciar grabación", + "stopRecording": "Detener grabación", + "startSpeaking": "Empezar a hablar", + "recording": "Grabando", + "listening": "Escuchando...", + "recordingStopped": "Grabación finalizada", + "recordingError": "Error de grabación", + "recognizedText": "Texto reconocido", + "speechRecognitionNotSupported": "El reconocimiento de voz no es compatible con este navegador. Usa Chrome o Edge.", + "keywords": "Palabras clave", + "switchBackToMultipleChoice": "Volver a opción múltiple" + } + } + } +}