feat(i18n): add Spanish (Español) language support
This commit is contained in:
@@ -10,6 +10,7 @@ import { t, setLocale, getLocale, getSupportedLocales } from '/i18n.js';
|
||||
const LOCALE_LABELS = {
|
||||
de: 'Deutsch',
|
||||
en: 'English',
|
||||
es: 'Español',
|
||||
it: 'Italiano',
|
||||
sv: 'Svenska',
|
||||
};
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
* Dependencies: none (vanilla JS, Fetch API, Intl API)
|
||||
*/
|
||||
|
||||
const SUPPORTED_LOCALES = ['de', 'en', 'it', 'sv'];
|
||||
const SUPPORTED_LOCALES = ['de', 'en', 'es', 'it', 'sv'];
|
||||
const DEFAULT_LOCALE = 'de';
|
||||
const STORAGE_KEY = 'oikos-locale';
|
||||
|
||||
|
||||
@@ -0,0 +1,599 @@
|
||||
{
|
||||
"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"
|
||||
},
|
||||
|
||||
"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",
|
||||
"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": "",
|
||||
"colorLabel": "Color {{color}}"
|
||||
},
|
||||
|
||||
"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",
|
||||
"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 <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",
|
||||
"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"
|
||||
},
|
||||
|
||||
"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"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user