Files
oikos/public/locales/es.json
T
Rafael Foster 22ec13e559 feat: add housekeeping module for household staff management
* Adding flexible reminder options to birthdays

* Fix database migration merge conflict

* Truncate calendar popup descriptions

* Log app version on backend startup

* Add host-mounted data and backup folders

* feat: add housekeeping module

* fix: align housekeeping UI and add task creation

* refactor: rebuild housekeeping experience

* feat: support multiple housekeeping staff

* feat: integrate housekeeping visits with calendar

* feat: refine housekeeping visits and payments

* feat: add housekeeping staff visit logs

* feat: add housekeeping receipts and document folders

* feat: localize housekeeping folders and chores

* feat: refine housekeeping tabs and document folders

* fix: sync housekeeping tab active state

* feat: use configured app name in onboarding and manifest
2026-05-08 20:14:51 +02:00

1463 lines
59 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"common": {
"save": "Guardar",
"cancel": "Cancelar",
"delete": "Eliminar",
"edit": "Editar",
"close": "Cerrar",
"create": "Crear",
"add": "Añadir",
"back": "Atrás",
"next": "Siguiente",
"loading": "Cargando…",
"saving": "Guardando…",
"required": "Este campo es obligatorio.",
"error": "Error",
"allFieldsRequired": "Por favor, rellena todos los campos.",
"today": "Hoy",
"tomorrow": "Mañana",
"skipToContent": "Saltar al contenido",
"reload": "Recargar",
"errorOccurred": "Algo ha salido mal.",
"unexpectedError": "Se ha producido un error inesperado.",
"errorGeneric": "Se ha producido un error.",
"updateAvailable": "Actualización disponible - recarga la página para obtener la última versión.",
"titleRequired": "El título es obligatorio",
"nameRequired": "El nombre es obligatorio",
"contentRequired": "El contenido es obligatorio",
"all": "Todo",
"unknownError": "Error desconocido",
"confirm": "Confirmar",
"undo": "Deshacer",
"reset": "Restaurar original",
"errorOffline": "Sin conexión a internet. Por favor, revisa tu red.",
"errorForbidden": "Acceso denegado. Por favor, inicia sesión de nuevo.",
"errorNotFound": "No se encontró el registro.",
"errorServer": "Error del servidor. Por favor, inténtalo más tarde.",
"errorTimeout": "La conexión tardó demasiado. Por favor, inténtalo de nuevo."
},
"nav": {
"dashboard": "Inicio",
"tasks": "Tareas",
"calendar": "Calendario",
"meals": "Comidas",
"shopping": "Compras",
"notes": "Notas",
"contacts": "Contactos",
"birthdays": "Cumpleaños",
"budget": "Presupuesto",
"settings": "Ajustes",
"main": "Navegación principal",
"navigation": "Navegación",
"quickActions": "Acciones rápidas",
"recipes": "Recetas",
"more": "Más",
"documents": "Documentos",
"kitchen": "Cocina",
"search": "Buscar",
"housekeeping": "Limpieza"
},
"dashboard": {
"title": "Inicio",
"greetingMorning": "Buenos días, {{name}}",
"greetingDay": "Buenas tardes, {{name}}",
"greetingEvening": "Buenas noches, {{name}}",
"allDone": "Todo listo",
"noEvents": "Sin eventos",
"noPinnedNotes": "Sin notas fijadas",
"todayMeals": "Comidas de hoy",
"allLink": "Todo",
"weekLink": "Semana",
"urgentTasksChip": "{{count}} tarea por vencer",
"urgentTasksChipPlural": "{{count}} tareas por vencer",
"eventsChip": "{{count}} evento hoy",
"eventsChipPlural": "{{count}} eventos hoy",
"todayMealChip": "Hoy: {{title}}",
"loadError": "No se pudo cargar el panel completamente.",
"weatherRefresh": "Actualizar tiempo",
"weatherRefreshTitle": "Actualizar",
"weatherUpdated": "Tiempo actualizado",
"weatherFeelsLike": "Sensación {{temp}}° · {{humidity}}% · Viento {{wind}} {{windUnit}}",
"fabTaskLabel": "Añadir tarea",
"fabCalendarLabel": "Añadir evento",
"fabShoppingLabel": "Añadir compra",
"fabNoteLabel": "Añadir nota",
"fabTask": "Tarea",
"fabCalendar": "Evento",
"fabShopping": "Compra",
"fabNote": "Nota",
"overdue": "Vencida",
"dueSoon": "Vence hoy",
"dueToday": "Vence hoy",
"dueTomorrow": "Vence mañana",
"allDay": "Todo el día",
"shoppingMore": "+{{count}} más",
"weather": "Clima",
"familyMembers": "Miembros de la familia",
"participantsAdded": "participantes añadidos",
"upcomingBirthdays": "Próximos cumpleaños",
"noBirthdays": "Aún no hay cumpleaños",
"daysLeft": "{{count}} días",
"budgetOverview": "Resumen del presupuesto",
"monthlyIncome": "Ingresos",
"monthlyExpenses": "Gastos",
"monthlyBalance": "Saldo",
"savingsRate": "Tasa de ahorro",
"topExpense": "Mayor gasto",
"budgetEntries": "Movimientos",
"noBudgetData": "No hay datos de presupuesto este mes.",
"customize": "Personalizar",
"customizeTitle": "Personalizar widgets",
"customizeReset": "Restablecer",
"customizeSaved": "Panel guardado",
"customizeMoveUp": "Subir",
"customizeMoveDown": "Bajar",
"overdueTasksChip": "{{count}} tarea vencida",
"overdueTasksChipPlural": "{{count}} tareas vencidas",
"customizeManage": "Widgets",
"customizeExit": "Salir de personalización",
"customizeDrag": "Arrastrar widget",
"customizeSize": "Tamaño",
"customizeSizeFor": "Tamaño de {{widget}}",
"customizeHide": "Ocultar {{widget}}",
"widgetSizeTiny": "Pequeño (1×1)",
"widgetSizeNarrow": "Estrecho (2×1)",
"widgetSizeStandard": "Estándar (2×2)",
"widgetSizeLarge": "Grande (3×2)",
"widgetSizeFull": "Completo (4×2)"
},
"tasks": {
"title": "Tareas",
"newTask": "Nueva tarea",
"editTask": "Editar tarea",
"emptyTitle": "Sin tareas - ¿todo hecho?",
"emptyDescription": "Crea nuevas tareas con el botón +.",
"titleLabel": "Título *",
"titlePlaceholder": "¿Qué hay que hacer?",
"descriptionLabel": "Nota",
"descriptionPlaceholder": "Detalles opcionales…",
"priorityLabel": "Prioridad",
"categoryLabel": "Categoría",
"dueDateLabel": "Fecha límite",
"dueTimeLabel": "Hora",
"assignedLabel": "Asignado a",
"assignedNobody": "- Nadie -",
"statusLabel": "Estado",
"priorityUrgent": "Urgente",
"priorityHigh": "Alta",
"priorityMedium": "Media",
"priorityLow": "Baja",
"priorityNone": "Ninguna",
"statusOpen": "Abierta",
"statusInProgress": "En progreso",
"statusDone": "Completada",
"categoryHousehold": "Hogar",
"categorySchool": "Escuela",
"categoryShopping": "Compras",
"categoryRepair": "Reparación",
"categoryHealth": "Salud",
"categoryFinance": "Finanzas",
"categoryLeisure": "Ocio",
"categoryMisc": "Otros",
"overdue": "Vencida",
"overdueDay": "{{count}}d de retraso",
"dueToday": "Vence hoy",
"dueTomorrow": "Vence mañana",
"groupOverdue": "Vencidas",
"groupToday": "Hoy",
"groupThisWeek": "Esta semana",
"groupNextWeek": "Próxima semana",
"groupLater": "Más tarde",
"groupNoDate": "Sin fecha",
"markDone": "Marcar {{title}} como completada",
"markOpen": "Marcar {{title}} como pendiente",
"editButton": "Editar tarea",
"swipeOpen": "Abrir",
"swipeDone": "Completar",
"swipeEdit": "Editar",
"subtaskAdd": "+ Añadir subtarea",
"subtaskToggle": "Mostrar subtareas",
"subtaskMarkDone": "Marcar {{title}} como completada",
"deleteConfirm": "¿Eliminar tarea y todas sus subtareas?",
"savedToast": "Tarea guardada.",
"createdToast": "Tarea creada.",
"deletedToast": "Tarea eliminada.",
"loadError": "No se pudo cargar la tarea.",
"subtaskPrompt": "Subtarea:",
"kanbanOpen": "Abierta",
"kanbanInProgress": "En progreso",
"kanbanDone": "Completada",
"kanbanMoveToInProgress": "Mover a en progreso",
"kanbanMoveToDone": "Marcar como completada",
"kanbanMoveToOpen": "Reabrir",
"recurring": "Recurrente",
"listView": "Vista de lista",
"kanbanView": "Vista Kanban",
"filterBtn": "Filtrar",
"filterClearAll": "Borrar todos los filtros",
"filterGroupPerson": "Persona",
"filterGroupPriority": "Prioridad",
"filterGroupStatus": "Estado",
"swipedDoneToast": "Marcado como hecho.",
"swipedOpenToast": "Marcado como abierto.",
"statusArchived": "Archivado",
"archiveButton": "Archivar tarea",
"archivedToast": "Tarea archivada.",
"kanbanArchived": "Archivado",
"reminderNeedsDueDate": "Establece una fecha de vencimiento para activar los recordatorios de tareas.",
"emptyAction": "Crear tarea",
"navLabelOverdue": "Tareas, {{count}} vencidas",
"bulkArchive": "Archive",
"bulkArchived": "Tasks archived.",
"bulkDelete": "Delete",
"bulkDeleteConfirm": "Delete {{count}} tasks permanently?",
"bulkDeleted": "Tasks deleted.",
"bulkMarkDone": "Mark done",
"bulkMarkOpen": "Mark open",
"bulkSelect": "Bulk select",
"bulkSelectedCount": "{{count}} selected",
"bulkStatusChanged": "Status changed.",
"selectTask": "Select task"
},
"shopping": {
"title": "Compras",
"noLists": "Sin listas",
"noListsDescription": "Crea una lista con el botón +.",
"emptyList": "La lista está vacía",
"emptyListDescription": "Añade artículos en el campo de arriba.",
"newListPrompt": "Nombre de la nueva lista:",
"newListButton": "Crear nueva lista",
"renameListPrompt": "Nuevo nombre de lista:",
"deleteListConfirm": "¿Eliminar lista «{{name}}» y todos sus artículos?",
"deletedListToast": "Lista eliminada.",
"itemDeletedToast": "«{{name}}» eliminado.",
"itemsRemovedToast": "{{count}} artículos eliminados.",
"clearChecked": "Eliminar marcados ({{count}})",
"itemNamePlaceholder": "Añadir artículo…",
"itemQtyPlaceholder": "Cantidad",
"itemNameLabel": "Nombre del artículo",
"itemQtyLabel": "Cantidad",
"categoryLabel": "Categoría",
"addItemLabel": "Añadir artículo",
"renameListLabel": "Renombrar lista",
"deleteListLabel": "Eliminar lista",
"swipeBack": "Atrás",
"swipeCheck": "Marcar",
"swipeDelete": "Eliminar",
"markDoneLabel": "Marcar {{name}}",
"markUndoneLabel": "Desmarcar {{name}}",
"deleteItemLabel": "Eliminar {{name}}",
"listsLoadError": "No se pudieron cargar las listas.",
"itemsLoadError": "No se pudieron cargar los artículos.",
"catFruitVeg": "Frutas y verduras",
"catBakery": "Panadería",
"catDairy": "Lácteos",
"catMeatFish": "Carne y pescado",
"catFrozen": "Congelados",
"catDrinks": "Bebidas",
"catHousehold": "Hogar",
"catDrugstore": "Droguería",
"catMisc": "Otros",
"emptyAction": "Agregar artículo"
},
"meals": {
"title": "Plan de comidas",
"noMealPlanned": "Sin comida planificada",
"addMeal": "Añadir {{type}}",
"editMeal": "Editar comida",
"addMealTitle": "Añadir comida",
"deleteMeal": "Eliminar comida",
"transferToShoppingList": "Ingredientes a la lista de compras",
"today": "Hoy",
"prevWeek": "Semana anterior",
"nextWeek": "Semana siguiente",
"loadError": "No se pudo cargar el plan de comidas.",
"typeBreakfast": "Desayuno",
"typeLunch": "Almuerzo",
"typeDinner": "Cena",
"typeSnack": "Merienda",
"dayMo": "Lu",
"dayDi": "Ma",
"dayMi": "Mi",
"dayDo": "Ju",
"dayFr": "Vi",
"daySa": "Sá",
"daySo": "Do",
"dateLabel": "Fecha",
"mealTypeLabel": "Comida",
"titleLabel": "Título *",
"titlePlaceholder": "Ej. Espagueti a la boloñesa",
"notesLabel": "Notas",
"notesPlaceholder": "Opcional…",
"ingredientsLabel": "Ingredientes",
"addIngredient": "Añadir ingrediente",
"ingredientNamePlaceholder": "Ingrediente",
"ingredientQtyPlaceholder": "Cantidad",
"ingredientCategoryLabel": "Categoría",
"ingredientCategoryDefault": "Varios",
"removeIngredient": "Eliminar ingrediente",
"transferLabel": "Transferir ingredientes a la lista de compras",
"transferNow": "Transferir ahora",
"noShoppingLists": "No hay listas de compras",
"transferSuccess": "{{count}} ingrediente transferido",
"transferSuccessPlural": "{{count}} ingredientes transferidos",
"transferAlreadyDone": "Todos los ingredientes ya han sido transferidos",
"ingredientCount": "{{count}} ingrediente",
"ingredientCountPlural": "{{count}} ingredientes",
"titleRequired": "El título es obligatorio",
"loadingIndicator": "Cargando…",
"recipeUrlLabel": "Enlace a la receta (opcional)",
"recipeUrlPlaceholder": "https://…",
"openRecipe": "Abrir receta",
"savedRecipeLabel": "Saved recipe",
"savedRecipePlaceholder": "Select recipe",
"saveAsRecipe": "Save as recipe",
"recipeScaleLabel": "Scale ingredients",
"deletedToast": "Meal deleted"
},
"calendar": {
"title": "Calendario",
"newEvent": "Nuevo evento",
"editEvent": "Editar evento",
"addEvent": "Añadir evento",
"deleteEvent": "Eliminar evento",
"noEvents": "Sin eventos en el período seleccionado.",
"today": "Hoy",
"back": "Atrás",
"forward": "Siguiente",
"viewMonth": "Mes",
"viewWeek": "Semana",
"viewDay": "Día",
"viewAgenda": "Agenda",
"allDay": "Todo el día",
"allDayShort": "todo el día",
"moreEvents": "+{{count}} más",
"weekNumberLabel": "Sem. {{week}} · {{month}} {{year}}",
"agendaFrom": "Desde {{date}}",
"titleLabel": "Título *",
"titlePlaceholder": "Ej. Dentista",
"allDayToggle": "Todo el día",
"startDateLabel": "Fecha de inicio",
"startTimeLabel": "Hora de inicio",
"endDateLabel": "Fecha de fin",
"endTimeLabel": "Hora de fin",
"fromLabel": "De",
"toLabel": "A",
"locationLabel": "Lugar",
"locationPlaceholder": "Opcional",
"assignedLabel": "Asignado a",
"assignedNobody": "- Nadie -",
"colorLabel": "Color {{color}}",
"descriptionLabel": "Descripción",
"descriptionPlaceholder": "Opcional…",
"popupEdit": "Editar",
"deleteConfirm": "¿Eliminar «{{title}}»?",
"createdToast": "Evento creado",
"savedToast": "Evento guardado",
"deletedToast": "Evento eliminado",
"loadError": "No se pudieron cargar los eventos.",
"saveError": "Error al guardar",
"deleteError": "Error al eliminar",
"titleRequired": "El título es obligatorio",
"monthJanuary": "Enero",
"monthFebruary": "Febrero",
"monthMarch": "Marzo",
"monthApril": "Abril",
"monthMay": "Mayo",
"monthJune": "Junio",
"monthJuly": "Julio",
"monthAugust": "Agosto",
"monthSeptember": "Septiembre",
"monthOctober": "Octubre",
"monthNovember": "Noviembre",
"monthDecember": "Diciembre",
"dayShortSunday": "Do",
"dayShortMonday": "Lu",
"dayShortTuesday": "Ma",
"dayShortWednesday": "Mi",
"dayShortThursday": "Ju",
"dayShortFriday": "Vi",
"dayShortSaturday": "Sá",
"dayLongSunday": "Domingo",
"dayLongMonday": "Lunes",
"dayLongTuesday": "Martes",
"dayLongWednesday": "Miércoles",
"dayLongThursday": "Jueves",
"dayLongFriday": "Viernes",
"dayLongSaturday": "Sábado",
"timeSuffix": "",
"ics": {
"reset": "Restaurar original",
"resetToast": "Cambios restablecidos."
},
"iconLabel": "Icon",
"iconSearchPlaceholder": "Buscar icono...",
"iconSearchEmpty": "No se encontró ningún icono.",
"iconCategoryGeneral": "General",
"iconCategoryHealth": "Salud y Deporte",
"iconCategoryTransport": "Movilidad y Viaje",
"iconCategoryWork": "Trabajo y Educación",
"iconCategoryFood": "Comida y Bebida",
"iconCategoryShopping": "Compras y Finanzas",
"iconCategoryLeisure": "Ocio y Entretenimiento",
"iconCategoryFamily": "Familia y Mascotas",
"iconCategoryHome": "Hogar y Casa",
"iconCategoryNature": "Naturaleza y Otros",
"iconCalendar": "Calendario",
"iconAlarm": "Alarma",
"iconClock": "Reloj",
"iconBell": "Recordatorio",
"iconLocation": "Ubicación",
"iconStar": "Favorito",
"iconFlag": "Bandera",
"iconTarget": "Meta",
"iconFlame": "Importante",
"iconTooth": "Dentista",
"iconHospital": "Hospital",
"iconDoctor": "Médico",
"iconVaccine": "Vacuna",
"iconMedicine": "Medicamento",
"iconBandage": "Vendaje",
"iconHealth": "Salud",
"iconActivity": "Actividad",
"iconHaircut": "Peluquería",
"iconSports": "Deporte",
"iconTrophy": "Competición",
"iconCar": "Coche",
"iconBus": "Autobús",
"iconTrain": "Tren",
"iconPlane": "Viaje",
"iconFlight": "Vuelo",
"iconFuel": "Repostar",
"iconNavigation": "Navegación",
"iconWork": "Trabajo",
"iconLaptop": "Portátil",
"iconPresentation": "Presentación",
"iconSchool": "Escuela",
"iconEducation": "Educación",
"iconReading": "Lectura",
"iconStudy": "Estudio",
"iconCalculator": "Calculadora",
"iconMeal": "Comida",
"iconCooking": "Cocinar",
"iconCoffee": "Café",
"iconCake": "Cumpleaños",
"iconPizza": "Pizza",
"iconWine": "Vino",
"iconBeer": "Bar",
"iconShopping": "Compras",
"iconGroceries": "Supermercado",
"iconGift": "Regalo",
"iconCard": "Tarjeta",
"iconWallet": "Cartera",
"iconSavings": "Ahorro",
"iconBank": "Banco",
"iconMusic": "Música",
"iconMovie": "Película",
"iconTicket": "Entrada",
"iconGame": "Juego",
"iconPhoto": "Foto",
"iconParty": "Fiesta",
"iconFamily": "Familia",
"iconBaby": "Bebé",
"iconDog": "Perro",
"iconCat": "Gato",
"iconPet": "Mascota",
"iconHome": "Hogar",
"iconBuilding": "Edificio",
"iconRepair": "Reparación",
"iconMaintenance": "Mantenimiento",
"iconDecoration": "Decoración",
"iconFurniture": "Muebles",
"iconLaundry": "Lavandería",
"iconLeaf": "Naturaleza",
"iconTree": "Árbol",
"iconFlower": "Flor",
"iconSun": "Día",
"iconMoon": "Noche",
"iconWeather": "Clima",
"invalidDate": "Use a valid date in the selected date format.",
"attachmentLabel": "Attachment",
"attachmentHint": "Attach a local image, PDF, or document. Images will be shown in the event popup.",
"attachmentFallback": "Attachment",
"attachmentReadError": "The attachment could not be read.",
"attachmentTooLarge": "Attachment may be at most 5 MB.",
"colorBlue": "Azul",
"colorCoral": "Coral",
"colorCyan": "Cian",
"colorGray": "Gris",
"colorGreen": "Verde",
"colorOrange": "Naranja",
"colorPurple": "Morado",
"colorRed": "Rojo",
"colorSkyBlue": "Azul cielo",
"colorYellow": "Amarillo",
"iconCleaning": "Limpieza",
"caldavTargetHint": "Choose a CalDAV calendar to sync this event.",
"caldavTargetLabel": "Sync to CalDAV",
"caldavTargetLocal": "Store locally only",
"attachmentDocumentName": "{{title}} - {{name}}",
"attachmentDocumentDescription": "Archivo adjunto subido para el evento de calendario \"{{title}}\"."
},
"notes": {
"title": "Notas",
"newNote": "Nueva nota",
"editNote": "Editar nota",
"addNoteLabel": "Nueva nota",
"searchPlaceholder": "Buscar notas…",
"emptyTitle": "Sin notas todavía",
"emptyDescription": "Crea una nueva nota con el botón +.",
"noResultsTitle": "Sin resultados",
"noResultsDescription": "Ninguna nota contiene «{{query}}».",
"titleLabel": "Título (opcional)",
"titlePlaceholder": "Sin título",
"contentLabel": "Contenido",
"contentMarkdownHint": "(se admite formato Markdown)",
"contentPlaceholder": "Escribe una nota…",
"colorLabel": "Color",
"pinnedLabel": "Fijar (aparece en el panel)",
"pinAction": "Fijar",
"unpinAction": "Desfijar",
"deleteLabel": "Eliminar nota",
"deleteConfirm": "¿Eliminar nota?",
"createdToast": "Nota creada",
"savedToast": "Nota guardada",
"deletedToast": "Nota eliminada",
"loadError": "No se pudieron cargar las notas.",
"formatBold": "Negrita (Ctrl+B)",
"formatItalic": "Cursiva (Ctrl+I)",
"formatUnderline": "Subrayado (Ctrl+U)",
"formatStrikethrough": "Tachado",
"formatHeading": "Encabezado",
"formatList": "Lista",
"formatOrderedList": "Lista numerada",
"formatChecklist": "Lista de verificación",
"formatLink": "Enlace",
"formatCode": "Código",
"formatQuote": "Cita",
"formatDivider": "Separador",
"emptyAction": "Crear nota",
"colorAmber": "Ámbar",
"colorBlue": "Azul",
"colorGreen": "Verde",
"colorOrange": "Naranja",
"colorPurple": "Morado",
"colorTeal": "Verde azulado",
"colorWhite": "Blanco",
"colorYellow": "Amarillo"
},
"contacts": {
"title": "Contactos",
"newContact": "Nuevo contacto",
"editContact": "Editar contacto",
"addButton": "Nuevo",
"newContactLabel": "Nuevo contacto",
"searchPlaceholder": "Buscar nombre, teléfono o email…",
"importButton": "Importar",
"importLabel": "Importar contacto desde vCard",
"importTooltip": "Importar vCard",
"emptyTitle": "Sin contactos todavía",
"emptyDescription": "Añade nuevos contactos con el botón +.",
"filterAll": "Todos",
"nameLabel": "Nombre *",
"namePlaceholder": "Nombre completo",
"categoryLabel": "Categoría",
"phoneLabel": "Teléfono",
"phonePlaceholder": "+34 …",
"emailLabel": "Email",
"emailPlaceholder": "nombre@ejemplo.es",
"addressLabel": "Dirección",
"addressPlaceholder": "Calle, código postal, ciudad",
"notesLabel": "Notas",
"notesPlaceholder": "Opcional…",
"callLabel": "Llamar",
"emailActionLabel": "Email",
"mapsLabel": "Abrir en Maps",
"exportLabel": "Exportar como vCard",
"exportTooltip": "Exportar vCard",
"deleteLabel": "Eliminar contacto",
"deleteConfirm": "¿Eliminar contacto?",
"deletePersonConfirm": "¿Eliminar «{{name}}»?",
"savedToast": "Contacto guardado",
"updatedToast": "Contacto actualizado",
"deletedToast": "Contacto eliminado",
"importedToast": "{{name}} importado.",
"importError": "Error al importar: {{error}}",
"vcardNoName": "La vCard no contiene nombre.",
"catDoctor": "Médico",
"catSchool": "Escuela/Guardería",
"catAuthority": "Administración",
"catInsurance": "Seguro",
"catCraftsman": "Artesano",
"catEmergency": "Emergencia",
"catMisc": "Otros",
"categoryDoctor": "Médico",
"categorySchool": "Escuela/Guardería",
"categoryAuthority": "Administración",
"categoryInsurance": "Seguro",
"categoryCraftsman": "Artesano",
"categoryEmergency": "Emergencia",
"categoryOther": "Otros",
"emptyAction": "Agregar contacto"
},
"budget": {
"title": "Presupuesto",
"newEntry": "Nueva entrada",
"editEntry": "Editar entrada",
"addEntryLabel": "Añadir entrada",
"newEntryFabLabel": "Nueva entrada",
"currentMonth": "Este mes",
"prevMonth": "Mes anterior",
"nextMonth": "Mes siguiente",
"income": "Ingresos",
"expenses": "Gastos",
"balance": "Saldo",
"byCategory": "Por categoría",
"transactions": "Transacciones",
"emptyTitle": "Sin entradas este mes",
"emptyDescription": "Añade entradas de presupuesto con el botón +.",
"csvExport": "CSV",
"typeExpense": "Gasto",
"typeIncome": "Ingreso",
"titleLabel": "Título *",
"titlePlaceholder": "Ej. Supermercado",
"amountLabel": "Importe *",
"amountPlaceholder": "0,00",
"categoryLabel": "Categoría",
"dateLabel": "Fecha *",
"recurringLabel": "Recurrente",
"deleteLabel": "Eliminar entrada",
"deleteConfirm": "¿Eliminar entrada?",
"deletePersonConfirm": "¿Eliminar «{{title}}»?",
"addedToast": "Entrada añadida",
"savedToast": "Entrada guardada",
"deletedToast": "Entrada eliminada",
"loadError": "No se pudo cargar el presupuesto.",
"trendNeutral": "- como {{month}}",
"validAmountRequired": "Introduce un importe válido",
"dateRequired": "La fecha es obligatoria",
"catFood": "Alimentación",
"catRent": "Alquiler",
"catInsurance": "Seguro",
"catMobility": "Movilidad",
"catLeisure": "Ocio y entretenimiento",
"catClothing": "Ropa",
"catHealth": "Salud",
"catEducation": "Educación",
"catMisc": "Otros",
"catEarnedIncome": "Ingresos del Trabajo",
"catInvestmentIncome": "Ingresos de Inversión",
"catTransferGiftIncome": "Transferencias y Regalos",
"catGovernmentBenefits": "Prestaciones Sociales",
"catOtherIncome": "Otros Ingresos",
"loadingIndicator": "Cargando…",
"subcategoryLabel": "Subcategoría",
"catHousing": "Vivienda / Casa",
"catTransport": "Transporte",
"catPersonalHealth": "Cuidado personal / Salud",
"catShoppingClothing": "Compras y ropa",
"catFinancialOther": "Servicios financieros y otros",
"subcatRentMortgage": "Alquiler / Hipoteca",
"subcatCondominium": "Comunidad",
"subcatUtilities": "Luz / Agua / Gas",
"subcatInternetTvPhone": "Internet / TV / Teléfono",
"subcatRenovationMaintenance": "Reforma / Mantenimiento",
"subcatCleaning": "Limpieza",
"subcatGroceries": "Supermercado",
"subcatRestaurantsBars": "Restaurantes / Bares",
"subcatSnacksFastFood": "Snacks / Comida rápida",
"subcatBakery": "Panadería",
"subcatFuel": "Combustible",
"subcatParkingTolls": "Aparcamiento / Peajes",
"subcatPublicTransport": "Transporte público",
"subcatAppsTaxi": "Apps / Taxi",
"subcatMaintenanceInsurance": "Mantenimiento / Seguro",
"subcatPharmacy": "Farmacia",
"subcatHealthInsurance": "Seguro médico",
"subcatGymSports": "Gimnasio / Deportes",
"subcatBeautyCosmetics": "Belleza / Cosmética",
"subcatTravel": "Viajes",
"subcatStreaming": "Streaming",
"subcatEvents": "Eventos",
"subcatHobbies": "Aficiones",
"subcatClothesShoes": "Ropa / Calzado",
"subcatElectronics": "Electrónica",
"subcatGifts": "Regalos",
"subcatCoursesCollege": "Cursos / Universidad",
"subcatSchoolSupplies": "Material escolar",
"subcatLanguages": "Idiomas",
"subcatLoansInterest": "Préstamos / Intereses",
"subcatBankFees": "Comisiones bancarias",
"subcatInsuranceOther": "Seguros",
"subcatInvestments": "Inversiones",
"subcatTaxes": "Impuestos",
"metaLoadError": "No se pudieron cargar las categorías del presupuesto.",
"addCategory": "+ categoría",
"addSubcategory": "+ subcategoría",
"newCategoryPrompt": "Nombre de la nueva categoría:",
"newSubcategoryPrompt": "Nombre de la nueva subcategoría:",
"categoryAddedToast": "Categoría añadida.",
"subcategoryAddedToast": "Subcategoría añadida.",
"emptyAction": "Agregar entrada",
"loansTitle": "Préstamos",
"loansSummary": "{{count}} activos · {{amount}} restantes",
"newLoan": "Nuevo préstamo",
"createLoan": "Crear préstamo",
"editLoan": "Editar préstamo",
"deleteLoan": "Eliminar préstamo",
"deleteLoanConfirm": "¿Eliminar el préstamo \"{{title}}\"? También se eliminarán los pagos ya registrados en el presupuesto.",
"deleteLoanPaymentConfirm": "¿Eliminar este pago del préstamo?",
"loanRemainingAmount": "Restante",
"loanRemainingInstallments": "Cuotas restantes",
"loanPaidAmount": "Pagado",
"loansEmpty": "No hay préstamos activos.",
"loanInstallmentMeta": "{{paid}} de {{total}} cuotas pagadas",
"loanRemainingOf": "de {{total}}",
"loanNextDue": "Siguiente: {{month}}",
"loanPaidStatus": "Pagado",
"markLoanPaid": "Marcar pagado",
"loanBorrowerLabel": "Persona *",
"loanBorrowerPlaceholder": "Ej. Lais",
"loanTitleLabel": "Título del préstamo",
"loanTitlePlaceholder": "Ej. Préstamo personal",
"loanAmountLabel": "Importe total *",
"loanInstallmentsLabel": "Cuotas *",
"loanStartMonthLabel": "Primer mes de vencimiento *",
"loanNotesLabel": "Notas",
"loanBorrowerRequired": "La persona es obligatoria",
"loanInstallmentsRequired": "Introduce el número de cuotas",
"loanStartMonthRequired": "Introduce el primer mes de vencimiento",
"loanAddedToast": "Préstamo añadido",
"loanSavedToast": "Préstamo guardado",
"loanDeletedToast": "Préstamo eliminado",
"loanPaymentAddedToast": "Pago registrado",
"loanPaymentTitle": "Pago del préstamo: {{borrower}}",
"typeLoan": "Préstamo",
"tabsLabel": "Secciones del presupuesto",
"budgetTab": "Presupuesto",
"loansTab": "Préstamos",
"filteredTransactions": "Transacciones filtradas",
"clearLoanFilter": "Limpiar filtro",
"loanFilterActive": "Préstamo: {{title}}",
"filterLoanTransactions": "Mostrar transacciones de este préstamo",
"loansEmptyDescription": "Crea un préstamo con el botón + y elige Préstamo.",
"newCategoryTitle": "Nueva categoría",
"newCategoryPlaceholder": "Nombre de la categoría",
"newSubcategoryTitle": "Nueva subcategoría",
"newSubcategoryPlaceholder": "Nombre de la subcategoría",
"loanStatusFilterLabel": "Filtro de estado de préstamos",
"loanStatusActive": "Activos",
"loanStatusPaid": "Pagados",
"loanStatusAll": "Todos",
"loanTransactions": "Transacciones del préstamo",
"loanInstallmentNumber": "Cuota {{number}} de {{total}}",
"loanReportTitle": "Informe del préstamo",
"loanNoTransactions": "Aún no hay pagos registrados."
},
"settings": {
"title": "Ajustes",
"tabGeneral": "General",
"tabMeals": "Comidas",
"tabBudget": "Presupuesto",
"tabShopping": "Compras",
"tabCalendar": "Calendario",
"tabFamily": "Gestión familiar",
"tabApiTokens": "API Tokens",
"tabAccount": "Cuenta",
"tabsAriaLabel": "Secciones de configuración",
"sectionDesign": "Diseño",
"sectionAppName": "Nombre de la aplicación",
"sectionShopping": "Compras",
"shoppingCategoriesLabel": "Categorías de compra",
"shoppingCategoriesHint": "Añade, renombra, elimina u ordena las categorías.",
"shoppingCategoryPlaceholder": "Nueva categoría…",
"shoppingCategoryRenameHint": "Haz clic para renombrar",
"shoppingCategoryRenamePrompt": "Nuevo nombre de categoría:",
"shoppingCategoryMoveUp": "Subir categoría",
"shoppingCategoryMoveDown": "Bajar categoría",
"shoppingCategoryDelete": "Eliminar categoría",
"shoppingCategoryDeleteConfirm": "¿Eliminar categoría «{{name}}»? Los artículos existentes se asignarán a la siguiente categoría.",
"shoppingCategoryAdded": "Categoría añadida.",
"shoppingCategoryRenamed": "Categoría renombrada.",
"shoppingCategoryDeleted": "Categoría eliminada.",
"sectionAccount": "Mi cuenta",
"sectionCalendarSync": "Sincronización de calendario",
"sectionFamily": "Miembros de la familia",
"cardAppearance": "Apariencia",
"appNameTitle": "Nombre de la app",
"appNameLabel": "Nombre de la aplicación",
"appNameHint": "Este nombre aparece en la barra lateral, el título del navegador y la pantalla de inicio de sesión.",
"appNamePlaceholder": "Oikos",
"appNameSavedToast": "Nombre de la aplicación guardado.",
"sectionDate": "Fecha",
"dateFormatTitle": "Formato de fecha",
"dateFormatLabel": "Formato de fecha preferido",
"dateFormatHint": "Elige cómo se muestran las fechas en toda la app.",
"dateFormatSavedToast": "Formato de fecha guardado.",
"timeFormatLabel": "Formato de hora",
"timeFormatHours": "horas",
"timeFormatSavedToast": "Formato de hora guardado.",
"themeSystem": "Sistema",
"themeSysLabel": "Usar configuración del sistema",
"themeLight": "Claro",
"themeLightLabel": "Tema claro",
"themeDark": "Oscuro",
"themeDarkLabel": "Tema oscuro",
"changePassword": "Cambiar contraseña",
"currentPasswordLabel": "Contraseña actual",
"newPasswordLabel": "Nueva contraseña",
"confirmPasswordLabel": "Confirmar nueva contraseña",
"savePassword": "Guardar contraseña",
"passwordMismatch": "Las contraseñas no coinciden.",
"passwordSavedToast": "Contraseña cambiada correctamente.",
"googleCalendar": "Google Calendar",
"appleCalendar": "Apple Calendar (iCloud)",
"syncNow": "Sincronizar ahora",
"disconnect": "Desconectar",
"connectGoogle": "Conectar con Google",
"connected": "Conectado",
"connectedLastSync": "Conectado · Última: {{date}}",
"notConnected": "No conectado",
"notConfigured": "No configurado (faltan variables .env)",
"configured": "Configurado (via .env)",
"configuredLastSync": "Configurado (via .env) · Última: {{date}}",
"syncSuccess": "{{provider}} sincronizado.",
"disconnectedToast": "{{provider}} desconectado.",
"googleOnlyAdmin": "Solo el administrador puede conectar Google Calendar.",
"appleOnlyAdmin": "Solo el administrador puede conectar Apple Calendar.",
"caldavUrlLabel": "URL del servidor CalDAV",
"caldavUrlPlaceholder": "https://caldav.icloud.com",
"appleIdLabel": "Apple ID (email)",
"applePasswordLabel": "Contraseña específica de app",
"applePasswordHint": "Crea la contraseña en <strong>appleid.apple.com → Seguridad</strong>.",
"appleConnectBtn": "Conectar y probar",
"appleConnecting": "Conectando…",
"appleConnectedToast": "Apple Calendar conectado.",
"syncSuccessGoogle": "Sincronización de calendario con Google conectada correctamente.",
"syncSuccessApple": "Sincronización de calendario con Apple conectada correctamente.",
"syncErrorGoogle": "Error al conectar con Google. Por favor, inténtalo de nuevo.",
"syncErrorApple": "Error al conectar con Apple. Por favor, inténtalo de nuevo.",
"addMember": "+ Añadir miembro",
"newMemberTitle": "Nuevo miembro de la familia",
"usernameLabel": "Nombre de usuario",
"displayNameLabel": "Nombre para mostrar",
"memberPasswordLabel": "Contraseña",
"colorLabel": "Color",
"profilePictureTitle": "Foto de perfil",
"profilePictureLabel": "Subir foto",
"profilePictureHint": "PNG, JPEG o WebP. Las imágenes grandes se redimensionan antes de subirlas.",
"profilePictureRemove": "Eliminar foto",
"profilePictureTypeError": "Usa una imagen PNG, JPEG o WebP.",
"profilePictureFileTooLarge": "El archivo de imagen es demasiado grande.",
"profilePictureTooLarge": "La foto sigue siendo demasiado grande después de redimensionarla.",
"profilePictureReadError": "No se pudo leer la imagen seleccionada.",
"profileSavedToast": "Perfil actualizado.",
"editMemberLabel": "Editar",
"editMemberTitle": "Editar miembro de la familia",
"saveMember": "Guardar miembro",
"memberUpdatedToast": "{{name}} actualizado.",
"familyRoleLabel": "Rol familiar",
"familyRoleDad": "Papá",
"familyRoleMom": "Mamá",
"familyRoleParent": "Progenitor",
"familyRoleChild": "Hijo/a",
"familyRoleGrandparent": "Abuelo/a",
"familyRoleRelative": "Familiar",
"familyRoleOther": "Miembro de la familia",
"systemAdminLabel": "Administrador del sistema",
"systemAdminHint": "Los administradores del sistema pueden gestionar ajustes, integraciones, tokens de API y cuentas familiares.",
"systemAdminBadge": "Admin del sistema",
"roleLabel": "Rol",
"roleMember": "Miembro",
"roleAdmin": "Administrador",
"createMember": "Crear",
"cancelAddMember": "Cancelar",
"memberAddedToast": "{{name}} añadido.",
"deleteMemberConfirm": "¿Eliminar a {{name}}?",
"memberDeletedToast": "{{name}} eliminado.",
"deleteMemberLabel": "Eliminar",
"logout": "Cerrar sesión",
"synchronizing": "Sincronizando…",
"googleDisconnectConfirm": "¿Desconectar Google Calendar?",
"appleDisconnectConfirm": "¿Desconectar Apple Calendar?",
"localeSystem": "Sistema",
"localeLabel": "Idioma",
"languageTitle": "Idioma",
"sectionMeals": "Plan de comidas",
"mealTypesLabel": "Comidas visibles",
"mealTypesHint": "Solo se mostrarán los tipos de comida seleccionados.",
"mealTypesSaved": "Ajustes del plan de comidas guardados.",
"mealTypesMinOne": "Al menos un tipo de comida debe estar activo.",
"sectionBudget": "Presupuesto",
"currencyLabel": "Moneda",
"currencyHint": "Establece la moneda para toda la sección de presupuesto.",
"currencySaved": "Moneda guardada.",
"apiTokensTitle": "API Tokens",
"apiTokensCardTitle": "Access Tokens",
"apiTokensHint": "Create API tokens for external integrations. The full token is shown only once after creation.",
"apiTokenNameLabel": "Token name",
"apiTokenExpiresLabel": "Expiration date",
"apiTokenExpiresHint": "Leave empty to create a token without expiration.",
"apiTokenCreatedLabel": "New API token",
"apiTokenCreatedHint": "Store this token securely. It cannot be shown again.",
"apiTokenCreate": "Create token",
"apiTokenInvalidExpiration": "Please enter a valid expiration date.",
"apiTokenCreatedToast": "API token created.",
"apiTokenRevokedToast": "API token revoked.",
"apiTokenRevokeConfirm": "Revoke API token \"{{name}}\"?",
"apiTokenRevoke": "Revoke token",
"apiTokenRevoked": "Revoked",
"apiTokenExpired": "Expired",
"apiTokenActive": "Active",
"apiTokenPrefix": "Prefix",
"apiTokenExpires": "Expires",
"apiTokenNeverExpires": "No expiration",
"apiTokenLastUsed": "Last used",
"apiTokenNeverUsed": "Never used",
"ics": {
"title": "Suscripciones ICS",
"add": "Añadir suscripción",
"addedToast": "Suscripción añadida.",
"deletedToast": "Suscripción eliminada.",
"syncedToast": "Suscripción sincronizada.",
"confirm_delete": "¿Realmente deseas eliminar esta suscripción? Todos los eventos asociados también se eliminarán.",
"empty": "Aún no hay suscripciones.",
"form": {
"name": "Nombre",
"url": "URL ICS",
"color": "Color",
"shared": "Visible para todos"
},
"actions": {
"submit": "Añadir",
"save": "Guardar",
"cancel": "Cancelar",
"delete": "Eliminar",
"edit": "Editar",
"sync": "Sincronizar ahora"
},
"status": {
"lastSync": "Última sincronización:",
"never": "Aún no sincronizado",
"syncing": "Sincronizando...",
"syncError": "Error de sincronización"
},
"badges": {
"private": "Privado",
"shared": "Compartido"
},
"updatedToast": "Suscripción actualizada."
},
"memberPhoneLabel": "Número de teléfono (opcional)",
"memberEmailLabel": "Correo electrónico (opcional)",
"memberBirthDateLabel": "Fecha de nacimiento (opcional)",
"memberContactBirthdayHint": "Este miembro se sincroniza automáticamente con Contactos y Cumpleaños.",
"memberBirthDateInvalid": "Usa una fecha de nacimiento válida en el formato seleccionado.",
"memberPhoneMeta": "Teléfono: {{value}}",
"memberBirthdayMeta": "Cumpleaños: {{date}}",
"tabBackup": "Gestión de copias",
"sectionBackup": "Gestión de copias",
"backupDownloadTitle": "Descargar copia de la base de datos",
"backupDownloadHint": "Crea una copia SQLite consistente de todos los datos de la aplicación.",
"backupDownloadButton": "Descargar copia",
"backupRestoreTitle": "Restaurar copia de la base de datos",
"backupRestoreHint": "La restauración reemplaza la base de datos actual. Descarga una copia reciente antes de continuar.",
"backupDropzoneTitle": "Suelta un archivo de copia aquí o haz clic para seleccionarlo",
"backupDropzoneHint": "Archivos SQLite: .db, .sqlite o .sqlite3",
"backupRestoreButton": "Restaurar copia",
"backupRestoreConfirm": "Restaurar esta copia reemplazará la base de datos actual para todos. ¿Continuar?",
"backupRestoring": "Restaurando...",
"backupRestoredToast": "Base de datos restaurada. Recargando...",
"backupCliTitle": "Restauración por CLI / Docker Compose",
"backupCliHint": "For operational restores, stop the app, mount the backup in a temporary container and replace the database file.",
"backupCliBackupHint": "También puedes crear una copia directamente con Docker Compose:",
"tabSync": "Synchronization",
"sectionContactSync": "Contact Synchronization",
"cardavTitle": "CardDAV Contacts",
"cardavDescription": "Connect multiple CardDAV accounts (iCloud, Nextcloud, Radicale, etc.) and sync your contacts.",
"cardavAddAccount": "Add CardDAV Account",
"cardavEmptyState": "No CardDAV accounts connected yet. Add your first account to sync contacts.",
"cardavNameLabel": "Account name",
"cardavNamePlaceholder": "e.g. iCloud, Nextcloud",
"cardavUrlLabel": "CardDAV Server URL",
"cardavUrlPlaceholder": "https://contacts.icloud.com",
"cardavUrlHint": "The base URL of your CardDAV server",
"cardavUsernameLabel": "Username",
"cardavPasswordLabel": "Password",
"cardavPasswordHint": "For iCloud: Use app-specific password from appleid.apple.com",
"cardavAccountAdded": "CardDAV account added successfully",
"cardavAccountDeleted": "CardDAV account removed",
"cardavSyncSuccess": "CardDAV sync successful",
"cardavSyncFailed": "CardDAV sync failed",
"cardavConnectionFailed": "Connection to CardDAV server failed",
"cardavAddressbooksToggle": "Show/hide addressbooks",
"cardavRefreshAddressbooks": "Refresh addressbooks",
"addressbookEnabled": "Addressbook enabled",
"addressbookDisabled": "Addressbook disabled",
"addressbooksRefreshed": "Addressbooks refreshed",
"deleteCardDAVAccountConfirm": "Really delete CardDAV account? All synced contacts will remain but lose their CardDAV link.",
"sectionHousekeeping": "Housekeeping",
"housekeepingPaymentsTitle": "Payment tasks",
"housekeepingPaymentTasksLabel": "Create a payment task on each housekeeper check-in",
"housekeepingPaymentTasksHint": "When enabled, each check-in creates a task for paying the staff member. Completing that task marks the visit payment as paid.",
"housekeepingPaymentTasksSaved": "Housekeeping payment setting saved.",
"backupSchedulerDisabled": "Disabled",
"backupSchedulerEnabled": "Enabled",
"backupSchedulerHint": "Scheduled backups are created automatically and old backups are rotated.",
"backupSchedulerKeep": "Retention",
"backupSchedulerKeepCount": "{{count}} backups",
"backupSchedulerLastBackup": "Last backup",
"backupSchedulerLastFail": "{{date}} (failed)",
"backupSchedulerLastSuccess": "{{date}} (successful)",
"backupSchedulerNever": "No backup created yet",
"backupSchedulerSchedule": "Schedule",
"backupSchedulerStatus": "Status",
"backupSchedulerTitle": "Automatic Backups",
"backupSchedulerTrigger": "Create backup now",
"backupSchedulerTriggeredToast": "Backup created successfully.",
"backupSchedulerTriggering": "Creating backup...",
"breadcrumbLabel": "Pfad",
"caldavAccountAdded": "CalDAV account added successfully",
"caldavAccountDeleted": "CalDAV account removed",
"caldavAddAccount": "Add CalDAV Account",
"caldavCalendarsToggle": "Show/hide calendars",
"caldavConnectionFailed": "Connection to CalDAV server failed",
"caldavDescription": "Connect multiple CalDAV accounts (iCloud, Nextcloud, Radicale, Baikal, etc.) and choose which calendars to sync.",
"caldavEmptyState": "No CalDAV accounts connected yet. Add your first account to get started.",
"caldavNameLabel": "Account Name",
"caldavNamePlaceholder": "e.g. My Radicale, iCloud, Nextcloud",
"caldavPasswordHint": "For iCloud: Use app-specific password from appleid.apple.com",
"caldavPasswordLabel": "Password",
"caldavRefreshCalendars": "Refresh calendars",
"caldavSyncFailed": "CalDAV sync failed",
"caldavSyncSuccess": "CalDAV sync successful",
"caldavTitle": "CalDAV Calendars",
"caldavUrlHint": "The base URL of your CalDAV server",
"caldavUsernameLabel": "Username",
"calendarDisabled": "Calendar disabled",
"calendarEnabled": "Calendar enabled",
"calendarsRefreshed": "Calendars refreshed",
"deleteAccountConfirm": "Really delete CalDAV account? All synced calendars will be removed.",
"emptyStateAddFirst": "Füge dein erstes Konto hinzu",
"emptyStateNoAccounts": "Noch keine Konten verbunden",
"helpTooltipCalDAV": "CalDAV ermöglicht die Synchronisation von Kalendern mit iCloud, Nextcloud und anderen CalDAV-Servern.",
"helpTooltipCardDAV": "CardDAV ermöglicht die Synchronisation von Kontakten mit iCloud, Nextcloud und anderen CardDAV-Servern.",
"lastSync": "Last synced",
"modulesHint": "Disabled modules disappear from the navigation. Data is preserved and reappears once a module is re-enabled.",
"modulesSaved": "Module visibility saved.",
"modulesTitle": "Active modules",
"navigationLabel": "Einstellungsnavigation",
"sectionAdmin": "Administration",
"sectionCloudServices": "Cloud-Dienste",
"sectionModules": "Modules",
"sectionModulesNav": "Module",
"sectionOpenStandards": "CalDAV & CardDAV",
"sectionPersonal": "Persönlich",
"sectionSync": "Synchronisation",
"statusError": "Fehler",
"statusNeverSynced": "Noch nie synchronisiert",
"statusSynced": "Synchronisiert",
"statusSyncing": "Synchronisiert…",
"syncedAgo": "vor {{time}}",
"tabSyncCalendar": "Kalender",
"tabSyncContacts": "Kontakte"
},
"login": {
"tagline": "Planificación familiar. Segura. Privada. Código abierto.",
"usernameLabel": "Nombre de usuario",
"usernamePlaceholder": "usuario",
"passwordLabel": "Contraseña",
"passwordPlaceholder": "••••••••",
"loginButton": "Iniciar sesión",
"loggingIn": "Iniciando sesión…",
"tooManyAttempts": "Demasiados intentos. Por favor, espera un momento.",
"invalidCredentials": "Credenciales incorrectas.",
"version": "v{{version}}"
},
"install": {
"title": "Instalar Oikos",
"subtitle": "Añadir a la pantalla de inicio",
"iosTip1": "Toca ",
"iosTip2": " → «Añadir a pantalla de inicio»",
"installButton": "Instalar",
"dismissLabel": "Cerrar"
},
"modal": {
"closeLabel": "Cerrar",
"overlayLabel": "Fondo del cuadro de diálogo modal",
"unsavedChanges": "¿Descartar cambios?",
"discardChanges": "Descartar"
},
"rrule": {
"freqNone": "Sin repetición",
"freqDaily": "Diariamente",
"freqWeekly": "Semanalmente",
"freqMonthly": "Mensualmente",
"dayMo": "Lu",
"dayTu": "Ma",
"dayWe": "Mi",
"dayTh": "Ju",
"dayFr": "Vi",
"daySa": "Sá",
"daySu": "Do",
"labelRepeat": "Repetición",
"labelEvery": "Cada",
"labelOnDays": "En estos días",
"labelUntil": "Termina el (opcional)",
"unitDay": "día",
"unitDays": "días",
"unitWeek": "semana",
"unitWeeks": "semanas",
"unitMonth": "mes",
"unitMonths": "meses"
},
"recipes": {
"title": "Recetas",
"addRecipe": "Agregar receta",
"editRecipe": "Editar receta",
"emptyTitle": "Sin recetas aún",
"emptyDescription": "Guarda tus recetas favoritas y reutilízalas en la planificación de comidas.",
"titleLabel": "Título *",
"titlePlaceholder": "ej. Pasta a la Carbonara",
"notesLabel": "Notas",
"notesPlaceholder": "Opcional...",
"urlLabel": "Enlace de receta",
"urlPlaceholder": "https://...",
"ingredientsLabel": "Ingredientes",
"addToMeals": "Agregar al plan de comidas",
"openLink": "Abrir enlace de receta",
"deleteConfirm": "¿Eliminar receta \"{{title}}\"?",
"created": "Receta guardada.",
"updated": "Receta actualizada.",
"deleted": "Receta eliminada.",
"titleRequired": "El título es obligatorio",
"duplicate": "Duplicar",
"duplicated": "Receta duplicada.",
"copySuffix": "copia",
"emptyAction": "Crear receta"
},
"search": {
"title": "Búsqueda",
"open": "Abrir búsqueda",
"placeholder": "Buscar…",
"noResults": "No se encontraron resultados."
},
"birthdays": {
"title": "Cumpleaños",
"addButton": "Añadir cumpleaños",
"searchPlaceholder": "Buscar cumpleaños…",
"upcomingTitle": "Próximos cumpleaños",
"upcomingHint": "Las próximas celebraciones, ya sincronizadas con el calendario.",
"peopleTitle": "Personas",
"peopleHint": "Busca, revisa y edita todos los cumpleaños guardados.",
"emptyTitle": "Todavía no hay cumpleaños",
"emptyDescription": "Añade un cumpleaños para mantenerlo visible en el calendario y en los recordatorios.",
"newTitle": "Nuevo cumpleaños",
"editTitle": "Editar cumpleaños",
"nameLabel": "Nombre",
"birthDateLabel": "Fecha de nacimiento",
"photoLabel": "Foto de perfil",
"removePhoto": "Eliminar foto",
"notesLabel": "Notas",
"notesPlaceholder": "Ideas de regalo, tarta favorita, notas familiares…",
"calendarHint": "Cada cumpleaños se añade automáticamente al calendario y al sistema de recordatorios.",
"requiredFields": "El nombre y la fecha de nacimiento son obligatorios.",
"createdToast": "Cumpleaños guardado.",
"updatedToast": "Cumpleaños actualizado.",
"deletedToast": "Cumpleaños eliminado.",
"deleteConfirm": "¿Eliminar el cumpleaños de \"{{name}}\"?",
"ageNoteToday": "Cumple {{age}} años hoy.",
"ageNoteTomorrow": "Cumple {{age}} años mañana.",
"ageNoteDays": "Cumplirá {{age}} años en {{days}} días.",
"photoOptional": "Opcional: puedes guardar sin foto de perfil."
},
"reminders": {
"sectionTitle": "Recordatorio",
"enableLabel": "Establecer recordatorio",
"offsetLabel": "Recordar",
"offsetNone": "Ninguno",
"offsetAtTime": "A la hora de inicio",
"offset15min": "15 minutos antes",
"offset1hour": "1 hora antes",
"offset1day": "1 día antes",
"dateLabel": "Fecha",
"timeLabel": "Hora",
"toastTitle": "Recordatorio",
"dismiss": "Descartar",
"pendingBadgeTitle": "{{count}} recordatorio pendiente",
"pendingBadgeTitlePlural": "{{count}} recordatorios pendientes",
"notificationPermission": "Notificaciones del navegador",
"notificationEnable": "Activar notificaciones",
"notificationEnabled": "Notificaciones activas",
"notificationDenied": "Notificaciones bloqueadas",
"notificationHint": "Recibe notificaciones incluso cuando la aplicación está abierta.",
"offset2days": "2 days before",
"offset1week": "1 week before",
"offset2weeks": "2 weeks before",
"offsetCustom": "Custom...",
"customAmountLabel": "Number",
"customUnitLabel": "Unit",
"customMinutes": "Minutes",
"customHours": "Hours",
"customDays": "Days",
"customWeeks": "Weeks"
},
"onboarding": {
"step1Title": "Bienvenido a {{name}}",
"step1Body": "Your personal family planner. Tasks, calendar, shopping and more all in one place.",
"step2Title": "Navegación y módulos",
"step2Body": "En la parte inferior accedes directamente al Panel y el Calendario. Con el botón ··· abres más módulos como Cocina, Notas y Contactos.",
"step3Title": "Empieza rápido",
"step3Body": "Con el botón + creas nuevas entradas en cualquier lugar. Desliza elementos de la lista a la izquierda o derecha para acciones rápidas.",
"next": "Next",
"done": "Get started",
"skip": "Skip"
},
"offline": {
"banner": "Offline reconnecting…"
},
"emptyHint": {
"recipes": "Crea recetas y vincúlalas con tu planificador de comidas.",
"birthdays": "Registra cumpleaños — recibirás un recordatorio a tiempo.",
"budget": "Crea categorías y registra ingresos y gastos.",
"calendar": "Conecta Google Calendar en Ajustes → Integraciones para sincronización automática.",
"contacts": "Agrega contactos importantes — médico, escuela, emergencia — para acceso rápido.",
"meals": "Planifica comidas para la semana y vincula recetas.",
"notes": "Pulsa + para una nueva nota. Las notas se buscan en texto completo.",
"shopping": "Agrega artículos y desliza para marcar o eliminar.",
"tasks": "Pulsa + para crear tu primera tarea. Desliza una tarjeta a la izquierda para eliminar."
},
"documents": {
"title": "Documentos",
"addButton": "Agregar documento",
"searchPlaceholder": "Buscar documentos...",
"gridView": "Vista de cuadrícula",
"listView": "Vista de lista",
"viewToggle": "Vista de documentos",
"allCategories": "Todas las categorías",
"emptyTitle": "Aún no hay documentos",
"emptyDescription": "Sube documentos familiares y controla quién puede ver cada archivo.",
"newTitle": "Nuevo documento",
"editTitle": "Configuración del documento",
"nameLabel": "Nombre",
"descriptionLabel": "Descripción",
"categoryLabel": "Categoría",
"fileLabel": "Archivo",
"fileHint": "PDF, imágenes, texto y archivos Office de hasta 5 MB.",
"visibilityLabel": "Visibilidad",
"statusLabel": "Estado",
"allowedMembersLabel": "Miembros permitidos",
"uploadAction": "Subir",
"downloadAction": "Descargar",
"editAction": "Configuración",
"archiveAction": "Archivar",
"restoreAction": "Restaurar",
"savedToast": "Documento guardado.",
"uploadedToast": "Documento subido.",
"archivedToast": "Documento archivado.",
"restoredToast": "Documento restaurado.",
"deletedToast": "Documento eliminado.",
"deleteConfirm": "¿Eliminar documento \"{{name}}\"?",
"fileRequired": "Selecciona un archivo para subir.",
"fileTooLarge": "El archivo puede tener como máximo 5 MB.",
"fileReadError": "No se pudo leer el archivo.",
"statusActive": "Activo",
"statusArchived": "Archivado",
"visibility": {
"family": "Toda la familia",
"restricted": "Miembros seleccionados",
"private": "Solo yo"
},
"category": {
"medical": "Médico",
"school": "Escuela",
"identity": "Identidad",
"insurance": "Seguro",
"finance": "Finanzas",
"home": "Hogar",
"vehicle": "Vehículo",
"legal": "Legal",
"travel": "Viajes",
"pets": "Mascotas",
"warranty": "Garantía",
"taxes": "Impuestos",
"work": "Trabajo",
"other": "Otros"
},
"dropzoneTitle": "Suelta el archivo aquí o haz clic para elegir",
"dropzoneHint": "Arrastra un archivo a esta área o usa el selector de archivos.",
"selectedFileLabel": "Seleccionado: {{name}}",
"addFolderButton": "Add folder",
"allFolders": "All folders",
"folderLabel": "Folder",
"noFolder": "No folder",
"newFolderTitle": "New folder",
"folderNameLabel": "Folder name",
"createFolderAction": "Create folder",
"folderCreatedToast": "Folder created.",
"housekeepingFolder": "Limpieza",
"calendarItemsFolder": "Elementos del calendario",
"folderBrowserTitle": "Explorar carpetas"
},
"shortcuts": {
"goKitchen": "Cocina",
"goCal": "Calendario",
"goDash": "Panel",
"goNotes": "Notas",
"goShop": "Lista de compras",
"goTasks": "Tareas",
"help": "Atajos de teclado",
"new": "Crear nueva entrada",
"search": "Abrir búsqueda"
},
"housekeeping": {
"title": "Área de limpieza",
"bottomNav": "Navegación de limpieza",
"home": "Inicio",
"tasks": "Tareas",
"report": "Reportar",
"notCheckedIn": "Sin entrada",
"checkedInAt": "Entrada a las",
"monthTotal": "Mes actual · {{count}} jornadas",
"dailyRate": "Tarifa diaria",
"extras": "Extras",
"checkIn": "Entrada",
"checkOut": "Salida",
"quickSupply": "Falta producto",
"supplyName": "Producto",
"supplyPlaceholder": "¿Qué falta?",
"checkedInToast": "Entrada registrada.",
"checkedOutToast": "Salida registrada.",
"supplyAddedToast": "Añadido a la lista de compras.",
"overdue": "Atrasada",
"dueToday": "Hoy",
"ok": "OK",
"noTasks": "No hay tareas de limpieza.",
"everyDays": "Cada {{days}} días",
"completeTask": "Completar {{name}}",
"taskDoneToast": "Tarea completada.",
"reportTitle": "Reportar problema",
"problemDescription": "Descripción del problema",
"problemPlaceholder": "Ejemplo: bombilla fundida",
"addPhoto": "Agregar foto",
"sendReport": "Enviar reporte",
"reportSentToast": "Problema reportado.",
"recentReports": "Reportes recientes",
"addTask": "Agregar tarea",
"taskName": "Tarea",
"taskNamePlaceholder": "Ejemplo: limpiar baños",
"taskArea": "Área",
"taskAreaPlaceholder": "Ejemplo: baño",
"taskFrequency": "Frecuencia",
"createTask": "Crear tarea",
"taskCreatedToast": "Tarea de limpieza creada.",
"dashboard": "Panel",
"reports": "Reports",
"visitsThisMonth": "Visitas del mes",
"lastVisit": "Última visita",
"pendingChores": "Tareas pendientes",
"finishedChores": "Tareas completadas",
"payments": "Pagos",
"pendingPayments": "Pagos pendientes",
"monthlyPayments": "Pagos mensuales",
"noPaymentData": "Aún no hay datos de pago.",
"noVisits": "Sin visitas todavía",
"noWorkerTitle": "Sin perfil de limpieza",
"noWorkerHint": "Crea el perfil para definir contactos, tarifa y calendario de pago.",
"taskTemplates": "Tareas sugeridas",
"addCustomTask": "Agregar tarea personalizada",
"noReports": "Aún no hay reportes.",
"profileTitle": "Perfil de limpieza",
"profilePicture": "Foto de perfil",
"workerName": "Nombre",
"workerUsername": "Usuario",
"workerPhone": "Teléfono",
"workerEmail": "Email",
"workerBirthDate": "Cumpleaños",
"paymentSchedule": "Calendario de pago",
"scheduleDaily": "Cada visita",
"scheduleTwiceMonthly": "Dos veces al mes",
"scheduleMonthly": "Mensual",
"profileColor": "Color de perfil",
"workerNotes": "Notas",
"workerSavedToast": "Perfil guardado.",
"staff": "Personal",
"staffTitle": "Personal de limpieza",
"addWorker": "Agregar persona",
"editWorker": "Editar persona",
"noWorkers": "No hay personal de limpieza registrado.",
"moreWorkers": "+{{count}} más",
"checkInDisabled": "Agrega una persona antes de registrar entrada.",
"calendarColor": "Color de calendario",
"visitRecordedAt": "Visit recorded at",
"checkedInToday": "Recorded today",
"visitReports": "Staff visit reports",
"noVisitReports": "No staff visits recorded this month.",
"openVisitReport": "Open visit report",
"visitReportDetails": "Visit report",
"paymentPaid": "Paid",
"paymentPending": "Pending",
"totalPayment": "Total payment",
"paymentStatus": "Payment status",
"paymentTask": "Payment task",
"calendarEvent": "Calendar event",
"notAvailable": "Not available",
"calendarVisitTitle": "Housekeeping: {{name}}",
"paymentTaskTitle": "Pay {{name}} for housekeeping",
"paymentTaskDescription": "Housekeeping visit on {{date}}. Amount due: {{amount}}.",
"staffLogTitle": "{{name}} visits",
"staffLogHint": "Edit visit dates, amounts, and linked records.",
"filterMonth": "Month",
"editVisit": "Edit visit",
"deleteVisit": "Delete visit",
"deleteVisitConfirm": "Delete this visit? The linked calendar event and payment task will also be removed.",
"visitDeletedToast": "Visit deleted.",
"visitSavedToast": "Visit updated.",
"visitDate": "Visit date",
"markPaid": "Mark paid",
"visitPaidToast": "Payment marked as paid.",
"receiptUploadTitle": "Upload payment receipt",
"receiptUploadHint": "Attach a payment receipt. It will appear in Documents.",
"receiptDocumentName": "Receipt - {{name}} - {{date}}",
"receiptDocumentDescription": "Payment receipt for {{name}} housekeeping visit on {{date}}.",
"taskTemplateData": {
"cleanBathrooms": {
"name": "Limpiar baños",
"area": "Baños"
},
"mopKitchenFloor": {
"name": "Fregar el suelo de la cocina",
"area": "Cocina"
},
"dustLivingRoom": {
"name": "Quitar el polvo de la sala",
"area": "Sala"
},
"changeBedLinens": {
"name": "Cambiar la ropa de cama",
"area": "Dormitorios"
},
"cleanRefrigerator": {
"name": "Limpiar el refrigerador",
"area": "Cocina"
},
"cleanWindows": {
"name": "Limpiar ventanas",
"area": "Toda la casa"
},
"deepCleanOven": {
"name": "Limpieza profunda del horno",
"area": "Cocina"
},
"washOutdoor": {
"name": "Lavar balcón/patio",
"area": "Exterior"
}
}
},
"userMultiSelect": {
"moreUsers": "weitere",
"nobody": "- Niemand -"
}
}