{ "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" }, "nav": { "dashboard": "Inicio", "tasks": "Tareas", "calendar": "Calendario", "meals": "Comidas", "shopping": "Compras", "notes": "Notas", "contacts": "Contactos", "budget": "Presupuesto", "settings": "Ajustes", "main": "Navegación principal", "navigation": "Navegación", "quickActions": "Acciones rápidas" }, "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 urgente", "urgentTasksChipPlural": "{{count}} tareas urgentes", "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}} km/h", "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", "dueTomorrow": "Vence mañana", "allDay": "Todo el día", "shoppingMore": "+{{count}} más", "weather": "Clima", "customize": "Personalizar", "customizeTitle": "Personalizar widgets", "customizeReset": "Restablecer", "customizeSaved": "Panel guardado", "customizeMoveUp": "Subir", "customizeMoveDown": "Bajar" }, "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", "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" }, "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" }, "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", "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" }, "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": "" }, "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" }, "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" }, "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", "catClothing": "Ropa", "catHealth": "Salud", "catEducation": "Educación", "catMisc": "Otros", "loadingIndicator": "Cargando…" }, "settings": { "title": "Ajustes", "tabGeneral": "General", "tabMeals": "Comidas", "tabBudget": "Presupuesto", "tabShopping": "Compras", "tabCalendar": "Calendario", "tabAccount": "Cuenta", "tabsAriaLabel": "Secciones de configuración", "sectionDesign": "Diseño", "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", "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 appleid.apple.com → Seguridad.", "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", "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." }, "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." }, "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" }, "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" } }