Files
oikos/public/locales/es.json
T
Ulas Kalayci 7940ea4ded release: v0.31.0 — family-contacts integration & settings restructure
- Family member records now store phone, email, and birthday, auto-synced
  to Contacts and Birthdays modules (PR #99 by @rafaelfoster)
- Settings gets dedicated Family and API Tokens tabs (admin-only)
- Avatar editor redesigned with icon buttons; tab bar fits standard width
- Dentist calendar icon normalised to 'tooth'; theme reset bug fixed
- i18n: missing family field translations added to 12 locales

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 07:20:53 +02:00

901 lines
35 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"
},
"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"
},
"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"
},
"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."
},
"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",
"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",
"invalidDate": "Use a valid date in the selected date format."
},
"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 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."
},
"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.",
"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"
}
},
"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}}"
},
"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"
},
"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."
},
"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": "Welcome to Oikos",
"step1Body": "Your personal family planner. Tasks, calendar, shopping and more all in one place.",
"step2Title": "Everything at a glance",
"step2Body": "Use the navigation below to reach all modules. The + button creates new entries quickly.",
"step3Title": "Ready to go",
"step3Body": "The dashboard shows you the most important information at a glance. Customize it under \"Customize\".",
"next": "Next",
"done": "Get started",
"skip": "Skip"
},
"offline": {
"banner": "Offline reconnecting…"
},
"emptyHint": {
"recipes": "Crea recetas y vincúlalas con tu planificador de comidas."
}
}